CN101416163B - 通过选择重新执行来检测瞬态错误 - Google Patents

通过选择重新执行来检测瞬态错误 Download PDF

Info

Publication number
CN101416163B
CN101416163B CN2006800541415A CN200680054141A CN101416163B CN 101416163 B CN101416163 B CN 101416163B CN 2006800541415 A CN2006800541415 A CN 2006800541415A CN 200680054141 A CN200680054141 A CN 200680054141A CN 101416163 B CN101416163 B CN 101416163B
Authority
CN
China
Prior art keywords
instruction
processor
fragility
described instruction
execute
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
CN2006800541415A
Other languages
English (en)
Other versions
CN101416163A (zh
Inventor
X·贝拉
O·埃尔京
O·昂萨尔
J·阿韦拉
A·冈萨雷斯
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 CN101416163A publication Critical patent/CN101416163A/zh
Application granted granted Critical
Publication of CN101416163B publication Critical patent/CN101416163B/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1497Details of time redundant execution on a single processing unit
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)
  • Retry When Errors Occur (AREA)

Abstract

在一个实施例中,本发明包括一种方法,用来确定一条由处理器执行的指令的脆弱性程度或等级,并若该脆弱性等级超出某一阈值,用来重新执行该指令。该脆弱性等级可以对应于该指令在处于处理器内时出现逻辑错误的几率。描述了其他实施例并提出了权利要求。

Description

通过选择重新执行来检测瞬态错误
技术领域
本发明的一些实施例涉及半导体器件中错误的检测,更具体地说,涉及处理器中错误的检测。
背景技术
瞬态错误经常称为逻辑错误,构成处理器中不断增长的错误来源。
由于器件尺寸的缩小和工作电压的降低,这些器件更容易受到宇宙粒子的撞击和参数变化的伤害。这样的事件可能使瞬态错误发生,后者随机发生而且可能影响处理器所实现的执行。随着各代半导体生产工艺的发展,对逻辑错误越加敏感。
人们已经采用某些机制来修正这些逻辑错误。通常,这些措施包括为数据的冗余操作提供冗余途径。然而,这样的冗余途径可能显著地增加处理器的体积和功耗,导致其效率恶化。另一方面,某些解决方案引导多线程方式同时进行(SMT“同时多线程”),以检测错误。采用这样的解决方案,临时地编程为或组织成两个独立执行的路径(例如,SMT核的两个线程)。所得到的数据进行对比,以核实其一致性。若结果不一致,则就是逻辑错误的迹象,且该错误被检测出。但是,在错误检测上依赖于某些物理部件或硬件,而不是运行其它处理过程,且在对结果的比较和线程的协调提供支持时存在复杂性,处理效率恶化显著。
附图说明
图1是表示本发明一个实施例的方法的流程图;
图2是表示本发明一个实施例的一般处理器的体系结构或结构的框图;
图3是表示本发明一个实施例的处理器的框图,
图4是表示本发明一个实施例的多处理器系统的框图;而
图5是表示本发明一个实施例的适合于新的选择指令执行的处理器的一部分的框图。
具体实施方式
在各实施例中,处理器中的逻辑错误可被检测,并可采取适当的措施来修正这样的错误。所述逻辑错误的检测可以在尽可能不增大复杂性或功耗的情况下实现。另一方面,一些实施例可利用现有的处理器结构来完成错误的检测。或者,可增加最小数量的附加物理装置或硬件即可实现逻辑错误的检测。
为了实现逻辑错误的检测,可以根据不同的参数在该处理器序列的一个分段,有选择地重现或重新执行一些指令。例如,可以有选择地只重现那些特别可能出现逻辑错误(例如,根据其大小和/或在处理器中时间的长短)的指令。用这种方式可以在对效率影响最小的情况下检测数量相当大的逻辑错误。
根据本发明一个实施例,逻辑错误的检测可以用不同方式实施。在某些实施例中,可以借助于一种或多种检测错误的算法,用现有的处理器结构来完成逻辑错误的检测。在其他实施例中,在处理器中可以具有检测逻辑错误用控制器和逻辑元件和/或附加的功能。在一个高的层次上,逻辑错误的检测可以这样实施,识别处理器序列的一个分段中对逻辑错误特别脆弱的指令,并重新执行这些指令。若最初的指令执行结果和该指令重新执行的结果一致,则指示没有任何逻辑错误。反之,若结果不同,则指示有逻辑错误,并可以采取恢复机制,以消除该错误。
指令的脆弱性在很大程度上取决于一条指令在处理器中占用的区域和在处理器内传输的时间。例如,许多指令在其实现之前在处理器内使用大量周期,而其他一些指令穿过该序列分段而不占用空间尽管占一个周期时间。不仅如此,并非所有指令都使用相同的硬件装置。为了覆盖逻辑错误的检测,可以重现更脆弱的指令,从而以对效率影响最小的方式对错误提供尽可能大的覆盖。
在一个实施例中,在实现指令的时刻(即退出指令时)重现脆弱的指令,然后该指令离开序列分段。在该实施例中,处理器内部可以包括一组运算逻辑单元(ALU),目的是当脆弱的指令达到重排序中间存储寄存器(ROB-"reorder buffer":重排序缓冲器)的上部时,例如,通过指令的重新执行来有效解救脆弱指令。
由于在其生存期间,不同的指令在处理器中占用不同的存储量且使用不同的时间量,各指令对逻辑错误的脆弱性是不同的。如果识别出一些指令为更脆弱,则有可能用最低的指令重现等级在逻辑错误的检测中获得高的覆盖。这样,就可用最小的电路装置、最小的功耗,在对处理效率影响最小的情况下,在错误检测中获得最大量的覆盖。在不同的实施例中,指令对逻辑错误的脆弱性可能取决于指令类型(例如,装入、存储、分支、运算)、在处理器内部(或处理器的特定组成部分)的指令耗时和指令的其他特性(例如,源数据的就绪、临近区域狭窄以及因此具有较少的位数)。
在处理器的组成部分中并非所有的指令都占用同样的空间。例如,装入和存储指令可将排序中间存储寄存器索引存储在其条目中,而其他指令则不利用这个区域。同样地,存储和分支指令不产生任何结果(因此不为它们分配任何目的地寄存器),并且,在形式上不使用存储目的地寄存器索引的发送或提交队列区域。没有利用这些位也就没有对粒子撞击的脆弱性,因此降低了该指令的脆弱性。提交队列的条目中某些位的脆弱性状态,也可取决于超标量序列分段的插入变化即动态。若当指令被发送到提交队列内部时,一条指令的源已经准备就绪,则提交队列内的源的标记区域是脆弱的。类似地,使用识别立即区域上的窄操作数的技术,可以将指令的立即区域的相当大部分变为不脆弱,以此降低该指令总体的脆弱性。
接着,参照图1,该图是说明本发明一个实施例的方法的流程图。如图1所示,方法10可以从将时间标记或时间戳与一条指令相关联(方框15)开始。例如,处理器的端头或前端可以将一个时间标记与其状态为位于诸如重排序中间存储寄存器(ROB)等中间存储寄存器内的下一条指令相关联。在不同的实施例中,这些指令可以对应于微操作或显微(μops)操作,尽管在其他实施例中,错误的检测可在指令的细分(sub-divisionales)或可分的不同层次上实现。虽然这里联系特定处理器结构进行描述,但应明白,本发明的范围不限于此,瞬态错误的检测也可以在其他地方实现。此外,尽管这里描述为将时间标记与一条指令随着进入处理器的前端的指令相关联,但时间标记也可以在处理器序列分段的其它点上与指令关联。
接着,还是参照图1,可在处理器的序列分段内注入指令(方框20)。据此,当该指令为其执行而临时地进行组织时,该指令可在处理器的序列分段上执行(方框25)。执行后,可以在取指令的瞬间计算该指令的脆弱性(方框30)。例如,当其执行结束且等待达到ROB的上部而退出(就是说,直到该指令在时间上较老为止)时,ROB上指令的状态设定为对于实现就绪。可在此瞬间计算该指令对逻辑错误的脆弱性。上述计算在不同的实施例中可采用许多不同的形式。该计算可以考虑该指令耗用的处理器区域以及该指令在处理器上存在的时间长短或持续时间。因此,可以考虑基于时间标记的信息,以及该指令的宽度(包括不同的指令区域、源的信息等)。
接着,可以确定,为该指令确定的脆弱性等级或程度是否大于阈值(菱形框35)。该阈值可以根据用途建立,并在某些实施例中,可以是一个根据该处理器效率所要达到的程度而调整的阈值。若该指令的脆弱性等级低于该阈值,则控制过程进到方框40,其中该指令退出。方法10就如此结束。
反之,若在菱形框35中判定,该指令的脆弱性等级大于该阈值,则控制过程进到方框45。这里,该指令可重复执行(方框45)。在某些实施例中,该指令可在处理器的同一序列分段上重现并重新执行或实施,但在另一些实施方式中可设置一个或多个附加的功能单元来重新执行。
重新执行后,可将最初的结果与重新执行的结果加以比较,以确定结果是否一致(菱形框50)。若一致,则表明不存在任何瞬态错误,于是,控制过程进到方框40(如前已说明),在其中该指令退出。相反,若在菱形框50中判定为有区别,则控制过程进到方框55。如此,在方框55中指示瞬态错误。这种指示可采取多种不同的形式,其中包括向处理器的某个控制逻辑元件或其他类似位置发送信号。根据所指示的错误,采用适当的恢复机制(方框60)。在不同的实施例中,该恢复机制可以不同,并可以包括该指令的重新执行,对处理器的各种装置中的某些或全部进行一次"清洗"或刷新,或采取其它类似的恢复机制。尽管用这个实施例进行了描述,或具体说明了图1的实施例,但应明白,本发明的范围不受此限定。
如前所述,这些实施例可在不同的处理器体系结构或结构上实施。为说明之目的,图2是表示本发明一个实施例的一般处理器的体系结构的框图。如图2所示,该处理器100可以是设于装置外的处理器。但是,本发明的范围不限于此,也可以在该装置内的一个机构上实现另一些实施例。处理器100包括前端110,它可以接收指令信息并将该信息解码为一个或多个显微操作或微操作,以便于执行。前端110连接到指令临时组织单元120,它能临时地组织该指令在一些执行单元130中的一个选定单元上执行。这些单元可以改变,而在某些实施例中,它可以是整数、浮点数、单指令多数据(SIMD-"single instructionmultiple data")的产生单元和其他类似的执行单元。另一方面,在某些实施例中,可以代表一个或多个按照本发明一个实施例的附加的冗余执行单元,目的是完成逻辑错误的检测。
还是参照图2,当这些指令在一个选定的执行单元上执行时,这些指令可以提供给指令退出/验证单元140。该单元140可用来退出指令(它们在处理器的该序列分段内按不同的顺序执行),并在命令中发送根据程序的顺序退出。根据本发明一个实施例,该单元140还可设计成以另外的方式实现逻辑错误的检测。具体地说,在退出的时刻,每一个被判定为其等级或程度大于给定阈值的容易出逻辑错误的指令,例如都可在执行单元230内的一个附加执行单元上重新执行。根据该重新执行的结果,或者确认指令最初的结果并该取指令,或者指示一个逻辑错误并实现适当的恢复机制。尽管用图2的高层次的体系结构作了描述,但应明白,本发明的范围并不受此限定,应考虑到存在各种具体的变化。
接着,参照图3即本发明实施例之一的处理器的更详细的框图。如图3所示,处理器200可以包括执行指令用的不同装置。图3所示的处理器200可对应于一个单核处理器,或者,也可以在其他实施例中对应于一个多核处理器中的多个核或许多核中的一个。
如图3所示,处理器200可以包括前端210,它包含不同的装置。在图3的实施例中,它可以为ROB215,后者耦合到号码再分配单元220,该单元220得到指令,并在处理器寄存器堆中存在的大量物理寄存器上,在指令内重新分配逻辑寄存器的号码。这些指令可以从号码再分配装置220耦合到轨迹或跟踪高速缓存225,后者连接到用来帮助预测执行分支的分支预测装置230。连接到微指令翻译装置或机器(MITE-“microinstruction translation engine:微指令翻译引擎")238,目的是向序列微组织器235提供翻译后的指令,后者本身连接到一个统一的高速缓存240(例如,1级或2级高速缓存)。数据的高速缓存268也可以连接到统一的高速缓存240,还连接到一个装入队列267a和存储队列267b。
还是参照图3,可以向执行单元250提供重新编号的指令,执行单元包括提交队列252,它接收输入指令并将它们存储到存储队列和一些功能单元中的一个临时组织。提交队列252还连接到一对寄存器堆,即浮点(FP:floating point)寄存器堆254和整数寄存器堆256。当选定的寄存器堆上出现指令所需的源数据时,该指令可随着被临时组织在一些功能单元之一中而被执行,为便于说明,在图3上表示为两个。具体地说,可以有第一执行单元260和第二执行单元265,它们可以分别对应于一个浮点逻辑单元或一个整数逻辑单元。该指令的执行结果可以经由互连网络270传输到不同位置。例如,在给定的体系结构中,所得到的数据可以送回寄存器堆254和256、装入队列267a、存储队列267b和/或可在返回时提供给ROB215。
另一方面,所得到的数据可以提供给指令验证单元280。根据本发明的一个实施例,该单元280可以实现对逻辑错误的检测。如上所述,指令验证单元280可连接到互连网络270,此外,还可连接到ROB215。在不同的实施例中,指令验证单元280可以包括不同的装置,其中包括具有类似于ROB215的配置的中间存储寄存器。在一个实施例中,指令验证单元280可以包括重新核查源的中间存储寄存器(RSB-“recheck source buffer:复查源缓冲器”),它可以是ROB215的扩展。就是说,RSB可以是一个具有先进先出(FIFO-“first-in-first-out”)结构的中间存储寄存器,它包括与ROB215相同的条目数。在其他实施例中,用以验证指令的中间存储寄存器可以简单地充当ROB215。在一个实施例中,ROB 215的各个条目(正如指令验证单元280中的中间存储寄存器那样,如果存在)可以采取以下给出的表1中说明的方式:
表1
 
指令 源标签 时间标记 结果
如表1所示,ROB 215的每个条目可以包括不同的区域。具体地说,又如表1所示,每个条目可包括一个可对应于微操作或显微操作的指令区域。此外,每个条目可以包括源标签,目的是识别所需要的数据位置。另外,每个条目可以包括一个时间戳或时间标记,用以指示该输入在ROB 215建立的瞬间。最后,如表1所示,每个条目可以包括一个结果区域,其中存储该指令的结果。尽管用此实施例并以具体的表1的实现方式作了描述,但应明白,本发明的范围不限于此,而且ROB或RSB的条目可以包括附加的或不同的区域。
指令验证单元280此外还可包括其专用于执行选定的指令的适当的功能单元285(或者,也可使用现有的可用功能单元)。RSB可为指令的全体保存所产生的结果值、备选码和该指令的源标签,以在指令实现的时刻查验该指令的结果(或方向,若涉及存储操作或分支),看该指令是否识别为脆弱的。
为了实现逻辑错误的检测,指令验证单元280可另外包括微控制器、逻辑部件或其它装置。具体地说,该装置可以接收一条指令,例如在实现的时刻接收,并为该指令确定脆弱性量度。尽管这种脆弱性量度可以采取许多不同的形式,但是在一个实施例中,指令验证单元280可根据下式计算而确定该指令脆弱性的程度或等级:
指令的脆弱性等级=占用的位区域×使用的时间(式1)
该指令的脆弱性等级可根据该指令所占用的位区域,包括它的源识别符、目的地识别符等不同的区域,乘以该指令所使用的处理器时间,例如,这可以对应于该指令在该处理器上使用的时间,例如,根据一个时间标记测量,从该指令最初插入ROB215起直至该指令实现的时间。在其他实施例中,脆弱性的量度可根据占用的位区域和所使用的时间中的一个或这些值的不同组合来确定。
指令的这种脆弱性等级可与一个阈值比较。作为实用示例,假定阈值为1,000。若平均一条指令覆盖50位的脆弱位空间,则在提交队列中经过20多个周期的任何一条指令均通过选择性重现而被重新执行。对于一长串从属关系或长等待时间的运行,诸如浮点除法,这样的延迟是适当的。在不同的实施例中,该阈值可以在很宽的范围内变化。例如,零阈值引起全部指令的重新执行,而大的阈值(例如5,000)可仅使小部分(例如低于10%)指令重新执行。在一个实施例中,可采用一个适当的折衷阈值1,000。
如果脆弱性等级低于阈值而不一致,则该指令就正常执行,且指令验证单元280不进行任何附加动作。如果不是如此,而是确定指令的脆弱性等级高于所选的阈值,则该指令对瞬态错误具有较大的脆弱性。如果该指令的脆弱性值高,这意味着该指令占用大量的位和/或会较长时间地在部件中通过,这使得该指令脆弱性大。在各种不同实施例中,恰好重复这些指令来应对超出所选脆弱性阈值的情况。以这样的方式,通过重复最少的指令来实现最大量的错误覆盖。在取指令的过程中进行指令的脆弱性分析时,通过过滤而去除哪些非体系结构上正确执行(ACE-“architecturally correct execution”)的指令和在到达实现阶段之前就已从序列分段退出的指令。如此,在得到指令的瞬间就可很精确地收集到指令的脆弱性信息,正确地了解该指令在处理器内移动的时间量以及占用的空间量。
在不同的实施例中,指令验证单元280可在取得该指令的信息时重新执行该指令,取得该指令的源数据并将其提供给与指令验证单元280相关的一个或多个附加功能单元85。在不同的实施例中,脆弱的指令通过使用存储在RSB内的信息执行或重新执行。在一个实施例中,源寄存器标签存储在RSB中,并用来存取寄存器堆254和256,以便为其验证而收集源数据。为了验证目的,这些寄存器堆可包括两个附加的存取或读出端口(每个源操作数一个端口)。供选定重新执行用的存取寄存器堆254和256可用这种方式,来覆盖在该指令处于提交队列252内而源标签对于粒子撞击具脆弱性时产生的错误。备选方案是,源的值可在第一次读出时存入RSB,以免在寄存器堆上具有附加的端口。
指令重新执行的结果重新送回到指令验证单元280,在那里该重新执行的结果与最初的结果比较。若两个结果一致,则指令验证单元280上不采取任何附加动作而退出该指令。但是,若这些结果不一致,则表明出现一个瞬态错误,指令验证单元280可向处理器200内一个或多个位置发出逻辑错误的信号。在这一瞬间,处理器200可以实现一个错误恢复机制。例如,若两个结果不一致,则指令验证单元280可以启动一次处理器刷新,从失效的指令开始重新执行。尽管用具体为图3是实现方式的这个实施例作了描述,但应明白,本发明的范围不限于此。
在某些实施例中可以有一些优化。可以不从ROB的头部(cabecera)或在其他的退出位置唯一地验证该指令,而在每个周期中验证一个以上的指令。另一方面,可以在实践中采用多个阈值和一个效率量度,用以识别由于该验证而使处理器效率损失的一些时间期间。在这样的时间期间,只重新执行十分脆弱的指令。作为其示例,在效率低的时间,该阈值可以设置得更高,以降低提交重新执行的指令数。另外,可使用自适应的阈值等级,它根据处理器的状态(例如,错误成本或比例、效率、能力等)修改。因此,取决于处理器给定状态,可以从若干个不同的脆弱性阈值中选择一个与算出的指令脆弱性值进行比较。
在某些实施例中,可以利用根据本发明的一个实施例的错误检测,与诸如刷新和重新初始化或窄值识别等脆弱性减少技术结合。一个序列分段的刷新和重新初始化,例如在集成电路或芯片外部的高速缓存失效之后,可降低大量指令对瞬态错误的脆弱性,缩短在提交队列内通过的时间,并可因此减少通过瞬态错误的检测而重新执行的指令数。此外,可以建立更低的阈值等级,以在实施刷新和重新初始化机制或其他脆弱性降低技术时,提高错误覆盖面。
可以在多个不同的系统类型上实现这些实施例。接着,参照图4,该图是说明根据本发明的一个实施例的多处理器系统的框图。如图4所示,该多处理器系统是一个点到点互连系统,并包括经由点到点互连450连接的第一处理器470和第二处理器480,但在其他实施例中可采用其他形式的互连。如图4所示,处理器470和480中的每一个都可以是多核处理器,包括处理器的第一和第二核(即处理器核474a和474b,以及处理器核484a和484b)。尽管在该图中为了简明起见而没有示出,但根据本发明的一个实施例,第一处理器470和第二处理器480(具体地说,其内部的核)可以包括识别和验证脆弱指令的逻辑元件来检测逻辑错误。第一处理器470还包括一个存储器的集中与控制装置(MCH-"memory controller hub:内存控制集线器")472和点到点接口(P-P)476和478。类似地,第二处理器480包括一个MCH482和P-P接口486和488。如图4所示,MCH472和482将处理器连接到各自的存储器,就是说,可以将作为主存的各部分的存储器432和存储器434局部地固定到相应的处理器。
第一处理器470和第二处理器480可以通过P-P互连452和454连接到芯片装置490。如图4所示,该芯片装置490包括P-P接口494和498。此外,芯片装置490包括一个接口492,用以将芯片装置490与高性能图形处理器438连接。在一个实施例中,可以利用高级图形端口(AGP-"Advanced Graphics Port:高级图形端口")439来连接图形发生装置438和芯片装置490。AGP总线439符合1998年5月4日由加利福尼亚Santa Clara的Intel Corporation出版的图形加速端口接口规格(修改版2.0)(Especificación de interfaz de puerta de gráficosacelerados,Revisión 2.0)。作为另一方案,点到点互连439可以连接这些部件。
而芯片装置490可以经由接口496连接到第一总线416。在一个实施例中,第一总线416可以是根据注明日期为1995年6月的修改版2.1(Especificación de bus local de PCI,Versión de producción,Revisión2.1)的PC1局部总线规格的外围部件互连总线(PCI-“PeripheralComponent Interconnect:外围部件互连”),或者是一个诸如PCI快速总线或其他输入/输出(I/O)互连总线等总线,但本发明的范围不限于此。
如图4所示,连同将第一总线416连接到第二总线420的总线桥418,可以将不同的输入/输出装置414连接到第一总线416,在一个实施例中,第二总线420可以是引线数少(LPC-"low pin count:低引线数)的总线。可以将不同的装置,例如,包括键盘/鼠标422、通信装置426和数据存储单元连接到第二总线420,在一个实施例中,可以包括编码430。此外,可以将音频输入/输出连接到第二总线420。注意,也可以采用其他体系结构。例如,可以不用图4的点到点体系结构,一个系统可以实现分支或多端点的总线或者类似的体系结构。
另一方面,应该明白,在不同的实施例中,可以实现不同的处理器结构和不同的指令选择性重现方式。在某些实施例中,指令可以在在指令可能要退出和实际上退出之间的时间窗口内重新进行选择性执行。可以用不同方式进行所述的指令选择性重新提交。接着,参照图5,该图是表示根据本发明的一个实施例对指令进行选择性重新执行的处理器的一部分的框图。
如图5所示,处理器500包括一个提交队列510,该队列通过内部总线505连接以接收下一指令。如图5所示,另外还可连接一个选择队列520来接收下一指令。再有,这些指令还可提供给ROB515。
如图5所示的附加方式,提交队列510和选择队列520连接到选择器525,它可以从这些队列选择一条指令,以将其传送到寄存器堆530,它本身又可以连接到一个或多个执行单元540。如图5所示,执行单元540另外还连接到ROB515。只要有一个用来执行的端口,就可从选择队列520发送并执行一条指令(提交队列510中的其副本(contrapartida)已被发送)。当一条指令执行结束时,结果存储在ROB515中。当该指令完成重复执行时,其结果与最初存储的结果比较,以进行验证。若ROB515的头部对实现就绪,但未被确认,则可以中断或中止该实现。
在某些实施例中,ROB515可以给每个条目增加某个区域(例如,一个比较位、一个确认位、一个错误检测位,以及存储该结果用的位)。但是,在其他实施例中,可使用一组不同的排序进行上述存储,当将ROB的一个条目分配给一条新的指令时,重新建立该条目的附加区域。当该指令结束其执行时,将其结果写入ROB515。当最初的指令完成时,该结果可以写入并建立比较位。接着,第二条指令(即重现指令)在执行时遇到该已建立的比较位,并使存储的值与该重新执行的结果比较并在ROB的条目上建立一个确认位。比较结果存储在该错误检测位上,以指示结果是否一致。作为比较位的备选分案,可以是一个与该指令关联的位,用以识别所涉及的是最初的指令还是重现的指令。
也正如前面阐明的,当一条指令位于提交队列510时,也存储在该选择队列520中。存在于选择队列520的各个条目可以包括任选的编码、源标签(用以从该寄存器堆530读出源数据(fuentes))、ROB的一个条目识别符以及一个指示重新发送或提交是否就绪的状态位。注意,提交队列510的条目还可将其条目对应于选择队列520存储,同样,将其条目对应于ROB515存储。一旦最初的指令被从提交队列510发送,就对其条目发出对应于选择队列510的信号,以建立其状态位。选择队列520的条目总数可以与ROB515的条目数相同。注意,选择队列520的等待时间对于处理效率并不关键;因此,在功率方面可以用较缓慢的设计实现,并包括采用低功率的晶体管。
选择器525可以是一个多路器,它在来自提交队列510和选择队列520的指令之间进行选择。在不同的实施例中,选择器525可以对来自提交队列510的指令给予优先。选择队列520可以在已建立状态位的指令中选择一条指令,以将其传送给选择器525,这可以用一系列端口实现(既然它不是关键路线或路径,便不影响周期时间),或者借助于在多个存储体(bancos)上的配置,就是说,用如提交端口那么多的存储体形成选择队列520,使得只是存储体的较老的指令可以竞争到端口。在有一个端口空闲时,来自选择队列520的指令就被发送;在相反的情况下,则等待。
正如前面解释的,一条指令对瞬态错误的脆弱性取决于其占用的区域和在处理器中通过的时间。当选择队列520的一个条目具有已建立的状态位时,可将其脆弱性值与一个阈值比较。注意,了解一条指令通过提交队列510要多少周期,因为该指令同时分配给提交队列510和选择队列520。这样,在选择队列520中的该处与接收建立状态位用的信号之间经过的时间可以用来作为所使用的时间量度。若脆弱性值低于阈值,则可以释放该选择队列520的条目,并相应地为ROB的条目建立确认位,并在ROB的条目上重新建立错误检测位。在某些实施例中,可以用时间(例如,借助于时间戳或时间标记)作为脆弱性值,代替区域与时间的乘积。
为了确认之目的,如前说明,ROB515的每个条目都可包含一个确认位。若尚未建立该确认位,则该指令实现可以中止来等待确认。即使该确认位符合,该指令只是在其错误检测位已建立时对其实现就绪。在其错误检测位已建立的情况下,可采取不同的动作。例如,可以刷新该序列分段,以重新执行该失效的指令,或引起一个异常。对于分支预测失败,可以清除在提交队列510和选择队列520中未被确认的条目。可用在提交队列510上使用的同一机制来清除选择队列520的条目。
注意,冗余硬件本身可能易受粒子撞击。但是,其脆弱性为零。就是说,若与选择队列520产生撞击,则执行一条错指令,该指令可能给出一个虚假的正确。撞击可能击中ROB条目指示符或ROB515确认位,这可能造成僵局,因为ROB515的头部等待被确认。这或者可以通过选择队列520的进入ROB的条目识别符的对比加以保护,或者增加一个自动发现失效的定时器来消除,而且若该指令的实现在多于给定周期数的期间被中止,则该指令可以被删除并重新初始化。
这些实施例可以用编码实现并且可以存储在存储该指令的存储介质中,可以利用来对系统进行编程,以实施这些指令。存储介质可以包括但不限于:软盘、光盘、CD只读存储器(CD-ROM)、可重写CD(CD-RW)、磁光盘等任何类型的盘片;如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等随机访问存储器(RAM)、诸如可擦可编程只读存储器(EPROM)、脉冲刷新存储器、电可擦除可编程只读存储器(EEPROM)等半导体器件;磁卡或光卡;或任何其他类型适宜于存储电子指令的介质。
尽管本发明联系数量有限的实施例进行了描述,但本领域技术人员由此出发当会意识到大量的修改或改变。本权利要求书拟覆盖所有本发明的真实精神和范围内的修改和变化。

Claims (25)

1.一种通过选择重新执行来检测瞬态错误的方法,包括:
确定在处理器中实现或执行的一条指令的脆弱性等级,所述脆弱性等级对应于所述指令出现逻辑错误的几率;以及
若所述脆弱性等级超出某个阈值,则重新执行所述指令,
所述方法还包括:在与已执行了该指令的处理器的第一执行单元不同的处理器执行单元上重新执行所述指令。
2.根据权利要求1的方法,还包括:若所述脆弱性等级低于所述阈值,则不重新执行所述指令。
3.根据权利要求1的方法,还包括:根据所述指令占用的处理器区域和与所述指令的生存时间相关联的时间周期这二者中的至少其一,确定所述脆弱性等级。
4.根据权利要求3的方法,还包括:用一个与所述指令相关联的时间戳或时间标记来确定所述时间周期。
5.根据权利要求1的方法,还包括:
确定重新执行所述指令的结果是否与所述指令的结果一致;
若不一致则刷新所述处理器。
6.一种通过选择重新执行来检测瞬态错误的装置,包括:
至少一个寄存器堆和至少一个连接到所述至少一个寄存器堆的执行单元;以及
一个指令验证单元,用来确定对于由所述执行单元执行的指令的瞬态错误的脆弱性,所述脆弱性对应于所述指令出现逻辑错误的几率,
其中,所述指令验证单元包括:
中间存储寄存器,用来存储指令和相关联的源数据的标签;以及
至少一个执行单元,连接到所述中间存储寄存器以重新执行脆弱的指令。
7.根据权利要求6的装置,其中,所述指令验证单元还包括逻辑元件,用以根据所述指令用的区域值和所述指令用的时间值这二者中的至少其一,确定一条指令的脆弱性等级。
8.根据权利要求7的装置,其中,所述逻辑元件根据与该指令相关联的时间戳或时间标记确定所述时间值。
9.根据权利要求7的装置,其中,若所述脆弱性等级大于某一阈值,则所述逻辑元件将所述指令提供给所述指令验证单元的至少一个执行单元以将它重新执行。
10.根据权利要求9的装置,其中,所述阈值根据选定的处理效率调整,使所述阈值设定得比当前阈值更高而适合于比当前处理效率等级更高的处理效率等级。
11.根据权利要求9的装置,还包括一个指令退出单元,以在指令的重新执行与该指令的最初执行相一致时,由所述指令退出单元退出该指令。
12.一种通过选择重新执行来检测瞬态错误的装置,包括:
用于在处理器中执行一条指令以获得初始结果的部件;
用于在所述指令对逻辑错误脆弱的情况下在处理器中重新执行一条指令以取得重新执行的结果的部件;以及
用于将所述初始结果与所述重新执行的结果进行比较的部件,
其中,所述装置还包括:用于在所述指令对所述逻辑错误不脆弱的情况下在指令退出阶段退出所述指令而不重新执行所述指令的部件。
13.根据权利要求12的装置,其中,所述装置还包括:用于若所述比较表明不相一致则刷新所述处理器的部件。
14.根据权利要求12的装置,其中,所述装置还包括:用于根据所述指令的耗用区域和所述指令在所述处理器上的持续时间这二者中的至少其一确定所述指令是否对逻辑错误脆弱的部件。
15.根据权利要求14的装置,其中,所述装置还包括:
用于用所述区域和所述持续时间计算脆弱性值的部件;和
用于将所述脆弱性值与某一阈值比较并根据所述比较确定是否重新执行该指令的部件。
16.一种通过选择重新执行来检测瞬态错误的系统,包括:
处理器,包含至少一个用以执行一条指令的执行单元,以使得所述处理器还包含一个冗余执行单元,用来在所述指令对瞬态错误脆弱的情况下重新执行所述指令;以及
动态随机存取存储器(DRAM),连接于所述处理器,
其中,所述处理器还包含一个指令验证器,用来量化所述指令对瞬态错误的脆弱性。
17.根据权利要求16的系统,其中,所述指令验证器根据指令大小和所述指令在该处理器中的生存时间这二者中的至少其一,确定是否重新执行所述指令。
18.根据权利要求17的系统,其中,所述指令验证器将基于所述指令大小和所述生存时间的所述指令的脆弱性值与某一阈值比较,若所述脆弱性值大于所述阈值,就启动所述重新执行。
19.根据权利要求18的系统,其中,所述阈值是一个自适应阈值,且所述系统根据选定的处理效率来调整所述阈值。
20.根据权利要求18的系统,其中,若所述处理器实施减少指令脆弱性的技术以降低所述指令对瞬态错误的脆弱性,则所述系统降低所述阈值。
21.根据权利要求16的系统,其中,所述指令验证器须在指令退出阶段确定是否要重新执行所述指令。
22.根据权利要求16的系统,其中,所述指令验证器包含中间存储寄存器,用来存储与在所述处理器上执行的指令对应的条目。
23.根据权利要求22的系统,其中,所述条目包含与相应的指令插入所述处理器的瞬间对应的时间标记区域。
24.根据权利要求23的系统,其中,所述指令验证器用时间标记区域来确定是否要重新执行所述指令。
25.根据权利要求16的系统,其中,在所述指令重新执行的结果与所述指令的结果不一致的情况下,所述系统刷新所述处理器的至少一部分。
CN2006800541415A 2006-03-31 2006-03-31 通过选择重新执行来检测瞬态错误 Expired - Fee Related CN101416163B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/ES2006/070041 WO2007113346A1 (es) 2006-03-31 2006-03-31 Deteccion de errores transitorios mediante nueva ejecucion selectiva

Publications (2)

Publication Number Publication Date
CN101416163A CN101416163A (zh) 2009-04-22
CN101416163B true CN101416163B (zh) 2013-10-16

Family

ID=38563133

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800541415A Expired - Fee Related CN101416163B (zh) 2006-03-31 2006-03-31 通过选择重新执行来检测瞬态错误

Country Status (4)

Country Link
US (2) US8090996B2 (zh)
KR (1) KR100990591B1 (zh)
CN (1) CN101416163B (zh)
WO (1) WO2007113346A1 (zh)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2455344B (en) * 2007-12-06 2012-06-13 Advanced Risc Mach Ltd Recovering from control path errors
US7941698B1 (en) * 2008-04-30 2011-05-10 Hewlett-Packard Development Company, L.P. Selective availability in processor systems
US7975172B2 (en) * 2008-08-14 2011-07-05 International Business Machines Corporation Redundant execution of instructions in multistage execution pipeline during unused execution cycles
US8171328B2 (en) * 2008-12-31 2012-05-01 Intel Corporation State history storage for synchronizing redundant processors
KR101581001B1 (ko) 2009-03-30 2015-12-30 삼성전자주식회사 프로그램의 동적 분석 방법 및 그 장치
US8448027B2 (en) * 2010-05-27 2013-05-21 International Business Machines Corporation Energy-efficient failure detection and masking
US8271831B2 (en) 2010-05-27 2012-09-18 International Business Machines Corporation Tolerating soft errors by selective duplication
US8898516B2 (en) * 2011-12-09 2014-11-25 Toyota Jidosha Kabushiki Kaisha Fault-tolerant computer system
US8909988B2 (en) * 2012-03-30 2014-12-09 Intel Corporation Recoverable parity and residue error
US9569211B2 (en) 2012-08-03 2017-02-14 International Business Machines Corporation Predication in a vector processor
US9003160B2 (en) 2012-08-03 2015-04-07 International Business Machines Corporation Active buffered memory
US9632777B2 (en) 2012-08-03 2017-04-25 International Business Machines Corporation Gather/scatter of multiple data elements with packed loading/storing into/from a register file entry
US9575755B2 (en) 2012-08-03 2017-02-21 International Business Machines Corporation Vector processing in an active memory device
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US9063906B2 (en) * 2012-09-27 2015-06-23 International Business Machines Corporation Thread sparing between cores in a multi-threaded processor
US8972782B2 (en) * 2012-11-09 2015-03-03 International Business Machines Corporation Exposed-pipeline processing element with rollback
US9075904B2 (en) * 2013-03-13 2015-07-07 Intel Corporation Vulnerability estimation for cache memory
US9176895B2 (en) 2013-03-16 2015-11-03 Intel Corporation Increased error correction for cache memories through adaptive replacement policies
US9582402B2 (en) * 2013-05-01 2017-02-28 Advanced Micro Devices, Inc. Remote task queuing by networked computing devices
US9069736B2 (en) * 2013-07-09 2015-06-30 Xerox Corporation Error prediction with partial feedback
US9251014B2 (en) * 2013-08-08 2016-02-02 International Business Machines Corporation Redundant transactions for detection of timing sensitive errors
US9323920B2 (en) * 2013-10-23 2016-04-26 Infineon Technologies Ag Data processing arrangement and method for ensuring the integrity of the execution of a computer program
US9858151B1 (en) 2016-10-03 2018-01-02 International Business Machines Corporation Replaying processing of a restarted application
US10691572B2 (en) * 2017-08-30 2020-06-23 Nvidia Corporation Liveness as a factor to evaluate memory vulnerability to soft errors

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1434941A (zh) * 1999-12-21 2003-08-06 英特尔公司 纠正软错误的固件机制

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2602891B1 (fr) * 1986-08-18 1990-12-07 Nec Corp Systeme de correction d'erreur d'un systeme a multiprocesseurs pour corriger une erreur dans un processeur en mettant le processeur en condition de controle apres achevement du redemarrage du microprogramme a partir d'un point de reprise
JPH0863365A (ja) * 1994-08-23 1996-03-08 Fujitsu Ltd データ処理装置
US6202174B1 (en) * 1996-09-16 2001-03-13 Advanced Micro Devices Inc Method for identifying and correcting errors in a central processing unit
US6247118B1 (en) * 1998-06-05 2001-06-12 Mcdonnell Douglas Corporation Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry
US6519730B1 (en) * 2000-03-16 2003-02-11 Fujitsu Limited Computer and error recovery method for the same
US6877086B1 (en) * 2000-11-02 2005-04-05 Intel Corporation Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US6772368B2 (en) * 2000-12-11 2004-08-03 International Business Machines Corporation Multiprocessor with pair-wise high reliability mode, and method therefore
US6708284B2 (en) * 2001-03-30 2004-03-16 Intel Corporation Method and apparatus for improving reliability in microprocessors
US7331043B2 (en) * 2001-06-26 2008-02-12 Sun Microsystems, Inc. Detecting and mitigating soft errors using duplicative instructions
US20040064756A1 (en) * 2002-09-26 2004-04-01 Sudarshan Kadambi Method and apparatus for improving reliability in computer processors by re-executing instructions
US7206971B2 (en) * 2003-04-07 2007-04-17 Lsi Logic Corporation Selectable and updatable computer boot memory
US7146530B2 (en) * 2003-07-18 2006-12-05 Hewlett-Packard Development Company, L.P. Targeted fault tolerance by special CPU instructions
JP4969791B2 (ja) * 2005-03-30 2012-07-04 株式会社日立製作所 ディスクアレイ装置およびその制御方法
US7849369B2 (en) * 2005-10-25 2010-12-07 Waratek Pty Ltd. Failure resistant multiple computer system and method
US20070113055A1 (en) * 2005-11-15 2007-05-17 Dale Jason N Apparatus and method for improving single thread performance through speculative processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1434941A (zh) * 1999-12-21 2003-08-06 英特尔公司 纠正软错误的固件机制

Also Published As

Publication number Publication date
CN101416163A (zh) 2009-04-22
US20090113240A1 (en) 2009-04-30
KR100990591B1 (ko) 2010-10-29
WO2007113346A1 (es) 2007-10-11
US8402310B2 (en) 2013-03-19
KR20080098683A (ko) 2008-11-11
US20120047398A1 (en) 2012-02-23
US8090996B2 (en) 2012-01-03

Similar Documents

Publication Publication Date Title
CN101416163B (zh) 通过选择重新执行来检测瞬态错误
US6968476B2 (en) Checkpointing a superscalar, out-of-order processor for error recovery
US7689804B2 (en) Selectively protecting a register file
US9081606B2 (en) Asynchronous persistent stores for transactions
Reinhardt et al. Transient fault detection via simultaneous multithreading
CN102253865B (zh) 用于在系统中使用高速缓冲存储器的方法和装置
CN100449480C (zh) 用于降低微处理器内的虚假差错检测的方法和装置
CN109891393B (zh) 使用检查器处理器的主处理器错误检测
US7555692B1 (en) End-to-end residue based protection of an execution pipeline
US5860151A (en) Data cache fast address calculation system and method
CN105074655A (zh) 用于取消对循环的数据预取请求的方法和设备
WO2007061703A2 (en) Ecc coding for high speed implementation
CN102541756A (zh) 高速缓冲存储器系统
CN111566738B (zh) 存储器系统中的有效和选择性的备用位
CN107992376A (zh) Dsp处理器数据存储器主动容错方法和装置
US8458403B2 (en) Architecture and method for cache-based checkpointing and rollback
CN106663471A (zh) 用于反向存储器备份的方法和装置
Sun et al. Exploring the vulnerability of CMPs to soft errors with 3D stacked nonvolatile memory
Palframan et al. iPatch: Intelligent fault patching to improve energy efficiency
CN105161137B (zh) 一种MLC架构中Nand Flash控制器电路实现装置
US6701484B1 (en) Register file with delayed parity check
US9231618B2 (en) Early data tag to allow data CRC bypass via a speculative memory data return protocol
CN105027084B (zh) 在移动通信系统中控制存储器的装置和方法
CN103279329B (zh) 支持同步edac校验的高效取指流水线
US20090150653A1 (en) Mechanism for soft error detection and recovery in issue queues

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

Granted publication date: 20131016

Termination date: 20180331

CF01 Termination of patent right due to non-payment of annual fee