可编程乘加阵列硬件

文档序号:1205465 发布日期:2020-09-01 浏览:15次 >En<

阅读说明:本技术 可编程乘加阵列硬件 (Programmable multiply-add array hardware ) 是由 韩亮 蒋晓维 于 2018-12-21 设计创作,主要内容包括:一种包括数据架构的集成电路,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器。所述数据架构接收用于选择所述数据架构的所述N个乘法器和所述N个加法器之间的数据流的指令。所选择的数据流包括以下选项:(1)使用所述N个乘法器和所述N个加法器的第一数据流,用于提供乘法累加模式;以及(2)第二数据流,用于提供乘法归约模式。(An integrated circuit comprising a data architecture including N adders and N multipliers configured to receive operands. The data architecture receives instructions for selecting data flows between the N multipliers and the N adders of the data architecture. The selected data stream includes the following options: (1) using a first data stream of the N multipliers and the N adders for providing a multiply-accumulate mode; and (2) a second data stream for providing a multiplicative reduction mode.)

可编程乘加阵列硬件

相关申请的交叉引用

本申请基于2017年12月22日提交的美国临时申请No.62/610,052和2018年8月3日提交的美国专利申请No.16/054,783并要求其优先权,上述申请的全部内容通过引用合并于此。

背景技术

随着基于神经网络的深度学***台不再是合适计算基础来支持性能、功率效率和经济可扩展性方面不断增长的计算需求。开发神经网络处理器以加速基于神经网络的深度学习应用已在许多业务领域获得了重大关注,包括成熟的芯片制造商、初创公司以及大型互联网公司。单指令多数据(SIMD)架构能应用于芯片以加速深度学习应用的计算。

神经网络算法通常需要大矩阵乘法累加运算。因此,加速硬件通常需要大规模的并行乘法累加结构来加快加速。然而,必须控制这种结构的面积和功率成本需求,以优化硬件的计算速度并减小芯片数量的大小以节省功耗。

发明内容

本公开的实施例提供了一种乘法器阵列与加法器阵列之间的软件可编程连接的架构,以使得能够重用(reuse)加法器以执行乘法累加(multiply-accumulate)或乘法归约(multiply-reduce)。与传统解决方案相比,此架构在面积和功率上更高效,这对于其中实现大量数据通道的神经网络处理单元而言是重要的。

本公开的实施例提供了一种用于指定要在数据架构上执行的功能的方法,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器。所述方法包括:接收用于所述数据架构在乘法归约模式或乘法累加模式之一中进行操作的指令;以及基于所述指令,选择所述数据架构的所述N个乘法器与所述N个加法器中的至少一些之间的数据流。

此外,本公开的实施例包括一种集成电路。所述集成电路包括数据架构,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器。所述数据架构接收用于选择所述数据架构的所述N个乘法器与所述N个加法器之间的数据流的指令。所选择的数据流包括以下选项:(1)使用所述N个乘法器和所述N个加法器的第一数据流,用于提供乘法累加模式;以及(2)第二数据流,用于提供乘法归约模式。

此外,本公开的实施例包括一种存储指令集的非暂时性计算机可读存储介质,所述指令集能由设备的至少一个处理器执行,以使所述设备执行上述方法。

附图说明

图1示出了与本公开的实施例一致的示例性神经网络处理单元芯片架构。

图2示出了具有4个并行通道的乘加阵列的示例性架构。

图3示出了乘法累加器(MAC)单元设计的示例性架构。

图4示出了跟随有归约加法器树的并行乘法器的示例性架构。

图5示出了映射通常需要在单个数据通道中和跨通道的累加能力的算法的示例性架构。

图6A和6B示出了与本公开的实施例一致的乘加阵列的示例性架构。

图7示出了与本公开的实施例一致的用于指定要在数据架构上执行的功能的示例性方法。

具体实施方式

现在将详细参考示例性实施例,其示例在附图中示出。以下描述参考附图,其中除非另外表示,否则不同附图中的相同数字表示相同或相似的元素。在示例性实施例的以下描述中阐述的实现并不代表与本发明一致的所有实现。相反,它们仅是与如所附权利要求中所述的本发明的相关方面一致的装置和方法的示例。

本公开的实施例可以在神经网络处理单元(NPU)架构(例如图1中示出的示例性NPU架构100)中实现,以加速深度学习算法。

图1示出了根据本公开的实施例的示例性架构100。如图1所示,架构100可以包括片上通信系统102、片外存储器104、存储器控制器106、直接存储器存取(DMA)单元108、联合测试行动组(JTAG)/测试访问端(TAP)控制器110、总线112、***接口114等。应当理解,片上通信系统102可以基于所传送的数据分组来执行算术运算。

芯片通信系统102可以包括全局管理器105和多个瓦片(tile)1024。全局管理器105可以包括至少一个集群管理器以与瓦片1024协调。例如,每个集群管理器可以与提供神经网络的突触/神经元电路的瓦片阵列相关联。例如,图1的瓦片的顶层可以提供表示神经网络的输入层的电路,而瓦片的第二层可以提供表示神经网络的隐藏层的电路。如图1所示,全局管理器105可以包括两个集群管理器以与两个瓦片阵列协调。瓦片1024可以包括含一个或多个乘法器、加法器、乘法累加器的SIMD架构,并且被配置为在全局管理器105的控制下对所传送的数据分组执行一个或多个操作(例如,算术计算)。为了对所传送的数据分组执行操作,瓦片1024可以包括至少一个用于处理数据分组的核和至少一个用于存储数据分组的缓冲器。

片外存储器104可以包括只读存储器(ROM)、可擦除可编程只读存储器(EPROM)等。与集成有一个或多个处理器的片上存储器相比,片外存储器104可以被配置为以较慢的访问速度存储大量数据。

存储器控制器106可以读、写或刷新一个或多个存储器设备。存储器设备可以包括片上存储器和片外存储器。例如,存储器设备可以被实现为任何类型的易失性或非易失性存储器设备或其组合,例如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、闪存、或者磁盘或光盘。

DMA单元108可以生成存储器地址并启动存储器读或写周期。DMA单元108可包含能被一个或多个处理器写和读的若干硬件寄存器。寄存器可以包括存储器地址寄存器、字节计数寄存器和一个或多个控制寄存器。这些寄存器可以指定源、目的地、传输方向(从输入/输出(I/O)设备读或向I/O设备写)、传输单元的大小、和/或一个突发中传输的字节数的某种组合。

JTAG/TAP控制器110可以指定专用调试端口,该专用调试端口实现用于低开销访问的串行通信接口(例如,JTAG接口),而无需直接外部访问系统地址和数据总线。JTAG/TAP控制器110还可以指定片上测试访问接口(例如,TAP接口),该片上测试访问接口实现协议以访问一组测试寄存器,该测试寄存器提供了各个部分的芯片逻辑级别和设备能力。

总线112可以包括芯片内总线和芯片间总线。芯片内总线可以彼此连接NPU架构100的所有内部组件,例如片上通信系统102、片外存储器104、存储器控制器106、DMA单元108、JTAG/TAP控制器110和PCIe接口114。

***接口114(例如PCIe接口)可以支持任何两个端点之间的全双工通信,而对跨多个端点的并发访问没有固有的限制。

在具有单指令多数据(SIMD)架构的计算机中,并行的多个处理单元、算术逻辑单元(ALU)或小型CPU中的每个使用它们自己的数据同时进行计算-通常为2或3个输入操作数和1个输出结果。例如,乘加阵列在SIMD架构中是常见的,其中每个数据通道可拥有私有乘法器和加法器。私有乘法器和加法器使得能够并行处理不同的数据流。图2示出具有4个并行通道的乘加阵列的示例性架构,其中该阵列包括四个乘法器M1-M4和四个加法器A1-A4。应当注意的是,本公开中的附图将以4路SIMD示出,但是4路SIMD概念可扩展为比4通道更窄或更宽。

如图2所示,两个操作数被输入到每个乘法器,即M1-M4。为了简单起见,操作数op1和op2输入到乘法器M1中,乘法器M1生成结果R1。操作数op1和op2相乘的结果R1输入到加法器A1,加法器A1还接收操作数op3作为输入,以生成结果R2。操作数op3与结果R1相加的结果R2可继续用于进一步处理(未示出)。以上运算可以总结如下:

R2=[(op1*op2)=R1]+op3。

与上述运算同时,其他操作数输入到图2所示的其他乘法器,并且每个其他乘法器的结果与其他操作数一起输入到其他加法器,其结果继续用于进一步处理(未示出)。

一些优化设计可将乘法器和加法器融合到一个乘法累加器(MAC)单元中,以节省面积。图3示出了包括四个MAC单元Mcl-Mc4的MAC单元设计的示例性架构。如图3所示,向每个MAC单元输入三个操作。为了简单起见,在图3中示出了操作数op1、op2和op3,其中操作数opl乘以操作数op2,结果加到操作数op3。结果(例如R3)继续用于进一步处理(未示出)。

与上述运算同时,其他操作数输入到图3所示的其他MAC单元,并且每个其他MAC单元的结果继续用于进一步处理(未示出)。图3的运算类似于图2的运算,不同在于只有一层组件,即MAC单元Mcl-Mc4,而不是图2中所示的第一层包括乘法器M1-M4并且第二层包括加法器A1-A4的两层设置。

然而,应注意,图2和图3中所示的实现只能并行处理私有通道内的数据。即,没有跨通道数据处理能力。此外,在一些神经网络中,大矩阵乘加运算非常常见。需要以高效的方式将此类运算映射到大型但不是那么宽的并行硬件中。因此,跨多个SIMD通道的累加运算对于性能而言可能变得很重要。为了实现来自不同SIMD通道的更快的归约加法累加运算,通常在乘法器阵列之后引入加法器树。

图4示出了跟随有归约加法器树的并行乘法器的示例性架构。在运算中,一对操作数输入到每个乘法器,例如M1-M4。为简单起见,操作数opl和op2示为乘法器M1的输入,操作数opl和op2示为乘法器M2的输入,不过很容易理解,其他操作数对也可以同时输入到其他乘法器M3-M4。此外,即使操作数op1和op2示出为到乘法器M1和M2的输入,但操作数op1和op2可以彼此不同(并且扩展到输入到其他乘法器M3-M4的操作数)。区别可能在于它们的标识以及流经输入的数据的类型和种类。

在加法器A1处将操作数op1和op2相乘的结果R4与操作数opl和op2相乘的结果R5相加以生成结果R6。结果R6在加法器A3处被加到结果R7(来自加法器A2),以生成结果R8。结果R8继续用于进一步处理(未示出)。

加法器A1-A3形成归约加法器树,并且该树中的加法器比图2所示的架构少一个,但是从图2所示的级别增加了级别的数量,即包括M1-M4的级别1、包括A1-A2的级别2以及包括A3的级别3,图2中有2个级别,即包括M1-M4的级别1和包含A1-A4的级别2。虽然图4中的级别增加,但该架构使用多个乘法器和加法器树产生单个结果(例如,结果R8),而图2所示的架构产生四个分开或并行的结果。

实际上,图2、3和4中示出的映射架构通常需要在单个数据通道中和跨通道的累加能力。例如,图5示出了这样的架构的示例,该架构提供跟随有归约加法器树的并行MAC层。在运算中,三元组的操作数输入到层1中的每个MAC单元。来自每个MAC单元的结果输入到归约加法器树。例如,操作数op1、op2和op3输入到MAC单元Mcl中以生成结果R9。其他三元组的操作数输入到MAC单元Mc2-Mc4中的每个,分别生成结果R10、R11和R12。结果R9(来自MAC单元Mcl)与结果R10(来自MAC单元Mc2)一起输入到加法器A1,以生成R13。类似地,结果R11(来自MAC单元Mc3)与结果R12(来自MAC单元Mc4)一起输入到加法器A2,以生成R14。加法器A3接收结果R13和R14作为操作数以生成结果R15,结果R15继续用于进一步处理(未示出)。

本公开的实施例提供了可编程的乘加阵列硬件。例如,实施例描述了在乘法器阵列与加法器阵列之间选择数据流的能力,以使得能够重用加法器以执行乘法累加或乘法归约加法。因此,与替代解决方案相比,该架构提供了更高的面积和功率效率。

此外,尽管实施例针对神经网络处理单元,但是应当理解,本文描述的实施例可以由具有跨通道数据处理能力的任何SIMD架构硬件、特别是用于深度学习的加速器来实现。这包括专用于神经网络处理单元和FPGA的SIMD架构硬件,以及扩展到深度学习市场的升级GPU和DSP。

图6A和图6B示出了与本公开的实施例一致的可编程为执行乘法累加和乘法归约模式的乘加阵列600的示例性架构。如图6A和6B所示,加法器A1-A4在乘法归约模式(图6A)和乘法累加模式(图6B)中重用。

在运算中并且如图6A所示,加法器A4与数据流断开,而加法器A1-A3被连接以执行乘法归约运算。在图示中,乘法器M1接受两个操作数op1和op2来生成到加法器Al的输出操作数。乘法器M2、M3和M4类似地配备成与M1相同地操作,并将输出操作数提供给它们相应的加法器。例如,乘法器M1和M2将输出操作数提供给加法器A1,而乘法器M3和M4将输出操作数提供给加法器A2。加法器A1和A2可以将它们的输入操作数相加并将输出操作数提供给加法器A3。

为了执行并行乘法累加操作,如图6B所示,数据流包括每个加法器A1-A4连接到对应的乘法器。乘法器M1接受两个操作数opl和op2生成结果操作数R16。结果操作数R16和操作数op3作为操作数提供给加法器A1。来自A1的结果可以继续前进到另一个阵列(未示出)。类似地,乘法器M2-M4接受一组操作数,并且来自M2-M4中的每个的结果操作数分别输入到加法器A3、A2和A4,分别作为A3、A2和A4的第一操作数。A2-A4中的每个接受第二操作数,并且结果操作数可以继续前进到其他阵列(未示出)。

所公开的实施例提供了乘法器阵列与加法器阵列之间的软件可控数据流,以在任一模式下执行。指示硬件选择通过乘法器和加法器的数据流的一种方法是通过编译器,用于为不同的期望运算生成不同的指令。例如,要执行D=OPl*OP2+OP3,编译器可以生成以下指令:

r0=LOAD Mem[&OP1];

r1=LOAD Mem[&OP2];

r2=LOAD Mem[&OP3];

r3=MUL r0,r1;

r3=ADD r3,r2;

STORE Mem[&D],r3.

编译的代码可以包括用于控制多路复用器和寄存器以导航每种模式的数据流的信息。乘法器阵列、加法器阵列、多路复用器和寄存器可以被并入每个瓦片(例如,图1的架构100的瓦片1024)中。每个瓦片可以从集群管理器接收用于指定要在瓦片1024内的SIMD架构上执行的功能的指令(在一些情况下,逐周期)。根据从集群管理器收到的指令,跨各个瓦片的SIMD架构可以彼此独立,从而以相同的操作模式或不同的操作模式进行操作。

在从集群管理器接收到指令之后,瓦片的核可以将操作模式指令发布到瓦片的指令缓冲器中,以指定要在SIMD架构上执行的功能。这些指定的功能可以导致对应于乘法归约模式(如图6A所示)的数据流或对应于乘法累加模式(如图6B所示)的数据流。

如图6A和图6B所示,对于SIMD架构,本公开在乘法归约和乘法累加模式两者上使用N个乘法器和N个加法器。应当理解,SIMD架构可以是具有N个乘法器和N个加法器的N路SIMD架构,或者可以包括除N个乘法器和N个加法器之外的加法器和乘法器(例如,这些其他加法器和乘法器可能是不活动的)。本领域技术人员将理解,本公开中提供的实施例在面积和功率上更高效。这种效率对可能要实现数千条数据通道的神经网络处理单元很重要。与图2的实现相比,本公开中的实施例在面积和功率上更高效,图2的实现将需要N个乘法器和2N-1个加法器,在加法器A1-A4的顶部上至少还有另外两层加法器。即,加法器A1和A2的输出将作为操作数输入到第五加法器,而加法器A3和A4的输出将作为操作数输入到第六加法器。第五和第六加法器的输出将作为操作数输入到第七加法器。而且,本公开比图4的实现在面积和功率上更高效,图4的实现将需要N个MAC(融合的乘法器和加法器)和N-1个加法器。

图7示出了与本公开的实施例一致的用于指定要在数据架构上执行的功能的示例性方法700。该方法可以由例如NPU架构(例如,图1所示的NPU架构100)执行。例如,NPU架构的组件(例如全局管理器105、群集管理器、瓦片1024或其任何组合)可以帮助执行方法700。

在初始开始步骤705之后,在步骤710,提供具有N个乘法器和N个加法器的SIMD架构。N个乘法器被配置为接收两个传入操作数,而N个加法器被配置为对两个传入操作数提供运算。

在步骤715,SIMD架构接收与乘法归约模式或乘法累加模式相对应的指令。例如,如上所述,指令可以指定要在SIMD架构上执行的功能。

在步骤720,如果指令对应于乘法归约模式,则SIMD架构选择数据流以提供乘法归约功能(例如,图6A所示)。特别地,乘法归约数据流使用涉及N个乘法器和N-1个加法器的一组连接,其中不使用加法器中的一个。例如,如图6A所示,加法器A4断开,而加法器A1-A3连接,以执行乘法归约运算。在图示中,乘法器M1接受两个操作数op1和op2以生成到加法器A1的输出操作数。乘法器M2、M3和M4类似地配备成与M1相同地操作,并将输出操作数提供给它们相应的加法器。例如,乘法器M1和M2将输出操作数提供给加法器A1,而乘法器M3和M4将输出操作数提供给加法器A2。加法器A1和A2可以将它们的传入操作数相加并将输出操作数提供给加法器A3。

在步骤725,如果指令对应于乘法累加模式,则SIMD架构选择数据流以提供乘法累加功能(例如,图6B所示)。特别地,乘法累加数据流使用涉及N个乘法器和N个加法器的一组连接。例如,如图6B所示,每个加法器A1-A4在乘法器之后连接。乘法器M1接受两个操作数opl和op2生成结果操作数R16。结果操作数R16和操作数op3作为操作数提供给加法器A1。来自A1的结果可以继续前进到另一个阵列(未示出)。类似地,乘法器M2-M4接受一组操作数,并且来自M2-M4中的每个的结果操作数分别输入到加法器A3、A2和A4,分别作为A3、A2和A4的第一操作数。A2-A4中的每一个接受第二操作数,并且结果操作数可以继续前进到其他阵列(未示出)。

在步骤720或725之后,方法700可以在730处结束。应当理解,SIMD架构可以在其指示模式中操作,直到SIMD架构接收到改变模式的配置指令为止。

应当理解,NPU架构的全局管理器可以使用软件来控制上述SIMD架构的配置。例如,全局管理器可以将指令发送到瓦片或核以改变乘法器和加法器的配置模式。软件可以存储在非暂时性计算机可读介质上。非暂时性介质的常见形式包括例如软盘、柔性盘、硬盘、固态驱动器、磁带、或任何其他磁数据存储介质、CD-ROM、任何其他光数据存储介质、具有孔模式的任何物理介质、RAM、PROM和EPROM、FLASH-EPROM或任何其他闪存、NVRAM、高速缓存、寄存器、任何其他存储器芯片或盒及其网络版本。

在前述说明书中,已经参考了可以随实现而变化的许多具体细节描述了实施例。可以对所描述的实施例进行某些调整和修改。通过考虑本文公开的发明的说明书和实践,其他实施例对于本领域技术人员而言可以是显而易见的。说明书和示例旨在仅被认为是示例性的,本发明的真实范围和精神由所附权利要求指示。图中所示的步骤顺序也旨在仅用于说明目的,并且不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法时,可以以不同次序执行这些步骤。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:分布式冗余存储系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类