CN101484883A - 用于重新映射图形数据的存储器地址的装置和方法 - Google Patents
用于重新映射图形数据的存储器地址的装置和方法 Download PDFInfo
- Publication number
- CN101484883A CN101484883A CNA2007800248109A CN200780024810A CN101484883A CN 101484883 A CN101484883 A CN 101484883A CN A2007800248109 A CNA2007800248109 A CN A2007800248109A CN 200780024810 A CN200780024810 A CN 200780024810A CN 101484883 A CN101484883 A CN 101484883A
- Authority
- CN
- China
- Prior art keywords
- graphics
- vmm
- gpa
- virtual machine
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Input (AREA)
Abstract
一种方法和装置用于创建访客物理地址(GPA)-主机物理地址(HPA)映像转换表、更新这些转换表和使用这些转换表来转换实现虚拟机监视器以支持虚拟机的计算环境的图形数据直接存储器访问(DMA)请求的GPA。可相对于虚拟机监视器透明地通过计算环境的渲染或显示路径从一个或多个虚拟机发送这些请求。通过存储器控制器检测发送给现有的全局和页目录表的项,从所检测的项生成映像表项,并对于映像表项将GPA转换为HPA,执行上述复制、更新和使用。
Description
背景技术
虚拟机体系结构在逻辑上将物理机分区,以使得机器的底层硬件进行时间共享并且看起来像是一个或多个独立操作的虚拟机(VM)。虚拟机监视器(VMM)在计算机上运行以便于对其它软件进行一个或多个VM的抽象。每个VM可用作独立平台,以便运行它自己的操作系统(OS)和应用软件。在VM中运行的软件在本文统称为“访客软件”。
VMM环境提供了使得在实际系统上运行的软件能够为访客软件提供近乎完全的虚拟系统或VM模仿的硬件和系统控制指令。此类环境的益处包括例如:能够在单个物理机上运行多个操作系统;提高了CPU和硬件资源的使用率。
虚拟化技术使得平台支持在单个机器或计算系统(或环境)上运行多个分区。这些分区相互隔离,从而具有增加的鲁棒性的优点。这些分区在VMM之上运行,VMM可描述为具有诸如存储器的平台资源的“真实视图”的软件虚拟化层。因此,该存储器真实视图可描述为“主机物理地址”或HPA(如主机地址)。每个分区或VM具有存储器的“虚拟化视图”,它可描述为“访客物理地址”或GPA。
访客软件期望会像它在专用计算机上而不是在VM中运行那样操作。即,访客软件期望可控制各种事件并且具有对计算机(如物理机器)上的硬件资源的访问权。物理机器的硬件资源可包括一个或多个处理器、驻留在处理器上的资源(如控制寄存器、高速缓存等)、存储器(例如驻留在存储器中多个地址处的指令和/或数据,如图形指令和/或数据)、图形设备和/或控制器(如图形电路、图形芯片组、图形卡等)以及驻留在物理机器中的其它资源(如输入/输出设备)。事件可包括渲染和显示图形数据以在VMM环境中显示图形图像。这些图像可包括像素图像、编码图像、视频图像或帧、静态图像、图片图像、动画图像、电影等。
因此,VMM向其它软件(“访客软件”、“访客”、或单个“访客”)提供一个或多个VM的抽象。VMM可向各种访客提供相同或不同的抽象。每个访客期望在VM中提供的硬件平台的全部设施都可供它使用。例如,根据在VM中提供的处理器和平台的体系结构,访客期望具有对所有寄存器、高速缓存、结构、I/O设备、存储器、图形设备/控制器等的访问权。此外,每个访客期望VMM可例如通过处理在显示器或监视器上显示图形图像的访客的图形指令(例如,包括图形地址)和/或数据来处理各种事件。
例如,在一些情况下,VMM可依靠设备的虚拟化来实现输入/输出(IO)设备的支持。通常,IO设备由VMM虚拟化,并且VMM直接控制平台上的实际硬件。在这些情况下,VMM模仿显露给VMM的IO设备。因为VMM与硬件直接通信,所以VMM携带所支持的所有设备的驱动程序。携带所有驱动程序使得VMM代码或软件充斥或具有非期望的巨大代码量,从而导致复杂度增加。
附图说明
附图的各图举例而非限制性地示出本发明的各个实施例,其中:
图1A是示出根据一个实施例的虚拟化环境中的集成图形渲染路径的框图。
图1B是示出根据一个实施例的虚拟化环境中的分离图形渲染路径的框图。
图2是示出根据集成图形设备或分离图形控制器实施例的、存储在存储器中多个地址处并用于在显示器或监视器上显示的图形数据的框图。
图3是示出根据一个实施例的高级调度器模型中的图形数据路径的框图。
图4是示出根据一个实施例的用于重新映射三级遍历的直接存储器访问(DMA)的框图。
图5是示出根据一个实施例的VMM中的具有3级遍历的图形数据路径的框图。
图6A是示出根据一个实施例的虚拟机监视器(VMM)环境中的集成图形设备的框图。
图6B是示出根据一个实施例的虚拟机监视器(VMM)环境中的分离图形设备的框图。
图7是示出根据一个实施例用于创建映像全局访客转换表(GTT)的环境的框图。
图8是用于创建映像全局GTT的过程的流程图。
图9是示出根据一个实施例用于创建映像访客每个进程页显示(PPPD)的环境的框图。
图10是根据一个实施例用于创建映像访客PPPD的过程的流程图。
图11是用于维持映像表的环境的框图。
图12是示出根据一个实施例的图形渲染和显示数据路径的框图。
图13是示出根据一个实施例的图形显示路径更新和显示路径的框图。
图14是示出根据一个实施例的图形渲染路径更新和渲染路径的框图。
具体实施方式
本发明的一个或多个实施例一般涉及计算机系统设计。更具体地说,其中一个或多个实施例涉及用于渲染和显示图形数据以便在虚拟化环境中显示图形图像的方法和装置。例如,如上所述,在VMM模仿显露给VM的IO设备并且VMM携带所支持的所有设备的驱动程序的情况中,携带所有驱动程序会使VMM代码或软件充斥或具有非期望的巨大代码量,从而导致复杂性增加。位于美国加利福尼亚州圣克拉拉的Intel公司(Intel Corporation of Santa Clara,California)开发了用于定向输入/输出(IO)体系结构的虚拟化技术,该虚拟化技术提供对允许访客VM直接驱动IO设备的支持,从而从VMM中免去了驱动程序(例如,参见由Intel公司在2006年2月发布的序号为D51397-001的Intel’s VT-d技术- Virtualization Technology for Directed I/O Architecture Specification)。
因此,本文的描述包括用于根据每个访客应用的图形指令(例如,包括图形地址)和数据来显示在多个虚拟机上运行的多个访客应用的图形图像的方法和装置。例如,可使用图形虚拟机(VM)(它可包括VM操作系统和其它应用,如在图形VM中运行的其它图形应用)、图形控制器和/或图形设备例如通过处理访客的图形指令和/或数据来处理各种应用程序图形需要,以便在显示器上显示图形图像。处理访客的图形指令和/或数据可包括例如通过将图形指令和/或数据写入到存储器中的物理地址(例如,物理地址对应于来自访客应用的图形地址)以及从存储器的物理地址读取图形指令和/或数据来访问图形指令和/或数据。
在以下描述中,阐述了众多具体细节,例如虚拟机监视器(VMM)环境实现、信号和总线的大小和名称、系统组件、硬件、处理器、电路、设备、图形设备、图形控制器、存储器、操作系统、VM的类型和相互关系,以及逻辑分区/集成选择,以便更充分地理解本发明。但是,本领域的技术人员将明白,在没有这些具体细节的情况下,也可实现本发明。在其它情况下,并未详细示出控制结构和门级电路(如电路系统),以免使本发明晦涩难懂。使用所包含的描述,本领域的技术人员将能够实现合适的逻辑电路,而无需进行过多的实验。
在以下描述中,使用某些术语来描述本发明的特征。例如,术语“设备”、“芯片”、“芯片组”和/或“电路”可表示硬件、待由处理器执行的应用程序、计算机操作系统、包含待由处理器执行的机器可读介质、和/或配置成执行一个或多个功能的软件。例如,“设备”、“控制器”、“芯片”、“芯片组”和/或“电路”的示例可包括但不限制于或局限于电子硬件、逻辑电路、处理器、存储器、集成电路、芯片、芯片组、“卡”、其上具有电子硬件和/或软件的印刷电路板、固件、有限状态机或甚至组合逻辑。集成电路可采取诸如微处理器的处理器、专用集成电路、数字信号处理器、微控制器等形式。在一些情况中,本文描述的电路、图形设备、图形控制器和/或芯片组可以是或可以包括图形电路、图形芯片组、图形卡、图形存储器、图形VM、图形VM操作系统、集成图形设备、分离图形控制器、渲染引擎、显示引擎等。而且,在本文中的一些情况中,术语“图形数据”可用于描述图形指令和数据。
此外,访问、接收、检测、感测或以其它方式知道表中的输入可包括在试图在表中输入之前、期间或之后(包括在输入实际没有存储在表中时)硬件和/或软件感测该输入。在一些情况中,在考虑另一个地址而转换、变换、建立或创建一个地址(例如,将图形地址(例如,来自访客应用的指令或请求中所包含的虚拟地址)转换或变换为GPA或主机物理地址(HPA))可表示相同或相关的进程、装置和/或系统。例如,可根据GPA或HPA与图形地址之间的关系(例如,存储器地址变换)从图形地址创建、转换、变换或建立GPA或HPA。
图1A是示出根据一个实施例的虚拟化环境中的集成图形渲染路径的框图。图1A示出的VMM环境100包括耦合到虚拟机操作系统130、虚拟机操作系统140与硬件110或耦合在它们之间的虚拟机监视器(VMM)120。图1A还示出耦合到硬件110的存储器控制器115的图形设备116的图形VM150(它可包括VM操作系统和其它应用,例如在图形VM中运行的其它图形应用)。图形(或“Gfx”)VM150可使用由Intel的定向IO的虚拟化技术(例如,使用Intel的VT-d技术)提供的机制来直接驱动Gfx设备116。设备116可执行图形控制器(例如,参见图1B和6B中的控制器118)的功能。可以在例如桌面型计算机、膝上型计算机、手持式计算设备、个人计算机(PC)、工作站、计算机服务器、联网计算机、电子设备、计算设备等中实施环境100。而且,本文描述的存储器控制器115或其它存储器控制器(MC)可以位于与环境或计算机的处理器(如CPU 101)相同或不同的芯片中(或之上)。在一些情况下,存储器控制器可以位于不包括处理器的芯片或芯片组中(或之上)。
集成图形路径可以是能够通过发出具有访客物理地址(GPA)的直接存储器访问(DMA)请求并使存储器控制器将GPA转换为主机物理地址(HPA)或主存储器的物理存储器地址而无需访问VMM来访问图形数据的路径。例如,设备116和/或存储器控制器115可以将来自操作系统130和/或140的直接存储器访问(DMA)请求的GPA“独立地”转换为用于从存储器的物理地址直接访问图形数据的HPA(例如,存储器360的HPA 362,如针对图2所述),而无需使用或访问图形VM150和/或无需访问VMM 120(例如,在系统130和140通过VMM 120访问图形控制器116时,无需发送对VMM中的图形驱动程序的请求或以其它方式访问VMM 120来获取图形驱动程序功能性)。因此,图形VM 150可与图形控制器116通信以便满足系统130和140的图形需求,而不需要VMM 120中的图形驱动程序。集成的部件可包括一个或多个集成图形设备,例如与存储器控制器115集成或作为存储器控制器115的一部分的集成图形设备116。MC 115可包括存储器控制器设备电路或被描述为存储器控制器设备电路,并且下文还将在图6A中进一步描述。
硬件110包括硬件设备112和一个或多个额外的硬件设备,如硬件设备114。硬件110还包括中央处理单元(CPU)101和存储器102。CPU 101耦合到基本输入/输出系统(BIOS)103。
VMM 120包括驱动程序122和一个或多个其他驱动程序(例如用于它直接驱动和/或控制的设备的驱动程序124)。系统130包括操作系统驱动程序134,并且可以运行一个或多个应用,如应用132。类似地,系统140包括操作系统驱动程序144,并且可以运行一个或多个应用,如应用142。
CPU 101可以是处理器,例如能够执行支持VMM 120和VMM120上运行的各种虚拟机以及图形VM150的所需处理的处理器。CPU101可以是环境100的中央处理单元(CPU),并因此控制并协调该环境的整体操作。在某些实施例中,CPU 101通过执行例如存储器102中存储的操作系统的软件来实现此目的。CPU 101的处理器可以是或可以包括一个或多个可编程通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑设备(PLD)等或此类设备的组合。类似地,存储器102可以存储要被CPU 101、图形VM 150、设备116和/或控制器115操作、转换、检测、感测、接收和/或访问的指令和/或数据,例如通过将这些指令和/或数据存储在存储器102的地址(例如使用HPA寻址的地址)处来存储它们。存储器102可以是或包括环境100的“主存储器”。存储器102表示任何形式的随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器等或此类设备的组合。存储器102可以包括多种类型的存储器,例如RAM、动态RAM(DRAM)、标准动态RAM(SDRAM)、双数据速率RAM“DDRRAM”和双数据速率版本2RAM“DDR2RAM”。例如,正如本领域中公知的,存储器102可以是一组或多组存储器芯片、集成电路、RAM类型等。CPU 101能够经由地址和数据总线对主存储器102直接访问。硬件110和设备112-114可以表示可安装在环境100中的物理设备,例如键盘、海量存储控制器、网络接口、鼠标、声卡等。BIOS 103可以表示可存储在例如存储器102中或存储在单独的非易失性存储器(未示出)中的软件指令。
图形设备116可以是集成图形设备(例如与例如MC 115的存储器控制器集成并执行图形显示功能的设备)。而且,集成图形可以描述没有或不包括“胶连逻辑(glue logic)”、输入/输出接口和/或MC 115和装置116之间的总线的系统或设备。在一些情况中,装置116可以比分离图形控制器(例如与图1B和6B的控制器118相比)成本低和/或包括更少的电子电路或硬件。
在大多数实施例中,当使用直接存储器访问(DMA)时,需要使用主机硬件物理存储器地址或存储器中的物理地址(例如参见图2的地址362)来访问主存储器中的图形数据。这种读和写可以描述为访问存储器和/或检测要对存储器设置的项(例如要向存储器的物理地址写数据和从存储器的物理地址读数据),并且可以根据应用132之一(例如虚拟机中的应用)来进行这种读或写或因应用132之一(例如虚拟机中的应用)而导致这种读或写。在大多数虚拟化环境中,设备发出的DMA请求中的地址将是通过Gfx地址重新映射表(例如通过GTT或图形地址重新映射表(GART))转换为GPA的图形地址,但是对于要由设备116(或图1B和6B的控制器118)满足的DMA请求,必须将这些GPA转换为HPA。
在计算机系统(例如环境100)开始被加电时(或复位操作之后),例如从关机状态起的系统引导或初始化过程期间,测试和配置了易失性存储器结构之前,BIOS软件(例如,BIOS 103)(例如经由CPU 101)控制计算机系统(例如环境100)。因此,BIOS可以在引导序列期间预留存储器102中的“隐藏”或“窃取”部分以用于存储本文所描述的转换表(例如映像表)。
BIOS软件可以存储在非易失性存储器中或作为固件。固件是指存储在非易失性存储器结构(例如只读存储器(ROM)、闪速存储器等)中的处理器例行程序(例如软件)。这些存储器结构即使在断开电源时仍保留存储在其中的代码。尽管固件存储在非易失性存储器中,但仍可以将固件复制到易失性存储器中或在易失性存储器中建立映像。
应用132表示可以在系统130的控制下被加载和/或执行的程序。OS和驱动程序134与VMM提供的虚拟平台接口。在一些情况中,驱动程序134可以是操作系统图形驱动程序,VMM 120向其表示或提供虚拟机,例如包括CPU、存储器和含图形设备和硬件的硬件的机器,虽然虚拟允许系统130看上去像是真实的非虚拟系统(例如例如物理系统)一样工作。
类似地,应用142表示可以在系统140的控制下被加载和/或执行的程序。应用132和142的指令和数据可以存储在存储器102中(例如存储在存储器102的物理地址处)。
操作系统130和/或140可以包括或可以是本领域中公知的常规OS,例如磁盘操作系统(DOS)、Windows、Unix、Linux、OS/2、OS/9、Xenx等。例如,操作系统可以包括诸如美国华盛顿州雷德蒙德的Microsoft公司(Redmond,Washington)的WINDOWS 或另一种操作系统。操作系统130和/或140还可以包括美国加利福尼亚州库珀蒂诺Apple计算机公司(Cupertino,California)的MACINTOSH操作系统。
而且,图形VM、操作系统(例如图形VM150)和/或图形设备均可包括或可以是一组例如通过控制资源的操作和分配来控制图1-14的设备和进程的一个或多个软件程序。应用程序132或142可以是一组具有要显示给用户的图形、图形对象、图像、图形帧和/或视频的一个或多个软件程序。
VMM 120是模仿计算机系统的虚拟机监视器;如图所示,它向在其控制下运行的软件提供与真实系统硬件相似的接口。VMM 120可以在逻辑上对物理机器分区,以使得该机器的底层硬件110进行时间共享并看上去像是一个或多个独立操作的虚拟机(例如系统130和140)。VMM 120可以创建VM环境并运行在计算机上,以便于为其他软件进行一个或多个VM的抽象。每个VM可用作独立平台,以便运行它自己的操作系统(OS)和应用软件。VM中运行的软件在本文统称为“访客软件”。例如,VMM 120可以提供接口,从而表示CPU 101、存储器102、硬件110或与此类似的设备中的一个或多个。VM内运行的软件常常称为“访客”软件。
根据一些实施例,可以将图形设备116、存储器控制器215和图形控制器118其中一个或多个的任何组合视为图形路径。如本文定义的,图形“芯片组”可以包括MC115、设备116和/或控制器118。例如,对于集成的实施例(例如图1A和图6A),图形芯片组可以是MC115和设备116。或者,对于非集成的实施例(例如图1B和图6B),图形芯片组可以是MC 115和设备118。一些情况(例如将图形设备(例如图形设备116)作为存储器控制器(例如MC 115)的一部分集成的情况)可以描述为“集成图形”(例如图形设备是集成图形设备(例如图1A和6A中所示的设备116)的情况)。或者,一些情况(例如并不将图形设备(例如图形设备118)作为存储器控制器(例如MC 215)的一部分集成的情况)可以描述为“分离图形”(例如图形设备不是存储器控制器的一部分或不与存储器控制器集成(例如图1B和6B中所示的设备118)的情况)。
图1B是示出根据一个实施例的虚拟化环境中分离图形渲染路径的框图。例如,图1B示出的VMM环境200包括耦合到虚拟机操作系统130、虚拟机操作系统140和硬件110或耦合在它们之间的虚拟机VMM 120。图1B还示出虚拟机图形VM 150、硬件110的耦合的存储器控制器215,存储器控制器215又耦合到分离的图形控制器118。控制器118可以执行本领域中公知的图形设备或控制器的功能。可以例如在桌面型计算机、膝上型计算机、手持计算设备、个人计算机(PC)、工作站、电子设备、计算设备等中实施环境200。
图1B示出耦合在图形控制器118、CPU 101和图形VM 150之间的存储器控制器215。MC 215可以包括或描述为存储器控制器设备电路,并且下文在图6B中对其进行进一步的描述。分离图形设备118可以“独立地”将来自操作系统130、140或150的直接存储器访问(DMA)请求的GPA转换成用于从存储器的物理地址直接访问图形数据的HPA(例如,存储器360的HPA 362,如针对图2所述),而无需使用VMM 120(例如,在系统130和140通过VMM 120访问图形控制器118时,不发送对VMM中的图形驱动程序的请求或以其他方式访问VMM 120以获取图形驱动程序功能性)。因此,图形VM 150可以与图形控制器118通信,例如发送使用图形VM 150和控制器118来满足系统130和系统140的图形需求的命令,而无需VMM 120中的图形驱动程序。分离部件可以包括一个或多个分离图形设备,例如与存储器控制器215分离或不是其一部分的分离图形控制器118。
在一些实施例中,直接将图形设备(例如,图形设备116和/或控制器118)指定给图形VM(例如,图形VM 150)。此类直接指定(例如,不发送通过VMM 120在图形VM 150与设备116之间传送的图形数据)可以描述为指定的图形。而且,指定的图形或直接指定可以包括图形VM可以直接驱动图形设备或控制器的情况,和/或图形VM中的驱动程序可以对图形设备或控制器的硬件或电路编程而不经过或使用VMM的情况。
芯片组或控制器118可以包括在分离的图形卡中和/或可以从存储器读取图形数据并提供图形数据以便在屏幕、显示器或监视器上显示为图像(例如视频)。图形控制器118可以是分离图形设备(例如不与存储器控制器(例如控制器MC 215)集成且执行图形显示功能的设备)。而且,分离图形可以描述具有或包括“胶连逻辑”、输入/输出接口和/或MC 215和装置118之间的总线的系统或设备。控制器118可以执行与本文针对设备116所描述的功能相同的功能,所例外的是控制器118是环境200中的分离控制器并作为分离图形控制器与MC 215交互或通信。相应地,MC 215可以执行与本文针对MC 115所描述的功能相同的功能,所例外的是MC 215使用环境200中的分离控制器118,并且不包括集成图形设备。
图1B的其他组件可通过上文参考图1A和图6A来描述,所例外的是它们处在环境200中,并且(例如经由MC 215)与控制器118交互或通信,而非与设备116交互或通信。例如,存储器102可以存储要由CPU 101、图形VM 150、MC 215和/或控制器118操作、转换、检测和/或访问的指令和/或数据。
当前图形设备(例如设备116或118)使用图形地址转换表来将图形地址(例如DMA的地址)变换为物理地址。当将图形设备指定给VM时,则可以由图形VM中的驱动程序构建转换表。因为图形驱动程序仅具有存储器的访客(GPA)视图,所以通过查询该表获得的地址得到GPA地址,因此在(例如要渲染或显示的图形数据的)存储器访问之前需要转换成HPA。
例如,图2是示出根据一个实施例的图形数据路径的框图。图2示出的环境300包括耦合到图形设备/控制器316的存储器360,图形设备/控制器316又耦合到监视器310。监视器310可以是显示器或监视器,例如本领域中公知的计算机或视频监视器。设备/控制器316可以表示设备116或控制器118。渲染引擎317可以用于渲染图形数据,而显示引擎319可以用于显示(已经由渲染引擎渲染的)数据。而且,引擎317和319可以使用渲染数据路径和显示数据路径,其已经包含用于将图形地址变换为物理地址的转换表。存储器360使用主机物理地址(HPA)362来(例如通过将图形数据存储在HPA地址处来)存储图形数据(例如图形数据370、372、374、376和378)。存储器360可以是或包括存储器,并且可以包含上文针对存储器102描述的数据。而且,图形数据370、372、374、376和378可以是图形指令和/或数据。例如,数据370-378中任何一个数据可以是用于应用132和/或142中任何一个应用的图形数据。因此,地址362的相邻位置或地址中的数据可以并不来自相同应用。数据370-378可以是数据的“块”,例如4,096(4K)字节或其他数量字节的图形数据的块。
如图所示,渲染引擎317可以(例如通过MC115或215来)访问存储在存储器360中的图形数据,例如通过使用HPA 362来将渲染的图形数据写入到存储器360的HPA 362以及从存储器360的HPA 362读取渲染的图形数据。显示引擎319也可以(例如通过MC 115或215来)访问存储在存储器360中的图形数据,例如通过使用HPA 362从存储器360的HPA 362读取渲染的图形数据。引擎319可以将渲染的图形数据显示在监视器310上,例如通过(例如在从存储器360读取渲染的图形数据之后)显示视频馈送、图像、像素化的图像或帧等。例如,在一些情况中,应用132可以包括要由渲染引擎317渲染并存储在地址362处的图形数据。此后可以由显示引擎319访问并处理此渲染的数据,并对其处理以显示在显示器310上。
在一些实施例中,数据块370-378的地址是被直接存储器访问(DMA)设备用来访问主存储器中的图形数据的主机硬件物理存储器地址或存储器中的物理地址。例如,DMA请求可以是MC 115和/或设备116不使用CPU 101而直接从设备(例如硬件设备112)接收的有关从存储器102读取数据或将数据写入存储器102的请求。这种读或写可以描述为访问存储器,并且可以是根据应用132中的一个应用来进行的或由此应用所产生的。在将图形设备指定给VM的虚拟化环境中,DMA请求中的地址可以是GPA,但是对于要由设备116满足的DMA请求,必须将这些GPA转换为HPA。与针对图2描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如环境200)。
虽然可考虑其他实施例,但是图形设备116可包括两个主数据路径,例如渲染数据路径和显示数据路径。例如,图3是示出根据一个实施例的高级调度器模型中的图形数据路径的框图。本文描述的高级调度器可以包括如美国华盛顿州雷德蒙德的Microsoft公司(Redmond,Washington)的Microsoft高级调度器的功能性的功能性。高级调度器可以是或包括MC 115支持的功能性。而且,高级调度器可以是或包括图形存储器管理器操作系统软件或应用。具体地说,高级调度器可以是操作系统或图形VM(例如图形VM150)的一部分。图3示出的环境400包括非虚拟化环境中的显示路径410和渲染路径420。显示引擎219使用图形地址来访问数据。通过全局GTT 264将图形地址转换为HPA。渲染引擎217使用两级分层页表遍历来将图形地址转换为HPA。表264、266和268是必需的,因为图形VM 150使用虚拟地址来对设备116编程,而存储在存储器360中的图形数据被存储在物理地址362中(例如,参见图2)。因此,数据路径410和420结合从图形地址到物理地址(例如,HPA)的转换表。因为在将图形设备直接指定给VM的虚拟化环境中,GTT 264和页目录266由图形VM(例如图形VM 150)来构建或创建(例如通过在引导期间创建它们的项),所以它们包含GPA中的项。因此,必须将这些GPA地址转换为HPA地址以便正确地从存储器360访问图形数据。与针对图3描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如环境200)。
虽然图3和图6示出可满足高级调度器功能性(例如Microsoft高级调度器的功能性)的转换表264、266、268、272、274和278,但是本文针对这些表描述的概念也可以应用于多种其他转换表功能性或标准。
根据实施例,DMA重新映射规范可以使用多级页表遍历(walk)以将GPA地址转换为HPA。遍历所需的级数取决于需要支持的地址空间的大小。例如,对于32位,需要3级页表遍历。对于支持39+位地址空间的较大系统,需要4级遍历。例如,图4是示出根据一个实施例的直接存储器访问(DMA)重新映射3级遍历的框图。图4示出包括图形设备116的环境500,图形设备116发送要通过3级遍历580(可称为表580)转换或重新映射的DMA请求510。在此示例中,请求510包括GPA 512和请求方ID 514(例如总线、设备、功能)。GPA512可以表示虚拟存储器地址,例如从应用132接收的地址。上下文项将请求映射到要使用的适合页表或转换。
GPA 512具有32位,可分成2,+9,+9,+12位查询。第一次查询,查询532使用GPA 512的前2位在页542中查询。第二次查询,查询534使用随后9位在页544中查询。第三次查询,查询536在页546中查询随后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来)创建或构建。也可考虑,可以在例如实现环境100的计算系统(例如计算设备)和/或CPU 101(例如根据BIOS 103)的引导或初始化期间由MC115和/或VMM创建表580。与针对图4描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。
可以认识到,除了当前图形和物理地址变换(例如表264、266和268)之外,执行3级DMA重新映射遍历(在路径410和420中是必需的情况中)可能在这些路径中带来严重的延迟问题。例如,图5是示出根据一个实施例的在应用3级遍历的本发明实施例之前虚拟化环境中的图形数据路径的框图。图5示出包括显示引擎219的环境600,在路径410中,显示引擎219将显示请求602传送到全局GTT264,全局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输出到3级遍历580,3级遍历580将HPA转换628发送到存储器360。
又如图2所示,设备/控制器316没有存储器360的物理地址的真实视图。因此,必须将图形VM 150编程的GPA请求转换或变换为HPA以便正确地访问位于存储器360的HPA 362处的图形数据。
更具体地说,在图5中,显示请求602可以是使用从应用132发送到全局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发送或传送GPA转换622以指向下一级表(图形VM 150也创建具有GPA项的表)。但是,这是GPA,所以可以将其转换为HPA。接下来,3级遍历580将转换622变换成HPA转换624,并将转换624发送或传送到每个进程GTT 268。每个进程268传送或发送GPA转换626。接下来,3级遍历580将转换626变换成HPA转换628,并将转换628发送或传送到存储器360。注意除了表266和268处所需的转换外,路径420还需要6个附加级的遍历。
与针对图5描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。例如,可以由引擎229和227分别生成请求602和604。
当前实现是按Intel公司的VT-d技术来定义的。一些实施例使用多级表来将地址从GPA转换为HPA(例如为了转换32位地址,可以使用3级表)。可以认识到,图形设备或控制器可以是具有严格延迟要求的高性能设备。未能满足延迟要求可能导致显示撕裂和失帧或渲染丧失,从而在监视器或显示器上显示的图像中造成用户可见的缺陷。因此,映像表可以提供将GPA转换为HPA的更有效率的方式。
根据一些实施例,可以组合图5的表和遍历以消除或减少多级遍历,并提供将产生高性能的实现。例如,可以用单级重新映射表来替代每个进程GTT 268与存储器360之间的3级遍历。而且,可以创建一个映像表,以在该表与存储器360之间将全局GTT 264与3级遍历580组合。类似地,可以创建另一个映像表,以在页目录266与表268之间将页目录266与3级遍历组合。因此,这些映像表可以将在路径410和路径420中分别从引擎219和217接收的虚拟地址(图形地址)直接变换到HPA。
根据实施例,环境100可以用于创建转换表的项以便将来自应用132和/或142的用于访问图形数据的请求(例如DMA请求)的虚拟存储器地址或访客物理地址(GPA)转换为存储器102中存储或具有该图形数据的主机硬件物理存储器地址(例如,HPA)。例如,图6A是示出根据一个实施例的VMM环境中的集成图形设备的框图。图6A示出耦合在CPU 101、图形控制器116、输入/输出控制器211(例如IO存储器控制器)和存储器260之间的存储器控制器115。存储器260可以是与存储器102和/或存储器360相同的存储器,其可以是主存储器,可以是RAM存储器或可以是其他存储器。
图6A示出包括图形设备116的MC 115,图形设备116具有渲染引擎217和显示引擎219。渲染引擎217可以用于渲染图形数据,而显示引擎219可以用于显示(已经由渲染引擎渲染的)数据。而且,引擎217和219可以使用渲染数据路径和显示数据路径,其已经包含用于将图形地址变换为物理地址的转换表。在一些情况中,引擎217和219可以使用或包括存储在存储器260中的一个或多个转换表。引擎217和219也可以表示引擎317和319。
例如,存储器260可以包括图形VM分配的存储器262和/或预先分配的映像存储器270。存储器262包括诸如访客全局访客转换表(GTT)264(可以称为表264)、访客每个进程页目录(PPPD)266(可以称为表266)和每个进程GTT 268(可以称为表268和/或PPGTT)的表。表264、266和268可以用于将图形地址转换为访客物理地址。存储器262中存储的表可以例如在实现环境100的计算系统和/或CPU 101(例如,根据BIOS103)的引导或初始化期间由图形驱动程序来创建或构建。存储器262中存储的表也可以在加载或执行应用132或142中的一个应用期间由图形驱动程序创建。在一些情况中,“加载”和“启动”可以描述相同的功能或发生的情况,例如当计算机程序被处理器启动并加载到主存储器中时。类似地,有时,“执行”和“运行”可以描述相同的功能或发生的情况,例如执行被处理器加载到存储器中的计算机程序以便执行根据该程序的功能(例如包括显示和渲染图形数据)时。此类驱动程序(driver)可以是图形VM 150的一部分,例如可以是软件、应用程序、应用代码。而且,此类驱动程序可以是存储在机器可访问介质中的指令,这些指令可以被机器(例如处理器)执行以使得机器执行本文针对这些驱动程序描述的功能,和/或创建和/或使用本文描述的表(例如映像表)。此类驱动程序还可以包括来自应用要求硬件执行数据的处理和/或显示的命令。例如,这些驱动程序可以使MC 115、MC 215、设备116、控制器118和/或存储器260执行本文描述的功能。
例如,存储器270可以包括诸如映像全局GTT 272(可以称为表272)、映像访客PPPD 274(可以称为表274)和/或单级直接存储器访问(DMA)重新映射278(可以称为表278)的多种映像转换表。在(例如根据DMA请求)渲染和/或显示图形数据期间,表272、274和278可以分别替代表264、266和268或替代表264、266和268的功能。在一些情况中,表272、274和278中的仅一个或两个表可以存在和/或用于显示图形。根据一些实施例,存储器260可以包括仅存储器262、仅存储器270或存储器262和存储器270。
用于存储器270的表(例如无论是否连续的表272、274和/或278)的存储器存储位置、地址和/或空间可以在例如实现环境100的系统和/或CPU 101的引导或初始化期间在存储器260中予以预留或预先分配(例如根据BIOS 103而不向VMM报告所分配的存储器)。具体地说,可以在实现环境100的系统和/或CPU 101的引导或初始化期间由BIOS 103和/或VMM 120在存储器260中预留或预先分配用于存储器270的表的空间。
根据一些实施例,在引导期间,BIOS可以预留足够的空间来存储图形地址至HPA转换表,例如映像全局GTT 272,并且预留足够的存储量来存储用于将PPPD项预先转换为HPA的转换表(例如表274)。预先转换的表274确保在查询PPPD项(例如映像访客PPPD 274)之后无需联机重新映射遍历。可以约束表274的大小以支持特定数量的应用(例如,多达100、200、300、400、1000或其任意组合个应用)。下文参考图9进一步描述创建表278。类似地,在引导或初始化VM应用(例如应用132)的图形程序期间,BIOS可以包括用于预留足够空间以存储单级DMA重新映射表(例如重新映射278)的项,其中单级DMA重新映射表(例如重新映射278)用于将数据从GPA转换为HPA。
例如,表278可以执行与将GPA转换为HPA的表的操作或功能相似的操作或功能,例如与图4的3级遍历580所执行的功能相同的功能。因此,重新映射278可以是单级重新映射表(例如,无法包含在4千字节页内的表),并且可以位于连续的存储器中。具有连续表(例如单级查询表)避免了遍历多级表的各个级所引起的延迟,从而在渲染和/或显示图形数据期间提供更快且更有效率的GPA至HPA的转换或变换的益处。连续存储器可以描述为存储器中有共同的边缘或边界、接触、相邻、邻接、无间断地连接和/或直接相邻的地址或位置。例如,存储器中的连续地址可以是一个接一个的地址。或者,存储在具有不连续次序的位置中的地址或位置,或不包含表数据的部分的位置可以描述为非连续存储器。可设想,表272、274可以位于或存储在连续存储器中(例如,可将这些表的其中一个或多个都存储在存储器260的连续存储器位置中)。表278也可以位于与表272或274分离或不连续的存储器位置或地址中。在一些情况中,存储表272的存储器地址与存储表274的存储器地址相邻,但是用于表272以及表274的存储器地址都不与用于表278的存储器地址相邻。表278的大小将取决于图形VM(例如,设备116)的图形地址空间。例如,表278可以对应于每个4千字节页包含8千字节的项,并且因此表278可能需要存储器270中8兆字节连续表以提供4吉字节图形地址空间的转换。用于存储器270的所有表的空间可以由系统BIOS来分配,而不向VMM或VM报告,正如上文提到的。
存储器270还可以包括表278表示的GPA至HPA转换表。表278可以是单级、2级、3级或4级表。表278(例如表278表示图4的3级遍历580的情况)可以在实现环境100的计算系统和/或CPU 101(例如根据BIOS 103)的引导或初始化期间由VMM来创建(例如,无需处理或访问MC115或215)。
表278可以例如在实现环境100的计算系统和/或CPU 101(例如,根据BIOS 103)的引导或初始化期间由VMM来创建或构建。表272和274也可以由硬件(例如MC 115或215)来创建。在一些情况中,在MC 115或MC 215的电路或硬件(例如检测电路)检测到或感测到由图形VM 150创建的对应表264或266(例如非映像表)的项被创建时创建表272或274(例如映像表)的项。根据一些实施例,MC 115或MC 215的电路或硬件感测到表262的非映像项被创建,则创建表272的对应项或关联项(例如在表272中与表262中的项或对表262的更新相同的位置或地址设置转换的HPA项)。同样地,在一些情况中,MC 115或MC 215的电路或硬件感测到表264的非映像项被创建,则创建表274的对应项或关联项(例如在表274中与表264中的项或对表264的更新相同的位置或地址设置转换的HPA项)。
还可以在实现环境100的计算系统的操作期间(例如在诸如VM应用或应用132之一的应用(例如,图形应用或包括将图像显示在显示器或监视器上的图形指令的应用)启动、加载、初始化和/或执行期间)更新表264、266、268、272、274和/或278。例如,图形VM 150和/或图形VM 150的驱动程序可以在应用132之一被启动时在存储器270中更新表272、274和/或278。
在一些情况中,在MC 115或MC 215的电路或硬件感测到图形VM 150更新对应表264或266的项(例如,创建了新的项或盖写表264或266非映像表的现有项)时,表272或274(例如映像表)的项将被更新。根据一些实施例,MC 115或MC 215的电路或硬件感测到表264中现有的非映像项被更新,则更新表272的对应项或关联项(例如在表272中与对表264的更新相同的位置设置转换的HPA项)。例如,可以在存储器中从基地址(例如,1000)将表264中的项偏移相同的地址量(例如,+5)(例如,将处于1005),而在存储器中从不同的基地址(例如,2000)将表272中的项偏移相同的地址量(例如,+5)(例如将处于2005)。同样地,在一些情况中,MC 115或MC 215的电路或硬件感测到表266中现有的非映像项被更新,则更新表274的对应项或关联项(例如在表274中与对表266的更新相同的位置设置转换的HPA项)。因此,表274和266可以采用相同索引号编索引。
在一些情况中,图形VM 150可以包括高级调度器,例如包括美国华盛顿州雷德蒙德的Microsoft公司(Redmond,Washington)的Microsoft高级调度器的功能性或部分功能性的高级调度器。例如,当应用被启动时,利用高级调度器体系结构编译的图形VM可以创建、存储和/或更新表264、266、268。转换表264、266、268、272、274和/或278可以满足高级调度器的功能性,例如Microsoft高级调度器功能性。还可以设想,转换表264、266、268、272、274和/或278可以满足不同于高级调度器的功能性的本领域中公知的另一种标准。
根据一些实施例,图形VM150可以不使用或不访问VMM 120来访问图形设备116,而系统130和140通过VMM 120来访问图形设备116。确切地说,MC 115可以使用表272的项将应用所使用的虚拟地址(图形地址)转换为图形数据在主存储器中的主机硬件物理存储器地址(例如,HPA)。类似地,MC 115可以使用表274创建表274的项,以便从每个进程页目录的虚拟地址转换为图形数据在主存储器中的主机硬件物理存储器地址(例如,HPA)。
虽然图1A和6A参考集成图形设备来描述实施例,但是本文描述的这些概念也适用于各种其他图形设备、芯片组、电路、硬件、渲染路径和/或显示路径。例如,分离图形路径可以使用与环境100的集成路径相似的机制。分离图形路径可以是能够通过发出具有访客物理地址(GPA)的DMA请求且无需访问VMM和/或无需访问图形VM而使图形控制器和/或存储器控制器将GPA转换为主存储器的主机物理地址(HPA)或物理存储器地址来访问图形数据的路径。
根据实施例,环境200可以用于创建转换表的项以便将来自应用132和/或142的用于访问图形数据的请求(例如DMA请求)的虚拟存储器地址或访客物理地址转换为该图形数据存储在或位于存储器102中的主机硬件物理存储器地址(例如,HPA)。例如,图6B是示出根据一个实施例的虚拟机监视器(VMM)环境中的分离图形设备的框图。图6B示出耦合在图形控制器118、CPU 101、输入/输出控制器211(例如IO存储器控制器)和存储器260之间的存储器控制器215。存储器260可以是与存储器102相同的存储器和/或执行与存储器102相同的功能。存储器260也可以是主存储器,可以是RAM存储器或其他存储器。
图6B示出耦合到图形控制器118的MC 215,图形控制器118具有渲染引擎227和显示引擎229。渲染引擎227可以用于渲染图形数据,而显示引擎229可以用于显示(已经由渲染引擎渲染的)数据。而且,引擎227和229可以使用渲染数据路径和显示数据路径,其已经包含用于将图形地址变换为物理地址的转换表。在一些情况中,引擎227和229可以使用或包括存储在存储器260中的一个或多个转换表。渲染引擎227和显示引擎229可以执行与本文针对渲染引擎217和显示引擎219所描述的功能相同的功能,所例外的是渲染引擎227和显示引擎229是环境200中的分离控制器的一部分,并作为分离的渲染引擎和分离的显示引擎与MC 215交互或通信。引擎227和229也可以表示引擎317和319。
图6B的其他组件可在本文中参考图1A和图6A来描述,所例外的是它们处在环境200中,并且(例如经由MC 215)与控制器118、渲染引擎227和显示引擎229交互或通信,而非与设备116、渲染引擎217和显示引擎219交互或通信。
根据实施例,环境200、图形VM 150、VMM 120、硬件110、CPU 101、存储器102、BIOS 103、系统130和140以及MC 215可以预留存储器空间用于创建、更新和使用表264、表266、表268映像全局GTT 272、映像访客PPPD 274和/或单级直接存储器访问(DMA)重新映射278,正如本文参考环境200和图1A和图1B的那些表的创建所描述的。
根据一些实施例,图形VM150可以不使用或不访问VMM 120来访问图形设备118,而系统130和140通过VMM 120来访问图形设备118。一般来说,图形控制器期望能够(例如,这对于系统和/或图形路径更具效率)接收来自图形VM 150(例如包含GPA的指令)的命令指令(例如图形指令),以及访问存储器中的数据(例如图形数据),而无需VMM 120来提供GPA至HPA的转换。例如,设备118可以是分离图形控制器,例如无需访问VMM 120而与操作系统130和/或140通信的图形控制器。为了实现此目的,控制器118和/或MC 215可以包括用于使用转换表的项来从GPA转换为HPA的电路、硬件、软件和/或逻辑。确切地说,控制器118和/或MC215可以使用表272的项以在图形转换表中将应用所使用的虚拟地址(图形地址)转换为图形数据在主存储器中的主机硬件物理存储器地址。类似地,控制器118和/或MC215可以使用表274创建表274的项,以便从每个进程页目录的虚拟地址(例如GPA)转换为图形数据在主存储器中的主机硬件物理存储器地址。
如图1A、1B、6A和6B所示,环境100或200允许在IO设备直接被指定给VM时将输入/输出设备(例如设备112、114或116)直接指定给虚拟机(例如,系统130、140或150),这样可以将该设备的设备驱动程序移出VMM 120而移入到控制VM中。例如,通过将图形设备116或控制器118直接指定给图形VM 150,可以将通常位于VMM120中的所有图形驱动程序(例如驱动程序122的驱动程序)移入到图形VM 150中。但是,因为VM具有存储器的虚拟化视图(例如图形VM 150具有存储器102的虚拟化视图),所以这些设备驱动程序或VM(例如图形VM 150)中的驱动程序使用GPA来对IO设备(例如,设备116和/或控制器118)编程。为了获取对正确数据的访问权,可能需要MC 115或215(例如,图形芯片组的一部分)将IO设备发出的地址从GPA转换为HPA。更具体来说,由于存储器的“虚拟化视图”,所以每个部分或VM可以发送含有GPA的DMA请求。但是,因为图形设备(例如,设备116和/或图形控制器118)具有“虚拟化视图”(例如,物理存储器地址的视图),为了对于图形设备来说能够正确满足请求,所以必须将GPA转换为HPA。
可以在设备116或控制器118经由具有GPA的图形VM 150从系统130接收到DMA请求时由MC 115或215来执行此转换。这些DMA请求的地址被MC 115或215转换以指向表272或274中的存储器地址,而该存储器地址与DMA请求在表264或266中所指向的地址相对应。因此,并不是使用表264或266和3级遍历(或其他GPA至HPA转换表)来将GPA变换或转换为HPA,而是使用表272或274将DMAGPA转换为HPA。这样通过渲染和/或显示引擎可以更快速且更有效率地在存储器中访问图形数据。
具体地说,因为图形VM 150通过MC 115或215来访问存储器260,所以图形VM 150具有存储器260的物理地址的访客视图。因此,仍必须由存储器控制器、图形设备和/或二者的组合将DMA请求的GPA转换或变换为HPA,以便正确地从存储器260访问图形数据。
无论何时只要创建或更新访客表(264、266),就对映像表的项进行DMA重新映射(例如从GPA映射到HPA),因此映像表的项包含HPA项。例如,图7是示出根据一个实施例的用于创建映像全局GTT的环境的框图。图7示出的环境700具有图形VM 150,该图形VM 150尝试将GPA GTT项安装到访客GTT中。例如,图形VM 150可以安装项710(例如,包含作为来自应用132的DMA请求要使用的数据的偏移量和图形地址)。使用在(偏移量、GPA数据)712中提供的GPA数据,在(偏移量、GPA数据)712所指定的位置处创建、存储、安装或更新表264。
因为图形VM 150没有存储器260的物理地址的真实视图,所以每次当来自应用132的DMA请求要访问该地址处(例如在GPA 712处)的数据时需要将表264的(偏移量、GPA数据)712的数据部分(例如,(偏移量、GPA数据)712包含偏移量和GPA作为数据)转换或变换为HPA,以便正确地从存储器访问图形数据。并不是一一执行所述无数种变换,而是可以通过将(偏移量、GPA数据)712转换或变换为适合的HPA,将该转换存储在映像表中的表内相同的对应位置处从而建立更有效率的系统。每次由路径410处理来自应用132的DMA请求时,并不是在表264中执行查询(例如变换或转换)然后在表580中执行另一次查询,而是执行映像表中的单级查询以便更快速且更有效率地将DMA请求变换为HPA地址。
因此,环境700示出由MC 115转换或变换为更新的(偏移量、HPA数据)714数据部分的(偏移量、GPA数据)712被转换,然后存储在映像全局GTT表272中的表内相同的对应位置处。因此,从图看出(偏移量、GPA数据)712发送到两个位置或被MC 115“复制(forked)”以更新表264和表272。MC 115可以包括或作为查询电路,例如执行此转换或变换的电路(还参见图8)。现在,在运行时(例如VM上执行图形应用期间),每次由路径410处理来自应用132的DMA请求时,并不是在表264中执行查询(例如变换或转换),然后在表580中执行另一次查询,而是执行映像表272中的单级查询以便更快速且更有效率地将DMA请求变换为HPA地址。确切地说,映像表GTT 272现在可以用于执行单级查询来将DMA请求的图形地址变换或转换为(HPA数据)714(例如通过查询映像表中的对应地址以获取(HPA数据)714)。有关更多解释,参见图12。
此外,图8是示出根据一个实施例的用于创建映像全局GTT的过程的流程图。图8示出过程800,例如可以对应于环境700和/或以其他方式创建映像全局GTT的项的过程。图8示出过程800,包括框810,其中Gfx VM尝试将GPA GTT项安装到访客GTT中。例如,图形VM 150可以(例如从图形应用或设备驱动程序)接收或访问图形地址项并将其变换为全局GTT的GPA项。框810可以包括通过图形VM或操作系统接收或访问项710,如上文对于图7描述的那样。框810还可以包括上文参考图形VM150由项710创建、转换、变换或构建全局GTT264的(偏移量、GPA数据)712的描述。在框820处,将GfxVM提供(例如访问和变换)的GPA项存储在访客GTT中,例如上文对于(偏移量、GPA数据)712和表264描述的那样。
接下来,在框830处,检测到(例如,访问或复制)Gfx VM安装的GPA项,并将其转换为HPA项(例如,将GPA数据部分转换为HPA,但是(偏移量、GPA数据)712的索引、偏移量或位置不变)。框830可以包括MC115检测到由Gfx VM 150或其他部件(例如,由在GTT的主存储器中存储项的其他实体)向全局GTT 264添加了项。框830还可以包括MC 115使用3级遍历580(或另一种GPA至HPA转换,例如单级重新映射278)将(偏移量、GPA数据)712转换为(HPA数据)714,正如上文对于图7描述的那样。在框830处的转换可以描述为(例如使用重新映射表278)将数据从GPA转换为HPA的DMA重新映射。
可以在环境100引导或初始化期间或在应用132或142之一加载或执行期间安装项710和/或(偏移量、GPA数据)712。类似地,MC 115可例如使用软件、固件、逻辑、电路、诱捕、停止和/或适合的设备或进程,检测或感测到在全局GTT 264的存储器中安装、创建或存储了(偏移量、GPA数据)712。虽然框830可以包括通过3级遍历的转换,并且图7示出3级遍历580,但是还可以使用其他适合的GPA至HPA转换(例如单级遍历,如表278)。
在框840处,将HPA项存储在映像全局GTT中。框840可以包括将(HPA数据)714存储在映像全局GTT 272中的与访客GTT相同的对应位置中,正如上文对于图7所描述的那样。框840和/或图7可以包括存储例如创建或构建映像表的项,正如上文对图6A或6B的表272所描述的那样。
与图7-8描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。图9是示出根据一个实施例的用于创建每个进程页显示(PPPD)映像访客的环境的框图。图9示出的环境900具有图形VM 150,该图形VM 150尝试将GPA PPPD项安装到访客PPPD中。例如,图形VM 150可以安装项910(例如,包含偏移量和图形地址,其作为数据用于来自应用132的DMA请求)。可以将项910的偏移量和图形地址数据包含在请求604中。图形VM 150从项910创建、转换、变换或构建页目录266的(偏移量、GPA数据)912。使用在(偏移量、GPA数据)912中提供的GPA数据,在(偏移量、GPA数据)912所指定的位置处创建、存储、安装或更新表266。
与上文对图7的描述相似,因为图形VM 150没有存储器260的物理地址的真实视图,所以每次当来自应用132的DMA请求要访问该地址处(例如在GPA 712处)的数据时,需要将(偏移量、GPA数据)912的数据部分转换或变换为HPA,以便正确地从存储器访问图形数据。因此,同样地,在运行时并不是一一执行所述无数种变换,而是可以通过将(偏移量、GPA数据)912转换或变换为适合的HPA,并将该转换存储在映像表中的表内相同的对应位置处从而建立更有效率的系统。每次由路径420处理来自应用132的DMA请求时,并不是在表266中执行查询然后在表580中执行另一次查询,而是使用映像表274执行单级查询以将图形地址变换或转换为HPA。
相应地,环境900示出(偏移量、GPA数据)912由MC 115转换或变换为(HPA数据)924,然后在表274中与表266中相同的对应位置处存储(例如,存储、安装或更新)(HPA数据)924。从图看出(偏移量、GPA数据)912发送到两个位置或通过发送到表266来“复制”(偏移量、GPA数据)912,以及检测、访问和/或将(偏移量、GPA数据)912发送MC 115。MC 115可以包括或作为查询电路,例如包括执行此转换或变换的电路(还参见图10)。每次由路径420处理DMA请求时,并不是在表266中执行查询然后在表580中执行另一次查询,而是在映像表274中执行单级查询以更快速且更有效率地将图形地址变换或转换为HPA。有关更多解释,参见图12。
此外,图10是示出根据一个实施例的用于创建映像访客PPPD的过程的流程图。图10示出过程1000,例如可以或可以不对应于环境900和/或以其他方式创建映像访客PPPD的项的过程。图10示出过程1000包括框1010,其中Gfx VM尝试将GPA PPPD项安装到访客PPPD中。例如,图形VM 150可以(例如从图形应用或设备驱动程序)访问图形地址项并将其变换为访客PPPD的GPA项。框1010可以包括图形VM或操作系统接收或访问项910,如上文对于框810和/或图9描述的那样。框1010还可以包括VM 150由项910创建、转换、变换或构建表266的(偏移量、GPA数据)912,如上文所描述。在框1020处,将GfxVM提供(例如访问和变换)的GPA项存储在访客页目录中,例如上文对于(偏移量、GPA数据)912和表266描述的那样。
接下来,在框1030处,检测到(例如,访问或复制)GfxVM安装的GPA项,并将其转换为HPA项(例如,将GPA数据部分转换为HPA,但是(偏移量、GPA数据)912的索引、偏移量或位置不变)。框1030可以包括MC115检测到向页目录266添加了项和/或检测到由GfxVM 150或其他部件(例如,由在页目录的主存储器中存储项的其他实体)向存储器写入或输入了项。框1030还可以包括MC 115使用3级遍历580(或另一种GPA至HPA转换,例如单级重新映射278)将(偏移量、GPA数据)912转换为(HPA数据)924,正如上文对于图9描述的那样。在框1030处的转换可以描述为(例如使用重新映射表278)将数据从GPA转换为HPA的DMA重新映射。
可以在环境100引导或初始化期间或在应用132或142之一加载或执行期间由图形VM 150安装(例如访问)项910和/或(偏移量、GPA数据)912。类似地,MC 115可例如使用软件、固件、逻辑、电路、诱捕、停止和/或适合的设备或进程,检测或感测到在页目录266的存储器中插入、创建或存储了(偏移量、GPA数据)912。虽然框1030可以包括使用3级遍历的转换,并且图9示出3级遍历580,但是还可以使用其他适合的GPA至HPA转换(例如单级遍历,如表278)。
在框1040处,将HPA项存储在映像访客PPPD中。框1040可以包括将(HPA数据)924存储在映像访客PPPD 274中的映像表内相同的对应位置中,正如上文对于图9所描述的那样。框1040和/或图9可以包括存储例如创建或构建映像表的项,正如上文参考图6A或6B的表274所描述的那样。
根据一些实施例,环境900和/或过程1000可以包括用于创建映像访客PPPD的框,而非用于创建单级DMA重新映射的框。或者,一些实施例可以包括创建单级DMA重新映射,但不创建映像访客PPPD(例如,图6A、6B和/或图4中所描述的,而非图9-10中所示那样)。在一些实施例中,在框820和1020处由Gfx VM将GPA项转换为映像全局GTT和/或映像访客PPPD也是可选的。此外,在一些情况中,不存在非映像表。MC感测到对表进行写入的尝试,可以由MC和/或以虚拟方式(例如非映像表是指示成功写入而不存储数据的虚拟表)来提供成功写入的指示。在一些情况中,对不存在的表写入可以是对MC写入。
与图9-10描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。在此类情况中,MC 215可以包括或作为查询电路,例如执行此转换或变换的电路。
图11是用于维护或更新映像表的环境的框图。图11示出的环境1100包括图形VM 150、存储器260和映像存储器270。图形VM 150可以创建或产生全局GTT更新1110和/或进程页目录更新1120。更新1110和/或1120可以分别与(偏移量、GPA数据)712和/或(偏移量、GPA数据)912相似,不同的是更新1110和1120可以在环境100的计算系统引导或初始化之后发生。更新1110和1120还可以描述在任何时间更新表中已经存在的项。更新1110和1120可以例如在将它们发送、写入或以其他方式用于更新存储器260中的表264或266时被MC115感测或检测到。
根据实施例,MC 115使用单级重新映射来创建要写入或输入到存储器270的表272和/或274中的映像表更新或项。例如,单级重新映射可以使用例如单级DMA重新映射278的表将GPA地址转换为HPA地址。或者,在其他实施例中,响应到检测后,MC 115使用多级遍历580来创建要写入或输入到存储器270的表272和/或274中的映像表更新或项(根据一些实施例)。
类似地,VMM 120可以提供要发送到或写入存储器260中的表268中的项1125。根据实施例,硬件可以不对每个进程GTT表建立映像,从而这些表可以保留在GPA中。因此,在一些情况中,在访问存储器之前,需要使用3级遍历580转换项1125以创建HPA地址。此过程可以与上文对图6A、图6B和/或图4的每个GPA至HPA表的创建所描述的过程相似。
与图11描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。
图12示出根据一个实施例的图形渲染和显示数据路径的框图。图12示出的环境1200包括路径1210(例如显示路径)和路径1220(例如渲染路径)。路径1210可以是与图5的路径410相似的路径,不同的是路径1210使用表272来替代表264和遍历580。同样地,路径1220可以是与图5的路径420相似的渲染路径,不同的是路径1220使用表274来替代目录266和遍历580,并且可以使用重新映射278替代遍历580。环境1200包括(例如图形设备116的)渲染引擎,该渲染引擎将渲染的请求604发送到映像访客PPPD 274。通过表274将请求604转换为转换1224。
可以理解到,使用表274来执行单级转换,远比使用图3、图6或图9的目录266和遍历580更有效率。1224处的转换可以对应于图5的HPA 624或使用图9的(HPA数据)924的转换的请求或表274的项。转换1224还可以对应于图7的转换714。可以由MC 115使用存储器270来执行使用表274的转换,正如图6A或6B所示那样。这样1224处的转换可以是发送到每个进程GTT 268的查询。在表268中,所述查询提供GPA 1226。GPA 1226可以对应于图5的GPA 626或图9的924或表268的项。然后将转换1226发送到单级DMA重新映射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的数据访问。
可以理解到,使用重新映射278将GPA 1226转换为转换1228比上文使用图5的查询580将GPA 626转换为HPA 628的过程更有效率(例如,重新映射278是单级的或单次查询转换,而查询580是3级转换)。或者,在一些实施例中,可以使用除重新映射278之外的重新映射或转换来将GPA 1226转换为存储器360的适合转换。例如,可以使用3级遍历580来替代重新映射278。
然后,例如可以通过寻址图2描述的HPA 362处的图形数据370或374的方式,使用转换1228来访问存储器360中的数据(例如读取或写入图形数据)。
在环境1200中,显示引擎(例如图形设备116)也可以将显示请求602发送到映像全局GTT 272。表272可以将请求602转换为转换1214,例如对于图3、图5或图9中使用表272所描述的那样。转换1214可以对应于图5的HPA 614或图9的(HPA数据)924。转换1214还可以对应于使用图7的(HPA数据)714的转换。可以理解到,使用表272将请求602转换为转换1214可比图5中使用表264和查询580更有效率且更快速。可以由MC115使用存储在存储器270中的表272来从请求602转换出转换1214,正如图6A或6B所示那样。可以将转换1214发送到存储器360以用于例如图2的数据访问。
表272和274可以在体系结构上对于VM(例如,系统130或140或应用132或142)和/或VMM(例如,VMM 120)不可见(例如,不可见于或不显露给VM或VMM)。根据实施例,表278可以在体系结构上总是对于VMM(例如,VMM120)可见(例如显露给VMM)。表272、274和278可以对于诸如MC 115或215、设备116和/或控制器118的硬件或芯片组可见。存储器中的表、项、数据或位置可视为对于VM、VMM、电路、OS和/或其他实体可见,如果存在下列情况:存储器中的表、项、数据或位置被报告给VM、VMM、电路、OS和/或其他实体、VM、VMM、电路、OS和/或其他实体知道其存在、其被显露给VM、VMM、电路、OS和/或其他实体、VM、VMM、电路、OS和/或其他实体可对其访问、其可写入到VM、VMM、电路、OS和/或其他实体、其可从VM、VMM、电路、OS和/或其他实体读取或可以其他方式对其操作。存储器中的表、项、数据或位置可视为对于VM、VMM、电路、OS和/或其他实体不可见,如果存在下列情况:存储器中的表、项、数据或位置未被报告给VM、VMM、电路、OS和/或其他实体、未使VM、VMM、电路、OS和/或其他实体知道其存在、未显露给VM、VMM、电路、OS和/或其他实体、VM、VMM、电路、OS和/或其他实体不可对其访问、其不可写入到VM、VMM、电路、OS和/或其他实体、其不可从VM、VMM、电路、OS和/或其他实体读取或不可以其他方式对其操作。
MC 115可以对于VM或VMM透明地使用表272、274和/或重新映射278来产生转换。MC 115或215可以对于VM或VMM透明地创建表272、274和/或278的项或对表272、274和/或278更新项。可以由MC 115或215检测或感测对GTT ADDR(例如全局转换表地址)窗口(aperture)的写入,并复制映像表项、更新或使用来透明地执行表272、274的创建、更新和使用。复制使用可以包括使用表272、274和/或278。复制项或更新可以包括将项发送到表272、274和/或278或将项写入到表272、274和/或278或对表272、274和/或278更新。此外,转换项或数据、查询项或数据或以其他方式使用表272、274和/或278或显示或渲染图形数据可以包括,(例如使用基地址和/或偏移量地址)对表272、274和/或278中位于对应项在对应表264、266和/或268中所在地址或位置相同的位置或地址处的项或数据建立索引。
与针对图12描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。
图13是示出根据一个实施例的图形显示路径更新和显示路径的框图。图13示出环境1300,环境1300包括显示更新路径1310和显示路径1320。路径1310可以对应于参考图11描述的环境1100的局部。其中示出路径1310包括全局GTT更新1110,全局GTT更新1110被MC 115复制以向访客全局GTT 264发送一个项并向单级重新映射278发送另一个项。从单级重新映射278,将更新发送到映像访客全局GTT 272,例如以便更新表272的项。
路径1320可以对应于图12的路径1210的描述,并且可以提供与图3的路径410相同的功能性。其中示出路径1320包括MC 115的显示引擎219将请求602发送到表272。表272转换该请求,并将其作为转换1214发送到存储器360。
与针对图13描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。
图14是示出根据一个实施例的图形渲染路径更新和渲染路径的框图。图14示出环境1400,环境1400包括渲染更新路径1410和渲染路径1420。路径1410可以对应于图11的环境1100的局部。路径1410包括每个进程页目录更新1120进入MC 115,MC 115将此更新复制成用于访客每个进程页目录266的一个更新和发送到单级重新映射278的另一个更新。从单级重新映射278,将更新的转换发送到映像每个进程页目录274。更新1120可以对应于图9的更新(偏移量、GPA数据)912。
路径1410还包括MC 115接收并转发到每个进程GTT 268的每个进程GTT更新1125。更新1125可以是与针对图6A、图6B和图4描述的更新表278相似的更新。
其中示出渲染路径1420包括,MC 115的渲染引擎217将渲染请求604发送到表274,表274将转换1224发送到表268,表268将转换1226发送到表278,表278将转换1228发送到存储器360。路径1428可以对应于图12的路径1220。
与针对图14描述的概念相似的概念适用于图1B和6B的MC 215和控制器118(例如,环境200)。
图形VM(例如,图形VM150)、VMM 120、MC 115和/或图形设备(例如,设备116和/或控制器118)可以包括用于执行上文参考图1-14描述的功能的适合电子装置或计算机硬件和软件。还应该认识到,在不背离本发明范围的前提下,可将更多或更少的设备和/或过程结合到图1-14所示的设备和方法中,并且所示出和本文所描述的框的安排不暗示着有特定的次序。还将认识到,结合图1-14描述的方法和设备可以在机器可执行指令(例如软件)中实施。这些指令可以用于使得使用这些指令编程的通用或专用处理器执行所描述的操作和过程。或者,这些操作和过程可以由包含用于执行这些操作的硬连线逻辑的特定硬件组件来执行,或由编程的计算机组件与定制的硬件组件的任何组合来执行。这些方法可以作为计算机程序产品来提供,该计算机程序产品可以包括其上存储有可用于将计算机(或其他电子设备)编程来执行这些方法的指令的机器可读介质。为了解释本说明书的目的,术语“机器可读介质”还应该视为包括能够存储用于由机器执行并使该机器执行本发明任一方法的指令序列或将其编码的任何介质。因此术语“机器可读介质”应该视为包括但不限于固态存储器、光盘和磁盘以及载波信号。而且,在本领域中通常将软件以一种形式或另一种形式(例如,程序、过程、进程、应用、模块、逻辑...)论述为执行动作或促成结果。此类表述仅是描述通过计算机执行软件使该计算机的处理器执行动作或产生结果的便捷方式。在一些情况中,本文描述的环境可以在PC上实现,或者在计算机服务器(例如用作例如具有要显示的数据的一个或多个客户机计算机的服务器)上实现。
在说明书前文中,描述了特定实施例。但是,在不背离所附权利要求中提出的本发明的更宽泛精神和范围的前提下可以对其进行多种修改和更改。因此,本说明书和附图应视为说明性意义的而非限定性意义的。
Claims (21)
1.一种装置,包括:
在具有虚拟机监视器(VMM)的虚拟化环境中的存储器控制器电路,用于创建将图形数据的访客物理地址(GPA)转换为直接存储器访问(DMA)请求的主机物理地址(HPA)的单级查询表,其中所述单级查询表对于所述电路可见,而对于图形虚拟机不可见。
2.如权利要求1所述的装置,其中所述单级查询表包括用于将计算系统的渲染路径中的图形数据重新映射的多个项,所述计算系统在虚拟机上执行应用以便向所述渲染路径发送直接存储器访问(DMA)请求。
3.如权利要求1所述的装置,其中所述单级查询表包括用于将计算系统的显示路径中的图形数据重新映射的多个项,所述计算系统在虚拟机上执行应用以便向所述显示路径发送直接存储器访问(DMA)请求。
4.如权利要求1所述的装置,其中所述单级查询表对于所述电路可见而对于所述VMM不可见,所述单级查询表是显示路径的全局访客转换表(GTT)的映像表和渲染路径的每个进程页显示(PPPD)转换表的映像表之一,并且其中所述存储器控制器电路还包括用于在存储器中写所述单级查询表的电路。
5.如权利要求1所述的装置,其中所述电路包括用于创建所述单级查询表、将所述单级查询表存储在连续存储器中并使用所述单级查询表的图形电路、图形芯片组或存储器控制器(MC)。
6.如权利要求5所述的装置,还包括用于预先分配所述连续存储器而无需向所述VMM报告所述连续存储器的基本输入输出系统(BIOS)。
7.如权利要求1所述的装置,其中所述单级查询表是在引导所述计算系统期间、或在启动在所述VMM上的第二虚拟机中启动的应用期间创建的。
8.如权利要求1所述的装置,其中所述存储器控制器电路还包括通过将第一存储器地址转换与第二存储器地址转换组合来创建所述单级查询表的项的电路。
9.如权利要求8所述的装置,其中所述第一存储器地址转换用于将要由在所述VMM上的第二虚拟机上启动的应用发送的第一虚拟存储器地址转换为供所述MM使用的GPA,以及所述第二存储器地址转换用于将供所述MM使用的GPA转换为所述HPA。
10.如权利要求9所述的装置,其中所述第一虚拟存储器地址包括要由在所述VMM上的第二虚拟机中启动的应用创建而用于访问存储在主存储器中的图形数据的地址。
11.如权利要求8所述的装置,还包括用于检测要由所述VMM上的第二虚拟机中启动的应用所创建的项的检测电路。
12.如权利要求11所述的装置,其中要创建的项包括用于创建或更新显示路径的全局转换表(GTT)、渲染路径的每个页目录(PPD)转换表和所述渲染路径的每个进程全局转换表(PPGTT)之一的项。
13.如权利要求8所述的装置,其中所述存储器控制器电路还包括用于将所创建的项的数据或偏移量与来自将GPA重新映射到HPA的查询表的数据或偏移量组合,以便创建所述单级查询表的项的电路。
14.如权利要求1所述的装置,其中所述存储器控制器电路还包括用于将所述单级查询表存储在连续存储器中的电路;并且还包括:
图形芯片组,用于使用所述单级查询表来将在所述VMM上的虚拟机中运行的应用的图形数据的GPA地址转换为HPA地址。
15.一种计算机服务器,包括:
检测电路,用于检测要由在虚拟机监视器(MM)上的第一虚拟机中启动的应用创建的项;
查询电路,用于将来自要创建的项的数据或偏移量与来自要由所述VMM创建的项的数据或偏移量组合,以便创建将访客地址转换为主机地址的单级查询表的项;
存储器控制器电路,用于将要由应用在第一存储器地址转换表中创建的项存储在主存储器中,将要由所述VMM创建的存储在第二存储器地址转换表中的项存储在所述主存储器中,并将所述单级查询表的项存储在所述主存储器中。
16.如权利要求15所述的计算机服务器,还包括图形设备电路或图形控制器电路,用于使用所述单级查询表来将图形显示引擎和图形渲染引擎之一中的DMA请求的访客地址转换为主机物理地址(HPA),而无需向所述VMM发送所述请求。
17.如权利要求15所述的计算机服务器,还包括存储器控制器电路,用于使所述单级查询表对于图形虚拟机、所述VMM或在所述第一虚拟机中启动的所述应用不可见,并使所述单级查询表对于分离图形卡和集成图形芯片组之一可见。
18.一种计算系统,包括:
耦合到主存储器的处理器;
在具有图形虚拟机和虚拟机监视器(VMM)的虚拟化环境中的耦合到所述处理器和所述存储器的图形芯片组,所述芯片组包括用于创建将图形数据的访客物理地址(GPA)转换为直接存储器访问(DMA)请求的主机物理地址(HPA)的单级查询表的存储器控制器,其中所述图形虚拟机对于所述存储器控制器可见,而对于所述VMM不可见,并且所述单级查询表对于所述电路可见,而对于所述图形虚拟机或所述VMM不可见。
19.如权利要求18所述的计算系统,其中所述图形芯片组是集成图形设备和分离图形控制器之一,用于与在所述VMM上运行的图形虚拟机通信而无需访问所述VMM。
20.如权利要求18所述的计算系统,其中所述图形虚拟机是软件应用,并且所述集成图形设备或所述分离图形控制器在图形虚拟机执行期间不访问所述VMM。
21.如权利要求20所述的计算系统,其中所述图形虚拟机从虚拟应用接收所述DMA请求,并将所述请求发送给所述芯片组以便使用所述表从GPA转换为HPA。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/480,663 | 2006-06-30 | ||
US11/480,663 US7868897B2 (en) | 2006-06-30 | 2006-06-30 | Apparatus and method for memory address re-mapping of graphics data |
PCT/US2007/071953 WO2008005722A1 (en) | 2006-06-30 | 2007-06-22 | An apparatus and method for memory address re-mapping of graphics data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101484883A true CN101484883A (zh) | 2009-07-15 |
CN101484883B CN101484883B (zh) | 2013-01-30 |
Family
ID=38876129
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800248109A Active CN101484883B (zh) | 2006-06-30 | 2007-06-22 | 用于重新映射图形数据的存储器地址的装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (5) | US7868897B2 (zh) |
EP (1) | EP2035936B1 (zh) |
KR (1) | KR101017451B1 (zh) |
CN (1) | CN101484883B (zh) |
AT (1) | ATE549680T1 (zh) |
WO (1) | WO2008005722A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473170A (zh) * | 2009-07-24 | 2012-05-23 | 惠普开发有限公司 | 基于虚拟机的应用服务供应 |
CN102999393A (zh) * | 2011-09-13 | 2013-03-27 | 联想(北京)有限公司 | 一种数据传输的方法、装置及电子设备 |
CN105518746A (zh) * | 2014-12-24 | 2016-04-20 | 英特尔公司 | 混合请求式图形转换表阴影化 |
CN107250980A (zh) * | 2015-03-26 | 2017-10-13 | 英特尔公司 | 具有图形和系统存储器冲突检查的计算方法和设备 |
CN108255569A (zh) * | 2016-12-28 | 2018-07-06 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN108959135A (zh) * | 2017-05-24 | 2018-12-07 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102006052384A1 (de) * | 2006-11-07 | 2008-05-08 | BÖGRA Technologie GmbH | Lagerschalenpaar und Verfahren zu seiner Herstellung |
US8527673B2 (en) * | 2007-05-23 | 2013-09-03 | Vmware, Inc. | Direct access to a hardware device for virtual machines of a virtualized computer system |
US8140781B2 (en) * | 2007-12-31 | 2012-03-20 | Intel Corporation | Multi-level page-walk apparatus for out-of-order memory controllers supporting virtualization technology |
US20100235386A1 (en) * | 2009-03-13 | 2010-09-16 | Cox Communications, Inc. | Multi-user file system for multi-room digital video recording |
US8806144B2 (en) | 2009-05-12 | 2014-08-12 | Stec, Inc. | Flash storage device with read cache |
US9723319B1 (en) * | 2009-06-01 | 2017-08-01 | Sony Interactive Entertainment America Llc | Differentiation for achieving buffered decoding and bufferless decoding |
US8566511B2 (en) * | 2009-07-23 | 2013-10-22 | Stec, Inc. | Solid-state storage device with multi-level addressing |
US8572610B2 (en) * | 2009-12-09 | 2013-10-29 | General Electric Company | Patient monitoring system and method of safe operation with third party parameter applications |
US8752047B2 (en) | 2010-05-28 | 2014-06-10 | Bromium, Inc. | Automated management of virtual machines to process untrusted data based on client policy information |
US9767274B2 (en) | 2011-11-22 | 2017-09-19 | Bromium, Inc. | Approaches for efficient physical to virtual disk conversion |
US10095530B1 (en) | 2010-05-28 | 2018-10-09 | Bromium, Inc. | Transferring control of potentially malicious bit sets to secure micro-virtual machine |
US10310696B1 (en) | 2010-05-28 | 2019-06-04 | Bromium, Inc. | Supporting a consistent user interface within a virtualized environment |
US9558051B1 (en) | 2010-05-28 | 2017-01-31 | Bormium, Inc. | Inter-process communication router within a virtualized environment |
US9135038B1 (en) | 2010-05-28 | 2015-09-15 | Bromium, Inc. | Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame |
US8972980B2 (en) * | 2010-05-28 | 2015-03-03 | Bromium, Inc. | Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity |
US9386021B1 (en) | 2011-05-25 | 2016-07-05 | Bromium, Inc. | Restricting network access to untrusted virtual machines |
US9116733B2 (en) | 2010-05-28 | 2015-08-25 | Bromium, Inc. | Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity |
US9239909B2 (en) | 2012-01-25 | 2016-01-19 | Bromium, Inc. | Approaches for protecting sensitive data within a guest operating system |
US9148428B1 (en) | 2011-05-25 | 2015-09-29 | Bromium, Inc. | Seamless management of untrusted data using virtual machines |
US9104837B1 (en) | 2012-06-18 | 2015-08-11 | Bromium, Inc. | Exposing subset of host file systems to restricted virtual machines based on upon performing user-initiated actions against host files |
US9269122B2 (en) * | 2010-10-11 | 2016-02-23 | Hewlett-Packard Development Company, L.P. | First and second software stacks and discrete and integrated graphics processing units |
US9921860B1 (en) | 2011-05-25 | 2018-03-20 | Bromium, Inc. | Isolation of applications within a virtual machine |
US10546118B1 (en) | 2011-05-25 | 2020-01-28 | Hewlett-Packard Development Company, L.P. | Using a profile to provide selective access to resources in performing file operations |
US8839245B1 (en) | 2012-06-18 | 2014-09-16 | Bromium, Inc. | Transferring files using a virtualized application |
US10846396B1 (en) | 2011-05-25 | 2020-11-24 | Hewlett-Packard Development Company, L.P. | Downloading data in a dedicated virtual machine |
US20140196036A1 (en) * | 2011-07-12 | 2014-07-10 | Kok Leong Ryan Ko | Tracing operations in a cloud system |
US9245108B1 (en) | 2012-03-13 | 2016-01-26 | Bromium, Inc. | Dynamic adjustment of the file format to identify untrusted files |
US9201850B1 (en) | 2012-06-18 | 2015-12-01 | Bromium, Inc. | Composing the display of a virtualized web browser |
US9384026B1 (en) | 2012-06-18 | 2016-07-05 | Bromium, Inc. | Sharing and injecting cookies into virtual machines for retrieving requested web pages |
US9734131B1 (en) | 2012-06-18 | 2017-08-15 | Bromium, Inc. | Synchronizing history data across a virtualized web browser |
US9727534B1 (en) | 2012-06-18 | 2017-08-08 | Bromium, Inc. | Synchronizing cookie data using a virtualized browser |
US10095662B1 (en) | 2012-06-18 | 2018-10-09 | Bromium, Inc. | Synchronizing resources of a virtualized browser |
US11023088B2 (en) | 2012-06-18 | 2021-06-01 | Hewlett-Packard Development Company, L.P. | Composing the display of a virtualized web browser |
TWI479422B (zh) * | 2013-01-25 | 2015-04-01 | Wistron Corp | 電腦系統及其繪圖處理方法 |
US9405642B2 (en) | 2013-01-29 | 2016-08-02 | Red Hat Israel, Ltd. | Providing virtual machine migration reliability using an intermediary storage device |
US10241814B2 (en) | 2013-01-29 | 2019-03-26 | Red Hat Israel, Ltd. | Virtual machine memory migration by storage |
KR101821633B1 (ko) | 2013-03-14 | 2018-03-08 | 삼성전자주식회사 | 메모리 시스템 |
US9292328B2 (en) | 2013-05-24 | 2016-03-22 | Bromium, Inc. | Management of supervisor mode execution protection (SMEP) by a hypervisor |
US9104600B2 (en) * | 2013-08-22 | 2015-08-11 | International Business Machines Corporation | Merging direct memory access windows |
US20150058519A1 (en) * | 2013-08-22 | 2015-02-26 | International Business Machines Corporation | Detection of hot pages for partition hibernation |
US8719374B1 (en) | 2013-09-19 | 2014-05-06 | Farelogix, Inc. | Accessing large data stores over a communications network |
US9679143B2 (en) * | 2013-11-06 | 2017-06-13 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Updated IO memory management unit identity settings for DMA remapping |
US9430411B2 (en) | 2013-11-13 | 2016-08-30 | Sandisk Technologies Llc | Method and system for communicating with non-volatile memory |
US9377968B2 (en) | 2013-11-13 | 2016-06-28 | Sandisk Technologies Llc | Method and system for using templates to communicate with non-volatile memory |
US9390033B2 (en) | 2013-11-13 | 2016-07-12 | Sandisk Technologies Llc | Method and system for communicating with non-volatile memory via multiple data paths |
US10599565B2 (en) | 2013-12-24 | 2020-03-24 | Hewlett-Packard Development Company, L.P. | Hypervisor managing memory addressed above four gigabytes |
US10430614B2 (en) | 2014-01-31 | 2019-10-01 | Bromium, Inc. | Automatic initiation of execution analysis |
US10412046B2 (en) * | 2014-06-17 | 2019-09-10 | Nxp Usa, Inc. | Method of, and a device for updating a multiple-processing entity packet management system, and associated computer program product |
WO2016003646A1 (en) * | 2014-06-30 | 2016-01-07 | Unisys Corporation | Enterprise management for secure network communications over ipsec |
WO2016003434A1 (en) * | 2014-06-30 | 2016-01-07 | Hewlett-Packard Development Company, L.P. | Virtual machine device access |
US9680873B1 (en) | 2014-06-30 | 2017-06-13 | Bromium, Inc. | Trusted network detection |
US10311122B1 (en) | 2014-08-22 | 2019-06-04 | Bromium, Inc. | On-demand unprotected mode access |
US9690928B2 (en) * | 2014-10-25 | 2017-06-27 | Mcafee, Inc. | Computing platform security methods and apparatus |
US9495303B2 (en) * | 2015-02-03 | 2016-11-15 | Intel Corporation | Fine grained address remapping for virtualization |
US10116519B2 (en) | 2015-03-27 | 2018-10-30 | Yodiwo Ab | Programmable distributed management system of interconnected things and applications |
WO2016205975A1 (en) * | 2015-06-26 | 2016-12-29 | Intel Corporation | Apparatus and method to improve scalability of graphics processor unit (gpu) virtualization |
KR20170020012A (ko) * | 2015-08-13 | 2017-02-22 | 삼성전자주식회사 | 콘텐츠 보안 처리 방법 및 이를 지원하는 전자 장치 |
CN108701047B (zh) * | 2016-03-31 | 2023-08-01 | 英特尔公司 | 具有dma写时复制的高密度虚拟机容器 |
US9798597B1 (en) | 2016-09-26 | 2017-10-24 | International Business Machines Corporation | Verifying selective purging of entries from translation look-aside buffers |
KR101716715B1 (ko) | 2016-12-27 | 2017-03-15 | 주식회사 티맥스클라우드 | 가상 머신 환경의 네트워크 입출력 장치 가상화 방법 및 장치 |
US10367639B2 (en) | 2016-12-29 | 2019-07-30 | Intel Corporation | Graphics processor with encrypted kernels |
EP3355188B1 (en) | 2017-01-31 | 2021-08-25 | OpenSynergy GmbH | Instrument display on a car dashboard by checking frames of a gui by a realtime os |
US10908939B2 (en) * | 2017-01-31 | 2021-02-02 | Intel Corporation | Efficient fine grained processing of graphics workloads in a virtualized environment |
CN106998365B (zh) * | 2017-04-20 | 2021-02-12 | 阔地教育科技有限公司 | 音视频处理器、智能教学装置、智能教学系统及方法 |
CN107341115B (zh) * | 2017-06-30 | 2021-07-16 | 联想(北京)有限公司 | 虚拟机内存访问方法、系统和电子设备 |
CN109509139B (zh) * | 2017-09-14 | 2023-06-27 | 龙芯中科技术股份有限公司 | 顶点数据处理方法、装置及设备 |
CN107741863A (zh) * | 2017-10-08 | 2018-02-27 | 深圳市星策网络科技有限公司 | 一种显卡的驱动方法和装置 |
US11372787B2 (en) * | 2017-12-09 | 2022-06-28 | Intel Corporation | Unified address space for multiple links |
US10706493B2 (en) * | 2017-12-29 | 2020-07-07 | Intel Corporation | Apparatus and method for display virtualization using mapping between virtual and physical display planes |
US11809888B2 (en) | 2019-04-29 | 2023-11-07 | Red Hat, Inc. | Virtual machine memory migration facilitated by persistent memory devices |
JP7238178B2 (ja) * | 2020-02-04 | 2023-03-13 | キオクシア株式会社 | メモリ装置及びメモリ装置を制御する方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4456954A (en) | 1981-06-15 | 1984-06-26 | International Business Machines Corporation | Virtual machine system with guest architecture emulation using hardware TLB's for plural level address translations |
JPS61190638A (ja) | 1985-02-20 | 1986-08-25 | Hitachi Ltd | 仮想計算機のフアイル制御方式 |
JP2615103B2 (ja) | 1987-12-11 | 1997-05-28 | 株式会社日立製作所 | 仮想計算機システム |
JP2839201B2 (ja) | 1990-07-30 | 1998-12-16 | 株式会社日立製作所 | 仮想計算機システム |
US5426748A (en) * | 1992-01-03 | 1995-06-20 | International Business Machines Corporation | Guest/host extended addressing method and means with contiguous access list entries |
US6907600B2 (en) | 2000-12-27 | 2005-06-14 | Intel Corporation | Virtual translation lookaside buffer |
US6895491B2 (en) | 2002-09-26 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching |
US7900017B2 (en) * | 2002-12-27 | 2011-03-01 | Intel Corporation | Mechanism for remapping post virtual machine memory pages |
US7111145B1 (en) * | 2003-03-25 | 2006-09-19 | Vmware, Inc. | TLB miss fault handler and method for accessing multiple page tables |
US7467381B2 (en) * | 2003-12-16 | 2008-12-16 | Intel Corporation | Resource partitioning and direct access utilizing hardware support for virtualization |
US8274518B2 (en) * | 2004-12-30 | 2012-09-25 | Microsoft Corporation | Systems and methods for virtualizing graphics subsystems |
US7428626B2 (en) * | 2005-03-08 | 2008-09-23 | Microsoft Corporation | Method and system for a second level address translation in a virtual machine environment |
US7363463B2 (en) * | 2005-05-13 | 2008-04-22 | Microsoft Corporation | Method and system for caching address translations from multiple address spaces in virtual machines |
CN1313927C (zh) * | 2005-06-16 | 2007-05-02 | 北京航空航天大学 | 智能卡运行环境的控制方法 |
US7499057B2 (en) * | 2005-09-09 | 2009-03-03 | Microsoft Corporation | Address translation in an integrated graphics environment |
-
2006
- 2006-06-30 US US11/480,663 patent/US7868897B2/en active Active
-
2007
- 2007-06-22 EP EP07784526A patent/EP2035936B1/en active Active
- 2007-06-22 CN CN2007800248109A patent/CN101484883B/zh active Active
- 2007-06-22 KR KR1020087030723A patent/KR101017451B1/ko active IP Right Grant
- 2007-06-22 AT AT07784526T patent/ATE549680T1/de active
- 2007-06-22 WO PCT/US2007/071953 patent/WO2008005722A1/en active Application Filing
-
2010
- 2010-10-26 US US12/912,630 patent/US8154555B2/en active Active
-
2012
- 2012-02-09 US US13/369,720 patent/US8477145B2/en active Active
-
2013
- 2013-07-01 US US13/932,963 patent/US9223603B2/en active Active
-
2015
- 2015-12-09 US US14/963,518 patent/US9817770B2/en active Active
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473170B (zh) * | 2009-07-24 | 2016-01-27 | 惠普开发有限公司 | 基于虚拟机的应用服务供应 |
CN102473170A (zh) * | 2009-07-24 | 2012-05-23 | 惠普开发有限公司 | 基于虚拟机的应用服务供应 |
CN102999393A (zh) * | 2011-09-13 | 2013-03-27 | 联想(北京)有限公司 | 一种数据传输的方法、装置及电子设备 |
CN102999393B (zh) * | 2011-09-13 | 2016-03-02 | 联想(北京)有限公司 | 一种数据传输的方法、装置及电子设备 |
CN105518746B (zh) * | 2014-12-24 | 2018-12-04 | 英特尔公司 | 混合请求式图形转换表影子化 |
CN105518746A (zh) * | 2014-12-24 | 2016-04-20 | 英特尔公司 | 混合请求式图形转换表阴影化 |
WO2016101172A1 (en) * | 2014-12-24 | 2016-06-30 | Intel Corporation | Hybrid on-demand graphics translation table shadowing |
GB2535823B (en) * | 2014-12-24 | 2021-08-04 | Intel Corp | Hybrid on-demand graphics translation table shadowing |
CN107250980A (zh) * | 2015-03-26 | 2017-10-13 | 英特尔公司 | 具有图形和系统存储器冲突检查的计算方法和设备 |
CN107250980B (zh) * | 2015-03-26 | 2021-02-09 | 英特尔公司 | 具有图形和系统存储器冲突检查的计算方法和设备 |
CN108255569A (zh) * | 2016-12-28 | 2018-07-06 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN108255569B (zh) * | 2016-12-28 | 2021-12-31 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN108959135A (zh) * | 2017-05-24 | 2018-12-07 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
CN108959135B (zh) * | 2017-05-24 | 2023-08-08 | 三星电子株式会社 | 数据存储及处理系统及其操作方法 |
CN114201269A (zh) * | 2022-02-18 | 2022-03-18 | 阿里云计算有限公司 | 内存换页方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20160147668A1 (en) | 2016-05-26 |
US9223603B2 (en) | 2015-12-29 |
US20080001958A1 (en) | 2008-01-03 |
US9817770B2 (en) | 2017-11-14 |
US8477145B2 (en) | 2013-07-02 |
KR20090026286A (ko) | 2009-03-12 |
WO2008005722A1 (en) | 2008-01-10 |
US20130298124A1 (en) | 2013-11-07 |
CN101484883B (zh) | 2013-01-30 |
US20110037770A1 (en) | 2011-02-17 |
US8154555B2 (en) | 2012-04-10 |
EP2035936A4 (en) | 2009-07-08 |
KR101017451B1 (ko) | 2011-02-25 |
EP2035936B1 (en) | 2012-03-14 |
EP2035936A1 (en) | 2009-03-18 |
ATE549680T1 (de) | 2012-03-15 |
US7868897B2 (en) | 2011-01-11 |
US20120139927A1 (en) | 2012-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101484883B (zh) | 用于重新映射图形数据的存储器地址的装置和方法 | |
CN103034524B (zh) | 半虚拟化的虚拟gpu | |
US20100107163A1 (en) | Movable virtual machine image | |
US7757034B1 (en) | Expansion of virtualized physical memory of virtual machine | |
CN105264506B (zh) | 向内存映射配置分配处理器 | |
US20180336158A1 (en) | Systems and methods for data transfer with coherent and non-coherent bus topologies and attached external memory | |
US7120778B2 (en) | Option ROM virtualization | |
JP4608580B2 (ja) | ソフトウェア・モジュールを実行する方法及び計算システム | |
KR20210089150A (ko) | 호스트 컴퓨팅 디바이스 가상 메모리에 의해 지원되는 가상 머신 메모리의 더 빠른 액세스 | |
JPH06508952A (ja) | メモリ管理方法 | |
CN102799483B (zh) | 一种用于转换操作系统运行环境的方法和装置 | |
CN102625934A (zh) | 共享虚拟存储器 | |
CN101149707A (zh) | 将翻译后援缓冲器同步到扩充的分页表 | |
US10061701B2 (en) | Sharing of class data among virtual machine applications running on guests in virtualized environment using memory management facility | |
US20180335956A1 (en) | Systems and methods for reducing data copies associated with input/output communications in a virtualized storage environment | |
WO2013088818A1 (ja) | 仮想計算機システム、仮想化機構、及びデータ管理方法 | |
US10235195B2 (en) | Systems and methods for discovering private devices coupled to a hardware accelerator | |
CN100405295C (zh) | 用于提供原地执行功能的系统和方法 | |
US10782993B2 (en) | Systems and methods for secure runtime dynamic resizing of memory namespaces | |
EP4235415B1 (en) | Virtual machine update while keeping devices attached to the virtual machine | |
US20080162805A1 (en) | Method and Apparatus for Using Non-Addressable Memories of a Computer System | |
JP5104501B2 (ja) | 仮想マシンシステム、ホスト計算機、仮想マシン構築方法およびプログラム | |
KR100302926B1 (ko) | Rom장치로부터디스크기반소프트웨어이미지의사용 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |