控制虚拟机的方法和系统的制作方法

文档序号:6375079阅读:162来源:国知局
专利名称:控制虚拟机的方法和系统的制作方法
技术领域
本发明的实施例总体上涉及计算机系统,具体来讲,涉及计算机系统内虚拟机的操作控制。
背景技术
虚拟机体系结构从逻辑上划分物理机,以致机器的底层硬件是分时的,并且表现为一个或多个独立操作的虚拟机(VM)。虚拟机监视器(VMM)在计算机上运行,并且便于为其他软件抽象一个或多个VM。每个VM可以起独立平台的作用,运行其自身的操作系统(OS)和应用软件。此处把在VM中运行的软件统称为客户软件。
客户软件期待这样的操作,就好像它正在专用计算机上运行而不是在VM上运行。也就是说,客户软件期待控制各种事件并且有权访问计算机(例如物理机)上的硬件资源。所述物理机的硬件资源可以包括一个或多个处理器、驻留在所述处理器上的资源(例如控制寄存器、高速缓冲存储器及其他)、存储器(以及驻留在存储器中的结构、例如描述符表)以及驻留在所述物理机中的其他资源(例如,输入输出设备)。所述事件可以包括中断、异常、平台事件(例如初始化(INIT)或者系统管理中断(SMI)等等)。
所述VMM可以根据需要将客户软件状态交换(swap)进出物理机的设备、存储器以及寄存器。所述VMM可以通过允许直接访问底层的物理机来增强VM的性能。当在客户软件中正在以非特权模式执行操作时,所述方式限制软件访问所述物理机,或者当操作不利用物理机中VMM希望保持控制的硬件资源时,这是尤其适用的。
每当客户操作可能影响VMM或者任何未执行VM的正确执行时,所述VMM恢复控制。通常,所述VMM审查这种操作,在允许所述操作进行到底层物理机或者模拟对客户利益的操作之前,确定是否存在问题。例如,当客户访问I/O设备时、当其试图(例如通过改变控制寄存器值)改变机器配置时、当其试图访问存储器的某区域等等时,所述VMM可能需要恢复控制。
支持VM操作的现有系统使用固定格式结构来控制VM的执行环境,此处将所述固定格式结构称为虚拟机控制结构(VMCS)。所述VMCS被存储在存储器区域中,并且例如包含客户状态、VMM的状态以及控制信息,所述控制信息表明在客户执行期间,在什么条件下所述VMM希望恢复控制。物理机中的处理器读取来自于所述VMCS的信息以便确定VM和VMM的执行环境,并且约束客户软件在所述VMM控制之下的行为。
常规的体系结构把VMCS定位在物理机的存储器中,并且允许VMM使用普通存储器读写指令来访问它。为此,必须在处理器指令集架构中从体系结构上定义所述VMCS的格式(并且以类似于其他系统结构和指令编码的方式在规范和手册中记载)。所述VMM被直接编码为这些规范。这种结构限制了支持VMM的处理器在执行方面的灵活性。由于VMCS的形式是从体系结构上来定义的,所以出于性能、扩展性、兼容性、安全性等等的原因,特定处理器实现方式的微体系结构不可以在VMCS数据的格式、内容、组织或者存储需求方面做出改变,此外不需要对已安装的VMM执行基础做出相应修改。
因此,需要更加灵活的虚拟机体系结构的实现方式,该实现方式不必严格耦合至物理机的底层实现方式。


图1是依照本发明一个实施例的VM体系结构的图表。
图2是依照本发明一个实施例的控制VM的方法流程图。
图3是依照本发明一个实施例的VMCS访问指令的图表。
图4是依照本发明一个实施例的读取来自于VMCS的数据的方法流程图。
图5是依照本发明一个实施例的写数据至VMCS的方法流程图。
具体实施例方式
描述新颖的VM控制体系结构。在随后对实施例的详细描述中,参照了附图,该附图作为本发明的一部分,并且其中通过举例说明而非限制的方式示出了可以实施本发明的特定实施例。这些实施例是以足够多的细节来描述的,以便使本领域普通技术人员可以理解和实现它们,并且应该理解的是,也可以利用其他实施例,并且可以在不脱离本公开内容的精神和范围的情况下,做出结构上、逻辑上和电气上的改变。因此,不应该将以下的详细说明认为是限制意义上的,并且此处所公开的本发明的实施例的范围只由所附权利要求定义。
VMM给予其他软件(“客户软件”、“多个客户”或者仅仅“一个客户”)一个或多个VM的抽象。所述VMM可以向各种客户提供相同或者不同的抽象。每个客户期待出现于VM中的所有硬件平台设施都可供其使用。例如,依照处理器的体系结构和出现于所述VM中的平台,客户期待有权访问所有寄存器、高速缓冲存储器、结构、I/O设备、存储器等等。此外,每个客户期待处理各种事件,诸如处理异常、中断和平台事件(例如初始化(INIT)或者系统管理中断(SMI))。
一些资源和事件被“给予特权”,因为它们必须由VMM管理,以便确保VM的正确操作并且保护VMM以及其他VM。对于被给予特权的资源和事件来说,所述VMM简化(facilitate)客户软件所要求的功能,同时经由这些资源和事件保持最终控制。简化客户软件功能的动作就所述VMM而言可以包括各式各样的活动。所述VMM的活动及其特征不限制本发明各种实施例的范围。
当客户软件访问被给予特权的资源或者被给予特权的事件发生时,可以把控制传递给VMM。把控制从客户软件传递到所述VMM称为VM退出。在简化资源访问或者适当地处理事件之后,所述VMM可以把控制返回至客户软件。把控制从VMM传递到客户软件称为VM进入。
所述虚拟机控制结构(VMCS)是从体系结构上定义的结构,该结构例如包含客户软件的状态、VMM的状态、表明在哪些条件下VMM希望防止客户执行的控制信息以及涉及最新VM退出的信息。在当前系统中,正确地匹配从体系结构上定义的结构的VMCS的表示位于存储器中。物理机中的所述处理器读取来自VMCS的信息以便确定VM的执行环境并且约束其行为。
在客户执行期间,所述处理器查阅VMCS中的控制信息来确定哪些客户动作(例如某指令的执行、某异常的出现等)和事件(例如外部中断)将引起VM退出。当发生VM退出时,由客户软件使用的处理机状态组件(component)被保存到VMCS,并且把VMM所要求的处理机状态组件从所述VMCS中载入。当发生VM退出时,使用本领域普通技术人员所公知的任意机制把控制传递至VMM 120。
当发生VM进入时,在VM退出时保存的处理机状态(并且其也许已由VMM修改)被恢复,并且把控制返回到客户软件。为了便于第一VM进入至客户,所述VMM把适当的客户状态写入VMCS。当处理VM退出时,所述VMM可以改变VMCS中的客户状态。在一些实施例中,由单个物理机上的单个VMM管理支持多个VM的多个VMCS结构。所述VMCS不需要包括如上所述的全部信息,并且可以包括有助于VM的控制的附加信息。在一些实施例中,VMCS可以包含很大数量的附加信息。
图1举例说明了依照本发明一个实施例的VM体系结构100的图表。所述VM体系结构100包括基础硬件平台110(例如物理机)。所述基础硬件平台110包括均有权访问易失性和/或非易失性存储器116的一个或多个处理器112。另外,在基础硬件平台中还存在其他元件,在图1中没有示出这些元件(例如,输入输出设备)。所述VM体系结构100还包括VMM 120,其管理一个或多个VM(例如,130、140和150),其中每个VM(例如130、140和150)支持一个或多个OS(例如150、160和170)和应用程序(例如152、162和172)。所述处理器112可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。所述处理器112可以包括微代码、可编程逻辑或者硬编码逻辑,用于实现本发明的方法实施例的执行。
存储器116可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存、上述设备的任意组合,或者是可由处理器112读取的任何其他类型的机器介质。存储器116可以存储用于完成本发明的方法实施例的执行的指令或者数据。所述存储器116包括VMCS区域118,由处理器112用于维护所述VMCS的状态,以下将更详细地描述。
所述处理器112可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。每个处理器112可以包括VMCS高速缓冲存储器114,以下将更详细地描述该VMCS高速缓冲存储器114。所述处理器112可以包括微代码、可编程逻辑或者硬编码逻辑,用于完成依照本发明的方法实施例的执行。
如果存在,那么VMCS高速缓冲存储器114可用来临时或者在其整个使用期限内存储某些或者所有VMCS状态。所述VMCS高速缓冲存储器114可以包括寄存器、高速缓冲存储器或者任意其他存储器。在图1中,所述VMCS高速缓冲存储器114是作为处理器112的一部分示出的,但是它可以驻留在裸露平台硬件110的任意组件内的处理器112的外部。在随后的论述中,也把所述VMCS高速缓冲存储器114称为“处理器上的存储空间”或者“处理器上的资源”,但是应该理解的是,此存储器可以驻留在不同于处理器112的平台组件上。所述VMCS高速缓冲存储器114不是实现本发明方法所严格必需的。
通常,VMM往往使用普通读写指令在存储器中访问VMCS。然而在图1的VM体系结构100中,所述VMM 120通过一组处理器提供的VMCS访问指令119间接地访问VMCS区域118。所述VMCS访问指令119利用VMCS区域118以及任意可利用的VMCS高速缓冲存储器114。在一个实施例中,VMCS访问指令119包括正被访问的VMCS组件的标识符的操作数。所述标识符此处被称为“组件标识符”。所述VMM 120不需要知道把任意特定的VMCS组件是存储在VMCS区域118中还是存储在VMCS高速缓冲存储器114中。所述VM体系结构100还规定如果把普通读写指令用于访问VMCS区域118,那么可能发生不可预测的结果。VMCS访问指令119的使用给予处理器112自由使用可利用的处理器上存储器以及基于存储器(例如VMCS区域118)的存储空间,并且也允许各种性能优化。
在一些实施例中,所述VMCS访问指令119是通过处理器微体系结构在VMCS区域118中的读写存储器来实现的。在其他实施例中,所述VMCS访问指令119可以读和/或写处理器上的资源。所述VMM 120不必知道底层的物理机微体系结构如何支持所述VMCS。以这种方式,所述底层处理器实现方式可以被改变,以便适应性能、安全性、可靠性或者其他需要考虑的事项,而不会使所述VMM 120与底层处理器实现方式不兼容,并且可以为每个处理器实现方式开发自定义的VMCS实现方式。
以下例子举例说明了不采用VMCS访问指令119的VM体系结构的缺点。如果处理器实现方式可以在处理器上的存储空间中临时高速缓存VMCS数据,那么当发生特定事件时,只能把数据写入存储器内的VMCS区域118中。在高速缓存所述VMCS数据期间,对所述VMCS区域118的普通读取将返回失效值(不正确的值)。对VMCS区域118的普通写入不会更新处理器上的存储空间中的数据,除非所述处理器实现方式采取特殊的保护措施,以便把写入内容正确映射至存储空间。在没有使用VMCS访问指令119的情况下,所述处理器实现方式必须保持VMCS区域与存储在处理器上的资源中的任意临时或者高速缓存的状态一致;这样会阻碍一定的性能优化、VM体系结构的扩展等,如下面进一步讨论的那样。与普通存储器操作相比,如果适当的话,VMCS读指令返回存储在处理器上的值,并且VMCS写入指令正确地更新VMCS状态,而无论其位于什么地方。下面将详细说明这些指令。
为了简化所述VMCS访问指令119,VMCS的每个元件由从体系结构上定义的常数来标识,该常数识别VMCS的组件;此处将这些恒定值称为“组件标识符”。在一个实施例中,所述组件标识符是16位值,但是在其他实施例中,该值可大可小。
在随后的论述中,使用VMCS中的多个字段来描述本发明的各种实施例。例如,GUEST_EIP是包含客户软件的指令指针的字段;VM_CONTROLS是包含控制VM执行环境的位的字段等。对各种字段的语法和语义的理解不是理解此处所描述的本发明所必需的。另外,所述字段被给予特定的从体系结构上定义的组件标识符。所使用的特定字段以及在这些例子中的组件标识符值不是以任何方式来限制本发明的应用。
如下是使用VMCS访问指令119的优点的示例说明。认为处理器实现方式可以根据处理器实现方式的不同来改变存储在VMCS区域118中的数据的布局。例如,第一处理器实现方式可以存储起始于VMCS区域的第28个字节处的VMCS区域的GURST_EIP字段。第二处理器实现方式可以存储在VMCS区域中的第16个字节处的相同的VMCS字段。尽管VMCS区域118的布局已经改变,但是为初始实现方式写入并且使用所述VMCS访问指令119的VMM 120仍然对处理器112的后者实现方式起作用。因为在两个处理器实现方式中所述VMCS访问指令的实现方式包括所使用的VMCS区域118的布局并且适当地访问必要的数据,所以实现了兼容性。
在一些实施例中,为了简化所述VMCS访问指令119,可以需要所述VMM 120留出存储器区域(例如VMCS区域118)来收纳所有或者部分存储空间,该存储空间是处理器112为VMCS所要求的。在本发明的这些实施例中,处理器提供的指令将允许VMM 120把VMCS区域118的指针或者地址提供给处理器112。在一个实施例中,所述地址是物理地址。其他实施例可以使用虚拟或者线性地址。此后,把使用此指令提供给处理器112的所述地址称为VMCS指针。此指令通知处理器112 VMCS区域224的位置。此新的指令使VMCS有效,所述VMCS可以通过处理器112全部或部分存储在由VMCS指针指出VMCS区域118中。
另一实施例可以提供这样的机制,其允许VMM 120发现必须保留给VMCS区域118的存储器116的数量。例如,在英特尔奔腾IV的处理器指令基架构(ISA)中(此处称为IA-32ISA),能够提供包括所需要的VMCS区域大小的模式特定寄存器(MSR)。另一实施例提供了返回所需要的VMCS区域大小的指令。可利用的任意其他机制可用来把此信息传送至VMM。以这种方式,所需要的存储器区域118的大小可以根据处理器实现方式的不同而改变,而不会强迫重新设计或者再编译所述VMM 120。
例如,假如第一处理器112需要64字节用于存储器116中的VMCS区域118。把此要求报告给VMM 120,如上所述。使用如上所述的机制来确定把多少存储器116分配给VMCS区域118,写入VMM 120以便在此处理器实现方式上运行。创建第二处理器实现方式,其现在需要128字节用于存储器116中的VMCS存储空间。为第一处理器实现方式写入的VMM120将在第二实现方式上正确地操作,这是因为它将分配正确数量的存储空间给VMCS区域118。
当所述VMCS指针有效时,所述处理器112可以把所有或者部分VMCS存储在VMCS区域118中,或者可替换地,存储在驻留在处理器112上的资源或者任意其他可利用的位置中(即,存储在VMCS高速缓冲存储器114中)。另外,所述处理器112可以把非体系结构的状态信息存储在VMCS区域118中或者存储在处理器上的资源中。例如,所述处理器112可以存储临时变量、与VM(例如130、140或者150)相关联的微体系结构状态、所述VM(例如130、140或者150)的状态指示符等等。当所述VMCS指针是有效的时,软件不使用普通的存储器读和写来访问VMCS区域118。此限制确保与所述VMCS相关联的VMM 120和VM(例如130、140或者150)的操作的正确性。
另一处理器提供的指令可以把在处理器上的资源中高速缓存的任意VMCS数据写入VMCS区域118,使处理器上的存储空间中的适当数据无效,并且此外使所述VMCS指针失效。一个实施例可以例如通过把状态指示符写入VMCS区域来把所述VMCS标记为无效,所述状态指示符是从体系结构上或者非体系结构上定义的。另一实施例可以仅仅转储清除处理器上的存储空间并且使VMCS的处理器上的状态失效(无效)。在VMM 120试图移动VMCS区域118的内容之前执行此指令。当VMM 120试图移动VMCS区域118时,它可以利用单个数据块移动来执行,这是因为所述VMCS格式被维护并且只有该处理器实现方式知道。另外,因为所述VMM知道(具有基于这里描述的机制分配的存储器的)VMCS区域的大小,所以这种块移动是可能的。所述VMCS的个别元件不必由VMM 120识别出。
在一些实施例中,专用于特定实施例的机制可以允许VMM 120识别建立特定的VMCS的处理器实现方式。所述VMM 120可以使用此处理器识别结果来确定所述VMCS是否与另一处理器实现方式兼容。在一个实施例中,此标识符位于VMCS区域118的最初4个字节中,并且例如依照MSR或者通过任意其他方法被报告给VMM 120。在第一次使用VMCS之前,需要所述VMM 120把此标识符写到VMCS中的适当位置处,并且因此可以在体系结构上定义VMCS区域118的部分的格式。在一些实施例中,所有实现方式定义VMCS区域118的相同体系结构上定义的部分是合乎需要的。
如果先前的实施例留下新定义的区域没有定义,其他实施例可以定义VMCS区域118的新的在体系结构上定义的部分,并且最新定义的部分不妨碍没有明确使用它们的VMM 120的操作。以这种方式,对这些实施例的任意VMM 120写入将在更新的实现方式上操作。
在一些实施例中,所述处理器提供的指令119包括多个不同的指令●VMCS载入指针指令具有作为操作数的存储器地址。此地址是处理器112可以存储VMCS的位置(例如,VMCS区域118的开始)。通过指令使与此地址相关联的所述VMCS有效。此指令还允许激活与VMCS相关联并且由其控制的VM(例如130、140或者150)并且允许使用如下所述的各种其他指令。在一个实施例中,所述地址是物理地址。其他实施例可以使用虚拟或者线性地址。
●VMCS存储指针指令把指向有效VMCS区域118的指针存储到(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中;这种存储单元的位置可以作为操作数提供给指令。
●VMCS读指令把所述VMCS的组件读取到(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中。所述指令可以包括多个参数,该参数包括表明从VMCS被读取的VMCS组件的组件标识符以及将要存储的从所述VMCS中读取的数据的位置(例如寄存器或者存储器单元)。
●VMCS写指令载入来自于(例如处理器112上的)寄存器或者(例如存储器116中的)存储器单元中的所述VMCS的组件。就像所述VMCS读指令那样,VMCS写指令可以包括针对VMCS组件标识符的操作数。另外,它可以包括描述要被写入所述VMCS的数据的位置(例如寄存器或者存储器单元)的操作数。
●VMCS清除指令确保与所述VMCS相关联的所有处理器上的存储空间的内容被存回VMCS区域118,使处理器上的资源中的数据无效并且此外使VMCS指针失效。此指令可以在没有操作数的情况下操作,转储清除并且使当前有效的VMCS指针失效,或者在可替代的实施例中,它可以把用于转储清除和去活所需的VMCS指针作为操作数。在一个实施例中,VMCS清除指令可以通过把状态指示符写入VMCS区域来把所述VMCS标记为无效,所述状态指示符是从体系结构上或者非体系结构上定义的。
●最后,VMCS输入指令通过依照VM体系结构100的语义和所述VMCS的内容载入处理机状态,来把控制转递至(即VM进入)由有效VMCS定义的VM(例如130、140或者150)中。可替换地,所述指令可以包括具有待输入的VMCS指针(或者所述指针的位置)的自变量。
由于可以提供各种不同的或者替代的指令119,所以如上所述的处理器提供的指令119只表示一个实施例。例如,在一些实施例中,所述VMCS清除指令可以在不使VMCS指针失效的情况下把来自于处理器上的存储空间的VMCS数据复制到所述VMCS区域118。操作数可以是显式的或者隐式的。可以提供其他的指令119(或者上面提出的指令119的变形)等等,所述指令作用于处理器112中所有有效的VMCS指针。
如本领域普通技术人员所理解的那样,对存储器中的VMCS而言,常规的VM体系结构具有静态的、体系结构上定义的形式。这限制了处理器实现方式扩充或者改变VMCS的大小、组织或者内容的能力,这是因为变成所述VMCS往往需要相应地变成所述VMM实现方式。另外,由于常规的VMM使用普通存储器读和写操作来访问常规的VMCS,所以所述处理器实现方式在把VMCS数据的存储空间分配给处理器上的资源方面具有较小的灵活性。例如,在VM退出至VMM期间,因为所述处理器难以检测到所述VMM是否对存储器中VMCS的对应区域做出修改,所以所述处理器不能在处理器上的资源中高速缓存某部分VMCS。这样不能确定处理器上的资源之间的一致,并且存储器内的VMCS图像使错误和一致性检验变复杂,其中所述一致性检验在跟随VM进入执行客户软件之前需要执行。
然而,依照本发明的各种实施例,VMM 120不直接使用普通存储器读和写操作来访问VMCS存储器图像,不使用存储器116中VMCS的预先定义的格式,并且确定在运行时所述VMCS在存储器116中所需存储空间的大小。
图2中举例说明了如上所述的VMCS存储空间存储需求的运行时绑定和处理器提供的指令119的使用。图2通过VMM中的各种活动举例说明了VMCS指针的状态。处理在块210开始。这时,没有有效的VMCS指针。在块210,所述VMM确定处理器用于支持所述VMCS所需的存储器区域的大小。如上所述,这样可以例如通过读取所指定的MSR来实现。
在块220,所述VMM分配所需要的存储器;所述VMCS指针仍是无效的。虽然最佳的是,此存储器区域在物理存储器内是连续的,但是对于本领域普通技术人员显而易见的是,依照此实施例这种要求不是必须的。所述VMM使用VMCS载入指针指令,通过把VMCS区域的地址提供给处理器来激活所述VMCS,如上所述(进入块230)。在此刻,把所述VMCS指针称作工作中VMCS指针。在所述VMCS指针有效之后,所述VMM可以使用适当的VMCS访问指令读和写VMCS的组件(图1中作为119示出并且在图2中作为232和234示出)。这些读取或者写操作之后,所述VMCS指针保持有效。
当所述VMM希望允许客户执行时,它使用VM进入指令来把客户加载到机器中(进入块240)。在VM进入之后,所述VMCS指针仍是有效的,但是现在起控制VMCS指针的作用,所述指针由处理器使用以便确定客户执行环境和行为。
当VM退出发生时,控制返回到所述VMM(从块240返回到块230)。所述VMCS指针保持有效,再次作为工作中VMCS指针;如适当,所述VMM可以读和写VMCS字段(箭头232和234),并且可以使用VM输入指令再次输入客户(返回到块240)。可替换地,所述VMM可以使用所述VM清除指令来使VMCS指针失效,在那时,所述VMCS指针成为无效的(返回到状态220)。
应注意的是,由于所述VMM可以及时在任意特定时刻执行各种操作(例如VM读取、VM写入、VM输入等),所以方法200不局限于任意特定的操作顺序。另外,在使用方法200的给定的处理器内的在任意特定时刻,单个VMCS指针或者各种VMCS指针可以是有效或者无效的。在一些实施例中,在任意给定处理器内在任意特定时间点,多个VMCS可以是有效的。以这种方式,在不执行VMCS清除指令的情况下,VMM可以在VM之间切换,由此改善VM的处理效率。
在一个实施例中,附加的处理器提供的指令可以向VMM提供查询和获得并发或并行VMCS的数量的能力,该VMCS在任意特定时间点都可以是有效的。其他实施例可以提供MSR,所述VMM可以读取该MSR以获得此信息。在可替代的实施例中,同时有效的VMCS指针的数量(由此例如可以被高速缓存在处理器上的资源中)未必是VMM软件可直接看到的,当VMM激活比处理器可以存储在处理器上的资源中的更多的VMCS指针时,所述处理器实现方式自动地处理溢出条件。在该情况下,所述处理器可以自动地把适当的VMCS数据转储清除至所关联的存储器中的VMCS区域。在一些实施例中,在如上依照图1论述的多个处理器提供的指令内,可以要求显式的VMCS指针自变量。
本发明的实施例消除了让软件管理与管理VMCS数据的处理器上和存储器中的存储空间相关联的细节的要求。由此,所述VMM在高层抽象处在其控制下管理每个VM。上述在图1和图2中所论述的那样,这种策略允许处理器提供的指令管理VMCS存储空间的细节,以致VM执行更加有效,并且可以在不改变现有VMM软件的情况下、通过添加或修改所述处理器提供的指令来被最佳地改变或者扩展。
图3是在本发明的一个实施例中描述VMCS读/写指令的使用的图表。示出了体系结构VMCS格式305,不过它不是由VMM明确使用的;相反,所述VMM利用对VMCS组件标识符、字段大小和字段语义的认识来编程,但是不依照存储器中VMCS存储空间的形式的结构限定来编程。当VMM希望访问体系结构VMCS 305中的字段时,它执行VMCS读取(或者如适当则执行VMCS写入;为了举例说明的目的,图3中只示出了VMCS读取)。VMCS读指令310的参数是组件标识符,该组件标识符是识别VMCS组件的体系结构上定义的常数。所述处理器使用所述组件标识符来如恰当的话使用映射函数320映射至处理器(例如VMCS高速缓冲存储器322)上的资源或者存储器(例如VMCS区域324)内的资源,以便访问代表所述VMM的VMCS数据。如果存储在VMCS区域或者VMCS高速缓冲存储器中的数据不是体系结构上定义的格式,那么使用重新格式化函数323把所述数据适当地重新格式化以便匹配。
图3中示出了两个实例VMCS访问指令。虽然这两个例子用于VMCS读指令,不过如下面就图5的论述中详细说明的那样,类似的活动集也发生在VMCS写指令上。
参考图3,第一实例VMCS读取指令310访问所述GUEST_EIP组件,其具有体系结构上定义的编码0×4032。所述处理器实现方式把这种组件的数据保持在VMCS区域324中,如映射函数320所确定的那样。所述处理器使用存储器读操作330从VMCS区域324中读取适当的组件数据。所述读操作330了解组件在VMCS区域324中的位置(此外,如映射函数320所确定的那样;在此例子中,它位于VMCS区域中的偏移12处)。然后,所述处理器把数据值返回至所述VMM(如箭头331所示)。
第二实例VMCS读指令350访问所述VM_CONTROLS组件,其具有体系结构上定义的编码0×1076。这种处理器实现方式把这种组件保持在所述VMCS高速缓冲存储器322中(如映射函数320所确定的那样)。所述处理器访问所述VMCS高速缓冲存储器322以便检索数据。在该情况下,把所述数据以不与VM_CONTROLS组件的结构限定匹配的形式存储在处理器上(例如,把数据作为重新排序的8字节对象存储在处理器上,而VM_CONTROLS字段的结构限定是4字节对象)。在把数据返回至VMM之前,所述处理器使用重新格式化函数323重新格式化所述VM_CONTROLS数据以便匹配所述字段的结构限定。把此重新格式化的值(即,匹配所请求的组件的结构限定的值)返回到所述VMM(显示为箭头326)。
使用这些VMCS访问指令,当从存储器高速缓存至处理器上的资源时,不需要管理每个都由独立的VMCS标识的一个或多个VM的VMM来管理所述存储空间,该存储空间是与VMCS相关联的。另外,所述VMM不需要管理改变处理器实现方式的细节,诸如存储器中或者处理器上的资源中的数据的格式化。由此,处理器开发人员可以改变或者修改VMCS访问指令,以便改善VM性能并且扩展VM能力,而不会对现有VMM或者VM的操作带来负面影响。然而,现有VMM和VM可以受益于这种变化,所述变化诸如是性能、可靠性、可缩放性或者其他改善,这些给VM体系结构带来了新的实现方式。
图4是依照本发明一个实施例的用于执行VMCS读指令的方法400的流程图。在410,从VMM接收VMCS读请求。在420,从所述VMCS读请求获取VMCS组件标识符。所述组件标识符是体系结构上定义的常数,该常数识别VMCS的所要求的组件。
在430,处理器检查所述组件标识符,以便确定与所述组件标识符相关联的VMCS组件是否在存储器中。如果所述VMCS组件是存储在存储器中,那么在440计算所述存储器位置的地址,并且在450获取与VMCS组件相关联的VMCS数据。然而,如果所述VMCS组件没有存储在存储器中,那么在460,所述处理器从处理器上的存储空间中获取与所述VMCS组件相关联VMCS数据。以这种方式,所述处理器使用所述组件标识符来把读请求映射至VMCS组件存储空间,而不管其是驻留在存储器中还是处理器上的存储空间中。
在470,通过所述处理器做出检验以便确定在把VMCS数据返回至所述VMM以前是否需要重新格式化VMCS数据。如果所述VMCS数据以不同于VMCS组件的体系结构上定义的数据格式的格式来(要么在VMCS区域中或者在处理器上的资源中)存储(即,所述VMCS组件是以不同于体系结构上定义的格式的实现方式特定的数据格式存储的),那么在480,访问重新格式化函数以便把实现方式特定的VMCS数据翻译为体系结构上定义的数据格式。如果所述VMCS数据以VMCS组件的体系结构上定义的数据格式来(或者在VMCS区域中或者在处理器上的资源中)存储,那么不需要发生对VMCS数据的重新格式化函数或者翻译。最后在490,把(现在为体系结构上定义的数据格式的)所述VMCS数据返回到所述VMM。
图5是依照本发明一个实施例的用于执行VMCS写指令的方法500的流程图。在505,处理器从VMM接收VMCS写入请求。所述处理器获取作为写入请求的操作数之一的组件标识符,如在510中所述。此外,在515,所述处理器获取希望被写入所述VMCS的写数据作为另一操作数。此写数据具有被写入的VMCS组件的体系结构上定义的数据格式。
在520,做出检验以便确定所述VMCS组件是否通过所述处理器以体系结构上定义的数据格式来(在VMCS区域中或者在处理器上资源中)存储。据此,如果所述VMCS组件没有以体系结构上定义的数据格式来存储,那么在525,执行数据的适当的重新格式化,以便使所述数据具有适当的实现方式特定的数据格式,该数据格式与被访问的VMCS组件相关联。存储数据的格式可以和体系结构上定义的格式一致,或者它可以在大小或组织方面不同。
接下来在530,执行另一检验以便确定处理器存储所述VMCS组件的位置。使用所述组件标识符,所述处理器确定所述VMCS组件的存储位置。如果所述存储位置位于存储器中,那么在535,计算所述存储器地址,并且在540,把写数据写入所述存储位置。然而,如果所述存储位置不在存储器中,那么在545,确定处理器上的存储空间中的适当位置,并且把写数据写入所述处理器上的存储空间。写入所述存储空间的数据具有实现方式特定的数据格式,该数据格式可以与体系结构上定义的格式相同或者不同,这取决于所查询的所述VMCS组件、所述处理器实现方式并且在一些实施例中,这取决于所查询的组件当前是存储在处理器上的资源中还是存储在所述VMCS区域中。
用于确定特定VMCS组件的存储位置并且用于确定所述VMCS组件是否是由处理器以体系结构上定义的数据格式来存储的过程400和500中使用的机制是实现方式特定的。在一个实施例中,所述处理器使用由所述组件标识符索引的查找表。另外,应注意的是,如果多个VMCS指针可以同时有效,那么这些确定可以取决于VMCS正被访问。
当阅读和领会此公开内容时,本领域普通技术人员将理解这样的方式,其中本发明可以在基于计算机的系统中实现,以便执行此处公开的方法。本发明可以使用(诸如在通用计算机系统上或者专用机上运行的)软件、硬件(例如电路、专用逻辑、可编程逻辑、微代码等)或者硬件和软件的组合来实现。
应该理解的是,上述描述是例证性的,而不是限制性的。当回故上述描述时,许多其他的实施例对于本领域中普通技术人员是显而易见。因此,本发明的实施例的范围应该参照所附权利要求以及与被授予这种权利要求等效的全部范围来限定。
需要强调的是,遵照37 C.F.R.§1.72(b)的规定提供了摘要,该规定要求摘要允许读者快速确定技术公开的特性和要旨。提交所述摘要是基于这样的认识,即不会使用它来解释或者限制权利要求的范围或者意义。
在上述实施方式的描述中,为了简化公开内容,在单个实施例中集合了各种特征。所公开的这种方法不应该被解释为反映这样的意图,即所要求保护的本发明的实施例要求比在每个权利要求中清楚讲述的特征更多的特征。相反,如随后权利要求书反映的那样,发明的主题在于少于单个公开的实施例的所有特征。由此如下的权利要求被并入所述实施方式的描述中,每个权利要求坚持其自身作为独立的示例性实施例。
权利要求
1.一种用于激活虚拟机控制结构(VMCS)的方法由虚拟机监视器(VMM)确定VMCS所需的存储空间大小;并且向处理器提供指向存储器区域的指针,所述存储器区域至少与VMCS所需的存储空间大小一样大。
2.如权利要求1所述的方法,其中在确定VMCS所需的存储空间大小时,所需的存储空间大小是通过对包含VMCS所需存储空间大小的处理机寄存器执行至少一个读指令并且执行提供VMCS所需存储空间大小的指令来确定的。
3.如权利要求1所述的方法,其中在向处理器提供指针时,通过执行VMCS指针载入指令来提供该指针。
4.如权利要求3所述的方法,其中在执行VMCS指针载入指令时,所述VMCS指针载入指令包括至少与VMCS所需存储空间大小一样大的存储器区域的指针地址,并且将该指针地址作为操作数,所述操作数是VMCS指针载入指令的显式操作数和VMCS指针载入指令的隐式操作数中的至少一个。
5.如权利要求1所述的方法,还包括在向处理器提供指向存储器区域的指针之前,分配所述存储器区域。
6.一种用于访问虚拟机控制结构(VMCS)的方法,包括如下步骤由虚拟机监视器(VMM)执行VMCS访问指令;并且由处理器通过使用与该VMCS访问指令相关联的VMCS组件标识符来访问VMCS组件。
7.如权利要求6所述的方法,其中在访问所述VMCS组件时,所述VMCS组件标识符是VMCS访问指令的显式操作数和VMCS访问指令的隐式操作数中的至少一个。
8.如权利要求6所述的方法,其中在执行所述VMCS访问指令时,所述VMCS访问指令是从VMCS组件读的读指令和向VMCS组件写的写指令中的至少一个。
9.如权利要求8所述的方法,其中在执行所述VMCS访问指令时,所述VMCS访问指令是向VMCS组件写的写指令,并且所述VMCS访问指令包括作为操作数的写数据值。
10.如权利要求9所述的方法,其中在执行所述VMCS访问指令时,所述写数据值具有体系结构上定义的数据格式。
11.如权利要求9所述的方法,还包括把所述写数据值写入所述VMCS组件。
12.如权利要求6所述的方法,还包括确定所述VMCS组件标识符与驻留在存储器中的所述VMCS组件相关联;计算驻留在存储器中的所述VMCS组件的存储器位置;以及访问驻留在存储器中的所述VMCS组件。
13.如权利要求6所述的方法,还包括确定所述VMCS组件标识符与驻留在处理器上存储空间中的所述VMCS组件相关联;并且访问驻留在处理器上存储空间中的所述VMCS组件。
14.如权利要求6所述的方法,其中在执行所述VMCS访问指令时,所述VMCS访问指令是从所述VMCS组件读的读指令,并且其中在访问所述VMCS组件中还包括读取与所述VMCS组件相关联的数据,并且把与所述VMCS组件相关联的数据返回到VMM。
15.如权利要求14所述的方法,其中在把与所述VMCS组件相关联的数据返回到所述VMM时,返回所述数据包括重新格式化与所述VMCS组件相关联的数据,以便与所述VMCS组件的体系结构上定义的数据格式相匹配,产生返回数据值并且把所述返回数据值返回至所述VMM。
16.如权利要求14所述的方法,其中在把与所述VMCS组件相关联的数据返回到所述VMM时,所述数据具有这样的格式,所述格式是与所述VMCS组件的体系结构上定义的数据格式相同的格式和与所述VMCS组件的体系结构上定义的数据格式不同的格式中的至少一个。
17.如权利要求16所述的方法,还包括重新格式化所述写数据以便与所述VMCS组件的实现方式特定的数据格式匹配,由此产生重新格式化的写数据值;并且把所述重新格式化的写数据值写入到所述VMCS组件。
18.如权利要求17所述的方法,其中在重新格式化写数据的步骤中,所述VMCS组件的实现方式特定的数据格式是与所述VMCS组件的体系结构上定义的格式相同的格式和与所述VMCS组件的体系结构上定义的格式不同的格式中的至少一个。
19.一种虚拟机(VM)控制系统,包括虚拟机监视器(VMM),通过访问至少一个虚拟机控制结构(VMCS)来控制至少一个虚拟机(VM),其中至少一个VM中的每个均由至少一个VMCS中的一个来控制;可以访问存储空间的处理器,其中所述存储空间包括与所述VMCS相关联的存储位置;并且其中所述VMM使用VMCS访问指令来访问每个VMCS。
20.如权利要求19所述的系统,其中所述存储空间由存储器和高速缓冲存储器中的至少一个组成。
21.如权利要求19所述的系统,其中每个访问指令包括VMCS组件标识符,所述VMCS组件标识符由所述处理器用来确定正被访问的VMCS之一内的VMCS组件,并且用来确定与所述VMCS组件相关联的存储位置。
22.一种物品,包括机器可访问的介质,所述介质具有相关联的指令,其中当访问所述指令时,导致包括至少一个组件的机器执行如下步骤识别与访问指令相关联的存储位置,所述访问指令是从虚拟机监视器(VMM)中接收到的;确定从所述VMM中接收到的访问指令的类型;确定与满足所述访问指令的数据相关联的数据格式;并且如果所述数据不具有体系结构上定义的数据格式,那么在处理所述访问指令之前,重新格式化所述数据使其具有体系结构上定义的数据格式。
23.如权利要求22所述的物品,其中在识别时,所述访问指令包括组件标识符。
24.如权利要求22所述的物品,其中在识别时,所述组件标识符用于映射所述VMM访问指令至所述存储位置,该存储位置是位于处理器上或者存储器中的位置中的至少一个。
25.如权利要求22所述的物品,其中在确定访问指令类型时,把所述类型与读指令和写指令中的至少一个相关联。
全文摘要
提供用于控制虚拟机(VM)的执行的方法和系统。VM监视器(VMM)通过访问传递至处理器的指令间接地访问VM控制结构(VMCS)。在一个实施例中,所述访问指令包括VMCS组件标识符,所述VMCS组件标识符由所述处理器使用以确定VMCS组件的适当存储位置。所述处理器在处理器存储空间内或者在存储器内识别VMCS组件的适当的存储位置。
文档编号G06F9/455GK1833225SQ200380106627
公开日2006年9月13日 申请日期2003年11月12日 优先权日2002年12月17日
发明者G·奈格尔, E·科塔-罗布尔斯, S·耶亚辛, A·卡吉, M·科祖赫, R·乌利希, E·博利恩, S·罗杰斯, L·史密斯三世, S·贝内特, A·格卢 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1