本申请涉及一种忆阻器阵列电路仿真方法、装置、计算机设备和存储介质。所述方法包括:将基于忆阻器阵列电路的卷积神经网络的单网络层输入分解为多个二进制输入向量,分配仿真任务;基于分布式、多进程并行执行所述仿真任务,在仿真任务中将权值比特位映射至忆阻器阵列的多个器件电导,将输入比特位映射为多个电压信号,编写每个忆阻器阵列电路的电路网表;将电路网表进行解析并运行仿真,根据所述电压值和所述器件电导值,基于基尔霍夫定律计算输出电流;将每个忆阻器阵列电路仿真任务输出的电流转换为数字信号,进行移位、相加以及组合得到整型数,然后将整型数反量化为浮点数并添加偏置项,再次量化后得到网络层输出。
背景技术
忆阻器,一种具有记忆功能的非线性电阻,其阻值能够随流经的电荷量而发生变化,并在断电后保持这种变化的状态。忆阻器交叉阵列,简称忆阻器阵列,一种忆阻器单元集成工艺,忆阻器单元位于相互垂直的字线和位线交叉点。所谓1T1R(one-transistor-one-resistor)是指一个晶体管与一个忆阻器或阻变单元串联的结构。利用晶体管实现对忆阻器单元的选通,避免因漏电流问题而造成的串扰现象。传统1T1R阵列中,连接同一行晶体管栅极的导线是字线,连接同一列忆阻器单元的导线是位线。基于传统1T1R阵列执行乘累加运算,需在字线上施加输入信号控制晶体管的开关状态,在位线上施加固定的读电压,该种方式适用于二值信号。将传统1T1R阵列中的位线旋转使其垂直于源线,得到伪交叉阵列结构,该架构的字线连接同一行忆阻器单元,位线连接同一列晶体管栅极。基于伪交叉阵列执行乘累加运算,施加输入信号的方式有两种,则对应两种结构Bitline-signal 1T1R、Gate-signal 1T1R。Bitline-signal 1T1R在字线上施加输入信号,在各位线上施加晶体管导通电压以打开所有的晶体管;Gate-signal1T1R在各字线施加固定的读电压,在位线施加输入信号控制晶体管的开关状态,与传统1T1R阵列类似适用于二值信号。1R即无晶体管的交叉阵列结构,2T2R(two-transistor-two-resistor)阵列结构中的交叉单元由两个晶体管和两个忆阻器组成。
卷积神经网络(Convolutional Neural Network,CNN)的主要计算为矩阵-向量乘法(Matrix Vector Multiplication,MVM),而MVM的基本操作为乘累加(MultiplyAccumulate,MAC)运算。基于忆阻器阵列实现的乘累加方式为,假设卷积核权重按列映射成忆阻器电导,则电压脉冲按行施加,根据基尔霍夫定律可知列末端收集到的电流即为输入(电压)和权重(电导)乘累加的结果。
阵列寄生电阻。实际的忆阻器交叉阵列中存在导线电阻、输入/输出电阻和晶体管电阻,这些寄生电阻会引起信号衰减,进而影响乘累加运算结果。
在计算架构方面,传统的存内计算架构遵循与数字电路相同的范式,不具有容错能力。在数字电路设计中,每个数字都由多个位表示。在乘法过程中,乘法器中的每一位与被乘数中的每一位相乘,得到许多部分积。因此,乘法器电路具有一组移位器和加法器,用于将部分积相加。传统存内计算架构将这种方法继承并扩展到了阵列当中,形成了所谓的位切片方法。在该方法中,忆阻器被限制在一个有限的预定状态空间内(通常是二值),权重矩阵和输入向量则被分解为多个位平面。在这些位平面上,执行MVM得到了部分积。随后,通过使用模数转换器(Analog-to-Digital Converter,ADC)、移位器和加法器等数字电路,这些部分积被量化并组合起来,以产生完整的MVM结果。
开源的交叉阵列模拟器中,有PytorX、MLP+NeuroSim V3.0以及CrossSim等。PytorX将Bitline-signal 1T1R阵列结构的晶体管等效为导通电阻,使用简化的改进节点分析法建立电路方程,基于GPU求解线性方程。该模拟器虽然没有调用Spice仿真,但其建立电路方程的原理和Spice相同。在MLP+NeuroSim V3.0中,对Bitline-signal 1T1R结构中的晶体管等效为导通电阻,对导线电阻的仿真方法为,其考虑电压传输的一条路径,该路径从输入端通过位线直到目标忆阻器,然后经过晶体管,最后通过源线到达输出端,即通过忆阻器的直接路径,忆阻器电流=读电压/(路径的导线电阻+晶体管导通电阻)。在CrossSim中,对3种1T1R电路阵列结构近似分析,基于近似阵列结构,采用近似计算和迭代求解方法进行仿真。MLP+NeuroSim和CrossSim两种模拟器的阵列寄生电阻仿真方法都为近似计算,精确度不高,可信度较低。此外,两者添加新的阵列结构难度大,需要在仿真代码逻辑上进行修改,扩展性不好。在PytorX中,同样对Bitline-signal 1T1R阵列结构的晶体管等效为导通电阻,使用简化的改进节点分析法建立电路方程,基于GPU求解线性方程。同样,该仿真器存在添加新的阵列结构难度大的问题,且对于某些阵列结构(如Gate-signal 1T1R),即使是小规模阵列仿真也非常耗时。
实现思路