通过跟踪动态死指令来减少微处理器中的虚假差错检测的制作方法

文档序号:6622811阅读:201来源:国知局
专利名称:通过跟踪动态死指令来减少微处理器中的虚假差错检测的制作方法
技术领域
本发明涉及微处理器中的差错(error)检测,具体地说,涉及通过跟踪动态死指令来减少微处理器中的虚假差错检测。
背景技术
由于中子和阿尔发粒子的撞击造成的瞬态故障(fault)正在成为未来处理技术中处理器晶体管数量增多的明显阻碍。虽然个别晶体管的故障率可能不会升高很多,但是向一个器件中加入更多的晶体管就使得该器件更有可能遇到故障。结果,预计将处理器差错率保持在可接受的水平上将需要更多设计方面的努力。
由瞬态故障引起的单比特翻转已成为今天微处理器设计中很重要的挑战之一。这些故障因带能量粒子而起,例如宇宙射线中的中子以及来自封装材料的阿尔法粒子。晶体管源节点和扩散节点可以收集这些电荷。足够量的累积电荷可以反转逻辑器件(例如SRAM单元、锁存器或者门电路)的状态,从而向电路运行中引入逻辑故障。因为这一类型的故障并不反映器件的永久失效,所以它被称为软差错或瞬态差错。
随着片上晶体管的数量不断呈指数上升,软差错对于微处理器的设计者而言正成为越来越大的负担。对于下几代技术而言,计划每锁存器或SRAM位的原始差错率要大致保持常数或略微下降。因此,除非有另外的差错保护机制或者使用更具鲁棒性的技术(例如全耗尽型SOI),在接下来的每一代中,微处理器的差错率可能随附加到处理器的器件的数量而成正比地上升。

发明内容
为解决以上问题,本发明提供了一种通过跟踪动态死指令来减少微处理器中的虚假差错检测的技术。当一条指令提交(commit)时,它被接着存储在PET缓冲区中。当所述指令正在从PET缓冲区中被移出(removed)时,而不是在提交时刻,处理器可以当时宣告机器检验差错。处理器可以扫描PET缓冲区,以确定所述指令是不是动态死指令。这进一步使得处理器能够减少虚假肯定。
根据本发明的一个方面,提供了一种方法,包括提交指令;在缓冲区中存储所述指令;判断所述指令是不是动态死指令;从所述缓冲区中移出所述指令;以及如果指令不是动态死指令,则引发差错。在所述方法中,从所述缓冲区中移出所述指令还包括检验所述指令的某一位的状态;以及如果所述位被置位,则检查其他指令。所述的检查其他指令还包括判断所述其他指令在插入的读取之前是否将覆写所移出指令的结果;以及如果所述指令的结果不被覆写,则引发差错。
根据本发明的另一个方面,提供了一种处理器,包括提交指令的提交模块;以及耦合到所述提交模块的缓冲区,该缓冲区用于存储所述指令,其中如果所述指令不是动态死指令的话,响应于从所述缓冲区中移出所述指令,所述处理器引发差错。
根据本发明的又一个方面,提供了一种装置,包括对条目进行译码的译码模块;与所述条目相关联的位;耦合到所述译码模块的流水线,该流水线传播条目流通过多个阶段;耦合到所述流水线的提交模块,该模块提交所述条目;以及耦合到所述提交模块的缓冲区,该缓冲区在所述条目被提交后存储所述条目。
根据本发明的再一个方面,提供了一种系统,包括在条目取出之前存储条目的片外存储器;以及耦合到所述片外存储器的处理器,其中所述处理器还包括对条目进行译码的译码模块;与所述条目相关联的位;耦合到所述译码模块的流水线,该流水线传播条目流通过多个阶段;耦合到所述流水线的提交模块,该模块提交所述条目;以及耦合到所述提交模块的缓冲区,该缓冲区在所述条目被提交后存储所述条目。


参考附图,根据以下对优选实施方案的描述,将会清楚本发明的各种特征,在整个附图中一般用相同的标号来表示相同的部分。附图不一定是按比例绘制的,重点放在说明本发明的原理上。
图1是微处理器中的故障位的可能结果的框图。
图2是图示了本发明一种具有差错跟踪缓冲区用以在指令提交后存储它们的实施方案的框图。
图3是图示了将指令从图2的差错跟踪缓冲区中逐出的框图。
图4是图示了在存储和加载请求期间本发明的另一实施方案的框图。
图5是图示了根据本发明一种实施方案的操作的流程图。
图6是图示了实现本发明以检测软差错的示例性计算机系统的框图。
具体实施例方式
在以下描述中,出于解释而非限制的目的,阐述了很多具体的细节,例如具体的结构、体系结构、接口、技术等,以提供对本发明各个方面的完整理解。然而,获知本发明公开内容的本领域的技术人员将会清楚,在不偏离这些具体细节的其他实施例中也可以实现本发明的各个方面。此外,忽略了对公知的器件、电路和方法的描述,以免因不必要的细节而模糊了对本发明的说明。
图1图示了微处理器中单个位故障的可能结果。一开始,微处理器确定是否已读出了故障位100。如果故障位未被读出110,则它被认为是一个良性故障,因而没有差错。如果已读出了故障位,则处理器接下来确定该位是否具有差错保护115。当读出故障位时,至少有三种可能的结果。首先,如果对于该位检测到差错保护并进行了校正,则认为所述故障已被校正120。
第二,如果所述位不具有差错保护,则处理器判断指令是否会影响程序的结果125。如果指令不影响程序的结果,则故障位被认为是一个良性故障130。故障110、120和130全都表示非差错条件,因为该故障没有什么影响,或者已被检测出来并被校正。
如果指令的确影响程序的结果,则它被认为是一个沉寂(silent)数据破坏(SDC)135。SDC 135是一种最可怕形式的差错,在这种情况下,故障导致系统生成错误的输出。为了避免SDC 135,设计者可以采用基本的差错检测机制,例如奇偶检验。
第三种可能的结果是当位具有差错保护时,检测出差错的情况140。具有检测故障但不校正它的能力,系统就可以避免生成无效的输出,但是当差错发生时不能恢复。因此,单纯的差错检测不会减小差错率,但是能够提供故障终止的行为,从而可减少任何数据破坏。这些类型的差错被称为可检测但无法恢复的差错(DUE)。
根据检测出的差错是否会影响执行的最终结果,DUE事件又被进一步划分。检测出的良性差错被称为虚假DUE事件145,其他的则被称为真实DUE事件150。在微处理器中,虚假DUE事件可能因对错误路径指令、虚假预测指令的撞击以及对正确路径指令的撞击而产生,所述正确路径指令是指不影响最终程序状态的指令,包括无操作指令、预取指令和动态死指令。
为了跟踪虚假DUE事件,微处理器可以将一个被称为pi(即,可能不正确的)位的位附加到每条指令,并潜在地附加到各种硬件结构(在相关申请中有详细的论述)。当检测出差错时,硬件将对受影响指令的pi位进行置位,而不是发信令通知该差错。随后,通过检查pi位并且识别所述指令的特性,硬件可以判定是否真的发生了可见差错。
区分虚假差错和真实差错是复杂的。处理器在它检测出差错的时候可能没有足够的信息来进行区分。例如,当指令队列在一条指令上检测到差错时,它也许无法判断该指令是否原是一条错误路径指令。结果,处理器可能需要将所述差错信息沿流水线向下传播,并且在它有足够的信息进行区分时才唤起所述差错。
为了在微处理器硬件的不同部分之间传播差错信息,系统利用了pi位。当指令沿流水线从译码到退休(retirement)向下流动时,pi位与每条指令相互逻辑关联。
pi位机制有助于避免因故障检测机制(例如奇偶检验)而产生的虚假肯定匹配。具体地说,对于一条指令,当指令被译码200时,pi位被附加到该指令,并被初始化为0以表示该指令还未遇到任何差错。当所述指令流过流水线205时,它将被变换多次以适于机器,并被写入很多不同的存储结构并从中读出。如果这些存储结构210具有某种形式的故障检测,例如奇偶检验,并且所述指令积累了单比特翻转,则标记出奇偶差错。通常,这将引发一次机器检验例外,一般会使所述机器崩溃。这里,不再造成机器崩溃,处理器通过将pi位的值改变为1,而在pi位中公告这一差错。
在流水线205的提交阶段215,提交硬件有足够的信息来判断指令是一个错误路径指令、虚假预测指令还是NOP指令。在这些情形中,处理器不会引发机器检验例外,而会让机器继续正常运行。但是,在其他情形中,可能已存在了真实差错,必须引发机器检验例外。
pi位(在相关申请中有详细讨论)善于在硬件结构之间传播(潜在的)差错信息,从而延迟机器检验例外,一直到机器必须完全地宣告所述差错。然而,pi位自身不能断定某一具体结构是否遇到了故障,以及所述故障是否最终将对用户可见。pi位机制有赖于差错检测技术,例如奇偶检验来检测单比特翻转。反pi位(在相关申请中有详细讨论)和提交后差错跟踪(PET)缓冲区这两种技术可以帮助pi位机制来识别某些情形,在这些情形中故障实际上将不会表明自己是对用户可见的差错。
在微处理器中有很多实例,在这些实例中某些指令类型上的故障不会导致差错。反pi位跟踪对差错中立的指令和硬件活动。当和pi位组合在一起时,反pi位有助于进一步减小虚假差错检测率。例如,对NOP指令的非操作码位的撞击通常不会产生对用户可见的差错。类似地,对预取指令或分支预测提示指令的撞击也不会引起差错,这两种指令典型地将增强微处理器的性能,而又不影响其正确性。这样的指令是对差错中立的。反pi位跟踪穿过流水线的指令并减少虚假肯定的次数。
即便在不是性能增强指令或NOP的提交指令流中,也有大量这样的实例,其中故障不会表明自己是用户可见的差错。这些都是从动态死指令中产生的,所述动态死指令的目的寄存器在任何插入使用之前都被重写。
这篇申请描述了另一种进一步减少虚假肯定的技术。在程序执行过程中,有很多这样的实例,其中指令的结果或目的寄存器再也不会被任何后续指令使用。通常,另一条指令在任何插入指令可以读取所述寄存器之前将对它进行覆写。在这一序列中的第一指令被称为动态死指令(DDI)。动态死指令的大多数位(除了目的指定符位以外)上的故障都不会导致用户可见的差错。
与错误路径指令不同,当一条指令提交时,系统并不知道该指令是不是动态死指令。将要提交的指令是不是动态死指令,这取决于其目的寄存器的未来使用,而这在提交时还不可知。因此,即使指令是动态死指令,如果pi位被置位的话,系统也可能不得不引发机器检验例外。
图2图示了允许跟踪DDI的PET缓冲区(buffer)的一种实施方案。PET缓冲区使得硬件可减少虚假宣告的动态死指令上差错的数量。指令即便在提交215后也被存储在PET缓冲区250中。提交可能是指令退休到体系结构状态的时刻。PET缓冲区250可以在指令从流水线的退休阶段中退休后接收这些指令。所述流水线可以是有序或乱序的流水线。例如,PET缓冲区250可以从乱序流水线中的重排序缓冲区或其他排序结构接收指令,或者可以从有序机器中的有序退休单元接收指令。
PET缓冲区250例如可以是FIFO缓冲区。有了PET缓冲区250,处理器就可以不在指令的提交时刻215来宣告差错。更准确地,仅当指令必须从PET缓冲区250中移出时,处理器才引发机器检验。当指令就要从PET缓冲区250中被移出时,硬件可以扫描缓冲区以发现有关其未来使用的信息。如果PET缓冲区250帮助确定将从PET缓冲区250中移出的指令是动态死指令,则处理器不必引发差错,即便该指令的pi位被置位。
然而,当指令提交215时,系统没有关于该指令的未来使用的任何信息,因此无法判断该指令是不是死的。因而,在没有PET缓冲区的情况下,如果指令的pi位被置位,则将会由指令的提交时刻215而引发机器检验例外,即便该指令可能随后将证明是动态死指令。
当指令提交215时,指令被输入到PET缓冲区250中。如果在PET缓冲区250中有空间的话,指令可以正常插入,没有问题。如果在PET缓冲区250中没有空间的话,意味着缓冲区已满,则处理器必须在插入指令前必须首先从PET缓冲区250中逐出旧一些的指令。
图3图示了从PET缓冲区250中逐出指令的过程。为了从PET缓冲区250中逐出指令,系统要检验pi位是否被置位。如果是的,那么可能需要在该指令上引发差错,除非该指令被确定为动态死指令。为了判断指令是不是动态死指令,由控制器255来检查PET缓冲区250,以确定是否有任何其他指令将在插入的读取之前覆写其内容(即,覆写这一指令的结果)。控制器255确定将如何解释存储在PET缓冲区250中的数据。
如果当前在PET缓冲区中的指令可能在插入的读取之前覆写将被逐出的指令的结果,则该指令被宣告为动态死指令,这是因为该指令的结果没有被使用。因此,差错可以被抑制。否则,将引发机器检验例外来处理差错。
例如,假设PET缓冲区250是满的。如果将被存储在缓冲区250中的指令是R3=R1+R2。控制器255可以解释缓冲区250中的信息,以确定这个指令(R3=R1+R2)是否可以在插入的读取之前覆写将被逐出的指令的结果。在这种情形中,缓冲区具有R3=0的条目。这个条目将在读取之前被逐出,因而可以由控制器255宣告为动态死指令,因为这一指令的结果将不被使用。因此,这个指令(R3=0)被逐出,并且新指令R3=R1+R2现在被存储在PET缓冲区250中。
至少有三个动态死指令的源通过寄存器、通过存储器以及通过返回。关于从寄存器文件而来的动态死指令,在指令的提交时刻215,处理器可能不知道源操作数是否可能具有潜在的差错。在这种情形中,可以保存一张按寄存器号索引的表。这张表指示出寄存器的最后写入者是否已使其pi位置位。于是,就要提交的指令可以查找所述表,以确定它是否需要检查PET缓冲区中的条目。因而,在没有差错的一般情况中,正在提交的指令无需检查PET缓冲区。
图4图示了避免存储器中数据破坏的一种实施方案。在流水线205中,一旦指令被译码200,pi位就被附加到所述指令,并被初始化为0以表示所述指令还未遇到任何差错。随着指令流经流水线205,它将被转换多次以适于所述机器,并被写入很多不同的存储结构并从中读出。如果存储结构210具有某种形式的故障检测,例如奇偶检验,并且指令累积了单比特翻转,那么将标记出奇偶差错。在流水线205中的提交阶段215,提交硬件有足够的信息来判断所述指令是否遇到了软差错。接下来,所述指令被存储220。
为了避免存储器中的数据破坏,无论何时一条存储指令离开存储缓冲区220,如果它的pi位被置位,则宣告差错。然而,如果pi位没有被置位,则所述存储指令提交其结果。当加载请求到来时,从存储器213中读出所述指令。让存储指令的数据传播到存储器将不会造成数据破坏。这个实施方案实现了关于存储指令的失效停止(fail-stop)模型,因为只要处理器经由存储指令产生了不正确的数据,它就被停止。
可替换地,如果关于每条指令的失效停止模型都需要的话(即,如果指令产生不正确的数据就停止),那么在所有的在前指令已被证明没有差错之前,所述存储指令的数据都绝不会传播到存储器系统。为了获得这一结果,PET缓冲区的大小可能需要受到限制。此外,如果缓存(cache)也包含pi位的话,那么存储数据可以去往缓存。于是,只有当pi位被置位的块从缓存回写到主存储器时,处理器才会引发机器检验例外。
返回是DDI的另外一个源。在具有寄存器窗的体系结构中,一旦从一个过程中返回,由该特定过程产生的所有局部寄存器在返回后都将变成死的。
有利的是,PET缓冲区不仅降低了DUE(检测出的不可恢复的差错)率,而且在一些实施方案中,还允许使用失效停止模型,该模型或者是关于存储指令的,或者是关于每条指令的,这取决于实现者的选择。
图5是图示了检测软差错的方法的一种实施方案的流程图。在这个具体的实施方案中,流程图500图示了处理器判断在动态死亡的指令上是否发生差错的情形。一开始,当指令提交505时,所提交的指令将被输入到PET缓冲区中。然而,首先处理器需要判断PET缓冲区是不是满的510。如果PET缓冲区不是满的,则所提交的指令被存储在缓冲区中515,否则,处理器必须在插入所提交的指令之前首先从PET缓冲区中逐出旧一些的指令。
为了从PET缓冲区中逐出指令,处理器可以首先检验pi位是否被置位520。如果指令的pi位未被置位,意味着在该指令上可能已经引发了差错,则该指令可以从缓冲区525中被移出,并且所提交的指令现在可以被存储在PET缓冲区中530。然而,如果将被移出的指令使其pi位被置位,则处理器可以判断该指令是不是动态死指令535。如果将被移出的指令被确定为动态死指令,则该指令可以从缓冲区中被移出525,并且所提交的指令现在可以被存储在PET缓冲区中535。否则,可以引发差错540。
图6图示了用于检测软差错的一种典型系统实现方式。在所示出的计算机600中,处理器605用作单独一个处理器或者多个处理器之一,包括中央处理单元(CPU)或计算机600的单元。典型地,处理器605被实现为单个集成电路芯片。处理器605可以包括执行(处理)核610,它具有一个或多个执行单元。处理器605的一部分专用于包括指令处理装置615。指令处理装置615被示为与核610耦合。
根据以上描述来实现本发明,以在核610中执行指令。存储器可能位于片上(如片上存储器620所示)或片外(如片外存储器625所示)。典型地,片上存储器可以是缓存存储器或者主存储器(RAM)的一部分。片外存储器一般由主存储器(以及片外缓存,如果有的话)和其他存储设备(例如盘存储介质)组成。然而,要注意的是,可以用其他方式来配置本发明,以处理指令供核610来执行。
在以上描述中,出于解释而非限制的目的,阐述了很多具体的细节,例如具体的结构、体系结构、接口、技术等,以提供对本发明各个方面的完整理解。然而,获知本公开内容的本领域的技术人员将会清楚,也可以在不偏离这些具体细节的其他实施例中实现本发明的各个方面。在某些情况下,省略了对公知设备、电路和方法的描述,以免用不必要的细节模糊了对本发明的描述。
权利要求
1.一种方法,包括提交指令;在缓冲区中存储所述指令;判断所述指令是不是动态死指令;从所述缓冲区中移出所述指令;以及如果指令不是动态死指令,则引发差错。
2.如权利要求1所述的方法,其中从所述缓冲区中移出所述指令的操作还包括检验所述指令的某一位的状态;以及如果所述位被置位,则检查其他指令。
3.如权利要求2所述的方法,其中所述的检查其他指令的步骤还包括判断所述其他指令在插入的读取之前是否将覆写所移出指令的结果;以及如果所述指令的结果不被覆写,则引发差错。
4.一种处理器,包括提交指令的提交模块;以及耦合到所述提交模块的缓冲区,该缓冲区用于存储所述指令,其中如果所述指令不是动态死指令的话,响应于从所述缓冲区中移出所述指令,所述处理器引发差错。
5.如权利要求4所述的处理器,还包括与所述指令相关联的位。
6.如权利要求5所述的处理器,其中所述处理器检查所述位的状态。
7.如权利要求6所述的处理器,其中如果位被置位,则所述处理器检查所述缓冲区中的其他指令。
8.如权利要求7所述的处理器,其中所述处理器判断所述其他指令在插入的读取之前是否将覆写所移出指令的结果。
9.如权利要求8所述的处理器,其中如果所述指令的结果将不被覆写,则所述处理器引发差错。
10.如权利要求5所述的处理器,其中所述位是pi位。
11.如权利要求6所述的处理器,其中所述位由于奇偶差错而被置位。
12.一种装置,包括对条目进行译码的译码模块;与所述条目相关联的位;耦合到所述译码模块的流水线,该流水线传播条目流通过多个阶段;耦合到所述流水线的提交模块,该模块提交所述条目;以及耦合到所述提交模块的缓冲区,该缓冲区在所述条目被提交后存储所述条目。
13.如权利要求12所述的装置,其中所述位是pi位。
14.如权利要求12所述的装置,其中如果所述条目不是动态死条目,则所述装置引发差错。
15.如权利要求12所述的装置,还包括耦合到所述缓冲区的控制器,该控制器解释所述缓冲区中的条目。
16.如权利要求15所述的装置,其中所述控制器在从所述缓冲区中移出所述条目之前,检验所述缓冲区中的其他条目。
17.如权利要求16所述的装置,其中所述控制器判断其他条目在插入的读取之前是否将覆写所述条目的结果。
18.如权利要求17所述的装置,其中如果所述条目的结果将不被覆写,则引发差错。
19.如权利要求12所述的装置,还包括处理所述条目的指令队列。
20.一种系统,包括在条目取出之前存储条目的片外存储器;以及耦合到所述片外存储器的处理器,其中所述处理器还包括对条目进行译码的译码模块;与所述条目相关联的位;耦合到所述译码模块的流水线,该流水线传播条目流通过多个阶段;耦合到所述流水线的提交模块,该模块提交条目;以及耦合到所述提交模块的缓冲区,该缓冲区在所述条目被提交后存储所述条目。
21.如权利要求20所述的系统,还包括耦合到所述片外存储器的音频接口。
22.如权利要求20所述的系统,还包括耦合到所述缓冲区的控制器,该控制器解释所述缓冲区中的所述条目。
23.如权利要求20所述的系统,其中所述位是pi位。
24.如权利要求20所述的系统,其中如果所述条目不是动态死条目,则所述系统引发差错。
25.如权利要求20所述的系统,还包括处理所述条目的指令队列。
26.如权利要求22所述的系统,其中所述控制器在从所述缓冲区中移出所述条目之前检验所述缓冲区中的其他条目。
27.如权利要求26所述的系统,其中所述控制器判断其他条目在插入的读取之前是否将覆写所述条目的结果。
28.如权利要求27所述的系统,其中如果所述条目的结果将不被覆写,则引发差错。
全文摘要
本发明提供的技术通过跟踪动态死指令来减少微处理器中的虚假差错检测。当一条指令提交时,它被接着存储在PET缓冲区中。当所述指令正在从PET缓冲区中被移出时,而不是在提交时刻,处理器可以当时宣告机器检验差错。处理器可以扫描PET缓冲区,以确定所述指令是不是动态死指令。这进一步使得处理器能够减少虚假肯定。
文档编号G06F9/38GK1710533SQ200510076829
公开日2005年12月21日 申请日期2005年6月17日 优先权日2004年6月17日
发明者克里斯托弗·韦弗, 舒布亨杜·穆克赫基, 乔尔·埃默, 史蒂文·莱因哈特 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1