论文部分内容阅读
近些年来,深度学习已经成为了一个热门的研究领域,其中卷积神经网络(Convolutional Neural Network,CNN)已经在诸如文字辨认、图片分类、目标检测等很多深度学习的领域上取得了巨大的成功。然而在一个CNN模型的前向推理计算过程中,往往需要百万次甚至上亿次浮点乘累加运算以及浮点参数的存储,使用传统的CPU或者GPU并不能充分挖掘CNN内部并行计算的特性。FPGA具有低功耗、灵活可编程和开发周期短的特点,其内部的逻辑单元能够以较低的功耗完成并行计算的任务,因此FPGA是CNN加速协处理器设计的理想选择。本课题基于Xilinx公司的Zynq系列FPGA,利用其CPU+FPGA的异构SoC开发平台,采用Verilog HDL硬件描述语言研究实现了 CNN专用异构加速协处理器。其中CPU完成软件程序部分的发送图片、轮询、中断、显示分类结果等任务,FPGA完成CNN模型的具体计算任务。本文首先对CNN的历史发展以及CNN加速协处理器的研究现状进行了介绍,然后通过对CNN前向推理的计算过程以及整体结构进行分析,详细探讨了计算过程中存在的并行性,并提出了不同并行性的实现方法及其相应的资源和带宽需求。针对广泛应用于手写体数字识别的卷积神经网络LeNet-5,本文首先利用英特尔动态网络裁剪技术将网络模型的大小进行了压缩,然后利用英特尔增量网络量化技术将模型中32比特的浮点参数量化为8比特的定点参数,并进一步优化为5比特参数来设计专用的“定点移位乘法器”。本文使用Verilog语言分别设计了乘累加阵列、池化采样、激活函数和四舍五入等计算模块,并基于流水线技术的设计思想将各计算模块进行整合,最终形成了计算精度为8比特的CNN硬件计算电路,实现了 LeNet-5网络的前向推理计算。以此为基础,本文提出了两种不同的异构SoC系统,并分别介绍了两套系统的整体架构、缓存策略以及PS和PL的设计。然后基于对SoC系统的建模,对两套系统分别进行了仿真验证。针对Mnist测试集的10000张测试图片,本设计达到了 98.9%的识别精度。实验结果表明,在优化的SoC系统中,FPGA在100Mhz的时钟频率下完成一幅手写体数字图片的推理计算耗时24us,其均值计算能力达到了 15.21GMAC/s,峰值计算能力达到了 33.6GMAC/s,性能功耗比为6.8890GMAC/W,性能功耗比为通用CPU的1520倍,通用GPU的160倍,其中CPU为英特尔i5-8400处理器,GPU 为 GTX-1050Ti 显卡。