CN112862091B - 一种基于快速卷积的资源复用型神经网络硬件加速电路 - Google Patents
一种基于快速卷积的资源复用型神经网络硬件加速电路 Download PDFInfo
- Publication number
- CN112862091B CN112862091B CN202110102861.0A CN202110102861A CN112862091B CN 112862091 B CN112862091 B CN 112862091B CN 202110102861 A CN202110102861 A CN 202110102861A CN 112862091 B CN112862091 B CN 112862091B
- Authority
- CN
- China
- Prior art keywords
- input
- adder
- convolution
- module
- weight
- 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/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
-
- 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
本发明公开了一种基于快速卷积的资源复用型神经网络硬件加速电路,是由输入行缓冲器、输入数据转换模块、权重缓冲区、权重数据转换模块、坐标拼接模块、计算单元阵列、输入循环计数器、输出数据转换模块、中间缓冲存储、输出特征图暂存模块、激活池化模块所组成,其中,计算单元阵列由M×N个计算单元组成,任意单个通用计算单元是由一个算数逻辑单元、权重传递收发模块和权重切换控制模块组成。本发明通过不同配置能实现Winograd卷积和传统卷积计算,合并两种不同的卷积电路,从而减少了硬件电路资源,提高了计算单元的利用率。
Description
技术领域
本发明属于集成电路卷积神经网络的计算架构设计领域,尤其涉及一种基于快速卷积的资源复用型神经网络硬件加速电路的设计。
背景技术
随着人工智能在各种领域越来越广泛的应用,使得卷积神经网络需要处理的数据量和卷积的层数也在不停的上升,这也提升了卷积神经网络进行硬件化的难度。
针对越来越大的计算数据量,研究人员们提出了各种算法来优化卷积运算所需要硬件的资源,比如在卷积层采用Winograd算法。Winograd算法适用于卷积核尺寸为3×3、步长为1的情况,这与目前深度学习网络模型的发展趋势一致。当前基于Winograd算法的卷积神经网络加速器,大部分都设计了专用的Winograd卷积处理单元。但这些研究,要么就只对Winograd卷积有效,一旦卷积核较大就无法使用;要么就是有两种计算模块分别应对Winograd卷积和直接卷积,增加了硬件资源的使用,并且在使用其中一种卷积方式的时候另一部分电路就会闲置,这导致资源利用率大大降低。因此提出兼容两种卷积方式的计算架构就显得十分重要。
目前存在的输入数据转换模块中,两级线性转换需要相互等待导致计算周期拉长,FPGA资源利用率较低;并且,按列输入和按行输出的不匹配会导致输出转换前的额外时间。因此需要提出一种能对输入数据转换进行加速的计算模块。
发明内容
本发明为了解决上述现有技术存在的不足之处,提出了一种基于快速卷积的资源复用型神经网络硬件加速电路,以期能够使用Winograd算法缩减传统卷积的计算复杂度,提高卷积层计算的吞吐量,同时提升计算单元的通用性,使之适用于两种卷积方式,相对于包含两种特定卷积计算单元的设计能减少硬件资源的使用,并提高了数据计算单元的利用率。
本发明为达到上述目的所采用的技术方案是:
本发明一种基于快速卷积的资源复用型神经网络硬件加速电路的特点包括:输入行缓冲器、输入数据转换模块、权重缓冲区、权重数据转换模块、坐标拼接模块、计算单元阵列、输入循环计数器、输出数据转换模块、中间缓冲存储模块、输出特征图暂存模块、激活池化模块;
所述权重缓冲区在当前周期下接收片外存储器所发送的权重数据并传输给所述权重数据转换模块;
所述权重数据转换模块根据不同配置对所述权重数据进行处理,得到处理后的权重数据并发送给所述坐标拼接模块;
所述坐标拼接模块对处理后的权重数据添加坐标信息后传递至计算单元阵列;
所述输入行缓冲器接收片外存储器所发送的行数为m的输入特征图,并根据不同配置将所述输入特征图发送到所述输入数据转换模块或所述计算单元阵列;其中,m在传统卷积配置下等于卷积核的大小,在Winograd卷积配置下等于4;
所述输入数据转换模块对所述输入特征图进行输入线性转换,得到转换后的输入特征图并发送给所述计算单元阵列;
所述计算单元阵列根据不同配置对当前周期下添加坐标信息后的权重数据与对应的输入特征图进行卷积运算,得到卷积运算结果;
所述输入循环计数器的计数值初始化为0,并定义输入通道数为C,输入并行度为P,当所述计算单元阵列完成卷积运算时,所述输入循环计数器判断当前周期下的计数值是否等于C-P,若是,则将所述输入循环计数器的计数值A置为0,否则,将输入循环计数器的计数值累加P;
所述中间缓冲存储模块判断所述输入循环计数器的计数值A是否在(P,C-P)的范围内,若是,则所述中间缓冲存储模块获取所述卷积运算结果,并将所述卷积运算结果传递给所述计算单元阵列进行级联,得到级联后的卷积运算结果,否则,所述中间缓冲存储模块不做处理;
所述输出数据转换模块判断输入循环计数器的计数值A是否等于C-P,若是,则在不同配置下将卷积运算结果存入所述输出转换模块或者所述特征图暂存模块,否则,在任何配置下均将卷积运算结果存入所述特征图暂存模块;
所述输出转换模块将卷积运算结果进行输出线性转换,得到输出线性转换后的卷积运算结果并存入输出特征图暂存模块中;
所述输出特征图暂存模块将卷积运算结果存入所述激活池化模块进行相应处理。
本发明所述的一种基于快速卷积的资源复用型神经网络硬件加速电路的特点也在于,所述输入数据转换模块包括:第一加法器组、第二加法器组以及三级寄存器组;
所述第一加法器组接收当前周期下来自所述输入行缓冲器的输入特征图的前三列并进行第一级转换后得到三列中间数据L0、L1、L2后送至所述三级寄存器组;
所述三级寄存器组将当前周期下的三列中间数据L0、L1、L2传输到所述第二加法器组中进行第二级转换,得到前两列的输出;
所述第一加法器组在下一周期对所述输入特征图的第四列进行一级转换,并得到中间数据L3;所述三级寄存器将所述中间数据L0丢弃后将中间数据L3寄存到所述三级寄存器组中的第三列寄存器;从而使得所述三级寄存器将中间数据L1、L2、L3全部输入到所述第二加法器组中进行第二级线性转换,并得到后两列的输出。
所述计算单元阵列是由M×N个计算单元组成,任意第i个计算单元是由一个算数逻辑单元、权重传递收发模块和权重切换控制模块组成;且所述权重传递收发模块中存储有每个计算单元的节点坐标;
第i个计算单元的权重传递收发模块接收到当前周期下添加坐标信息后的权重数据,并将当前周期下的权重数据的坐标信息与第i个计算单元的节点坐标进行匹配,若匹配成功,则将当前周期下的权重数据存入权重切换控制模块;否则将所述添加坐标信息后的权重数据传递给第i+1个计算单元;
所述权重切换控制模块将当前周期下的权重数据传递给所述算数逻辑单元;
每个算数逻辑单元均是由乘法器组、加法器树、自循环加法器、自循环计数器、级联加法器以及二选一选择器组成;
在传统卷积配置下,所述二选一选择器的选择控制端的值设为1;
在Winograd配置下,所述二选一选择器的选择控制端的值设为0;
所述乘法器组将当前周期下的权重数据与对应的输入特征图经过乘法运算后送至加法器树进行加法运算,并将加法运算结果送至所述自循环加法器中;
自循环计数器的计数值B初始化为0;
所述计算单元在当前周期开始计算,并当前周期后的第3个周期时,自循环计数器开始自增,当自循环计数器的计数值B等于预设的自循环次数减一时,自循环计数器的计数值B置为0;
当所述自循环计数器的计数值B为0时,所述自循环加法器将“0”和所述加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的加法运算结果大于0时,所述自循环加法器将上一周期下的自循环加法器的加法结果和所述加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的计数值B等于自循环加法器中预设的自循环次数减一时,所述自循环加法器将其加法结果输出给级联加法器;
级联加法器判断所在的计算单元是否位于计算阵列的第一行,若是,则级联加法器的输出端的结果为一个卷积窗口运算的结果;否则,级联加法器的输出端的结果传递给上一行计算单元的级联加法器的输入端;
级联加法器判断所在的计算单元是否位于计算单元阵列的最后一行,若是,则所述级联加法器的输入端的输入值来源于中间缓冲存储模块,否则,所述级联加法器的输入端的输入值来源于下一行计算单元的级联加法器的输出端;
所述级联加法器将所述自循环加法器的加法结果与级联加法器的输入端的输入值相加,得到相加结果从级联加法器的输出端输出。
所述不同配置的确定是通过判断存到计算单元阵列中的卷积核的尺寸是否等于3×3,步长是否为1,若均是,则表示执行Winograd卷积配置;否则,表示执行传统卷积配置。
所述Winograd卷积配置是:
当前周期下,所述权重转换模块将接收到的权重数据进行权重线性转换,并将经过权重线性转换后的权重数据通过直接补零方式拼接为128位权重数据输出至坐标拼接模块;
所述输入行缓冲器将输入特征图数据送到输入数据转换模块;
将所述自循环加法器中预设的自循环次数设置为1;
在所述输入循环计数器的计数值A等于C-P时,所述输出数据转换模块将所述卷积运算结果存入所述输出数据转换模块。
所述传统卷积配置是:
所述权重转换模块获取当前周期及当前周期之后的Q-1个周期的权重数据,得到Q个周期的权重数据,并将所述Q个周期的权重数据进行拼接和补零处理,得到256位的权重数据,其中Q个周期为大于等于传统卷积配置下的卷积核尺寸除以四的最小整数;
所述输入行缓冲器将输入特征图数据发送给计算单元阵列;
所述自循环加法器中预设的自循环次数设置为Q;
在所述输入循环计数器的计数值A等于C-P时,所述输出数据转换模块将所述卷积运算结果存入所述输出特征图暂存模块。
与现有技术相比,本发明的有益技术效果体现在:
1、本发明采用Winograd算法加速卷积核尺寸为3×3、步长为1的情况,相比较于传统卷积,用加法代替了乘法,减少了卷积层中的乘法次数,降低了计算复杂度,提高了运算速度。
2、本发明采用Winograd算法将3×3步长1的卷积窗口转换成4×4步长2的Winograd扫描窗口,减少了单张图片内扫描窗口的读取次数,降低了计算周期,提高了计算速率。
3、本发明能够通过不同配置可以实现Winograd卷积和传统卷积计算,合并两种不同的卷积电路,对应于不同卷积核下情况仅需要一个通用计算模块,就能适用于多种情况下的卷积计算,而不需要分别用不同的计算模块。这种计算架构相比较与包含两种特定卷积计算单元的设计,减少了硬件资源的使用,提高了数据计算单元的利用率。
4、本发明采用了一种基于流水线的输入数据转换模块,这种基于流水线的输入数据转换模块相较于传统的输入数据转换模块能够降低两级线性转换的计算周期,提高了硬件资源利用率。
附图说明
图1为本发明整体架构硬件电路框图;
图2为本发明基于流水线的输入数据转换模块框图;
图3为本发明计算单元框图。
具体实施方式
本实施例中,如图1所示,一种基于快速卷积的资源复用型神经网络硬件加速电路,包括:输入行缓冲器、输入数据转换模块、权重缓冲区、权重数据转换模块、坐标拼接模块、计算单元阵列、输入循环计数器、输出数据转换模块、中间缓冲存储模块、输出特征图暂存模块、激活池化模块;
权重缓冲区在当前周期下接收片外存储器所发送的权重数据并传输给权重数据转换模块;
权重数据转换模块根据不同配置对权重数据进行处理,得到处理后的权重数据并发送给坐标拼接模块;
坐标拼接模块对处理后的权重数据添加坐标信息后传递至计算单元阵列,添加的坐标信息能够使得处理后的权重数据能够到达计算单元阵列中所对应的计算单元;
输入行缓冲器接收片外存储器所发送的输入特征图,输入特征图行数大小为m,其中m在传统卷积配置下等于卷积核大小,在Winograd卷积配置下m等于4,并根据不同配置将输入特征图发送到输入数据转换模块或计算单元阵列;
输入数据转换模块对输入特征图进行输入线性转换,得到转换后的输入特征图并发送给计算单元阵列;
如图2所示,其中输入数据转换模块包括:第一加法器组、第二加法器组以及三级寄存器组;
第一加法器组接收当前周期下来自输入行缓冲器的输入特征图的前三列并进行第一级转换后得到三列中间数据L0、L1、L2后送至三级寄存器组;
三级寄存器组将当前周期下的三列中间数据L0、L1、L2传输到第二加法器组中进行第二级转换,得到前两列的输出;
第一加法器组在下一周期对输入特征图的第四列进行一级转换,并得到中间数据L3;三级寄存器将中间数据L0丢弃后将中间数据L3寄存到三级寄存器组中的第三列寄存器;从而使得三级寄存器将中间数据L1、L2、L3全部输入到第二加法器组中进行第二级线性转换,并得到后两列的输出。
计算单元阵列根据不同配置对当前周期下添加坐标信息后的权重数据与对应的输入特征图进行卷积运算,得到卷积运算结果;
本实施例中,计算单元阵列是由10×2个计算单元组成,任意第i个计算单元是由一个算数逻辑单元、权重传递收发模块和权重切换控制模块组成,如图3所示;且权重传递收发模块中存储有每个计算单元的节点坐标;
如第8个计算单元的权重传递收发模块接收到当前周期下添加坐标信息后的权重数据,并将当前周期下的权重数据的坐标信息与第8个计算单元的节点坐标进行匹配,若匹配成功,则将当前周期下的权重数据存入权重切换控制模块;否则将添加坐标信息后的权重数据传递给第9个计算单元;
权重切换控制模块将当前周期下的权重数据传递给算数逻辑单元;
如图3所示,每个算数逻辑单元均是由乘法器组、加法器树、自循环加法器、自循环计数器、级联加法器以及二选一选择器组成;
在传统卷积配置下,二选一选择器的选择控制端的值设为1;
在Winograd配置下,二选一选择器的选择控制端的值设为0;
乘法器组将当前周期下的权重数据与对应的输入特征图经过乘法运算后送至加法器树进行加法运算,并将加法运算结果送至自循环加法器中;
自循环计数器的计数值B初始化为0;
计算单元在当前周期开始计算,并当前周期后的第3个周期时,自循环计数器开始自增,当自循环计数器的计数值B等于预设的自循环次数减一时,自循环计数器的计数值B置为0;
当自循环计数器的计数值B为0时,自循环加法器将“0”和加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的加法运算结果大于0时,自循环加法器将上一周期下的自循环加法器的加法结果和加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的计数值B等于自循环加法器中预设的自循环次数减一时,自循环加法器将其加法结果输出给级联加法器;
级联加法器判断所在的计算单元是否位于计算阵列的第一行,若是,则级联加法器的输出端的结果为一个卷积窗口运算的结果;否则,级联加法器的输出端的结果传递给上一行计算单元的级联加法器的输入端;
级联加法器判断所在的计算单元是否位于计算单元阵列的最后一行,若是,则级联加法器的输入端的输入值来源于中间缓冲存储模块,否则,级联加法器的输入端的输入值来源于下一行计算单元的级联加法器的输出端;
级联加法器将自循环加法器的加法结果与级联加法器的输入端的输入值相加,得到相加结果从级联加法器的输出端输出。
输入循环计数器的计数值初始化为0,并定义输入通道数为6,输入并行度为2,当计算单元阵列完成卷积运算时,输入循环计数器判断当前周期下的计数值是否等于4,若是,则将输入循环计数器的计数值A置为0,否则,将输入循环计数器的计数值累加2;
中间缓冲存储模块判断输入循环计数器的计数值A是否在(2,4)的范围内,若是,则中间缓冲存储模块获取卷积运算结果,并将卷积运算结果传递给计算单元阵列进行级联,得到级联后的卷积运算结果,否则,中间缓冲存储模块不做处理;
输出数据转换模块判断输入循环计数器的计数值A是否等于4,若是,则在不同配置下将卷积运算结果存入输出转换模块或者特征图暂存模块,否则,在任何配置下均将卷积运算结果存入特征图暂存模块;
输出转换模块将卷积运算结果进行输出线性转换,得到输出线性转换后的卷积运算结果并存入输出特征图暂存模块中;
输出特征图暂存模块将卷积运算结果存入激活池化模块进行相应处理。
具体实施中,一种基于快速卷积的资源复用型神经网络硬件加速电路不同配置的确定是通过判断存到计算单元阵列中的卷积核的尺寸是否等于3×3,步长是否为1,若均是,则表示执行Winograd卷积配置;否则,表示执行传统卷积配置。
其中,Winograd卷积配置是:
当前周期下,权重转换模块将接收到的权重数据进行权重线性转换,并将经过权重线性转换后的权重数据通过直接补零方式拼接为128位权重数据输出至坐标拼接模块;
输入行缓冲器将输入特征图数据送到输入数据转换模块;
将自循环加法器中预设的自循环次数设置为1;
在输入循环计数器的计数值A等于4时,输出数据转换模块将卷积运算结果存入输出数据转换模块。
执行Winograd卷积配置是按如下步骤进行:
步骤1、权重缓冲区在当前周期下接收片外存储器所发送的权重数据并传输给权重数据转换模块;
步骤2、当前周期下,权重转换模块将接收到的权重数据进行权重线性转换,并将经过权重线性转换的权重数据通过直接补零方式拼接为128位权重数据输出至坐标拼接模块;
步骤3、坐标拼接模块对处理后的权重数据添加坐标信息后传递至计算单元阵列,添加的坐标信息能够使得处理后的权重数据能够到达计算单元阵列中所对应的计算单元;
步骤4、输入行缓冲器接收片外存储器所发送的输入特征图,输入特征图行数大小为4,并将输入特征图发送到输入数据转换模块;
步骤5、输入数据转换模块对输入特征图进行输入线性转换,得到转换后的输入特征图并发送给计算单元阵列;
步骤6、计算单元阵列当前周期下添加坐标信息后的权重数据与对应的输入特征图进行Winograd卷积运算,得到卷积运算结果;
步骤7、输入循环计数器的计数值初始化为0,并定义输入通道数为6,输入并行度为2,当计算单元阵列完成卷积运算时,输入循环计数器判断当前周期下的计数值是否等于4,若是,则将输入循环计数器的计数值A置为0,否则,将输入循环计数器的计数值累加2;
步骤8、输出数据转换模块判断输入循环计数器的计数值A是否等于4,若是,则将卷积运算结果存入输出转换模块,否则,在任何配置下均将卷积运算结果存入特征图暂存模块;
步骤9、输出转换模块将卷积运算结果进行输出线性转换,得到输出线性转换后的卷积运算结果并存入输出特征图暂存模块中;
步骤10、输出特征图暂存模块将卷积运算结果存入激活池化模块进行相应处理。
传统卷积配置是:
本实施例中,设定传统卷积配置下卷积核大小为16×16,步长为1;
权重转换模块获取当前周期及当前周期之后的3个周期的权重数据,得到4个周期的权重数据,并将4个周期的权重数据进行拼接和补零处理,得到256位的权重数据,其中4个周期为大于等于传统卷积配置下的卷积核尺寸除以四的最小整数;
输入行缓冲器将输入特征图数据发送给计算单元阵列;
自循环加法器中预设的自循环次数设置为4;
在输入循环计数器的计数值A等于4时,输出数据转换模块将卷积运算结果存入输出特征图暂存模块。
执行传统卷积配置是按如下步骤进行:
步骤1、权重缓冲区在当前周期下接收片外存储器所发送的权重数据并传输给权重数据转换模块;
步骤2、权重转换模块获取当前周期及当前周期之后的3个周期的权重数据,得到4个周期的权重数据,并将4个周期的权重数据进行拼接和补零处理,并得到256位的权重数据,其中4个周期为大于等于传统卷积配置下的卷积核尺寸除以四的最小整数;
步骤3、坐标拼接模块对处理后的权重数据添加坐标信息后传递至计算单元阵列
步骤4、输入行缓冲器接收片外存储器所发送的输入特征图,输入特征图行数大小为m,其中m在传统卷积配置下等于卷积核大小,并将输入特征图发送到计算单元阵列;
步骤5、计算单元阵列对当前周期下添加坐标信息后的权重数据与对应的输入特征图进行传统卷积运算,得到卷积运算结果;
步骤6、输入循环计数器的计数值初始化为0,并定义输入通道数为6,输入并行度为2,当计算单元阵列完成卷积运算时,输入循环计数器判断当前周期下的计数值是否等于4,若是,则将输入循环计数器的计数值A置为0,否则,将输入循环计数器的计数值累加2;
步骤7、输出数据转换模块判断输入循环计数器的计数值A是否等于4,若是,则将卷积运算结果存入输出转换模块,否则,将卷积运算结果存入特征图暂存模块;
步骤8、输出转换模块将卷积运算结果进行输出线性转换,得到输出线性转换后的卷积运算结果并存入输出特征图暂存模块中;
步骤9、输出特征图暂存模块将卷积运算结果存入激活池化模块进行相应处理。
Claims (3)
1.一种基于快速卷积的资源复用型神经网络硬件加速电路,其特征包括:输入行缓冲器、输入数据转换模块、权重缓冲区、权重数据转换模块、坐标拼接模块、计算单元阵列、输入循环计数器、输出数据转换模块、中间缓冲存储模块、输出特征图暂存模块、激活池化模块;
所述权重缓冲区在当前周期下接收片外存储器所发送的权重数据并传输给所述权重数据转换模块;
所述权重数据转换模块根据不同配置对所述权重数据进行处理,得到处理后的权重数据并发送给所述坐标拼接模块;
所述坐标拼接模块对处理后的权重数据添加坐标信息后传递至计算单元阵列;
所述输入行缓冲器接收片外存储器所发送的行数为m的输入特征图,并根据不同配置将所述输入特征图发送到所述输入数据转换模块或所述计算单元阵列;其中,m在传统卷积配置下等于卷积核的大小,在Winograd卷积配置下等于4;
所述输入数据转换模块对所述输入特征图进行输入线性转换,得到转换后的输入特征图并发送给所述计算单元阵列;
所述计算单元阵列根据不同配置对当前周期下添加坐标信息后的权重数据与对应的输入特征图进行卷积运算,得到卷积运算结果;
所述不同配置的确定是通过判断存到计算单元阵列中的卷积核的尺寸是否等于3×3,步长是否为1,若均是,则表示执行Winograd卷积配置;否则,表示执行传统卷积配置;
所述Winograd卷积配置是:
当前周期下,所述权重数据转换模块将接收到的权重数据进行权重线性转换,并将经过权重线性转换后的权重数据通过直接补零方式拼接为128位权重数据输出至坐标拼接模块;
所述输入行缓冲器将输入特征图数据送到输入数据转换模块;
将自循环加法器中预设的自循环次数设置为1;
在所述输入循环计数器的计数值A等于C-P时,所述输出数据转换模块将所述卷积运算结果存入所述输出数据转换模块;
所述传统卷积配置是:
所述权重数据转换模块获取当前周期及当前周期之后的Q-1个周期的权重数据,得到Q个周期的权重数据,并将所述Q个周期的权重数据进行拼接和补零处理,得到256位的权重数据,其中Q个周期为大于等于传统卷积配置下的卷积核尺寸除以四的最小整数;
所述输入行缓冲器将输入特征图数据发送给计算单元阵列;
所述自循环加法器中预设的自循环次数设置为Q;
在所述输入循环计数器的计数值A等于C-P时,所述输出数据转换模块将所述卷积运算结果存入所述输出特征图暂存模块;
所述输入循环计数器的计数值初始化为0,并定义输入通道数为C,输入并行度为P,当所述计算单元阵列完成卷积运算时,所述输入循环计数器判断当前周期下的计数值是否等于C-P,若是,则将所述输入循环计数器的计数值A置为0,否则,将输入循环计数器的计数值累加P;
所述中间缓冲存储模块判断所述输入循环计数器的计数值A是否在(P,C-P)的范围内,若是,则所述中间缓冲存储模块获取所述卷积运算结果,并将所述卷积运算结果传递给所述计算单元阵列进行级联,得到级联后的卷积运算结果,否则,所述中间缓冲存储模块不做处理;
所述输出数据转换模块判断输入循环计数器的计数值A是否等于C-P,若是,则在不同配置下将卷积运算结果存入所述输出数据转换模块或者所述特征图暂存模块,否则,在任何配置下均将卷积运算结果存入所述特征图暂存模块;
所述输出转换模块将卷积运算结果进行输出线性转换,得到输出线性转换后的卷积运算结果并存入输出特征图暂存模块中;
所述输出特征图暂存模块将卷积运算结果存入所述激活池化模块进行相应处理。
2.根据权利要求1所述的一种基于快速卷积的资源复用型神经网络硬件加速电路,其特征是,所述输入数据转换模块包括:第一加法器组、第二加法器组以及三级寄存器组;
所述第一加法器组接收当前周期下来自所述输入行缓冲器的输入特征图的前三列并进行第一级转换后得到三列中间数据L0、L1、L2后送至所述三级寄存器组;
所述三级寄存器组将当前周期下的三列中间数据L0、L1、L2传输到所述第二加法器组中进行第二级转换,得到前两列的输出;
所述第一加法器组在下一周期对所述输入特征图的第四列进行一级转换,并得到中间数据L3;所述三级寄存器将所述中间数据L0丢弃后将中间数据L3寄存到所述三级寄存器组中的第三列寄存器;从而使得所述三级寄存器将中间数据L1、L2、L3全部输入到所述第二加法器组中进行第二级线性转换,并得到后两列的输出。
3.根据权利要求1所述的一种基于快速卷积的资源复用型神经网络硬件加速电路,其特征是,所述计算单元阵列是由M×N个计算单元组成,任意第i个计算单元是由一个算数逻辑单元、权重传递收发模块和权重切换控制模块组成;且所述权重传递收发模块中存储有每个计算单元的节点坐标;
第i个计算单元的权重传递收发模块接收到当前周期下添加坐标信息后的权重数据,并将当前周期下的权重数据的坐标信息与第i个计算单元的节点坐标进行匹配,若匹配成功,则将当前周期下的权重数据存入权重切换控制模块;否则将所述添加坐标信息后的权重数据传递给第i+1个计算单元;
所述权重切换控制模块将当前周期下的权重数据传递给所述算数逻辑单元;
每个算数逻辑单元均是由乘法器组、加法器树、自循环加法器、自循环计数器、级联加法器以及二选一选择器组成;
在传统卷积配置下,所述二选一选择器的选择控制端的值设为1;
在Winograd配置下,所述二选一选择器的选择控制端的值设为0;
所述乘法器组将当前周期下的权重数据与对应的输入特征图经过乘法运算后送至加法器树进行加法运算,并将加法运算结果送至所述自循环加法器中;
自循环计数器的计数值B初始化为0;
所述计算单元在当前周期开始计算,并当前周期后的第3个周期时,自循环计数器开始自增,当自循环计数器的计数值B等于预设的自循环次数减一时,自循环计数器的计数值B置为0;
当所述自循环计数器的计数值B为0时,所述自循环加法器将“0”和所述加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的加法运算结果大于0时,所述自循环加法器将上一周期下的自循环加法器的加法结果和所述加法器树的加法运算结果进行相加,得到当前周期下的加法结果;
当自循环计数器的计数值B等于自循环加法器中预设的自循环次数减一时,所述自循环加法器将其加法结果输出给级联加法器;
级联加法器判断所在的计算单元是否位于计算阵列的第一行,若是,则级联加法器的输出端的结果为一个卷积窗口运算的结果;否则,级联加法器的输出端的结果传递给上一行计算单元的级联加法器的输入端;
级联加法器判断所在的计算单元是否位于计算单元阵列的最后一行,若是,则所述级联加法器的输入端的输入值来源于中间缓冲存储模块,否则,所述级联加法器的输入端的输入值来源于下一行计算单元的级联加法器的输出端;
所述级联加法器将所述自循环加法器的加法结果与级联加法器的输入端的输入值相加,得到相加结果从级联加法器的输出端输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110102861.0A CN112862091B (zh) | 2021-01-26 | 2021-01-26 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110102861.0A CN112862091B (zh) | 2021-01-26 | 2021-01-26 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112862091A CN112862091A (zh) | 2021-05-28 |
CN112862091B true CN112862091B (zh) | 2022-09-27 |
Family
ID=76009170
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110102861.0A Active CN112862091B (zh) | 2021-01-26 | 2021-01-26 | 一种基于快速卷积的资源复用型神经网络硬件加速电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112862091B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20230067027A (ko) * | 2021-11-09 | 2023-05-16 | 한국전자기술연구원 | 고정확도 딥러닝 연산 장치 |
CN115878957B (zh) * | 2022-12-29 | 2023-08-29 | 珠海市欧冶半导体有限公司 | 一种矩阵乘法加速装置及方法 |
Family Cites Families (11)
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 |
CN108229645B (zh) * | 2017-04-28 | 2021-08-06 | 北京市商汤科技开发有限公司 | 卷积加速和计算处理方法、装置、电子设备及存储介质 |
US10990648B2 (en) * | 2017-08-07 | 2021-04-27 | Intel Corporation | System and method for an optimized winograd convolution accelerator |
CN107993186B (zh) * | 2017-12-14 | 2021-05-25 | 中国人民解放军国防科技大学 | 一种基于Winograd算法的3D CNN加速方法及系统 |
CN109325591B (zh) * | 2018-09-26 | 2020-12-29 | 中国科学院计算技术研究所 | 面向Winograd卷积的神经网络处理器 |
CN109447241B (zh) * | 2018-09-29 | 2022-02-22 | 西安交通大学 | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 |
CN110288086B (zh) * | 2019-06-13 | 2023-07-21 | 天津大学 | 一种基于Winograd的可配置卷积阵列加速器结构 |
CN110533164B (zh) * | 2019-08-05 | 2023-04-07 | 西安交通大学 | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 |
CN110580519B (zh) * | 2019-08-19 | 2022-03-22 | 中国科学院计算技术研究所 | 一种卷积运算装置及其方法 |
CN110807522B (zh) * | 2019-10-31 | 2022-05-06 | 合肥工业大学 | 一种神经网络加速器的通用计算电路 |
CN111445012B (zh) * | 2020-04-28 | 2023-04-18 | 南京大学 | 一种基于fpga的分组卷积硬件加速器及其方法 |
-
2021
- 2021-01-26 CN CN202110102861.0A patent/CN112862091B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112862091A (zh) | 2021-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
CN110070178B (zh) | 一种卷积神经网络计算装置及方法 | |
CN109522052B (zh) | 一种计算装置及板卡 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN112862091B (zh) | 一种基于快速卷积的资源复用型神经网络硬件加速电路 | |
CN111445012A (zh) | 一种基于fpga的分组卷积硬件加速器及其方法 | |
CN111488983A (zh) | 一种基于fpga的轻量级cnn模型计算加速器 | |
CN112257844B (zh) | 一种基于混合精度配置的卷积神经网络加速器及其实现方法 | |
CN114781629B (zh) | 基于并行复用的卷积神经网络的硬件加速器及并行复用方法 | |
CN112286864B (zh) | 加速可重构处理器运行的稀疏化数据处理方法及系统 | |
CN113741858B (zh) | 存内乘加计算方法、装置、芯片和计算设备 | |
CN111738433A (zh) | 一种可重配置的卷积硬件加速器 | |
CN111008691B (zh) | 一种权值和激活值都二值化的卷积神经网络加速器架构 | |
CN112698811A (zh) | 神经网络随机数发生器共享电路、共享方法、处理器芯片 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN112799634B (zh) | 一种基于基22mdc ntt结构的高性能环多项式乘法器 | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速系统 | |
CN115526131A (zh) | 多级编码近似计算Tanh函数的方法及装置 | |
CN112906886B (zh) | 结果复用的可重构bnn硬件加速器及图像处理方法 | |
CN111897513B (zh) | 一种基于反向极性技术的乘法器及其代码生成方法 | |
CN112508174B (zh) | 面向权重二值型神经网络的预计算逐列卷积计算单元 | |
Kumar et al. | Complex multiplier: implementation using efficient algorithms for signal processing application | |
CN113988279A (zh) | 一种支持负值激励的存算阵列输出电流读出方法及系统 |
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 |