面向sparcv8处理器的自修复双冗余流水线及容错方法

文档序号:9564507阅读:519来源:国知局
面向sparc v8处理器的自修复双冗余流水线及容错方法
【技术领域】
[0001] 本发明涉及一种微处理器流水线错误的检测与恢复装置,尤其涉及一种SPARC V8 处理器中流水线错误的检测与恢复装置。本发明还涉及一种SPARC V8处理器中流水线中 数据翻转错误的屏蔽方法。
【背景技术】
[0002] 单粒子翻转(Single Event Upset,SEU)是在空间应用环境下,由于单粒子入射导 致集成电路中存储单元发生数据翻转错误的事件,是空间环境下电子系统发生故障和工作 异常的重要诱因之一。随着半导体工艺技术的快速发展,芯片的尺寸在不断减小,处理器工 作频率不断提高,节点工作电压的降低使得单粒子翻转现象越来越严重。研究指出,在纳米 级芯片中,单粒子翻转导致的多位数据翻转(MBU)概率也在迅速提高,会导致最多8位随机 数据翻转错误,对空间应用的电子系统产生更大的危害。在微处理器及电子系统中采取加 固措施对SEU故障进行容错设计已成为重要的技术手段。
[0003] 作为现代微处理器的重要组成部分,流水线主要完成程序代码的指令流执行,并 将执行结果写入数据存储和寄存器堆。如果单粒子轰击流水线导致级间寄存器发生翻转或 单粒子瞬变(SET)引发的错误数据被锁存,就会导致流水线执行结果不正确,在没有对流 水线单元进行容错加固的情况下,错误的执行结果将会扩散到数据存储和寄存器堆或者执 行错误的指令流,进而导致更多不可控的错误产生。因此,对于空间应用的高可靠微处理器 而言,进行流水线单元的容错设计具有重要的意义。
[0004] 现有对空间微处理器的加固技术有以下三种方案:采用基于时间的容错方法,能 有效解决MBU问题,但是处理器性能大大降低;采用基于编码的容错方法,只能有效的验证 计算部分的正确性,并且不同的编码方式针对不同的单粒子故障不能全部处理,容错能力 有限;采用基于硬件冗余的方案,采用如图1所示的寄存器级三模冗余时,无法应对MBU故 障;采用如图2所示的流水线级三模冗余时,虽然可以定位出故障流水线,但是硬件资源功 耗等开销较大;流水线级双模冗余可以应对MBU故障,但是无法定位,起不到屏蔽故障的作 用,每次都进行流水线回退会显著增加流水线性能开销,尤其是在单粒子故障日益常见的 情况下会导致整体处理速度明显降低。总之,现有技术无法实现一个以低面积开销并能够 故障检测、定位、屏蔽故障并有效应对MBU故障的CPU加固方案。

【发明内容】

[0005] 本发明的目的在于设计一种面向SPARC V8的处理器的自修复双冗余流水及容错 方法,能够从系统结构上有效的屏蔽单粒子翻转(SEU)、单粒子瞬态(SET)导致的多位数据 翻转故障。
[0006] 为实现上述目的,本发明所采用的技术方案为:
[0007] -种面向SPARC V8处理器的自修复双冗余流水线,其特征在于:所述自修复双冗 余流水线包括流水线A、流水线B、指令缓存(301)、自校验模块、比较逻辑(501)、流水线恢 复模块(601)、数据缓存(701)、寄存器堆(801);所述流水线A包括取指(101)、译码(102)、 执行(103)、访存(104)、写回(105)五个流水段,所述流水线B包括取指(201)、译码(202)、 执行(203)、访存(204)、写回(205)五个流水段,在流水线A和流水线B的各个流水段之间 分别设置级间寄存器,数据缓存(701)和寄存器堆(801)由流水线A和流水线B共享,用于 在执行指令流时默认写入流水线A的执行结果,在流水线A执行错误时,写入流水线B的执 行结果;所述指令缓存(301)用于存储流水线执行指令的代码,送给流水线A和流水线B的 取指部件;所述自校验模块包括自校验(401)、自校验(402)、自校验(403)、自校验(404) 和自校验(405),用于流水线A和流水线B中的级间寄存器进行自校验,产生校验错误信息, 送入比较逻辑(501)用于定位发生单粒子故障的流水线;所述比较逻辑(501)设置在流水 线A与流水线B之间,用于对两个流水线单元的输出信息进行比较,检测流水线的错误;所 述流水线恢复模块(601)用于在比较逻辑(501)和自校验模块检测出现流水线错误后,根 据错误定位结果,通过快速恢复或整体恢复方式对错误的流水线或两条流水线的状态进行 恢复;所述数据缓存(701)用于存储流水线输出的数据,并向流水线提供运算操作数;所述 寄存器堆(801)用于存储流水线输出的数据,并向流水线提供运算操作数。
[0008] -种面向SPARC V8处理器的自修复双冗余流水线的容错方法,其特征在于:所 述自修复双冗余流水线包括流水线A、流水线B、指令缓存(301)、自校验模块、比较逻辑 (501)、流水线恢复模块(601)、数据缓存(701)、寄存器堆(801);所述自修复双冗余流水线 采用如下步骤和方法对由单粒子效应引发的SEU、SET和MBU故障进行屏蔽:
[0009] (1)取指段,自校验模块会对两条流水线的取指段级间寄存器进行自校验,生成错 误信息,并将错误信息送入比较逻辑,同时寄存在译码段级间寄存器;在两条流水线的译码 段段给出与指令缓存的交互信息后,比较逻辑会对其进行比较,如果比较结果相同,则用流 水线A给出的地址将指令取回流水线,如果比较结果不相同,根据自校验模块给出的错误 信息定位出故障流水线,启用快速恢复方案,用正确流水线替换错误流水线,消耗一个时钟 周期,在下一时钟周期重新进行当前操作;如果无法定位出错误流水线,则两条流水线进入 陷阱;
[0010] (2)译码段,自校验模块会对两条流水线的译码段级间寄存器进行自校验,生成 错误信息位,该错误信息位会与译码段级间寄存器中寄存的错误信息位进行或运算并送入 比较逻辑,同时执行段寄存在级间寄存器;在两条流水线的译码段给出与寄存器堆的交互 信息后,比较逻辑会对其进行比较,如果比较结果相同,则用流水线A的输出信息从寄存器 堆中取出源操作数,并分发给两条流水线操作,如果比较结果不相同,根据自校验模块定位 出故障流水线,启用快速恢复方案,用正确流水线替换错误流水线,消耗一个时钟周期,在 下一时钟周期重新进行当前操作;如果无法定位出故障流水线,则给出需要进行流水线回 退的标识信号,将此信号反馈给两条流水线,并寄存在执行段级间寄存器中流向下一流水 级;
[0011] (3)执行段,自校验模块会对两条流水线的执行段级间寄存器进行自校验,生成 错误信息位,该错误信息位会与执行段级间寄存器的错误信息位进行或运算并送入比较逻 辑,同时寄存在访存段级间寄存器;在两条流水线的执行段给出与数据缓存一部分的交互 信息后,比较逻辑会对其进行比较,如果比较结果相同,则将流水线A的输出信息送入数据 缓存,如果比较结果不相同,根据自校验模块定位出故障流水线,启用快速恢复方案,用正 确流水线替换错误流水线,消耗一个时钟周期,在下一时钟周期重新进行当前操作,如果无 法定位出故障流水线,则给出需要进行流水线回退的标识信号,将此信号反馈给两条流水 线,并寄存在访存段级间寄存器中流向下一流水级;
[0012] (4)访存段,自校验模块会对两条流水线的访存段级间寄存器进行自校验生成错 误信息位,该错误信息位会与访存段级间寄存器的错误信息位进行或运算并送入比较逻 辑,同时寄存在写回段级间寄存器;在两条流水线给出与数据缓存另一部分交互信息,比较 模块会对其进行比较,如果比较结果相同,将流水线A输出的信息送入数据缓存,如果比较 结果不相同,禁止数据缓存的写使能信号,同时根据自校验模块定位出故障流水线,启用快 速恢复方案,用正确流水线替换错误流水线,消耗一个时钟周期,在下一时钟周期重新进行 当前操作,如果无法定位出故障流水线,则给出需要进行流水线回退的标识信号,将此信号 反馈给两条流水线,并寄存在写回段级间寄存器中流向下一流水级;
[0013] (5)写回段,自校验模块会对两条流水线的写回段级间寄存器进行自校验生成错 误信息位,该错误信息位会与写回段级间寄存器的错误信息位进行或运算后送入比较逻 辑;在两条流水线写回段给出与寄存器堆读写信息后,比较逻辑会对其进行比较,如果比较 结果相同,将流水线A的写信息送入寄存器堆;如果比较结果不相同,禁止寄存器堆的写使 能信号,同时根据自校验模块定位出故障流水线,启用快速恢复方案,用正确流水线替换错 误流水线,消耗一个时钟周期,在下一时钟周期重新进行当前操作,如果无法定位出错误流 水线,则给出需要进行流水线回退的标识信号,将该标识信号反馈给两条流水线,将回退标 识信号与写回段级间寄存器中的回
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1