论文部分内容阅读
随着深度学习技术在众多领域的广泛使用,作为其基础模型的卷积神经网络(Convolutional Neutral Network,CNN)也越来越受重视,被广泛应用在图像分类、人脸识别、语言检测、文档分析等诸多领域。但是仅用软件方式加速卷积神经网络已经不能满足日益增长的速度与功耗要求,如何利用硬件设计卷积神经网络加速器已经成为学术领域的研究热点。FPGA(Field-Programmable Gate Array)作为并行化的计算密集型加速硬件,拥有卓越的性能功耗比,对比GPU、ASIC具有独特优势。但是实际使用中,如何高效地利用FPGA有限的片上资源,以较少的资源获得更高的性能,如何设计出更通用的FPGA硬件架构或模块都存在巨大的挑战。本文提出了一种高效卷积模块ECM(Efficient Convolutional Module),它包含4个PE(Processing Element)单元,每个PE单元负责一张输出特征图的计算,采用级联串推的方式在PE单元间传递卷积数据和卷积参数。为了解决层串行模式反复读写外部存储器的问题,制定了双缓冲的存储机制用于将中间计算结果存储到FPGA片内。并且设计了输入寄存器的数据缓存和分发方式,以及PE单元和池化模块的内部结构。整个高效卷积模块由ECM控制模块负责各单元间的管理和调度,其中控制状态机掌控高效卷积模块在空闲、填充、运算和等待四种状态间的转换。根据卷积神经网络的共有特性,设计了基于FPGA的CNN硬件加速器整体通用架构,该架构解决了反复读写片外存储器降低整体计算速度的问题,同时改善了层串行模式因计算分布不均浪费DSP资源的情况。整个架构中包含多组高效卷积模块,各模块间通过广播方式共享卷积数据,另外设计了图像缓冲、输出缓冲与权值缓冲的内部结构。整体控制模块一方面负责与PS端实现命令交互,完成运算配置,另一方面负责整个运算过程的控制。最后基于本文提出的通用架构,结合ZynqNet模型设计并实现了FPGA硬件加速器。为了进一步提升速度,本文将ZynqNet的计算精度由32位浮点降至16位浮点。PE单元设计时仅用11个DSP便完成了3×3卷积的运算,利用FPGA有限的计算资源共设计了64个PE单元,提升了网络的并行度,实验结果表明,在ImageNet测试准确度相同的情况下,本文设计的加速器工作频率可达200MHz,计算速度是原有ZynqNet加速器的10倍,相比i5-5200U CPU可实现20倍加速。同时,其性能功耗比达到了NVIDIA GTX 970 GPU的5.4倍。