论文部分内容阅读
边缘计算及终端设备推理提供的大量设备和海量数据为神经网络真正影响、深入人们的生活提供了无限的可能。但是,神经网络对于庞大算力的需求和边缘及终端侧对于低功耗的需求之间难以调和的矛盾严重阻碍了神经网络的进一步发展和应用。低功耗、高能效的神经网络加速器成为了众多企业、研究机构的研究重点。为了实现高能效的神经网络加速器,研究者们进行了许多的尝试:在算法上进行合并、压缩、裁剪,设计专用于神经网络的专用领域架构,或者寻求新的计算范式。其中,一种新的、受启发于神经科学的计算范式—在存储计算,因其在能效上无可比拟的巨大优势受到了广泛的关注。传统的基于数字逻辑电路的神经网络加速器大多是基于冯.诺依曼架构的,其计算单元与存储单元是分离的。在进行诸如神经网络等具有数据密集特征的计算时,它不得不将计算所需的数据和计算结果在计算单元和存储单元之间来回搬运。这无疑会使得访存带宽成为整个系统的瓶颈,而数据的往复搬运也成为了整个系统最大的功耗来源之一。在存储计算是基于或非型闪存、忆阻器等非易失性存储器实现的。存储器的存储单元在存储数据的同时也被用作计算单元。因此,在存储计算技术能够避免传统数字加速器需要反复搬运大量数据的弊端,进而避免带宽瓶颈和访存引入的能耗问题。藉此,在存储计算成为了低功耗、高能效的神经网络加速器最有希望的实现方案之一。但是,现有的面向神经网络的在存储计算实现方案存在着许多问题。第一,许多在存储计算神经网络加速器的实现是基于完全二值化的神经网络的,这种极度压缩的神经网络在面对复杂应用时会引入较大的准确率损失。第二,现有的基于多比特的神经网络的在存储计算加速器多采用多级存储单元或者使用多个存储单元实现一次计算,这些方案需要更大的面积开销、更大的能量消耗、速度更慢、成本更高,相比于基于二值化的神经网络的加速器实现缺乏竞争力。第三,由于存储制造工艺限制了数字工艺的选择,在存储计算中数字逻辑的速度、能耗、面积、规模的提升都非常困难,无法从已有的成熟先进的数字工艺中获益。第四,现有的加速器多针对结构规整的深度卷积神经网络,对于新兴的、具有不规则性的图卷积网络缺乏支持,尤其是其缓存策略,几乎起不到任何作用。针对在存储计算技术中存在的问题,本文提出了一种异构的、混合精度的在存储计算方案,以实现高准确度、低功耗、灵活可实用的高能效在存储计算神经网络加速系统,并对针对新兴的图卷积网络的不规则性进行了缓存策略上的优化。本文的主要研究工作和创新点如下:(1)为了避免基于二值化神经网络的在存储计算加速器具有过高的准确率损失及基于多比特的神经网络的在存储计算加速器具有更高的资源、能耗开销的问题,本文提出了面向在存储计算的混合精度神经网络设计方法。该方案在量化神经网络及二值化神经网络的基础上针对在存储计算的特点对神经网络算法进行了优化,实现了一种混合精度神经网络。不同于原始算法全部采用高精度浮点数、量化神经网络采用固定精度量化或者二值化神经网络进行二值化的方式,选择将神经网络中少数比较重要的层量化到比较高的精度,将其他大多数重要性低的层二值化的方法,在相比于原始全精度网络基本上没有准确率损失的情况下,保证了网络整体仍具有较高的二值化比率,以便于在存储计算加速器的计算,并获得接近于基于二值化神经网络的在存储计算加速器的能效和性能。由于在计算时,多数计算都是二值化的、高能效的、高性能的,因此,完成整个神经网络计算的能耗相比完全的多比特神经网络在存储计算加速器大大减少。(2)为了支持上述的混合精度网络,本文优化了现有的在存储计算架构,提出了一种基于在存储计算的混合精度神经网络加速器架构。该架构同时实现了基于二值化方案的在存储计算和基于多比特方案的在存储计算,能够同时支持多比特量化神经网络和二值化神经网络的计算,进而实现了对混合精度神经网络计算的支持。针对基于二值化方案的在存储计算和基于多比特方案的在存储计算的不同特性,本文提出了多种电路优化技巧,以降低电路噪声、节省面积和功耗。本文提出了一种双模ADC,其具有电压和电流采样两种工作模式,可以分别支持基于二值化方案和多比特方案的在存储计算的测量需求。电压采样模式具有更高的精度,功耗也更高,适用于基于多比特方案的在存储计算的计算结果的测量。而电流采样模式则具有更低的精度、更快的速度和更低的功耗,适用于基于二值化方案的在存储计算的计算结果的测量。混合精度的在存储计算方案由于混合精度神经网络、混合精度架构及电路设计三方面的优化,同时实现了高准确率、低功耗和高能效。基于上述优化,本文基于65 nm的NOR Flash工艺设计并流片了一款基于NOR Flash的在存储计算芯片,根据实验结果,其能效比达到2.15TOPS/W,并在多种神经网络模型和数据集中取得了 93%-98%的预测准确度。(3)针对在存储计算中存储工艺限制了数字工艺,使得一些核心单元无法从工艺提升中获得收益的问题,本文提出了一种数字-在存储计算异构神经网络加速系统。该系统将网络中高并行需求、低控制需求、精度要求低的任务分配给在存储计算模块进行计算,而将其他任务分配给更加灵活的数字模块进行计算,并将系统绝大部分的功耗开销—模拟数字转换电路在数字模块中实现,从而大大提高了性能和能效。为了实现这一点,本文提出了一种基于FPGA的模拟互联,将FPGA上丰富的SERDES资源作为对在存储计算的结果进行测量的高速ADC来使用,以实现更少的连接数和更高的计算性能。通过对多种神经网络应用和数据集的测试,该系统能够在保证准确率不损失的情况下,将系统的性能提升26.7倍,能效比提升5.8倍。(4)新兴的图卷积网络相对于传统深度神经网络的不规则访存使得原有的缓存策略失效,大大影响了系统的访存效率,而图卷积网络恰恰对于访存带宽有极高的要求,使得这一问题进一步凸显出来。针对这一问题,本文提出了一种资源优化的、基于历史表学习的近似缓存方法。该方法利用现在的图卷积网络多基于静态图模型的特性,通过在运行时对图的结构进行学习来建立历史表,并通过近似缓存策略来选择出具有最高收益的数据进行缓存以节省宝贵的片上存储资源。