操作忆阻器阵列的方法和电子装置

未命名 07-22 阅读:154 评论:0


1.本公开的实施例涉及一种操作忆阻器阵列的方法和电子装置。


背景技术:

2.忆阻器是一种基于阻值变化来记录并存储数据信息的易失性或非易失性存储器,其具有高速度、低功耗的特点,并且可以在小尺寸下实现存储功能。由忆阻器实现的存算一体装置在人工智能、神经网络以及存储器等领域具有较好的应用前景。


技术实现要素:

3.本公开至少一实施例提供一种操作忆阻器阵列的方法,所述忆阻器阵列包括n行m列的忆阻器单元,该方法包括:接收分别与所述忆阻器阵列的第1行到第n行的阵列计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1;将所述n个r比特的二进制数据d0~d
n-1
分别转换成n个2r比特的计数数据d0~d
n-1
,其中,所述计数数据d0~d
n-1
当中的计数数据dm中包括km个1和k’m
个0,其中,km=dm的十进制值,并且km+k’m
=2r;将所述计数数据d0~d
n-1
分别逐比特输入所述忆阻器阵列的第1行到第n行于所述忆阻器阵列的被选择的列中进行阵列计算;从所述忆阻器阵列的所述被选择的列读出所述阵列计算的2r个计算结果;对所述2r个计算结果进行模数转换;以及确定所述2r个计算结果的模数转换的结果的和。
4.例如,在本公开至少一实施例提供的方法中,在所述计数数据dm的连续编号为0~2
r-1的用于放置比特的2r个位置中,所述计数数据dm的所述km个1从起始位置pm开始沿着第一方向布置,并且在结束位置qm结束布置。
5.例如,在本公开至少一实施例提供的方法中,所述起始位置pm是计数数据d
m-1
的k
m-1
个1的结束位置q
m-1
在所述第一方向上的下一个位置,p0是所述2r个位置中的任意位置。
6.例如,在本公开至少一实施例提供的方法中,所述起始位置pm等于m+l或者-m+l对2r取模后的余数,其中,l为任何整数,并且l对于m的每个取值而言相同。
7.例如,在本公开至少一实施例提供的方法中,所述起始位置pm为从所述2r个位置中随机选择的位置。
8.例如,在本公开至少一实施例提供的方法中,所述计数数据d0~d
n-1
的k0~k
n-1
个1的起始位置p0~p
n-1
相同,并且是所述2r个位置中的任意位置。
9.例如,在本公开至少一实施例提供的方法中,所述计数数据dm的km个1在所述2r个位置中连续循环布置。
10.例如,在本公开至少一实施例提供的方法中,所述二进制数据d0~d
n-1
是无符号数或者是有符号数的无符号部分。
11.例如,在本公开至少一实施例提供的方法中,所述阵列计算是所述计数数据d0~d
n-1
的同一位置的比特组成的向量数据与所述忆阻器阵列中的第1行到第n行的所述被选择的列中存储的权重数据的乘累加计算。
12.本公开至少一实施例提供一种电子装置,包括:忆阻器阵列,包括n行m列的忆阻器
单元;输入电路,包括:接收子电路,包括n个数据接口e0~e
n-1
,其中,所述接收子电路配置为通过所述n个数据接口e0~e
n-1
接收分别与所述忆阻器阵列的第1行到第n行的计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1;转换子电路,配置为将所述n个r比特的二进制数据d0~d
n-1
分别转换成2r比特的计数数据d0~d
n-1
,其中,所述计数数据d0~d
n-1
当中的计数数据dm中包括km个1和k’m
个0,其中,km=dm的十进制值,并且km+k’m
=2r;以及输入子电路,配置为将所述计数数据d0~d
n-1
分别逐比特输入所述忆阻器阵列的第1行到第n行于所述忆阻器阵列的被选择的列中进行阵列计算;以及输出电路,配置为:从所述忆阻器阵列的相应列读出所述阵列计算的2r个计算结果;对所述2r个计算结果进行模数转换;以及确定所述2r个计算结果的模数转换的结果的和。
13.例如,在本公开至少一实施例提供的电子装置中,所述转换子电路包括分别与所述接收子电路的n个数据接口e0~e
n-1
相对应的n个处理模块c0~c
n-1
,所述处理模块c0~c
n-1
中的处理模块cm被配置为执行2r次转换操作以将二进制数据dm转换为计数数据dm,每次转换操作输出一个比特值,以及所述处理模块cm包括:寄存器,配置为从所述n个数据接口e0~e
n-1
中的数据接口em接收所述二进制数据dm,并且存储所述二进制数据dm,计数器,配置为从初始化值开始,在所述每次转换操作结束后将所述计数器的值自增第一值,并且在达到2r时回归0,其中,所述0≤所述初始化值≤2
r-1,以及比较器,配置为将所述寄存器中存储的所述二进制数据dm与所述计数器的值进行比较,在所述二进制数据dm大于所述计数器的值时生成1,并且在所述二进制数据dm小于或等于所述计数器的值时生成0,以及将生成的值输出至所述忆阻器阵列的第m行。
14.例如,在本公开至少一实施例提供的电子装置中,所述处理模块cm的计数器的初始化值为将d0~d
m-1
的和基于2r取模得到的结果的补码,以及其中,处理模块c0的计数器的初始化值是0~2
r-1中的任何一个。
15.例如,在本公开至少一实施例提供的电子装置中,所述处理模块cm的计数器的初始化值等于m+l或者-m+l对2r取模后的余数,其中,l为任何整数,并且l对于m的每个取值而言相同。
16.例如,在本公开至少一实施例提供的电子装置中,所述处理模块cm的计数器的初始化值为从0~2
r-1中随机选择的数。
17.例如,在本公开至少一实施例提供的电子装置中,所述处理模块c0~c
n-1
的计数器的初始化值相同,并且等于0~2
r-1中的任何一个。
18.例如,在本公开至少一实施例提供的电子装置中,所述第一值为1。
19.例如,在本公开至少一实施例提供的电子装置中,所述二进制数据d0~d
n-1
是无符号数或者是有符号数的无符号部分。
20.例如,在本公开至少一实施例提供的电子装置中,所述阵列计算是所述计数数据d0~d
n-1
的同一位置的比特组成的向量数据与所述忆阻器阵列中的第1行到第n行的所述被选择的列中存储的权重数据的乘累加计算。
21.例如,在本公开至少一实施例提供的电子装置中,所述处理模块c
0~cn-1
中的一个或多个处理模块的比较器是同一比较器,并且所述一个或多个处理模块以时分复用方式共用所述同一比较器。
附图说明
22.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
23.图1a示出了一种2t2r结构的忆阻器单元的示意图;
24.图1b示出了一种1t1r结构的忆阻器单元的示意图;
25.图2示出了一种忆阻器阵列的示意图;
26.图3示出采用忆阻器阵列进行阵列计算的示意图;
27.图4示出了移位累加操作的示意图;
28.图5示出根据本公开至少一实施例的操作忆阻器阵列的方法;
29.图6示出了根据本公开至少一实施例的累加操作的示意图;
30.图7示出了根据本公开至少一实施例的电子装置的结构的示意图;
31.图8示出根据本公开至少一实施例的处理模块的电路图;以及
32.图9示出根据本公开至少一实施例的以时分复用方式共用比较器的示例。
具体实施方式
33.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
34.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
35.忆阻器是一种新型信息处理器件,具有存算融合的功能,可在存储的数据上原位实现计算操作,从而消除数据搬移的巨大开销。此外,忆阻器可以直接在模拟域上做运算(例如,忆阻器可以基于欧姆定律完成乘法运算,基于基尔霍夫电流定律完成加法运算),从而可进一步实现向量乘法运算,且运算过程中无需数模转换的开销。
36.具体地,忆阻器是一种可以通过施加外部激励,调节其电导状态的非易失型器件,例如可以为阻变存储器、相变存储器、导电桥存储器等。忆阻器作为一种二端器件,具有电阻可调节且非挥发的特性,因此被广泛应用于存算一体。根据基尔霍夫电流定律和欧姆定律,由忆阻器构成的阵列可以并行的完成阵列计算(例如向量乘累加计算),且存储和计算都发生在阵列中的各忆阻器器件中。基于这种计算架构,可以实现不需要大量数据搬移的存算一体计算。
37.图1a示出了一种2t2r结构的忆阻器单元的示意图。如图1a所示,2t2r(两个忆阻器
和两个晶体管)结构的忆阻器单元包括两个晶体管m1和m2以及两个忆阻器r1和r2。下面以晶体管m1和m2均采用n型晶体管为例进行说明。
38.晶体管m1的栅极和字线端wlpos相连,例如m1的字线端wlpos输入高电平时晶体管m1导通,晶体管m2的栅极和字线端wlneg相连,例如m2的字线端wlneg输入高电平时晶体管m2导通;晶体管m1的第一极可以是源极并被配置为和源线端sl连接,例如晶体管m1可以通过源线端sl接收复位电压,晶体管m2的第一极可以是源极并被配置为和源线端sl连接,例如晶体管m2可以通过源线端sl接收复位电压,晶体管m1的第一极与晶体管m2的第一极相连,并一起连接至源线端sl。晶体管m1的第二极可以是漏极并被配置为和忆阻器r1的第二极(例如负极)连接,忆阻器r1的第一极(例如正极)和位线端blpos连接,例如忆阻器r1可以通过位线端blpos接收置位电压;晶体管m2的第二极可以是漏极并被配置为和忆阻器r2的第二极(例如负极)连接,忆阻器r2的第一极(例如正极)和位线端blneg连接,例如忆阻器r2可以通过位线端blneg接收置位电压。
39.需要说明的是,2t2r结构的忆阻器单元中的晶体管m1和m2也可以均采用p型晶体管,这里不再赘述。
40.字线端wlpos的作用是对晶体管m1的栅极施加相应电压,从而控制晶体管m1导通或关闭。在对忆阻器r1进行操作时,例如进行置位操作或复位操作,均需要先开启晶体管m1,即需要通过字线端wlpos对晶体管m1的栅极施加导通电压。在晶体管m1导通后,例如,可以通过在源线端sl和位线端blpos向忆阻器r1施加电压,以改变忆阻器r1的阻态。例如,可以通过位线端blpos施加置位电压,以使得该忆阻器r1处于低阻态,这可以称为置位操作;又例如,可以通过源线端sl施加复位电压,以使得该忆阻器r1处于高阻态,这可以称为复位操作。例如,高阻态的电阻值为低阻态的电阻值100倍以上,例如1000倍以上。例如,忆阻器r1具有阈值电压,在输入电压幅度小于忆阻器r1的阈值电压时,不会改变忆阻r1的电阻值(或电导值)。在这种情况下,可以通过输入小于阈值电压的电压,利用忆阻器r1的电阻值(或电导值)进行计算;可以通过输入大于阈值电压的电压,改变忆阻器r1的电阻值(或电导值)。对字线端wlneg、m2、r2、blneg和sl的操作与前述对字线端wlpos、m1、r1、blpos和sl的操作类似,此处不再赘述。
41.如图1a所示,当wlpos和wlneg为高电平从而晶体管m1和m2导通时,在sl末端将经过忆阻器r1的输出电流和经过忆阻器r2的输出电流进行叠加。因此,sl末端的电流i
cell
等于:
[0042][0043]
当r1为低阻态,r2为高阻态时,忆阻器单元可以表示正的权重值;当r1为高阻态,r2为低阻态时,可以表示忆阻器单元存储负的权重值;当r1和r2的阻值相等时,可以表示忆阻器单元存储零的权重值。当施加在位线端blpos的电压v
blpos
大于施加在源线端sl的电压v
sl
并且施加在位线端blneg的电压v
blneg
小于施加在源线端sl的电压v
sl
时,可以表示向忆阻器单元输入正值以用于与忆阻器单元存储的权重值进行乘法计算;当施加在位线端blpos的电压v
blpos
小于施加在源线端sl的电压v
sl
,施加在位线端blneg的电压v
blneg
大于施加在源线端sl的电压v
sl
时,可以表示向忆阻器单元输入负值以用于与忆阻器单元存储的权重值进行乘法计算。
[0044]
图1b示出了一种1t1r结构的忆阻器单元的示意图。如图1b所示,1t1r结构(1个忆阻器和1个晶体管)的忆阻器单元包括一个晶体管m1和一个忆阻器r1。
[0045]
对m1、r1、字线端wl、位线端bl和源线端sl的连接方式和操作方式与前述结合图1a描述的对m1、r1、字线端wlpos、位线端blpos和源线端sl的连接方式和操作方式类似,此处不再赘述。
[0046]
当wl为高电平从而晶体管m1导通时,sl末端的电流i
sl
等于:
[0047][0048]
忆阻器单元r1的电阻(或电导)值可以表示权重值。当施加在位线端bl的电压v
bl
大于施加在源线端sl的电压v
sl
时,可以表示向忆阻器单元输入“1”以用于与忆阻器单元存储的权重值进行乘法计算;当施加在位线端bl的电压v
bl
小于施加在源线端sl的电压v
sl
时,可以表示向忆阻器单元输入“0”以用于与忆阻器单元存储的权重值进行乘法计算。
[0049]
图2示出了一种忆阻器阵列的示意图。如图2所示,该忆阻器阵列200由多个忆阻器单元构成,该多个忆阻器单元构成一个n行m列的阵列,m和n均为正整数。虽然图2示出了忆阻器单元具有如图1a所示的2t2r结构,但是本公开至少一实施例不限于此,并且忆阻器阵列200的忆阻器单元可以具有如图1b所示的1t1r结构。
[0050]
在图2中,wlpos《0》和wlneg《0》、wlpos《1》和wlneg《1》
……
wlpos《m-1》和wlneg《m-1》以及分别表示第一列、第二列
……
第m列的字线,每一行的忆阻器单元电路中的开关元件的控制极(例如晶体管的栅极)和该行对应的字线连接;blpos《0》和blneg《0》、blpos《1》和blneg《1》
……
blpos《n-1》和blneg《n-1》分别表示第一行、第二行
……
第n行的位线,每一行的忆阻器单元电路中的忆阻器和该行对应的位线连接;sl《0》、sl《1》
……
sl《m-1》分别表示第一列、第二列
……
第m列的源线,每一列的忆阻器单元电路中的晶体管的源极和该列对应的源线连接。
[0051]
下面结合图3和图4对采用忆阻器阵列的阵列计算进行描述。
[0052]
图3示出采用忆阻器阵列进行阵列计算的示意图。如图3所示,要输入忆阻器阵列(例如,忆阻器阵列200)进行阵列计算的是n个输入值,可以将这n个输入值中的每个输入值展开为r比特的二进制值,从而得到n个r比特的二进制值。以忆阻器阵列的忆阻器单元具有1t1r的结构并且阵列计算为乘累加计算并且n=7、r=3为例,以g
0i
、g
1i
、g
2i
、g
3i
、g
4i
、g
5i
、g
6i
、g
7i
表示忆阻器阵列第0~7行第i列存储的权重值,假设分别要输入忆阻器阵列第0~7行第i列以便与这8个权重值进行乘累加计算的输入值为无符号数或者有符号数的无符号部分7、4、6、2、0、1、5、3,那么希望得到的相应的乘累加结果是:
[0053]
7*g
i0
+4*g
i1
+6*g
i2
+2*g
i3
+0*g
i4
+1*g
i5
+5*g
i6
+3*g
i7

[0054]
一种可选的输入这8个输入值(即,n=8)的方式可以是,将这8个输入值如表1所示展开为3比特(r=3)的二进制值,将每一位比特对应的数据分三次输入忆阻器阵列第0~7行第i列进行乘累加计算。
[0055][0056]
表1
[0057]
通过这种方式,可以得到三个乘累加计算结果,即:最低位比特的乘累加计算结果(1*g
0i
+0*g
1i
+0*g
2i
+0*g
3i
+0*g
4i
+1*g
5i
+1*g
6i
+1*g
7i
),中间位比特的相应乘累加计算结果(1*g
0i
+0*g
1i
+1*g
2i
+1*g
3i
+0*g
4i
+0*g
5i
+0*g
6i
+1*g
7i
),以及最高位比特的乘累加计算结果(1*g
0i
+1*g
1i
+1*g
2i
+0*g
3i
+0*g
4i
+0*g
5i
+1*g
6i
+0*g
7i
)。接下来,对这三个乘累加计算结果进行模数转换和移位累加。
[0058]
图4示出移位累加操作的示意图。例如,可以将前述三个乘累加计算结果的模数转换后的值进行移位累加。例如,以模数转换器(adc)的精度为k=4比特为例,可以首先将最高位比特的乘累加计算结果的模数转换后的4比特值左移两位,将中间位比特的相应乘累加计算结果的模数转换后的4比特值左移一位,再与最低位比特的乘累加计算结果的模数转换后的4比特值进行累加,得到7比特的累加结果。由于adc存在量化误差,最后一位不准确。在经过上述移位累加后,高位的量化误差会覆盖低位的准确结果,所以在该7比特的累加结果中,有3比特都是量化误差,精度损失很大。
[0059]
为了降低精度损失,本公开至少一实施例提出了一种将忆阻器阵列的输入值进行按位展开的方式,下面将结合图5描述该实施例。
[0060]
图5示出根据本公开至少一实施例的操作忆阻器阵列的方法。图5所示的方法包括步骤s510、s520、s530、s540、s550、s560。该忆阻器阵列包括n行n列的忆阻器单元。例如,该忆阻器阵列可以是如图2所示的忆阻器阵列200,也可以是1t1r的忆阻器单元组成的忆阻器阵列。
[0061]
在步骤s510,接收分别与忆阻器阵列的第1行到第n行的阵列计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1。
[0062]
在步骤s520,将n个r比特的二进制数据d0~d
n-1
分别转换成n个2r比特的计数数据d0~d
n-1
,其中,计数数据d0~d
n-1
当中的计数数据dm中包括km个1和k’m
个0,其中,km=dm的十进制值,并且km+k’m
=2r。
[0063]
在步骤s530,将计数数据d0~d
n-1
分别逐比特输入忆阻器阵列的第1行到第n行于忆阻器阵列的被选择的列中进行阵列计算。
[0064]
在步骤s540,从忆阻器阵列的被选择的列读出阵列计算的2r个计算结果。
[0065]
在步骤s550,对2r个计算结果进行模数转换。
[0066]
在步骤s560,确定2r个计算结果的模数转换的结果的和。
[0067]
在接下来的描述中,以n=8,r=3,以d0~d
n-1
是如表1所示的8个输入值来举例说明。
[0068]
例如,将第一行输入值,即,十进制的7,或二进制的“111”,扩展成7个1和1个0,得到8比特的计数数据的1,1,1,1,1,1,1,0。将第二行输入值,即,十进制的4,或二进制的“100”,扩展成4个1和4个0,得到8比特的计数数据的1,1,1,1,0,0,0,0。可类似地将其他行输入值扩展为8比特的计数数据。每一行输入值的扩展之后的1可以从同一位置开始连续循环布置。例如,如表2所示,每一行输入值的扩展之后的1可以从第0比特开始连续循环布置。
[0069][0070][0071]
表2
[0072]
与表2所示的布置方式相对应的8轮乘累加计算如表3所示。
[0073][0074]
表3
[0075]
图6示出了根据本公开至少一实施例的累加操作的示意图。通过前述方式,可以得到8个乘累加计算结果,接下来,如图6所示,可以对这8个乘累加计算结果进行模数转换和
累加,得到累加结果。由于这时无需移位操作,因此,量化误差只存在于最后一位,能够更好地保证精度。
[0076]
然而,从表3可以看出,第0轮乘累加计算涉及忆阻器阵列的7行,得到的结果(1*g
0i
+1*g
1i
+1*g
2i
+1*g
3i
+1*g
5i
+1*g
6i
+1*g
7i
)较大,对应的累加电流也较大;而第6轮乘累加计算涉及忆阻器阵列的1行,得到的结果(1*g
2i
)较小,对应的累加电流也较小。这样的布置1的方式容易造成前期电流过大,导致累加电流超过adc量程,后期电流过小,导致累加电流小于adc最小间隔,使得无法得到adc结果或者adc结果不准确。为了解决这个问题,希望设计一种布置1的方式,使得参与每一轮乘累加计算的忆阻器阵列的行数比较平均。
[0077]
为此,可以将每一行十进制数据的对应计数数据的1连续循环分布,并且使得下一行十进制数据的对应计数数据的1的起始位置是上一行十进制数据的对应计数数据的1的结束位置的下一个位置,如表4所示。
[0078][0079]
表4
[0080]
虽然表4示出第0行十进制数据7的对应计数数据的1的起始位置是第0比特,但是不限于此,可以是第0比特~第7比特中的任何一个。
[0081]
如表4所示,第0行十进制数据7的对应计数数据的1的结束位置是第6比特,则第1行十进制数据4的对应计数数据的1的起始位置是第7比特。
[0082]
第1行十进制数据4的对应计数数据的1的结束位置是第2比特,则第2行十进制数据6的对应计数数据的1的起始位置是第3比特。
[0083]
第2行十进制数据6的对应计数数据的1的结束位置是第0比特,则第3行十进制数据2的对应计数数据的1的起始位置是第1比特。
[0084]
第3行十进制数据2的对应计数数据的1的结束位置是第2比特,则第5行十进制数据1的对应计数数据的1的起始位置是第3比特。
[0085]
第5行十进制数据1的对应计数数据的1的结束位置是第3比特,则第6行十进制数据5的对应计数数据的1的起始位置是第4比特。
[0086]
第6行十进制数据5的对应计数数据的1的结束位置是第0比特,则第7行十进制数据3的对应计数数据的1的起始位置是第1比特。
[0087]
与表4所示的布置方式相对应的8轮乘累加计算如表5所示。
[0088][0089]
表5
[0090]
从表5可以看出,第0、1、2、3轮乘累加计算涉及忆阻器阵列的4行,第4、5、6、7轮乘累加计算涉及忆阻器阵列的4行,这样能够得到集中于adc量程中的累加电流,使得adc结果更加准确。
[0091]
除了表2和表4所述的布置计数数据的1的方式之外,还可以使得每一行的十进制数据的对应计数数据的1的起始位置与行号相关联,例如,可以将第m行十进制数据的对应计数数据的1的起始位置设置为等于m+l或者(-m+l)对8(2r)取模后的余数,其中,l为任何整数,并且l对于m的每个取值而言相同。以l=0为例,将第m行十进制数据的对应计数数据的1的起始位置设置为等于m+l对8(2r)取模后的余数的布置方式如表6所示。例如,还可以使得每一行的十进制数据的对应计数数据的1的起始位置是随机选择的位置。
[0092][0093]
表6
[0094]
通过采用结合图5描述的方法,在基于忆阻器的阵列计算中,因为运算结果的adc结果的量化误差出现在最后一位,直接累加adc结果后,量化误差仍为最后一位,所以可以获得较高的计算精度。此外,通过将计数数据的1相对均匀地分布在每一轮阵列计算中,可
以充分利用adc的量程,以确保准确的量化。
[0095]
图7示出了根据本公开至少一实施例的电子装置700的结构的示意图。
[0096]
如图7所示,电子装置700可以包括:忆阻器阵列710、输入电路720和输出电路730。忆阻器阵列710可以包括n行m列的忆阻器单元。例如,忆阻器阵列710可以是如图2所示的忆阻器阵列200,或者可以是由1t1r结构的忆阻器单元形成的阵列。
[0097]
例如,在至少一个示例中,输入电路720可以进一步包括:接收子电路、转换子电路和输入子电路。
[0098]
接收子电路可以包括n个数据接口e0~e
n-1
。接收子电路可以配置为通过n个数据接口e0~e
n-1
接收分别与忆阻器阵列的第1行到第n行的计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1。例如,二进制数据d0~d
n-1
可以是无符号数或者是有符号数的无符号部分。
[0099]
转换子电路可以配置为将n个r比特的二进制数据d0~d
n-1
分别转换成2r比特的计数数据d0~d
n-1
,计数数据d0~d
n-1
当中的计数数据dm中可以包括km个1和k’m
个0,其中,km=dm的十进制值,并且km+k’m
=2r。
[0100]
转换子电路可以包括分别与接收子电路的n个数据接口e0~e
n-1
相对应的n个处理模块c0~c
n-1
,其中,处理模块c0~c
n-1
中的处理模块cm可以被配置为执行2r次转换操作以将二进制数据dm转换为计数数据dm,每次转换操作输出一个比特值。
[0101]
处理模块cm可以进一步包括寄存器、计数器和比较器。寄存器可以配置为从n个数据接口e0~e
n-1
中的数据接口em接收二进制数据dm,并且存储二进制数据dm。计数器可以配置为从初始化值开始,在每次转换操作结束后将计数器的值自增第一值,并且在达到2r时回归0,其中,0≤初始化值≤2
r-1。例如,第一值可以为1,但不限于此。
[0102]
比较器可以配置为:将寄存器中存储的二进制数据dm与计数器的值进行比较;在二进制数据dm大于计数器的值时生成1,并且在二进制数据dm小于或等于计数器的值时生成0;以及将生成的值输出至忆阻器阵列的第m行。例如,处理模块c
0~cn-1
中的一个或多个处理模块的比较器是同一比较器,并且一个或多个处理模块以时分复用方式共用同一比较器。
[0103]
例如,处理模块cm的计数器的初始化值可以为将d0~d
m-1
的和基于2r取模得到的结果的补码,以及其中,处理模块c0的计数器的初始化值可以是0~2
r-1中的任何一个。在这种情况下,当处理模块c0的计数器的初始化值是0时,可以得到如表4所示的计数数据。在这种情况下,在计数器的初始化过程中,对d0~d
m-1
的累加可能会导致加法器进位链太长,无法时序收敛。为了解决这个问题,可采用时分复用的方式,多周期完成计数器的初始化,例如,分为8个周期完成,从而将加法器进位链从n减小为n/8。例如,处理模块cm的计数器的初始化值可以等于m+l或者-m+l对2r取模后的余数,其中,l可以为任何整数,并且l对于m的每个取值而言可以相同。在这种情况下,当处理模块cm的计数器的初始化值等于m对2r取模后的余数时,可以得到如表6所示的计数数据。例如,处理模块c0~c
n-1
的计数器的初始化值可以相同,并且可以等于0~2
r-1中的任何一个。在这种情况下,当处理模块c0~c
n-1
的计数器的初始化值都为0时,可以得到如表2所示的计数数据。例如,处理模块cm的计数器的初始化值可以为从0~2
r-1中随机选择的数。
[0104]
输入子电路可以配置为将计数数据d0~d
n-1
分别逐比特输入忆阻器阵列的第1行到第n行于忆阻器阵列的被选择的列中进行阵列计算。其中,阵列计算可以是计数数据d0~dn-1
的同一位置的比特组成的向量数据与忆阻器阵列中的第1行到第n行的被选择的列中存储的权重数据的乘累加计算。
[0105]
输出电路730可以配置为从忆阻器阵列的相应列读出阵列计算的2r个计算结果;对2r个计算结果进行模数转换;以及确定2r个计算结果的模数转换的结果的和。
[0106]
通过采用结合图7描述的装置,在基于忆阻器的阵列计算中,因为运算结果的adc结果的量化误差出现在最后一位,直接累加adc结果后,量化误差仍为最后一位,所以可以获得较高的计算精度。此外,通过将计数数据的1相对均匀地分布在每一轮阵列计算中,可以充分利用adc的量程,以确保准确的量化。
[0107]
图8示出根据本公开至少一实施例的处理模块的电路图。图8所示的电路图可以用于将有符号数转换成计数数据。如图8所示,有符号数xn的符号位被存储在寄存器s_n中,而无符号部分|xn|被存储在寄存器in_reg_n中。在表7中以无符号部分|xn|的取值范围是0~7并且r=3为例进行说明。例如,可以将计数器counter_n的值初始化为|x0|、|x1|

|x
n-1
|的和基于8(2r)取模后的余数的补码,如表7所示。例如,也可以按照结合图7描述的方法来将计数器counter_n的值初始化。
[0108][0109]
表7
[0110]
通过比较器将comp_n将in_reg_n中存储的值与计数器counter_n的值进行比较。当in_reg_n中存储的值比计数器counter_n的值大,则输出1,否则输出0,从而完成一次转换操作。在处理模块的每次转换操作之后,counter_n都自增1,然后在下一次转换操作中与in_reg_n中存储的值进行比较。只要处理模块执行8次转换操作,即counter_n自增7次,例如,从0自增到7,就能够遍历counter_n的所有数值,这个过程中in_reg_n中存储的值比计数器counter_n的值大的次数=|xn|的十进制值,从而可以产生个数等于|xn|的十进制值的
1,以及个数等于(8-|xn|的十进制值)的0。
[0111]
图9示出根据本公开至少一实施例的以时分复用方式共用比较器的示例。如图9所示,比较器940对寄存器910和计数器920中的值进行比较。可以通过选择器930,通过时分复用的方式分多个周期完成n行数据的比较,例如,分8个周期完成,将一次比较的行数从n减小为n/8。通过这种方式,可以减小比较运算的并行度,以减小电路面积,比较器数量由n减小为n/8。
[0112]
需要说明的是,为表示清楚、简洁,本公开实施例并没有给出例如图7的电子装置、图8的处理模块的全部组成单元。为实现图7的电子装置、图8的处理模块的必要功能,本领域技术人员可以根据具体需要提供、设置其他未示出的组成单元,本公开的实施例对此不作限制。
[0113]
关于不同实施例中的电子装置、处理模块的技术效果可以参考本公开的实施例中提供的操作忆阻器阵列的方法的技术效果,这里不再赘述。
[0114]
有以下几点需要说明:
[0115]
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
[0116]
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
[0117]
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

技术特征:
1.一种操作忆阻器阵列的方法,所述忆阻器阵列包括n行m列的忆阻器单元,所述方法包括:接收分别与所述忆阻器阵列的第1行到第n行的阵列计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1;将所述n个r比特的二进制数据d0~d
n-1
分别转换成n个2
r
比特的计数数据d0~d
n-1
,其中,所述计数数据d0~d
n-1
当中的计数数据d
m
中包括k
m
个1和k’m
个0,其中,k
m
=d
m
的十进制值,并且k
m
+k’m
=2
r
;将所述计数数据d0~d
n-1
分别逐比特输入所述忆阻器阵列的第1行到第n行于所述忆阻器阵列的被选择的列中进行阵列计算;从所述忆阻器阵列的所述被选择的列读出所述阵列计算的2
r
个计算结果;对所述2
r
个计算结果进行模数转换;以及确定所述2
r
个计算结果的模数转换的结果的和。2.根据权利要求1所述的方法,其中,在所述计数数据d
m
的连续编号为0~2
r-1的用于放置比特的2
r
个位置中,所述计数数据d
m
的所述k
m
个1从起始位置p
m
开始沿着第一方向布置,并且在结束位置q
m
结束布置。3.根据权利要求2所述的方法,其中,所述起始位置p
m
是计数数据d
m-1
的k
m-1
个1的结束位置q
m-1
在所述第一方向上的下一个位置,p0是所述2
r
个位置中的任意位置。4.根据权利要求2所述的方法,其中,所述起始位置p
m
等于m+l或者-m+l对2
r
取模后的余数,其中,l为任何整数,并且l对于m的每个取值而言相同。5.根据权利要求2所述的方法,其中,所述起始位置p
m
为从所述2
r
个位置中随机选择的位置。6.根据权利要求2所述的方法,其中,所述计数数据d0~d
n-1
的k0~k
n-1
个1的起始位置p0~p
n-1
相同,并且是所述2
r
个位置中的任意位置。7.根据权利要求2-6中任一项所述的方法,其中,所述计数数据d
m
的k
m
个1在所述2
r
个位置中连续循环布置。8.根据权利要求1-6中任一项所述的方法,其中,所述二进制数据d0~d
n-1
是无符号数或者是有符号数的无符号部分。9.根据权利要求1-6中任一项所述的方法,其中,所述阵列计算是所述计数数据d0~d
n-1
的同一位置的比特组成的向量数据与所述忆阻器阵列中的第1行到第n行的所述被选择的列中存储的权重数据的乘累加计算。10.一种电子装置,包括:忆阻器阵列,包括n行m列的忆阻器单元;输入电路,包括:接收子电路,包括n个数据接口e0~e
n-1
,其中,所述接收子电路配置为通过所述n个数据接口e0~e
n-1
接收分别与所述忆阻器阵列的第1行到第n行的计算相对应的n个r比特的二进制数据d0~d
n-1
,其中,n≥1,转换子电路,配置为将所述n个r比特的二进制数据d0~d
n-1
分别转换成2
r
比特的计数数据d0~d
n-1
,其中,所述计数数据d0~d
n-1
当中的计数数据d
m
中包括k
m
个1和k’m
个0,其中,k
m

d
m
的十进制值,并且k
m
+k’m
=2
r
,以及输入子电路,配置为将所述计数数据d0~d
n-1
分别逐比特输入所述忆阻器阵列的第1行到第n行于所述忆阻器阵列的被选择的列中进行阵列计算;以及输出电路,配置为:从所述忆阻器阵列的相应列读出所述阵列计算的2
r
个计算结果;对所述2
r
个计算结果进行模数转换;以及确定所述2
r
个计算结果的模数转换的结果的和。11.根据权利要求10所述的电子装置,其中,所述转换子电路包括分别与所述接收子电路的n个数据接口e0~e
n-1
相对应的n个处理模块c0~c
n-1
,所述处理模块c0~c
n-1
中的处理模块c
m
被配置为执行2
r
次转换操作以将二进制数据d
m
转换为计数数据d
m
,每次转换操作输出一个比特值,以及所述处理模块c
m
包括:寄存器,配置为从所述n个数据接口e0~e
n-1
中的数据接口e
m
接收所述二进制数据d
m
,并且存储所述二进制数据d
m
,计数器,配置为从初始化值开始,在所述每次转换操作结束后将所述计数器的值自增第一值,并且在达到2
r
时回归0,其中,所述0≤所述初始化值≤2
r-1,以及比较器,配置为,将所述寄存器中存储的所述二进制数据d
m
与所述计数器的值进行比较,在所述二进制数据d
m
大于所述计数器的值时生成1,并且在所述二进制数据d
m
小于或等于所述计数器的值时生成0,以及将生成的值输出至所述忆阻器阵列的第m行。12.根据权利要求11所述的电子装置,其中,所述处理模块c
m
的计数器的初始化值为将d0~d
m-1
的和基于2
r
取模得到的结果的补码,以及其中,处理模块c0的计数器的初始化值是0~2
r-1中的任何一个。13.根据权利要求11所述的电子装置,其中,所述处理模块c
m
的计数器的初始化值等于m+l或者-m+l对2
r
取模后的余数,其中,l为任何整数,并且l对于m的每个取值而言相同。14.根据权利要求11所述的电子装置,其中,所述处理模块c
m
的计数器的初始化值为从0~2
r-1中随机选择的数。15.根据权利要求11所述的电子装置,其中,所述处理模块c0~c
n-1
的计数器的初始化值相同,并且等于0~2
r-1中的任何一个。16.根据权利要求11-15中任一项所述的电子装置,其中,所述处理模块c
0~
c
n-1
中的一个或多个处理模块的比较器是同一比较器,并且所述一个或多个处理模块以时分复用方式共用所述同一比较器。

技术总结
本公开提供了一种操作忆阻器阵列的方法和电子装置。该忆阻器阵列包括N行M列的忆阻器单元,该方法包括:接收分别与忆阻器阵列的第1行到第n行的阵列计算相对应的n个R比特的二进制数据D0~D


技术研发人员:吴华强 何志帆 高滨 郝镇齐 唐建石 钱鹤
受保护的技术使用者:清华大学
技术研发日:2023.04.20
技术公布日:2023/7/20
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐