关键词:
卷积神经网络
专用集成电路
乘累加矩阵
Booth算法
Wallace Tree
摘要:
随着人工智能的迅猛发展,卷积神经网络(CNN)算法已经广泛应用于日常生活中,CNN算法的不断发展,模型复杂度不断提升,对计算、存储和访存带宽等方面的需求也随之增加。设计专用加速电路对CNN进行加速尤为重要。卷积运算是CNN算法的核心,在硬件实现中乘累加矩阵是实现卷积运算的基本运算模块,是卷积加速单元的最重要的组成部分,根据卷积运算的数据流特点,对Booth乘法器的电路结构以及数据的复用机制进行了深入研究,提出了一种基于输入输出寄存器复用的低功耗卷积神经网络加速单元架构。主要研究内容如下:
1、在分析卷积神经网络数据流的基础上,设计了一种特定数据流下的低功耗Booth乘法器,以乘累加矩阵中的单个乘法器为研究对象,深入分析了基-4以及基-16编码的Booth乘法器的结构特点,并对不同的编码方式的乘法器进行了电路实现以及功耗测试。经过对比选择在特定的CNN数据流下组合逻辑部分功耗最低的基-16Booth编码方式来实现卷积神经网络乘累加矩阵中的单个乘法器。
2、在对乘累加矩阵单个乘法器优化的基础上,提出了一种输入输出寄存器的复用机制。将一个输入通道寄存器复用到32个输出通道上,设计了一个规模为32×32的乘累加矩阵,在产生单个输出通道的结果时需要对32个输入通道的乘法器计算的部分积进行累加,为了提升乘累加矩阵的性能,设计了 Wallace压缩树来减小逻辑延迟,该压缩树将基-16Booth乘法器产生的部分积分为高八位以及低八位在压缩树中分别进行压缩并最终在累加模块中进行求和,并将结果通过输出通道间复用的寄存器进行输出,由此降低了乘累加计算单元的逻辑延迟提升了该乘累加矩阵性能。使用输入输出寄存器复用机制该乘累加矩阵的8bit寄存器数量由2048个减少到了 1057个,有效的减少了寄存器的数量,降低了功耗。
3、为了提高基于输入输出寄存器复用机制的卷积神经网络计算单元的效率,对乘累加矩阵的片上存储结构以及控制机制进行研究,设计了使用指令控制的控制方法,根据卷积神经网络数据流的特点设计了数据搬移、卷积、部分积累加和中间数据存储的运算指令,以最大程度的发挥该乘累加矩阵的计算性能,有效的提高了乘累加单元的计算效率。并使用Python建立的仿真验证平台对该低功耗卷积神经网络加速单元的功能进行了验证。
综上所述,本文实现了一个卷积神经网络加速单元,该设计采用SMIC40nm工艺库完成逻辑综合,并使用PT-PX工具进行了功耗评估,该加速器在计算Resnet-18的卷积块Block2时能效比达到了 3.36TOPS/W,具有较高的能效比,与当前的其他加速器相比具有一定的优势。