一种基于Zynq的CNN加速器设计与实现
2021-11-22张子恒王新宇
许 杰,张子恒,王新宇,佟 诚,梅 青,肖 建
(南京邮电大学 电子与光学工程学院、微电子学院,江苏 南京 210023)
0 引 言
卷积神经网络(convolutional neural network,CNN)广泛应用在图像识别[1]、目标检测[2]等领域。CNN所需的计算量和数据量巨大,单核数量和访存带宽有限的中央处理器(central processing unit,CPU)不能满足其吞吐量和存储量的设计要求,研究人员将CNN加速器的实现主要集中在图形处理器(graphics processing unit,GPU)、专用集成电路[3-4](application specific integrated circuit,ASIC)芯片和现场可编程逻辑门阵列[5-8](field programmable gate array,FPGA)等三类器件上。
GPU可以提供较高的并行度、矩阵计算和浮点运算能力,但巨大的功耗消耗使其难以应用在功耗与面积受限的应用平台。ASIC能够在特定功能上进行强化,具有更高的处理速度和更低的能耗。但是研发成本高,前期研发投入周期长、灵活性较差。FPGA比特级细粒度定制的结构、流水线并行计算的能力和高效的能耗,使得其在CNN加速器的研究中具有极大的优势。
同时,FPGA是半定制的硬件,通过编程可重定义其内部配置和链接,具有较大的灵活性。
近年来,越来越多的CNN加速器设计被提出。Zhang等人[9]提出了一种基于roofline模型在FPGA上的加速卷积神经网络。Qiu等人[10]提出了一种FPGA设计来加速嵌入式系统上的大规模图像分类挑战的CNN。苏黎世联邦理工学院团队基于SqueezeNet[11]模型训练出了适合在FPGA上运行的ZynqNet网络,并针对网络实现了FPGA硬件加速[12]。Li等人[13]提出了一种端到端的基于FPGA的CNN加速器,将所有的层都映射到片上,各层之间流水化实现,但只适合资源较多的FPGA。
文中先对Caffe[14]神经网络框架范例中的cifar10_quick[15]网络做微小的调整,然后设计相应的硬件加速器,并对每层的硬件加速策略做详细的阐述。……
