Page 393 - 《软件学报》2025年第10期
P. 393
4790 软件学报 2025 年第 36 卷第 10 期
态受过去一段时间内通过的电流影响, 即可以通过不断地向其输入正负向电流来改变该点阻值, 即改变存储内容;
同时又不需要额外电压来维持其存储内容不变, 因此可以实现高密度存储.
利用这一特性, 可以在基于 ReRAM 的交叉开关结构上为神经元突触存储权重并实现脉冲传播计算. 具体的
如图 B1 所示: 使用 ReRAM 组成交叉开关结构, 可以实现高效的矩阵-向量乘法运算.
根据矩阵的权值调整交叉开关结构中每个 ReRAM 的阻值, 使得其电导和权值成正比. 脉冲向量由左侧输入,
经过 DAC (数模转换器件) 转换为电压. 根据欧姆定律和基尔霍夫电流定律, 每列输出满足:
∑
I j = G ij V i .
这和矩阵-向量乘法形式一致, 因此将输出的电流经过 ADC (模数转换器件) 转换为数字信号, 即可得到矩阵-
向量乘法运算结果. 这种计算形式可以达到很高的并行度、速度和计算密度, 并且功耗较低. 交叉开关结构所支持
的最大输入元素个数和输出元素个数与它的高度和宽度相对应.
ReRAM 的主要局限是计算精度较低, 体现在两个方面: 第一, 在设置电导时难以达到精确的电导值, 即由于
器件本身的不稳定性以及设置电压可调范围有限, 只能设置到数个离散的电导值附近; 第二, 在计算时环境温度、
电磁场以及输入电压本身会对电导值产生影响, 这使得每次计算时 ReRAM 的有效电导值可看作为一个围绕所设
置离散电导值的正态分布.
为了缓解这一局限带来的影响, 通常采取以下手段.
● 将输入拆分为逐位输入, 每次计算只计算一位, 保证经过 DAC 之后的电压是二值的, 并将结果移位累加. 由
于 SNN 所传播的脉冲信号本身就仅为 0/1, 因此天然就满足这一条件, 且不需要输出时的移位累加.
● 在训练模型时, 考虑到 ReRAM 本身的精度限制, 可以采用的方法是首先使用高精度方法训练模型, 在训练
完成后针对特定 ReRAM 器件再进行权重微调, 使权值适应 ReRAM 的计算特性. BIVM 采用这种方法进行精度优化.
ReRAM 的另一个局限是无法计算负权值. 这一局限可以通过略微修改交叉开关的设计, 采用 2T2R (2-
transistors 2-resistors) 的结构解决. 在 2T2R 结构的交叉开关中, 每个交叉点上由两个晶体管和两个 ReRAM 组成,
如图 B2 所示. 输出线上的电流 I out , 为流经两个 ReRAM 的差值, 因此在 R ne 上写入权值的绝对值, 在计算中就会
g
表现为负权值.
V 1
… +V in
D G 11 G 12
V 2 R pos
A
…
C C pos
G 21 G 22
V 3
I out
…
C neg
G 31 G 33
… …
R neg
I 1 I 2
ADC
−V in
图 B1 交叉开关示意 图 B2 2T2R 结构示意
当一个模型需用到多次交叉开关结构进行矩阵-向量乘法时, 需要考虑不同的连接矩阵如何映射到交叉开关
结构上. 由于 ReRAM 写入过程十分耗时, 在资源充足的前提下, 可以初始化写入多个矩阵, 并在整个模型的计算
过程中以时分复用的方式使用. 以图 B3 所示情况为例, A 1 、A 3 共享输入, 对于相同输入可以同时计算. A 1 、A 2 共
享输出, 必须分两次计算. A 1 、A 4 不共享输入和输出, 就可以同时独立计算.
∗
XB-SIM 以时钟驱动方式仿真了上述过程, 即以时钟驱动方式仿真配备了控制逻辑和数据缓冲区的多个处理
单元构成的流水线, 每个处理单元的主体是若干个 ReRAM 交叉开关结构. 每个处理单元的大致结构如图 B4 所
示, 交叉开关采取上述的 2T2R 结构.
图 B4 中, DAC 负责将数字输入信号转换为交叉开关所需的模拟电压输入, 交叉开关进行计算后, ADC 负责
将模拟电流输出采样转换为数字输出. 当数字输入大于一位, 但采取逐位输入时, 需要移位累加模块将部分乘积累
加为完整结果. 激活函数和池化层主要用于 DNN 计算任务的加速.

