存内计算单元、模块和系统的制作方法

专利检索2022-05-10  34



1.本发明涉及计算存储一体化,特别是涉及一种存内计算单元、模块和系统。


背景技术:

2.计算存储一体化是近年来出现的新型计算技术,其目标为在内存中完成数据计算,避免或减少数据在内存和cpu之间的搬运,提高计算效率。尤其是随着人工智能(artificial intelligence,ai)的发展,数据量和计算量快速增加,传统的冯诺依曼计算机结构正受到越来越多的挑战。以卷积神经网络(convolution neural network,cnn)为例,每次乘运算之后,需要先将乘积存储起来,取出到cpu内相加,周而复始。数据在内存和cpu之间的不断存取占用大量能耗,效率很低。


技术实现要素:

3.基于此,有必要针对传统计算结构需要不断存取数据,效率不高的问题,提供一种存内计算单元、模块和系统。
4.一种存内计算单元,包括:存储阵列,包含多个呈n行n列排布的存储单元,位于第i行第j列的所述存储单元记为s
i,j
;位于同一列的所述存储单元中存储的数据值相同;所述存储阵列用于存储n比特的第一数据;其中,n大于等于1,i大于等于1且小于等于n,j大于等于1且小于等于n;n条字线,所述字线用于输入n比特的第二数据;位于同一行所述存储单元的控制端经由同一条所述字线依次串接;m条位线,m等于2n

1,第k条位线记为位线bl
k
,k大于等于1且小于等于m;其中,当k大于等于1且小于等于n时,第k条位线将与存储单元s
1,k
及存储单元s
k,1
位于同一直线上的各存储单元的输出端依次串接;当k大于n且小于等于m时,第k条位线将与存储单元s
k

n 1,n
及存储单元s
n,k

n 1
位于同一直线上的各存储单元的输出端依次串接相。
5.上述存内计算单元,以输入值控制字线,直接作用于存储单元的控制端,可以在一个存储单元内实现单个比特(bit)值与单个bit值的乘法运算,运算结果以输出端是否产生饱和电流表示。当存储阵列为n行n列,字线为n行时,则可以在一个时钟周期内完成n bit与n bit的二进制乘法运算。无需将存储数据搬运至cpu内进行运算,可以在存储模块中直接完成运算,减少了数据搬运,在运算量大的情况下,可以大幅提升运算速度,降低功耗。
6.在其中一个实施例中,所述存储单元包括非易失性存储器。
7.在其中一个实施例中,所述非易失性存储器包括nor闪存单元。
8.在其中一个实施例中,所述存储单元的控制端包括非易失性存储器的栅极;所述存储单元的输出端包括非易失性存储器的漏极。
9.在其中一个实施例中,所述第一数据为二进制数据,所述非易失性存储器用于存储比特值0或1;所述第二数据为二进制数据,当所述字线上的电压大于等于预设电压,则所述字线上的比特值为1;当所述字线上的电压小于所述预设电压,则所述字线上的比特值为0。
10.在其中一个实施例中,所述存内计算单元还包括:m个模数转换模块,所述模数转换模块与所述位线一一对应连接,所述模数转换模块用于将所述位线的输出电流转化为数字信号。
11.通过使用模数转换模块将电流值转化位数字信号,该数字信号代表了各个位线上饱和电流的数量,即某一位线上导通的存储单元的个数。传统的技术方案中多采用感知放大器(sense amplifier)来感测电流的大小,然后再将电流值除以饱和电流值,以得到数字信号。上述存内计算单元通过模数转换模块完成电流值到数字信号的转化,简化了电路结构。
12.在其中一个实施例中,所述非易失性存储器包括:基底,所述基底包括衬底、衬底介质层及全耗尽沟道层;其中,所述基底内形成有阱区;所述衬底介质层位于所述衬底上,且覆盖所述阱区;所述全耗尽沟道层层位于所述衬底介质层上;栅极结构,位于所述全耗尽沟道层的上表面;源极,位于所述全耗尽沟道层的上表面,且位于所述栅极结构的一侧;漏极,位于所述全耗尽沟道层的上表面,且位于所述栅极结构远离所述源极的一侧;其中,所述源极和所述漏极通过外延工艺形成于所述全耗尽沟道层的上表面。
13.上述存内计算单元中,每个非易失性存储器采用具有全耗尽沟道层和和衬底介质层的半导体结构,可以减少漏电,使得存内计算单元可以应用于边缘计算的ai装置。此外,源极和漏极采用外延式工艺形成,可以提高饱和电流,加快读取速度,提升计算效能。
14.在其中一个实施例中,所述栅极结构包括:栅极叠层结构,位于所述全耗尽沟道层的上表面;所述栅极叠层结构包括由下至上依次叠置的隧穿介质层、浮栅、控制介质层和控制栅;栅极侧墙,位于所述栅极叠层结构相对的两侧。
15.一种存内计算模块,包括一个或多个上述实施例中所述的存内计算单元。
16.一种存内计算系统,包括一个或多个上述实施例中所述的存内计算模块。
17.上述存内计算模块和存内计算系统,无需借助于cpu进行数据运算,可以在存储阵列中直接完成数据运算,较少了数据搬移所消耗的时间和能耗,提高了运算效率。
附图说明
18.图1为本技术一实施例中存内计算单元的结构示意图。
19.图2为两个8bit的二进制数据相乘的计算过程示意图。
20.图3为本技术另一实施例中存内计算单元的结构示意图。
21.图4为本技术一实施例中将存内计算单元各位线上的数字信号进行求和的示意图。
22.图5为本技术图4所示实施例中的存储计算单元的各位线所对应的最大值和bit数。
23.图6为本技术一实施例中非易失性存储器的截面结构示意图。
24.图7为本技术一实施例中输入数据矩阵与filter进行点积运算的示意图。
25.图8为图7所示运算过程的矩阵展开示意图。
26.图9为25个存内计算单元同时运算时,对各位线上的电流进行模数转换后进行求和的示意图。
27.图10为本技术一实施例中输入数据与k个filter分别进行点积运算的矩阵展开示
意图。
28.附图标号说明:1、基底;11、衬底;12、衬底介质层;13、全耗尽沟道层;21、隧穿介质层;22、浮栅;23、控制介质层;24、控制栅;25、栅极侧墙;3、源极;4、漏极。
具体实施方式
29.为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。
30.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
31.在描述位置关系时,除非另有规定,否则当一元件例如层、膜或基板被指为在另一膜层“上”时,其能直接在其他膜层上或亦可存在中间膜层。进一步说,当层被指为在另一层“下”时,其可直接在下方,亦可存在一或多个中间层。亦可以理解的是,当层被指为在两层“之间”时,其可为两层之间的唯一层,或亦可存在一或多个中间层。
32.在使用本文中描述的“包括”、“具有”、和“包含”的情况下,除非使用了明确的限定用语,例如“仅”、“由
……
组成”等,否则还可以添加另一部件。除非相反地提及,否则单数形式的术语可以包括复数形式,并不能理解为其数量为一个。
33.随着计算机的发展,计算机的计算能力得到不断提升,但是也逐渐遇到了瓶颈。较为明显的是在人工智能(artificial intelligence,ai)领域,计算量急剧增加,依靠传统的冯诺依曼结构已经很难再进一步,提高计算速度。因此,很多科学界和公司开始了针对传统计算机结构的改进。其中一种思路是模仿人脑,将计算功能和存储功能都在存储单元内完成,而无需将存储单元内的数据搬运至cpu内进行计算,然后再将计算结果搬运至存储单元。
34.如图1所示,本技术的一个实施例提供了一种存内计算单元,包括:存储阵列,包含多个呈n行n列排布的存储单元,位于第i行第j列的所述存储单元记为s
i,j
;位于同一列的所述存储单元中存储的数据值相同;所述存储阵列用于存储n比特的第一数据;其中,n大于等于1,i大于等于1且小于等于n,j大于等于1且小于等于n;n条字线,所述字线用于输入n比特的第二数据;位于同一行所述存储单元的控制端经由同一条所述字线依次串接;m条位线,m等于2n

1,第k条位线记为位线bl
k
,k大于等于1且小于等于m;其中,当k大于等于1且小于等于n时,第k条位线将与存储单元s
1,k
及存储单元s
k,1
位于同一直线上的各存储单元的输出端依次串接;当k大于n且小于等于m时,第k条位线将与存储单元s
k

n 1,n
及存储单元s
n,k

n 1
位于同一直线上的各存储单元的输出端依次串接相。
35.其中,对于存储阵列中行的排列,可以按照从上到下的方向,将存储阵列最上面的一行作为第一行,最下面的一行作为第n行。对于存储阵列中列的排列,可以按照从右到左的方向,将存储阵列最右侧的一列作为第一列,最左侧的一列作为第n列。n可以是任意正整数,例如3、5、8或10,在本实施例中,以n为8进行示例说明。
36.在图1中,当n为8时,存储阵列右上角的存储单元记为存储单元s1,1,左下角的存储单元为存储单元s8,8。存储阵列中每一列的存储单元存储有相同的比特值,作为示例,第一列存储单元中均存储有数据w0,第二列存储单元中均存储有数据w1,
……
,第8列存储单元中均存储有数据w7。存储阵列中存储的第一数据为w=[w7,w6,w5,w4,w3,w2,w1,w0]。每条字线输入一个bit的数值,作为示例,第一行存储单元的控制端均与第一字线相连接,第一字线携带的输入数据为d0,第二行存储单元的控制端均与第二字线相连接,第二字线携带的输入数据为d1,
……
,第八行存储单元的控制端均与第八字线相连接,第八字线携带的输入数据为d7。8条字线向存储阵列输入的第二数据为d=[d7,d6,d5,d4,d3,d2,d1,d0]。
[0037]
作为示例,当字线上的电压大于预设电压,则字线上的比特值为1,当字线上的电压小于预设电压,则字线上的比特值为0。例如,当第一字线上的电压大于等于预设电压时,d0为1;当第一字线上的电压小于预设电压时,d0为0。
[0038]
位线的连接关系分为两部分进行描述,其中,当k大于等于1且小于等于8时,位线bl
k
将与存储单元s
1,k
及存储单元s
k,1
位于同一直线上的各存储单元的输出端依次串接。例如,位线bl1与存储单元s
1,1
的输出端相连接,位线bl2依次与存储单元s
2,1
和存储单元s
1,2
的输出端相连接,位线bl3依次与存储单元s
3,1
、存储单元s
2,2
及存储单元s
1,3
的输出端相连接。当k大于8且小于等于15时,位线bl
k
将与存储单元s
k

8 1,8
及存储单元s
8,k

8 1
位于同一直线上的各存储单元的输出端依次串接相。例如,位线bl
15
与存储单元s
8,8
的输出端相连接,位线bl
14
依次与存储单元s
7,8
和存储单元s
8,7
的输出端相连接,位线bl
13
依次与存储单元s
6,8
、存储单元s
7,7
及存储单元s
8,6
的输出端相连接。
[0039]
上述存内计算单元可以用于完成两个8bit数据的二进制乘法运算,其中,具体地,输入数据为第二数据d=[d7,d6,d5,d4,d3,d2,d1,d0],存储数据为第一数据w=[w7,w6,w5,w4,w3,w2,w1,w0]。数据d和数据w二进制乘法计算过程如图2所示。其中,两个8bit的数据进行二进制乘法,得到一个15bit的乘积p。其中,d与w的最大值为255,p的最大值为65025。
[0040]
作为示例,当一存储单元中存储有数据1,且与该存储单元的栅极相连的字线上的数据也是1,则该存储单元被导通,产生一个饱和电流。该饱和电流代表乘积结果为1,即1
×
1=1。
[0041]
作为示例,当一存储单元中存储有数据0,且与该存储单元的栅极相连的字线上的数据是1,则该存储单元未被导通,无法产生饱和电流。则乘积结果为0,即0
×
1=0。
[0042]
作为示例,当一存储单元中存储有数据1,且与该存储单元的栅极相连的字线上的数据是0,则该存储单元未被导通,无法产生饱和电流。则乘积结果为0,即1
×
0=0。
[0043]
基于上述运算逻辑,当采用上述存内计算单元对二进制数据w和二进制数据d进行二进制乘法运算时,输入到每条位线上的电流等于与该位线相连的导通存储单元所产生的饱和电流之和。作为示例,以bl6输出的电流为例进行说明。假设输入数据d=[1,1,1,1,1,1,1,1,1],存储数据w=[0,1,0,1,1,0,1,0]。那么与bl6相连的存储单元中有4个导通,产生4个饱和电流,所以,bl6中的电流值为单个饱和电流值的4倍。根据各位线上饱和电流的个数,即可得到各位线上的乘积和。
[0044]
上述存内计算单元,在进行二进制乘法时,可以预先将一个乘数存储于内存阵列中,然后向该内存阵列输入第二个乘数,由每个存储单元完成单个bit与单个bit的乘法。无
需将存储的数据进行移动即可快速得到乘积结果,实现了数据存储和数据计算的一体化。此外,传统技术中字线一般与行译码器相连,作为选址线路进行使用,而本技术直接将输入数据的各bit值施加到字线上,字线与各存储单元的控制端相连,控制存储单元是否导通,相当于输入数据直接与存储数据进行乘法运算,精简了电路结构,提高了运算效率。
[0045]
在一个实施例中,存储单元可以是非易失性存储器,无需借助于外界电源来对存储单元进行不断地刷新以保持数据,可以不接外部电源的情况下保存数据。作为示例,存储单元的控制端可以是非易失性存储器的栅极,存储单元的输出端可以是非易失性存储器的漏极。
[0046]
在一个实施例中,非易失性存储器可以是nor闪存单元。
[0047]
在一个实施例中,存内计算单元还包括:m个模数转换模块,所述模数转换模块与所述位线一一对应连接,所述模数转换模块用于将所述位线的输出电流转化为数字信号。
[0048]
作为示例,如图3所示,存内计算单元包括15个adc模块,各个adc模块与各个位线一一对应连接。adc模块可以将各位线中的电流值转化为数字信号。adc模块的量化阶(quantization scale)可以以nor闪存单元的饱和电流值的大小为基准。作为示例,当bl6中的电流值为单个饱和电流值的4倍时,与bl6所连的adc模块输出的数字信号为0100。
[0049]
将各位线上的电流信号转化为数字信号后,对各数字信号进行累积求和,即可得到最终的乘积和,如图4所示。各条位线上输出的最大值(即最大饱和电流的个数)如图5所示。
[0050]
与传统的采用感知放大器感测电流的大小不同,本技术采用模数转换模块将电流值直接转化为数字信号,以进行加法运算,得到最终的乘积值。
[0051]
当单个位线上饱和电流的个数较多时,该位线上输出的电流值中包含了每个饱和电流的误差,也就是说,单条位线上流入的饱和电流的个数越多,积累的误差也就越大。当误差积累超过adc转换模块的量化阶时,adc转换模块有可能转换得到错误的数字信号。
[0052]
为了减小饱和电流的误差,防止位线上电流在进行模数转换时输出错误的数字信号,本技术在一个实施例中对非易失性存储器进行了改进。如图6所示,改进后的非易失性存储器包括基底1,基底1包括衬底11、衬底介质层12及全耗尽沟道层13;其中,基底1内形成有阱区;衬底介质层12位于衬底11上,且覆盖阱区;全耗尽沟道层13层位于衬底介质层12上;栅极结构,位于全耗尽沟道层13的上表面;源极3,位于全耗尽沟道层13的上表面,且位于栅极结构的一侧;漏极4,位于全耗尽沟道层13的上表面,且位于栅极结构远离源极3的一侧;其中,源极3和漏极4通过外延工艺形成于全耗尽沟道层13的上表面。
[0053]
通过在衬底11和全耗尽沟道层13之间设置衬底介质层12,可以使得源极3和漏极4之间的电子通道仅限于全耗尽沟道层13内,避免了源极3和漏极4之间通过阱区进行电子转移,从而大幅降低了漏电流。全耗尽沟道层13与衬底介质层12相结合,在半导体结构导通的情况下,将饱和电流的通道限制在全耗尽沟道层13中,极大地提高了半导体结构的一致性,降低了不同半导体结构之间的变异性。使用上述非易失性存储器,可以使不同的存储单元产生的饱和电流一致性更高,避免因为误差累积而导致计算结果错误。
[0054]
此外,源极3和漏极4可以通过外延工艺形成于全耗尽沟道层13的上表面,以得到外延式源极3和外延式漏极4,可以在晶体管导通时极大地提高沟道中的饱和电流,提高晶体管的开关速度。
[0055]
在一个实施例中,请继续参考图6,栅极结构包括:栅极叠层结构,位于全耗尽沟道层13的上表面;栅极叠层结构包括由下至上依次叠置的隧穿介质层21、浮栅22、控制介质层23和控制栅24;栅极侧墙25,位于栅极叠层结构相对的两侧。作为示例,图6中所示非易失性存储器可以是nor闪存单元。
[0056]
在一个实施例中,本技术还公开了一种存内计算模块,该存内计算系统包括一个或多个上述实施例中的存内计算单元。
[0057]
每个存内计算单元都可以完成一个n bit
×
n bit的二进制运算。作为示例,存内计算单元可以为nor闪存单元,存内计算模块包含一个或多个nor闪存单元。
[0058]
上述存内计算模块可以作为卷积神经网络计算中用于产生特征图(feature map)的过滤器(filter)。以影像识别的cnn架构为例,在第一层的特征图(feature map)计算中,输入数据矩阵(input)中的每个数据可以代表影像的黑白像素,每个像素的值具有l个bit,l可以是任意正整数,例如5、8、12或16。在本实施中,l为8,输入数据矩阵为5
×
5的矩阵。filter也是5
×
5的矩阵,filter中每个元素也为8bit的二进制数。
[0059]
filter与输入数据矩阵进行点积运算的示意图如图7所示。其中,wij是filter的值,d
ij
为输入值,i=0,1,2,3,4,j=0,1,2,3,4,5。根据前述内容可以知晓,对于每个d
ij
*w
ij
的计算,均需要一个存内计算单元来执行计算。例如,d
00
*w
00
、d
01
*w
01
、d
02
*w
02
、d
03
*w
03
、d
04
*w
04
均为8bit
×
8bit的数据相乘,其中,
[0060]
d
00
=[d
00
[0],d
00
[1],d
00
[2],d
00
[3],d
00
[4],d
00
[5],d
00
[6],d
00
[7]]
[0061]
w
00
=[w
00
[0],w
00
[1],w
00
[2],w
00
[3],w
00
[4],w
00
[5],w
00
[6],w
00
[7]]
[0062]
根据图1所示的存内计算单元结构,可以先将w
00
写入存储阵列,将d00通过输入线路输入存储阵列,在一个时钟周期内即可完成8bit乘8bit的数据计算。由于一次点积运算共需要完成25次8bit乘8bit的数据计算,即d
00
*w
00
、d
01
*w
01
、d
02
*w
02
、d
03
*w
03

……
d
43
*w
43
、d
44
*w
44
,因此,可以布置25个存内计算单元同时运算,每个存内计算单元完成一个8bit
×
8bit的数据计算,即可在一个时钟周期内完成一次点积运算。
[0063]
为了便于理解,可将图7中的式子以向量和矩阵的形式展开,如图8所示。其中,左侧的列矩阵代表从字线上向存内计算单元输入的数据,该列矩阵具有200行,1列,其中,每8行代表一个8bit的输入数据。例如,d
00
[0]至d
00
[7]代表数据d
00
。作为示例,当第一行元素d
00
[0]数值为1,说明与第一行nor闪存单元相连的字线上的电压大于预设电压(预设电压为nor闪存单元的阈值电压)。当第一行元素d
00
[0]数值为0,说明与第一行nor闪存单元相连的字线上的电压小于预设电压。
[0064]
右侧的数据矩阵可以代表存储阵列,该数据矩阵具有200行,8列。其中,每8行代表一个8bit的存储数据。8bit的二进制数据w
00
至w
44
从上到下依次排布。作为示例,前8行代表存储数据w
00
。具体地,前8行中,每一列元素的数值相同,例如,前8行中的第一列元素均为w
00
[7],第二列元素均为w
00
[6],
……
,第七列元素均为w
00
[0]。
[0065]
控制存内计算模块进行点积运算,并将所有25个存内计算单元中标号相同的位线并联,然后经过adc进行模数转换后相加,即可得到一次点积运算的乘积和,具体的求和电路如图9所示。其中,接入adc的每个位线(bl)中汇集了25个子位线(即每个存内计算单元的位线)的电流,因此,经过adc模数转换后,各个bl输出的结果的最大值从25到200不等。经过位移相加运算,本实施例得到的最大乘积和为65025
×
25=1625625,相当于21bit。
[0066]
本技术的一个实施例还公开了一种存内计算系统,包括一个或多个上述实施例中所述的存内计算模块。
[0067]
作为示例,5
×
5的filter有k个,所以,每个存内计算模块具有25个存内计算单元。对于一个5
×
5的输入数据矩阵而言,做完全部的点积运算需要进行的运算过程示意图如图10所示。根据图10进行构建的存内计算系统,包括200条字线(5
×5×
8),15
×
k条位线,25
×
k个存内计算单元,每个feature map的最大乘积值的最大比特数为21bit。
[0068]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0069]
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
转载请注明原文地址:https://win.8miu.com/read-25431.html

最新回复(0)