一种基于FPGA的二维多通道卷积硬件加速器制造技术

技术编号:33044926 阅读:24 留言:0更新日期:2022-04-15 09:27
本发明专利技术涉及一种基于FPGA的二维多通道卷积硬件加速器,包括:控制单元、偏置缓存、权重缓存、输入特征缓存、卷积缓存、权重预读寄存器组、PE阵列、非线性单元、第二选通器和第三选通器;特征缓存连接PE阵列;权重缓存通过权重预读寄存器组连接PE阵列;偏置缓存与卷积缓存通过第三选通器连接PE阵列,PE阵列输出端通过第二选通器连接卷积缓存和非线性单元;输入特征缓存、偏置缓存和权重缓存加载数据;权重预读寄存器组对权重缓存进行预读寄存;PE阵列写入输入特征、预读寄存的权重数据,偏置数据或卷积中间结果进行卷积运算,将卷积中间结果写入卷积缓存,将卷积最终结果经非线性单元激活后输出。本发明专利技术实现对CNN中任意规模卷积层的高效计算。效计算。效计算。

【技术实现步骤摘要】
一种基于FPGA的二维多通道卷积硬件加速器


[0001]本专利技术属于深度学习加速电路
,具体涉及一种基于FPGA的二维多通道卷积硬件加速器。

技术介绍

[0002]目前,卷积神经网络(Convolutional Neural Network,CNN)在图像分类、目标检测、自然语言处理、语音识别、游戏博弈等领域表现卓越。但由于其计算密集和存储密集的特点,使其部署到移动设备或嵌入式设备时遇到诸多困难。比如新一代航天型号中有利用CNN进行信息处理的大量需求,可航天设备的散热条件苛刻,而对计算的实时性要求很高。以往基于通用处理器实现的信息处理方式越来越难以满足航天型号的应用要求,比如CPU和DSP因算力不足而难以满足实时性需求,GPU因功耗过高而难以适应苛刻的散热环境。针对上述问题的一般解决方式是为CNN设计专门的加速单元:针对CNN的算法特性设计合适的片上缓存和数据流排序方式,以提高计算的并行性、数据的重用率,同时降低片外的访存量,进而提高系统的整体算力和能效比。由于卷积层的计算量往往占CNN总计算量的95%以上,硬件加速电路的设计水平直接决定着系统的整体性能。。

技术实现思路

[0003]鉴于上述的分析,本专利技术旨在公开了一种基于FPGA的二维多通道卷积硬件加速器,在保证精度的前提下提高任意规模卷积层的计算效率,进而解决将CNN部署到嵌入式设备中遇到的实时性问题和功耗问题。
[0004]本专利技术公开了一种基于FPGA的二维多通道卷积硬件加速器,包括:控制单元和与其连接、受其控制的偏置缓存、权重缓存、输入特征缓存、卷积缓存、权重预读寄存器组、PE阵列、非线性单元、第二选通器S2和第三选通器S3;
[0005]特征缓存连接PE阵列;权重缓存通过权重预读寄存器组连接PE阵列;偏置缓存与卷积缓存通过第三选通器S3连接PE阵列输入端,PE阵列输出端通过第二选通器S2连接卷积缓存和非线性单元;
[0006]在控制单元的控制下,输入特征缓存、偏置缓存和权重缓存加载数据;权重预读寄存器组对权重缓存进行预读寄存;PE阵列写入输入特征、预读寄存的权重数据,以及通过第三选通器S3写入的偏置数据或卷积中间结果,进行卷积运算;并通过第二选通器S2将卷积中间结果写入卷积缓存,将卷积最终结果经非线性单元激活后输出。
[0007]进一步地,所述PE阵列中包括n个并行的PE模块;每个所述PE模块包括单独的权重寄存器、乘法器组、加法数、卷积寄存器、移位器、加法器以及和数寄存器;所有的PE模块共享一个输入特征寄存器;
[0008]所述权重寄存器为位宽m的寄存器,输入端与权重预读寄存器组连接,输出端与乘法器组输入端连接;
[0009]所述输入特征寄存器为位宽m的寄存器,输入端与输入特征缓存连接,输出端与所
有PE模块的乘法器组输入端连接;
[0010]乘法器组分别对输入特征数据和权重数据进行两两相乘,并将相乘结果输出到加法树的输入端;
[0011]加法树对相乘结果进行相加求和后,将求和结果输出到加法器的一个输入端;
[0012]卷积寄存器将偏置缓存或卷积缓存输出的偏置数据或卷积中间数据寄存后,通过移位器后输出到加法器的另一个输入端;
[0013]加法器将输入的所述求和结果和移位器输出数据进行逐位相加输出到和数寄存器中,和数寄存器将逐位相加的结果经第二选通器S2后输出到卷积缓存或非线性单元。
[0014]进一步地,所述PE模块的个数n与卷积核的输出并行度相等,位宽m与卷积核的输入并行度相等;权重预读寄存器组的大小为m
×
n。
[0015]进一步地,PE模块的输入特征、输出特征、权重和偏置数据均量化为8bit定点数;
[0016]在乘法器组中,通过乘法结合律将权重不同而输入特征相同的两个乘法结合在一起使用FPGA中大位宽的DSP进行计算;
[0017]乘积o表示为o=o1+o2=w1×
a+(w2×
a)<<16=(w1+w2<<16)
×
a;o1为特征数据a和权重数据w1的乘积,o2为特征数据a和权重数据w2的乘积;<<为向左移位;
[0018]乘积o1为乘积o的低16位,通过截位的方式从乘积o中解析得到o1=w1×
a=o
(15:0)

[0019]乘积o2为乘积o的高16位,乘积o2=w2×
a=(o>>16)+o
[15];>>为向右移位,o
[15]为乘积o的最高位。
[0020]进一步地,计算PE阵列输出的卷积结果的理论位宽为16+log2(M
×
K
×
K);其中,K
×
K为卷积核的尺寸,M为卷积层的输入通道数;根据理论位宽结合随机数模块测试后得到卷积缓存的位宽;并对卷积中间数据和卷积最终结果进行饱和处理,用于防止极限情况下出现的计算结果错误。
[0021]进一步地,所述卷积缓存的位宽为24bit;
[0022]卷积中间结果的饱和处理为Conv为卷积中间结果,存储于在位宽为24bit的卷积缓存中。
[0023]进一步地,卷积最终结果采用8bit的整数表示;
[0024]卷积最终结果的饱和处理为Fout为卷积最终结果,round()为四舍五入运算;Fout_shif为输出特征向右位移的位数。
[0025]进一步地,将权重数据预排序,在计算时顺序加载;预排序之后的权重数据表示为六维张量Weights[N/n][M/m][K][K][n][m];且按照从低维到高维的顺序连续存储在外部DDR中,M为卷积层入通道数,N为卷积层输出通道数,卷积核的尺寸为K
×
K;m为所述二维多通道卷积硬件加速器的输入通道并行度、n为所述二维多通道卷积硬件加速器的输出通道并行度。
[0026]进一步地,输入特征数据表示为五维张量:
[0027]Fin[M/m][Hin/Tensor_Hin][Tensor_Hin][Win][m];
[0028]输出特征数据表示为五维张量:
[0029]Fout[N/n][Hout/Tensor_Hout][Tensor_Hout][Wout][n];
[0030]输入特征数据和输出特征数据按照从低维到高维的顺序连续存储在外部DDR中;Win和Hin为输入特征图的宽和高;Wout和Hout为输出特征图的宽和高;Tensor_Hin和Tensor_Hout为输入和输出特征图在高度方向的分块大小。
[0031]进一步地,二维多通道卷积硬件加速器的加速过程包括:
[0032]1)控制单元通过接收外部指令配置当前卷积层参数;
[0033]2)控制单元控制输入特征缓存、偏置缓存和权重缓存分别加载输入特征、偏置和权重数据;并且,在向权重缓存加载数据的同时,将权重缓存中数据写入权重预读寄存器组,进行权重矩阵预加载;
[0034]3)权重矩阵预加载后,在一本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的二维多通道卷积硬件加速器,其特征在于,包括:控制单元和与其连接、受其控制的偏置缓存、权重缓存、输入特征缓存、卷积缓存、权重预读寄存器组、PE阵列、非线性单元、第二选通器S2和第三选通器S3;特征缓存连接PE阵列;权重缓存通过权重预读寄存器组连接PE阵列;偏置缓存与卷积缓存通过第三选通器S3连接PE阵列输入端,PE阵列输出端通过第二选通器S2连接卷积缓存和非线性单元;在控制单元的控制下,输入特征缓存、偏置缓存和权重缓存加载数据;权重预读寄存器组对权重缓存进行预读寄存;PE阵列写入输入特征、预读寄存的权重数据,以及通过第三选通器S3写入的偏置数据或卷积中间结果,进行卷积运算;并通过第二选通器S2将卷积中间结果写入卷积缓存,将卷积最终结果经非线性单元激活后输出。2.根据权利要求1所述的二维多通道卷积硬件加速器,其特征在于,所述PE阵列中包括n个并行的PE模块;每个所述PE模块包括单独的权重寄存器、乘法器组、加法数、卷积寄存器、移位器、加法器以及和数寄存器;所有的PE模块共享一个输入特征寄存器;所述权重寄存器为位宽m的寄存器,输入端与权重预读寄存器组连接,输出端与乘法器组输入端连接;所述输入特征寄存器为位宽m的寄存器,输入端与输入特征缓存连接,输出端与所有PE模块的乘法器组输入端连接;乘法器组分别对输入特征数据和权重数据进行两两相乘,并将相乘结果输出到加法树的输入端;加法树对相乘结果进行相加求和后,将求和结果输出到加法器的一个输入端;卷积寄存器将偏置缓存或卷积缓存输出的偏置数据或卷积中间数据寄存后,通过移位器后输出到加法器的另一个输入端;加法器将输入的所述求和结果和移位器输出数据进行逐位相加输出到和数寄存器中,和数寄存器将逐位相加的结果经第二选通器S2后输出到卷积缓存或非线性单元。3.根据权利要求2所述的二维多通道卷积硬件加速器,其特征在于,所述PE模块的个数n与卷积核的输出并行度相等,位宽m与卷积核的输入并行度相等;权重预读寄存器组的大小为m
×
n。4.根据权利要求2所述的二维多通道卷积硬件加速器,其特征在于,PE模块的输入特征、输出特征、权重和偏置数据均量化为8bit定点数;在乘法器组中,通过乘法结合律将权重不同而输入特征相同的两个乘法结合在一起使用FPGA中大位宽的DSP进行计算;乘积o表示为o=o1+o2=w1×
a+(w2×
a)<<16=(w1+w2<<16)
×
a;o1为特征数据a和权重数据w1的乘积,o2为特征数据a和权重数据w2的乘积;<<为向左移位;乘积o1为乘积o的低16位,通过截位的方式从乘积o中解析得到o1=w1×
a=o
(15:0)
;乘积o2为乘积o的高16位,乘积o2=w2×
a=(o>>16)+o
[15]
;>>为向右移位,o
[15]
为乘积o的最高位。5.根据权利要求2所述的二维多通道卷积硬件加速器,其特征在于,计算PE阵列输出的卷积结果的理论位宽为16+log2(M
×
K
×
K);其中,K
×
K为卷积核的尺寸,M为卷积层的输入通道数;根据理论位宽结合随机数模块测试后得到卷积缓存的位宽;并对卷积中间数据和
卷积最终结果进行饱和处理,用于防止极限情况下出现的计算结果错...

【专利技术属性】
技术研发人员:王晓峰周辉盖一帆赵雄波蒋彭龙李悦赵冠杰李超然吴松龄李山山杨彬
申请(专利权)人:北京航天自动控制研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1