一种容软错误的粗粒度可重构阵列的制作方法_3

文档序号:9667226阅读:来源:国知局
构,其中8X8个执行单元(PE)通过9个行交叉开关(crossbar)、第一列交叉开关(crossbar)和第二列交叉开关连接(crossbar)。具体地为,每行8个执行单元和9个行交叉开关交替排布,各行执行单元皆分布在两个行交叉开关之间并与它们相连,第一列交叉开关布置在9个行交叉开关的一端处与各个执行单元相连,第二列交叉开关布置在9个行交叉开关的另一端处与各个执行单元相连。行交叉开关、第一列交叉开关和第二列交叉开关由地址线和数据线构成,通过它们和诸如使能信号等的控制信号实现功能,用于传输包括阵列104的输入数据、配置信息至各个执行单元以及将各个执行单元的运算结果在阵列104内部传输和传输到阵列104之外。这样,对于第2到8行的执行单元,它们中的任何一个都可以从其上一行的行交叉开关、第一列交叉开关和第二列交叉开关接收数据或配置指令,包括阵列104的输入数据、配置信息和其他执行单元输出的运算结果(具体地是其上一行中任意执行单元输出的运算结果);以及向其下一行行交叉开关和第一列交叉开关输出其运算结果;第1行的执行单元中的任何一个则可以从其上一行的行交叉开关、第一列交叉开关和第二列交叉开关接收数据,包括阵列104的输入数据和配置信息,以及向其下一行行交叉开关和第一列交叉开关输出其运算结果。需要说明的是,第一列交叉开关和第二列交叉开关是与各个执行单元皆相连,但为了图示清晰,在图6中仅示意性地表示了它们与最接近的执行单元的连接。
[0058]容软错误的粗粒度可重构阵列104的8X8个执行单元的构造皆相同,以下以其中一个执行单元,如图6中第5行第8列的执行单元(图6中被加粗的PE)为例,描述各执行单元的结构。
[0059]如图7所示,执行单元包括三个多路复用器、一个运算器和寄存器堆,具体地,三个多路复用器为第一多路复用器MUX A、第二多路复用器MUX B和第三多路复用器MUX C,一个运算器为运算器ALU。第一多路复用器MUX A、第二多路复用器MUX B和第三多路复用器MUX C皆具有三个输入端,其中的第一输入端皆与第一列交叉开关相连以接收阵列104的输入数据;第二输入端对应地与该执行单元中的寄存器堆的三个输出端相连,用于接收存储在寄存器堆中的该执行单元的上一次运算的运算结果;第三输入端分别地通过其上一行的行交叉开关与其上一行(即第4行)的任意一个执行单元中的运算器的输出端相连,用于接收其上一行(即第4行)的任意一个执行单元上一次运算的运算结果。需要说明的是,这里描述的是第5行第8列的执行单元的三个多路复用器的第三输出端,第2-8行的执行单元的三个多路复用器的第三输出端连接情况与其相同,而第1行执行单元的三个多路复用器的第三输出端并没有来自上一行执行单元的运算结果可以接收,所以可以认为第1行执行单元的三个多路复用器的第三输出端为空接。
[0060]第一多路复用器、第二多路复用器和第三多路复用器的控制端皆与第二列交叉开关相连以通过第二列交叉开关接收阵列104的配置信息中的选择信号,具体地,第一多路复用器的控制端用于接收选择信号Sel_A,第二多路复用器的控制端用于接收选择信号Sel_B,第三多路复用器的控制端用于接收选择信号Sel_C。第一多路复用器的输出端连接到运算器的第一输入端,第二多路复用器的输出端连接到运算器的第二输入端,第三多路复用器的输出端连接到运算器的第三输入端。这样,通过阵列104的配置信息中的选择信号,能够确定三个多路复用器的输出,即确定运算器的三个输入Input A、Input B和InputCo运算器的控制端用于接收阵列104的配置信息中的运算指令Op Code,运算器根据其第一、第二、第三输入端的输入Input A、Input B、Input C和运算指令Op Code进行运算,获得运算结果。运算器的输出端与该执行单元的下一行行交叉开关相连以将运算结果通过该行交叉开关输出到第i+Ι行的执行单元,运算器的输出端还与该执行单元的寄存器堆相连以将运算结果输出到寄存器堆,运算器的输出端还与第一列交叉开关相连以将运算结果输出到阵列104之外(即共享存储器103)。
[0061]上述的任意一行执行单元Pu、…、Ρ^α = 1、…、8)中的运算器将其运算结果释放到其下一行行交叉开关,其中当2 < i < 8,执行单SPl。、…、P1>7的运算结果被输出到其下一行的执行单元P1+1,<:、…、P1+1,7,实现方式如图8所示。具体地为:执行单SPu、…、Plj7(i = 1、…、8)中的运算器将其运算结果R。、…、R7释放到该行交叉开关,执行单元P1+1,。、…、P1+1,7(i = 2、…、8)获取其上一行的行交叉开关中的运算结果,并且通过上一行的行交叉开关内部的指定路径传输到其运算器三个输入Input A(A。、…、A7)、Input B(B。、…、B7)、Input C(C。、...、C7)中的一个或多个。
[0062]如前所述,配置字中阵列104的配置信息给予每个执行单元一个配置字,用于控制该执行单元的工作。本实施例中每个执行单元的配置字是一个40位字节,如图9所示,其具体地为:
[0063]字节段401:第39位字节resv,为保留位;
[0064]字节段402:第38位字节valid,为指示有效位,其为1时表示该配置字为有效配置字,否则为无效配置字;
[0065]字节段403:第37-32位字节pe_id,用于表示本执行单元的编号;
[0066]字节段404:第31-26位字节op,用于表示该执行单元的运算器的运算指令的算数逻辑操作的类型;
[0067]字节段405:第25位字节A type,用于指示该执行单元的运算器的第一输入端的输入Input A的类型,Input A的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元);
[0068]字节段406:第24-21位字节input A,用于表示第25位字节A type指示的输入Input A,当第25位字节A type为1时,第24-21位字节input A用于表示本执行单元的寄存器堆的编号;
[0069]字节段407:第20-19位字节B type用于指示本执行单元的运算器的第二输入端的输入Input B的类型,Input A的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元)、是二输入指令立即数、是三输入指令立即数;
[0070]字节段408:第18-10位字节input B,用于表示第20-19位字节B type指示的输入Input B所来自的寄存器堆的编号或三输入指令立即数;
[0071]字节段409:第9位字节C type,用于指示当本执行单元的运算器的第一、第二、第三输入端皆有输入时,第三输入端的输入Input C的类型;Input C的类型包括:来自本执行单元、来自阵列104中的其他执行单元(即其上一行执行单元);
[0072]字节段410:第8-5位字节input C,用于表示第9位字节C type指示的输入InputC所来自的寄存器堆的编号;
[0073]字节段411:第4位字节R type,用于表示本执行单元的运算器的运算结果的输出类型;当其为1时,该运算结果被输出到本执行单元的寄存器堆,否则输出到阵列104中的其他执行单元(即其下一行执行单元);
[0074]字节段412:第3-0位字节result,用于表示当运算结果被输出到本执行单元的寄存器堆时,该寄存器堆的编号。
[0075]其中,当第20-19位字节B type指示输入Input B是二输入指令立即数时,用第18-5位字节一起表示该输入。
[0076]可以通过将阵列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,仍然为正确值,其它情况类似。
[0077]由TMR的实现原理可知其消耗了大量冗余资源来实现错误的检测与恢复。考虑到本实施例的阵列104包含64个执行单元,资源数量还是比较多的,因此可以采用将4个执行单元组织为一个TMR单元的方法来实现对于软错误的检测与恢复:令其中的三个执行单元执行相同的运算,并将它们的运算结果分别地输入第四个执行单元,并令第四个执行单元作为三模冗余表决器工作。如图10所示,三个1行的执行单元?1,。?1,,和?1,。的运算器接收相同的输入、执行相同的运算,并将它们的运算结果Ra、Rb和R。分别地输入下一
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1