CN101213518B - 通过指令组设陷来优化os上下文切换的系统和方法 - Google Patents

通过指令组设陷来优化os上下文切换的系统和方法 Download PDF

Info

Publication number
CN101213518B
CN101213518B CN2006800240723A CN200680024072A CN101213518B CN 101213518 B CN101213518 B CN 101213518B CN 2006800240723 A CN2006800240723 A CN 2006800240723A CN 200680024072 A CN200680024072 A CN 200680024072A CN 101213518 B CN101213518 B CN 101213518B
Authority
CN
China
Prior art keywords
virtual machine
registers
virtual
incident
selected set
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2006800240723A
Other languages
English (en)
Other versions
CN101213518A (zh
Inventor
S·L·格罗伯曼
M·D·金尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN101213518A publication Critical patent/CN101213518A/zh
Application granted granted Critical
Publication of CN101213518B publication Critical patent/CN101213518B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在某些实施例中,本发明涉及在各虚拟机之间转换时保存有限的上下文信息。一组预先确定的指令和事件的集合引起一陷阱。一位或一标志被设置以指示该事件已在一虚拟机内出现。虚拟机监视器基于标记是否已被设置来判定是否需要在上下文切换时保存或恢复特定的寄存器集合。另外还描述并要求保护其他的实施例。

Description

通过指令组设陷来优化OS上下文切换的系统和方法
发明领域
本发明的实施例一般地涉及计算设备,尤其涉及在各虚拟机之间转换时保存有限的上下文信息。
背景信息
在由操作系统控制的各进程间存在用于上下文切换的各种机制。类似地,在虚拟化环境中,上下文切换在通常是虚拟机监视器(VMM)/管理器的虚拟机(VM)调度器在活动和非活动虚拟机之间切换时是必需的。在虚拟化环境中,VMM在运行的各操作系统之中调度可用的处理器周期。各种操作系统(OS)在相应的客户虚拟机中运行。在调度一客户VM运行前,当前运行VM的上下文必须被保存以确保其再次被调度运行时可以适当地运行。
必须将各处理器寄存器保存为上下文切换的一部分。除了任何处理器专用的寄存器之外,还必须保存标准寄存器、栈指针、MMX、单指令多数据(SIMD)和浮点(FP)寄存器。当上下文从当前运行的VM中切换时,就在调度下一个被调度的VM之前执行上下文保存。用于下一个被调度VM的上下文寄存器在允许该VM再次运行之前被恢复。上下文切换在时间、功率和其他资源上的花费都是高昂的。
发明内容
根据本发明的一个方面,提供了一种虚拟化平台系统,包括:具有多组寄存器集合的处理器;在所述处理器上运行的多个虚拟机(VM),每个VM均在一客户操作系统中运行;响应于在运行中的VM内出现的预先确定的事件而从所述运行的VM中退出的陷阱机制,所述陷阱机制设置一相应的标志以指示在所述VM内已出现所述预先确定的事件;以及用于在所述多个虚拟机之间调度和切换上下文的虚拟机监视器(VMM),其中所述VMM判定所述多组寄存器集合中的哪些在所述多个VM之间的上下文切换时要被保存和恢复,所述判定基于由所述陷阱机制设置的所述相应的标志,其中,所述陷阱机制包括虚拟化退出体系结构,所述体系结构具有虚拟机控制结构(VMCS)数据结构用以识别引起陷阱的多个事件。
在上述虚拟化平台中,所述相应的标志包括在虚拟机控制结构(VMCS)数据结构内的一位,并且所述多个虚拟机的每一个都具有至少一个相应的VMCS。
在上述虚拟化平台中,响应于预先确定的事件,重置所述相应的标志。
在上述虚拟化平台中,响应于先前在虚拟机内出现的被选事件,为在所述虚拟机内的被选事件禁用所述陷阱机制。
在上述虚拟化平台中,当虚拟机被重新开始时,为所述虚拟机重新使用被停用的陷阱机制。
在上述虚拟化平台中,当所述多个虚拟机中的一个以上的虚拟机具有由所述陷阱机制为被选寄存器集合设置的相应的标记的情况下,所述VMM要在上下文切换时为所述被选寄存器集合保存并恢复上下文,并且其中在所述多个虚拟机中的一个或更少的虚拟机具有由所述陷阱机制为被选寄存器集合设置的相应的标记的情况下,所述VMM则制止在上下文切换时为所述被选寄存器集合保存并恢复上下文。
在上述虚拟化平台中,在所述多个虚拟机之一上运行的操作系统(OS)在被选寄存器集合不再由在所述OS下运行的各进程访问时通知所述VMM。
根据本发明的另一个方面,提供了一种通过指令组设陷来优化上下文切换的方法,包括:识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合;以及当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机保存所述被选寄存器集合的上下文,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生。
在上述方法中,还包括:当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机恢复所述被选寄存器集合的上下文,所述恢复在将处理器的上下文从所述第二虚拟机切换到第一虚拟机之前发生。
在上述方法中,所述识别包括:响应于预先确定的指令的执行,判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义。
在上述方法中,所述识别包括:在第一虚拟机中设陷一事件,其中所述事件指示对所述被选寄存器集合的使用;以及设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用。
在上述方法中,还包括判定所述标志是否为相应的被选寄存器集合所设置。
在上述方法中,所述设陷包括:基于在虚拟机控制结构(VMCS)内相应于所述事件的数据,识别在第一虚拟机中的所述事件是否要被设陷;以及当所述VMCS指示所述事件应该被设陷时,在第一虚拟机内设陷所述事件,并且在所述VMCS指示所述事件不应被设陷时,制止设陷所述事件。
在上述方法中,还包括:当所述被选事件已在先前被识别为正被所述第一虚拟机使用时,制止设陷所述事件。
在上述方法中,还包括:判定所述第一虚拟机是否使用被选寄存器集合;
判定是否有任何其他的虚拟机使用所述被选寄存器集合;以及当所述被选寄存器集合没有被任何其他虚拟机使用时,制止为所述第一虚拟机保存所述被选寄存器集合的上下文。
在上述方法中,还包括:通知所述VMM所述第一VM不再使用所述被选寄存器集合。
根据本发明的又一个方面,提供了一种通过指令组设陷来优化上下文切换的装置,包括:用于识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合的装置;以及用于当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时为所述第一虚拟机保存所述被选寄存器集合的上下文的装置,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生。
在上述通过指令组设陷来优化上下文切换的装置中,还包括:用于当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时为所述第一虚拟机恢复所述被选寄存器集合的上下文的装置,所述恢复在将处理器的上下文从第二虚拟机切换到第一虚拟机之前发生。
在上述通过指令组设陷来优化上下文切换的装置中,识别装置还包括:用于响应于预先确定的指令的执行判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义的装置。
在上述通过指令组设陷来优化上下文切换的装置中,识别装置还包括:用于在第一虚拟机中设陷一事件的装置,其中所述事件指示对所述被选寄存器集合的使用;以及用于设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用的装置。
在上述通过指令组设陷来优化上下文切换的装置中,还包括用以判定所述标志是否为相应的被选寄存器集合所设置的装置。
在上述通过指令组设陷来优化上下文切换的装置中,设陷装置还包括:用于基于在虚拟机控制结构(VMCS)内相应于所述事件的数据识别在第一虚拟机中的所述事件是否要被设陷的装置;以及用于当所述VMCS指示所述事件应该被设陷时在第一虚拟机内设陷所述事件并且当所述VMCS指示所述事件不应被设陷时制止设陷所述事件的装置。
在上述通过指令组设陷来优化上下文切换的装置中,还包括:用于当所述被选事件已在先前被识别为正被所述第一虚拟机使用时制止设陷所述事件的装置。
在上述通过指令组设陷来优化上下文切换的装置中,还包括:用于判定第一虚拟机是否使用被选寄存器集合的装置;用于判定是否有任何其他的虚拟机使用所述被选寄存器集合的装置;以及用于当所述被选寄存器集合没有被任何其他虚拟机使用时制止所述为所述第一虚拟机保存所述被选寄存器集合的上下文的装置。
在上述通过指令组设陷来优化上下文切换的装置中,还包括:用于通知所述VMM所述第一VM不再使用所述被选寄存器集合的装置。
附图简述
本发明的特征和优点将从本发明随后的详细描述中变得显而易见,其中:
图1是在其上可以实践本发明的各实施例的一个示例性虚拟化平台的框图;
图2是根据本发明的各实施例的一个示例性进程流程的流程图;以及
图3是根据本发明的各实施例可以在其上执行虚拟机监视器(VMM)的一个示例性平台的框图。
详细描述
本发明的一个实施例是一种涉及在虚拟化环境中在各虚拟机(VM)之间切换时限制要保存的上下文的系统和方法。在至少一个实例中,本发明旨在仅保存实际上正由当前运行的VM使用的那一组寄存器集合,而不是保存所有可能的寄存器。
在本发明的说明书中对“一个实施例”或“实施例”的参考意指在本发明的至少一个实施例中包括了结合该实施例描述的特定特征、结构或性能。这样,贯穿说明书出现在各处的短语“在一个实施例中”等等未必全部指代同一实施例。
出于解释的目的,阐明了特定的构造和细节以便提供对本发明的透彻的理解。然而,本领域普通技术人员显而易见的是在没有在此呈现的特定细节的情况下也能实践本发明的各实施例。此外,公知的特征被省略或简化以免遮蔽本发明的主题。各个示例贯穿在本描述中给出。这些仅是本发明特定实施例的描述。本发明的范围不限于给出的各示例。
现有系统在挂起一VM并调度另一VM之前通常会保存有关前一VM的所有上下文。在许多情况下,挂起的VM并不会使用所有级别的寄存器。例如,该VM可能不执行浮点运算,所以在它被VMM重新开始时是无需有关浮点(FP)寄存器的上下文的。但现有系统在上下文切换之前还是会保存该FP寄存器。这项操作在非必需时是浪费的。
现在参考图1,示出的是在其上可以实践本发明各实施例的一个示例性虚拟化平台100。在平台硬件120上执行VMM 110和客户VM 101、103、105和107。平台硬件120可以包括处理器122、存储器124以及一个或多个I/O设备126和128。处理器122可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。平台硬件120可以是个人计算机(PC)、大型机、手持式设备、便携式计算机、机顶盒或在任何其他计算系统。虽然图1仅示出了一个这种处理器122,但是在平台硬件120内可以有一个或多个处理器,并且这些处理器的一个或多个可以包括多线程、多核心等等。
存储器124可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存或在可由处理器122读取的任何其他类型的介质。存储器124可以存储用来执行本发明的各方法实施例的指令。
一个或多个I/O设备126和128可以是例如系统总线(例如,PCI、ISA、AGP)上的网络接口卡、通信端口、视频控制器、磁盘控制器,集成入芯片组逻辑或处理器的设备(例如,实时时钟、可编程定时器、性能计数器),或是平台硬件120上的任何其他设备。一个或多个I/O设备126和128可以通过I/O指令、存储器映射的I/O访问或在通过本领域内已知的任何其他方法而得以访问。
处理器122具有多个寄存器123。寄存器123的上下文通常会在处理器上下文切换期间被保存。
在本发明的实施例中,VMM会在一客户VM使用一组寄存器的集合时被通知,以指示该VMM需要在上下文切换期间保存使用过的寄存器的上下文。在一个示例中,流动的SIMD扩展(SSE)寄存器可由客户VM使用。某些指令利用一组寄存器的集合。例如存在已知的指令来执行SIMD乘法。如果客户VM进程执行该指令,则这些SIMD寄存器在该客户VM中使用。
在现有的虚拟化环境中,虚拟化陷阱(trap)会在某些情况下出现。这一陷阱会引起VMM从在一客户VM上的处理中退出(exit)。在某些环境中,该陷阱被称为VM_exit。本发明的实施例会在预先确定的指令在客户VM内执行时引起一陷阱或VM_exit出现。控制传送至VMM,从而做出该使用的记录。在一个实施例中,VMM清除该陷阱机制,以使得预先确定指令的后续使用不会在当前会话期间再引起额外的陷阱。于是,仅仅是预先确定指令的首次使用才会引起一陷阱。
现参考图2,示出的是根据本发明实施例的一个示例性进程流程。在201,标准寄存器在上下文切换期间被充分理解。换句话说,总是可以为该客户VM上下文保存一组寄存器的标准集合。在203,VMM设置一组预先确定的操作或指令集合来引起一陷阱,从而通知该VMM相应的寄存器正被使用。本领域普通技术人员显而易见的是可以使用各种方法来识别某些指令应该引起陷阱。
在运行在虚拟化环境内的某些实施例中,虚拟机控制结构(VMCS)可用于识别这些目标操作。VMCS是分配给每个VM的数据结构,用于分派给特定VM的每个存储器。在多处理器系统中,VMM可以选择将一处理器分派给特定的VM并且不将其分派给其他的VM。在其它实施例中,VMM可以允许所有的VM使用所有的处理器。VMCS含有多个控制字段来定义哪些事件引起VM_exit(陷阱)而哪些事件不引起陷阱。现有系统中的VMCS数据结构并不容纳用于设陷(trapping)指令的字段。
现有系统中的VMCS数据结构并不为访问特定寄存器集合的指令组容纳用于设陷机制的字段。通过向VMCS分配额外的位字段就可以实现对VMCS的设立,以容纳有关在此描述的事件的陷阱。额外的位字段将识别FP、MMX、SSE、SIMD指令等,来判定一客户VM内的进程是否已使用了一组特定的寄存器集合。
VMCS是可动态修改的。当一客户VM被调度运行时,可以按需设置VMCS的各字段,以便目标指令和事件可被识别。例如,VMCS可以具有与一组利用浮点寄存器的指令集合相对应的一位。在此场景中,设置该位并且随后在相应VM内FDIV指令的执行会引起一VM_exit或管理程序陷阱。一旦各陷阱被识别并设置,就在205进行常规的OS操作。
在一个示例性执行中,在207执行类似FDIV的FP指令。在209,控制被传送给VMM,以使其基于引发陷阱的这一操作来采取适当的动作。在此情况下,FDIV的使用与这一客户VM相关联,该VM执行此指令以指示必须为其保存FP寄存器的上下文。一旦VMM已识别出该客户VM需要待保存的FP寄存器的上下文,就在211停用该陷阱,以使得每个后续FP指令都不会在当前会话中引起陷阱。
在某些实施例中,可以保持对陷阱停用,直至客户VM退出或关机。于是,进入/退出该客户VM的每次上下文切换就都会要求(在此示例中)保存或恢复FP寄存器。然而,某些客户VM可能只是偶尔使用一组寄存器的集合。在此情况下,更为有效的是在每次上下文切换时重置该陷阱。在某些实施例中,可以在装入或重新开始一客户VM时重新启用该陷阱。VMM那时也会“忘记”该客户VM在先前会话中使用了该寄存器集合。如果该客户VM在这一活动会话期间不使用一组特定的寄存器集合,则VMM就不会将该寄存器集合识别为要求上下文保存。这样就得以将上下文保存/重新开始降至最低。
在一个实施例中,可以在VMCS内识别目标事件。然而,当该事件出现时,可以在该VMCS中设置或清除一位,以指示这一事件已出现而无需要求VM_exit的完全陷阱。随后可以在上下文切换开始时检查这一位以判定是否必须保存/恢复一组寄存器的集合。处理器硬件可以被配置成在该事件出现时自动设置该位。这通常要求该指令设置体系结构被配置为在特定指令上设陷。其它实施例可以以软件、固件或在硬件、固件和软件的结合来设置该位。本发明的某些实施例还可通过进一步扩展VT-x(虚拟化技术扩展)体系结构来实现。有关VT-x的更多信息可在“Intel
Figure GA20181351200680024072301D00071
Virtualization Technology Specification for the IA-32 Intel
Figure GA20181351200680024072301D00072
Architecture”(文档号C97063-002,2005年4月)中找到,并且可以在URL高速缓存www*intel*com/cd/00/00/19/76/197666197666.pdf处的公共因特网上找出(注意,已用星号代替该文档中所含URL内的小数点,以避免出于疏忽的超链接)。
在另一实施例中,VMM知晓是否有多于一个客户VM使用一组特定的寄存器集合。例如,在该虚拟化环境中可以运行了5个客户VM,但是只有一个在使用FP运算。在此情况下,仅有一个客户VM存取FP寄存器,所以无需保存或恢复FP寄存器的上下文。除了留意一特定客户VM是否使用该寄存器集合之外,VMM还需留意该寄存器集合是否处于被第二客户VM修改的危险中,如果不是,则无需在上下文切换期间保持/恢复该寄存器集合。在第二客户OS存取该寄存器集合时,VMM就会为了使用该寄存器集合的两个客户VM而在上下文切换时存储/恢复该寄存器集合。
在另一个实施例中,在一客户VM上运行的操作系统可以与VMM合作。该客户VM可以知晓它的进程,以便了解哪些进程使用了哪些寄存器集合。例如,如果OS知道仅有一个执行中的进程在使用SIMD指令,则在该进程退出时,就不再需要在该客户VM的上下文切换时保存/恢复SIMD寄存器。在此实施例中,OS可以在先前已引起一陷阱的进程退出时通知该VMM,并且该VMM随后重置该陷阱控制结构以指示该客户VM不使用该特定寄存器集合。
现参考图3,示出的是根据本发明各实施例,在其上可以执行在前描述的VMM的一个示例性平台300。处理器310经由前端总线301与也被称为北桥的存储器控制器集线器(MCH)314通信。MCH 314经由存储器总线303与系统存储器312通信。MCH 314还经由图形总线305与先进图形端口(AGP)316通信。MCH 314经由外围元件互连(PCI)总线307与也被称为南桥的I/O控制器集线器(ICH)320通信。ICH 320可耦合至诸如PCI硬盘驱动(未示出)之类的一个或多个组件以及诸如IDE 322、USB 324、LAN 326和音频328之类的传统组件,并经由低引脚数(LPC)总线356耦合至超I/O(SIO)控制器356。
处理器310可以是能够执行软件的任何类型的处理器,诸如微处理器、数字信号处理器、微控制器等等。虽然图1仅示出了一个这种处理器310,但是在平台硬件300内可以有一个或多个处理器,并且这些处理器中的一个或多个可以包括多线程、多核心等等。
存储器312可以是硬盘、软盘、随机存取存储器(RAM)、只读存储器(ROM)、闪存或在可由处理器310读取的任何其他类型的介质。存储器312可以存储用来执行本发明各方法实施例的指令。
诸如闪存352之类的非易失性存储器可以经由低引脚数(LPC)总线309耦合至IO控制器。BIOS固件354通常驻留在闪存352内,并且启动将执行来自该闪存或固件的指令。
在某些实施例中,平台300是使能服务器管理任务的服务器。该平台实施例可以具有经由LPC 309耦合至ICH 320的基板管理控制器(BMC)350。
在此描述的技术不受任何硬件或软件配置的限制;它们可以在任何计算、消费电子设备或处理环境中找到其适用性。这些技术可以被实现为硬件、软件或两者的结合。这些技术可以被实现为在诸如移动或固定计算机、个人数字助理、机顶盒、蜂窝电话和寻呼机、消费电子设备(包括DVD播放器、个人视频记录器、个人视频播放器、卫星接收器、立体声接收器、有线电视接收器)之类的可编程机器上,以及在包括处理器、可由处理器访问的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及一个或多个输出设备的其他电子设备上执行的程序。程序代码可应用于使用输入设备输入的数据,用以执行在此描述的功能并生成输出信息。输出信息可被应用于一个或多个输出设备。本领域普通技术人员可以认识到本发明可以用各种系统配置来实践,这些系统包括多处理器系统、微型计算机、大型计算机、独立消费电子设备等等。本发明还可以在分布式计算环境中实践,在该环境中任务或其部分可由经通信网络链接的远程处理设备来执行。
每个程序都能够以高级程序化的或面向对象的编程语言来实现,以便与处理系统通信。然而,程序也可以在需要时用汇编或机器语言实现。在任一情况下,该语言都可被编译或解释。
程序指令可用于引起用这些指令编程的通用处理系统或专用处理系统执行在此描述的操作。代替地,这些操作可由含有用于执行各操作的硬连线逻辑的专用硬件组件,或由编程的计算机组件和定制硬件组件的任何组合来执行。在此描述的各方法可被提供为计算机程序产品,这些产品可以包括其上存储有指令的机器可访问介质,而这些指令则用于编程处理系统或其他电子设备来执行上述各方法。在此使用的术语“机器可访问介质”应该包括能够存储或编码供机器执行并能使得该机器执行在此描述的任一方法的指令序列的任何介质。术语“机器可访问介质”因此应该包括但不限于固态存储器、光盘和磁盘、编码数据信号的载波。此外,本领域中常以一种或其他形式提及软件(例如,程序、规程、进程、应用程序、模块、逻辑等)用以采取一行动或引发一结果。这些表达仅仅是陈述由处理系统执行的以引起处理器执行一行动来产生一结果的软件的一种简要方式。
虽然已经参考示出的各实施例对本发明进行了描述,但是这一描述并不旨在解释为一个限制的含义。示出实施例以及本发明其他各实施例的各种修改对本发明所属的领域中的普通技术人员是显而易见的,并认为位于本发明的精神和范围之内。

Claims (23)

1.一种虚拟化平台系统,包括:
具有多组寄存器集合的处理器;
在所述处理器上运行的多个虚拟机(VM),每个VM均在一客户操作系统中运行;
响应于在运行中的VM内出现的预先确定的事件而从所述运行的VM中退出的虚拟化退出体系结构,所述虚拟化退出体系结构具有虚拟机控制结构(VMCS)数据结构用以识别引起陷阱的多个事件,所述虚拟化退出体系结构设置一相应的标志以指示在所述VM内已出现所述预先确定的事件;以及
用于在所述多个虚拟机之间调度和切换上下文的虚拟机监视器(VMM),其中所述VMM判定所述多组寄存器集合中的哪些在所述多个VM之间的上下文切换时要被保存和恢复,所述判定基于由所述虚拟化退出体系结构设置的所述相应的标志。
2.如权利要求1所述的虚拟化平台,其特征在于,所述相应的标志包括在虚拟机控制结构(VMCS)数据结构内的一位,并且所述多个虚拟机的每一个都具有至少一个相应的VMCS。
3.如权利要求1所述的虚拟化平台,其特征在于,响应于预先确定的事件,重置所述相应的标志。
4.如权利要求1所述的虚拟化平台,其特征在于,响应于先前在虚拟机内出现的被选事件,为在所述虚拟机内的被选事件禁用所述虚拟化退出体系结构。
5.如权利要求4所述的虚拟化平台,其特征在于,当虚拟机被重新开始时,为所述虚拟机重新使用被停用的虚拟化退出体系结构。
6.如权利要求1所述的虚拟化平台,其特征在于,当所述多个虚拟机中的一个以上的虚拟机具有由所述虚拟化退出体系结构为被选寄存器集合设置的相应的标记的情况下,所述VMM要在上下文切换时为所述被选寄存器集合保存并恢复上下文,并且其中在所述多个虚拟机中的一个或更少的虚拟机具有由所述虚拟化退出体系结构为被选寄存器集合设置的相应的标记的情况下,所述VMM则制止在上下文切换时为所述被选寄存器集合保存并恢复上下文。
7.如权利要求1所述的虚拟化平台,其特征在于,在所述多个虚拟机之一上运行的操作系统(OS)在被选寄存器集合不再由在所述OS下运行的各进程访问时通知所述VMM。
8.一种通过指令组设陷来优化上下文切换的方法,包括:
识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合;以及
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机保存所述被选寄存器集合的上下文,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生,
其中,所述识别包括:
在第一虚拟机中设陷一事件,其中所述事件指示对所述被选寄存器集合的使用;以及
设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用。
9.如权利要求8所述的方法,其特征在于,还包括:
当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时,为所述第一虚拟机恢复所述被选寄存器集合的上下文,所述恢复在将处理器的上下文从所述第二虚拟机切换到第一虚拟机之前发生。
10.如权利要求8所述的方法,其特征在于,所述识别包括:
响应于预先确定的指令的执行,判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义。
11.如权利要求8所述的方法,其特征在于,还包括判定所述标志是否为相应的被选寄存器集合所设置。
12.如权利要求8所述的方法,其特征在于,所述设陷包括:
基于在虚拟机控制结构(VMCS)内相应于所述事件的数据,识别在第一虚拟机中的所述事件是否要被设陷;以及
当所述VMCS指示所述事件应该被设陷时,在第一虚拟机内设陷所述事件,并且在所述VMCS指示所述事件不应被设陷时,制止设陷所述事件。
13.如权利要求8所述的方法,其特征在于,还包括:
当所述被选事件已在先前被识别为正被所述第一虚拟机使用时,制止设陷所述事件。
14.如权利要求8所述的方法,其特征在于,还包括:
判定所述第一虚拟机是否使用被选寄存器集合;
判定是否有任何其他的虚拟机使用所述被选寄存器集合;以及
当所述被选寄存器集合没有被任何其他虚拟机使用时,制止为所述第一虚拟机保存所述被选寄存器集合的上下文。
15.如权利要求8所述的方法,其特征在于,还包括:
通知所述VMM所述第一VM不再使用所述被选寄存器集合。
16.一种通过指令组设陷来优化上下文切换的装置,包括:
用于识别何时虚拟化平台内的第一虚拟机使用在所述虚拟化平台上一处理器内的被选寄存器集合的装置;以及
用于当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时为所述第一虚拟机保存所述被选寄存器集合的上下文的装置,所述保存在将处理器的上下文从所述第一虚拟机切换到第二虚拟机之前发生,
其中,识别装置还包括:
用于在第一虚拟机中设陷一事件的装置,其中所述事件指示对所述被选寄存器集合的使用;以及
用于设置一标志以指示所述被选寄存器集合被所述第一虚拟机使用的装置。
17.如权利要求16所述的装置,其特征在于,还包括:
用于当所述寄存器集合由虚拟机监视器(VMM)识别为正被所述第一虚拟机使用时为所述第一虚拟机恢复所述被选寄存器集合的上下文的装置,所述恢复在将处理器的上下文从第二虚拟机切换到第一虚拟机之前发生。
18.如权利要求16所述的装置,其特征在于,识别装置还包括:
用于响应于预先确定的指令的执行判定所述预先确定的指令是否相应于所述被选寄存器集合而在虚拟机控制结构(VMCS)内被定义的装置。
19.如权利要求16所述的装置,其特征在于,还包括用以判定所述标志是否为相应的被选寄存器集合所设置的装置。
20.如权利要求16所述的装置,其特征在于,设陷装置还包括:
用于基于在虚拟机控制结构(VMCS)内相应于所述事件的数据识别在第一虚拟机中的所述事件是否要被设陷的装置;以及
用于当所述VMCS指示所述事件应该被设陷时在第一虚拟机内设陷所述事件并且当所述VMCS指示所述事件不应被设陷时制止设陷所述事件的装置。
21.如权利要求19所述的装置,其特征在于,还包括:
用于当所述被选事件已在先前被识别为正被所述第一虚拟机使用时制止设陷所述事件的装置。
22.如权利要求16所述的装置,其特征在于,还包括:
用于判定第一虚拟机是否使用被选寄存器集合的装置;
用于判定是否有任何其他的虚拟机使用所述被选寄存器集合的装置;以及
用于当所述被选寄存器集合没有被任何其他虚拟机使用时制止所述为所述第一虚拟机保存所述被选寄存器集合的上下文的装置。
23.如权利要求16所述的装置,其特征在于,还包括:
用于通知所述VMM所述第一VM不再使用所述被选寄存器集合的装置。
CN2006800240723A 2005-06-30 2006-06-29 通过指令组设陷来优化os上下文切换的系统和方法 Expired - Fee Related CN101213518B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/174,254 US7904903B2 (en) 2005-06-30 2005-06-30 Selective register save and restore upon context switch using trap
US11/174,254 2005-07-01
PCT/US2006/025960 WO2007005819A1 (en) 2005-06-30 2006-06-29 System and method to optimize os context switching by instruction group trapping

Publications (2)

Publication Number Publication Date
CN101213518A CN101213518A (zh) 2008-07-02
CN101213518B true CN101213518B (zh) 2012-10-10

Family

ID=37075628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800240723A Expired - Fee Related CN101213518B (zh) 2005-06-30 2006-06-29 通过指令组设陷来优化os上下文切换的系统和方法

Country Status (6)

Country Link
US (1) US7904903B2 (zh)
EP (1) EP1899810B1 (zh)
JP (2) JP2008545205A (zh)
KR (1) KR100974108B1 (zh)
CN (1) CN101213518B (zh)
WO (1) WO2007005819A1 (zh)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904903B2 (en) 2005-06-30 2011-03-08 Intel Corporation Selective register save and restore upon context switch using trap
US20080052776A1 (en) * 2006-08-25 2008-02-28 Nomadrive, Inc. Method and apparatus of an unintrusive plug and play application virtualization platform
US8296775B2 (en) * 2007-01-31 2012-10-23 Microsoft Corporation Efficient context switching of virtual processors by managing physical register states in a virtualized environment
US7941657B2 (en) * 2007-03-30 2011-05-10 Lenovo (Singapore) Pte. Ltd Multi-mode mobile computer with hypervisor affording diskless and local disk operating environments
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US8261284B2 (en) * 2007-09-13 2012-09-04 Microsoft Corporation Fast context switching using virtual cpus
JP4530182B2 (ja) * 2008-02-27 2010-08-25 日本電気株式会社 プロセッサ、メモリ装置、処理装置及び命令の処理方法
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) * 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US8468533B2 (en) * 2008-04-28 2013-06-18 Panasonic Corporation Virtual machine control device, method, and program wherein a switching task used to switch to the highest priority virtual machines is the highest priority task in the current virtual machine and the virtual machine that is the switching target
US9417914B2 (en) * 2008-06-02 2016-08-16 Microsoft Technology Licensing, Llc Regaining control of a processing resource that executes an external execution context
JP5405799B2 (ja) * 2008-10-30 2014-02-05 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US8429648B2 (en) * 2009-05-28 2013-04-23 Red Hat, Inc. Method and apparatus to service a software generated trap received by a virtual machine monitor
US8813069B2 (en) * 2009-05-29 2014-08-19 Red Hat, Inc. Migration of functionalities across systems
KR101651202B1 (ko) * 2009-12-21 2016-08-26 삼성전자주식회사 가상화 장치 및 가상화 장치의 동작 방법
US8612633B2 (en) * 2010-03-31 2013-12-17 Microsoft Corporation Virtual machine fast emulation assist
JP5758914B2 (ja) * 2010-12-21 2015-08-05 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム及び仮想計算機システム制御方法
JP5369356B2 (ja) * 2011-11-09 2013-12-18 株式会社日立製作所 仮想化プログラム
KR101433644B1 (ko) * 2011-11-09 2014-08-27 상명대학교서울산학협력단 Arm 기반 운영체제의 가상화를 위한 정책 제공 시스템 및 방법
US9164789B2 (en) * 2012-02-29 2015-10-20 Red Hat Israel, Ltd. Multiple queue management and adaptive CPU matching in a virtual computing system
CN104321749B (zh) * 2012-03-29 2019-01-29 英特尔公司 用于管理虚拟化环境中的中断的体系结构和方法
US9052971B2 (en) 2012-07-12 2015-06-09 International Business Machines Corporation Scalable event-driven system
WO2014081608A1 (en) * 2012-11-20 2014-05-30 Unisys Corporation Optimized execution of virtualized software using securely partitioned virtualization system with dedicated resources
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
CN104937550B (zh) * 2013-01-15 2019-03-26 英派尔科技开发有限公司 以函数为目标的虚拟机切换
JP5608797B2 (ja) * 2013-07-31 2014-10-15 株式会社日立製作所 仮想化プログラム、仮想計算機システム及び計算機システム制御方法
KR102033009B1 (ko) * 2013-09-13 2019-10-16 한국전자통신연구원 가상 물리 시스템 및 그의 가상 머신 모니터링 방법
JP5584811B2 (ja) * 2013-10-30 2014-09-03 株式会社日立製作所 仮想計算機の制御方法、仮想化プログラム及び仮想計算機システム
US11249777B2 (en) * 2014-07-10 2022-02-15 Red Hat Israel, Ltd. Virtual machine context management
US9946566B2 (en) * 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
KR101690949B1 (ko) 2016-03-11 2016-12-29 국방과학연구소 가상화 환경에서의 가상머신 게스트 os 자원 정보 수집 장치 및 방법
US20180299269A1 (en) * 2016-07-27 2018-10-18 Lumedyne Technologies Incorporated Multi-axis, single-drive inertial device
US10248595B2 (en) * 2017-08-10 2019-04-02 Infineon Technologies Ag Virtual machine monitor interrupt support for computer processing unit (CPU)
US10394595B2 (en) * 2017-08-23 2019-08-27 Intel Corporation Method to manage guest address space trusted by virtual machine monitor
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10496437B2 (en) * 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US20230088998A1 (en) * 2021-09-17 2023-03-23 Samsung Electronics Co., Ltd. System on chip, controller and vehicle

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4787031A (en) * 1985-01-04 1988-11-22 Digital Equipment Corporation Computer with virtual machine mode and multiple protection rings
JPS61183742A (ja) * 1985-02-08 1986-08-16 Hitachi Ltd フロ−テイング演算プロセツサのプログラム実行制御装置
JPH0754470B2 (ja) 1986-03-24 1995-06-07 株式会社日立製作所 仮想計算機システムの制御方法
JPH0373027A (ja) 1989-08-14 1991-03-28 Fujitsu Ltd ベクトルレジスタ退避復元方式
JPH03292527A (ja) * 1990-04-11 1991-12-24 Fujitsu Ltd 演算装置
JP2902746B2 (ja) * 1990-07-27 1999-06-07 富士通株式会社 仮想計算機制御方式
JPH056281A (ja) 1990-10-04 1993-01-14 Nec Corp 情報処理装置
JPH06242973A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd 仮想計算機システムにおけるvmへのvpマシンチェックの通知方法
US5481719A (en) * 1994-09-09 1996-01-02 International Business Machines Corporation Exception handling method and apparatus for a microkernel data processing system
US7275246B1 (en) * 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
US7191440B2 (en) * 2001-08-15 2007-03-13 Intel Corporation Tracking operating system process and thread execution and virtual machine execution in hardware or in a virtual machine monitor
US7127548B2 (en) * 2002-04-16 2006-10-24 Intel Corporation Control register access virtualization performance improvement in the virtual-machine architecture
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7415708B2 (en) * 2003-06-26 2008-08-19 Intel Corporation Virtual machine management using processor state information
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US20050132364A1 (en) 2003-12-16 2005-06-16 Vijay Tewari Method, apparatus and system for optimizing context switching between virtual machines
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US7500244B2 (en) * 2004-06-30 2009-03-03 Intel Corporation Adaptive algorithm for selecting a virtualization algorithm in virtual machine environments
US20060070065A1 (en) * 2004-09-29 2006-03-30 Zimmer Vincent J Memory support for heterogeneous virtual machine guests
US20060149940A1 (en) * 2004-12-27 2006-07-06 Intel Corporation Implementation to save and restore processor registers on a context switch
US7904903B2 (en) 2005-06-30 2011-03-08 Intel Corporation Selective register save and restore upon context switch using trap

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Tokuzo Kiyohara et al.Register Connection:A New Approach toAddingRegistersintoInstruction Set Architectures.Proceedings of the annual international symposium on computer architecture.1993,252,253. *

Also Published As

Publication number Publication date
EP1899810A1 (en) 2008-03-19
WO2007005819A1 (en) 2007-01-11
KR20080020639A (ko) 2008-03-05
JP2012079357A (ja) 2012-04-19
US7904903B2 (en) 2011-03-08
US20070006228A1 (en) 2007-01-04
KR100974108B1 (ko) 2010-08-04
EP1899810B1 (en) 2018-01-10
JP5562988B2 (ja) 2014-07-30
JP2008545205A (ja) 2008-12-11
CN101213518A (zh) 2008-07-02

Similar Documents

Publication Publication Date Title
CN101213518B (zh) 通过指令组设陷来优化os上下文切换的系统和方法
CN101449240B (zh) 在运行中的操作系统下启动系统管理程序
US10621030B2 (en) Restoring an application from a system dump file
CN101405712B (zh) 利用虚拟化技术来加速域特定运行时环境的框架
US9286182B2 (en) Virtual machine snapshotting and analysis
US8429669B2 (en) Virtual machine switching control by prefetching information out of and updating a set of processor control information based on a bitmap having update status
EP3555744A1 (en) Kernel soft reset using non-volatile ram
US9563439B2 (en) Caching unified extensible firmware interface (UEFI) and/or other firmware instructions in a non-volatile memory of an information handling system (IHS)
US10599419B2 (en) Secure firmware updates using virtual machines to validate firmware packages
CN102609296A (zh) 虚拟机分支和并行执行
CN109643346B (zh) 控制流完整性
CN103999041A (zh) 在设备初始化期间备份固件
CN108334400A (zh) 为安全飞地管理存储器
US8468388B2 (en) Restoring programs after operating system failure
US7370181B2 (en) Single stepping a virtual machine guest using a reorder buffer
US20030046524A1 (en) Method for dynamically designating initialization modules as recovery code
WO2021062257A1 (en) Retire queue compression
US11726852B2 (en) Hardware-assisted paravirtualized hardware watchdog
US20230185580A1 (en) Single node deployment of container platform
CN110795231B (zh) 一种虚拟cpu的处理方法及装置
US20240020103A1 (en) Parallelizing data processing unit provisioning
US11803445B2 (en) Boot failure protection on smartNICs and other computing devices
CN111158863B (zh) 中断控制器的处理方法、装置及电子设备
CN118051367A (zh) 一种设备日志保存方法、装置及电子设备
CN114610492A (zh) 乱序执行资源的回收方法、装置、电子设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20121010

Termination date: 20180629