首页 / 专利库 / 软件 / 虚拟机监控器 / 对在虚拟机体系结构中客户软件操作期间出现的故障的控制

对在虚拟机体系结构中客户软件操作期间出现的故障的控制

阅读:882发布:2020-12-08

专利汇可以提供对在虚拟机体系结构中客户软件操作期间出现的故障的控制专利检索,专利查询,专利分析的服务。并且在一个 实施例 中,接收关于与客户 软件 的操作相关联的故障的故障信息。此外,确定故障信息是否满足一个或多个过滤标准。如果该确定为肯定的,则控制仍保留在客户软件中而不转移到 虚拟机 监控器(VMM)。,下面是对在虚拟机体系结构中客户软件操作期间出现的故障的控制专利的具体信息内容。

1.一种方法,包括:
接收关于与客户软件的操作相关联的故障的故障信息;
确定所述故障信息是否满足至少一个过滤标准;以及
如果所述故障信息满足所述至少一个过滤标准,则禁止把控制 转移到虚拟机监控器(VMM)。
2.如权利要求1所述的方法,其特征在于:
所述至少一个过滤标准是至少一个控制转移过滤标准;以及
禁止把控制转移到所述VMM还包括如果所述故障信息满足所 述至少一个控制转移过滤标准,则把所述故障传递给所述客户软件。
3.如权利要求1所述的方法,其特征在于,所述故障信息为故 障标识符、与所述故障相关联的误码以及与所述故障相关联的一个 或多个附加数据值其中的至少一项。
4.如权利要求1所述的方法,其特征在于,所述故障表示中断、 异常和平台事件其中的任一项。
5.如权利要求1所述的方法,其特征在于,所述故障信息包括 多个值,所述多个值中的每个值指示特定条件的出现。
6.如权利要求5所述的方法,其特征在于,所述故障信息的值 的一个或多个组合要求向所述VMM的转移。
7.如权利要求1所述的方法,其特征在于还包括:
如果所述故障信息不满足所述至少一个过滤标准,则把控制转 移到所述VMM。
8.如权利要求1所述的方法,其特征在于,所述至少一个过滤 标准采用在一个或多个指定字段中存储的数据来定义。
9.如权利要求8所述的方法,其特征在于,所述一个或多个指 定字段包括匹配字段和掩码字段。
10.如权利要求8所述的方法,其特征在于,确定所述故障信息 是否满足所述至少一个过滤标准包括利用一个或多个布尔逻辑运算 将所述故障信息与存储在一个或多个指定字段中的所述数据组合。
11.一种方法,包括:
利用关于与客户软件的操作相关联的故障的故障信息以及至少 一个控制转移过滤标准,确定所述故障是否要求控制转移到虚拟机 监控器(VMM);以及
如果所述故障信息满足所述至少一个控制转移过滤标准,则把 所述故障传递给所述客户软件。
12.如权利要求11所述的方法,其特征在于,所述故障信息为 故障标识符、与所述故障相关联的误码以及与所述故障相关联的一 个或多个附加数据值其中的至少一项。
13.如权利要求11所述的方法,其特征在于,所述故障表示中 断、异常和平台事件其中的任一项。
14.如权利要求11所述的方法,其特征在于,所述至少一个控 制转移过滤标准采用在一个或多个指定字段中存储的数据来定义。
15.如权利要求14所述的方法,其特征在于,所述一个或多个 指定字段包括匹配字段和掩码字段。
16.如权利要求15所述的方法,其特征在于,确定与所述客户 软件的操作相关联的故障是否要求控制转移到所述VMM包括:
采用按位进行的“与”算子将所述故障信息与所述掩码字段中 存储的数据组合;以及
确定所述组合的结果是否与所述匹配字段中存储的数据匹配。
17.如权利要求16所述的方法,其特征在于,确定与所述客户 软件的操作相关联的故障是否要求控制转移到所述VMM还包括:
确定所述组合的结果是否与所述匹配字段中存储的数据匹配; 以及
识别重定向图中相应位的值,所述相应位的值指示所述故障是 否要求控制转移到所述VMM。
18.如权利要求16所述的方法,其特征在于,确定与所述客户 软件的操作相关联的故障是否要求控制转移到所述VMM还包括:
确定所述组合的结果与所述匹配字段中存储的数据不匹配;以 及
识别重定向图中相应位的值;以及
对所述相应位的值取反,所述相应位的取反值指示所述故障是 否要求控制转移到所述VMM。
19.一种系统,包括:
存储器,其中存储了客户软件;以及
处理器,耦合到所述存储器,运行所述客户软件,确定关于与 所述客户软件的操作相关联的故障的故障信息是否满足至少一个过 滤标准,以及如果所述故障信息满足所述至少一个过滤标准,则禁 止把控制转移到虚拟机监控器(VMM)。
20.如权利要求19所述的系统,其特征在于:
所述至少一个过滤标准是至少一个控制转移过滤标准;以及
如果所述故障信息满足所述至少一个控制转移过滤标准,则所 述处理器通过把所述故障传递给所述客户软件来禁止把控制转移到 所述VMM。
21.如权利要求19所述的系统,其特征在于,如果所述故障信 息不满足所述至少一个过滤标准,则所述处理器还把控制转移到所 述VMM。
22.一种系统,包括:
存储器,其中存储了客户软件;以及
处理器,耦合到所述存储器,运行所述客户软件,利用关于与 客户软件的操作相关联的故障的故障信息以及至少一个控制转移过 滤标准,确定所述故障是否要求控制转移到虚拟机监控器(VMM), 以及如果所述故障信息满足所述至少一个控制转移过滤标准,则把 所述故障传递给所述客户软件。
23.如权利要求22所述的系统,其特征在于,所述至少一个控 制转移过滤标准采用在一个或多个指定字段中存储的数据来定义, 所述一个或多个指定字段包括匹配字段和掩码字段。
24.如权利要求23所述的系统,其特征在于,所述处理器通过 以下步骤来确定与所述客户软件的操作相关联的故障是否要求控制 转移到所述VMM:采用按位进行的“与”算子将所述故障信息与所 述掩码字段中存储的数据组合;以及确定所述组合的结果是否与所 述匹配字段中存储的数据匹配。
25.一种包含指令的机器可读媒体,所述指令在由处理系统执行 时,导致所述处理系统执行一种方法,该方法包括:
接收关于与客户软件的操作相关联的故障的故障信息;
确定所述故障信息是否满足至少一个过滤标准;以及
如果所述故障信息满足所述至少一个过滤标准,则禁止把控制 转移到虚拟机监控器(VMM)。
26.如权利要求25所述的机器可读媒体,其特征在于:
所述至少一个过滤标准是至少一个控制转移过滤标准;以及
禁止把控制转移到所述VMM包括如果所述故障信息满足所述 至少一个控制转移过滤标准,则把所述故障传递给所述客户软件。
27.如权利要求25所述的机器可读媒体,其特征在于所述方法 还包括:
如果所述故障信息不满足所述至少一个过滤标准,则把控制转 移到所述VMM。
28.一种包含指令的机器可读媒体,所述指令在由处理系统执行 时,导致所述处理系统执行一种方法,该方法包括:
利用关于与客户软件的操作相关联的故障的故障信息以及至少 一个控制转移过滤标准,确定所述故障是否要求控制转移到虚拟机 监控器(VMM);以及
如果所述故障信息满足所述至少一个控制转移过滤标准,则把 所述故障传递给所述客户软件。
29.如权利要求28所述的机器可读媒体,其特征在于,所述至 少一个控制转移过滤标准采用在一个或多个指定字段中存储的数据 来定义,所述一个或多个指定字段包括匹配字段和掩码字段。
30.如权利要求29所述的机器可读媒体,其特征在于,所述处 理器通过以下步骤来确定与所述客户软件的操作相关联的故障是否 要求控制转移到所述VMM:采用按位进行的“与”算子将所述故障 信息与所述掩码字段中存储的数据组合;以及确定所述组合的结果 是否与所述匹配字段中存储的数据匹配。

说明书全文

发明领域

一般来说,本发明涉及虚拟机,更具体来说,涉及处理与虚拟机 体系结构中客户软件的操作相关联的故障。

发明背景

传统的虚拟机监控器(VMM)通常在计算机上运行,并为其它软件 提供一个或多个虚拟机的抽象。各虚拟机可用作自含式平台,运行它 自己的“客户操作系统”(即VMM接纳的操作系统(OS))和其它软件, 这些统称为客户软件。客户软件预期工作起来就象它在专用计算机而 不是虚拟机上运行一样。也就是说,客户软件预期控制各种事件并有 权访问硬件资源。硬件资源可包括处理器驻留资源(例如控制寄存 器)、驻留在存储器中的资源(例如描述符表)以及驻留在基础硬件平台 上的资源(例如输入-输出装置)。事件可包括中断、异常、平台事件(例 如初始化(INIT)或系统管理中断(SMI))等。
在虚拟机环境中,VMM应当能够具有对这些事件和硬件资源的 最终控制,以便提供在虚拟机上运行的客户软件的适当操作,以及用 于从在虚拟机上运行的客户软件及在它们之间保护。为了实现这个目 的,当客户软件访问受保护资源时或者其它事件(诸如中断或异常)出 现时,VMM通常接收控制。
例如,当页面错误(即与地址转换操作相关联的异常)在客户软件 的操作期间出现时,控制被转移到VMM,VMM则确定客户软件或 VMM本身是否需要处理页面错误。如果页面错误需要由客户软件处 理,则控制重新转移到客户软件。由于不需要由VMM处理的页面错 误(以及其它异常和中断)相当频繁地发生,因此存在与VMM和客户 软件之间的这种控制转移相关联的大量性能成本。
附图简介
在附图的各图中通过举例而不是限制的方式来说明本发明,附图 中相似的参考标号表示类似的元件,其中:
图1说明本发明可在其中工作的虚拟机环境的一个实施例
图2是因故障而利用控制转移过滤标准过滤VM出口的过程的一 个实施例的流程图
图3-5说明因故障而利用控制转移过滤标准过滤VM出口的过程 的示范实施例;
图6是因故障而利用故障过滤标准和控制转移过滤标准过滤故 障和VM出口的过程的一个实施例的流程图;
图7-8说明利用故障过滤标准过滤故障的过程的示范实施例;以 及
图9是定义故障过滤标准和控制转移过滤标准的过程的一个实 施例的流程图。
实施例描述
描述处理与虚拟机体系结构中的客户软件的操作相关联的故障 的方法和装置。为了说明,以下描述中提出了大量具体细节,以便透 彻地理解本发明。然而,本领域的技术人员十分清楚,即使没有这些 具体细节,也可以实施本发明。
以下详细描述的某些部分是以对计算机系统的寄存器或存储器 中的数据位进行操作的算法和符号表示来提供的。这些算法描述和表 示是数据处理领域的技术人员用来向本领域的其它技术人员最有效 地传达其工作实质的方式。算法在这里以及一般被认为是产生所希望 结果的独立运算序列。运算是物理量的那些要求的物理处理。这些量 通常但不一定采取电或磁信号的形式,它们能够被存储、传送、组合、 比较以及以其它方式处理。主要为了普通使用的原因,将这些信号称 作位、值、元素、符号、字符、项目、数字等,已经证明有时非常方 便。
但应当记住,所有这些及类似的术语要与适当物理量相关联,并 且只是应用于这些量的便捷标记。若没有明确说明,从以下论述中显 而易见,在本发明中,采用诸如“处理”或“计算”或“运算”或“ 确定”等术语的论述可表示计算机系统或类似电子计算装置的动作和 过程,所述计算机系统或类似电子计算装置处理表示为计算机系统的 寄存器和存储器中的物理(电子)量的数据并将其转换为类似地表示 为计算机系统存储器或寄存器或者其它这类信息存储、传送或显示装 置中的物理量的其它数据。
在实施例的以下详细描述中,参照附图,附图以图解说明的方式 示出可实施本发明的具体实施例。附图中,相似的标号描述若干视图 中基本相似的元件。对这些实施例进行充分详细的描述,使本领域的 技术人员能够实施本发明。可采用其它实施例,并且可进行结构、逻 辑以及电气变更,而没有背离本发明的范围。此外,大家理解,本发 明的各种实施例虽然有所不同,但不一定是相互排斥的。例如,在一 个实施例中描述的特定功能、结构或特征可包含在其它实施例中。因 此,以下详细描述不是限制性的,本发明的范围仅由所附权利要求以 及这些权利要求涵盖的全部等效范围来限定。
图1说明本发明可在其中工作的虚拟机环境100的一个实施例。 在此实施例中,裸平台硬件116包括计算平台,它可以例如能够运行 标准操作系统(OS)或虚拟机监控器(VMM)、如VMM 112。VMM 112 虽然通常以软件实现,但可模拟裸机接口并将其输出到较高层软件。 这种较高层软件可包括标准或实时OS,可以是具有有限操作系统功 能性的严重剥离的操作环境,可以不包括传统的OS工具,等等。或 者,例如VMM 112可以在另一个VMM之中或之上运行。VMM及 其典型特征和功能性是本领域的技术人员熟知的,并且可例如以软 件、固件或通过各种技术的组合来实现。
平台硬件116可以属于个人计算机(PC)、大型计算机、手持装置、 便携计算机、机顶盒或其它任何计算系统。平台硬件116包括处理器 118、存储器120以及可能的其它未示出的平台硬件(例如输入-输出 装置)。
处理器118可以是能够运行软件的任何类型的处理器,诸如微处 理器、数字信号处理器、微控制器等等。处理器118可包括用于完成 本发明的方法实施例运行的微码、可编程逻辑或硬编码逻辑。
存储器120可以是硬盘软盘随机存取存储器(RAM)、只读存 储器(ROM)、闪速存储器、以上装置的任何组合、或者处理器118可 读的其它任何类型的机器媒体。存储器120可存储用于完成本发明的 方法实施例运行的指令或数据。
VMM 112为其它软件(即“客户”软件)提供一个或多个虚拟机 (VM)的抽象。VMM 112可向各种客户提供相同或不同的抽象。图1 表示两个这样的VM、即102和114,但VMM 112可支持多于或少 于2个的VM。在各VM上运行的客户软件可包括诸如客户OS 104 或106等客户OS以及各种客户软件应用程序108和110。客户OS 和软件应用程序在本文中统称客户软件103和115。客户软件103和 105预期访问客户软件正在其中运行的VM 102和114中的物理资源 (例如处理器寄存器、存储器和I/O装置)。VMM 112便于对客户软件 所需资源的访问,同时保持对平台硬件116内资源的最终控制。
此外,客户软件103和115预期处理各种事件,诸如异常、中断 以及平台事件(例如初始化(INIT)和系统管理中断(SMI))。这些事件中 的一部分是“特许的”,因为它们必须由VMM 112来处理,以便确 保VM 102、114和客户软件103、115的正确工作,以及用于从客户 软件103和115及在其之间保护。对于特许事件,VMM 112便于客 户软件所需的功能性,同时保持对这些特许事件的最终控制。便于客 户软件的功能性的动作可包括VMM 112的一部分上的大量活动。 VMM 112的活动及其特性不应当限制本发明的范围。
除了特许事件之外,还存在大量“非特许事件”,它们在客户软 件的操作期间出现,但不需要由VMM 112处理,因而不要求控制向 VMM 112转移。在一个实施例中,提供一种过滤机制来区分特许事 件与非特许事件。通过这种过滤机制,利用一个或多个过滤标准来评 估与当前事件(例如异常)相关联的信息,从而确定对当前事件的控制 是属于客户软件还是被转移到VMM 112。这些过滤标准在本文中称 作控制转移过滤标准。与当前事件相关联的信息在本文中称作故障信 息。
在另一个实施例中,提供一种过滤机制以识别可能被忽视的某些 非特许事件,因为在当前事件时存在的其它因素表明客户软件可完成 期望的操作,而不损害VMM 112或其它VM的安全性及正确操作。 在此实施例中,利用一个或多个过滤标准来评估与当前事件相关联的 故障信息,从而确定当前事件是否可被忽视(即,是否允许客户软件 完成期望的操作)。这些过滤标准在本文中称作故障过滤标准。
在一个实施例中,过滤标准(控制转移过滤标准和/或故障过滤标 准)采用在虚拟机控制结构(VMCS)122中的一个或多个指定字段中存 储的数据来定义。不同的VM可采用来自不同VMCS存储映象的数 据,但图1中仅示出一个这样的VMCS。VMCS 122可驻留在存储器 120中,并且可由处理器118维护。应当指出,其它任何数据结构(例 如芯片内高速缓存、文件、查找表等)可用来存储VMCS 122或者与 过滤机制相关联的字段,而不失一般性。下面更详细地描述过滤机制 的各种实施例。
在一个实施例中,如果过滤机制确定当前事件必须由VMM 112 处理,则控制被转移到VMM 112。然后,VMM 112可处理该事件, 以及把控制重新转移到客户软件。在一个实施例中,控制从VMM 112 到客户软件的转移通过执行特殊指令来实现。控制从VMM到客户软 件的转移在本文中称作VM入口,控制从客户软件到VMM的转移在 本文中称作VM出口,VM出口的可能原因(例如特许的异常和中断 以及特许的平台事件)在本文中称作虚拟化事件。
在一个实施例中,当VM出口出现时,控制在VMCS 122中描述 的特定入口点(例如指令指针值)被传递给VMM 112。在另一个实施例 中,控制在通过重定向结构(例如IntelPentiumIV的处理器指令集体 系结构(ISA)中的中断描述符表(在本文中称作IA-32 ISA))引导之后被 传递到VMM 112。或者,本领域已知的其它任何机制都可用来把控 制从客户软件转移到VMM 112。
包括异常、中断和平台事件的特许和非特许事件在本文中称作故 障。故障可由处理器上指令的执行来产生。例如,访问存储器的操作 可因调页和分段保护机制而产生各种故障。各故障与故障信息相关 联。故障信息可表征为动态、静态或半动态故障信息。动态故障信息 在故障时或接近故障时产生。动态故障信息的实例包括误码,它由异 常产生,并直接取决于出错操作的特性或者准备通过导致页面错误的 写存储器操作写入存储器的数据值。
静态或半静态故障信息可能具有相同的值,而与故障的定时无 关。半静态故障信息的一个实例是各种控制寄存器中很少改变的位的 设定,例如IA-32 ISA中CR0寄存器中的高速缓存禁用(CD)或写保护 (WP)位。静态故障信息的一个实例是处理器实现的版本(例如通过 IA-32 ISA中的CPUID指令来报告那样)。
一般来说,故障信息可包括故障标识符、相关故障误码、与故障 相关联的附加数据值或者这些数据项的任何组合。故障标识符可以是 用来区分这个特定故障与其它故障的值。误码可包含多个值,其中每 个值指示特定条件的出现。附加数据值可表示连接到出错指令或故障 触发条件的其它任何数据。另外,附加数据值可表示在故障产生期间 计算的数据。附加数据值的一些实例包括在故障时被请求写入特定位 置的数据、在故障时被访问的地址、导致故障的指令的地址、在故障 时存储器的状态等。
可参照IA-32 ISA中的页面错误来说明故障信息的一个实例。在 IA-32 ISA中,页面错误由等于14的故障标识符来标识。因此,当页 面错误出现时,通过经由条目14处的中断描述符表(IDT)引导到故障 处理器,控制被传递到故障处理器。(产生页面错误的)被访问地址被 存储在控制寄存器(CR2)中。另外,在把控制传递到故障处理器之前, 页面错误产生误码,它被推入堆栈,供故障处理器使用。误码包含四 位,它通知故障处理器什么条件导致页面错误。具体来说,误码中的 位0表明错误是否由用于地址转换的页面表中的非当前页面引起,误 码中的位1表明错误访问是否为写入,误码中的位2表明访问是否在 处理器处于用户模式时被发起,以及误码中的位3表明错误是否由页 面目录中设置为1的保留位引起。
附加数据值可与页面错误相关联。相关附加数据值的实例包括导 致页面错误的被访问地址(CR2)、出错指令的地址、客户软件在出现 页面错误时尝试写入页面表分级结构中的不可写页面的数据值、物理 和客户线性存储器中的页面表的地址等等。
现在将描述利用控制转移过滤标准的过滤机制的一些实施例。控 制转移过滤标准可手动或以编程方式来定义。控制转移过滤标准随特 定故障、误码形式、ISA、附加数据值的存在、VMM的特性及其它 因素而改变。控制转移过滤标准的复杂度和表达标准所需的元素数量 取决于误码中包含的值的数量、附加数据值的数量、以及需要(和不 需要)引起向VMM的转换的误码值和/或附加数据值的可能组合的数 量。例如,当需要考虑大量这类组合时,控制转移过滤标准可能要求 对误码和/或其它故障信息及一组预定数据执行若干运算(例如算术和 /或布尔逻辑运算)。
在一些实施例中,预定数据存储在VMCS的指定字段中,如上 所述。在其它实施例中,预定数据可被硬编码(例如在计算机程序、 可编程逻辑、微码或处理器的硬编码逻辑中)。
图2是因故障而利用控制转移过滤标准过滤VM出口的过程200 的一个实施例的流程图。该过程可通过可包括硬件(例如电路、专用 逻辑、可编程逻辑、微码等)、软件(例如运行于通用计算机系统或专 用机器上)或者两者的组合的处理逻辑来执行。
参照图2,过程200从处理逻辑接收故障信息(处理框202)开始。 故障信息可涉及在允许操作继续进行到完成的情况下已出现或将出 现的故障。故障信息包括标识该故障的故障标识符。在一些实施例 中,故障信息还包括与该故障相关联的误码和/或附加数据值。
在判定框204,确定故障信息是否满足一个或多个控制转移过滤 标准。如果在判定框204进行的确定为否定,即,故障信息不满足控 制转移过滤标准,则控制转到VMM(处理框206),它处理该故障,然 后可把控制重新转移到客户OS。否则,如果在判定框204进行的确 定为肯定,即,故障信息满足控制转移过滤标准,则控制仍属于客户 软件。然后,可允许客户软件处理该故障。
在备选实施例中,如果故障信息不满足控制转移过滤标准,则控 制被转到VMM(如果故障信息满足控制转移过滤标准,则控制仍属于 客户软件)。
如上所述,控制转移过滤标准的复杂度取决于各种因素。在一个 实施例中,控制转移过滤标准可能只要求将故障信息与某个值进行比 较(例如,如果误码大于10,则产生VM出口,或者如果误码等于0×4, 则产生VM出口,等等)。在另一个实施例中,控制转移过滤标准可 能要求将故障信息与若干值进行比较。例如,需要引起到VMM的转 换的误码值可事先确定,以及当前误码可与这些预定值进行比较以识 别匹配。预定值可存储在指定字段中(例如在图1的VMCS 122中), 或者被硬编码在计算机程序、可编程逻辑、微码或处理器的硬编码逻 辑中。在其它实施例中,可能要求过滤机制对故障信息和一组预定值 执行一个或多个布尔逻辑和/或算术运算。
图3-5说明因故障而利用控制转移过滤标准过滤VM出口的过程 的示范实施例。这些过程可通过可包括硬件(例如电路、专用逻辑、 可编程逻辑、微码等)、软件(例如运行于通用计算机系统或专用机器 上)或者两者的组合的处理逻辑来执行。
参照图3,过程300从处理逻辑在客户软件操作期间检测故障的 出现(处理框301)开始。在处理框302,处理逻辑接收标识故障并且 可包含与故障有关的其它信息的故障信息。在判定框303,处理逻辑 确定故障信息是否包含与故障相关联的误码。如果该确定为肯定,则 处理逻辑确定(在处理框304)以下表达式的值(真或假):
EC AND MASK==MATCH    (1)
其中EC为误码,AND为逐位布尔逻辑算子,“==”为逐位比较算 子,MASK为在第一字段、本文称作掩码字段中存储的预定数据,以 及MATCH为在第二字段、本文称作匹配字段中存储的预定数据。
各掩码字段和匹配字段的大小取决于相应误码的大小。在一些实 施例中,掩码字段和匹配字段的宽度与误码的大小相同。在其它实施 例中,掩码字段和匹配字段的宽度可以与误码的大小不同。例如,掩 码字段和匹配字段可小于误码,并且可以仅把某些位映射到表达式1 中。
此外,在图3所示的一个实施例中,处理逻辑还采用重定向图中 的相应控制位来进一步确定是否产生VM出口。重定向图表示由 VMM维护的一组控制位,用于配置哪些虚拟化事件将产生VM出 口。被咨询的控制位对应于导致当前故障的虚拟化事件。例如,虚拟 化事件可以是页面错误、外部中断或客户软件对调试寄存器的访问, 其中的每个在重定向图中具有相关位。在一个实施例中,重定向图包 含在图1的VMCS 122中。在一个实施例中,重定向图是VMCS 122 中的单字段。在其它实施例中,在VMCS 122中要求多个字段来详细 描述重定向图。
如果在判定框303作出的确定为否定(即故障信息没有包含与此 故障相关联的误码),或者处理逻辑在判定框304确定表达式1中的 等式成立(即经由逐位AND算子与掩码字段中存储的数据组合的误 码匹配在匹配字段中存储的数据),则在一个实施例中,重定向图中 的相应控制位的值被用来确定是否产生VM出口(处理框306)。例 如,如果控制位被置位,则处理逻辑将产生VM出口(处理框313); 否则,处理逻辑将把故障传递给客户软件(处理框312)。
如果表达式1中的等式不成立,则处理逻辑对重定向位图中的控 制位的值取反(处理框308),并使用这个取反值来确定是否产生VM 出口(处理框310)。如果取反值被置位,则处理逻辑产生VM出口(处 理框314);否则,故障将被引导到客户软件(处理框312)。在另一个 实施例中,如果如判定框304中所确定的那样,等式不成立,则处理 逻辑可使用控制位的实际值,如果等式成立,则使用控制位的取反 值。
在图3的过程300中掩码字段和匹配字段与控制位的使用可采用 与IA-32 ISA页面错误相关联的误码(本文中称作页面错误误码或 PFEC)的各种值作为实例来说明。以下实例假定在表达式1的等式不 成立时存在控制位的取反(如图3所示)。
如上所述,PFEC包括四位。为了实现PFEC值的所有可能组合 所需的结果,掩码字段、匹配字段和控制位中的每个应当具有特定设 定。例如,为了对所有页面错误产生VM出口,控制位可被设置为1, 掩码字段位的值将设置为0×0,以及匹配字段的值将设置为0×0。或 者,为了得到同样的性能,控制位可被设置为0,掩码字段设置为 0×0,以及匹配字段设置为0×F(注意,有匹配、掩码字段及控制位值 的许多设定都提供相同的功能性)。在另一个实例中,为了对于因监 督程序写入当前页面而导致的页面错误产生VM出口,控制位将设置 为1,掩码字段的值将设置为0×F,以及匹配字段的值将设置为0×3。 这些值确保只对产生等于0×3的误码的页面故障出现VM出口。在 又一个实例中,为了对于因非当前页面或保留位违反而导致的页面错 误产生VM出口,控制位将设置为0,掩码字段的值将设置为0×9(即 只有位0和3被设置为1),以及匹配字段的值将设置为0×1。这将对 指示当前页面(即位0被设置为1)以及无保留位违反(即位3被清除为 0)的那些之外的所有页面错误产生VM出口。
在另一个实施例(未示出)中,没有使用控制位。也就是说,处理 逻辑根据表达式1的结果来确定是否把控制转到VMM(即产生VM出 口)。如果表达式1中评估的等式成立(即经由逐位AND算子与掩码 字段中存储的数据组合的误码匹配在匹配字段中存储的数据),则满 足控制转移过滤标准,以及与误码相关联的故障将由客户操作系统处 理。否则(即经由AND算子与掩码字段中存储的数据组合的误码不匹 配在匹配字段中存储的数据),则不满足控制转移过滤标准,并产生 VM出口,把控制转到VMM。
图3所示实施例中使用的控制位的取反增加了实现误码值的各 种组合的预期结果(即VM出口结果或无VM出口结果)时的灵活性。 例如,下表说明包含两位的误码的值的各种组合的两种可能的预期结 果:     误码位    预期结果1    预期结果2     0     0    出口    无出口     0     1    无出口    出口     1     0    出口    无出口     1     1    出口    无出口
如果掩码字段位的值等于(11),匹配字段的值等于(01),以及控 制位等于0,则图3所示的过程300的实施例可得到预期结果1。如 果掩码字段位的值等于(11),匹配字段的值等于(01),以及控制位被 设置为1,则可得到预期结果2。
应当指出,预期结果2不要求使用控制位(即预期结果2仅要求 掩码=(11)以及匹配=(01))。但是,如果不使用控制位的取反,或 者更多字段没有包含在确定是否产生VM出口的过程中,则无法得到 预期结果1。
采用四个指定字段用于确定是否产生VM出口的控制转移过滤 过程的一个实施例如图4所示。参照图4,过程400可通过可包括硬 件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行于通 用计算机系统或专用机器上)或者两者的组合的处理逻辑来执行。
过程400从处理逻辑在客户软件操作期间检测故障的出现(处理 框401)开始。在图4所示实施例中,假定所有故障产生误码,在处理 框402处理逻辑接收这些误码。随后,处理逻辑采用逐位AND算子 将误码与第一掩码字段中存储的数据组合(处理框404)以及与第二掩 码字段中存储的数据组合(处理框406)。即,第一组合的结果INT1=EC AND MASK1以及第二组合的结果INT2=EC AND MASK2。
此外,在判定框408,处理逻辑确定第一组合INT1是否匹配第 一匹配字段中存储的数据(MATCH1),或者第二组合INT2是否匹配 第二匹配字段中存储的数据(MATCH2)。如果找到任何匹配,则处理 逻辑产生VM出口(处理框410)。或者,如果没有发现任何匹配,则 故障被插入客户操作系统(处理框409)。
控制转移过滤标准可采用更复杂的算术或布尔逻辑和/或附加字 段,以便为预期结果提供更大的灵活性,如图5所示。参照图5,过 程500可通过可包括硬件(例如电路、专用逻辑、可编程逻辑、微码 等)、软件(例如运行于通用计算机系统或专用机器上)或者两者的组合 的处理逻辑来执行。
过程500从处理逻辑在客户软件操作期间检测故障的出现(处理 框501)开始。在处理框502,处理逻辑接收故障信息。如处理框503 所确定的那样,如果故障信息包含误码,则处理逻辑采用逐位AND 算子将误码与第一掩码字段中存储的数据组合(处理框504)以及与第 二掩码字段中存储的数据组合(处理框506)。即,第一组合的结果 INT1=EC AND MASK1以及第二组合的结果INT2=EC AND MASK2。
此外,在判定框508,处理逻辑确定在第一组合INT1中是否设 置了任何位,或者第二组合INT2是否匹配在匹配字段中存储的数据 (MATCH)。在一个实施例中(图5中未示出),如果任一个确定为肯 定,则处理逻辑产生VM出口。否则,故障被插入客户OS。
在另一个实施例中(图5中所示),与VM出口有关的确定还取决 于重定向图中的相应控制位。明确地说,如果在判定框508进行的确 定为肯定(或者如果在判定框503进行的确定为否定,即故障信息没 有包含误码),则处理逻辑还在判定框510确定控制位是否指定VM 出口(例如控制位被设置为1)。如果控制位指定了VM出口,则处理 逻辑产生VM出口(处理框512)。如果控制位没有指定VM出口(例如 控制位被清零),则故障被插入客户OS(处理框518)。
否则,如果在判定框508作出的确定为否定,则处理逻辑对控制 位的值取反(处理框514)。如果取反值指定了VM出口(判定框516), 则处理逻辑产生VM出口(处理框512)。如果取反值没有指定VM出 口,则故障被插入客户OS(处理框518)。
虽然图3-5所示的实施例采用某些算子(即逐位AND、比较等), 但各种各样的其它算子也可与过滤标准配合使用,而不失一般性。另 外,以上结合图3-5所述的那些之外的各种过滤标准也可用来处理在 客户软件操作期间出现的故障。此外,上述附加数据值可用来代替与 过滤过程中的故障相关联的误码,或者与它们一起使用。
在一些实施例中,附加过滤标准(本文中称作故障过滤标准)可在 控制转移过滤标准之前应用于故障信息。在其它实施例中,故障过滤 标准在控制转移过滤标准之后应用于故障信息。在另一些实施例中, 故障过滤标准而不是控制转移过滤标准被应用于故障信息。故障过滤 标准用来确定在客户软件操作期间出现的出错条件是否可被忽略。出 错条件表示若允许操作完成、则通常会导致故障的事件。这种出错条 件的一个实例是客户软件写入页面表分级结构中的不可写页面的尝 试。在一些情况下,出错条件可以被忽略,因为在出错条件时存在的 其它因素表明出错条件不会例如损害VMM或其它虚拟机的性能、安 全性或正确操作。下面结合图7和图8更详细地描述这些情况的实 例。
图6是因故障而利用故障过滤标准和控制转移过滤标准过滤故 障和VM出口的过程600的一个实施例的流程图。该过程可通过可包 括硬件(例如电路、专用逻辑、可编程逻辑、微码等)、软件(例如运行 于通用计算机系统或专用机器上)或者两者的组合的处理逻辑来执 行。
过程600从处理逻辑在客户软件操作期间检测出错条件的出现 (处理框602)以及分析与出错条件有关的故障信息(处理框604)开始。 这种故障信息可包括故障标识符、误码、出错地址、待写入的数据、 页面表地址等。
随后,处理逻辑确定故障信息是否满足故障过滤标准(判定框 604)。故障过滤标准要求利用与客户软件的工作有关的规则,评估处 理器状态、存储器状态和/或故障信息的一个或多个元素。例如,故 障过滤标准可要求将客户软件尝试写入存储单元的数据与当前存储 在此存储单元的数据进行比较。故障过滤标准可要求单独检验处理器 状态、存储器状态和/或故障信息的一个元素,或者多次检验各种元 素。故障过滤标准的复杂度可随特定出错条件、与出错条件有关的操 作规则、ISA、VMM的特性、应用及其它因素而改变。下面结合图7 和图8更详细地论述示范过滤标准。
如果满足故障过滤标准,则处理逻辑忽略出错条件,以及允许客 户软件继续进行,好像没有检测到出错条件一样(处理框608)。因此, 客户软件发起的操作的行为经修改以允许其完成,而不管出错条件的 检测如何。
如果不满足故障过滤标准,则处理逻辑利用控制转移过滤标准确 定处理该故障的适当实体(判定框610)。如果故障信息满足控制转移 过滤标准,则处理逻辑把故障传递到客户软件,以及允许客户软件处 理该故障(处理框612)。如果故障信息不满足控制转移过滤标准,则 处理逻辑把控制转到VMM(处理框614)。
在其它实施例中,如果不满足故障过滤标准,则处理逻辑不使用 控制转移过滤标准,而始终把控制转到VMM。
在其它实施例中,处理逻辑首先利用控制转移过滤标准来确定处 理故障的适当实体。然后,如果适当实体为客户软件,则处理逻辑还 确定是否满足故障过滤标准。如果满足故障过滤标准,则允许客户忽 略故障条件;如果不满足故障过滤标准,则该故障被传递给客户,如 上所述。
以下论述假定页面表结构在IA-32 ISA中,但应当指出,类似的 页面表结构存在于各种ISA中,本发明不限于使用IA-32 ISA。另外, 可进行各种简化以便于以下论述。例如,没有包含物理地址扩展(PAE) 和页面大小扩展(PSE)标志的作用,没有说明基于环的保护机制,没 有测试存储器存取的对准要求等等。
如本领域熟知的那样,IA-32 ISA中的页面表由页面目录条目 (PDE)和页面表条目(PTE)组成。每个PDE和PTE包含控制存储器页 面的可存取性的各种位字段。例如,“P”位把页面标记为当前(1)或 非当前(0),“R/W”位表明页面是只读(0)还是可读写(1),“U/S”位 表明页面是否要求监督程序特权,页面编号(PFN)是否包含逻辑页 面所在的物理地址的一部分,等等。CR3是ISA中的控制寄存器, 它包含页面目录的基物理地址(和附加标志)。页面目录基物理地址等 于CR3[31:12]<<12(即,页面目录基地址的低12位为0,高20位处 于CR3的高20位中)。
为了防止一个虚拟机中的错误或恶意代码损害在VMM或另一 个虚拟机上运行的代码,需要把客户软件的访问限制为基础物理机器 的物理存储资源。在提供了由客户OS和VMM分别管理的独立页面 表分级结构的一些体系结构中,一种把客户软件的访问限制为物理存 储资源的方法包括客户页面表分级结构的VMM修改许可,从而防止 客户软件对受保护页面(例如属于VMM或其它VM的页面)的读或写 操作。另外,客户页面表经修改以防止对属于存储客户页面表的VM 的一些页面的写操作。一旦已经进行这些许可修改,则客户软件改变 页面表的尝试将导致页面错误事件,这是VMM可通过VM出口观察 的。VMM可检查所尝试的访问,并确定要采取的适当动作。例如, 它可允许、不允许或修改所尝试的访问。例如,可能不允许客户软件 映射属于VMM或另一个VM的物理页面。由于客户软件对页面表的 修改频繁出现,因此与退出到VMM相关的、用于筛选每次尝试的客 户页面表改变的开销可能强加重大的性能负担。
为了简化页面表的管理,若干操作系统、例如Microsoft Windows XP采用递归页面目录。换言之,页面目录条目(PDE)将设置为把页面 目录页引用为页面表页。这种把同一个页面用作页面目录和页面表的 用法使所有页面表页在通过自指的PDE访问的线性地址空间的4MB 区域中是可访问的。给定自指PDE的使用,则可计算用来映射任何 特定线性地址的PTE或PDE的线性地址。在采用自指PDE的操作系 统中,典型的页面表编辑是通过这种自映射区域进行的(即,对页面 表的编辑是利用自映射PDE通过写入采用处于4MB区域的线性地址 的存储器进行的)。不采用这种自映射PDE的页面表编辑在数量上极 少。
其中公共页面用作页面目录页以及页面表页的页面表在本文中 称作自映射页面表。本领域的技术人员非常清楚,本发明还适用于其 它方法,其中页面表条目以组织方式映射到线性地址,无论这种映射 是在页面表分级结构的多层上结构再用的结果,还是通过OS惯例。
在本发明的一个实施例中,过滤机制用来标识不要求退出到 VMM的页面映射编辑。在此实施例中,用于过滤标准的附加字段被 添加到VMCS。
在一个实施例中,客户操作系统所用的页面表是自映射的,即, 页面表分级结构中的页面目录条目(PDE)之一重新指向页面目录(PD) 页的基部。如上所述,自映射页面表的概念是本领域都熟知的,以及 由操作系统、例如Microsoft的Windows XP使用。在一个实施例中, 通过确保页面目录基部线性地址(本文中称作PTBASE)满足一组条件 来支持自映射。这组条件可检验PTBASE值为4MB对准的、即 PTBASE[21:0]==0,以及页面表包含适当的自映射条目、即单元 ((CR3[31:12]<<12)+(PTBASE[31:22]<<2))中条目中的PFN等于 CR3[31:12]。在一个实施例中,PTBASE值存储在VMCS中,由过滤 机制使用,如以下所述。
假定自映射页面表正在使用,则可确定任何给定地址是否处于页 面表中(即,是否ADDR[31:22]==PTBASE[31:22],其中ADDR为被 访问的地址)。另外,可确定该地址是否处于PDE中(即地址是否处于 页面表中,并且ADDR[21:12]==PTBASE[31:22])或者处于PTE中(即 该地址是否处于页面表中,但不在PDE中)。
图7和图8说明利用故障过滤标准过滤页面错误的过程的两个示 范实施例。该过程可通过可包括硬件(例如电路、专用逻辑、可编程 逻辑、微码等)、软件(例如运行于通用计算机系统或专用机器上)或者 两者的组合的处理逻辑来执行。在图7和图8所示的实施例中,VMM 通过确保映射页面表自身的客户页面表条目(客户PTE)具有只读访问 来保护物理存储器。因此,当客户软件尝试改变页面表条目时,页面 错误条件出现。这些实施例可与采用自映射页面表的客户OS配合使 用,如上所述,或者与没有采用这个页面表结构的客户OS配合使用, 但采用自映射页面表的客户OS的使用提供更大的性能提高。
在图7所示的实施例中,说明了故障过滤标准的集合,它允许完 成对PTE的写入,在客户操作系统没有尝试把“P”位设置为1时没 有传递故障或产生VM出口,同时仍然保护物理存储空间以及制止为 客户软件提供对页面表的完全控制。这个规则的理论基础在于,标记 了非当前的PTE(即“P”位等于0)无法映射物理存储页面。因此, 由客户软件改变的PTE无法映射物理存储页面,因此无法干扰VMM 或者在另一个VM上运行的软件的操作。因此,不需要通知VMM页 面表修改,以及将允许页面表写入继续进行,而没有导致页面错误或 VM出口。
参照图7,处理逻辑从在客户软件操作期间检测页面错误条件(处 理框702)以及接收与页面错误条件有关的页面错误信息(处理框704) 开始。
随后,一组故障过滤标准被应用于页面错误信息。明确地说,处 理逻辑确定出错访问是否为写操作(判定框706)、写入PTE(判定框 708),以及不是把“P”位设置为1的尝试(即DATA.P==0,其中DATA 为客户正试图写入的值)(判定框710)。如果这些确定为肯定的,则允 许客户操作系统的访问完成(即允许写入以修改存储器),而没有产生 故障或VM出口(处理框714)。如果处理框706、708和710中的确定 的任一个为否定,则控制被转移到处理框712以确定VM出口是否要 被产生,或者故障将被引导到客户软件,如结合图2-5更详细描述的。
在另一个实施例中(附图中未示出),写入必须是对PTE进行的条 件可被取消,或者采用例如只要当前位未被设置就允许对PTE或PDE 写入的测试来代替。
参照图8,说明更复杂的故障过滤标准集合,它包括以上结合图 7所述的故障过滤标准以及其它一些标准。故障过滤标准的这个集合 允许客户操作系统修改PTE中除PFN、读/写以及当前位之外的位, 而不要求页面错误或产生VM出口。另外,允许读/写和当前位的某 些修改,而不要求页面错误或产生VM出口。
处理逻辑从在客户软件操作期间检测页面错误条件(处理框802) 以及接收与页面错误条件有关的页面故障信息(处理框804)开始。随 后,处理逻辑确定出错访问是否为写操作(判定框806)、写入PTE(判 定框808),以及不是把“P”位设置为1的尝试(即DATA.P==0)(判定 框810)。如果这些确定均为肯定,则允许客户操作系统的访问完成(即 允许写入以修改存储器),而没有产生故障或VM出口(处理框814)。 如果处理框806或808中的确定为否定,则控制进入处理框812,确 定是否要求VM出口,如参照图2-5所述。
如果处理框810中的确定为否定,则应用附加故障过滤规则。明 确地说,处理逻辑确定PTE是否已经在PTE中标记为当前(即, ADDR->P==1,其中ADDR为客户软件正尝试写入的地址,以及 ADDR->P表示在存储器中位于ADDR的数据被解释为PTE时的P 位)(判定框816),PFN是否没有改变(即ADDR->PFN==DATA.PFN)(判 定框818),以及客户是否正尝试把PTE映射的页面标记为只读 (DATA.R/W==0)或者由PTE映射的页面是否在存储器中的PTE中已 经标记为可写(ADDR->R/W==1)(判定框820)。如果这些确定为肯定, 则允许客户操作系统的访问完成(即允许写入以修改存储器),而没有 产生故障或VM出口(处理框814)。如果处理框816、818和810中的 任何确定为否定,则控制被转移到处理框812以确定是否要求VM出 口。
应当指出,图7和图8所示的过滤机制将滤除利用自映射PDE 尝试修改页面表的访问,如上所述。没有采用自映射PDE的修改页 面表的尝试不会被故障过滤标准滤除(即,在框708和808中对于写 入是否对PTE进行的确定将失败)。然后,控制转移过滤标准用来确 定是否需要VM出口,如图2-5所示。从安全性或正确操作的观点来 看,这不会产生问题,因为VMM能够确定是否在实际上编辑PTE。 控制转移过滤机制将配置成对所有写入页面错误产生VM出口,以及 评估被写入的地址和数据,以确定是否正尝试页面表编辑。
除以上参照图7和图8所述的那些之外的各种故障过滤标准可用 来过滤故障,而不失一般性。过滤的形式可由各种VMM控制字段(例 如PTBASE)来控制,在一个实施例中,这些字段可驻留在VMCS中。 或者,过滤可由单个启用位来控制,可以被硬编码到处理器实现中, 等等。
图9是定义控制转移过滤标准和/或故障过滤标准的过程900的 一个实施例的框图。过程900可手动或自动执行。
参照图9,过程900从识别故障信息的哪些组合(例如误码值、故 障标识符等)不要求到VMM的转换或者应当被允许完成、忽略故障 (处理框902)开始。然后,可用于VM出口和/或故障过滤标准的字段 最大数量以及字段语义被识别(处理框904),以及可用算子(例如布 尔、算术等)被识别(处理框906)。此外,根据在处理框902-906所识 别的信息,创建过滤标准(处理框908)。过滤标准可包括一个或多个 预定值以及对预定值和误码执行的一个或多个布尔逻辑和/或算术运 算。
这样,已经描述了处理在客户软件操作期间出现的故障的方法及 装置。应当理解,以上描述只是说明性而不是限制性的。通过阅读和 理解以上说明,本领域的技术人员将会十分清楚其它许多实施例。因 此,本发明的范围应当参照所附权利要求以及这些权利要求涵盖的完 整等效范围来确定。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈