[发明专利]基于检查点技术的双冗余流水线及容错方法有效
申请号: | 201710544258.1 | 申请日: | 2017-07-05 |
公开(公告)号: | CN107168827B | 公开(公告)日: | 2023-06-27 |
发明(设计)人: | 张伟功;王晶;申娇;尚媛园;朱晓燕 | 申请(专利权)人: | 首都师范大学 |
主分类号: | G06F11/14 | 分类号: | G06F11/14;G06F9/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100048 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 检查点 技术 冗余 流水线 容错 方法 | ||
1.一种基于检查点技术的双冗余流水线,其特征在于:所述基于检查点技术的双冗余流水线包括流水线A、流水线B、指令缓存(301)、备份寄存器组(401)、比较逻辑(501)、写缓冲(601)、数据缓存(701)和寄存器堆(801);所述流水线A包括取指段(101)、译码段(102)、执行段(103)、访存段(104)、写回段(105)五个流水段;所述流水线B包括取指段(201)、译码段(202)、执行段(203)、访存段(204)、写回段(205)五个流水段;数据缓存(701)和寄存器堆(801)由流水线A和流水线B共享,正常情况下,执行指令流时默认写入流水线A的执行结果;所述指令缓存(301)用于存储流水线执行的代码,与流水线A中取指段(101)进行数据交互,流水线A取出指令后分发给两条流水线执行;所述备份寄存器组(401)以周期粒度对流水线A的级间寄存器进行备份,一旦比较逻辑(501)检测出单粒子故障,将备份的内容恢复到流水线A和流水线B的级间寄存器中,2个周期后流水线正常执行;所述比较逻辑(501)设置在流水线A与流水线B之间,对比两条流水线的级间寄存器内容,检测单粒子故障;所述写缓冲(601)设置在数据缓存(701)和寄存器堆(801)的入口,用于暂存流水线给出的更新数据;所述数据缓存(701)用于存储流水线输出的数据,并向流水线提供运算操作数;所述寄存器堆(801)用于存储流水线输出的数据,并向流水线提供运算操作数;所述数据缓存(701)入口设置1个写缓冲(601),用于缓存流水线A访存段(104)用于更新数据缓存(701)的信息;所述寄存器堆(801)入口设置2个写缓冲(601),用于缓存流水线A写回段(105)和流水线B写回段(205)用于更新寄存器堆(801)的信息;所述比较逻辑(501)的数量为6个,其中5个分别设置在两条流水线各个流水段之间,用于对比级间寄存器信息,检测单粒子故障,1个用于对比写缓冲(601)中两条流水线用于更新寄存器堆(801)的信息,检测流水线单元写回段发生的SET故障。
2.一种基于检查点技术的双冗余流水线的容错方法,其特征在于:该容错方法用于基于检查点技术的双冗余流水线;所述基于检查点技术的双冗余流水线包括流水线A、流水线B、指令缓存(301)、备份寄存器组(401)、比较逻辑(501)、写缓冲(601)、数据缓存(701)和寄存器堆(801);所述容错方法采用如下步骤和方法对单粒子导致的SET、SEU、MBU故障进行容错:
(1)取指段,将流水线A取指段(101)的级间寄存器内容存储到备份寄存器组(401);流水线A的取指段(101)给出指令地址,从指令缓存(301)中取出指令分发给两条流水线执行;比较逻辑(501)对比两条流水线的级间寄存器信息,如果比较结果相同,说明流水线单元的取指段没有被单粒子轰击,流水线继续向下执行,如果比较结果不同,说明一条流水线的取指段的级间寄存器发生SEU/MBU故障,给出流水线取指段的错误信号;
(2)译码段,将流水线A译码段(102)的级间寄存器内容存储到备份寄存器组(401);流水线A的译码段(102)读地址信息,判断操作数是否存在写缓冲(601)中,如果存在,则从写缓冲(601)中取出操作数并分发给两条流水线操作,否则,从寄存器堆(801)中取出操作数分发给两条流水线操作;比较逻辑(501)对比两条流水线的译码段级间寄存器信息,如果比较结果相同,说明流水线单元的译码段没有被单粒子轰击,流水线继续向下执行,如果比较结果不同,说明一条流水线的取指段的功能逻辑发生SET故障,或者译码段的级间寄存器发生SEU/MBU故障,给出流水线译码段的错误信号;
(3)执行段,将流水线A执行段(103)的级间寄存器内容存储到备份寄存器组(401);流水线A的执行段(103)读地址信息,判断操作数是否存在写缓冲(601)中,如果存在,则从写缓冲(601)中取出操作数并分发给两条流水线操作,否则,从数据缓存(701)中取出操作数分发给两条流水线操作;比较逻辑(501)对比两条流水线的级间寄存器信息,如果比较结果相同,说明流水线单元的执行段没有被单粒子轰击,流水线继续向下执行,如果比较结果不同,说明某条流水线的译码段的功能逻辑发生SET故障,或者执行段的级间寄存器发生SEU/MBU故障,给出流水线执行段的错误信号;
(4)访存段,将流水线A访存段(104)的级间寄存器内容存储到备份寄存器组(401);流水线A的访存段(104)给出与数据缓存(701)的写交互信息,并将其更新到写缓冲(601);比较逻辑(501)对比两条流水线的级间寄存器信息,如果比较结果相同,说明流水线单元的访存段没有被单粒子轰击,流水线继续向下执行,如果比较结果不同,说明某条流水线的执行段的功能逻辑发生SET故障,或者访存段的级间寄存器发生SEU/MBU故障,给出流水线访存段的错误信号;
(5)写回段,将流水线A写回段(105)的级间寄存器内容存储到备份寄存器组(401);流水线A的写回段(105)和流水线B的写回段(205)给出与寄存器堆(801)的写交互信息,并将其更新到写缓冲(601);比较逻辑(501)对比两条流水线的级间寄存器信息,如果比较结果相同,说明流水线单元的写回段没有被单粒子轰击,流水线继续向下执行,如果比较结果不同,说明某条流水线的访存段的功能逻辑发生SET故障,或者写回段的级间寄存器发生SEU/MBU故障,给出流水线写回段的错误信号;
(6)比较逻辑(501)对比步骤(5)中两条流水线存入写缓冲(601)中的信息,如果比较结果相同,说明流水线单元没有被单粒子轰击,如果比较结果不同,则说明写回段的功能逻辑发生SET故障,给出错误信号;
(7)将步骤(1)、(2)、(3)、(4)、(5)、(6)中错误信号进行或操作,生成恢复信号,如果恢复信号有效,作废当前周期流水线单元所有操作,并将备份寄存器组(401)中的内容恢复到两条流水线对应的级间寄存器中,同时清空写缓冲(601)的信息,禁止更新数据缓存(701)和寄存器堆(801),流水线重新执行发生故障的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于首都师范大学,未经首都师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710544258.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种卡座装壳机构
- 下一篇:一种手机充电器底壳的自动生产装置