通过选择重新执行来检测瞬态错误的制作方法

文档序号:6570644阅读:196来源:国知局

专利名称::通过选择重新执行来检测瞬态错误的制作方法
技术领域
:本发明的一些实施例涉及半导体器件中错误的检测,更具体地说,涉及处理器中错误的检测。
背景技术
:瞬态错误经常称为逻辑错误,构成处理器中不断增长的错误来源。由于器件尺寸的缩小和工作电压的降低,这些器件更容易受到宇宙粒子的撞击和参数变化的伤害。这样的事件可能使瞬态错误发生,后者随机发生而且可能影响处理器所实现的执行。随着各代半导体生产工艺的发展,对逻辑错误越加敏感。人们已经釆用某些机制来修正这些逻辑错误。通常,这些措施包括为数据的冗余操作提供冗余途径。然而,这样的冗余途径可能显著地增加处理器的体积和功耗,导致其效率恶化。另一方面,某些解决方案引导多线程方式同时进行(SMT"同时多线程"),以检测错误。采用这样的解决方案,临时地编程为或组织成两个独立执行的路径(例如,SMT核的两个线程)。所得到的数据进行对比,以核实其一致性。若结果不一致,则就是逻辑错误的迹象,且该错误被检测出。但是,在错误检测上依赖于某些物理部件或硬件,而不是运行其它处理过程,且在对结果的比较和线程的协调提供支持时存在复杂性,处理效率恶化显著。图1是表示本发明一个实施例的方法的流程图2是表示本发明一个实施例的一般处理器的体系结构或结构的框图3另_表示本发明一个实施例的处理器的框图,图4是表示本发明一个实施例的多处理器系统的框图;而图5是表示本发明一个实施例的适合于新的选择指令执行的处理器的一部分的框图。具体实施例方式在各实施例中,处理器中的逻辑错误可净支检测,并可采取适当的措施来修正这样的错误。所述逻辑错误的检测可以在尽可能不增大复杂性或功耗的情况下实现。另一方面,一些实施例可利用现有的处理器结构来完成错误的检测。或者,可增加最小数量的附加物理装置或硬件即可实现逻辑错误的检测。为了实现逻辑错误的检测,可以根据不同的参数在该处理器序列的一个分段,有选择地重现或重新执行一些指令。例如,可以有选择地只重现那些特别可能出现逻辑错误(例如,根据其大小和/或在处理器中时间的长短)的指令。用这种方式可以在对效率影响最小的情况下检测数量相当大的逻辑错误。根据本发明一个实施例,逻辑错误的检测可以用不同方式实施。在某些实施例中,可以借助于一种或多种检测错误的算法,用现有的处理器结构来完成逻辑错误的检测。在其他实施例中,在处理器中可以具有检测逻辑错误用控制器和逻辑元件和/或附加的功能。在一个高的层次上,逻辑错误的检测可以这样实施,识别处理器序列的一个分段中对逻辑错误特别脆弱的指令,并重新执行这些指令。若最初的指令执行结果和该指令重新执行的结果一致,则指示没有任何逻辑错误。反之,若结果不同,则指示有逻辑错误,并可以采取恢复机制,以消除该错误。指令的脆弱性在很大程度上取决于一条指令在处理器中占用的区域和在处理器内传输的时间。例如,许多指令在其实现之前在处理器内使用大量周期,而其他一些指令穿过该序列分段而不占用空间尽管占一个周期时间。不仅如此,并非所有指令都使用相同的硬件装置。为了覆盖逻辑错误的检测,可以重现更脆弱的指令,从而以对效率影响最小的方式对错误提供尽可能大的覆盖。在一个实施例中,在实现指令的时刻(即退出指令时)重现脆弱的指令,然后该指令离开序列分段。在该实施例中,处理器内部可以包括一组运算逻辑单元(ALU),目的是当脆弱的指令达到重排序中间存储寄存器(ROB-"reorderbuffer":重排序緩冲器)的上部时,例如,通过指令的重新执行来有效解救脆弱指令。由于在其生存期间,不同的指令在处理器中占用不同的存储量且使用不同的时间量,各指令对逻辑错误的脆弱性是不同的。如果识别出一些指令为更脆弱,则有可能用最低的指令重现等级在逻辑错误的检测中获得高的覆盖。这样,就可用最小的电路装置、最小的功耗,在对处理效率影响最小的情况下,在错误检测中获得最大量的覆盖。在不同的实施例中,指令对逻辑错误的脆弱性可能取决于指令类型(例如,装入、存储、分支、运算)、在处理器内部(或处理器的特定组成部分)的指令耗时和指令的其他特性(例如,源数据的就绪、临近区域狭窄以及因此具有较少的位数)。在处理器的组成部分中并非所有的指令都占用同样的空间。例如,装入和存储指令可将排序中间存储寄存器索引存储在其条目中,而其他指令则不利用这个区域。同样地,存储和分支指令不产生任何结果(因此不为它们分配任何目的地寄存器),并且,在形式上不使用存储目的地寄存器索引的发送或提交队列区域。没有利用这些位也就没有对粒子撞击的脆弱性,因此降低了该指令的脆弱性。提交队列的条目中某些位的脆弱性状态,也可取决于超标量序列分段的插入变化即动态。若当指令#^送到提交队列内部时,一条指令的源已经准备就绪,则提交队列内的源的标记区域晃晚弱的。类似地,使用识别立即区域上的窄操作数的技术,可以将指令的立即区域的相当大部分变为不脆弱,以此降低该指令总体的脆弱性。接着,参照图1,该图是说明本发明一个实施例的方法的流程图。如图1所示,方法IO可以从将时间标记或时间戳与一条指令相关联(方框15)开始。例如,处理器的端头或前端可以将一个时间标记与其状态为位于诸如重排序中间存储寄存器(ROB)等中间存储寄存器内的下一条指令相关联。在不同的实施例中,这些指令可以对应于微操作或显微(pops)操作,尽管在其他实施例中,错误的检测可在指令的细分(sub-divisionales)或可分的不同层次上实现。虽然这里联系特定处理器结构进行描述,但应明白,本发明的范围不限于此,瞬态错误的检测也可以在其他地方实现。此外,尽管这里描迷为将时间标记与一条指令随着进入处理器的前端的指令相关联,但时间标记也可以在处理器序列分段的其它点上与指令关联。接着,还是参照图1,可在处理器的序列分段内注入指令(方框20)。据此,当该指令为其执行而临时地进行组织时,该指令可在处理器的序列分段上执行(方框25)。执行后,可以在取指令的瞬间计算该指令的脆弱性(方框30)。例如,当其执行结束且等待达到ROB的上部而退出(就是说,直到该指令在时间上4支老为止)时,ROB上指令的状态设定为对于实现就绪。可在此瞬间计算该指令对逻辑错误的脆弱性。上述计算在不同的实施例中可采用许多不同的形式。该计算可以考虑该指令耗用的处理器区域以及该指令在处理器上存在的时间长短或持续时间。因此,可以考虑基于时间标记的信息,以及该指令的宽度(包括不同的指令区域、源的信息等)。接着,可以确定,为该指令确定的脆弱性等级或程度是否大于阈值(菱形框35)。该阈值可以根据用途建立,并在某些实施例中,可以是一个根据该处理器效率所要达到的程度而调整的阈值。若该指令的脆弱性等级低于该阈值,则控制过程进到方框40,其中该指令退出。方法10就如此结束。反之,若在菱形框35中判定,该指令的脆弱性等级大于该阈值,则控制过程进到方框45。这里,该指令可重复执行(方框45)。在某些实施例中,该指令可在处理器的同一序列分段上重现并重新执行或实施,但在另一些实施方式中可设置一个或多个附加的功能单元来重新执行。重新执行后,可将最初的结果与重新执行的结果加以比较,以确定结果是否一致(菱形框50)。若一致,则表明不存在任何瞬态错误,于是,控制过程进到方框40(如前已说明),在其中该指令退出。相反,若在菱形框50中判定为有区别,则控制过程进到方框55。如此,在方框55中指示瞬态错误。这种指示可釆取多种不同的形式,其中包括向处理器的某个控制逻辑元件或其他类似位置发送信号。根椐所指示的错误,采用适当的恢复机制(方框60)。在不同的实施例中,该恢复机制可以不同,并可以包括该指令的重新执行,对处理器的各种装置中的某些或全部进行一次"清洗"或刷新,或采取其它类似的恢复机制。尽管用这个实施例进行了描述,或具体说明了图1的实施例,但应明白,本发明的范围不受此限定。如前所述,这些实施例可在不同的处理器体系结构或结构上实施。为说明之目的,图2是表示本发明一个实施例的一般处理器的体系结构的才匡图。如图2所示,该处理器100可以^^殳于装置外的处理器。但是,本发明的范围不限于此,也可以在该装置内的一个机构上实现另一些实施例。处理器100包括前端110,它可以接收指令信息并将该信息解码为一个或多个显微操作或微操作,以便于执行。前端IIO连接到指令临时组织单元120,它能临时地组织该指令在一些执行单元130中的一个选定单元上执行。这些单元可以改变,而在某些实施例中,它可以是整数、浮点数、单指令多数据(SIMD-"singleinstructionmultipledata")的产生单元和其他类似的执行单元。另一方面,在某些实施例中,可以代表一个或多个按照本发明一个实施例的附加的冗余执行单元,目的是完成逻辑错误的检测。还是参照图2,当这些指令在一个选定的执行单元上执行时,这些指令可以提供给指令退出/验证单元140。该单元140可用来退出指令(它们在处理器的该序列分段内按不同的顺序执行),并在命令中发送根据程序的顺序退出。根据本发明一个实施例,该单元140还可设计成以另外的方式实现逻辑错误的检测。具体地说,在退出的时刻,每一个被判定为其等级或程度大于给定阈值的容易出逻辑错误的指令,例如都可在执行单元230内的一个附加执行单元上重新执行。根据该重新执行的结果,或者确认指令最初的结果并该取指令,或者指示一个逻辑错误并实现适当的恢复机制。尽管用图2的高层次的体系结构作了描述,但应明白,本发明的范围并不受此限定,应考虑到存在各种具体的变化。接着,参照图3即本发明实施例之一的处理器的更详细的框图。如图3所示,处理器200可以包括执行指令用的不同装置。图3所示的处理器200可对应于一个单核处理器,或者,也可以在其他实施例中对应于一个多核处理器中的多个核或许多核中的一个。如图3所示,处理器200可以包括前端210,它包含不同的装置。在图3的实施例中,它可以为ROB215,后者耦合到号码再分配单元220,该单元220得到指令,并在处理器寄存器堆中存在的大量物理寄存器上,在指令内重新分配逻辑寄存器的号码。这些指令可以从号码再分配装置220耦合到轨迹或跟踪高速緩存225,后者连接到用来帮助预测执行分支的分支预测装置230。连接到微指令翻译装置或机器(MITE-"microinstructiontranslationengine:微指令翻译引擎")238,目的是向序列微组织器235提供翻译后的指令,后者本身连接到一个统一的高速緩存240(例如,1级或2级高速緩存)。数据的高速緩存268也可以连接到统一的高速緩存240,还连接到一个装入队列267a和存储队列267b。还是参照图3,可以向执行单元250提供重新编号的指令,执行单元包括提交队列252,它接收输入指令并将它们存储到存储队列和一些功能单元中的一个临时组织。提交队列252还连^t妄到一对寄存器堆,即浮点(FP:floatingpoint)寄存器堆254和整数寄存器堆256。当选定的寄存器堆上出现指令所需的源数据时,该指令可随着^皮临时组织在一些功能单元之一中而^皮执行,为便于说明,在图3上表示为两个。具体地说,可以有第一执行单元260和第二执行单元265,它们可以分别对应于一个浮点逻辑单元或一个整数逻辑单元。该指令的执行结果可以经由互连网络270传输到不同位置。例如,在给定的体系结构中,所得到的数据可以送回寄存器堆254和256、装入队列267a、存储队列267b和/或可在返回时提供给ROB215。另一方面,所得到的数据可以提供给指令验证单元280。根据本发明的一个实施例,该单元280可以实现对逻辑错误的检测。如上所述,指令验证单元280可连接到互连网络270,此外,还可连接到ROB215。在不同的实施例中,指令验证单元280可以包括不同的装置,其中包括具有类似于ROB215的配置的中间存储寄存器。在一个实施例中,指令验证单元280可以包括重新核查源的中间存储寄存器(RSB-"rechecksourcebuffer:复查源緩冲器"),它可以是ROB215的扩展。就是说,RSB可以是一个具有先进先出(FIFO-"first-in-first-out")结构的中间存储寄存器,它包括与ROB215相同的条目数。在其他实施例中,用以验证指令的中间存储寄存器可以简单地充当ROB215。在一个实施例中,ROB215的各个条目(正如指令验证单元280中的中间存储寄存器那样,如果存在)可以釆取以下给出的表l中说明的方式表l<table>tableseeoriginaldocumentpage12</column></row><table>如表1所示,ROB215的每个条目可以包括不同的区域。具体地说,又如表1所示,每个条目可包括一个可对应于微操作或显微操作的指令区域。此外,每个条目可以包括源标签,目的是识别所需要的数据位置。另外,每个条目可以包括一个时间戳或时间标记,用以指示该输入在ROB215建立的瞬间。最后,如表1所示,每个条目可以包括一个结果区域,其中存储该指令的结果。尽管用此实施例并以具体的表1的实现方式作了描述,但应明白,本发明的范围不限于此,而且ROB或RSB的条目可以包括附加的或不同的区域。指令验证单元280此外还可包括其专用于执行选定的指令的适当的功能单元285(或者,也可使用现有的可用功能单元)。RSB可为指令的全体保存所产生的结果值、备选码和该指令的源标签,以在指令实现的时刻查验该指令的结果(或方向,若涉及存储操作或分支),看该指令是否识别为脆弱的。为了实现逻辑错误的检测,指令验证单元280可另外包括微控制器、逻辑部件或其它装置。具体地说,该装置可以接收一条指令,例如在实现的时刻接收,并为该指令确定脆弱性量度。尽管这种脆弱性量度可以釆取许多不同的形式,但是在一个实施例中,指令验证单元280可根据下式计算而确定该指令脆弱性的程度或等级指令的脆弱性等级=占用的位区域x使用的时间(式1)该指令的脆弱性等级可根据该指令所占用的位区域,包括它的源识别符、目的地识别符等不同的区域,乘以该指令所使用的处理器时间,例如,这可以对应于该指令在该处理器上使用的时间,例如,根据一个时间标记测量,从该指令最初插入ROB215起直至该指令实现的时间。在其他实施例中,脆弱性的量度可根据占用的位区域和所使用的时间中的一个或这些值的不同组合来确定。指令的这种脆弱性等级可与一个阔值比较。作为实用示例,假定阈值为1,000。若平均一条指令覆盖50位的脆弱位空间,则在提交队列中经过20多个周期的任何一条指令均通过选择性重现而被重新执行。对于一长串从属关系或长等待时间的运行,诸如浮点除法,这样的延迟是适当的。在不同的实施例中,该阈值可以在很宽的范围内变化。例如,零阈值引起全部指令的重新执行,而大的阈值(例如5,000)可仅使小部分(例如低于10%)指令重新执行。在一个实施例中,可釆用一个适当的折衷阈值1,000。如果脆弱性等级低于阈值而不一致,则该指令就正常执行,且指令验证单元280不进行任何附加动作。如果不是如此,而是确定指令的脆弱性等级高于所选的阔值,则该指令对瞬态错误具有^^大的脆弱性。如果该指令的脆弱性值高,这意味着该指令占用大量的位和/或会较长时间地在部件中通过,这使得该指令脆弱性大。在各种不同实施例中,恰好重复这些指令来应对超出所选脆弱性阈值的情况。以这样的方式,通过重复最少的指令来实现最大量的错误覆盖。在取指令的过程中进行指令的脆弱性分析时,通过过滤而去除哪些非体系结构上正确执行(ACE-"architecturallycorrectexecution")的指令和在到达实现阶段之前就已从序列分段退出的指令。如此,在得到指令的瞬间就可很精确地收集到指令的脆弱性信息,正确地了解该指令在处理器内移动的时间量以及占用的空间量。在不同的实施例中,指令验证单元280可在取得该指令的信息时重新执行该指令,取得该指令的源数据并将其提供给与指令验证单元280相关的一个或多个附加功能单元85。在不同的实施例中,脆弱的指令通过使用存储在RSB内的信息执行或重新执行。在一个实施例中,源寄存器标签存储在RSB中,并用来存取寄存器堆254和256,以便为其验证而收集源数据。为了验证目的,这些寄存器堆可包括两个附加的存取或读出端口(每个源操作数一个端口)。供选定重新执行用的存取寄存器堆254和256可用这种方式,来覆盖在该指令处于提交队列252内而源标签对于粒子撞击具脆弱性时产生的错误。备选方案是,源的值可在第一次读出时存入RSB,以免在寄存器堆上具有附加的端口。指令重新执行的结果重新送回到指令验证单元280,在那里该重新执行的结果与最初的结果比较。若两个结果一致,则指令验证单元280上不采取任何附加动作而退出该指令。但是,若这些结果不一致,则表明出现一个瞬态错误,指令验证单元280可向处理器200内一个或多个位置发出逻辑错误的信号。在这一瞬间,处理器200可以实现一个错误恢复机制。例如,若两个结果不一致,则指令验证单元280可以启动一次处理器刷新,从失效的指令开始重新执行。尽管用具体为图3是实现方式的这个实施例作了描述,但应明白,本发明的范围不限于此。在某些实施例中可以有一些优化。可以不从ROB的头部(cabecera)或在其他的退出位置唯一地验证该指令,而在每个周期中验证一个以上的指令。另一方面,可以在实践中采用多个阈值和一个效率量度,用以识别由于该验证而使处理器效率损失的一些时间期间。在这样的时间期间,只重新执行十分脆弱的指令。作为其示例,在效率低的时间,该阈值可以设置得更高,以降低提交重新执行的指令数。另外,可使用自适应的阈值等级,它根据处理器的状态(例如,4昔误成本或比例、效率、能力等)修改。因此,取决于处理器给定状态,可以从若干个不同的脆弱性阈值中选择一个与算出的指令脆弱性值进行比较。在某些实施例中,可以利用根据本发明的一个实施例的错误检测,与诸如刷新和重新初始化或窄值识别等脆弱性减少技术结合。一个序列分段的刷新和重新初始化,例如在集成电路或芯片外部的高速緩存失效之后,可降低大量指令对瞬态错误的脆弱性,缩短在提交队列内通过的时间,并可因此减少通过瞬态错误的检测而重新执行的指令数。此外,可以建立更低的阈值等级,以在实施刷新和重新初始化机制或其他脆弱性降低技术时,提高错误覆盖面。可以在多个不同的系统类型上实现这些实施例。接着,参照图4,该图是说明根据本发明的一个实施例的多处理器系统的框图。如图4所示,该多处理器系统是一个点到点互连系统,并包括经由点到点互连450连接的第一处理器470和第二处理器480,但在其他实施例中可采用其他形式的互连。如图4所示,处理器470和480中的每一个都可以是多核处理器,包括处理器的第一和第二核(即处理器核474a和474b,以及处理器核484a和484b)。尽管在该图中为了简明起见而没有示出,但根据本发明的一个实施例,笫一处理器470和笫二处理器480(具体地说,其内部的核)可以包括识别和验证脆弱指令的逻辑元件来检测逻辑错误。第一处理器470还包括一个存储器的集中与控制装置(MCH-"memorycontrollerhub:内存控制集线器")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-"AdvancedGraphicsPort:高级图形端口")439来连接图形发生装置438和芯片装置490。AGP总线439符合1998年5月4日由加利福尼亚SantaClara的IntelCorporation出版的图形加速端口4妄口头见格(修改版2.0)(Es/e")7<%fc/d"<ieZ她/^z<ie/we他血gr浙cosace/erad叫i^v/w'dw20)。作为另一方案,点到点互连439可以连接这些部件。而芯片装置490可以经由接口496连接到第一总线416。在一个实施例中,第一总线416可以是根据注明日期为1995年6月的修改版2.7)的PC1局部总线规格的外围部件互连总线(PCI-"PeripheralComponentInterconnect:外围部件互连"),或者是一个诸如PCI快速总线或其他输入/输出(1/0)互连总线等总线,^(旦本发明的范围不限于此。如图4所示,连同将第一总线416连接到第二总线420的总线桥418,可以将不同的输7v/输出装置414连接到第一总线416,在一个实施例中,第二总线420可以是引线数少(LPC-"lowpincount:低引线数)的总线。可以将不同的装置,例如,包括键盘/鼠标422、通信装置426和数据存储单元连接到第二总线420,在一个实施例中,可以包括编码430。此外,可以将音频输入/输出连"J妻到第二总线420。注意,也可以采用其他体系结构。例如,可以不用图4的点到点体系结构,一个系统可以实现分支或多端点的总线或者类似的体系结构。另一方面,应该明白,在不同的实施例中,可以实现不同的处理器结构和不同的指令选择性重现方式。在某些实施例中,指令可以在在指令可能要退出和实际上退出之间的时间窗口内重新进行选择性执行。可以用不同方式进行所述的指令选择性重新提交。接着,参照图5,该图是表示根据本发明的一个实施例对指令进行选择性重新执行的处理器的一部分的框图。如图5所示,处理器500包括一个提交队列510,该队列通过内部总线505连接以接收下一指令。如图5所示,另外还可连接一个选择队列520来接收下一指令。再有,这些指令还可提供给ROB515。如图5所示的附加方式,提交队列510和选择队列520连接到选择器525,它可以从这些队列选择一条指令,以将其传送到寄存器堆530,它本身又可以连接到一个或多个执行单元540。如图5所示,执行单元540另外还连接到ROB515。只要有一个用来"t丸行的端口,就可从选择队列520发送并执行一条指令(提交队列510中的其副本(contrapartida)已被发送)。当一条指令执行结束时,结果存储在ROB515中。当该指令完成重复执行时,其结果与最初存储的结果比较,以进行验证。若ROB515的头部对实现就绪,但未被确认,则可以中断或中止该实现。在某些实施例中,ROB515可以给每个条目增加某个区域(例如,一个比较位、一个确认位、一个错误检测位,以及存储该结果用的位)。但是,在其他实施例中,可使用一组不同的排序进行上述存储,当将ROB的一个条目分配给一条新的指令时,重新建立该条目的附加区域。当该指令结束其执行时,将其结果写入kOB515。当最初的指令完成时,该结果可以写入并建立比较位。接着,第二条指令(即重现指令)在执行时遇到该已建立的比较位,并使存储的值与该重新执行的结果比较并在ROB的条目上建立一个确认位。比较结果存储在该错误检测位上,以指示结果是否一致。作为比较位的备选分案,可以是一个与该指令关联的位,用以识别所涉及的是最初的指令还是重现的指令。也正如前面阐明的,当一条指令位于提交队列510时,也存储在该选择队列520中。存在于选择队列520的各个条目可以包括任选的编码、源标签(用以从该寄存器堆530读出源数据(fbentes))、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的条目上重新建立4昔误检测位。在某些实施例中,可以用时间(例如,借助于时间戳或时间标记)作为脆弱性值,代替区域与时间的乘积。为了确认之目的,如前说明,ROB515的每个条目都可包含一个确认位。若尚未建立该确认位,则该指令实现可以中止来等待确i^。即使该确认位符合,该指令只是在其错误检测位已建立时对其实现就绪。在其错误检测位已建立的情况下,可采取不同的动作。例如,可以刷新该序列分段,以重新执行该失效的指令,或引起一个异常。对于分支预测失败,可以清除在提交队列510和选择队列520中未^皮确认的条目。可用在提交队列510上使用的同一机制来清除选择队列520的条目。注意,冗余硬件本身可能易受粒子撞击。但是,其脆弱性为零。就是说,若与选择队列520产生撞击,则执行一条错指令,该指令可能给出一个虚假的正确。撞击可能击中ROB条目指示符或ROB515确认位,这可能造成僵局,因为ROB515的头部等待祐—确认。这或者可以通过选择队列520的进入ROB的条目识别符的对比加以保护,或者增加一个自动发现失效的定时器来消除,而且若该指令的实现在多于给定周期数的期间被中止,则该指令可以^皮删除并重新初始化。这些实施例可以用编码实现并且可以存储在存储该指令的存储介质中,可以利用来对系统进行编程,以实施这些指令。存储^h质可以包括但不限于软盘、光盘、CD只读存储器(CD-ROM)、可重写CD(CD-RW)、磁光盘等任何类型的盘片;如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等随机访问存储器(RAM)、诸如可擦可编程只读存储器(EPROM)、脉冲刷新存储器、电可擦除可编程只读存储器(EEPROM)等半导体器件;磁卡或光卡;或任何其他类型适宜于存储电子指令的介质。尽管本发明联系数量有限的实施例进行了描述,但本领域技术人员由此出发当会意识到大量的修改或改变。本权利要求书拟覆盖所有本发明的真实精神和范围内的修改和变化。权利要求1.一种方法,包括确定在处理器中实现或执行的一条指令的脆弱性程度或等级,以使所述脆弱性等级对应于所述指令出现逻辑错误的几率;以及若所述脆弱性等级超出某个阈值,则重新执行所述指令。2.根据权利要求l的方法,还包括在与已执行了该指令的处理器的第一执行单元不同的处理器执行单元上重新执行所述指令。3.根据权利要求l的方法,还包括若所述脆弱性等级^f氐于所述阈值,则不重新执行所述指令。4.根据权利要求l的方法,还包括根据所述指令占用的处理器区域和与所述指令的生存时间相关联的时间周期这二者中的至少其一,确定所述脆弱性等级。5.根据权利要求4的方法,还包括用一个与所述指令相关联的时间戳或时间标记来确定所述时间周期。6.根据权利要求l的方法,还包括确定重新执行所述指令的结果是否与所述指令的结果一致;若不一致则刷新所述处理器。7.—种装置,包括至少一个寄存器堆和至少一个连接到所述至少一个寄存器堆的执行单元;以及一个指令验证单元,用来确定对于由所述执行单元执-f亍的所述指令的瞬态错误的脆弱性。8.根据权利要求7的装置,其中,所述指令验证单元包括中间存储寄存器,用来存储指令和相关联的源数据的标签;以及至少一个执行单元,连接到所述中间存储寄存器以重新执行一些脆弱指令。9.根据权利要求8的装置,其中,所述指令验证单元还包括逻辑元件,用以根据所述指令用的区域值和所述指令用的时间值这二者中的至少其一,确定一条指令的脆弱性程度或等级。10.根据权利要求9的装置,其中,所述逻辑元件根据与该指令相关联的时间戳或时间标记确定所述时间值。11.根据权利要求9的装置,其中,若所述脆弱性等级大于某一阈值,则所述逻辑元件将所述指令提供给至少一个执行单元以将它重新执行。12.根据权利要求ll的装置,其中,所述阈值可根据选定的处理效率调整,使所述阈值设定得更高而适合于更高的处理效率等级。13.根据权利要求ll的装置,还包括一个指令退出单元,以在所述指令的重新执行与指令的最初执行相一致时,由所述取指令退出单元退出该指令。14.一种制品,包括机器可读存储介质并包含一些指令,这些指令若由机器实现或执行则使所述机器完成包括如下步骤的方法在处理器中执行一条指令,以获得初始结果;在所述指令对瞬态错误脆弱的情况下,在处理器中重新执行一条指令,以取得重新执行的结果;以及将所述初始结果与所述重新执行的结果进^f亍比较。15.根据权利要求14的制品,其中,所述方法还包括在所述指令对所述逻辑错误不脆弱的情况下,在指令退出阶段退出所述指令而不重新执行所述指令。16.根据权利要求14的制品,其中,所述方法还包括若所述比專交表明不相一致,则刷新所述处理器。17.根据权利要求14的制品,其中,所述方法还包括根椐所述指令的耗用区域和所述指令在所述处理器上的持续时间这二者中的至少其一,确定所述指令是否对逻辑错误脆弱。18.根据权利要求17的制品,其中,所述方法还包括用所述区域和所述持续时间计算脆弱性值;并将所述脆弱性值与某一阈值比较,并根据所述比较确定是否重新执行该指令。19.一种系统,包括处理器,包含至少一个用以执行一条指令的执行单元,以使得所述处理器还包含一个冗余执行单元,用来在所述指令对瞬态错误脆弱的情况下重新执行所述指令;以及动态随机存取存储器(DRAM),连接于所述处理器。20.根据权利要求19的系统,其中,所述处理器还包含一个指令验证器,用来量化所述指令对瞬态错误的脆弱性。21.根据权利要求20的系统,其中,所迷指令验证器根据所述指令大小和所述指令在该处理器中的生存时间这二者中的至少其一,确定是否重新执行所述指令。22.根据权利要求21的系统,其中,所述指令验证器将基于所述指令大小和所述生存时间的所述指令的脆弱性值与某一阈值比较,若所述脆弱性值大于所述阈值,就启动所述重新执行。23.根据权利要求22的系统,其中,所述阈值是一个自适应阈值,且所述系统根据选定的处理效率来调整所述阈值。24.根据权利要求22的系统,其中,若所述处理器实施减少一些指令的脆弱性的技术,则所述系统一定会降低所述阈值。25.根据权利要求20的系统,其中,所述指令验证器须在所述指令退出阶段确定是否要重新执行所述指令。26.根据权利要求20的系统,其中,所述指令验证器包含中间存储寄存器,用来存储与在所述处理器上执行的指令对应的一些条目。27.根据权利要求26的系统,其中,所述一些条目包含与相应的指令插入所述处理器的瞬间对应的时间标记区域。28.根据权利要求27的系统,其中,所述指令验证器用时间标记区域来确定是否要重新执行所述指令。29.根据权利要求19的系统,其中,在所述指令重新^l行的结果与所述指令的结果不一致的情况下,所述系统刷新所述处理器的至少一部分。全文摘要在一个实施例中,本发明包括一种方法,用来确定一条由处理器执行的指令的脆弱性程度或等级,并若该脆弱性等级超出某一阈值,用来重新执行该指令。该脆弱性等级可以对应于该指令在处于处理器内时出现逻辑错误的几率。描述了其他实施例并提出了权利要求。文档编号G06F11/14GK101416163SQ200680054141公开日2009年4月22日申请日期2006年3月31日优先权日2006年3月31日发明者A·冈萨雷斯,J·阿韦拉,O·埃尔京,O·昂萨尔,X·贝拉申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1