纠正软错误的固件机制的制作方法

文档序号:6577641阅读:154来源:国知局
专利名称:纠正软错误的固件机制的制作方法
技术领域
本发明涉及微处理器,尤其涉及能够以高可靠性模式操作的微处 理器。
背景技术
当a粒子或宇宙射线透过集成电路并更改存储在电路的电压波节 上的电荷之时会出现软错误。如果电荷改变足够大,表示一种逻辑状 态的电压就可能会被改变为表示不同逻辑状态的电压。例如表示逻辑 真状态的电压可能会被改变为表示逻辑假状态的电压,而且包含该逻 辑状态的任何数据都将遭到损坏。
伴随着半导体加工技术向着更小的尺寸和更低的操作电压发展, 集成电路,例如微处理器("处理器,,)的软错误率(SER)也增加了。 更小的工艺尺寸允许在处理器电路小片上实现更高的器件密度。这增 加了 a粒子或宇宙射线透过处理器电压波节中之一的可能性。更低的 操作电压意味着更小的电荷分裂就足以改变由节点电压表示的逻辑状 态。这两种趋势将来都指向了更高的SER。如果在任何已遭破坏的数据 被用来更新处理器的结构状态之前检测到软错误,它们就可以在处理 器中得到纠正。
处理器常常采用基于奇偶性的机制来检测由软错误产生的数据损 坏。当奇偶位被存储时它与各个数据块相关。这个奇偶位是根据数据 块中有奇数或偶数个1而被设置为1或0的。当数据块被从它的存储 单元读出时,将该块中1的个数与奇偶位进行比较。这两个值不同表 示数据块已经遭到了损坏。这两个值一致则表示或者未出现损坏或者 已有2 (或4…)位被改变。由于后者发生的概率很低,因而奇偶性给 数据是否已遭损坏提供了可靠的指示。纠错码(ECC)是跟踪每个数据
4块附加信息的基于奇偶性的机制。附加信息允许识别并纠正损坏位。
奇偶/ECC机制已经被广泛应用到了高速緩冲存储器、存储器和类 似的数据存储阵列。这些结构有相对较高的数据存储节点密度,而且 即使在当前的器件密度上对软错误也很敏感。它们的固定阵列结构使 得实现奇偶/ECC机制相对容易一些。处理器上其余的电路包括数据通 路、控制逻辑电路、执行逻辑电路和寄存器("执行核心")。这些电 路的不同结构和它们在处理器电路小片(processor die)上的分布使 得应用奇偶/ECC机制更为困难。
检测执行核心中的软错误的 一种方法是在双倍的执行核心上处理 指令并比较以逐指令地比较每个核心确定的结果("冗余执行")。 例如, 一个计算机系统包括两个单独的处理器,可以引导它们或以对 称多处理("SMP")模式或以功能冗余校验("FRC")模式运行。 以SMP模式,指令执行被分配到各个处理器之间以提供比单处理器系 统更高的整体性能。以FRC模式, 一个处理器正常地执行代码,第二 个处理器在与提供给第一个处理器相同的数据上执行相同的指令。如 果第二个处理器检测到在它的操作和第一个处理器的操作之间存在差 异,它就用信号通知产生了错误。只能通过重启计算机系统在SMP和 FRC之间切换操作模式。
双处理器方法成本较高(就硅而论)。另外,通过其进行结果比 较的处理器间信号传递太慢,以至于无法在损坏的数据更新处理器的 结构状态之前就检测到它。因此,这种方法不适于纠正检测到的软错 误。
另一种计算机系统在单个处理器芯片上使用双执行核心提供执行 冗余。两个执行核心以FRC模式操作,而且受ECC保护的校验点寄存 器存储处理器中间状态上的信息。当在一个代码段中检测到错误时, 处理器执行微代码程序以利用校验点寄存器来恢复处理器到最后未遭 破坏的处理器状态。随后控制返回到该代码段,并从遇到错误的指令 开始。错误恢复微代码程序存储在处理器芯片上,使它难以更新或修 改。另外,足够灵活以纠正大范围错误的程序势必相对复杂。这些程 序的微代码实现方式占据了处理器电路小片上的大量面积。
本发明解决了现有的高可靠性计算机系统的这些和其它不足。
发明概述本发明提供了用于在双执行核心处理器中恢复软错误的固件机 制,该双执行核心处理器能够以冗余模式和分离模式操作执行核心。
依据本发明的一种方法在处理器以冗余模式操作执行核心时检测 软错误。在每个执行核心上执行错误恢复程序以保存来自与该执行核 心相关的存储器结构的未损坏的数据。根据保存的数据恢复处理器状 态数据,并用处理器状态数据初始化第一和第二执行核心。
依据本发明的计算机系统包括一个双执行核心处理器和存储错误 恢复程序的非易失性存储器。当处理器在以冗余模式操作的同时检测 软错误时错误恢复程序被调用。该程序把处理器切换到分离模式,在 该模式下每个执行核心将其相关的存储器结构中的未损坏数据保存到 一个指定的存储单元。该程序依据所保存的数据恢复处理器状态数据。
附图概述
可以参考下列图来理解本发明,在这些图中同样的元件由同样的 数字来表示。提供这些图是为了举例说明本发明的所选实施方案,并 不意味着要限制本发明的范围。


图1是适于实现本发明的计算机系统的一种实施方案的框图。
图2A是图1中双执行核心处理器的一种实施方案的框图。 图2B是图2A中处理器的FET级的一种实施方案的框图。 图2C是图2A中处理器的校验单元的一种实施方案的框图。 图3是说明依照本发明用于从软错误恢复的方法的一种实施方案 的流程图。
图4是说明由执行核心执行的错误恢复程序的一种实施方案的流 程图。
图5A和5B是说明为软错误恢复协调所保存的数据的不同机制的 实施方案的框图。
图6是说明图5A的数据协调机制的一种实施方案的流程图。
图7是当双核心处理器以分离模式操作时提供集群级冗余的执行 核心的一种实施方案的框图。
发明详述
下面的论述阐明了大量特定的细节以提供对本发明的彻底理解。 然而,从本公开内容受益的本领域的普通技术人员将意识到可以在没 有这些特定细节的情况下实践本发明。另外,为了把注意力集中在本发明的特性上,对多种众所周知的方法、程序、部件和电路没有进行 详细描述。
本发明提供了一种在双核心处理器中纠正软错误的灵活方法,该 双核心处理器可以在冗余模式和分离模式之间动态切换。在冗余模式
下,处理器执行相同的代码段上以锁定步骤(in lock step)操作执 行核心并比较结果以识别错误。在分离模式下,执行核心可以独立处 理指令,例如,执行核心在给定的时钟周期内可以操作在不同的指令 上。
对本发明的一种实施方案来说,冗余模式可以是高可靠性(HR) 处理器执行模式,这种模式减少了执行临界代码段时发生软错误的风 险。分离模式可以是高性能(HP)处理器执行模式,该可以通过增加 所选代码可用的执行资源来更快地处理所选代码。分离模式也可以只 用于所选择的目的,例如错误恢复或加速(boostrapping)处理器。 分离模式的重要特征是它允许执行核心"独立"操作,即每个执行核 心在给定的时钟周期上可执行不同的指令。
依照本发明,错误恢复程序存储在非易失性存储器中。当以冗余 模式实现一个程序线程的处理器检测到软错误时访问恢复程序。可以 通过两个执行核心中结果之间的差异指示错误。该程序把处理器切换 到分离模式,该模式下每个执行核心在它的相关存储单元检查损坏的 数据。把未损坏的数据复制到指定的存储单元并从未损坏的数据恢复 出足够的处理器状态数据以继续被中断的程序线程。恢复程序用已恢 复的处理器状态数据初始化执行核心。
对本发明的一种实施方案来说,与每个执行核心相关的不同资源 是受奇偶保护的,并且恢复程序执行奇偶校验以识别执行核心中任何 遭到破坏的数据。举例来说受奇偶保护的资源可以包括通用寄存器、 浮点寄存器、控制和状态寄存器、低级高速緩冲存储器等。通常,用 来存储处理器状态数据的任何结构都可以受奇偶保护。保护范围取决 于系统的可靠性需求。
对本发明的另 一种实施方案来说,错误恢复程序识别并存储来自 一个或两个执行核心的未遭破坏的数据到指定的存储单元。用从保存 的数据恢复出的处理器状态数据初始化执行核心。例如,可以用从没 有经历软错误的执行核心保存的处理器状态数据初始化两个执行核
7心。或者,可以把来自各个执行核心的未遭破坏的数据保存到不同的 存储单元,来自一个存储单元的数据可用来代替其它存储单元中的已 遭破坏的数据。这种替代方法用来自每个处理器的指定存储单元的处 理器状态数据副本初始化各个执行核心。通过维护处理器状态数据的 单独的集合,这种替代方法减少了初始化过程中产生的软错误在检测 中被遗漏的风险。在识别并协调分离模式下来自执行核心的已保存的 处理器状态数据之后,错误恢复程序为返回到冗余模式而同步执行核 心。
对本发明的另一种实施方案来说,处理器可以被配置用来在分离 模式下的各个执行核心中保持一定级别的冗余。例如,可以为分离模 式操作而把每个执行核心的执行资源在逻辑上组织成冗余执行集群。 当处理器处于分离模式时执行集群在相同的指令上以锁定步骤执行, 可以比较来自冗余集群的结果以检测单个执行核心中的软错误。
图1是依照本发明的计算机系统ioo的一种实施方案的块级图示。
计算机系统100包括处理器102、非易失性存储器1(M、动态存储器106 和系统逻辑108 系统逻辑108在处理器102、非易失性存储器104和 动态存储器106之间传递通信。错误恢复程序190存储在非易失性存 储器104中,虽然程序190的一些部分也可以被复制(映像)到动态 存储器106中。
处理器102公开的实施方案包括第一执行核心110 (a)、第二执 行核心110 (b)、对应的核心状态寄存器(CSR) 120 (a)和120 (b) 以及校验单元130。每个CSR120 ( a ) 、 120 ( b )分别包括一个核心状 态位(CSB) 124 (a) 、 124 (b)。还显示出了向处理器102传入和传 出数据/指令的总线接口 140。每个执行核心110(a) 、 110 (b)包括 取指令、译码、执行并退出指令的资源。在下面的论述中,除非对特 定的执行核心110予以说明,否则对执行核心110 (a) 、 110(b)的 引用都不加索引。对CSR120、 CSB124的引用以及在执行核心110中重
复的任意其它资源也同样处理。
在冗余模式下,执行核心110以锁定步骤执行来自一个代码段的 相同指令,并由校验单元130比较结果以检测任一执行核心110中的 错误。在分离模式下,执行核心IIO "独立,,操作。也就是说,每个执 行核心可以执行来自一个或多个代码段的不同指令。如上所述,分离模式可以为所选择的程序提供可编程高性能模式,因为处理器中可用 的执行资源在分离模式下被有效地加倍。
分离模式下执行核心110之间的独立级别随处理器102的不同实 施方案有所变化。对一种实施方案来说,在分离模式时处理器102可 以作为实现在一个单独的处理器芯片上的SMP系统操作。这种情况下, 每个执行核心110作为一个独立的处理器操作,只共享处理器电路小 片和存储器系统的特定部件。处理器102的这种实施方案对需要高性 能处理器的代码尤其有用。处理器102的另一种实施方案可以通过提 供适当通道以共享处理器状态信息或执行核心资源而支持在分离模式 下的执行核心110之间一定程度的耦合。
可以在硬件、软件或固件控制下面实现在冗余和分离模式之间的 切换。对软件和固件控制的切换来说,可以通过正在执行的不同程序 线程、操作系统(0S)调度程序、中断处理器、固件程序或类似的源 来提供模式切换指令。对硬件控制的切换来说,可以响应检测到的状 态,例如,特定指令类型的执行、不同执行核心中结果之间差异的检 测或者该差异的分辨率,来触发切换。
对本发明的一种实施方案来说,CSB124 (a)和124 (b)分别指示 执行核心110 (a)和110 (b)的状态,且CSB124 (a)和124 (b) — 起指示处理器102的操作模式。处理器的执行模式作为一个整体可以 通过一个单独的处理器状态位(PSB) 128来进行跟踪,由图1中的虚 线框表示。对于一种实施方案来说,当处理器102将以冗余模式操作 时,CSB 124被设置成第一个值,例如l,当处理器102将以分离模式 操作时,CSB 124被设置成第二个值,例如0。当模式切换指令触发冗 余模式和分离模式之间的切换时CSB 124会被调整。处理器102中的 不同资源根据它的执行模式更改它们的操作。对处理器102的公开实 施方案来说,指令获取、指令退出和结果校验是以冗余和分离模式做 不同处理的,而且对应的资源才艮据CSB 124 (或PSB 128)的状态调整 它们的操作。
在题为 "Microprocessor With High Reliability Operating Mode",且与本案同一日期提交的美国专利申请序列号09/470, 098 中公开了有双执行模式的处理器102的一种实施方案。
图2A更详细地说明了处理器102的一种实施方案。对该公开的实施方案来说,每个执行核心110被描述成指令执行流水线中的一系列 级。每一级对应于由执行核心110实现用来执行它们的指令的一个或
多个操作.或者,可以把流水级理解为代表执行所示操作的逻辑电路。
指令和数据从存储器系统270提供给执行核心110。存储器系统270 代表动态存储器106和任意介于中间的高速緩冲存储器。例如,高速 缓冲存储器280代表存储器系统270的一部分,来自执行过的指令的 结果被写入其中。高速緩冲存储器280可以位于和处理器102相同的 芯片上或者位于一个单独的芯片上。
对处理器102的公开的实施方案来说,每个执行核心110被划分 为取出(FET)级210、译码(DEC)级220、寄存器(REG )级2 30、执 行(EXE)级240、检测(DET)级250和退出(RET)级260。在FET 级210中从存储器系统270取出一个或多个指令。在DEC级220中把 取出的指令译码成微操作,并在REG级230中取出由微操作规定的源 操作数。在EXE级240中在取出的操作数上执行微操作,并在DET级 250中用信号通知由微操作产生的任何异常。如果没有检测到异常就在 RET级260中退出微操作。对该公开的实施方案来说,来自已退出的微 操作的结果通过退出通道264被写入高速緩冲存储器280中。
在这个论述中,指令、指令束和宏指令被交替用作微操作和指令 字节。后者指由处理器的执行单元识别出的指令。前者指提供给处理 器的形式的指令。对一些实施方案来说,在这些实体之间可以有很小 的差别或没有。
处理器102的实施方案可以包括緩冲区以从后端级(DEC、 REG、 EXE、 DET和RET,或REG、 EXE、 DET和RET )去耦合前端级(FET或FET 和DEC)。该缓冲区临时存储取出(或者取出并经译码)的指令。这使 得前端操作即使在后端操作被停止或延迟时也能继续。如果前端操作 被延迟它还允许后端操作继续进行。处理器102的一种实施方案采用 了去耦緩冲区来纠正在冗余模式下检测到的错误。
本发明不需要把处理器102分成一组特定的流水级。例如,可以 把一个已公开的级再分成两个或更多级以解决定时问题或促进更高的 处理器时钟速度。或者,可以把两个或更多级组合成一个单一级。其 它实施方案可以采用或不采用去耦緩冲区。其它实施方案仍然可包括 用于处理指令无序的硬件。公开的流水线只提供了一个如何在处理器中划分操作的实例以配合本发明的应用。
还为每个执行核心110显示了状态/控制(S/C)寄存器234、数据 寄存器238和数据高速緩冲存储器244。 S/C寄存器234存储管理执行 核心110的操作的信息。例如,S/C寄存器234通常包括CSR120 (和 CSB124)。数据寄存器238存储由执行核心110中不同资源所用的操 作数,数据高速緩冲存储器244在存储器系统270和执行核心中的其 它资源之间緩存操作数。根据定时约束,数据高速緩冲存储器244可 以向数据寄存器238、 EXE级240中的执行资源、或者向这两者提供操 作数。对本发明的一种实施方案来说,每个执行核心110为S/C寄存 器234、数据寄存器238和高速緩冲存储器244提供一定形式的奇偶保 护。
当处理器102处在冗余模式下时执行核心110 (a)和110 (b)被 同步以锁定步骤在相同指令上操作。在分离模式下,执行核心110(a) 和110 (b)可以在不同的指令上独立操作。如上所述,处理器102的 不同实施方案在分离模式可以支持执行核心110 (a)和110 (b)之间 不同级别的协调合作,如图2A中的虚线箭头所示。例如,如果处理器 102作为一个单独芯片SMP系统以分离模式操作,执行核心110 (a) 和110 (b)之间的合作需要主要在模式切换期间出现。对处理器102 的其它实施方案来说,执行核心110 (a)和110 (b)可以处理紧密耦 合的进程。这些实施方案支持对S/C寄存器234 (a)和234 (b)、数 据寄存器238 (a)和238 (b)、以及数据高速緩冲存储器( a )和 244 (b)之间的数据的一些共享,以及不同流水级之间的操作的一些 合作。
图2B显示了适于在冗余模式和分离模式下分别向执行核心110 (a) 、 110 (b)提供指令的FET级210 ( a )和210 ( b )的一种实施 方案。每个FET级210包括指令指针(IP)选择复用器212和耦合到 DEC级220的指令高速緩冲存储器214。 S/C寄存器234包括IP寄存 器236,它可以由软件进行初始化以指示将要执行的下一条指令。另外, FET级210(b)包括在高速緩冲存储器214(b)的输出上的复用器216。 复用器216由CSB 124通过与门218控制。对本发明的一种实施方案 来说,指令高速緩冲存储器214可以由像ECC这样基于奇偶性的机制 来保护。复用器212在它的数据输入上从包括IP寄存器236在内的多个来 源接收IP。响应它的控制输入上的信号,复用器212选择一个IP来指 示将要从高速緩沖存储器214取出的下一条指令。在分离模式下,CSB 124被设置为0而且复用器216传输由指令高速緩沖存储器214 (b) 提供的指令。在这种模式下,IP寄存器236 (a)和236 (b)被独立地 进行初始化和更新,高速緩沖存储器214 ( a )和214 ( b )分别提供对 应的指令给DEC级220 (a)和220 (b)。在冗余才莫式下,CSB 124被 设置为1,复用器216从高速缓沖存储器214 (a)提供指令给DEC级 220 (b)。
FET级210的一种替代实施方案不使用复用器216。而是为冗余模 式而把IP寄存器236 (a) 、 236 (b)和高速緩冲存储器214 (a)、 214 (b)初始化成相同状态,并且FET级210,包括高速緩冲存储器 214,均以锁定步骤操作。处理器设计领域的以及从本公开内容获益的 技术人员将认识到可以根据处理器102操作的执行模式使用FET级210 的其它变体来为执行核心110实现独立的和锁定步骤的指令取出。 ;
图2C是说明依照本发明的校验单元130的一种实施方案框图。校 验单元130的公开的实施方案包括"n"个比较器290 ( 1 ) -MO (n)、 或门294和与门298。为执行核心110中的每个执行单元提供一个比较 器290。例如,处理器102的一种实施方案可以在每个执行核心110 的EXE级中包括整数执行单元(IEU)、浮点执行单元(FPU)、存储 器执行单元(MEU)和分支执行单元BRU。对这个实施方案来说,校验 单元130包括4个比较器290。比较器290 ( 1 ) 、 290 ( 2 ) 、 290 ( 3 ) 和290 ( 4 )分别监控来自执行核心110 (a)和110 (b)的IEU、 FPU、 MEU和BRU的输出。
对校验单元130公开的实施方案来说,当施加到它的输入上的执 行结果匹配时每个比较器290产生一个逻辑值0,当执行结果不匹配时 产生逻辑值1。对校验单元130的一种实施方案来说,比较器290是自 校验比较器。当任意一个比较器290指示出的与它对应的执行结果不 匹配时或门294产生逻辑值1。当与门298被使能时或门294的输出充 当ERROR信号。对该公开的实施方案来说,当CSB 124都被设置为1, 即处理器102在冗余模式下时这才会发生。
处理器设计领域的以及从本公开内容获益的技术人员将认识到当处理器在冗余模式下时可以激活校验单元l30的其它变体来监控执行
核心110中的结果。
当在冗余模式下检测出偏差时,本发明提供了一个可以独立实现 或与基于硬件和软件的恢复机制结合在 一起的基于固件的恢复机制, 以把处理器恢复到无错状态。作为本发明目标的软错误通常不会在两
个执行核心110中同时发生。由校验单元130检测到的执行结果之间 的差异通常是由执行核心110之一的电路中的软错误而产生的。像寄 存器文件、高速緩沖存储器、锁存器以及类似的这些存储器结构尤其 易于发生这些错误。这些结构存储代表指令流水线的不同点上的操作 数值、指令或者微操作的电压电平。当在由执行核心产生的结果之间 检测到差异时本发明提供了一种恢复完整性到以冗余模式操作的处理 器的执行核心的机制。
根据本发明的一种实施方案,当在冗余模式下的处理器的两个执 行核心产生的结果之间检测到差异时会访问基于固件的恢复程序。错 误恢复程序切换处理器到分离模式,在该模式下每个执行核心检查来
的存储单元。^误恢复程序用未遭破坏的数据初始化执行核心并返回 控制到被中断的程序线程。对本发明的一种实施方案来说,所检查的 执行资源是受奇偶保护的存储器结构。从未遭破坏的数据恢复出足够 的处理器状态数据来初始化两个执行核心以使中断的程序线程得以继 续处理。
使用基于固件的恢复程序使处理器能够实现更复杂的恢复机制。 这些机制比通过微代码或基于硬件的恢复机制能够解决更多种类的错 误,后两种恢复机制均受限于它们对电路小片面积的影响。可以更方
中的改进。另外,在必要时基于固件的恢复机制能够通知诸如系统级 固件或操作系统的更高级的系统采取适当动作。
对本发明的一种实施方案来说,可以通过机器校验(MC)访问错 误恢复程序。当检测到差异时MC被校验单元130触发。或者,处理器 可以先试图通过硬件恢复机制解决偏差并只在硬件机制失败时触发错 误恢复程序。例如,硬件恢复机制包括重新控制(resteering)执行 核心或执行核心的一些部分从检测到差异时的指令开始重新执行指令流。
图3是说明依照本发明用于纠正软错误的方法300的流程图。当 处理器以冗余模式操作并检测到错误310时方法300被启动。错误可 以由第一和第二个执行核心产生的结果之间的差异来指示。当检测到 错误时310,处理器跳转到错误恢复程序(ERR) 320。例如,这可以通 过触发MC并通过相关向量表控制处理器到ERR来完成。
ERR把处理器从冗余模式(RM)切换到分离模式(SM) 330。对方 法300的一种实施方案来说,每个执行核心以分离模式操作以从受奇 偶保护的存储器结构把未遭破坏的数据保存到指定的存储单元340。可 以通过扫描受奇偶保护的资源中的数据检查奇偶错误或者通过把数据 从这些资源复制到一个存储单元并扫描复制来的数据以检查奇偶错误 来识别未受损坏的数据。当两个执行核心都完成了它们的数据保存时 350,对所保存的数据进行协调360以提供未遭破坏的一组处理器状态 数据。对方法300的另一种实施方案来说,只有在它的存储结构中识 别出没有遭破坏的数据的执行核心才把它的数据保存到指定的存储单 元340。处理器被返回到冗余模式370,用恢复出的处理器状态数据初 始化执行核心380,并继续中断的进程线程的执行380。
对本发明的一种实施方案来说,处理器102在软件控制下切换于 冗余和分离模式之间,例如通过模式切换指令。对本发明的另一种实 施方案来说,处理器102可通过硬件机制进行切换。
在检测到差异前,处理器工作于冗余模式而且执行核心以锁定步 骤进行操作。当检测到差异时,错误恢复程序可以通过给每个执行核 心提供"切换到分离模式,,指令(SW-SM)来实现模式切换。在冗余模 式下,这些指令被以锁定步骤沿着两个执行核心的流水线级分级,当 它们退出时切换处理器到分离模式。因而不需要在切换到分离模式时 同步执行核心。 一旦处理器处于分离模式下,每个执行核心可以独立 地执行ERR的数据恢复操作。
当执行核心完成了它的数据恢复操作时,处理器从分离模式转回 到冗余模式以继续中断的程序线程。对本发明的一种实施方案来说, 这种切换可以通过在每个执行核心中执行"切换到冗余模式"指令 (SW-RM)分级地实现。把切换分级能够适应执行核心完成它们的数据 保存操作时在时间上的差别。
14对该公开的实施方案来说,SW—RM在第一级把一个执行核心切换到 "就绪状态",例如CSB (b) 124=1。在第二级,SW—RM指令把另一个 执行核心切换到"就绪状态",例如CSB(a)-l。当两个执行核心都 到达就绪状态,例如PSB^SB (a) &CSB (b)时,处理器返回到冗余模 式。第一和第二级可以完全重合(同时切换)、部分重合或完全不重 合(顺序切换),取决于用来调度模式切换指令的算法。
就绪状态允许在处理器从分离模式切换到冗余模式之前同步执行 核心。对本发明的其它实施方案来说,可以通过硬件机制实现同步。 例如,当检测到程序结束条件时第 一个执行核心可以转换到就绪状态, 且当第一个执行核心完成它的转换时第二个执行核心可以转换到就绪 状态。和用软件控制的模式切换一样,就绪状态允许执行核心在处理 器被切换回冗余模式之前会合。
图4说明了由执行核心实现用来保存未损坏数据的方法400的一 种实施方案。例如,方法400可以代表在切换到分离模式之后由执行 核心实现的ERR的一部分。如上所述,可以通过机器校验来到达ERR, 机器校验通过相关的向量表把处理器的控制传递到ERR。 ERR从冗余模 式切换处理器到分离模式,这允许每个执行核心独立地访问并实现数 据校验和由图4所说明的恢复程序。
根据该公开的方法,非临界存储器结构被刷新410。非临界存储器 结构包括诸如高速緩沖存储器、寄存器和不存储结构状态数据的存储 器结构。这些存储器结构通常是不受奇偶保护的。根据处理器实施方 案,这些设备可以包括LO指令和数据高速緩冲存储器、分支目标緩冲 区、高级装载跟踪表等等。
检查数据寄存器文件的内容以查找奇偶错误"0。如果没有发现奇 偶错误430,就把数据寄存器文件的内容复制到一个指定的存储单元 440。如上所述,这可以是与另一个执行核心共享的存储单元或者为特 定的执行核心保留的存储单元。如果发现了奇偶错误430,就不从数据 寄存器文件复制任何数据。换句话说,只有未损坏的数据才从数据寄 存器文件中得到复制。
还校验450C/S寄存器文件以查找奇偶错误。这些包括例如上述核 心状态寄存器、存储有关当前线程信息的不同寄存器以及任意翻译后援緩冲区(TLB)中的翻译寄存器。如果在C/S寄存器文件中没有发现 任何奇偶错误460,就把C/S寄存器文件的内容复制到指定的存储单元 470。如果发现了奇偶错误,就不从C/S寄存器文件复制任何数据。换 句话说,只有未损坏的数据才从C/S寄存器文件中得到复制。
处理器的实施方案可以用固件为所选的高速緩冲存储器实现错误 纠正代码(ECC)。这消除了对处理器中ECC纠错硬件的需要,虽然高 速緩沖存储器仍然存储ECC位。对这些实施方案来说,可以通过ERR 纠正1和2位的错误480。如果用硬件实现ECC就绕过块480。 一旦纠 正了所有检测到的错误,执行核心就跳转到等待状态490。
一旦各个执行核心都已经执行了方法400,指定的存储单元就只包 含未损坏的数据。软错误的统计特性的一个结论是相同的数据块同时 在两个执行核心中被破坏的可能性很小。因此,数据保存过程提供了 足够的未遭损坏的处理器状态数据来初始化执行核心并重新开始中断 的程序线程。
本发明不需要以任何特定的顺序刷新或校验存储器结构。例如, 可以在C/S寄存器文件之后检查数据寄存器文件并在该过程中任何方 便的时间刷新非临界文件。上面所指出的顺序只用于说明目的。
除了保存未遭破坏的数据到指定的存储单元之外,ERR还提供了 一 种机制来协调所保存的数据并将足够的未损坏的处理器状态数据提併 给每个执行核心以再继续中断的程序线程。
图5A是说明用于协调由双执行核心处理器中的每个执行核心保存 的数据的一种机制的框图。执行核心110 (b)实现ERR以复制(1)它 的未损坏的数据到存储器系统500中一个指定的单元510 (b)。执行 核心110 (a)实现ERR以复制(2)它的未损坏的数据到一个指定的存 储单元510(a)。对所示范的机制来说,执行核心110 (b)的存储器 结构中的软错误给单元510 (b)留下了一个不完全的处理器状态数据 集。没有遇到奇偶错误的执行核心110 (a)复制(2) 了一个完整的处 理器状态数据集到单元510(a)。这里,"完整"指足以使处理器102 重新开始执行中断的程序线程的处理器状态数据的子集。可以在执行 核心110 (b)复制(1)它的未遭破坏的数据到存储单元510 (b)的 同时跟踪执行核心110 (b)的存储器结构中遭到破坏的数据,以维持需要被更新的数据记录。
在数据保存操作(1) 、 (2)之后,执行核心110 (b)实现ERR 以从单元510 (a)复制(3)未损坏的数据到单元510 (b)。这为重 新初始化处理器102的执行核心提供了第二个处理器状态数据的完整 集合。例如,当执行核心110 (b)确定执行核心110 (a)已经完成了 它的复制操作时,它可以只把对于它的相关存储器结构中遭到破坏的 数据相对应的数据块把数据从单元510 (a)复制到单元510 (b)。这 个数据协调机制在存储器500中提供了两组处理器状态数据,随后可 分别用它们来初始化(4)和(5)执行核心110 (a)和110 (b)。初 始化(4)和(5)可以由各个执行核心110在分离模式下分别独立完 成或者在冗余模式由执行核心并发完成。
除了 ERR中从存储单元510 (a)复制(3)未损坏的数据到存储单 元510 (b)的那部分之外,该公开的数据协调机制通过冗余操作继续 进行。数据由各个执行核心校验、保存到存储器并写回到存储器结构。 这减少了在恢复期间一组处理器状态数据中产生的软错误将破坏两个 执行核心的可能性。
图6是说明图5A的数据协调机制的流程图。例如,这对应于图4 的模块490。实现ERR的数据协调部分的处理器确定610另一个执行核 心是否已经完成了它的数据保存操作。当这些操作完成时,该执行核 心确定620它是否需要更新它的保存数据。
对方法600的一种实施方案来说,在它的存储器结构中检测到损 坏数据的执行核心用来自另 一个执行核心的存储单元的对应数据更新 630它的保存数据。例如,该执行核心可以存储在它的保存操作期间似 乎遭到破坏的数据块的指示。这个执行核心然后可以用这些指示从另 一个执行核心的指定存储单元中的适当存储器地址中取出该数据的未 损坏的版本。没有检测到任何损坏数据的执行核心等待另 一个执行核 心完成640它的更新630。当两个执行核心都到达等待状态640时,处 理器返回650到冗余模式并用协调过的数据初始化660执行核心。方 法600的一种替代实施方案可以分离模式初始化执行核心然后返回到 冗余模式。
图5B说明了数据协调的一种替代机制。对这种机制来说,两个执 行核心110 (a) 、 110 (b)分别把它们未损坏的数据写入(1)和(2)到相同存储单元520中的对应存储器地址中。对该机制的一种实施方 案来说,只有数据没遭到破坏的的执行核心才能把所有它的处理器状 态数据写入到存储单元520。在自己的存储器结构中检测到损坏数据的 执行核心不把损坏的数据复制到存储单元520。
图5B中的机制的另一种实施方案可以从在其相关存储器结构中没 有检测到损坏数据的执行核心写数据并跳过另 一个执行核心,即包含 有损坏数据的执行核心的保存步骤。无论哪种情况,复制到单元520 的处理器状态数据都是完整的,并且都能够被分别写回(3)和(4) 到执行核心110 (a)和110 (b)以重新初始化它们从而恢复中断的程 序线程。因为在图5B的数据协调机制中只维护了一个处理器状态数据 集,在数据恢复期间这个数据集中的软错误不能通过筒单的结果比较 就检测出来。
对本发明的上述实施方案来说,错误恢复是由处理器以分离模式 实现以允许各个执行核心独立地识别出它的相关存储器结构中的任何 错误。当冗余执行不能用来检测软错误时,在这些错误恢复操作期间 也有可能发生软错误。对高可靠性系统来说,即使软错误的这个有限 的弱点也有可能过大。
对本发明的一种实施方案来说,可以配置每个执行核心的执行资 源以在分离模式操作期间作为两个或更多逻辑集群并行操作。在各个 执行核心独立实现ERR的同时,每个执行核心中逻辑定义的执行集群 冗余地实现来自ERR的指令。对这个实施方案来说,来自ERR的指令 在每个执行核心内部重复执行并被导向不同的执行集群。可以比较由 不同的执行集群产生的结果以确定在处理ERR指令的同时是否有软错 误出现。
图7是包括该内部冗余特性的执行核心710的一种实施方案的框 图。该执行核心710的公开实施方案包括一个指令高速緩冲存储器 (I-cache) 714、译码或分散单元720、寄存器文件730、分别包括第 一和第二执行集群740( a )和740( b)、校验单元760和退出单元770。 在下面的论述中,除非为了避免多义性的必要之外,对执行集群740 (a)和740 (b)的引用均不加索引。对执行核心710中有副本的其它 资源,例如构成执行集群740的执行单元,也做相同处理。
对该公开的实施方案来说,每个执行集群740包括分支执行单元
18(BRU) 752,整数执行单元(IEU) 754,存储管理(装载/存储)单元 (固U) 756和浮点单元(FPU) 758 (—般也称"执行单元")。执行 核心710的不同实施方案在不偏离本发明的范围的情况下可以包括不 同类型和数量的执行单元。例如,Intel公司的Merced处理器采用的 分支执行单元包括三个独立的分支执行单元。执行集群"0被独立显 示以说明在分离模式下它们的逻辑组织,并非为了反映不同执行资源 之间的实际分离。
执行核心710的其它实施方案可以不重复所有的执行单元750或 者不重复指令到特定的执行单元。例如,分支执行单元需要大量的处 理器资源支持,而且不重复BRU 752可以节省可观的电路小片面积。 这由图7中BRU 752 (b)周围的虚线框表示。这种情况下,分支指令 或者不被冗余执行,或者可以采用替代机制来检查它们的执行。例如, 分支指令可重复并串行执行。同样,重复装载和存储指令可以使HR模 式下到存储器系统的带宽饱和。这种情况下,可以实现多个固U 7% 来满足一个指令束中多个装载和/或存储操作的存在,但在HR模式下 单个的装载/存储操作并不被重复这些指令。在不偏离本发明的精神的 情况下也可以对其它执行单元750和指令类型可采用类似的装置。
I-cache714提供指令给译码单元720,译码单元720通过寄存器 文件730把指令导向适当的执行单元。寄存器文件730包括数据寄存 器文件732、控制/状态(C/S)寄存器734和寄存器重命名单元738。 数据寄存器文件提供对例如由执行单元750操纵的整数和浮点操作数 的临时存储。重命名单元738把微操作中指定的虚拟寄存器标识符映 射到寄存器文件730中的物理寄存器。
C/S寄存器734存储控制执行核心710的操作模式和不同执行资源 状态的信息。对执行核心710的一种实施方案来说,当处理器处于分 离模式时分发单元720提供相同的指令给执行集群740(a)和740(b)。 例如,分发单元720提供来自一条指令的微操作(或来自相同指令的 微操作)给执行集群740 (a)和740 (b)中适当的执行单元。由校验 单元760比较执行集群740 ( a )和740 ( b )产生的结果,如果执行结 果不同就指示发生了错误。在冗余模式下,可以独立控制执行集群740 (a)和740 (b)以处理不同的指令,并通过在另一个执行核心上执行 相同的指令来提供冗余。当处理器以分离模式操作时执行核心710提供执行集群-级冗余以保护处理器不发生软错误。在题为
"Microprocessor With High Reliability Operating Mode ,,, 并 且与本案同一日期提交的美国专利申请序列号09/470, 098,中详细论 述了包括执行核心710的处理器的一种实施方案。
因而已经公开了用于在双核心处理器中纠正软错误的基于固件的 机制,该处理器可以在冗余执行模式和分离执行模式之间进行切换。 当在以冗余模式执行的程序线程中检测到错误时,处理器切换到分离 模式。在分离模式下,执行核心在它的存储器结构中识别出未遭损坏 的处理器状态数据并把该未遭损坏数据复制到一个指定的存储单元。 协调未遭损坏的数据以提供足够的处理器状态数据来恢复中断的程序 线程的执行。处理器返回到冗余执行模式,用处理器状态数据初始化 执行核心,并恢复中断的程序线程。可以通过模式切换指令实现冗余 模式和分离模式之间的切换。
已经提供了该公开的实施方案来说明本发明的不同特性。从本公 开内容获益的处理器设计领域的技术人员将认识到公开的实施方案的 变体和改进依然属于所附权利要求的精神和范围之中。
权利要求
1.一种处理器,包括第一和第二执行核心,当处理器处于分离模式时该第一和第二执行核心独立地处理指令,当处理器处于冗余模式时该第一和第二执行核心以锁定步骤处理相同的指令;校验单元,当处理器处于冗余模式时校验单元比较来自第一和第二执行核心的结果,在该第一和第二执行核心处于冗余模式时当校验单元检测错误该第一和第二执行核心转换到分离模式,该第一和第二执行核心用校验单元检测到该错误后识别出的未损坏处理器状态数据初始化。
2. 权利要求1的处理器,其中当处理器进入分离模式时,在与每 个执行核心相关的选中的存储器结构中识别出该未损坏的处理器状态 数据,复制未损坏的处理器状态数据到指定的存储单元,并协调所复 制的处理器状态数据。
3. 权利要求2的处理器,其中该第一和第二执行核心在会合状态 被同步并被恢复到冗余模式。
4. 权利要求1的处理器,其中该处理器是在包括主存储器的计算 机系统中并且处理器状态数据被保存到主存储器的不可高速緩存的部 分。
5. —种处理器,包括第一和第二执行核心,该第一和第二执行核心当处于冗余模式时 以锁定步骤工作而当处于分离模式时独立地工作,当在处于冗余模式 检测到错误时该第一和第二执行核心转换到分离模式,该第一和第二 执行核心用从未损坏处理器状态数据恢复的一组处理器状态数据在冗 余模式被恢复。
6. 权利要求5的处理器,其中该笫一和第二执行核心通过模式转 换指令转换到分离模式。
7. 权利要求6的处理器,其中在转换到分离模式之后,每个执行 核心独立地执行一部分错误恢复程序以识别并保存与其存储器结构相 关的未损坏处理器数据到指定的存储器单元。
8. 权利要求7的处理器,其中执行核心之一用来自另一个执行核 心的指定存储单元的所保存的处理器状态数据更新其存储器结构中的已损坏的数据。
9. 权利要求8的处理器,其中错误恢复例行程序通过模式转换指 令恢复处理器到冗余模式。
10. —种处理器,包括第一和第二执行核心,该第一和第二执行核心当处理器处于冗余执行模式时以锁定步骤工作而当处理器处于分离执行模式时独立地工 作;以及校验装置,使得当处理器在处于冗余执行模式时开始从软错误恢 复的方法,用于实现该方法的装置包括用于转换处理器到分离执行模式的装置;用于保存来自每个执行核心的未损坏的处理器状态数据到指定的 存储单元的装置;从所保存的未损坏的处理器状态数据恢复处理器状态数据的最小 集的装置;以及用于用该处理器状态数据的最小集初始化每个执行核心的装置。
11. 权利要求10的处理器,其中用于恢复处理器状态数据的最小 集的装置包括用从执行核心之一中保存的未损坏的处理器状态数据代 替来自另一个执行核心的已损坏的处理器状态数据的装置。
12. 权利要求11的处理器,其中用于初始化每个执行核心的装置包括用于转换处理器到冗余执行模式的装置;以及 用于将来自指定的存储单元的处理器状态数据复制到它们的相关 执行核心的装置。
全文摘要
本发明涉及纠正软错误的固件机。本发明提供一种计算机系统,包括有双执行核心的处理器和存储错误恢复程序的非易失性存储器。当处理器处于冗余执行模式时处理器的执行核心以锁定步骤操作,当处理器处于分离执行模式时它们独立地操作。当处理器在以冗余执行模式执行的同时检测到软错误时错误恢复程序被调用。错误恢复程序切换处理器到分离执行模式。在分离模式下,每个执行核心保存未损坏的处理器状态数据到指定的存储单元并用来自另一个执行核心的相应的处理器状态数据更新任何已损坏的数据。错误恢复程序返回处理器到冗余模式,用恢复的处理器状态数据初始化每个执行核心,并返回处理器的控制到检测到软错误时正在执行的程序线程。
文档编号G06F11/16GK101539875SQ20091013251
公开日2009年9月23日 申请日期2000年10月4日 优先权日1999年12月21日
发明者N·T·夸克 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1