1.本公开有关于一种具有存储器内运算(in-memory-computing(imc))的存储器装置及其操作方法。
背景技术:
2.人工智能(ai)已在许多领域中成为高度有效解决方发明。at的关键操作在于对大量的输入数据(如输入特征图(input feature maps))与权重值进行乘积累加运算(multiply-and-accumulation(mac))。
3.然而,以目前的ai架构而言,容易遇到输出入瓶颈(io bottleneck)与低效率的mac运算流程(inefficient mac operation flow)。
4.为达到高准确度,可执行具有多位输入及多位权重值的mac操作。然而,输出入瓶颈变得更加严重,且效率将更低。
5.存储器内运算(in-memory-computing(imc))可用于加速mac运算,因为imc可减少在中央处理架构下所需要用的复杂算术逻辑单元(arithmetic logic unit,alu),且提供存储器内的mac操作的高并行性(parallelism)。
6.以非易失性存储器式imc(nvm-based imc)而言,其优点例如是,非易失性储存,数据搬移减少等。
7.在进行imc时,如果能有同时兼顾“操作速度”与“操作准确性”的话,对于imc性能将可有所助益。
8.公开内容
9.根据本发明一实例,提出一种存储器装置,包括:一存储器阵列,包括多个存储器单元,可用于储存多个权重值在该存储器阵列的这些存储器单元内;一乘法电路,耦接至该存储器阵列,该乘法电路对多个输入数据与这些权重值进行乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流;一数字式累加电路,耦接至该乘法电路,对这些乘法结果进行一数字式累加;一模拟式累加电路,耦接至该存储器阵列,对这些存储器单元电流进行一模拟式累加以产生一第一乘积累加运算(mac)操作结果;以及一决定单元,耦接至该数字式累加电路与该模拟式累加电路,决定进行该模拟式累加、该数字式累加或一混合式累加,其中,在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发该数字式累加电路。
10.根据本发明另一实例,提出一种存储器装置的操作方法,包括:储存多个权重值在该存储器装置的一存储器阵列的多个存储器单元内;对多个输入数据与这些权重值进行位乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流;以及决定进行一模拟式累加、一数字式累加或一混合式累加,其中,在进行该模拟式累加时,对这些存储器单元电流进行该模拟式累加以产生一第一乘积累加运算(mac)操作结果;在进行该数字式累加时,对这些乘法结果进行该数字式累加产生一第二乘积累加运算操作结果;以及在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发
该数字式累加。
11.为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合附图详细说明如下:
附图说明
12.图1为根据本发明一实施例的具有存储器内运算功能的存储器装置的功能框图。
13.图2为根据本发明一实施例的数据映射(data mapping)示意图。
14.图3a至图3c为根据本发明一实施例的数据映射的数个例。
15.图4为本发明实施例的乘法运算的两种示范例示意图。
16.图5a与图5b为根据本发明一实施例的分群操作(多数决操作)与计数示意图。
17.图6为比较本发明一实施例的数种mac运算流程。
18.图7a为本发明实施例中的编程固定存储器页面(memory page)的流程图,图7b为本发明实施例中的调整读取电压的流程图。
19.图8为根据本发明一实施例的mac操作流程。
20.附图标记说明
21.100:存储器装置
22.110:存储器阵列
23.120:乘法电路
24.130:输出入电路
25.140:分群电路
26.150:计数单元
27.111:存储器单元
28.121:单位乘法单元
29.121a:输入锁存器
30.121b:感应放大器
31.121c:输出锁存器
32.121d:共同数据锁存器
33.141:分群单元
34.135:数字式累加电路
35.160:模拟式累加电路
36.170:决定单元
37.161:模数转换单元
38.163:比较器
39.301a、303a、301b、303b、311a、313a、311b、313b:位
40.302、312、314:权重值
41.405:锁存器
42.410:位线开关
43.710-750:步骤810-860:步骤
具体实施方式
44.本说明书的技术用语参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释以本说明书的说明或定义为准。本公开的各个实施例分别具有一或多个技术特征。在可能实施的前提下,本技术领域的技术人员可选择性地实施任一实施例中部分或全部的技术特征,或者选择性地将这些实施例中部分或全部的技术特征加以组合。
45.请参照图1,其为根据本发明一实施例的具有存储器内运算(in-memory-computing(imc))功能的存储器装置100的功能框图。具有存储器内运算功能的存储器装置100包括:存储器阵列110、乘法电路120、输出入电路130、数字式累加电路135、模拟式累加电路160、决定单元170与比较器163。数字式累加电路135包括分群电路140与计数单元150。模拟式累加电路160包括模数转换单元161。其中,存储器阵列110、乘法电路120与模拟式累加电路160、模数转换单元161是模拟的,而数字式累加电路135、分群电路140与计数单元150是数字的。
46.存储器阵列110包括多个存储器单元111。在本发明一实施例中,存储器单元111例如但不受限于,为非易失性存储器单元。当进行mac操作时,存储器单元111可用于储存权重值(weight)。
47.乘法电路120耦接至存储器阵列110。乘法电路120包括多个单位乘法单元121。各单位乘法单元121包括:输入锁存器121a、感应放大器(sa)121b、输出锁存器121c与共同数据锁存器(common data latch(cdl))121d。输入锁存器121a耦接至存储器阵列110。感应放大器121b耦接至输入锁存器121a。输出锁存器121c耦接至感应放大器121b。共同数据锁存器121d耦接至输出锁存器121c。
48.输出入电路130耦接至乘法电路120、分群电路140与计数单元150,用以接收输入数据,并将存储器装置100所得到的输出数据输出。
49.数字式累加电路135用以进行数字式累加,其细节将于底下说明。
50.模拟式累加电路160用以进行模拟式累加,其细节将于底下说明。
51.决定单元170决定存储器装置100进行模拟式累加、数字式累加或混合式累加。决定单元170可分别输出使能信号en1与en2至模拟式累加电路160与数字式累加电路135,以决定是否启动模拟式累加电路160或数字式累加电路135。
[0052]“模拟式累加”代表启动模拟式累加电路160但不启动数字式累加电路135。“数字式累加”代表启动数字式累加电路135但不启动模拟式累加电路160。“混合式累加”代表启动数字式累加电路135与模拟式累加电路160。
[0053]
模数转换单元161耦接至存储器阵列110的这些存储器单元111。这些存储器单元111的这些单元电流可累加后输入至模数转换单元161,以转换成第一mac操作结果out1。
[0054]
比较器163耦接至模数转换单元161,用以比较第一mac操作结果out1与一触发参考值。在选择“混合式累加”时,当第一mac操作结果out1低于该触发参考值,该比较器163不输出一触发信号ts至数字式累加电路135(亦即,该数字式累加电路135不会被触发);以及,当第一mac操作结果out1高于该触发参考值,该比较器163输出该触发信号ts至数字式累加电路135,以触发该数字式累加电路135进行数字式累加。当选择“模拟式累加”时,该比较器163所输出的触发信号ts会被数字式累加电路135所忽略。
[0055]
在本发明一实施例中,“模拟式累加”可用于快速滤掉无用数据,以增快mac的操作速度。而“数字式累加”则可累积未被滤掉的数据,以增加mac的准确度。而“混合式累加”则由于使用低分辨率量化操作,可以减少变动影响(variation influence),此外,也可以避免累积无用数据,且可以维持分辨率。亦即,“混合式累加”兼顾“模拟式累加”与“混合式累加”的优点,而减少其缺点。
[0056]
分群电路140耦接至乘法电路120。分群电路140包括多个分群单元141。这些分群单元141对于这些单位乘法单元121的多个乘法结果进行分群操作,以得到多个分群结果。在本发明一可能实施例中,分群操作例如可由多数决技术(majority technique)所实施,例如多数决功能技术(majority function technique),分群电路140由根据多数决功能技术的多数决群体电路(majority grouping circuit)所实施,分群单元141由分散式多数决群体单元(majority grouping unit)所实施,但本发明并不受限于此。分群技术可由其他相似技术来实施。在本发明一实施例中,分群电路140可选择性地设置。
[0057]
计数单元150耦接至分群电路140或乘法电路120。在本发明一实施例中,计数单元150用以对乘法电路120的乘法结果进行位计数(bitwisecounting)或位累积(bitwise accumulation),以产生第二mac操作结果out2(当存储器装置100不包括分群电路140时)。或者是,计数单元150用以对分群电路140的分群结果(例如,多数决结果)进行位计数或位累积,以产生第二mac操作结果out2(当存储器装置100包括分群电路140时)。在本发明一实施例中,计数单元150可以用已知的计数电路,例如但不限于,波纹计数器(ripple counter)来实现。在本发明说明中,计数与累积基本上具有相同意思,而计数器与累积器基本上具有相同意思。
[0058]
细言之,当决定单元170决定存储器装置100进行模拟式累加时,以第一mac操作结果out1为mac操作结果。当决定单元170决定存储器装置100进行数字式累加时,以第二mac操作结果out2为mac操作结果。当决定单元170决定存储器装置100进行混合式累加时,在数字式累加电路135未被触发信号ts触发前,以第一mac操作结果out1为mac操作结果;以及,在数字式累加电路135被触发信号ts触发后,以第二mac操作结果out2为mac操作结果。
[0059]
现请参照图2,其显示根据本发明一实施例的数据映射(data mapping)示意图。如图2所示,以各输入数据(或各权重值)具有n个维度(n是正整数)的8位为例(但当知本发明并不受限于此)。
[0060]
下文以输入数据的数据映射为例做说明,但当知本发明并不受限于此。下文的说明同样适用于权重值的数据映射。
[0061]
当将输入数据以二进制8位表示时,输入数据(或权重值)分为最高有效位(most significant bit,msb)矢量(vector)与最低有效位(least significant bit,lsb)矢量。8位输入数据(或权重值)的最高有效位矢量包括4位b7~b4,而最低有效位矢量包括4位b3~b0。
[0062]
将输入数据的msb矢量与lsb矢量的各位以一元编码(unary coding)(亦即数值形式(value format))表示。例如,输入数据的最高有效位矢量的位b7可以表示为b70~b77,输入数据的最高有效位矢量的位b6可以表示为b60~b63,输入数据的最高有效位矢量的位b5可以表示为b50~b51,输入数据的最高有效位矢量的位b4一样表示为b4。
[0063]
将以一元编码(数值形式)表示的输入数据的msb矢量的各位与输入数据的lsb矢
量的各位重复多次以成为乘积展开(unfolding dot product,unfdp)形式。例如,输入数据的msb的各位被重复(24-1)次,同样地,输入数据的lsb的各位被重复(24-1)次。如此可以将输入数据以乘积展开式表示。
[0064]
对输入数据(乘积展开式)与权重值进行乘法操作,以得到乘法操作结果。
[0065]
为方便了解,底下以一例做说明,但当知其并非用于限制本发明。
[0066]
现请参照图3a,其显示根据本发明一实施例的一维数据映射的一例。如图3a所示,输入数据=(in1,in2)=(2,1),与权重值=(we1,we2)=(1,2)。将输入数据的msb与lsb以二进制形式表示,所以,in1=10,而in2=01,相似地,将权重值的msb与lsb的各位以二进制形式表示,所以,we1=01,而we2=10。
[0067]
将输入数据的msb与lsb,以及,权重值的msb与lsb,编码为以一元编码(数值形式)表示。亦即,将输入数据的msb编码为110,将输入数据的lsb编码为001,相似地,将权重值的msb编码为001,将权重值的lsb编码为110。
[0068]
之后,将以编码为一元编码的输入数据的msb(110)的各位与编码为一元编码的输入数据的lsb(001)的各位重复多次以成为乘积展开(unfolding dot product,unfdp)形式。例如,输入数据的msb(110)的各位被重复3次,所以得到输入数据的msb的乘积展开式为111111000。输入数据的lsb(001)的各位被重复3次,所以得到输入数据的lsb的乘积展开式为000000111。
[0069]
对输入数据(乘积展开式)与权重值进行mac操作,以得到mac操作结果。mac操作结果为:1*0=0、1*0=0、1*1=1、1*0=0、1*0=0、1*1=1、0*0=0、0*0=0、0*1=0、0*1=0、0*1=0、0*0=0、0*1=0、0*1=0、0*0=0、1*1=1、1*1=1、1*0=0。将这些数值相加,则可以得到:0+0+1+0+0+1+0+0+0+0+0+0+0+0+0+1+1+0=4。
[0070]
由上述可知,如果输入数据是i位而权重值是j位(i与j皆为正整数),则所用的存储器单元数量为:(2i-1)*(2j-1)。
[0071]
现请参照图3b,其显示根据本发明一实施例的数据映射的另一可能例。在图3b中,输入数据是(in1)=(2),而权重值是(we1)=(1)。输入数据与权重值是4位。
[0072]
输入数据表示为二进制格式时,in1=0010。相似地,权重值表示为二进制格式时,we1=0001。
[0073]
将输入数据与权重值编码成一元编码(数值形式)。例如,输入数据的最高位“0”编码成“00000000”,而输入数据的最低位“0”编码成“0”,以此类推。相似地,权重值的最高位“0”编码成“00000000”,而权重值的最低位“1”编码成“1”。
[0074]
编码成一元编码的输入数据的各位被复制多次以成为乘积展开式。例如,编码成一元编码的输入数据的最高位301a被复制15次以成为位303a;以及,编码成一元编码的输入数据的最低位301b被复制15次以成为位303b。
[0075]
编码成一元编码的权重值302也被复制15次,以表示为乘积展开式。
[0076]
对表示为乘积展开式的输入数据与表示为乘积展开式的权重值进行乘法操作以产生mac操作结果。详细而言,输入数据的位303a乘上权重值302;输入数据的位303b乘上权重值302,以此类推。将乘法值加总可以产生mac操作结果(“2”)。
[0077]
现请参照图3c,其显示根据本发明一实施例的数据映射的另一可能例。在图3c中,输入数据是(in1)=(1),而权重值是(we1)=(5)。输入数据与权重值是4位。
[0078]
输入数据表示为二进制格式时,in1=0001。相似地,权重值表示为二进制格式时,we1=0101。
[0079]
将输入数据与权重值编码成一元编码(数值形式)。
[0080]
编码成一元编码的输入数据的各位被复制多次以成为乘积展开式。在图3c中,当复制输入数据的各位与权重值的各位时,加入位“0”。例如,编码成一元编码的输入数据的最高位311a被复制15次并加入位“0”以成为位313a;以及,编码成一元编码的输入数据的最低位311b被复制15次并加入位“0”以成为位313b。藉此将输入数据表示为乘积展开式。
[0081]
相似地,编码成一元编码的权重值312也被复制15次,并额外加入位“0”至各权重值314。藉此将权重值表示为乘积展开式。
[0082]
对表示为乘积展开式的输入数据与表示为乘积展开式的权重值进行乘法操作以产生mac操作结果。详细而言,输入数据的位313a乘上权重值314;输入数据的位313b乘上权重值314,以此类推。将乘法值加总可以产生mac操作结果(“5”)。
[0083]
在习知技术中,对8位输入数据与8位权重值进行mac操作,如果采用直接mac运算法,则所用的存储器单元数量为255*255*512=33,292,822。
[0084]
相反地,如上述般,在本发明实施例中,对8位输入数据与8位权重值进行mac操作,则所用的存储器单元数量为15*15*512*2=115,200*2=230,400。故而,本发明实施例在进行mac操作中所用的存储器单元数量约为习知技术的0.7%。
[0085]
在本发明实施例中,利用unfdp式的数据映射,可以减少运算时所用的存储器单元数量,故而可以减少运算成本,且减少纠错码(ecc,error correction code)成本。另外,也可以容忍错误位效应(fail-bit effect)。
[0086]
请再参考图1。在本发明实施例中,在进行乘法运算时,权重值(转导值)乃是储存于存储器阵列110的这些存储器单元111内,而输入数据(电压)则是由输出入电路130读取并传送给共同数据锁存器121d。共同数据锁存器121d传送输入数据给输入锁存器121a。
[0087]
为更了解本发明实施例的乘法运算,现请参考图4,其显示本发明实施例的乘法运算的示范例示意图。图4应用于存储器装置支援受选位线读取(the selected bit-line read function)。图4中,输入锁存器121a包括锁存器(第一锁存器)405与位线开关410。
[0088]
如图4所示,将权重值以一元编码(数值形式)表示(如图2)。故而,权重值的最高位存在8个存储器单元111内,权重值的次高位存在4个存储器单元111内,权重值的第三高位存在2个存储器单元111内,权重值的最低位存在1个存储器单元111内。
[0089]
同样地,将输入数据以一元编码(数值形式)表示(如图2),故而,输入数据的最高位存在8个共同数据锁存器121d内,输入数据的次高位存在4个共同数据锁存器121d内,输入数据的第三高位存在2个共同数据锁存器121d内,输入数据的最低位存在1个共同数据锁存器121d内。输入数据从共同数据锁存器121d送至锁存器405。
[0090]
在图4中,这些多个位线开关410耦接于存储器单元111与感应放大器121b之间。位线开关410受控于锁存器405。例如,当锁存器405输出位1时,位线开关410为导通,而当锁存器405输出位0时,位线开关410为关闭。
[0091]
此外,当存储器单元111内的权重值为位1且位线开关410为导通(输入数据为位1)时,感应放大器121b将感应到存储器单元电流以产生乘法结果“1”。当存储器单元111内的权重值为位0且位线开关410为导通(输入数据为位1)时,感应放大器121b感应不到存储器
单元电流。当存储器单元111内的权重值为位1且位线开关410为关闭(输入数据为位0)时,感应放大器121b感应不到存储器单元电流以产生乘法结果“0”。当存储器单元111内的权重值为位0且位线开关410为关闭(输入数据为位0)时,感应放大器121b感应不到存储器单元电流。
[0092]
亦即,经由图4的布局方式,当输入数据为位1且权重值为位1时,感应放大器121b感应到存储器单元电流以产生乘法结果“1”。至于其他情况,感应放大器121b感应不到存储器单元电流,以产生乘法结果“0”。
[0093]
由这些存储器单元111所产生的存储器单元电流imc会共同输入至模数转换单元161。
[0094]
至于输入数据、权重值、数式乘法结果与模拟存储器单元电流imc之间的关系如下表所示:
[0095]
输入数据权重值数式乘法结果imc00(hvt)000+1(lvt)0010(hvt)0ihvt1+1(lvt)1ilvt
[0096]
在上表中,hvt与lvt分别代表高临界值存储器单元与低临界值存储器单元。而ihvt与ilvt则分别代表当输入数据为逻辑1时,高临界值存储器单元与低临界值存储器单元(权重值分别为0(htv)与+1(ltv))所产生的模拟存储器单元电流imc。
[0097]
在本发明实施例中,在进行乘法运算时,可以重复使用受选位线读取(selected bit line read,sbl-read)指令。故而,本发明实施例可以减少以单位表示(single-bit representation)所来的变动影响(variation influence)。
[0098]
现请参考图5a,其显示根据本发明一实施例的分群操作(多数决操作)与位计数(bitwise counting)示意图。如图5a所示,参考符号gm1代表对输入数据的第一msb矢量与权重值进行位乘法(bitwise multiplication)后所得到的第一乘法运算结果;参考符号gm2代表对输入数据的第二msb矢量与权重值进行位乘法后所得到的第二乘法运算结果;参考符号gm3代表对输入数据的第三msb矢量与权重值进行位乘法后所得到的第三乘法运算结果;参考符号gl代表对输入数据的lsb与权重值进行位乘法后所得到的第四乘法运算结果。在分群操作(多数决操作)后,对第一乘法运算结果gm1进行分群结果是第一分群结果cb1(其累积权重是22);对第二乘法运算结果gm2进行分群结果是第二分群结果cb2(其累积权重是22);对第三乘法运算结果gm3进行分群结果是第三分群结果cb3(其累积权重是22);以及,对第四乘法运算结果gl进行分群结果是第四分群结果cb4(其累积权重是20)。
[0099]
图5b显示图3c的累积例。请参照图3c与图5b。如图5b所示,输入数据(图3c)的位313b乘上权重值314。从输入数据(图3c)的位313b乘上权重值314所产生的乘法结果的前四个位(“0000”)被分群为第一乘法结果“gm1”。相似地,从输入数据(图3c)的位3-13b乘上权重值314所产生的乘法结果的第五至第八位(“0000”)被分群为第二乘法结果“gm2”。从输入数据(图3c)的位313b乘上权重值314所产生的乘法结果的第九至第十二位(“1111”)被分群为第三乘法结果“gm3”。从输入数据(图3c)的位313b乘上权重值314所产生的乘法结果的第十三至第十六位(“0010”)则被直接计数。
[0100]
在分群操作(多数决操作)后,第一分群结果cb1是“0”(其累积权重是22);第二分群结果cb2是“0”(其累积权重是22);第三分群结果cb3是“1”(其累积权重是22)。在计数时,将这些分群结果cb1~cb4乘上个别累积权重并加以累积而产生mac操作结果。例如,如图5b所示,mac操作结果(第二mac操作结果out2)是cb1*22+cb2*22+cb3*22+cb4*20=0*22+0*22+1*22+1*20=00000000000000000000000000000101=5。
[0101]
在本发明一实施例中,分群原则(多数决原则)可如下所示:
[0102]
群组位分群结果(多数决结果)1111(状况a)11110(状况b)11100(状况c)1或01000(状况d)00000(状况e)0
[0103]
在上表中,以状况a而言,由于群组皆为正确的(“1111”没有错误位),故而,其多数决结果为1。以状况e而言,由于群组皆为正确的(“0000”没有错误位),故而,其多数决结果为0。
[0104]
以状况b而言,由于群组中有1个位是错误(“1110”中的“0”是错误的),通过多数决,可以将“1110”决定为“1”。以状况d而言,由于群组中有1个位是错误(“0001”中的“1”是错误的),通过多数决,可以将“0001”决定为“0”。
[0105]
以状况c而言,群组中有2个位是错误的(“1100”中的“00”是错误的,或者,“1100”中的“11”是错误的),通过多数决,可以将“1100”决定为“1”或“0”。
[0106]
故而,在本发明实施例中,通过分群(多数决)功能,可以减少错误位。
[0107]
分群电路140的分群结果输入至计数单元150进行位计数。
[0108]
在进行计数时,将msb矢量的乘法运算结果的计数结果与lsb矢量的乘法运算结果的计数结果进行累积。以图5a的情况而言,使用两种累积器。第一种累积器要被分配较高的累积权重值(例如是22)。第一种累积器要累积:(1)“对乘法运算结果gm1进行分群(多数决)的所得到分群(多数决)结果:1位”加上“对乘法运算结果gm2进行分群(多数决)的分群(多数决)结果:1位”再加上“对乘法运算结果gm3进行分群(多数决)的分群(多数决)结果:1位”。第一种累积器所得到的计数结果再乘以较高的累积权重值(例如是22)。第二种累积器要被分配较低的累积权重值(例如是20)。第二种累积器则是对乘法运算结果gl(多位)进行直接计数。将经累积权重加权过的两种累积结果相加,即可得到mac结果。例如,对乘法运算结果gm1进行分群的所得到分群结果为1(1位),对乘法运算结果gm2进行分群的分群结果为0(1位),对乘法运算结果gm3进行分群的分群结果为1(1位)。第一种累积器所得到的计数结果(1+0+1)再乘以22,等于2*22=8。对乘法运算结果gl为4(3位),可直接计数。将经累积权重加权过的两种累积结果相加,即可得到mac结果为8+4=12。
[0109]
由上述可知,在本发明实施例中,在进行计数或累积(accumulation)时,由于输入数据已展开为unfdp形式,可以对储存在共同数据锁存器内的数据进行分群(亦即,分为msb矢量与lsb矢量),通过分群机制(多数决机制)可以减少在msb矢量/lsb矢量内的错误位。
[0110]
此外,在本发明实施例中,即便使用传统的累积器(计数器),仍可以减少计数/累积时间,这是因为本发明实施例乃是使用数字计数指令(错误位计数),以及对于不同矢量
(msb矢量与lsb矢量)的累积结果给予不同累积权重。以一例而言,可以将累积运算时间减少至约40%。
[0111]
图6显示本发明一实施例的mac运算流程。在图6中,dmac代表第一种数字式累加(但不进行分群操作,亦即存储器装置100不包括分群电路140),mdmac代表第二种数字式累加(进行分群操作,亦即存储器装置100包括分群电路140),amac代表“模拟式累加”,hmac代表“混合式累加”。
[0112]
以本发明实施例的第一种数字式累加运算流程而言,输入数据传输至存储器装置。同时进行位线设定与字线设定。在位线设定完成后,进行感应。进行数字式累加操作。并将数字式累加操作结果回传。重复上述操作,直到所有输入数据皆已运算完成。
[0113]
以本发明实施例的第二种数字式累加运算流程而言,通过分群操作可以加速数字式累加的操作速度。
[0114]
以本发明实施例的模拟式累加运算流程而言,当在进行感应时,可同时完成adc转换与比较操作,所以可以更加提升mac操作。
[0115]
以本发明实施例的混合式累加运算流程而言,由于要进行模拟式累加与数字式累加,混合式累加的操作速度慢于模拟式累加但快于数字式累加。但是,混合式累加的准确度可几乎等同于数字式累加且高于模拟式累加。
[0116]
由图6可知,本发明实施例的mac操作可以分为两种子操作类型。第一种子操作类型是乘法操作,将输入数据乘上权重值,乃是根据受选位线读取指令而进行。第二种子操作类型则是累积(数据计数),特别是错误位计数(fail bit counting)。在本发明其他可能实施例中,可以加入更多计数单元,以加速计数/累积操作。
[0117]
数字式累加的操作时间主要取决于计数单元150的累积速度,因为计数单元150是逐位计算。模数转换单元161的量化准确度主要取决于存储器单元的变化容忍度(variation tolerance)。故而,数字式累加相较于模拟式累加具有高准确但低累加速度。
[0118]
此外,在本发明实施例中,亦可调整读取电压。图7a显示本发明实施例中的编程固定存储器页面(memory page)的流程图,图7b显示本发明实施例中的调整读取电压的流程图。
[0119]
在图7a中,在步骤710中,将一笔已知输入数据编程至一固定存储器页面内。例如但不受限于,该笔已知输入数据的位比率是:75%是位0,25%是位1。
[0120]
在图7b中,步骤720中,读取该固定存储器页面,并启动adc。步骤730中,判断adc的输出值是否接近参考测试值(如果adc是8位,则参考测试值为127,但本发明不受限于此)。如果步骤730为否,则流程接至步骤740。如果步骤730为是,则流程接至步骤750。
[0121]
步骤740中,如果adc的输出值小于参考测试值,则增加读取电压;以及,如果adc的输出值大于参考测试值,则减少读取电压。步骤740结束后,流程回至步骤720。
[0122]
步骤750中,记录目前的读取电压,以做为后续读取操作所用。
[0123]
如所知般,读取电压将会影响到adc输出值与位1的读取。故而,在本发明实施例中,可以根据操作条件(例如但不受限于,编程周期,温度或读取干扰等),周期性地校正读取电压,以保持高正确性与可靠度。
[0124]
图8显示根据本发明一实施例的mac操作流程。在步骤810中,储存多个权重值于该存储器装置的一存储器阵列的多个存储器单元内。在步骤820中,对多个输入数据与这些权
重值进行位乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流。在步骤830中,决定进行一模拟式累加、一数字式累加或一混合式累加。在步骤840中,在进行该模拟式累加时,对这些存储器单元电流进行模拟式累加以得到一第一乘积累加运算(mac)操作结果。在步骤850中,在进行该数字式累加时,对这些乘法结果进行数字式累加得到一第二乘积累加运算(mac)操作结果。在步骤860中,在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发该数字式累加。
[0125]
本发明实施例可应用于nand型快闪存储器,或者敏感于保持与热变化的存储器装置,例如但不受限于,nor型快闪存储器,相变(pcm)型快闪存储器,磁式随机存取存储器(magnetic ram)或电阻式ram。
[0126]
本发明实施例可应用于3d型存储器与2d型存储器,例如但不受限于,2d/3d nand型快闪存储器,2d/3d nor型快闪存储器,2d/3d相变(pcm)型快闪存储器,2d/3d磁式随机存取存储器(magnetic ram)或2d/3d电阻式ram。
[0127]
虽然上述实施例中,将输入数据及/或权重值分为msb矢量与lsb矢量(2个矢量),但本发明并不受限于此。在本发明其他可能实施例中,输入数据及/或权重值亦可分为更多个矢量,此亦在本公开精神范围内。
[0128]
本公开实施例不只可应用多数决分群技术,也可应用其他分群技术,以加速累积。
[0129]
本公开实施例可应用于,例如但不受限于,脸部辨认等ai技术之中。
[0130]
本公开实施例中,模数转换单元161可为电流模式模数转换单元,或者是电压模式模数转换单元,或者是混合模式模数转换单元。
[0131]
本公开实施例不只可应用于串联式mac操作,也可应用于并联式mac操作。
[0132]
综上所述,虽然本公开已以实施例公开如上,然其并非用以限定本发明。本公开所属技术领域中技术人员,在不脱离本发明的精神和范围内,当可作各种的更改与修饰。因此,本发明的保护范围当视随附的权利要求书范围所界定为准。
技术特征:
1.一种存储器装置,包括:一存储器阵列,包括多个存储器单元,可用于储存多个权重值在该存储器阵列的这些存储器单元内;一乘法电路,耦接至该存储器阵列,该乘法电路对多个输入数据与这些权重值进行乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流;一数字式累加电路,耦接至该乘法电路,对这些乘法结果进行一数字式累加;一模拟式累加电路,耦接至该存储器阵列,对这些存储器单元电流进行一模拟式累加以产生一第一乘积累加运算操作结果;以及一决定单元,耦接至该数字式累加电路与该模拟式累加电路,决定进行该模拟式累加、该数字式累加或一混合式累加,其中,在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发该数字式累加电路。2.根据权利要求1所述的存储器装置,其中,在进行该模拟式累加时,该决定单元能启动该模拟式累加电路但不能启动该数字式累加电路;在进行该数字式累加时,该决定单元能启动该数字式累加电路但不能启动该模拟式累加电路;以及在进行该混合式累加时,该决定单元能启动该数字式累加电路与该模拟式累加电路。3.根据权利要求1所述的存储器装置,还包括:一比较器,耦接至该模拟式累加电路与该数字式累加电路,比较该第一乘积累加运算操作结果与一触发参考值以输出一触发信号至该数字式累加电路,以触发该数字式累加电路进行该数字式累加,其中,该模拟式累加电路包括一模数转换单元,耦接至该存储器阵列,这些存储器单元的这些存储器单元电流累加后输入至该模数转换单元,以转换成该第一乘积累加运算操作结果。4.根据权利要求1所述的存储器装置,其中,该数字式累加电路包括:一计数单元,耦接至该乘法电路,对这些乘法结果进行位计数以得到一第二乘积累加运算的运算结果。5.根据权利要求4所述的存储器装置,还包括一分群电路,耦接至该乘法电路与该计数单元,该分群电路对该乘法电路的这些乘法结果进行分群操作,以得到多个分群结果,且将这些分群结果输入至该计数单元。6.根据权利要求1所述的存储器装置,各这些输入数据或各这些权重值的多个位分为多个位矢量;将这些位矢量的各位从以一二进制形式转换成以一元编码表示;将以一元编码表示的这些位矢量的该各位重复多次以成为一乘积展开式;以及该乘法电路对该乘积展开式的这些输入数据与该乘积展开式的这些权重值进行乘法操作,以得到这些乘法操作结果。7.根据权利要求5所述的存储器装置,其中,在对这些乘法结果进行分群操作时,该分群电路分别对这些矢量的多个乘法结果进行
分群操作,以得到这些分群结果;在进行位计数时,对于这些分群结果给予不同累积权重值后进行累积以得到该第二乘积累加运算结果;以及该分群电路是一多数决电路,包括多个多数决单元。8.一种存储器装置的操作方法,包括:储存多个权重值在该存储器装置的一存储器阵列的多个存储器单元内;对多个输入数据与这些权重值进行位乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流;以及决定进行一模拟式累加、一数字式累加或一混合式累加,其中,在进行该模拟式累加时,对这些存储器单元电流进行该模拟式累加以产生一第一乘积累加运算操作结果;在进行该数字式累加时,对这些乘法结果进行该数字式累加产生一第二乘积累加运算操作结果;以及在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发该数字式累加。9.根据权利要求8所述的存储器装置的操作方法,其中,对这些存储器单元的这些存储器单元电流累加后进行模数转换成该第一乘积累加运算操作结果;以及比较该第一乘积累加运算操作结果与一触发参考值以决定是否触发该数字式累加。10.根据权利要求8所述的存储器装置的操作方法,其中,将各这些输入数据或各这些权重值分为多个位矢量;将这些位矢量的各位从以一二进制形式转换成以一元编码表示;将以一元编码表示的这些位矢量的该各位重复多次以成为一乘积展开式;以及对该乘积展开式的这些输入数据与该乘积展开式的这些权重值进行乘法操作,以得到这些乘法操作结果;在进行位累积时,对于这些分群结果给予不同累积权重值后进行累积以得到该第二乘积累加运算结果;以及对这些乘法结果进行分群操作对这些乘法结果进行多数决操作。
技术总结
本公开提供了一种存储器装置与其操作方法。存储器装置包括:一存储器阵列,包括多个存储器单元,可用于储存多个权重值在该存储器阵列的这些存储器单元内;一乘法电路,对多个输入数据与这些权重值进行乘法,以得到多个乘法结果,其中在进行乘法时,这些存储器单元产生多个存储器单元电流;一数字式累加电路,对这些乘法结果进行一数字式累加;一模拟式累加电路,对这些存储器单元电流进行一模拟式累加以产生一第一乘积累加运算(MAC)操作结果;以及一决定单元,决定进行该模拟式累加、该数字式累加或一混合式累加,其中,在进行该混合式累加时,根据该第一乘积累加运算操作结果决定是否触发该数字式累加电路。否触发该数字式累加电路。否触发该数字式累加电路。
技术研发人员:胡瀚文 李永骏 林柏榕 王淮慕
受保护的技术使用者:旺宏电子股份有限公司
技术研发日:2021.07.22
技术公布日:2022/3/8