专利名称:使用冗余虚拟机的错误检测的制作方法
技术领域:
本公开涉及计算和计算机系统的领域,而且更详细地涉及使用 虚拟机监视器的计算机系统中的错误检测的领域。
背景技术:
一些计算机系统对于在操作期间处理错误可能是易受影响的。 例如,由于计算机系统暴露于辐射或其它电磁场引起的瞬时错误("软 错误")可能损坏正在贯穿计算机系统传输的数据,从而引起不正确或 非预期的计算结果。例如,软错误可引起计算机系统内不正确的数据
在运行于处理器上的软件应用和由该软件应用生成的输入/输出(1/0) 数据流之间传递。在该示例中,软错误可存在于应用软件、操作系统、 系统软件或I/O数据自身中。
计算机系统中软错误的问题已经通过技术定位,例如冗余软件 执行,其中将软件的段处理两次或更多次,有时候在不同的处理硬件 上,以便产生能相互比较的多个结果以在结果中检测错误。冗余软件 处理,虽然在计算机系统中对于检测软错误有些效果,但会需要额外 的计算资源,例如冗余的硬件,以冗余地处理软件。
用在一些计算机系统中的另 一种技术是在软件中虚拟化硬件并 且在硬件的冗余虚拟版本内冗余地处理不同的代码段,以便检测软错
误。冗余的虚拟硬件,或冗余的"虚拟机"(RVM),能提供底层处理 硬件的软件表示,以使得软件代码能冗余地在RVM上并行处理。
图1示出了冗余的虚拟机环境,其中软件段,例如软件线程, 能冗余地处理以便检测软件中的软错误。具体地,图l示出表示相同 处理硬件的两个虚拟机(VM),其中软件线程能冗余地和并行地处理。来自软件线程中的一个或多个操作的冗余拷贝的结果能相互比较,以 便在软件线程实际上提交到硬件上下文状态之前或之后检测软错误。
然而,为了确保软件在两个VM上等同地处理,通过这些VM 的代码的执行路径必须由例如复制管理层(RML)的软件才莫块控制(或 管理)成为相同的。此外,RML可能需要比较两个VM的输出。不幸 地是,RML,或等同软件模块,会引入额外的处理开销,这些额外的 处理开销会引起计算机系统中的性能下降。此外,RML自身可能包含 软错误,并且因此是不可信任的。
本发明以示例而非限制的方式在附图中示出。 图1示出现有技术的冗余虚拟机(RVM)环境。 图2示出可与本发明的一个或多个实施例协作使用的计算机系 统的纽/f牛。
图3示出可与本发明的一个或多个实施例协作使用的处理器和
输入/输出Ci/o)控制器。
图4是流程图,示出可在本发明的一个或多个实施例中使用的 多个操作。
图5是共享总线型计算机系统,其中可执行本发明的一个或多 个实施例。
图6是点对点计算机系统,其中可执行本发明的一个或多个实施例。
具体实施例方式
本发明的实施例涉及计算机系统。更具体地,本发明的至少一 个实施例涉及计算机系统内检测和响应对应输入/输出(1/0)操作的错 误的技术。
本发明的至少一个实施例使用硬件逻辑执行与利用冗余虚拟机(RVM)检测软错误相关的功能的一部分。更具体地,本发明的一个或 多个实施例使用 一对指定的存储区域以及对应的输入复制和输出比 净交逻辑,以4企测与在一个或多个处理器和一个或多个I/O设备之间的 I/O数据的传输相关的软错误。
在一个实施例中,指定的存储区域包括两个或更多寄存器组, 这些寄存器组位于I/O控制器内或否则与I/O控制器相关,以存储在 两个或更多虚拟机和1/0设备之间通信的数据。在一个实施例中,指 定存储区域也可包括存储器的两个或更多段(例如,VM緩冲区),以 存储与在存储器和I/O设备之间的直接存储器访问(DMA)操作相关的 数据。
本发明的实施例可合并在1/0控制器设备内的逻辑或否则与I/O 控制器设备相关的逻辑,以执行由现有技术的RML执行的多个功能。 例如,在一个实施例中,与表示处理硬件资源的两个或更多RVM相 关的1/0控制器内的逻辑,可用来复制由1/0设备提供给RVM的输入 并且比较由RVM生成的输出,以便确定软错误是否已经发生。有利 的是,在硬件逻辑中包括输入复制和/或输出比较功能性的实施例能提 高处理吞吐量,减少软件开销,并且减少软错误影响软错误检测处理 的机会。
图2示出计算机系统的组件,其中可实现本发明的一个实施例。 具体地,图2示出CPU201, CPU201包括两个RVM 205、 210以表 示CPU的多种处理资源。此外,图2包括含有I/O控制器215的I/O 控制器以在CPU(与RVM)和一个或多个I/O设备220之间接口数据。 在图2中还包括与1/0控制器相关的控制寄存器中的至少一些寄存器 的两个表示225、 227。在一个实施例中,这两个表示分别对应不同的 RVM并且用来存储控制信息,控制信息被RVM用来将数据发送到I/O 控制器或从I/0控制器接收数据。在一个实施例中,这两个表示是I/0 控制器内的或否则与1/0控制器相关的寄存器,然而在其它实施例中, 这些表示是在例如DRAM的存储器结构中的位置。位于图2的I/O控制器内的还有输入复制和输出比较逻辑230, 以生成对应I/O控制器的控制接口信息以及比较RVM的输出和响应 RVM执行与输入相关的任务而产生的RVM的输出。例如,在一个实 施例中,对于将由RVM执行的给定的软件操作,对应I/0控制器的 控制接口信息可存储在I/O控制器内的寄存器组中,或存储在否则与 I/O控制器相关的寄存器组中,而且RVM的输出数据可由比较逻辑相 互比较以确保没有发生损坏输出的软错误。而且,从I/0设备返回且 将被发送至RVM的信息也可使用比较逻辑230复制,以便确保两个 RVM接收到相同的数据,从而维护RVM之间的一致性。相似地,可
或结果数据自身中没有发生软错误。
在一个实施例中,如果比较的结果指示输出数据不一致,错误 纠正逻辑或软件或两者能被调用以处置错误并从错误恢复。例如,在 一个实施例中,响应正在检测的错误而调用软件处理程序(handler), 它能防止错误将处理硬件置于不正确的状态中,或如果硬件已经被置 于不正确的状态中,则将硬件置于正确的或已知的状态中。在处理程 序从软错误恢复后,在一个实施例中,其中发生软错误的操作可能被 再次执行。
在一个实施例中,图2的I/O控制器通过在I/O设备上执行I/O 操作前等待对复制寄存器组的相同的访问,便于对PIO访问的RVM 的输出进行比较。在一个实施例中,PIO操作可包括PIO写和/或与 PIO读操作相关的副作用操作(side effect operations)(如果有的话)。
在未緩存的I/O读和写的情况下,它们可以非前瞻地 (non-speculatively)和以程序顺序执行,来自 一个RVM的设备寄存器 访问可对照来自另一个RVM的程序顺序中的紧4妄的下个"i殳备访问而 得到验证。为了防止一个RVM在每个访问可得到验证前发出几个I/O 设备访问,在一个实施例中,I/O设备可响应直到另 一个RVM的访问 已经发生的一个RVM的访问(例如,使用总线级重试响应)而推迟。如果随后的RVM的访问没有在特定时间限制(在一个实施例中是可编程 的时间限制)内到达,1/0设备可以总线错误来响应,该总线错误能由 与RVM相关的VMM截取并相应地处理(即,通过再重试或者将此情 况处置为错误)。
在一个实施例中,如果随后的RVM对I/O设备的访问不匹配笫 一个RVM对I/O设备的访问,例如因为该访问具有不同的类型,定 向到不同的寄存器,或(在写的情况下)具有不同的数据值,1/0控制器 也可通过总线错误响应和/或中断将错误发信号给VMM。
在一个实施例中,图2的1/0控制器通过在对应的访问上将相同 的值返回给两个RVM而支持对于PIO访问的输入复制。例如,对于 不具有副作用的设备寄存器读,或者对于返回值与副作用无关的读, 如果緩存响应值,则设备可响应较早的RVM访问以使得响应随后的 RVM访问而返回一致的值,即使设备的内部状态在此期间改变。同样, 如果未緩存的1/0读和写以非前瞻地和以程序顺序执行,则在一个实 施例中,对PIO读的响应可关于RVM内的程序流程同步。因此,在 这样的实施例中,设备不需要参与响应的具体定时。
图3示出与本发明的至少一个实施例相关的多个组件,其中通 过DMA传输从I/O设备传输信息或将信息传输到I/O设备。具体地, 图3示出CPU301,对于CPU 301,两个或更多RVM(未示出)可用于 表示多个资源。在图3中也示出存储器305,它可用于存储通过存储 器控制器310和I/O控制器315而在两个或更多RVM和I/O设备320 之间通信的信息。具体地,存储器305可以是DRAM,例如,其中緩 冲区325可以指定为对应RVM其中之一而緩冲区330可以指定为对 应另一个RVM。
正如图2中所示的范例,输入和/或输出比较逻辑可包括在I/O 控制器315之内,或者否则与I/O控制器315相关,以比较对应由RVM 正在执行的软件操作的输入和/或输出。此外,1/0控制器控制信息可 由对应两个或更多的RVM的两个或更多寄存器组(未示出)表示,如图2中所示的范例。然而,在DMA的情况下,与PIO访问相反,从RVM 写到1/0设备的数据或从I/0设备写到RVM的数据首先存储在对应的 RVM緩沖区(325或330)中。
在一个实施例中,如果为虚拟化的1/0访问重映射DMA地址, RVM緩冲区可对应相同的物理地址但带有不同的I/O重映射上下文。 否则,在其它实施例中,緩冲区可位于不同的物理地址处。在一个实 施例中,仅仅緩冲区的内容必须被验证或者被复制,因此緩沖区地址 的不同可能不是那么重要。
在一个实施例中,I/O控制器内的逻辑通过等待直到它从RVM 之一接收到描述符数据而在外出的DMA传输(到1/0设备)上执行输出 比较。描述符数据可在其中支持DMA传输的系统中提供。IZO控制器 然后可比较数据緩沖区长度和/或与第 一对RVM描述符数据相关的其 它参数(例如,磁盘块偏移)。如果数据緩沖区长度和/或其它参数匹配, 则1/0控制器可从两个緩冲区取出数据内容并且在逐比特、逐字节、 逐字(或一些其它的间隔尺寸)的基础上比较它们。如果两个緩沖区的 内容匹配,则在 一个实施例中,I/O操作^皮验证且转发给设备。如果 操作的参数或数据有任何不匹配,这可能是软错误的指示,并且I/O 控制器可发起中断,该中断将由VMM处置。
在一个实施例中,在进入的DMA传输(来自设备)上的输入复制 可以如上描述的输出复制相似的方式处置。在数据传输完成后,在一 个实施例中,数据可写入物理存储器两次,在每个对应RVM的位置 处。
在一个实施例中,输入复制可能需要从I/O控制器到CPU的完 成通知。例如,如果I/0设备驱动正在轮询DMA緩沖区完成情况, 则DMA传输的不同步特性会使一个RVM解释描述符数据以指示 DMA完成而另 一个RVM在其执行中的同一个逻辑点却不这样做,因 此导致在它们的执行路径中可能的分歧。
在一个实施例中,当RVM正在执行以及有中断服务例程(ISR)正在执行时,阻止1/0控制器写描述符完成标志,以便防止上面提到 的RVM执行路径的分歧。在一个实施例中,在ISR执行的执行期间 完成的DMA緩冲区传输可不写入它们对应的描述符直到RVM退出 ISR。在一个实施例中,设备驱动可在进入ISR的入口处或退出ISR 的出口处访问特定的设备寄存器,以便推迟描述符更新。
在一个实施例中,不是将描述符信息写到基于存储器的DMA描 述符域,而是I/O控制器可通过增加与存储器中的对应的DMA緩冲 区相关的计数器发出完成DMA请求的信号。在该实施例中,完成通 知可然后通过对该寄存器的PIO读而发生,从而允许使用如上所述的 PIO输入复制技术。
图4是示出可用在本发明的至少一个实施例中的多个操作的流 程图。在操作401处,确定到1/0设备的访问(例如,读或写)是PIO 访问或DMA访问。如果访问是PIO访问,则相邻访问可认为是来自 两个或更多的RVM的冗余访问。因此,来自RVM的相邻访问可相互 比较以确定访问中错误是否已经发生(在操作403处)。在操作405处, 如果错误发生,中断可一皮生成并由对应RVM的VMM处置且做出相 应的处理(在操作407处)。
另一方面,如果确定访问是DMA访问,则在操作410处,在与 来自对应数量的RVM的两个或更多访问相关的描述符之间做出比较。 在一个实施例中,对应访问的描述符可由例如数据緩沖区长度、偏移 信息等的信息组成。如果描述符匹配,则在操作412处,随后存储在 存储器中对应RVM的緩沖区中的数据可相互比较以确定错误是否发 生。如果数据中或描述符中发生错误,则在操作420处中断被生成且 由只十应RVM的VMM以适当的方式处置。
图5示出前端总线(FSB)计算机系统,其中可使用本发明的一个 实施例。处理器505从一级(Ll)緩存存储器510和主存储器515访问 数据。在本发明的其它实施例中,緩存存储器可以是二级(L2)緩存或 计算机系统存储器体系内的其它存储器。此外,在一些实施例中,图5的计算机系统可同时包含L1緩存和L2緩存。
在图5的处理器内示出的是关于机器状态的存储区域506。在一 个实施例中,存储区域可以一组寄存器,然而在其它实施例中,存储 区域可以是其它存储结构。处理器可具有任意数量的处理核。然而, 本发明的其它实施例,可在系统内的其它设备内实现,例如单独的总 线代理,或遍及系统地分布在硬件、软件或它们的一些组合中。
主存储器可在多种存储器源(memory source)中实现,例如动态随 机访问存储器(DRAM)、硬盘驱动器(HDD)520或通过网络接口 530远 离该计算机系统、包含多种存储设备和技术的存储器源。緩存存储器 可位于处理器内或接近处理器,例如在处理器的本地总线507上。
此外,緩存存储器可包含较快的存储器单元,例如六晶体管(6T) 单元,或具有大致相等或更快访问速度的其它存储器单元。图5的计 算机系统可以是例如微处理器的总线代理的点对点(PtP)网络,它通过 专用于PtP网络上的每个代理的总线信号通信。图6示出以点对点(PtP) 配置设置的计算机系统。具体地,图6示出处理器、存储器和输入/ 输出设备通过多个点对点接口互连的系统。
图6的系统也可包括几个处理器,为了清楚仅地示出其中两个 处理器670、 680。处理器670、 680可分别包括本地存储器控制器中 心(MCH)672、 682以连接存储器22、 24。处理器670、 680可通过点 对点(PtP)接口 650使用PtP接口电路678、 688交换数据。通过使用点 对点接口电路676、 694、 686、 698,处理器670、 680可通过单独的 PtP接口 652、 654与芯片组690交换数据。芯片组690也可通过高性 能图形接口 639与高性能图形电路638交换数据。本发明的实施例可 位于具有任意数量处理核的任何处理器内,或在图6的PtP总线代理 的每一个内。然而,本发明的其它实施例,可存在于图6的系统内的 其它电路、逻辑单元或设备中。此外,在本发明的其它实施例中,可 分布遍及图6中示出的若干电路、逻辑单元或设备。
本文所指的处理器、或根据本发明的实施例设计的任何其它组件,可以在不同阶段设计,从创意到仿真到制作。表示设计的数据可 以多种方式表示设计。首先,如在仿真中有用的,可使用硬件描述语 言或其它功能描述语言表示硬件。附加地或备选地,可在设计过程的
某些阶段产生带有逻辑和/或晶体管门电路(transistor gate)的电路级模 型。此外,大多数设计,在某个阶段,达到它们可用表示多个设备的 物理布局的数据建才莫的程度。在使用常规半导体制作技术的场合中, 表示设备布局模型的数据可以是在指明在不同掩模层上多个特征的 出现或缺失的数据(掩才莫用于生产集成电路)。
在设计的任何表示中,数据可以存储在任何形式的机器可读介 质中。为传送此类信息而调制或否则生成的光波或电波、存储器、或 磁的或光的存储介质,例如磁盘,可以是所述机器可读介质。这些介 质的任一个可"携带"或"指示"设计、或用在本发明的实施例中的 其它信息,例如错误恢复例程中的指令。当传送指示或携带信息的电 载波,就执行电信号的复制、缓存或重传来说,实现新的拷贝。因此, 通信供应商或网络供应商的动作可以是实现例如载波的制品的拷贝, 乂人而实施本发明的4支术。
因此,公开了用于操纵存储器访问(例如加载或存储)的技术。虽 然描述了特定的实施例,并在附图中示出,应该理解这些实施例仅仅 是本广义发明的示意而非限制,而且本发明不限于所示出的和所描述 的具体的构造和设置,因为学习本公开的本领域技术人员可实现多种 其它的修改。在例如这种进步很快且未来的改进不容易预见的技术领 域中,在不脱离本公开的原则或所附权利要求的范围的情况下,所公 开的实施例在设置和细节方面在启用技术进步的帮助下可以是轻易 可修改的。
本发明的 一个或多个实施例的多个方面可在关于其中可使用本 发明的一个或多个实施例的处理器或计算机系统的公布中描述、讨论 或否则提到。这些公布可包括,但不限于新闻出版物、杂志、广告牌、 或其它^J氏或否则可触々某体。具体地,本发明的一个或多个实施例的多个方面可在互联网上通过网站,"弹出"广告或其它基于网络的々某 体公布,不管装有生成该网站或弹出窗口的程序的服务器是否位于美 国或其属地内。
权利要求
1. 一种装置,包括比较数据的电路,所述数据对应对于输入/输出(I/O)设备的至少两个冗余访问,以便确定与所述至少两个冗余访问中的任一个相关的错误是否发生。
2. 如权利要求1所述的装置,还包括两个或更多冗余访问接口 存储区域以存储对应所述两个或更多冗余访问的信息。
3. 如权利要求2所述的装置,其中所述两个或更多冗余访问接 口存储区域位于I/O控制器设备内,而且将存储对应所述I/O控制器 设备的控制信息。
4. 如权利要求2所述的装置,其中所述两个或更多冗余访问接 口存储区域位于存储器设备内,而且将存储对应所述至少两个冗余访 问的所述数据。
5. 如权利要求1所述的装置,其中所述两个或更多冗余访问将 由两个或更多对应的冗余虚拟机(RVM)生成。
6. 如权利要求5所述的装置,其中,如果在所述至少两个冗余 访问中的任一个中检测到错误,则将生成中断。
7. 如权利要求6所述的装置,其中所述中断要由对应所述两个 或更多RVM的虚拟机管理器(VMM)接收。
8. —种系统,包括处理器,所述处理器的至少一些处理资源要由两个或更多冗余虚 拟才几(RVM)表示;包括输出错误检测逻辑的输入/输出(I/0)控制器,以比较与来自所 述两个或更多RVM的两个或更多访问对应的数据;I/O设备,所述I/O设备接收来自所述两个或更多RVM的两个或 更多访问。
9. 如权利要求8所述的系统,其中所迷I/O控制器还包括输入复制逻辑以生成对应所述两个或更多RVM的两组或更多组I/O控制器 4妾口信息。
10. 如权利要求9所述的系统,其中所述两组或更多组1/0控制 器接口信息要在两个或更多寄存器组中存储。
11. 如权利要求8所述的系统,还包括存储器以存储来自所述两 个或更多访问的所述两个或更多访问的数据。
12. 如权利要求11所述的系统,其中来自所述两个或更多访问 的数据要在所述存储器内的两个或更多緩冲区内存储,所述两个或更 多緩沖区对应所述两个或更多访问。
13. 如权利要求9的所述的系统,其中所述两个或更多访问对应 编程的I/O (PIO)访问。
14. 如权利要求9所述的系统,其中所述两个或更多访问对应直 接存储器访问(DMA)。
15. 如权利要求9所述的系统,其中,如果由所述错误检测逻辑 检测到错误,则将生成中断。
16. 如权利要求15所述的系统,其中所述中断要由对应所述至 少两个RVM的虚拟机管理器(VMM)接收。
17. —种方法,包括确定对输入/输出(I/0)设备的第一访问是否对应编程的I/O (PIO) 访问或直接存储器访问(DMA);如果所述第 一访问是PIO访问,则比较来自下个相邻访问的数据 和来自所述第一访问的数据,以及检测来自所述第一访问的数据和来 自所述下个相邻访问的数据是否相等;如果所述第一访问是DMA,则比较来自所述下个相邻访问的描 述符信息和来自所述第一访问的数据。
18. 如权利要求17所述的方法,还包括,如果来自所述下个相 邻访问的描述符信息匹配所述第一访问的描述符信息,则比较来自所 述下个相邻访问的数据和来自所述第一访问的数据。
19. 如权利要求18所述的方法,还包括,如果来自所述第一访 问的描述符信息匹配来自所述下个相邻访问的描述符信息,则检测来 自所述第一访问的数据是否等于来自所述下个相邻访问的数据。
20. 如权利要求19所述的方法,还包括,如果所述第一访问的 描述符域和所述下个相邻访问的描述符域不匹配,则比较来自所述下 个相邻访问随后的访问的数据。
21. 如权利要求20所述的方法,还包括,如果来自所述笫一访问 的数据和来自所述下个相邻访问或来自所述下个相邻访问随后的访 问的数据不相等,则生成中断。
22. 如权利要求21所述的方法,其中所述第一访问和所述下个 相邻访问和所述下个相邻访问随后的访问是来自任一个或两个或更 多冗余虚拟才几(RVM)。
23. 如权利要求17所述的方法,还包括,如果来自所述第一访问 的数据和来自所述下个相邻访问的数据不相等,则生成中断。
24. 如权利要求22所述的方法,还包括,如果来自所述第一访问 的数据和来自所述下个相邻访问的或来自所述下个相邻访问随后的 访问的数据不相等,则生成中断。
25. —种处理器,包括由至少两个冗余虚拟机(RVM)表示的处理资源,其中对应从所述确定软错误是否已经发生。
26. 如权利要求25所述的处理器,其中所述访问对应对所述1/0 设备的编程的I/O CPIO)访问。
27. 如权利要求25所述的处理器,其中所述访问对应对所述1/0 设备的直接存储器访问(DMA)。
28. 如权利要求25所述的处理器,其中所述访问是读访问。
29. 如权利要求25所述的处理器,其中所述访问是写访问。
30. 如权利要求25所述的处理器,其中虚拟机管理器(VMM)要帮助处理所述软错误。
全文摘要
一种在计算机系统中检测错误的技术。更具体地,本发明的至少一个实施例涉及使用冗余虚拟机和比较逻辑以在计算机系统中检测发生在输入/输出(I/O)操作中的错误。
文档编号G06F11/00GK101449244SQ200780018483
公开日2009年6月3日 申请日期2007年5月16日 优先权日2006年5月22日
发明者S·穆克赫吉, S·赖因哈德特 申请人:英特尔公司