《高效嵌套虚拟化.pdf》由会员分享,可在线阅读,更多相关《高效嵌套虚拟化.pdf(14页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102103517A43申请公布日20110622CN102103517ACN102103517A21申请号201010617982022申请日2010122112/644,84720091222USG06F9/45520060171申请人英特尔公司地址美国加利福尼亚州72发明人董耀祖74专利代理机构上海专利商标事务所有限公司31100代理人毛力54发明名称高效嵌套虚拟化57摘要在本发明的一个实施例中,使嵌套虚拟化环境中的退出和/或进入过程更高效。例如,层0L0虚拟机管理器VMM可直接仿真层2L2客户中断,而不是通过层1L1VMM间接地仿真。该直接仿真可通过例如在L1VMM与。
2、L0VMM之间共享虚拟状态例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态来进行。作为另一示例,L1VMM信息例如L2物理到机器地址转换表可在L1VMM与L0VMM之间被共享。30优先权数据51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书7页附图4页CN102103520A1/2页21一种方法,包括使用处理器生成第一虚拟机VM,并将所述第一VM存储于耦合至所述处理器的存储器中;用所述第一VM执行客户应用程序;用第一虚拟机监控程序VMM执行所述第一VM;在嵌套虚拟化环境中用第二VMM执行所述第一VMM;以及用所述第二VMM向所述客户直接仿真底层虚拟化设备。
3、;其中所述第二VMM被包括在比所述第一VMM低的虚拟化层中,且所述虚拟化设备耦合至所述处理器。2如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。3如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述设备相对应的虚拟设备状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。4如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享虚拟处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备;以及将所述虚拟处理器状态信息存储在耦合至所述处理器的存储器。
4、部分中。5如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述客户有关的虚拟物理存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。6如权利要求1所述的方法,其特征在于,包括基于在所述第一和第二VMM之间共享与所述客户有关的地址转换信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述设备。7如权利要求1所述的方法,其特征在于,所述第一和第二VMM包括等效的设备模型。8如权利要求1所述的方法,其特征在于,包括直接仿真与所述客户相对应的半虚拟化设备驱动程序。9如权利要求1所述的方法,其特征在于,包括通过绕过所述第一VMM从所述。
5、客户向所述第二VMM直接发送网络分组信息。10一种物品,包括存储指令的介质,所述指令使基于处理器的系统能在第一虚拟机VM上执行客户应用程序;在第一虚拟机监控程序VMM上执行所述第一VM;在嵌套虚拟化环境中在第二VMM上执行所述第一VMM;以及用所述第二VMM向所述客户直接仿真底层虚拟化实体。11如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。12如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享与所述实体相对应的虚拟实体状态信息,通过绕过所述第一。
6、VMM用所述第二VMM向所述客户直接仿真所述实体。权利要求书CN102103517ACN102103520A2/2页313如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享虚拟处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。14如权利要求10所述的物品,其特征在于,进一步存储指令,所述指令使所述系统能基于在所述第一和第二VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。15如权利要求10所述的物品,其特征在于,所述实体包括虚拟化设备。16。
7、一种装置,包括耦合至存储器的处理器,用于1在存储于所述处理器中的第一虚拟机VM上执行客户应用程序;2在第一虚拟机监控程序VMM上执行所述第一VM;3在嵌套虚拟化环境中在第二VMM上执行所述第一VMM;以及4用所述第二VMM向所述客户直接仿真底层虚拟化实体。17如权利要求16所述的装置,其特征在于,所述处理器用于通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。18如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二VMM之间共享虚拟客户状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。19如权利要求16所述的装置,其特征在于,所述处。
8、理器用于基于在所述第一和第二VMM之间共享虚拟客户处理器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。20如权利要求16所述的装置,其特征在于,所述处理器用于基于在所述第一和第二VMM之间共享与所述客户有关的虚拟存储器状态信息,通过绕过所述第一VMM用所述第二VMM向所述客户直接仿真所述实体。权利要求书CN102103517ACN102103520A1/7页4高效嵌套虚拟化背景技术0001虚拟机系统允许物理机器被分区或共享,以使该机器的底层硬件呈现为一个或多个独立工作的虚拟机VM。虚拟机监控程序VMM可在计算机上运行,并向其他软件呈现一个或多个VM的抽象。每个VM。
9、可用作运行其自己的操作系统OS和/或应用程序软件的自持平台。VM内的软件执行可统称为客户软件。0002客户软件可期望如同在专用计算机上而不是在VM上运行。即,客户软件可期望控制各种事件,并可访问计算机例如物理机上的硬件资源。该物理机器的硬件资源可包括一个或多个处理器、驻留在该处理器上的资源例如控制寄存器、高速缓存以及其他、存储器以及诸如描述符表的驻留在存储器内的结构以及驻留在物理机中的其他资源例如输入输出I/O设备。这些事件例如可包括中断、异常、平台事件例如初始化INIT或系统管理中断SMI等。0003VMM可按需使客户软件状态信息状态换入/出或传入/出物理机的处理器、设备、存储器、寄存器等。。
10、处理器可在VM与VMM之间的转换期间换入/出一些状态信息。在一些情况下,VMM可通过允许对底层物理机的直接访问来增强VM的性能。当操作在客户软件中以非特权模式执行这将限制对物理机的访问时,或当操作将不利用VMM希望保持控制的物理机中的硬件资源时,上述做法特别合适。VMM被认为是VM的主机。0004例如,只要客户操作会影响VMM或任一个VM的正确执行,则VMM重新获得控制。通常,在允许该操作继续进行至底层物理机或代表客户仿真该操作和/或硬件之前,VMM检查此类操作以确定是否存在问题。例如,当客户访问I/O设备、试图改变机器配置例如通过改变控制注册值、试图访问存储器的某些区域等等时,VMM可能需要。
11、重新获得控制。0005支持VM操作的现有的物理机可利用诸如虚拟机控制结构VMCS、虚拟机控制块VMCB等等结构来控制VM的执行环境。以VMCS为例,VMCS可被存储于存储器的一个区域中,且可例如包含客户状态、VMM状态以及表明在客户执行期间VMM希望重新获得控制的条件的控制信息。物理机中的一个或多个处理器可从VMCS读取信息以确定VM和VMM的执行环境,并适当地限制客户软件的行为。0006当转换至VM例如进入或转换出例如退出VM时,物理机的一个或多个处理器可装载或存储机器状态信息。然而,在例如VMM由另一VMM主存的嵌套虚拟化环境下,进入和退出方案在尝试管理例如状态信息和存储器信息时会变得麻烦。
12、和低效。0007附图简述0008根据所附权利要求、以下一个或多个示例实施例的详细描述以及相应的附图,本发明的实施例的特征和优点将变得显而易见,在附图中0009图1和2示出用于仿真设备的常规嵌套虚拟化环境和方法。0010图3包括本发明的一个实施例中的用于高效嵌套虚拟化的方法。0011图4包括用于实现本发明各个实施例的系统框图。说明书CN102103517ACN102103520A2/7页5具体实施方式0012在以下描述中,陈述了多个具体细节。然而,应当理解的是,可不通过这些具体细节来实施本发明的实施例。未详细示出众所周知的电路、结构以及技术,以免混淆对本描述的理解。对“一个实施例”、“一实施例”。
13、、“示例实施例“、“多个实施例”等等的引用表明所描述的实施例可包括特定特征、结构或特性,但并非每个实施例都一定包括那些特定特征、结构或特性。此外,某些实施例可具有针对其它实施例所描述的特征中的部分、全部特征或不具有那些特征。此外,如本文所使用的“第一”、“第二”、“第三”等描述了共同的对象,且表明所指的是相同对象的不同实例。此类形容词不旨在表明如此描述的对象必须是按照时间、空间、排序或任何其他方式的给定顺序。0013图1包括常规分层嵌套虚拟化环境的示意框图。例如,系统100包括层0L0115、层1L1110以及层2L2105。VM1190和VM2195都位于L0VMM130“上方”或与L0VM。
14、M130一起执行。VM1190包括由客户操作系统OS1125支持的应用程序APPS1120。VM2195“包括”L1VMM160。因此,系统100是其中例如L1VMM160位于L0VMM130上或“嵌套”在L0VMM130中的嵌套虚拟化环境。L1VMM160与下层L0VMM130“一起”操作。L1VMM160“支持”客户VM20196和客户VM21197,客户VM20196和客户VM21197分别运行OS20170/APPS20180和OS21175/APPS21185。0014L0VMM130可以是例如可利用英特尔的虚拟化技术VT、AMD的安全虚拟机等等的内核虚拟机KVM,因此VMM可运行客。
15、户操作系统OS和应用程序。L0VMM130以及本文中所描述的其他VMM可包括管理程序,该管理程序可具有管理计算机系统上的多个操作系统或同一操作系统的多个实例的软件程序。该管理程序可管理系统的处理器、存储器和其他资源以对每个操作系统所需要或想要的作出分配。管理程序可包括肥管理程序例如VMWAREESX,其包括设备驱动程序、存储器管理、OS等。管理程序还可包括耦合在硬件与主机OS例如LINUX之间的瘦管理程序例如KVM。管理程序可进一步包括具有服务OS以及运行在客户软件例如XEN域0中的设备驱动程序的混合管理程序。0015在系统100中,虚拟机扩展VMX引擎被提交给客户L1VMM160,客户L1V。
16、MM160将创建客户VM20196和VM21197。VM20196和VM21197可分别由虚拟VMCSSVVMCS20165和VVMCS21166管理。VVMCS20165和VVMCS21166可分别用诸如SVMCS20145和SVMCS21155的实际VMCS来遮蔽。当执行诸如VM20196或VM21197的L2客户时,每个SVMCS145、155可被加载为物理VMCS。0016图2示出用于仿真设备的常规嵌套虚拟化环境和方法。图2可与例如LINUX主机OS和KVM210一起使用。箭头1示出从被L0VMM210类似于图1的L0VMM130俘获的L2客户205例如图1的VM20196、VM211。
17、97的VM退出。箭头2示出L0VMM210将该VM退出反弹或引导至L1客户215类似于图1的L1VMM160,或更具体的L1KVM230模块。0017箭头3通向L1VMM215L2客户205的父事务,L1VMM215使用例如设备模型220、与半虚拟化客户设备的前端驱动程序互补的后端驱动程序等中的任一个来仿真诸如L2客户205的实体例如客户、操作、事件、设备驱动程序、设备等I/O行为。设备建模可帮助系统与各种设备驱动程序通过接口连接。例如,设备模型可将虚拟化的硬件层/接口从客户205转换至底层设备。该仿真类似于正常的单层非嵌套特权资源访问进行,但通过嵌套虚拟化,I/O事件例如请求首先被L0VMM。
18、210俘获,然后如果L1VMM215被说明书CN102103517ACN102103520A3/7页6配置成接收该事件,则L0VMM210将该事件反弹至L1VMM215中。L1VMM设备模型220可按照与单层虚拟化时相似的方式为每个客户保持虚拟状态VSTATE225,且可向L1OS要求I/O事件服务。0018此外,在嵌套虚拟化中,例如,I/O可从L2客户205被转换至L1虚拟主机I/O240。虚拟主机I/O240通过位于L0VMM210中的另一层设备模型未在图2中示出来仿真。该过程可比单层虚拟化慢。因此,虚拟主机I/O240可以是由L0VMM210中的设备模型仿真的设备驱动程序。虚拟主机I/O。
19、240也可以是由L0VMM210中的后端驱动程序提供服务的半虚拟化的前端驱动程序。主机I/O245可以是物理I/O设备的I/O驱动程序。经由箭头4和5,L1VMM215可将出站的I/O例如网络分组经由L0VMM210转发给底层硬件。0019然后可从硬件接收入站的I/O,然后由L0设备模型或后端驱动程序等通过L0VMM210经由箭头6将入站I/O路由至L1VMM215虚拟主机I/O240,并经由箭头7将入站I/O路由至设备模型220。在设备模型完成仿真之后,它可要求L1VMM215经由L0VMM210经由箭头8和9通知L2客户205以指示提供I/O服务完成。L0VMM210可仿真来自L1VMM2。
20、15的虚拟VM恢复事件以恢复L2客户205。0020如方法200中可见,由于例如多层嵌套环境固有的特权限制,使用常规嵌套虚拟化进程提供I/O服务是间接冒险。例如,利用嵌套虚拟化,L1VMM215以去特权化的方式操作,从而必须依赖于有特权的L0VMM210来访问有特权的资源。这是低效的。0021以下说明该低效性。例如,单层VMM中的I/O仿真可访问系统有特权的资源许多次例如访问次数“NA”以成功地仿真客户行为。具体而言,单层VMM可访问其I/O仿真通道中的诸如控制寄存器CR、物理I/O寄存器和/或VMCS寄存器的有特权资源。然而,在嵌套虚拟化中,该过程可能是不同的。例如,在单层虚拟化中仿真L2客。
21、户I/O的VMM在嵌套虚拟化结构中成为L1VMM。该L1VMM现在以非特权模式运行。L1VMM中的每个有特权的资源访问现在将触发往L0VMM的VM退出以便进一步仿真。该触发是对L2客户VM与L1VMM之间进行的俘获的附加。因此,每次访问都存在增加的“每次访问的周期数NC”或“PER_VM_EXIT_COST每次VM退出成本”。因此,L2客户的I/O仿真的附加成本变成L2NCNCNA。相比于单层虚拟化,这是大的计算开销。当使用KVM时,NV大约可以是500个周期,且NA可约为25。因此,L2NC5,000周期/每次访问25次访问125,000周期的开销。0022在本发明的一个实施例中,使嵌套虚拟。
22、化环境中的退出和/或进入过程更高效。例如,L0VMM可直接仿真L2客户I/O,而不是通过L1VMM间接仿真。该直接仿真可通过例如在L1VMM与L0VMM之间共享虚拟客户状态例如虚拟CPU状态、虚拟设备状态和/或虚拟物理存储器状态来进行。作为另一示例,L1VMM信息例如以下寻址的L2物理到机器“P2M”地址转换表可在L1VMM与L0VMM之间被共享。0023在本发明的一个实施例中,例如,因为同一VMM在L0和L1层上执行,所以可实现该效率增益。这种情况可能在例如在第二KVM之上运行第一KVM的多层VT虚拟化情况下出现。在这样的情形下,L0和L1VMM两者中的设备模型相同,且因此这些设备模型理解L。
23、0或L1VMM所使用的虚拟设备状态格式。0024然而,本发明的实施例不需要将同一VMM用于L0和L1层。本发明的一些实施例可将不同的VMM类型用于L0和L1层。在此类情况下,L2客户的虚拟状态信息可被包括在说明书CN102103517ACN102103520A4/7页7L1VMM和L1VMM设备模型中,但仍与L0VMM和L0VMM设备模型一起共享并被L0VMM和L0VMM设备模型理解。0025作为对比,在常规系统中,L1VMM已知的虚拟客户状态不为L0VMM所知或共享反之亦然。缺少共享可能是因为例如L1VMM不知道它是在本机平台还是在虚拟化的平台上运行。此外,L1VMM可能不理解例如L0VMM。
24、承认的共享状态的位格式/语义。此外,在常规系统中,L2客户是L1VMM的客户,因此L2客户不知道L0VMM。因此,对于单层虚拟化情形,L2客户退出转向L1VMM而不是L0VMM。如关于图2所描述的,在两层虚拟化情况下,L0VMM仍确保L2客户VM退出转向L1VMM。因此,本发明的一些实施例与常规系统不同,因为例如虚拟状态例如虚拟客户状态在L0与L1VMM之间被共享。因此,L0VMM可仿真例如L2客户I/O,并避免通常与嵌套虚拟化相关联的一些开销。0026图3包括用于高效嵌套虚拟化的方法300。为说明目的,方法300被示为处理网络分组的传输,但该方法不限于处理此类事件,且可替代地应用于诸如I/O。
25、事件例如接收、处理和传输网络信息、磁盘读写、流输入输出等的各种事件。此外,该方法不限于仅对诸如仿真设备的实体起作用。例如,本方法的实施例也可对诸如半虚拟化设备驱动程序的实体起作用。0027然而,在完整陈述图3之前,首先更完整地陈述虚拟化和半虚拟化的环境。虚拟化环境包括全虚拟化环境以及半虚拟化环境。在全虚拟化环境中,每个客户OS可如同底层VM仅仅是客户OS支持的独立物理处理系统地操作。因此,客户OS可预期或希望VM根据所支持的物理处理系统的体系结构规范来工作。作为比较,在半虚拟化中,客户OS帮助VMM提供虚拟化环境。因此,客户OS可被表征为虚拟化已知。半虚拟化的客户OS可能仅能够协同特定VMM操。
26、作,而全虚拟化环境的客户机OS可在两种或更多种不同类型的VMM上操作。半虚拟化可按需对客户操作系统的诸如内核的源代码作出改变,以使它能在特定VMM上运行。0028半虚拟化I/O例如I/O事件可与半虚拟化OS内核经修改或全虚拟化OS内核未经修改一起使用或在其中使用。半虚拟化I/O可使用客户设备中的前端驱动程序来与位于VMM例如L0VMM中的后端驱动程序通信。此外,半虚拟化可使用共享存储器来传送批量数据,以节省俘获和仿真工作,而全虚拟化I/O可能需要遵循由原始仿真设备提供的语义。0029返回参照图3,方法300包括L0VMM330和支持VM20396的L1VMM360,所有这些组合以形成用于诸如例。
27、如英特尔EPRO100082546EBNIC的网络接口卡NIC的虚拟化环境。在方法300开始之前,L0VMM330可创建可运行L1VMM360的VM2未示出。此外,L0VMM330可能知道VM2存储器分配或L1客户伪物理地址向层0机器地址的转换表或映射例如L1_TO_L0_P2M。在行1,L1VMM360可创建被包括在VM2“之中”的L2客户VM20396。L1VMM360可知道VM20396的伪P2M映射即VM20396客户物理地址向L1VMM360伪物理地址的映射例如L2_TO_L1_P2M。在行2中,L1VMM360可发出请求例如通过超调用H0或其它通信通道以要求L0VMM330将L2客。
28、户物理地址映射至用于VM20396的L0VMM330实际物理机器地址表例如L2_TO_L0_P2M。0030在行3中,L0VMM330可从行2接收该请求。在行4中,L0VMM330可使用之前接收或已知的信息即L2_TO_L1_P2M将VM20客户物理地址重新映射至L0机器地址说明书CN102103517ACN102103520A5/7页8L2_TO_L0_P2M。这是通过例如利用L1VMM360或L1客户VM2的P2M表L1_TO_L0_P2M来实现的,因为L2客户存储器是L1客户VM2的一部分,所以这是可能的。例如,对于给定L2客户物理地址XL2_TO_L0_P2MXL1_TO_L0_P2M。
29、L2_TO_L1_P2MX。0031在行5,L1VMM360可启动VM20396,且VM20396的执行可开始。在行6,VM20OS可开始。在行7,VM20396OS的执行可实现诸如虚拟NIC设备的虚拟设备。0032这可使虚拟NIC设备在行8初始化。在行9,L1VMM360可请求与L0VMM330通信例如通过超调用H1或其它通信通道,以共享NIC设备的客户状态例如VM20_VEPRO1000_STATE和/或CPU的客户状态。客户虚拟CPU或处理器状态可包括例如VM20VCPUSTATEVM20VCPU状态,其可对应于诸如VM20396的12_VCR3的L2虚拟控制寄存器CRCR3。状态信息可。
30、通过例如共享存储器来共享,在共享存储器处L1VMM和L0VMM二者可看到被共享状态并操纵那些状态。0033在行10,L0VMM330可接收请求例如超调用H1,且在行11,L0VMM330可将虚拟NIC设备状态重新映射到L0VMM430内部地址空间中。因此,L0VMM430可能能够访问虚拟NIC和CPU状态信息。0034在行12,VM20可通过填充传输缓冲器及其直接存储器存取DMA控制数据结构诸如英特尔82546EBNIC控制器中的DMA描述符环结构而开始发送分组。L0VMM330现在绕过L1VMM360,并与VM20396通过接口直接连接。在行13,如VM20在其本机环境下操作时将会进行的,通。
31、过对诸如英特尔82546EBNIC控制器中的传输描述符尾部TDT寄存器的专用硬件寄存器编程,VM20可通知虚拟NIC设备DMA描述符填充完成。TDT寄存器可以是存储器映射的I/OMMIO寄存器,但也可以是例如端口I/O。L1VMM360可能没有对MMIO地址的直接转换,该MMIO地址直接转换可能允许L1VMM360通过退出事件例如页面错误PFVM退出俘获和仿真客户MMIO访问。因此,L0VMM330可能没有仿真L1VMM转换的MMIO地址转换。0035在行14,TDT寄存器的地址触发VM退出PF。L0VMM330可从VM退出信息获得该PF的线性地址例如诸如12_GVA的MMIO访问地址。在行1。
32、5,L0VMM330可走查或遍历L2客户页面表以将12_GVA转换成其L2客户物理地址例如12_GPA。对该L2客户页面表的走查或遍历可从由L2客户CR3例如12_VCR3所指向的L2客户物理地址开始。0036在行16,LOVMM330可确定12_GPA是否是经加速的I/O即I/O仿真可绕过L1VMM215。如果12_GPA是经加速的I/O,则在行17,L0VMM可基于共享的虚拟NIC和CPU状态信息例如VM20_VEPRO1000_STATE和VM20VCPUSTATE执行仿真。在行18,L0VMM330可取出L2虚拟NIC设备DMA描述符,并利用L2_TO_L0_P2M表执行转换,以将12。
33、客户物理地址转换成实际机器物理地址。在行19,L0VMM330可具有传输有效载荷,并在L0主机I/O中传输该有效载荷。L0VMM330还可更新共享数据中的VM20_VEPRO1000_STATE和VM20VCPUSTATE。在行20,L2客户可恢复。0037因此,L0VMM330可使用在L0VMM330与L1VMM360之间共享的L2_TO_L0_P2M表、VM20_VEPRO1000_STATE以及VM20VCPUSTATE例如12VCR3来访问虚拟NIC设备DMA描述符环和传输缓冲器,从而将分组直接发送至外部网络,而不经由L1VMM360将分组间接发送至外部网络。在L0VMM300必须将L。
34、2客户I/O访问传递到L1VMM360时,这样做会在L1VMM360与L0VMM330之间触发许多VM退出/进入动作。这些退出/进说明书CN102103517ACN102103520A6/7页9入动作可能导致糟糕的性能。0038在方法300的示例中,分组传输并未触发中断请求IRQ。然而,如果IRQ已由于例如传输完成而引发,则L1VMM360可被用于虚拟中断注入。然而,在一个实施例中,通过共享诸如例如虚拟高级可编程中断控制器APIC状态、I/OAPIC状态、消息告知中断MSI状态以及由L0VMM330直接操纵的虚拟CPU状态信息的中断控制器状态信息,可进行进一步优化以绕过L1VMM对IRQ注入的。
35、介入。0039方法300涉及将设备模型用于分组传输。然而,本发明的一些实施例可采用可能与方法300并无实质不同的用于接收分组的方法,因此在此不再赘述。一般而言,如果L0VMM能决定分组的最终接收者是L2客户,则同一方法可将接收到的分组在L0VMM330中复制到L2客户缓冲器中,并更新虚拟NIC设备状态。为此,L1VMM330可与L0VMM共享其网络配置信息例如L2客户的IP地址、L1VMM的过滤信息。此外,发送至不同L2VM的分组可到达同一物理NIC。因此,L0VMM中的交换机可基于例如介质访问控制MAC地址、IP地址等将分组分发至不同的VM。0040也可将与方法300相似的方法与半虚拟化设备。
36、驱动程序一起使用。例如,半虚拟化网络设备可与全仿真设备相似地操作。然而,在半虚拟化设备中,L2客户或前端驱动程序可以是VMM已知的驱动程序。服务VM例如图2中的L1VMM215可运行后端驱动程序以提供L2请求I/O请求而非图2中的设备模型220。该L0VMM可具有理解来自L1VMM后端驱动程序的共享设备状态并直接提供L2客户的请求的能力,这可能意味着L0VMM也可运行与本发明一个实施例中的L1VMM中相同的后端驱动程序。具体地,利用图3的分组传输示例,当工作于半虚拟化环境时,行12和13可被变更。基于实际设备语义,行12和13中的操作可用诸如来自VM20396的超调用的更高效方法替换,以告知虚。
37、拟硬件开始分组传输。此外,提供来自行1213的请求的行1418可与基于实际设备语义传递的参数稍稍不同。例如,L0VMM可使用半虚拟化I/O定义方法传递的缓冲器地址取出客户传输缓冲器。利用与上述用于发送分组的过程相似的半虚拟化I/O操作接收分组,因此在此不再赘述该方法。0041因此,本文中所描述的各个实施例可允许L0VMM在进行例如L2客户I/O仿真/服务时绕过L1VMM。换言之,各个实施例在L0VMM在某种程度上绕过L1VMM的情况下直接向L2客户仿真/提供虚拟化实体例如全虚拟化设备、半虚拟化设备等。这可通过在L0VMM与L1VMM之间共享L2客户状态信息来完成,该L2客户状态信息通常仅为父V。
38、MM所知例如,诸如在L2客户与L1VMM之间。在L1VMM与L0VMM之间共享帮助绕过L1VMM以实现更佳性能。0042在此处使用的模块指的是任何硬件、软件、固件、或它们的组合。通常被示为分开的模块边界一般不同而且有可能重叠。例如,第一和第二模块可共享硬件、软件、固件、或它们的组合,同时可能保留某些独立的硬件、软件或固件。在一个实施例中,术语“逻辑”的使用包括诸如晶体管、寄存器之类的硬件或诸如可编程逻辑器件之类的其它硬件。然而,在另一实施例中,逻辑还包括诸如固件或微码之类的与硬件集成的软件或代码。0043实施例可在许多不同的系统类型中实现。现在参照图4,其中示出了根据本发明一实施例的系统的框图。
39、。多处理器系统500是点对点互连系统,且包括经由点对点互连550耦合的第一处理器570和第二处理器580。处理器570和580中的每一个可以是包括第一说明书CN102103517ACN102103520A7/7页10和第二处理器核即处理器核574A和574B以及处理器核584A和584B的多核处理器,尽管这些处理器中可能存在更多核。术语“处理器”可表示任何设备或设备的一部分,其处理来自寄存器和/或存储器的电子数据,以将该电子数据转换成可存储于寄存器和/或存储器中的其它电子数据。0044第一处理器570还包括存储器控制器中枢MCH572与点对点PP接口576和578。类似地,第二处理器580包括。
40、MCH582与PP接口586和588。MCH572和582将处理器耦合至相应的存储器即存储器532和存储器534,它们可以是本地附连至相应处理器的主存储器例如动态随机存取存储器DRAM的多个部分。第一处理器570和第二处理器580可分别经由PP互连552和554耦合至芯片组590。芯片组590包括PP接口594和598。0045此外,芯片组590包括通过PP互连539将芯片组590与高性能图形引擎538耦合的接口592。芯片组590又经由接口596耦合至第一总线516。多个输入/输出I/O设备514以及总线桥518可耦合至第一总线516,该总线桥518将第一总线516耦合至第二总线520。多个。
41、设备可耦合至第二总线520,包括例如键盘/鼠标522、通信设备526以及诸如磁盘驱动器或在一个实施例中为其它大容量存储设备的可包括代码530的数据存储单元528。此外,音频I/O524可耦合至第二总线520。0046实施例可以代码的形式实现,而且可存储在其上存储有可用于对系统编程以执行这些指令的存储介质上。该存储介质可包括但不限于包括软盘、光盘、固态驱动器SSD、光盘只读存储器CDROM、可重写光盘CDRW以及磁光盘的任何类型的盘;诸如只读存储器ROM、诸如动态随机存取存储器DRAM、静态随机存取存储器SRAM之类的随机存取存储器RAM、可擦写可编程只读存储器EPROM、闪存、电可擦写可编程只。
42、读存储器EEPROM之类的半导体器件;磁卡或光卡;或适合于存储电子指令的任何其他类型的介质。0047本发明诸实施例可在本文中参照诸如指令、函数、程序、数据结构、应用、应用程序、配置设定、代码等数据来进行描述。如本文中更详细描述的,当数据被机器访问时,机器可通过执行任务、定义抽象数据类型、建立低级硬件上下文、和/或执行其它操作来作出响应。该数据可被存储于易失性和/或非易失性数据存储中。出于本公开内容的目的,术语“代码”或“程序”或“应用程序”覆盖了广泛范围的部件和构造,包括驱动电路、处理器、例程、方法、模块以及子程序。因此,术语“代码”或“程序”或“应用程序”可被用于指代任何指令集合,这些指令集。
43、合在由处理系统执行时实现所需操作或多个操作。此外,替代实施例可包括使用比所公开的全部操作例如图3少的过程、使用附加操作的过程、使用按照不同顺序的相同操作的过程、以及其中将本文中所公开的各个操作组合、划分或者变更的过程。0048虽然已经关于有限个实施例描述了本发明,但本领域技术人员将会理解从中得出的多种修改和变化。所附权利要求旨在覆盖落入本发明的真实精神和范围中的所有这些修改和变化。说明书CN102103517ACN102103520A1/4页11图1现有技术说明书附图CN102103517ACN102103520A2/4页12图2现有技术说明书附图CN102103517ACN102103520A3/4页13图3说明书附图CN102103517ACN102103520A4/4页14图4说明书附图CN102103517A。