CN117178324A - 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构 - Google Patents

用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构 Download PDF

Info

Publication number
CN117178324A
CN117178324A CN202180097186.5A CN202180097186A CN117178324A CN 117178324 A CN117178324 A CN 117178324A CN 202180097186 A CN202180097186 A CN 202180097186A CN 117178324 A CN117178324 A CN 117178324A
Authority
CN
China
Prior art keywords
array
coupled
rows
output
decoder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180097186.5A
Other languages
English (en)
Inventor
H·V·特兰
T·乌
S·洪
S·特林
A·李
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Storage Technology Inc
Original Assignee
Silicon Storage Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/461,901 external-priority patent/US20220374696A1/en
Application filed by Silicon Storage Technology Inc filed Critical Silicon Storage Technology Inc
Priority claimed from PCT/US2021/048864 external-priority patent/WO2022245382A1/en
Publication of CN117178324A publication Critical patent/CN117178324A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Non-Volatile Memory (AREA)

Abstract

公开了用于将深度学习人工神经网络中的模拟神经存储器中的非易失性存储器单元的阵列分裂成多个部分的多个实施方案。该阵列的每个部分与专用于该部分的特定电路以及与该阵列的一个或多个其他部分共享的其他电路交互。

Description

用于深度学习人工神经网络中模拟神经存储器的分裂阵列 架构
优先权声明
本申请要求于2021年5月18日提交的名称为″Split Array Architecture forAnalog Neural Memory in a Deep Learning Artificial Neural Network″的美国临时专利申请63/190,228号和于2021年8月30日提交的名称为″Split Array Architecturefor Analog Neural Memory in a Deep Learning Artificial Neural Network″的美国专利申请17/461,901号的优先权,这些申请以引用方式并入本文。
技术领域
公开了用于在深度学习人工神经网络中的模拟神经存储器中将阵列分裂成多个部分的多个实施方案,其中每个部分与专用于该部分的特定电路以及与一个或多个其他部分共享的其他电路交互。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连″神经元″层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请第15/594,439号中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。
非易失性存储器单元
非易失性存储器是众所周知的。例如,美国专利5,029,130(″130专利″),其以引用方式并入本文,公开了分裂栅非易失性存储器单元的阵列,它是一种闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线24耦接到漏极区16。
通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由福勒-诺德海姆(FN)隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
通过将正电压置于字线端子22上以及将正电压置于源极区14上来由带有热电子的源极侧注入(SSI)编程存储器单元210(其中电子被置于浮栅上)。电子流将从漏极区16流向源极区14。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或″1″状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或″0″状态。
表1示出可施加到存储器单元110的端子用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表1:图3的闪存存储器单元210的操作
WL BL SL
读取 2V-3V 0.6V-2V 0V
擦除 约11V-13V 0V 0V
编程 1V-2V 10.5μA-3μA 9V-10V
作为其他类型的闪存存储器单元的其他分裂栅存储器单元配置是已知的。例如,图3示出了四栅极存储器单元310,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常联接到字线WL)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
表2示出可施加到存储器单元310的端子用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表2:图3的闪存存储器单元310的操作
WL/SG BL CG EG SL
读取 1.0V-2V 0.6V-2V 0V-2.6V 0V-2.6V 0V
擦除 -0.5V/0V 0V 0V/-8V 8V-12V 0V
编程 1V 0.1μA-1μA 8V-11V 4.5V-9V 4.5V-5V
图4示出三栅极存储器单元410,其为另一种类型的闪存存储器单元。存储器单元410与图3的存储器单元310相同,不同的是存储器单元410没有单独的控制栅。除了没有施加控制栅偏置,擦除操作(由此通过使用擦除栅进行擦除)和读取操作与图3的操作类似。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元410的端子用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
表3:图4的闪存存储器单元410的操作
WL/SG BL EG SL
读取 0.7V-2.2V 0.6V-2V 0V-2.6V 0V
擦除 -0.5V/0V 0V 11.5V 0V
编程 1V 0.2μA-3μA 4.5V 7V-9V
图5示出堆叠栅存储器单元510,其为另一种类型的闪存存储器单元。存储器单元510与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。通过电子从FG到衬底的FN隧穿来进行擦除,通过在沟道18与漏极区16之间的区域处的沟道热电子(CHE)注入、通过电子从源极区14朝向漏极区16流动以及类似于带有较高控制栅电压的存储器单元210的读取操作来进行编程。
表4示出可施加到存储器单元510和衬底12的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表4:图5的闪存存储器单元510的操作
CG BL SL 衬底
读取 2V-5V 0.6V-2V 0V 0V
擦除 -8V至-10V/0V FLT FLT 8V-10V/15V-20V
编程 8V-12V 3V-5V 0V 0V
本文所述的方法和装置可以应用于其他非易失性存储器技术,诸如但不限于FINFET分裂栅闪存或堆叠栅闪存存储器、NAND闪存、SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、CT(电荷捕获)存储器、CN(碳管)存储器、OTP(双电平或多电平一次可编程)和CeRAM(关联电子ram)等。
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行精细调谐是理想的。
采用非易失性存储器单元阵列的神经网络
图6概念性地示出本实施方案的利用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,S0为输入层,其为具有5位精度的32x32像素RGB图像(即,三个32x32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层S0到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3x3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3x3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成层C1的特征映射中的一者的像素。然后将3x3滤波器在输入层S0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3x3滤波器在输入层S0的整个32x32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成层C1的不同特征映射,直到计算出层C1的所有特征映射。
在层C1处,在本示例中,存在16个特征映射,每个特征映射具有30x30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。池化函数P1的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层S1处,存在16个15x15特征映射(即,十六个每个特征映射15x15像素的不同阵列)。从层S1到层C2的突触CB2利用4x4滤波器扫描层S1中的映射,其中滤波器移位1个像素。在层C2处,存在22个12x12特征映射。在从层C2转到层S2之前,应用激活函数P2(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。在层S2处,存在22个6x6特征映射。将激活函数(池化)应用于从层S2到层C3的突触CB3,其中层C3中的每个神经元经由CB3的相应突触连接至层S2中的每个映射。在层C3处,存在64个神经元。从层C3到输出层S3的突触CB4完全将C3连接至S3,即层C3中的每个神经元都连接到层S3中的每个神经元。S3处的输出包括10个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图7为可用于该目的的阵列的框图。矢量-矩阵乘法(VMM)阵列32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的CB1、CB2、CB3和CB4)。具体地,VMM阵列32包括非易失性存储器单元阵列33、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对VMM阵列32的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对非易失性存储器单元阵列33的输出进行解码。另选地,位线解码器36可以解码非易失性存储器单元阵列33的输出。
非易失性存储器单元阵列33用于两个目的。首先,它存储将由VMM阵列32使用的权重。其次,非易失性存储器单元阵列33有效地将输入与存储在非易失性存储器单元阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,非易失性存储器单元阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算其也是高功效的。
将非易失性存储器单元阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对非易失性存储器单元阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重和负权重的求和。
然后将差分求和器38的输出值求和后提供至激活函数块39,该激活函数块对输出进行修正。激活函数块39可提供sigmoid、tanh或ReLU函数。激活函数块39的经修正的输出值成为作为下一层(例如,图6中的层C1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,非易失性存储器单元阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和运算放大器38和激活函数块39构成多个神经元。
图7中对VMM阵列32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平、二进制电平或数字位(在这种情况下,提供DAC以将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图8为示出多层VMM阵列32(此处标记为VMM阵列32a、32b、32c、32d和32e)的使用的框图。如图8所示,通过数模转换器31将输入(表示为Inputx)从数字转换成模拟,并且将其提供至输入VMM阵列32a。转换的模拟输入可以是电压或电流。第一层的输入D/A转换可通过使用将输入Inputx映射到输入VMM阵列32a的矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换也可以由模拟至模拟(A/A)转换器完成,以将外部模拟输入转换成到输入VMM阵列32a的映射模拟输入。
由输入VMM阵列32a产生的输出被作为到下一个VMM阵列(隐藏级别1)32b的输入提供,该输入继而生成作为下一VMM阵列(隐藏级别2)32c的输入而提供的输出,以此类推。VMM阵列32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM阵列32a、32b、32c、32d和32e可以是独立的物理非易失性存储器阵列、或者多个VMM阵列可以利用相同非易失性存储器阵列的不同部分、或者多个VMM阵列可以利用相同物理非易失性存储器阵列的重叠部分。图8所示的示例包含五个层(32a、32b、32c、32d、32e):一个输入层(32a)、两个隐藏层(32b、32c)和两个全连接层(32d、32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
矢量-矩阵乘法(VMM)阵列
图9示出神经元VMM阵列900,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列900包括非易失性存储器单元的存储器阵列901和非易失性参考存储器单元的参考阵列902(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
在VMM阵列900中,控制栅线(诸如控制栅线903)在竖直方向上延伸(因此参考阵列902在行方向上与控制栅线903正交),并且擦除栅线(诸如擦除栅线904)在水平方向上延伸。此处,VMM阵列900的输入设置在控制栅线(CG0、CG1、CG2、CG3)上,并且VMM阵列900的输出出现在源极线(SL0、SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SL0、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
如本文针对神经网络所述,VMM阵列900的非易失性存储器单元(即VMM阵列900的存储器单元310)优选地被配置为在亚阈值区域中操作。
在弱反转(亚阈值区)中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
Ids=Io*e(Vg-Vth)/nVt=w*Io*e(Vg)/nVt
其中w=e(-Vth)/nVt
其中Ids为漏极到源极电流;Vg为存储器单元上的栅极电压;Vth是存储器单元的阈值电压;Vt是热电压=k*T/q,其中k是玻尔兹曼常数,T是以开尔文为单位的温度,并且q是电子电荷;n是斜率因子=1+(Cdep/Cox),其中Cdep=耗尽层的电容,并且Cox是栅极氧化物层的电容;Io是等于阈值电压的栅极电压下的存储器单元电流,Io与(Wt/L)*u*Cox*(n-1)*Vt2成比例,其中u是载流子迁移率,并且Wt和L分别是存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
其中,wp为参考存储器单元或外围存储器单元的w。
对于用作带有电流输入的矢量矩阵乘法器VMM阵列的存储器阵列,输出电流为:
Iout=wa*Io*e(Vg)/nVt,即
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
此处,wa=存储器阵列中的每个存储器单元的w。
Vthp是外围存储器单元的有效阈值电压,并且Vtha是主要(数据)存储器单元的有效阈值电压。注意,晶体管的阈值电压是衬底主体偏置电压的函数,并且可以对表示为Vsb的衬底主体偏置电压进行调制以补偿在此类温度下的各种条件。阈值电压Vth可以表示为:
Vth=Vth0+γ(SQRT|Vsb-2*φF)-SQRT|2*φF|)
其中Vth0是具有零衬底偏置的阈值电压,φF是表面电位,并且γ是主体效应参数。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的闪存存储器单元可被配置成在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L
W=α(Vgs-Vth)
意指线性区域中的权重W与(Vgs-Vth)成比例
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
对于I-V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管可以用来将输入/输出电流线性转换成输入/输出电压。
另选地,本文所述的VMM阵列的存储器单元可被配置成在饱和区域中操作:
Ids=1/2*β*(Vgs-Vth)2;β=u*Cox*Wt/L
Wα(Vgs-Vth)2,意指权重W与(Vgs-Vth)2成比例
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
另选地,本文所述的VMM阵列的存储器单元可用于神经网络的每个层或多个层的所有区域或其组合(亚阈值、线性或饱和区域)。
美国专利申请第15/826,345号描述了图7的VMM阵列32的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
图10示出神经元VMM阵列1000,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1000包括非易失性存储器单元的存储器阵列1003、第一非易失性参考存储器单元的参考阵列1001和第二非易失性参考存储器单元的参考阵列1002。沿阵列的列方向布置的参考阵列1001和1002用于将流入端子BLR0、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL1、WL2和WL3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1014(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
存储器阵列1003用于两个目的。首先,它将VMM阵列1000将使用的权重存储在其相应的存储器单元上。第二,存储器阵列1003有效地将输入(即,在端子BLR0、BLR1、BLR2和BLR3中提供的电流输入,参考阵列1001和1002将它们转换成输入电压以提供给字线WL0、WL1、WL2和WL3)乘以存储在存储器阵列1003中的权重,然后将所有结果(存储器单元电流)相加以在相应的位线(BL0-BLN)上产生输出,该输出将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列1003消除了对单独的乘法逻辑电路和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线(WL0、WL1、WL2和WL3)上提供,并且输出在读取(推断)操作期间出现在相应位线(BL0-BLN)上。置于位线BL0-BLN中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
表5示出用于VMM阵列1000的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表5:图10的VMM阵列1000的操作
图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1103、第一非易失性参考存储器单元的参考阵列1101和第二非易失性参考存储器单元的参考阵列1102。参考阵列1101和1102在VMM阵列1100的行方向上延伸。VMM阵列与VMM 1000类似,不同的是在VMM阵列1100中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,并且输出在读取操作期间出现在源极线(SL0、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出用于VMM阵列1100的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图11的VMM阵列1100的操作
图12示出神经元VMM阵列1200,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。参考阵列1201和1202用于将流入端子BLR0、BLR1、BLR2和BLR3中的电流输入转换为电压输入CG0、CG1、CG2和CG3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1212(仅部分示出)二极管式连接,其中电流输入通过BLR0、BLR1、BLR2和BLR3流入其中。多路复用器1212各自包括相应的多路复用器1205和共源共栅晶体管1204,以确保在读取操作期间第一非易失性参考存储器单元和第二非易失性参考存储器单元中的每一者的位线(诸如BLR0)上的电压恒定。将参考单元调谐至目标参考电平。
存储器阵列1203用于两个目的。首先,它存储将由VMM阵列1200使用的权重。第二,存储器阵列1203有效地将输入(提供到端子BLR0、BLR1、BLR2和BLR3的电流输入,参考阵列1201和1202将这些电流输入转换成输入电压以提供给控制栅(CG0、CG1、CG2和CG3))乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(CG0、CG1、CG2和CG3)上,输出在读取操作期间出现在位线(BL0-BLN)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
VMM阵列1200为存储器阵列1203中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则单元被擦除,并且部分编程操作的序列重新开始。如图所示,共享同一擦除栅(诸如EG0或EG1)的两行被一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
表7示出用于VMM阵列1200的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表7:图12的VMM阵列1200的操作
图13示出神经元VMM阵列1300,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。EG线EGR0、EG0、EG1和EGR1竖直延伸,而CG线CG0、CG1、CG2和CG3以及SL线WL0、WL1、WL2和WL3水平延伸。VMM阵列1300与VMM阵列1400类似,不同的是VMM阵列1300实现双向调谐,其中每个单独的单元可以根据需要被完全擦除、部分编程和部分擦除,以由于使用单独的EG线而在浮栅上达到期望的电荷量。如图所示,参考阵列1301和1302将端子BLR0、BLR1、BLR2和BLR3中的输入电流转换成要在行方向上施加到存储器单元的控制栅电压CG0、CG1、CG2和CG3(通过经由多路复用器1314的二极管式连接的参考单元的动作)。电流输出(神经元)在位线BL0-BLN中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
表8示出用于VMM阵列1300的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表8:图13的VMM阵列1300的操作
图22示出神经元VMM阵列2200,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列2200中,输入INPUT0......、INPUTN分别在位线BL0、......BLN上被接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图23示出神经元VMM阵列2300,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上被接收,并且输出OUTPUT0、......OUTPUTN在位线BL0、......、BLN上生成。
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM分别在字线WL0、......、WLM上被接收,并且输出OUTPUT0、......OUTPUTN在位线BL0、......、BLN上生成。
图25示出神经元VMM阵列2500,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM分别在字线WL0、......、WLM上被接收,并且输出OUTPUT0、......OUTPUTN在位线BL0、......、BLN上生成。另选地,输入可在控制栅CG0、......、CGM上被接收。
图26A示出神经元VMM阵列2600,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTn分别在竖直控制栅线CG0、......、CGN上被接收,并且输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图26B示出神经元VMM阵列2620,该神经元VMM阵列是具有竖直而不是水平字线的VMM阵列2600的另选设计。在该实例中,输入可在竖直字线WL0、WL1上被接收,并且输出OUTPUT1和OUTPUT2在水平源极线SL0和SL1上生成。
图26C示出神经元VMM阵列2640,该神经元VMM阵列是具有竖直而不是水平的擦除栅线的VMM阵列2600的另选设计。在该实例中,输入可在竖直擦除栅线EG0、EG1上被接收,并且输出OUTPUT1和OUTPUT2在水平源极线SL0和SL1上生成。并且输出OUTPUT1和OUTPUT2在水平源极线SL0和SL1上生成。
图27示出神经元VMM阵列2700,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTN分别在位线控制栅极2701-1、2701-2至2701-(N-1)和2701-N的栅极上被接收,这些栅极分别耦接到位线BL0、......、BLN。示例性输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图28示出神经元VMM阵列2800,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM在字线WL0、......、WLM上被接收,并且输出OUTPUT0、......、OUTPUTN分别在位线BL0、......、BLN上生成。另选地,输入可在控制栅线CG0、.........、CGM上被接收。
图29示出神经元VMM阵列2900,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM在控制栅线CG0、......、CGM上被接收。输出OUTPUT0、......、OUTPUTN分别在竖直源极线SL0、......、SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线。另选地,输入可在字线WL0、......、WLM上被接收。
图30示出神经元VMM阵列3000,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTM在控制栅线CG0、......、CGM上被接收。输出OUTPUT0、......、OUTPUTN分别在竖直位线BL0、......、BLN上生成,其中每个位线BLi耦接到列i中的所有存储器单元的位线。
长短期存储器
现有技术包括被称为长短期存储器(LSTM)的概念。LSTM单元通常用于神经网络中。LSTM允许神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM单元包括单元、输入栅、输出栅和忘记栅。三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔。VMM尤其可用于LSTM单元中。
图14示出示例性LSTM 1400。该示例中的LSTM 1400包括单元1401、1402、1403和1404。单元1401接收输入矢量x0并生成输出矢量h0和单元状态矢量c0。单元1402接收输入矢量x1、来自单元1401的输出矢量(隐藏状态)h0和来自单元1401的单元状态c0,并生成输出矢量h1和单元状态矢量c1。单元1403接收输入矢量x2、来自单元1402的输出矢量(隐藏状态)h1和来自单元1402的单元状态c1,并生成输出矢量h2和单元状态矢量c2。单元1404接收输入矢量x3、来自单元1403的输出矢量(隐藏状态)h2和来自单元1403的单元状态c2,并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的LSTM仅仅是示例。
图15示出可用于图14中的单元1401、1402、1403和1404的LSTM单元1500的示例性具体实施。LSTM单元1500接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
LSTM单元1500包括sigmoid函数设备1501、1502和1503,每个sigmoid函数设备应用0与1之间的数字来控制允许输入矢量中的每个分量通过到输出矢量的数量。LSTM单元1500还包括用于将双曲线正切函数应用于输入矢量的tanh设备1504和1505、用于将两个矢量相乘在一起的乘法器设备1506、1507和1508以及用于将两个矢量相加在一起的加法设备1509。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。
图16示出LSTM单元1600,其为LSTM单元1500的具体实施的示例。为了方便读者,LSTM单元1600中使用与LSTM单元1500相同的编号。sigmoid函数设备1501、1502和1503以及tanh设备1504各自包括多个VMM阵列1601和激活函数块1602。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。乘法器设备1506、1507和1508以及加法设备1509以数字方式或模拟方式实现。激活函数块1602可以数字方式或模拟方式实现。
LSTM单元1600的另选形式(以及LSTM单元1500的具体实施的另一示例)在图17中示出。在图17中,sigmoid函数设备1501、1502和1503以及tanh设备1504以时分复用方式共享相同的物理硬件(VMM阵列1701和激活函数块1702)。LSTM单元1700还包括将两个矢量相乘在一起的乘法器设备1703,将两个矢量相加在一起的加法设备1708,tanh设备1505(其包括激活函数块1702),当从sigmoid函数块1702输出值i(t)时存储该值的寄存器1707,当值f(t)*c(t-1)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1704,当值i(t)*u(t)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1705,当值o(t)*c~(t)通过多路复用器1710从乘法器设备1703输出时存储该值的寄存器1706,以及多路复用器1709。
LSTM单元1600包含多组VMM阵列1601和相应的激活函数块1602,而LSTM单元1700仅包含一组VMM阵列1701和激活函数块1702,它们用于表示LSTM单元1700的实施方案中的多个层。LSTM单元1700将需要的空间比LSTM 1600更小,因为与LSTM单元1600相比,LSTM单元1700只需要其1/4的空间用于VMM和激活函数块。
还可理解,LSTM单元通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路块(诸如求和器和激活函数块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化VMM阵列本身之外所需的电路。
栅控递归单元
模拟VMM具体实施可用于栅控递归单元(GRU)系统。GRU是递归神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。
图18示出了示例性GRU 1800。该示例中的GRU 1800包括单元1801、1802、1803和1804。单元1801接收输入矢量x0并生成输出矢量h0。单元1802接收输入矢量x1、来自单元1801的输出矢量h0并生成输出矢量h1。单元1803接收输入矢量x2和来自单元1802的输出矢量(隐藏状态)h1并生成输出矢量h2。单元1804接收输入矢量x3和来自单元1803的输出矢量(隐藏状态)h2并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。
图19示出可用于图18的单元1801、1802、1803和1804的GRU单元1900的示例性具体实施。GRU单元1900接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元1900包括sigmoid函数设备1901和1902,这些设备中的每个设备将介于0与1之间的数字应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元1900还包括用于将双曲线正切函数应用于输入矢量的tanh设备1903、用于将两个矢量相乘在一起的多个乘法器设备1904、1905和1906、用于将两个矢量相加在一起的加法设备1907,以及用于从1中减去输入以生成输出的互补设备1908。
图20示出GRU单元2000,其为GRU单元1900的具体实施的示例。为了方便读者,GRU单元2000中使用与GRU单元1900相同的编号。如图20所示,sigmoid函数设备1901和1902以及tanh设备1903各自包括多个VMM阵列2001和激活函数块2002。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。乘法器设备1904、1905和1906、加法设备1907和互补设备1908以数字方式或模拟方式实现。激活函数块2002可以数字方式或模拟方式实现。
GRU单元2000的另选形式(以及GRU单元1900的具体实施的另一示例)在图21中示出。在图21中,GRU单元2100利用VMM阵列2101和激活函数块2102,该激活函数块在被配置为sigmoid函数时,应用0与1之间的数字来控制允许输入矢量中的每个分量有多少通过到输出矢量。在图21中,sigmoid函数设备1901和1902以及tanh设备1903以时分复用方式共享相同的物理硬件(VMM阵列2101和激活函数块2102)。GRU单元2100还包括将两个矢量相乘在一起的乘法器设备2103,将两个矢量相加在一起的加法设备2105,从1减去输入以生成输出的互补设备2109,多路复用器2104,当值h(t-1)*r(t)通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2106,当值h(t-1)*z(t)通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2107,和当值h^(t)*(1-z(t))通过多路复用器2104从乘法器设备2103输出时保持该值的寄存器2108。
GRU单元2000包含多组VMM阵列2001和激活函数块2002,而GRU单元2100仅包含一组VMM阵列2101和激活函数块2102,它们用于表示GRU单元2100的实施方案中的多个层。GRU单元2100将需要比GRU单元2000更少的空间,因为与GRU单元2000相比,GRU单元2100只需要其1/3的空间用于VMM和激活函数块。
还可以理解的是,GRU系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路块(诸如求和器和激活函数块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化VMM阵列本身之外所需的电路。
VMM阵列的输入可为模拟电平、二进制电平、脉冲、时间调制脉冲或数字位(在这种情况下,需要DAC来将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平、定时脉冲、脉冲或数字位(在这种情况下,需要输出ADC来将输出模拟电平转换成数字位)。
一般来讲,对于VMM阵列中的每个存储器单元,每个权重W可由单个存储器单元或由差分单元或由两个混合存储器单元(2个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重W作为差分权重(W=W+-W-)。在两个混合存储器单元中,需要两个存储器单元来实现权重W作为两个单元的平均值。
必须擦除和编程在模拟神经形态存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
在VMM系统中需要尽可能多地增加吞吐量和减少延迟,同时减少存储器单元和支持电路所需的总空间量。
发明内容
公开了用于在深度学习人工神经网络中的模拟神经存储器中将阵列分裂成多个部分的多个实施方案,其中每个部分与专用于该部分的特定电路以及与一个或多个其他部分共享的其他电路交互。
附图说明
图1为示出人工神经网络的示意图。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元。
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6为示出利用一个或多个非易失性存储器阵列的示例性人工神经网络的不同水平的示意图。
图7为示出矢量-矩阵乘法系统的框图。
图8为示出利用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
图9示出矢量-矩阵乘法系统的另一实施方案。
图10示出矢量-矩阵乘法系统的另一实施方案。
图11示出矢量-矩阵乘法系统的另一实施方案。
图12示出矢量-矩阵乘法系统的另一实施方案。
图13示出矢量-矩阵乘法系统的另一实施方案。
图14示出现有技术的长短期存储器系统。
图15示出在长短期存储器系统中使用的示例性单元。
图16示出图15的示例性单元的一个实施方案。
图17示出图15的示例性单元的另一实施方案。
图18示出现有技术的栅控递归单元系统。
图19示出在栅控递归单元系统中使用的示例性单元。
图20示出图19的示例性单元的一个实施方案。
图21示出图19的示例性单元的另一实施方案。
图22示出矢量-矩阵乘法系统的另一实施方案。
图23示出矢量-矩阵乘法系统的另一实施方案。
图24示出矢量-矩阵乘法系统的另一实施方案。
图25示出矢量-矩阵乘法系统的另一实施方案。
图26A示出矢量-矩阵乘法系统的另一实施方案。
图26B示出矢量-矩阵乘法系统的另一实施方案。
图26C示出矢量-矩阵乘法系统的另一实施方案。
图27示出矢量-矩阵乘法系统的另一实施方案。
图28示出矢量-矩阵乘法系统的另一实施方案。
图29示出矢量-矩阵乘法系统的另一实施方案。
图30示出矢量-矩阵乘法系统的另一实施方案。
图31示出矢量-矩阵乘法系统。
图32示出分裂矢量-矩阵乘法系统的一个实施方案。
图33示出分裂阵列矢量-矩阵乘法系统的一个实施方案。
图34示出分裂阵列矢量-矩阵乘法系统的另一实施方案。
图35示出分裂阵列矢量-矩阵乘法系统的另一实施方案。
图36示出分裂阵列矢量-矩阵乘法系统的另一实施方案。
图37示出矢量-矩阵乘法系统中的分裂阵列的一个实施方案。
图38示出矢量-矩阵乘法系统中的分裂阵列的另一实施方案。
图39示出矢量-矩阵乘法系统中的单个阵列和分裂阵列的示例性布局。
具体实施方式
本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。
VMM系统综述
图31示出了VMM系统3100的框图。VMM系统3100包括VMM阵列3101、行解码器3102、高电压解码器3103、列解码器3104、位线驱动器3105、输入电路3106、输出电路3107、控制逻辑部件3108和偏置发生器3109。VMM系统3100进一步包括高电压生成块3110,该高电压生成块包括电荷泵3111、电荷泵调节器3112和高电压电平发生器3113。VMM系统3100进一步包括(编程/擦除,或亦称权重调谐)算法控制器3114、模拟电路3115、控制引擎3116(其可以包括诸如算术函数、激活函数、嵌入式微控制器逻辑等的特殊函数)以及测试控制逻辑部件3117。下文所述的系统和方法能够在VMM系统3100中实现。
输入电路3106可以包括电路,诸如DAC(数模转换器)、DPC(数字到脉冲转换器、数字到时间调制脉冲转换器)、AAC(模拟到模拟转换器,诸如电流到电压转换器、对数转换器)、PAC(脉冲到模拟电平转换器)或任何其他类型的转换器。输入电路3106能够实现归一化、线性或非线性上/下缩放函数或算术函数。输入电路3106能够实现对输入水平的温度补偿函数。输入电路3106能够实现激活函数,诸如ReLU或sigmoid。输出电路3107能够包括电路,诸如ADC(模数转换器,用于将神经元模拟输出转换成数字位)、AAC(模拟到模拟转换器,诸如电流到电压转换器,对数转换器)、APC(模拟到脉冲转换器,模拟到时间调制脉冲转换器)、电流到电压转换器或任何其他类型的转换器。输出电路3107能够实现激活函数,诸如ReLU或sigmoid。输出电路3107能够在神经元输出上实现统计归一化、正则化、上/下缩放/增益函数、统计舍入或算术函数(例如,加法、减法、除法、乘法、移位、对数)。输出电路3107能够在神经元输出或阵列输出(诸如位线输出)上实现温度补偿函数,以便保持阵列的功率消耗大致恒定或诸如通过使IV斜率保持大致相同来提高阵列(神经元)输出的精度。
图32至图36示出包含与VMM系统3100的一些共性以及一些修改的VMM系统的实施方案。
图32示出VMM系统3200。VMM系统3200包括阵列3201、共享行解码器3202、共享高电压解码器3203、列解码器3204和3205、(行)输入电路3220、输出电路3206和3207以及共享位线驱动器3208。共享行解码器3202被耦接到阵列3201中的所有行并且将电压施加到所选行。共享高电压解码器3203可选择性地耦接到阵列3201中的所有行。共享高电压解码器3203任选地包括可选择性地耦接到阵列中的所有行的控制栅高电压解码器3231以及可选择性地耦接到阵列中的所有行的共享擦除栅高电压解码器3232。输入电路3220例如类似于图31的输入电路3106。输出电路3206和3207的电路和功能例如各自类似于图31的输出电路3107的电路和功能。与VMM系统3100不同,在VMM系统3200中,某些操作在不同组的电路之间被分裂。具体地,阵列3201中的列(例如,所有奇数列)的半部由列解码器3204和输出电路3206操作,并且阵列3201中的列(例如,所有偶数列)的另一半部由列解码器3205和输出电路3207操作。因此,输出电路3206被耦接到列解码器3204,用于在读取操作期间从列的第一半部中的一个或多个列生成第一输出,并且输出电路3207被耦接到列解码器3207,用于在读取操作期间从列的第二半部中的一个或多个列生成第二输出。在该实施方案中,所有列在编程或擦除操作期间被耦接到共享位线驱动器3208。这允许同时读取多个位线,这意味着耦接到列解码器3204和输出电路3206的位线以及耦接到列解码器3205和输出电路3207的位线由共享位线驱动器3208同时启用以用于读取操作。因此,这增加了读取阵列3201的吞吐量。另选地,读取操作不需要同时进行。
任选地,进一步参考图39,可在阵列的上半部与下半部之间实现连续扩散。
图33示出VMM系统3300。VMM系统3300包括阵列3301a和3301b、行解码器3302、共享高电压解码器3303、列解码器3304和3305、输入电路3320、电流到电压转换器电路3306和3307、共享模拟-数字转换器(ADC)3308以及共享位线驱动器3309。电流到电压转换器电路3306或3307和共享ADC电路3308是图32中的输出电路3207的部件。
与VMM系统3100不同,在VMM系统3300中,某些操作在不同组的电路之间被分裂。具体地,阵列3301a由列解码器3304和电流到电压转换器3306操作,并且阵列3301b由列解码器3305和电流到电压转换器3307操作。这允许同时执行多个读取和/或编程操作,其中可对阵列3301a中的一个或多个单元以及阵列3301b中的一个或多个单元同时执行读取或编程操作。
电流到电压转换器电路3306和3307均被耦接到在读取操作期间以时间复用方式使用的共享模拟-数字转换器3308以及耦接到在编程和擦除操作期间使用的共享位线驱动器3309。例如,在读取操作中,阵列3301a被启用并且被耦接到列解码器3304和电流到电压转换器电路3306,而阵列3301b被启用并且同时被耦接到列解码器3305和电流到电压转换器电路3307。来自电流到电压转换器电路3306和3307的输出电压例如由共享ADC 3308内的S/H电容器采样和保持(S/H),并且这些阵列输出电压由时间复用共享ADC 3308数字化(转换)(因为它在电流到电压转换器电路3306和3307之间共享)。例如,对于在两个电流到电压转换器电路之间共享的一个ADC,使用两组S/H电容器。在另一个实施方案中,一个ADC可用于N个电流到电压转换器电路,并且在这种情况下,使用N组S/H电容器。
在两个电流到电压转换器电路之间共享ADC的使用也可应用于图34/图35/图36。
图34示出VMM系统3400。VMM系统3400包括阵列3401a和3401b、共享行解码器3402、共享高电压解码器3403、列解码器3404和3405、输入电路3420、输出电路3406和3407以及共享位线驱动器3408。与VMM系统3100不同,在VMM系统3400中,某些操作在不同组的电路之间被分裂。具体地,阵列3401a由列解码器3404和输出电路3406操作,并且阵列3401b由列解码器3405和输出电路3407操作。这允许同时执行多个读取和/或编程操作,其中可对阵列3401a中的一个或多个单元以及阵列3401b中的一个或多个单元同时执行读取或编程操作。阵列3401a和3401b均被耦接到共享位线驱动器3408,该共享位线驱动器在编程和擦除操作期间使用。
图35示出VMM系统3500。VMM系统3500包括阵列3501a、3501b、3501c和3501d;行解码器3502和3503;共享高电压解码器3504;列解码器3505、3506、3507和3508;输入电路3520;输出电路3509、3510、3511和3512;以及共享位线驱动器3513和3514。共享高电压解码器3504可选择性地耦接到阵列3501a、3501b、3501c和3501d中的所有行。行解码器3502由阵列3501a和3501b共享并且被耦接到那些阵列中的所有行并将电压施加到所选行,并且行解码器3503由阵列3501c和3501d共享并且被耦接到那些阵列中的所有行并将电压施加到所选行。
在VMM系统3500中,某些操作在不同组的电路之间分裂。具体地,阵列3501a由列解码器3505和输出电路3509操作;阵列3501b由列解码器3507和输出电路3511操作;阵列3501c由列解码器3506和输出电路3510操作;并且阵列3501d由列解码器3508和输出电路3512操作。这允许在所有四个阵列中一次同时执行多个读取和/或编程操作,其中可对阵列3501a中的一个或多个单元、阵列3501b中的一个或多个单元、阵列3501c中的一个或多个单元和阵列3501d中的一个或多个单元同时执行读取或编程操作。阵列3501a和3501b在编程和擦除操作期间均被选择性地耦接到共享位线驱动器3513。阵列3501c和3501d在编程和擦除操作期间均被选择性地耦接到共享位线驱动器3514。
例如,可执行第一读取操作,其中列解码器3505和输出电路3509从阵列3501a中的一个或多个行生成第一输出,可执行第二读取操作,其中列解码器3506和输出电路3510从阵列3501c中的一个或多个行生成第二输出,可执行第三读取操作,其中列解码器3507和输出电路3511从阵列3501b中的一个或多个行生成第三输出,并且可执行第四读取操作,其中列解码器3508和输出电路3512从阵列3501d中的一个或多个行生成第四输出。任选地,第一读取操作和第三读取操作可同时发生。任选地,第二读取操作和第四读取操作可同时发生。
图36示出VMM系统3600。VMM系统3600包括阵列3601a、3601b、3601c和3601d;行解码器3621;控制栅解码器3602和3603;共享高电压解码器3604;列解码器3605、3606、3607和3608;输出电路3609、3610、3611和3612;以及共享位线驱动器3613和3614。在VMM系统3600中,某些操作在不同组的电路之间分裂。具体地,阵列3601a由列解码器3605和输出电路3609操作;阵列3601b由列解码器3607和输出电路3611操作;阵列3601c由列解码器3606和输出电路3610操作;并且阵列3601d由列解码器3608和输出电路3612操作。这允许在所有四个阵列中一次同时执行多个读取和/或编程操作,其中可对阵列3601a中的一个或多个单元、阵列3601b中的一个或多个单元、阵列3601c中的一个或多个单元和阵列3601d中的一个或多个单元同时执行读取或编程操作。阵列3601a和3601b在编程和擦除操作期间均被选择性地耦接到共享位线驱动器3613。阵列3601c和3601d在编程和擦除操作期间均被选择性地耦接到共享位线驱动器3614。
图32至图36示出通过控制栅上的行输入来进行读取。另选地,读取可在字线或擦除栅上进行。图32中的输入电路3220、图33中的输入电路3320、图34中的输入电路3420、图35中的输入电路3520、图36中的输入电路3620类似于图31的输入电路3106。图32中的输出电路3206/3207和图34中的输出电路3406/4307、图35中的输出电路3507/3508/3509/3510以及图36中的输出电路3607/3608/3609/3610类似于图31的输出电路3107。
图37示出VMM阵列3700的一部分。VMM阵列3700包括行3701、3702、3703、3704、3705、3706、3707和3708。行3701、3702、3705和3706共享擦除栅线(EG0)和源极线(SL0);行3703、3704、3707和3708共享擦除栅线(EG1)和源极线(SL1)。此外,行3701和3703共享控制栅线(CG0/CG2);行3702和3704共享控制栅线(CG1/CG3);行3705和3707共享控制栅线(CG4/CG6);并且行3706和3708共享控制栅线(CG5/CG7)。这些耦接允许不同的行共享解码器电路。共享阵列端子,使得通过在未选单元上具有减少量的擦除或编程电压应力来减少编程或擦除干扰。
在图37和图38(下面描述)的阵列中,用于神经读取操作(多个行和多个位线同时接通)的VMM阵列3700和3800的行输入在字线上。如果用于神经读取的输入在控制栅上,则控制栅不能跨相同子阵列或阵列组中的多个行共享。
图38示出阵列3800的一部分。阵列3800包括扇区3809和3819。扇区3809包括行3801、3802、3803、3804、3805、3806、3807和3808。扇区3819包括行3811、3812、3813、3814、3815、3816、3817和3818。
行3801(第一行)和3811(第二行)共享控制栅线(CG0)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3802和3812共享控制栅线(CG1)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3803和3813共享控制栅线(CG2)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3804和3814共享控制栅线(CG3)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3805和3815共享控制栅线(CG4)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3806和3816共享控制栅线(CG5)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);行3807和3817共享控制栅线(CG6)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线);并且行3808和3818共享控制栅线(CG7)(意味着那些行中的每个单元的控制栅端子被耦接到相同控制栅线)。这意味着跨扇区共享控制栅。这些耦接允许不同的行共享解码器电路。共享阵列端子,使得通过在未选单元上具有减少量的擦除或编程电压应力来减少编程或擦除干扰。
行3801(第一行)、3802(第三行)、3805和3806共享擦除栅线(EG0)(意味着那些行中的每个单元的擦除栅端子被耦接到相同擦除栅线)和源极线(SL0)(意味着那些行中的每个单元的源极线端子被耦接到相同源极线);行3803、3084、3807和3808共享擦除栅线(EG1)(意味着那些行中的每个单元的擦除栅端子被耦接到相同擦除栅线)和源极线(SL1)(意味着那些行中的每个单元的源极线端子被耦接到相同源极线);行3811、3812、3815和3816共享擦除栅线(EG0)(意味着那些行中的每个单元的擦除栅端子被耦接到相同擦除栅线)和源极线(SL0)(意味着那些行中的每个单元的源极线端子被耦接到相同源极线);并且行3813、3114、3817和3818共享擦除栅线(EG1)(意味着那些行中的每个单元的擦除栅端子被耦接到相同擦除栅线)和源极线(SL1)(意味着那些行中的每个单元的源极线端子被耦接到相同源极线)。
图39示出单个阵列3901(诸如图31中的阵列3101和图32中的阵列3201)和分裂阵列3902(诸如图33中的阵列3301a和3301b、图34中的阵列3401a和3401b、图35中的阵列3501a、3501b、3501c和3501d以及图36中的阵列3601a、3601b、3601c和3601d)的一部分的示例性布局。分裂阵列3902遵循与阵列3901相同的设计,除了某些接触件和金属连接3904被移除(或不形成),从而产生子阵列3903a和3903b。通过将字线和控制栅接地来禁用接口处的少数伪行。由于前端层(即,列内的连续列扩散和源极线内的连续行扩散)和多晶硅在非易失性存储器单元的两个阵列之间(在电分离的阵列之间)是连续且均匀的,因此这维持了过程均匀性。与不同阵列的物理分离相比,这还导致减少的面积开销。
应当指出,如本文所用,术语″在......上方″和″在......上″两者包容地包括″直接在......上″(之间未设置中间材料、元件或空间)和″间接在......上″(之间设置有中间材料、元件或空间)。类似地,术语″相邻″包括″直接相邻″(之间没有设置中间材料、元件或空间)和″间接相邻″(之间设置有中间材料、元件或空间),″安装到″包括″直接安装到″(之间没有设置中间材料、元件或空间)和″间接安装到″(之间设置有中间材料、元件或空间),并且″电耦接至″包括″直接电耦接至″(之间没有将元件电连接在一起的中间材料或元件)和″间接电耦接至″(之间有将元件电连接在一起的中间材料或元件)。例如,″在衬底上方″形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。

Claims (27)

1.一种模拟神经存储器,包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置;
第一列解码器,所述第一列解码器耦接到所述阵列中的所述列的第一半部;
第二列解码器,所述第二列解码器耦接到所述阵列中的所述列的第二半部;
第一输出电路,所述第一输出电路耦接到所述第一列解码器,用于在第一读取操作期间从所述列的所述第一半部中的一个或多个列生成第一输出;和
第二输出电路,所述第二输出电路耦接到所述第二列解码器,用于在第二读取操作期间从所述列的所述第二半部中的一个或多个列生成第二输出。
2.根据权利要求1所述的模拟神经存储器,其中所述第一读取操作和所述第二读取操作同时发生。
3.根据权利要求1所述的模拟神经存储器,还包括:
共享位线驱动器,所述共享位线驱动器在编程操作期间耦接到所述第一列解码器以及耦接到所述第二列解码器。
4.根据权利要求1所述的模拟神经存储器,其中共享高电压解码器被选择性地耦接到所述阵列中的所有行。
5.根据权利要求1所述的模拟神经存储器,其中共享控制栅高电压解码器被选择性地耦接到所述阵列中的所有行。
6.根据权利要求1所述的模拟神经存储器,其中共享擦除栅高电压解码器被选择性地耦接到所述阵列中的所有行。
7.根据权利要求1所述的模拟神经存储器,其中共享行解码器被耦接到所述阵列中的所有行。
8.根据权利要求1所述的模拟神经存储器,其中连续列扩散发生在所述列的所述第一半部与所述列的所述第二半部中的列之间。
9.一种模拟神经存储器,包括:
非易失性存储器单元的第一阵列,所述非易失性存储器单元的第一阵列按行和列布置;
非易失性存储器单元的第二阵列,所述非易失性存储器单元的第二阵列按行和列布置;
非易失性存储器单元的第三阵列,所述非易失性存储器单元的第三阵列按行和列布置;
非易失性存储器单元的第四阵列,所述非易失性存储器单元的第四阵列按行和列布置;
第一行解码器,所述第一行解码器耦接到所述第一阵列和所述第二阵列的行;
第二行解码器,所述第二行解码器耦接到所述第三阵列和所述第四阵列的行;
第一列解码器,所述第一列解码器耦接到所述第一阵列;
第二列解码器,所述第二列解码器耦接到所述第二阵列;
第三列解码器,所述第三列解码器耦接到所述第三阵列;
第四列解码器,所述第四列解码器耦接到所述第四阵列;
第一输出电路,所述第一输出电路耦接到所述第一列解码器,用于在第一读取操作期间从所述第一阵列中的一个或多个行生成第一输出;
第二输出电路,所述第二输出电路耦接到所述第二列解码器,用于在第一读取操作期间从所述第二阵列中的一个或多个行生成第二输出;
第三输出电路,所述第三输出电路耦接到所述第三列解码器,用于在第二读取操作期间从所述第三阵列中的一个或多个行生成第三输出;和
第四输出电路,所述第四输出电路耦接到所述第四列解码器,用于在所述第二读取操作期间从所述第四阵列中的一个或多个行生成第四输出。
10.根据权利要求9所述的模拟神经存储器,其中所述第一读取操作和所述第三读取操作同时发生。
11.根据权利要求9所述的模拟神经存储器,其中所述第二读取操作和所述第四读取操作同时发生。
12.根据权利要求9所述的模拟神经存储器,还包括:
第一共享位线驱动器,所述第一共享位线驱动器在编程操作期间耦接到所述第一列解码器和所述第二列解码器;和
第二共享位线驱动器,所述第二共享位线驱动器在编程操作期间耦接到所述第三列解码器和所述第四列解码器。
13.根据权利要求9所述的模拟神经存储器,其中所述第一输出电路、所述第二输出电路、所述第三输出电路和所述第四输出电路中的每一者包括电流到电压转换器。
14.根据权利要求13所述的模拟神经存储器,其中所述第一输出电路、所述第二输出电路、所述第三输出电路和所述第四输出电路中的每一者还包括耦接到所述电流到电压转换器的模拟-数字转换器。
15.根据权利要求9所述的模拟神经存储器,其中共享高电压解码器被选择性地耦接到所述阵列中的所有行。
16.根据权利要求9所述的模拟神经存储器,其中所述第一阵列、所述第二阵列、所述第三阵列和所述第四阵列各自包括列之间的连续列扩散。
17.根据权利要求9所述的模拟神经存储器,其中所述第一阵列、所述第二阵列、所述第三阵列和所述第四阵列是由一个物理阵列形成的,并且被所述物理阵列的没有金属接触件的一部分彼此分开。
18.一种模拟神经存储器,包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置;
第一输出电路,所述第一输出电路耦接到所述阵列中的所述列的第一半部,用于在第一读取操作期间从所述列的所述第一半部中的一个或多个列生成第一输出;和
第二输出电路,所述第二输出电路耦接到所述列的第二半部,用于在第二读取操作期间从所述列的所述第二半部中的一个或多个列生成第二输出。
19.根据权利要求18所述的模拟神经存储器,其中所述第一读取操作和所述第二读取操作同时发生。
20.根据权利要求18所述的模拟神经存储器,其中共享高电压解码器被选择性地耦接到所述阵列中的所有行。
21.根据权利要求18所述的模拟神经存储器,其中共享控制栅高电压解码器被选择性地耦接到所述阵列中的所有行。
22.根据权利要求18所述的模拟神经存储器,其中共享擦除栅高电压解码器被选择性地耦接到所述阵列中的所有行。
23.根据权利要求18所述的模拟神经存储器,其中共享字线解码器被选择性地耦接到所述阵列中的所有行。
24.根据权利要求18所述的模拟神经存储器,其中所述阵列包括在所述列的所述第一半部与所述列的所述第二半部中的列之间的连续列扩散。
25.一种模拟神经存储器,包括:
非易失性存储器单元的阵列,所述非易失性存储器单元的阵列按行和列布置,每个非易失性存储器单元包括控制栅端子、字线端子、源极线端子和擦除栅端子;
多条控制栅线,每条控制栅线耦接到非易失性存储器单元的行的控制栅端子;
多条字线,每条字线耦接到非易失性存储器单元的行的字线端子;
多条源极线,每条源极线耦接到非易失性存储器单元的两个相邻行的源极线端子;和
多条擦除栅线,每条擦除栅线耦接到非易失性存储器单元的行的擦除栅端子;
其中第一行的控制栅线被耦接到第二行的控制栅线,所述第一行的擦除栅线被耦接到第三行的擦除栅线,并且所述第一行的源极线被耦接到所述第三行的源极线。
26.根据权利要求25所述的模拟神经存储器,其中所述第一行和所述第二行在不同扇区中。
27.根据权利要求25所述的模拟神经存储器,其中所述第一行和所述第三行在不同扇区中。
CN202180097186.5A 2021-05-18 2021-09-02 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构 Pending CN117178324A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/190,228 2021-05-18
US17/461,901 2021-08-30
US17/461,901 US20220374696A1 (en) 2021-05-18 2021-08-30 Split array architecture for analog neural memory in a deep learning artificial neural network
PCT/US2021/048864 WO2022245382A1 (en) 2021-05-18 2021-09-02 Split array architecture for analog neural memory in a deep learning artificial neural network

Publications (1)

Publication Number Publication Date
CN117178324A true CN117178324A (zh) 2023-12-05

Family

ID=88941752

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180097186.5A Pending CN117178324A (zh) 2021-05-18 2021-09-02 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构

Country Status (1)

Country Link
CN (1) CN117178324A (zh)

Similar Documents

Publication Publication Date Title
JP2024116189A (ja) 人工ニューラルネットワーク内の差分セル対にシナプシス重みを記憶するアナログニューラルメモリアレイ
JP7523674B2 (ja) アナログニューラルメモリにおける書き込みと検証との同時動作
CN115668378B (zh) 用于深度学习人工神经网络中的模拟神经存储器的字线和控制栅极线串联解码器
CN117178323A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
CN115516565A (zh) 人工神经网络中的具有源极线拉低机构的模拟神经存储器阵列
CN117178324A (zh) 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构
US11989440B2 (en) Hybrid memory system configurable to store neural memory weight data in analog form or digital form
CN118613807A (zh) 包括模拟阵列和数字阵列的人工神经网络
US20230229903A1 (en) Split array architecture for analog neural memory in a deep learning artificial neural network
CN117751406A (zh) 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统
US20220374696A1 (en) Split array architecture for analog neural memory in a deep learning artificial neural network
US20230244903A1 (en) Artificial neural network comprising an analog array and a digital array
US20230048411A1 (en) Input circuitry for analog neural memory in a deep learning artificial neural network
CN118742906A (zh) 包括用于i-v斜率配置的参考阵列的人工神经网络
CN117716427A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输入电路
KR20230150848A (ko) 딥 러닝 인공 신경망에서의 아날로그 뉴럴 메모리를 위한 분할 배열 아키텍처
KR20240124982A (ko) 아날로그 어레이 및 디지털 어레이를 포함하는 인공 신경망
KR20240141782A (ko) 아날로그 입력을 활용한 벡터와 행렬 간 승산 어레이
CN117813653A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
WO2024196388A1 (en) Split array architecture for analog neural memory in a deep learning artificial neural network
KR20240148895A (ko) 아날로그 출력을 활용한 벡터와 행렬 간 승산 어레이
WO2024162978A1 (en) Multiplexors for neural network array
KR20240133999A (ko) 3차원 집적 회로를 포함하는 인공 신경망
TW202433468A (zh) 神經網路陣列的多工器
CN118043889A (zh) 要施加到神经网络中的一个或多个存储器单元的偏置电压的确定

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination