一种基于时间冗余的检验流水线瞬态故障的装置及方法

文档序号:6573257阅读:421来源:国知局
专利名称:一种基于时间冗余的检验流水线瞬态故障的装置及方法
技术领域
本发明涉及微处理器设计领域,特别涉及一种检验微处理器流水线瞬态故障的装置及方法。
背景技术
现有技术中,比如专利号01141495.2,专利名称为“一种基于操作队列复用的指令流水线系统和方法”的中国专利中公开了一种微处理器流水线,该流水线结构包括取指部件、译码部件、操作队列、定点及浮点寄存器堆及多个功能部件。指令流水过程是取指部件访问指令存储器取出指令送入指令寄存器,译码部件将指令译码并送入操作队列,操作队列按次序根据指令的类型将指令发射到相应的功能部件保留站中,指令由功能部件运算后通过结果总线写回到操作队列,最后是指令有序结束,释放占用的操作队列项。
现有技术的不足在于缺乏容错能力,比如对于系统中出现的瞬态故障就容易导致系统失效。瞬态故障是一种在高能粒子辐射、信号串扰或工作电压波动等条件下芯片出现的间歇性故障。它不同于硬故障,具有不可再现性和非永久性,因此又称为软错误。随着晶体管尺寸的不断缩小和芯片工作电压的持续下降,瞬态故障已成为系统失效的主要原因。
一些商用微处理器通过复制硬件来检测流水线中的瞬态故障。例如在390 G5微处理器中,I单元和E单元都有重复的I镜像单元和E镜像单元。在每个时钟周期,R单元和一级Cache单元通过比较I单元与I镜像单元的输出以及E单元与E镜像单元的输出来检测流水线瞬态故障。虽然该技术能够有效地检测出瞬态故障,但是它大大增加了芯片面积,提高了生产成本,参见文献“T.J.Slegel,R.M.Averill III,et al..,IBM’s S/390G5 Microprocessor Design,Micro,IEEE,1999,19(2)12-23.”公开的内容。
鉴于现有技术的不足,人们就希望有一种检验流水线瞬态故障的装置及方法,用于指令流水线从而使其具备容错能力。

发明内容
本发明的目的是解决现有技术中指令流水线缺乏容错能力的技术问题,提供一种基于时间冗余的检验流水线瞬态故障的装置及方法,从而提供高可靠流水线装置。
为了实现上述目的,本发明采取如下技术方案一种基于时间冗余的检验流水线瞬态故障的装置,包括操作队列,与该操作队列连接的寄存器堆,与所述操作队列和所述寄存器堆连接的保留站;所述操作队列中有用于标示主指令和冗余指令的状态位。
在上述技术方案中,进一步地,还包括用于将操作队列中的操作经寄存器重命名及读取操作数后发射到相应的保留站的发射总线,该发射总线中有用于表示发射指令类别的状态位。
在上述技术方案中,进一步地,所述寄存器堆为通用寄存器和浮点寄存器。
在上述技术方案中,进一步地,所述寄存器堆中的每个寄存器包括用于标示当前寄存器的值对主指令有效或者该寄存器正成为某条主指令的结果寄存器而没有写回的主指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的主指令在操作队列中的位置的主指令位置域;用于表示当前寄存器的值对冗余指令有效或者该寄存器正成为某条冗余指令的结果寄存器而没有写回的冗余指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的冗余指令在操作队列中的位置的冗余指令位置域。
在上述技术方案中,进一步地,还包括用于当操作队列中的操作被结束时比较主指令和冗余指令的运算结果是否一致的比较逻辑。
在上述技术方案中,进一步地,还包括用于当操作队列中的操作被结束时把运算结果送到寄存器堆的结束总线,该结束总线有主指令在操作队列中的位置和冗余指令在操作队列中的位置。
一种基于时间冗余的检验流水线瞬态故障的方法,包括如下步骤步骤一,将主指令及其冗余指令送入操作队列;步骤二,操作队列中的操作经寄存器重命名;步骤三,保留站侦听结果总线;步骤四,当保留站中某条指令的所有操作数都准备好时该指令开始运算并把结果通过结果总线写回操作队列;步骤五,检查主指令和冗余指令的运算结果是否一致;如果是一致,则修改处理器状态;如果不一致,则输出异常状态。
在上述技术方案中,进一步地,在步骤一中,通过重复取指或复制指令的方法实现主指令和冗余指令。
在上述技术方案中,进一步地,步骤二具体包括如下步骤(1)一个操作发射时,若该操作是主指令,则相应的目标寄存器的主指令位置域记录该操作在操作队列中的位置,并置主指令有效位为标示该寄存器正成为一主指令的结果寄存器没有写回的状态;若该操作是冗余指令,则相应的目标寄存器的冗余指令位置域记录该操作在操作队列中的位置,并置冗余指令有效位为标示寄存器正成为一冗余指令的结果寄存器没有写回的状态;(2)后面的操作发射时,若该操作是主指令且用到步骤(1)中所述目标寄存器,访问该寄存器时发现该寄存器正成为一条主指令的结果寄存器没有写回,则读出该寄存器中主指令位置域的内容并根据该内容访问操作队列;如果主指令位置域表示的操作队列位置的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,否则把主指令位置域的值送到保留站并在保留站中记录该寄存器未准备好;若该操作是冗余指令且用到步骤(1)中所述目标寄存器,访问该寄存器时发现该寄存器正成为一条冗余指令的结果寄存器没有写回,则读出寄存器中冗余指令位置域的内容并根据该内容访问操作队列,如果冗余指令位置域表示的操作队列位置的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,否则把冗余指令位置域的值送到保留站并在保留站中记录该寄存器未准备好。
在上述技术方案中,进一步地,步骤五中,所述修改处理器状态,具体包括若当前寄存器的主指令位置域等于主指令在操作队列中的位置号,则将主指令有效位置为表示该寄存器的值对主指令有效的状态;若当前寄存器的冗余指令位置域等于冗余指令在操作队列中的位置号,则将冗余指令有效位置为表示该寄存器的值对冗余指令有效的状态。
在上述技术方案中,进一步地,步骤五中,所述输出异常状态是指置起一种特殊例外,该特殊例外具体包括将寄存器堆中所有寄存器的主指令有效位置为表示该寄存器对主指令有效的状态,冗余指令有效位置为表示该寄存器对冗余指令有效的状态;清除流水线中的所有指令,从失效的指令处重新取指执行。
一种能够检验瞬态故障的流水线系统,包括用于取出指令的取指部件;
用于对取出的指令进行译码,并按指令在程序中出现的先后次序把译码后的指令送到操作队列的译码部件;操作队列,用于按指令在程序中出现的先后次序根据操作的类型把操作发射到相应的保留站,并按次序结束运算结果已经写回的指令;用于对发射来的操作进行运算,把运算结果送回到结果总线并写回到操作队列的保留站;寄存器堆,用于在结束指令时,接收由操作队列依照指令进出操作队列的次序写回寄存器的运算结果;用于当操作队列中的操作被结束时把运算结果送到寄存器堆的结束总线;其中,所述操作队列中有用于标示主指令和冗余指令的状态位;所述寄存器堆中的每个寄存器包括用于标示当前寄存器的值对主指令有效或者该寄存器正成为某条主指令的结果寄存器没有写回的主指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的主指令在操作队列中的位置的主指令位置域;用于表示当前寄存器的值对冗余指令有效或者该寄存器正成为某条冗余指令的结果寄存器没有写回的冗余指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的冗余指令在操作队列中的位置的冗余指令位置域;所述结束总线有主指令的操作队列中的位置和冗余指令的操作队列中的位置。
与现有技术相比,本发明具有如下有益效果本发明通过扩展基于操作队列复用的流水结构,能够检测操作队列、保留站及功能部件上发生的瞬态故障,并利用例外机制恢复故障;由于时间冗余技术的硬件开销比较小,因此使得本发明不仅能够使流水线结构具有容错能力,提高微处理器可靠性,而且硬件开销小。


图1是本发明一实施例的装置结构图;图2是用本发明的实施例进行检错过程的实例示意图,图中表示了在各拍中保留站、寄存器堆和操作队列各项的取值。
具体实施例方式
下面结合附图和具体实施方式
对本发明作进一步详细描述
本发明在微处理器指令流水线中采用时间冗余技术,在相同的硬件中通过重复执行指令来克服瞬态故障,保证运算的正确性。如果发现指令的执行结果不一致,就重新执行该指令直到结果一致。
如图1所示,基于时间冗余的检验流水线瞬态故障的装置,包括操作队列,与该操作队列连接的寄存器堆,与所述操作队列和所述寄存器堆连接的保留站;所述操作队列中有用于标示主指令和冗余指令的状态位;与保留站连接的还有一些功能部件,如地址运算及访存接口、算术与逻辑部件、浮点部件等,这些功能部件分别连接到结果总线仲裁逻辑单元,进而通过结果总线连接到操作队列和保留站。
该装置还包括用于将操作队列中的操作经寄存器堆重命名及读取操作数后发射到相应的保留站的发射总线,该发射总线中有用于表示发射指令类别的状态位。
该装置还包括用于当操作队列中的操作被结束时把运算结果送到寄存器堆的结束总线,该结束总线有主指令的操作队列中的位置和冗余指令的操作队列中的位置。
寄存器堆包括通用寄存器和浮点寄存器。寄存器堆中的每个寄存器包括主指令有效位,用于标示当前寄存器的值对主指令有效,或者标示该寄存器正成为某条主指令的结果寄存器,但是结果还没有写入该寄存器;主指令位置域,用于记录最近一个把当前寄存器作为结果寄存器的主指令在操作队列中的位置;冗余指令有效位,用于表示当前寄存器的值对冗余指令有效,或者标示该寄存器正成为某条冗余指令的结果寄存器,但是结果没有写入该寄存器;冗余指令位置域,用于记录最近一个把当前寄存器作为结果寄存器的冗余指令在操作队列中的位置。
该检验流水线瞬态故障的装置还包括用于当操作队列中的操作被结束时比较主指令和冗余指令的运算结果是否一致的比较逻辑。
下面对各部件进一步说明本发明对一个基于操作队列复用的指令流水线结构进行扩展,扩展内容包括操作队列、发射总线、寄存器堆及结束总线。
在操作队列中增加状态位PS,“1”表示主指令,“0”表示冗余指令;这样,操作队列中每一项就包括如下内容·State操作队列状态,2位,“0”表示空,“1”表示相应的操作队列项中有操作但未送到保留站,“2”表示相应的操作已经送到保留站,“3”表示相应的操作已经执行完但未结束。
·OP操作类型,如加、减、移位、取数等。
·Src1源寄存器号1。
·Src2源寄存器号2。
·Dest目标寄存器号。
·Imm指令中的立即数,同时在操作已写回操作队列但未结束时用于临时保存结果,如果发生访存例外也可用于保存虚地址。
·PS“1”表示主指令,“0”表示冗余指令。
·其它。
从操作队列到寄存器堆的发射总线包括如下内容·Valid有效位,“1”表示有效,“0”表示无效。
·Qid正在发射的操作在操作队列中的位置。
·OP操作类型。
·Src1源寄存器号1。
·Src2源寄存器号2。
·Dest目标寄存器号。
·Imm被发射指令的立即数,或移位指令的移位数,或浮点指令的格式域(fmt)。
·Res1与Src1对应的操作数低32位。
·WB1Res1的写回位。
·Res2与Src2对应的操作数低32位。
·WB2Res2的写回位。
·PS“1”表示主指令,“0”表示冗余指令。
从寄存器堆到保留站的发射总线包括如下内容·Valid有效位,“1”表示有效,来自操作队列到寄存器堆的发射总线的Valid部分。
·OP操作类型,来自操作队列到寄存器堆的发射总线的OP部分。
·Qid正在发射的操作在操作队列中的位置,来自操作队列到寄存器堆的发射总线的Qid部分。
·Src1目前没用。
·Src2访存保留站用Src2的前两位确定所存的数是来自通用寄存器还是浮点寄存器。
·Imm在定点和访存指令中表示立即数。来自操作队列。
·Qj源寄存器1的重命名寄存器号。来自通用寄存器。
·Vj源寄存器1操作数的值。来自通用寄存器。
·Qk源寄存器2的重命名寄存器号。来自通用寄存器。
·Vk源寄存器2操作数的值。来自通用寄存器。
·FQj浮点操作的源寄存器1的重命名寄存器号。来自浮点寄存器。
·FVj浮点操作的源寄存器1操作数的值。来自浮点寄存器。
·FQk浮点操作的源寄存器2的重命名寄存器号。来自浮点寄存器。
·FVk浮点操作的源寄存器2操作数的值。来自浮点寄存器。寄存器堆中的每一个寄存器包括如下内容·Value寄存器的值。
·Valid_P有效位,“1”表示该寄存器的值对主指令有效,“0”表示该寄存器正成为某条主指令的结果寄存器而没有将结果写回该寄存器。
·Qid_P当Valid_P位为“1”时该域不用,当Valid_P位为“0”时该域记录最近一个把该寄存器作为结果寄存器的主指令在操作队列中的位置。
·Valid_S有效位,“1”表示该寄存器的值对冗余指令有效,“0”表示该寄存器正成为某条冗余指令的结果寄存器而没有将结果写回该寄存器。
·Qid_S当Valid_S位为“1”时该域不用,当Valid_S位为“0”时该域记录最近一个把该寄存器作为结果寄存器的冗余指令在操作队列中的位置。
操作队列通过结束总线向通用寄存器及浮点寄存器写回结果,结束总线包括如下内容·Valid有效位。
·OP操作码。
·Dest目标寄存器号。
·Qid1主指令的操作队列中的位置。
·Qid2冗余指令的操作队列中的位置。
·Value写回寄存器的结果。
保留站中的每一项包括如下内容
·B忙位,“0”表示相应的保留站项中无操作,″1”表示有操作。
·OP操作类型。
·Qj源寄存器1的寄存器号,比如设置3位或4位,当最高位为“1”时表示数据已经准备好在Vj域中,其余位不用;当最高位为“0”时,其余位表示计算所需数据的操作在操作队列中的位置,用于侦听结果总线,等待计算结果。后面的检测举例中,Qj是设置为3位。
·Vj源寄存器1操作数的值,Qj的最高位为“1”时有效。
·Qk源寄存器2的寄存器号,比如设置3位或4位,当最高位为“1”时表示数据已经准备好在Vk域中,其余位不用;当最高位为“0”时,其余位表示计算所需数据的操作在操作队列中的位置,用于侦听结果总线,等待计算结果。后面的检测举例中,Qk是设置为3位。
·Vk源寄存器2的操作数的值,Qk的最高位为“1”时有效。
·Qid相应操作在操作队列中的位置,用于运算结束时把结果写回操作队列以及侦听总线的保留站接收运算结果,发生例外时用于给操作队列的例外原因等域赋值。
具体实施方式
的检验流水线瞬态故障的方法的步骤如下(1).通过重复取指或在译码阶段复制指令的方法,将主指令及其冗余指令送入操作队列。
(2).一个操作发射时,若该操作是主指令,则相应的目标寄存器Ri(此处Ri是通用寄存器堆中的某一个寄存器,i=0、1、2、或3……)的Qid_P项记录该操作在操作队列中的位置,并置Valid_P为0;若该操作是冗余指令,则相应的目标寄存器(如Ri)的Qid_S项记录该操作在操作队列中的位置,并置Valid_S为0。
(3).后面的操作发射时,若该操作是主指令且用到前一个操作的目标寄存器Ri,访问Ri寄存器时发现Valid_P等于0,则读出Ri中Qid_P内容并根据该内容访问操作队列,如果第Qid_P项的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,如果没有写回则把Qid_P送到保留站并在保留站中记录该寄存器未准备好;若该操作是冗余指令且用到Ri寄存器,访问Ri寄存器时发现Valid_S等于0,则读出Ri中Qid_S内容并根据该内容访问操作队列,如果第Qid_S项的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,如果没有写回则把Qid_S送到保留站并在保留站中记录该寄存器未准备好。
(4).保留站侦听结果总线,当Qid_P或Qid_S项所指示的操作运算结束并把结果送到结果总线时,直接接收结果总线的值作为一个操作数。
(5).当保留站中所有操作数都准备好后开始运算并把结果送到结果总线,通过结果总线将运算结果写回操作队列。
(6).当操作队列中的主指令及其冗余指令都已写回并准备结束时,由比较逻辑检查主指令的运算结果和冗余指令的运算结果是否一致。如果不一致,则置起一种特殊例外,将寄存器堆中所有寄存器的Valid_P位置为1,将Valid_S位置为1,从失效的指令处重新发射执行;如果结果一致,则修改目标寄存器的值,若该寄存器的Qid_P等于主指令在操作队列中的位置号,则将Valid_P位置为1,若该寄存器的Qid_S等于冗余指令在操作队列中的位置号,则将Valid_S位置为1。
下面通过一个例子描述操作队列、寄存器以及保留站在一个检错过程中的功能。图2给出了两对指令执行时操作队列、寄存器、保留站的变化。功能部件的流水线延迟为1拍,即数据在保留站中准备好开始运算后的同一拍结果就出现在结果总线上。这四条指令需要6拍才能执行完成。
1.第一拍,操作队列向保留站发出ADC主指令。置目标寄存器R1的Valid_P域为0,Qid_P域为0,表示R1寄存器的值对于后续的主指令无效,最新值在操作队列的第0项。因为该操作两个源操作数都已准备好,置保留站中的Qj、Qk域为4(即该域最高位为1,表示操作数已经准备好),Vj、Vk域可用,Qid域为0,表示运算结束后把结果写回操作队列的第0项。修改操作队列中的第0项状态为操作已经发出但结果未写回。
2.第二拍,执行ADC主指令,并把执行结果通过结果总线写回操作队列。操作队列的第0项接收操作结果并保存在Imm域,置该操作的状态为等待结束。同时,操作队列向保留站发送ADC冗余指令,置目标寄存器R1的Valid_S域为0,Qid_S域为1,表示R1寄存器的值对于后续的冗余指令无效,最新值在操作队列的第1项。与第一拍类似,修改保留站和操作队列的相应状态。
3.第三拍,执行ADC冗余指令,并把执行结果通过结果总线写回操作队列。操作队列的第1项接收操作结果并保存在Imm域,置该操作的状态为等待结束。同时,操作队列向保留站发送SUB主指令,通过寄存器R1中的Qid_P域从操作队列的第0项中得到一个源操作数,置目标寄存器R1的Valid_P域为0,Qid_P域为2,表示R1寄存器的值对于后续的主指令无效,最新值在操作队列的第2项。与第一拍类似,修改保留站和操作队列的相应状态。
4.第四拍,执行SUB主指令,并把执行结果通过结果总线写回操作队列。操作队列的第2项接收操作结果并保存在Imm域,置该操作的状态为等待结束。同时,操作队列向保留站发送SUB冗余指令,通过寄存器R1的Qid_S域从操作队列的第1项中得到一个源操作数,置目标寄存器R1的Valid_S域为0,Qid_S域为3,表示R1寄存器的值对于后续的冗余指令无效,最新值在操作队列的第3项。与第一拍类似,修改保留站和操作队列的相应状态。同时,ADC主指令及其冗余指令结束,比较操作队列第0项和第1项中的Dest域和Imm域的内容,结果一致,将Imm域的值写回到由Dest域指定的寄存器(即R1)中,释放操作队列的第0项和第1项。
5.第五拍,执行SUB冗余指令,并把执行结果通过结果总线写回操作队列。操作队列的第3项接收操作结果并保存在Imm域,置该操作的状态为等待结束。
6.第六拍,SUB主指令及其冗余指令结束,比较操作队列第2项和第3项中的Dest域和Imm域的内容,结果一致,将Imm域的值写回到由Dest域指定的寄存器(即R1)中,置R1寄存器的Valid_P域为1,Valid_S域为1,表示R1寄存器的值对于以后的主指令和冗余指令都有效。
本发明通过扩展基于操作队列复用的流水结构,能够检测操作队列、保留站及功能部件上发生的瞬态故障,并利用例外机制恢复故障;由于时间冗余技术的硬件开销比较小,因此使得本发明不仅能够使流水线结构具有容错能力,提高微处理器可靠性,而且硬件开销小。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种基于时间冗余的检验流水线瞬态故障的装置,包括操作队列,用于按照指令在程序中出现的先后次序把操作发射到相应的保留站并按照次序结束运算结果已经写回的指令,与该操作队列连接的寄存器堆,与所述操作队列和所述寄存器堆连接的保留站;所述操作队列中有用于标示主指令和冗余指令的状态位。
2.根据权利要求1所述基于时间冗余的检验流水线瞬态故障的装置,其特征是,还包括用于将操作队列中的操作经寄存器重命名及读取操作数后发射到相应的保留站的发射总线,该发射总线中有用于表示发射指令类别的状态位。
3.根据权利要求1所述基于时间冗余的检验流水线瞬态故障的装置,其特征是,所述寄存器堆包括通用寄存器和浮点寄存器。
4.根据权利要求1所述基于时间冗余的检验流水线瞬态故障的装置,其特征是,所述寄存器堆中的每个寄存器包括用于标示当前寄存器的值对主指令有效或者该寄存器正成为某条主指令的结果寄存器而没有写回的主指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的主指令在操作队列中的位置的主指令位置域;用于表示当前寄存器的值对冗余指令有效或者该寄存器正成为某条冗余指令的结果寄存器而没有写回的冗余指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的冗余指令在操作队列中的位置的冗余指令位置域。
5.根据权利要求1所述基于时间冗余的检验流水线瞬态故障的装置,其特征是,还包括用于当操作队列中的操作被结束时比较主指令和冗余指令的运算结果是否一致的比较逻辑。
6.根据权利要求1所述基于时间冗余的检验流水线瞬态故障的装置,其特征是,还包括用于当操作队列中的操作被结束时把运算结果送到寄存器堆的结束总线,该结束总线有主指令在操作队列中的位置和冗余指令在操作队列中的位置。
7.一种基于时间冗余的检验流水线瞬态故障的方法,包括如下步骤步骤一,将主指令及其冗余指令送入操作队列;步骤二,操作队列中的操作经寄存器重命名;步骤三,保留站侦听结果总线;步骤四,当保留站中某条指令的所有操作数都准备好时该指令开始运算并把结果通过结果总线写回操作队列;步骤五,检查主指令和冗余指令的运算结果是否一致;如果是一致,则修改处理器状态;如果不一致,则输出异常状态。
8.根据权利要求7所述基于时间冗余的检验流水线瞬态故障的方法,其特征是,在步骤一中,通过重复取指或复制指令的方法实现主指令和冗余指令。
9.根据权利要求7所述基于时间冗余的检验流水线瞬态故障的方法,其特征是,步骤二具体包括如下步骤(1)一个操作发射时,若该操作是主指令,则相应的目标寄存器的主指令位置域记录该操作在操作队列中的位置,并置主指令有效位为标示该寄存器正成为一主指令的结果寄存器没有写回的状态;若该操作是冗余指令,则相应的目标寄存器的冗余指令位置域记录该操作在操作队列中的位置,并置冗余指令有效位为标示寄存器正成为一冗余指令的结果寄存器没有写回的状态;(2)后面的操作发射时,若该操作是主指令且用到上一步骤(1)中所述目标寄存器,访问该寄存器时发现该寄存器正成为一条主指令的结果寄存器没有写回,则读出该寄存器中主指令位置域的内容并根据该内容访问操作队列;如果主指令位置域表示的操作队列位置的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,否则把主指令位置域的值送到保留站并在保留站中记录该寄存器未准备好;若该操作是冗余指令且用到步骤(1)中所述目标寄存器,访问该寄存器时发现该寄存器正成为一条冗余指令的结果寄存器没有写回,则读出寄存器中冗余指令位置域的内容并根据该内容访问操作队列,如果冗余指令位置域表示的操作队列位置的值已经写回到操作队列则直接从操作队列中读出该值作为该操作的一个操作数,否则把冗余指令位置域的值送到保留站并在保留站中记录该寄存器未准备好。
10.根据权利要求7所述基于时间冗余的检验流水线瞬态故障的方法,其特征是,步骤五中,所述修改处理器状态,具体包括若当前寄存器的主指令位置域等于主指令在操作队列中的位置号,则将主指令有效位置为表示该寄存器的值对主指令有效的状态;若当前寄存器的冗余指令位置域等于冗余指令在操作队列中的位置号,则将冗余指令有效位置为表示该寄存器的值对冗余指令有效的状态。
11.根据权利要求7所述基于时间冗余的检验流水线瞬态故障的方法,其特征是,步骤五中,所述输出异常状态是指置起一种特殊例外,该特殊例外具体包括将寄存器堆中所有寄存器的主指令有效位置为表示该寄存器对主指令有效的状态,冗余指令有效位置为表示该寄存器对冗余指令有效的状态;清除流水线中的所有指令,从失效的指令处重新取指执行。
12.一种能够检验瞬态故障的流水线系统,包括用于取出指令的取指部件;用于对取出的指令进行译码,并按指令在程序中出现的先后次序把译码后的指令送到操作队列的译码部件;操作队列,用于按指令在程序中出现的先后次序根据操作的类型把操作发射到相应的保留站,并按次序结束运算结果已经写回的指令;用于对发射来的操作进行运算,把运算结果送回到结果总线并写回到操作队列的保留站;寄存器堆,用于在结束指令时,接收由操作队列依照指令进出操作队列的次序写回寄存器的运算结果;用于当操作队列中的操作被结束时把运算结果送到寄存器堆的结束总线;所述操作队列中有用于标示主指令和冗余指令的状态位。
13.根据权利要求12所述能够检验瞬态故障的流水线系统,其中,所述寄存器堆中的每个寄存器包括用于标示当前寄存器的值对主指令有效或者该寄存器正成为某条主指令的结果寄存器没有写回的主指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的主指令在操作队列中的位置的主指令位置域;用于表示当前寄存器的值对冗余指令有效或者该寄存器正成为某条冗余指令的结果寄存器没有写回的冗余指令有效位;用于记录最近一个把当前寄存器作为结果寄存器的冗余指令在操作队列中的位置的冗余指令位置域;
14.根据权利要求12或13所述能够检验瞬态故障的流水线系统,其中,所述结束总线有主指令在操作队列中的位置和冗余指令在操作队列中的位置。
全文摘要
本发明公开了一种基于时间冗余的检验流水线瞬态故障的装置及方法,和包括所述装置的流水线系统。该装置包括操作队列,与该操作队列连接的寄存器堆,与所述操作队列和所述寄存器堆连接的保留站;其特征是,所述操作队列中有用于标示主指令和冗余指令的状态位。该方法包括步骤一,将主指令及其冗余指令送入操作队列;步骤二,操作队列中的操作经寄存器重命名;步骤三,保留站侦听结果总线;步骤四,当保留站中某条指令的所有操作数都准备好时该指令开始运算并把结果通过结果总线写回操作队列;步骤五,检查主指令和冗余指令的运算结果是否一致;如果是一致,则修改处理器状态;如果不一致,则输出异常状态。本发明不仅使流水线结构具有容错能力,提高微处理器可靠性,而且硬件开销小。
文档编号G06F9/38GK101013389SQ20071006318
公开日2007年8月8日 申请日期2007年1月30日 优先权日2007年1月30日
发明者张仕健, 胡伟武 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1