用于重新映射图形数据的存储器地址的装置和方法

文档序号:6455387阅读:250来源:国知局
专利名称:用于重新映射图形数据的存储器地址的装置和方法
数据的存储器地址的装置和方法
5背景l支术
虚拟机体系结构在逻辑上将物理机分区,以使得机器的底层硬件
进行时间共享并且看起来像是一个或多个独立操作的虚拟机(VM)。虚 拟机监视器(VMM)在计算机上运行以便于对其它软件进行一个或多 个VM的抽象。每个VM可用作独立平台,以便运行它自己的操作系
10统(OS)和应用软件。在VM中运行的软件在本文统称为"访客软件"。 VMM环境提供了使得在实际系统上运行的软件能够为访客软件 提供近乎完全的虚拟系统或VM模仿的硬件和系统控制指令。此类环 境的益处包括例如能够在单个物理机上运行多个操作系统;提高了 CPU和硬件资源的使用率。
15 虚拟化技术使得平台支持在单个机器或计算系统(或环境)上运行
多个分区。这些分区相互隔离,从而具有增加的鲁棒性的优点。这些 分区在VMM之上运行,VMM可描述为具有诸如存储器的平台资源 的"真实视图"的软件虚拟化层。因此,该存储器真实视图可描述为 "主机物理地址"或HPA(如主机地址)。每个分区或VM具有存储器
20的"虚拟化视图",它可描述为"访客物理地址"或GPA。
访客软件期望会像它在专用计算机上而不是在VM中运行那样操 作。即,访客软件期望可控制各种事件并且具有对计算机(如物理机器) 上的硬件资源的访问权。物理机器的硬件资源可包括一个或多个处理 器、驻留在处理器上的资源(如控制寄存器、高速緩存等)、存储器(例
25 如驻留在存储器中多个地址处的指令和/或数据,如图形指令和/或数 据)、图形设备和/或控制器(如图形电路、图形芯片组、图形卡等)以及 驻留在物理机器中的其它资源(如输入/输出设备)。事件可包括渲染和 显示图形数据以在VMM环境中显示图形图像。这些图像可包括像素
6图像、编码图像、视频图像或帧、静态图像、图片图像、动画图像、 电影等。
因此,VMM向其它软件("访客软件"、"访客"、或单个"访 客")提供一个或多个VM的抽象。VMM可向各种访客提供相同或不 5 同的抽象。每个访客期望在VM中提供的硬件平台的全部设施都可供 它使用。例如,根据在VM中提供的处理器和平台的体系结构,访客 期望具有对所有寄存器、高速緩存、结构、I/O设备、存储器、图形 设备/控制器等的访问权。此外,每个访客期望VMM可例如通过处理 在显示器或监视器上显示图形图像的访客的图形指令(例如,包括图形 10 地址)和/或数据来处理各种事件。
例如,在一些情况下,VMM可依靠设备的虚拟化来实现输A/输 出(IO)设备的支持。通常,IO设备由VMM虚拟化,并且VMM直接 控制平台上的实际硬件。在这些情况下,VMM模仿显露给VMM的 IO设备。因为VMM与硬件直接通信,所以VMM携带所支持的所有 15 设备的驱动程序。携带所有驱动程序使得VMM代码或软件充斥或具 有非期望的巨大代码量,从而导致复杂度增加。


附图的各图举例而非限制性地示出本发明的各个实施例,其中 20 图1A是示出根据一个实施例的虛拟化环境中的集成图形渲染路
径的框图。
图1B是示出根据一个实施例的虚拟化环境中的分离图形渲染路 径的框图。
图2是示出根据集成图形设备或分离图形控制器实施例的、存储 25在存储器中多个地址处并用于在显示器或监视器上显示的图形数据 的框图。
图3是示出根据一个实施例的高级调度器才莫型中的图形数据路径 的框图。图4是示出根据一个实施例的用于重新映射三级遍历的直接存储 器访问CDMA;)的框图。
图5是示出根据一个实施例的VMM中的具有3级遍历的图形数 据路径的框图。
5 图6A是示出根据一个实施例的虚拟机监视器(VMM)环境中的集
成图形设备的框图。
图6B是示出根据一个实施例的虚拟机监视器(VMM)环境中的分 离图形设备的框图。
图7是示出根据一个实施例用于创建映像全局访客转换表(GTT) 10 的环境的框图。
图8是用于创建映像全局GTT的过程的流程图。
图9是示出根据一个实施例用于创建映像访客每个进程页显示 (PPPD)的环境的框图。
图10是根据一个实施例用于创建映像访客PPPD的过程的流程
15 图。
图11是用于维持映像表的环境的框图。
图12是示出根据一个实施例的图形澄染和显示数据路径的框图。 图13是示出根据一个实施例的图形显示路径更新和显示路径的 框图。
20 图14是示出根据一个实施例的图形渲染路径更新和渲染路径的框图。
具体实施例方式
本发明的 一个或多个实施例 一般涉及计算机系统设计。更具体地 25说,其中一个或多个实施例涉及用于渲染和显示图形数据以便在虚拟 化环境中显示图形图像的方法和装置。例如,如上所述,在VMM才莫 仿显露给VM的IO设备并且VMM携带所支持的所有设备的驱动程 序的情况中,携带所有驱动程序会使VMM代码或软件充斥或具有非期望的巨大代码量,从而导致复杂性增加。位于美国加利福尼亚州圣
克4立4立的Intel公司(Intel Corporation of Santa Clara, California)开发了 用于定向输A/输出(IO)体系结构的虚拟化技术,该虚拟化技术提供对 允许访客VM直接驱动10设备的支持,从而从VMM中免去了驱动 5 程序(例如,参见由Intel公司在2006年2月发布的序号为D51397-001 的Intel's VT國d才支术-Intel Virtualization Technology for Directed I/O Architecture Specification)。
因此,本文的描述包括用于根据每个访客应用的图形指令(例如, 包括图形地址)和数据来显示在多个虚拟机上运行的多个访客应用的 10 图形图像的方法和装置。例如,可使用图形虚拟机(VM)(它可包括VM 操作系统和其它应用,如在图形VM中运行的其它图形应用)、图形控 制器和/或图形设备例如通过处理访客的图形指令和/或数据来处理各 种应用程序图形需要,以便在显示器上显示图形图像。处理访客的图 形指令和/或数据可包括例如通过将图形指令和/或数据写入到存储器
15 中的物理地址(例如,物理地址对应于来自访客应用的图形地址)以及 从存储器的物理地址读取图形指令和/或数据来访问图形指令和/或数 据。
在以下描述中,阐述了众多具体细节,例如虚拟机监视器(VMM) 环境实现、信号和总线的大小和名称、系统组件、硬件、处理器、电 20 路、设备、图形设备、图形控制器、存储器、操作系统、VM的类型 和相互关系,以及逻辑分区/集成选择,以便更充分地理解本发明。但 是,本领域的技术人员将明白,在没有这些具体细节的情况下,也可 实现本发明。在其它情况下,并未详细示出控制结构和门级电路(如电 路系统),以免使本发明晦涩难懂。使用所包含的描述,本领域的技术 25人员将能够实现合适的逻辑电路,而无需进行过多的实验。
在以下描述中,使用某些术语来描述本发明的特征。例如,术语 "设备"、"芯片"、"芯片组"和/或"电路"可表示硬件、待由处 理器执行的应用程序、计算机操作系统、包含待由处理器执行的机器可读介质、和/或配置成执行一个或多个功能的软件。例如,"设备"、 "控制器"、"芯片"、"芯片组"和/或"电路"的示例可包括但不 限制于或局限于电子硬件、逻辑电路、处理器、存储器、集成电路、 芯片、芯片组、"卡"、其上具有电子硬件和/或软件的印刷电路板、 5 固件、有限状态机或甚至组合逻辑。集成电路可采取诸如微处理器的 处理器、专用集成电路、数字信号处理器、孩i控制器等形式。在一些 情况中,本文描述的电路、图形设备、图形控制器和/或芯片组可以是
或可以包括图形电路、图形芯片组、图形卡、图形存储器、图形VM、 图形VM操作系统、集成图形设备、分离图形控制器、渲染引擎、显
10 示引擎等。而且,在本文中的一些情况中,术语"图形数据"可用于 描述图形指令和数据。
此外,访问、接收、检测、感测或以其它方式知道表中的输入可 包括在试图在表中输入之前、期间或之后(包括在输入实际没有存储在 表中时)硬件和/或软件感测该输入。在一些情况中,在考虑另一个地
15 址而转换、变换、建立或创建一个地址(例如,将图形地址(例如,来 自访客应用的指令或请求中所包含的虚拟地址)转换或变换为GPA或 主机物理地址(HPA))可表示相同或相关的进程、装置和/或系统。例如, 可根据GPA或HPA与图形地址之间的关系(例如,存储器地址变换) 从图形地址创建、转换、变换或建立GPA或HPA。
20 图1A是示出根据一个实施例的虛拟化环境中的集成图形渲染路
径的框图。图1A示出的VMM环境100包括耦合到虚拟机操作系统 130、虚拟机操作系统140与硬件110或耦合在它们之间的虚拟机监 视器0/MM)120。图1A还示出耦合到硬件110的存储器控制器115 的图形设备116的图形VM 150(它可包括VM操作系统和其它应用,
25 例如在图形VM中运行的其它图形应用)。图形(或"Gfk" )VM 150可 使用由Intel的定向10的虚拟化技术(例如,使用Intel的VT-d技术) 提供的机制来直接驱动G&设备116。设备116可执行图形控制器(例 如,参见图1B和6B中的控制器118)的功能。可以在例如桌面型计算
10机、膝上型计算机、手持式计算设备、个人计算机(PC)、工作站、计 算机服务器、联网计算机、电子设备、计算设备等中实施环境100。 而且,本文描述的存储器控制器115或其它存储器控制器(MC)可以位 于与环境或计算机的处理器(如CPU 101)相同或不同的芯片中(或之 5 上)。在一些情况下,存储器控制器可以位于不包括处理器的芯片或芯 片组中(或之上)。
集成图形路径可以是能够通过发出具有访客物理地址(GPA)的直 接存储器访问(DMA)请求并使存储器控制器将GPA转换为主机物理 地址(HPA)或主存储器的物理存储器地址而无需访问VMM来访问图
10 形数据的路径。例如,设备116和/或存储器控制器115可以将来自操 作系统130和/或140的直接存储器访问(DMA)请求的GPA "独立地" 转换为用于从存储器的物理地址直接访问图形数据的HPA(例如,存 储器360的HPA362,如针对图2所述),而无需使用或访问图形VM 150和/或无需访问VMM 120(例如,在系统130和140通过VMM 120
15 访问图形控制器116时,无需发送对VMM中的图形驱动程序的请求 或以其它方式访问VMM120来获取图形驱动程序功能性)。因此,图 形VM 150可与图形控制器116通信以便满足系统130和140的图形 需求,而不需要VMM 120中的图形驱动程序。集成的部件可包括一 个或多个集成图形设备,例如与存储器控制器115集成或作为存储器
20 控制器115的一部分的集成图形设备116。 MC 115可包括存储器控制 器设备电路或被描述为存储器控制器设备电路,并且下文还将在图6A 中进一步描述。
硬件110包括硬件设备112和一个或多个额外的硬件设备,如硬 件设备114。硬件110还包括中央处理单元(CPU)lOl和存储器102。 25CPU 101耦合到基本输A/输出系统(BIOS)103。
VMM 120包括驱动程序122和一个或多个其他驱动程序(例如用 于它直接驱动和/或控制的设备的驱动程序124)。系统130包括操作系 统驱动程序134,并且可以运4亍一个或多个应用,如应用132。类似
ii地,系统140包括操作系统驱动程序144,并且可以运行一个或多个 应用,如应用142。
CPU 101可以是处理器,例如能够执行支持VMM 120和VMM 120上运行的各种虚拟机以及图形VM 150的所需处理的处理器。CPU 5 101可以是环境100的中央处理单元(CPU),并因此控制并协调该环境 的整体操作。在某些实施例中,CPU 101通过执行例如存储器102中 存储的操作系统的软件来实现此目的。CPU 101的处理器可以是或可 以包括一个或多个可编程通用或专用微处理器、数字信号处理器 (DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)
10等或此类设备的组合。类似地,存储器102可以存储要净皮CPU101、 图形VM150、设备116和/或控制器115操作、转换、检测、感测、 接收和/或访问的指令和/或数据,例如通过将这些指令和/或数据存储 在存储器102的地址(例如使用HPA寻址的地址)处来存储它们。存储 器102可以是或包括环境100的"主存储器"。存储器102表示任何
15形式的随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器等或 此类设备的组合。存储器102可以包括多种类型的存储器,例如RAM、 动态RAM(DRAM)、标准动态RAM(SDRAM)、双数据速率RAM "DDRRAM"和双数据速率版本2 RAM "DDR2RAM"。例如,正 如本领域中公知的,存储器102可以是一组或多组存储器芯片、集成
20 电路、RAM类型等。CPU 101能够经由地址和数据总线对主存储器 102直接访问。硬件110和设备112-114可以表示可安装在环境100 中的物理设备,例如键盘、海量存储控制器、网络接口、鼠标、声卡 等。BIOS 103可以表示可存储在例如存储器102中或存储在单独的非 易失性存储器(未示出)中的软件指令。
25 图形设备116可以是集成图形设备(例如与例如MC 115的存储器
控制器集成并执行图形显示功能的设备)。而且,集成图形可以描述没 有或不包括"胶连逻辑(glue logic)"、输A/输出接口和/或MC115和 装置116之间的总线的系统或设备。在一些情况中,装置116可以比分离图形控制器(例如与图IB和6B的控制器118相比)成本低和/或包 括更少的电子电路或硬件。
在大多数实施例中,当使用直接存储器访问(DMA)时,需要使用 主机硬件物理存储器地址或存储器中的物理地址(例如参见图2的地 5 址362)来访问主存储器中的图形数据。这种读和写可以描述为访问存 储器和/或检测要对存储器设置的项(例如要向存储器的物理地址写数 据和从存储器的物理地址读数据),并且可以根据应用132之一(例如 虚拟机中的应用)来进行这种读或写或因应用132之一(例如虚拟机中 的应用)而导致这种读或写。在大多数虚拟化环境中,设备发出的DMA 10 请求中的地址将是通过Gfe地址重新映射表(例如通过GTT或图形地 址重新映射表(GART》转换为GPA的图形地址,但是对于要由设备 116(或图1B和6B的控制器118)满足的DMA请求,必须将这些GPA 转换为HPA。
在计算机系统(例如环境100)开始被加电时(或复位操作之后),例 15 如从关机状态起的系统引导或初始化过程期间,测试和配置了易失性 存储器结构之前,BIOS软件(例如,BIOS 103)(例如经由CPU IOI)控 制计算机系统(例如环境100)。因此,BIOS可以在引导序列期间预留 存储器102中的"隐藏"或"窃取"部分以用于存储本文所描述的转 换表(例如映像表)。
20 BIOS软件可以存储在非易失性存储器中或作为固件。固件是指
存储在非易失性存储器结构(例如只读存储器(ROM)、闪速存储器等) 中的处理器例行程序(例如软件)。这些存储器结构即使在断开电源时 仍保留存储在其中的代码。尽管固件存储在非易失性存储器中,但仍 可以将固件复制到易失性存储器中或在易失性存储器中建立映像。
25 应用132表示可以在系统130的控制下祐Jo载和/或执行的程序。
OS和驱动程序134与VMM提供的虚拟平台接口。在一些情况中, 驱动程序134可以是操作系统图形驱动程序,VMM 120向其表示或 提供虚拟机,例如包括CPU、存储器和含图形设备和硬件的硬件的机器,虽然虛拟允许系统130看上去像是真实的非虚拟系统(例如例如物 理系统)一样工作。
类似地,应用142表示可以在系统140的控制下被加载和/或执行 的程序。应用132和142的指令和数据可以存储在存储器102中(例如 5存储在存储器102的物理地址处)。
操作系统130和/或140可以包括或可以是本领域中公知的常规 OS,例如磁盘操作系统(DOS)、 Windows、 Unix、 Linux、 OS/2、 OS/9、 Xenx等。例如,操作系统可以包括诸如美国华盛顿州雷德蒙德的 Microsoft公司(Redmond, Washington)的WINDOWS XP⑧或另一种 10 WINDOWS⑧操作系统。操作系统130和/或140还可以包括美国加利 福尼亚州库珀蒂诺Apple计算机公司(Cupertino, California)的 MACINTOSH②操作系统。
而且,图形VM、操作系统(例如图形VM 150)和/或图形设备均可 包括或可以是一组例如通过控制资源的操作和分配来控制图1-14的 15设备和进程的一个或多个软件程序。应用程序132或142可以是一组 具有要显示给用户的图形、图形对象、图像、图形帧和/或视频的一个 或多个软件程序。
VMM 120是才莫仿计算机系统的虛拟机监视器;如图所示,它向 在其控制下运行的软件提供与真实系统硬件相似的接口。 VMM 120 20 可以在逻辑上对物理机器分区,以使得该机器的底层硬件110进行时 间共享并看上去像是一个或多个独立操作的虛拟机(例如系统130和 140)。 VMM 120可以创建VM环境并运行在计算机上,以便于为其他 软件进行一个或多个VM的抽象。每个VM可用作独立平台,以便运 行它自己的操作系统(OS)和应用软件。VM中运行的软件在本文统称 25 为"访客软件"。例如,VMM 120可以提供接口 ,从而表示CPU 101 、 存储器102、硬件110或与此类似的设备中的一个或多个。VM内运 行的软件常常称为"访客"软件。
根据一些实施例,可以将图形设备116、存储器控制器215和图形控制器118其中一个或多个的任何组合视为图形路径。如本文定义 的,图形"芯片组"可以包括MC 115、设备116和/或控制器118。 例如,对于集成的实施例(例如图1A和图6A),图形芯片组可以是 MC115和设备116。或者,对于非集成的实施例(例如图1B和图6B), 5 图形芯片组可以是MC 115和设备118。 一些情况(例如将图形设备(例 如图形设备116)作为存储器控制器(例如MC 115)的一部分集成的情 况)可以描述为"集成图形"(例如图形设备是集成图形设备(例如图1A 和6A中所示的设备116)的情况)。或者, 一些情况(例如并不将图形 设备(例如图形设备118)作为存储器控制器(例如MC 215)的一部分集 10 成的情况)可以描述为"分离图形"(例如图形设备不是存储器控制器 的一部分或不与存储器控制器集成(例如图1B和6B中所示的设备118) 的情况)。
图1B是示出根据一个实施例的虛拟化环境中分离图形渲染路径 的框图。例如,图1B示出的VMM环境200包括耦合到虛拟机操作
15 系统130、虚拟机操作系统140和硬件110或耦合在它们之间的虚拟 机VMM 120。图IB还示出虚拟机图形VM 150、硬件110的耦合的 存储器控制器215,存储器控制器215又耦合到分离的图形控制器 118。控制器118可以执行本领域中公知的图形设备或控制器的功能。 可以例如在桌面型计算机、膝上型计算机、手持计算设备、个人计算
20 机(PC)、工作站、电子设备、计算设备等中实施环境200。
图1B示出耦合在图形控制器118、 CPU 101和图形VM150之间 的存储器控制器215。 MC 215可以包括或描述为存储器控制器设备电 路,并且下文在图6B中对其进行进一步的描述。分离图形设备118 可以"独立地"将来自操作系统130、 140或150的直接存储器访问
25 (DMA)请求的GPA转换成用于从存储器的物理地址直接访问图形数 据的HPA(例如,存储器360的HPA362,如针对图2所述),而无需 使用VMM 120(例如,在系统130和140通过VMM 120访问图形控 制器118时,不发M VMM中的图形驱动程序的请求或以其他方式访问VMM 120以获取图形驱动程序功能性)。因此,图形VM 150可 以与图形控制器118通信,例如发送^f吏用图形VM 150和控制器118 来满足系统130和系统140的图形需求的命令,而无需VMM 120中 的图形驱动程序。分离部件可以包括一个或多个分离图形设备,例如 5与存储器控制器215分离或不是其一部分的分离图形控制器118。
在一些实施例中,直接将图形设备(例如,图形设备116和/或控 制器118)指定给图形VM(例如,图形VM150)。此类直接指定(例如, 不发送通过VMM 120在图形VM 150与设备116之间传送的图形数 据)可以描述为指定的图形。而且,指定的图形或直接指定可以包括图
10 形VM可以直接驱动图形设备或控制器的情况,和/或图形VM中的 驱动程序可以对图形设备或控制器的硬件或电路编程而不经过或使 用VMM的情况。
芯片组或控制器118可以包括在分离的图形卡中和/或可以从存 储器读取图形数据并提供图形数据以便在屏幕、显示器或监视器上显
15 示为图像(例如视频)。图形控制器118可以是分离图形设备(例如不与 存储器控制器(例如控制器MC215)集成且执行图形显示功能的设备)。 而且,分离图形可以描述具有或包括1交连逻辑"、输A/输出接口和 /或MC215和装置118之间的总线的系统或设备。控制器118可以执 行与本文针对设备116所描述的功能相同的功能,所例外的是控制器
20 118是环境200中的分离控制器并作为分离图形控制器与MC 215交 互或通信。相应地,MC215可以^l行与本文针对MC 115所描述的功 能相同的功能,所例外的是MC215使用环境200中的分离控制器118, 并且不包括集成图形设备
图1B的其他组件可通过上文参考图1A和图6A来描述,所例外
25 的是它们处在环境200中,并且(例如经由MC215)与控制器118交互 或通信,而非与设备116交互或通信。例如,存储器102可以存储要 由CPU 101、图形VM150、 MC215和/或控制器118操作、转换、检 测和/或访问的指令和/或数据。当前图形设备(例如设备116或118)使用图形地址转换表来将图 形地址(例如DMA的地址)变换为物理地址。当将图形设备指定给VM 时,则可以由图形VM中的驱动程序构建转换表。因为图形驱动程序 仅具有存储器的访客(GPA)视图,所以通过查询该表获得的地址得到 5 GPA地址,因此在(例如要渲染或显示的图形数据的)存储器访问之前 需要转换成HPA。
例如,图2是示出根据一个实施例的图形数据路径的框图。图2 示出的环境300包括耦合到图形设^V控制器316的存储器360,图形 设备/控制器316又耦合到监视器310。监视器310可以是显示器或监
10 视器,例如本领域中公知的计算机或视频监视器。设备/控制器316可 以表示设备116或控制器118。渲染引擎317可以用于渲染图形数据, 而显示引擎319可以用于显示(已经由渲染引擎渲染的)数据。而且, 引擎317和319可以使用渲染数据路径和显示数据路径,其已经包含 用于将图形地址变换为物理地址的转换表。存储器360使用主机物理
15 地址(HPA)362来(例如通过将图形数据存储在HPA地址处来)存储图 形数据(例如图形数据370、 372、 374、 376和378)。存储器360可以 是或包括存储器,并且可以包含上文针对存储器102描述的数据。而 且,图形数据370、 372、 374、 376和378可以是图形指令和/或数据。 例如,数据370-378中任何一个数据可以是用于应用132和/或142中
20 任何一个应用的图形数据。因此,地址362的相邻位置或地址中的数 据可以并不来自相同应用。数据370-378可以是数据的"块",例如 4,096 (4K)字节或其他数量字节的图形数据的块。
如图所示,渲染引擎317可以(例如通过MC 115或215来)访问存 储在存储器360中的图形数据,例如通过使用HPA362来将渲染的图
25 形数据写入到存储器360的HPA 362以及从存储器360的HPA 362 读取渲染的图形数据。显示引擎319也可以(例如通过MC 115或215 来)访问存储在存储器360中的图形数据,例如通过使用HPA 362从 存储器360的HPA 362读取渲染的图形数据。引擎319可以将渲染的
17图形数据显示在监视器310上,例如通过(例如在从存储器360读取渲 染的图形数据之后)显示视频馈送、图像、像素化的图像或帧等。例如, 在一些情况中,应用132可以包括要由渲染引擎317渲染并存储在地 址362处的图形数据。此后可以由显示引擎319访问并处理此渲染的 5数据,并对其处理以显示在显示器310上。
在一些实施例中,数据块370-378的地址是被直接存储器访问 (DMA)设备用来访问主存储器中的图形数据的主机硬件物理存储器 地址或存储器中的物理地址。例如,DMA请求可以是MC 115和/或 设备116不使用CPU 101而直接从设备(例如硬件设备112)接收的有
10 关从存储器102读取数据或将数据写入存储器102的请求。这种读或 写可以描述为访问存储器,并且可以是根据应用132中的一个应用来 进行的或由此应用所产生的。在将图形设备指定给VM的虚拟化环境 中,DMA请求中的地址可以是GPA,但是对于要由设备116满足的 DMA请求,必须将这些GPA转换为HPA。与针对图2描述的概念相
15似的概念适用于图1B和6B的MC215和控制器118(例如环境200)。 虽然可考虑其他实施例,但是图形设备116可包括两个主数据路 径,例如渲染数据路径和显示数据路径。例如,图3是示出根据一个 实施例的高级调度器模型中的图形数据路径的框图。本文描述的高级 调度器可以包括如美国华盛顿州雷德蒙德的Microsoft公司(Redmond,
20 Washington)的Microsoft高级调度器的功能性的功能性。高级调度器 可以是或包括MC 115支持的功能性。而且,高级调度器可以是或包 括图形存储器管理器操作系统软件或应用。具体地说,高级调度器可 以是操作系统或图形VM(例如图形VM 150)的一部分。图3示出的环 境400包括非虚拟化环境中的显示路径410和渲染路径420。显示引
25 擎219使用图形地址来访问数据。通过全局GTT 264将图形地址转换: 为HPA。渲染引擎217使用两级分层页表遍历来将图形地址转换为 HPA。表264、 266和268是必需的,因为图形VM 150使用虚拟地址 来对设备116编程,而存储在存储器360中的图形数据^皮存储在物理地址362中(例如,参见图2)。因此,数据路径410和420结合从图形 地址到物理地址(例如,HPA)的转换表。因为在将图形设备直接指定 给VM的虚拟化环境中,GTT264和页目录266由图形VM(例如图形 VM 150)来构建或创建(例如通过在引导期间创建它们的项),所以它们 5 包含GPA中的项。因此,必须将这些GPA地址转换为HPA地址以 便正确地从存储器360访问图形数据。与针对图3描述的概念相似的 才既念适用于图1B和6B的MC 215和控制器118(例如环境200)。
虽然图3和图6示出可满足高级调度器功能性(例如Microsoft高 级调度器的功能性)的转换表264、 266、 268、 272、 274和278,但是 10 本文针对这些表描述的概念也可以应用于多种其他转换表功能性或 标准。
根据实施例,DMA重新映射规范可以使用多级页表遍历(walk) 以将GPA地址转换为HPA。遍历所需的级数取决于需要支持的地址 空间的大小。例如,对于32位,需要3级页表遍历。对于支持39十
15位地址空间的较大系统,需要4级遍历。例如,图4是示出根据一个 实施例的直接存储器访问(DMA)重新映射3级遍历的框图。图4示出 包括图形设备116的环境500,图形设备116发送要通过3级遍历 580(可称为表580)转换或重新映射的DMA请求510。在此示例中, 请求510包括GPA 512和请求方ID 514(例如总线、设备、功能)。GPA
20 512可以表示虚拟存储器地址,例如从应用132 "l妄收的地址。上下文 项将请求映射到要使用的适合页表或转换。
GPA512具有32位,可分成2,+9,+9,+12位查询。第一次查询, 查询532使用GPA 512的前2位在页542中查询。第二次查询,查询 534使用随后9位在页544中查询。第三次查询,查询536在页546
25 中查询随后9位。余下的查询,查询538在4千字节的页550中查询 余下的12位。可以认识到,位于每个中间级的查询538的12位佳_得 页550具有4千字节或以下的大小。3级遍历580可以设计成以4千 字节页的粒度来提供重新映射,同时使得多个页表本身能够在4千字节的页内。例如,遍历580可以转换数据370-378或它的块的32位虛 拟地址或GPA,正如参考上文描述的。
在一些实施例中,3级遍历580可以在系统初始化或引导或加载 应用时由VMM 120(例如通过构建页表542、 544、 546和550来)创建 5 或构建。也可考虑,可以在例如实现环境100的计算系统(例如计算i殳 备)和/或CPU IOI(例如根据BIOS 103)的引导或初始化期间由MC 115 和/或VMM创建表580。与针对图4描述的概念相似的概念适用于图 IB和6B的MC 215和控制器118(例如,环境200)。
可以认识到,除了当前图形和物理地址变换(例如表264、 266和
10 268)之外,执行3级DMA重新映射遍历(在路径410和420中是必需 的情况中)可能在这些路径中带来严重的延迟问题。例如,图5是示出 根据一个实施例的在应用3级遍历的本发明实施例之前虛拟化环境中 的图形数据路径的框图。图5示出包括显示引擎219的环境600,在 路径410中,显示引擎219将显示请求602传送到全局GTT 264,全
15 局GTT 264则将GPA地址612输出到3级遍历580中,3级遍历580 将HPA转换(translation)614传送到存储器360。图5还示出在路径420 中,渲染引擎217将渲染请求604发送到页目录266,页目录266则 将GPA地址622输出到3级遍历580中,3级遍历580将HPA转换 624输出到每个进程GTT 268,每个进程GTT 268将GPA地址626
20输出到3级遍历580,3级遍历580将HPA转换628发送到存储器360。 又如图2所示,设4V控制器316没有存储器360的物理地址的真 实视图。因此,必须将图形VM 150编程的GPA请求转换或变换为 HPA以便正确地访问位于存储器360的HPA362处的图形数据。
更具体地说,在图5中,显示请求602可以是使用从应用132发
25送到全局GTT 264或在GTT 264中查询的一组图形地址的DMA请 求。然后,GTT 264输出或传送GPA转换612(此处,因为图形VM 150 没有存储器的真实视图,所以认为GPA是存储器的HPA)。接下来, 3级遍历580将转换612变换成HPA 614,并将转换614发送或传送到存储器360。注意除了表264处所需的转换外,路径410还在遍历580处包括附加的3级遍历。
而且,渲染请求604可以是使用从应用132发送到页目录266或在页目录266中查询的图形地址的DMA请求。然后,目录266发送5 或传送GPA转换622以指向下一级表(图形VM 150也创建具有GPA项的表)。但是,这是GPA,所以可以将其转换为HPA。接下来,3级遍历580将转换622变换成HPA转换624,并将转换624发送或传送到每个进程GTT268。每个进程268传送或发送GPA转换626。接下来,3级遍历580将转换626变换成HPA转换628,并将转换628
10 发送或传送到存储器360。注意除了表266和268处所需的转换外,路径420还需要6个附加级的遍历。
与针对图5描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。例如,可以由引擎229和227分别生成请求602和604。
15 当前实现是按Intel公司的VT-d技术来定义的。 一些实施例使用
多级表来将地址从GPA转换为HPA(例如为了转换32位地址,可以使用3级表)。可以认识到,图形设备或控制器可以是具有严格延迟要求的高性能设备。未能满足延迟要求可能导致显示撕裂和失帧或渲染丧失,从而在监视器或显示器上显示的图像中造成用户可见的缺陷。
20因此,映像表可以提供将GPA转换为HPA的更有效率的方式。
根据一些实施例,可以组合图5的表和遍历以消除或减少多级遍历,并提供将产生高性能的实现。例如,可以用单级重新映射表来替代每个进程GTT268与存储器360之间的3级遍历。而且,可以创建一个映像表,以在该表与存储器360之间将全局GTT 264与3级遍历
25 580组合。类似地,可以创建另一个映像表,以在页目录266与表268之间将页目录266与3级遍历组合。因此,这些映像表可以将在路径410和路径420中分别从引擎219和217接收的虚拟地址(图形地址)直接变换到HPA。根据实施例,环境100可以用于创建转换表的项以便将来自应用 132和/或142的用于访问图形数据的请求(例如DMA请求)的虚拟存 储器地址或访客物理地址(GPA)转换为存储器102中存储或具有该图 形数据的主机硬件物理存储器地址(例如,HPA)。例如,图6A是示出 5 根据一个实施例的VMM环境中的集成图形设备的框图。图6A示出 耦合在CPU101、图形控制器116、输A/输出控制器211(例如IO存 储器控制器)和存储器260之间的存储器控制器115。存储器260可以 是与存储器102和/或存储器360相同的存储器,其可以是主存储器, 可以是RAM存储器或可以是其他存储器。
10 图6A示出包括图形设备116的MC115,图形设备116具有渲染
引擎217和显示引擎219。渲染引擎217可以用于渲染图形数据,而 显示引擎219可以用于显示(已经由渲染引擎渲染的)数据。而且,引 擎217和219可以使用渲染数据路径和显示数据路径,其已经包含用 于将图形地址变换为物理地址的转换表。在一些情况中,引擎217和
15 219可以使用或包括存储在存储器260中的一个或多个转换表。引擎 217和219也可以表示引擎317和319。
例如,存储器260可以包括图形VM分配的存储器262和/或预先 分配的映像存储器270。存储器262包括诸如访客全局访客转换表 (GTT^M(可以称为表264)、访客每个进程页目录(PPPD)M《可以称为
20 表266)和每个进程GTT 268(可以称为表268和/或PPGTT)的表。表 264、 266和268可以用于将图形地址转换为访客物理地址。存储器 262中存储的表可以例如在实现环境100的计算系统和/或CPU IOI(例 如,根据BIOS 103)的引导或初始化期间由图形驱动程序来创建或构 建。存储器262中存储的表也可以在加栽或执行应用132或142中的
25 —个应用期间由图形驱动程序创建。在一些情况中,"加栽,,和"启 动"可以描述相同的功能或发生的情况,例如当计算机程序^^处理器 启动并加栽到主存储器中时。类似地,有时,1丸行"和"运行"可 以描述相同的功能或发生的情况,例如执行被处理器加载到存储器中的计算机程序以便执行根据该程序的功能(例如包括显示和渲染图形
数据)时。此类驱动程序(driver)可以是图形VM150的一部分,例如可 以是软件、应用程序、应用代码。而且,此类驱动程序可以是存储在 机器可访问介质中的指令,这些指令可以被机器(例如处理器)执行以 5 使得机器执行本文针对这些驱动程序描述的功能,和/或创建和/或使 用本文描述的表(例如映像表)。此类驱动程序还可以包括来自应用要 求硬件执行数据的处理和/或显示的命令。例如,这些驱动程序可以使 MC 115、 MC215、设备116、控制器118和/或存储器260执行本文 描述的功能。
10 例如,存储器270可以包括诸如映像全局GTT 272(可以称为表
272)、映像访客PPPD 274(可以称为表274)和/或单级直接存储器访问 (DMA)重新映射278(可以称为表278)的多种映像转换表。在(例如根 据DMA请求)渲染和/或显示图形数据期间,表272、 274和278可以 分别替代表264、 266和268或替代表264、 266和268的功能。在一
15些情况中,表272、 274和278中的仅一个或两个表可以存在和/或用 于显示图形。根据一些实施例,存储器260可以包括仅存储器262、 仅存储器270或存储器262和存储器270。
用于存储器270的表(例如无论是否连续的表272、 274和/或278) 的存储器存储位置、地址和/或空间可以在例如实现环境100的系统和
20 /或CPU 101的引导或初始化期间在存储器260中予以预留或预先分 配(例如根据BIOS 103而不向VMM报告所分配的存储器)。具体地说, 可以在实现环境100的系统和/或CPU 101的引导或初始化期间由 BIOS 103和/或VMM 120在存储器260中预留或预先分配用于存储器 270的表的空间。
25 根据一些实施例,在引导期间,BIOS可以预留足够的空间来存
储图形地址至HPA转换表,例如映像全局GTT 272,并且预留足够的 存储量来存储用于将PPPD项预先转换为HPA的转换表(例如表274)。 预先转换的表274确保在查询PPPD项(例如映像访客PPPD 274)之后无需联机重新映射遍历。可以约束表274的大小以支持特定数量的应 用(例如,多达IOO、 200、 300、 400、 1000或其任意组合个应用)。下 文参考图9进一步描述创建表278。类似地,在引导或初始化VM应 用(例如应用132)的图形程序期间,BIOS可以包括用于预留足够空间 5 以存储单级DMA重新映射表(例如重新映射278)的项,其中单级DMA 重新映射表(例如重新映射278)用于将数据从GPA转换为HPA。
例如,表278可以执行与将GPA转换为HPA的表的操作或功能 相似的操作或功能,例如与图4的3级遍历580所执行的功能相同的 功能。因此,重新映射278可以是单级重新映射表(例如,无法包含在
10 4千字节页内的表),并且可以位于连续的存储器中。具有连续表(例如 单级查询表)避免了遍历多级表的各个级所引起的延迟,从而在渲染和 /或显示图形数据期间提供更快且更有效率的GPA至HPA的转换或变 换的益处。连续存储器可以描述为存储器中有共同的边缘或边界、接 触、相邻、邻接、无间断地连接和/或直接相邻的地址或位置。例如,
15 存储器中的连续地址可以是一个接一个的地址。或者,存储在具有不 连续次序的位置中的地址或位置,或不包含表数据的部分的位置可以 描述为非连续存储器。可设想,表272、 274可以位于或存储在连续 存储器中(例如,可将这些表的其中一个或多个都存储在存储器260的 连续存储器位置中)。表278也可以位于与表272或274分离或不连续
20 的存储器位置或地址中。在一些情况中,存储表272的存储器地址与 存储表274的存储器地址相邻,但是用于表272以及表274的存储器 地址都不与用于表278的存储器地址相邻。表278的大小将取决于图 形VM(例如,设备116)的图形地址空间。例如,表278可以对应于每 个4千字节页包含8千字节的项,并且因此表278可能需要存储器270
25 中8兆字节连续表以提供4吉字节图形地址空间的转换。用于存储器 270的所有表的空间可以由系统BIOS来分配,而不向VMM或VM 报告,正如上文提到的。
存储器270还可以包括表278表示的GPA至HPA转换表。表278
24可以是单级、2级、3级或4级表。表278(例如表278表示图4的3 级遍历580的情况)可以在实现环境100的计算系统和/或CPU IOI(例 如根据BIOS 103)的引导或初始化期间由VMM来创建(例如,无需处 理或访问MC115或215)。 5 表278可以例如在实现环境100的计算系统和/或CPU IOI(例如,
根据BIOS 103)的引导或初始化期间由VMM来创建或构建。表272 和274也可以由硬件(例如MC115或215)来创建。在一些情况中,在 MC 115或MC 215的电路或硬件(例如检测电路)检测到或感测到由图 形VM 150创建的对应表264或266(例如非映像表)的项纟皮创建时创建
10 表272或274(例如映像表)的项。根据一些实施例,MC 115或MC 215 的电路或硬件感测到表262的非映像项被创建,则创建表272的对应 项或关联项(例如在表272中与表262中的项或对表262的更新相同的 位置或地址设置转换的HPA项)。同样地,在一些情况中,MC 115 或MC 215的电路或硬件感测到表264的非映像项^皮创建,则创建表
15 274的对应项或关联项(例如在表274中与表264中的项或对表264的 更新相同的位置或地址设置转换的HPA项)。
还可以在实现环境100的计算系统的操作期间(例如在诸如VM应 用或应用132之一的应用(例如,图形应用或包括将图像显示在显示器 或监视器上的图形指令的应用)启动、加载、初始化和/或执行期间)更
20 新表264、 266、 268、 272、 274和/或278。例如,图形VM 150和/ 或图形VM 150的驱动程序可以在应用132之一^皮启动时在存储器 270中更新表272、 274和/或278。
在一些情况中,在MC 115或MC 215的电路或硬件感测到图形 VM 150更新对应表264或266的项(例如,创建了新的项或盖写表264
25 或266非映像表的现有项)时,表272或274(例如映像表)的项将被更 新。根据一些实施例,MC 115或MC215的电路或硬件感测到表264 中现有的非映像项被更新,则更新表272的对应项或关联项(例如在表 272中与对表264的更新相同的位置设置转换的HPA项)。例如,可
25以在存储器中从基地址(例如,1000)将表264中的项偏移相同的地址 量(例如,+5)(例如,将处于1005),而在存储器中从不同的基地址(例 如,2000)将表272中的项偏移相同的地址量(例如,+5)(例如将处于 2005)。同样地,在一些情况中,MC 115或MC 215的电路或硬件感 5 测到表266中现有的非映像项被更新,则更新表274的对应项或关联 项(例如在表274中与对表266的更新相同的位置设置转换的HPA项)。 因此,表274和266可以采用相同索引号编索引。
在一些情况中,图形VM 150可以包括高级调度器,例如包括美 国华盛顿州雷德蒙德的Microsoft公司(Redmond, Washington)的
10 Microsoft高级调度器的功能性或部分功能性的高级调度器。例如,当 应用被启动时,利用高级调度器体系结构编译的图形VM可以创建、 存储和/或更新表264、 266、 268。转换表264、 266、 268、 272、 274 和/或278可以满足高级调度器的功能性,例如Microsoft高级调度器 功能性。还可以设想,转换表264、 266、 268、 272、 274和/或278可
15 以满足不同于高级调度器的功能性的本领域中公知的另一种标准。
根据一些实施例,图形VM 150可以不使用或不访问VMM 120 来访问图形设备116,而系统130和140通过VMM 120来访问图形 设备116。确切地说,MC115可以使用表272的项将应用所使用的虚 拟地址(图形地址)转换为图形数据在主存储器中的主机硬件物理存储
20 器地址(例如,HPA)。类似地,MC115可以使用表274创建表274的 项,以便从每个进程页目录的虚拟地址转换为图形数据在主存储器中 的主机硬件物理存储器地址(例如,HPA)。
虽然图1A和6A参考集成图形设备来描述实施例,但是本文描述 的这些概念也适用于各种其他图形设备、芯片组、电路、硬件、渲染
25 路径和/或显示路径。例如,分离图形路径可以使用与环境100的集成 路径相似的机制。分离图形路径可以是能够通过发出具有访客物理地 址(GPA)的DMA请求且无需访问VMM和/或无需访问图形VM而使 图形控制器和/或存储器控制器将GPA转换为主存储器的主机物理地址(HPA)或物理存储器地址来访问图形数据的路径。
根据实施例,环境200可以用于创建转换表的项以便将来自应用 132和/或142的用于访问图形数据的请求(例如DMA请求)的虚拟存 储器地址或访客物理地址转换为该图形数据存储在或位于存储器102 5 中的主机硬件物理存储器地址(例如,HPA)。例如,图6B是示出根据 一个实施例的虚拟机监视器(VMM)环境中的分离图形设备的框图。图 6B示出耦合在图形控制器118、 CPU 101、输A/输出控制器211(例如 10存储器控制器)和存储器260之间的存储器控制器215。存储器260 可以是与存储器102相同的存储器和/或执行与存储器102相同的功 10 能。存储器260也可以是主存储器,可以是RAM存储器或其他存储 器。
图6B示出耦合到图形控制器118的MC215,图形控制器118具 有渲染引擎227和显示引擎229。渲染引擎227可以用于渲染图形数 据,而显示引擎229可以用于显示(已经由渲染引擎渲染的)数据。而
15 且,引擎227和229可以使用渲染数据路径和显示数据路径,其已经 包含用于将图形地址变换为物理地址的转换表。在一些情况中,引擎 227和229可以使用或包括存储在存储器260中的一个或多个转换表。 渲染引擎227和显示引擎229可以执行与本文针对渲染引擎217和显 示引擎219所描述的功能相同的功能,所例外的是渲染引擎227和显
20 示引擎229是环境200中的分离控制器的一部分,并作为分离的渲染 引擎和分离的显示引擎与MC 215交互或通信。引擎227和229也可 以表示引擎317和319。
图6B的其他组件可在本文中参考图1A和图6A来描述,所例外 的是它们处在环境200中,并且(例如经由MC215)与控制器118、渲
25 染引擎227和显示引擎229交互或通信,而非与设备116、渲染引擎 217和显示引擎219交互或通信。
根据实施例,环境200、图形VM 150、 VMM 120、硬件110、 CPU 101、存储器102、 BIOS 103、系统130和140以及MC215可以预留存储器空间用于创建、更新和使用表264、表266、表268映像 全局GTT 272、映像访客PPPD 274和/或单级直接存储器访问(DMA) 重新映射278,正如本文参考环境200和图1A和图1B的那些表的创 建所描述的。
5 才艮据一些实施例,图形VM 150可以不使用或不访问VMM 120
来访问图形设备118,而系统130和140通过VMM 120来访问图形 设备118。 一般来说,图形控制器期望能够(例如,这对于系统和/或图 形路径更具效率)接收来自图形VM 150(例如包含GPA的指令)的命令 指令(例如图形指令),以及访问存储器中的数据(例如图形数据),而无
10 需VMM 120来提供GPA至HPA的转换。例如,设备118可以是分 离图形控制器,例如无需访问VMM 120而与才喿作系统130和/或140 通信的图形控制器。为了实现此目的,控制器118和/或MC215可以 包括用于使用转换表的项来从GPA转换为HPA的电路、硬件、软件 和/或逻辑。确切地说,控制器118和/或MC215可以使用表272的项
15 以在图形转换表中将应用所使用的虚拟地址(图形地址)转换为图形数 据在主存储器中的主机硬件物理存储器地址。类似地,控制器118和 /或MC 215可以使用表274创建表274的项,以便从每个进程页目录 的虚拟地址(例如GPA)转换为图形数据在主存储器中的主机硬件物理 存储器地址。
20 如图1A、 1B、 6A和6B所示,环境100或200允许在10设备直
接被指定给VM时将输A/输出设备(例如设备112、 114或116)直接指 定给虚拟机(例如,系统130、 140或150),这样可以将该设备的设备 驱动程序移出VMM 120而移入到控制VM中。例如,通过将图形设 备116或控制器118直接指定给图形VM 150,可以将通常位于VMM
25 120中的所有图形驱动程序(例如驱动程序122的驱动程序)移入到图 形VM 150中。但是,因为VM具有存储器的虚拟化视图(例如图形 VM 150具有存储器102的虚拟化视图),所以这些设备驱动程序或 VM(例如图形VM 150)中的驱动程序使用GPA来对10设备(例如,设备116和/或控制器118)编程。为了获取对正确数据的访问权,可能需 要MC 115或215(例如,图形芯片组的一部分)将IO设备发出的地址 从GPA转换为HPA。更具体来说,由于存储器的"虚拟化视图", 所以每个部分或VM可以发送含有GPA的DMA请求。但是,因为图 5 形设备(例如,设备116和/或图形控制器118)具有"虚拟化视图"(例 如,物理存储器地址的视图),为了对于图形设备来说能够正确满足请 求,所以必须将GPA转换为HPA。
可以在设备116或控制器118经由具有GPA的图形VM 150从系 统130接收到DMA请求时由MC 115或215来执行此转换。这些DMA
10 请求的地址被MC 115或215转换以指向表272或274中的存储器地 址,而该存储器地址与DMA请求在表264或266中所指向的地址相 对应。因此,并不是使用表264或266和3级遍历(或其他GPA至HPA 转换表)来将GPA变换或转换为HPA,而是使用表272或274将DMA GPA转换为HPA。这样通过渲染和/或显示引擎可以更快速且更有效
15率地在存储器中访问图形数据。
具体地说,因为图形VM 150通过MC 115或215来访问存储器 260,所以图形VM 150具有存储器260的物理地址的访客视图。因此, 仍必须由存储器控制器、图形设备和/或二者的组合将DMA请求的 GPA转换或变换为HPA,以便正确地从存储器260访问图形数据。
20 无论何时只要创建或更新访客表(264、 266),就对映像表的项进
行DMA重新映射(例如从GPA映射到HPA),因此映像表的项包含 HPA项。例如,图7是示出根据一个实施例的用于创建映像全局GTT 的环境的框图。图7示出的环境700具有图形VM 150,该图形VM 150 尝试将GPAGTT项安装到访客GTT中。例如,图形VM150可以安
25 装项710(例如,包含作为来自应用132的DMA请求要使用的数据的 偏移量和图形地址)。使用在(偏移量、GPA数据)712中提供的GPA 数据,在(偏移量、GPA数据)712所指定的位置处创建、存储、安装 或更新表264。
29因为图形VM 150没有存储器260的物理地址的真实视图,所以 每次当来自应用132的DMA请求要访问该地址处(例如在GPA 712 处)的数据时需要将表264的(偏移量、GPA数据)712的数据部分(例如, (偏移量、GPA数据)712包含偏移量和GPA作为数据)转换或变换为 5 HPA,以便正确地从存储器访问图形数据。并不是——执行所述无数 种变换,而是可以通过将(偏移量、GPA数据)712转换或变换为适合 的HPA,将该转换存储在映像表中的表内相同的对应位置处从而建立 更有效率的系统。每次由路径410处理来自应用132的DMA请求时, 并不是在表264中执行查询(例如变换或转换)然后在表580中执行另
10 —次查询,而是执行映像表中的单级查询以便更快速且更有效率地将 DMA请求变换为HPA地址。
因此,环境700示出由MC 115转换或变换为更新的(偏移量、HPA 数据)714数据部分的(偏移量、GPA数据)712被转换,然后存储在映 像全局GTT表272中的表内相同的对应位置处。因此,从图看出(偏
15 移量、GPA数据)712发送到两个位置或被MC115 "复制(forked)"以 更新表264和表272。 MC115可以包括或作为查询电路,例如执行此 转换或变换的电路(还参见图8)。现在,在运行时(例如VM上执行图 形应用期间),每次由路径410处理来自应用132的DMA请求时,并 不是在表264中执行查询(例如变换或转换),然后在表580中执行另
20—次查询,而是执行映像表272中的单级查询以便更快速且更有效率 地将DMA请求变换为HPA地址。确切地说,映像表GTT 272现在 可以用于执行单级查询来将DMA请求的图形地址变换或转换为(HPA 数据)714(例如通过查询映像表中的对应地址以获取(HPA数据)714)。 有关更多解释,参见图12。
25 此外,图8是示出根据一个实施例的用于创建映像全局GTT的过
程的流程图。图8示出过程800,例如可以对应于环境700和/或以其 他方式创建映像全局GTT的项的过程。图8示出过程800 ,包括框810, 其中Gfe: VM尝试将GPA GTT项安装到访客GTT中。例如,图形VM 150可以(例如从图形应用或设备驱动程序)接收或访问图形地址 项并将其变换为全局GTT的GPA项。框810可以包括通过图形VM 或操作系统接收或访问项710,如上文对于图7描述的那样。框810 还可以包括上文参考图形VM 150由项710创建、转换、变换或构建 5 全局GTT 264的(偏移量、GPA数据)712的描述。在框820处,将Gfk VM提供(例如访问和变换)的GPA项存储在访客GTT中,例如上文 对于(偏移量、GPA数据)712和表264描述的那样。
接下来,在框830处,检测到(例如,访问或复制)GfkVM安装的 GPA项,并将其转换为HPA项(例如,将GPA数据部分转换为HPA,
10 但是(偏移量、GPA数据)712的索引、偏移量或位置不变)。框830可 以包括MC 115 4企测到由Gfe VM 150或其他部件(例如,由在GTT的 主存储器中存储项的其他实体)向全局GTT 264添加了项。框830还 可以包括MC 115使用3级遍历580(或另 一种GPA至HPA转换,例 如单级重新映射278)将(偏移量、GPA数据)712转换为(HPA数据)714,
15 正如上文对于图7描述的那样。在框830处的转换可以描述为(例如使 用重新映射表278)将数据从GPA转换为HPA的DMA重新映射。
可以在环境100引导或初始化期间或在应用132或142之一加载 或执行期间安装项710和/或(偏移量、GPA数据)712。类似地,MC 115 可例如使用软件、固件、逻辑、电路、诱捕、停止和/或适合的设备或
20进程,检测或感测到在全局GTT 264的存储器中安装、创建或存储了 (偏移量、GPA数据)712。虽然框830可以包括通过3级遍历的转换, 并且图7示出3级遍历580,但是还可以使用其他适合的GPA至HPA 转换(例如单级遍历,如表278)。
在框840处,将HPA项存储在映像全局GTT中。框840可以包
25 括将(HPA数据)714存储在映像全局GTT272中的与访客GTT相同的 对应位置中,正如上文对于图7所描述的那样。框840和/或图7可以 包括存储例如创建或构建映像表的项,正如上文对图6A或6B的表 272所描述的那样。与图7-8描述的概念相似的概念适用于图IB和6B的MC 215和 控制器118(例如,环境200)。图9是示出根据一个实施例的用于创建 每个进程页显示(PPPD)映像访客的环境的框图。图9示出的环境900 具有图形VM 150,该图形VM 150尝试将GPA PPPD项安装到访客 5 PPPD中。例如,图形VM 150可以安装项910(例如,包含偏移量和 图形地址,其作为数据用于来自应用132的DMA请求)。可以将项910 的偏移量和图形地址数据包含在请求604中。图形VM 150从项910 创建、转换、变换或构建页目录266的(偏移量、GPA数据)912。使用 在(偏移量、GPA数据)912中提供的GPA数据,在(偏移量、GPA数
10 据)912所指定的位置处创建、存储、安装或更新表266。
与上文对图7的描述相似,因为图形VM 150没有存储器260的 物理地址的真实^L图,所以每次当来自应用132的DMA请求要访问 该地址处(例如在GPA 712处)的数据时,需要将(偏移量、GPA数据)912 的数据部分转换或变换为HPA,以便正确地从存储器访问图形数据。
15 因此,同样地,在运行时并不是——执行所述无数种变换,而是可以 通过将(偏移量、GPA数据)912转换或变换为适合的HPA,并将该转 换存储在映像表中的表内相同的对应位置处从而建立更有效率的系 统。每次由路径420处理来自应用132的DMA请求时,并不是在表 266中执行查询然后在表580中执行另一次查询,而是使用映像表274
20 执行单级查询以将图形地址变换或转换为HPA。
相应地,环境900示出(偏移量、GPA数据)912由MC 115转换或 变换为(HPA数据)924,然后在表274中与表266中相同的对应位置处 存储(例如,存储、安装或更新)(HPA数据)924。从图看出(偏移量、 GPA数据)912发送到两个位置或通过发送到表266来"复制"(偏移
25量、GPA数据)912,以及检测、访问和/或将(偏移量、GPA数据)912 发送MC115。 MC115可以包括或作为查询电路,例如包括执行此转 换或变换的电路(还参见图10)。每次由路径420处理DMA请求时, 并不是在表266中执行查询然后在表580中执行另一次查询,而是在
32映像表274中执行单级查询以更快速且更有效率地将图形地址变换或 转换为HPA。有关更多解释,参见图12。
此外,图10是示出根据一个实施例的用于创建映像访客PPPD的 过程的流程图。图10示出过程1000,例如可以或可以不对应于环境 5 900和/或以其他方式创建映像访客PPPD的项的过程。图10示出过程 1000包括框1010,其中Gfk VM尝试将GPAPPPD项安装到访客PPPD 中。例如,图形VM 150可以(例如从图形应用或设备驱动程序)访问 图形地址项并将其变换为访客PPPD的GPA项。框1010可以包括图 形VM或操作系统接收或访问项910,如上文对于框810和/或图9描
10 述的那样。框1010还可以包括VM 150由项910创建、转换、变换或 构建表266的(偏移量、GPA数据)912,如上文所描述。在框1020处, 将Gfk VM提供(例如访问和变换)的GPA项存储在访客页目录中,例 如上文对于(偏移量、GPA数据)912和表266描述的那样。
接下来,在框1030处,检测到(例如,访问或复制)Gfk VM安装
15 的GPA项,并将其转换为HPA项(例如,将GPA数据部分转换为HPA, 但是(偏移量、GPA数据)912的索引、偏移量或位置不变)。框1030 可以包括MC 115检测到向页目录266添加了项和/或检测到由Gfk VM 150或其他部件(例如,由在页目录的主存储器中存储项的其他实 体)向存储器写入或输入了项。框1030还可以包括MC 115使用3级
20 遍历580(或另一种GPA至HPA转换,例如单级重新映射278)将(偏 移量、GPA数据)912转换为(HPA数据)924,正如上文对于图9描述 的那样。在框1030处的转换可以描述为(例如使用重新映射表278)将 数据从GPA转换为HPA的DMA重新映射。
可以在环境100引导或初始化期间或在应用132或142之一加栽
25 或执行期间由图形VM 150安装(例如访问)项910和/或(偏移量、GPA 数据)912。类似地,MC115可例如使用软件、固件、逻辑、电路、诱 捕、停止和/或适合的设备或进程,检测或感测到在页目录266的存储 器中插入、创建或存储了(偏移量、GPA数据)912。虽然框1030可以包括使用3级遍历的转换,并且图9示出3级遍历580,但是还可以 使用其他适合的GPA至HPA转换(例如单级遍历,如表278)。
在框1040处,将HPA项存储在映像访客PPPD中。框1040可以 包括将(HPA数据)924存储在映像访客PPPD 274中的映像表内相同的 5对应位置中,正如上文对于图9所描述的那样。框1040和/或图9可 以包括存储例如创建或构建映像表的项,正如上文参考图6A或6B的 表274所描述的那样。
根据一些实施例,环境900和/或过程1000可以包括用于创建映 像访客PPPD的框,而非用于创建单级DMA重新映射的框。或者,
10 —些实施例可以包括创建单级DMA重新映射,但不创建映像访客 PPPD(例如,图6A、 6B和/或图4中所描述的,而非图9-10中所示那 样)。在一些实施例中,在框820和1020处由Gfk VM将GPA项转换 为映像全局GTT和/或映像访客PPPD也是可选的。此外,在一些情 况中,不存在非映像表。MC感测到对表进行写入的尝试,可以由MC
15 和/或以虛拟方式(例如非映像表是指示成功写入而不存储数据的虚拟 表)来提供成功写入的指示。在一些情况中,对不存在的表写入可以是 对MC写入。
与图9-10描述的概念相似的概念适用于图1B和6B的MC 215 和控制器118(例如,环境200)。在此类情况中,MC 215可以包括或
20 作为查询电路,例如执行此转换或变换的电路。
图11是用于维护或更新映^象表的环境的框图。图11示出的环境 1100包括图形VM150、存储器260和映像存储器270。图形VM150 可以创建或产生全局GTT更新1110和/或进程页目录更新1120。更 新1110和/或1120可以分别与(偏移量、GPA数才居)712和/或(偏移量、
25 GPA数据)912相似,不同的是更新1110和1120可以在环境100的计 算系统引导或初始化之后发生。更新1110和1120还可以描述在任何 时间更新表中已经存在的项。更新1110和1120可以例如在将它们发 送、写入或以其他方式用于更新存储器260中的表264或266时被MC115感测或检测到。
根据实施例,MC 115使用单级重新映射来创建要写入或输入到 存储器270的表272和/或274中的映像表更新或项。例如,单级重新 映射可以使用例如单级DMA重新映射278的表将GPA地址转换为 5 HPA地址。或者,在其他实施例中,响应到检测后,MC115^f吏用多 级遍历580来创建要写入或输入到存储器270的表272和/或274中的 映像表更新或项(根据一些实施例)。
类似地,VMM 120可以提供要发送到或写入存储器260中的表 268中的项1125。根据实施例,硬件可以不对每个进程GTT表建立映
10 像,从而这些表可以保留在GPA中。因此,在一些情况中,在访问 存储器之前,需要使用3级遍历580转换项1125以创建HPA地址。 此过程可以与上文对图6A、图6B和/或图4的每个GPA至HPA表的 创建所描述的过程相似。
与图11描述的概念相似的概念适用于图1B和6B的MC 215和
15控制器118(例如,环境200)。
图12示出根据一个实施例的图形渲染和显示数据路径的框图。 图12示出的环境1200包括路径1210(例如显示路径)和路径1220(例 如渲染路径)。路径1210可以是与图5的路径410相似的路径,不同 的是路径1210使用表272来替代表264和遍历580。同样地,路径
20 1220可以是与图5的路径420相似的渲染路径,不同的是路径1220 使用表274来替代目录266和遍历580,并且可以使用重新映射278 替代遍历580。环境1200包括(例如图形设备116的)渲染引擎,该渲 染引擎将渲染的请求604发送到映像访客PPPD 274。通过表274将请 求604转换为转换1224。
25 可以理解到,使用表274来执行单级转换,远比使用图3、图6
或图9的目录266和遍历580更有效率。1224处的转换可以对应于图 5的HPA 624或使用图9的(HPA数据)924的转换的请求或表274的 项。转4灸1224还可以对应于图7的转换714。可以由MC115-使用存储器270来执行使用表274的转换,正如图6A或6B所示那样。这样 1224处的转换可以是发送到每个进程GTT 268的查询。在表268中, 所述查询提供GPA 1226。 GPA 1226可以对应于图5的GPA626或图 9的924或表268的项。然后将转换1226发送到单级DMA重新映射 5 278。由重新映射278将GPA 1226转换为转换1228。转换1228可以 是或对应于图5的HPA 628或通过表268或278转换的HPA。可以 由MC 115使用存储在存储器270中的单级DMA重新映射(例如重新 映射278)来执行GPA 1226转换为转换1228的转换,如图6A或6B 所示那样。可以将转换1228发送到存储器360以用于例如图2的数 10 据访问。
可以理解到,使用重新映射278将GPA 1226转换为转换1228比 上文使用图5的查询580将GPA 626转换为HPA 628的过程更有效 率(例如,重新映射278是单级的或单次查询转换,而查询580是3级 转换)。或者,在一些实施例中,可以使用除重新映射278之外的重新 15 映射或转换来将GPA 1226转换为存储器360的适合转换。例如,可 以使用3级遍历580来替代重新映射278。
然后,例如可以通过寻址图2描迷的HPA362处的图形数据370 或374的方式,使用转换1228来访问存储器360中的数据(例如读取 或写入图形数据)。
20 在环境1200中,显示引擎(例如图形设备116)也可以将显示请求
602发送到映像全局GTT 272。表272可以将请求602转换为转换 1214,例如对于图3、图5或图9中使用表272所描述的那样。转换 1214可以对应于图5的HPA614或图9的(HPA数据)924。转换1214 还可以对应于使用图7的(HPA数据)714的转换。可以理解到,使用
25 表272将请求602转换为转换1214可比图5中使用表264和查询580 更有效率且更快速。可以由MC 115使用存储在存储器270中的表272 来从请求602转换出转换1214,正如图6A或6B所示那样。可以将 转换1214发送到存储器360以用于例如图2的数据访问。
36表272和274可以在体系结构上对于VM(例如,系统130或140 或应用132或142)和/或VMM(例如,VMM120)不可见(例如,不可见 于或不显露给VM或VMM)。根据实施例,表278可以在体系结构上 总是对于VMM(例如,VMM 120)可见(例如显露给VMM)。表272、 5 274和278可以对于诸如MC 115或215、设备116和/或控制器118 的硬件或芯片组可见。存储器中的表、项、数据或位置可视为对于 VM、 VMM、电路、OS和/或其他实体可见,如果存在下列情况存 储器中的表、项、数据或位置净皮报告给VM、 VMM、电路、OS和/ 或其他实体、VM、 VMM、电路、OS和/或其他实体知道其存在、其
10 被显露给VM、 VMM、电路、OS和/或其他实体、VM、 VMM、电路、 OS和/或其他实体可对其访问、其可写入到VM、 VMM、电路、OS 和/或其他实体、其可从VM、 VMM、电路、OS和/或其他实体读取或 可以其他方式对其操作。存储器中的表、项、数据或位置可视为对于 VM、 VMM、电路、OS和/或其他实体不可见,如果存在下列情况
15存储器中的表、项、数据或位置未^L净艮告给VM、 VMM、电路、OS 和/或其他实体、未使VM、 VMM、电路、OS和/或其他实体知道其存 在、未显露给VM、 VMM、电路、OS和/或其他实体、VM、 VMM、 电路、OS和/或其他实体不可对其访问、其不可写入到VM、 VMM、 电路、OS和/或其他实体、其不可从VM、 VMM、电路、OS和/或其
20 他实体读取或不可以其他方式对其操作。
MC 115可以对于VM或VMM透明地使用表272、274和/或重新 映射278来产生转换。MC 115或215可以对于VM或VMM透明地 创建表272、 274和/或278的项或对表272、 274和/或278更新项。 可p乂由MC 115或215检观'J或感观'J^f GTT ADDR(4列i口全局寿争4奐表地i止)
25 窗口(aperture)的写入,并复制映像表项、更新或使用来透明地执行表 272、 274的创建、更新和使用。复制使用可以包括使用表272、 274 和/或278。复制项或更新可以包括将项发送到表272、 274和/或278 或将项写入到表272、 274和/或278或对表272、 274和/或278更新。
37此外,转换项或数据、查询项或数据或以其他方式使用表272、 274 和/或278或显示或渲染图形数据可以包括,(例如使用基地址和/或偏 移量地址)对表272、 274和/或278中位于对应项在对应表264、 266 和/或268中所在地址或位置相同的位置或地址处的项或数据建立索 5引。
与针对图12描述的概念相似的概念适用于图1B和6B的MC215 和控制器118(例如,环境200)。
图13是示出根据一个实施例的图形显示路径更新和显示路径的 框图。图13示出环境1300,环境1300包括显示更新路径1310和显
10 示路径1320。路径1310可以对应于参考图11描述的环境1100的局 部。其中示出路径1310包括全局GTT更新lllO,全局GTT更新1110 寻皮MC 115复制以向访客全局GTT 264发送一个项并向单级重新映射 278发送另一个项。从单级重新映射278,将更新发送到映像访客全 局GTT 272,例如以便更新表272的项。
15 路径1320可以对应于图12的路径1210的描述,并且可以提供
与图3的路径410相同的功能性。其中示出路径1320包括MC115的 显示引擎219将请求602发送到表272。表272转换该请求,并将其 作为转换1214发送到存储器360。
与针对图13描述的概念相似的概念适用于图1B和6B的MC215
20和控制器118(例如,环境200)。
图14是示出根据一个实施例的图形渲染路径更新和渲染路径的 框图。图14示出环境1400,环境1400包括渲染更新路径1410和渲 染路径1420。路径1410可以对应于图11的环境1100的局部。路径 1410包括每个进程页目录更新1120进入MC 115, MC 115将此更新
25复制成用于访客每个进程页目录266的一个更新和发送到单级重新映 射278的另一个更新。从单级重新映射278,将更新的转换发送到映 像每个进程页目录274。更新1120可以对应于图9的更新(偏移量、 GPA数据)912。路径1410还包括MC 115接收并转发到每个进程GTT 268的每 个进程GTT更新1125。更新1125可以是与针对图6A、图6B和图4 描述的更新表278相似的更新。
其中示出渲染路径1420包括,MC115的渲染引擎217将渲染请 5求604发送到表274,表274将转换1224发送到表268,表268将转 换1226发送到表278,表278将转换1228发送到存储器360。路径 1428可以对应于图12的路径1220。
与针对图14描述的概念相似的概念适用于图1B和6B的MC215 和控制器118(例如,环境200)。 10 图形VM(例如,图形VM 150)、 VMM 120、 MC 115和/或图形i殳
备(例如,设备116和/或控制器118)可以包括用于执行上文参考图1-14 描述的功能的适合电子装置或计算机硬件和软件。还应该认识到,在 不背离本发明范围的前提下,可将更多或更少的设备和/或过程结合到 图l-14所示的i殳备和方法中,并且所示出和本文所描述的框的安排不 15 暗示着有特定的次序。还将认识到,结合图l-14描述的方法和设备可 以在机器可执行指令(例如软件)中实施。这些指令可以用于使得使用 这些指令编程的通用或专用处理器执行所描述的操作和过程。或者,
硬件组件来执行,或由编程的计算机组件与定制的硬件组件的任何组 20 合来执行。这些方法可以作为计算机程序产品来提供,该计算机程序
产品可以包括其上存储有可用于将计算机(或其他电子设备)编程来执
行这些方法的指令的机器可读介质。为了解释本说明书的目的,术语 "机器可读介质"还应该视为包括能够存储用于由机器执行并使该机
器执行本发明任一方法的指令序列或将其编码的任何介质。因此术语 25 "机器可读介质"应该视为包括但不限于固态存储器、光盘和磁盘以
及载波信号。而且,在本领域中通常将软件以一种形式或另一种形式 (例如,程序、过程、进程、应用、模块、逻辑...)论述为执行动作或 促成结果。此类表述仅是描述通过计算机执行软件使该计算机的处理器执行动作或产生结果的便捷方式。在一些情况中,本文描述的环境
可以在PC上实现,或者在计算机服务器(例如用作例如具有要显示的
数据的 一个或多个客户机计算机的服务器)上实现。
在说明书前文中,描述了特定实施例。但是,在不背离所附权利
5 要求中提出的本发明的更宽泛精神和范围的前提下可以对其进行多 种修改和更改。因此,本说明书和附图应视为说明性意义的而非限定 性意义的。
权利要求
1. 一种装置,包括在具有虚拟机监视器(VMM)的虚拟化环境中的存储器控制器电路,用于创建将图形数据的访客物理地址(GPA)转换为直接存储器访问(DMA)请求的主机物理地址(HPA)的单级查询表,其中所述单级查询表对于所述电路可见,而对于图形虚拟机不可见。
2. 如权利要求l所述的装置,其中所述单级查询表包括用于将计 算系统的渲染路径中的图形数据重新映射的多个项,所述计算系统在 虚拟机上执行应用以便向所述渲染路径发送直接存储器访问(DMA) 请求。
3. 如权利要求1所述的装置,其中所述单级查询表包括用于将计 算系统的显示路径中的图形数据重新映射的多个项,所述计算系统在 虛拟机上执行应用以便向所述显示路径发送直接存储器访问(DMA) 请求。
4. 如权利要求1所述的装置,其中所述单级查询表对于所述电路 可见而对于所述VMM不可见,所述单级查询表是显示路径的全局访 客转换表(GTT)的映像表和渲染路径的每个进程页显示(PPPD)转换表 的映像表之一,并且其中所述存储器控制器电路还包括用于在存储器 中写所述单级查询表的电路。
5. 如权利要求1所述的装置,其中所述电路包括用于创建所述单 级查询表、将所述单级查询表存储在连续存储器中并使用所述单级查 询表的图形电路、图形芯片组或存储器控制器(MC)。
6. 如权利要求5所述的装置,还包括用于预先分配所述连续存储 25器而无需向所述VMM报告所述连续存储器的基本输入输出系统(BIOS)。
7. 如权利要求l所述的装置,其中所述单级查询表是在引导所述 计算系统期间、或在启动在所述VMM上的第二虚拟机中启动的应用期间创建的。
8.如权利要求1所述的装置,其中所述存储器控制器电路还包括 通过将第一存储器地址转换与第二存储器地址转换组合来创建所述 单级查询表的项的电路。
9.如权利要求8所述的装置,其中所述第一存储器地址转换用于将要由在所述VMM上的第二虚拟机上启动的应用发送的第一虚拟存 储器地址转换为供所述VMM使用的GPA,以及所述第二存储器地址 转换用于将供所述VMM使用的GPA转换为所述HPA。
10. 如权利要求9所述的装置,其中所述第一虚拟存储器地址包 10 括要由在所述VMM上的第二虚拟机中启动的应用创建而用于访问存储在主存储器中的图形数据的地址。
11. 如权利要求8所述的装置,还包括用于检测要由所述VMM 上的第二虚拟机中启动的应用所创建的项的检测电路。
12. 如权利要求11所述的装置,其中要创建的项包括用于创建或 15更新显示路径的全局转换表(GTT)、渲染路径的每个页目录(PPD)转换表和所述渲染路径的每个进程全局转换表(PPGTT)之一的项。
13. 如权利要求8所述的装置,其中所述存储器控制器电路还包 括用于将所创建的项的数据或偏移量与来自将GPA重新映射到HPA 的查询表的数据或偏移量组合,以便创建所述单级查询表的项的电路
14. 如权利要求1所述的装置,其中所述存储器控制器电路还包 括用于将所述单级查询表存储在连续存储器中的电路;并且还包括图形芯片组,用于使用所述单级查询表来将在所述VMM上的虛 拟机中运行的应用的图形数据的GPA地址转换为HPA地址。
15. —种计算机服务器,包括检测电路,用于检测要由在虚拟机监视器(VMM)上的第一虚拟机 中启动的应用创建的项;查询电路,用于将来自要创建的项的数据或偏移量与来自要由所述VMM创建的项的数据或偏移量组合,以便创建将访客地址转换为主机地址的单级查询表的项;存储器控制器电路,用于将要由应用在第一存储器地址转换表中创建的项存储在主存储器中,将要由所述VMM创建的存储在第二存 储器地址转换表中的项存储在所述主存储器中,并将所述单级查询表的项存储在所述主存储器中。
16. 如权利要求15所述的计算机服务器,还包括图形设备电路或图形控制器电路,用于使用所述单级查询表来将图形显示引擎和图形渲染引擎之一中的DMA请求的访客地址转换为主机物理地址(HPA),而无需向所述VMM发送所述请求。
17. 如权利要求15所述的计算机服务器,还包括存储器控制器电路,用于使所述单级查询表对于图形虛拟机、所述VMM或在所述第一虚拟机中启动的所述应用不可见,并使所述单级查询表对于分离图形卡和集成图形芯片组之一可见。
18. —种计算系统,包括耦合到主存储器的处理器;在具有图形虚拟机和虚拟机监视器(VMM)的虚拟化环境中的耦合到所述处理器和所述存储器的图形芯片组,所述芯片组包括用于创建将图形数据的访客物理地址(GPA)转换为直接存储器访问(DMA)请20 求的主机物理地址(HPA)的单级查询表的存储器控制器,其中所述图形虚拟机对于所述存储器控制器可见,而对于所述VMM不可见,并且所述单级查询表对于所述电路可见,而对于所述图形虚拟才几或所述VMM不可见。
19. 如权利要求18所述的计算系统,其中所述图形芯片组是集成图形设备和分离图形控制器之一,用于与在所述VMM上运行的图形虛拟机通信而无需访问所述VMM。
20. 如权利要求18所述的计算系统,其中所述图形虚拟机是软件应用,并且所述集成图形设备或所述分离图形控制器在图形虚拟机执行期间不访问所述VMM。
21.如权利要求20所述的计算系统,其中所述图形虚拟机从虚拟应用接收所述DMA请求,并将所述请求发送给所述芯片组以便使用所述表从GPA转换为HPA。
全文摘要
一种方法和装置用于创建访客物理地址(GPA)-主机物理地址(HPA)映像转换表、更新这些转换表和使用这些转换表来转换实现虚拟机监视器以支持虚拟机的计算环境的图形数据直接存储器访问(DMA)请求的GPA。可相对于虚拟机监视器透明地通过计算环境的渲染或显示路径从一个或多个虚拟机发送这些请求。通过存储器控制器检测发送给现有的全局和页目录表的项,从所检测的项生成映像表项,并对于映像表项将GPA转换为HPA,执行上述复制、更新和使用。
文档编号G06F12/02GK101484883SQ200780024810
公开日2009年7月15日 申请日期2007年6月22日 优先权日2006年6月30日
发明者A·纳瓦尔, B·韦布, W·A·甘地 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1