高效嵌套虚拟化的制作方法

文档序号:6340948阅读:466来源:国知局
专利名称:高效嵌套虚拟化的制作方法
高效嵌套虚拟化
背景技术
虚拟机系统允许物理机器被分区或共享,以使该机器的底层硬件呈现为一个或多 个独立工作的虚拟机(VM)。虚拟机监控程序(VMM)可在计算机上运行,并向其他软件呈现 一个或多个VM的抽象。每个VM可用作运行其自己的操作系统(OS)和/或应用程序软件 的自持平台。VM内的软件执行可统称为客户软件。客户软件可期望如同在专用计算机上而不是在VM上运行。即,客户软件可期望控 制各种事件,并可访问计算机(例如物理机)上的硬件资源。该物理机器的硬件资源可包 括一个或多个处理器、驻留在该处理器上的资源(例如控制寄存器、高速缓存以及其他)、 存储器(以及诸如描述符表的驻留在存储器内的结构)以及驻留在物理机中的其他资源 (例如输入一输出(I/O)设备)。这些事件例如可包括中断、异常、平台事件(例如初始化 (INIT)或系统管理中断(SMI))等。VMM可按需使客户软件状态信息(状态)换入/出或传入/出物理机的处理器、设 备、存储器、寄存器等。处理器可在VM与VMM之间的转换期间换入/出一些状态信息。在 一些情况下,VMM可通过允许对底层物理机的直接访问来增强VM的性能。当操作在客户软 件中以非特权模式执行(这将限制对物理机的访问)时,或当操作将不利用VMM希望保持 控制的物理机中的硬件资源时,上述做法特别合适。VMM被认为是VM的主机。例如,只要客户操作会影响VMM或任一个VM的正确执行,则VMM重新获得控制。通 常,在允许该操作继续进行至底层物理机或代表客户仿真该操作和/或硬件之前,VMM检查 此类操作以确定是否存在问题。例如,当客户访问I/O设备、试图改变机器配置(例如通过 改变控制注册值)、试图访问存储器的某些区域等等时,VMM可能需要重新获得控制。支持VM操作的现有的物理机可利用诸如虚拟机控制结构(VMCS)、虚拟机控制块 (VMCB)等等结构来控制VM的执行环境。以VMCS为例,VMCS可被存储于存储器的一个区域 中,且可例如包含客户状态、VMM状态以及表明在客户执行期间VMM希望重新获得控制的条 件的控制信息。物理机中的一个或多个处理器可从VMCS读取信息以确定VM和VMM的执行 环境,并适当地限制客户软件的行为。当转换至VM(例如进入)或转换出(例如退出)VM时,物理机的一个或多个处理 器可装载或存储机器状态信息。然而,在例如VMM由另一 VMM主存的嵌套虚拟化环境下,进 入和退出方案在尝试管理例如状态信息和存储器信息时会变得麻烦和低效。附图简述根据所附权利要求、以下一个或多个示例实施例的详细描述以及相应的附图,本 发明的实施例的特征和优点将变得显而易见,在附图中

图1和2示出用于仿真设备的常规嵌套虚拟化环境和方法。图3包括本发明的一个实施例中的用于高效嵌套虚拟化的方法。图4包括用于实现本发明各个实施例的系统框图。
具体实施例方式在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细 节来实施本发明的实施例。未详细示出众所周知的电路、结构以及技术,以免混淆对本描述 的理解。对“一个实施例”、“一实施例”、“示例实施例“、“多个实施例”等等的引用表明所 描述的实施例可包括特定特征、结构或特性,但并非每个实施例都一定包括那些特定特征、 结构或特性。此外,某些实施例可具有针对其它实施例所描述的特征中的部分、全部特征或 不具有那些特征。此外,如本文所使用的“第一”、“第二”、“第三”等描述了共同的对象,且 表明所指的是相同对象的不同实例。此类形容词不旨在表明如此描述的对象必须是按照时 间、空间、排序或任何其他方式的给定顺序。图1包括常规分层嵌套虚拟化环境的示意框图。例如,系统100包括层O(LO) 115、 层 I(Ll)IlO 以及层 2 (L2) 105。VMl 190 禾口 VM2 195 都位于 LO VMM 130“上方”或与 LO VMM 130—起执行。VMl 190包括由客户操作系统OSl 125支持的应用程序API3Sl 120。VM2 195 “包括” LlVMM 160。因此,系统100是其中例如Ll VMM 160位于LO VMM 130上或“嵌 套”在LO VMM 130中的嵌套虚拟化环境。Ll VMM 160与下层LOVMM 130 “一起”操作。Ll VMM 160 “支持”客户VM20 196和客户VM21197,客户VM20 196和客户VM21 197分别运行 0S20 170/Apps20 180 和 0S21 175/Apps21 185。LO VMM 130可以是例如可利用英特尔的虚拟化技术(VT)、AMD的安全虚拟机等等 的内核虚拟机(KVM),因此VMM可运行客户操作系统(OS)和应用程序。LO VMM 130以及本 文中所描述的其他VMM可包括管理程序,该管理程序可具有管理计算机系统上的多个操作 系统(或同一操作系统的多个实例)的软件程序。该管理程序可管理系统的处理器、存储器 和其他资源以对每个操作系统所需要或想要的作出分配。管理程序可包括肥管理程序(例 如VMware ESX),其包括设备驱动程序、存储器管理、OS等。管理程序还可包括耦合在硬件 与主机OS (例如Linux)之间的瘦管理程序(例如KVM)。管理程序可进一步包括具有服务 OS以及运行在客户软件(例如Xen+域0)中的设备驱动程序的混合管理程序。在系统100中,虚拟机扩展(VM)O引擎被提交给客户Ll VMM 160,客户Ll VMM 160 将创建客户 VM20 196 和 VM21 197。VM20 196 和 VM21197 可分别由虚拟 VMCSs vVMCS20 165 和 vVMCS21 166 管理。vVMCS20165 和 vVMCS21 166 可分别用诸如 sVMCS20 145 和 sVMCS21 155的实际VMCS来遮蔽。当执行诸如VM20 196或VM21 197的L2客户时,每个sVMCS 145、 巧5可被加载为物理VMCS。图2示出用于仿真设备的常规嵌套虚拟化环境和方法。图2可与例如Linux主机 OS和KVM 210—起使用。箭头1示出从被LO VMM 210(类似于图1的LO VMM 130)俘获的 L2客户205(例如图1的VM20 196、VM21197)的VM退出。箭头2示出LO VMM 210将该VM退 出反弹或引导至Ll客户215(类似于图1的Ll VMM 160),或更具体的Ll KVM 230模块。箭头3通向Ll VMM 215 (L2客户205的父事务),Ll VMM 215使用例如设备模型 220、与半虚拟化客户设备的前端驱动程序互补的后端驱动程序等中的任一个来仿真诸如 L2客户205的实体(例如客户、操作、事件、设备驱动程序、设备等)1/0行为。设备建模可 帮助系统与各种设备驱动程序通过接口连接。例如,设备模型可将虚拟化的硬件层/接口 从客户205转换至底层设备。该仿真类似于正常的单层(非嵌套)特权资源访问进行,但 通过嵌套虚拟化,I/O事件(例如请求)首先被LO VMM 210俘获,然后如果Ll VMM 215被CN 102103517 A
说明书
3/7页
配置成接收该事件,则LO VMM210将该事件反弹至Ll VMM 215中。Ll VMM设备模型220可 按照与单层虚拟化时相似的方式为每个客户保持虚拟状态(Wtate) 225,且可向Ll OS要 求I/O事件服务。此外,在嵌套虚拟化中,例如,I/O可从L2客户205被转换至Ll虚拟主机I/O 2400 虚拟主机I/O 240通过位于LO VMM 210中的另一层设备模型(未在图2中示出)来仿真。 该过程可比单层虚拟化慢。因此,虚拟主机I/O 240可以是由LO VMM 210中的设备模型仿 真的设备驱动程序。虚拟主机I/O 240也可以是由LO VMM 210中的后端驱动程序提供服务 的半虚拟化的前端驱动程序。主机I/O 245可以是物理I/O设备的I/O驱动程序。经由箭 头4和5,Ll VMM 215可将出站的1/0(例如网络分组)经由LO VMM210转发给底层硬件。然后可从硬件接收入站的1/0,然后由LO设备模型或后端驱动程序等通过LO VMM 210经由箭头6将入站I/O路由至Ll VMM 215虚拟主机Ι/0Μ0,并经由箭头7将入站I/O 路由至设备模型220。在设备模型完成仿真之后,它可要求Ll VMM 215经由LO VMM 210经 由箭头8和9通知L2客户205以指示提供I/O服务完成。LO VMM 210可仿真来自Ll VMM 215的虚拟VM恢复事件以恢复L2客户205。如方法200中可见,由于例如多层嵌套环境固有的特权限制,使用常规嵌套虚拟 化进程提供I/O服务是间接冒险。例如,利用嵌套虚拟化,LlVMM 215以去特权化的方式操 作,从而必须依赖于有特权的LO VMM 210来访问有特权的资源。这是低效的。以下说明该低效性。例如,单层VMM中的I/O仿真可访问系统有特权的资源许多次 (例如访问次数(“NA”))以成功地仿真客户行为。具体而言,单层VMM可访问其I/O仿真 通道中的诸如控制寄存器(CR)、物理I/O寄存器和/或VMCS寄存器的有特权资源。然而, 在嵌套虚拟化中,该过程可能是不同的。例如,在单层虚拟化中仿真L2客户I/O的VMM在 嵌套虚拟化结构中成为Ll VMM。该Ll VMM现在以非特权模式运行。LlVMM中的每个有特 权的资源访问现在将触发往LO VMM的VM退出以便进一步仿真。该触发是对L2客户VM与 Ll VMM之间进行的俘获的附加。因此,每次访问都存在增加的“每次访问的周期数(NC) ”或 "Per_VM_Exit_cost (每次VM退出成本)”。因此,L2客户的I/O仿真的附加成本变成L2NC =NONA。相比于单层虚拟化,这是大的计算开销。当使用KVM时,NV大约可以是500个周 期,且NA可约为25。因此,L2NC = 5,000周期/每次访问*25次访问=125,000周期的开 销。在本发明的一个实施例中,使嵌套虚拟化环境中的退出和/或进入过程更高效。 例如,LO VMM可直接仿真L2客户1/0,而不是通过Ll VMM间接仿真。该直接仿真可通过例 如在Ll VMM与LO VMM之间共享虚拟客户状态(例如虚拟CPU状态、虚拟设备状态和/或 虚拟物理存储器状态)来进行。作为另一示例,Ll VMM信息(例如以下寻址的L2物理到 机器(“pan”)地址转换表)可在Ll VMM与LO VMM之间被共享。在本发明的一个实施例中,例如,因为同一 VMM在LO和Ll层上执行,所以可实现 该效率增益。这种情况可能在例如在第二 KVM之上运行第一 KVM的多层VT (虚拟化)情况 下出现。在这样的情形下,LO和Ll VMM两者中的设备模型相同,且因此这些设备模型理解 LO或Ll VMM所使用的虚拟设备状态格式。然而,本发明的实施例不需要将同一 VMM用于LO和Ll层。本发明的一些实施例 可将不同的VMM类型用于LO和Ll层。在此类情况下,L2客户的虚拟状态信息可被包括在Ll VMM和Ll VMM设备模型中,但仍与LO VMM和LO VMM设备模型一起共享并被LO VMM和 LO VMM设备模型理解。作为对比,在常规系统中,Ll VMM已知的虚拟客户状态不为LO VMM所知或共享 (反之亦然)。缺少共享可能是因为例如Ll VMM不知道它是在本机平台还是在虚拟化的平 台上运行。此外,Ll VMM可能不理解例如LO VMM承认的共享状态的位格式/语义。此外, 在常规系统中,L2客户是Ll VMM的客户,因此L2客户不知道LO VMM。因此,对于单层虚拟 化情形,L2客户退出转向Ll VMM而不是LO VMM。如关于图2所描述的,在两层虚拟化情况 下,LO VMM仍确保L2客户VM退出转向Ll VMM。因此,本发明的一些实施例与常规系统不 同,因为例如虚拟状态(例如虚拟客户状态)在LO与Ll VMM之间被共享。因此,LO VMM可 仿真例如L2客户1/0,并避免通常与嵌套虚拟化相关联的一些开销。图3包括用于高效嵌套虚拟化的方法300。为说明目的,方法300被示为处理网络 分组的传输,但该方法不限于处理此类事件,且可替代地应用于诸如I/O事件(例如接收、 处理和传输网络信息、磁盘读写、流输入输出等)的各种事件。此外,该方法不限于仅对诸 如仿真设备的实体起作用。例如,本方法的实施例也可对诸如半虚拟化设备驱动程序的实 体起作用。然而,在完整陈述图3之前,首先更完整地陈述虚拟化和半虚拟化的环境。虚拟化 环境包括全虚拟化环境以及半虚拟化环境。在全虚拟化环境中,每个客户OS可如同底层VM 仅仅是客户OS支持的独立物理处理系统地操作。因此,客户OS可预期或希望VM根据所支 持的物理处理系统的体系结构规范来工作。作为比较,在半虚拟化中,客户OS帮助VMM提 供虚拟化环境。因此,客户OS可被表征为虚拟化已知。半虚拟化的客户OS可能仅能够协 同特定VMM操作,而全虚拟化环境的客户机OS可在两种或更多种不同类型的VMM上操作。 半虚拟化可按需对客户操作系统的诸如内核的源代码作出改变,以使它能在特定VMM上运 行。半虚拟化I/O (例如I/O事件)可与半虚拟化OS内核(经修改)或全虚拟化OS 内核(未经修改)一起使用或在其中使用。半虚拟化I/O可使用客户设备中的前端驱动程 序来与位于VMM(例如LO VMM)中的后端驱动程序通信。此外,半虚拟化可使用共享存储器 来传送批量数据,以节省俘获和仿真工作,而全虚拟化I/O可能需要遵循由原始仿真设备 提供的语义。返回参照图3,方法300包括LO VMM 330和支持VM 20 396的Ll VMM 360,所有 这些组合以形成用于诸如例如英特尔EprolOOO (82546EB) NIC的网络接口卡(NIC)的虚拟 化环境。在方法300开始之前,LO VMM330可创建可运行Ll VMM 360的VM2 (未示出)。此 外,LO VMM 330可能知道VM2存储器分配或Ll客户伪物理地址向层0机器地址的转换表 或映射(例如Ll_to_L0_p2m[])。在行1,L1 VMM 360可创建被包括在VM2 “之中”的L2客 户VM20396。Ll VMM 360可知道VM20 396的伪P2M映射(即VM20 396客户物理地址向Ll VMM 360伪物理地址的映射(例如L2_to_Ll_pan[]))。在行2中,Ll VMM 360可发出请求 (例如通过超调用HO或其它通信通道)以要求LO VMM 330将L2客户物理地址映射至用于 VM 20 396的LO VMM 330实际物理机器地址表(例如L2_to_L0_pan[])。在行3中,LO VMM 330可从行2接收该请求。在行4中,LO VMM 330可使用之前 接收或已知的信息(即L2_to_Ll_paii[])将VM20客户物理地址重新映射至LO机器地址(L2_to_L0_p2m[]) ο 这是通过例如利用 Ll VMM360 或 Ll 客户(VM2)的 P2M 表(Ll_to_L0_ p2m[])来实现的,因为L2客户存储器是Ll客户(VM2)的一部分,所以这是可能的。例如, 对于给定 L2 客户物理地址 χ :L2_to_L0_p2m[x] = Ll_to_L0_pan[L2_to_Ll_paii[x]]。在行5,Ll VMM 360可启动VM20 396,且VM20 396的执行可开始。在行6,VM 20 OS可开始。在行7,VM20 396 OS的执行可实现诸如虚拟NIC设备的虚拟设备。这可使虚拟NIC设备在行8初始化。在行9,Ll VMM 360可请求与LO VMM 330 通信(例如通过超调用Hl或其它通信通道),以共享NIC设备的客户状态(例如vm20_ veprol000_state)和/或CPU的客户状态。客户虚拟CPU或处理器状态可包括例如 vm20-vCPU-state (vm20_vCPU-状态),其可对应于诸如VM20 396的12_vCR3的L2虚拟控制 寄存器(CI0CR3。状态信息可通过例如共享存储器来共享,在共享存储器处Ll VMM和LOVMM 二者可看到被共享状态并操纵那些状态。在行10,LO VMM 330可接收请求(例如超调用Hl),且在行11,LO VMM 330可将 虚拟NIC设备状态重新映射到LO VMM 430内部地址空间中。因此,LO VMM 430可能能够 访问虚拟NIC和CPU状态信息。在行12,VM 20可通过填充传输缓冲器及其直接存储器存取(DMA)控制数据结构 (诸如英特尔82M6EB NIC控制器中的DMA描述符环结构)而开始发送分组。LO VMM 330 现在绕过Ll VMM 360,并与VM 20 396通过接口直接连接。在行13,如VM 20在其本机环境 下操作时将会进行的,通过对诸如英特尔82M6EB NIC控制器中的传输描述符尾部(TDT) 寄存器的专用硬件寄存器编程,VM 20可通知虚拟NIC设备DMA描述符填充完成。TDT寄存 器可以是存储器映射的I/O(MMIO)寄存器,但也可以是例如端口 I/O。Ll VMM 360可能没 有对匪IO地址的直接转换,该匪IO地址直接转换可能允许Ll VMM 360通过退出事件(例 如页面错误(#PF)VM退出)俘获和仿真客户MMIO访问。因此,LO VMM 330可能没有仿真 Ll VMM转换的MMIO地址转换。在行14,TDT寄存器的地址触发VM退出(#PF)。LO VMM 330可从VM退出信息获 得该#PF的线性地址(例如诸如12_gva的MMIO访问地址)。在行15,LO VMM 330可走查 或遍历L2客户页面表以将12_gva转换成其L2客户物理地址(例如12_gpa)。对该L2客 户页面表的走查或遍历可从由L2客户CR3(例如12_vcr;3)所指向的L2客户物理地址开始。在行16,LO VMM 330可确定12_gpa是否是经加速的1/0(即I/O仿真可绕过Ll VMM 215)。如果12_gpa是经加速的I/O,则在行17,LO VMM可基于共享的虚拟NIC和CPU 状态信息(例如 ¥11120_¥印1~01000_8{3{6 和 vm20-vCPU-state)执行仿真。在行 18,LO VMM 330可取出L2虚拟NIC设备DMA描述符,并利用L2_to_L0_paii表执行转换,以将12客户 物理地址转换成实际机器物理地址。在行19,L0 VMM 330可具有传输有效载荷,并在LO主 机I/O中传输该有效载荷。LO VMM 330还可更新共享数据中的¥!1120]印1~01000_8{3{6和 vm20-vCPU-state。在行 20,L2 客户可恢复。因此,LO VMM 330 可使用(在 LO VMM 330 与 Ll VMM 360 之间)共享的 L2_to_L0_ p2m 表、vm20_veprol000_state 以及 vm20-vCPU_state (例如 12 vCR3)来访问虚拟 NIC 设 备DMA描述符环和传输缓冲器,从而将分组直接发送至外部网络,而不经由Ll VMM 360将 分组间接发送至外部网络。在LO VMM 300必须将L2客户I/O访问传递到Ll VMM 360时, 这样做会在Ll VMM 360与LO VMM 330之间触发许多VM退出/进入动作。这些退出/进入动作可能导致糟糕的性能。在方法300的示例中,分组传输并未触发中断请求(IRQ)。然而,如果IRQ已由于例 如传输完成而引发,则Ll VMM 360可被用于虚拟中断注入。然而,在一个实施例中,通过共 享诸如例如虚拟高级可编程中断控制器(APIC)状态、I/O APIC状态、消息告知中断(MSI) 状态以及由LO VMM330直接操纵的虚拟CPU状态信息的中断控制器状态信息,可进行进一 步优化以绕过Ll VMM对IRQ注入的介入。方法300涉及将设备模型用于分组传输。然而,本发明的一些实施例可采用可能 与方法300并无实质不同的用于接收分组的方法,因此在此不再赘述。一般而言,如果LO VMM能决定分组的最终接收者是L2客户,则同一方法可将接收到的分组(在LO VMM 330 中)复制到L2客户缓冲器中,并更新虚拟NIC设备状态。为此,Ll VMM 330可与LO VMM共 享其网络配置信息(例如L2客户的IP地址、Ll VMM的过滤信息)。此外,发送至不同L2VM 的分组可到达同一物理NIC。因此,LO VMM中的交换机可基于例如介质访问控制(MAC)地 址、IP地址等将分组分发至不同的VM。也可将与方法300相似的方法与半虚拟化设备驱动程序一起使用。例如,半虚拟 化网络设备可与全仿真设备相似地操作。然而,在半虚拟化设备中,L2客户或前端驱动程 序可以是VMM已知的驱动程序。服务VM(例如图2中的Ll VMM 215)可运行后端驱动程序 以提供L2请求I/O请求而非图2中的设备模型220。该LO VMM可具有理解来自Ll VMM后 端驱动程序的共享设备状态并直接提供L2客户的请求的能力,这可能意味着LOVMM也可运 行与本发明一个实施例中的Ll VMM中相同的后端驱动程序。具体地,利用图3的分组传输 示例,当工作于半虚拟化环境时,行12和13可被变更。基于实际设备语义,行12和13中 的操作可用诸如来自VM 20 396的超调用的更高效方法替换,以告知虚拟硬件开始分组传 输。此外,提供来自行12-13的请求的行14-18可与基于实际设备语义传递的参数稍稍不 同。例如,LO VMM可使用半虚拟化I/O定义方法传递的缓冲器地址取出客户传输缓冲器。 利用与上述用于发送分组的过程相似的半虚拟化I/O操作接收分组,因此在此不再赘述该 方法。因此,本文中所描述的各个实施例可允许LO VMM在进行例如L2客户I/O仿真/服 务时绕过Ll VMM。换言之,各个实施例在LO VMM在某种程度上绕过Ll VMM的情况下直接 向L2客户仿真/提供虚拟化实体(例如全虚拟化设备、半虚拟化设备等)。这可通过在LO VMM与Ll VMM之间共享L2客户状态信息来完成,该L2客户状态信息通常仅为父VMM所知 (例如,诸如在L2客户与Ll VMM之间)。在Ll VMM与LO VMM之间共享帮助绕过Ll VMM 以实现更佳性能。在此处使用的模块指的是任何硬件、软件、固件、或它们的组合。通常被示为分开 的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它 们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使 用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另 一实施例中,逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。实施例可在许多不同的系统类型中实现。现在参照图4,其中示出了根据本发明一 实施例的系统的框图。多处理器系统500是点对点互连系统,且包括经由点对点互连550 耦合的第一处理器570和第二处理器580。处理器570和580中的每一个可以是包括第一和第二处理器核(即处理器核57 和574b以及处理器核58 和584b)的多核处理器,尽 管这些处理器中可能存在更多核。术语“处理器”可表示任何设备或设备的一部分,其处理 来自寄存器和/或存储器的电子数据,以将该电子数据转换成可存储于寄存器和/或存储 器中的其它电子数据。第一处理器570还包括存储器控制器中枢(MCH) 572与点对点(P_P)接口 576和 578。类似地,第二处理器580包括MCH 582与P-P接口 586和588。MCH 572和582将处 理器耦合至相应的存储器即存储器532和存储器534,它们可以是本地附连至相应处理器 的主存储器(例如动态随机存取存储器(DRAM))的多个部分。第一处理器570和第二处理 器580可分别经由P-P互连552和5M耦合至芯片组590。芯片组590包括P-P接口 594 和 598。此外,芯片组590包括通过P-P互连539将芯片组590与高性能图形引擎538耦 合的接口 592。芯片组590又经由接口 596耦合至第一总线516。多个输入/输出(I/O) 设备514以及总线桥518可耦合至第一总线516,该总线桥518将第一总线516耦合至第二 总线520。多个设备可耦合至第二总线520,包括例如键盘/鼠标522、通信设备526以及诸 如磁盘驱动器或在一个实施例中为其它大容量存储设备的可包括代码530的数据存储单 元528。此外,音频I/O 5M可耦合至第二总线520。实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行 这些指令的存储介质上。该存储介质可包括但不限于包括软盘、光盘、固态驱动器(SSD)、 光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)以及磁光盘的任何类型的盘;诸如只读存 储器(ROM)、诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)之类的随机 存取存储器(RAM)、可擦写可编程只读存储器(EPROM)、闪存、电可擦写可编程只读存储器 (EEPROM)之类的半导体器件;磁卡或光卡;或适合于存储电子指令的任何其他类型的介 质。本发明诸实施例可在本文中参照诸如指令、函数、程序、数据结构、应用、应用程 序、配置设定、代码等数据来进行描述。如本文中更详细描述的,当数据被机器访问时,机器 可通过执行任务、定义抽象数据类型、建立低级硬件上下文、和/或执行其它操作来作出响 应。该数据可被存储于易失性和/或非易失性数据存储中。出于本公开内容的目的,术语 “代码”或“程序”或“应用程序”覆盖了广泛范围的部件和构造,包括驱动电路、处理器、例 程、方法、模块以及子程序。因此,术语“代码”或“程序”或“应用程序”可被用于指代任何 指令集合,这些指令集合在由处理系统执行时实现所需操作或多个操作。此外,替代实施例 可包括使用比所公开的全部操作(例如图3)少的过程、使用附加操作的过程、使用按照不 同顺序的相同操作的过程、以及其中将本文中所公开的各个操作组合、划分或者变更的过 程。虽然已经关于有限个实施例描述了本发明,但本领域技术人员将会理解从中得出 的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修 改和变化。
权利要求
1.一种方法,包括使用处理器生成第一虚拟机(VM),并将所述第一 VM存储于耦合至所述处理器的存储 器中;用所述第一 VM执行客户应用程序;用第一虚拟机监控程序(VMM)执行所述第一 VM;在嵌套虚拟化环境中用第二 VMM执行所述第一 VMM ;以及用所述第二 VMM向所述客户直接仿真底层虚拟化设备;其中所述第二 VMM被包括在比所述第一 VMM低的虚拟化层中,且所述虚拟化设备耦合 至所述处理器。
2.如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM用所述第二 VMM 向所述客户直接仿真所述设备。
3.如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与 所述设备相对应的虚拟设备状态信息,通过绕过所述第一 VMM用所述第二 VMM向所述客户 直接仿真所述设备。
4.如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二 VMM之间共享虚拟处理器状态信息,通过绕过所述第一 VMM用 所述第二 VMM向所述客户直接仿真所述设备;以及将所述虚拟处理器状态信息存储在耦合至所述处理器的存储器部分中。
5.如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与 所述客户有关的虚拟物理存储器状态信息,通过绕过所述第一 VMM用所述第二 VMM向所述 客户直接仿真所述设备。
6.如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与 所述客户有关的地址转换信息,通过绕过所述第一 VMM用所述第二 VMM向所述客户直接仿 真所述设备。
7.如权利要求1所述的方法,其特征在于,所述第一和第二VMM包括等效的设备模型。
8.如权利要求1所述的方法,其特征在于,包括直接仿真与所述客户相对应的半虚拟 化设备驱动程序。
9.如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM从所述客户向所 述第二 VMM直接发送网络分组信息。
10.一种物品,包括存储指令的介质,所述指令使基于处理器的系统能在第一虚拟机(VM)上执行客户应用程序;在第一虚拟机监控程序(VMM)上执行所述第一 VM ;在嵌套虚拟化环境中在第二 VMM上执行所述第一 VMM ;以及用所述第二 VMM向所述客户直接仿真底层虚拟化实体。
11.如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能 通过绕过所述第一 VMM用所述第二 VMM向所述客户直接仿真所述实体。
12.如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能 基于在所述第一和第二 VMM之间共享与所述实体相对应的虚拟实体状态信息,通过绕过所 述第一 VMM用所述第二 VMM向所述客户直接仿真所述实体。
13.如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能 基于在所述第一和第二 VMM之间共享虚拟处理器状态信息,通过绕过所述第一 VMM用所述 第二 VMM向所述客户直接仿真所述实体。
14.如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能 基于在所述第一和第二 VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所 述第一 VMM用所述第二 VMM向所述客户直接仿真所述实体。
15.如权利要求10所述的物品,其特征在于,所述实体包括虚拟化设备。
16.一种装置,包括耦合至存储器的处理器,用于(1)在存储于所述处理器中的第一虚拟机(VM)上执行 客户应用程序;(2)在第一虚拟机监控程序(VMM)上执行所述第一 VM ; (3)在嵌套虚拟化环 境中在第二 VMM上执行所述第一 VMM ;以及(4)用所述第二 VMM向所述客户直接仿真底层 虚拟化实体。
17.如权利要求16所述的装置,其特征在于,所述处理器用于通过绕过所述第一VMM用 所述第二 VMM向所述客户直接仿真所述实体。
18.如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二 VMM之间共享虚拟客户状态信息,通过绕过所述第一 VMM用所述第二 VMM向所述客户直接仿 真所述实体。
19.如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二 VMM之间共享虚拟客户处理器状态信息,通过绕过所述第一 VMM用所述第二 VMM向所述客户 直接仿真所述实体。
20.如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二 VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所述第一 VMM用所述第二 VMM向所述客户直接仿真所述实体。
全文摘要
在本发明的一个实施例中,使嵌套虚拟化环境中的退出和/或进入过程更高效。例如,层0(L0)虚拟机管理器(VMM)可直接仿真层2(L2)客户中断,而不是通过层1(L1)VMM间接地仿真。该直接仿真可通过例如在L1 VMM与L0 VMM之间共享虚拟状态(例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态)来进行。作为另一示例,L1 VMM信息(例如L2物理到机器地址转换表)可在L1 VMM与L0 VMM之间被共享。
文档编号G06F9/455GK102103517SQ20101061798
公开日2011年6月22日 申请日期2010年12月21日 优先权日2009年12月22日
发明者董耀祖 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1