行的一个执行单元的运算器的第一、第二和第三输入端;这第四个执行单元的运算器作为三模冗余(TMR)表决器工作,其中1、a、b、c、j为整数且1彡i彡7,0彡a彡7,0彡b彡7,0 ^ c ^ 7,0 ^ j ^ 7o
[0078]阵列104中64个执行单元每一个都可以用作TMR表决器,这是本发明与其它研究最大的不同点。同类研究的执行单元中运算器的设计一般只有两个输入数据,而本发明中的执行单元有三个输入。根据配置信息的不同,第三个输入C可以禁用,从而与传统的PE设计一样仅支持A、B两个输入;也可以设置为条件执行的条件控制位,从而实现类似于C语言中?条件操作语句的三元指令,即C为1时输出A的值,否则输出B的值;更重要的一种用法是将C视作与A、B类似的输入,然后为PE专门设置一条指令INST_V0TE,该指令即执行对A、B、C进行表决的功能,从而对错误进行检测与恢复。
[0079]可以使用SystemC语言实现本发明的容软错误的粗粒度可重构阵列,但并不限于SystemC语言实现,后续硬件实现可以采用其它硬件描述语言。【具体实施方式】如下:
[0080]步骤1、构造本发明的容软错误的粗粒度可重构阵列的各执行单元,各执行单元的结构如前所述;
[0081]步骤2、将各行执行单元分布在两个行交叉开关之间,实现各行执行单元与各行交叉开关连接;
[0082]步骤3、将第一、第二列交叉开关与各行交叉开关连接,并分别连接到外部的共享存储器和配置信息存储器;
[0083]步骤4、书写配置信息;
[0084]步骤5、将重要操作实现为TMR结构,实现对软错误的检测与恢复。
[0085]以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域的技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
【主权项】
1.一种容软错误的粗粒度可重构阵列,接收阵列的输入数据和阵列的配置信息,其特征在于,包括成m行η列排布的mXn个执行单元; 所述执行单元包括第一多路复用器、第二多路复用器、第三多路复用器、运算器和寄存器堆;在第i行的任意一个所述执行单元中,1 ^ i ^ m, 所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第一输入端皆用于接收所述阵列的输入数据; 所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第二输入端对应地与所述本地寄存器堆的第一、第二和第三输出端相连; 当2 < i < m,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端分别地通过行交叉开关连接到第i_l行所述执行单元中的所述运算器的输出端;当i = 1,所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的第三输入端皆空接; 所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的控制端皆用于接收所述阵列的配置信息中的选择信号; 所述第一多路复用器的输出端连接到所述运算器的第一输入端,所述第二多路复用器的输出端连接到所述运算器的第二输入端,所述第三多路复用器的输出端连接到所述运算器的第三输入端; 所述运算器的控制端用于接收所述阵列的配置信息中的运算指令,所述运算器根据其所述第一、第二、第三输入端的输入和所述运算指令进行运算,并将获得的运算结果从其输出端输出到所述阵列之外、输出到第i+Ι行的任意一个所述执行单元中以及输出到所述寄存器堆。2.如权利要求1所述的容软错误的粗粒度可重构阵列,其中所述mXn个执行单元通过用于传输数据的m+1个所述行交叉开关、第一列交叉开关和第二列交叉开关连接; 每一行所述执行单元皆分布在两个所述行交叉开关之间,其中η个所述执行单元的所述第一多路复用器、所述第二多路复用器和所述第三多路复用器的所述第三输入端皆与所述两个行交叉开关中的一个相连,所述η个所述执行单元的所述运算器的输出端皆与所述两个行交叉开关中的另一个相连; 所述第一列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述第一输入端皆相连,并与所述各个执行单元的所述输出端相连;所述第二列交叉开关与所述各个执行单元的所述第一、第二、第三多路复用器的所述控制端皆相连,并与所述各个执行单元的所述运算器的所述控制端皆相连。3.如权利要求2所述的容软错误的粗粒度可重构阵列,其中所述行交叉开关、所述第一列交叉开关和所述第二列交叉开关为由地址线和数据线构成。4.如权利要求3所述的容软错误的粗粒度可重构阵列,其中4个所述执行单元被组织为一个三模冗余单元,所述三模冗余单元中的三个所述执行单元执行相同的运算,并将它们的运算结果分别地输入第四个所述执行单元;所述第四个所述执行单元作为三模冗余表决器工作。5.如权利要求4所述的容软错误的粗粒度可重构阵列,其中所述容软错误的粗粒度可重构阵列中的任意一个所述执行单元都能作为三模冗余表决器工作。6.如权利要求5所述的容软错误的粗粒度可重构阵列,其中所述三个所述执行单元是第i行的任意三个所述执行单元,所述第四个所述执行单元是第i+Ι行的任意一个所述执行单元,其中1 < i < m-1。7.如权利要求3-6中任何一个所述的容软错误的粗粒度可重构阵列,其中所述m为8,所述η为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位字节一起表示所述第二输入端的输入。
【专利摘要】本发明公开了一种容软错误的粗粒度可重构阵列,接收阵列的输入数据和阵列的配置信息,包括成阵列排布的多个执行单元。各执行单元包括三个多路复用器、运算器和寄存器堆;各多路复用器的第一输入端皆用于接收阵列的输入数据,第二输入端对应地与寄存器堆的三个输出端相连,第三输入端皆用于接收上一行执行单元的输出,控制端皆用于接收阵列的配置信息中的选择信号,输出端分别连接到运算器的三个输入端,运算器的控制端用于接收阵列的配置信息中的运算指令,运算器的运算结果输出到阵列之外、输出到下一行的任意一个执行单元中以及输出到寄存器堆。本发明硬件代价低,应用灵活,能将执行单元很容易地组织成三模冗余单元,从而实现容错加固功能。
【IPC分类】G06F11/16, G06F11/18
【公开号】CN105426274
【申请号】CN201510779979
【发明人】绳伟光, 蒋剑飞, 毛志刚
【申请人】上海交通大学
【公开日】2016年3月23日
【申请日】2015年11月13日