背景技术:
1、一般的并行计算问题是如何构建具有多个并行操作元件的通用计算机,该多个并行操作元件可有效地用于单个计算问题。现有的解决方案包括为固定功能的脉动阵列,其中张量处理单元(tpu)的矩阵乘法单元(mxu)和图形处理单元(gpu)的张量核心执行矩阵乘法。早期的脉动阵列具有非常小的节点计数,诸如8个节点。gpu只能在矩阵乘法上达到其峰值。多核心中央处理单元(cpu)仅达到数十个或有时数百个并行核心。向量机具有为一维的计算单元。
技术实现思路
1、本公开提供了一种能够进行超出密集线性代数的操作的计算单元。此类操作可包括稀疏线性代数、排序、压缩、动态规划以及多种置换和表查找任务。计算单元包括单体(cell)的脉动阵列,该单体各自包括交叉开关(crossbar switch)、一个或多个通用算术逻辑单元(alu)和寄存器文件,该寄存器文件接收来自一个或多个通用alu的输出并将该输出提供回交叉开关。单体通过总线连结,该总线将来自一个单体的右侧输出携带到对着的下一单体的左侧输入,或者该总线将来自一个单体的底部输出携带到下方的下一单体的顶部输入。
2、脉动阵列可被编程以执行循环块,每个循环块是在脉动阵列的所有单体中各自执行一次的指令序列。循环块从阵列的左上(0,0)原点开始,并沿着反对角线传播穿过阵列,但是仅有的硬件顺序约束是顶部前驱和左侧前驱必须在当前单体之前已经执行。不同的循环块改变脉动阵列的行为。运行不同的循环块允许执行:密集或稀疏矩阵乘法;整数、记录和字符串的排序;压缩;以及动态规划算法,以映射到脉动阵列。在阵列的边缘处,数据作为向量沿着顶部和左侧馈入、传播穿过阵列并由循环块程序修改,然后在底部和右侧上产生输出向量。这些输入向量和输出向量可由标准向量或simd加载/存储引擎服务。
3、本公开的一个方面提供了一种脉动单体,该脉动单体包括:交叉开关;第一算术逻辑单元(alu),该第一alu耦合到交叉开关的第一输出;第二alu,该第二alu耦合到交叉开关的第二输出;以及寄存器文件,该寄存器文件被配置为接收来自第一alu和第二alu的输出作为到该寄存器文件的输入。寄存器文件的输出可被提供到交叉开关的输入。交叉开关可被配置为接收来自一个或多个相邻脉动单体的输出作为到交叉开关的输入。根据一些示例,第一alu或第二alu中的至少一者可包括乘法器。
4、寄存器文件可使用相对小的寄存器,诸如64位寄存器或更小的寄存器。根据一些示例,交叉开关是4×4交叉开关,被配置为接收来自寄存器文件的两个输入和来自相邻单体的两个输入,并且向第一alu提供两个输出并且向第二alu提供两个输出。
5、在其他示例中,脉动单体还包括耦合在交叉开关与寄存器文件之间的第三算术逻辑单元。
6、本公开的另一方面提供了一种脉动阵列,该脉动阵列包括:多个单体,该多个单体被布置成使得第一单体的第一输出被提供作为到相邻的第二单体的输入,并且第一单体的第二输出被提供作为到相邻的第三单体的输入。阵列中的单体中的每个单体可包括:交叉开关;一个或多个alu,该一个或多个alu耦合到交叉开关的输出;寄存器文件,该寄存器文件被配置为接收来自第一alu和第二alu的输出作为到该寄存器文件的输入。一个或多个alu可以是通用alu。根据一些示例,每个单体中的寄存器文件的输出被提供到同一单体中的交叉开关的输入。
7、一个或多个alu可包括耦合到交叉开关的第一输出的第一alu以及耦合到交叉开关的第二输出的第二alu。在一些示例中,第四单体的交叉开关被配置为接收来自第三单体的第一alu的输出以及来自第二单体的第二alu的输出作为到该交叉开关的输入。
8、根据一些示例,阵列被配置为每周期接收两个源向量并且产生至少一个结果向量。
9、本公开的另一方面提供了一种脉动阵列单体,其中该单体包括寄存器文件和两个通用算术逻辑单元(alu)。多个单体可被配置成矩阵或阵列,使得第一单体中的第一alu的输出被提供到该第一单体右侧的第二单体,并且第一单体中的第二alu的输出被提供到该第一单体下方的第三单体。阵列的每个单体中的两个alu允许在每个周期中处理不同的指令。
10、本公开的另一方面提供了一种计算系统,该计算系统包括:一个或多个存储器;一个或多个处理器,该一个或多个处理器与一个或多个存储器通信;以及多个单体,该多个单体与一个或多个处理器通信,该多个单体被布置成使得第一单体的第一输出被提供作为到相邻的第二单体的输入,并且第一单体的第二输出被提供作为到相邻的第三单体的输入。每个单体可包括:交叉开关;第一算术逻辑单元(alu),该第一alu耦合到交叉开关的第一输出;第二alu,该第二alu耦合到交叉开关的第二输出;以及寄存器文件,该寄存器文件被配置为接收来自第一alu和第二alu的输出作为到该寄存器文件的输入。
11、一个或多个处理器可包括标量核心和向量处理单元中的至少一者。一个或多个存储器可包括向量数据缓存。
12、根据一些示例,该系统还包括定序器,该定序器被配置为控制发送到一个或多个处理器和多个单体的指令。
13、阵列可被配置为每周期接收两个源向量并且产生至少一个结果向量。
1.一种脉动单体,其特征在于,包括:
2.根据权利要求1所述的脉动单体,其特征在于,其中所述寄存器文件的输出被提供到所述交叉开关的输入。
3.根据权利要求1所述的脉动单体,其特征在于,其中所述交叉开关被配置为接收来自一个或多个相邻脉动单体的输出作为所述交叉开关的输入。
4.根据权利要求1所述的脉动单体,其特征在于,其中所述第一算术逻辑单元或所述第二算术逻辑单元中的至少一个包括乘法器。
5.根据权利要求1所述的脉动单体,其特征在于,其中所述寄存器文件使用64位寄存器或更小的寄存器。
6.根据权利要求1所述的脉动单体,其特征在于,其中所述交叉开关是4×4交叉开关,被配置为接收来自所述寄存器文件的两个输入和来自相邻单体的两个输入,并且向所述第一算术逻辑单元提供两个输出并且向所述第二算术逻辑单元提供两个输出。
7.根据权利要求1所述的脉动单体,其特征在于,还包括耦合在所述交叉开关与所述寄存器文件之间的第三算术逻辑单元。
8.一种脉动阵列,其特征在于,包括:
9.根据权利要求8所述的脉动阵列,其特征在于,其中每个单体中的所述寄存器文件的输出被提供到所述同一单体中的所述交叉开关的输入。
10.根据权利要求8所述的脉动阵列,其特征在于,其中所述一个或多个算术逻辑单元是通用算术逻辑单元。
11.根据权利要求8所述的脉动阵列,其特征在于,其中所述一个或多个算术逻辑单元包括耦合到所述交叉开关的第一输出的第一算术逻辑单元以及耦合到所述交叉开关的第二输出的第二算术逻辑单元。
12.根据权利要求11所述的脉动阵列,其特征在于,其中第四单体的所述交叉开关被配置为接收来自所述第三单体的所述第一算术逻辑单元的输出和来自所述第二单体的所述第二算术逻辑单元的输出作为所述交叉开关的输入。
13.根据权利要求8所述的脉动阵列,其特征在于,其中所述阵列被配置为每周期接收两个源向量并且产生至少一个结果向量。
14.一种计算系统,其特征在于,包括:
15.根据权利要求14所述的计算系统,其特征在于,其中所述一个或多个处理器包括标量核心和向量处理单元中的至少一个。
16.根据权利要求14所述的计算系统,其特征在于,其中所述一个或多个存储器包括向量数据缓存。
17.根据权利要求14所述的计算系统,其特征在于,还包括定序器,所述定序器被配置为控制发送到所述一个或多个处理器和所述多个单体的指令。
18.根据权利要求14所述的计算系统,其特征在于,其中所述阵列被配置为每周期接收两个源向量并且产生至少一个结果向量。
19.根据权利要求14所述的计算系统,其特征在于,其中每个单体中的所述寄存器文件的输出被提供到所述同一单体中的所述交叉开关的输入。
20.根据权利要求14所述的计算系统,其特征在于,其中所述交叉开关被配置为接收来自一个或多个相邻单体的输出作为所述交叉开关的输入。
21.根据权利要求14所述的计算系统,其特征在于,其中所述一个或多个算术逻辑单元是通用算术逻辑单元。
22.根据权利要求14所述的计算系统,其特征在于,其中所述一个或多个算术逻辑单元包括耦合到所述交叉开关的第一输出的第一算术逻辑单元以及耦合到所述交叉开关的第二输出的第二算术逻辑单元。