论文部分内容阅读
近年来,随着处理器性能的快速发展以及存储器容量的不断提升,模拟人体大脑的神经网络算法成为了目前最流行的算法。该算法在很多领域表现出比传统算法更优越的性能,例如在网页搜索,图像分析,语音识别等方面。卷积神经网络(CNN)是针对图像分析所提出的一种神经网络算法,在2012年的Image-Net LargeScale Vision Recognition Challenge(ILSVRC)中,卷积神经网络算法击败传统图像算法获得第一名;2018年,在围棋领域,依靠卷积神经网络算法的AlphaGo击败了李世石,展现了卷积神经网络算法强大的潜力。但是,由于卷积神经网络参数多,运算量大,目前,该算法大多数情况下依赖图形处理器(GPU)进行运算。GPU虽然运算快,但是功耗较大,并不适合在嵌入式领域中应用,并且随着摩尔定律的失效,将神经网络算法移植到硬件实现的期望也越来越迫切。现场可编程门阵列(FPGA)具有更为灵活的硬件实现和比GPU更低的功耗,非常适合作为卷积神经网络的一种硬件实现设计。在实现方面,基于处理器和加速器外设实现的片上系统(SoC)与单纯使用加速器相比更具有灵活性。本文致力于实现一款低功耗,高性能功耗比的神经网络加速SoC,它不同于大多数SoC设计采用ARM硬核作为处理器,而是通过专门设计的低功耗RISCV处理器—Jearcore控制系统工作。RISC-V指令集为美国加利福尼亚大学伯克利分校计算机科学部为了学术研究创作出来的开源指令集。相比于ARM等商业指令集,其不但不需要高昂的授权费用,在结构上也更便于用硬件实现,较少的硬件实现决定了使用该指令集制作的处理器功耗更低,便于应用在嵌入式系统中。本文制作的加速SoC结构设计流程如下,首先利用高级语言仿真RISC-V处理器的行为,并以此为基础,搭建了五级流水线模型,解决处理器内部的指令冲突问题。为进一步提高处理器的性能,本文依次为处理器添加静态指令预测器,中断处理单元,乘除法器以及紧耦合寄存器。最终版处理器Dhrystone性能测试结果为1.501720 DMIPS/MHz,Coremark性能测试结果为3.350980 CoreMark/MHz。随后使用Vivado软件制作单个加速器外设模块,通过Vivado仿真软件完成其行为级的验证和仿真。在需要多个加速器同时工作的情况下,本文采用了多个加速外设级联的方式,实现了根据需求使用任意数量的加速器的同时,有效的减少了单个加速器使用的浮定点数转换模块和DMA数量,从而降低了功耗。最终,以Jearcore为基础,AXI为总线,通过Vivado的Block Design功能,连接了必要的GPIO、UART、摄像头驱动模块、HDMI模块、加速器模块等多个外设,并移植FatFS文件系统,实现了摄像头和SD卡两种图像输入方式。在参数方面,由Tensorflow生成神经网络参数,存储为二进制格式文件,并输出描述神经网络结构的Json文件,以供SoC系统读取。本文最终在NexysVideo开发板上验证,测试数据集为Mnist数据集,除浮点数转定点数带来的准确率损失(0.06%)外,并未引入新的错误。运行速度比单独使用Jearcore提升了6,865倍,功耗为1.274W,性能功耗比为1.658GPOS/W,高于目前常见的I5-9400f CPU和NVDIA GTX 1060GPU。实现了SoC的预期设计目标,达到了高性能功耗比和低功耗的要求。