发明名称 一种双模冗余流水线的故障检测及回退方法
摘要 一种双模冗余流水线的故障检测及回退方法,其特征在于:所述双模冗余流水线的故障检测及回退装置包括流水线A、流水线B、指令缓存(301)、比较逻辑(401)、流水线回退模块(501)、数据缓存(601)、寄存器堆(701);所述双模冗余流水线的故障检测及回退装置采用比较逻辑对流水线A和流水线B给出的与处理器内部其他部件的交互信息进行比较,用于检测流水线单元是否发生故障,根据比较给出的回退信号启用流水线回退机制,刷新流水线,重新取出故障指令进行执行的方法,对单粒子效应引发的故障进行容错。
申请公布号 CN105260256A 申请公布日期 2016.01.20
申请号 CN201510701242.8 申请日期 2015.10.27
申请人 首都师范大学 发明人 王晶;张伟功;申娇;杨星;尚媛园;邱柯妮;朱晓燕
分类号 G06F11/07(2006.01)I 主分类号 G06F11/07(2006.01)I
代理机构 代理人
主权项 一种双模冗余流水线的故障检测及回退方法,其特征在于:所述双模冗余流水线的故障检测及回退装置包括流水线A、流水线B、指令缓存(301)、比较逻辑(401)、流水线回退模块(501)、数据缓存(601)、寄存器堆(701);所述双模冗余流水线的故障检测及回退装置采用如下步骤和方法,对流水线级双模冗余结构中,发生故障的流水线进行检测与恢复:(1)指令执行时,流水线A和流水线B的取指段同时向指令缓存器输出指令地址及控制信息,比较逻辑对流水线A和流水线B输出的指令地址及控制信息进行比较,如果比较结果相同,表明流水线A和流水线B的取指段未发生故障,指令缓存器根据流水线A的地址及控制信息给出指令代码,分发给两条流水线;如果比较结果不同,比较逻辑给出流水线回退信号,存储到译码段级间寄存器中,随流水线向后传递;(2)流水线A和流水线B的译码段对指令代码译码后,同时向寄存器堆发送源操作数读取控制信息,比较逻辑对流水线A和流水线B发送的源操作数读取控制信息进行比较,如果比较结果相同,表明流水线A和流水线B的译码段未发生故障,根据流水线A输出的源操作数读取控制信息从寄存器堆中取出源操作数,分发给两条流水线;如果比较结果不同,比较逻辑给出流水线回退信号,存储到执行段级间寄存器中,随流水线向后传递;(3)流水线A和流水线B的执行段执行指令规定的运算,同时给出数据缓存器访问的地址信息,比较逻辑对流水线A和流水线B给出的地址信息进行比较,如果比较结果相同,表明流水线A和流水线B的执行段未发生故障,将流水线A给出的地址信息送入数据缓存器中;如果比较结果不同,比较逻辑给出流水线回退信号,存储到访存段级间寄存器中,随流水线向后传递;(4)流水线A和流水线B的访存段根据指令需要,同时向数据缓存发送访问地址、数据及控制信息,比较逻辑首先判断流水线A和流水线B上级间寄存器传递的回退信号是否均无效,如果其中一条流水线的回退信号有效,表明当前指令发生故障需要回退,禁止数据缓存器的写使能信号;如果回退信号均无效,比较逻辑对流水线A和流水线B发送的地址、数据及控制信息进行比较,如果比较结果相同,表明流水线A和流水线B的访存段未发生故障,按照流水线A给出的地址、数据及控制信息对数据缓存进行写入;如果比较结果不同,比较逻辑给出流水线回退信号,存储到写回段级间寄存器中,随流水线向后传递;(5)流水线A和流水线B的写回段根据指令需要,同时向寄存器堆输出寄存器写控制信息,比较逻辑首先判断流水线A和流水线B上级间寄存器传递的回退信号是否均无效,如果其中一条流水线的回退信号有效,比较逻辑向两条流水线发送取消信号,同时禁止寄存器堆的写使能信号;如果回退信号均无效,比较模块对流水线A和流水线B输出的寄存器写控制信息进行比较,如果比较结果相同,表明流水线A和流水线B的写回段未发生故障,按照流水线A给出的寄存器写控制信息对寄存器堆进行写操作;如果比较结果不同,比较逻辑向两条流水线发送取消信号,同时禁止寄存器堆的写使能信号;(6)比较模块向两条流水线发送取消信号后,会将流水线A和流水线B中取指段、译码段、执行段和访存段正在执行的指令标记为取消指令,这些取消指令会在流水线继续向下执行,但其执行结果不会写入到数据缓存和寄存器堆,相当于作废了这些指令;然后,比较模块将写回段正在执行的故障指令的代码地址送入两条流水线的取指段,重新从指令缓存中取出对应的指令,在流水线上重新执行。
地址 100048 北京市海淀区西三环北路56号