论文部分内容阅读
深度学习近年来在各方面都取得了突破性的进展,如语音识别、图像分类等。而卷积神经网络作为第一个成功训练的多层网络,更是被广泛应用。但是由于CNN的特殊计算模式,使得一般的通用处理器对CNN的实现效率不高且不能满足其性能要求。因此,各种基于DSP、FPGA以及ASIC的加速器迅速发展,尤其是基于FPGA的加速器得到更多研究者的青睐。对于CNN这种计算密集型的任务,基于SoC FPGA的硬件加速器和CPU的协同工作在性能和能效上提供了显著的优势。但是,目前的操作系统对各种不同功能的加速器提供的支持很少:操作系统不知道一个计算任务是在CPU上还是加速器上执行;操作系统对CPU和加速器在内存上共享的数据没有提供有效管理,如零拷贝、数据一致性等;而且,当前的操作系统也很难为加速器分配大片连续的物理内存空间。本文中,我们选择Xilinx Zynq平台为研究目标,定性地分析了数据共享的方法。除了利用Zynq平台设备的高性能AXI接口,我们还为基于FPGA的卷积神经网络加速器设计了一个新的内存管理系统。它为CPU和加速器提供了一个统一的虚拟内存空间,使得他们能够在操作系统的用户空间访问到相同的内存空间,同时保证了数据的一致性。为了把加速器应用到实际中去,我们选取了深度学习中较流行的一个学习框架-Caffe,对其进行了评测分析。对于Caffe中的计算瓶颈部分,我们利用卷积神经网络加速器对其进行了加速,极大的减少了程序的执行时间。在加速实现过程中,我们实现了Caffe中卷积运算到加速器的映射,并对卷积运算中的矩阵进行了分块计算。对于核心的卷积计算,通过加速器加速,我们实现了最高4.8的加速比,而对于整个Caffe应用来说,我们实现了全应用2.74的加速比。同时,本文还根据加速器平台搭建了一个图像分类的原型演示系统,通过开发平台的VGA接口,系统能够在显示器上显示分类结果。