CN117716427A - 用于深度学习人工神经网络中的模拟神经存储器的输入电路 - Google Patents

用于深度学习人工神经网络中的模拟神经存储器的输入电路 Download PDF

Info

Publication number
CN117716427A
CN117716427A CN202180100960.3A CN202180100960A CN117716427A CN 117716427 A CN117716427 A CN 117716427A CN 202180100960 A CN202180100960 A CN 202180100960A CN 117716427 A CN117716427 A CN 117716427A
Authority
CN
China
Prior art keywords
digital
input
current
row
input block
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
CN202180100960.3A
Other languages
English (en)
Inventor
H·V·特兰
K·恩古耶
T·乌
H·帕姆
S·洪
S·特林
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/520,396 external-priority patent/US20230048411A1/en
Application filed by Silicon Storage Technology Inc filed Critical Silicon Storage Technology Inc
Publication of CN117716427A publication Critical patent/CN117716427A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Non-Volatile Memory (AREA)

Abstract

本发明公开了用于深度学习人工神经网络中的模拟神经存储器的输入电路的多个实施方案。

Description

用于深度学习人工神经网络中的模拟神经存储器的输入电路
优先权声明
本申请要求于2021年8月2日提交的标题为″Input Circuitry for AnalogNeural Memory in a Deep Learning Artificial Neural Network″的美国临时专利申请63/228,570号和于2021年11月5日提交的标题为″Input Circuitry for Analog NeuralMemory in a Deep Learning Artificial Neural Network″的美国专利申请17/520,396号的优先权。
技术领域
本发明公开了用于深度学习人工神经网络中的模拟神经存储器的输入电路的多个实施方案。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连″神经元″层。
图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分别是存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的电流到电压对数转换器:
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阵列的存储器单元可用于神经网络的每个层或多个层的所有区域或其组合(亚阈值、线性或饱和区域)。
美国专利10,748,630号中描述了图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的操作
WL WL-未选 BL BL-未选 SL SL-未选
读取 1V-3.5V -0.5V/0V 0.6V-2V(Ineuron) 0.6V-2V/0V 0V 0V
擦除 约5V-13V 0V 0V 0V 0V 0V
编程 1V-2V -0.5V/0V 0.1uA-3uA Vinh约2.5V 4V-10V 0V-1V/FLT
图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上生成。
图26示出神经元VMM阵列2600,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、......、INPUTn分别在竖直控制栅线CG0、......、CGN上被接收,并且输出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上生成。
图29示出神经元VMM阵列2900,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0、......、OUTPUTN分别在竖直源极线SL0、......、SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线。
图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单元为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,每个sigmoid函数设备将0与1之间的数字应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元1900还包括用于将双曲线正切函数应用于输入矢量的tanh设备1903,用于将两个矢量相相乘的多个乘法器设备1904、1905和1906,用于将两个矢量相相加的加法设备1907,以及用于从1中减去输入以生成输出的互补设备1908。
图20示出GRU单元2000,该GRU单元为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作为两个单元的平均值。
图31示出VMM系统3100。在一些实施方案中,存储在VMM阵列中的权重W被存储为差分对W+(正权重)和W-(负权重),其中W=(W+)-(W-)。在VMM系统3100中,位线的一半被指定为W+线,即连接到将存储正权重W+的存储器单元的位线,并且位线的另一半被指定为W-线,即连接到实现负权重W-的存储器单元的位线。W-线以交替方式散布在W+线之间。减法操作由求和电路(诸如求和电路3101和3102)执行,该求和电路从W+线和W-线接收电流。W+线的输出和W-的输出组合在一起,以对于所有(W+、W-)线对的每个(W+、W-)单元对有效地给出W=W+-W-。虽然上文已关于以交替方式散布于W+线之间的W-线进行描述,但在其它实施方案中,W+线和W-线可任意位于阵列中的任何地方。
图32示出另一实施方案。在VMM系统3210中,在第一阵列3211中实现正权重W+,并且在第二阵列3212中实现负权重W-,第二阵列3212与第一阵列分开,并且所得权重通过求和电路3213适当地组合在一起。
图33示出了VMM系统3300,存储在VMM中的权重W被存储为差分对W+(正权重)和W-(负权重),其中W=(W+)-(W-)。VMM系统3300包括阵列3301和阵列3302。阵列3301和阵列3302中的每个阵列中的位线的一半被指定为W+线,即连接到将存储正权重W+的存储器单元的位线,并且阵列3301和阵列3302中的每个阵列中的位线的另一半被指定为W-线,即连接到实现负权重W-的存储器单元的位线。W-线以交替方式散布在W+线之间。减法操作由求和电路(诸如求和电路3303、3304、3305和3306)执行,该求和电路从W+线和W-线接收电流。来自每个阵列3301、3302的W+线的输出和W-的输出分别组合在一起,以对于所有(W+、W-)线对的每个(W+、W-)单元对有效地给出W=W+-W-。另外,来自每个阵列3301和3302的W值可以通过求和电路3307和3308进一步组合,使得每个W值是来自阵列3301的W值减去来自阵列3302的W值的结果,这意味着来自求和电路3307和3308的最终结果是两个差值中的一个差值。
要擦除和编程在模拟神经存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅应当保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
类似地,读取操作应当能够准确地辨别N个不同的电平。
在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示出矢量-矩阵乘法系统的另一实施方案。
图26示出矢量-矩阵乘法系统的另一实施方案。
图27示出矢量-矩阵乘法系统的另一实施方案。
图28示出矢量-矩阵乘法系统的另一实施方案。
图29示出矢量-矩阵乘法系统的另一实施方案。
图30示出矢量-矩阵乘法系统的另一实施方案。
图31示出矢量-矩阵乘法系统的另一实施方案。
图32示出矢量-矩阵乘法系统的另一实施方案。
图33示出矢量-矩阵乘法系统的另一实施方案。
图34示出矢量-矩阵乘法系统的另一实施方案。
图35A和图35B示出输入块的实施方案。
图36示出输入块的另一实施方案。
图37A和图37B示出具有局部行采样保持动作的采样全局行DAC的波形3700。
图38示出采样保持缓冲器。
图39示出采样保持缓冲器。
图40A和图40B示出输入块。
图41A和图41B示出输入块。
图42示出可调节2D温度计代码数模转换器。
图43示出参考子电路。
图44示出可配置的SAR(逐次逼近寄存器)模数转换器。
图45示出电压到电流转换器。
图46示出对数电流到电压转换器。
图47示出对数电流到电压转换器。
图48示出对数电流到电压转换器。
具体实施方式
本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。
VMM系统综述
图34示出了VMM系统3400的框图。VMM系统3400包括VMM阵列3401、行解码器3402、高电压解码器3403、列解码器3404、位线驱动器3405、输入电路3406、输出电路3407、控制逻辑部件3408和偏压发生器3409。VMM系统3400进一步包括高电压生成块3410,该高电压生成块包括电荷泵3411、电荷泵调节器3412和高电压模拟精密电平发生器3413。VMM系统3400进一步包括(编程/擦除,或权重调谐)算法控制器3414、模拟电路3415、控制引擎3416(其可以包括诸如算术函数、激活函数、嵌入式微控制器逻辑等特殊函数,而没有限制)以及测试控制逻辑部件3417。下文所述的系统和方法能够在VMM系统3400中实现。
输入电路3406可以包括电路,诸如DAC(数模转换器)、DPC(数字到脉冲转换器、数字到时间调制脉冲转换器)、AAC(模拟到模拟转换器,诸如电流到电压转换器、对数转换器)、PAC(脉冲到模拟电平转换器)或任何其他类型的转换器。输入电路3406能够实现归一化、线性或非线性缩放函数或算术函数。输入电路3406能够实现对输入水平的温度补偿函数。输入电路3406能够实现激活函数,诸如ReLU或sigmoid。输出电路3407能够包括电路,诸如ADC(模数转换器,用于将神经元模拟输出转换成数字位)、AAC(模拟到模拟转换器,诸如电流到电压转换器,对数转换器)、APC(模拟到脉冲转换器,模拟到时间调制脉冲转换器)或任何其他类型的转换器。输出电路3407可实现激活函数,诸如,整流线性激活函数(ReLU)或sigmoid。输出电路3407能够在神经元输出上实现统计归一化、正则化、缩放/增益函数、统计舍入或算术函数(例如,加法、减法、除法、乘法、移位、对数)。输出电路3407能够在神经元输出或阵列输出(诸如位线输出)上实现温度补偿函数,以便保持阵列的功率消耗大致恒定,或诸如通过使IV斜率保持大致相同来提高阵列(神经元)输出的精度。
图35A示出了用于向VMM阵列3506提供输入的输入块3500。输入块3500包括全局数模转换器(DAC)3501;行寄存器3502-0至3502-n,每一者对应于阵列中编号为0到n的行中的一者;数字比较器块3503-0至3503-n;行采样保持缓冲器3504-0至3504-n,每一者对应于编号为0到n的行中的一者;和输出信号3505-0至3505-n,每一者对应于编号为0到n的行中的一者,并且分别表示为CGIN0、CGIN1、......、CGINn-1和CGINn。信号GDACsup为由全局DAC3501提供的全局DAC信号。信号CGIN0-n联接到阵列3506的行输入。
数字比较器块3503将存储在相关行寄存器3502中的值与CLKCOUNTx进行比较,这是在间隔期间对时钟信号进行计数的结果;如果其匹配,则启用对应行S/H 3504以将来自全局DAC 3501的值采样到相应行S/H缓冲器中。该技术将被称为全局行DAC采样。VMM阵列3506中的每一行具有对应的行寄存器3502、数字比较器块3503和行S/H 3504。
在操作期间,行寄存器3502-0至3502-n加载有用于该特定行的数字输入位DINx(其中x是位的数目,诸如8位或16位)并且接收时钟信号CLK。CLK信号用于将数据从DINx加载到行寄存器3502-x中。全局数模转换器3501由所有行共享,并且以时分复用的方式对存储在特定行寄存器3502中的数字位DINx执行数模转换。由数字比较器块3503中的每一者将特定行的数字输入位与CLKCOUNTx(其是数字计数值)进行比较来完成转换。当全局DAC3501的数字计数值与相应行寄存器3502的内容匹配时,用于该行的对应行采样保持缓冲器3503对来自全局数模转换器3501的模拟输出进行采样并保持该值,该值然后作为用于该特定行的输出信号3505施加。输出信号3504可在该特定行中的编程操作期间以上文关于其他图所述的方式施加到例如控制栅线或字线。
在另一个实施方案中,通过对行采样保持缓冲器进行时分复用,可在多个行之间共享行采样保持缓冲器3504。
图35B示出了用于向VMM阵列3556提供输入的输入块3550。输入块3550包括全局数模转换器(DAC)3551;行寄存器3552-0至3552-n,每一者对应于阵列中编号为0到n的行中的相应一者;数字多路复用器(mux)块3553-0至3553-n,每一者对应于编号为0到n的行中的相应一者;行采样保持(S/H)缓冲器3553-0至3553-n,每一者对应于编号为0到n的行中的相应一者;和输出信号3554-0至3554-n,其分别表示为CGIN0、CGIN1、......、CGINn-1和CGINn,每一者对应于编号为0到n的行中的相应一者。数字多路复用器块3553用于将行寄存器3552的数据多路复用输出到总线GDAC_DINx,该数据作为输入施加到全局DAC 3551。对应的行S/H缓冲器将来自全局DAC的值采样到局部S/H中。每一行具有其自己的行寄存器3552、S/H缓冲器3553m和输出信号3554。
在操作期间,行寄存器3552-0至3552-n加载有用于该特定行的数字输入位DINx(其中x是位的数目,诸如8位或16位)并且接收时钟信号CLK。CLK信号用于将数据从DINx加载到行寄存器3552-x中。全局数模转换器3551由所有行共享,并且以时分复用的方式对存储在特定行寄存器3552中的数字位DINx执行数模转换。通过将行寄存器的数据多路复用到全局DAC 3551的数据输入(总线GDAC_DINx)中来完成该转换。将行寄存器数据多路复用到数据输入总线GDAC_DINx中由每一行的信号EN-x 3557-x来启用。对应的行采样保持缓冲器3554对来自全局数模转换器3551的模拟输出进行采样并保持该值,该值然后作为该特定行的输出信号3555来施加。输出信号3555可在该特定行中的编程操作期间以上文关于其他图所述的方式施加到例如控制栅线或字线。在另一个实施方案中,通过对行采样保持缓冲器进行时分复用,可在多个行之间共享行采样保持缓冲器35554。
图36示出了用于向VMM阵列3606提供输入的输入块3600。输入块3600类似于输入块3500,但也提供行解码器功能以选择一个或多个行以进行操作。输入块3600包括全局数模转换器和行解码器3601;行寄存器3602-0至3602-n,每一者对应于VMM阵列中编号为0到n的行中的相应一者;数字比较器块3603至3603-n,每一者对应于VMM阵列中编号为0到n的行中的相应一者;行采样保持缓冲器3604-0至3604-n;和输出信号3605-0至3605-n,其分别表示为CGIN0、CGIN1、......、CGINn-1和CGINn,每一者对应于编号为0到n的行中的相应一者。数字比较器块3603将存储在相应行寄存器3602中的值与CLKCOUNTx(其为计数值)进行比较。当全局DAC 3501的数字计数值与相应行寄存器3602的内容匹配时,相应行S/H缓冲器3604将来自全局DAC 3601的值采样到相应S/H缓冲器3604中。每一行具有其自己的行寄存器3602、数字比较器块3603和行S/H缓冲器3604。
在操作期间,行寄存器3602-0至3602-n加载有用于该关联行的数字输入位DINx(其中x是位的数目,诸如8位或16位)并且接收时钟信号CLK。CLK信号用于将数据从DINx加载到行寄存器3602-x中。全局数模转换器3601(其由多个全局数模转换器组成,诸如3601-0和3601-1)由所有行共享。在一个实施方案中,全局DAC 3601-0对偶数行操作,并且全局DAC和行解码器3601-1对奇数行操作。全局数模转换器3601通过行数据输入总线GDAC DINx接收行地址并选择对应的行。然后,它对存储在相关行寄存器3602中的数字位DINx执行数模转换(通过GDAC_DINx总线)。用于该行的对应行采样保持缓冲器3604对来自全局数模转换器3601的模拟输出进行采样并保持该值,该值然后作为用于该特定行的输出信号3605来施加。输出信号3605可在该特定一行或多行中的编程操作期间以上文关于其他图所述的方式施加到例如控制栅线或字线。
图37A示出了波形3700,其示出了由图35A中的行采样保持缓冲器3504、图35B中的行采样保持缓冲器3554或图36中的行采样保持缓冲器3604进行的示例性采样保持动作的示例性线性电压电平。这适用于在线性区域中操作的存储器单元。信号GDACsup 3701是来自全局线性DAC(诸如来自图35A中的电路块3501、图35B中的电路块3551、图36中的电路块3601x)的供应电压。其示出了线性步骤以说明这是线性DAC。
图37B示出了波形3720,其示出了由图35A中的行采样保持缓冲器3504、图35B中的行采样保持缓冲器3554或图36中的行采样保持缓冲器3604进行的示例性采样保持动作的示例性对数电压电平。这适用于在亚阈值区中操作的存储器单元。另选地,可针对在饱和区中操作的存储器单元来完成全局DAC电压波形。信号GDACsup 3721是来自全局(亚阈值、线性、饱和)DAC(诸如来自图35A中的电路块3501、图35B中的电路块3551、图36中的电路块3601x)的供应电压。其示出了对数步骤以说明这是对数DAC。
图38示出了采样保持缓冲器3800,其可用于图35A中的行采样保持缓冲器3504、图35B中的行采样保持缓冲器3554或图36中的行采样保持缓冲器3604。采样保持缓冲器3800包括开关3801、电容器3802和缓冲器3803,该缓冲器3803可作为使用运算放大器的单位缓冲器来实现。在操作期间,开关3801闭合(诸如通过数字比较器与数字计数值的比较的真实结果而启用),这允许模拟值(全局DAC值)存储(保持)在电容器3802中。然后,可从驱动阵列的相应行输入的缓冲器3803输出反映该存储值的值。例如,电容器3802可以是实际电容器,或者其可以是在导线中存在于的固有电容。
图39示出了采样保持缓冲器3900,其可用于图35A中的行采样保持缓冲器3504、图35B中的行采样保持缓冲器3554或图36中的行采样保持缓冲器3604。采样保持缓冲器3900包括开关3901和电容器3902。在操作期间,开关3901闭合(诸如通过数字比较器与数字计数值的比较的真实结果而启用),这允许模拟值存储(保持)在电容器3902中。然后可从电容器3902输出反映该值的值。例如,电容器3902可以是实际电容器,或者其可以是在导线中存在的固有电容。
图40A示出了输入块4000。输入块4000包括数模转换器4001、电压到电流转换器4002和电流到电压对数转换器4003。当期望具有根据对数函数变化的输入电压时,可将输入块4000添加到前述输入块中的任一者,这例如当VMM阵列中的存储器单元在亚阈值范围中操作时是有用的。数模转换器接收数字输入DINx,并生成模拟电压Vout。电压到电流转换器4002将模拟电压Vout线性地转换成电流Iout。电流到电压对数转换器4003根据对数函数将电流Iout转换为电压Vlog:例如,Vlog=A*log(Iout),其中A是常数。输入块4000可用作如图35A、图35B和图36中的全局DAC。其可产生图37B中所示的波形3720。对于图35A中的全局DAC而言,CLK用于以步进方式产生DAC输出电压,例如对于8位DAC而言从0到256步。对于图35B和图36中的全局DAC而言,使用DINx来产生DAC输出电压。
图40B示出输入块4020。输入块4020包括数模转换器,该数模转换器可用作全局DAC。这可用于例如在线性区域中操作的存储器单元。输入块4020可用作如图35和图36中的全局DAC。其可产生图37A中所示的波形3700。
图41A示出了输入块4100。输入块4100包括电流数模转换器4101和电流到电压对数转换器4102。当期望具有根据对数函数变化的输入电压时,可将输入块4100添加到前述输入块中的任一者,这例如当VMM阵列中的存储器单元在亚阈值范围中操作时是有用的。电流数模转换器4101接收如先前示例中的数字输入DINx并产生模拟电流Iout。电流到电压对数转换器4102例如使用存储器单元或MOS晶体管根据对数函数将电流Iout转换成电压Vlog:例如,Vlog=A*log(Iout)+Vlogoffset,其中A为常数并且Vlogoffset为另一常数,例如以考虑存储器单元的接通或断开电压或来自阵列或解码电路或输入/输出电路自身的一些其他偏移电压。
图41B示出输入块4120。输入块4120包括电流数模转换器4121和电流到电压线性转换器4122。当期望具有根据线性函数变化的输入电压时,可将输入块4120添加到前述输入块中的任一者,这例如当VMM阵列中的存储器单元在线性范围中操作时是有用的。电流数模转换器4121接收如先前示例中的数字输入DINx并产生模拟电流Iout。电流到电压线性转换器4122例如使用存储器单元或MOS晶体管根据线性函数将电流Iout转换成电压Vlin:例如,Vlin=A*Iout+Vlinoffet,其中A为常数并且Vlogoffset为另一常数,例如以考虑存储器单元的接通或断开电压或来自阵列或解码电路或输入/输出电路自身的一些其他偏移电压。
图42示出可调节2D温度计代码电流数模转换器4200。可调节2D温度计代码电流数模转换器4200包括控制逻辑部件4202和2D阵列4205,该2D阵列包括设备4206的i行和j列的阵列,其中特定设备4206由标签4206-(行)(列)标注。特定设备4206可以是电流镜。如图所示,2D阵列4205中存在16个电流镜(设备4206)。可调节2D温度计代码电流数模转换器4200将4个数字输入代码转换成输出电流4201,Iout,该输出电流的值为从偏压源4204提供的Ibiasunit的1至16倍。
例如,偏压源4204可提供1nA的电流Ibiasunit,该电流被镜像到设备4206中。此处,第一行由设备4206-11至4206-1j组成,并且从左到右顺序地启用,一次启用一个设备4206。然后从左到右以顺序方式启用下一行以添加到第一行,这意味着启用5个,然后6个,然后7个,然后8个设备4206。因此,通过顺序地启用设备4206,可减少与常规二进制解码相关联的任何晶体管失配。然后将经启用的设备4206的总和作为输出电流4201输出。所示的4x4 2D温度计代码电流数模转换器4200可以是任何其他尺寸,诸如32x32或8x32。
图43示出参考子电路4300,该参考子电路可用于图42中的设备4206。参考子电路4300包括如图所示配置的NMOS晶体管4301和4302。晶体管4302为电流镜偏压晶体管,并且晶体管4301为启用晶体管(以使偏压晶体管4302能够连接到输出节点OUTPUT),用于镜像到晶体管4302的主偏压电流未示出。
图44示出SAR(逐次逼近寄存器)数模转换器4400。该电路是依靠使用二进制电容器进行电荷再分配的数模转换器。该电路包括二进制CDAC(基于电容器的DAC)4401、运算放大器/比较器4402、和SAR逻辑部件4403。GndV是低电压参考电平,例如接地电平。这例如在图40A和图40B中使用。
图45示出了电压到电流转换器4500,其包括如图所示配置的运算放大器4501、NMOS晶体管4501和电阻器4503。电压到电流转换器4500接收输入电压VIN并产生输出电流IOUT。例如,这可与DAC电路4400组合使用以将电压转换为电流。该电流可用于使用诸如图46/图47/图48中的对数电流到电压转换器来转换为电压。
图46示出对数电流到电压转换器4600。对数电流到电压转换器4600包括如图所示配置的开关4601和NMOS晶体管4602。NMOS 4602在亚阈值区中操作。对数电流到电压转换器4600接收输入I-in并产生输出Vlog。
图47示出对数电流到电压转换器4700。对数电流到电压转换器4700包括如图所示配置的开关4701和4702以及存储器单元4703。存储器单元4703在亚阈值区中操作。对数电流到电压转换器4600接收输入I-in并产生输出Vlog。
图48示出对数电流到电压转换器4800。对数电流到电压转换器4800包括如图所示配置的开关4801和4802、NMOS晶体管4803和存储器单元4804。存储器单元4804在亚阈值区中操作。晶体管4803在存储器单元4804的漏极上施加恒定偏压。对数电流到电压转换器4600接收输入I-in并产生输出Vlog。在图47和图48中,进行对数电流到电压的转换以复制存储器单元电流的对数电流到电压斜率。单元输出电流则=K*I-in,输入电流来自对数DAC的输出,其基本上表示输入激活的值(行值)。K由存储器单元中的浮动电荷确定,其基本上表示神经网络中的权重。
应当指出,如本文所用,术语″在...上方″和″在...上″两者包容地包括″直接在...上″(之间未设置中间材料、元件或空间)和″间接在...上″(之间设置有中间材料、元件或空间)。类似地,术语″相邻″包括″直接相邻″(之间没有设置中间材料、元件或空间)和″间接相邻″(之间设置有中间材料、元件或空间),″安装到″包括″直接安装到″(之间没有设置中间材料、元件或空间)和″间接安装到″(之间设置有中间材料、元件或空间),并且″电耦接至″包括″直接电耦接至″(之间没有将元件电连接在一起的中间材料或元件)和″间接电耦接至″(之间有将元件电连接在一起的中间材料或元件)。例如,″在衬底上方″形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。

Claims (20)

1.一种输入块,所述输入块用于向神经存储器系统中的矢量-矩阵乘法阵列提供输入,所述矢量-矩阵乘法阵列包括以行和列布置的非易失性存储器单元,所述输入块包括:
全局数模转换器;
多个行寄存器,每个行寄存器对应于所述阵列中的行;和
多个行采样保持缓冲器,每个行采样保持缓冲器对应于所述阵列中的行;
其中当选择一行时,所述全局数模转换器将存储在与所选行相对应的行寄存器中的数字值转换为模拟值,所述模拟值由与所选行对应的所述行采样保持缓冲器采样并保持,并且被施加到与所选行联接的线。
2.根据权利要求1所述的输入块,其中所述全局数模转换器包括线性数模转换器。
3.根据权利要求1所述的输入块,其中所述全局数模转换器包括对数数模转换器。
4.根据权利要求1所述的输入块,其中所述全局数模转换器包括用于奇数行的数模转换器和用于偶数行的另一数模转换器。
5.根据权利要求1所述的输入块,其中所述全局数模转换器包括响应于行地址来选择所选行的行解码器。
6.根据权利要求1所述的输入块,其中每个行采样保持缓冲器包括开关和电容器,其中当所述开关闭合时,其将模拟输入施加到所述电容器。
7.根据权利要求6所述的输入块,其中每个行采样保持缓冲器还包括用于输出值的缓冲器,所述值反映了存储在所述电容器中的值。
8.一种输入块,所述输入块用于向神经存储器系统中的矢量-矩阵乘法阵列提供输入,所述矢量-矩阵乘法阵列包括以行和列布置的非易失性存储器单元,所述输入块包括:
数模转换器;
电压到电流转换器,所述电压到电流转换器响应于所述数模转换器的输出而产生电流;和
电流到电压对数转换器,所述电流到电压对数转换器用于产生电压,所述电压作为所述电流的对数的函数。
9.根据权利要求8所述的输入块,其中所述数模转换器包括2D温度计代码电流数模转换器。
10.根据权利要求8所述的输入块,其中所述数模转换器包括可配置的逐次逼近寄存器。
11.根据权利要求8所述的输入块,其中所述电压到电流转换器包括运算放大器、NMOS晶体管和电阻器。
12.根据权利要求8所述的输入块,其中所述电流到电压对数转换器包括开关和NMOS晶体管。
13.根据权利要求8所述的输入块,其中所述电流到电压对数转换器包括存储器单元和多个开关。
14.根据权利要求13所述的输入块,其中所述电流到电压对数转换器包括NMOS晶体管。
15.一种输入块,所述输入块用于产生到神经网络存储器系统中的矢量-矩阵乘法阵列的输入,所述矢量-矩阵乘法阵列包括以行和列布置的非易失性存储器单元,所述输入块包括:
电流数模转换器,所述电流数模转换器用于产生电流;和
电流到电压对数转换器,所述电流到电压对数转换器用于产生电压,所述电压作为所产生的电流的对数的函数。
16.根据权利要求15所述的输入块,其中所述数模转换器包括2D温度计代码电流数模转换器。
17.根据权利要求15所述的输入块,其中所述数模转换器包括逐次逼近寄存器。
18.根据权利要求15所述的输入块,其中所述电流到电压对数转换器包括开关和NMOS晶体管。
19.根据权利要求15所述的输入块,其中所述电流到电压对数转换器包括存储器单元和多个开关。
20.根据权利要求19所述的输入块,其中所述电流到电压对数转换器包括NMOS晶体管。
CN202180100960.3A 2021-08-02 2021-11-13 用于深度学习人工神经网络中的模拟神经存储器的输入电路 Pending CN117716427A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US63/228,570 2021-08-02
US17/520,396 US20230048411A1 (en) 2021-08-02 2021-11-05 Input circuitry for analog neural memory in a deep learning artificial neural network
US17/520,396 2021-11-05
PCT/US2021/059285 WO2023014387A1 (en) 2021-08-02 2021-11-13 Input circuitry for analog neural memory in a deep learning artificial neural network

Publications (1)

Publication Number Publication Date
CN117716427A true CN117716427A (zh) 2024-03-15

Family

ID=90146583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180100960.3A Pending CN117716427A (zh) 2021-08-02 2021-11-13 用于深度学习人工神经网络中的模拟神经存储器的输入电路

Country Status (1)

Country Link
CN (1) CN117716427A (zh)

Similar Documents

Publication Publication Date Title
CN114580616A (zh) 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐
TWI814383B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
CN116635869A (zh) 深度学习人工神经网络中模拟神经存储器的数字输出机制
WO2022245384A1 (en) Output circuit for analog neural memory in a deep learning artificial neural network
CN117716427A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输入电路
TWI842636B (zh) 深度學習人工神經網路中類比神經記憶體的輸出電路
TWI846378B (zh) 利用類比輸入的向量矩陣乘法陣列
US20230048411A1 (en) Input circuitry for analog neural memory in a deep learning artificial neural network
TWI843232B (zh) 決定施加至神經網路中的一或多個記憶體胞元的偏壓
TWI853488B (zh) 包含三維積體電路的人工神經網路、其操作方法以及包含三維積體電路的裝置
US20230154528A1 (en) Determination of a bias voltage to apply to one or more memory cells in a neural network
US20230325645A1 (en) Artificial neural network comprising a three-dimensional integrated circuit
CN117751406A (zh) 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统
KR20240148895A (ko) 아날로그 출력을 활용한 벡터와 행렬 간 승산 어레이
CN117178324A (zh) 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构
CN118613807A (zh) 包括模拟阵列和数字阵列的人工神经网络
CN118742906A (zh) 包括用于i-v斜率配置的参考阵列的人工神经网络
CN118043889A (zh) 要施加到神经网络中的一个或多个存储器单元的偏置电压的确定
KR20240026489A (ko) 신경 메모리 가중치 데이터를 아날로그 형태 또는 디지털 형태로 저장하도록 구성 가능한 하이브리드 메모리 시스템
CN117813653A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
KR20240124982A (ko) 아날로그 어레이 및 디지털 어레이를 포함하는 인공 신경망
TW202343311A (zh) 利用類比輸出的向量矩陣乘法陣列
KR20240133999A (ko) 3차원 집적 회로를 포함하는 인공 신경망
CN118633126A (zh) 深度学习人工神经网络中的电参数的校准
KR20230150848A (ko) 딥 러닝 인공 신경망에서의 아날로그 뉴럴 메모리를 위한 분할 배열 아키텍처

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