CN110543934B - 一种用于卷积神经网络的脉动阵列计算结构及方法 - Google Patents
一种用于卷积神经网络的脉动阵列计算结构及方法 Download PDFInfo
- Publication number
- CN110543934B CN110543934B CN201910749711.1A CN201910749711A CN110543934B CN 110543934 B CN110543934 B CN 110543934B CN 201910749711 A CN201910749711 A CN 201910749711A CN 110543934 B CN110543934 B CN 110543934B
- Authority
- CN
- China
- Prior art keywords
- systolic
- data
- subarray
- array
- nth
- 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
Images
Classifications
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本申请公开了一种用于卷积神经网络的脉动阵列计算结构及方法,解决了脉动阵列在卷积运算时重复访问外部存储模块获取重复数据的问题。包括脉动子阵列、暂存单元和累加模块;脉动子阵列,用于接收特征图数据,与对应的卷积核相乘后累加;累加模块,用于累加接收的数据;暂存单元,用于暂存特征图数据。本申请装置的使用方法:将卷积核在特征图上滑动截取的多组数据分别按照卷积核的行数拆分成小组,并将重用的数据暂存,通过卷积核和特征图的大小确定暂存的周期;将小组中属于同一组的数据进行卷积运算,将结果进行进行累加。本发明不仅可以充分的利用输入特征数据,降低存储访问次数,还可以减少脉动阵列中乘加单元的无效时间,提高运算效率。
Description
技术领域
本申请涉及深度学习技术领域,尤其涉及一种用于卷积神经网络的脉动阵列计算结构及方法。
背景技术
目前深度学习领域深受各界关注,其中卷积神经网络在计算机视觉、医学图像处理以及自然语言处理等领域得到广泛应用,效果良好。其中卷积层的运算次数占到整体运算的90%以上。因此,卷积运算是卷积神经网络处理速度的瓶颈。卷积层的作用是通过一定大小的卷积核作用于局部图像区域获得图像的局部信息,提取图像中相应特征。卷积运算是一种规则且重复多次的乘加运算,特征图像数据和权重数据的重用度高。
脉动阵列常用于完成大规模乘加运算,并且脉动阵列可实现充分的流水,因此实现的频率可以很高,有利于提高系统的整体算力,这些特点使得脉动阵列非常适合处理卷积操作运算。
在实际卷积运算过程中,从存储中读取特征图所消耗的能量远高于运算时消耗的能量,因此提高输入特征数据的重用度成为减少卷积运算模块功耗的关键。
利用脉动阵列进行卷积运算时,通常先将卷积运算转换为矩阵乘法运算,之后将矩阵乘法运算映射到脉动阵列上进行运算。
虽然脉动阵列可以较好的解决卷积运算量大的问题,但是在将卷积运算变换为矩阵乘法后,输入特征矩阵中包含大量的重复数据,因此利用传统的方法脉动阵列将无法重复利用特征图数据,这将大大增加存储器的访问次数。
发明内容
本申请实施例提供一种用于卷积神经网络的脉动阵列计算结构及方法,解决了脉动阵列在卷积运算时重复访问外部存储模块获取重复数据的问题。
本申请实施例提供一种用于卷积神经网络的脉动阵列计算结构,包括脉动子阵列、暂存单元和累加模块;
X个Y×n×n大小的卷积核,Y个m×m大小的特征图,所述Y为输入数据通道个数,所述m>n;
所述脉动子阵列,用于接收卷积核在特征图上滑动截取的一行特征图数据,与对应的权重数据相乘后累加;脉动子阵列的个数为n;
所述累加模块,用于累加同一输出特征图通道的脉动子阵列输出的数据,得到输出特征图数据;
所述暂存单元,用于接收一个脉动子阵列输送的特征图数据,暂存m-n+1周期后后输送至与其相连的前一个脉动子阵列。
进一步地,所述脉动子阵列是由多个乘加单元组成的阵列;
脉动子阵列的行数为X,列数为n,脉动子阵列的个数为Y×n;
所述乘加单元,包含第一输入端口、第二输入端口、第三输入端口、第一输出端口、第二输出端口和第三输出端口;
所述第一输入端口的输入数据与第三输入端口的输入数据求乘法,并与第二输入端口的输入数据求加法经过一周期暂存后通过第二输出端口输出;
所述第一输入端口的输入数据经过一周期暂存后从第一输出端口输出;
所述第三输入端口的输入数据经过一周期暂存后从第三出书端口输出;
所述多个乘加单元组成脉动子阵列,由上方的乘加单元的第一输出端口和第三输出单元分别连接下方乘加单元的第一输入端口和第三输入端口;左侧乘加单元的第二输出端口连接右侧乘加单元的第二输入端口。
进一步地,所述特征图数据通过外部存储模块获得。
进一步地,所述特征图数据为M11、M12、M13...M1m、M21..Mmm共m×m个数据,卷积核为N11、N12、N13...N1n、N21...Nnn共n×n个数据,用于特征图输送的时序为:
第一周期,外部存储单元输送特征图数据M11至第一脉动子阵列,输送特征图数据M21和M1(m-n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn1和M(n-1)(m-n+2)至第n脉动子阵列;
第二周期,外部存储单元输送特征图数据M12至第一脉动子阵列,输送特征图数据M22和M1(m-n+3)至第二脉动子阵列,以此类推,输送特征图数据Mn2和M(n-1)(m-n+3)至第n脉动子阵列;第n脉动子阵列输送Mn1和M(n-1)(m-n+2)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)1和MM(n-2)(m-n+2)至第二个暂存模块,以此类推,第二脉动子阵列输送M21和M1(m-n+2)至第n-1个暂存模块;
第n-1周期,外部存储单元输送特征图数据M1(n-1)至第一脉动子阵列,输送特征图数据M2(n-1)和M1m至第二脉动子阵列,以此类推,输送特征图数据Mn(n-1)和M(n-1)m至第n脉动子阵列;第n脉动子阵列输送M(n-1)(n-2)和M(n-2)(m-1)至第一个暂存模块,第n-1脉动子阵列输送M(n-2)(n-2)和M(n-2)(m-1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-2)和M1(m-1)至第n-1个暂存模块;
第n周期,外部存储单元输送特征图数据M1n至第一脉动子阵列,输送特征图数据M2n至第二脉动子阵列,以此类推,输送特征图数据Mnn至第n脉动子阵列;第n脉动子阵列输送Mn(n-1)和M(n-1)m至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n-1)和M(n-2)m至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-1)和M1m至第n-1个暂存模块;
第n+1周期,外部存储单元输送特征图数据M1(n+1)至第一脉动子阵列,输送特征图数据M2(n+1)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+1)至第n脉动子阵列;第n脉动子阵列输送Mnn至第一个暂存模块,第n-1脉动子阵列输送M(n-1)n至第二个暂存模块,以此类推,第二脉动子阵列输送M2n至第n-1个暂存模块;第一脉动子阵列送Mnn×Nnn+Mn(n-1)×Nn(n-1)+......+M11×N11至累加单元;第二脉动子阵列送M(n-1)n×N(n-1)n+M(n-1)(n-1)+N(n-1)(n-1)+......+M21×N21至累加单元,以此类推,第n脉动子阵列送M2n×N2n+M2(n-1)×N2(n-1)+......+Mn1×Nn1至累加单元;
第n+2周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第n脉动子阵列输送Mn(n+1)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n+1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n+1)至第n-1个暂存模块;
第m-n+1周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第一个暂存单元输送Mnn~Mn1至第n-1脉动子阵列,第二个暂存单元送M(n-1)n~M(n-1)1至第n-2脉动子阵列,以此类推,送M1n~M11至第1脉动子阵列;
进一步地,输入数据通过寄存器在乘加单元内暂存一周期。
优选地,所述暂存单元在脉动子阵列与外部存储模块之间。
进一步地,只有脉动子阵列边缘的乘加单元可以与外部连接。
进一步地,所述脉动子阵列最左侧的乘加单元的第二输入端口输入的数据为0。
本申请实施例还提供一种用于卷积神经网络的脉动阵列数据重用方法,用于权利要求1-8的装置,包含以下步骤:
将卷积核在特征图上滑动截取的多组数据分别按照卷积核的行数拆分成小组,不同组中同一行数的数据在同一小组,不同小组分开同时输送数据,并将重用的数据暂存,通过卷积核和特征图的大小确定暂存的周期;
n×n大小的卷积核在m×m大小的特征图上滑动截取a组n×n个数据,所述第一小组的数据为M11-M1m,第二小组的数据为M21-M2m,以此类推,第n小组的数据为Mn1-Mnm;第二小组的数据M21-M2n在m-n个周期后作为重用数据输送至第一小组;
将小组中属于同一组的数据卷积核的权重相乘后累加,在将不同小组中得到的同一组的累加结果进行累加。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
本发明提供的用于卷积神经网络的脉动阵列计算结构及方法,不仅可以充分的利用输入特征数据,降低存储访问次数,还可以减少脉动阵列中乘加单元的无效时间,提高运算效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一种用于卷积神经网络的脉动阵列计算结构示意图;
图2为本申请脉动子阵列乘加单元的实施例结构示意图;
图3为本申请脉动子阵列实施例结构示意图;
图4为本申请二维脉动阵列输出重用结构的实施例时序图;
图5为本申请一种用于卷积神经网络的脉动阵列数据重用方法流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
图1为本申请一种用于卷积神经网络的脉动阵列计算结构示意图。
一种用于卷积神经网络的脉动阵列计算结构,包括脉动子阵列11、暂存单元12和累加模块13。
X个Y×n×n大小的卷积核,Y个m×m大小的特征图,所述Y为输入数据通道个数,所述m>n;
卷积核大小Y×n×n中Y为输入数据通道数,Y个m×m大小的特征图每个分别对应一个输入数据通道,因此每一个输入数据通道均有一个n×n的卷积核与特征图进行卷积运算。
所述脉动子阵列,用于接收卷积核在特征图上滑动截取的一行特征图数据,与对应的卷积核数据相乘后累加;脉动子阵列的个数为n。
例如,3×3的卷积核与7×7的特征图,脉动子阵列个数为3个。
所述累加模块,用于累加同一输出特征图通道的脉动子阵列输出的数据,得到输出特征图数据。
所述暂存单元,用于接收一个脉动子阵列输送的特征图数据,暂存m-n+1周期后后输送至与其相连的前一个脉动子阵列。
所述特征图数据通过外部存储模块14获得。
实施例2
图2为本申请脉动子阵列乘加单元的实施例结构示意图。
所述脉动子阵列是由多个乘加单元组成的阵列。
所述乘加单元,包含第一输入端口、第二输入端口、第三输入端口、第一输出端口、第二输出端口和第三输出端口。
所述第一输入端口的输入数据与第三输入端口的输入数据求乘法,并与第二输入端口的输入数据求加法经过一周期暂存后通过第二输出端口输出。
所述第一输入端口的输入数据经过一周期暂存后从第一输出端口输出。
所述第三输入端口的输入数据经过一周期暂存后从第三出书端口输出。
图3为本申请脉动子阵列实施例结构示意图。
所述脉动子阵列是由多个乘加单元组成的阵列。
脉动子阵列的行数为X,列数为n,脉动子阵列的个数为Y×n。
所述多个乘加单元组成脉动子阵列,由上方的乘加单元的第一输出端口和第三输出单元分别连接下方乘加单元的第一输入端口和第三输入端口;左侧乘加单元的第二输出端口连接右侧乘加单元的第二输入端口。
进一步地,输入数据通过寄存器在乘加单元内暂存一周期。
优选地,所述暂存单元在脉动子阵列与外部存储模块之间。
例如,所述暂存可以在外部存储模块和第一排乘加单元连线之间,也可以在任意两排乘加单元之间,还可以最后一排乘加单元与累加模块的连线之间。暂存单元若在外部存储单元与第一排层架单元连线之间,则特征图需要暂存m-n+1周期,暂存单元若在第一排乘加单元与第二排乘加单元之间,则特征图需要暂存m-n个周期,每往下一排,就需要减少一个暂存周期。
进一步地,只有脉动子阵列边缘的乘加单元可以与外部连接。
进一步地,所述脉动子阵列最左侧的乘加单元的第二输入端口输入的数据为0。
实施例3
图4为本申请二维脉动阵列输出重用结构的实施例时序图。
所述特征图数据为M11、M12、M13...M1m、M21..Mmm共m×m个数据,卷积核为N11、N12、N13...N1n、N21...Nnn共n×n个数据,用于特征图输送的时序为。
第一周期,外部存储单元输送特征图数据M11至第一脉动子阵列,输送特征图数据M21和M1(m-n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn1和M(n-1)(m-n+2)至第n脉动子阵列;
第二周期,外部存储单元输送特征图数据M12至第一脉动子阵列,输送特征图数据M22和M1(m-n+3)至第二脉动子阵列,以此类推,输送特征图数据Mn2和M(n-1)(m-n+3)至第n脉动子阵列;第n脉动子阵列输送Mn1和M(n-1)(m-n+2)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)1和MM(n-2)(m-n+2)至第二个暂存模块,以此类推,第二脉动子阵列输送M21和M1(m-n+2)至第n-1个暂存模块;
第n-1周期,外部存储单元输送特征图数据M1(n-1)至第一脉动子阵列,输送特征图数据M2(n-1)和M1m至第二脉动子阵列,以此类推,输送特征图数据Mn(n-1)和M(n-1)m至第n脉动子阵列;第n脉动子阵列输送M(n-1)(n-2)和M(n-2)(m-1)至第一个暂存模块,第n-1脉动子阵列输送M(n-2)(n-2)和M(n-2)(m-1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-2)和M1(m-1)至第n-1个暂存模块;
第n周期,外部存储单元输送特征图数据M1n至第一脉动子阵列,输送特征图数据M2n至第二脉动子阵列,以此类推,输送特征图数据Mnn至第n脉动子阵列;第n脉动子阵列输送Mn(n-1)和M(n-1)m至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n-1)和M(n-2)m至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-1)和M1m至第n-1个暂存模块;
第n+1周期,外部存储单元输送特征图数据M1(n+1)至第一脉动子阵列,输送特征图数据M2(n+1)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+1)至第n脉动子阵列;第n脉动子阵列输送Mnn至第一个暂存模块,第n-1脉动子阵列输送M(n-1)n至第二个暂存模块,以此类推,第二脉动子阵列输送M2n至第n-1个暂存模块;第一脉动子阵列送Mnn×Nnn+Mn(n-1)×Nn(n-1)+......+M11×N11至累加单元;第二脉动子阵列送M(n-1)n×N(n-1)n+M(n-1)(n-1)+N(n-1)(n-1)+......+M21×N21至累加单元,以此类推,第n脉动子阵列送M2n×N2n+M2(n-1)×N2(n-1)+......+Mn1×Nn1至累加单元;
第n+2周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第n脉动子阵列输送Mn(n+1)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n+1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n+1)至第n-1个暂存模块;
第m-n+1周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第一个暂存单元输送Mnn~Mn1至第n-1脉动子阵列,第二个暂存单元送M(n-1)n~M(n-1)1至第n-2脉动子阵列,以此类推,送M1n~M11至第1脉动子阵列;
例如,根据图1所述二维脉动阵列数据重用结构,3×3的卷积核和7×7的特征图,其重用过程的时序为:
在特征图数据开始输入之前,所有卷积核的权重数据都暂存在乘加单元中。
周期1,M31通过线路1;M21通过线路2,M16通过线路2;M11通过线路3。
周期2,M32通过线路1,M31通过线路4,M26通过线路4;M22通过线路2,M17通过线路2;M21通过线路6,M16通过线路6;M12通过线路3。
周期3,M33通过线路1,M32通过线路4,M27通过线路4;M23通过线路2,M22通过线路6,M17通过线路6;M13通过线路3。
周期4,M34通过线路1,M33通过线路4,M31×N31+M32×N32+M33×N33通过线路8;M24通过线路2,M23通过线路6,M21×N21+M22×N22+M23×N23通过线路9;M14通过线路3,M11×N11+M12×N12+M13×N13通过线路10。
周期5,M35通过线路1,M34通过线路4;M25通过线路2,M24通过线路6;M15通过线路3。
周期6,M41通过线路1,M31通过线路5,M26通过线路5;M21通过线路7,M16通过线路7。
周期7,M42通过线路1,M32通过线路5,M27通过线路5;M22通过线路7,M17通过线路7。
周期8,M43通过线路1,M33通过线路5;M23通过线路7,完成了脉动子阵列之间的数据重用。
所述特征图为7×7,卷积核为3×3,因此数据重用需要等m-n个周期也就是5个周期后,在第六周期数据重用,若每个周期输入一个数据,五个周期后M16、M17、M26、M27没有被输入,因此在前五个周期额外输入M16、M17、M26、M27,以便于在第六周期重用。
同理,m×m大小的特征图和n×n大小的卷积核额外输入特征图一行的后m-(m-n+1)个数据。
实施例4
图5为本申请一种用于卷积神经网络的脉动阵列数据重用方法流程图。
一种用于卷积神经网络的脉动阵列数据重用方法,包含以下步骤:
步骤101、将卷积核在特征图上滑动截取的多组数据分别按照卷积核的行数拆分成小组,不同组中同一行数的数据在同一小组,不同小组分开同时输送数据,并将重用的数据暂存,通过卷积核和特征图的大小确定暂存的周期。
在步骤101中,每个每小组只产生卷积运算的部分和,一个n×n的卷积核截取的特征图有n行,每一行的数看成一个小组。不同组中处于同一行位置的数据在同一小组,而卷积核截取特征图的不同行的图片之间有重复的数据,因为不同小组同时输送数据,因此同一个卷积核截取的特征图上每一行的数据都是同时输送的。
n×n大小的卷积核在m×m大小的特征图上滑动截取a组n×n个数据,所述第一小组的数据为M11-M1m,第二小组的数据为M21-M2m,以此类推,第n小组的数据为Mn1-Mnm;第二小组的数据M21-M2n在m-n个周期后作为重用数据输送至第一小组。
例如,3×3的卷积核在5×5的特征图上截取的第一张图的数据为:
11 | 12 | 13 |
21 | 22 | 23 |
31 | 32 | 33 |
第四张图的数据为:
其中21、22、23、31、32、33为可以重用的数据。
步骤102、将小组中属于同一组的数据卷积核的权重相乘后累加,在将不同小组中得到的同一组的累加结果进行累加。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (8)
1.一种用于卷积神经网络的脉动阵列计算结构,其特征在于,包括脉动子阵列、暂存单元和累加模块;
X个Y×n×n大小的卷积核,Y个m×m大小的特征图,所述Y为输入数据通道个数,所述m>n;
所述脉动子阵列,用于接收卷积核在特征图上滑动截取的一行特征图数据,与对应的权重数据相乘后累加;脉动子阵列的个数为n;
所述累加模块,用于累加同一输出特征图通道的脉动子阵列输出的数据,得到输出特征图数据;
所述暂存单元,用于接收一个脉动子阵列输送的特征图数据,暂存m-n+1周期后输送至与其相连的前一个脉动子阵列;
所述特征图数据为M11、M12、M13...M1m、M21..Mmm共m×m个数据,卷积核为N11、N12、N13...N1n、N21...Nnn共n×n个数据,其特征在于,用于特征图输送的时序为:
第一周期,外部存储单元输送特征图数据M11至第一脉动子阵列,输送特征图数据M21和M1(m-n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn1和M(n-1)(m-n+2)至第n脉动子阵列;
第二周期,外部存储单元输送特征图数据M12至第一脉动子阵列,输送特征图数据M22和M1(m-n+3)至第二脉动子阵列,以此类推,输送特征图数据Mn2和M(n-1)(m-n+3)至第n脉动子阵列;第n脉动子阵列输送Mn1和M(n-1)(m-n+2)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)1和M(n-2)(m-n+2)至第二个暂存模块,以此类推,第二脉动子阵列输送M21和M1(m-n+2)至第n-1个暂存模块;
第n-1周期,外部存储单元输送特征图数据M1(n-1)至第一脉动子阵列,输送特征图数据M2(n-1)和M1m至第二脉动子阵列,以此类推,输送特征图数据Mn(n-1)和M(n-1)m至第n脉动子阵列;第n脉动子阵列输送M(n-1)(n-2)和M(n-2)(m-1)至第一个暂存模块,第n-1脉动子阵列输送M(n-2)(n-2)和M(n-2)(m-1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-2)和M1(m-1)至第n-1个暂存模块;
第n周期,外部存储单元输送特征图数据M1n至第一脉动子阵列,输送特征图数据M2n至第二脉动子阵列,以此类推,输送特征图数据Mnn至第n脉动子阵列;第n脉动子阵列输送Mn(n-1)和M(n-1)m至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n-1)和M(n-2)m至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n-1)和M1m至第n-1个暂存模块;
第n+1周期,外部存储单元输送特征图数据M1(n+1)至第一脉动子阵列,输送特征图数据M2(n+1)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+1)至第n脉动子阵列;第n脉动子阵列输送Mnn至第一个暂存模块,第n-1脉动子阵列输送M(n-1)n至第二个暂存模块,以此类推,第二脉动子阵列输送M2n至第n-1个暂存模块;第一脉动子阵列送Mnn×Nnn+Mn(n-1)×Nn(n-1)+......+M11×N11至累加单元;第二脉动子阵列送M(n-1)n×N(n-1)n+M(n-1)(n-1)+N(n-1)(n-1)+......+M21×N21至累加单元,以此类推,第n脉动子阵列送M2n×N2n+M2(n-1)×N2(n-1)+......+Mn1×Nn1至累加单元;
第n+2周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第n脉动子阵列输送Mn(n+1)至第一个暂存模块,第n-1脉动子阵列输送M(n-1)(n+1)至第二个暂存模块,以此类推,第二脉动子阵列输送M2(n+1)至第n-1个暂存模块;
第m-n+1周期,外部存储单元输送特征图数据M1(n+2)至第一脉动子阵列,输送特征图数据M2(n+2)至第二脉动子阵列,以此类推,输送特征图数据Mn(n+2)至第n脉动子阵列;第一个暂存单元输送Mnn~Mn1至第n-1脉动子阵列,第二个暂存单元送M(n-1)n~M(n-1)1至第n-2脉动子阵列,以此类推,送M1n~M11至第1脉动子阵列。
2.根据权利要求1所述用于卷积神经网络的脉动阵列计算结构,其特征在于,所述脉动子阵列是由多个乘加单元组成的阵列;
脉动子阵列的行数为X,列数为n,脉动子阵列的个数为Y×n;
所述乘加单元,包含第一输入端口、第二输入端口、第三输入端口、第一输出端口、第二输出端口和第三输出端口;
所述第一输入端口的输入数据与第三输入端口的输入数据求乘法,并与第二输入端口的输入数据求加法经过一周期暂存后通过第二输出端口输出;
所述第一输入端口的输入数据经过一周期暂存后从第一输出端口输出;
所述第三输入端口的输入数据经过一周期暂存后从第三出书端口输出;
所述多个乘加单元组成脉动子阵列,由上方的乘加单元的第一输出端口和第三输出单元分别连接下方乘加单元的第一输入端口和第三输入端口;左侧乘加单元的第二输出端口连接右侧乘加单元的第二输入端口。
3.根据权利要求1所述用于卷积神经网络的脉动阵列计算结构,其特征在于,所述特征图数据通过外部存储模块获得。
4.根据权利要求2所述用于卷积神经网络的脉动阵列计算结构,其特征在于,输入数据通过寄存器在乘加单元内暂存一周期。
5.根据权利要求2所述用于卷积神经网络的脉动阵列计算结构,其特征在于,所述暂存单元在脉动子阵列与外部存储模块之间。
6.根据权利要求2所述用于卷积神经网络的脉动阵列计算结构,其特征在于,只有脉动子阵列边缘的乘加单元可以与外部连接。
7.根据权利要求2所述用于卷积神经网络的脉动阵列计算结构,其特征在于,所述脉动子阵列最左侧的乘加单元的第二输入端口输入的数据为0。
8.一种用于卷积神经网络的脉动阵列数据重用方法,用于权利要求1-7任意一项所述装置,其特征在于,包含以下步骤:
将卷积核在特征图上滑动截取的多组数据分别按照卷积核的行数拆分成小组,不同组中同一行数的数据在同一小组,不同小组分开同时输送数据,并将重用的数据暂存,通过卷积核和特征图的大小确定暂存的周期;
n×n大小的卷积核在m×m大小的特征图上滑动截取a组n×n个数据,第一小组的数据为M11-M1m,第二小组的数据为M21-M2m,以此类推,第n小组的数据为Mn1-Mnm;第二小组的数据M21-M2n在m-n个周期后作为重用数据输送至第一小组;
将小组中属于同一组的数据卷积核的权重相乘后累加,在将不同小组中得到的同一组的累加结果进行累加。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910749711.1A CN110543934B (zh) | 2019-08-14 | 2019-08-14 | 一种用于卷积神经网络的脉动阵列计算结构及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910749711.1A CN110543934B (zh) | 2019-08-14 | 2019-08-14 | 一种用于卷积神经网络的脉动阵列计算结构及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543934A CN110543934A (zh) | 2019-12-06 |
CN110543934B true CN110543934B (zh) | 2022-02-01 |
Family
ID=68711354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910749711.1A Active CN110543934B (zh) | 2019-08-14 | 2019-08-14 | 一种用于卷积神经网络的脉动阵列计算结构及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110543934B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111506343B (zh) * | 2020-03-05 | 2023-07-07 | 北京大学深圳研究生院 | 一种基于脉动阵列硬件架构的深度学习卷积运算实现方法 |
CN113168429A (zh) * | 2020-05-11 | 2021-07-23 | 深圳市大疆创新科技有限公司 | 卷积计算装置、方法和计算机存储介质 |
CN111652360B (zh) * | 2020-05-25 | 2023-03-14 | 北京大学深圳研究生院 | 一种基于脉动阵列的卷积运算装置 |
CN111800636A (zh) * | 2020-07-06 | 2020-10-20 | 南京大学 | 一种基于卷积自动编码算法的图像压缩硬件加速器装置 |
CN112632464B (zh) * | 2020-12-28 | 2022-11-29 | 上海壁仞智能科技有限公司 | 用于处理数据的处理装置 |
CN113705069A (zh) | 2021-02-26 | 2021-11-26 | 腾讯科技(深圳)有限公司 | 基于脉动阵列的浅深度模型的计算优化方法和装置 |
CN113313252B (zh) * | 2021-05-24 | 2022-10-25 | 东南大学 | 一种基于脉动阵列的深度可分离卷积实现方法 |
CN115600652B (zh) * | 2022-11-29 | 2023-04-07 | 深圳市唯特视科技有限公司 | 卷积神经网络处理装置、高速目标探测方法以及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190026629A1 (en) * | 2017-07-19 | 2019-01-24 | Syntiant | Systems and Methods for Overshoot Compensation |
-
2019
- 2019-08-14 CN CN201910749711.1A patent/CN110543934B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107454966A (zh) * | 2015-05-21 | 2017-12-08 | 谷歌公司 | 用于神经网络处理器的预取权重 |
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
CN107918794A (zh) * | 2017-11-15 | 2018-04-17 | 中国科学院计算技术研究所 | 基于计算阵列的神经网络处理器 |
CN109992743A (zh) * | 2017-12-29 | 2019-07-09 | 华为技术有限公司 | 矩阵乘法器 |
CN108182471A (zh) * | 2018-01-24 | 2018-06-19 | 上海岳芯电子科技有限公司 | 一种卷积神经网络推理加速器及方法 |
Non-Patent Citations (1)
Title |
---|
一种三维脉动阵列结构的CNN推理加速器设计;邱超等;《电子技术与软件工程》;20190416;第70卷(第7期);第34-36页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110543934A (zh) | 2019-12-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543934B (zh) | 一种用于卷积神经网络的脉动阵列计算结构及方法 | |
CN111684473B (zh) | 提高神经网络阵列的性能 | |
CN107229598B (zh) | 一种面向卷积神经网络的低功耗电压可调卷积运算模块 | |
WO2019128404A1 (zh) | 矩阵乘法器 | |
EP3553673A1 (en) | Convolution operation chip and communication device | |
CN110163353B (zh) | 一种计算装置及方法 | |
CN110659445B (zh) | 一种运算装置及其处理方法 | |
JPH11203271A (ja) | Dct回路、idct回路及びdct/idct回路 | |
CN110766128A (zh) | 卷积计算单元、计算方法及神经网络计算平台 | |
WO2022134465A1 (zh) | 加速可重构处理器运行的稀疏化数据处理方法和装置 | |
CN108182469A (zh) | 一种神经网络模型训练方法、系统、装置及存储介质 | |
CN110069444A (zh) | 一种计算单元、阵列、模块、硬件系统及实现方法 | |
CN110555512B (zh) | 一种二值卷积神经网络数据重用方法及装置 | |
US20210089889A1 (en) | Mixed-precision computation unit | |
CN209708122U (zh) | 一种计算单元、阵列、模块、硬件系统 | |
Niu et al. | SPEC2: Spectral sparse CNN accelerator on FPGAs | |
Liu et al. | Algorithm and hardware co-design co-optimization framework for LSTM accelerator using quantized fully decomposed tensor train | |
CN109446478B (zh) | 一种基于迭代和可重构方式的复协方差矩阵计算系统 | |
WO2022062388A1 (zh) | 一种视频数据处理方法、系统及相关组件 | |
CN110728354A (zh) | 一种改进的滑动式分组卷积神经网络 | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
JP6888074B2 (ja) | チップ装置および関連製品 | |
CN110751259A (zh) | 深度神经网络中的网络层运算方法及装置 | |
JP6888073B2 (ja) | チップ装置および関連製品 | |
US8306798B2 (en) | Fluid dynamics simulator |
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 |