开放科学(资源服务)标志码(OSID):
随着大数据、深度学习和云计算的不断发展,神经网络需要处理的数据量越来越大,对硬件算力的要求也日益提高。传统冯·诺依曼体系结构中内存单元和运算单元之间的大量数据流动会导致计算单元的长时间空闲,限制数据处理速度并进一步增加系统功耗[1]。相比传统冯·诺依曼体系结构,存算一体(Processing-in-Memory,PIM)体系结构将权值数据的存储与机器学习和神经网络算法中的向量矩阵乘法(Matrix-Vector Multiplication,MVM)运算在忆阻器件[2]上实现,成为解决访存瓶颈的有效途径。
尽管存算一体体系结构为解决存储墙问题提供了新的思路和方法,但是存算一体神经网络加速器的架构设计依然面临很多挑战。存算一体神经网络加速器架构设计需要对加速器进行精确的建模和仿真,模型中需要包含数据访存、指令译码等细节信息[3],并通过软件模拟器方式实现[4]。然而,对于大规模深度神经网络,软件模拟器仿真的时间开销往往是不可接受的。传统硬件模拟器虽然仿真时间短,但是仅支持单一的网络,灵活性较差[5-6]。本文提出一种基于现场可编程门阵列(Field Programmable Gate Array,FPGA)模拟的阻变神经网络加速器评估方法,同时设计硬件资源的软件分时复用方案,并在DIGILENT ZYBO-Z7开发板上进行阻变神经网络加速器评估方法的软硬件设计。
1 面向存算一体加速器的架构和指令集分析 1.1 忆阻器阵列的计算特性忆阻器阵列集成计算和存储功能,一般通过非易失性阻变随机访问存储器(Resistive Random Access Memory,ReRAM)[7]实现。在神经元结构中,突触可以根据其两端的神经元激励发生变化。在忆阻器阵列中,可在ReRAM器件两端外加电压改变电导[8]进行神经计算。如图 1所示,利用ReRAM器件的特性,可以外加输入数字电压(INP),将电压进行数模转换(DAC)得到模拟电压值,加在器件两端的模拟电压和器件预编程的电导通过欧姆定律和基尔霍夫定律计算得到流出器件的电流,将电流值进行模数转换(ADC)后得到计算的数字输出结果(OUT),实现存算一体的功能。
![]() |
Download:
|
图 1 ReRAM阵列向量矩阵乘法运算原理 Fig. 1 Principle of ReRAM array MVM operation |
存算一体神经网络加速器通常进行分层拓扑架构设计。文献[9]对存算一体神经网络加速器进行Chip、Tile、IMA、Crossbar的四层架构设计。Chip以集中网络的形式连接多个Tile;Tile通过共享总线连接多个IMA、累加器等功能单元;IMA通过共享总线连接多个Crossbar、数模转换器等功能单元。文献[10]给出Chip、Tile、VMM、Crossbar的分层拓扑架构设计,数据可在Tile间进行粗粒度的流水,减少Tile间不必要的数据流动。文献[11]实现Node、Tile、Core的三层架构设计,其中Core包含多个流水的MVM运算单元和三级指令流水线,数据在Core和Crossbar中都可进行流水计算,提升内部访存带宽[12]。
1.3 面向存算一体加速器的指令集分析相较传统神经网络加速器[13],存算一体神经网络加速器将标量计算尽量放在CPU上进行,向量计算的向量规模也无需特殊指定。AMBROSI等[14]于2018年提出一种存算一体神经网络加速器的指令集,相较传统神经网络加速器指令集[15]增加了在不同层次间进行数据搬运的指令,ANKIT等[16]于2020年又加入了进行外积计算的OPA指令及转置矩阵和向量乘法运算的MVTM指令,但不支持对ReRAM阵列的在线编程[17-18]。
2 基于FPGA模拟的阻变神经网络加速器 2.1 架构和指令集设计 2.1.1 架构设计为对神经网络各层运算进行有效的资源分配,提升内部带宽并减少不必要的数据移动,神经网络加速器需要进行分层拓扑架构设计,基于FPGA模拟的阻变神经网络加速器支持Core、Tile、Crossbar的三层架构。
如图 2所示,Crossbar主要进行向量和矩阵的乘法运算,每个Crossbar包含ReRAM阵列、保存输入输出数据的缓存单元、信号转换器等功能模块。Tile主要进行神经网络的层级运算,包含存放数据的SRAM、一定数量的Crossbar和用于将Crossbar的计算结果进行激活操作的向量运算单元(ALU)。Core中主要进行网络级别的运算,包含指令译码模块、一定数量的Tile、加载数据到各自Tile对应SRAM的数据加载单元(LU)、保存数据到动态随机访问存储器(Dynamic Random Access Memory,DRAM)的数据回存单元(SU)和进行池化操作的向量运算单元。DRAM保存编译产生的指令和数据,每个Core通过各自的指令队列连接在指令发射模块上接收指令,数据通过直接存储器访问(Direct Memory Access,DMA)传递给各个Core。
![]() |
Download:
|
图 2 阻变神经网络加速器架构 Fig. 2 Architecture of resistive neural network accelerator |
由于存算一体神经网络加速器的器件和架构特点以及神经网络的计算特性,因此存算一体神经网络加速器的指令集也有其特殊性。基于FPGA模拟的阻变神经网络加速器在传统神经网络加速器指令的基础上新增在线编程的LdWGT指令,用于配置SetTile等指令,加速器指令集设置如表 1所示。
![]() |
下载CSV 表 1 加速器指令集 Table 1 Instruction set of accelerator |
在上述架构和指令集模型下,基于FPGA模拟的阻变神经网络加速器的主要计算流程如图 3所示。
![]() |
Download:
|
图 3 阻变神经网络加速器计算流程 Fig. 3 Calculation procedure of resistive neural network accelerator |
本文设计的加速器包含了阻变神经网络加速器架构的所有主要功能模块,包括DMA、DRAM、指令发射模块、指令队列、指令译码模块、数据加载模块、数据回存模块、SRAM、向量计算单元和向量矩阵乘法运算单元。由于硬件规模的限制,各个Core、Tile、Crossbar的运算任务只能串行进行,阻变神经网络加速器的向量矩阵乘法运算单元主要通过乘累加树实现。对比图 2、图 4中的指令队列接收每个Core的指令并经由指令译码模块发送到各个功能模块中执行。在指令的执行过程中:所有的Tile都通过同一数据加载模块和数据回存模块执行Load、Store指令和SRAM进行交互;所有的MVM指令和ALU指令分别在向量矩阵乘法运算单元和向量计算单元中串行执行。
![]() |
Download:
|
图 4 阻变神经网络加速器硬件结构 Fig. 4 Hardware structure of resistive neural network accelerator |
ReRAM阵列的规模一般很大,但FPGA存储和运算资源有限,ALU和MVM指令运算能力有限,因此需要将权值矩阵和输入矩阵进行分割重组,每次进行小规模的运算,将运算结果按照数据索引进行相应的累加。通过对FPGA硬件资源的分时复用完成较大规模ReRAM阵列的模拟。
通过修改硬件结构可实现分时复用的硬件调度,但由于积累全部ReRAM阵列规模的输入数据和权重数据计算模块才能开始计算,且硬件上需要增加Buffer积累数据,同时计算单元在运行时也会长时间空等,造成不必要的性能损失,因此为降低硬件设计的复杂度并提升运行效率,本文设计加速器的软件库支持分时复用的软件调度。
2.2.2 加速器软件库设计由于硬件设计上的差异,表 1所述的指令集不能直接执行在阻变神经网络加速器上。设计C++软件库将表 1中的指令转换为硬件支持的指令,软件库同时支持硬件资源分时复用的软件调度。
1)指令重新翻译编译器生成的指令是面向ReRAM规模的指令,其读写和运算的数据规模均是ReRAM规模,而FPGA上实现的运算模块远达不到该规模,这样的指令送到硬件上执行仅求得小规模的部分和,与最终结果有很大的差距。因此,需要将数据切分为适配FPGA运算模块的大小进行运算,并对Store、Load、Pooling、Activation等指令增加index、size等字段并转换为适配运算模块的指令,保证转换前后的指令进行等价的操作。此外,由于ReRAM阵列的器件特性,因此LdWGT等部分指令无法在FPGA上执行。FPGA硬件资源有限,多Core多Tile的并行计算只能串行进行,Move等部分指令在串行系统中的功能与在并行系统中的功能有所差异。因此,对上述指令进行如表 2所示的指令转译。
![]() |
下载CSV 表 2 指令转译 Table 2 Instruction translation |
2)软件分时复用调度不改变硬件结构,而是在运行时对保存在DRAM上的指令内容和数据排布方式进行调整,硬件上执行的依旧是与算力相匹配的指令。将ReRAM规模的输入向量和输出向量切分为
![]() |
Download:
|
图 5 MVM运算调度 Fig. 5 Scheduling of MVM operation |
通过指令的重新翻译和MVM运算的调度,可以灵活地将更多的神经网络框架编译成基于FPGA模拟的阻变神经网络加速器支持的指令集,从而支持更多网络的性能评估。
3 实验与结果分析 3.1 实验环境选取DIGILENT ZYBO-Z7开发板进行基于FPGA模拟的阻变神经网络加速器的软硬件设计。DIGILENT ZYBO-Z7集成Xilinx ZYNQ-7020芯片和ARM Cortex-A9处理器核。ARM Cortex-A9处理器上移植Ubuntu 18.04操作系统对硬件运行时进行控制。FPGA芯片上实现了主要的运算和控制逻辑,资源使用情况如表 3所示,FPGA片上存储(BRAM)和乘累加运算资源(DSP)已被充分利用。
![]() |
下载CSV 表 3 FPGA资源使用情况 Table 3 FPGA resources usage |
在实验环境的约束下,阻变神经网络加速器工作在100 MHz主频的时钟下,单周期可以获得1个
为评估加速器对阵列仿真的加速性能,选取存算一体神经网络加速器软件模拟器MNSIM[19]进行对比。针对不同规模的ReRAM阵列,阻变神经网络加速器的仿真时间和加速比如表 4所示。加速器主要通过提供并行的运算单元和流水运算对MVM操作进行硬件加速,但由于访存延迟无法忽略,因此对于不同规模的阵列,仿真时间并没有成倍增加。MNSIM软件仿真平台主要通过高主频的CPU串行完成MVM,随着阵列规模的提升,MNSIM的仿真时间显著增加,本文提出的阻变神经网络加速器评估方法可加速40.0~252.9倍。
![]() |
下载CSV 表 4 加速器对不同规模ReRAM阵列仿真的加速效果 Table 4 Acceleration effect of accelerators on ReRAM array simulation of different scales |
为评估加速器对神经网络仿真的加速性能,选取软件模拟器DNN NeuroSim[20]进行对比,为与本文提出的神经网络加速器的功能相匹配,省略了模拟器对功耗和面积的估算。映射VGG-8、Resnet等深度神经网络,并在Intel® CoreTM i5-8500处理器上运行模拟器。图 6给出了对比结果,其中纵坐标的执行时间已经过对数处理,对于小规模神经网络,本文提出的神经网络加速器可以获得129.2倍的加速比。对于深度神经网络Resnet,随着网络层数的提升,本文提出的阻变神经网络加速器评估方法可以获得194.7~234.2倍的加速比。
![]() |
Download:
|
图 6 加速器对神经网络仿真的加速效果 Fig. 6 Acceleration effect of accelerators on neural network simulation |
针对阻变神经网络加速器的软件仿真速度慢、硬件模拟灵活性差等问题,本文提出一种基于FPGA模拟的阻变神经网络加速器评估方法,通过软件库指令的重新翻译和MVM运算调度,实现多层次存算一体架构和指令集的行为仿真以及主流神经网络的快速性能评估。实验结果表明,本文评估方法相比MNSIM和DNN NeuroSim软件模拟器在仿真过程中运行速度更快。由于ReRAM器件的非理想特性,ReRAM阵列在进行向量矩阵乘法运算时会产生误差,因此后续将在基于FPGA模拟的阻变神经网络加速器评估方法中加入ReRAM器件的非理想特性模型,以评估其对神经网络预测结果的影响,提升评估方法的精确度和可靠性。
[1] |
HOROWITZ M. 1.1 Computing's energy problem(and what we can do about it)[C]//Proceedings of 2014 IEEE International Solid-State Circuits Conference. Washington D.C., USA: IEEE Press, 2014: 10-14.
|
[2] |
CHUA L. Memristor-the missing circuit element[J]. IEEE Transactions on Circuit Theory, 1971, 18(5): 507-519. DOI:10.1109/TCT.1971.1083337 |
[3] |
SHAO Y S, XI S L, SRINIVASAN V, et al. Co-designing accelerators and SoC interfaces using gem5-Aladdin[C]//Proceedings of the 49th Annual IEEE/ACM International Symposium on Microarchitecture. Washington D.C., USA: IEEE Press, 2016: 1-12.
|
[4] |
BINKERT N, BECKMANN B, BLACK G, et al. The gem5 simulator[J]. ACM SIGARCH Computer Architecture News, 2011, 39(2): 1-7. DOI:10.1145/2024716.2024718 |
[5] |
LUO T, WANG X, QU C P, et al. An FPGA-based hardware emulator for neuromorphic chip with RRAM[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2020, 39(2): 438-450. DOI:10.1109/TCAD.2018.2889670 |
[6] |
TOLBA M F, HALAWANI Y, SALEH H, et al. FPGA-based memristor emulator circuit for binary convolutional neural networks[J]. IEEE Access, 2020, 8: 117736-117745. DOI:10.1109/ACCESS.2020.3004535 |
[7] |
WONG H S P, LEE H Y, YU S M, et al. Metal-oxide RRAM[J]. Proceedings of the IEEE, 2012, 100(6): 1951-1970. DOI:10.1109/JPROC.2012.2190369 |
[8] |
JI Y, ZHANG Y Y, XIE X F, et al. FPSA: a full system stack solution for reconfigurable ReRAM-based NN accelerator architecture[C]//Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems. Washington D.C., USA: IEEE Press, 2019: 733-747.
|
[9] |
SHAFIEE A, NAG A, MURALIMANOHAR N, et al. ISAAC: a convolutional neural network accelerator with in-situ analog arithmetic in crossbars[J]. ACM SIGARCH Computer Architecture News, 2016, 44(3): 14-26. DOI:10.1145/3007787.3001139 |
[10] |
HAN J H, LIU H, WANG M Y, et al. ERA-LSTM: an efficient ReRAM-based architecture for long short-term memory[J]. IEEE Transactions on Parallel and Distributed Systems, 2020, 31(6): 1328-1342. DOI:10.1109/TPDS.2019.2962806 |
[11] |
ANKIT A, HAJJ I E, CHALAMALASETTI S R, et al. PUMA: a programmable ultra-efficient memristor-based accelerator for machine learning inference[C]//Proceedings of the 24th International Conference on Architectural Support for Programming Languages and Operating Systems. Washington D.C., USA: IEEE Press, 2019: 715-731.
|
[12] |
WANG Y T, CHEN F, SONG L H, et al. ReBoc: accelerating block-circulant neural networks in ReRAM[C]//Proceedings of 2020 Design, Automation & Test in Europe Conference & Exhibition. Washington D.C., USA: IEEE Press, 2020: 1472-1477.
|
[13] |
CHEN Y J, CHEN T S, XU Z W, et al. DianNao family: energy-efficient hardware accelerators for machine learning[J]. Communications of the ACM, 2016, 59(11): 105-112. DOI:10.1145/2996864 |
[14] |
AMBROSI J, ANKIT A, ANTUNES R, et al. Hardware-software co-design for an analog-digital accelerator for machine learning[C]//Proceedings of 2018 IEEE International Conference on Rebooting Computing. Washington D.C., USA: IEEE Press, 2018: 1-13.
|
[15] |
LIU S L, DU Z D, TAO J H, et al. Cambricon: an instruction set architecture for neural networks[C]//Proceedings of the 43rd Annual International Symposium on Computer Architecture. Washington D.C., USA: IEEE Press, 2016: 393-405.
|
[16] |
ANKIT A, HAJJ I E, CHALAMALASETTI S R, et al. PANTHER: a programmable architecture for neural network training harnessing energy-efficient ReRAM[J]. IEEE Transactions on Computers, 2020, 69(8): 1128-1142. DOI:10.1109/TC.2020.2998456 |
[17] |
AMBROGIO S, BALATTI S, CUBETA A, et al. Statistical fluctuations in HfOx resistive-switching memory: part I-set/reset variability[J]. IEEE Transactions on Electron Devices, 2014, 61(8): 2912-2919. DOI:10.1109/TED.2014.2330200 |
[18] |
ZHANG S H, ZHANG G L, LI B, et al. Aging-aware lifetime enhancement for memristor-based neuromorphic computing[C]//Proceedings of 2019 Design, Automation & Test in Europe Conference & Exhibition. Washington D.C., USA: IEEE Press, 2019: 1751-1756.
|
[19] |
XIA L X, LI B X, TANG T Q, et al. MNSIM: simulation platform for memristor-based neuromorphic computing system[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2018, 37(5): 1009-1022. |
[20] |
PENG X C, HUANG S S, LUO Y D, et al. DNN+NeuroSim: an end-to-end benchmarking framework for compute-in-memory accelerators with versatile device technologies[C]//Proceedings of 2019 IEEE International Electron Devices Meeting. Washington D.C., USA: IEEE Press, 2019: 1-4.
|