处理特许事件的多个虚拟机监控器的使用的制作方法

文档序号:6493875阅读:136来源:国知局
专利名称:处理特许事件的多个虚拟机监控器的使用的制作方法
技术领域
一般来说,本发明涉及虚拟机,更具体来说,涉及采用多个虚拟机监控器来处理特许事件。
背景技术
传统的虚拟机监控器(VMM)通常在计算机上运行,以及为其它软件提供一个或多个虚拟机的抽象。各虚拟机可用作独立平台,运行它自己的“客户操作系统”(即VMM接管的操作系统(OS))和其它软件,它们统称为客户软件。客户软件预期工作起来好像它在专用计算机而不是虚拟机上运行。也就是说,客户软件预期将控制各种事件以及有权访问硬件资源。硬件资源可包括处理器驻留资源(例如控制寄存器)、驻留在存储器中的资源(例如描述符表)以及驻留在基础硬件平台上的资源(例如输入输出装置)。事件可包括内部中断、外部中断、异常、平台事件(例如初始化(INIT)或系统管理中断(SMI))、某些指令的执行等。
在虚拟机环境中,VMM应当能够具有对这些事件和硬件资源的最终控制,以便提供在虚拟机上运行的客户软件的适当操作,以及提供对虚拟机上运行的客户软件及它们之间的防范。为了实现这个目的,当客户软件访问受保护资源时,或者当其它事件(例如中断或异常)出现时,VMM通常接收控制。例如,当VMM支持的虚拟机中的操作使系统装置产生中断时,当前运行的虚拟机被中断,以及处理器的控制被传递给VMM。然后,VMM接收该中断,并且自行处理中断或者把中断传递到适当的虚拟机。
附图概述 在附图的各图中,通过实例而不是限制来说明本发明,附图中,相似的参考标号表示类似的元件,附图包括

图1说明本发明在其中可工作的虚拟机环境的一个实施例; 图2说明虚拟机环境中的多个VMM的配置; 图3是用于处理具有多个VMM的虚拟机环境中的特许事件的过程的一个实施例的流程图; 图4、图6和图7说明标识用于处理特许事件的VMM的过程的示范实施例;以及 图5说明具有两个VMM的虚拟机环境中的过程400的示范使用。
实施例的描述 描述用于采用多个虚拟机监控器来处理特许事件的方法及设备。为便于说明,以下描述中提出了大量具体细节,以便透彻地理解本发明。然而,本领域的技术人员十分清楚,即使没有这些具体细节,也可以实施本发明。
按照对计算机系统的寄存器或存储器中的数据位的操作的算法和符号表示来提供以下详细说明的一些部分。这些算法描述和表示是数据处理领域的技术人员用来向本领域的其它技术人员最有效地传达其工作实质的方式。算法在此以及一般被认为是产生预期结果的独立操作序列。操作是要求物理量的物理处理的那些操作。这些量通常但不一定采取电或磁信号的形式,它们能够被存储、传送、组合、比较或者以其它方式处理。主要为了一般使用的原因,将这些信号称作位、值、元素、符号、字符、项、数等,已经证明有时便利。
但应当记住,所有这些及类似的术语都与适当的物理量关联,并且只是应用于这些量上的便捷标签。若没有明确说明,从以下论述中应当知道,贯穿本发明,采用诸如“处理”或“计算”或“运算”或者“确定”等术语的论述可表示计算机系统或类似电子计算装置的动作和过程,其中所述计算机系统或类似电子计算装置处理表示为计算机系统的寄存器和存储器中的物理(电子)量的数据并将其转换为同样表示为计算机系统存储器或寄存器或者其它这种信息存储、传送或显示装置中的物理量的其它数据。
在对实施例的以下详细描述中,参照附图,附图举例说明可实现本发明的特定实施例。附图中,相似的标号描述若干视图中基本上相似的组件。对这些实施例进行充分详细的描述,使本领域的技术人员能够实施本发明。可采用其它实施例,并且可进行结构、逻辑以及电气变更,而没有背离本发明的范围。此外,要理解,本发明的各种实施例虽然有所不同,但不一定是相互排斥的。例如,在一个实施例中描述的特定功能、结构或特征可包含在其它实施例中。因此,以下详细描述不是限制性的,本发明的范围仅由所附权利要求以及这些权利要求涵盖的全部等效范围来限定。
虽然以下实例可能在执行单元和逻辑电路的上下文中描述本发明的实施例,但是,本发明的其它实施例也可通过软件来实现。例如,在一些实施例中,本发明可作为计算机程序产品或软件来提供,它可包括其中已存储指令的机器或计算机可读介质,这些指令可用于对计算机(或其它电子装置)编程以执行根据本发明的过程。在其它实施例中,本发明的步骤可由包含用于执行步骤的硬连线逻辑的特定硬件组件来执行,或者由编程计算机组件和定制硬件组件的任何组合来执行。
因此,机器可读介质可包括用于存储或传送机器(例如计算机)可读形式的信息的任何机构,但不限于软盘、光盘、小型盘只读存储器(CD-ROM)以及磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、磁或光卡、闪速存储器、基于因特网的传输、电、光、声或其它形式的传播信号(例如载波、红外信号、数字信号等)等等。
此外,设计可经过各种阶段,从创建到模拟直到制造。表示设计的数据可通过许多方式来表示设计。首先,如在模拟中有用的那样,硬件可采用硬件描述语言或者另一种功能描述语言来表示。另外,采用逻辑和/或晶体管门电路的电路级模型可在设计过程的某些阶段产生。此外,在某个阶段,大部分设计达到表示硬件模型中的各种装置的物理设置的数据级。在使用传统半导体制造技术的情况中,表示硬件模型的数据可能是指定用来产生集成电路的掩模的不同掩模层上的各种特征是否存在的数据。在设计的任何表示中,数据可通过任何形式的机器可读介质来存储。经调制或者以其它方式产生以便传送这种信息的光或电波、存储器或者磁或光存储装置、如盘可能是机器可读介质。这些介质的任一种可“携带”或“表明”设计或软件信息。传送表明或携带代码或设计的电载体以便执行电信号的复制、缓冲或重传时,制作新的副本。因此,通信提供商或网络提供商可制作体现本发明的技术的产品(载体)的副本。
图1说明本发明在其中可工作的虚拟机环境100的一个实施例。在这个实施例中,裸平台硬件110包括计算平台,它可能例如能够运行标准操作系统(OS)或虚拟机监控器(VMM)、如VMM125。
平台硬件110可能是个人计算机(PC)、大型计算机、手持装置、便携计算机、机顶盒或其它任何计算系统的。平台硬件110包括至少一个处理器112、存储器120以及可能的其它未示出的平台硬件(例如输入输出装置)。
处理器112可以是能够运行软件的任何类型的处理器,例如微处理器、数字信号处理器、微控制器等等。处理器112可包括用于执行本发明的方法实施例的运行的微码、可编程逻辑或硬编码逻辑。
存储器120可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪速存储器、以上装置的任何组合、或者处理器112可读的其它任何类型的机器介质。存储器120可存储用于执行本发明的方法实施例的运行的指令或数据。
每个VMM 125虽然通常以软件来实现,但可模拟裸机接口并将其导出到高级软件。这种高级软件可包括标准或实时OS,可以是具有有限操作系统功能性的高度剥离的操作环境,可能不包括传统的OS工具,等等。VMM 125例如可通过硬件、软件、固件或者各种技术的组合来实现。
在运行时,每个VMM 125为“客户”软件(即,除VMM125的软件之外的软件)提供一个或多个虚拟机(VM)的抽象。VMM125可向各种客户提供相同或不同的抽象。在各VM上运行的客户软件可包括客户OS(例如,客户OS 134、144或154)以及各种客户软件应用程序(例如,应用程序136、146和156)。客户OS和软件应用程序在本文中统称为客户软件103、105和115。
客户软件103、105和115预期将访问客户软件正在其中运行的VM 132、142和152中的物理资源(例如,处理器寄存器、存储器和I/O装置)。VMM 125有助于对客户软件所需的资源的访问,同时保持对平台硬件110中的资源的最终控制。另外,客户软件103、105和115预期将处理诸如异常、中断以及平台事件(例如,初始化(INIT)和系统管理中断(SMI))等各种事件。这些事件的一部分是“特许的”,因为它们不能由客户软件进行处理,以便确保VM 132、142和152以及客户软件103、105和115的正确操作,以及用于对客户软件103、105和115及其之间的防范。特许事件由VMM 125来处理。
具体来说,特定VMM被标识用于处理每个特许事件。在一个实施例中,特定VMM采用路由选择逻辑130来标识。在一些实施例中,路由选择逻辑130实现为微码、可编程逻辑或者硬编码逻辑。在其它实施例中,路由选择逻辑130实现为驻留在存储器120中的软件。在另外一个实施例中,路由选择逻辑130实现为硬件和软件的组合。
一旦特定VMM被标识,它将有助于客户软件所需的功能性,同时保持对这种特许事件的最终控制。有助于客户软件所用的功能性的动作可包括VMM 125的一部分上的各种各样的活动。VMM125的这些活动不应当限制本发明的范围。
系统100可包括在平台硬件110上运行的两个或两个以上VMM 125。在一个实施例中,VMM 125并行运行,以及各VMM125可接收来自VM的控制。图2说明系统100中的VMM 125的这种配置的一个实施例。
参照图2,说明VMM 210至214的示范并行配置。根据这种配置,在VM工作期间出现特许事件时,控制从VM传递给特定VMM。特定VMM根据某些标准来标识,下面更详细地进行论述。一旦特定VMM被标识,与虚拟化事件有关的信息被传递到这个VMM,以及控制被转变到它。例如,在VM 202工作期间出现的特许事件1可能引起从VM 202到VMM 210的转变,在VM 202工作期间出现的特许事件2可能引起从VM 202到VMM 212的转变,在VM 206工作期间出现的特许事件3可能引起从VM 206到VMM 212的转变,以及在VM 206工作期间出现的特许事件4可能引起从VM206到VMM 214的转变。相应的VMM则处理虚拟化事件,并且可把控制转回到从其接收了控制的VM。在一个实施例中,控制从VMM到VM的转移通过执行特殊指令来实现。控制从VMM到VM的转移在本文中称作VM入口,而控制从VM到VMM的转移在本文中则称作VM出口。
在一个实施例中,当VM出口出现时,控制在驻留于存储器并由处理器维护的虚拟机控制结构(VMCS)中描述的特定入口点(例如指令指针值)处被传递给VMM。在另一个实施例中,控制在通过重定向结构(例如IntelPentium4的处理器指令集体系结构(ISA)中的中断描述符表(在本文称作IA-32 ISA))引导之后被传递给VMM。或者,本领域已知的其它任何机制都可用来把控制从VM转移到VMM。
特许事件可能在VMM工作期间出现。可能在VMM工作期间出现的特许事件的实例可包括例如系统管理中断(SMI)、INIT、不可屏蔽中断(NMI)、硬件中断、处理器间中断(IPI)等。在一个实施例中,如果特许事件在VMM工作期间出现,则路由选择逻辑用来标识被指定处理这个特许事件的VMM。如果指定VMM不是当前正在工作的VMM,则与该特许事件有关的信息被传递到指定VMM,以及控制被转到它。例如,在VMM 210工作期间出现的特许事件5可能引起从VMM 210到VMM 212的转变。然后,VMM 212处理该特许事件,并且可把控制转回给VMM 210。因此,在VMM 210与VMM 212之间的交互中,VMM 210充当VM的角色。因此,在一个实施例中,与以上针对VM与VMM之间的控制转移所述的相似的VM出口和VM入口机制用于在VMM之间转移控制。
图3是用于处理具有多个VMM的虚拟机环境中的特许事件的过程300的一个实施例的流程图。该过程可通过可包括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行于通用计算机系统或专用机器的)或者它们两者的组合的处理逻辑来执行。
参照图3,过程300从处理逻辑检测特许事件的出现(处理框302)开始。特许事件为不是由当前运行的软件处理的事件。这类特许事件可包括异常、中断、平台事件、“特许”指令(其执行引起VM出口的指令)的执行等。特许事件可能在客户软件的操作期间或者在VMM工作期间出现。
在处理框304,处理逻辑确定多个VMM中哪一个将处理特许事件。确定可基于各种因素,例如特许事件的特性、VMM可修改的指定字段的当前值、VMM的操作参数、客户软件的操作参数等。在一个实例中,确定基于特许事件的类型,下面将结合图4更详细地论述。在另一个实例中,确定基于多个VMM之一所配置的控制字段的当前值,下面将结合图6更详细地论述。在又一个实例中,确定基于VMM的负荷和/或使用特性的评估,下面将结合图7更详细地论述。在又一个实例中,确定基于上述因素的组合。
一旦处理逻辑确定哪个VMM将处理特许事件,它把与特许事件有关的信息传递给指定VMM,以及把控制转到这个VMM(处理框306)。然后,VMM可自行处理该特许事件,或者将其路由到客户软件进行处理。
图4、图6和图7说明标识用于处理特许事件的VMM的过程的示范实施例。这些过程可通过可包括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行于通用计算机系统或专用机器的)或者它们两者的组合的处理逻辑来执行。
参照图4,过程400从处理逻辑在客户软件或VMM工作期间检测特许事件的出现(处理框402)开始。在处理框404,处理逻辑标识特许事件的类型。随后,处理逻辑确定哪个VMM被指定为处理这种类型的特许事件(处理框406)。在一个实施例中,各事件类型静态地映射到特定VMM(例如采用硬编码逻辑)。在另一个实施例中,确定是动态的,下面针对图6进行描述。在又一个实施例中,采用静态确定的VMM和动态确定的VMM的组合。也就是说,一些事件类型可静态映射到相应的VMM,而另一些事件类型则可能需要某种附加处理器操作进行确定。
如果当前工作的实体不是指定VMM(判定框408),则处理逻辑把控制转到指定VMM(处理框410)。在一个实施例中,到指定VMM的转变可通过产生VM出口来实现。或者,本领域已知的其它任何机制可用于把控制转到指定VMM。
如果当前工作的实体是指定VMM,则事件被传递给当前运行的VMM(处理框412)。在一个实施例中,事件到VMM的传递通过合成从VMM到其自身的VM出口来执行。在另一个实施例中,事件被传递,如它在非虚拟机环境中被传递那样(例如通过经由中断描述符表来引导或者引起到系统管理模式的转变)。应当注意,本领域已知的各种其它机制可用于把事件传递到当前运行的VMM。
图5说明根据本发明的一个实施例、具有两个VMM的虚拟机环境中的过程400的示范使用。两个VMM其中之一(例如VMM 508)被唯一指定为处理某些平台事件(例如系统管理中断(SMI)、IPI、不可屏蔽中断等)。VMM 508称作平台VMM(PVMM)。在一些实施例中,PVMM被指定为仅处理SMI。在其它实施例中,PVMM处理附加事件类型以及SMI。在其它实施例中,采用多个PVMM,其中的每个处理不同的平台事件。
当特许事件出现时,路由选择逻辑510确定事件的类型。如果事件是要由PVMM 508处理的平台事件,则路由选择逻辑510将其路由到VMM 508。否则,事件被路由到VMM 506。如图5所示,路由选择逻辑510可路由在客户软件的操作期间或者在VMM工作期间出现的事件。
事件到VMM的路由选择根据当事件出现时什么实体正在运行可能有所不同。如果客户软件正在运行,则到路由选择逻辑510所选的VMM的转变在一个实施例中经由VM出口来执行。如果路由选择逻辑所选的VMM当事件出现时正在运行,事件可通过各种机制传递到VMM,如以上针对图4所述。
唯一地指定为处理某些平台事件的第二VMM的使用消除了硬件供应商与OS供应商之间的产品相关性。也就是说,它允许平台硬件供应商与OS供应商无关地开发第二VMM(PVMM)的代码。类似地,OS供应商可与硬件供应商无关地开发第一VMM的代码。另外,执行不同功能性的两个VMM的使用增强系统安全性,以及限制需要被验证安全性的代码的暴露。
参照图6,过程600从处理逻辑在客户软件或VMM工作期间检测特许事件的出现(处理框602)开始。在处理框604,处理逻辑接收标识特许事件的信息。随后,处理逻辑访问控制用于处理特许事件的VMM的选择的资源(例如存储器内数据结构、处理器寄存器、平台芯片组中的存储器、输入-输出装置中的寄存器等)(处理框606),以及读取与特许事件的标识符关联的资源字段的当前值(处理框608)。
在一个实施例中,特许事件的标识符是特许事件的类型,以及处理逻辑采用特许事件的类型来识别与这种类型的特许事件关联的资源字段值。
在另一个实施例中,标识信息标识与特许事件关联的特定输入-输出地址。在这个实施例中,处理逻辑分析与特许事件关联的输入-输出访问,确定访问什么输入-输出地址,然后采用这个输入-输出地址来查找与已确定输入-输出地址所属的输入-输出地址范围关联的资源字段值。在一个实施例中,资源字段的值在初始化期间被设置,并且不能修改。在另一个实施例中,资源字段的值可由VMM(例如,主VMM)根据诸如安全性要求、VMM对平台的了解等因素动态配置。资源字段值的这种动态配置允许VMM功能性被分割,从而可能改进安全性、系统性能、开发方法等。
此外,处理逻辑根据相应字段的当前值来确定哪个VMM被指定为处理特许事件(处理框610),如果当前工作的实体不是指定的VMM(判定框612),则把控制转到指定的VMM(处理框614)。在一个实施例中,到指定VMM的转变可通过产生VM出口来实现。或者,到指定VMM的转变可通过本领域的其它任何机制来实现。
如果指定VMM为当前工作的实体,则处理逻辑把事件传递给那个VMM(处理框616),如以上结合图4和图5所述。
参照图7,过程700从处理逻辑在客户软件或VMM的工作期间检测特许事件的出现(处理框702)开始。在处理框704,处理逻辑标识系统中的各VMM的资源使用/负荷参数。随后,处理逻辑在负荷平衡的上下文中评估VMM的资源使用和/或负荷参数(处理框706),并且根据以上负荷平衡评估来确定哪一个VMM是用于处理特许事件的最佳候选者(处理框708)。此外,如果当前工作的实体不是标识为最佳候选者的VMM(判定框712),则处理逻辑把控制转到所标识的VMM(处理框714)。在一个实施例中,到所标识VMM的转变可通过产生VM出口来实现。或者,到所标识VMM的转变可通过本领域的其它任何机制来实现。
如果指定VMM为当前工作的实体,则处理逻辑把事件传递给那个VMM(处理框716),如以上结合图4-6所述。
这样,描述了采用多个VMM来处理特许事件的方法及设备。应当理解,以上描述只是说明性而不是限制性的。通过阅读和理解以上描述,本领域的技术人员将会十分清楚其它许多实施例。因此,本发明的范围应当参照所附权利要求以及这些权利要求涵盖的完整等效范围共同确定。
权利要求
1.一种方法,包括检测特许事件的出现;确定多个虚拟机监控器(VMM)中哪一个将处理所述特许事件;以及把控制转到所述多个VMM中所述的一个。
2.如权利要求1所述的方法,其特征在于,所述多个VMM包括主VMM和一个或多个并行VMM。
3.如权利要求1所述的方法,其特征在于,确定多个VMM中哪一个将处理所述特许事件包括确定所述特许事件的类型;以及标识被指定为处理所确定类型的特许事件的所述多个VMM其中之一。
4.如权利要求1所述的方法,其特征在于,确定多个VMM中哪一个将处理所述特许事件包括访问资源中与所述特许事件关联的字段;以及根据所述字段的值来标识被指定为处理所述特许事件的所述多个VMM其中之一。
5.如权利要求4所述的方法,其特征在于,与所述特许事件关联的所述字段是与所述特许事件的类型关联的字段。
6.如权利要求4所述的方法,其特征在于,与所述特许事件关联的所述字段是与所述特许事件的输入-输出地址所属的输入-输出地址范围关联的字段。
7.如权利要求4所述的方法,其特征在于,与所述特许事件关联的所述字段的所述值是预先确定的或者是可动态配置的。
8.如权利要求1所述的方法,其特征在于,确定多个VMM中哪一个将处理所述特许事件包括评估所述多个VMM的资源使用参数;以及根据所述资源使用参数的评估来标识被指定为处理所述特许事件的所述多个VMM其中之一。
9.如权利要求4所述的方法,其特征在于,所述资源驻留在存储器、处理器、芯片组和输入-输出装置其中的任一种中。
10.如权利要求1所述的方法,其特征在于,所述特许事件表示中断、异常、特许指令的执行和平台事件其中的任一种。
11.如权利要求1所述的方法,其特征在于,所述特许事件在客户软件工作期间出现。
12.如权利要求1所述的方法,其特征在于,所述特许事件在所述多个VMM其中之一工作期间出现。
13.一种系统,包括多个虚拟机监控器(VMM);以及路由选择逻辑,检测特许事件的出现,确定所述多个VMM中哪一个将处理所述特许事件,以及把控制转到所述多个VMM中所述的一个。
14.如权利要求13所述的系统,其特征在于,所述多个VMM包括主VMM和一个或多个并行VMM。
15.如权利要求13所述的系统,其特征在于,所述路由选择逻辑通过确定所述特许事件的类型以及标识被指定为处理所确定类型的特许事件的所述多个VMM其中之一,确定所述多个VMM中哪一个将处理所述特许事件。
16.如权利要求13所述的系统,其特征在于,所述路由选择逻辑通过评估所述多个VMM的资源使用参数以及根据所述资源使用参数的评估来标识被指定为处理所述特许事件的所述多个VMM其中之一,确定所述多个VMM中哪一个将处理所述特许事件。
17.如权利要求13所述的系统,其特征在于,所述特许事件表示中断、异常、特许指令的执行和平台事件其中的任一种。
18.如权利要求13所述的系统,其特征在于,所述特许事件在客户软件工作期间出现。
19.如权利要求13所述的系统,其特征在于,所述特许事件在所述多个VMM其中之一工作期间出现。
20.一种系统,包括存储器,其中存储了客户软件和多个虚拟机监控器(VMM);以及处理器,耦合到所述存储器,执行所述客户软件,检测特许事件的出现,确定所述多个VMM中哪一个将处理所述特许事件,以及把控制转到所述多个VMM中所述的一个。
21.如权利要求20所述的系统,其特征在于,所述多个VMM包括主VMM和一个或多个并行VMM。
22.如权利要求20所述的系统,其特征在于,所述处理器通过确定所述特许事件的类型以及标识被指定为处理所确定类型的特许事件的所述多个VMM其中之一,确定所述多个VMM中哪一个将处理所述特许事件。
23.如权利要求20所述的系统,其特征在于,所述处理器通过评估所述多个VMM的资源使用参数以及根据所述资源使用参数的评估来标识被指定为处理所述特许事件的所述多个VMM其中之一,确定所述多个VMM中哪一个将处理所述特许事件。
24.如权利要求20所述的系统,其特征在于,所述特许事件表示中断、异常、特许指令的执行和平台事件其中的任一种。
25.如权利要求20所述的系统,其特征在于,所述特许事件在客户软件和所述多个VMM其中之一的任一个工作期间出现。
26.一种机器可读介质,其中包含指令,这些指令由处理系统执行时,使处理系统执行一种方法,所述方法包括检测特许事件的出现;确定多个虚拟机监控器(VMM)中哪一个将处理所述特许事件;以及把控制转到所述多个VMM中所述的一个。
27.如权利要求26所述的机器可读介质,其特征在于,所述多个VMM包括主VMM和一个或多个并行VMM。
28.如权利要求26所述的机器可读介质,其特征在于,所述特许事件表示中断、异常、特许指令的执行和平台事件其中的任一种。
29.如权利要求26所述的机器可读介质,其特征在于,所述特许事件在客户软件和所述多个VMM其中之一的任一个工作期间出现。
全文摘要
在一个实施例中,用于处理虚拟机环境中的特许事件的方法包括检测特许事件的出现、确定多个虚拟机监控器(VMM)中哪一个将处理特许事件以及把控制转到这个VMM。
文档编号G06F9/455GK1849585SQ200480026300
公开日2006年10月18日 申请日期2004年9月10日 优先权日2003年9月15日
发明者G·奈格, S·贝内特, A·卡吉, S·耶亚辛, A·安德逊, R·乌利希, E·科塔-罗布尔斯, S·罗杰斯, L·史密斯三世 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1