在虚拟机环境中检测自旋循环的制作方法

文档序号:6401087阅读:202来源:国知局
专利名称:在虚拟机环境中检测自旋循环的制作方法
技术领域
本发明涉及信息处理领域,特别是涉及平台虚拟化领域。
背景技术
通常,信息处理系统中的虚拟化的概念允许一个或多个操作系统的多个实例(一“OS”的每一个)在单个信息处理系统上运行,尽管每一个OS都被设计成拥有对该系统及其资源的完全的、直接的控制。通常,通过使用软件(例如,虚拟机监视器,或者“VMM”)来实现虚拟化,以便将“虚拟机”(“VM”)提供给每个OS,所述“虚拟机”具有虚拟资源,包括可以由OS完全且直接地控制的一个或多个虚拟处理器,同时VMM维持用于实现虚拟化策略(如在VM( “虚拟化环境”或“虚拟机环境”)之间共享和/或分配物理资源)的系统环境。运行在VM上的每一个OS和任何其它软件,被称为“客户”(“guest”)或者“客户软件” (“guest software”),而“主机” (“host”)或“主机软件” (“hostsoftware”)是例如运行在虚拟化环境之外的VMM这样的软件。信息处理系统中的物理处理器可以支持虚拟化,例如,通过支持指令进入虚拟化环境以在VM中的虚拟处理器(即,在VMM施加的约束下的物理处理器)上运行客户。在虚拟化环境中,某些事件、操作和情况,例如外部中断或访问特许的寄存器或资源的尝试,可能被截取(intercept),就是说,导致处理器退出虚拟化环境,使得VMM可以操作,以便例如实现虚拟化策略。物理处理器还可支持其它的指令以维持虚拟化环境,并且可以包括指示或控制物理处理器的虚拟化能力的存储器或寄存器位。物理处理器还可以支持“暂停(pause)”指令以将延迟插入指令流中。暂停指令可以用在自旋循环(spin loop)中,来减慢循环的执行以节省功率和/或阻止处理器在每次执行循环时用相同的变量填充不同的负载缓冲器。处理器可以被设计成由虚拟机来检测暂停指令的执行,并且使处理器退出所述虚拟机并进入不同的虚拟机(假设运行在第一个虚拟机中的客户处在自旋循环中,在该自旋循环期间,在第二个虚拟机中运行的客户能够更加有效的使用处理器资源)。

发明内容
根据本发明的第一方面,提供了一种用于执行虚拟化的处理器,包括:执行单元,用于执行暂停指令;时间戳计数器,用于测量暂停指令被执行的当前时间;检测逻辑,用于跟踪第一值和第二值,所述第一值用于指示在客户的自旋循环内执行所述暂停指令的第一时间,所述第二值用于指示所述暂停指令被执行的最近时间,以及用于基于当前时间和所述第二值之间的差与阈值的比较来检测所述客户是否在所述自旋循环中;以及虚拟化逻辑,用于响应检测到所述客户正在执行所述自旋循环以及所述当前时间和所述第一值之间的差超过窗口值而将对所述处理器的控制从所述客户转移到主机。根据本发明的第二方面,提供了一种用于执行平台虚拟化的方法,包括:检测客户是否正在处理器上执行自旋循环,包括将两个暂停指令的执行之间的时间段与阈值进行比较;以及响应确定所述客户正在执行所述自旋循环,而将对所述处理器的控制从所述客户转移到主机。根据本发明的第三方面,提供了一种系统,包括:处理器,包括用于执行暂停指令的执行单元,用于测量暂停单元被执行的当前时间的时间戳计数器,检测逻辑,用于跟踪第一值和第二值,所述第一值用于指示在客户的自旋循环内执行所述暂停指令的第一时间,所述第二值用于指示所述暂停指令被执行的最近时间,以及用于基于当前时间和所述第二值之间的差与阈值的比较来检测所述客户是否在所述自旋循环中,以及虚拟化逻辑,用于响应检测到所述客户正在执行所述自旋循环以及所述当前时间和所述第一值之间的差超过窗口值而将对所述处理器的控制从所述客户转移到主机;以及与所述处理器耦合的系统存储器。


在附图中,作为示例而非限制来图解说明本发明。图1图解说明了在虚拟化平台中的本发明的一实施例。图2图解说明了用于在虚拟机环境中检测自旋循环的方法中的本发明的一实施例。
具体实施例方式如下所述,本发明可被包含在用于在虚拟机环境中检测自旋循环的装置、方法或系统中。在该描述中,可能阐述了大量具体细节,例如部件和系统配置,以便提供对本发明的比较充分的理解。但是,本领域的技术人员会理解到,本发明可以不在没有这样的具体细节的条件下实施。此外,没有详细说明一些公知的结构、电路等,以免不必要地影响对本发明的理解。 本发明的实施例提供对自旋循环的检测,该检测将被用于改进支持虚拟化的信息处理系统的性能。VMM可在第一虚拟机中的客户空闲时,例如在自旋循环期间,通过从第一虚拟机转换出来并进入第二虚拟机来对处理器进行分时(time-share)。如背景技术中所描述的,基于客户处在自旋循环中的假设,当客户执行暂停指令时进行VM转换。但是,暂停指令还可以在自旋循环之外使用,例如插入延迟以等待输入/输出(“I/O”)操作的完成。当暂停指令在自旋循环之外被客户使用时,通过允许那个客户继续使用处理器而不是花费时间来保存那个客户的状态并装载另一个客户的状态并且进行VM转换,可提高性能。因此,本发明的实施例提供了一种检测自旋循环的新方法。本发明实施例的要素可以在硬件、软件、固件中或者以硬件、软件或固件的任意结合的形式来实现。术语“硬件”通常指具有诸如电子的、电磁的、光学的、光电的、机械的、机电部分等物理结构的元件。术语“软件”通常指逻辑结构、方法、过程、程序、例程、进程、算法、公式、表达式等。术语固件通常指逻辑结构、方法、过程、程序、例程、进程、算法、公式或者在硬件结构(例如,闪存或只读存储器)中被实现或具体化的表达式。固件的示例是微码、可写控制存储器以及微编程结构(micro-programmed structure)。图1图解说明了在信息处理系统100中的本发明的一实施例。在图1中,裸平台硬件(bare platform hardware) 110可以是能够执行任何OS、VMM或其它这样的软件的任何数据处理装置。例如,裸平台硬件可以是个人计算机、大型机、便携式电脑、手持设备、机顶盒、服务器或者任何其它计算系统的数据处理装置。裸平台硬件110包括处理器120和存储器130。处理器120可以是任何类型的处理器,包括通用目的微处理器,例如Intel Pentium 处理器系列、Itanium 处理器系列或者其它来自丨ntel 公司的处理器系列中的处理器,或来自另一公司的另一种处理器,或者数字信号处理器或者微控制器。虽然图1只示出了一个这样的处理器120,但是裸平台硬件110可以包括任意数量的处理器,所述处理器包括任意数量的多核处理器,各具有任意数量的执行核心,以及任意数量的多线程处理器,各具有任意数量的线程。存储器130可以是静态或动态随机存取存储器、基于半导体的只读或闪速存储器、磁盘或光盘存储器以及任何其它类型的处理器120可读介质或这些介质的任意结合。处理器120和内存130可以通过任何已知的途径例如直接或间接地通过一条或多条总线、点对点或其它有线或无线连接来相互耦合或互相通信。裸平台硬件110还可以包括任意数量的附加设备或连接。除了裸平台硬件100,图1还图解说明了 VMM140、VM150和160、客户操作系统152和162以及客户应用程序154、155、164和165。VMM140可以是安装在裸平台硬件110上或可访问裸平台硬件110来向客户提供VM(即裸平台硬件110的抽象)或者以其它方式创建VM、管理VM以及实现虚拟化策略的任何软件、固件或硬件主机。在其它实施例中,主机可以是能够控制裸平台硬件110的任何VMM,管理程序,OS或者其它软件、固件或硬件。客户可以是任何OS、任何VMM(包括VMM140的另一实例)、任何管理程序或者任何应用程序或其它软件。根据VM中提供的处理器和平台的体系结构,每个客户期望访问裸平台硬件110的物理资源,例如处理器和平台寄存器、存储器和输入/输出设备。图1示出了两个VM,150和160,客户0S152以及客户应用程序154和155安装在VM150上,客户0S162以及客户应用程序程序164和165安装在VM160上。虽然图1只示出了两个VM和每个VM的两个应用程序,但是在本发明的范围内,可创建任意数量的VM,并且在每个VM上可以运行任意数量的应用程序。能够被客户访问的资源可被分类为“特许”或“非特许”的资源。对于特许资源,VMM140促进(facilitate)客户所需的功能性,同时保留对资源的最终控制。非特许资源不需要由VMM140控制并且可由客户直接访问。此外,每个客户OS期望处理各种事件,例如异常(例如,页错误和一般性保护错误(general protection fault)),中断(例如,硬件中断和软件中断),以及平台事件(例如,初始化和系统管理中断)。这些异常、中断和平台事件在本文中统一且单独地称为“虚拟化事件”。这些虚拟化事件中的一部分被称为“特许事件”,因为它们必须由VMM140处理以确保VM150和160的适当操作,保护VMM140免受客户影响,并且保护客户以免互相影响。在任何给定时间,处理器120可能正在执行来自VMM140或其它任何客户的指令,因此VMM140或客户可能正运行在处理器120上或在处理器120的控制中。当特许事件发生或者客户试图访问特许资源时,控制从客户转移到VMM140。本文中,从客户到VMM140的控制转移被称为“VM退出”。在处理该事件或者适当地促进对该资源的访问之后,VMM140可以将控制返回给客户。本文中,从VMM140到客户的控制转移被称作“VM登录”。在图1的实施例中,处理器120根据存储在虚拟机控制结构(“VMCS”)132中的数据来控制VM150和160的操作。VMCS132是一种结构,该结构可包含一个客户或多个客户的状态,VMM140的状态,指示VMM140如何控制一个客户或多个客户的操作的执行控制信息,关于VM退出和VM登录的信息,以及其它任何这样的信息。处理器120从VMCS132读取信息以确定VM的执行环境并且约束它的行为。在该实施例中,VMCS132存储在存储器130中。在某些实施例中,多个VMCS用于支持多VM。虽然图1示出了 VMCS132存储在存储器130中,但是将VMCS存储在存储器中可能不是本发明所必需的。处理器120可以包括执行单元122来执行包括暂停指令在内的指令。暂停指令可以是将延迟插入指令流中的任何指令。处理器120还包括时间戳计算器(“TSC”)124来计算处理器时钟周期,或者以其它方式测量经过的时间。在其它实施例中,可以使用其它测量经过的时间的方法。此外,处理器120包括控制逻辑170来支持虚拟化。控制逻辑170可以包括微码,可编程逻辑,硬编码逻辑,或者处理器120中的任何其它形式的控制逻辑。在其它实施例中,控制逻辑170可通过处理器中或者处理器可访问的任何部件或者可读介质(例如存储器130)中的硬件、软件或固件(例如,处理器抽象层)的任何形式来实现。控制逻辑170使处理器120执行本发明的方法实施例,例如下面在图2中图解说明的方法实施例,例如,通过使处理器120将例如支持虚拟化的一个或多个微操作的执行包括在该处理器对来自主机和客户的虚拟化指令或其它指令的响应中。例如,如下面在方法200的描述中所述的,检测逻辑180的操作和自旋循环的检测可以在响应暂停指令而执行的微码中被实现。控制逻辑170包括虚拟化逻辑172和检测逻辑180。虚拟化逻辑172将准备并执行VM登录和退出。如下面在方法200的描述中所述的,检测逻辑180通过检测自旋循环签名(signature)来检测自旋循环的执行。这些逻辑单元的每一个还可以执行附加的功能,包括所述的那些由另一个逻辑单元执行功能,并且任何或所有这些逻辑单元可被集成在单个逻辑单元中。在一个实施例中,检测逻辑180可以追踪两个值(第一暂停和最后暂停)来帮助自旋循环的检测。这些值可以被存储在检测逻辑180、存储器130内的存储位置中,或者在处理器120可访问的任何其它存储位置中。保持第一暂停的值以指示自旋循环中第一暂停指令第一次执行时的TSC值。保持最后暂停的值以指示同一个自旋循环中的暂停指令被执行的最近时间的TSC值。对于这些值的追踪和保持在以下对方法200的描述中进行描述。控制逻辑170可以检查或以其它方式参考在VMCS132中的字段、指示符、位或者其它数据结构来确定如何管理VM环境。例如,如果客户执行暂停指令,则暂停-退出控制位133可被设置成导致VM退出。在对该实施例的描述中,控制位被设置成实现或导致想要的效果,其中,设置意味着向该位写逻辑1,而在本发明范围内任何逻辑惯例或术语都可使用。还是在VMCS132中,如果检测逻辑180检测到客户正在执行自旋循环,则暂停-循环-退出控制位134可被设置成导致VM退出。当暂停-循环-退出控制位124被设置时,暂停-退出控制位133可以被忽略,以便允许本发明的新方法替代(override)现有的响应客户执行的每个暂停指令而导致的VM退出的方法。同样,如果需要,当暂停-环-退出控制位134未被设置,和/或当处理器120在虚拟机环境之外运行时,检测逻辑180可被禁用。暂停-间隙字段136可用于存储由TSC124测量的表示时间段的值,在该时间段内自旋循环的一次迭代通常会被执行。暂停-窗口字段138可用于存储由TSC124测量的表示在VM退出发生之前客户将被允许执行自旋循环的时间段的值。VMCS132还可包括存储关于VM退出的信息的字段,以在VM退出之后当VMM接收到控制时,帮助VMM确定要采取的合适行动。例如,VMCS132包括指示VM退出的原因的退出-原因字段135。图2图解说明了方法200(—种用于在虚拟机环境中检测自旋循环的方法)中的本发明的一实施例。虽然方法实施例在不限于此方面,但是参照图1的信息处理系统100来描述图2的方法的实施例。在图2的框210中,VMM(例如,VMMl40)为VM(例如,VM150)创建VMCS(例如,VMCS132)。在框212中,如果检测逻辑180检测到自旋循环,则VMM140设置暂停-循环-退出控制位134以便导致从VM150的VM退出。在框214中,如上所述,VMM140在暂停-间隙字段136中存储暂停-间隙值。在框216中,如上所述,VMM140在暂停-窗口字段138中
存储暂停-窗口值。在框220中,发起从主机(例如,VMM140)到客户的处理器120的控制转移。控制的转移或VM登录,可包括使处理器120执行操作或微操作以保存主机状态并加载客户状态的虚拟化逻辑172。在框222中,将第一暂停和最后暂停的值设置成VM登录时的TSC值。在框224中,完成VM登录。在框230中,客户开始或继续执行指令。在框232中,发起暂停指令的执行。在框234中,当前的TSC值被存储。在框240中,确定来自框234的TSC值和最后暂停值的差是否大于暂停间隙的值。如果是,即应当是自旋循环的第一次迭代并且是自旋循环外的暂停指令的情况,那么,在框242中,框232的TSC值被存储在第一暂停和最后暂停中,并且方法200返回到框230。如果不是,即应当是自旋循环后续的迭代的情况,那么,在框250中,确定来自234的TSC值和第一暂停的值的差是否大于暂停窗口的值。如果框250中判定的结果是否定的,即应当是客户还没有在执行比所允许的更长的自旋循环的情况,那么,在框252中,来自框232的TSC值被存储在最后暂停中,并且方法200返回到框230。如果框250中判定的结果是肯定的,即应当是客户已经在执行比所允许的更长的自旋循环的情况,那么方法200在框260中继续。在框260中,发起从客户到主机的控制转移。控制转移或VM退出可包括使处理器120执行操作或微操作以保存客户状态并加载主机状态的虚拟化逻辑172。在框262中,虚拟化逻辑172在退出-原因字段235中存储表示暂停指令的执行的值,或者其它所需的值,例如表示自旋循环的检测的值。在框264中,完成VM退出。在本发明的范围内,图2所示的方法可按不同的顺序、通过省略所示的框、添加附加的框,或者以重新排序、省略或增加框的结合,来执行。此外,在本发明范围内,其它基于自旋循环签名来检测自旋循环的方法是可行的。在基于指令指针的实施例中,与暂停指令相关联的指令指针可以被存储,并且然后和与后续暂停指令相关联的指令指针相比较,以确定指令指针是否是相同的,这将表明正在执行暂停循环。在基于控制流的实施例中,在客户执行中的特定转换,例如特许级或地址空间的改变,或者指令指针的改变大于某个值,可能表示不在执行暂停循环。在基于频率的实施例中,在特定时间段中的暂停指令的数量将被计算,并且如果所述数量超过了某个值,所述某个值可以是低至一的数(即,两个暂停指令在该时间段中被执行),它可以表明正在执行自旋循环,或者执行了超过所允许的时间。根据本发明的一实施例设计的处理器120,或者任何其它的部件或者部件的组成部分,可在各个阶段中设计,从创建到模拟(simulation)到制作。表示设计的数据可能以多种方式表示该设计。首先,如在模拟时有用的,可以使用硬件描述语言或另一功能描述语言来表示硬件。作为附加或备选的方案,在设计过程的某些阶段,可以产生具有逻辑和/或晶体管门电路的电路级模型。此外,在某阶段,大多数设计达到可以用表示各种设备的物理布置的数据来建模的级别。在使用传统的半导体制造技术的情况下,表示设备布置模型的数据可以是指定在用于生产集成电路的掩模的不同掩模层上各种特性存在或不存在的数据。在本设计的任何表示中,数据可存储在任何形式的机器可读介质中。经调制或以其它方式生成以发送这样的信息的光或电波,存储器,或者磁或光存储介质,例如磁盘,可以是机器可读介质。这些介质中的任何一个可以“携带”或“指示”该设计,或者本发明的一实施例中使用的其它信息。当指示或携带信息的电载波被发送,到执行复制、缓冲、或者重传电信号的程度时,产生新的副本。因此,通信提供商或者网络提供商的行为可能构成制造包含本发明技术的产品的副本,例如,载波。这样,公开了用于在虚拟机环境中检测自旋循环的装置、方法和系统。当在附图中描述并示出某些实施例时,应当理解,这样的实施例只是解释性的而不是对宽泛的发明的限制,并且本发明不限于所示或所描述的具体构造和设置,因为在研究本公开后,本领域的技术人员可对本发明进行各种其它修改。在发展迅速且不易预见未来发展的技术领域,例如本发明的技术领域中,可在不背离本公开的原理和所附权利要求的范围的前提下,通过实现技术进步的推动,所公开的实施例可易于在设置和细节方面进行修改。
权利要求
1.一种用于执行虚拟化的处理器,包括: 执行单元,用于执行暂停指令; 时间戳计数器,用于测量暂停指令被执行的当前时间; 检测逻辑,用于跟踪第一值和第二值,所述第一值用于指示在客户的自旋循环内执行所述暂停指令的第一时间,所述第二值用于指示所述暂停指令被执行的最近时间,以及用于基于当前时间和所述第二值之间的差与阈值的比较来检测所述客户是否在所述自旋循环中;以及 虚拟化逻辑,用于响应检测到所述客户正在执行所述自旋循环以及所述当前时间和所述第一值之间的差超过窗口值而将对所述处理器的控制从所述客户转移到主机。
2.如权利要求1所述的处理器,其中,所述检测逻辑也用于基于控制流改变来检测所述客户是否正在执行所述自旋循环。
3.如权利要求1所述的处理器,其中,所述检测逻辑也用于基于时间段内的暂停指令的计数来检测所述客户是否正在执行所述自旋循环。
4.如权利要求1所述的处理器,其中,所述处理器包括多核处理器。
5.如权利要求1所述的处理器,其中,所述处理器包括多线程处理器。
6.如权利要求1所述的处理器,进一步包括包含所述检测逻辑和所述虚拟化逻辑的控制逻辑。
7.一种用于执行平台虚拟化的方法,包括: 检测客户是否正在处理器上执行自旋循环,包括将两个暂停指令的执行之间的时间段与阈值进行比较;以及 响应确定所述客户正在执行所述自旋循环,而将对所述处理器的控制从所述客户转移到主机。
8.如权利要求7所述的方法,其中,检测所述客户是否正在执行所述自旋循环的步骤包括以下步骤之一: 比较两个暂停指令的指令指针; 检测控制流改变;以及 对时间段内的暂停指令的数量计数。
9.如权利要求7所述的方法,其中,响应确定所述客户正在执行所述自旋循环而将对所述处理器的控制从所述客户转移到主机包括:响应确定所述客户已在执行比所允许的时间段长的自旋循环而转移控制。
10.一种系统,包括: 处理器,包括用于执行暂停指令的执行单元,用于测量暂停指令被执行的当前时间的时间戳计数器,检测逻辑,用于跟踪第一值和第二值,所述第一值用于指示在客户的自旋循环内执行所述暂停指令的第一时间,所述第二值用于指示所述暂停指令被执行的最近时间,以及用于基于当前时间和所述第二值之间的差与阈值的比较来检测所述客户是否在所述自旋循环中,以及虚拟化逻辑,用于响应检测到所述客户正在执行所述自旋循环以及所述当前时间和所述第一值之间的差超过窗口值而将对所述处理器的控制从所述客户转移到主机;以及 与所述处理器耦合的系统存储器。
11.如权利要求10所述的系统,其中,所述检测逻辑也用于基于控制流改变来检测所述客户是否正在执行所述自旋循环。
12.如权利要求10所述的系统,其中,所述检测逻辑也用于基于时间段内的暂停指令的计数来检测所述客户是否正在执行所述自旋循环。
13.如权利要求10所述的系统,其中,所述处理器包括多核处理器。
14.如权利要求10所述的系统,其中,所述处理器包括多线程处理器。
15.如权利要求10所述的系统,进一步包括包含所述检测逻辑和所述虚拟化逻辑的控制逻辑。
16.如权利要求10所述的系统,其中,所述系统存储器包括用于存储所述客户的状态的虚拟机控制结构。
17.如权利要求16所述的系统,其中,所述虚拟机控制结构用于存储虚拟机监视器的状 态。
全文摘要
本申请涉及“在虚拟机环境中检测自旋循环”。公开了在虚拟机环境中检测自旋循环的装置、方法和系统的实施例。在一个实施例中,装置包括检测逻辑和虚拟化逻辑。检测逻辑用于检测客户是否正在执行自旋循环。虚拟化逻辑用于响应检测逻辑检测到客户正在执行自旋循环,而将对装置的控制从客户转移到主机。
文档编号G06F9/455GK103207803SQ20131010344
公开日2013年7月17日 申请日期2008年3月28日 优先权日2007年3月30日
发明者G.奈格尔, R.L.坎贝尔, J.B.克罗斯兰德, L.K.普蒂耶达思, S.A.费希尔, S.M.贝内特, A.V.安德森, G.格尔宗 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1