北京大学学报(自然科学版) 第60卷 第5期 2024年9月
Acta Scientiarum Naturalium Universitatis Pekinensis, Vol. 60, No. 5 (Sept. 2024)
doi: 10.13209/j.0479-8023.2024.066
收稿日期: 2023–10–18;
修回日期: 2024–03–01
摘要 为了解决北京大学脉冲神经网络芯片 PAICORE2.0 类脑终端系统中软件编码和转帧过程速度较慢的问题, 提出一种硬件加速方法。通过增加硬件加速单元, 将 Xilinx ZYNQ 的处理系统 PS 端串行执行的软件编码转帧过程转移到可编程逻辑 PL 端的数据通路中流水化并行执行。硬件加速单元主要包含高度并行的卷积单元、参数化的脉冲神经元和位宽平衡数据缓冲区等。实验结果表明, 该方法在几乎不增加数据通路传输延迟的前提下, 可以消除软件编码和转帧过程的时间开销。在 CIFAR-10 图像分类的例子中, 与软件编码和转帧方法相比, 硬件编码转帧模块仅增加 9.3%的 LUT、3.7%的 BRAM、2.6%的 FF、0.9%的 LUTRAM、14.9%的 DSP 以及 14.6%的功耗, 却能够实现约 8.72 倍的推理速度提升。
关键词 脉冲神经网络芯片; PAICORE2.0; ZYNQ; 脉冲编码; 硬件加速; 卷积加速单元
近年来, 基于脉冲神经网络(spiking neural net-work, SNN)的神经形态芯片技术发展迅速。神经形态芯片通过神经元和突触来模拟人脑的计算行为, 其中神经元负责信号处理, 突触负责调节神经元之间的连接强度。相较于 CPU 和 GPU 等计算单元, 神经形态芯片具有并行度高、功耗低以及自适应学习等特点。2015 年, IBM 的 Akopyan 等[1]研发的TrueNorth 芯片, 以 28nm 数字电路工艺制造, 集成 4096 核心、1M 神经元和 256M 突触, 已在动态图像识别、生物医学图像分割和脑电信号分类等领域中得到应用[2–3]。2018 年, Intel 的 Davies 等[4]研发的 Loihi 芯片, 以 14nm 数字电路工艺制造, 集成128 核心、128K 神经元和 128M 突触, 已在人工嗅觉、语音交互和图像检索等场景中得到应用。2019年, 清华大学 Deng 等[5]研发的天机芯, 以 28nm 数字电路工艺制造, 集成 156 核心、40K 神经元和 1M 突触, 实现具有语音识别、目标锁定和障碍辨别等功能的自动驾驶自行车[6]。北京大学 Kuang等[7]和钟毅[8]相继发布 PAICORE1.0 和 PAICORE2.0 神经形态芯片, 其中 PAICORE2.0 基于 28nm 工艺制造, 单颗芯片集成 1024 核心、192 万神经元和 47亿神经突触, 支持 ANN/SNN 两种工作模式及 STDP在线学习规则等功能。
与人工神经网络(artificial neural network, ANN)不同, 脉冲神经网络的输入数据为脉冲化形式。因此, 常见的图像和语音等非脉冲化信号需要先进行编码, 再输入脉冲神经网络。目前, 大部分神经形态芯片采用软件方式进行编码运算。例如, 浙江大学 Deng 等[9]发布达尔文(Darwin)芯片, 采用自研DarwinOS 进行软件编码; TrueNorth 芯片基于 C++自研 API 框架[10], 可根据实际场景, 在嵌入式 ARM或服务器 CPU 中进行软件编码。类似地, PAICO-RE2.0 部署系统使用片外 ZYNQ 的 PS(processing system)端运行的软件工具链完成编码过程。然而, 根据实验测试, 软件编码过程的耗时已超过芯片推理过程的耗时, 严重地影响推理速度, 造成部署系统的性能瓶颈, 因此亟需一种加速方法。Intel 的第一代Loihi 芯片采用嵌入式处理器进行软件编码, 第二代 Loihi 芯片改用硬件编码单元进行编码加速[11], 但未给出具体的加速策略。Fang 等[12]为其脉冲神经网络 FPGA 加速器开发了一种硬件编码加速单元, 能够编码生成固定序列的脉冲, 但未提供卷积编码的加速方法。
本研究提出一种硬件加速方法, 针对 PAICO-RE2.0 终端系统, 在 Xilinx ZYNQ 的可编程逻辑(pro-grammable logic, PL)端的数据通路上增加并行流水化编码转帧加速单元。该方法首先采用硬件并行计算过程替代串行计算过程, 将编码速度提升数倍, 然后利用系统级流水化操作, 结合软件工具链的适配, 将编码计算耗时掩盖在数据传输过程中, 进一步降低总体耗时。
PAICORE2.0 片内共 1024 个 LIF 神经元, 片内采用胖树型路由结构, 对外拥有 32 组 Valid-Ready异步握手数据通道。我们开发了 PAICORE2.0 的终端系统, 如图 1 所示。
PAICORE2.0 终端系统使用 ZYNQ-7100 与 PA-ICORE2.0 芯片联合搭建, 其中 ZYNQ 的作用如下。
图1 PAICORE2.0 终端系统框架
Fig. 1 Framework of PAICORE2.0 edge computing system
1) ZYNQ 的 PS 端: ARM Cortex-A9 处理器, 运行基于 Linux 的 PYNQ 开源框架[13], 并采用 Python实现基本的软件工具包(software development kit, SDK)与软件工具链(software toolchain)。
2) ZYNQ 的 PL 端: 采用 AXI4-DMA 模块与 PS端 DDR 进行数据交互, 并经过 FIFO 缓冲和传输控制器等模块, 通过异步 Sender/Receiver 模块与芯片进行握手和传输数据。受限于 PL 端的 IO 数量, 本方案仅连接 PAICORE2.0 的一组输入端口和一组输出端口。
PAICORE2.0 终端系统分为如下两个模式。
1)配置模式: SDK 通过 UART 配置工作频率和门控时钟等基本参数; 通过工具链将预先训练好的模型参数转换为配置帧格式; 通过 PL 端将配置帧送入 PAICORE2.0 芯片进行配置。
2)工作模式: SDK 通过以太网和 USB 等接口, 实时采集模型的输入数据; 通过工具链, 将输入数据完成编码和转帧过程; 通过 PL 端, 将数据帧送入PAICORE2.0 芯片进行推理。
与 ANN 不同, SNN 的输入数据为脉冲化形式。常见的编码方式有时间编码、频率编码以及各种衍生编码方式[14]。时间编码关注时间步长(timestep)内第一个发射脉冲的位置以及接受刺激到发射脉冲的时间间隔等关键信息。频率编码用时间步长内发射脉冲的频率来体现刺激的强弱程度, 刺激越强, 脉冲发放频率越高; 刺激越弱, 脉冲发放频率越低。并且, 频率编码并不考虑脉冲发射的具体位置和时间间隔。
频率编码的优势在于鲁棒性高, 抗噪声性能更好, 因此被广泛应用于许多领域, 特别是将预训练ANN 模型转换为 SNN 模型的场景中。频率编码的实现方式通常有泊松编码和卷积编码等[15]。泊松编码将输入数据编码为发放次数分布符合泊松过程的脉冲序列。卷积编码在网络入口处增加一层卷积层, 并将这一层定义为编码层。在训练时, 将卷积层和后续的网络层一起训练, 因此卷积编码的参数来源于训练过程[15], 可以有效地适应不同的网络 模型。
图 2 以三通道输入图像为例, 展示编码、转帧、推理和解码的过程。卷积编码包括两部分, 第一部分为卷积层, 将输入的非脉冲化数据经过一层卷积网络, 进行特征图提取; 第二部分为 IF(integrate and fire)神经元, 连续送入时间步长次特征图数据, 对输入特征数据进行脉冲化编码。通过卷积编码方式, 编码层同时具有特征图提取和频率编码两项功能, 因此编码性能优异。
图2 三通道图像数据编码、转帧、推理和解码过程
Fig. 2 Encoding, frame generation, inference and decoding workflow of RGB image data
在现有的终端系统中, 图 2 中编码、转帧和解码 3 个过程在 PS 端软件工具链中运行, 推理过程在PAICORE2.0 芯片中运行。解码过程中只需要统计少量输出帧的频率即可, 因此计算量较小。编码过程中, 由于涉及卷积以及模拟 IF 神经元行为等运算, PS 端计算耗时较大。
PAICORE2.0 的数据帧均为 64 比特, 具体规则如下。
1)配置帧: 用于配置芯片的参数, 例如模型参数和片内神经元阈值电压等。
2)工作帧: 工作模式下的输入帧, 包括 3 个 部分。
a)初始化帧: 用于清空芯片内残留脉冲, 重置时间步长和膜电位等。
b)脉冲帧: 输入信号编码后得到的脉冲帧, 即芯片的有效工作负载。
c)同步帧: 用于启动芯片的时间步长计数, 激活处理核进入工作状态。
转帧过程是将编码后的脉冲数据转换为适配PAICORE2.0 的脉冲帧。脉冲帧主要由片内神经元地址(Chip, Core和Axon)、时间隙(Timeslot)和有效负载(Loaddata)等关键域段构成。
在芯片配置阶段, 工具链通过特定算法, 穷举特征点与片内神经元的全部映射关系, 确定最优的模型映射关系, 并生成一张映射关系表[16]。映射关系表由编码输出的特征图坐标进行索引(Index), 表中存储片内神经元地址, 每一个特征点坐标对应一个片内神经元地址。
在芯片工作阶段, 每一笔编码脉冲均需要执行转帧过程。转帧过程分为两步, 第一步通过发放脉冲特征点的坐标索引查找映射表, 得到片内神经元地址; 第二步组合时间步长和有效负载等其他域段信息, 构成脉冲帧。
编码过程涉及卷积等大量乘加操作, 转帧过程涉及大量查表和位拼接操作, PS 与 PAICORE2.0 通过 PL 端的 FPGA 进行上下行数据传输, 而 FPGA 非常擅长并行计算、查找表和位拼接等操作。因此, 本文提取 PS 端软件工具链中涉及编码和转帧的操作, 将其硬化为加速单元, 并置于 FPGA 的下行通路中, 如图 3 所示。
加速单元由脉冲编码器(spike encoder)和帧生成器(frame generator)两部分组成(图 4)。其中, 脉冲编码器包括高度并行卷积单元、位宽平衡数据缓冲区和 IF 神经元组等。帧生成器根据产生脉冲的特征点坐标查找映射表, 得到片内神经元地址, 并与时间步长等信息拼接为 PAICORE2.0 所需的脉冲帧。
高度并行卷积单元的设计主要基于以下两点考虑。一是要求输入数据和卷积核提供的带宽足够大, 延迟足够低; 二是要求卷积计算单元的并行度足够高, 能够及时处理输入的数据和权重。
如图 5 所示, 卷积单元主要由卷积核、输入缓冲行与滑动窗口、卷积计算单元三部分组成。图 5中定义的参数分别为输入高度(input height, IH)、输入宽度(input width, IW)、输入通道(input channel, IC)、输出高度(output height, OH)、输出宽度(out-put width , OW)、输出通道(output channel, OC)、卷积核高度(kernel height, KH)和卷积核宽度(kernel width, KW)。
图3 含加速单元的PAICORE2.0终端系统框架
Fig. 3 Framework of PAICORE2.0 edge computing system with acceleration unit
图4 加速单元基本框架
Fig. 4 Framework of acceleration unit
图5 高度并行卷积单元框架
Fig. 5 Framework of highly parallel convolution unit
卷积核采用 AXI-Lite 可配置平铺的寄存器组方式设计, 并按通道将权重直接连接到乘法阵列, 将偏置直接连接到加法阵列。这样就可以保证乘法单元和加法单元零延迟地访问权重, 避免计算单元读写权重的延迟。
如图 5 所示, 输入数据按照先行后列的顺序串行输入, 每个时钟周期内并行送入 IC 个数据。执行卷积运算时, 需要提供 KH×KW 尺寸的滑动窗口, 因此要求至少缓存 KH 行的输入数据, 才能开始执行卷积运算。一种简单的方法是, 在 FPGA 片上开辟大容量缓存空间, 等待全部的输入数据写入缓存空间后, 再从缓存空间内选取 KH×KW 大小的滑动窗口。然而, 这种方法有两个很大的缺点。一是缓存空间要能存储全部输入数据, 面积开销很大; 二是要等待缓存完成后才能启动滑动窗口的读取, 第一个滑动窗口的延迟较大。
因此, 本文设计一种新方案——输入缓冲行单元。输入缓冲行将输入数据按照输入通道进行拆分, 在每个输入通道内维护 KH 个深度为 IW 的缓冲行, 其中 KH–1 个缓冲行采用移位寄存器实现, 每个缓冲行由输入信号旁路形成。在每个时钟周期内, 若存在有效数据移入, 所有缓冲行同时右移一位, 并行输出一列数据。缓冲行的输出端设置尺寸为 KH×KW 的滑动窗口, 其中 KW–1 列由寄存器构成, 1 列由缓冲行的输出旁路形成。在每个时钟周期内, 若存在缓冲行的一列有效数据移入, 滑动窗口中的所有列右移一位, 形成新的滑动窗口。输入缓冲行单元以较小的面积开销, 保证每个时钟周期输出IC 个滑动窗口, 可以为计算单元提供高带宽的输入数据。
如图 5 所示, 卷积计算单元由乘法阵列和两级华莱士加法树组成。为了提高卷积计算的并行度, 乘法阵列内部采用 KH×KW×IC×OC 个乘法单元, 可在一个时钟周期内完成所有通道的滑动窗口与权重的乘法运算。为了降低 DSP 资源的消耗, 采用每两个乘法单元共用一个 DSP48E1 的方法[17], 其中DSP48E1 的 B 通道作为共享的输入数据, DSP48E1的 A 和 D 通道作为两个输出通道的 8bits 卷积核参数的拼接。乘法的计算结果需要进行大量的累加操作, 会导致加法树的延迟较高, 造成时序难以收敛。因此, 本文采用华莱士树[18]的加法树结构, 通过优化进位链的位置来降低时序收敛的难度。第一级华莱士加法树对每个输入和输出通道内的所有乘法结果进行分别累加, 第二级华莱士加法树对每个输出通道内的累加数据和偏置进行累加。
图 6 给出卷积单元的关键信号波形图。由于缓冲行和滑动窗口均有一部分采用信号旁路的方式, 输入缓冲行经过初始的填充周期后, 就可以在输入数据的当拍给出滑动窗口。乘法运算单元底层采用DSP48E1 基本单元, 输出数据有 4 个时钟周期的延迟, 但可以实现流水化计算。每个华莱士树加法树后接一级寄存器, 进一步优化时序, 因此每一级有一个时钟周期的延迟。
综上所述, 通过零延迟卷积核、移位寄存器缓冲行和滑动窗口、通道级并行的卷积计算单元 3 种设计方法, 结合流水化设计, 实现低延迟的高度并行卷积单元。
IF 神经元是简化的 LIF 神经元, 只包含累积和发放两个过程, 不包含泄露过程。如图 7 所示, 在每个时间步长内, IF 神经元累加输入和膜电位, 若累加值未超过阈值电压, 则将膜电位更新为累加值; 若累加值超过阈值电压, 则发放脉冲, 并将膜电位恢复至初始态。IF 神经元的阈值电压参数由软件工具链生成, 并通过 AXI4-Lite 接口配置。所有的硬件神经元共享一个时间步长计数器, 计数范围为0~Timestep–1, 在每个时钟周期内进行累积–发放过程。
图6 高度并行卷积单元的关键信号波形图
Fig. 6 Waveform of key signals in highly parallel convolution unit
图7 IF神经元组结构图
Fig. 7 Structure of IF neuron group
图8 3种方案消耗的时钟周期示意图
Fig. 8 Diagram of clock cycles consumed by three schemes
在设计加速单元时, 着重考虑 IF 神经元个数的影响。图 8(a)给出一种全并行方案的时钟周期, 该方案中神经元数量与卷积输出的特征点数量相等, 所有神经元在 0~Tiemstep–1 阶段同时并行执行累积和发放。图 8(b)给出一种时分复用方案的时钟周期, 该方案中仅例化 OC 个神经元, 与卷积单元每时钟周期输出的数据数量一致。当一批神经元完成 0~Timestep–1 阶段的累积和发放后, 切换到下一批神经元重复同样的过程。
从直观上看, 全并行方案的时钟周期消耗更小。然而, 受限于 ZYNQ 的 IO 数量, 本文设计的终端系统仅连接 PAICORE2.0 的一组数据 IO, 即编码输出的末端仅有一个输出端口。若采用全并行方案, 每个时钟周期内并行产生的脉冲只有一笔能送入芯片, 其他脉冲被阻塞在神经元内部, 导致神经元无法进行下一个时间步的计算, 因此全并行方案会浪费电路面积。相对地, 时分复用方案消耗的时钟周期更多。由于神经元并不是在每个时间步内都存在脉冲发放, 若采用该方式, 在大部分时间步内不存在脉冲发放, 就不会产生编码数据输出, 导致下游模块频繁停顿等待, 会增加额外的等待开销。综合来说, 这两种方案各有利弊, 全并行方案可以尽量减少下游模块的等待开销, 但面积较大; 时分复用方案面积很小, 但会经常出现无脉冲发放的空泡时钟周期, 导致下游等待。
以 CIFAR-10 图像分类的一个具体模型为例, 编码层的卷积输出通道为 8×28×28, 时间步长为 64, 则理论极限情况会发放 8×28×28×64≈40 万个脉冲。根据本研究的实验测试, 每次大约仅有 1.2 万个脉冲被发放。因此, 总时钟周期与发放脉冲的时钟周期之比约为 33:1, 即平均 33 个时钟周期内只有一个时钟周期发放脉冲。因此, 本文提出第三种方案——参数可配置的时分复用方案。在上述例子中, 如果将神经元数量设置为 33 左右, 就可以在最小的面积开销下, 使硬件神经元组平均每个时钟周期发放一个脉冲。可以采用图 8(c)的神经元数量配置为4×OC 的方案, 性能与全并行方案相近, 但面积要小得多。
卷积单元输出的数据量为 OC/cycle, 而参数化时分复用方案需要的数据量为 N×OC/cycle, 因此需要设置一个缓冲区来存储数据, 并且该缓冲区需要具备数据位宽匹配的功能。因此, 本文提出一种位宽平衡数据缓冲区——多 Bank FIFO。
如图 9 所示, 多 Bank FIFO 采用串入并出的方式。卷积单元每个周期按照 Bank0, Bank1, Bank2, Bank3 和 BankN 的循环顺序, 依次将输出结果写入FIFO; IF 神经元每个周期会检测 Bank0~BankN 是否都有数据, 然后并行地从所有 Bank 中读出数据。图 10 给出一个 Bank 为 4 情况下的波形图。
图9 多 Bank FIFO 的组织方式
Fig. 9 Organization of multiple Bank FIFO
综上所述, 本文通过设计数量可参数化的IF神经元组和多 Bank FIFO, 实现在面积开销最小的情况下达到开发板 I/O 数量有限情况下的最高性能。如果后续扩展 IO 数量, 只需相应地增加 IF神经元组和多 Bank FIFO 的数量, 就能使本模块适应更高的性能要求。
PAICORE2.0 每次推理时发送的工作帧包括 3个部分——初始化帧、脉冲帧和同步帧。编码和转帧过程将输入数据转换为脉冲帧。在引入加速单元后, 数据下行过程消耗的时钟周期由图 11(a)变为图11(b), 具体过程如下。
1) PS 通知 PL 关闭加速单元, 发送初始化帧, 等待 PL 返回完毕中断。
图10 多 Bank FIFO 输入输出波形图
Fig. 10 Waveform of input and output for multiple Bank FIFO
图11 3种方案消耗的时钟周期示意图
Fig. 11 Diagram of clock cycles consumed by three schemes
2) PS 通知 PL 开启加速单元, 发送需编码的数据, 等待 PL 返回完毕中断。
3) PS 通知 PL 关闭加速单元, 发送同步帧, 等待 PL 返回完毕中断。
由于 PS 端需要根据发送数据的类型来通知 PL端开启或关闭加速单元, 导致连续发送的工作帧被拆分为 3 批发送。每批发送均需等待 PL 端的返回完毕中断, 造成 PL 端流水线被迫中断, 从而导致时间开销的增加。
为了避免流水线中断, 本文引入图 12 所示的自定义张量帧。在 PAICORE2.0 的帧格式定义中, 2bits 帧头仅使用 0x00 配置帧、0x01 测试帧和 0x02工作帧, 而 0x03 为预留状态[8]。因此, 本文将 0x03作为自定义张量帧的帧头。引入张量帧定义后, PS可以连续一笔发送初始化帧、张量帧和同步帧, PL端根据帧头, 自动判断输入数据是工作帧还是张量帧。如果是张量帧, 则通过加速单元, 否则直接旁路输出。
如图 11(c)所示, 通过引入自定义张量帧, 本研究实现系统级的“边传边算”流水化操作, 将大部分计算延迟掩盖在传输过程中。相比于图 11(a)所示的软件编码和转帧方式, 此方案仅增加了一小部分流水线填充周期, 但却节省软件端编码和转帧过程的大量时间。
为验证本研究提出的加速单元效果, 下面以CIFAR-10 图像分类为例进行测试, 其中脉冲神经网络模型参数使用工具链训练并提取获得, 模型结构见表 1。
本文首次提出适配 PAICORE2.0 的硬件编码转帧加速单元, 目前还没有见到其他同类硬件设计, 因此本文只提供与软件编码转帧方法的单次推理时间的对比, 具体结果如表 2 所示。表 2 中数据是 20次推理结果的平均值, 其中软件编码方法由 PS 端CPU 执行, 采用 img2col 方法[19], 结合 Numpy 算子库实现。
图12 脉冲帧与自定义张量帧格式
Fig. 12 Format of spike frame and customize tensor frame
表1 测试模型结构
Table 1 Test model structure
类型ConvReLUAvgPoolConvReLUAvgPoolConvReLULinear 输入尺寸32×32×328×28×828×28×814×14×812×12×1612×12×166×6×164×4×32512 核尺寸5×5×3×82×23×3×8×162×23×3×16×32
说明: 第一层卷积 Conv 和第二层激活层 ReLU 为编码层, 其他层均被转换为 SNN 模型并部署至 PAICORE2.0。
表2 编码转帧方法用时对比
Table 2 Comparison of encoding and frame generation methods in terms of time consumption
编码方法编码时间/ms转帧时间/msDMA空间开辟时间/ms数据下行时间/ms芯片运算&数据上行时间/ms后处理时间/ms总时间/ms精度/% 软件编码112.472.16.66.59.95.3212.872.1 本文提出硬件编码01.51.16.510.25.1 24.472.1
说明: 编码时间在软件编码方法中是将输入的 CIFAR-10 图形通过卷积和 IF 神经元得到脉冲值所用的时间, 硬件方法中为零。转帧时间在软件编码方法中是将编码后的脉冲值转化为脉冲帧所用时间, 在硬件方法中是将输入的 CIFAR-10 图形拼接为 3 通道的类型 1 张量帧所用时间。DMA 空间开辟时间指开辟一段连续地址空间, 并将所有要发送的帧搬移至这段地址空间的用时。数据下行时间是从开始发送第一帧数据前, 到所有帧完全送入 PAICORE2.0 为止的总用时。芯片运算&数据上行时间是从芯片开始运算到所有输出帧收回PS端为止的用时。后处理时间为 PS 端将 PAICORE2.0 输出帧译码为模型输出值所用时间。
表3 加入硬件编码转帧单元前后FPGA资源对比
Table 3 Comparison of FPGA resource consumption before and after inserting the hardware encoding and frame generation unit
资源总量加入编码模块前加入编码模块后差值使用量使用率/%使用量使用率/%使用量使用率/% LUT27740049461.783077011.09258249.31 LUTRAM1082006140.5715981.489840.91 FF55480071301.29214413.86143112.58 BRAM755172.25455.96283.71 DSP20200030014.8530014.85 功耗/W–1.88–2.15–0.27–
使用本文提出的硬件编码方法后, 可以减少以下几部分时间: 1)由于无需 PS 端进行编码, 编码时间降为 0; 2)采用硬件编码后, PS 端发送的脉冲帧变为张量帧, 因此帧数量从约 20K 降为约 1K, 转帧时间和 DMA 空间开辟时间均大幅减少。
此外, 由于本文提出的硬件编码转帧加速单元嵌入在 PL 端数据下行传输通路中, 通过流水化掩盖了相关延迟, 因此未明显增加数据下行的传输延迟。如表 3 所示, 使用硬件编码方法后, 增加了9.3%的 LUT、3.7%的 BRAM、2.6%的 FF、0.9%的LUTRAM、14.9%的 DSP 等资源占用, 却获得约8.72 倍的推理速度提升。
本文针对北京大学 PAICORE2.0 终端系统的编码和转帧速度较慢问题, 提出一种基于硬件加速单元的优化方法。该方法将编码转帧的功能集成到原有的 PL 端的数据下行通路中, 通过高度并行卷积单元、参数化的 IF 神经元和位宽平衡数据缓冲区等基本单元, 结合系统级流水化设计, 实现较好的加速效果。实验结果表明, 本文提出的硬件加速单元在几乎未增加数据通路延迟的情况下, 消除了软件编码转帧过程的时间开销。在 CIFAR-10 图像分类的例子中, 与软件编码转帧方法相比, 硬件编码转帧模块仅增加 9.3%的 LUT、3.7%的 BRAM、2.6%的 FF、0.9%的 LUTRAM、14.9%的 DSP 等资源占用以及 14.6%的功耗, 却实现约 8.72 倍的推理速度提升。
参考文献
[1] Akopyan F, Sawada J, Cassidy A, et al. TrueNorth: design and tool flow of a 65 mW 1 million neuron programmable neurosynaptic chip. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2015, 34(10): 1537–1557
[2] Haessig G, Cassidy A, Alvarez R, et al. Spiking optical flow for event-based sensors using IBM’s TrueNorth neurosynaptic system. IEEE Transactions on Biome-dical Circuits and Systems, 2018, 12(4): 860–870
[3] Palit I, Yang L, Ma Y, et al. Biomedical image seg-mentation using fully convolutional networks on True-North // 2018 IEEE 31st International Symposium on Computer-Based Medical Systems (CBMS). Karlstad, 2018: 375–380
[4] Davies M, Srinivasa N, Lin T H, et al. Loihi: a neu-romorphic manycore processor with on-chip learning. IEEE Micro, 2018, 38(1): 82–99
[5] Deng L, Wang G, Li G, et al. Tianjic: a unified and scalable chip bridging spike-based and continuous neural computation. IEEE Journal of Solid-State Cir-cuits, 2020, 55(8): 2228–2246
[6] Pei J, Deng L, Song S, et al. Towards artificial general intelligence with hybrid Tianjic chip architecture. Nature, 2019, 572: 106–111
[7] Kuang Y, Cui X, Zhong Y, et al. A 64K-Neuron 64M-1b-Synapse 2.64pJ/SOP neuromorphic chip with all memory on chip for spike-based models in 65 nm CMOS. IEEE Transactions on Circuits and Systems II: Express Briefs, 2021, 68(7): 2655–2659
[8] 钟毅. 面向异构计算与在线学习的超大规模类脑芯片研究[D]. 北京: 北京大学, 2023
[9] Deng S, Lv P, Jin O, et al. Darwin-S: a reference software architecture for brain-inspired computers. Computer, 2022, 55(5): 51–63
[10] Sawada J, Akopyan F, Cassidy A S, et al. TrueNorth ecosystem for brain-inspired computing: scalable sys-tems, software, and applications // Proceedings of the International Conference for High Performance Com-puting, Networking, Storage and Analysis. Salt Lake City, 2016: 130–141
[11] Davies M, Wild A, Orchard G, et al. Advancing neu-romorphic computing with loihi: a survey of results and outlook. Proceedings of the IEEE, 2021, 109(5): 911–934
[12] Fang B, Zhang Y, Yan R, et al. Spike trains encoding optimization for spiking neural networks implemen-tation in FPGA // 2020 12th International Conferen- ce on Advanced Computational Intelligence (ICACI). Dali, 2020: 412–418
[13] Schelle G. Keynote 1 — Growing the ReConFig com-munity through python, ZYNQ and hardware overlays // 2016 International Conference on ReConFigurable Computing and FPGAs (ReConFig). Cancun, 2016: 7857138
[14] 胡一凡, 李国齐, 吴郁杰, 等. 脉冲神经网络研究进展综述. 控制与决策, 2021, 36(1): 1–26
[15] Fang W, Chen Y, Ding J, et al. SpikingJelly: an open-source machine learning infrastructure platform for spike-based intelligence. Science Advances, 2023, 9 (40): adi1480
[16] Cui X, Hao X, Liang Y, et al. A mapping model of SNNs to neuromorphic hardware // 2022 IEEE 4th International Conference on Artificial Intelligence Circuits and Systems (AICAS). Incheon, 2022: 206–209
[17] Ronak B, Fahmy S A. Multipumping flexible DSP blocks for resource reduction on Xilinx FPGAs. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2017, 36(9): 1471–1482
[18] Bansal H, Sharma K G, Sharma T. Wallace tree mul-tiplier designs: a performance comparison review. In-novative Systems Design and Engineering, 2014, 5(5): 60–67
[19] Cong J, Xiao B. Minimizing computation in convo-lutional neural networks // International conference on artificial neural networks (ICANN). Hamburg, 2014: 281–290
Design of Acceleration Unit of Encoding and Frame Generation for PAICORE2.0
Abstract An edge computing system was designed by the spiking neural network chip PAICORE2.0 of Peking University, in conjunction with Xilinx ZYNQ. However, the software encoding and frame generation processes on the processing system (PS) side is slow and limits the performance of the system. Therefore, a hardware acceleration method is proposed. The software encoding and frame generation processes, which is serially executed on the PS side, is moved to the data path on the programmable logic (PL) side for pipelined parallel execution. The hardware acceleration unit mainly consists of highly parallel convolution units, parameterizable spiking neurons, width-balanced data buffers and other modules. The results show that the method removes the time overhead of software encoding and frame generation without increasing the data path transmission delay. In the example of CIFAR-10 image classification, compared with software encoding and frame generation, the hardware encoding and frame generation module results in only a marginal increase in resource utilization — 9.3% more Look-Up Tables (LUTs), 3.7% more Block RAMs (BRAMs), 2.6% more flip-flops (FFs), 0.9% more LUTRAMs, and 14.9% more digital signal processors (DSPs), as well as a 14.6% increase in power consumption. However, it achieves approximately an 8.72-fold improvement in inference speed.
Key words spike neural network chip; PAICORE2.0; ZYNQ; spike encoding; hardware acceleration; convolutional acceleration unit
深圳市科技创新委员会基金(KQTD20200820113105004)资助