CN105260272A - 一种同步纠错流水线控制结构及其方法 - Google Patents
一种同步纠错流水线控制结构及其方法 Download PDFInfo
- Publication number
- CN105260272A CN105260272A CN201510617152.0A CN201510617152A CN105260272A CN 105260272 A CN105260272 A CN 105260272A CN 201510617152 A CN201510617152 A CN 201510617152A CN 105260272 A CN105260272 A CN 105260272A
- Authority
- CN
- China
- Prior art keywords
- operand
- write
- memory bank
- register file
- edac
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Advance Control (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明一种同步纠错流水线控制结构及方法。其结构包括寄存器文件存储体和对应的校验元存储体,连接寄存器文件存储体和对应的校验元存储体输出端的逻辑运算单元,对应从寄存器文件存储体中读出的两个操作数的两个EDAC译码部件,连接在EDAC译码部件输出端的回写控制单元,根据写数据生成校验元的EDAC编码部件;EDAC译码部件包括用于检测对应源操作数是否发生了错误的检测部件,根据检错部件的结果进行纠正的纠错部件;回写控制单元根据纠错部件输出对应操作数的错误指示,纠正后的操作数和纠正后的校验元,以及逻辑运算单元输出的运算结果进行编码和输出,输出端连接寄存器文件存储体写入数据,并连接根据写数据生成校验元,写入校验元存储体的EDAC编码部件。
Description
技术领域
本发明涉及流水线中纠错与回写控制结构和方法,具体为一种同步纠错流水线控制结构及其方法。
背景技术
空间环境中的SEU(Single-Event-Upset)效应极易影响处理器部件使程序执行错误,从而引起系统失效。针对空间环境的实际应用,为了提高处理器的抗辐射能力,处理器内部的寄存器文件需要采用容错加固设计,由于寄存器文件是不可复现的,通常采用EDAC编码,使得绝大数错误可以通过纠正达到正确复现的目的。寄存器文件是通过流水线的控制实现读写操作的,因此其SEU故障防护,主要体现在流水线的设计中。当检测到寄存器操作数发生了不可纠正的错误时,硬件无法自动恢复,只能触发陷阱,采取错误回卷恢复机制等软件措施,将系统在最小的延迟时间内回归到正常的工作状态。因此,容错流水线的设计主要关注纠错的处理机制。
流水线纠错的时机有两种:一种是在运算之前纠错,参与运算的是直接纠正后的操作数,会得到正确的运算结果;另一种是与运算操作同步,参与运算的可能是错误的操作数,得到错误的结果,因此必须取消错误结果写回寄存器文件。对于第一种纠错时机需要在从寄存器文件中取出操作数之后与执行运算操作之前,增加纠检错译码电路,进行译码纠正。这种纠错方式的缺点是会增加关键路径延迟,影响处理器的整体性能,优点是参与运算的是纠正后的操作数,不必重启流水线,运算结果就是正确的,可以直接写回寄存器文件中。其中“一种直接纠错的流水线设计”(西北工业大学学报)采用了这种纠错方式,但其纠正后的操作数不能及时写回寄存器文件中,而是采用软件方式定时将出错的操作数从寄存器文件中读出再写回,实现操作数的纠正,这种方式增加了SEU故障的累积概率,影响了处理器的可靠度,同时这种软件纠错方式也影响了处理器的效率。另外,“Aportableandfault-tolerantmicroprocessorbasedontheSPARCV8architecture”(ProceedingsInternationalConferenceonIEEE,IEEEComputerSociety)也采用了这种纠错方式,并且如果有一个源操作数发生了可纠正的错误,需要重启一次流水线才能完成源操作数更新以及指令结果写回,如果两个源操作数都发生了可纠正的错误,就需要重启两次流水线。
第二种纠错时机是译码纠正与运算操作同步执行,这种纠错方式不会增加流水线的关键路径延迟,但是,由于运算结果可能是错误的,所以需要重启流水线,用正确的操作数再次参与运算,最终将正确的结果写回寄存器文件中。其中“一种针对SEU的同步纠错流水线设计”(西北工业大学学报)采用了第二种纠错方式,其考虑到寄存器文件只有一个写端口,每个周期只能写回一个数据,于是流水线中只集成了一个纠错部件,同样地,如果有一个源操作数发生了可纠正的错误,需要重启一次流水线,如果两个源操作数都发生了可纠正的错误,就需要重启两次流水线,才能完成源操作数更新以及指令结果写回。
如何保证在尽量不影响处理器性能的情况下,在流水线中实现对寄存器文件中的操作数进行纠错控制,以及保证纠正后的操作数以及指令结果及时写回,是容错处理器设计必须要解决的问题。而在不影响处理器性能的情况下,只通过重启一次流水线即可完成所有纠正后的操作数以及指令正确结果的及时写回,经检索相关文献和专利,尚未发现有解决该问题的方法。
发明内容
针对现有技术中存在的问题,本发明提供一种不增加流水线关键路径延迟,只需要重启一次流水线就能够实现所有发生了可纠正错误操作数的及时更新,以及指令正确结果写回的同步纠错流水线控制结构及其方法。
本发明是通过以下技术方案来实现:
一种同步纠错流水线控制结构,包括寄存器文件存储体和对应的校验元存储体,同时连接寄存器文件存储体和对应的校验元存储体输出端的逻辑运算单元,分别对应从寄存器文件存储体中读出的两个操作数的两个EDAC译码部件,连接在EDAC译码部件输出端的回写控制单元,以及根据写数据生成校验元的EDAC编码部件;EDAC译码部件包括用于检测对应源操作数是否发生了错误的检测部件,和根据检错部件的结果进行纠正的纠错部件;回写控制单元根据纠错部件输出对应操作数的错误指示,纠正后的操作数和纠正后的校验元,以及逻辑运算单元输出的运算结果进行编码和输出,输出端连接至寄存器文件存储体写入数据,并连接EDAC编码部件;EDAC编码部件根据写数据生成校验元,写入校验元存储体。
优选的,回写控制单元包括依次级联的第一回写选择器和第二回写选择器;第一回写选择器的输入端分别连接运算结果和一个操作数对应纠正后的操作数,控制端连接该源操作数对应的回写操作数控制信号;第二回写选择器的输入端分别连接第一回写选择器的输出端和另一个操作数对应纠正后的操作数,控制端连接该源操作数对应的回写操作数控制信号。
优选的,EDAC编码部件的输出端通过编码器连接至校验元存储体写入校验元。
优选的,逻辑运算单元的处理位宽为32位,寄存器文件和对应的校验元位宽为8位。
一种同步纠错流水线控制方法,包括如下步骤,
步骤1,在同一套读写访问控制信号的控制下,读取寄存器文件存储体和对应的校验元存储体中的操作数及其校验元。该寄存器文件存储体和对应校验元存储体支持每次最多两个操作数及其校验元的读取;
步骤2,分别对两个操作数进行检错和纠错,并同时对两个操作数进行逻辑运算;然后保存运算结果,两个操作数纠正后的数据以及错误指示信息,并随流水级向后传递;
步骤3,检查随流水级传递过来的错误指示信息,
如果两个操作数都没有发生错误,直接将指令的运算结果进行EDAC编码,之后将运算结果与对应的校验元写回寄存器文件存储器中,完成本条指令的执行;
如果两个操作数中有一个发生了可纠正的错误,另一个没有发生错误,指令的运算结果也是错误,将保存的纠正后的操作数进行EDAC编码,写回寄存器文件寄存器中,完成可纠正操作数的更新,之后重启一次流水线用更新后的正确的操作数进行运算,完成指令的执行;
如果两个操作数都发生了可纠正的错误,先将纠正后的第一个操作数进行EDAC编码,之后写回寄存器文件中,下个周期将纠正后的第二个操作数进行EDAC编码,写回寄存器文件中,之后重启一次流水线用更新后的正确的操作数进行运算,完成指令的执行。
优选的,步骤2中,当对两个操作数进行检错时,检测到操作数没有发生错误,则不进行纠错,保存无错误发生的操作数及指示信息。
与现有技术相比,本发明具有以下有益的技术效果:
本发明能够在不增加流水线关键路径延迟的情况下,只通过重启一次流水线即可完成所有可纠正操作数的更新以及指令的正确执行,减少了因流水线多次重启引起的性能损失,采用纠检错译码与运算操作同步执行的方式,保证了在不增加流水线关键路径延迟的情况下,实现了寄存器文件在流水线中的容错设计;通过为每一个操作数都集成一个纠检错译码部件,使得两个操作数纠正后的结果同时都保存了下来,在取消错误结果写回寄存器文件的那个周期和下个周期可以分别将两个纠正后的操作数更新到寄存器文件中,而无需多次重启流水线,节省了故障处理的时间,提高了系统性能。在流水线重启之前,将所有可纠正的操作数都更新到寄存器文件中,保证了及时发现错误及时回纠,减少了寄存器文件的故障累积概率,提高了系统可靠性。通过寄存器文件与对应的校验元存储体在处理器正常工作模式下,共用一套读写访问控制信号,使得寄存器文件中的数据与对应的校验元同时写入,同时读出,保证了二者的一一对应。
进一步的,通过将EDAC译码器分为检错部件和纠错部件两部分,并为纠错部件增加使能控制信号,在无错时不进行纠错,从而在结构上提供了低功耗的收益。
附图说明
图1为本发明实例中所述的寄存器文件储存器与对应校验元存储体统一的读写访问控制框图。
图2为本发明实例中所述的控制结构的组成连接框图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明针对处理器中来自寄存器文件中的操作数检测到发生了可纠正的错误时,纠正后的操作数不能及时写回更新,增加了SEU故障累积的概率;或是需要多次重启流水线才能完成所有操作数以及正确结果的写回,影响了处理器执行效率的问题,通过采用同步纠错的设计结构以及为从寄存器文件中读出的所有两个操作数各增加一个纠检错译码部件,能够实现在不增加流水线关键路径延迟的情况下,只需要重启一次流水线即可实现所有发生了可纠正错误操作数的及时更新以及指令正确结果的写回。
为了实现在不增加流水线关键路径延迟的情况下,只需要重启一次流水线即可实现所有发生了可纠正错误操作数以及指令正确结果的写回,如图1和图2所示,本发明为寄存器文件增加相应的校验元存储体;校验元存储体的位宽由容错方案中使用的校验元的位数决定。由于所考虑的处理器的处理位宽是32位的,为了达到纠一检二的容错能力,本优选实例中,为每个32位的数据增加了8位的检验元,即寄存器文件对应校验元存储体的位宽是8位的。
如图1所示,增加对寄存器文件校验元存储体的读写访问控制,考虑到处理器正常工作模式下,需要同时将寄存器文件中的操作数以及与其对应的校验元读出,进行EDAC译码,需要同时对寄存器文件中的操作数以及与其对应的校验元进行写操作,保证操作数与校验元的一致性。于是,校验元存储体与寄存器文件存储体共用同一套读写访问控制信号。
当操作数从寄存器文件读出之后,为每一个操作数,都集成一个EDAC译码部件,由于该流水线中一条指令最多对应两个操作数,因此共对应设置2个EDAC译码部件,并且保证纠检错译码操作与运算操作同步执行。将译码器分为检错部件和纠错部件两部分,检错部件只检测源操作数是否发生了错误,纠错部件根据检错部件的结果进行纠正,考虑到大多数情况不发生错误翻转,如果检错部件检测到源操作数没有发生错误,就可以不进行纠错,达到降低功耗的目的。
完成纠检错后,保存所有结果,除了保存指令的运算结果之外,两个操作数纠正后的数据以及错误指示信息都需要保存下来,并随流水级向后传递。
在指令运算结果写回寄存器文件之前,为回写的数据增加一个EDAC编码部件,在进行EDAC编码之前,先检查随流水级传递过来的错误指示信息,如果两个操作数都没有发生错误,直接将运算出来的指令的结果进行EDAC编码,之后将指令结果与对应的校验元写回寄存器文件中,完成本条指令的执行;如果两个操作数中有一个或是两个都发生了不可纠正的错误,这种情况说明指令的运算结果是错误,而且发生错误的操作数也不能被硬件纠正,于是需要取消寄存器文件的写回操作,并触发陷阱,需要采用软件措施进行恢复,也就是重启流水线;如果两个操作数中有一个发生了可纠正的错误,另一个没有发生错误,指令的运算结果也是错误,不能将该结果写回寄存器文件中,可以将保存的纠正后的操作数进行EDAC编码,写回寄存器文件中,实现可纠正操作数的更新,之后重启一次流水线用更新后的正确的操作数进行运算,完成指令的执行;如果两个操作数都发生了可纠正的错误,取消指令运算结果的写回操作,由于两个操作数纠正后的数据都被保存了下来,可以先将纠正后的第一个操作数进行EDAC编码,之后写回寄存器文件中,下个周期将纠正后的第二个操作数进行EDAC编码,写回寄存器文件中,之后只需要重启一次流水线即可完成该条指令的执行。
基于这样的设计结构,可以实现无论是一个操作数发生了可纠正的错误还是两个操作数都发生了可纠正的错误,都只需要重启一次流水线即可实现所有出错数据的及时恢复以及指令结果的正确写回,从而消除因多次重启流水线带来的系统开销,提升处理器的可靠性和性能。
本发明已经应用于一款兼容SPARCV8结构容错处理器的SoC中,该SoC使用了本发明中的同步纠错流水线控制结构,实现了寄存器文件的容错设计,提高了处理器抗SEU故障的能力。当来自寄存器文件的操作时只发生了可纠正的错误时,通过在流水线重启之前逐周期逐个将纠正后的操作数写回寄存器文件中,然后重启流水线,重新从该条指令处执行,保证了只需重启一次流水线,就能完成可纠正操作数的更新以及指令的正确执行,降低了寄存器文件故障累积的概率以及处理器故障处理的时间。
Claims (6)
1.一种同步纠错流水线控制结构,其特征在于,包括寄存器文件存储体和对应的校验元存储体,同时连接寄存器文件存储体和对应的校验元存储体输出端的逻辑运算单元,分别对应从寄存器文件存储体中读出的两个操作数的两个EDAC译码部件,连接在EDAC译码部件输出端的回写控制单元,以及根据写数据生成校验元的EDAC编码部件;
EDAC译码部件包括用于检测对应源操作数是否发生了错误的检测部件,和根据检错部件的结果进行纠正的纠错部件;
回写控制单元根据纠错部件输出对应操作数的错误指示,纠正后的操作数和纠正后的校验元,以及逻辑运算单元输出的运算结果进行编码和输出,输出端连接至寄存器文件存储体写入数据,并连接EDAC编码部件;
EDAC编码部件根据写数据生成校验元,写入校验元存储体。
2.根据权利要求1所述的一种同步纠错流水线控制结构,其特征在于,回写控制单元包括依次级联的第一回写选择器和第二回写选择器;
第一回写选择器的输入端分别连接运算结果和一个操作数对应纠正后的操作数,控制端连接该源操作数对应的回写操作数控制信号;
第二回写选择器的输入端分别连接第一回写选择器的输出端和另一个操作数对应纠正后的操作数,控制端连接该源操作数对应的回写操作数控制信号。
3.根据权利要求1所述的一种同步纠错流水线控制结构,其特征在于,EDAC编码部件的输出端通过编码器连接至校验元存储体写入校验元。
4.根据权利要求1所述的一种同步纠错流水线控制结构,其特征在于,逻辑运算单元的处理位宽为32位,寄存器文件和对应的校验元位宽为8位。
5.一种同步纠错流水线控制方法,其特征在于,包括如下步骤,
步骤1,在同一套读写访问控制信号的控制下,读取寄存器文件存储体和对应的校验元存储体中的操作数及其校验元;该寄存器文件存储体和对应校验元存储体支持每次最多两个操作数及其校验元的读取;
步骤2,分别对两个操作数进行检错和纠错,并同时对两个操作数进行逻辑运算;然后保存运算结果,两个操作数纠正后的数据以及错误指示信息,并随流水级向后传递;
步骤3,检查随流水级传递过来的错误指示信息,
如果两个操作数都没有发生错误,直接将指令的运算结果进行EDAC编码,之后将运算结果与对应的校验元写回寄存器文件存储器中,完成本条指令的执行;
如果两个操作数中有一个发生了可纠正的错误,另一个没有发生错误,指令的运算结果也是错误,将保存的纠正后的操作数进行EDAC编码,写回寄存器文件寄存器中,完成可纠正操作数的更新,之后重启一次流水线用更新后的正确的操作数进行运算,完成指令的执行;
如果两个操作数都发生了可纠正的错误,先将纠正后的第一个操作数进行EDAC编码,之后写回寄存器文件中,下个周期将纠正后的第二个操作数进行EDAC编码,写回寄存器文件中,之后重启一次流水线用更新后的正确的操作数进行运算,完成指令的执行。
6.根据权利要求5所述的一种同步纠错流水线控制方法,其特征在于,步骤2中,当对两个操作数进行检错时,检测到操作数没有发生错误,则不进行纠错,保存无错误发生的操作数及指示信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510617152.0A CN105260272B (zh) | 2015-09-24 | 2015-09-24 | 一种同步纠错流水线控制结构及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510617152.0A CN105260272B (zh) | 2015-09-24 | 2015-09-24 | 一种同步纠错流水线控制结构及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260272A true CN105260272A (zh) | 2016-01-20 |
CN105260272B CN105260272B (zh) | 2017-08-08 |
Family
ID=55099972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510617152.0A Active CN105260272B (zh) | 2015-09-24 | 2015-09-24 | 一种同步纠错流水线控制结构及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260272B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309014A (zh) * | 2019-07-05 | 2019-10-08 | 西安微电子技术研究所 | 一种全行编解码sram编码器数据读写结构及数据读写方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120297268A1 (en) * | 2011-05-17 | 2012-11-22 | Kazuya Ishihara | Nonvolatile semiconductor memory device |
CN103279329A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 支持同步edac校验的高效取指流水线 |
-
2015
- 2015-09-24 CN CN201510617152.0A patent/CN105260272B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120297268A1 (en) * | 2011-05-17 | 2012-11-22 | Kazuya Ishihara | Nonvolatile semiconductor memory device |
CN103279329A (zh) * | 2013-05-08 | 2013-09-04 | 中国人民解放军国防科学技术大学 | 支持同步edac校验的高效取指流水线 |
Non-Patent Citations (3)
Title |
---|
JIRI GAISLER: "A Portable and Fault-Tolerant Microprocessor Based on the SPARC V8 Architecture", 《IEEE COMPUTER SOCIETY》 * |
王党辉 等: "一种直接纠错的流水线设计", 《西北工业大学学报》 * |
王党辉 等: "一种针对SEU的同步纠错流水线设计", 《西北工业大学学报》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309014A (zh) * | 2019-07-05 | 2019-10-08 | 西安微电子技术研究所 | 一种全行编解码sram编码器数据读写结构及数据读写方法 |
CN110309014B (zh) * | 2019-07-05 | 2023-06-20 | 西安微电子技术研究所 | 一种全行编解码sram编码器数据读写结构及数据读写方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105260272B (zh) | 2017-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10289469B2 (en) | Reliability enhancement utilizing speculative execution systems and methods | |
Sorin | Fault tolerant computer architecture | |
CN111164578B (zh) | 核内锁步模式的错误恢复 | |
Bernick et al. | NonStop/spl reg/advanced architecture | |
US7447948B2 (en) | ECC coding for high speed implementation | |
US20220100601A1 (en) | Software Defined Redundant Allocation Safety Mechanism In An Artificial Neural Network Processor | |
US11263077B1 (en) | Neural network intermediate results safety mechanism in an artificial neural network processor | |
US11221929B1 (en) | Data stream fault detection mechanism in an artificial neural network processor | |
US8448027B2 (en) | Energy-efficient failure detection and masking | |
CN103984630A (zh) | 一种基于at697处理器的单粒子翻转故障处理方法 | |
US11237894B1 (en) | Layer control unit instruction addressing safety mechanism in an artificial neural network processor | |
US11874900B2 (en) | Cluster interlayer safety mechanism in an artificial neural network processor | |
US7146530B2 (en) | Targeted fault tolerance by special CPU instructions | |
KR20170031758A (ko) | 역방향 메모리 스페어링을 위한 방법 및 장치 | |
US20090249034A1 (en) | Processor and signature generation method, and multiple system and multiple execution verification method | |
CN117136355A (zh) | 在卸载操作中使用的错误校验数据 | |
EP4272079A1 (en) | Providing host-based error detection capabilities in a remote execution device | |
US11811421B2 (en) | Weights safety mechanism in an artificial neural network processor | |
CN105320575A (zh) | 一种双模冗余流水线的自校验及恢复装置与方法 | |
US20080229134A1 (en) | Reliability morph for a dual-core transaction-processing system | |
CN105260272A (zh) | 一种同步纠错流水线控制结构及其方法 | |
CN105511984B (zh) | 一种基于主动链接备份数据的具有容错结构的处理器及容错方法 | |
CN205193785U (zh) | 一种双模冗余流水线的自校验及恢复装置 | |
US10579470B1 (en) | Address failure detection for memory devices having inline storage configurations | |
US8447932B2 (en) | Recover store data merging |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |