在虚拟机操作中用于管理机器状态的方法和系统的制作方法

文档序号:6480961阅读:98来源:国知局
专利名称:在虚拟机操作中用于管理机器状态的方法和系统的制作方法
技术领域
本发明的实施例总体上涉及计算机系统,具体来讲,涉及计算机 系统内虛拟机操作的搡作管理和/或控制。
背景技术
虚拟机系统允许划分物理机,因此机器的底层硬件表现为一个或 多个独立操作的虚拟机(VM)。虚拟机监视器(VMM)在计算机上运行, 并且为其他软件提供一个或多个VM的抽象。每个VM可以起自包含 平台的作用,运行其自身的操作系统(OS)和/或应用软件。把在VM内 执行的软件统称为客户软件。
所述客户软件期望这样操作,就好像它是在专用计算机上而不是 在VM上运行。也就是说,所述客户软件期待控制各种事件并且有权 访问计算机(例如物理机)上的硬件资源。所述物理机的硬件资源可以 包括一个或多个处理器、驻留在所述处理器上的资源(例如控制寄存 器、高速緩冲存储器及其他)、存储器(以及驻留在存储器中的结构, 例如描述符表)以及驻留在所述物理机中的其他资源(例如,输入输出 设备)。所述事件可以包括中断、异常、平台事件(例如初始化(INIT) 或者系统管理中断(SMI)等等)。
在需要时,所述VMM可以将客户软件状态交换进出(swap in and out)物理机的处理器、设备、存储器以及寄存器。所述处理器可以在 VM和VMM之间的转换期间交换进出某些状态。在某些情况下,所在客户软件中正在以非特权方式执行操作时,所述方式限制对所述物
理机的访问,或者当不会使用物理机中VMM希望保持控制的硬件资 源来操作时,这是尤其适用的。可以认为所述VMM是所述VM的主机。
每当客户的操作可能影响VMM或者任何未执行VM的正确执行 时,所述VMM恢复控制。通常,所述VMM审查这种操作,在允许 所述操作进行到底层物理机或者代表客户模拟操作之前,确定是否存 在问题。例如,当客户访问I/0设备时、当其试图改变机器配置(例如 通过改变控制寄存器值)时、当其试图访问存储器的某些区域等等时, 所述VMM可能需要恢复控制。
支持VM操作的现有物理机使用这样一种结构来控制VM的执行 环境,此处将所述结构称为虛拟机控制结构(VMCS)。把所述VMCS 存储在存储器的区域中,并且例如包含客户状态、VMM状态以及控 制信息,所述控制信息表明在客户执行期间,在什么条件下所述VMM 希望恢复控制。物理机中的一个或多个处理器读取来自于VMCS的信 息,以便确定VM和VMM的执行环境,并且适当地约束客户软件的 行为。
当发生转入(即,进入)VM或者转出(即,退出)VM时,所述物理 机的处理器将加载并且存储机器状态。常规的体系结构执行加载并且 存储指令编码和机器行为的预定状态集,如以类似于其他系统结构的 方式在处理器规范中定义的那样。所述VMM被直接编码为这些规范。 这种结构限制了所述VMM的实现方式的灵活性。
因此,需要用于进入和退出VM的技术的改进的实现方式。这些 实现方式和技术应该允许更好地管理和控制VM操作。

发明内容
按照本发明的一个方面,提供了 一种用于管理虚拟机转换的处理 器,包括用于根据与机器状态的元素相关的状态动作指示符来确定
5将要采取的、与虛拟机转换有关的动作的逻辑,所述将要采取的动作 涉及机器状态的元素


图1是依照本发明 一个实施例的VM体系结构的图表。
图2A是依照本发明一个实施例的管理VM转换操作的流程图。
图2B是依照本发明一个实施例在VM转换期间、用于加载机器 状态的方法的流程图。
图2C是依照本发明一个实施例在VM转换期间、用于存储机器 状态的方法的流程图。
图3是依照本发明一个实施例在VM转换期间、用于执行加载操 作的方法的流程图。
图4是依照本发明一个实施例在VM转换期间、用于执行存储操 作的方法的流程图。
图5是依照本发明一个实施例在VM转换期间、用于确定状态动 作指示符的值的方法流程图。
具体实施例方式
现在描述在VM才喿作期间用于管理转换的新颖的方法、设备和系 统。在随后对实施例的详细描述中参照了附图,其中它作为本发明一 部分并且通过举例说明而非限制的方式示出,可以根据这些描述实施 本发明的特殊实施例。这些实施例被充分详细地描述,以便使本领域 普通技术人员可以理解和实现它们,然而应该理解的是,也可以利用 其他实施例,并且可以在不脱离本公开内容的精神和范围的情况下, 可以做出结构上、逻辑上和电气上的改变。因此,不应该将以下的详 细说明认为是限制性的目的,此处所公开的本发明的实施例的范围由 所附权利要求书定义。
图1举例说明了虚拟机环境100的一个实施例,其中可以搡作本发明。在此实施例中,物理机110包括计算平台,它例如能够执行标
准操作系统(OS)或者虛拟机监视器(VMM),例如VMM 125。虽然通 常以软件来实现,不过所述VMM 125可以模拟并且向高级软件输出 机器接口。这种高层软件可以包括标准的或者实时OS,可以是具有 有限OS功能的高度可移去的操作环境,可不必包括传统的OS工具 等等。可替换地,所述VMM 125例如可以在另一 VMM内或者在其 上运行。所述VMM例如可以例如以硬件、软件以及固件来实现,或 者通过各种技术的组合来实现。VMM以及它们的典型特征和功能是 本领域普通技术人员所熟知的。
所述物理机110可以是个人计算机(PC)、大型机、手持设备、便 携式计算机、机顶盒、智能器具或者任意其他计算系统或设备。所述 物理机110包括处理器112以及存储器120。另外,物理机110可以 包括各种其他输入/输出设备,未示出。
所述处理器112可以是能够执行软件的任何类型的处理器,诸如 微处理器、数字信号处理器、微控制器等等。所述处理器112可以包 括微代码、宏代码、软件、可编程逻辑或者硬编码逻辑,用于完成本 发明方法的实施例的执行。虽然图1中只示出了一个这种处理器112, 但是应该理解的是,在所述系统中可以存在一个或多个处理器。
存储器120可以是硬盘、软盘、随机存取存储器(RAM)、只读存 储器(ROM)、闪存、可由处理器112读取的任何其他类型的机器介质 或者是上述设备的任意组合。存储器120可以存储用于完成本发明方 法实施例的执行的指令和/或数据。
所述VMM 125向其他软件(即,"客户软件")提供一个或多个虚拟 机(VM)的抽象,其可以向各个客户提供相同或不同的抽象。图l示出 了三个VM,即132、 142和152。在每个VM上运行的客户软件可以 包括客户OS,诸如客户OS 134、 144或者154,并且可以包括各种客 户软件应用程序136、 146和156。客户OS 134、 144和154中的每一 个期待访问所述VM132、142和152中的物理资源(例如,处理器ll2、
7寄存器、存储器120和I/O设备),其上可以运行客户OS 134、 144或 者154并且用于处理各种事件,所述事件包括在VM132、 142和152 的操作期间、由系统设备生成的中断。
所述处理器112依照存储在VMCS 122中的数据来控制VM 132、 142和152的操作。可以把VMCS 122存储在存储器120中(如图1所 示),存储在处理器112内,存储在任意其他位置或者存储在存储位置 的任意组合中。所述VMCS 122给VMM 125和客户软件的机器状态 提供存储空间。另夕卜,它可以包括指示符来限制或者控制VM的操作, 并且控制VM和所述VMM 125之间的转换。所述VMCS 122是可由 所述VMM 125访问的。所述VMCS不必是存储器或者存储空间的连 续区域。因此,在一些实施例中,所述VMCS可以从多个存储器或者 存储位置逻辑组装并且访问。
把从VMM 125到客户软件的转换称作"VM进入"。把从客户软 件到所述VMM 120的转换称作"VM退出"。把VM进入和VM退出 通称为"VM转换"。在一个实施例中,VMM 125可以通过执行特殊的 指令来启动VM进入以Y更令VM进入。在一个实施例中,可以通过所 述VM来显式地请求VM退出(例如,通过执行专用指令来生成所述 VM退出)。在一些实施例中,所述VM不直接请求转换,而是某些事 件(例如,保护故障、中断等等)或者VM执行的指令根据所述VMCS 122中的控制或者虚拟机系统的体系结构(例如,如果在所述VMCS 中设置了特殊的控制位,那么INVLPG指令的执行令VM退出;所有 出现的非屏蔽中断都令VM退出)来要求VM退出。
在VM转换期间,所述处理器112可以作用于机器状态的各种元 素。正如本领域普通技术人员将理解的那样,可以把机器状态与例如 处理器、1/0设备、芯片组等等中的各种体系结构组件相关联。据此, 本发明各种实施例的描述使用扩充了 一些组件的常规意义内的短语 "机器状态",该组件按照传统不应将其视作体系结构。由此,机器状 态可以包括通用以及浮点寄存器(例如,在称为IA-32ISA的英特尔奔腾IV的指令集系统结构(ISA)中,EAX, EDX, ST3等等)、控制寄存 器(例如在所述IA-32 ISA中,CR0、 CR3等等)、指令指针(例如,在 所述IA - 32 ISA中,EIP)、处理标志(例如,在IA-32 ISA中,EFLAGS 等等)、模型特定的寄存器(MSR: Model Specific Register)(例如, 在IA - 32 ISA中,DEBUGCTL、 MTRR、 TSC等等)、段寄存器(例如, 在所述IA-32ISA中,CS、 SS、 TR等等,其包括选才奪器、基点(base)、 限点(limit)和AR字节字段)、附加内部(体系结构或者非体系结构)机器 状态(例如,休眠状态、可中断性信息、状态机状态)、涉及存储器管 理的状态(例如,PDPTR、转换后备缓冲器(TLB)内容)、芯片组寄存器、 1/0设备状态及其他。相应地,列表上面给出的信息的例子不是穷举, 并且可以利用其他信息来扩充。此外,本领域普通技术人员很容易认 识到此处提供的缩写字。
所迷VM系统IOO提供了弹性的体系结构来实现这样一种机制, 当在客户VM(例如132,142以及152)和主机VMM 125之间的转换(例 如进入和退出)期间管理机器状态的加载和/或存储时,使用这种机制。
图2A举例说明了依照本发明一个实施例的用于管理VM转换操 作的一种方法200的流程图。所述过程可以通过处理逻辑来执行,所 述逻辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等)、 软件(例如在通用计算机系统或者专用机上执行)或者两者的结合。
在210,所述处理器检测是否即将发生VM转换。所迷VM转换 可以是VM退出或者VM进入。据此,在220,扭^刊佥验以便确定所 述VM转换是否为VM退出操作。
如果所述处理器处理的是VM进入,那么所述处理器可以执行多 个操作,以便准备把控制从VMM转移到VM。例如,在230,所述 处理器可以存储VMM机器状态,在240,加载VM机器状态,并且 在最后在250,把控制转移到VM。
如果所述处理器处理的是VM退出,那么所述处理器可以执行多 个操作,以便准备把控制从VM转移到VMM。例如,在260,所述处理器可以存储VM机器状态,在270,加载VMM机器状态,并且 在最后在280,把控制转移到VMM。
在图2B和图2C中分别示出了在VM转换期间、加载(例如在图 2的240和/或在270)并且存储(例如在图2中的230和/或在260)机器 状态的方法的实施例。
应该理解的是,在VM进入或者VM退出处理期间可以发生其他 动作,这些动作没有在图2A、 2B和2C中描述。例如,需要确保在 VM进入或者VM退出时被加载的状态的合法性和一致性。
图2B举例说明了在VM转换期间加载状态的方法202。所述方 法可以通过处理逻辑来执行,所述逻辑可以包括硬件(例如电路、专用 逻辑、可编程逻辑、微代码等等)、软件(例如在通用计算机系统或者 专用机上执行)或者两者的结合。
最初在222,它确定是否还剩余有其余需要处理的机器状态的任 意元素。如果没有剩余机器状态元素要处理,那么所述方法终止。否 则,在232,确定控制位值。下面详细讨论这些控制位以及它们的确 定过程。如在242所确定的那样,如果没有设置所述位(该位具有0值), 那么控制返回到222。否则(设置该位具有值1),那么在252,确定机 器状态的相应元素的值。下面将讨论该值的确定过程。然后,在262, 把此值安置在所述机器状态中。然后在222,把控制返回以便确定是 否剩余更多的机器状态元素。
图2C举例说明了在VM转换期间用于存储机器状态的方法204。 所述方法可以通过处理逻辑来执行,所述逻辑可以包括硬件(例如电 路、专用逻辑、可编程逻辑、微代码等等)、软件(例如在通用计算机 系统或者专用机上执行)或者两者的结合。
最初在224,确定是否剩余有机器状态的任意元素需要处理。如 果没有剩余机器状态元素要处理,那么所述方法终止。否则,在234, 确定控制位值。下面详细讨论这些控制位以及它们的确定过程。如在 244所确定的那样,如果没有设置所述位(该位具有0值),那么控制返
10回到224。否则(设置该位具有值1),那么在254,确定对应于机器状 态的元素的值。下面将讨论该值的确定过程。然后在264存储此值。 然后在224,把控制返回以便确定是否剩余更多的机器状态元素。
在一个实施例中,所述VMCS包括在所述VMM控制下的两组 控制位。把这些控制位称为VM进入控制和VM退出控制。所述VM 进入控制通知处理器在VM进入期间、应该存储什么样的VMM机器 状态以及应该加载什么样的VM机器状态。所述VM退出控制通知处 理器在VM退出期间、应该存^f诸什么样的VM^L器状态以及应该加载 什么样的VMM机器状态。
^又仅就举例来说,可以4巴所述VM进入控制表示为具有长度为6 的位串,其中所述位串中的每个位单元识别或者表示机器状态特定元
素上的动作或者非动作。例如,所述位串中的位单元以及机器状态的 相关元素可以描述如下
位单元处理器动作以及相关的机器状态元素
0存储-VMM - DR7
1存储-VMM - CR3
2存储-VMM - CR4
加载-客户-DR7
4加载-客户-CR3
5加载-客户-CR4
按类似方式,所述VM退出控制可以表示为具有长度为4的 VMCS内的位串。同样,所述位串中的位单元以及机器状态元素的相 关动作可以描述如下
位单元处理器动作以及相关的机器状态元素
0存储-客户-CR3
1存储-客户-CR4
2加载- VMM- CR3
3加载-VMM- CR4
11在VM进入时,如果所述VMM已经在所述VM进入控制(位数 O)中设置了 "存储-VMM - DR7"位,那么所述处理器将存储DR7寄存 器的当前值。在一个实施例中,把所述DR7寄存器的值存储在所述 VMCS中。反之,如果清除所述VM进入控制中的"存储匿VMM-DR7",那么所述处理器不存储所述DR7寄存器值。所述"存储-VMM -013"以及"存储-VMM - CR4"VM进入控制位(例如,位数分别是1 和2)以类似方式表现。
同样,如果所述VMM已经设置了 "加载-客户-DR7"VM进入控制 位(例如,位数4),那么所述处理器将加载DR7寄存器。在一个实施 例中,把加载的值包括在所述VMCS中的客户VM的DR7字段中。 如果清除所述"加载-客户-DR7,,VM进入控制位,那么所述处理器不加 载所述DR7寄存器。此外,所述"加载-客户-013,,以及"加载-客户-CR4" 控制位(例如,位数分別为4和5)依照类似的方式来表现。所述VM退 出控制位以类似方式来工作,以便控制在VM退出时客户VM机器状 态的存储以及主机VMM机器状态的加载。
在此例子中,所述VM进入和VM退出控制不控制机器状态的相 同元素,这是因为所述VM进入控制包括表示DR7的位,而VM退 出控制不包括。然而,正如本领域中普通技术人员易于理解的是,所 述VM进入和VM退出控制可以控制机器状态的相同元素,并且这种 表示预定将落入本发明的各种实施例的范围内。另外,不应该把此实 例中表示的机器状态的特定选择^L为限制。
虽然上述提及的例子提供了理解本发明一个实施例的例证说明, 但是那不意味着如此来限制本发明。例如,在所有情况下,加载的值 不必是所述VMCS中的值,并且所存储的值不必是直接来自于机器状 态的值(如上述实施例中所述那样)。
在上文给出的例子中,所述处理器可以乂人所述VMCS或者向所 述VMCS加载或者存储机器状态的元素值。可替换地,所迷处理器可
12以加载或者存储机器状态的元素的固定值。此外,所述处理器可以加 载或者存储动态计算的值。最后,所述处理器可以不采取任何涉及机 器状态元素的行动(不加载或者存储值)。下面将描述用于确定将加载 或者存储的值的这种替代机制。
所述处理器可以加载或者存储机器状态元素的固定值(即,恒定 的或者预定的)。例如,所述处理器可以在VM退出时把固定值加载到
所述EFLAGS寄存器中。也就是说,没有在所述VMCS中表示的VMM EFLAGS。相反,在把控制转移到所述VMM之前,所述处理器强制 处理器中的寄存器具有固定或者预定值(例如,0x2或者其他值)。以这 样的方式,所述处理器被"强力口,,机器状态的元素值。依照类似方式, 所述处理器可以强加在VM进入时存储到VMCS的值,强加在VM 进入时加载到机器状态的值,和/或强加在VM退出时存储到所述 VMCS的值。
以这种方式,不是所有的机器状态元素都需要在所述VMCS中 被显式表示。这种技术在不需创建大型或者难控制(unmly)的VMCS 的情况下,可以提供弹性的机制,以便覆盖机器状态的附加元素。另 夕卜,这种机器状态或者所存储值的强制可以通过减少对VMCS的所需 访问次数并且通过减少在VM进入和/或VM退出时所需要的一致性 和错误检查,来改善VM退出和VM进入的实现方式的性能。
此外,所述处理器可以计算值,该值然后被加载到机器状态或者 被存储到所述VMCS中。这种计算的值是基于机器状态的一个或多个 元素值、所述VMCS中包括的值等等来动态地确定。例如,在VM退 出时载入到所述EIP寄存器中的值可以通过加载来自于所迷VMCS的 VMM EIP字^殳值并且加载用这个EIP值加载EIP寄存器来计算,其 中所述EIP值是通过一些已计算的值来扩充的,其中所述已计算的值 取决于所述VM退出的情况。
机器状态的元素的动态计算可以允许VMM更加有效的实现。例 如,在上文给出的例子中,在VM退出时动态计算EIP可以允许所述VMM构造个体VM退出源的句柄(handler),以此消除对在VMM软 件中解码所述退出原因的需要。
的元素的动作。例如,当从VM转移到所述VMM时,所述处理器可 以保持通用寄存器(例如,在所述IA-32ISA中EAX、 EDX等等中) 的值不变。
所述处理器通过评估"状态动作指示符"来确定VM转换期间采取 的涉及机器状态元素的适当行动。所述状态动作指示符确定应该采取 什么行动。状态动作指示符的值("状态动作指示符值")可以命令处理 器从所述VMCS加载状态信息或者向所述VMCS存储状态信息。所 述状态动作指示符值可以给处理器强加待加载或存储的固定或预定
者加载或者存储已计算的值。
上述的VM进入和VM退出控制是状态动作指示符的例子。在此 例子中,所述处理器使用所述VMCS的字段作为状态动作指示符。在 所述VM进入或者VM退出控制中的每个位对应于机器状态的单个元 素。如果设置一个位,它向处理器表明应该从所述VMCS加载或者向 所述VMCS存储机器状态的元素;如果将其清除,那么把机器状态的 元素忽略。在可替代的实施例中,如果将要加载机器状态的元素或者 强制为固定值,那么可以确定单个位。在进一步的实施例中,所述状 态动作指示符可以大于单个位,并且可以编码更复杂的行为。例如, 所述状态动作指示符可以是2位,允许4个值,以便区别如上所述的 加载、强制、计算和忽略机制。
可以把状态动作指示符与特殊的VM转换(例如利用所有VM退 出)相关联、与机器状态的特定元素(如上面详述的VM进入和VM退 出控制的实施例中)相关联、和/或与机器状态的多个元素(例如,在VM 退出时控制处理器中所有通用寄存器的加载的单个状态动作指示符) 相关联。状态动作指示符值可以根据从所述VMCS (如在上面例子中所述
的那样)获取的值来确定,可以是固定的(即预定的)值,或者可以是动 态计算的值。下面讨论这样可能性的每一个。
可以在所述VMM的控制之下把状态动作指示符存储在所述 VMCS中。下面详细地讨论把状态动作指示符存储在所述VMCS中的 例子。
状态动作指示符可以是预定的。如果所述状态动作指示符的值是 固定的或者预定的值,那么所述VMM不能直接控制在VM转换时、 处理器对4几器状态对应元素采取的动作。例如,在VM进入处理期间、 所述处理器可以不断地不存储EIP寄存器的值,在VM进入处理期间、 从所述VMCS不断地加载所述EIP寄存器的客户值,和/或在VM退 出处理期间不断地加载所述EIP寄存器。
状态动作指示符可以是动态计算的。如果所述状态动作指示符是 动态计算的值,那么状态动作指示符可以取决于与机器状态的一个或 多个元素、所述VMCS中的一个或多个字,殳等等相关联的一个或多个 值。
例如,在所述IA - 32 ISA中,跟随VM进入或者VM退出、如 果所述处理器将使用物理地址扩展(将依照PAE模式),那么所述处理 器从所迷VMCS加载页面目录指针表(PDPTR)的入口 。如杲所述处理 器不会处于PAE模式,那么把所述处理器中的所述PDTR强制为0。 为了确定处理器是否会处于PAE模式,所述处理器审查所述CR4寄 存器中的PAE位。由此,可以说所述处理器已经做出动态确定或者计 算了状态动作指示符值。如果所述PAE位被设置,那么所述状态动作 指示符令所述处理器"从所述VMCS中加载"。如果所述PAE位被清 除,那么所述状态动作指示符命令处理器"强制该值"(例如强制为0 值)。应注意的是,此处描述的用于确定所述处理器是否将会处于PAE 模式的处理被简化,以便清楚地阐明本发明的各种实施例。做出此确 定需要更多的处理,这是本领域普通技术人员很容易意识到的并且理
15解的。
在另 一例子中,如果段的选择器的值是非零的或者如果所述处理
器处于V86模式,那么所述处理器可以加载段寄存器的基点与限点字 段。为了做出此确定,所述处理器审查两个机器状态信息在考虑之
择器是非零的或者如果EFLAGS中的所述VM位被设置,那么命令所 述处理器"从所述VMCS加载,,,否则,所述处理器不采取任何动作。 应注意的是,此处描述的用于确定是否必需加载基点与限点字段的处 理被简化,以便清楚地阐明本发明的各种实施例。做出此确定需要更 多的处理,这是本领域普通技术人员很容易意识到的并且理解的。
正如现在对于本领域普通技术人员显而易见的那样,此处所述的 方法可用于在VMM和VM之间的转换期间、动态地控制机器状态的 加载和存储。通过使用VMCS和具有灵活指令逻辑的处理器可以进行 进入和退出VMM的转换,如上面举例说明的那样。此外,机器状态
明或者单独地表示。
图3举例说明了依照本发明一个实施例在VM转换期间、用于执 行机器状态元素的加载操作的方法300的流程图。图3可以在机器的 处理器的设计中实现。所述方法可以通过处理逻辑来执行,所述逻辑 可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、软 件(例如在通用计算机系统或者专用机上执行)或者两者的结合。
指示符。在320,所述处理器审查所述状态动作指示符。如果所述状
中加载,那么在330,加载机器状态元素的值,并且在335,将其安 装到在考虑之中的机器状态的对应元素中。然而,如果所述状态动作 指示符值表明在考虑之中的机器状态的元素将要被强制,如在340所 确定的那样,那么在350,所述处理器把预定的或者强制的值安装到
16机器状态的对应元素中。此外,所述状态动作指示符值可以表明对于 在考虑之中的机器状态的元素而言,所述处理器将不会采取任何动
作,在360,在这种情况下,所述处理器不采取任何动作(所迷处理器
不修改在考虑之中的才几器状态的元素)。
如果在360评估所述状态动作指示符是否定的(它不表明就在考 虑之中的机器状态的元素而论不需要动作),那么可以推断需要一种动 态计算。当然,在一些实施例中,可以执行状态动作指示符的肯定检 验,以便在没有做出任何推断的情况下来确定是否需要计算。据此, 在370计算在考虑之中的机器状态的元素值,并且在380,将其安装 在机器状态的元素内。所述处理器可以通过审查机器状态的一个或多 个元素、审查所述VMCS中的值、和/或审查控制指示符值等等来动 态地计算机器状态的元素值。此外, 一旦完成审查,所述处理器就可 以执行一个或多个转换(例如计算)以便生成在考虑之中的机器状态的 元素值。由此,所述处理器可以使用各种数据并且执行各种动作,以 便生成机器状态的元素值。
为机器状态的每个元素重复方法300,不过没有在图3中对其进 行描述。另外,如上所述,可以把每个状态动作指示符与机器状态的 一个或多个元素相关^I关。
图4举例说明了依照本发明一个实施例的在VM转换期间、用于 执行机器状态元素的存储的方法400的流程图。所述方法400是在处 理器体系结构内实现的。所述方法可以通过处理逻辑来执行,所述逻 辑可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、 软件(诸如在通用计算机系统或者专用机上执行的)或者两者的结合。
指示符。在420,所述处理器审查所迷状态动作指示符。如果所述状 态动作指示符需要把在考虑之中的机器状态的元素存储在所述VMCS 中,那么在430,把在考虑之中的机器状态的元素存储到所述VMCS 的一个或多个字段中。如果情况不是这样,那么在440,检查所述状态动作指示符值,以便确定是否将要把固定值存储至所述VMCS,并 且如果是这样的话,那么在450,把所述固定值存储到所述VMCS的 一个或多个字段中。在一些情况下,所述状态动作指示符值可以命令 处理器不执行任何动作,如在460所描述的那样。
在470,动态地确定对应于机器状态的元素的值。然后,在480, 把计算的值存储到所述VMCS的一个或多个字段中。所述处理器可以 通过审查机器状态的一个或多个元素,审查所述VMCS中的值和/或 审查控制指示符值等,来动态地计算所述值。此外, 一旦完成审查, 所述处理器就可以执行一个或多个转换(例如,计算)以便产生所述计 算的值,所述计算的值被存储在所述VMCS的一个或多个字段中。由 此,所述处理器可以使用各种数据并且执行各种动作,以便生成计算 的值。
可以为机器状态的每个元素重复方法400,不过没有在图4中对 其进行描述。另外,如上所述,可以把每个状态动作指示符与机器状 态的一个或多个元素相关联。
图5举例说明了依照本发明一个实施例的在VM转换操作(例如, 图3中的块310和图4中的块410)期间、用于确定状态动作指示符值 的方法500的流程图。所述方法可以通过处理逻辑来执行,所述逻辑 可以包括硬件(例如电路、专用逻辑、可编程逻辑、微代码等等)、软 件(诸如在通用计算机系统或者专用机上执行的)或者两者的结合。
在505,所述处理器确定在考虑之中的机器状态的元素、被处理 的VM转换的类型以及状态加载或者存储是否正在处理。基于所确定 的信息,在507,所述处理器确定所述体系结构是否规定了与机器状 态的此元素相关联的状态动作指示符是固定的,从所述VMCS加载的 或者计算的。
在510,如果所述状态动作指示符是固定的,那么在520,确定 固定的状态动作指示符值。
在530,如果将要从所述VMCS获取状态动作指示符,那么在540,把所述状态动作指示符值从所述VMCS加载。
在550,如果将要动态地确定或者计算所述状态动作指示符,那 么在550,执行所述计算过程以便确定所述状态动作指示符值。所迷 动态的确定或者计算过程例如可以包括加载在所述VMCS内的各种 字段(包括控制矢量字段值),审查机器状态的各种元素,审查VM和/ 或VMM状态的各种元素,审查一个或多个控制指示符值,和/或对审 查信息的转换(例如,执行计算)。
在一些实施例中,状态动作指示符值的确定以及评估可以不是显 式的。所述处理器可以依照特定情形要求特定动作的知识来设计。例 如,处理器中的逻辑可以无条件地把机器状态的元素强制为特殊值, 而不用显式地评估任何状态动作指示符值。因此,不应该把参照图5 描述的显式检验视为限制。
本发明的实施例提供了 VM转换的改善处理。这是通过在使用 VMCS的所述处理器内灵活的具现处理来实现的,但是不需要完全依 赖于在所述VMCS内提供的信息来执行VM转换。
现在,本领域普通技术人员将理解的是,依照本发明各种实施例
载和存储。具体来讲,这些实施例向所述VMM提供了灵活性,以便 规定在VM转换期间机器状态的加载和存储的语义,如所迷体系结构 允许的那样。这不必利用严格的VMCS来实现,其解决机器状态的元 素的所有实例,并且不是在VM转换时机器状态的所有存储和加载都 需要由所述VMM通过所述VMCS中的控制来显式地引导。
应该理解的是,上述描述是例证性的,而不是限制性的。当回顾 上述描述时,许多其他的实施例对于本领域中普通技术人员是显而易 见的。因此,本发明的实施例的范围应该参照所附权利要求书连同授 予这种权利要求书的等价物的全部范围 一起来确定。
需要强调的是,遵照37C.F.R.S1.72(b)的规定提供了摘要,该规
定要求摘要允许读者快速地确定所公开的技术的特性和要旨。提交所述摘要是基于这样的认识,即不会使用它来解释或者限制权利要求书 的范围或者意义。
在上述具体实施方式
中,为了公开的精练,在单个实施例中集合 了各种特征。所公开的这种方法不应该被解释为反映这样的意图,即, 所要求的本发明的实施例要求比在每个权利要求中清楚讲述的特征 更多的特征。相反,如随后权利要求书反映的那样,发明的主题少于 单个公开的实施例的所有特征。由此如下权利要求书被并入所述具体 实施方式的描述,每个权利要求坚持其自身作为独立的示例性实施 例。
权利要求
1. 一种用于管理虚拟机转换的处理器,包括用于根据与机器状态的元素相关的状态动作指示符来确定将要采取的、与虚拟机转换有关的动作的逻辑,所述将要采取的动作涉及机器状态的元素。
2. 如权利要求1所述的处理器,还包括用于促成将要采取的、与虚拟机转换有关的动作的逻辑。
3. 如权利要求1所述的处理器,其中所述动作是将机器状态的元素值存入存储器。
4. 如权利要求1所述的处理器,其中所述动作是由存储器加载机器状态的元素值。
5. 如权利要求1所述的处理器,其中所述逻辑还用于通过下列动作之一来确定状态动作指示符的值由虚拟机控制结构获取字段值;确定固定值;和计算计算值。
6. 如权利要求1所述的处理器,其中所述逻辑还用于访问虚拟机控制结构,所述虚拟机控制结构包括两组控制位,第一组控制位用于识别处理器状态的元素以便存储以及用于识别处理器状态的元素以便将条目加载到虚拟机,第二组控制位用于识别处理器状态的元素以便存储以及用于识别处理器状态的元素以便加载从虚拟机退出。
7. 如权利要求3所述的处理器,其中用于存储机器状态的元素值的逻辑还用于根据机器状态的元素、固定值和计算值来确定所述值。
8. 如权利要求7所述的处理器,其中用于存储机器状态的元素值的逻辑还用于通过审查下列至少其中一项来确定所述计算值处理器状态的元素;虛拟机控制结构中的值;和 控制指示符; 以及用于转换所审查的值以便形成所述计算值。
9. 如权利要求4所述的处理器,其中用于存储机器状态的元素值的逻辑还用于根据虚拟机控制结构中的相关字段、计算值和固定值 的其中之一确定所述值。
10. 如权利要求9所述的处理器,其中用于加载机器状态的元素 值的逻辑还用于通过审查下列至少其中 一项来确定所述计算值处理器状态的元素; 虚拟机控制结构中的值;和 控制指示符值; 以及用于转换所审查的值以便形成所述计算值。
全文摘要
提供了用于控制虚拟机(VM)和虚拟机监视器(VMM)之间的转换的方法和系统。处理器在完成所述转换之前使用状态动作指示符来加载和/或存储机器状态的相关元素。所述状态动作指示符可以存储在虚拟机控制结构(VMCS)中,可以是预定的和/或动态计算的。在一些实施例中,加载的值可以从所述VMCS直接获取,可以是预定的和/或动态计算的。在一些实施例中,存储的值可以从机器状态直接获取,可以是预定的和/或动态计算的。
文档编号G06F9/455GK101488097SQ200910009859
公开日2009年7月22日 申请日期2003年12月4日 优先权日2002年12月19日
发明者A·卡吉, E·科塔-罗布尔斯, G·奈格尔, M·科祖赫, R·乌利希, S·耶亚辛, S·贝内特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1