CN105426274A - 一种容软错误的粗粒度可重构阵列 - Google Patents
一种容软错误的粗粒度可重构阵列 Download PDFInfo
- Publication number
- CN105426274A CN105426274A CN201510779979.1A CN201510779979A CN105426274A CN 105426274 A CN105426274 A CN 105426274A CN 201510779979 A CN201510779979 A CN 201510779979A CN 105426274 A CN105426274 A CN 105426274A
- Authority
- CN
- China
- Prior art keywords
- input
- performance element
- multiplexer
- input end
- array
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/18—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
- G06F11/182—Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits based on mutual exchange of the output between redundant processing components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1675—Temporal synchronisation or re-synchronisation of redundant processing components
Abstract
本发明公开了一种容软错误的粗粒度可重构阵列,接收阵列的输入数据和阵列的配置信息,包括成阵列排布的多个执行单元。各执行单元包括三个多路复用器、运算器和寄存器堆;各多路复用器的第一输入端皆用于接收阵列的输入数据,第二输入端对应地与寄存器堆的三个输出端相连,第三输入端皆用于接收上一行执行单元的输出,控制端皆用于接收阵列的配置信息中的选择信号,输出端分别连接到运算器的三个输入端,运算器的控制端用于接收阵列的配置信息中的运算指令,运算器的运算结果输出到阵列之外、输出到下一行的任意一个执行单元中以及输出到寄存器堆。本发明硬件代价低,应用灵活,能将执行单元很容易地组织成三模冗余单元,从而实现容错加固功能。
Description
技术领域
本发明涉及容错处理器结构设计技术领域,尤其涉及一种容软错误的粗粒度可重构阵列。
背景技术
软错误(SoftError)指集成电路由于粒子辐射等原因造成的电路存储信息发生随机翻转的现象。在地面环境下,粒子辐射主要来源于封装材料中的铀和钍的放射性同位素残留、高能宇宙射线带来的中子辐射、集成电路磷硼硅酸盐玻璃材料中的硼10同位素等;在大气层外则还包括太阳风带来的大量带电粒子。软错误虽然不会直接造成集成电路的硬损伤,但它会严重影响电路的正常运行并造成数据的损坏。有研究指出,集成电路中软错误发生的概率可以达到栅穿等故障发生概率的5000倍以上,并成为航天器电子系统故障的首要原因。软错误对地面环境下电子器件的可靠性同样会造成影响,例如1976年在Cray-1大型计算机中首次观察到了软错误的发生,而最新的报道则显示对于当前的高端服务器来说软错误可达到每天发生一次的强度。随着工艺技术的进步,集成电路对于软错误日益敏感,最近的研究发现原来属于轻粒子领域本来无害的u介子对于65nm以下的先进工艺也会导致软错误。在近年的国际半导体技术路线图ITRS中,软错误一直被列为集成电路可靠性所面临的主要挑战之一。如上所述,不仅运行在空间等恶劣环境下的微控制器等器件,甚至包括民用领域运行关键应用的大型主机/服务器、高性能主干网络等的核心部件也必须考虑软错误防护的问题。
随着微电子工艺技术的发展,片上集成度快速提升,当前处理器架构的发展已经从追求主频的提升转向如何更好利用日益丰富的片上系统资源。可重构计算架构是异于传统冯诺依曼结构的一种计算架构,它通过静态或动态更改电路结构以及连接关系的方法来改变电路功能,这与通过改变所执行的指令流来改变功能的冯诺依曼架构形成显著区别。静态的可重构架构目前主要以FPGA为代表,已经发展较为成熟,其最基本的处理元素是逻辑门,重构灵活性高,但具有需要大量配置数据、配置时间较长、运算功耗较高、芯片面积较大等缺点。与其对应的是动态粗粒度可重构计算架构(Coarse-GrainReconfigurableArchitectures,CGRA),其所谓动态,指的是该结构可以在计算过程中间改变电路结构及功能,相比静态可重构的FPGA更为灵活;所谓粗粒度,指的是功能的改变至少以一个字节(8bit)及以上为单位的粒度,而不是像FPGA以位(bit)为单位的细粒度重构。粗粒度可重构带来的好处是配置信息的量会大大降低,从而降低了重构时的代价。可以说,CGRA拥有通用处理器(GPP)的灵活性和专用集成电路(ASIC)的高效性;与FPGA相比,其配置数据量大为减少,配置灵活性更强,应用开发难度更低,适宜应用在包括高效能计算、高速信号处理、数据密集与计算密集的领域。基于配置流的运行方式可以绕过国外的专利和技术壁垒。
CGRA的研究方兴未艾,应用领域逐步扩大,不过在传统的对可靠性要求极高的空间领域,仍然以传统的抗辐照加固微处理器和ASIC为主。为大量不同应用设计专门的抗辐照加固ASIC无论在时间上还是投入成本上都不经济,而微处理器在处理高吞吐量的应用时处理能力捉襟见肘。因而,近期西方国家已经开始了将CGRA引入空间等高可靠计算领域的尝试,并取得了初步的成果。
但是,粗粒度可重构架构在软错误方面的研究还是一个比较新的问题,相关研究很少。如JafriS.M.A.H.等通过基于余3码的并行错误检测侦测软错误的发生,然后通过重新执行发生错误的操作来进行错误恢复(参见:JafriS.M.A.H.,PiestrakS.J.,SentieysO.,PillementS.DesignofaFault-TolerantCoarse-GrainedReconfigurableArchitecture:ACaseStudy.11thInternationalSymposiumonQualityElectronicDesign(ISQED'10).2010:845-852)。他们对图1所示的DART架构改造,主要思路是利用余3码对数据存储器中的数据进行编码,然后将额外产生的编码位存储在数据存储器中,然后利用具有错误检测能力的RDP检测软错误是否已经发生,如果发生就重新执行刚刚产生软错误的操作。改造后的容错粗粒度可重构架构如图2所示,可以看出,其在顶部增加了产生余3码的模块以及检测位,中间的可重构单元RDP1-6都已经被替换成了具有自检测能力的可重构单元。其报告的硬件代价大约为18~98%,已经大大优于双模冗余带来的100%硬件代价,更不用说三模冗余的200%以上的硬件代价。再如AlnajjarD.等通过仔细设计的电路结构,可以灵活支持双模冗余DMR、三模冗余TMR等具有不同可靠性和代价的加固措施,提出如图3所示的容错粗粒度可重构架构的结构框图(参见:AlnajjarD.,KonouraH.,YounghunK.,MitsuyamaY.,HashimotoM.,OnoyeT.ImplementingFlexibleReliabilityinaCoarse-GrainedReconfigurableArchitecture[J].VeryLargeScaleIntegration(VLSI)Systems,IEEETransactionson,2013,21(12):2165-2178)。该可重构阵列被组织为一个二维网格形式的阵列架构,称为ClusterArray,网格中的每个单元称为一个Cluster;每个Cluster内部包含四个执行单元,称为Cell;每个Cell对应3个配置寄存器ConfMem。通过这些冗余的硬件资源,实现了对软错误的检测和恢复。以三模冗余(TMR)为例,其配置方案如图4所示。可以看出,在TMR下,通过大量的冗余解决了软错误检测和恢复的问题。首先,利用三个Cell将同一计算功能进行TMR,三个Cell的输出结果通过输出端的表决器表决得到一份正确的结果;具体到某一Cell内部,其配置存储器同样进行了TMR,然后配置信息通过表决器VC以及选择器Selector,只有表决后正确的配置信息才会进入执行单元进行执行,很好的保护了配置信息。当然通过改变配置方案,还可以支持其它代价更低的容软错误方案。
但是,上述的现有技术具有以下两个缺点:
1、延迟代价过高:以DART架构为例,其余3码的生成以及软错误检测电路都需要复杂的多级组合逻辑实现,错误检测出来后还需要重复执行以进行错误恢复,引入了过高的时间延迟;
2、硬件复杂度高,不够灵活:以DART架构为例,其存储器、算术逻辑单元ALU、乘累加单元MA都需要特殊设计,而当应用于对软错误防护无要求的环境时,这些额外的硬件电路仍会工作;而其它研究也才能在专门设计的TMR、DMR硬件资源引入硬件代价过高的问题。
因此,本领域的技术人员致力于开发一种容软错误的粗粒度可重构阵列,能容软错误、支持三模冗余TMR且延迟代价低、灵活性强、硬件代价低。
发明内容
为实现上述目的,本发明提供了一种容软错误的粗粒度可重构阵列,接收阵列的输入数据和阵列的配置信息,其特征在于,包括成m行n列排布的m×n个执行单元;
所述执行单元包括第一多路复用器、第二多路复用器、第三多路复用器、运算器和寄存器堆;在第i行的任意一个所述执行单元中,1≤i≤m,
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第一输入端皆用于接收所述阵列的输入数据;
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第二输入端对应地与所述本地寄存器堆的第一、第二和第三输出端相连;
当2≤i≤m,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端分别地通过行交叉开关连接到第i-1行所述执行单元中的所述运算器的输出端;当i=1,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端皆空接;
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的控制端皆用于接收所述阵列的配置信息中的选择信号;
所述第一多路复用器的输出端连接到所述运算器的第一输入端,所述第二多路复用器的输出端连接到所述运算器的第二输入端,所述第三多路复用器的输出端连接到所述运算器的第三输入端;
所述运算器的控制端用于接收所述阵列的配置信息中的运算指令,并根据所述运算指令中不同位域的信息控制所述第一、第二、第三输入端的数据来源,所述运算器根据其所述第一、第二、第三输入端的输入和所述运算指令进行运算,并将获得的运算结果从其输出端输出到所述阵列之外、输出到第i+1行的任意一个所述执行单元中以及输出到所述寄存器堆。
进一步地,所述m×n个执行单元通过用于传输数据的m+1个所述行交叉开关、第一列交叉开关和第二列交叉开关连接;
每一行所述执行单元皆分布在两个所述行交叉开关之间,其中n个所述执行单元的所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的所述第三输入端皆与所述两个行交叉开关中的一个相连,所述n个所述执行单元的所述运算器的输出端皆与所述两个行交叉开关中的另一个相连;
所述第一列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述第一输入端皆相连,并与所述各个执行单元的所述输出端相连;所述第二列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述控制端皆相连,并与所述各个执行单元的所述运算器的所述控制端皆相连。
进一步地,所述行交叉开关、所述第一列交叉开关和所述第二列交叉开关为由地址线和数据线构成。
进一步地,4个所述执行单元被组织为一个三模冗余单元,所述三模冗余单元中的三个所述执行单元执行相同的运算,并将它们的运算结果分别地输入第四个所述执行单元;所述第四个所述执行单元作为三模冗余表决器工作。
进一步地,所述容软错误的粗粒度可重构阵列中的任意一个所述执行单元都能作为三模冗余表决器工作。
进一步地,所述三个所述执行单元是第i行的任意三个所述执行单元,所述第四个所述执行单元是第i+1行的任意一个所述执行单元,其中1≤i≤m-1。
进一步地,所述m为8,所述n为8。
进一步地,所述阵列的配置信息给予每个所述执行单元一个配置字,所述配置字为40位字节。
进一步地,在一个所述执行单元的所述配置字中
第39位字节为保留位;
第38位字节为1时表示所述配置字为有效配置字;
第37-32位字节用于表示所述执行单元的编号;
第31-26位字节用于表示所述执行单元的所述运算器的所述运算指令的算数逻辑操作的类型;
第25位字节用于指示所述执行单元的所述运算器的所述第一输入端的输入的类型,所述第一输入端的输入的类型包括:所述第一输入端的输入来自所述执行单元和所述第一输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元;
第24-21位字节用于表示所述第25位字节指示的所述输入,当所述第25位字节为1时,第24-21位字节用于表示所述执行单元的所述寄存器堆的编号;
第20-19位字节用于指示所述执行单元的所述运算器的所述第二输入端的输入的类型,所述第二输入端的输入的类型包括:所述第二输入端的输入来自所述执行单元、所述第二输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元、所述第二输入端的输入是二输入指令立即数和所述第二输入端的输入是三输入指令立即数;
第18-10位字节用于表示所述第20-19位字节指示的所述输入所来自的所述寄存器堆的编号或所述三输入指令立即数;
第9位字节用于指示当所述执行单元的所述运算器的所述第一、第二、第三输入端皆有输入时,所述第三输入端的输入的类型;所述第三输入端的输入的类型包括:所述第三输入端的输入来自所述执行单元和所述第三输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元;
第8-5位字节用于表示所述第9位字节指示的所述输入所来自的所述寄存器堆的编号;
第4位字节用于表示所述执行单元的所述运算器的所述运算结果的输出类型,当所述第4位字节为1时,所述运算结果被输出到所述执行单元的所述寄存器堆,否则输出到所述容软错误的粗粒度可重构阵列中的其他执行单元;
第3-0位字节用于表示当所述运算结果被输出到所述执行单元的所述寄存器堆时,所述寄存器堆的编号。
进一步地,当所述第20-19位字节指示所述第二输入端的输入是二输入指令立即数时,用所述第18-10位字节、所述第9位字节和所述第8-5位字节一起表示所述第二输入端的输入。
进一步地,使用SystemC语言实现所述容软错误的粗粒度可重构阵列。
本发明具有以下优点:
1、硬件代价低:与现有技术相比,本发明对原有的体系结构改动是最小的,可以说几乎没有改动,只要在执行单元(PE)中增加一条表决指令,硬件代价只是增加少量组合逻辑门。而现有其它技术对结构的改动比较大,都增加了较多的专门的冗余电路;
2、应用灵活:由于本发明的可重构阵列在容错加固前后没有任何变化,仅仅在PE的设计中增加了表决指令。因此本发明中的PE完全可以像通常的PE一样执行正常的功能,也可以根据要求执行对输入的表决。这样本发明的可重构阵列结构在对软错误的防护能力不做要求的时候,其所有PE完全可以当作正常的PE使用;当可靠性要求较高时,可以通过动态重构,将PE单元配置为三模冗余(TMR)结构,实现对软错误的恢复。配置为TMR的代价就是原来的可重构阵列理论上每个周期可以执行64条指令,现在最多只可以执行16条指令,降低了4倍。然而考虑到现实中的应用很少能达到64的加速比,因此性能的降级可能远远低于4倍,并不一定有想象的那么大。同时,本发明的PE还可以利用其比较指令实现双模冗余DMR的功能,所需的硬件资源位两个做运算的PE和一个执行比较的PE。考虑到DMR虽可以实现软错误的检测,但难以实现软错误的恢复,所以本发明未考虑此种配置方法。
以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
图1是现有技术的一个DART架构的结构框图。
图2显示了在图1所示的DART架构的基础上的,现有技术的容软错误的DART架构的结构框图。
图3是另一个现有技术的容错粗粒度可重构架构的结构框图。
图4显示了图3所示的容错粗粒度可重构架构的一个配置方案。
图5显示了应用本发明的容软错误的粗粒度可重构阵列的粗粒度可重构系统的结构框图。
图6显示了本发明的容软错误的粗粒度可重构阵列的一个示例的结构框图。
图7显示了图6所示的容软错误的粗粒度可重构阵列中的一个执行单元的结构。
图8是图6所示的容软错误的粗粒度可重构阵列中相邻两行执行单元通过行交叉开关通讯的示意图。
图9显示了一个执行单元的配置字。
图10显示了本发明的容软错误的粗粒度可重构阵列的执行单元组织成一个三模冗余单元的形式。
具体实施方式
如图5所示,在本发明一个较佳的实施例中,本发明的容软错误的粗粒度可重构阵列(RCA)104被应用在一个粗粒度可重构系统中,该粗粒度可重构系统还包括一个通用处理器核101和三个存储器。在本实施例中,容软错误的粗粒度可重构阵列104是一个8×8的执行单元的阵列(其具体结构将在后文中描述);通用处理器核101采用开源的OR1200处理器核;三个存储器分别是主存储器102、共享存储器103和配置信息存储器105。粗粒度可重构阵列104通过Wishbone总线连接到通用处理器核101;主存储器102是一个静态随机存取存储器(SRAM),用于存储一个完整的应用所需的指令和输入输出数据,其通过Wishbone总线连接到通用处理器核101;共享存储器103是一个容软错误的粗粒度可重构阵列104的局部存储器,其地址空间分为8块(bank),通过Wishbone总线连接到通用处理器核101,通过128位的交叉开关(crossbar)连接到容软错误的粗粒度可重构阵列104,且与存储器102之间通过DMA搬运交换数据;共享存储器103用于供容软错误的粗粒度可重构阵列104读入数据或写入结果,阵列104中的每个处理单元都可以访问它;配置信息存储器105通过Wishbone总线连接到通用处理器核101,通过320位的交叉开关(crossbar)连接到容软错误的粗粒度可重构阵列104,且与存储器102之间通过DMA搬运交换数据;配置信息存储器105用于存储容软错误的粗粒度可重构阵列104的配置信息,阵列104中的每个处理单元都可以访问它。阵列104的配置信息给予阵列104中每个执行单元一个40位字节的配置字,后文中会对其做具体描述。
图6示出了本实施例中的容软错误的粗粒度可重构阵列104的结构,其中8×8个执行单元(PE)通过9个行交叉开关(crossbar)、第一列交叉开关(crossbar)和第二列交叉开关连接(crossbar)。具体地为,每行8个执行单元和9个行交叉开关交替排布,各行执行单元皆分布在两个行交叉开关之间并与它们相连,第一列交叉开关布置在9个行交叉开关的一端处与各个执行单元相连,第二列交叉开关布置在9个行交叉开关的另一端处与各个执行单元相连。行交叉开关、第一列交叉开关和第二列交叉开关由地址线和数据线构成,通过它们和诸如使能信号等的控制信号实现功能,用于传输包括阵列104的输入数据、配置信息至各个执行单元以及将各个执行单元的运算结果在阵列104内部传输和传输到阵列104之外。这样,对于第2到8行的执行单元,它们中的任何一个都可以从其上一行的行交叉开关、第一列交叉开关和第二列交叉开关接收数据或配置指令,包括阵列104的输入数据、配置信息和其他执行单元输出的运算结果(具体地是其上一行中任意执行单元输出的运算结果);以及向其下一行行交叉开关和第一列交叉开关输出其运算结果;第1行的执行单元中的任何一个则可以从其上一行的行交叉开关、第一列交叉开关和第二列交叉开关接收数据,包括阵列104的输入数据和配置信息,以及向其下一行行交叉开关和第一列交叉开关输出其运算结果。需要说明的是,第一列交叉开关和第二列交叉开关是与各个执行单元皆相连,但为了图示清晰,在图6中仅示意性地表示了它们与最接近的执行单元的连接。
容软错误的粗粒度可重构阵列104的8×8个执行单元的构造皆相同,以下以其中一个执行单元,如图6中第5行第8列的执行单元(图6中被加粗的PE)为例,描述各执行单元的结构。
如图7所示,执行单元包括三个多路复用器、一个运算器和寄存器堆,具体地,三个多路复用器为第一多路复用器MUXA、第二多路复用器MUXB和第三多路复用器MUXC,一个运算器为运算器ALU。第一多路复用器MUXA、第二多路复用器MUXB和第三多路复用器MUXC皆具有三个输入端,其中的第一输入端皆与第一列交叉开关相连以接收阵列104的输入数据;第二输入端对应地与该执行单元中的寄存器堆的三个输出端相连,用于接收存储在寄存器堆中的该执行单元的上一次运算的运算结果;第三输入端分别地通过其上一行的行交叉开关与其上一行(即第4行)的任意一个执行单元中的运算器的输出端相连,用于接收其上一行(即第4行)的任意一个执行单元上一次运算的运算结果。需要说明的是,这里描述的是第5行第8列的执行单元的三个多路复用器的第三输出端,第2-8行的执行单元的三个多路复用器的第三输出端连接情况与其相同,而第1行执行单元的三个多路复用器的第三输出端并没有来自上一行执行单元的运算结果可以接收,所以可以认为第1行执行单元的三个多路复用器的第三输出端为空接。
第一多路复用器、第二多路复用器和第三多路复用器的控制端皆与第二列交叉开关相连以通过第二列交叉开关接收阵列104的配置信息中的选择信号,具体地,第一多路复用器的控制端用于接收选择信号Sel_A,第二多路复用器的控制端用于接收选择信号Sel_B,第三多路复用器的控制端用于接收选择信号Sel_C。第一多路复用器的输出端连接到运算器的第一输入端,第二多路复用器的输出端连接到运算器的第二输入端,第三多路复用器的输出端连接到运算器的第三输入端。这样,通过阵列104的配置信息中的选择信号,能够确定三个多路复用器的输出,即确定运算器的三个输入InputA、InputB和InputC。运算器的控制端用于接收阵列104的配置信息中的运算指令OpCode,运算器根据其第一、第二、第三输入端的输入InputA、InputB、InputC和运算指令OpCode进行运算,获得运算结果。运算器的输出端与该执行单元的下一行行交叉开关相连以将运算结果通过该行交叉开关输出到第i+1行的执行单元,运算器的输出端还与该执行单元的寄存器堆相连以将运算结果输出到寄存器堆,运算器的输出端还与第一列交叉开关相连以将运算结果输出到阵列104之外(即共享存储器103)。
上述的任意一行执行单元Pi,0、…、Pi,7(i=1、…、8)中的运算器将其运算结果释放到其下一行行交叉开关,其中当2≤i≤8,执行单元Pi,0、…、Pi,7的运算结果被输出到其下一行的执行单元Pi+1,0、…、Pi+1,7,实现方式如图8所示。具体地为:执行单元Pi,0、…、Pi,7(i=1、…、8)中的运算器将其运算结果R0、…、R7释放到该行交叉开关,执行单元Pi+1,0、…、Pi+1,7(i=2、…、8)获取其上一行的行交叉开关中的运算结果,并且通过上一行的行交叉开关内部的指定路径传输到其运算器三个输入InputA(A0、…、A7)、InputB(B0、…、B7)、InputC(C0、…、C7)中的一个或多个。
如前所述,配置字中阵列104的配置信息给予每个执行单元一个配置字,用于控制该执行单元的工作。本实施例中每个执行单元的配置字是一个40位字节,如图9所示,其具体地为:
字节段401:第39位字节resv,为保留位;
字节段402:第38位字节valid,为指示有效位,其为1时表示该配置字为有效配置字,否则为无效配置字;
字节段403:第37-32位字节pe_id,用于表示本执行单元的编号;
字节段404:第31-26位字节op,用于表示该执行单元的运算器的运算指令的算数逻辑操作的类型;
字节段405:第25位字节Atype,用于指示该执行单元的运算器的第一输入端的输入InputA的类型,InputA的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元);
字节段406:第24-21位字节inputA,用于表示第25位字节Atype指示的输入InputA,当第25位字节Atype为1时,第24-21位字节inputA用于表示本执行单元的寄存器堆的编号;
字节段407:第20-19位字节Btype用于指示本执行单元的运算器的第二输入端的输入InputB的类型,InputA的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元)、是二输入指令立即数、是三输入指令立即数;
字节段408:第18-10位字节inputB,用于表示第20-19位字节Btype指示的输入InputB所来自的寄存器堆的编号或三输入指令立即数;
字节段409:第9位字节Ctype,用于指示当本执行单元的运算器的第一、第二、第三输入端皆有输入时,第三输入端的输入InputC的类型;InputC的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元);
字节段410:第8-5位字节inputC,用于表示第9位字节Ctype指示的输入InputC所来自的寄存器堆的编号;
字节段411:第4位字节Rtype,用于表示本执行单元的运算器的运算结果的输出类型;当其为1时,该运算结果被输出到本执行单元的寄存器堆,否则输出到阵列104中的其他执行单元(即其下一行执行单元);
字节段412:第3-0位字节result,用于表示当运算结果被输出到本执行单元的寄存器堆时,该寄存器堆的编号。
其中,当第20-19位字节Btype指示输入InputB是二输入指令立即数时,用第18-5位字节一起表示该输入。
可以通过将阵列104的部分执行单元配置为TMR形式来实现容软错误加固,TMR目前是空间等高可靠领域广泛应用的容错加固方法,其核心思想为将重要的部件复制三份,分别进行运算,然后将三份的输出送入表决器进行表决,表决多数作为正确的结果进行输出。例如,假设复制的三个模块输出分别为A、B、C,则TMR的表决器实现功能为F=AB+BC+CA,即取A、B、C输入中的多数作为正确的输出。假如A、B、C正确的值应该为1,但是C发生了错误,输出值为0,根据TMR的计算方法,F=1+0+0=1,仍然为正确值,其它情况类似。
由TMR的实现原理可知其消耗了大量冗余资源来实现错误的检测与恢复。考虑到本实施例的阵列104包含64个执行单元,资源数量还是比较多的,因此可以采用将4个执行单元组织为一个TMR单元的方法来实现对于软错误的检测与恢复:令其中的三个执行单元执行相同的运算,并将它们的运算结果分别地输入第四个执行单元,并令第四个执行单元作为三模冗余表决器工作。如图10所示,三个i行的执行单元Pi,a、Pi,b和Pi,c的运算器接收相同的输入、执行相同的运算,并将它们的运算结果Ra、Rb和Rc分别地输入下一行的一个执行单元Pi+1,j的运算器的第一、第二和第三输入端;这第四个执行单元Pi+1,j的运算器作为三模冗余(TMR)表决器工作,其中i、a、b、c、j为整数且1≤i≤7,0≤a≤7,0≤b≤7,0≤c≤7,0≤j≤7。
阵列104中64个执行单元每一个都可以用作TMR表决器,这是本发明与其它研究最大的不同点。同类研究的执行单元中运算器的设计一般只有两个输入数据,而本发明中的执行单元有三个输入。根据配置信息的不同,第三个输入C可以禁用,从而与传统的PE设计一样仅支持A、B两个输入;也可以设置为条件执行的条件控制位,从而实现类似于C语言中?条件操作语句的三元指令,即C为1时输出A的值,否则输出B的值;更重要的一种用法是将C视作与A、B类似的输入,然后为PE专门设置一条指令INST_VOTE,该指令即执行对A、B、C进行表决的功能,从而对错误进行检测与恢复。
可以使用SystemC语言实现本发明的容软错误的粗粒度可重构阵列,但并不限于SystemC语言实现,后续硬件实现可以采用其它硬件描述语言。具体实施方式如下:
步骤1、构造本发明的容软错误的粗粒度可重构阵列的各执行单元,各执行单元的结构如前所述;
步骤2、将各行执行单元分布在两个行交叉开关之间,实现各行执行单元与各行交叉开关连接;
步骤3、将第一、第二列交叉开关与各行交叉开关连接,并分别连接到外部的共享存储器和配置信息存储器;
步骤4、书写配置信息;
步骤5、将重要操作实现为TMR结构,实现对软错误的检测与恢复。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域的技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (10)
1.一种容软错误的粗粒度可重构阵列,接收阵列的输入数据和阵列的配置信息,其特征在于,包括成m行n列排布的m×n个执行单元;
所述执行单元包括第一多路复用器、第二多路复用器、第三多路复用器、运算器和寄存器堆;在第i行的任意一个所述执行单元中,1≤i≤m,
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第一输入端皆用于接收所述阵列的输入数据;
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第二输入端对应地与所述本地寄存器堆的第一、第二和第三输出端相连;
当2≤i≤m,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端分别地通过行交叉开关连接到第i-1行所述执行单元中的所述运算器的输出端;当i=1,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端皆空接;
所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的控制端皆用于接收所述阵列的配置信息中的选择信号;
所述第一多路复用器的输出端连接到所述运算器的第一输入端,所述第二多路复用器的输出端连接到所述运算器的第二输入端,所述第三多路复用器的输出端连接到所述运算器的第三输入端;
所述运算器的控制端用于接收所述阵列的配置信息中的运算指令,所述运算器根据其所述第一、第二、第三输入端的输入和所述运算指令进行运算,并将获得的运算结果从其输出端输出到所述阵列之外、输出到第i+1行的任意一个所述执行单元中以及输出到所述寄存器堆。
2.如权利要求1所述的容软错误的粗粒度可重构阵列,其中所述m×n个执行单元通过用于传输数据的m+1个所述行交叉开关、第一列交叉开关和第二列交叉开关连接;
每一行所述执行单元皆分布在两个所述行交叉开关之间,其中n个所述执行单元的所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的所述第三输入端皆与所述两个行交叉开关中的一个相连,所述n个所述执行单元的所述运算器的输出端皆与所述两个行交叉开关中的另一个相连;
所述第一列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述第一输入端皆相连,并与所述各个执行单元的所述输出端相连;所述第二列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述控制端皆相连,并与所述各个执行单元的所述运算器的所述控制端皆相连。
3.如权利要求2所述的容软错误的粗粒度可重构阵列,其中所述行交叉开关、所述第一列交叉开关和所述第二列交叉开关为由地址线和数据线构成。
4.如权利要求3所述的容软错误的粗粒度可重构阵列,其中4个所述执行单元被组织为一个三模冗余单元,所述三模冗余单元中的三个所述执行单元执行相同的运算,并将它们的运算结果分别地输入第四个所述执行单元;所述第四个所述执行单元作为三模冗余表决器工作。
5.如权利要求4所述的容软错误的粗粒度可重构阵列,其中所述容软错误的粗粒度可重构阵列中的任意一个所述执行单元都能作为三模冗余表决器工作。
6.如权利要求5所述的容软错误的粗粒度可重构阵列,其中所述三个所述执行单元是第i行的任意三个所述执行单元,所述第四个所述执行单元是第i+1行的任意一个所述执行单元,其中1≤i≤m-1。
7.如权利要求3-6中任何一个所述的容软错误的粗粒度可重构阵列,其中所述m为8,所述n为8。
8.如权利要求7所述的容软错误的粗粒度可重构阵列,其中所述阵列的配置信息给予每个所述执行单元一个配置字,所述配置字为40位字节。
9.如权利要求8所述的容软错误的粗粒度可重构阵列,其中在一个所述执行单元的所述配置字中
第39位字节为保留位;
第38位字节为1时表示所述配置字为有效配置字;
第37-32位字节用于表示所述执行单元的编号;
第31-26位字节用于表示所述执行单元的所述运算器的所述运算指令的算数逻辑操作的类型;
第25位字节用于指示所述执行单元的所述运算器的所述第一输入端的输入的类型,所述第一输入端的输入的类型包括:所述第一输入端的输入来自所述执行单元和所述第一输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元;
第24-21位字节用于表示所述第25位字节指示的所述输入,当所述第25位字节为1时,第24-21位字节用于表示所述执行单元的所述寄存器堆的编号;
第20-19位字节用于指示所述执行单元的所述运算器的所述第二输入端的输入的类型,所述第二输入端的输入的类型包括:所述第二输入端的输入来自所述执行单元、所述第二输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元、所述第二输入端的输入是二输入指令立即数和所述第二输入端的输入是三输入指令立即数;
第18-10位字节用于表示所述第20-19位字节指示的所述输入所来自的所述寄存器堆的编号或所述三输入指令立即数;
第9位字节用于指示当所述执行单元的所述运算器的所述第一、第二、第三输入端皆有输入时,所述第三输入端的输入的类型;所述第三输入端的输入的类型包括:所述第三输入端的输入来自所述执行单元和所述第三输入端的输入来自所述容软错误的粗粒度可重构阵列中的其他执行单元;
第8-5位字节用于表示所述第9位字节指示的所述输入所来自的所述寄存器堆的编号;
第4位字节用于表示所述执行单元的所述运算器的所述运算结果的输出类型,当所述第4位字节为1时,所述运算结果被输出到所述执行单元的所述寄存器堆,否则输出到所述容软错误的粗粒度可重构阵列中的其他执行单元;
第3-0位字节用于表示当所述运算结果被输出到所述执行单元的所述寄存器堆时,所述寄存器堆的编号。
10.如权利要求9所述的容软错误的粗粒度可重构阵列,其中当所述第20-19位字节指示所述第二输入端的输入是二输入指令立即数时,用所述第18-10位字节、所述第9位字节和所述第8-5位字节一起表示所述第二输入端的输入。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510779979.1A CN105426274B (zh) | 2015-11-13 | 2015-11-13 | 一种容软错误的粗粒度可重构阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510779979.1A CN105426274B (zh) | 2015-11-13 | 2015-11-13 | 一种容软错误的粗粒度可重构阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105426274A true CN105426274A (zh) | 2016-03-23 |
CN105426274B CN105426274B (zh) | 2018-12-25 |
Family
ID=55504494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510779979.1A Expired - Fee Related CN105426274B (zh) | 2015-11-13 | 2015-11-13 | 一种容软错误的粗粒度可重构阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426274B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158756A (zh) * | 2019-12-31 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060090512A (ko) * | 2005-02-07 | 2006-08-11 | 재단법인서울대학교산학협력재단 | 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조 |
US20130089102A1 (en) * | 2011-10-05 | 2013-04-11 | Woong Seo | Coarse-grained reconfigurable array based on a static router |
CN102253921B (zh) * | 2011-06-14 | 2013-12-04 | 清华大学 | 一种动态可重构处理器 |
CN103778086A (zh) * | 2014-02-24 | 2014-05-07 | 东南大学 | 一种基于粗粒度动态可重构系统的多模式数据访问装置及办法 |
-
2015
- 2015-11-13 CN CN201510779979.1A patent/CN105426274B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060090512A (ko) * | 2005-02-07 | 2006-08-11 | 재단법인서울대학교산학협력재단 | 리소스 공유 및 파이프 라이닝 구성을 갖는 재구성가능배열구조 |
CN102253921B (zh) * | 2011-06-14 | 2013-12-04 | 清华大学 | 一种动态可重构处理器 |
US20130089102A1 (en) * | 2011-10-05 | 2013-04-11 | Woong Seo | Coarse-grained reconfigurable array based on a static router |
CN103778086A (zh) * | 2014-02-24 | 2014-05-07 | 东南大学 | 一种基于粗粒度动态可重构系统的多模式数据访问装置及办法 |
Non-Patent Citations (4)
Title |
---|
DAWOOD ALNAJJAR等: "Implementing Flexible Reliability in a Coarse-Grained Reconfigurable Architecture", 《IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION(VLSI) SYSTEMS》 * |
SYED M.A.H.JAFRI 等: "Design of a Fault-Tolerant Coarse-Grained Reconfigurable Architecture:A Case Study", 《11TH INT"L SYMPOSIUM ON QUALITY ELECTRONIC DESIGN》 * |
范凯等: "基于动态可重构技术的阵列型处理器设计", 《微电子学与计算机》 * |
谢羽威等: "基于模板的粗粒度可重构处理器编译环境设计", 《微电子学与计算机》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111158756A (zh) * | 2019-12-31 | 2020-05-15 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
US11016769B1 (en) | 2019-12-31 | 2021-05-25 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for processing information |
CN111158756B (zh) * | 2019-12-31 | 2021-06-29 | 百度在线网络技术(北京)有限公司 | 用于处理信息的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105426274B (zh) | 2018-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Mitra et al. | Which concurrent error detection scheme to choose? | |
CN100570572C (zh) | 微小卫星星载计算机数据存储用的差错检测和纠错系统 | |
Huang et al. | A reliable LZ data compressor on reconfigurable coprocessors | |
CN102820879A (zh) | 抗辐照的三模冗余电路结构 | |
US20230350746A1 (en) | Fault-tolerant system with multi-core cpus capable of being dynamically configured | |
Li et al. | Design and characterization of SEU hardened circuits for SRAM-based FPGA | |
Jafri et al. | Design of a fault-tolerant coarse-grained | |
CN105912501A (zh) | 一种基于大规模粗粒度可重构处理器的sm4-128加密算法实现方法及系统 | |
US10725841B1 (en) | Method and apparatus for error detection and correction | |
CN102857213A (zh) | 可重构逻辑块 | |
Shen et al. | A functional testing method for microprocessors | |
US20110078498A1 (en) | Radiation-hardened hybrid processor | |
Zhang et al. | A self-healing strategy with fault-cell reutilization of bio-inspired hardware | |
Wang et al. | Fault-tolerant strategy for real-time system based on evolvable hardware | |
CN105426274A (zh) | 一种容软错误的粗粒度可重构阵列 | |
US7430703B1 (en) | Error correction for multiple word read | |
Hong et al. | Design and implementation of fault-tolerant soft processors on FPGAs | |
US10083080B2 (en) | Ultra-low power processor-in-memory architecture | |
Prodan et al. | Self-repairing embryonic memory arrays | |
CN111856991B (zh) | 对单粒子翻转具备五级防护的信号处理系统和处理方法 | |
CN104731666A (zh) | 一种抗单粒子翻转的自纠错集成电路及其纠错方法 | |
Mukherjee et al. | Fault tolerant architecture design using quad‐gate‐transistor redundancy | |
CN109408839A (zh) | 一种通过局部冗余减少敏感配置比特的抗辐射容错fpga电路设计方法 | |
Cui et al. | Mitigating single event upset method for Zynq MPSoC | |
US10177794B1 (en) | Method and apparatus for error detection and correction |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181225 Termination date: 20211113 |
|
CF01 | Termination of patent right due to non-payment of annual fee |