CN112632464B - 用于处理数据的处理装置 - Google Patents
用于处理数据的处理装置 Download PDFInfo
- Publication number
- CN112632464B CN112632464B CN202011577665.0A CN202011577665A CN112632464B CN 112632464 B CN112632464 B CN 112632464B CN 202011577665 A CN202011577665 A CN 202011577665A CN 112632464 B CN112632464 B CN 112632464B
- Authority
- CN
- China
- Prior art keywords
- matrix
- data
- sub
- stage
- matrices
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 85
- 239000013598 vector Substances 0.000 claims abstract description 41
- 239000011159 matrix material Substances 0.000 claims description 238
- 238000000034 method Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 abstract description 39
- 238000013461 design Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000000644 propagated effect Effects 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Biomedical Technology (AREA)
- Pure & Applied Mathematics (AREA)
- Biophysics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Neurology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Complex Calculations (AREA)
Abstract
描述了一种用于处理数据的处理装置,包括:脉动阵列,包括以m*m的阵列形式布置的m*m个第一级计算单元,其中m为大于等于2的正整数,其中,m*m个第一级计算单元中的每个第一级计算单元包括以n*n阵列的形式布置的n*n个第二级计算单元,其中n为大于等于2的正整数,n*n个第二级计算单元中的每个第二级计算单元被配置为用于进行第一向量和第二向量的点积运算,第一向量和第二向量都包括n个数据。根据本公开的用于处理数据的处理装置能够显著提高数据计算密度、降低数据输入延时,以及提高硬件使用率。
Description
技术领域
本公开的实施例总体上涉及一种信息处理装置,更具体地涉及用于处理数据的处理装置。
背景技术
近年来,深度学习在诸如图像识别、语音处理等领域逐渐取得愈发广泛的应用。然而,随着网络深度的不断增加,深度神经网络训练与预测过程中所需的算力以及访存带宽等需求逐渐难以被传统计算平台所满足。因此,采用硬件加速器替代传动软件计算的方法被认为是提高神经网络计算效率的行之有效的方法,例如利用通用图形处理器、专用处理器芯片和现场可编程逻辑阵列实现的神经网络处理器。基于脉动阵列架构来实现的处理装置,由于其具有高并发、低带宽需求等特点,取得了产业界及学术界较大的关注。但是,传统设计中的数据处理装置通常普遍存在延时较长、硬件资源浪费的不足之处。
发明内容
本公开提供一种用于处理数据的处理装置,能够显著提高数据计算密度、降低数据输入延时,以及提高硬件使用率。
根据本公开的一个方面,提供一种用于处理数据的处理装置,包括:脉动阵列,包括以m*m的阵列形式布置的m*m个第一级计算单元,其中m为大于等于2的正整数,其中,m*m个第一级计算单元中的每个第一级计算单元包括以n*n阵列的形式布置的n*n个第二级计算单元,其中n为大于等于2的正整数,n*n个第二级计算单元中的每个第二级计算单元被配置为用于进行第一向量和第二向量的点积运算,第一向量和第二向量都包括n个数据。
根据本公开的一个示例性实施例,n个数据中的每个数据的类型可以为4位整数型、8位整数型、16位整数型、16位浮点型、24位浮点型以及32位浮点型中的任意一种。
根据本公开的一个示例性实施例,来自第一矩阵的n个第一向量的数据和来自第二矩阵的n个第二向量的数据可以被同时广播到n*n个第二级计算单元中。
根据本公开的一个示例性实施例,处理装置可以用于处理第一矩阵乘以第二矩阵,其中第一矩阵=M*K,且第二矩阵=K*N,其中M表示第一矩阵的行数,K表示第一矩阵的列数或者第二矩阵的行数,其中M=mn,K是n的整数倍,N表示第二矩阵的列数,其中N是正整数。
根据本公开的一个示例性实施例,第一矩阵可以包括K/n个M*n类型的第一矩阵初级子矩阵,每个M*n类型的第一矩阵初级子矩阵包括M/n个n*n类型的第一矩阵次级子矩阵,以及第二矩阵可以包括K/n个n*N类型的第二矩阵初级子矩阵,每个n*N类型的第二矩阵初级子矩阵包括N/n个n*n类型的第二矩阵次级子矩阵。
根据本公开的一个示例性实施例,每个第一级计算单元中的n*n个第二级计算单元可以被配置为:在每个时钟指令下,接收来自第一矩阵次级子矩阵的n行第一向量,以及来自第二矩阵次级子矩阵的n列第二向量,以得到n*n个点积运算结果。
根据本公开的一个示例性实施例,每个第一级计算单元可以包括:第一组寄存器,用于存储来自第一矩阵的K/n个M*n类型的第一矩阵初级子矩阵,第二组寄存器,用于存储来自第二矩阵的K/n个n*N类型的第二矩阵初级子矩阵,以及第三组寄存器,用于存储所得到的点积运算结果。
根据本公开的一个示例性实施例,n*n个第二级计算单元中的第i行第j列的第二级计算单元可以被配置为:接收来自相应的第一矩阵次级子矩阵的第i行n个数据组成的第一向量,以及来自相应的第二矩阵次级子矩阵的第j列n个数据组成的第二向量,i=1、2……n,j=1、2……n。
根据本公开的一个示例性实施例,在M=N=K的情况下,处理装置可以被配置为:在m个周期内,将第一矩阵和第二矩阵的数据全部输入到处理装置中。
根据本公开的一个示例性实施例,处理装置可以被配置为:在输入数据的第一个周期中,第一列m个第一级计算单元中的第k个第一级计算单元接收:来自第一个第一矩阵初级子矩阵的第k个第一矩阵次级子矩阵,以及来自第一个第二矩阵初级子矩阵的第k个第二矩阵次级子矩阵,其中k=1、2…m。
根据本公开的一个示例性实施例,处理装置可以被配置为:在输入数据的第2至m个周期中,第k个第一矩阵次级子矩阵沿着直线路径分别被传输到第2至m列的m个第一级计算单元中的第k个第一级计算单元,以及第k个第二矩阵次级子矩阵以对角线的形式被传输到第2至m列的m个第一级计算单元中的第k-1个第一级计算单元。
根据本公开的一个示例性实施例,在k-1等于0的情况下,第k个第二矩阵次级子矩阵可以被传输到下一列m个第一级计算单元中的第m个第一级计算单元。
根据本公开的一个示例性实施例,处理装置可以被配置为:在输入数据的第s个周期中,第一列m个第一级计算单元中的第k个第一级计算单元接收:来自第s个第一矩阵初级子矩阵的第k个第一矩阵次级子矩阵,以及来自第s个第二矩阵初级子矩阵的第k个第二矩阵次级子矩阵,其中s=2、3……m,且k=1、2…m。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。
图1是根据现有技术的基于脉动阵列的处理装置的示意图。
图2是根据本公开的一个实施例的用于处理数据的处理装置的示意图。
图3是根据本公开的一个实施例的具有两级结构的处理装置的示意图,其示出了输入到每个第一级计算单元中的矩阵。
图4是根据本公开的一个实施例的第二级计算单元的示意图。
图5是根据本公开的一个实施例的处理装置所处理的第一矩阵的示意图。
图6是根据本公开的一个实施例的处理装置所处理的第二矩阵的示意图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本公开内容的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
以下将结合图1以基于脉动阵列的TPU(张量处理单元)为例来说明传统的处理装置的结构。
传统设计中的TPU通常包括多个基本运算单元,这些基本运算单元排布成脉动阵列,多个权重队列(矩阵)和数据队列(矩阵)在时钟信号的控制下传播至脉动阵列中,整个矩阵乘法运算流程通过控制信号控制每一个基本运算单元不断的对所接收到的权重队列和数据队列进行乘法累加运算实现。在脉动阵列中,每行及每列的基本运算单元之间均设置有用于存储及传递中间运算结果的累加寄存器,由于累加寄存器也需要通过控制信号进行控制以执行存储动作。在传统的基于脉动阵列的运算中,在每个时钟信号下,仅一个数据被输入到运算单元中,在每个运算单元中仅进行1次乘法和加法运算。由于在一个时钟信号下,仅将矩阵中的一个数据输入到脉动阵列中,且脉动阵列通常包括很多个计算单元,因此传统的基于脉动阵列的运算装置通常具有较高的延时。此外,由于源触发器(或寄存器)以及目的触发器(或寄存器)都是用于单个乘法累加运算,所以在处理数据较多时,需要大量的源触发器或目的触发器,这将是非常昂贵的。
在触发器或寄存器的传统设计中,触发器或寄存器通常使用4B(字节)的存储容量。为了存储64kB的乘加结果,通常需要16*1024个(即16k个)运算单元,在脉冲阵列采用二维结构的情况下,通常需要128*128个运算单元的阵列排布。进一步地由于每行和每列中包含很多个计算单元,所以导致需要几百个周期才能将数据全部传播到这些计算单元中,因此导致数据输入的延时较长。
针对上述提及的现有方案中存在的各种问题,本公开的实施例提供了一种用于处理数据的处理装置,旨在至少部分地解决上述问题,对于数据的处理例如是进行矩阵乘法。在本公开的方案中,处理装置具有两级结构,在作为第一级计算单元的m*m型的脉动阵列式计算单元的基础上,在每个第一级计算单元中,还设置多个第二级计算单元,这些第二级计算单元以n*n的阵列方式布置,m和n均为大于等于2的正整数。此外,在每个第二级计算单元中进行第一向量a=[a1,a2,…,an]和第二向量b=[b1,b2,…,bn]的点积运算(dotproduct,dpn)a·b=a1*b1+a2*b2+……+an*bn。该处理装置进行第一矩阵和第二矩阵的乘法,其中第一向量可以来自第一矩阵,第二向量可以来自第二矩阵,第一向量包括n个数据,第二向量也包括n个数据,那么第一向量和第二向量的点积结果称为dpn。
在本公开的实施例中,采用具有两级结构的处理装置,且在第二级的所有计算单元同时进行第一和第二向量的点积运算,因此该处理装置的计算密集度高。此外,由于脉动阵列中包括较少的第一级计算单元,所以数据的传播路径较短,因此延时较短。
以下将接合图2至6来描述本公开的实施方式。
图2示意性地示出了根据本公开的一个实施例的用于处理数据的处理装置。图3是根据本公开的一个实施例的具有两级结构的处理装置的示意图,其示出了输入到每个第一级计算单元中的矩阵。图4是根据本公开的一个实施例的第二级计算单元的示意图。图5是根据本公开的一个实施例的处理装置所处理的第一矩阵的示意图。图6是根据本公开的一个实施例的处理装置所处理的第二矩阵的示意图。
该用于处理数据的处理装置执行矩阵乘法运算,例如执行第一矩阵和第二矩阵的乘法。该第一矩阵为M*K矩阵,且第二矩阵为K*N矩阵,其中M表示第一矩阵的行数,K表示第一矩阵的列数或者第二矩阵的行数,其中M=mn,K是n的整数倍,N表示第二矩阵的列数,其中N是正整数,其中m表示脉动阵列的行列数,n表示第二级计算单元的行列数。
为了更加清楚地解释根据本公开的实施例的具有两级结构的处理装置,下文将以K=32、M=32、N=32,m=4且n=8为例来说明本公开的一个示例性实施例。但是本领域的技术人员应当理解K、M、N、m和n的数值不限于上述的值,其可以根据需求为任意正整数。
在芯片设计领域,由于n的数值越大,所需要的布线越多,设计越复杂。根据现有的芯片制造工艺,制造以16*16的阵列排布的第二级计算单元的难度较高,因此在实际芯片设计中,n的取值一般小于16。
在该示例性实施例中,如图2所示,脉动阵列200是4*4的阵列,在所示的实施例中,该脉动阵列200包括16个第一级计算单元201,为了使得附图更加明晰,仅最后一列的四个第一级计算单元由附图标记201标示出。如图4所示,所有的第二级计算单元组成8*8的阵列300,在所示的实施例中,共包括64个第二级计算单元301,为了使得附图更加明晰,仅最后一列的八个第二级计算单元由附图标记301标示出。如图5所示,第一矩阵A是32*32的矩阵,矩阵中的每个数据为16位浮点数。如图6所示,第二矩阵B也是32*32的矩阵,矩阵中的每个数据为16位浮点数。因此,矩阵A和B的数据大小均为16kb。但是本领域的技术人员应当理解,矩阵中的数据类型不限于16位浮点数,该数据还可以是4位整数型、8位整数型、16位整数型、24位浮点型以及32位浮点型中的任意一种。
如图5所示,矩阵A中的矩形框内的数据表示矩阵A的第一个初级子矩阵A-1,该第一个初级子矩阵A-1包括32行8列的数据,其数据包括矩阵A的第1至8列数据。因此矩阵A包括32列/8列(即,K/n)个(即,4个)初级子矩阵A-1、A-2、A-3和A-4,每个初级子矩阵的数据大小为4kb,其中第二个初级子矩阵A-2为矩阵A的第9至16列数据,第三个初级子矩阵A-3为矩阵A的第17至24列数据,且第四个初级子矩阵A-4为矩阵A的第25至32列数据。在图5中,虽然只示出了第一个初级子矩阵A-1,但是本领域的技术人员通过上述的描述能够清楚地理解其他初级子矩阵所包括的数据。
如图6所示,矩阵B中的矩形框内的数据表示矩阵B的第一个初级子矩阵B-1,该第一个初级子矩阵B-1包括8行32列的数据,其数据包括矩阵B的第1至8行数据。因此矩阵B包括32行/8行(即,K/n)个(即,4个)初级子矩阵B-1、B-2、B-3和B-4,每个初级子矩阵的数据大小为4kb,其中第二个初级子矩阵B-2为矩阵B的第9至16行数据,第三个初级子矩阵B-3为矩阵B的第17至24行数据,且第四个初级子矩阵B-4为矩阵B的第25至32行数据。在附图6中,虽然只示出了第一个初级子矩阵B-1,但是本领域的技术人员通过上述的描述能够清楚地理解其他初级子矩阵所包括的数据。
再次参考图5,矩阵A的第一个初级子矩阵A-1包括四个次级子矩阵A1,1、A1,2、A1,3和A1,4,其中次级子矩阵A1,1是初级子矩阵A-1的第1至8行数据,次级子矩阵A1,2是初级子矩阵A-1的第8至16行数据,次级子矩阵A1,3是初级子矩阵A-1的第16至24行数据,且次级子矩阵A1,4是初级子矩阵A-1的第24至32行数据。因此,次级子矩阵A1,1、A1,2、A1,3和A1,4均为8*8矩阵,且数据大小为8*8*16b=1kb。下文,将利用表格1来清楚地表示矩阵A的各个初级子矩阵和各个次级子矩阵所包含的数据。
表格1矩阵A
再次参考图6,矩阵B的第一个初级子矩阵B-1包括四个次级子矩阵B1,1、B1,2、B1,3和B1,4,其中次级子矩阵B1,1是初级子矩阵B-1的第1至8列数据,次级子矩阵B1,2是初级子矩阵B-1的第8至16列数据,次级子矩阵B1,3是初级子矩阵B-1的第16至24列数据,且次级子矩阵B1,4是初级子矩阵B-1的第24至32列数据。因此,次级子矩阵B1,1、B1,2、B1,3和B1,4均为8*8矩阵,且数据大小为8*8*16b=1kb。下文,将利用表格2来清楚地表示矩阵B的各个初级子矩阵和各个次级子矩阵所包含的数据。
表格2矩阵B
如图2所示,第一级计算单元201组成4*4的脉动阵列式计算单元。在16个第一级计算单元的每个第一级计算单元201中,设置如图4所示的8*8个第二级计算单元301。如图4所示,在每个第二级计算单元301中,进行第一向量(包括8个数据)和第二向量(包括8个数据)的点积运算dp8。每个第一向量的8个数据从第二级计算单元阵列300的左侧被广播到每行的8个第二级计算单元301中的每个第二级计算单元301中,且每个第二向量的8个数据从第二级计算单元阵列300的上侧被广播到每列的8个第二级计算单元301中的每个第二级计算单元301中。至于“广播”,其意味着一个向量的所有数据在同一时钟信号下被同时输入到多个第二级计算单元301中的每个第二级计算单元301中,而不是如脉动阵列200的数据输入方式那样,在一个时钟信号下仅仅把一个向量中的一个数据输入到计算单元中。在如图4所示的实施例中,8个第一向量可以来自如上述表格1所示的矩阵A的16次级子矩阵中的每个次级子矩阵,且8个第二向量可以来自自如上述表格2所示的矩阵B的16个次级子矩阵中的每个次级子矩阵。
如图4所示,第1个第一向量中的8个数据在同一时钟信号下被广播到第1行的8个第二级计算单元301中的每个第二级计算单元301中,以此类推,第2-8个第一向量中的8个数据也在该时钟信号下被广播到第2-8行的每行中的8个第二级计算单元301中的每个第二级计算单元301中。此外,第1个第二向量中的8个数据在同一时钟信号下被广播到第1列的8个第二级计算单元301中的每个第二级计算单元301中,以此类推,第2-8个第二向量中的8个数据也在该时钟信号下被广播到第2-8列的每列中的8个第二级计算单元301中的每个第二级计算单元301中。因此,在该示例性实施例中,在同一时钟信号下,所有的第二级计算单元301一共进行64次的点积运算dp8,且一个点积运算dp8包括8次乘法和加法运算。在现有技术的基于脉动阵列的处理装置中,在一个时钟信号下一个计算单元仅进行1次乘法和加法运算,且由于数据输入的滞后性,并非所有的计算单元都执行乘法和加法运算,因此相对于现有技术基于脉动阵列的处理装置的计算密度而言,本公开的示例性实施例中的计算密度显著地增加,延时也显著减少。
如图2所示,该处理装置包括4*4个第一级计算单元201,每个第一级计算单元201接收来自矩阵A的操作对象A1至A4,以及来自矩阵B的操作对象B1-B4。在示例性实施例中,如图3所示,操作对象A1可以为来自矩阵A的四个初级子矩阵中的每个初级子矩阵的第1个次级子矩阵A1,1、A2,1、A3,1或A4,1,操作对象B1可以为来自矩阵B的初级子矩阵中的每个初级子矩阵的第1个次级子矩阵B1,1、B2,1、B3,1或B4,1;操作对象A2可以为来自矩阵A的四个初级子矩阵中的每个初级子矩阵的第2个次级子矩阵A1,2、A2,2、A3,2或A4,2,操作对象B2可以为来自矩阵B的初级子矩阵中的每个初级子矩阵的第2个次级子矩阵B1,2、B2,2、B3,2或B4,2;操作对象A3可以为来自矩阵A的四个初级子矩阵中的每个初级子矩阵的第3个次级子矩阵A1,3、A2,3、A3,3或A4,3,操作对象B3可以为来自矩阵B的初级子矩阵中的每个初级子矩阵的第3个次级子矩阵B1,3、B2,3、B3,3或B4,3;以及操作对象A4可以为来自矩阵A的四个初级子矩阵中的每个初级子矩阵的第4个次级子矩阵A1,4、A2,4、A3,4或A4,4,操作对象B4可以为来自矩阵B的初级子矩阵中的每个初级子矩阵的第4个次级子矩阵B1,4、B2,4、B3,4或B4,4。
以下将对矩阵A和矩阵B的数据如何被输入到处理装置进行说明。
在执行数据输入时,在第一个周期中,将如图5和6所示的矩阵A的第1个初级子矩阵A-1以及矩阵B的第1个初级子矩阵B-1全部输入到该处理装置中,具体地在第一个时钟信号下,第1个初级子矩阵A-1的四个次级子矩阵A1,1、A1,2、A1,3和A1,4分别被输入到脉动阵列200的第1列四个第一级计算单元201中,同时第1个初级子矩阵B-1的四个次级子矩阵B1,1、B1,2、B1,3和B1,4也分别被输入到脉动阵列200的第1列四个第一级计算单元201中。由于每个次级子矩阵的数据大小为1kb,那么输入到每个第一级计算单元中的操作对象A和操作对象B的大小均为1kb。因为每个初级子矩阵数据大小为4kb且矩阵A和B的数据大小均为16kb,因此仅需要四个周期(四个时钟信号)即可将矩阵A和B的数据全部输入到该处理装置中。因此,将数据输入到根据本公开的示例实施例的处理装置所需要的周期数目很少,时间很短,因此延时较短。
在输入数据的第二周期(第二时钟信号)中,矩阵A的第2个初级子矩阵A-2以及矩阵B的第2个初级子矩阵B-2全部输入到该处理装置中,具体地矩阵A的第2个初级子矩阵的4个次级子矩阵A2,1、A2,2、A2,3和A2,4以及矩阵B的第2个初级子矩阵的4个次级子矩阵B2,1、B2,2、B2,3和B2,4分别被输入到脉动阵列200的第1列四个第一级计算单元201中。此外,在该第二周期中,初级子矩阵A-1的四个次级子矩阵A1,1、A1,2、A1,3和A1,4中的数据被传播到第2列的四个第一级计算单元201中。矩阵B的数据可以按照不同的方式来传播,例如在第二周期(第二个时钟信号)中,四个次级子矩阵B1,1、B1,2、B1,3和B1,4中的数据按照对象线的方式被传输到下一列的第一级计算单元201中,例如次级子矩阵B1,1的数据被传播到第2列中的最后一个第一级计算单元201中,次级子矩阵B1,2的数据被传播到第2列中的第1个第一级计算单元201中,次级子矩阵B1,3的数据被传播到第2列中的第2个第一级计算单元201中,次级子矩阵B1,4的数据被传播到第2列中的第3个第一级计算单元201中。然而应当注意,基于本公开的教导,本领域的技术人员可以设想到与如图2所示的传播路径不同的矩阵A和矩阵B的数据的传播路径,所有这些变体都包含在本公开的范围内。
在输入数据的第三周期(第三个时钟信号)中,矩阵A的第3个初级子矩阵A-3以及矩阵B的第3个初级子矩阵B-3全部输入到该处理装置中,具体地矩阵A的第3个初级子矩阵的4个次级子矩阵A3,1、A3,2、A3,3和A3,4以及矩阵B的第3个初级子矩阵的4个次级子矩阵B3,1、B3,2、B3,3和B3,4分别被输入到脉动阵列200的第1列四个第一级计算单元201中。在输入数据的第四周期(第四个时钟信号)中,矩阵A的第4个初级子矩阵A-4以及矩阵B的第4个初级子矩阵B-4全部输入到该处理装置中,具体地矩阵A的第4个初级子矩阵的4个次级子矩阵A4,1、A4,2、A4,3和A4,4以及矩阵B的第4个初级子矩阵的4个次级子矩阵B4,1、B4,2、B4,3和B4,4分别被输入到脉动阵列200的第1列四个第一级计算单元201中。到此,矩阵A和矩阵B的数据在四个周期或四个时钟信号下全部被输入到处理装置中以进行运算。
如图2所示的每个第一级计算单元201包括:第一组寄存器(例如第一组源寄存器)(未示出),存储来自矩阵A的次级子矩阵;第二组寄存器(例如第二组源寄存器))(未示出),存储来自矩阵B的次级子矩阵;以及第三组寄存器(例如目的寄存器))(未示出),存储n*n个dpn的计算结果。在根据本公开的示例性实施例中,在每个第一级计算单元201中,在每个周期或时钟之中下,共产生64个dp8(如图4所示)的计算结果,则需要64个目的寄存器(通常情况下每个寄存器的存储容量为4B)以存储64个dp8的计算结果。因此,包括两级结构(共包括16个第一级计算单元201)的该处理装置共包括16*64个(即1k个)寄存器,其存储容量共为4kB。
在根据公开的一个实施例中,同一个数据处理的指令可能需要多个时钟(或多个周期)完成,或者仅需要一个时钟(或一个周期)即可完成。假定由于硬件的限制,在一个时钟信号下仅能处理256个通道的数据,如果该人工智能应用中需要处理的数据需要1024个通道才能被处理完,则需要四个时钟才能处理完这些数据,那么上一时钟得到的64个dp8的计算结果需要被加入到当前时钟的乘加结果中。但是如果人工智能应用中需要处理的数据仅需要128个通道即可被处理完,那么一个指令即可全部处理完这些数据,当前指令下处理的数据可能是来自不同应用的数据,因此上一时钟得到的乘加结果不需要被加入到当前的运算结果中。在示例性实施例中,需要四个周期以将矩阵A和B的数据全部输入到处理装置中,因此上一周期或时钟的乘加结果需要被加入到下一周期或时钟的运算结果中。
为了处理与上述两级结构的处理装置类似大小的数据和类似次数的运算,在使用传统设计的脉动阵列(其中每个计算单元在一个时钟信号下进行1次乘法加法运算)的情况下,通常所需要的计算单元的数目大致为128*128个。由于累加结果寄存器都是用于单个乘法累加运算,因此所需要的寄存器的总数目为约128*128=16k个,所需要的存储容量为64kB。因此根据本公开的示例性实施例的处理装置所需要的存储空间或个数仅为现有技术的基于脉动阵列的TPU的存储空间或个数的1/16,因此硬件(诸如目的寄存器、源寄存器等)的使用率显著地提高。
最后,在根据本公开的示例性实施例中,由于存在m*m(在一个示例中,m=4)个第一级计算单元201来接收输入和处理数据,那么仅利用8*8个第二级计算单元301即可实现大量数据的运算,而无需采用16*16个第二级计算单元301来处理这些数据。如上文所述,在芯片加工领域,制作16*16个第二级计算单元301所需要的布线多且加工工艺更加复杂,成本较高。在根据本公开的示例实施例中,使用具有两级结构的处理装置也可以达到类似的数据处理能力,且只需要8*8个第二级计算单元301,因此芯片制造的布线难度降低、设计难度降低且制造成本也降低。
在不损害基本原理的情况下,细节和实施例可以相对于仅通过示例的方式描述的内容变化,甚至显著地变化,而不背离保护的范围。可以将上述各种实施例组合以提供另外的实施例。如果需要采用各种专利、申请和出版物的概念以提供更进一步的实施例,则可以修改实施例的各方面。
可以根据上述详细描述对实施例进行这些和其他改变。通常,在以下权利要求中,所使用的术语不应当被解释为将权利要求限制为说明书和权利要求中公开的特定实施例,而是应当被解释为包括所有可能的实施例以及赋予这种权利要求的等同物的全部范围。因此,权利要求不受公开内容的限制。
Claims (12)
1.一种用于处理数据的处理装置,包括:
脉动阵列,包括以m*m的阵列形式布置的m*m个第一级计算单元,其中m为大于等于2的正整数,
其中,所述m*m个第一级计算单元中的每个第一级计算单元包括以n*n阵列的形式布置的n*n个第二级计算单元,其中n为大于等于2的正整数,
所述n*n个第二级计算单元中的每个第二级计算单元被配置为用于进行第一向量和第二向量的点积运算,所述第一向量和所述第二向量都包括n个数据,
其中所述处理装置用于处理第一矩阵乘以第二矩阵,来自所述第一矩阵的n个所述第一向量的数据和来自所述第二矩阵的n个所述第二向量的数据被同时广播到所述n*n个第二级计算单元中。
2.根据权利要求1所述的处理装置,其中所述n个数据中的每个数据的类型为4位整数型、8位整数型、16位整数型、16位浮点型、24位浮点型以及32位浮点型中的任意一种。
3.根据权利要求1所述的处理装置,其中所述第一矩阵=M*K,且所述第二矩阵=K*N,其中M表示所述第一矩阵的行数,K表示所述第一矩阵的列数或者所述第二矩阵的行数,其中M=mn,K是n的整数倍,N表示所述第二矩阵的列数,其中N是正整数。
4.根据权利要求3所述的处理装置,其中
所述第一矩阵包括K/n个M*n类型的第一矩阵初级子矩阵,每个M*n类型的所述第一矩阵初级子矩阵包括M/n个n*n类型的第一矩阵次级子矩阵,以及
所述第二矩阵包括K/n个n*N类型的第二矩阵初级子矩阵,每个n*N类型的所述第二矩阵初级子矩阵包括N/n个n*n类型的第二矩阵次级子矩阵。
5.根据权利要求4所述的处理装置,其中每个第一级计算单元中的所述n*n个第二级计算单元被配置为:在每个时钟指令下,接收来自所述第一矩阵次级子矩阵的n行所述第一向量,以及来自所述第二矩阵次级子矩阵的n列所述第二向量,以得到n*n个点积运算结果。
6.根据权利要求4所述的处理装置,其中每个所述第一级计算单元包括:
第一组寄存器,用于存储来自所述第一矩阵的K/n个M*n类型的所述第一矩阵初级子矩阵,
第二组寄存器,用于存储来自所述第二矩阵的K/n个n*N类型的所述第二矩阵初级子矩阵,以及
第三组寄存器,用于存储所得到的点积运算结果。
7.根据权利要求5所述的处理装置,其中所述n*n个第二级计算单元中的第i行第j列的第二级计算单元被配置为:接收来自相应的所述第一矩阵次级子矩阵的第i行n个数据组成的所述第一向量,以及来自相应的所述第二矩阵次级子矩阵的第j列n个数据组成的所述第二向量,i=1、2……n,j=1、2……n。
8.根据权利要求4所述的处理装置,其中M=N=K,所述处理装置被配置为:
在m个周期内,将所述第一矩阵和所述第二矩阵的数据全部输入到所述处理装置中。
9.根据权利要求8所述的处理装置,其中所述处理装置被配置为:在输入数据的第一个周期中,第一列m个第一级计算单元中的第k个第一级计算单元接收:来自第一个所述第一矩阵初级子矩阵的第k个所述第一矩阵次级子矩阵,以及来自第一个所述第二矩阵初级子矩阵的第k个所述第二矩阵次级子矩阵,其中k=1、2…m。
10.根据权利要求9所述的处理装置,其中所述处理装置被配置为:在输入数据的第2至m个周期中,第k个所述第一矩阵次级子矩阵沿着直线路径分别被传输到第2至m列的m个第一级计算单元中的第k个第一级计算单元,以及
第k个所述第二矩阵次级子矩阵以对角线的形式被传输到第2至m列的m个第一级计算单元中的第k-1个第一级计算单元。
11.根据权利要求10所述的处理装置,其中
在k-1等于0的情况下,所述第k个所述第二矩阵次级子矩阵被传输到下一列m个第一级计算单元中的第m个第一级计算单元。
12.根据权利要求9所述的处理装置,其中所述处理装置被配置为:
在输入数据的第s个周期中,第一列m个第一级计算单元中的第k个第一级计算单元接收:来自第s个所述第一矩阵初级子矩阵的第k个所述第一矩阵次级子矩阵,以及来自第s个所述第二矩阵初级子矩阵的第k个所述第二矩阵次级子矩阵,其中s=2、3……m,且k=1、2…m。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011577665.0A CN112632464B (zh) | 2020-12-28 | 2020-12-28 | 用于处理数据的处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011577665.0A CN112632464B (zh) | 2020-12-28 | 2020-12-28 | 用于处理数据的处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112632464A CN112632464A (zh) | 2021-04-09 |
CN112632464B true CN112632464B (zh) | 2022-11-29 |
Family
ID=75326077
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011577665.0A Active CN112632464B (zh) | 2020-12-28 | 2020-12-28 | 用于处理数据的处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632464B (zh) |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5274832A (en) * | 1990-10-04 | 1993-12-28 | National Semiconductor Corporation | Systolic array for multidimensional matrix computations |
US8051124B2 (en) * | 2007-07-19 | 2011-11-01 | Itt Manufacturing Enterprises, Inc. | High speed and efficient matrix multiplication hardware module |
US8924455B1 (en) * | 2011-02-25 | 2014-12-30 | Xilinx, Inc. | Multiplication of matrices using systolic arrays |
US10241972B2 (en) * | 2017-03-16 | 2019-03-26 | International Business Machines Corporation | Matrix multiplication on a systolic array |
US10585621B2 (en) * | 2017-04-21 | 2020-03-10 | Intel Corporation | Statically-schedulable feed and drain structure for systolic array architecture |
CN107256203A (zh) * | 2017-06-28 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种矩阵向量乘法的实现方法和装置 |
CN112214726B (zh) * | 2017-07-07 | 2024-05-03 | 华为技术有限公司 | 运算加速器 |
CN107578098B (zh) * | 2017-09-01 | 2020-10-30 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
US20190079903A1 (en) * | 2017-09-14 | 2019-03-14 | Qualcomm Incorporated | Providing matrix multiplication using vector registers in processor-based devices |
CN109992743B (zh) * | 2017-12-29 | 2020-06-16 | 华为技术有限公司 | 矩阵乘法器 |
CN110415157B (zh) * | 2018-04-26 | 2024-01-30 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US11093580B2 (en) * | 2018-10-31 | 2021-08-17 | Advanced Micro Devices, Inc. | Matrix multiplier with submatrix sequencing |
CN110543934B (zh) * | 2019-08-14 | 2022-02-01 | 北京航空航天大学 | 一种用于卷积神经网络的脉动阵列计算结构及方法 |
CN111291323B (zh) * | 2020-02-17 | 2023-12-12 | 南京大学 | 一种基于脉动阵列的矩阵乘法处理器及其数据处理方法 |
CN111652360B (zh) * | 2020-05-25 | 2023-03-14 | 北京大学深圳研究生院 | 一种基于脉动阵列的卷积运算装置 |
CN111723906A (zh) * | 2020-05-29 | 2020-09-29 | 浪潮电子信息产业股份有限公司 | 一种循环神经网络的加速计算方法、系统及相关装置 |
-
2020
- 2020-12-28 CN CN202011577665.0A patent/CN112632464B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112632464A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12254316B2 (en) | Vector processor architectures | |
US12271807B2 (en) | Convolutional neural network computing method and system based on weight kneading | |
US20240265234A1 (en) | Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment | |
US11880768B2 (en) | Method and apparatus with bit-serial data processing of a neural network | |
CN110163353B (zh) | 一种计算装置及方法 | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
US20200356837A1 (en) | Fast deep learning fully-connected inference | |
US12141226B2 (en) | Systems and processes for organizing and controlling multiple matrix processor circuits | |
KR20190139837A (ko) | 처리 장치 및 처리 방법 | |
US20210241071A1 (en) | Architecture of a computer for calculating a convolution layer in a convolutional neural network | |
CN113010213A (zh) | 基于阻变忆阻器的精简指令集存算一体神经网络协处理器 | |
US20250068694A1 (en) | Sparse Matrix Multiplication in Hardware | |
US20200356836A1 (en) | Fast deep learning fully-connected column-major implementation | |
US10725741B2 (en) | Digital circuit with compressed carry | |
AskariHemmat et al. | Quark: An integer RISC-V vector processor for sub-byte quantized DNN inference | |
US20240134930A1 (en) | Method and apparatus for neural network weight block compression in a compute accelerator | |
Lee et al. | Dbps: Dynamic block size and precision scaling for efficient dnn training supported by RISC-V isa extensions | |
CN112632464B (zh) | 用于处理数据的处理装置 | |
CN221200393U (zh) | 小芯片设备及人工智能加速器装置 | |
Vardhan et al. | High Performance Data Level Parallelism based Instruction Set Architecture in RISC-V | |
US20230012127A1 (en) | Neural network acceleration | |
CN111178492A (zh) | 计算装置及相关产品、执行人工神经网络模型的计算方法 | |
Dey et al. | An application specific processor architecture with 3D integration for recurrent neural networks | |
US20240427839A1 (en) | Methods And Apparatus For Matrix Processing In A Neural Network Processing System | |
Dutton et al. | Designing and evaluating new instructions that accelerate sigmoid-based machine learning |
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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee after: Shanghai Bi Ren Technology Co.,Ltd. Country or region after: China Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Patentee before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |