CN110580519B - 一种卷积运算装置及其方法 - Google Patents
一种卷积运算装置及其方法 Download PDFInfo
- Publication number
- CN110580519B CN110580519B CN201910762642.8A CN201910762642A CN110580519B CN 110580519 B CN110580519 B CN 110580519B CN 201910762642 A CN201910762642 A CN 201910762642A CN 110580519 B CN110580519 B CN 110580519B
- Authority
- CN
- China
- Prior art keywords
- gate
- data
- register
- input
- adder
- 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
-
- 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)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种卷积运算结构及其方法。所述卷积运算结构,包括转换单元结构,所述转换单元结构包括:第一寄存器组、第二寄存器组、乘法器、加法器、中间结果寄存器组,其中,所述第一寄存器组和所述第二寄存器组被控制为,在第一回合计算过程中,对由它们所分别存储的第一矩阵和第二矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第一结果矩阵存储至所述中间结果寄存器组;并且所述第二寄存器组和所述中间结果寄存器组被控制为,在第二回合计算过程中,对由它们所分别存储的第三矩阵以及所述第一结果矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第二结果矩阵存储至所述第一寄存器组。
Description
技术领域
本发明涉及对包含卷积运算单元的神经网络处理器的改进,尤其涉及对可实现winograd卷积运算的卷积运算结构的改进。
背景技术
深度学习技术在近几年得到了飞速的发展,在解决高级抽象认知问题上,例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐和智能机器人等领域得到了广泛应用并具有出色的表现,因此成为了学术界和工业界的研究热点。深度神经网络是人工智能领域具有最高发展水平的感知模型之一,该类网络通过建立模型模拟人类大脑的神经连接结构,通过多个变换阶段分层对数据特征进行描述,为图像、视频和音频等大规模数据处理任务带来了突破性进展。该模型结构是一种运算模型,由大量节点通过网状互连结构构成,这些节点被称为神经元。每两个节点间连接强度都代表通过该连接信号在两个节点间的加权值,被称为权重,与人类神经网络中的记忆相对应。
神经网络处理器是用于实现深度神经网络的专用处理器,针对神经网络处理器的研究目的是将神经网络推向更广泛应用如智能穿戴、智能机器人、自动驾驶以及模式识别等领域。其神经网络的计算过程可分为卷积、激活、池化等步骤。然而,卷积运算时的数据重复性操作任务极大,卷积运算量与卷积窗口移动次数成正比,并且对于绝大多数应用而言,需要执行卷积运算的输入特征图、用于实现卷积运算的卷积核中为“0”的元素非常多,本领域中称作“稀疏性”非常大,这使得传统的卷积运算中存在许多冗余的操作。对此,一些研究者们提出了基于winograd的卷积运算方式,该方式通过对输入特征图与权值进行特定的矩阵转换,以完成等效的卷积运算任务,可大量减少卷积运算过程的乘法运算。
根据winograd的卷积运算原理,在一次winograd的卷积运算中包含多次矩阵转换(例如,XTyX形式的运算,其中X和y分别为参与运算的两个矩阵)。而现有的winograd卷积运算单元用于实现上述矩阵转换的硬件结构以及与之匹配的处理操作非常复杂,致使该winograd卷积运算单元的电路面积以及效用相对较差。并且,由于winograd的卷积运算对于某些网络尺寸的计算效果并不理想(例如,卷积核尺寸小于3×3的卷积运算的加速效果不明显,计算速度甚至低于传统的卷积运算单元),因而许多设置了winograd卷积运算单元的神经网络处理器还会设置传统的卷积运算单元,以应对针对不同的网络尺寸的计算需求。而在这些神经网络处理器中,并没有可以针对传统的卷积运算以及winograd卷积运算进行复用的计算单元,这使得神经网络处理器需要分别针对传统的卷积运算以及winograd卷积运算设置相应的电路。
发明内容
因此,本发明的目的在于克服上述现有技术的缺陷,提供一种卷积运算结构,包括转换单元结构,所述转换单元结构包括:第一寄存器组、第二寄存器组、乘法器、加法器、中间结果寄存器组,
其中,所述第一寄存器组和所述第二寄存器组被控制为,在第一回合计算过程中,对由它们所分别存储的第一矩阵和第二矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第一结果矩阵存储至所述中间结果寄存器组;并且
所述第二寄存器组和所述中间结果寄存器组被控制为,在第二回合计算过程中,对由它们所分别存储的第三矩阵以及所述第一结果矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第二结果矩阵存储至所述第一寄存器组。
优选地,根据所述卷积运算结构,所述转换单元结构还包括:第一选通器、第二选通器、和第三选通器,
其中,所述第一寄存器组的输出通过所述第一选通器连接至所述乘法器的第一输入,所述第二寄存器组的输出连接至所述乘法器的第二输入,所述乘法器的输出连接至所述加法器的第一输入,所述加法器的输出连接至所述第二选通器的输入,所述第二选通器的输出分别连接至所述加法器的第二输入、所述中间结果寄存器、以及所述第一寄存器组,所述中间结果寄存器组的输出通过所述第三选通器连接至所述乘法器的第一输入;
所述第一选通器、第二选通器和第三选通器分别用于对与其相连的第一寄存器组、第二寄存器组和中间结果寄存器组中的数据输出进行选通,并且所述第一选通器与所述第三选通器的选通操作互斥;
其中,所述第二选通器为多路输出选择器,用于在所述转换单元结构针对一组数据执行计算时将来自所述加法器的数值提供给所述加法器,在第一回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给所述中间结果寄存器,在第二回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给所述第一中间结果寄存器;
其中,所述一组数据与当前执行卷积运算的矩阵中的一行或一列对应,所述一回合计算与一次完整的矩阵乘法对应。
优选地,根据所述卷积运算结构,其中:
所述第一寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;
所述第二寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n项依照各项的顺序循环提供n次,并在执行下一轮前将寄存器所存储的数据移动n项;
所述中间结果寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;
所述乘法器,用于对来自所述第二寄存器组的1项数据以及由所述第一选通器所提供的1项数据或者由所述第三选通器所提供的1项数据执行乘法运算。
优选地,根据所述卷积运算结构,其中所述第一寄存器组和/或所述第二寄存器组和/或所述中间结果寄存器组,包括:
多个暂存器,用于暂时存储该寄存器组中寄存器所存储的数据中的连续m项数据;
针对所述多个暂存器的输入使能接口,用于接收控制所述多个暂存器载入该寄存器组中寄存器所存储的数据中的连续m项数据的输入使能控制信号;
针对所述多个暂存器的滑动使能接口,用于接收控制所述多个暂存器依照各项的顺序循环提供所述m项数据的滑动使能控制信号;
其中,对于所述第二寄存器组所述m等于n,对于所述第一存器组和所述中间结果寄存器组所述m等于n×n。
优选地,根据所述卷积运算结构,其中所述转换单元结构包括:一个所述第二寄存器组,以及多套第一寄存器组、乘法器、加法器、中间结果寄存器组、第一选通器、第二选通器、和第三选通器的结构,所述一个所述第二寄存器组的输出分别连接至所述多套结构中每一套的乘法器的输入。
优选地,根据所述卷积运算结构,其中包括:前转换单元结构、点乘累加单元、权重缓存和后转换单元结构,其中,
所述权重缓存,用于存储以离线方式计算获得的U=[GgGT]或者存储用于执行卷积计算的权值g,其中G为winograd卷积运算的转换矩阵;
所述前转换单元结构和所述后转换单元结构采用所述的转换单元结构;
所述点乘累加单元,用于对其输入执行点乘操作并对点乘的结果进行累加,所述点乘累加单元的输入连接至所述前转换单元结构的第一寄存器组的输出以及所述权重缓存,所述点乘累加单元的输出连接至所述后转换单元结构的第一寄存器组。
优选地,根据所述卷积运算结构,其中所述点乘累加单元包括:2k+1个乘法器、(1+2+22…+2k)个第一加法器、1个第二加法器以及1个第四选通器;
其中,所述乘法器和所述第一加法器以加法树的方式连接,所述加法树的输出连接至所述第二加法器的输入,所述第二加法器的输出连接至所述第四选通器的输入,并且所述第四选通器的输出连接至所述第二加法器的输入,k为正整数;
所述点乘累加单元的至少一个乘法器的其中一个输入连接至所述前转换单元结构的第一寄存器组的输出,另一个输入连接至所述权重缓存。
优选地,根据所述卷积运算结构,其中还包括:
数据缓存,用于存储用于执行卷积计算的特征图d;
针对所述数据缓存的选通器,其连接至所述数据缓存的输出以及所述点乘累加单元的输入;
针对所述前转换单元结构的选通器,其连接至所述前转换单元结构的输出以及所述点乘累加单元的输入;以及
针对所述后转换单元结构的选通器,其连接至所述后转换单元结构的输出以及所述点乘累加单元的输入;
其中,所述针对所述前转换单元结构的选通器与针对所述后转换单元结构的选通器的选通相同,并且所述针对所述前转换单元结构的选通器的选通与针对所述数据缓存的选通器的选通相反。
一种用于前述卷积运算结构的方法,包括:
1)在所述第一寄存器组中载入第一数据,所述第一选通器的选通为通过,所述第三选通器的选通为不通过;并且
在所述第二寄存器组中载入第二数据的转置;
2)所述乘法器逐项地对来自所述第一寄存器组的1项数据和所述第二寄存器组的1项数据执行乘法运算;并且,
所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述中间结果寄存器组;
重复本步骤的上述操作,直到所述第一寄存器组和所述第二寄存器组以所述方式提供了n轮数据;
3)所述第三选通器的选通为通过,所述第一选通器的选通为不通过;
并且,在所述第二寄存器组中载入第二数据;
4)所述乘法器逐项地对来自所述第二寄存器组的1项数据和所述第三选通器所提供的1项数据执行乘法运算;并且,
所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述第一寄存器组;
重复本步骤的上述操作,直到所述第二寄存器组和所述中间结果寄存器组以所述方式提供了n轮数据;
其中,所述第一数据为用于执行卷积计算的特征图d,并且所述第二数据为winograd卷积运算的转换矩阵B,
或者,所述第一数据为winograd卷积运算的中间结果M=U⊙V,其中,U=[GgGT],V=[BT dB],G为winograd卷积运算的转换矩阵,g为用于执行卷积计算的权值,并且所述第二数据为winograd卷积运算的转换矩阵A,
或者,所述第一数据为g,并且所述第二数据为GT。
一种用于前述卷积运算结构的控制方法,包括:
1)根据执行卷积计算的网络尺寸,确定所述n值;
2)当计数器的计数为0至n×(n×n-1)时,将用于所述第一选通器的控制信号设置为通过,将用于所述第三选通器的控制信号设置为不通过;
当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述中间结果寄存器组;
在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零;
其中,x为正整数,所述计数器与所述第一寄存器组、所述第二寄存器组、以及所述中间结果寄存器组同步且频率相同;
3)当所述计数器的计数为0至n×(n×n-1)时,将用于所述第三选通器的控制信号设置为通过,将用于所述第一选通器的控制信号设置为不通过;
当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述第一寄存器组;
在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零。
一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现所述方法。
本发明的实施例具有以下优点:
提供了一种专用于实现winograd的卷积运算中XTyX形式的运算的硬件结构(转换单元结构),能够以相对较少的硬件电路快速、方便地实现该运算过程中矩阵的行列相乘。将该转换单元结构与点乘累加装置紧密连接,可以减少转换与点乘累加之间的数据访存量。并且本发明还提供了一种硬件结构,使其兼具实现这传统卷积运算以及winograd卷积运算的功能,以兼容更多类型的神经网络计算。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1是针对winograd卷积运算过程的说明示例;
图2是根据本发明的一个实施例的转换单元结构1;
图3是根据本发明的一个实施例的滑动结构(寄存器组),该滑动结构可针对不同尺寸矩阵进行数据滑动控制,其中图3a为滑动结构中的一个寄存单元,图3b为包含z个如图3a所示出的寄存单元的滑动结构;
图4是根据本发明的一个实施例的转换单元结构2;
图5是根据本发明的一个实施例的点乘累加单元,其中图5a是点乘累加单元的结构展开示意图,图5b是图5a的缩略图;
图6是根据本发明的一个实施例的包含转换单元结构、点乘累加单元的卷积运算结构1的示意图;
图7是根据本发明的一个实施例的卷积运算结构2的示意图;
图8是针对图7选择普通卷积模式下被激活的部件部分。
具体实施方式
下面结合附图和具体实施方式对本发明作详细说明。
在winograd的卷积运算中,其卷积运算可以被总结为下式:
F(m×n,r×s)=AT[[GgGT]⊙[BT dB]]A
其中,m与n分别表示单次winograd卷积运算输出特征图神经元规模的边长;r与s表示卷积核的边长;g表示单次winograd卷积运算输入的权值矩阵;d表示单次winograd卷积运算输入的特征图矩阵;A、G、B分别为对应的转换矩阵。
在本申请中,为了方便,发明人定义了矩阵U=[GgGT],矩阵V=[BT dB],以及矩阵M=U⊙V。由此,可以将前文中的计算式标示为F(m×n,r×s)=AT M A。
图1示出了执行上述winograd卷积运算的大致流程图,其中k为输入的权值矩阵g在深度上的维度数,g1为g在第1深度上的值,g2为g在第2深度上的值,以此类推。参考图1,在每一个深度p上计算Up=[GgpGT],基于各深度上的Up得到U。类似地计算V=[BT dB],得到M=U⊙V的结果。由于单个V可同时配备多组U进行点乘运算求取Mi,在求取n组Mi之后,将其进行累加,即M=∑0→nMi在深度上对M的值求和,最后计算AT M A。
在上述XTyX形式的运算中,需要执行两次矩阵的乘法。根据矩阵乘法的原理,通过计算尺寸为x×y的矩阵A与尺寸为y×z的矩阵B之间的乘法可以得到尺寸为x×z的矩阵C。并且,在矩阵C中,第i行第j列的元素等于矩阵A第i行中的各个元素分别与矩阵B第j行中的相对应元素相乘并对全部乘积求和。例如,C中的第1行第1列的元素c1,1=a1,1b1,1+a1,2b2,1+a1,3b3,1,是A中第一行的元素分别与B中第一列的相应元素相乘并对结果求和,为了方便,在本申请中将这种计算称为矩阵的行列相乘。
在该例子中,一共有4个行列相乘运算。
<转换单元结构1>
针对上述XTyX形式的运算,本发明提出了一种专用的硬件结构(转换单元结构)。
图2示出了根据本发明的一个实施例的转换单元结构的硬件构成。参考图2,该转换单元结构包括:三个数据寄存器组,分别为第一寄存器组1、第二寄存器组2、和中间结果寄存器组3;以及一个乘法器4、一个加法器5、;以及三个选通器,分别为第一选通器S1、第二选通器S2、和第三选通器S3,该第二选通器S2为多路输出选择器。其中,第一寄存器组的输出通过第一选通器S1连接至乘法器4的第一输入,第二寄存器组2的输出连接至乘法器4的第二输入,乘法器4的输出连接至加法器5的第一输入,加法器的输出连接至第二选通器S2的输入,第二选通器S2的输出分别连接至加法器5的第二输入、中间结果寄存器3、以及第一寄存器组1,中间结果寄存器组3的输出通过第三选通器S3连接至乘法器4的第一输入。
其中,第一寄存器组1(数据寄存器组),其用于存储XTyX形式的运算中的参数y(例如,winograd卷积运算的特征图d或者权值g),并在完成XTyX的计算后存储该计算的结果,在输出所存储的数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次。这里的n与卷积网络的尺寸相关,例如若特征图d的尺寸为5×5,则n=5。
第二寄存器组2(转换参数寄存器组),其用于存储XTyX形式的运算中的参数XT和X(例如,B、BT、G、GT、A、AT),在输出所存储的数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n项依照各项的顺序循环提供n次,并在执行下一轮前将寄存器所存储的数据移动n项。
中间结果寄存器组3,其用于存储XTyX形式的运算中的中间结果XTy(例如,BT d或者Gg或者AT M的结果),并且提供该中间结果以进行随后的计算。该中间结果寄存器组,在参与进行上述矩阵运算时,以与第一寄存器组类似的方式提供数据,即在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次。
乘法器4,用于对来自所述第二寄存器组的1项数据以及由所述第一选通器所提供的1项数据或者由所述第三选通器所提供的1项数据执行乘法运算。
加法器5,用于对其输出的数据执行加法运算。
第一选通器S1、第二选通器S2和第三选通器S3分别用于对与其相连的寄存器组的数据的输出进行选通,并且第一选通器S1与第三选通器S3的选通操作互斥,即第一选通器S1被选通时,第三选通器S3的选通被紧张,反之亦然。具体来说,执行XTy的运算阶段,第一选通器S1将第一寄存器组1所存储的数据逐一提供给乘法器4,第二选通器S2将来自加法器5的结果分别返回给加法器5或者在执行到一行与一列相乘的最后元素的乘法时将来自加法器5的结果写入中间结果寄存器3,在第一寄存器组S1给乘法器4提供数据时,第三选通器S3不向乘法器4提供数据。在执行[XTy]X的运算阶段,第一选通器S1不向乘法器4提供数据,第三选通器S3逐一将中间结果寄存器组3所存储的数据提供给乘法器4,第二选通器S2分别将来自加法器5的结果返回给乘法器4或者在执行到一行与一列相乘的最后元素的乘法时将来自加法器5的结果写入第一寄存器组3。
下面将通过一个具体的实例来介绍图2所示出的转换单元结构的运行方式。以对以下两个矩阵执行XTyX形式的运算为例。
为了方便解释执行XTyX形式的运算,在本发明中对寄存器组提供数据的方式、以及执行计算的过程进行定义:
将矩阵中一个元素(例如BT的第一行第一列的1)定义为“一项”;
将矩阵中的一行或一列元素(例如BT中的[1,0,-1,0],或者d[3,1,2,5])定义为“一组”;
根据前面的定义,将BT中的一行与d中的一列相应元素相乘并对结果求和称为行列相乘;相乘的次数取决于BT的一行中元素的项数(也就是d中的一列中元素的项数);
将BT中的一行分别与d中的每一列相应元素进行的多个行列相乘称为一轮。一轮中行列相乘的次数,取决于d的列数;
将BT中的每一行分别与d中的每一列相应元素进行的多轮运算,称为一个回合。一个回合的轮数取决于BT的行数。
在第一回合,执行BT d阶段:
在第一寄存器组1中以[3,1,2,5,0,7,2,0,5,1,1,7,0,10,1,5]的方式载入矩阵d,并且在第二寄存器组2中以[1,0,-1,0,0,1,1,0,0,-1,1,0,0,1,0,-1]的方式载入矩阵BT。此时,第一选通器S1选通为通过(即将第一寄存器组1所存储的数据逐一提供给乘法器4),第三选通器S3的选通为禁止。
第二寄存器组2采用下述方式与第一寄存器组1同步进行循环滑动,以向乘法器4逐一提供数据,即将BT中的一列作为一组并将该组提供n=4次以作为一轮数据,针对每一列提供一轮数据,共提供n=4轮,具体如下:
第一轮计算:
将第二寄存器组2中的第一行元素[1,0,-1,0],循环逐一提供给乘法器4的一个输入端,同时将与第一寄存器组1的数据[3,1,2,5,0,7,2,0,5,1,1,7,0,10,1,5]通过选通器S1逐一提供给乘法器4的另一个输入端,提供四次行列相乘,得到[1,-2,4,-1];
类似地,进行第二轮计算:
将第二寄存器组2中的第二行元素[0,1,1,0],循环逐一提供给乘法器4的一个输入端,同时将与第一寄存器组1的数据[3,1,2,5,0,7,2,0,5,1,1,7,0,10,1,5]通过选通器S1逐一提供给乘法器4的另一个输入端,提供四次行列相乘,得到[,3,9,2,11,];
第三轮计算:
将第二寄存器组2中的第二行元素[0,-1,1,0],循环逐一提供给乘法器4的一个输入端,同时将与第一寄存器组1的数据[3,1,2,5,0,7,2,0,5,1,1,7,0,10,1,5]通过选通器S1逐一提供给乘法器4的另一个输入端,提供四次行列相乘,得到[1,-5,0,-9];
第四轮计算:
将第二寄存器组2中的第二行元素[0,1,0,-1],循环逐一提供给乘法器4的一个输入端,同时将与第一寄存器组1的数据[3,1,2,5,0,7,2,0,5,1,1,7,0,10,1,5]通过选通器S1逐一提供给乘法器4的另一个输入端,提供四次行列相乘,得到[-4,7,-6,5];
其中,在第二选通器S2的控制下,在每一轮计算中,加法器5每针对一组数据执行了4次乘法运算和3次加法运算后,便将计算结果写入中间结果寄存器组3,例如针对第一轮数据中的第一组完成1×3+0×1+(-1×2)+0×5=1的计算后,将结果“1”写入中间结果寄存器组3;在针对第一轮数据中的第二组完成1×0+0×7+(-1×2)+0×0=-2的计算后,将结果“-2”写入中间结果寄存器组3;在针对第一轮数据中的第三组完成1×5+0×1+(-1×1)+0×7=4的计算后,将结果“4”写入中间结果寄存器组3;在针对第一轮数据中的第四组完成1×0+0×10+(-1×1)+0×5=-1的计算后,将结果“-1”写入中间结果寄存器组3。以此类推,针对全部四轮数据执行上述运算以完成第一回合BT d的计算,在完成该回合的计算后,在中间结果寄存器组中存储以下数据:
[1,-2,4,-1,3,9,2,11,1,-5,0,-9,-4,7,-6,5]。
在第二回合,执行[BT d]B阶段:
在第二寄存器组2中载入B,即[1,0,0,0,0,1,-1,1,-1,1,1,0,0,0,0,-1],该第二寄存器组2在提供数据时,以与其之前类似的循环滑动方式进行四轮循环滑动。此时,第三选通器S3的选通为通过,第一选通器S1的选通为不通过。中间结果寄存器组3在提供数据时,以与第一寄存器组1类似的循环滑动方式进行四轮循环滑动。第二选通器S2采用与其之前相类似的方式进行控制,区别在于每当乘法器4和加法器5执行完一组(即四项)计算后,将加法器5的输出结果写入第一寄存器组1。
在完成[BT d]B的计算后,在第一寄存器组中存储以下数据:
[1,-7,1,1,3,18,8,-11,1,-14,-6,9,-4,18,5,-5]。
<转换单元结构的控制方法>
针对图2中的转换单元结构,根据本发明的一个实施例,提供了一种对包含该转换单元结构的卷积运算结构的控制方法,包括:
步骤1.根据执行卷积计算的网络尺寸,确定所述n值;这里的n值与需要执行的卷积计算的尺寸相匹配,例如,假设单次卷积的输入特征图d的尺寸为5×5,则确定n=5。
步骤2.利用计数器(未在图2中示出)实现对各个选通器的控制信号的设置,初始地将计数器的计数设置为0,该计数器用于在寄存器组每次输出一项数据时进行计数。当计数器的计数为小于n×(n×n-1)时,将用于第一选通器S1的控制信号设置为通过,将用于第三选通器S3的控制信号设置为不通过,以用于执行XTy阶段的运算。
当所述计数器的计数为0至x×n-2时,将用于第二选通器S2的控制信号设置为将该第二选通器S2的输入提供给所述加法器5,当所述计数器的计数为x×n-1时,将用于第二选通器S2的控制信号设置为将该第二选通器S2的输入提供给所述中间结果寄存器组3;在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零。其中,x为正整数,所述计数器与第一寄存器组1、第二寄存器组2、以及中间结果寄存器组3、加法器5、乘法器4同步且频率相同。
步骤3.当所述计数器的计数为0至n×(n×n-1)时,将用于所述第三选通器S3的控制信号设置为通过,将用于第一选通器S1的控制信号设置为不通过,以用于执行[XTy]X阶段的运算。当所述计数器的计数为0至x×n-2时,将用于所述第二选通器S2的控制信号设置为将该第二选通器S2的输入提供给所述加法器5,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器S2的输入提供给所述第一寄存器组1;在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零。
通过上述方式可以提供针对第一至第三选通器(S1、S2、S3)的控制信号。对于其中针对第二选通器S2的控制信号,可以采用两比特进行表示,例如以00表示不输出,以01表示将第二选通器S2的输入提供给第三选通器S3(以继续执行累加),以10表示将第二选通器S2的输入提供给中间结果寄存器3,以11表示将第二选通器S2的输入提供给第一寄存器1。
下面通过一个实例介绍基于上述控制方法来控制转换单元结构执行运算的过程。
假设,S1和S3为1bit并且以高电位表示选通的结果为通过,S2为2bit并且以00表示不输出,以01表示将第二选通器S2的输入提供给第三选通器S3,以10表示将第二选通器S2的输入提供给中间结果寄存器3,以11表示将第二选通器S2的输入提供给第一寄存器1。并且,所要执行的卷积运算的卷积核尺寸为3×3,转换矩阵尺寸为4×4,当前所要执行的行列相乘的输入分别为[1 2 3 4]和[4 5 6 7]T。
在执行第一回合XTy阶段的运算时,S1保持高电位,S3保持低电位,通过计数器的计数,在乘法器4执行1×4和2×5和3×6这三次乘法运算时,S2为01以将来自加法器5的数据传回加法器5中进行累加操作,在乘法器4执行第四次4×7乘法运算时,S2为10以将来自加法器5的数据写入中间结果寄存器组3。在完成上述运算后,计数器的计数清零。
类似地,在执行第二回合[XTy]X阶段的运算时,S1保持低电位,S3保持高电位,通过计数器的计数,在乘法器4执行前三次乘法运算时,S2为01以将来自加法器5的数据传回加法器5中进行累加操作,在乘法器4执行第四次乘法运算时,S2为11以将来自加法器5的数据写入第一寄存器组1。在完成上述运算后,计数器的计数清零。
<用于转换单元结构的滑动结构>
为了方便实现矩阵的行列相乘,在一个实施例中,针对上述三个数据寄存器组提供了滑动结构,使得每个数据寄存器组可以以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n项或连续n×n项依照各项的顺序提供至少1次。
图3示出了根据本发明的一个实施例的滑动结构(寄存器组),该滑动结构可针对不同尺寸矩阵进行数据滑动控制,其中图3a为滑动结构中的一个寄存单元,图3b为包含z个如图3a所示出的寄存单元的滑动结构。
参考图3a,在一个寄存单元中包含多个暂存器,可用于存储一行或一列数据,寄存单元具有多个接口,包括:
地址接口,用于选择内部特定暂存单元的数据写入;
输入数据接口,用于接收写入特定暂存单元的数据;
输入使能接口,用于控制是否写入数据;
滑动使能接口,用于控制该寄存单元是否滑动。这里滑动一个单位指的是,该寄存单元内部的各个暂存器的数据同时向一个方向以移动一个数据单位的方式传递数据,在滑动后输出在该方向上的第一个数据。
这里寄存单元内部的暂存单元可以采用可同时进行写入的单元,以便快速传递数据。
参考图3b,在一个滑动结构中设置了z个寄存单元,各个寄存单元通过接口接受控制信号的控制。其中,地址信号用于控制每个寄存单元的写入,滑动模式信号用于控制每个寄存单元的滑动,写回片选信号用于控制将输出的数据写回到寄存单元的暂存器中。
基于上述三类信号,滑动结构可以实现小尺寸滑动以及大尺寸滑动。以在该滑动结构中存储尺寸为n×n的矩阵为例(n<=z),
大尺寸滑动范围为0至n×n-1,即n个寄存单元被滑动模式信号选定为可滑动,地址等于n-1,写回片选信号指定第n个寄存单元,作为第一个寄存单元输出数据的输入单元。第1个寄存单元的数据输出,同时将该数据复制,将1至n个寄存单元的数据均单向滑动一个数据单元,将复制的第1个寄存单元的输出数据填写在第n个单元地址为n-1的暂存单元(即矩阵数据排列末尾)中。
小滑动范围为0至n-1,其由一个寄存单元实现。在进行小尺寸滑动时,第一个寄存单元的第0个数据输出,同时将该数据复制,将第1至n-1的数据向0方向移动一个数据单位,将复制的第0个数据填写在第n-1个单元中。
上述滑动结构可用于实现图2中的第一寄存器组、第二寄存器组、中间结果寄存器组中的任意一个或它们的组合。可以理解,在本发明中还可以采用其他结构来实现图2中的第一寄存器组1、第二寄存器组2、中间结果寄存器组3,只要所述结构可以使得上述寄存器组能够在输出数据时以n轮的方式提供数据,并且在每一轮中将其寄存器所存储的数据中的连续多项依照各项的顺序提供相应的次数。
<转换单元结构2>
在本发明的一个实施例中,可以由多套第一寄存器组、乘法器、加法器、中间结果寄存器组、第一选通器、第二选通器、和第三选通器的结构共享一个第二寄存器组。参考图4,一个所述第二寄存器组的输出分别连接至所述多套结构中每一套的乘法器的输入,转换单元结构的其余部件的连接关系与控制方法与图2基本保持一致。
<点乘累加单元>
为了实现winograd卷积运算中的点乘M=U⊙V以及对M中各个元素进行累加的操作,根据本发明的一个实施例,提供了一种点乘累加单元。
参考图5a,该点乘累加单元包括多个乘法器和多个加法器,乘法器和加法器采用加法树形式连接,并且该点乘累加单元还设置了如图所示出的第四选通器,以控制是否对加法树的结果进行进一步累加。例如,当S4为高电位,则控制输出加法树的累加结果,当S4为低电位时,将加法树的结果传回累加器执行累加。
在下文中,为了绘制方便我们将点乘累加单元的结构简化为如图5b所示,其中S4处的箭头表示针对S4的控制信号。
<卷积运算结构1>
基于前文中所提供的转换单元结构以及点乘累加单元,根据本发明的一个实施例,提供了一种卷积运算结构。参考图6,该卷积运算结构包括:点乘累加单元、设置在点乘累加单元前端的前转换单元结构、设置点乘累加单元后端的后转换单元结构、连接至该点乘累加单元的输入的权重缓存。
其中,权重缓存,用于存储以离线方式计算获得的U=[GgGT]。这样做的原因在于,通常在执行神经网络的计算(包括卷积运算)前,已经确定了神经网络的权值g和转换矩阵(例如G),离线地计算该U值并预先存储在权重缓存中可以节省卷积运算的步骤和耗时。
前转换单元结构和所述后转换单元结构可以采用前文中所述的转换单元结构。点乘累加单元也可以采用前文中的点乘累加单元结构。
图6所提供的卷积运算结构可用于执行完整的winograd卷积运算,通过前转换单元结构执行V=[BT dB]的运算,由权重缓存提供以离线方式计算获得的U=[GgGT],通过点乘累加单元实施M=U⊙V的计算并对M的元素进行累加(例如在深度上对M的值求和),通过后转换单元结构执行F=[AT M A]的运算。
<卷积运算结构2>
在本发明中,为了使得能够利用一套硬件实现winograd卷积运算以及普通的卷积运算(即对硬件进行复用,使其兼具实现这两类卷积运算的功能),还提供了一种对上述卷积运算结构的修改方案。参考图7,根据本发明的一个实施例提供了一种卷积运算结构,如图7,相较于图6所提供的结构其增加了数据缓存单元以及一系列控制选通单元。这些选通控制单元用于选择在采用winograd卷积运算模式时所使用的硬件部分以及在采用普通卷积运算模式时所实验的硬件部分。其中,在采用winograd卷积运算模式时所使用的硬件部分可以参考图6。
为了清楚地反映出在采用普通卷积运算模式时被选通的硬件部分,本发明绘制了该模式下被选通的部分(省略了未被选通的硬件部分),具体可参考图8。如图8所示,在普通卷积运算模式下,数据缓存、点乘累加器、以及权重缓存被选通,以实现普通的卷积运算。需要注意的是,在此模式下,权重缓存不再存储以离线方式计算获得的U=[GgGT],而是代替地存储权值g。在该模式下执行卷积运算的计算流程可参考现有的计算过程,这里不再详述。
基于图7所提供的卷积运算结构可以通过控制实现对硬件单元的复用(以一套硬件实现两类卷积运算的功能),从而减少神经网络处理器所需的硬件电路面积。
需要说明的是,上述实施例中介绍的各个步骤并非都是必须的,本领域技术人员可以根据实际需要进行适当的取舍、替换、修改等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管上文参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (10)
1.一种卷积运算装置,包括转换单元结构,所述转换单元结构包括:第一寄存器组、第二寄存器组、乘法器、加法器、中间结果寄存器组,
其中,所述第一寄存器组和所述第二寄存器组被控制为,在第一回合计算过程中,对由它们所分别存储的第一矩阵和第二矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第一结果矩阵存储至所述中间结果寄存器组;并且
所述第二寄存器组和所述中间结果寄存器组被控制为,在第二回合计算过程中,对由它们所分别存储的第三矩阵以及所述第一结果矩阵通过所述乘法器和加法器执行矩阵乘法,并将通过所述矩阵乘法得到的第二结果矩阵存储至所述第一寄存器组;
其中,所述转换单元结构还包括:第一选通器、第二选通器、和第三选通器,
其中,所述第一寄存器组的输出通过所述第一选通器连接至所述乘法器的第一输入,所述第二寄存器组的输出连接至所述乘法器的第二输入,所述乘法器的输出连接至所述加法器的第一输入,所述加法器的输出连接至所述第二选通器的输入,所述第二选通器的输出分别连接至所述加法器的第二输入、所述中间结果寄存器、以及所述第一寄存器组,所述中间结果寄存器组的输出通过所述第三选通器连接至所述乘法器的第一输入;
所述第一选通器、第二选通器和第三选通器分别用于对与其相连的第一寄存器组、第二寄存器组和中间结果寄存器组中的数据输出进行选通,并且所述第一选通器与所述第三选通器的选通操作互斥;
其中,所述第二选通器为多路输出选择器,用于在所述转换单元结构针对一组数据执行计算时将来自所述加法器的数值提供给所述加法器,在第一回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给所述中间结果寄存器,在第二回合计算过程中且所述转换单元结构完成了针对一组数据的计算时将来自所述加法器的数值提供给第一中间结果寄存器;
其中,所述一组数据与当前执行卷积运算的矩阵中的一行或一列对应。
2.根据权利要求1所述的卷积运算装置,其中:
所述第一寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;
所述第二寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n项依照各项的顺序循环提供n次,并在执行下一轮前将寄存器所存储的数据移动n项;
所述中间结果寄存器组,用于在输出数据时以n轮的方式提供数据,在每一轮中将其寄存器所存储的数据中的连续n×n项依照各项的顺序提供1次;
所述乘法器,用于对来自所述第二寄存器组的1项数据以及由所述第一选通器所提供的1项数据或者由所述第三选通器所提供的1项数据执行乘法运算。
3.根据权利要求2所述的卷积运算装置,其中所述第一寄存器组和/或所述第二寄存器组和/或所述中间结果寄存器组,包括:
多个暂存器,用于暂时存储该寄存器组中寄存器所存储的数据中的连续m项数据;
针对所述多个暂存器的输入使能接口,用于接收控制所述多个暂存器载入该寄存器组中寄存器所存储的数据中的连续m项数据的输入使能控制信号;
针对所述多个暂存器的滑动使能接口,用于接收控制所述多个暂存器依照各项的顺序循环提供所述m项数据的滑动使能控制信号;
其中,对于所述第二寄存器组所述m等于n,对于所述第一寄 存器组和所述中间结果寄存器组所述m等于n×n。
4.根据权利要求1或2所述的卷积运算装置,其中所述转换单元结构包括:一个所述第二寄存器组,以及多套第一寄存器组、乘法器、加法器、中间结果寄存器组、第一选通器、第二选通器、和第三选通器的结构,所述一个所述第二寄存器组的输出分别连接至多套结构中每一套的乘法器的输入。
5.根据权利要求1或2所述的卷积运算装置,其中包括:前转换单元结构、点乘累加单元、权重缓存和后转换单元结构,其中,
所述权重缓存,用于存储以离线方式计算获得的U=[GgGT]或者存储用于执行卷积计算的权值g,其中G为winograd卷积运算的转换矩阵;
所述前转换单元结构和所述后转换单元结构采用如权利要求2或3所述的转换单元结构;
所述点乘累加单元,用于对其输入执行点乘操作并对点乘的结果进行累加,所述点乘累加单元的输入连接至所述前转换单元结构的第一寄存器组的输出以及所述权重缓存,所述点乘累加单元的输出连接至所述后转换单元结构的第一寄存器组。
6.根据权利要求5所述的卷积运算装置,其中所述点乘累加单元包括:2k+1个乘法器、(1+2+22…+2k)个第一加法器、1个第二加法器以及1个第四选通器;
其中,所述乘法器和所述第一加法器以加法树的方式连接,所述加法树的输出连接至所述第二加法器的输入,所述第二加法器的输出连接至所述第四选通器的输入,并且所述第四选通器的输出连接至所述第二加法器的输入,k为正整数;
所述点乘累加单元的至少一个乘法器的其中一个输入连接至所述前转换单元结构的第一寄存器组的输出,另一个输入连接至所述权重缓存。
7.根据权利要求6所述的卷积运算装置,其中还包括:
数据缓存,用于存储用于执行卷积计算的特征图d;
针对所述数据缓存的选通器,其连接至所述数据缓存的输出以及所述点乘累加单元的输入;
针对所述前转换单元结构的选通器,其连接至所述前转换单元结构的输出以及所述点乘累加单元的输入;以及
针对所述后转换单元结构的选通器,其连接至所述后转换单元结构的输出以及所述点乘累加单元的输入;
其中,所述针对所述前转换单元结构的选通器与针对所述后转换单元结构的选通器的选通相同,并且所述针对所述前转换单元结构的选通器的选通与针对所述数据缓存的选通器的选通相反。
8.一种用于权利要求1-7中任意一项卷积运算装置的方法,包括:
1)在所述第一寄存器组中载入第一数据,所述第一选通器的选通为通过,所述第三选通器的选通为不通过;并且
在所述第二寄存器组中载入第二数据的转置;
2)所述乘法器逐项地对来自所述第一寄存器组的1项数据和所述第二寄存器组的1项数据执行乘法运算;并且,
所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述中间结果寄存器组;
重复本步骤的上述操作,直到所述第一寄存器组和所述第二寄存器组以所述方式提供了n轮数据;
3)所述第三选通器的选通为通过,所述第一选通器的选通为不通过;
并且,在所述第二寄存器组中载入第二数据;
4)所述乘法器逐项地对来自所述第二寄存器组的1项数据和所述第三选通器所提供的1项数据执行乘法运算;并且,
所述第二选通器的选通为将其输入提供给所述加法器,直到所述第二寄存器组将其寄存器所存储的数据中的连续n项的第n项提供给所述乘法器时,所述第二选通器的选通为将其输入提供给所述第一寄存器组;
重复本步骤的上述操作,直到所述第二寄存器组和所述中间结果寄存器组以所述方式提供了n轮数据;
其中,所述第一数据为用于执行卷积计算的特征图d,并且所述第二数据为winograd卷积运算的转换矩阵B,
或者,所述第一数据为winograd卷积运算的中间结果M=U⊙V,其中,U=[GgGT],V=[BTdB],G为winograd卷积运算的转换矩阵,g为用于执行卷积计算的权值,并且所述第二数据为winograd卷积运算的转换矩阵A,
或者,所述第一数据为g,并且所述第二数据为GT。
9.一种用于权利要求1-7中任意一项卷积运算装置的控制方法,包括:
1)根据执行卷积计算的网络卷积核尺寸,确定n值;
2)当计数器的计数为0至n×(n×n-1)时,将用于所述第一选通器的控制信号设置为通过,将用于所述第三选通器的控制信号设置为不通过;
当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述中间结果寄存器组;
在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零;
其中,x为正整数,所述计数器与所述第一寄存器组、所述第二寄存器组、以及所述中间结果寄存器组同步且频率相同;
3)当所述计数器的计数为0至n×(n×n-1)时,将用于所述第三选通器的控制信号设置为通过,将用于所述第一选通器的控制信号设置为不通过;
当所述计数器的计数为0至x×n-2时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述加法器,当所述计数器的计数为x×n-1时,将用于所述第二选通器的控制信号设置为将该第二选通器的输入提供给所述第一寄存器组;
在所述计数器的计数达到n×(n×n-1)+1时,将其计数归零。
10.一种计算机可读存储介质,其中存储有计算机程序,所述计算机程序在被执行时用于实现如权利要求8或9所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910762642.8A CN110580519B (zh) | 2019-08-19 | 2019-08-19 | 一种卷积运算装置及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910762642.8A CN110580519B (zh) | 2019-08-19 | 2019-08-19 | 一种卷积运算装置及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110580519A CN110580519A (zh) | 2019-12-17 |
CN110580519B true CN110580519B (zh) | 2022-03-22 |
Family
ID=68811524
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910762642.8A Active CN110580519B (zh) | 2019-08-19 | 2019-08-19 | 一种卷积运算装置及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110580519B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11520853B2 (en) * | 2020-02-28 | 2022-12-06 | Meta Platforms, Inc. | Mapping convolution to a partition channel convolution engine |
CN111652359B (zh) * | 2020-05-25 | 2023-05-02 | 北京大学深圳研究生院 | 用于矩阵运算的乘法器阵列和用于卷积运算的乘法器阵列 |
CN111814957B (zh) * | 2020-06-28 | 2024-04-02 | 深圳云天励飞技术股份有限公司 | 神经网络运算方法及相关设备 |
CN112862091B (zh) * | 2021-01-26 | 2022-09-27 | 合肥工业大学 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5195050A (en) * | 1990-08-20 | 1993-03-16 | Eastman Kodak Company | Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN109325591A (zh) * | 2018-09-26 | 2019-02-12 | 中国科学院计算技术研究所 | 面向Winograd卷积的神经网络处理器 |
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817587B2 (en) * | 2017-02-28 | 2020-10-27 | Texas Instruments Incorporated | Reconfigurable matrix multiplier system and method |
-
2019
- 2019-08-19 CN CN201910762642.8A patent/CN110580519B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5195050A (en) * | 1990-08-20 | 1993-03-16 | Eastman Kodak Company | Single chip, mode switchable, matrix multiplier and convolver suitable for color image processing |
CN108229654A (zh) * | 2016-12-14 | 2018-06-29 | 上海寒武纪信息科技有限公司 | 神经网络卷积运算装置及方法 |
CN109388777A (zh) * | 2017-08-07 | 2019-02-26 | 英特尔公司 | 一种用于经优化的Winograd卷积加速器的系统和方法 |
CN109325591A (zh) * | 2018-09-26 | 2019-02-12 | 中国科学院计算技术研究所 | 面向Winograd卷积的神经网络处理器 |
Non-Patent Citations (2)
Title |
---|
《Matrix algorithms》;Mike Paterson;《CS341 Topics in Algorithms》;20091231;全文 * |
《On the Coppersmith{Winograd method》;Andris Ambainis,et al;《http://www.cs.toronto.edu/~yuvalf/Limitations.pdf》;20140529;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110580519A (zh) | 2019-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110580519B (zh) | 一种卷积运算装置及其方法 | |
CN111667051B (zh) | 适用边缘设备的神经网络加速器及神经网络加速计算方法 | |
US5506998A (en) | Parallel data processing system using a plurality of processing elements to process data and a plurality of trays connected to some of the processing elements to store and transfer data | |
US20160196488A1 (en) | Neural network computing device, system and method | |
US20190205738A1 (en) | Systems and methods for hardware-based pooling | |
CN112840356A (zh) | 运算加速器、处理方法及相关设备 | |
US11983616B2 (en) | Methods and apparatus for constructing digital circuits for performing matrix operations | |
CN108304922A (zh) | 用于神经网络计算的计算设备和计算方法 | |
CN107766935B (zh) | 多层人造神经网络 | |
CN110766127B (zh) | 神经网络计算专用电路及其相关计算平台与实现方法 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
CN113869507B (zh) | 一种基于脉动阵列的神经网络加速器卷积计算装置与方法 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
CN109948787B (zh) | 用于神经网络卷积层的运算装置、芯片及方法 | |
JPH06502265A (ja) | 信号処理におけるマトリクス演算の計算回路装置 | |
CN112639836A (zh) | 数据处理装置、电子设备和数据处理方法 | |
CN114519425A (zh) | 一种规模可扩展的卷积神经网络加速系统 | |
CN108764182B (zh) | 一种优化的用于人工智能的加速方法和装置 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN112712457A (zh) | 数据处理方法以及人工智能处理器 | |
Wu et al. | A high-speed and low-power FPGA implementation of spiking convolutional neural network using logarithmic quantization | |
CN112836793B (zh) | 浮点可分离卷积计算加速装置、系统以及图像处理方法 | |
CN113627587A (zh) | 一种多通道式卷积神经网络加速方法及装置 | |
CN110765413B (zh) | 矩阵求和结构及神经网络计算平台 | |
US20220164127A1 (en) | Memory for an Artificial Neural Network Accelerator |
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: 20230117 Address after: 518063 14th Floor, West Tower, Baidu International Building, No. 8, Haitian 1st Road, Binhai Community, Yuehai Street, Nanshan District, Shenzhen, Guangdong Patentee after: Zhongke Times (Shenzhen) Computer System Co.,Ltd. Address before: 100190 No. 6 South Road, Zhongguancun Academy of Sciences, Beijing, Haidian District Patentee before: Institute of Computing Technology, Chinese Academy of Sciences |
|
TR01 | Transfer of patent right |