一种
应用于
嵌入式
FPGA
网络
加速器
串行
乘法器
设计
杨军
南 开 大 学 学 报(自然科学版)Acta Scientiarum Naturalium Universitatis NankaiensisVol.561Feb.2023第56卷第1期2023年2月收稿日期:2022-05-07基金项目:电子信息与控制福建省高校工程研究中心开放课题(EIC1702)作者简介:杨 军(1995-),女,内蒙古乌兰察布人,硕士研究生.通讯作者:李国峰(1958-),男,河北保定人,教授,研究方向:IC设计与系统集成.E-mail:杨 军等:一种应用于嵌入式FPGA卷积神经网络加速器的串行乘法器设计文章编号:0465-7942(2023)01-0008-05一种应用于嵌入式FPGA卷积神经网络加速器的串行乘法器设计杨军1,2,李倍1,陈新伟2,张凯3,梁科1,李国峰1(1.南开大学 电子信息与光学工程学院,天津市光电传感器与传感网络技术重点实验室,天津 300350;2.福建省信息处理与智能控制重点实验室(闽江学院),福建 福州 350121;3.奥特贝睿(天津)科技有限公司,天津 300300)摘要:为满足神经网络中多种位宽数据计算的动态需求,从而提升硬件资源的能效,提出一种位串行乘法器设计以1 bit的计算逻辑为核心,将多位数据的并行乘操作转化为每个周期进行1位数据乘操作的串行计算方式.为进一步提升硬件资源的利用率,在此基础上提出多通道位串行乘法器阵列同时进行多个数据的并行计算.实验结果显示,在最大支持位宽为8 bit的条件下,单通道位串行乘法器的LUT资源使用量是并行乘法器的41%,LUT资源有效利用率是并行乘法器的1.32倍;当通道数为8时,多通道位串行乘法器阵列的LUT资源使用量是多通道并行乘法器阵列的29%.该结构实现了硬件资源和性能之间的平衡提高硬件资源的利用率从而提升计算效能.关键词:卷积神经网络;FPGA;位串行乘法器;多通道乘法器阵列中图分类号:TP183文献标识码:A0引言2012年以来,卷积神经网络广泛应用于计算机视觉领域1-3.为将卷积神经网络应用于嵌入式应用中,研究人员利用卷积算法中的冗余性,使用优化算法减少了卷积神经网络中数据的精度,达到了降低网络中的计算量和存储空间的目的.在卷积神经网络的推理中使用低精度的数据对分类准确度的影响很小2,5-6.研究表明卷积神经网络要求的数据精度不但随网络模型变化,而且随网络内部的不同层显著变化2,4,6.因此神经网络推理向着低位宽、动态位宽的方向发展.相对于通用处理器和数字信号处理器,FPGA具有良好的可重构性,很适用于加速对功耗和时间敏感的卷积神经网络.自从ImageNet大规模视觉识别挑战上展示了其巨大潜力以来,卷积神经网络在机器学习领域取得了众多突破.研究人员发现,适当增加卷积神经网络的深度能够提高网络的性能,以达到更高的准确性7-8.然而随着网络深度的增加,网络中的参数也越来越多,卷积神经网络需要更多的计算量和存储空间完成分类任务.卷积神经网络的卷积层为对计算资源需求最大的部分,因此大部分硬件加速器主要集中加速卷积层.表1表示了不同的卷积神经网络模型相对于全精度实现保持99%相对分类精度时每个卷积层特征的位宽变化.该变化表明了卷积神经网络的关键特性:数据精度不但在网络之间变化而且在同一网络的各层之间也会变化1-2,6.该特性允许调整网络中每个卷积层的数据精度,用于减少计算量和内存占用,而网络性能基本保持不变.卷积神经网络的这种特性可以被用来通过降低数据精度,达到精度和性能的动态平衡.卷积层中的乘法运算消耗了大多数能量且通常占用更多的逻辑资源11,为满足神经网络算法对动态低精度数据计算的需求,提出并设计了一种基于FPGA的位宽动态可控串行乘法器,占用较少的逻辑资源,很好地支持来自网络不同层的数据精度变化的计算,实现了硬件资源和性能之间的平衡提高硬件资网络模型特征位宽加速比LeNet2-37.33Convnet4-5-73.53VGG_M6-8-7-7-72.34表1 相对分类精度是99%时每个卷积层的位宽Table 1 When the relative classification accuracy is 99%,the bit width of each convolutionallayer第1期杨 军等:一种应用于嵌入式FPGA卷积神经网络加速器的串行乘法器设计 9 源的利用率从而提升计算效能.1乘法器对比根据数据的处理方式,可将硬件乘法器分为并行乘法器和串行乘法器.并行乘法器:并行乘法器使用输入数据的所有bit在1个周期内完成计算.并行乘法器适用于高实时性应用场景.并行乘法器的优点是时延小;其缺点是硬件结构的复杂度高,计算数据位宽固定,硬件利用率不高.另外,FPGA实现并行乘法器需要使用大量逻辑资源或DSP,在处理较低位宽的数据时,资源的动态利用率较低.硬件加速器通常使用并行乘法器进行乘法运算,如DianNao9,DaDN10.串行乘法器:在串行乘法器中,输入数据是串行输入的,乘法结果也是串行计算的.串行乘法器每个时钟周期处理输入数据的一个bit.串行乘法器计算简单,比并行乘法器占用更少的逻辑资源,乘数和被乘数的位宽可动态变化;但计算时延大,在高位宽乘法运算中尤为明显.文献2中提出的SIP(Bit-Serial Inner-Product Units)采用串行-并行操作实现串行乘法器.若使用SIP计算A、B两个输入数据的乘法,A是串行输入的,即每个周期从A中取1bit送入乘法器,B是并行输入的.在SIP乘法器中,A的位宽可以动态变化,硬件资源利用率有所提高.使用恒定的精度是当前硬件加速器进行乘法运算的主要做法.然而当某一个卷积层的数据位宽较低时,以最大位宽存储、通信和计算会浪费一定的硬件资源8.针对此现象,本文提出了位串行乘法器设计,实现了乘数和被乘数的位宽的动态变化,在保证卷积神经网络性能的同时充分利用了FPGA的硬件资源.2BitMul位串行乘法器设计2.1 BitMul设计分析假定一个M位的输入数据f,f的二进制表示i=0M-1fi 2i,fi是f的第i位.一个N位的输入数据w,w的二进制表示j=0N-1wj 2j,wj是w的第j位.f*w可以表示为:i=0M-1fi 2ij=0N-1wj 2j=j=0N-1i=0M-12i+j(fi wj).fi wj为1 bit数据的乘法,可采用与逻辑实现,2(i+j)则可采用移位逻辑实现,从而避免使用结构复杂且能量消耗较高的乘法逻辑.最终结果通过复用累加器,在M N个周期内执行求和得到.2.2 计算核心的硬件设计设计的位串行乘法器由控制逻辑和1 bit的计算核心构成,如图1所示.控制逻辑负责控制要进行计算的特征和权重的位宽,1 bit的计算核心负责2输入与逻辑、移位逻辑和累加的实现.位串行乘法器的控制逻辑包括 3 个计数器,分别用counterA、counterB和counterC表示.counterA和counterB分别控制将权重和特征的某一bit送入计算核心,counterC控制中间结果左移的位数.开始(start)信号启动位串行乘法器,输出有效信号(done)指示输出数据有效.位串行乘法器的计算核心是1 bit的计算逻辑,来自特征存储器(feature memory)的 1 bit 数据和来自权重存储器(Weight memory)的1 bit数据通过与门进行与逻辑运算,输出的1 bit数据通过移位逻辑左移counterC位,得到的中间结果通过复用累加器与输出数据存储器(result memory)进行累加运算,M和N分别是特征和权重的位宽,M N个周期后,最终结果存储在输出数据存储器中.所设计位串行乘法器的运算过程如图2所示.假设计算位宽均为2 bit的权重A(10)和特征B(01)相乘.第1个周期内,counterA=0,counterB=0,counterC=0,来自A的次高位和来自B的次高位相与,部分和为0.第2个周期内,counterA=0,counterB=1,counterC=1,来自A的次高位和来自B的最高位相与,结果033&4FeaturememoryResultmemory计算核心MNstartcounterAcounterBcounterCstart/stopcontroldone控制逻辑Weightmemory图1 位串行乘法器框图Fig.1 Block diagram of a serial multiplier 10 南 开 大 学 学 报(自然科学版)第56卷左移1位后与部分和0相加,部分和为0.第3个周期内,counterA=1,coun-terB=0,counterC=1,来自A的最高位和来自B的次高位相与,结果1左移1位后与部分和0相加,部分和为2.第4个周期内,counterA=1,counterB=1,counterC=2,来自A的最高位和来自B的最高位相与,结果0左移2位与部分和2相加,因此最终结果为2(0010).2.3 多通道并行优化设计由于二维卷积的计算特性,卷积神经网络中的卷积层可以并行处理.同时,位串行乘法器计算核心可以共享控制逻辑.所以为了进一步降低单个位串行乘法器的资源消耗并且提升计算效率,设计一个支持向量乘的多通道位串行乘法器阵列.多通道位串行乘法器阵列中的所有乘法器共用一套控制逻辑,每增加一个位串行乘法器只需增加一个计算核心.多个乘法器分摊了控制逻辑的资源消耗量,因此当位串行乘法器数量足够大时每个乘法器的资源消耗量可近似为一个计算核心的资源消耗量.图3所示是支持向量乘的多通道位串行乘法器阵列.w和f分别是k维的权重向量和特征向量.控制逻辑负责将要进行计算的权重和特征的1 bit送入每个计算核心,并控制每个计算核心的中间结果左移的位数.每个计算核心计算wi fi(i=1,2,k)的结果.wi和fi分别为w和f中的第i个元素.3实验结果评估3.1 乘法器消耗资源对比比较并行乘法器、SIP乘法器和位串行乘法器在计算4 bit乘法和8 bit乘法时的LUT资源使用量和计算周期;然后重点比较位串行乘法器和并行乘法器的LUT资源有效利用率;最后在不同应用场景下对位串行乘法器和并行乘法器的计算吞吐量的比值进行比较和分析.设计采用Xilinx Vivado 2018.1完成,评估平台采用ZedBoard开发板.ZedBoard开发板使用Xilinx Zynq7000系列FPGA,该芯片包含PS部分和PL部分,PS部分采用双核ARM Cortex-A9处理器,PL部分包含53200LUT.图4为并行乘法器、SIP乘法器和位串行乘法器计算4 bit乘法和8 bit乘法时的LUT资源使用量和计算周期.图5为并行乘法器和位串行乘法器计算位宽在1-8 bit范围内变化的数据相乘时,LUT资源有效利用率的变化.计算4 bit乘法时,与并行乘法器和SIP乘法器相比,位串行乘法器的LUT使用量分别减少了5%和55%.由于串行操作的固有性质,位串行乘法器的计算周期分别是并行乘法器和SIP乘法器的16倍和4倍;counterAcounterBA=10B=01&counterC图2 位串行乘法器的运算过程Fig.2 The operation process of theserial multiplier&ResultmemoryWeightmemoryFeaturememory334MNstartcounterAcounterBcounterCstart/stopcontroldone图3 位串行乘法器阵列Fig.3 Serial multiplier arrayLUT资源使用量计算周期1009080706050403020100并行乘法器SIP乘法器位串行乘法器4 bit8 bit4 bit8 bit706050403020100图4 不同乘法器计算4 bit乘法和8 bit乘法的LUT资源使用量和计算周期Fig.4 LUT resource usage and calculation period of 4-bit mu