CN111615685B - 可编程乘加阵列硬件 - Google Patents

可编程乘加阵列硬件 Download PDF

Info

Publication number
CN111615685B
CN111615685B CN201880074292.XA CN201880074292A CN111615685B CN 111615685 B CN111615685 B CN 111615685B CN 201880074292 A CN201880074292 A CN 201880074292A CN 111615685 B CN111615685 B CN 111615685B
Authority
CN
China
Prior art keywords
adders
multipliers
data stream
data
architecture
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.)
Active
Application number
CN201880074292.XA
Other languages
English (en)
Other versions
CN111615685A (zh
Inventor
韩亮
蒋晓维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pingtouge Shanghai Semiconductor Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of CN111615685A publication Critical patent/CN111615685A/zh
Application granted granted Critical
Publication of CN111615685B publication Critical patent/CN111615685B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • G06F7/5318Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with column wise addition of partial products, e.g. using Wallace tree, Dadda counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/607Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers number-of-ones counters, i.e. devices for counting the number of input lines set to ONE among a plurality of input lines, also called bit counters or parallel counters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

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

Description

可编程乘加阵列硬件
相关申请的交叉引用
本申请基于2017年12月22日提交的美国临时申请No.62/610,052和2018年8月3日提交的美国专利申请No.16/054,783并要求其优先权,上述申请的全部内容通过引用合并于此。
背景技术
随着基于神经网络的深度学习应用在各个业务部门呈指数增长,基于商品中央处理单元/图形处理单元(CPU/GPU)的平台不再是合适计算基础来支持性能、功率效率和经济可扩展性方面不断增长的计算需求。开发神经网络处理器以加速基于神经网络的深度学习应用已在许多业务领域获得了重大关注,包括成熟的芯片制造商、初创公司以及大型互联网公司。单指令多数据(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、高速缓存、寄存器、任何其他存储器芯片或盒及其网络版本。
在前述说明书中,已经参考了可以随实现而变化的许多具体细节描述了实施例。可以对所描述的实施例进行某些调整和修改。通过考虑本文公开的发明的说明书和实践,其他实施例对于本领域技术人员而言可以是显而易见的。说明书和示例旨在仅被认为是示例性的,本发明的真实范围和精神由所附权利要求指示。图中所示的步骤顺序也旨在仅用于说明目的,并且不旨在限于任何特定的步骤顺序。这样,本领域技术人员可以理解,在实现相同方法时,可以以不同次序执行这些步骤。

Claims (3)

1.一种用于指定要在数据架构上执行的功能的方法,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器,所述方法包括:
接收用于所述数据架构在乘法归约模式或乘法累加模式之一中进行操作的指令;以及
基于所述指令,选择所述数据架构的所述N个乘法器与所述N个加法器中的至少一些之间的数据流;
选择所述数据流包括:
响应于接收到对应于所述乘法归约模式的指令,选择使用所述N个乘法器和N-1个加法器的第一数据流,其中,不使用所述N个加法器中的一个;所述第一数据流包括所述N-1个加法器接收从所述N个乘法器得到的输入;
或者,
响应于接收到对应于所述乘法累加模式的指令,选择使用所述N个乘法器和所述N个加法器的第二数据流;所述第二数据流包括所述N个加法器中的每个加法器从所述N个乘法器中的相应乘法器接收输入操作数。
2.一种集成电路,所述集成电路包括:
数据架构,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器,其中,所述数据架构接收用于选择所述数据架构的所述N个乘法器与所述N个加法器中的至少一些之间的数据流的指令,所选择的数据流包括以下选项:
使用所述N个乘法器和所述N个加法器的第一数据流,用于提供乘法累加模式;所述第一数据流使用所述N个加法器中的每个加法器从所述N个乘法器中的相应乘法器接收输入操作数;以及
第二数据流,用于提供乘法归约模式;所述第二数据流使用所述N个乘法器和N-1个加法器,其中,不使用所述N个加法器中的一个;所述第二数据流使用所述N-1个加法器接收从所述N个乘法器得到的输入。
3.一种存储指令集的非暂时性计算机可读存储介质,所述指令集能由设备的至少一个处理器执行,以使所述设备执行用于指定要在数据架构上执行的功能的方法,所述数据架构包括被配置为接收操作数的N个加法器和N个乘法器,所述方法包括:
接收用于所述数据架构在乘法归约模式或乘法累加模式之一中进行操作的指令;以及
基于所述指令,选择所述数据架构的所述N个乘法器与所述N个加法器中的至少一些之间的数据流;
选择所述数据流包括:
响应于接收到对应于所述乘法归约模式的指令,选择使用所述N个乘法器和N-1个加法器的第一数据流,其中,不使用所述N个加法器中的一个;所述第一数据流包括所述N-1个加法器接收从所述N个乘法器得到的输入;
或者,
响应于接收到对应于所述乘法累加模式的指令,选择使用所述N个乘法器和所述N个加法器的第二数据流;所述第二数据流包括所述N个加法器中的每个加法器从所述N个乘法器中的相应乘法器接收输入操作数。
CN201880074292.XA 2017-12-22 2018-12-21 可编程乘加阵列硬件 Active CN111615685B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762610052P 2017-12-22 2017-12-22
US62/610,052 2017-12-22
US16/054,783 US10678507B2 (en) 2017-12-22 2018-08-03 Programmable multiply-add array hardware
US16/054,783 2018-08-03
PCT/US2018/067317 WO2019126767A2 (en) 2017-12-22 2018-12-21 A programmable multiply-add array hardware

Publications (2)

Publication Number Publication Date
CN111615685A CN111615685A (zh) 2020-09-01
CN111615685B true CN111615685B (zh) 2023-06-16

Family

ID=66949571

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880074292.XA Active CN111615685B (zh) 2017-12-22 2018-12-21 可编程乘加阵列硬件

Country Status (5)

Country Link
US (2) US10678507B2 (zh)
EP (1) EP3729254B1 (zh)
JP (1) JP2021507385A (zh)
CN (1) CN111615685B (zh)
WO (1) WO2019126767A2 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200226473A1 (en) * 2019-01-15 2020-07-16 BigStream Solutions, Inc. Systems, apparatus, methods, and architectures for heterogeneous precision acceleration of quantized neural networks
US11714875B2 (en) * 2019-12-28 2023-08-01 Intel Corporation Apparatuses, methods, and systems for instructions of a matrix operations accelerator
US20220019407A1 (en) * 2020-07-14 2022-01-20 Taiwan Semiconductor Manufacturing Company, Ltd. In-memory computation circuit and method
KR20220015813A (ko) * 2020-07-31 2022-02-08 삼성전자주식회사 딥러닝 연산 수행 방법 및 장치

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778241A (en) * 1994-05-05 1998-07-07 Rockwell International Corporation Space vector data path
US6115729A (en) * 1998-08-20 2000-09-05 Arm Limited Floating point multiply-accumulate unit
US7433912B1 (en) * 2004-02-19 2008-10-07 Sun Microsystems, Inc. Multiplier structure supporting different precision multiplication operations
CN102053817A (zh) * 2009-10-30 2011-05-11 Arm有限公司 用于执行乘法累加运算的设备和方法
CN203966104U (zh) * 2014-07-23 2014-11-26 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器
CN105573716A (zh) * 2015-12-15 2016-05-11 西安电子科技大学 基于传输触发结构体系的专用指令集处理器
CN106250614A (zh) * 2016-07-29 2016-12-21 上海交通大学 适用于fpga平台电磁暂态实时仿真的数据处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7315879B2 (en) * 2001-02-16 2008-01-01 Texas Instruments Incorporated Multiply-accumulate modules and parallel multipliers and methods of designing multiply-accumulate modules and parallel multipliers
US7177891B2 (en) * 2002-10-09 2007-02-13 Analog Devices, Inc. Compact Galois field multiplier engine
FI118612B (fi) 2002-11-06 2008-01-15 Nokia Corp Menetelmä ja järjestelmä laskuoperaatioiden suorittamiseksi ja laite
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US8112466B2 (en) * 2004-09-28 2012-02-07 Sicronic Remote Kg, Llc Field programmable gate array
US8612503B2 (en) * 2010-03-16 2013-12-17 Integrated Device Technology, Inc. Methods and apparatuses for flexible and high performance digital signal processing
US9465578B2 (en) * 2013-12-13 2016-10-11 Nvidia Corporation Logic circuitry configurable to perform 32-bit or dual 16-bit floating-point operations
US20170046153A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Simd multiply and horizontal reduce operations

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778241A (en) * 1994-05-05 1998-07-07 Rockwell International Corporation Space vector data path
US6115729A (en) * 1998-08-20 2000-09-05 Arm Limited Floating point multiply-accumulate unit
US7433912B1 (en) * 2004-02-19 2008-10-07 Sun Microsystems, Inc. Multiplier structure supporting different precision multiplication operations
CN102053817A (zh) * 2009-10-30 2011-05-11 Arm有限公司 用于执行乘法累加运算的设备和方法
CN203966104U (zh) * 2014-07-23 2014-11-26 中国电子科技集团公司第五十八研究所 可配置可扩展的流水线乘累加器
CN105573716A (zh) * 2015-12-15 2016-05-11 西安电子科技大学 基于传输触发结构体系的专用指令集处理器
CN106250614A (zh) * 2016-07-29 2016-12-21 上海交通大学 适用于fpga平台电磁暂态实时仿真的数据处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
车文博 ; 刘衡竹 ; 田甜 ; .M-DSP中高性能浮点乘加器的设计与实现.计算机应用.2016,(08),全文. *
顾荣荣 ; .高性能可重构乘加单元设计.大众科技.2010,(02),全文. *

Also Published As

Publication number Publication date
EP3729254A2 (en) 2020-10-28
EP3729254A4 (en) 2021-02-17
WO2019126767A2 (en) 2019-06-27
US10970043B2 (en) 2021-04-06
US10678507B2 (en) 2020-06-09
EP3729254B1 (en) 2023-11-08
JP2021507385A (ja) 2021-02-22
US20190196788A1 (en) 2019-06-27
WO2019126767A3 (en) 2020-04-02
US20200293283A1 (en) 2020-09-17
CN111615685A (zh) 2020-09-01

Similar Documents

Publication Publication Date Title
CN111615685B (zh) 可编程乘加阵列硬件
CN111630502B (zh) 用于神经网络处理器的统一存储器组织
JP5364543B2 (ja) メモリサブシステムに複数のメモリアルゴリズムプロセッサを組込むマルチプロセッサコンピュータアーキテクチャ
CN109661647B (zh) 数据处理装置和方法
TWI450192B (zh) 用於處理器中之控制處理的裝置及方法
JP7264897B2 (ja) メモリ装置及びそれを制御するための方法
US20120216011A1 (en) Apparatus and method of single-instruction, multiple-data vector operation masking
CN111597501A (zh) 自适应性矩阵乘法器的系统
JP2021108104A (ja) 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法
KR100781340B1 (ko) 사용자 정의 확장 연산을 처리하는 연산 시스템 및 방법
US8607029B2 (en) Dynamic reconfigurable circuit with a plurality of processing elements, data network, configuration memory, and immediate value network
US10915317B2 (en) Multiple-pipeline architecture with special number detection
US11640302B2 (en) SMID processing unit performing concurrent load/store and ALU operations
TWI740761B (zh) 數據處理裝置、人工智能晶片
US11630667B2 (en) Dedicated vector sub-processor system
EP3759593B1 (en) Pack and unpack network and method for variable bit width data formats
Xu et al. A hierarchically-controlled SIMD machine for 2D DCT on FPGAs
WO2022220835A1 (en) Shared register for vector register file and scalar register file
CN114398300A (zh) 方法、集成电路及计算机可读存储介质
JPH09244894A (ja) 演算装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240306

Address after: 5th Floor, No. 2, Lane 55, Chuanhe Road, No. 366 Shangke Road, Pudong New Area Free Trade Pilot Zone, Shanghai

Patentee after: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

Country or region after: China

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Patentee before: ALIBABA GROUP HOLDING Ltd.

Country or region before: Cayman Islands

TR01 Transfer of patent right