专利名称:用于在虚拟机环境中选择虚拟化算法的自适应算法的制作方法
背景技术:
虚拟机(VM)是对真实计算机系统的有效率的、独立的复制。单个真实系统可并发地提供多于一个VM。真实系统可具有供操作系统或应用软件使用的若干资源。中央处理单元(CPU)(也称为处理器)和主板芯片组可以为处理数据、内存分配和输入输出(I/O)处理提供一组指令或其他基本要素。真实系统还可包括内存、视频、音频、磁盘驱动器和端口(通用串行总线、并行端口、串行端口)之类的硬件设备和资源。在真实系统中,基本输入输出系统(BIOS)提供了操作系统可用来访问各种主板和I/O资源的低级接口。使用真实系统,当操作系统访问硬件设备时,它通常通过与物理硬件设备存储器或I/O端口直接接口的低级设备驱动程序来通信。
当系统作为虚拟机环境的主机时,可以由CPU执行一个或多个客人(guest)软件应用,使得各个客人软件应用(客人)看起来似乎在单独控制上述系统的情况下运行。这要求CPU在执行上述客人时同时执行虚拟机监视器(VMM),以防止客人以与其他客人的执行发生冲突的方式改变系统的状态。可以将VMM称为监视器。可以以软件、固件、硬件或它们之中的两种或更多种的组合来提供该VMM。
该VMM可将处理器置于一种模式中,在该模式中,执行可能改变CPU状态的和与其他客人产生冲突的某些指令将导致所述指令的陷入(trap),并将控制转至VMM。可以将陷入的指令称为特权指令。然后,VMM能以某一方式(该处理方式使得指令的陷入对客人透明,同时防止将处理器置于干扰其他客人的执行的状态)来处理客人执行特权指令的企图。当客人执行检查或修改硬件状态的特权指令时,在该客人看来,指令似乎直接在硬件上执行,然而,实际上是由VM来虚拟上述指令,并将它们转至VMM。
当至VMM的出现时,VMM可以保存客人执行特权指令时的处理器状态。然后,在执行上述特权指令之后和将控制返回客人之前,VMM将处理器的状态恢复成其应当具有的状态。将从客人至VMM的陷入称为VMEXIT。监视器可以用VMRESUME或VMLAUNCH指令(可统称为VMENTER)恢复客人。将执行VMEXIT和VMENTER指令对所占用的时间称为退出-进入时间(EET)。
图1是包含本发明的计算机系统的框图。
图2示出了数据在图1所示的计算机系统的随机存取存储器中的安排。
图3是使用无条件虚拟化算法将控制转至VMM的流程图。
图4是使用无条件虚拟化算法将控制转至VMM的流程图。
图5是一种选择性虚拟化算法的流程图,该算法仅当VM接收控制且无特权指令使用FPU时才保存FPU状态。
图6是使用选择性虚拟化算法将控制转至VM的流程图,该算法在转移控制之前使得使用FPU的指令有特权。
图7是用于在如图6所示的进入VM之后处理FPU使用异常的流程图。
图8是用于在如图6所示的进入VM之后处理状态标志改变异常的流程图。
图9是用于将控制从以如图6所示的方式进入的VM转至VMM的流程图。
图10是一种用于选择虚拟化算法的自适应算法的流程图。
具体实施例方式
在以下说明中,陈述了许多具体细节。然而,应当懂得,不具备这些具体细节也可以实施本发明的实施例。在其他情况下,未示出众所周知的电路、结构和技术,以避免妨碍对本发明的理解。
如图1所示,一种计算机系统可包括中央处理单元(CPU)(也称为处理器)10,该单元耦合到随机存取存储器(RAM)30。内存桥20可将处理器10耦合到内存30。该RAM可以是任意类型的内存,如同步动态随机存取存储器(SDRAM),RAMBUS动态随机存取存储器(RDRAM),或是扩展数据输出随机存取存储器(EDO RAM)。
该计算机系统可包括若干与处理器10相连的设备。视频设备22可提供通过内存桥20从处理器10接收数据的可视显示。该内存桥也可耦合到I/O桥40。而该I/O桥又可耦合到各种设备,如磁盘驱动器42、支持各种扩充卡的外围组件互连(PCI)总线、本地I/O设备46(如定时器和功率控制设备),以及通用串行总线(USB)48连接器。
该RAM 30可加载表示可由处理器10执行的可执行指令的数据。该RAM 30还可包含由处理器用于控制处理器的执行的数据结构(如在检测到某些情形时指向要执行的程序的指针)、下推栈之类的用于临时存储由处理器使用的数据的数据结构和其他用于定义处理环境的数据结构(如任务上下文)。应当理解,可由处理器10访问的RAM 30的数量可超过该计算机系统中实际存在的RAM数量。可使用各种内存管理技术来操纵该实际RAM30的内容,以使得在处理器10看来所有可访问的RAM均存在。将以似乎所有可访问的RAM均实际存在的方式描述RAM 30的内容,以避免干扰对本发明的所述实施例的操作的说明,但是,应当理解,所述的存在于内存之中的结构可能并非同时处于实际的内存之中,且不同的内存结构在保持逻辑上的不同的同时,可以相继占据同一物理内存。
处理器10可作为一个或多个虚拟机(VM)的主机。如图2所示,可以给每个虚拟机34分配RAM 30的一部分作为虚拟机上下文。RAM30的分配的那部分可以是处理器10可用的所有RAM或其中的一部分。可根据需要加载和卸载RAM30的上述已分配部分,以允许虚拟机34A使用分配给另一虚拟机34B的全部实际RAM或其中的一部分。RAM30可支持虚拟内存系统来管理RAM的使用,以使得各虚拟机34A能使用RAM,而无需考虑其他同样由处理器10充当主机的虚拟机34B。
各虚拟机34A提供了受保护的且与其他虚拟机34B隔离的、看起来似乎是专用的实际机器的、用于执行软件的环境。尽管图中仅示出了两个虚拟机,但是,应当理解,在本发明的实施例中使用的处理器可充当任意数目的虚拟机的主机。可在各虚拟机34中执行客人软件。所述客人软件可具有操作系统(OS)36和一个或多个由OS执行的应用程序。各虚拟机34上的OS36可以与其他虚拟机上的OS相同或不同。
该处理器可作为虚拟机监视器(VMM)32的主机,以管理一个或多个虚拟机34。该VMM32可通过虚拟机34来陷入(trap)某些指令(称为特权指令)的执行,使得各虚拟机能在无需考虑其他可能同样由处理器10充当主机的虚拟机34B的情况下运行。特权指令可对处理器的状态作出持久的改变,而这将改变此后执行的其他虚拟机的行为。VMM32可虚拟陷入的特权指令的执行,这使得这些指令为当前执行的上下文提供期望的机器状态,而不会使上述机器状态一直持续,以至影响其他虚拟机的随后的执行。
使用浮点单元(FPU)的浮点运算是一种可被虚拟的特权指令的实例。虚拟机中运行的客人单元假定它能根据需要执行浮点代数运算。FPU的运行可使用和影响若干相对较宽的、用于保存浮点值的寄存器。VMM可以为各虚拟机虚拟FPU,使得只要虚拟机使用FPU,则由各虚拟机的运行建立的寄存器便存在。可通过若干算法之一来完成对FPU的虚拟化。
如流程图3、4所示的一种用于虚拟化FPU的算法可以正好在进入虚拟机上下文(54)之前保存VMM的FPU状态(50)和恢复该虚拟机的FPU状态(52)。该算法可称为无条件算法,因为在上下文改变时该算法总保存上述机器状态和恢复用于新的上下文的状态。在虚拟机上下文退至虚拟监视器VMM60(60)之后不久,保存该虚拟机的FPU状态(62)并恢复VMM的FPU状态(64)。该无条件算法确保该FPU状态使得VMM和各虚拟机可在不与FPU的其他用户发生冲突的情况下使用该FPU。该无条件虚拟化算法为进入的每个虚拟机上下文消耗的时间是保存-恢复时间(SRT)的两倍。SRT是保存一个上下文的FPU状态和恢复另一上下文的该FPU状态所需的时间,它在每次将控制转交虚拟机的过程中发生两次,第一次发生在上述转交开始时,而另一次发生在该转交结束时。因而,该无条件算法的开销时间成本是2×SRT。
有可能VMM或客人不使用该FPU。在这种情况下,不必保存和恢复FPU的状态,如果可以检测到这种情形,则保存和恢复该FPU状态的频率就会比无条件算法少,从而可以减少与FPU的虚拟化相关的开销。
如图1所示,处理器10可包括控制寄存器12,以确定当前执行的任务是否可能执行影响机器状态的指令。该控制寄存器12可以是内存30中的一个预定位置(未示出),或是处理器10内的数据存储位置,如图1所示。如果一个或多个指令是特权指令,则控制寄存器12(如IA-32 Intel架构处理器10中的控制寄存器O(CRO))可包括标志14来进行控制,如CRO的任务切换(TS)位3,该位控制浮点指令是否将被执行还是引起异常。另一种控制指令特权的示例的处理器状态标志14是CRO的监视协处理器(MP)位1。
可利用控制寄存器12的状态来确定是否需要保存和恢复FPU状态。如果配置处理器10来使得那些持久影响处理器状态的指令成为特权指令,则当当前执行的任务试图使用受保护状态时,无需保存该通过使上述指令成为特权指令而受到保护的状态,因为异常将导致控制被转向VMM。例如,如果该控制寄存器12包括TS14和MP14′,则正受到设置的这两个位可以配置处理器10,使得所有使用或影响FPU状态的指令均将引起异常。如果已确定正准备接收由VMM转来的控制的那个线程尚未将该两个位中的任一位清零,则不必在将控制转至该线程之前保存和恢复FPU状态。然而,如果该线程已将处理器配置成使得一个或多个使用或影响该FPU状态的指令不成为特权指令,则保存由VMM设置的FPU状态,并恢复之前执行时由上述线程设置的FPU状态。
将虚拟化的开销(overhead)降到最低的算法尝试将所需的FPU保存和恢复的次数降到最少。这可用各种算法来实现。某些算法可将上述保存和恢复延迟,直到在当前不拥有FPU的上下文中使用该FPU为止(如FPU的上下文就是VM(j)的上下文而由VM(i)使用该FPU时)。其他算法可以将上述保存和恢复延迟至很有可能在不拥有该FPU的上下文中使用该上下文为止。这些算法可称为选择性算法,因为当发生上下文改变时,仅当看起来所述机器状态将由新的上下文使用时,才保存该机器状态和恢复用于新的上下文的状态。
图5示出了一种用于虚拟化FPU的示范的选择性算法,该算法将处理器状态用于指令的特权化,以试图仅当在很可能不拥有上述FPU的上下文中使用该FPU时才执行上述保存和恢复。该示范的选择性算法假设VMM总使用FPU,且因此只要VM准备使用该FPU,则需要保存和恢复该FPU状态。
如果关于将要接收控制的VM的处理器状态使得那些使用或影响FPU状态的指令成为特权指令(70)的判断为是,则该选择性算法假设上述VM将不使用该FPU,且不进行对该FPU状态的保存和恢复。此时,将以VMM的FPU状态进入VM上下文(72)。相反,如果关于VM的处理器状态使得FPU指令成为特权指令(70)的判断为否,则该选择性算法假设该VM将使用FPU,并在进入该VM上下文(78)之前保存VMM FPU状态和恢复VM FPU状态。如果关于选择性算法假设VM不使用FPU而实际上该VM使用该FPU(80)(或试图改变与特权有关的处理器状态,或仅是简单地执行这些FPU特权指令)的判断为是,则该处理器将生成异常,并将控制转至VMM(82)。响应该异常,VMM将保存VMM的FPU状态(84),并恢复供VM使用的FPU状态(86)。接下来,VMM重新进入VM上下文(88)。如果在VM上下文的执行之前或之中恢复了VM FPU状态,则在退出VM上下文(90)后和选择性虚拟化算法退出(96)之前,保存VM的FPU状态(92)和恢复VMM的FPU状态(94)。如果关于FPU状态已特权化(70)的判断为是,且关于VM未使用FPU(80)的判断为否,则选择性虚拟化算法的退出(98)避免了SRT开销。
这种选择性算法导致了以FPU虚拟化算法的开销时间计算的成本。如果该选择性算法正确地预测了VM将不会使用FPU,从而避免了不必要的保存和恢复,则成本为零。如果该选择性算法正确地预测了VM将会使用FPU,则成本便为保存-恢复时间SRT的两倍(2×SRT),该成本与无条件算法的成本相等。如果该选择性算法不正确地预测VM将不会使用FPU,从而引发了导致保存和恢复的异常的生成,则成本为EET+2×SRT。后一种情况导致了比无条件算法更高的成本。因此,选择性算法从无条件算法的开销起降低FPU虚拟化的开销的能力取决于该选择性算法预测VM将不使用FPU的有效性。
如果正确预测VM将不使用FPU的机率是Q,且错误预测VM将不使用FPU的机率为R,则正确预测VM将使用FPU的机率是(1-Q-R)。该选择性算法的实际开销就将是(1-Q-R)×2×SRT)+(R×(2×SRT+EET))+(Q×O)。
可化简成2×SRT-2Q×SRT-2R×SRT+2R×SRT+R×EET可化简成2×SRT-2Q×SRT+R×EET可进一步化简成2×SRT(1-Q)+R×EET2×SRT(1-Q)表示SRT开销的期望值,且R×EET表示EET开销的期望值。开销的期望值用于表示基于对若干上下文改变的观察的上下文改变的时间成本的统计期望。当2×SRT(1-Q)+R×EET<2×SRT时,选择性算法在开销方面导致的成本比无条件算法在这方面导致的成本低。上述不等式可化简成R×EET<2Q×SRT,该不等式可进一步化简成EET/2×SRT<Q/R。EET和SRT是为给定的处理器环境计算的相对恒定的时间。从而,可通过测量正确预测和错误预测VM不使用FPU的机率Q和R,和将比值Q/R与预先计算的常数EET/2×SRT进行比较来将选择性算法的有效性与无条件算法进行比较。
图6-图9示出了另一种用于虚拟化FPU的示范的选择性算法。在进入VM上下文前,该选择性算法将处理器置于使那些使用或影响FPU状态的指令特权化的状态。例如,通过提供CRO.TS和CRO.MP之类的反映由VM感知的处理器状态的处理器状态标志的阴影备份(shadow copies)来虚拟化处理器状态。配置该处理器,使得FPU指令成为特权指令(102)。控制被转至VM上下文(104),其中,对FPU或处理器状态标志的使用将导致退至VMM的处理器异常。
图7是通过VMM处理FPU异常的流程图。VM尝试执行使用FPU的特权指令,由此引发了导致退至VMM(110)的异常。保存VMM的FPU状态(112)并恢复VM的FPU状态(114)。由于此时使用FPU是安全的,因而配置处理器来使得FPU指令是非特权指令(116)。对将控制转至VM上下文而言,这意味着最多存在一个FPU异常。也可将FPU异常反映到VM上下文(118),以供在VM上下文中执行的程序(如操作系统)使用。接下来,将控制返回VM上下文120。该FPU异常处理的时间开销成本为EET加SRT。如以下所述,在退出VM上下文时,导致了第二SRT。
图8是VM尝试改变处理器状态标志的VMM处理的流程图。VM改变状态标志的企图引发了导致退至VMM(130)的异常。根据由VM尝试的改变,VMM更新这些虚拟的状态标记(如通过设置阴影状态标志的值)(132)。然后,控制返回VM上下文(134)。状态改变异常处理的时间开销成本为EET。在将控制转至VM上下文的单次转移期间,VM可以对状态标志进行任意次改变。
图9是退出VM上下文(140)时VMM处理的流程图。如果关于VM正在使用FPU(142)的判断为是(这意味着在将控制转至VM上下文期间发生了图8中的处理),则在继续VMM处理(148)之前,保存VM的FPU状态(144),并恢复VMM的FPU状态(146)。这导致了如上所述的等于第二SRT的时间开销成本。
关于该选择性算法的系统时间开销成本存在四种可能情形(1)VM不改变处理器状态标志,也不使用FPU,这时不产生开销成本;(2)VM不改变处理器状态标志,但使用了FPU,这时产生2×SRT+EET的开销成本;(3)VM改变了处理器状态标志,但未使用FPU,这时产生的开销成本是每次改变的开销成本EET;(4)VM改变了处理器状态标志,也使用了FPU,这时产生的开销成本是每次改变处理器状态的开销成本EET加上使用FPU时的开销成本2×SRT+EET。
如果使用FPU的VM执行所占的比例是S,改变处理器状态标志或使用FPU产生的异常平均数是T,则该选择性算法的总开销为S×2×SRT+T×EETS×2×SRT表示SRT开销的期望值,T×EET表示EET开销的期望值。如果S×2×SRT+T×EET<2×SRT,则该选择性算法在开销时间方面支出的成本低于无条件算法在这方面支出的成本。可将上述不等式化简为T×EET<2×SRT×(1-S),并可将其进一步化简为EET/(2×SRT)<(1-S)/T。如之前讨论的选择性算法一样,EET和SRT是为给定的处理器环境计算的相对恒定的时间。从而,通过测量VM不使用FPU的执行所占比例(1-S)和测量生成的异常的平均数T,以及将(1-S)/T之比与预先计算的常数EET/(2×SRT)进行比较,可以将该选择性算法的有效性与无条件算法进行比较。
其他示范的选择性算法可能未假设VMM总使用FPU,并追踪FPU状态的当前拥有者来进一步降低FPU虚拟化的开销。由于当前运行的线程可能不是FPU状态的拥有者,因而这些选择性算法可保留指明FPU状态的当前拥有者的值。如果该数值指明正在进入的虚拟机拥有FPU状态,则这些选择性算法便能简单地进入该虚拟机,这可能节省了2×SRT的开销。当然,这将影响用于选择虚拟化算法(如通过将从开销成本的表达式得出的量值与预先计算的常数EET/(2×SRT)进行比较)的选择性虚拟化算法的开销成本的表达式。
应当理解,没有一种算法能在所有情况下保持成本最低。工作量上的改变可能使得不同的虚拟化算法在不同时刻更有效率。图10是一种可用于周期性地选择虚拟化算法的自适应算法的流程图。以下是一种示范的自适应算法,该算法用于选择无条件虚拟化算法或有选择地保存和恢复机器状态的选择性算法计算退出和进入上下文的退出-进入时间(EET)与保存和恢复机器状态的保存-恢复时间(SRT)(150);执行在选定的上下文变化发生时保存和恢复机器状态的选择性算法(152),并积累关于EET开销的期望值和当执行选择性算法时SRT开销的期望值(154)的统计数据;使用EET开销的期望值和SRT开销的期望值计算选择性算法的成本(156);将选择性算法的成本与总在上下文改变时保存和恢复机器状态的无条件算法的等于两倍SRT的成本进行比较;并选择选择性算法或无条件算法中成本最低的算法作为虚拟化算法来虚拟上下文改变(158)。
仅计算一次EET和SRT并保存结果,因为这些值对给定的处理器配置而言基本上是不变的。在一段时间内使用该选定的虚拟化算法(160),然后再次使用该自适应算法来选择虚拟化算法,以使得使用中的虚拟化算法随工作量的变化而不时发生变化。可根据处理器的工作量来设置用于积累有关选择性算法的统计数据的时间长度和相继的数据积累之间的时间间隔,并可根据该工作量来改变虚拟化算法。
可将该自适应算法扩展为从多于两种备选算法中进行选择。可执行各种在上下文发生改变时有选择地保存和恢复机器状态的选择性算法,以积累与那时的处理工作量下的选择性算法成本有关的统计数据。为各种选择性算法计算了其成本,并选择出所有备选算法中成本最低的算法。
应当理解,本发明的实施例可能表现为包括机器可访问介质的制品的形式。该机器可访问介质可包括这样的数据当处理器10对其进行访问时,将引起处理器执行一些操作。从而,机器可访问介质包括提供(即存储和/或发送)任何可由机器(如计算机、网络设备、个人数字助理、制造工具、任何具有一个或多个处理器的设备,等等)访问的信息的机构。例如,机器可访问介质包括可记录的/非可记录的介质(如只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;等等);以及电、光、声信号或其他形式的传播信号(如载波,红外信号,数字信号等),等等。
尽管用若干实施例说明了本发明,但是,本领域技术人员将认识到,本发明不限于所述的实施例,相反,可通过处于所附权利要求的精神和范围之内的本发明的修改与变更的形式来实施本发明。因而,应将本说明书视为说明性的而非限制性的。
权利要求
1.一种方法包括计算退出和进入上下文的退出-进入时间(EET)与保存和恢复机器状态的保存-恢复时间(SRT);执行在选定的上下文改变发生时保存和恢复机器状态的选择性算法,并在执行该选择性算法的同时,积累关于EET开销的期望值和SRT开销的期望值的统计数据;使用EET开销的所述期望值和SRT开销的所述期望值计算该选择性算法的成本;将该选择性算法的开销与两倍SRT进行比较,所述SRT是总在上下文发生改变时保存和恢复所述机器状态的无条件算法的成本;以及将所述选择性算法或所述无条件算法中具有最低成本的一种算法选为虚拟化算法,以虚拟上下文改变。
2.如权利要求1所述的方法,其中,仅计算一次所述EET和所述SRT,并保存所述EET和所述SRT。
3.如权利要求1所述的方法,其中,仅当允许使用所述机器状态的无特权指令对虚拟机(VM)而言可用时,所述选择性算法才在将控制转至所述VM之前保存和恢复所述机器状态。
4.如权利要求3所述的方法,其中,积累统计数据包括获取一类事件所占的第一比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM未使用所述机器状态;以及获取另一类事件所占的第二比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM使用了所述机器状态;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述第一比例和所述第二比例之比进行比较。
5.如权利要求1所述的方法,其中,所述选择性算法对处理器的配置进行虚拟,这导致所述处理器使得所有使用所述机器状态的指令对虚拟机(VM)而言有特权,且仅当所述VM执行使用所述机器状态的特权指令时,所述处理器才保存和恢复所述机器状态,并将控制转至所述VM。
6.如权利要求5所述的方法,其中,积累统计数据包括获取所述VM未使用所述机器状态的那些执行所占的比例;获取由所述VM的每次执行引发的异常的平均数;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述执行所占比例和所述异常的平均数之比进行比较。
7.如权利要求1所述的方法,其中,周期性地进行执行、积累、计算和选择。
8.如权利要求1所述的方法,还包括当上下文改变时,执行有选择地保存和恢复所述机器状态的第二选择性算法;为所述第二选择性算法积累关于每次上下文改变时的EET期望值加每次上下文改变时的SRT期望值的统计数据;将所述第二选择性算法的第三成本计算为所述每次上下文改变时的EET期望值加所述每次上下文改变时的SRT期望值;以及选择所述无条件算法、所述选择性算法或所述第二选择性算法中具有最低成本的一种算法。
9.一种制品,包括包含数据的机器可访问介质,当由处理器访问时,所述数据导致所述处理器执行以下操作计算退出和进入上下文的退出-进入时间(EET)与保存和恢复机器状态的保存-恢复时间(SRT);执行在选定的上下文改变发生时保存和恢复机器状态的选择性算法,并在执行该选择性算法的同时,积累关于EET开销的期望值和SRT开销的期望值的统计数据;使用EET开销的所述期望值和SRT开销的所述期望值计算该选择性算法的成本;将该选择性算法的开销与两倍SRT进行比较,所述SRT是总在上下文发生改变时保存和恢复所述机器状态的无条件算法的成本;以及将所述选择性算法或所述无条件算法中具有最低成本的一种算法选为虚拟化算法,以虚拟上下文改变。
10.如权利要求9所述的制品,其中,仅计算一次所述EET和所述SRT,并保存所述EET和所述SRT。
11.如权利要求9所述的制品,其中,仅当允许使用所述机器状态的无特权指令对虚拟机(VM)而言可用时,所述选择性算法才在将控制转至所述VM之前保存和恢复所述机器状态。
12.如权利要求11所述的制造品,其中,积累统计数据包括获取一类事件所占的第一比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM未使用所述机器状态;以及获取另一类事件所占的第二比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM使用了所述机器状态;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述第一比例和所述第二比例之比进行比较。
13.如权利要求9所述的制品,其中,所述选择性算法对处理器的配置进行虚拟,这导致所述处理器使得所有使用所述机器状态的指令对虚拟机(VM)而言有特权,且仅当所述VM执行使用所述机器状态的特权指令时,所述处理器才保存和恢复所述机器状态,并将控制转至所述VM。
14.如权利要求13所述的制品,其中,积累统计数据包括获取所述VM未使用所述机器状态的那些执行所占的比例;获取由所述VM的每次执行引发的异常的平均数;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述执行所占比例和所述异常的平均数之比进行比较。
15.如权利要求9所述的制品,其中,周期性地进行执行、积累、计算和选择。
16.如权利要求9所述的制品,其中,所述机器可访问介质还包括这样的数据,当这些数据由所述处理器执行时,将导致所述处理器执行以下操作当上下文改变时,执行有选择地保存和恢复所述机器状态的第二选择性算法而非在每次上下文改变时保存和恢复机器状态的无条件算法;为所述第二选择性算法积累关于每次上下文改变时的EET期望值加每次上下文改变时的SRT期望值的统计数据;将所述第二选择性算法的第三成本计算为所述每次上下文改变时的EET期望值加所述每次上下文改变时的SRT期望值;以及选择所述无条件算法、所述选择性算法或所述第二选择性算法中具有最低成本的一种算法。
17.一种系统,包括提供机器状态的处理器,该处理器可配置成使所有使用所述机器状态的指令有特权;耦合到所述处理器的内存,该内存选自SDRAM内存和RDRAM内存之一,该内存包含数据,当由所述处理器进行访问时,所述数据导致所述处理器执行以下操作,计算退出和进入上下文的退出-进入时间(EET)与保存和恢复机器状态的保存-恢复时间(SRT);执行在选定的上下文改变发生时保存和恢复机器状态的选择性算法,并在执行该选择性算法的同时,积累关于EET开销的期望值和SRT开销的期望值的统计数据;使用EET开销的所述期望值和SRT开销的所述期望值计算该选择性算法的成本;将该选择性算法的开销与两倍SRT进行比较,所述SRT是总在上下文发生改变时保存和恢复所述机器状态的无条件算法的成本;以及将所述选择性算法或所述无条件算法中具有最低成本的一种算法选为虚拟化算法,以虚拟上下文改变。
18.如权利要求17所述的系统,其中,仅计算一次所述EET和所述SRT,并保存所述EET和所述SRT。
19.如权利要求17所述的系统,其中,仅当允许使用所述机器状态的无特权指令对虚拟机(VM)而言可用时,所述选择性算法才在将控制转至所述VM之前保存和恢复所述机器状态。
20.如权利要求19所述的系统,其中,积累统计数据包括获取一类事件所占的第一比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM未使用所述机器状态;以及获取另一类事件所占的第二比例,在这些事件中,在将控制转至所述VM之前,未保存所述机器状态,且所述VM使用了所述机器状态;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述第一比例和所述第二比例之比进行比较。
21.如权利要求17所述的系统,其中,所述选择性算法对处理器的配置进行虚拟,这导致所述处理器使得所有使用所述机器状态的指令对虚拟机(VM)而言有特权,且仅当VM执行使用所述机器状态的特权指令时,所述处理器才保存和恢复所述机器状态,并将控制转至所述VM。
22.如权利要求21所述的系统,其中,积累统计数据包括获取所述VM未使用所述机器状态的那些执行所占的比例;获取由所述VM的每次执行引发的异常的平均数;其中,选择所述选择性算法或所述无条件算法之一包括将EET和SRT之比与所述执行所占比例和所述异常的平均数之比进行比较。
23.如权利要求17所述的系统,其中,周期性地进行执行、积累、计算和选择。
24.如权利要求17所述的系统,其中,所述内存还包括这样的数据,当这些数据由所述处理器访问时,导致所述处理器执行以下操作当上下文改变时,执行有选择地保存和恢复所述机器状态的第二选择性算法而非在每次上下文改变时保存和恢复机器状态的无条件算法;为所述第二选择性算法积累关于每次上下文改变时的EET期望值加每次上下文改变时的SRT期望值的统计数据;将所述第二选择性算法的第三成本计算为所述每次上下文改变时的EET期望值加所述每次上下文改变时的SRT期望值;以及选择所述无条件算法、所述选择性算法或所述第二选择性算法中具有最低成本的一种算法。
全文摘要
用于选择虚拟化算法来虚拟上下文改变的方法。计算了退出和进入上下文的退出-进入时间(EET)与保存和恢复机器状态的保存-恢复时间(SRT)。执行了存在上下文改变时有选择地保存和恢复机器状态的选择性算法。在执行该选择性算法的同时,积累了关于EET开销的期望值加SRT开销的期望值的统计数据。将该选择性算法的成本计算为EET开销的期望值加SRT开销的期望值。将该选择性算法的成本与两倍SRT进行比较,其中,SRT是总在上下文变化时保存和恢复机器状态的无条件算法的成本。将该选择性算法或该无条件算法中成本最低的一种算法选作虚拟化算法。
文档编号G06F9/455GK1973265SQ200580021079
公开日2007年5月30日 申请日期2005年6月14日 优先权日2004年6月30日
发明者G·加拉尔, R·坎贝尔 申请人:英特尔公司