技术简介:
本专利针对神经网络计算中忆阻器阵列处理带符号输入值的局限性,提出一种符号数乘法实现方法。通过将输入值转换为二进制补码并拆分处理,结合移位计算模块对最高位执行减法操作、其余位执行加法操作,实现通用性强的乘法计算,无需额外硬件资源。
关键词:忆阻器阵列,符号数乘法
1.本发明涉及新型智能计算领域,尤其是涉及一种忆阻器阵列符号数乘法实现方法、装置及设备。
背景技术:2.当前对于忆阻器的研究越来越广泛,涉及的领域也各式各样,如安全、数学、人工智能领域。在人工智能领域,忆阻器常常被用于作为神经网络计算的工具与媒介,其高读写速度、低功耗、高并行度的特性被充分的体现出。但是,在通过忆阻器做阵列计算的过程中,对于忆阻器阵列的输入值往往都是以无符号数的形式。或者,是通过输入正负电压的形式来起到一个符号数输入。现有的方式并不能更加广泛的覆盖到实际使用的过程中,并且或多或少有着一些局限性,为了提升忆阻器阵列用于计算的通用性,需要一种基于忆阻器阵列的符号数计算方式。
技术实现要素:3.为解决现有技术的不足,本发明直接将有符号数以补码的形式,在多个周期内输入到忆阻器阵列中进行计算,实现了忆阻器阵列能够输入符号数进行乘法计算,在保持原有复杂度的同时,提升了忆阻器阵列的适用范围,本发明采用如下的技术方案:一种忆阻器阵列符号数乘法实现方法,包括如下步骤:步骤s1:确定带有符号的输入值,并将其转换为二进制补码形式;步骤s2:依据忆阻器阵列单次输入的位宽acc
x
,将输入值拆分为n个值,其中最高位为符号位,从最低位开始依次输入到忆阻器阵列中进行乘法计算;不局限于权重w的映射形式;步骤s3:忆阻器阵列单次输出值为最高位(第n个值)时做移位减法操作,其余位时均做移位加法操作,所述移位加法操作是将输出值移位(n-1)*acc
x
后与上一次输出值进行累加,所述移位减法操作是将输出值移位(l-1)后与之前输出的累加值相减,其中n表示拆分的第n个值,l表示输入值总位宽;步骤s4:输出忆阻器阵列的最终乘法计算结果,使得带有符号的输入值,通过忆阻器阵列进行乘法计算时,不局限于输入值的位宽、权重位宽以及映射方式。
4.进一步地,所述输入值的最高位,恒为1比特位宽的数,用于标志当前的符号位。
5.进一步地,所述单次输入位宽acc
x
大于1比特时,通过数模转换器,将数值转换成相对应的电压值输入到忆阻器阵列中。
6.进一步地,所述步骤s2中,拆分输入值过程中,当第n
ꢀ‑
1个数中出现的数值的长度小于单次输入位宽acc
x
时,对该数值的高位进行补充。
7.进一步地,所述步骤s3的过程,采用符号位检测器、移位器、多路器、加法器、减法器和寄存器,具体包括如下步骤:步骤s3.1:符号位检测器判断输入值是否为第n个值,当输入值不为第n个值时,进
入步骤s3.2,否则进入步骤s3.3;步骤s3.2:多路器的加法通道打开,移位器将输出值移位(n-1)*acc
x
,通过加法器,将移位后的输出值与上一次输出值累加,并存储到寄存器中;步骤s3.3:多路器的减法通道打开,移位器将输出值移位(l-1)后与之前输出的累加值相减。
8.进一步地,所述步骤s3中基于二进制的计算公式如下:进一步地,所述步骤s3中基于二进制的计算公式如下:其中,y表示最终输出值,y表示单次的输出值,x表示拆分的单次输入值,w表示权重值,以电导值的方式映射在忆阻阵列上,且映射方式可以任意。
9.进一步地,所述步骤s3中,移位的位数的确定,首先判断单次输入位宽acc
x
,当单次输入位宽acc
x
为1比特时,总位宽等于输入值拆分数n,当输入值位宽acc
x
为多比特时,将总位宽减1后对单次输入位宽进行取模运算,然后判断取模结果,当取模结果为0时,输入值的拆分数,当取模结果不为0时,输入值的拆分数,p = acc
x
ꢀ‑ꢀ
q,q表示(l-1) mod acc
x
的余数。
10.进一步地,所述忆阻器阵列的输入端和输出端分别与移位计算模块连接,移位计算模块将有符号的输入值转换为二进制补码形式,依据忆阻器阵列单次输入的位宽acc
x
,将输入值进行拆分,其中最高位为符号位,从最低位开始依次输入到忆阻器阵列中进行乘法计算,当忆阻器阵列单次输出值为最高位时,对单次输出值做移位减法操作,否则做移位加法操作,所述移位加法操作是将输出值移位(n-1)*acc
x
后与上一次输出值进行累加,所述移位减法操作是将输出值移位(l-1)后与之前输出的累加值相减,其中n表示拆分的第n个值,l表示输入值总位宽,输出忆阻器阵列的最终乘法计算结果,使得带有符号的输入值,通过忆阻器阵列进行乘法计算时,不局限于输入值的位宽、权重位宽以及映射方式。
11.进一步地,所述移位计算模块包括:符号位检测器、移位器、多路器、加法器、减法器和寄存器;所述符号位检测器,用于判断输入值是否为第n个值,并传递通道选择信号给多路器和选择器,输入值不为第n个值时,传递第一通道选择信号;否则,传递第二通道选择信号;所述多路器,用于选择阵列输出值的通道,当收到第一通道选择器信号时,多路器的加法通道打开;当收到第二通道选择器信号时,多路器的减法通道打开;所述移位器,用于阵列计算值的移位操作,当收到第一通道选择信号时,移位器的加法通道打开时,将输出值移位(n-1)*acc
x
;当收到第二通道选择信号时,移位器的减法通道打开时,将输出值移位(l-1);所述加法器,将移位后的输出值与上一次输出值累加,并存储到寄存器中;所述减法器,将移位后的输出值与寄存器中存储的值相减后,作为忆阻器阵列的最终乘法计算结果进行输出;所述寄存器,用于存储加法器输出的累加值。
12.一种忆阻器阵列符号数乘法实现设备,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现所述的一种忆阻器阵列符号数乘法实现方法。
13.本发明的优势和有益效果在于:本发明的一种忆阻器阵列符号数乘法实现方法、装置及设备,可以直接将有符号数以补码的形式,在多个周期内输入到忆阻器阵列中进行计算,不局限输入值的位宽、单次输入的位宽以及权重的映射方式,扩大了忆阻器阵列计算的适用范围,保持了原本的复杂度,提升了忆阻器阵列的通用性。
附图说明
14.图1是本发明的方法流程图。
15.图2是本发明实施例中方法的拆分移位逻辑图。
16.图3是本发明实施例中忆阻器阵列进行乘法操作的装置示意图。
17.图4是本发明实施例中对移位加减进行处理的结构示意图。
18.图5a是本发明中有符号数拆分流程图。
19.图5b是本发实施例明中对10位有符号数拆分流程图。
20.图6a是本发明实施例中单次1比特符号数输入值拆分示意图。
21.图6b是本发明实施例中单次2比特符号数输入值拆分示意图。
22.图7是本发明实施例中设备的结构示意图。
具体实施方式
23.以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
24.在a*b的忆阻器阵列中,每个忆阻器拥有的电导值为g
mn
,对应其权重值w
mn
,施加电压vm,对应输入特征值xm(处理后的图像特征值),依据欧姆定律,每个cell流出i
mn
=vm*g
mn
,该电流就是输入特征值与权重值的乘积;同时,依据基尔霍夫电流定律,每一列流出的总电流是一列中各个reram流出电流的总合,,即对应矩阵乘加的结果值yn;上述变量m,0《m≤a;上述变量n,0《n≤b。
25.本发明的一种忆阻器阵列符号数乘法实现方法,实现了在忆阻器阵列上进行输入值为符号数的乘法计算,如图1、图2所示,包括如下步骤:步骤s1:确定带有符号的输入值x,并将其转换为二进制补码形式。
26.步骤s2:依据忆阻器阵列单次输入的位宽acc
x
,将输入值x拆分为n个值,分别为x
n-1
,x
n-2
,
…
,x1,x0,其中最高位为符号位,从最低位x0开始依次输入到忆阻器阵列中进行乘法计算;不局限于权重w的映射形式。
27.带有符号的输入值x总位宽为l,第n个数x
n-1
表示输入值x的最高位,恒为1比特位宽的数,用于标志当前的符号位,其余的数依据输入位宽acc
x
决定其位宽,分为n-1个数,n大于等于2,并且输入值x的总位宽l以及单次输入的位宽acc
x
都可以是任意大小。
28.如图3所示,输入值x拆分为x
n-1
,x
n-2
,
…
,x1,x0,通过输入端经过多周期输入到忆阻
器阵列中,共需n个周期完成计算,其中如果单次输入位宽大于1比特,需要通过dac(数-模转换器)将数值转换成相对应的电压值输入到忆阻器阵列中。在计算过程中对于任何输入值都是通过忆阻器阵列进行乘法计算,输入值为x,权重值为w,输出值为y,其中y=x*w,x=x
n-1
x
n-2
…
x1x0。
29.拆分输入值x过程中,当第n-1个数x
n-2
中出现的数值的长度小于单次输入位宽acc
x
时,对该数值x
n-2
的高位进行补充,补充x
n-1
至数据长度等于单次输入位宽acc
x
。
30.步骤s3:忆阻器阵列单次输出值为最高位(第n个值)时做移位减法操作,其余位时均做移位加法操作,所述移位加法操作是将输出值移位(n-1)*acc
x
后与上一次输出值进行累加,所述移位减法操作是将输出值移位(l-1)后与之前输出的累加值相减,其中n表示拆分的第n个值,l表示输入值x总位宽。
31.输入的个数n,不为第n个时,对一个的输出值y
n-1
移位累加,当输入个数n为n时,输出值y
n-1
移位并与原累加值相减,n表示当前计算的第n个数,每个周期都会有一个输出值yn。
32.计算输出值的位移大小通过单次输入位宽acc
x
决定,当进行第次输入值计算且n不为n时,输入端给到加法/减法器一个加法信号,yn移位后会与之前的输出值累加在一起,移位大小为(n-1)*acc
x
;当进行第n次输入值计算且n为n时,输入端给到加法/减法器一个减法信号,yn移位后会与之前的输出的累加值相减,移位大小为(l-1);输出值y位移的位数除第n位以外是单次输入位宽的倍数,第一位位移为0位,第二位位移为acc
x
,第三位为2*acc
x
,第四位为3*acc
x
,第n位为原长度l-1,计算公式如下:1,计算公式如下:输出值y是y
n-1
,y
n-2
,
…
,y1,y0移位加减的结果。
33.具体地的,如图4所示,此处省略了忆阻器阵列,每个输入x对应一个输出y,依次输入到阵列中进行计算,在输入的个数不为第n个时,移位累加通道打开,移位累加结果存在寄存器中;当输入的个数为第n个时,移位减法通道打开,将移位累加的结果值与当前输出值做减法,得出最终结果值。其中具体的位移的位数,通过当前输入的位宽,以及当前输入的个数得出。
34.移位位数的描述,如图5a所示,对于总位宽l位的带符号的输入值x,当单次输入位宽acc
x
=1比特时,总位宽等于输入值x拆分数,即l=n,当单次输入位宽acc
x
为多比特时,将总位宽减1后对单次输入位宽进行取模运算,即(l-1) mod acc
x
,当取模运算结果为0时,输入值x的拆分数,否则,p = acc
x
ꢀ‑ꢀ
q,q表示(l-1) mod acc
x
的余数。如图5b所示,本发明实施例中输入的是总位宽为10的二进制输入值1100100101(十进制为-219),单次输入位宽为4比特,(l-1) mod acc
x
=9 mod 4=1,余数q=1≠0,p = acc
x
ꢀ‑ꢀ
q,则;其中,x0=0101,对应y0=5(十进制)移位(n-1) * acc
x
= (1-1)*4=0位;x1=0010,对应y1=2(十进制)移位(n-1) * acc
x =(2-1)*4=4位;由于输入值第
一位为符号位,因此x2=0001,对应y2=1(十进制)移位(n-1) * acc
x =(3-1)*4=8位;符号位x3=0001,对应y3=1(十进制)移位(l-1) =9位;计算公式如下:-29*1+28*1+24*2+20*5=-512+256+32+5=-219步骤s4:输出忆阻器矩阵的乘法计算结果,本方法不局限于输入值的位宽、权重位宽以及映射方式。
35.具体地,如图6a所示,带符号输入值总位数l为4位,单次输入位宽acc
x
为1比特,有符号输入值拆分4个数,分别为x3, x2, x1,x0。如十进制数-5,拆分为x3为1,x2为0,x1,为1,x0为1;十进制数3,拆分为x3为0,x2为0,x1为1,x0为1;十进制数6,拆分为x3为0,x2为1,x1为1,x0为0;十进制数-3,拆分为x3为1,x2为1,x1为0,x0为1。当n不为n时,第n个数xn计算结果yn需移位(n-1)位,等价于乘上系数2
(n-1)
;当n为n时,第n个数xn计算结果yn需移位(l-1)位。输出结果y=-23*y3+22*y2+21*y1+20*y0。
36.实例1:实例1:实例1:实例2:实例2:实例2:实例3:
实例4:实例4:实例4:实例5:
如图6b所示,带符号输入值总位数l为4位,单次输入位宽acc
x
为2比特,有符号输入值拆分3个数,分别为x2,x1,x0。如十进制数-5,拆分为x2为1,x1为0,x0为3;十进制数3,拆分为x2为0,x1为0,x0为3;十进制数6,拆分为x2为0,x1为1,x0为2;十进制数-3,拆分为x2为1,x1为1,x0为1。在实际计算过程中,当n不为n时,第n个数xn计算结果需移位(n-1)*2位,等价于乘上系数2
(n-1)*2
;当为n时,第n个数xn计算结果需移位(l-1)位。输出结果y=-23* y2+22*y1+20*y0。
37.实例6:实例6:
实例7:实例7:实例7:实例8:实例8:实例8:实例9:
实例10:实例10:实例10:
与前述一种忆阻器阵列符号数乘法实现方法的实施例相对应,本发明还提供了一种忆阻器阵列符号数乘法实现设备的实施例。
38.参见图7,本发明实施例提供的一种忆阻器阵列符号数乘法实现设备,包括存储器和一个或多个处理器,存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述实施例中的一种忆阻器阵列符号数乘法实现方法。
39.本发明一种忆阻器阵列符号数乘法实现设备的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或设备。设备实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的设备,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为本发明一种忆阻器阵列符号数乘法实现设备所在任意具备数据处理能力的设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中设备所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
40.上述设备中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
41.对于设备实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
42.本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的一种忆阻器阵列符号数乘法实现方法。
43.所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备的外部存储设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
44.以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。