第47卷第4期Vol.
47No.4
计算机工程
Computer Engineering
2021年4月
April2021
基于RISC⁃V处理器的卷积加速SoC系统设计
张坤宁1,赵烁1,何虎1,邓宁1,杨旭2
(1.清华大学微电子学研究所,北京100084;2.北京理工大学软件学院,北京100081)
摘要:为提高卷积神经网络(CNN)的计算效率和能效,以8bit定点数据作为输入,设计一个支持激活、批标准化以及池化等CNN网络中常见计算类型的卷积加速器,优化循环计算顺序并将其与数据复用技术相结合,以提高卷积计算的效率。基于软硬件协同设计思想,构建包含RISC-V处理器和卷积加速器的SoC系统,RISC-V处理器基于开源的指令集标准,可以根据具体的设计需求扩展指令功能。将该SoC系统部署在Xilinx ZCU102开发板上,RISC-V处理器和卷积加速器分别工作在100MHz和300MHz频率下,测试结果表明,该加速器的算力达到
153.6GOP/s,运行VGG16网络进行图片推理计算时加速效果较好。
关键词:卷积加速;循环计算优化;数据复用;RISC-V处理器;SoC系统;软硬件协同设计
开放科学(资源服务)标志码(OSID):
中文引用格式:张坤宁,赵烁,何虎,等.基于RISC⁃V处理器的卷积加速SoC系统设计[J].计算机工程,2021,47(4):153-157.
英文引用格式:ZHANG Kunning,ZHAO Shuo,HE Hu,et al.Design of SoC system for convolution acceleration based on RISC-V processor[J].Computer Engineering,2021,47(4):153-157.
Design of SoC System for Convolution Acceleration Based on RISC-V Processor ZHANG Kunning1,ZHAO Shuo1,HE Hu1,DENG Ning1,YANG Xu2
(1.Institute of Microelectronics,Tsinghua University,Beijing100084,China;
2.School of Software,Beijing Institute of Technology,Beijing100081,China)
【Abstract】To improve the computation and energy efficiency of Convolutional Neural Network(CNN),this paper proposes a convolution accelerator with8bit fixed-point data as input.The accelerator supports common CNN calculations,including activation,Batch Normalization(BN)and pooling.By optimizing the loop computation order and adopting the data reuse strategy,the convolution computation efficiency is greatly improved.Based on the idea of the co-design of software and hardware,a SoC system including a RISC-V processor and the convolution accelerator is designed.The RISC-V processor is based on the open source instruction set,which makes it flexible to add instructions according to specific design requirements.The SoC system is deployed on the Xilinx ZCU102board,where the RISC-V processor and the accelerator work at the frequency of100MHz and300MHz,respectively.The testing results show that the computing speed of the accelerator reaches153.6GOP/s.It provides a significant speedup for VGG16network running for inference computation of pictures.
【Key words】convolution acceleration;loop computation optimization;data reuse;RISC-V processor;SoC system;co-design of software and hardware
DOI:10.19678/j.issn.1000-3428.0057835
0概述
自2012年AlexNet获得ILSVRC比赛的冠军之后,卷积神经网络(CNN)开始引起关注,并逐渐应用于图像分类和检测、人脸识别以及语音识别等领域[1-3]。然而,随着深度学习技术的快速发展,CNN 在提高识别准确率的同时,网络深度也在不断加深,结构更加复杂化,导致网络的计算量剧增[4-5]。通用处理器在处理大量且繁杂的卷积计算时效率十分低下,且能耗开销较高。因此,设计专门用于加速卷积
基金项目:国家自然科学基金(91846303)。
作者简介:张坤宁(1995—),女,硕士,主研方向为卷积加速器设计与优化;赵烁,硕士;何虎(通信作者),副教授、博士;邓宁,教授、博士;杨旭,副教授、博士。
收稿日期:2020-03-23修回日期:2020-05-13E⁃mail:zkn17@mails.tsinghua.edu
·体系结构与软件技术·文章编号:1000-3428(2021)04-0153-05文献标志码:A中图分类号:TP332
计算机工程2021年4月15日
计算的硬件架构尤为必要。
RISC-V是由加州大学伯克利分校(UCB)提出的一种开源精简指令集架构[6],全球的开发者能够共同参与研发。RISC-V由3个基本指令集和6个扩展指令集组成,在实现基本指令集的前提下可以根据自身的实际设计需求灵活选择相应的扩展指令集[7]。与主要用于桌面计算机的x86架构以及用于嵌入式设备的ARM架构相比,RISC-V架构具有通用且灵活的优势,并且开源设计的方式也避免了专利保护和高额授权费等给开发者造成的研发难度,因此,RISC-V近年来备受研究人员的关注并取得了一定发展[8-9]。
CNN中的计算以卷积计算为主,同时还包含一些其他类型的计算。因此,通常采用软硬件协同设计的思路,即设计专门的加速器来提高卷积计算的效率,再使用通用处理器完成一些在网络中所占比例很小、无需在硬件架构中实现的计算。目前,基于卷积加速器的软硬件协同设计主要通过在FPGA平台中构建SoC 系统来实现,所用的通用处理器大多基于ARM架构[10-12],虽已出现一些将RISC-V处理器与卷积加速计算相结合的设计[13-14],但总体而言数量仍然较少。
本文基于RISC-V指令集架构提出一种顺序双发射的超标量处理器设计方法,并构建以动态量化的8bit定点数据作为输入的卷积加速器结构,对卷积循环计算顺序进行优化以进一步提高卷积计算的效率。
在此基础上,构建包含RISC-V处理器和卷积加速器的SoC系统,将其部署在FPGA平台上并运行VGG16网络,以实现加速效果。
1基于RISC-V的处理器设计
1.1RISC-V处理器概述
RISC-V包括一个基本的整数指令集,所有基于RISC-V开发的处理器都必须实现这一基本指令集。此外,RISC-V还有足够的操作码空间用来定义其他基于用户需求的自定义指令[15]。目前,UCB已经设计出一款名为Rocket Chip的64bit、包含5级流水线的顺序执行RISC-V处理器,其使用台积电40nm工艺流片后与采用相同工艺的ARM Cortex-A5相比,功耗和面积均约降低一半[16]。在与卷积加速器结合方面,YANG 等人对Eyeriss结构进行改进,设计一种基于RISC-V处理器的卷积加速结构,并在Rocket-Chip Simulator中对该卷积加速结构进行仿真[17]。LI等人在FPGA平台上实现“RISC-V处理器+卷积加速协处理器”的SoC系统,其实现了32bit单精度浮点卷积运算的加速效果[18]。
1.2顺序双发射超标量RISC-V处理器
本文基于RISC-V指令集标准,提出一种顺序双发射的超标量处理器设计方法。处理器支持RV32IMAFC 指令集,具有32bit的整数指令和地址空间,采用9级流水线架构,并支持动态分支预测技
术,处理器对外还兼容AXI4接口,能够原位替换ARM A系列的处理器,从而为构建包含RISC-V处理器和卷积加速器的SoC 系统提供支撑。
处理器整体架构如图1所示,包含指令缓存模块、指令获取模块、指令分发模块、指令解码模块、指令执行模块、数据缓存模块、数据传输模块以及寄存器堆等。处理器通过指令缓存模块从存储器中读取指令并组成指令包,指令包经拆分后发送到指令解码模块和指令分发模块。在6个执行单元中,A0和A1两个算术逻辑单元支持加法、减法、乘法、移位和逻辑运算等操作,LD 和ST负责完成存储器与处理器之间的数据访存,DIV 单元执行整型除法和取余计算,FPU负责完成单精度浮点数的加法、减法、乘法、除法和开方等运算。处理器采用9级指令流水线,主要分为指令获取、指令分发、指令执行和写回4个步骤。具体地,首先将128bit的指令包进行拆分,然后对指令进行解析并根据指令的类型将其发送到相应的执行单元,最后将执行结果写入寄存器堆或存储器中。
2卷积加速器设计
2015年,ZHANG等人基于roofline模型提出卷积加速器的设计分析机制,对计算吞吐和数据带宽等进行定量分析[19]。2016年,麻省理工大学提出的Eyeriss深度学习处理芯片采用行固定的方式实现数据复用[20]。目前,卷积加速设计主要围绕以下方面展开:基于CNN网络中输入特征映射和卷积核多通道的特性,利用FPGA中的计算资源进行并行计算[21];基于有限的片上存储资源,对输入和
权重数据进行分块,并通过设置片上缓存来暂时存储分块数据;通过设计特定的循环展开计算顺序,实现片上缓存数据的复用,从而减少片上缓存与片外存储之间的访存次数并实现高效的并行计算[22]。
本文设计的卷积加速器由计算单元、片上缓
存图1基于RISC-V指令集的处理器架构
Fig.1Architecture of the processor based on
RISC-V instruction set
154
第47卷第4期张坤宁,赵烁,何虎,等:基于RISC⁃V 处理器的卷积加速SoC 系统设计
和控制单元3个部分组成,其整体架构如图2所示。
计算单元主要由乘加阵列、BN 计算模块、定点处理模块、激活模块以及池化模块组成,是完成加速计算的关键部分。片上缓存调用FPGA 的BRAM 资源,暂存来自DDR 的输入特征映射、权重数据以及卷积计算结果。控制单元主要产生一些控制卷积计算过程的信号,以保证计算过程准确有序。
2.1计算单元
卷积计算由乘加阵列完成,计算单元由若干个
乘法器和加法器组成。卷积计算的效率提升主要通过阵列之间的并行计算以及阵列内部的循环展开乘加计算来实现。并行计算需要对输入图像映射和卷积核在各个维度上进行分块。鉴于主流的卷积神经网络的输入、输出通道数均为16的倍数,因此,本文将乘加阵列在输入和输出通道维度上的分块尺寸
确定为16,即其包含的乘法器和加法器的个数为256。此外,考虑到测试集中图片的尺寸为224×224,对于输入特征映射,本文将其在行、列2个维度上的分块尺寸均设置为7。图3所示为乘加阵列的结构。
在循环展开乘加计算顺序的过程中,采取将卷积核与输入特征映射的点乘运算进行分解的方式,即固定一个卷积核元素,令其完成全部分块数据中所有需要其参与的乘法运算,然后再移动到下一个元素。在本文设计中,输入特征映射的行、列分块尺寸均为7,在数据填充尺寸为1的情况下,一个卷积核元素将全部输入数据扫描一遍共需49(7×7)个时钟周期,因此,尺寸为3×3的卷积核与分块数据的一次中间结果计算共需9×49个时钟周期。
算法1描述了上述并行计算和循环展开计算的过程。这种令单个卷积核元素与整个分块数据依次进行乘法运算的方式,优势在于既复用了卷积核数据,又令乘加阵列中的计算不受卷积核尺寸的限制,只需将卷积核的尺寸信息通过控制器传给计算单元,便可设计简单且通用的控制逻辑对片上缓存中的数据传输以及乘加阵列中的计算进行控制,从而大幅提升卷积加速器的通用性。
算法1
卷积计算算法
输入卷积核元素,输入特征映射输出
卷积计算结果
1.for (r=0;r<224;r+=7)//在输入数据行上进行分块计算
2.for (c=0;c<224;c+=7)//在输入数据列上进行分块//计算
3.for (o_c=0;o_c<ker_n ;o_c+=16)//在输出通道上进行//分块计算
4.for (i_c=0;i_c<ker_c ;i_c+=16)//在输入通道上进行分块//计算
5.for (Kr=0;Kr<ker_s ;Kr++)//遍历卷积核行元素
6.for (Kc=0;Kc<ker_s ;Kc++)//遍历卷积核列元素
7.并行完成256次乘加计算
8.累加中间结果,得到最终的卷积结果
2.2
片上缓存
如图2所示,加速器中设置了输入缓存、权重缓
存和输出缓存,同时在计算单元中还有用于存储卷积中间结果的缓存以及用于存储池化计算模块输入数据的池化缓存等。通过缓存数据,能够减少加速器与DDR 之间的数据访存次数,从而实现数据复用并降低由传输数据所产生的能耗[23]。
上述缓存均工作在ping-pong 模式下,设置两块尺寸相同的缓存,在一块缓存与DDR 进行数据交互时,另一块缓存则向计算模块传输数据,这种方式能够充分利用数据传输的时间,提高加速器的运行效率。2.3
控制单元
控制器一方面接收总线传递的关于网络每一个计算层各个维度上的分块尺寸信息,另一方面又在
计算过程中产生计算开始及完成的信号、片上缓存读写数据的使能信号以及地址等
图2
卷积加速器架构
Fig.2
Convolution accelerator
architecture
图3
乘加阵列的结构
Fig.3
Structure of the multiplier and accumulation array
155
计算机工程
2021年4月15日
3SoC 系统设计
在Vivado 2018的IP Integrator 中,将RISC-V 处
理器和卷积加速器分别封装为具有AXI 总线master 接口的IP ,与DDR 、DMA 、AXI 总线、时钟与复位模块、BRAM 控制器以及UART 等模块IP 共同组成能够运行完整CNN 的SoC 系统。CNN 中的卷积、激活、BN 计算、池化以及全连接计算等都能在加速器中完成,并且循环计算顺序经过优化使得加速器的乘加阵列更具通用性,可支持不同网络中各种尺寸的卷积核与输入特征映射的卷积运算。此外,网络中数据填充与分块、softmax 层计算等耗时较短的操作由RISC-V 处理器来完成。DMA 控制DDR 通过总线向片上缓存传送数据,同时API 函数中给出的一些控制信息也通过总线传递给加速器。图4所示为本文SoC 系统架构。
4实验结果与分析
本次实验推理计算所用的数据集选用来自
ImageNet ILSVRC 2012的100张图片,每张图片的尺寸为224×224×3。运行的网络选用VGG 16,共包含13层卷积层和3层全连接层,总参数量达132MB ,每完成一张图片的推理计算要进行15.84G 次乘加运算。
在前文所述的SoC 系统中添加约束并进行布局布线等操作,得到各项资源利用情况,如表1所示。RISC-V 处理器和卷积加速器的工作频率分别为100MHz 和300MHz 。将生成SoC 系统的bitstream 文件写入Xilinx ZCU 102开发板中,在SDK 中编写并运行VGG 16网络的C 语言代码,以获得加速器的
运行结果。
表2所示为加速器运行VGG 16网络的结果。从表2可以看出,在300MHz 的工作频率下,加速器的峰值算力达到了153.6GOP/s ,完成单张图片的卷积计算仅需0.23s 。从算力、DSP 效率以及能耗比等方面来看,本文加速器实现了较高的计算性能。
在运行VGG 16网络时,Xilinx ZCU 102自带的ARM Cortex-A 53处理器、Intel i 7-8700处理器以及本文加速器完成单张图片的卷积计算所花费时间以及加速比结果如表3所示。从表3可以看出,本文加速
器的计算效率约为ARM 处理器的634倍,约为Intel i 7处理器的40倍。
5结束语
本文将分块策略与循环计算顺序优化相结合,
设计一种卷积加速结构,并与基于RISC-V 开源指令集的顺序双发射超标量处理器共同组成SoC 系统,将该系统部署在FPGA 平台上,能够取得较好的加速效果。本文处理器基于开源指令集,可根据具体的应用需求进行特定的优化,扩展指令功能,为“主处理器+卷积加速器”的软硬件协同设计模式提供新途径。下一步将对包含RISC-V 处理器和卷积加速器的协同设计进行流片,以在提高处理器主频的同时进一步提升加速器的整体性能
图4基于RISC-V 处理器和卷积加速器的SoC 系统架构Fig.4
SoC system architecture based on RISC-V processor
and convolution accelerator
表1
FPGA 的资源利用情况
Table 1
The utilization of FPGA resources
模块LUT DSP BRAM
总量2740802520912
使用量113964
286260
利用率/%41.5811.3528.51
表2
加速器性能指标结果
Table 2
Accelerator performance index results
性能指标
单张图片卷积计算时间/s 数据传输带宽/(GB ·s −1)峰值算力/(GOP ·s −1)DSP 效率/(GOP ·s −1·DSP −1)
能耗/W
能耗比/(GOP ·s −1·W −1)
数值0.232.1
153.60.5655.328.98
表3
本文加速器与其他处理器的性能对比Table 3Performance comparison between accelerator
in this paper and other processors
性能指标运行频率/GHz 卷积计算时间/s
加速比
ARM Cortex-A 53
1.2
145.971×Intel i 7-8700
3.2
9.2415.8×本文加速器
0.3
0.23634.7×
156
第47卷第4期张坤宁,赵烁,何虎,等:基于RISC⁃V处理器的卷积加速SoC系统设计
参考文献
[1]DU Guiming,WANG Xia,WANG Guangyan,et al.Speech recognition based on convolutional neural networks[C]//
Proceedings of2016IEEE International Conference on
Signal and Image Processing.Washington D.C.,USA:
IEEE Press,2016:708-711.
[2]LI Haoxiang,LIN Zhe,SHEN Xiaohui,et al.A convolu-tional neural network cascade for face detection[C]//
Proceedings of2015IEEE Conference on Computer Vision
and Pattern Recognition.Washington D.C.,USA:IEEE
Press,2015:5325-5334.
[3]REN S Q,HE K M,GIRSHICK R,et al.Faster R-CNN:towards real-time object detection with region proposal
networks[J].IEEE Transactions on Pattern Analysis and
Machine Intelligence,2017,39(6):1137-1149.
[4]SIMONYAN K,ZISSERMAN A.Very deep convolutional networks for large-scale image recognition[EB/OL].[2020-
02-05].https:///pdf/1409.1556.pdf.
[5]HE Kaiming,ZHANG Xiangyu,REN Shaoqing,et al.Deep residual learning for image recognition[C]//Proceedings of
2016IEEE Conference on Computer Vision and Pattern
Recognition.Washington D.C.,USA:IEEE Press,2016:
770-778.
[6]ANDREW W,YUNSUP L,DAVID A P,et al.The RISC-V instruction set manual,volume I:user-level ISA,version
2.0:UCB/EECS-2014-54[EB/OL].[2020-02-05].https://
2014-54.pdf.
[7]LEI Silei.Research on open source processor and SoC based on RISC-V[J].Microcontrollers&Embedded Systems,
2017,17(2):56-60.(in Chinese)
雷思磊.RISC-V架构的开源处理器及SoC研究综述[J].
单片机与嵌入式系统应用,2017,17(2):56-60.
[8]ROVINSKI A,CHUN Z,AL-HAWAJ K,et al.Evaluating celerity:a16-nm695Giga-RISC-V instructions/s manycore
processor with synthesizable PLL[J].IEEE Solid-State
Circuits Letters,2019,2(12):289-292.
[9]CAVALCANTE M,SCHUIKI F,ZARUBA F,et al.Ara:a1-GHz+scalable and energy-efficient RISC-V vector
processor with multiprecision floating-point support in
22-nm FD-SOI[J].IEEE Transactions on Very Large Scale
Integration Systems,2020,28(2):530-543.
[10]MELONI P,CAPOTONDI A,DERIU G,et al.Neuraghe:exploiting CPU-FPGA synergies for efficient and flexible
CNN inference acceleration on Zynq SoCs[J].ACM
Transactions on Reconfigurable Technology and Systems,
2017,11(3):1-24.
[11]XUE Chengbo,CAO Shan,JIANG Rongkun,et al.A reconfigurable pipelined architecture for convolutional
neural network acceleration[C]//Proceedings of2018IEEE
International Symposium on Circuits and Systems.
Washington D.C.,USA:IEEE Press,2018:1-5.[12]YAO Yuchen,DUAN Qinghua,ZHANG Zhiqian,et al.A FPGA-based hardware accelerator for multiple convo-
lutional neural networks[C]//Proceedings of2018IEEE
International Conference on Solid-State and Integrated
Circuit Technology.Washington D.C.,USA:IEEE Press,
2018:1075-1077.
[13]CHANG Mengchou,PAN Zegang,CHEN Junliang.
Hardware accelerator for boosting convolution computation
in image classification applications[C]//Proceedings of
2017IEEE Global Conference on Consumer Electronics.
Washington D.C.,USA:IEEE Press,2017:1-2.[14]FLAMAND E,ROSSI D,CONTI F,et al.GAP-8:a RISC-V SoC for AI at the edge of the IoT[C]//Proceedings of2018
IEEE International Conference on Application-Specific
Systems,Architectures and Processors.Washington D.C.,
USA:IEEE Press,2018:1-4.
[15]YANG Weike.Research on design method of convolution neural network accelerator based on RISC-V open source
processor[D].Shanghai:Shanghai Jiao Tong University,
2018.(in Chinese)
杨维科.基于RISC-V开源处理器的卷积神经网络加速
器设计方法研究[D].上海:上海交通大学,2018.[16]ASANOVIC K,AVIZIENIS R,BACHRACH J,et al.The rocket chip generator:UCB/EECS-2016-17[EB/OL].
[2020-02-05].https://s.berkeley.edu/Pubs/
TechRpts/2016/EECS-2016-17.pdf.
[17]YANG Weike,HE Guanghui,JING Naifeng.Design and implementation of CNN acceleration module based on
Rocket-Chip open source processor[J].Microelectronics&
Computer,2018,35(4):17-21.(in Chinese)
杨维科,贺光辉,景乃锋.基于Rocket-Chip开源处理器
的CNN加速模块的设计与实现[J].微电子学与计算机,
2018,35(4):17-21.
[18]LI Dongze,GONG Haoran,CHANG Yuchun.Implementing RISCV system-on-chip for acceleration of convolution
operation and activation function based on FPGA[C]//
Proceedings of2018IEEE International Conference on Solid-
State and Integrated Circuit Technology.Washington D.C.,
USA:IEEE Press,2018:1-3.
[19]ZHANG Chen,LI Peng,SUN Guangyu,et al.Optimizing FPGA-based accelerator design for deep convolutional
neural networks[C]//Proceedings of2015ACM/SIGDA
International Symposium on Field-Programmable Gate
Arrays.New York,USA:ACM Press,2015:161-170.[20]CHEN Y,KRISHNA T,EMER J,et al.Eyeriss:an energy-efficient reconfigurable accelerator for deep
convolutional neural networks[C]//Proceedings of2016
IEEE International Solid-State Circuits Conference.
Washington D.C.,USA:IEEE Press,2016:262-263.[21]ZHAO R Z,LUK W,NIU X Y,et al.
x86架构和arm架构区别Hardware acceleration for machine learning[C]//Proceedings of2017IEEE
Computer Society Annual Symposium on VLSI.
Washington D.C.,USA:IEEE Press,2017:645-650.[22]MA Y F,CAO Y,VRUDHULA S,et al.Optimizing the convolution operation to accelerate deep neural networks
on FPGA[J].IEEE Transactions on Very Large Scale
Integration Systems,2018,26(7):1354-1367.
[23]CHEN Tianshi,DU Zidong,SUN Ninghui,et al.DianNao:
a small-footprint high-throughput accelerator for ubiquitous
machine-learning[J].ACM SIGPLAN Notices,2014,
49(4):269-283.
编辑吴云芳
157

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。