著录项信息
专利名称 | 控制硬件中断应答的方法、装置及系统 |
申请号 | CN200410080637.2 | 申请日期 | 2004-09-29 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2005-08-03 | 公开/公告号 | CN1648866 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/48 | IPC分类号 | G;0;6;F;9;/;4;8;;;G;0;6;F;9;/;4;6查看分类表>
|
申请人 | 英特尔公司 | 申请人地址 | 美国加利福尼亚州
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 英特尔公司 | 当前权利人 | 英特尔公司 |
发明人 | 史蒂文·M·贝内特;埃里克·科塔-罗布尔斯;斯塔林塞尔瓦拉·杰亚辛格;吉尔伯特·奈格;理查德·乌利希 |
代理机构 | 北京东方亿思知识产权代理有限责任公司 | 代理人 | 王怡 |
摘要
本发明公开了一种在虚拟机系统中控制硬件中断应答的机制。在一个实施例中,一种方法包括识别在来宾软件操作期间待决的中断,判断出中断要引起控制权向虚拟机监视器(VMM)的转移,判断在控制权向VMM转移之前中断是否要被应答,以及如果中断要被应答,则应答中断,并将控制权转移给VMM。
1.一种控制中断应答的方法,包括:
识别在来宾软件操作期间待决的中断;
判断所述中断要引起控制权向虚拟机监视器的转移;
判断在控制权向所述虚拟机监视器的所述转移之前,所述中断是否要 被应答;
如果所述中断要被应答,则应答所述中断;以及
将控制权转移给所述虚拟机监视器。
2.根据权利要求1所述的方法,其中,判断所述中断是否要被应答包 括判断中断应答指示符是否被设置为应答值。
3.根据权利要求2所述的方法,其中,所述中断应答指示符由所述虚 拟机监视器控制。
4.根据权利要求2所述的方法,其中,所述中断应答指示符被存储在 虚拟机控制结构中。
5.根据权利要求1所述的方法,还包括:
判断在将控制权转移给所述虚拟机监视器之前,所述中断将不被应 答;以及
在完成控制权向所述虚拟机监视器的所述转移之前,禁止应答所述中 断。
6.根据权利要求1所述的方法,其中,应答所述中断包括:
从中断控制器获取所述中断的标识符。
7.根据权利要求6所述的方法,还包括:
在完成控制权向所述虚拟机监视器的所述转移之后,使得与所述中断 的所述标识符有关的信息对所述虚拟机监视器可用。
8.根据权利要求7所述的方法,其中,使得与所述中断的所述标识符 有关的所述信息对所述虚拟机监视器可用包括:
在完成控制权向所述虚拟机监视器的所述转移之前,将所述中断的所 述标识符存储在虚拟机控制结构中。
9.根据权利要求1所述的方法,其中,判断所述中断要引起控制权向 所述虚拟机监视器的所述转移包括:
判断中断控制指示符被设置为虚拟机监视器控制值。
10.根据权利要求9所述的方法,其中,所述中断控制指示符被存储 在虚拟机控制结构中。
11.根据权利要求9所述的方法,其中,判断所述中断要引起控制权 向所述虚拟机监视器的所述转移还包括:
判断监视器中断标志被设置为被解锁值。
12.根据权利要求9所述的方法,其中,所述监视器中断标志被存储 在虚拟机控制结构中。
13.一种控制中断应答的装置,包括:
用于从一个或多个系统设备接收中断的中断控制器;和
中断控制器接口逻辑,所述中断控制器接口逻辑耦合到所述中断控制 器,用于接收来自所述中断控制器的所述中断的通知,判断所述中断要引 起控制权向虚拟机监视器的转移,判断在控制权向所述虚拟机监视器的所 述转移之前所述中断是否要被应答,如果所述中断要被应答则应答所述中 断,以及将控制权转移给所述虚拟机监视器。
14.根据权利要求13所述的装置,其中,所述中断控制器接口逻辑通 过判断中断应答指示符是否被设置为应答值,来判断所述中断是否要被应 答。
15.根据权利要求14所述的装置,其中,所述中断应答指示符由所述 虚拟机监视器控制。
16.根据权利要求14所述的装置,其中,所述中断应答指示符被存储 在虚拟机控制结构中。
17.一种处理中断的系统,包括:
用于存储一个或多个指示符的存储器;和
处理器,所述处理器耦合到所述存储器,用于使用所述一个或多个指 示符来判断中断要引起控制权向虚拟机监视器的转移,判断在控制权向所 述虚拟机监视器的所述转移之前中断是否要被应答,如果所述中断要被应 答则应答所述中断,以及将控制权转移给所述虚拟机监视器。
18.根据权利要求17所述的系统,其中,所述处理器通过判断中断应 答指示符是否被设置为应答值,来判断所述中断是否要被应答。
19.根据权利要求18所述的系统,其中,所述中断应答指示符由所述 虚拟机监视器控制。
20.根据权利要求18所述的系统,其中,所述中断应答指示符被存储 在虚拟机控制结构中。
技术领域\n本发明一般地涉及虚拟机,更具体地说,涉及在虚拟机系统中控制硬 件中断应答。\n背景技术\n在一般的计算机系统中,设备通过产生中断请求来从系统软件请求服 务,这些中断请求经由多个中断请求线被传送到中断控制器。一旦中断控 制器识别活动的中断请求线,它就可以向处理器发送中断信号。响应时, 处理器判断软件是否已准备好接收该中断。如果软件还没有准备好接收该 中断,则中断被保持在待决状态,直到软件变为准备就绪。一旦软件被判 断为已准备就绪,则处理器在处理器总线上进行中断应答周期,以请求中 断控制器报告待决中断中的哪个具有最高的优先级。中断控制器区分各种 中断请求线间的优先级,并标识对处理器的最高优先级的中断请求。处理 器使用这种被称作中断向量的中断标识符来查找中断描述符表(IDT), 寻找指向用于处理该中断的代码的描述符,然后跳至该处理程序代码。\n在传统的操作系统(OS)中,所有中断由被称作OS核心的单个实体 控制。在虚拟机系统中,虚拟机监视器(VMM)应当对在系统中发生的 各种操作和事件具有最终控制,以提供虚拟机的适当操作,并用于保护不 受虚拟机的破坏,以及用于虚拟机之间的保护。为了实现这点,VMM通 常在来宾软件(guest software)访问硬件资源时或者在例如中断或异常的 某些事件发生时,接收控制权。具体地说,当系统设备产生中断时,控制 权可以从虚拟机转移给VMM。\n发明内容\n根据本发明的一个方面,提供了一种方法,包括:识别在来宾软件操 作期间待决的中断;判断所述中断要引起控制权向虚拟机监视器的转移; 判断在控制权向所述虚拟机监视器的所述转移之前,所述中断是否要被应 答;如果所述中断要被应答,则应答所述中断;以及将控制权转移给所述 虚拟机监视器。\n根据本发明的另一个方面,提供了一种装置,包括:用于从一个或多 个系统设备接收中断的中断控制器;和中断控制器接口逻辑,所述中断控 制器接口逻辑耦合到所述中断控制器,用于接收来自所述中断控制器的所 述中断的通知,判断所述中断要引起控制权向虚拟机监视器的转移,判断 在控制权向所述虚拟机监视器的所述转移之前所述中断是否要被应答,如 果所述中断要被应答则应答所述中断,以及将控制权转移给所述虚拟机监 视器。\n根据本发明的另一个方面,提供了一种系统,包括:用于存储一个或 多个指示符的存储器;和处理器,所述处理器耦合到所述存储器,用于使 用所述一个或多个指示符来判断中断要引起控制权向虚拟机监视器的转 移,判断在控制权向所述虚拟机监视器的所述转移之前中断是否要被应 答,如果所述中断要被应答则应答所述中断,以及将控制权转移给所述虚 拟机监视器。\n根据本发明的另一个方面,提供了一种含有指令的机器可读介质,所 述指令当被处理系统执行时,使所述处理系统执行一种方法,所述方法包 括:识别在来宾软件操作期间待决的中断;判断所述中断要引起控制权向 虚拟机监视器的转移;判断在控制权向所述虚拟机监视器的所述转移之 前,所述中断是否要被应答;如果所述中断要被应答,则应答所述中断; 以及将控制权转移给所述虚拟机监视器。\n附图说明\n本发明通过示例的方式而非限定的方式被图示在附图中,其中,相同 的参考标号是指相同的元素,并且其中:\n图1图示了可以在其中操作本发明的虚拟机环境的一个实施例;\n图2是用于在虚拟机系统中控制中断应答的处理的一个实施例的流程 图;\n图3是用于在虚拟机系统中处理中断的系统的一个实施例的框图;以 及\n图4是用于在虚拟机系统中处理中断的处理的一个实施例的流程图。\n具体实施方式\n下面描述用于在虚拟机系统中控制外部中断的方法和装置。在下面的 描述中,为了说明的目的,提出了许多特定的细节,以提供对本发明的彻 底的理解。但是,本领域的技术人员应当清楚,没有这些特定细节也可以 实现本发明。\n下面的详细描述中的一些部分是以在计算机系统的寄存器或存储器的 数据位上的操作的算法和符号表达的形式来表示的。这些算法描述和表达 是被数据处理领域的技术人员用来向本领域的其他技术人员最有效地传达 他们的工作内容的手段。算法在这里以及一般都被理解为产生希望的结果 的自恰的操作序列。操作是要求物理量的物理操纵的那些操作。虽然不一 定,但是通常这些量采用能够被存储、传输、组合、比较以及以其他形式 被操纵的电信号或磁信号的形式。已经证实,有时尤其在用于常见用途 时,将下列这些信号称作位、值、单元、符号、字符、项、数字等是方便 的。\n但是应该记住,所有这些项目以及类似的项目是与适当的物理量相关 联的,并且仅仅是应用于这些量的方便的标记。应当认识到,除非特别指 出,否则如从下面的讨论中明显看出的一样,在整个本发明中,使用诸如 “处理”或“计算”或“运算”或“判断”或类似的术语的讨论可以是指 计算机系统或者类似的电子计算设备的动作和处理,其将在计算机系统的 寄存器和存储器中被表示为物理(电子)量的数据操纵和转换成为在计算 机系统存储器或寄存器或者其他这样的信息存储、传输或显示设备中被类 似地表示为物理量的其他数据。\n在下面对实施例的详细描述中,参考了附图,这些附图以举例说明的 方式示出了可以在其中实现本发明的具体实施例。在这些附图中,若干示 图中的类似的标号描述基本上相同的部件。这些实施例被足够详细地描 述,以使得本领域的技术人员能够实现本发明。其他的实施例也可以被使 用,并且可以不脱离本发明的范围作出结构、逻辑和电学上的变化。此 外,应当理解,本发明的各种实施例虽然不同,但是未必互相排斥。例 如,在一个实施例中所描述的特定的特征、结构或者特性可以被包括在其 他实施例中。因此,下面的详细描述不应被认为是限定的含意,本发明的 范围只由所附权利要求以及权利要求中包括的内容的等同物的全部范围来 限定。\n虽然下面的示例可能是在执行单元和逻辑电路的环境中描述中断应 答,但是本发明的其他实施例可以通过软件的方式来完成。例如,在一些 实施例中,本发明可以被提供为计算机程序产品或者软件,它们可以包括 在其上存储有指令的机器或计算机可读介质,这些指令可以被用于编程计 算机(或者其他电子设备)来进行根据本发明的处理。在其他实施例中, 本发明的步骤可以通过特定的硬件部件来进行,这些硬件部件含有用于进 行这些步骤的硬连线逻辑,或者通过被编程的计算机部件与定制硬件部件 的任意组合来进行。\n因而,机器可读介质可以包括用于以可被机器(例如计算机)读取的 形式存储或传输信息的任何机构,而并不限于软盘、光盘、只读光盘、只 读存储器(CD-ROM)、磁光盘、随机存取存储器(RAM)、可擦除可编 程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、 磁卡或光卡、闪存、互联网上的传输,电、光、声或者其他形式的传播信 号(例如载波、红外信号、数字信号等)或者类似物。\n此外,设计可以经过从创造到模拟到制造的各种阶段。表达设计的数 据可以以许多方式表达设计。首先,如在模拟中有用的,可以使用硬件描 述语言或者其他功能描述语言表达硬件。另外,在设计过程的一些阶段可 以产生具有逻辑和/或晶体管门的电路级模型。此外,在某个阶段,大多数 设计达到了表达硬件模型中各种设备的物理布置的数据的水平。在使用传 统的半导体制造技术的情况中,表达硬件模型的数据可以是指定在用于生 产集成电路的掩膜的不同掩膜层上存在或者不存在各种特征的数据。在设 计的任何表达中,数据可以被存储在任何形式的机器可读介质中。机器可 读介质可以是被调制或者被产生用于传输这种信息的光波或电波、存储器 或者例如盘的磁或光存储器。这些介质中的任何一种可以“承载”或“指 示”设计或者软件信息。当指示或者承载代码或设计的电载波被传输到进 行电信号的拷贝、缓冲或者再传输的程度时,就做出了新的拷贝。因而, 通信提供者或者网络提供者可以制作包含本发明技术的物品(载波)的拷 贝。\n图1图示了在其中可以操作本发明的虚拟机环境100的一个实施例。 在该实施例中,裸(bare)平台硬件116包括例如可以执行标准操作系统 (OS)或者例如VMM 112的虚拟机监视器(VMM)的计算平台。\nVMM 112虽然通常是在软件中实现的,但是可以模拟和输出到更高 级别软件的裸机接口。这种更高级别软件可以包括标准或者实时OS,可 以是具有受限制操作系统功能的高度精减(stripped down)操作环境,可 以不包括传统的OS工具等。或者,VMM 112例如可以在另一VMM之中 或者其上运行。VMM例如可以被实现在硬件、软件、固件中,或者通过 各种技术的组合实现。\n平台硬件116可以是个人计算机(PC)、大型机、手持设备、便携式 计算机、机顶盒或者任何其他计算系统。平台硬件116包括处理器118、 存储器120和一个或多个中断源128。\n处理器118可以是能够执行软件的任何类型的处理器,例如微处理 器、数字信号处理器、微控制器或者类似者。处理器118可以包括用于执 行本发明方法实施例的微代码、可编程逻辑或者硬编码逻辑。虽然图1只 示出了一个这样的处理器118,但是在系统中可以有一个或多个处理器。\n存储器120可以是硬盘、软盘、随机存取存储器(RAM)、只读存储 器(ROM)、闪存、上述设备的任何组合或者任何其他类型的可以被处理 器118读取的机器介质。存储器120可以存储用于执行本发明的方法实施 例的指令和/或数据。\n一个或多个中断源128例如可以是系统总线(例如,PCI、ISA、 AGP)上的输入-输出(I/O)设备(例如,网络接口卡、通信端口、视频 控制器、盘控制器)、被集成到芯片组逻辑或者处理中的设备(例如,实 时时钟、可编程计时器、性能计数器)或者任何其他中断源。\nVMM 112向其他软件(即“来宾”软件)表示一个或多个虚拟机 (VM)的抽象,它可以对各种来宾提供相同或者不同的抽象。图1示出 了两个VM,102和114。在每个VM上运行的来宾软件可以包括例如来宾 OS 104或106的来宾OS以及各种来宾软件应用程序108和110。来宾OS 104和106中的每一个期望访问在其上运行来宾OS 104或106的VM 102 和114中的物理资源(例如,处理器寄存器、存储器和I/O设备),并处 理由系统设备产生的包括中断的各种事件。\n中断可能需要被当前工作的VM、VMM 112或者当前没工作的VM处 理。如果中断要被当前工作的VM处理,则控制权属于该VM,并且如果 它已经准备好接收中断(例如通过指定的处理器寄存器中的中断标志所指 示的),则中断被传递到该VM。如果中断不是要被当前运行的VM处 理,则控制权被转移给VMM 112。控制权从来宾软件向VMM 112的转移 在这里被称作VM退出。在VM退出之后接收控制权后,VMM 112可以 进行多种处理,例如包括应答和处理中断,在这之后它可以将控制权返回 给来宾软件。如果VMM自身不处理中断,则它可以帮助将中断传递给被 指定处理该中断的VM。控制权从VMM向来宾软件的转移在这里被称作 VM进入。\n在一个实施例中,处理器118按照虚拟机控制结构(VMCS)124中 所存储的数据来控制VM 102和114的操作。VMCS 124是一种结构,它 可以包含来宾软件的状态、VMM 112的状态、指示VMM 112希望如何限 制或者以其他方式控制来宾软件操作的执行控制信息、控制在VMM 112 与VM之间转移的信息等。当发生VM退出时,被来宾软件使用的处理器 状态的部分被保存到VMCS 124中,并且被VMM 112需要的处理器状态 的部分被从VMCS 124中取出。当发生VM进入时,使用被存储在VMCS 124中的数据恢复VM退出时被保存的处理器状态,并且控制权被返回给 来宾软件。\n在一个实施例中,VMCS 124被存储在存储器120中。在另一个实施 例中,VMCS 124被存储在处理器118中。在一些实施例中,使用多个 VMCS结构来支持多个VM。\n处理器118从VMCS 124读取信息,以判断VM的执行环境,并约束 其行为。在一个实施例中,VMCS中所存储的执行控制信息包括中断控制 指示符,该指示符说明在VM操作期间由系统设备产生的中断是否将引起 VM退出。或者,中断控制指示符可以驻留在处理器118中、存储器120 和处理器118的组合中或者任何其他的一个或多个存储单元中。\n在一个实施例中,VMM 112在请求将控制权转移给VM 102或114之 前设置中断控制指示符的值。或者,VM 102和114中的每一个与在VM 寿命期间被设置为预定值或者变化的不同中断控制指示符相关联。\n如果处理器118判断出待决中断将产生VM退出,则处理器118然后 进一步判断在进行VM退出之前该中断是否需要被应答。中断应答包括在 处理器总线上产生中断应答周期。在实施例中,作为中断应答周期的一部 分,处理器118从中断控制器获取中断的标识符(例如中断向量)。在一 个实施例中,关于中断是否需要被应答的判断取决于中断应答指示符的当 前值。在一个实施例中,中断应答指示符被存储在VMCS 124中(例如作 为执行控制信息的一部分)。或者,中断应答指示符可以驻留在处理器 118中、存储器120和处理器118的组合中或者任何其他的一个或多个存 储单元中。\n在一个实施例中,中断应答指示符被VMM 112控制。在一个实施例 中,VMM 112在第一次调用VM之前设置中断应答指示符。例如,如果 VMM 112必须基于中断标识符决定是自己处理中断还是将它传递给特定 的VM,则VMM 112可以将中断应答指示符设置为应答值。或者,例如 如果VM 102和114中的一个被指定处理由中断源128产生的全部中断, 则VMM 112可以将中断应答指示符设置为不应答值,并且当发生由中断 引起的VM退出时,VMM 112总是调用该指定的VM。在一个实施例中, 中断应答指示符是可以被VMM 112修改的。例如,如果开始时系统100 具有指定的VM来处理全部的中断,但是后来添加了新的VM来处理由中 断源128产生的某些中断,则VMM 112可以决定改变中断应答指示符。\n如果处理器118判断出在VM退出之前中断要被应答,则处理器118 应答该中断,然后将控制权转移给VMM 112。在一个实施例中,在转移 控制权之前,处理器118在VMM 112可访问的存储单元,将所获得的中 断标识符存储为中断应答的一部分。在一个实施例中,中断标识符被存储 在VMCS 124中(例如,在多个退出信息字段的一个中)。\n图2是用于在虚拟机系统中控制中断应答的处理200的一个实施例的 流程图。处理可以由可包括硬件(例如,电路系统、专用逻辑、可编程逻 辑、微代码等)、软件(例如运行在通用计算机系统或者专用机器上)或 者两者的组合的处理逻辑来进行。\n参考图2,处理200从处理逻辑识别在来宾软件操作期间待决的中断 (处理框202)开始。\n在处理框204,处理逻辑判断中断要引起VM退出。在一个实施例 中,这种判断是基于驻留在VMCS或者任何其他数据结构中的中断控制指 示符的当前值而作出的。或者,在体系结构上可能要求全部中断引起VM 退出,并且不需要中断控制指示符用于该判断。\n接着,处理逻辑进一步判断在将控制权转移给VMM之前,中断是否 要被应答(判断框206)。在一个实施例中,使用驻留在VMCS或者任何 其他数据结构中的中断应答指示符来作出该判断。或者,全部中断可以被 应答,并且不需要中断应答指示符用于该判断。\n如果在判断框206作出的判断是肯定的,则处理逻辑应答该中断,并 且在实施例中,作为应答的一部分,获取中断的标识符(处理框208), 并将该标识符存储到VMM可访问的存储单元(处理框210)。在一个实 施例中,处理逻辑将中断标识符存储在VMCS中(例如,在多个退出信息 字段的一个中)。然后产生VM退出(处理框212)。\n如果在判断框206作出的判断是否定的,则处理逻辑不进行处理框 208和210,直接转到处理框212。\n因此,通过处理200,性能被提高了,并且VMM的功能被简化了。 具体地说,在VM退出之前不提供中断应答的系统中,在每个VM退出后 中断被阻断(例如,通过设置指定的处理器寄存器中的中断标志)。其结 果是,在实施例中,为了判断中断向量,VMM必须解锁中断(例如,通 过执行重置中断标志的指令)。处理器然后应答在中断控制器的中断,获 取中断标识符,在重定向结构(例如,在IntelPentium4的指令集体系 结构(ISA) (这里被称作IA-32 ISA)中的中断描述符表(IDT))中查 找与中断相关联的入口,从该入口提取与该中断相关联的处理程序的描述 符,并跳至使用该描述符的适当的VMM处理程序的开头。由于VMM可 以基于处理器调用了哪一个处理器程序来标识中断源,所以VMM然后可 以适当地处理中断。或者,在另一实施例中,在VM退出后,VMM可以 进行对中断控制器的一系列访问(例如I/O访问),以判断中断向量和应 答中断。\n通过处理200,可以在VM退出之前应答中断。其结果是,一旦 VMM接收了控制权,VMM就对中断标识信息立即访问。VMM然后可以 使用中断标识符来找到适当的中断处理程序代码或者VM。所以,除去了 VMM解锁中断的需要,以及处理器查找重定向结构、从相应的入口提取 与该中断相关联的处理程序的描述符、跳至适当的VMM异常处理程序代 码开头的需要。因为VMM不再需要具有上述必需的代码和/或结构(例 如,重定向结构(例如IDT)、使用I/O操作应答中断的代码等),所以 这又可以简化VMM软件的设计和验证。\n图3是用于在虚拟机环境中处理中断的系统300的一个实施例的框 图。\n参考图3,设备314(例如I/O设备)通过产生中断请求来从系统软件 请求服务,该请求经由一个或多个中断请求线316被传送到中断控制器 313。一旦中断控制器313识别到活动的中断请求线316,它就向CPU 302 发送中断信号310。中断控制器313可以包括本领域技术人员公知的屏蔽 和优先级逻辑。在实施例中,可以有不止一个到CPU 302的中断信号线 310,或者替代地,中断“信号”可以经由总线消息或者通过任何其他通 信机制或者协议被传递。\n响应于来自中断控制器313的活动的中断信号310,中断控制器接口 逻辑304判断哪个软件具有对中断的控制权。如果中断发生在VMM操作 过程中,则中断被VMM管理。或者,如果操作发生在来宾软件的操作过 程中,则中断控制器接口逻辑304判断中断是由当前工作的来宾软件控制 还是由VMM控制。如果中断被VMM控制,则产生VM退出,以将控制 权转移给VMM。\n在一个实施例中,这种判断取决于VMCS 308中所存储的中断控制指 示符320的当前值(例如,作为执行控制信息的一部分)。在一个实施例 中,VMM在第一次请求进入特定VM的VM入口之前,设置中断控制指 示符320的值,并且在VM的整个寿命中不改变该值。例如,如果系统具 有某个处理全部中断的VM,则该VM的中断控制指示符320将被设置为 允许中断的来宾控制;所有其他VM的中断控制指示符320将被设置为 VMM控制。或者,如果中断可以取决于中断标识符而被不同的VM和/或 VMM处理,并且VMM需要决定哪个实体处理当前的中断,则对全部 VM,中断控制指示符320可以被设置为指示VMM控制。在另外的实施 例中,中断控制指示符320的值可以在特定VM的寿期期间变化。\n如果中断控制指示符320表明中断被当前工作的VM控制,则中断控 制器接口逻辑304进一步判断当前工作的VM是否准备好接收中断。在一 个实施例中,中断控制器接口逻辑304在查阅中断标志306后作出该判 断,其中当来宾软件接收中断的能力的状态变化时,该标志可以被来宾软 件更新。例如,在IA-32 ISA中,EFLAGS寄存器包含IF中断标志位,其 部分地控制中断是否将被传递给软件(其他因素可能会阻断IA-32 ISA中 的中断,在判断中断是否可以被传递时必须考虑这些因素)。在实施例 中,中断标志306驻留在处于中断控制器接口逻辑304外部或者内部的 CPU 302中。\n如果中断控制器接口逻辑304判断出来宾软件已准备好接收中断,则 它通过中断应答周期应答在中断控制器313的中断请求,在一个实施例 中,对于该应答,中断控制器313返回具有最高优先级的中断的标识符 (被称作中断向量)。基于中断向量,中断控制器接口逻辑304在该VM 的IDT中查找与中断相关联的入口,从该入口提取与该中断相关联的处理 程序的描述符,并使用描述符跳至适当的VM异常处理程序代码的开头。 在另一个实施例中,具有一个中断处理程序,不需要中断标识符。否则, 如果VM当前没有准备好接收中断,则中断被保持在待决状态,直到VM 变为准备就绪。\n如果中断控制指示符30表明中断被VMM控制(即,将要产生VM 退出),则在一个实施例中,中断控制器接口逻辑304查阅这里被称作监 视器中断标志(MIF)322的中断转移标志。MIF 322以与中断标志306相 似的方式作用,指示出中断是否被允许引起到VMM的转移。在一个实施 例中,MIF 322驻留在VMCS 308中,并被VMM控制。在另一个实施例 中,MIF 322驻留在机器寄存器中或者存储器中。如果MIF 322指示中断 被阻断,则将不产生VM退出,直到MIF 322被改变为解锁中断。例如如 果当前工作的VM进行时间关键的任务,并且VMM不希望发生任何VM 退出以避免降低该VM的性能,则VMM可以将MIF 322设置为阻断值。\n在另一个实施例中,中断控制器接口逻辑304不查阅MIF 322,并仅 基于中断控制指示符320决定中断是否要引起VM退出。\n如果中断控制器接口逻辑304判断出中断要引起VM退出,则中断控 制器接口逻辑304进一步查阅中断应答指示符324。中断应答指示符324 表明在VM退出之前中断是否要被应答。在一个实施例中,中断应答指示 符324驻留在VMCS 308中,并被VMM控制。在另一个实施例中,中断 应答指示符324驻留在机器寄存器中或者存储器中。\n如果中断应答指示符324表明在VM退出之前不需要应答,则中断控 制器接口逻辑304产生VM退出。VMM然后例如可以将中断控制指示符 320设置为VM控制值,并请求将控制权转移给被指定用于处理全部中断 的VM。在另一个实施例中,VMM可以自己判断中断向量(例如,通过 访问中断控制器312的适当的寄存器来读取中断向量)。\n如果中断应答指示符324表明中断要被应答,则中断控制器接口逻辑 304应答在接口控制器312的中断,并且在实施例中,从中断控制器312 获取中断向量值,并将中断向量值存储在VMCS的中断向量字段326中。 然后产生VM退出。接收控制权之后,VMM可以判断中断应被如何处理 (例如,通过导向到VMM中的处理程序、通过调用适当的VM来处理中 断等)。在实施例中,可以基于来自VMCS 308的中断向量326作出这种 判断。\n图4是用于在虚拟机系统中处理中断的处理400的一个实施例的流程 图。处理可以由可包括硬件(例如,电路系统、专用逻辑、可编程逻辑、 微代码等)、软件(例如运行在通用计算机系统或者专用机器上)或者两 者的组合的处理逻辑来进行。\n参考图4,处理400从处理逻辑识别在来宾软件操作期间待决中断的 存在(处理框402)开始。接着,处理逻辑使用中断控制指示符判断中断 将被VMM控制还是被来宾软件控制(判断框404)。如果中断控制指示 符表明中断要被来宾软件控制,则处理逻辑进一步判断来宾软件是否准备 好了接收中断(判断框406)。在一个实施例中,通过查阅中断标志(例 如,EFLAGS寄存器中的IF位)作出该判断。如果判断是肯定的,则处理 逻辑将中断传递给来宾软件(处理框408)。中断向来宾软件的传递包括 用中断控制器应答中断,获取中断向量以及基于向量将控制权传给适当处 理程序的来宾。否则,中断被保持为待决(处理框410),直到来宾软件 变为已准备好处理中断。\n如果中断是被VMM控制,则在一个实施例中,处理逻辑判断监视器 中断标志(MIF)是否被设置为阻断值(判断框412)。如果是,中断被 保持为待决(处理框414),直到MIF被改变为解锁值。如果不是,处理 逻辑使用中断应答指示符进一步判断中断是否将被应答(判断框416)。 如果不是,处理逻辑不应答中断,并直接到处理框424,以产生VM退 出。\n如果中断要被应答,则处理逻辑应答在中断控制器的中断(处理框 418)。在一些实施例中,处理逻辑从中断控制器获取中断向量(处理框 420),并将中断向量存储在VMCS中(处理框422)。最后,处理逻辑 产生VM退出(处理框424)。\n这样,已经描述了用于在虚拟机系统中处理中断的方法和装置。应当 理解,上述说明意于是说明性的,而非限定性的。对于本领域的技术人员 来说,阅读和理解上述说明后,许多其他的实施例将是显而易见的。因 此,本发明的范围应当参考所附权利要求以及这些权利要求所包括的内容 的等同物的全部范围来确定。
法律信息
- 2014-11-26
未缴年费专利权终止
IPC(主分类): G06F 9/48
专利号: ZL 200410080637.2
申请日: 2004.09.29
授权公告日: 2007.11.14
- 2007-11-14
- 2005-09-28
- 2005-08-03
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2001-04-25
|
2000-09-30
| | |
2
| | 暂无 |
1990-09-07
| | |
3
| | 暂无 |
1986-09-01
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |