用于降低微处理器内的虚假差错检测的方法和装置的制作方法

文档序号:6656100阅读:122来源:国知局
专利名称:用于降低微处理器内的虚假差错检测的方法和装置的制作方法
相关申请本申请涉及下列在同一日提交的共同转让、共同待决的申请2004年6月17日提交的题为“Reducing False Error Detection In A Microprocessor By TrackingInstructions Neutral To Errors”的第_号申请;以及2004年6月17日提交的题为“Reducing False Error Detection In A Microprocessor By Tracking DynamicallyDead instructions”的第_号申请。
背景技术
由于中子和α粒子轰击而引起的瞬时出错日益成为未来处理技术中增加处理器晶体管数量的巨大障碍。虽然个别晶体管的出错率可能不会明显增加,但是将更多晶体管结合成一个设备就会导致该设备遭遇出错的可能性增大。结果,预料到将需要更多的设计努力才能把处理器差错率保持在可接受水平。
由瞬时出错导致的单比特翻转已经成为当今微处理器设计的一大关键难题。这些出错是由诸如来自宇宙射线的中子和来自封装材料的α粒子之类的高能粒子所产生的。晶体管的源极和扩散节点会收集这些电荷。足量的聚集的电荷会翻转诸如SRAM单元、锁存器或门之类的逻辑设备状态,从而将逻辑出错引入到电路工作中。因为这一类型的出错并不反映设备的永久故障,所以就称之为软差错或瞬时差错。
随着片上晶体管数目呈指数增加,软差错正成为微处理器设计者愈发沉重的负担。对于下几代技术,每锁存器或SRAM比特的原始差错率被设计成保持大致恒定或略微下降。于是,除非额外的差错保护机制或使用更强有力的技术(诸如,完全耗竭型SOI),否则微处理器的差错率就会与在后续的每一代中添加给处理器的器件数直接成正比地增长。
附图简述本发明的各特征在以下对附图中所示的较佳实施例的描述中显而易见,各附图中类似的标号指代相同的部分。附图无需按比例画出,而是着重示出本发明的原理。


图1是微处理器中出错比特的可能结果的框图。
图2a至2d是示出了当沿着指令流程路径使用pi比特以检测指令中出现的软差错时本发明一个实施例的框图。
图3是示出根据本发明一个实施例的操作的流程图。
图4是示出在其中实现本发明以检测软差错的一个示例性计算机系统的框图。
详细描述在随后的描述中,出于说明而非限制的目的,阐明了诸如特定结构、架构、接口、技术等的具体细节以提供对本发明各方面的全面理解。然而,对从本公开中获益的本领域普通技术人员而言显而易见的是能够使用与这些具体细节不同的其他示例来实现本发明的各方面。在某些实例中,省略了对公知的设备、电路和方法的描述以免用不必要的细节淡化对本发明的描述。
图1示出了微处理器中单比特出错的可能结果。起初,微处理器确定是否读取了出错比特100。如果未读取出错比特110,则认为是良性出错并且无差错。如果读取了出错比特,则处理器接着就确定该比特是否具有差错保护115。当读取出错比特时至少存在三种可能结果。首先,如果对该比特检测到差错保护并对其进行校正,则认为出错被校正120。
其次,如果该比特没有差错保护,则处理器确定该指令是否会影响程序结果125。如果该指令不影响程序结果,则认为该出错比特是良性出错130。因为出错无效果或已被检测到并被校正,所以出错110、120和130都指示非差错状态。
如果该指令确实影响程序结果,则认为这是一个无记载数据讹误(SDC)135。SDC 135是其中出错会诱发系统生成差错输出的最具隐匿性形式的差错。为了避免SDC 135,设计者可以使用诸如奇偶校验等基本差错检测机制。
当比特具有差错保护时的第三种可能结果适用于检测到差错140的情形。使用检测但不校正出错的能力,系统可以避免生成无效输出,但却无法在出现差错时恢复。所以,简单的差错检测虽然无法降低差错率,但却能提供停止故障行为,并由此减少任何数据讹误。此类差错被称为测得的不可恢复差错(DUE)。
还可根据测得的差错是否影响执行的最终输出而进一步细分DUE事件。可将良性测得差错称为假DUE事件145,而将其他的称为真DUE事件150。在微处理器中,对错误路径指令、虚假预测指令、以及包括空操作、预取和动态死指令在内的不影响最终程序状态的正确路径指令的轰击都会导致假DUE事件的产生。
本发明的一个实施例利用一种通过降低瞬时出错引发处理器声明差错条件的可能性的机制来降低差错率。为了跟踪假DUE事件,微处理器把用于可能不正确(Possibly Incorrect)并被称为pi比特的比特附加至每条指令,并由此潜在地附加至各硬件结构。当检测到差错时,硬件就设置受影响指令的pi比特而非发出差错信号。随后,通过检查pi比特并识别该指令的特性,该硬件就能判定是否已经出现可见差错。
区别真假差错的过程很复杂。处理器在它测得差错时可能没有足够的信息来做出这一区别。例如,当指令队列检测到指令上的差错时很可能无从知晓该指令是否是错误路径指令。因此,处理器需要沿着流水线向下传播该差错信息并在其掌握了足够的信息来做出该区分时才引发该差错。
为了在微处理器硬件的不同部分之间传播差错信息,系统使用pi比特。该pi比特在每条指令沿流水线从解码向下流至引退的过程中都与其逻辑上相关联。
图2a至2d示出了当沿着指令流程路径使用pi比特以检测指令中出现的软差错时的一个实施例。对于一条指令来说,当该指令被解码200时,就把pi比特附加至该指令并将其初始化为零。将pi比特清零以指示指令中不存在任何差错。当指令流过流水线205时,它将被变换多次以适应机器并对诸如指令队列等许多不同存储结构进行写和读。
当指令队列210接收到该指令时,它将pi比特连同该指令一起存储。如果该指令累积了一个单比特翻转,则标记一个奇偶校验差错。一检测到差错,指令队列210就将受影响指令的pi比特设置为1,而非引发机器异常检查。随后,该指令就被发出并沿着流水线205向下流。
差错检查和pi比特更新也可以在流水线的多个阶段和/或对指令执行过程中的多个结构使用。差错检验逻辑可以采取奇偶校验器或者已知或其他可用的差错检测技术的形式。此外,差错检测和校正技术可以在上述各阶段或对上述各结构使用,其中pi比特在不可恢复差错的情况下被置位。
最后,指令被提交215。在提交阶段,提交硬件已经掌握了足够的信息来确定该指令是否为错误路径指令。如果是,则处理器就忽略该pi比特,从而避免了在该比特被置位的情况下的假DUE事件。如果不是,则处理器具有在指令提交点215引发机器差错检验的选择权。
只要pi比特能在对象间正确地传播,就能通过对流经流水线205的不同对象附加pi比特来推广pi比特机制。例如,许多微处理器通常一次取出多条指令,这有时被称为组块。组块在解码后才流入流水线前端。可以为每一取出的组块附加pi比特。如果该组块遇到差错,则处理器就将该组块的pi比特置位。随后当该组块被解码成多条指令时,处理器就复制该组块的pi比特值以初始化每条指令的pi比特。这样,处理器就能在各条指令被解码之前使用pi比特来避免流水线前端结构上的假DUE事件。
在另一个实施例中,处理器可以将pi比特信息从指令传送至寄存器,并由此避免寄存器文件内动态死指令导致的假DUE事件。处理器能够将指令的pi比特传送给它写入的目的寄存器,而非在该指令的pi比特被置位时引发差错。如果没有后续指令读取该寄存器,则将不会检验该寄存器的pi比特,因此处理器就能避免写入寄存器的一级动态死(FDD)指令。然而,当后续指令读取pi比特被置位的寄存器时,处理器就可发出差错信号。
可选地,读取该寄存器的指令可以将其全部源寄存器的pi比特和它自己的pi比特进行或运算并沿流水线携带它,而非在寄存器的pi比特被置位时引发上述差错。该实施例可以沿着依赖链传播pi比特,并还允许处理器跟踪传递的动态死(TDD)指令。跟踪TDD指令的一种方法是仅在处理器与存储器系统或I/O设备交互时声明该差错。由此,如果除了高速缓存和主存储器之外在处理器的每一结构中都存在pi比特并且都遵守以上针对pi比特描述的相同的继承规则,则也能够避免TDD指令上的假出错。为了出现上述情形,该系统仅在存储指令220或I/O访问要将其数据提交给高速缓存、存储器系统或I/O设备时才标记差错。这一传播不仅能避免寄存器文件内针对TDD指令的假DUE,还能避免针对随着指令和值流程通过流水线的其他结构的假DUE。
在另一个实施例中,处理器可将来自指令或寄存器的pi比特转换成存储器的值以跟踪诸如存储缓冲器和高速缓存220等存储器结构内的假DUE事件。处理器可以将pi比特附加至每个高速缓存块,并且当存储指令写地址时,处理器能够将该存储指令的pi比特传送至高速缓存块。随后,当负载225读取该高速缓存块时,它就可以检验该pi比特或者将该pi比特传送至它正装载的寄存器213。如果pi比特被传送至寄存器213,则处理器能避免发出引发动态死存储器值超范围的假DUE事件信号。
可选地,如果系统在整个处理器芯片和存储器系统上具有pi比特,则该处理器能够经由存储器跟踪FDD和TDD指令两者的假差错。在这些实例中,仅在处理器做出其pi比特被置位的I/O访问(例如,未被高速缓存的负载或存储)时才引发差错。这能允许设计者在共享存储器的多处理器系统中跟踪跨越多个处理器的差错。
于是,通常说来,pi比特可以被附加至流经流水线的任何对象或被附加至任何硬件结构,但是pi比特的间隔尺寸则依赖具体的实现。例如,如果将pi比特附加至一64比特寄存器的值,则单个pi比特就只能通知64个比特中一个比特具有差错。可选地,如果每个字节就有一个pi比特,则处理器能识别64个比特中哪一字节具有差错。
图3是检测软差错方法的一个实施例的流程图。在这一特定实施例中,流程图300示出了处理器确定一指令是否是错误路径指令的情况。起初,当指令被解码305时,pi比特就与指令相关联310并被初始化为零。通过将pi比特初始化为零,这指示了该指令不存在任何差错。接着,该指令连同其pi比特一起在流水线中排队315。当该指令流经流水线时,它将被多次转换以适应机器,并将对许多不同的存储元件进行读和写。
在指令流经流水线期间,指令可能会累积单比特翻转并且会对该指令标记奇偶校验差错320。如果对该指令检测到差错,则流水线可以将受影响指令的pi比特置为一325而非引发机器检查异常,并且最终提交该指令330。如果未检测到差错,则该指令最终被提交330。提交硬件能在随后确定该指令是否是错误路径指令335。如果确定该指令是错误路径指令,则忽略pi比特340,否则处理器具有是否引发差错(诸如,机器检查差错)的选择权345。
图4示出了用于检测软差错的一个典型系统实现。示出了计算机400,其中处理器405用作构成计算机400的一个或多个中央处理单元(CPU)的唯一处理器或多个处理器中的一个。处理器405通常可被嵌入单个集成电路芯片内。处理器405可以包括含有一个或多个执行单元的执行(处理)核心410。处理器405的一部分可以专用于包括指令处理装置415。指令处理装置415被示为耦合至核心410。
可以根据以上描述在核心410中执行指令以实践本发明。存储器可以是片上(如图中的片上存储器420)或片外(如图中的片外存储器425)的。片上存储器通常可以是高速缓冲存储器或主存储器(RAM)的一部分。片外存储器通常由主存储器(以及片外高速缓存,如果存在的话)以及诸如磁盘存储介质等其他存储器设备组成。片上存储器420和片外存储器425都可以个别地或分离地连接至各种设备,诸如音频接口设备430。然而应该注意到,可以用处理供核心410执行的各指令的其他方法来配置本发明。
pi比特机制通过降低假差错来减少假DUE事件。当缺乏出错检测机制时,这些差错本不会对程序的最终结果造成影响。例如,影响动态死指令结果的一个差错将不会改变最终的程序输出,但仍然会被硬件标记为一差错。为避免发出这些假差错信号,pi比特机制修改流水线的差错检测逻辑以便经由pi比特把受影响的指令和数据标记为可能不正确,而非立即发出差错信号。随后,处理器仅在它稍后确定上述可能不正确的值将影响程序输出时才发出差错信号。
在某些实施例中,pi比特传播差错信息以便在处理器能够确定该差错实际上是假差错还是真差错的稍后的时间点引发该差错。这样,pi比特机制就能将差错的检测与差错的标记分离。这就允许处理器设计者可以选择是使用一个值还是当用于一值的pi比特超范围时引发该差错。
在某些实施例中的其他优点是检测出错的奇偶校验器无需在引发机器检查异常在每个位置上都具有附加硬件。而是可以在pi比特中标出该差错。而提交硬件可以是要求硬件引发机器检查异常的仅有的位置。
在随后的描述中,出于解释而非限制的目的,将阐述诸如特定结构、架构、接口、技术等的具体细节以提供对本发明各方面的全面理解。然而对从本公开中获益的本领域普通技术人员来说显而易见的是可以在与这些具体细节不同的其他示例中实现本发明的各方面。在某些示例中省略了对公知设备、电路和方法的描述以免用不必要的细节淡化本发明所描述的主题。
权利要求
1.一种处理器,包括接收指令的解码模块;与所述指令相关联以标识是否出现了破坏所述指令的比特状态变化的比特,所述差错比特与奇偶校验相关联并随所述指令一起流动;耦合至所述解码模块用以存储所述指令的存储结构;以及耦合至所述存储结构并包含处理所述指令的多个阶段的指令处理单元,其中所述处理器在提交点确定指令是否为错误路径指令。
2.如权利要求1所述的处理器,其特征在于,所述指令被初始化为指示所述指令不存在任何差错的第一值。
3.如权利要求1所述的处理器,其特征在于,所述存储结构是指令队列。
4.如权利要求2所述的处理器,其特征在于,一旦检测到差错,所述存储结构就把所述指令的差错比特置为第二值。
5.如权利要求4所述的处理器,其特征在于,所述指令和所述比特将流经所述多个阶段。
6.如权利要求5所述的处理器,其特征在于,所述指令以所述比特为为第二值的状态提交。
7.如权利要求6所述的处理器,其特征在于,如果所述指令是错误路径指令,则所述处理器忽略所述比特。
8.如权利要求6所述的处理器,其特征在于,如果所述指令不是错误路径指令,则所述处理器引发机器检查差错。
9.如权利要求1所述的处理器,其特征在于,所述指令可以是组块,并且每个取出的组块都附加有一比特。
10.如权利要求9所述的处理器,其特征在于,所述组块被解码成多条指令,所述处理器把所述组块的比特值复制到所述多条指令中的每一条。
11.如权利要求1所述的处理器,其特征在于,所述处理器将所述指令的比特传送给目的寄存器。
12.如权利要求11所述的处理器,其特征在于,如果没有后续指令读取所述目的寄存器,则将不检查所述寄存器的比特。
13.如权利要求11所述的处理器,其特征在于,全部所述指令源寄存器的比特都与所述指令自己的比特在逻辑上进行或运算以提供单个比特。
14.如权利要求1所述的处理器,其特征在于,所述处理器把所述比特从指令传送至存储器模块。
15.如权利要求14所述的处理器,其特征在于,所述处理器将一比特附加至每个高速缓存块,一旦存储指令写入一地址,所述处理器就把所述存储指令的比特传送给所述高速缓存块。
16.如权利要求14所述的处理器,其特征在于,一负载读取所述高速缓存块以检查所述比特或者将所述比特传送至它正装载的所述寄存器。
17.如权利要求1所述的处理器,其特征在于,所述比特是pi比特。
18.一种方法,包括解码一指令;连同所述指令一起装载一比特,所述比特与所述指令的奇偶校验相关联;将所述指令排队;通过一流水线的各阶段传播所述指令以处理所述指令;以及在提交点确定所述指令是否为错误路径指令。
19.如权利要求18所述的方法,其特征在于,还包括如果所述指令是错误路径指令则忽略所述比特。
20.如权利要求19所述的方法,其特征在于,还包括如果所述指令不是错误路径指令则引发机器检验差错。
21.一种装置,包括接收条目的解码模块;存储与所述条目相关联的检测比特的存储元件,所述检测比特标识所出现的破坏所述条目的比特状态变化;处理所述条目的指令队列;将所述条目流程通过多个阶段传播的指令流程路径;以及确定条目是否在错误路径上的提交模块。
22.如权利要求21所述的装置,其特征在于,所述检测比特是pi比特。
23.如权利要求22所述的装置,其特征在于,所述检测比特与所述指令的奇偶校验相关联。
24.如权利要求21所述的装置,其特征在于,所述检测比特被初始化为指示所述条目上不存在任何差错的第一值。
25.如权利要求24所述的装置,其特征在于,一旦检测到差错,所述指令队列将所述条目的检测比特置为第二值。
26.如权利要求25所述的装置,其特征在于,所述条目被发出并流经所述指令流程路径的多个阶段。
27.如权利要求25所述的装置,其特征在于,以检测比特为第二值的状态提交所述条目。
28.如权利要求27所述的装置,其特征在于,如果所述提交模块确定所述条目是错误路径条目,则所述装置忽略所述检测比特。
29.如权利要求28所述的装置,其特征在于,如果所述提交模块确定所述条目不是错误路径条目,则所述装置引发机器检查差错。
30.一种系统,包括在取出之前存储条目的片外存储器;耦合至所述片外存储器的处理器,其中所述处理器还包括接收所述条目的解码模块;存储与所述条目相关联的比特的存储元件;处理所述条目的指令队列;将所述条目的流程通过各阶段传播的指令流程路径;以及确定条目是否在错误路径上的提交模块。
31.如权利要求30所述的系统,其特征在于,还包括耦合至所述片外寄存器的音频接口。
32.如权利要求30所述的系统,其特征在于,所述比特是pi比特。
33.如权利要求30所述的系统,其特征在于,所述比特标识是否出现了破坏所述条目的比特状态变化。
34.如权利要求33所述的系统,其特征在于,所述比特状态变化是奇偶性的。
35.如权利要求30所述的系统,其特征在于,所述比特被初始化为指示所述条目上不存在任何差错的第一值。
36.如权利要求35所述的系统,其特征在于,一旦检测到差错,所述指令队列就把所述条目的检测比特置为第二值。
37.如权利要求36所述的系统,其特征在于,所述条目被发出并流经所述指令流程路径的多个阶段。
38.如权利要求36所述的系统,其特征在于,所述条目在所述比特为第二值的状态下提交。
39.如权利要求38所述的系统,其特征在于,如果所述提交模块确定所述条目是错误路径条目,则所述系统忽略所述比特。
40.如权利要求39所述的系统,其特征在于,如果所述提交模块确定所述条目不是错误路径条目,则所述系统引发机器检查差错。
41.如权利要求30所述的系统,其特征在于,还包括片上存储器。
42.如权利要求41所述的系统,其特征在于,还包括耦合至所述片上存储器的音频接口设备。
全文摘要
一种降低微处理器内的虚假差错检测的技术。pi比特随着指令通过指令流程路径传播。当检测到奇偶校验差错时,该pi比特被置位而非引发机器检查异常。一旦到达提交点,处理器就能够确定该指令是否在错误路径上。
文档编号G06F11/14GK1969256SQ200580019724
公开日2007年5月23日 申请日期2005年5月20日 优先权日2004年6月17日
发明者S·慕克吉, J·艾默尔, S·雷恩哈特, C·维弗, M·史密斯 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1