论文部分内容阅读
随着集成电路设计和制造工艺的进步,具有高速、高密度可编程逻辑资源的现场可编程门阵列(Field Programmable Gate Array,FPGA)得到了快速发展,单芯片的集成度越来越高。当前主流的FPGA芯片中包含了大量的可编程逻辑资源、可编程互联资源、存储资源,并通过集成DSP硬核支持高性能乘法部件的实现,这些特点使得FPGA成为实现计算密集型应用加速的一种非常重要的选择。在众多的计算密集型应用中,卷积神经网络(Convolutional Neural Network, CNN)作为典型的多层神经网络始终处于研究的核心地位,对其进行深入的研究,在模式识别、科学计算等领域具有重要的理论意义和应用价值。卷积神经网络的并行体系结构是CNN整体计算架构的基础和核心。本文在现有工作的基础上,系统地研究了卷积神经网络并行结构,主要的研究内容包括以下几个方面:卷积神经网络的计算具有多种并行特征,如何根据不同的并行计算特征设计相应的并行结构,充分开发和利用CNN计算的并行性是卷积神经网络并行计算的一个关键问题。本文基于“主机+FPGA”的计算架构,确定卷积神经网络并行计算单元在整个CNN计算架构中的地位以及与其他部件的接口,设计了一种可配置的CNN计算单元并行结构,该结构采用交叉互联开关控制输入和输出特征映射图与CNN计算单元的连接。应用示例表明该结构能够根据卷积神经网络层内计算的不同特征配置相应的计算结构,有利于充分开发卷积神经网络层内计算的并行性,提高卷积神经网络计算性能。由于FPGA硬件资源的限制,完全并行的CNN计算结构无法在FPGA上实现,只能对部分卷积核进行并行计算,如何把大量的卷积核循环语句映射到数量有限的计算单元仍然是一个需要解决的问题。通过给出CNN层内计算模型的循环表示,然后根据不同的并行计算结构对层内计算进行划分,实现对多个循环迭代的卷积核循环语句调度执行;通过给出不同划分方法的代价函数,能够在资源约束的条件下,获取不同并行计算结构的执行性能,进而为卷积神经网络并行计算结构的选择提供全面和精确的信息。卷积核计算单元的执行效率在很大程度上决定着整个卷积神经网络的性能,其中数据缓存结构的设计是二维卷积计算单元设计中的一个关键问题,缓存结构设计的优劣决定着卷积计算单元的硬件实现代价和性能。现有的二维卷积计算单元的内部缓存结构在实际应用中存在各种不足。本文针对如何提高片上存储资源使用效率的问题,提出了一种存储面积优化的数据缓存结构,采用寄存器轮转策略充分开发卷积计算中的数据重用,实验结果表明该结构提高了对片外存储器带宽和片上存储资源的利用率;针对如何在存储带宽受限条件下,充分开发卷积计算内在并行性和提高输出数据吞吐率的问题,提出了带宽优化的数据缓存结构,该结构通过采用固定带宽的数据广播策略和单数据流驱动的流水线方式,充分利用了片上移位寄存器资源,实验结果表明该结构在满足输出数据吞吐率最大化的条件下,减少了对片外存储带宽的需求。如何确定卷积神经网络应用不同层中特征映射图的数量是卷积神经网络拓扑结构设计中的一个关键问题,本文在对现有卷积神经网络应用拓扑结构研究的基础上对CNN各层特征映射图数量进行设计空间探索,设计了特征映射图数量可配置的卷积神经网络应用C模型,并在NetBatch分布式计算平台进行训练和测试。实验结果表明,该方法能够确定一类卷积神经网络应用不同层特征映射图数量的边界值,为卷积神经网络应用寄存器传输级(Register Transfer Level,RTL)设计提供较为精确的拓扑结构信息。