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  计算任务的加速.
   388   389   390   391   392   393   394   395   396   397   398