深度学习人工神经网络中模拟神经存储器的数字输出机制的制作方法

未命名 08-26 阅读:124 评论:0

深度学习人工神经网络中模拟神经存储器的数字输出机制
1.优先权声明
2.本技术要求于2021年1月1日提交的标题为“input and digital output mechanisms for analog neural memory in a deep learning artificial neural network”的美国临时专利申请63/133,270号和于2021年3月31日提交的标题为“digital output mechanisms for analog neural memory in a deep learning artificial neural network”的美国专利申请17/219,352号的优先权。
技术领域
3.公开了用于读取或验证人工神经网络中的矢量-矩阵乘法(vmm)阵列内的非易失性存储器单元的输出机制的多个实施方案。


背景技术:

4.人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
5.图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
6.在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。cmos模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数cmos实现的突触都过于庞大。
7.申请人先前在美国专利申请第15/594,439号中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。
8.必须擦除和编程在模拟神经形态存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持n个不同值中的一个,其中n是可由每个单元指示的不同权重的数量。n的示例包括16、32、64、128和256。
9.因为一个vmm的输出经常需要应用于另一个vmm,所以在vmm系统中希望能够将vmm的输出转换为位并且将输入位应用于另一个vmm。然后出现关于如何为vmm系统最好地实现位编码机制的挑战。
10.所需要的是用于执行编程、验证和读取的vmm的改善的输入和输出块。


技术实现要素:

11.公开了用于读取或验证人工神经网络中的矢量-矩阵乘法(vmm)阵列中的所选存储器单元中所存储的值的多个实施方案。实施方案包括与vmm阵列一起使用的输入块和输出块的各种设计。
12.在一个实施方案中,用于从非易失性存储器单元阵列生成输出的输出块包括电流-电压转换器,该电流-电压转换器用于从阵列中的一个或多个所选非易失性存储器单元接收响应于到阵列的输入序列而生成的电流序列,并且用于响应于电流序列而生成的电压或电压序列;以及模数转换器,该模数转换器用于将电压或电压序列转换成多个输出位,其中多个输出位反映对电流序列或者电压或电压序列中的一者或多者执行的加权函数。
13.在另一个实施方案中,一种用于从非易失性存储器单元阵列生成输出的输出块包括电流-电压转换器,该电流-电压转换器用于响应于施加到阵列的输入而从阵列中的一个或多个所选非易失性存储器单元接收电流并且将电流转换成电压,该电流-电压转换器包括用以保持电压的样本与保持电路。
14.在另一个实施方案中,用于响应于由非易失性存储器单元阵列接收的输入序列而从阵列接收到的电流序列生成输出的输出块包括模数转换器,该模数转换器用于接收电流序列并且将电流序列转换成包括多个输出位的输出。
附图说明
15.图1为示出人工神经网络的示意图。
16.图2示出现有技术的分裂栅闪存存储器单元。
17.图3示出另一现有技术的分裂栅闪存存储器单元。
18.图4示出另一现有技术的分裂栅闪存存储器单元。
19.图5示出另一现有技术的分裂栅闪存存储器单元。
20.图6为示出利用一个或多个非易失性存储器阵列的示例性人工神经网络的不同水平的示意图。
21.图7为示出矢量-矩阵乘法系统的框图。
22.图8为示出利用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
23.图9示出矢量-矩阵乘法系统的另一实施方案。
24.图10示出矢量-矩阵乘法系统的另一实施方案。
25.图11示出矢量-矩阵乘法系统的另一实施方案。
26.图12示出矢量-矩阵乘法系统的另一实施方案。
27.图13示出矢量-矩阵乘法系统的另一实施方案。
28.图14示出现有技术的长短期存储器系统。
29.图15示出在长短期存储器系统中使用的示例性单元。
30.图16示出图15的示例性单元的一个实施方案。
31.图17示出图15的示例性单元的另一实施方案。
32.图18示出现有技术的栅控递归单元系统。
33.图19示出在栅控递归单元系统中使用的示例性单元。
34.图20示出图19的示例性单元的一个实施方案。
35.图21示出图19的示例性单元的另一实施方案。
36.图22a示出对非易失性存储器单元进行编程的方法的一个实施方案。
37.图22b示出对非易失性存储器单元进行编程的方法的另一实施方案。
38.图23示出粗略编程方法的一个实施方案。
39.图24示出在非易失性存储器单元的编程中使用的示例性脉冲。
40.图25示出在非易失性存储器单元的编程中使用的示例性脉冲。
41.图26a和图26b示出用于编程非易失性存储器单元的校准算法,该校准算法基于该单元的斜率特征来调整编程参数。
42.图27示出在图26的校准算法中使用的电路。
43.图28示出用于编程非易失性存储器单元的校准算法。
44.图29示出在图28的校准算法中使用的电路。
45.图30示出在编程操作期间施加到非易失性存储器单元的控制栅的电压的示例性累进。
46.图31示出在编程操作期间施加到非易失性存储器单元的控制栅的电压的示例性累进。
47.图32示出用于在矢量-乘法矩阵系统内的非易失性存储器单元的编程期间施加编程电压的系统。
48.图33示出电荷求和器电路。
49.图34示出电流求和器电路。
50.图35示出数字求和器电路。
51.图36a示出用于神经元输出的积分型模数转换器的一个实施方案。
52.图36b示出显示图36a的积分型模数转换器的电压输出随时间变化的曲线图。
53.图36c示出用于神经元输出的积分型模数转换器的另一实施方案。
54.图36d示出显示图36c的积分型模数转换器的电压输出随时间变化的曲线图。
55.图36e示出用于神经元输出的积分型模数转换器的另一实施方案。
56.图36f示出用于神经元输出的积分型模数转换器的另一实施方案。
57.图37a和图37b示出用于神经元输出的逐次逼近型模数转换器。
58.图38示出σ-δ型模数转换器的一个实施方案。
59.图39示出输出块。
60.图40示出矢量-矩阵乘法系统的另一实施方案。
61.图41示出矢量-矩阵乘法系统的另一实施方案。
62.图42示出矢量-矩阵乘法系统的另一实施方案。
63.图43示出矢量-矩阵乘法系统的框图
64.图44示出数字求和器。
65.图45示出输出块。
66.图46示出电流-电压转换器的一个实施方案。
67.图47示出电流-电压转换器的另一实施方案。
68.图48示出电流-电压转换器的另一实施方案。
69.图49a示出电流-电压转换器的另一实施方案。
70.图49b示出无损耗可变电阻器的一个实施方案。
71.图50示出电流-电压转换器的另一实施方案。
72.图51示出电流-电压转换器的另一实施方案。
73.图52a、图52b和图52c示出混合串行转换器的实施方案。
具体实施方式
74.本发明的人工神经网络利用cmos技术和非易失性存储器阵列的组合。
75.非易失性存储器单元
76.数字非易失性存储器是众所周知的。例如,美国专利5,029,130(“130专利”),其以引用方式并入本文,公开了分裂栅非易失性存储器单元的阵列,它是一种闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线24耦接到漏极区16。
77.通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由福勒-诺德海姆(fn)隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。
78.通过将正电压置于字线端子22上以及将正电压置于源极区14上来由带有热电子的源极侧注入(ssi)编程存储器单元210(其中电子被置于浮栅上)。电子流将从漏极区16流向源极区14。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。
79.通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或“1”状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或“0”状态。
80.表1示出可以施加到存储器单元110的端子用于执行读取操作、擦除操作和编程操
作的典型电压和电流范围:
81.表1:图3的闪存存储器单元210的操作
[0082] wlblsl读取2-3v0.6-2v0v擦除约11-13v0v0v编程1-2v10.5-3μa9-10v
[0083]
作为其他类型的闪存存储器单元的其他分裂栅存储器单元配置是已知的。例如,图3示出了四栅极存储器单元310,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常联接到字线wl)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
[0084]
表2示出可施加到存储器单元310的端子用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
[0085]
表2:图3的闪存存储器单元310的操作
[0086] wl/sgblcgegsl读取1.0-2v0.6-2v0-2.6v0-2.6v0v擦除-0.5v/0v0v0v/-8v8-12v0v编程1v0.1-1μa8-11v4.5-9v4.5-5v
[0087]
图4示出三栅存储器单元410,其为另一种类型的闪存存储器单元。存储器单元410与图3的存储器单元310相同,不同的是存储器单元410没有单独的控制栅。除了没有施加控制栅偏置,擦除操作(由此通过使用擦除栅进行擦除)和读取操作与图3的操作类似。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线上施加更高的电压,以补偿控制栅偏置的缺乏。
[0088]
表3示出可施加到存储器单元410的端子用于执行读取操作、擦除操作和编程操作的典型电压和电流范围:
[0089]
表3:图4的闪存存储器单元410的操作
[0090] wl/sgblegsl读取0.7-2.2v0.6-2v0-2.6v0v擦除-0.5v/0v0v11.5v0v编程1v0.2-3μa4.5v7-9v
[0091]
图5示出堆叠栅存储器单元510,其为另一种类型的闪存存储器单元。存储器单元510与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。通过电子从fg到衬底的fn隧穿来进行擦除,通过在沟道18与漏极区16之间的区域处的沟道热电子(che)注入、通过电子从源极区14朝向漏极区16流动以及类似于带有较高控制栅电压的存储器单元210的读取操作来进行编程。
[0092]
表4示出可以施加到存储器单元510和衬底12的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
[0093]
表4:图5的闪存存储器单元510的操作
[0094] cgblsl衬底读取2-5v0.6

2v0v0v擦除-8至-10v/0vfltflt8-10v/15-20v编程8-12v3-5v0v0v
[0095]
本文所述的方法和装置可以应用于其他非易失性存储器技术,诸如但不限于finfet分裂栅闪存或堆叠栅闪存存储器、nand闪存、sonos(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、monos(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、reram(电阻式ram)、pcm(相变存储器)、mram(磁性ram)、feram(铁电ram)、ct(电荷捕获)存储器、cn(碳管)存储器、otp(双电平或多电平一次可编程)和ceram(关联电子ram)等。
[0096]
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
[0097]
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行精细调谐是理想的。
[0098]
采用非易失性存储器单元阵列的神经网络
[0099]
图6概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
[0100]
对于该示例,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的所有特征映射。
[0101]
在层c1处,在本示例中,存在16个特征映射,每个特征映射具有30x30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层c1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层c1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。c1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
[0102]
在从层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个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
[0103]
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
[0104]
图7为可用于该目的的阵列的框图。矢量-矩阵乘法(vmm)阵列32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的cb1、cb2、cb3和cb4)。具体地,vmm阵列32包括非易失性存储器单元阵列33、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对vmm阵列32的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对非易失性存储器单元阵列33的输出进行解码。另选地,位线解码器36可以解码非易失性存储器单元阵列33的输出。
[0105]
非易失性存储器单元阵列33用于两个目的。首先,它存储将由vmm阵列32使用的权重。其次,非易失性存储器单元阵列33有效地将输入与存储在非易失性存储器单元阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,非易失性存储器单元阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算其也是高功效的。
[0106]
将非易失性存储器单元阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对非易失性存储器单元阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重和负权重的求和。
[0107]
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh或relu函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图6中的层c1)的特征映射的元素,然后被应用于下一个
突触以产生下一个特征映射层或最终层。因此,在该示例中,非易失性存储器单元阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和运算放大器38和激活函数电路39构成多个神经元。
[0108]
图7中对vmm阵列32的输入(wlx、egx、cgx以及任选的blx和slx)可为模拟电平、二进制电平或数字位(在这种情况下,提供dac以将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平或数字位(在这种情况下,提供输出adc以将输出模拟电平转换成数字位)。
[0109]
图8为示出多层vmm阵列32(此处标记为vmm阵列32a、32b、32c、32d和32e)的使用的框图。如图8所示,通过数模转换器31将输入(表示为inputx)从数字转换成模拟,并且将其提供至输入vmm阵列32a。转换的模拟输入可以是电压或电流。第一层的输入d/a转换可通过使用将输入inputx映射到输入vmm阵列32a的矩阵乘法器的适当模拟电平的函数或lut(查找表)来完成。输入转换也可以由模拟至模拟(a/a)转换器完成,以将外部模拟输入转换成到输入vmm阵列32a的映射模拟输入。
[0110]
由输入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)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
[0111]
矢量-矩阵乘法(vmm)阵列
[0112]
图9示出神经元vmm阵列900,该神经元vmm阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。vmm阵列900包括非易失性存储器单元的存储器阵列901和非易失性参考存储器单元的参考阵列902(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
[0113]
在vmm阵列900中,控制栅线(诸如控制栅线903)在竖直方向上延伸(因此参考阵列902在行方向上与控制栅线903正交),并且擦除栅线(诸如擦除栅线904)在水平方向上延伸。此处,vmm阵列900的输入设置在控制栅线(cg0,cg1,cg2,cg3)上,并且vmm阵列900的输出出现在源极线(sl0,sl1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为sl0、sl1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
[0114]
如本文针对神经网络所述,vmm阵列900的非易失性存储器单元(即vmm阵列900的存储器单元310)优选地被配置为在亚阈值区域中操作。
[0115]
在弱反转(亚阈值区)中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
[0116]
ids=io*e
(vg-vth)/nvt
=w*io*e
(vg)/nvt

[0117]
其中w=e
(-vth)/nvt
[0118]
其中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分别是存储器单元的宽度和长度。
[0119]
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的i到v对数转换器:
[0120]
vg=n*vt*log[ids/wp*io]
[0121]
其中,wp为参考存储器单元或外围存储器单元的w。
[0122]
对于用作带有电流输入的矢量矩阵乘法器vmm阵列的存储器阵列,输出电流为:
[0123]
iout=wa*io*e
(vg)/nvt
,即
[0124]
iout=(wa/wp)*iin=w*iin
[0125]
w=e
(vthp-vtha)/nvt
[0126]
此处,wa=存储器阵列中的每个存储器单元的w。
[0127]
vthp是外围存储器单元的有效阈值电压,并且vtha是主要(数据)存储器单元的有效阈值电压。注意,晶体管的阈值电压是衬底主体偏置电压的函数,并且可以对表示为vsb的衬底主体偏置电压进行调制以补偿在此类温度下的各种条件。阈值电压vth可以表示为:
[0128][0129]
其中vth0是带有零衬底偏置的阈值电压,是表面电位,并且γ是主体效应参数。
[0130]
字线或控制栅可用作输入电压的存储器单元的输入。
[0131]
另选地,本文所述的vmm阵列的闪存存储器单元可被配置成在线性区域中操作:
[0132]
ids=β*(vgs-vth)*vds;β=u*cox*wt/l
[0133]
w=α(vgs-vth)
[0134]
意指线性区域中的权重w与(vgs-vth)成比例
[0135]
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
[0136]
对于i-v线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管可以用来将输入/输出电流线性转换成输入/输出电压。
[0137]
另选地,本文所述的vmm阵列的存储器单元可被配置成在饱和区域中操作:
[0138]
ids=1/2*β*(vgs-vth)2;β=u*cox*wt/l
[0139]
wα(vgs-vth)2,意指权重w与(vgs-vth)2成比例
[0140]
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
[0141]
另选地,本文所述的vmm阵列的存储器单元可用于神经网络的每个层或多个层的所有区域或其组合(亚阈值、线性或饱和区域)。
[0142]
美国专利申请第15/826,345号描述了图7的vmm阵列32的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
[0143]
图10示出神经元vmm阵列1000,该神经元vmm阵列特别适用于图2所示的存储器单
元210,并且用作输入层与下一层之间的突触。vmm阵列1000包括非易失性存储器单元的存储器阵列1003、第一非易失性参考存储器单元的参考阵列1001和第二非易失性参考存储器单元的参考阵列1002。沿阵列的列方向布置的参考阵列1001和1002用于将流入端子blr0、blr1、blr2和blr3的电流输入转换为电压输入wl0、wl1、wl2和wl3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1014(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标基准电平由参考微阵列矩阵(未示出)提供。
[0144]
存储器阵列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中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
[0145]
表5示出用于vmm阵列1000的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0146]
表5:图10的vmm阵列1000的操作:
[0147] wlwl-未选blbl-未选slsl-未选读取1-3.5v-0.5v/0v0.6-2v(ineuron)0.6v-2v/0v0v0v擦除约5-13v0v0v0v0v0v编程1-2v-0.5v/0v0.1-3uavinh约2.5v4-10v0-1v/flt
[0148]
图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)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
[0149]
表6示出用于vmm阵列1100的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0150]
表6:图11的vmm阵列1100的操作
[0151][0152]
图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)上的电压恒定。将参考单元调谐至目标基准电平。
[0153]
存储器阵列1203用于两个目的。首先,它存储将由vmm阵列1200使用的权重。第二,存储器阵列1203有效地将输入(提供到端子blr0、blr1、blr2和blr3的电流输入,参考阵列1201和1202将这些电流输入转换成输入电压以提供给控制栅(cg0、cg1、cg2和cg3))乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在bl0-bln并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(cg0、cg1、cg2和cg3)上,输出在读取操作期间出现在位线(bl0

bln)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
[0154]
vmm阵列1200为存储器阵列1203中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则单元被擦除,并且部分编程操作的序列重新开始。如图所示,共享同一擦除栅(诸如eg0或eg1)的两行被一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
[0155]
表7示出用于vmm阵列1200的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0156]
表7:图12的vmm阵列1200的操作
[0157][0158]
图13示出神经元vmm阵列1300,其特别适用于图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中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
[0159]
表8示出用于vmm阵列1300的操作电压和电流。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
[0160]
表8:图13的vmm阵列1300的操作
[0161][0162]
带有基于页或字的调谐的改善的vmm系统
[0163]
图40示出vmm阵列4000。vmm阵列4000针对非易失性存储器单元的页实现单向或双向调谐。此处,示例性页4001包括两个字,每个字在不同行中。字包括多个(例如8-64个)存储器单元。特殊字能够仅包括一个单元或几个单元。相邻行的对共享源极线,诸如sl0或sl1。页4001中的所有单元共享共同的擦除栅线,该共同的擦除栅线由擦除栅启用晶体管4002控制,其控制向示例性页集4001中的所有单元的擦除栅端子egw提供电压。此处,能够同时擦除页4001中的所有单元。此后,可以通过编程(cellwise,意味着可以一次调谐字中的每个单元;wordwise,意味着可以同时调谐字中的所有单元)和擦除(wordwise,意味着可以同时调谐字中的所有单元)操作单向或双向调谐页4001中的单元,并且可以通过编程操作单向调谐页4001中的一些单元。编程操作能够包括下文相对于图24至图26的精确编程技
术。当在浮栅上放置过多电子电荷(这将使得不正确的电流值存储在单元中,即电流值低于预期的电流值),则必须擦除单元并且部分编程操作的序列必须重新开始。
[0164]
图41示出vmm阵列4100。vmm阵列4100针对非易失性存储器单元的字实现单向或双向调谐。此处,示例性字4101包括一行中的多个单元。字4101中的所有单元共享共同的擦除栅线,该共同的擦除栅线由擦除栅启用晶体管4102控制,其控制向字4101中的所有单元的擦除栅端子提供电压。此处,能够同时擦除字4101中的所有单元。此后,可以通过编程(cellwise,意味着可以一次调谐字中的每个单元;wordwise,意味着可以同时调谐字中的所有单元)和擦除(wordwise,意味着可以同时调谐字中的所有单元)操作单向或双向调谐字4101中的单元。编程操作能够包括下文所述的精确编程技术。当在浮栅上放置过多电子电荷(使得不正确的电流值存储在单元中,即电流值低于预期的电流值),则必须擦除单元,并且部分编程操作的序列必须重新开始。
[0165]
图42示出vmm阵列4200。vmm阵列4200针对非易失性存储器单元的字实现单向或双向调谐。此处,示例性字4201包括单元的两个半字。每个半字属于共享擦除栅的行。字4201中的所有单元共享共同的擦除栅线,该共同的擦除栅线连接至擦除栅端子egw。与vmm阵列1800和vmm阵列1700中不同,不存在擦除栅启用晶体管。此处,能够同时擦除字4201中的所有单元。此后,可以通过编程(cellwise,意味着可以一次调谐字中的每个单元;wordwise,意味着可以同时调谐字中的所有单元)和擦除(wordwise,意味着可以同时调谐字中的所有单元)操作单向或双向调谐字4201中的单元。编程操作能够包括下文所述的精确编程技术。当在浮栅上放置过多电子电荷(使得不正确的电流值存储在单元中,即电流值低于预期的电流值),则必须擦除单元,并且部分编程操作的序列必须重新开始。
[0166]
长短期存储器
[0167]
现有技术包括被称为长短期存储器(lstm)的概念。lstm单元通常用于神经网络中。lstm允许神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的lstm单元包括单元、输入栅、输出栅和忘记栅。三个栅调控进出单元的信息流以及信息在lstm中被记住的时间间隔。vmm尤其可用于lstm单元中。
[0168]
图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仅仅是示例。
[0169]
图15示出可用于图14中的单元1401、1402、1403和1404的lstm单元1500的示例性具体实施。lstm单元1500接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
[0170]
lstm单元1500包括sigmoid函数设备1501、1502和1503,每个sigmoid函数设备应用0至1之间的数字来控制允许输入矢量中的每个分量通过到输出矢量的数量。lstm单元1500还包括用于将双曲线正切函数应用于输入矢量的tanh设备1504和1505、用于将两个矢量相乘在一起的乘法器设备1506、1507和1508以及用于将两个矢量相加在一起的加法设备
1509。输出矢量h(t)可被提供给系统中的下一个lstm单元,或者其可被访问用于其他目的。
[0171]
图16示出lstm单元1600,其为lstm单元1500的具体实施的示例。为了方便读者,lstm单元1600中使用与lstm单元1500相同的编号。sigmoid函数设备1501、1502和1503以及tanh设备1504各自包括多个vmm阵列1601和激活电路块1602。因此,可以看出,vmm阵列在某些神经网络系统中使用的lstm单元中特别有用。
[0172]
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。
[0173]
lstm单元1600包含多组vmm阵列1601和相应的激活函数块1602,而lstm单元1700仅包含一组vmm阵列1701和激活函数块1702,它们用于表示lstm单元1700的实施方案中的多个层。lstm单元1700将需要的空间比lstm 1600更小,因为与lstm单元1600相比,lstm单元1700只需要其1/4的空间用于vmm和激活函数区块。
[0174]
还可理解,lstm单元通常将包括多个vmm阵列,每个vmm阵列需要由vmm阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个vmm阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化vmm阵列本身之外所需的电路。
[0175]
栅控递归单元
[0176]
模拟vmm具体实施可用于栅控递归单元(gru)系统。gru是递归神经网络中的栅控机构。gru类似于lstm,不同的是gru单元一般包含比lstm单元更少的部件。
[0177]
图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仅仅是示例。
[0178]
图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。
[0179]
图20示出gru单元2000,其为gru单元1900的具体实施的示例。为了方便读者,gru
单元2000中使用与gru单元1900相同的编号。如图20所示,sigmoid函数设备1901和1902以及tanh设备1903各自包括多个vmm阵列2001和激活函数块2002。因此,可以看出,vmm阵列在某些神经网络系统中使用的gru单元中特别有用。
[0180]
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。
[0181]
gru单元2000包含多组vmm阵列2001和激活函数块2002,而gru单元2100仅包含一组vmm阵列2101和激活函数块2102,它们用于表示gru单元2100的实施方案中的多个层。gru单元2100将需要比gru单元2000更少的空间,因为与gru单元2000相比,gru单元2100只需要其1/3的空间用于vmm和激活函数块。
[0182]
还可以理解的是,gru系统通常将包括多个vmm阵列,每个vmm阵列需要由vmm阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个vmm阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化vmm阵列本身之外所需的电路。
[0183]
vmm阵列的输入可为模拟电平、二进制电平、脉冲、时间调制脉冲或数字位(在这种情况下,需要dac来将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平、定时脉冲、脉冲或数字位(在这种情况下,需要输出adc来将输出模拟电平转换成数字位)。
[0184]
对于vmm阵列中的每个存储器单元,每个权重w可由单个存储器单元或由差分单元或由两个混合存储器单元(2个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重w作为差分权重(w=w+

w-)。在两个混合存储器单元中,需要两个存储器单元来实现权重w作为两个单元的平均值。
[0185]
vmm系统综述
[0186]
图43示出vmm系统4300的框图。vmm系统4300包括vmm阵列4301、行解码器4302、高电压解码器4303、列解码器4304、位线驱动器4305、输入电路4306、输出电路4307、控制逻辑部件4308和偏置发生器4309。vmm系统4300进一步包括高电压生成块4310,该高电压生成块包括电荷泵4311、电荷泵调节器4312和高电压电平发生器4313。vmm系统4300进一步包括(编程/擦除,或亦称权重调谐)算法控制器4314、模拟电路4315、控制引擎4316(其可以包括诸如算术函数、激活函数、嵌入式微控制器逻辑等的特殊函数)以及测试控制逻辑部件4317。下文所述的系统和方法能够在vmm系统4300中实现。
[0187]
输入电路4306可以包括电路,诸如dac(数模转换器)、dpc(数字到脉冲转换器,数字到时间调制脉冲转换器)、aac(模拟到模拟转换器,诸如电流到电压转换器,对数转换
器)、pac(脉冲到模拟电平转换器)或任何其他类型的转换器。输入电路4306能够实现归一化、线性或非线性上/下缩放函数或算术函数。输入电路4306能够实现对输入水平的温度补偿函数。输入电路4306能够实现激活函数,诸如relu或sigmoid。输出电路4307能够包括电路,诸如adc(模数转换器,用于将神经元模拟输出转换成数字位)、aac(模拟到模拟转换器,诸如电流到电压转换器,对数转换器)、apc(模拟到脉冲转换器,模拟到时间调制脉冲转换器)或任何其他类型的转换器。输出电路4307能够实现激活函数,诸如relu或sigmoid。输出电路4307能够在神经元输出上实现统计归一化、正则化、上/下缩放/增益函数、统计舍入或算术函数(例如,加法、减法、除法、乘法、移位、对数)。输出电路4307能够在神经元输出或阵列输出(诸如位线输出)上实现温度补偿函数,以便保持阵列的功率消耗大致恒定或诸如通过使iv斜率保持大致相同来提高阵列(神经元)输出的精度。
[0188]
用于对vmm中的单元进行精确编程的实施方案
[0189]
图22a示出编程方法2200。首先,该方法开始(步骤2201),这通常响应于接收到编程命令而发生。接下来,批量编程操作将所有单元编程到“0”状态(步骤2202)。然后,软擦除操作将所有单元擦除至中间电平(通过弱擦除,即不完全擦除实现),使得每个单元在读取操作期间将消耗大约3-5μa的电流(步骤2203)。这与深度擦除级别形成对比,在深度擦除电平中每个单元在读取操作期间消耗大约~20-30μa的电流。然后,对所有未选单元或零权重单元(即权重=0的或微不足道的权重的单元,即在微不足道阈值内的权重)执行硬编程到非常深的编程状态,以将电子添加到单元的浮栅并移除所有正电荷(步骤2204),以确保那些单元真正“断开”,这意味着那些单元将在读取操作期间消耗可忽略不计的电流量。
[0190]
然后对所选单元执行粗略编程方法(步骤2205),之后对所选单元执行精密编程方法(步骤2206)以对每个所选单元所需的精确值进行编程。此处,所选单元为经识别为编程方法2200的主体并且通过断言适当字线和位线或通过一些其他机制来选择的单元。
[0191]
图22b示出与编程方法2200类似的另一种编程方法2210。然而,代替如图22a的步骤2202中那样将所有单元编程到“0”状态的编程操作,在该方法开始(步骤2201)之后,使用擦除操作将所有单元擦除到“1”状态(步骤2212)。然后使用软编程操作(步骤2213)将所有单元编程到中间电平(通过软编程,即不完全编程实现),使得每个单元在读取操作期间将消耗大约3-5ua的电流。之后,对未选单元进行硬编程(步骤2204)并且进行粗略和精确编程方法(步骤2205到步骤2206),如上文关于图22a所描述。图22b的实施方案的变型完全移除软编程方法(步骤2213)。
[0192]
图23示出了粗略编程方法2205的第一实施方案,其为搜索和执行方法2300。首先,执行查找表搜索或预先确定的函数以基于旨在存储在所选单元中的值来确定所选单元中的每个单元的粗略目标电流值(i
ct
)(步骤2301)。所选单元可被编程为存储n个可能值(例如,非限制地128、64、32)中的一个可能值。n个值中的每个值对应于在读取操作期间由所选单元待消耗的不同期望电流值(id)。在一个实施方案中,查找表或函数(例如,从曲线拟合到数据的或基于存储器性能的物理的函数,其中该函数对诸如最终目标值和现有值的变量进行操作,并且计算下一操作的预期或期望目标)包含m个可能的电流值,以在搜索和执行方法2300期间用作所选单元的粗略目标电流值i
ct
,其中m是小于n的整数。例如,如果n是8,则m可以是4,这意味着存在所选单元可以存储的8个可能的值,并且4个粗略目标电流值i
ct
中的一个粗略目标电流值将被选择作为用于搜索和执行方法2300的粗略目标电流值i
ct
。也
就是说,搜索和执行方法2300被布置用于将所选单元快速编程为在一定程度上接近期望电流值id的粗略目标电流值(i
ct
),并且然后精确编程方法2206将所选单元更精确地编程为极其接近期望电流值id。
[0193]
对于n=8和m=4的简单示例,单元值、期望电流值和粗略目标电流值的示例示于表9和表10中:
[0194]
表9:n=8时的n个期望电流值的示例
[0195]
存储在所选择单元中的值期望电流值(id)000100pa001200pa010300pa011400pa100500pa101600pa110700pa111800pa
[0196]
表10:m=4时的m个目标电流值的示例
[0197]
粗略目标电流值(i
ct
)相关联的单元值200pa+i
ctoff set1
000,001400pa+i
ctoff set2
010,011600pa+i
ctoff set3
100,101800pa+i
ctoff set4
110,111
[0198]
偏移值i
ctoffsetx
用于防止在粗略编程期间超过期望电流值。
[0199]
一旦选择了粗略目标电流值i
ct
,就通过基于所选单元(例如,存储器单元210、310、410或510)的单元架构类型将电压v0施加到所选单元的适当端子来对所选单元进行编程(步骤2302)。如果所选单元是图3中类型的存储器单元310,则电压v0被施加到控制栅端子28,并且根据粗略目标电流值i
ct
,v0可以是5-7v。v0的值任选地可由存储v0的电压查找表与粗略目标电流值i
ct
确定。
[0200]
接下来,通过施加电压vi=v
i-1
+v
increment
对所选单元进行编程,其中i从1开始并在每次重复该步骤时递增(步骤2303),并且v
increment
为导致适合于所需的变化粒度的编程程度的小电压。因此,执行第一时间步骤2303,i=1,并且v1将为v0+v
increment
。然后执行验证操作(步骤2304),其中对所选单元执行读取操作,并且测量通过所选单元消耗的电流(i
cell
)。如果i
cell
小于或等于i
ct
(第一阈值),则搜索和执行方法2300完成,并且可开始精确编程方法2206。如果i
cell
不小于或等于i
ct
,则重复步骤2303,并且i递增。
[0201]
因此,在粗略编程方法2205结束并且精确编程方法2206开始的时刻,电压vi将是用于对所选单元进行编程的最终电压,并且所选单元存储与粗略目标电流值i
ct
相关联的值。精确编程方法2206将所选单元编程到在读取操作期间其消耗期望电流值id(加上或减去可接受的偏差量,诸如50pa或更小)的程度,该电流是与旨在存储在所选单元中的值相关联的期望电流值id。
[0202]
图24示出了可在精确编程方法2206期间施加至所选存储器单元的控制栅的不同
电压累进的示例。
[0203]
在第一实施方案中,逐渐地向控制栅施加递增的电压以进一步编程所选存储器单元。起点为vi,其为在粗略编程方法2205期间施加的最终电压。将增量v
p1
添加至v1,然后使用电压v1+v
p1
对所选单元(由从累进2401中的左侧起的第二脉冲所示)进行编程。v
p1
为小于v
increment
(在粗略编程方法2205期间使用的电压增量)的增量。在施加每个编程电压之后,执行验证步骤(类似于步骤2304),其中确定icell是否小于或等于i
pt1
(其为第一精确目标电流值并且此处为第二阈值),其中i
pt1
=id+i
pt1offset
,其中i
pt1offset
是为防止编程过冲而添加的偏移值。如果不是小于或等于i
pt1
,则将另一个增量v
p1
添加到先前施加的编程电压,并重复该过程。在i
cell
小于或等于i
pt1
时,则编程序列的该部分停止。任选地,如果i
pt1
等于id或以足够的精度近似等于id(意味着可接受的偏差量),则所选存储器单元已被成功编程。
[0204]
如果i
pt1
不等于id或以足够的精度近似等于id,则进行更小粒度的进一步编程。这里,现使用累进2402。累进2402的起点是用于累进2401下的编程的最终电压。将增量v
p2
(其小于v
p1
)添加到编程电压,并且施加组合电压以对所选存储器单元进行编程。在施加每个编程电压之后,执行验证步骤(类似于步骤2304),其中确定i
cell
是否小于或等于i
pt2
(其为第二精确目标电流值并且此处为第三阈值),其中i
pt2
=id+i
pt2offset
,并且其中i
pt2offset
是为防止编程过冲而添加的偏移值。如果i
cell
不小于或等于i
pt2
,则将另一个增量v
p2
添加到先前施加的编程电压,并重复该过程。在i
cell
小于或等于i
pt2
时,则编程序列的该部分停止。这里,假设i
pt2
等于id或足够接近id,以便编程可停止,因为目标值已以足够的精度实现。本领域的普通技术人员可以理解,如果i
pt2
不等于id或足够接近id以致编程可以停止,那么可以施加带有所使用的越来越小编程增量的附加累进。例如,在图25中,施加三个累进(2501、2502和2503)而不是仅两个累进。
[0205]
在累进2403中示出了第二实施方案。此处,并非增加在所选存储器单元的编程期间施加的编程电压,而是在增加周期的持续时间内施加相同的编程电压。并非在累进2401中添加增量电压诸如v
p1
并且在累进2403中添加v
p2
,而是将附加的时间增量t
p1
添加到编程脉冲,使得每个施加的脉冲比先前施加的脉冲长t
p1
。在所示示例中,第一脉冲具有持续时间tp0,并且第二脉冲具有持续时间t
p0
+t
p1
。在施加每个编程脉冲之后,执行与先前针对累进2401所述相同的验证步骤。任选地,在添加到编程脉冲中的附加时间增量比先前使用的进度具有更短的持续时间的情况下,则可以施加附加累进。尽管仅示出一个时间累进,但本领域的普通技术人员将理解,可施加任何数量的不同时间累进。
[0206]
现在将提供针对粗略编程方法2205的两个附加实施方案的附加细节。
[0207]
图26a示出粗略编程方法2205的第二实施方案(在图22a和图22b中所示),其为自适应校准方法2600。该方法开始(步骤2601)。以默认起始编程电压值v0对所选单元进行编程(步骤2602)。与搜索和执行方法2300中不同,这里编程电压值v0不是从查找表或从函数得出的,而是相对较小的初始值。在第一电流值ir1(例如,100na)处和在第二电流值ir2(例如,10na)处测量该单元的控制栅电压(vcg),并基于这些测量值(例如,360mv/十进位的电流)确定斜率并存储(步骤2603)。
[0208]
确定新的编程电压vi。第一次执行该步骤时,i=1,并且使用亚阈值公式基于所存储的斜率和电流目标值(诸如粗略目标电流值i
ct
)以及偏移值来确定v1,诸如以下:
[0209]vi
=v
i-1
+v
increment

[0210]vincrement
与vcg与log[ids/wa*io]的斜率成比例,其中
[0211]
vcg=n*vt*log[ids/wa*io]
[0212]
这里,vcg是控制栅电压,wa是存储器单元的w,ids是电流目标值加上偏移值。
[0213]
如果所存储的斜率值相对较陡,则可使用相对较小的电流偏移值。如果所存储的斜率值相对平坦,则可使用相对较高的电流偏移值。因此,确定斜率信息允许选择为所考虑的特定单元定制的电流偏移值。这最终使编程过程更短。当重复该步骤时,i递增,并且vi=v
i-1
+v
increment
。然后使用vi进行编程。v
increment
可从存储v
increment
值与电流目标值(诸如粗略目标电流值i
ct
)的查找表确定。
[0214]
接下来,验证操作发生,其中对所选单元执行读取操作,并且将通过所选单元消耗的电流(i
cell
)与粗略目标电流值i
ct
进行比较(步骤2605)。如果i
cell
小于或等于粗略目标电流值i
ct
,其中i
ct
被设定为=id+i
ctoffset
,其中i
ctoffset
是为防止编程过冲所添加的偏移值,则自适应校准方法2600完成并且可开始精确编程方法2206。如果i
cell
不小于或等于i
ct
,则重复步骤2604至2605,并且i递增。
[0215]
图26b示出粗略编程方法2205的第二实施方案,其为自适应校准方法2650。该方法开始(步骤2651)。以默认起始值v0对单元进行编程(步骤2652)。v0是从利用硅特性形成的查找表得出的,其中该表的值进一步包括提供偏移值i
ctoffset
,以便使得编程目标不过冲。
[0216]
在步骤2653中,形成用于确定下一个编程电压的i-v斜率参数。第一控制栅读取电压v
cgr1
被施加到所选单元,并且测量得到单元电流ir1。然后,第二控制栅读取电压v
cgr2
被施加到所选单元,并且测量得到的单元电流ir2。基于这些测量值来确定斜率,并且例如根据亚阈值区域(在亚阈值中操作的小区)中的等式来存储斜率:
[0217]
斜率=(v
cgr1
–vcgr2
)/(log(ir1)

log(ir2))
[0218]
(步骤2653)。v
cgr1
和v
cgr2
的值的示例分别是1.5v和1.3v。
[0219]
确定斜率允许选择针对所选单元中的每个单元定制的v
increment
值。这使编程过程更短。
[0220]
当执行步骤2654时,i递增,并且基于所存储的斜率值和粗略目标电流值i
ct
以及偏移值,使用诸如以下公式确定新的编程电压vi:
[0221]vi
=v
i-1
+v
increment

[0222]
其中v
increment
=α*斜率*(log(ir1)

log(i
ct
)),
[0223]
其中,α是预定常数《1(编程偏移值)以防止过冲,例如,0.9。
[0224]
然后使用编程电压vi对单元进行编程(步骤2655)。在此,根据所使用的编程方案,可以向所选单元的源极线端子、控制栅端子或擦除栅端子施加vi。
[0225]
接下来,验证操作发生,其中对所选单元执行读取操作,并且将通过所选单元消耗的电流(i
cell
)与粗略目标电流值i
ct
进行比较(步骤2656)。如果i
cell
小于或等于粗略目标电流值i
ct
,其中粗略目标阈值i
ct
被设定为=id+i
ctoffset
,其中i
ctoffset
是为防止编程过冲所添加的偏移值,则过程进行到步骤2657。如果不是,则过程返回到步骤2654,并且i递增。
[0226]
在步骤2657,将i
cell
与小于粗略目标电流值i
ct
的阈值i
ct2
进行比较,以确定是否已经发生过冲。也就是说,尽管步骤2654至步骤2656确保i
cell
低于粗略目标电流值i
ct
,但是i
cell
可能太远低于粗略目标电流值i
ct
,即,已经发生过冲,并且i
cell
能够表示对应于错误值的存储值。如果i
cell
不小于或等于i
ct2
,则没有发生过冲,并且自适应校准方法2650已经完
成,此时该过程前进到精确编程方法2206,其中起始值vi和单元被编程为或接近粗略目标阈值i
ct
。如果i
cell
小于或等于i
ct2
,则已发生过冲并且接着擦除所选单元(步骤2658),并且编程过程在步骤2652处重新开始,这次使用较小v
increment
以避免再次过冲。任选地,如果步骤2658被执行超过预定次数,则所选单元可被视为不应该被使用的坏单元。
[0227]
精确编程方法2206由多个验证周期和编程周期组成,其中编程电压由具有固定脉冲宽度的恒定精细电压递增,或者其中编程电压是固定的,并且编程脉冲宽度对于下一个脉冲是变化的或恒定的,如上文关于图24至图25所描述。
[0228]
任选地,确定在读取或验证操作期间通过所选非易失性存储器单元的电流是否小于或等于粗略目标电流值i
ct
的步骤(2656)可通过以下步骤来执行:向非易失性存储器单元的端子施加固定偏置;测量和数字化由所选非易失性存储器单元消耗的电流以生成数字输出位;以及将该数字输出位与表示第一阈值电流值i
ct
的数字位进行比较。
[0229]
任选地,确定在读取或验证操作期间通过所选非易失性存储器单元的电流是否小于或等于粗略目标电流值i
ct
的步骤可通过以下步骤来执行:将输入施加到非易失性存储器单元的端子;用输入脉冲调制由非易失性存储器单元消耗的电流以生成调制输出;数字化该调制输出以生成数字输出位;以及将数字输出位与表示第一阈值电流i
ct
的数字位进行比较。
[0230]
图27示出用于执行自适应校准方法2600的一部分的示例性电路具体实施。在步骤2603期间,电流源2701用于将示例性电流值ir1和ir2施加至所选单元(此处为存储器单元2702),然后测量存储器单元2702的控制栅处的电压(cgr1用于ir1,cgr2用于ir2)。如上所述,斜率是(v
cgr1
–vcgr2
)/(log(ir1)

log(ir2))。
[0231]
图28示出粗略编程方法2205的另一实施方案,其为绝对校准方法2800。该方法开始(步骤2801)。以默认起始值v0对单元进行编程(步骤2802)。在电流值itarget(即,单元电流的最终期望值)处测量单元的控制栅电压(v
cgrx
)并存储(步骤2803)。基于所存储的控制栅电压以及电流值itarget加上偏移值ioffset+itarget来确定编程电压v1(步骤2804)。例如,新的编程电压v1可计算如下:v1=v0+(v
cgbias-所存储的v
cgr
),其中v
cgbias
为最大目标电流下的默认读取控制栅电压(其在一个实施方案中为~1.5v),并且所存储的v
cgr
为步骤2803的测量读取控制栅电压。
[0232]
然后使用编程电压vi对该单元进行编程。当i=1时,使用得自步骤2804的电压v1。当i》=2时,使用电压vi=v
i-1
+v
increment
。v
increment
可从存储v
increment
值与电流值itarget的查找表中确定。接下来,验证操作发生,其中对所选单元执行读取操作,并且将通过所选单元消耗的电流(i
cell
)与粗略目标电流值i
ct
进行比较(步骤2806)。如果i
cell
小于或等于粗略目标电流值i
ct
,则绝对校准方法2800完成,并且可开始精确编程方法2206。如果i
cell
不小于或等于粗略目标电流值i
ct
,则重复步骤2805至步骤2806,并且i递增。
[0233]
图29示出了用于实施绝对校准方法2800的步骤2803的电路2900。电压源(未示出)生成v
cgr
,其从初始电压开始并向上斜升。此处,n+1个不同的电流源2901(2901-0、2901-1、2901-2、...、2901-n)生成幅值递增的不同电流io0、io1、io2、...、ion。每个电流源2901连接到相应的反相器2902(2902-0、2902-1、2902-2、...、2902-n)和存储器单元2903(2903-0、2903-1、2903-2、...、2903-n)。当v
cgr
向上斜升时,每个存储器单元2903消耗增加量的电流,并且到每个反相器2902的输入电压降低。由于io0《io1《io2《...《ion,因此反相器2902-0的
输出将随着v
cgr
增加而首先从低电平切换到高电平。接下来,反相器2902-1的输出将从低电平切换到高电平,然后是反相器2902-2的输出,依此类推,直到反相器2902-n的输出从低电平切换到高电平。每个反相器2902控制相应开关2904(2904-0、2904-1、2904-2、...、2904-n),使得当反相器2902的输出为低时,开关2904闭合,并且当反相器2902的输出为高时,开关2904打开。当反相器2902从低切换到高时,在开关2904为低时采样的v
cgr
由相应电容器2905(2905-0、2905-1、2905-2、...、2905-n)保持。因此,每个相应开关2904和电容器2905可形成采样保持电路。在图28的绝对校准方法2800中,io0、io1、io2、...、ion的值被用作itarget的可能值,并且相应的采样电压被用作相关联值v
cgrx
。曲线图2906示出了vcgr随时间推移而向上斜升,并且反相器2902-0、2902-1和2902-n的输出在不同时间从低电平切换到高电平。
[0234]
图30示出用于在自适应校准方法2600或绝对校准方法2800期间对所选单元编程的示例性累进3000。在一个实施方案中,电压v
cgp
被施加到所选择行的存储器单元的控制栅。所选择行中的所选择存储器单元的数量例如=32个单元。因此,可并行编程所选择行中的多达32个存储器单元。每个存储器单元被允许通过位线使能信号联接到编程电流iprog。如果位线使能信号为非活动的(意味着正电压被施加到所选位线),则存储器单元被抑制(未被编程)。如图30所示,位线使能信号en_blx(其中x在1与n之间变化,其中n为位线的数量)在不同时间被允许具有该位线(从而所述位线上的所选存储器)所需的v
cgp
电压电平。在另一个实施方案中,可使用位线上的使能信号来控制施加到所选单元的控制栅的电压。每个位线使能信号导致对应于该位线的所需电压(诸如图28中所述的vi)作为v
cgp
被施加。位线使能信号还可以控制流入位线的编程电流。在该示例中,每个后续控制栅电压v
cgp
高于先前电压。另选地,每个后续控制栅电压可低于或高于先前电压。v
cgp
中的每个后续增量可等于或不等于先前增量。
[0235]
图31示出用于在自适应校准方法2600或绝对校准方法2800期间对所选单元编程的示例性累进3100。在一个实施方案中,位线使能信号(例如,en_bln、en_bl1、en_bl5)使得所选位线(即,耦接到所选存储器单元的位线)能够用对应v
cgp
电压电平来编程。在另一个实施方案中,可使用位线使能信号来控制施加到所选择单元的增量斜升控制栅的电压。每个位线使能信号导致对应于该位线的所需电压(诸如图28中所述的vi)被施加到控制栅电压。在该示例中,每个后续增量等于先前增量。
[0236]
图32示出了用于实施利用vmm阵列进行读取或验证的输入和输出方法的系统。输入功能电路3201接收数字位值并且将那些数字值转换成模拟信号,接着该模拟信号用于将电压施加到阵列3204中的所选单元的控制栅,该控制栅由控制栅解码器3202、字线解码器3203和位线(未示出)选择。在以下描述的实施方案中,将输入施加到所选存储器单元,接着该所选存储器单元生成表示所选单元中的所接收的输入和所存储的权重w的乘法操作的输出电流。输出神经元电路块3205执行用于vmm阵列3204中的单元的每列(神经元)的输出动作。输出电路块3205可使用积分型模数转换器(adc)、逐次逼近型(sar)adc、或σ-δ型adc来实现。
[0237]
在一个实施方案中,提供给输入功能电路3201的数字值包括四个位(din3、din2、din1和din0),这意味着输入可以是16个不同值中的一个值。位值的16个不同组合中的每个组合对应于待施加到所选单元的控制栅的不同数量的输入脉冲,接着其将生成表示该单元
中的输入值和所存储的权重w的乘积的输出电流。较大数量的脉冲将导致该单元的较大输出值(电流)。表11中示出输入位值din[3:0]和施加到控制栅的脉冲的对应数量的示例:
[0238]
表11:数字位输入与生成的脉冲
[0239]
din3din2din1din0生成的脉冲00000000110010200113010040101501106011171000810019101010101111110012110113111014111115
[0240]
在上述示例中,对于4位数字值存在最多16个脉冲以用于读出单元值。每个脉冲等于一个单位的单元值(电流)。例如,如果icell单位=1na,则对于din[3-0]=0001,icell=1*1na=1na;并且对于din[3-0]=1111,icell=15*1na=15na。
[0241]
在另一个实施方案中,数字位输入使用数字位位置求和来读出单元值,如表12所示。此处,仅需要4个脉冲来评估4位数字值。例如,第一脉冲用于评估din0,第二脉冲用于评估din1,第三脉冲用于评估din2,第四脉冲用于评估din3。然后,根据位位置对来自四个脉冲的结果求和。实现的数字位求和公式如下:输出=2^0*din0+2^1*din1+2^2*din2+2^3*din3)*icell单位。
[0242]
例如,如果icell单位=1na,则对于din[3-0]=0001,icell总数=0+0+0+1*1na=1na;并且对于din[3-0]=1111,icell总数=8*1na+4*1na+2*1na+1*1na=15na。
[0243]
表12:数字位输入求和
[0244]
2^3*din32^2*din22^1*din12^0*din0总值00000000110020200213040040401504206
042178000880019802010802111840012840113842014842115
[0245]
图33示出电荷求和器3300的示例,该电荷求和器可用于在验证或读取操作期间对vmm的输出进行求和以获得单个模拟值,该模拟值表示输出并且随后可被任选地转换成数字位值。电荷求和器3300包括电流源3301和采样保持电路的阵列,该采样保持电路的阵列包括开关3302和采样保持(s/h)电容器3303。如针对4位数字值的示例所示,存在4个s/h电路以保持来自4个评估脉冲的值,其中这些值在过程结束时相加。s/h电容器3303被选择为具有与该s/h电容器的2^n*dinn位位置相关联的比例;例如,c_din3=x8 cu din3(其中cu是单位电容器)、c_din2=x4 cu用于位din2、c_din1=x2 cu用于位din1、din0=x1 cu用于位din9。电流源3301也被相应地赋予比例。
[0246]
图34示出可用于在验证或读取操作期间对vmm的输出进行求和的电流求和器3400。电流求和器3400包括电流源3401(其为来自vmm阵列的输出icell)、晶体管3402、开关3403、节点3404和晶体管3405。在该示例中,电流求和器3400以串行方式在节点3404上输出四个数字值din0、din1、din2和din3。对vmm阵列依次输入四个评估脉冲。在第一脉冲期间,对于时间周期t_din0,对应于din0的开关3403闭合并且其他开关3403打开。在第二脉冲期间,对于时间周期t_din1,对应于din1的开关3404闭合并且其他开关打开。在第三脉冲期间,对于时间周期t_din2,对应于din2的开关3404闭合,并且其他开关打开。在第四脉冲期间,对于时间周期t_din3,对应于din3的开关3404闭合,并且其他开关打开。在过程结束时,将值相加以生成数字输出,其中基于din的相对位位置将加权过程施加到din值。例如,dout可以等于8*i_din3+4*i_din2,+2*i_din1+1*i_din0。
[0247]
图39示出输出块3900(其为图32中的输出块3205的实施方案)。输出块3900接收来自vmm阵列(诸如图32中的阵列3204)的输出电流,这里显示为icell 3901。输出块3900包括d/a转换器3902、移位器3903、加法器3904和输出寄存器3905。
[0248]
这里,假设对vmm的输入块(诸如图32中的输入块3201)的输入是din[n:0],其中n是输入位二进制指数,并且存在总共i个位,其中i可以在1到n+1的范围内。例如,如果i=4,则输入将是四个输入位din3、din2、din1和din0。每次将每个输入位dinx施加到vmm 3204的输入块3201。
[0249]
输入块3201将dinx转换成输入信号(使用本文中所描述的实施方案中的一者或其他已知技术),该输入信号施加到阵列3204中的所选单元的端子(其中所选单元由字线解码器3203和所选位线(未示出)选择)。在一个实施方案中,输入信号为可变持续时间的单个脉冲,如表13中针对示例性4位输入所示。脉冲tpulse的输入信号(对vmm阵列的行输入)具有与数据输入din[3:0]的十进制值(0至15)成比例的宽度。
[0250]
表13:具有脉冲的4位输入的示例表
[0251]
din3din2din1din0tpulse或脉冲0000000011x00102x00113x01004x01015x01106x01117x10008x10019x101010x101111x110012x110113x111014x111115x
[0252]
在另一个实施方案中,输入信号为模拟偏置电压,如表14a中针对示例性4位输入所示。输入信号可以具有,例如针对在线性区域中操作的单元而线性间隔开的16个电压电平。另选地,对于在亚阈值区域中操作的单元,输入信号可以是对数间隔开的(意味着电压值与单元电流的对数成比例),例如对于二进制电流值,vcgink=vcgin(k-1)

(1/n*vt)*ln 2,vcgin是对应cg端子上的电压。
[0253]
表14a:具有模拟偏置电平的4位输入的示例表
[0254]
din3din2din1din0vcgin0000vcgin00001vcgin10010vcgin20011vcgin30100vcgin40101vcgin50110vcgin60111vcgin71000vcgin81001vcgin91010vcgin101011vcgin111100vcgin121101vcgin13
1110vcgin141111vcgin15
[0255]
特定行的4位输入din[3:0]将使16个电平中的一个电压电平(例如,vcgin0...或vcgin15)被选择并施加到vmm阵列的该行。在一个实施方案中,该操作同时对所有四个输入数据位进行操作,这意味着四个输入数据位将被转换成16个可能的电压电平中的一个电压电平并且被施加到行。在另选的实施方案中,在顺序方式中一次施加一个数据输入位(输入逐位操作),并且接着在模拟域中(图33、图34)或在数字域中(图35、图39)将每个数据输入的结果相加(求和)在一起。任选地,每个数据输入位可以基于其位位置被加权。例如,诸如通过使用图39中的输出块3900,在最低有效位位置中的“1”可能使电压vcgin1作为输入施加到vmm阵列的行,而在最高有效位位置中的“1”可能使电压vcgin8作为输入施加到vmm阵列的行。
[0256]
在另一个实施方案中,到阵列的输入块的输入信号为表14b中所示的用于以在线性或亚阈值或任何区域操作单元的恒定模拟偏置电压进行输入逐位操作(例如,依次din0、din1、din2、din3输入进行操作)的示例性4位输入。
[0257]
表14b:具有单个模拟偏置电平的输入逐位操作的4位输入的示例表
[0258]
din3din2din1din0vcgin0000vcgin10001vcgin10010vcgin10011vcgin10100vcgin10101vcgin10110vcgin10111vcgin11000vcgin11001vcgin11010vcgin11011vcgin11100vcgin11101vcgin11110vcgin11111vcgin1
[0259]
每个输入位din的二进制加权结果在模拟域中(诸如通过使用诸如图34中所示的电流求和器)或在数字域中(诸如通过使用图35或图44的实施方案)一起求和。图44示出数字求和器4400,其与图35中的数字求和器3500相同,不同之处在于已将特定权重指派给响应于输入位而生成的每个输出流。
[0260]
在另一个实施方案中,到阵列的输入块的输入信号是如表14c中所示的用于输入逐多位操作(例如,din3与din2一起,并且din1与din0一起)并且具有四个模拟偏置电平的示例的示例性4位输入。在一个实施方案中,对于在线性区域(例如,0v、25v、0.5v、1.0v)中
操作的单元,四个模拟电平是线性间隔开的,以确保对输出单元电流的线性相等缩放。在另一个实施方案中,对于在亚阈值中操作的单元,电平是对数间隔开的,以确保对输出单元电流的线性缩放,这意味着例如电压值与在亚阈值区域中操作的单元的电流的对数成比例,例如对于二进制电流值,vcgink=vcgin(k-1)

(1/n*vt)*ln 2。
[0261]
表14c:具有模拟偏置电平的输入逐多位操作的4位输入的示例表
[0262][0263]
每个多位din[1:0]和din[3:2]的二进制加权结果在模拟域(如图34中的电流求和器)中或在数字域(图35、图39)中被相加在一起。
[0264]
在另一个实施方案中,输入信号是混合信号,其包括添加有脉冲分量的模拟偏置电压分量(模拟偏置电源调制脉冲),如表15中针对具有模拟偏置电源和脉冲的示例性4位输入所示。可以通过长度(tpulse)或通过预先确定的时间周期内的脉冲数量(pulses)来调制脉冲:
[0265]
表15:具有模拟偏置电平和脉冲的4位输入的混合输入的示例表
[0266]
din3din2din1din0vcgintpulse或脉冲0000vcgin10x0001vcgin11x0010vcgin12x0011vcgin13x0100vcgin14x0101vcgin15x0110vcgin16x0111vcgin17x1000vcgin24x1001vcgin24.5x1010vcgin25x
1011vcgin25.5x1100vcgin26x1101vcgin26.5x1110vcgin27x1111vcgin27.5x
[0267]
在上表中,值“4.5x”意味着宽度等于1x脉冲宽度的4.5倍的脉冲,或4个1x脉冲加上1x脉冲宽度的一半的脉冲。
[0268]
输入数据被划分为多个输入数据集,其中每个输入数据集被分配给特定的电压偏置电平,例如对于8位输入din[7:0],第一行电源vcgin1被施加用于集din[3:0]中的输入位,并且与vcgin1不同,第二行电源vcgin2被施加到集din[7:4]中的输入位。在两个二进制输入组分区的该示例性实施方案中,模拟偏置电源vcgin2(对于第二数据输入集din[7:4])产生单元电流是由模拟偏置电源vcgin1(对于第一数据输入集din[3:0])产生的单元电流的2x。例如,对于在线性区域中操作的单元,vcgin2/vcgin1的比率可以是2x。因为不同的vcgin电压被施加到每个数据集,所以带有相同周期的相同数量的脉冲可以被施加到数据输入集din[7:4]的成员和数据输入集din[3:0]的成员,因为vcgin的差异将区分这两个成员。
[0269]
在该实施方案的变型中,两个分区可以用于每个输入数据集,其中每个分区对应于不同的模拟偏置电压,这意味着使用四个不同的电压vcgin1、vcgin2、vcgin3和vcgin4。这可以进一步减少所需脉冲的数量/周期。也就是说,四个不同的数据输入值可以使用相同数量/周期的脉冲,因为vcgin的差异将区分四个不同的值。成员。
[0270]
再次参考图39,输出块3900响应于输入dinx从vmm接收输出电流icell。d/a转换器3902将icell转换成数字形式dout[m:0],其表示响应于dinn而生成的输出的数字值,其中每个dout_n为一个或多个输出位的集合。
[0271]
移位器3903、加法器3904和寄存器3905操作以将不同的权重应用于响应于每个输入位dinn而生成的每个输出dout[m:0]_n。在n=4的简单示例中,移位器3902、加法器3904和寄存器3905执行以下动作:
[0272]
(1)响应于din0,移位器3903接收dout_0[m:0]0并且不对其进行移位,以产生(1)的结果;
[0273]
(2)响应于din1,移位器3903接收dout_1[m:0]并将其向左移动一个位,并且加法器3904将移位结果与(1)的结果相加以产生(2)的结果;
[0274]
(3)响应于din2,移位器3903接收dout_2[m:0]并将其向左移动两个位,并且加法器3904将移位结果与(2)的结果相加以产生(3)的结果;
[0275]
(4)响应于din3,移位器3903接收dout_3[m:0]并将其向左移动三个位,并且加法器3904将移位结果与(3)的结果相加以产生(4)的结果,即最终结果dout[m:0]
[0276]
在din[n:0]输入与模拟电压电平组合以表示每个数据输入的二进制权重的情况下,仅需要加法,而不针对此类混合输入逐位操作移位。输出寄存器3905存储并且输出(4)的结果作为dout。
[0277]
附加的输入和输出电路
[0278]
图35示出数字求和器3500,其接收多个数字值,将它们相加在一起并且生成表示
输入的总和的输出dout。数字求和器3500可在验证或读取操作期间使用。图35示出包括位dout0、dout1、dout2和dout3的4位数字值的示例。从评估输入脉冲生成每个位。每个位可以基于其位位置来加权,其中将2^n的权重t_dinn施加到位dinn。例如,dout3可以乘以2^3(=8)、dout2可以乘以2^2(=4)、dout1可以乘以2^1(=2)并且dout0可以乘以2^0(=1)。
[0279]
图36a示出施加到输出神经元以将阵列单元电流转换成数字输出位doutx的积分型双斜率adc 3600。由积分型运算放大器3601和积分型电容器3602组成的积分器对单元电流icell与基准电流iref进行积分。如图36b所示,在固定时间t1(积分时间)期间,单元电流被上积分(vout上升),并且然后在时间t2内施加基准电流以下积分(vout下降,非积分时间)。电流icell=t2/t1*iref。例如,对于t1,对于10位数字位分辨率,使用1024个周期,并且对于t2,周期数根据icell值从0到1024个周期而变化。由信号ec启用的数字计数器3630用于在t2周期期间生成数字输出位doutx。
[0280]
图36c示出施加到输出神经元以将阵列单元电流转换成数字输出位的积分型单斜率adc 3660。由积分型运算放大器3661、积分型电容器3662、开关s3和比较器3664组成的积分器对阵列单元电流icell 3666进行积分并生成输出信号ec。
[0281]
如图36d所示,曲线图3670示出了在时间t1期间,单元电流icell1被上积分(vout上升直到其达到vref2,这对应于图36c中的ec的值的变化),并且在时间t2期间,另一单元电流icell2被上积分。单元电流icell=cint*vref2/t,其中t是在ec改变值之前过去的时间。由信号ec启用的脉冲计数器3668用于对积分时间t期间的脉冲数量进行计数,并且脉冲的数量表示数字输出值doutx。
[0282]
在所示示例中,t1的数字输出将小于t2的数字输出,因为t1的计数将小于t2的计数,这也意味着时间周期t1期间的单元电流icell1大于时间周期t2期间的单元电流icell2。进行初始校准以利用基准电流iref和固定时间tref来校准积分型电容器3662值,cint=tref*iref/vref2。
[0283]
图36e示出了积分型双斜率adc 3680,其包括icell 3684、比较器3681、开关s1、开关s2、开关s3、电容器3682和基准电流源3683。积分型双斜率adc 3680接收输出神经元电流(icell 3684)并生成输出ec。积分型双斜率adc 3680不使用积分型运算放大器。单元电流或基准电流直接针对电容器3682积分。由信号ec启用的脉冲计数器3687用于在积分时间期间对脉冲进行计数,其中当ec改变值时积分时间结束。脉冲计数器的输出是表示icell的数字输出doutx。电流icell=t2/t1*iref。
[0284]
图36f示出了积分型单斜率adc 3690,其包括icell 3694、比较器3691、开关s2、开关s3和电容器3692。积分型单斜率adc 3690接收输出神经元电流(icell 3694)并生成输出ec。积分型单斜率adc 3690不使用积分型运算放大器。单元电流直接针对电容器3692积分。由信号ec启用的脉冲计数器3697用于在积分时间期间对数字输出脉冲进行计数,其中当ec改变值时积分时间结束。脉冲计数器的输出是表示icell的数字输出doutx。单元电流icell=cint*vref2/t。
[0285]
图37a示出了应用于输出神经元以将单元(阵列)电流转换成数字输出位的sar(逐次逼近寄存器)adc 3700。单元电流可在电阻器两端下降以转换成vcell。另选地,单元电流可以用于使s/h电容器充电以转换成vcell。二进制搜索用于计算从msb位(最高有效位)开始的位。基于来自sar 3701的数字位,dac 3702用于向比较器3703设置适当的模拟基准电
压。比较器3703的输出反馈到sar 3701以选择下一个模拟电平。如图37b所示,对于4位数字输出位的示例,存在4个评估周期:第一脉冲通过将模拟电平设置在中间来评估dout3,然后第二脉冲通过将模拟电平设置在上半部的中间或下半部的中间来评估dout2。dout3和dout4类似地将范围一分为二。另一个实施方案可以使用sar cdac(电荷再分配cdac)来将神经元电流转换成数字输出位。
[0286]
图38示出应用于输出神经元以将单元电流转换成数字输出位的σ-δ型adc 3800。由运算放大器3801和电容器3805组成的积分器对来自所选单元电流的电流和来自1位电流dac 3804的基准电流的总和进行积分。比较器3802将积分型输出电压与基准电压进行比较。时钟控制的dff 3803根据比较器3802的输出来提供数字输出流。数字输出流通常在输出数字输出位之前进入数字滤波器。
[0287]
图45示出输出块4500。输出块4500包括电流-电压转换器4501和模数转换器4502。输出块4500从vmm阵列接收输出电流,此处示为ineu,其中输出电流表示来自vmm阵列的用于读取或验证正被执行的操作的输出值。电流-电压转换器4501将输出电流ineu转换成电压信号,此处示为vout,使得电压vout表示来自vmm的输出电流ineu。a/d转换器4502将电压vout转换成数字形式并且输出数字输出,此处示为dout。
[0288]
在输出块4500的一个具体实施中,电流-电压转换器4501接收响应于输入序列从阵列中的一个或多个所选非易失性存储器单元的电流序列,并且将电流序列转换成电压序列。然后,a/d转换器将从电流-电压转换器4501接收到的电压序列转换成多个输出位,其中基于电压序列的加权和生成多个输出位。
[0289]
图46示出无损耗(无i*rmux下降)电流-电压转换器4600,其为图45中的电流-电压转换器4501的实施方案。电流-电压转换器4600包括运算放大器4601;电阻器4602、4603、4604和4605;以及开关4606、4607、4608、4609、4610、4611、4612和4613。无损耗可变电阻器单元由电阻器和两个开关(mux)组成,例如电阻器4602以及开关4610和4606,其中一个开关携带电流(开关4610)而一个开关不携带电流(开关4606),并且输出取自不携带电流的开关。
[0290]
电流-电压转换器4600接收电流ineu并且输出电压vout。值得注意的是,由于输出电压vout中的多路复用技术(开关的i*r下降),可以在不遭受电压降的情况下测量vout,这意味着输出电压在反馈回路或电流回路外部被采样。例如,当开关4613和开关4609闭合(接通)并且其他开关打开(断开)时,vout等于vref+(r4602+r4603+r4604+r4605)*(ineu)。又如,当开关4610和开关4606闭合(接通)并且其他开关打开(断开)时,vout为vref+(r4602*ineu)。在电流ineu被转换成电压vout之后,可以通过打开所有开关来对电压vout进行采样和保持。在这种情况下,电压vout参考基准电平vref。
[0291]
图47示出电流-电压转换器4700,其为图45中的电流-电压转换器4501的实施方案。电流-电压转换器4700包括比较器4701;开关4702、4705、4706和4707;s/h(采样和保持)电容器4703;以及可变电阻器4704。电流-电压转换器4700接收电流ineu并且输出s/h电压vout。无损耗可变电阻器4704类似于图46中的电阻器4650。在电流-电压转换期间,电流ineu流过电阻器4704以生成输出电压=r4704*ineu,s1(4702)、s2(4705)和s3(4707)闭合(接通)而s4(4706)打开(断开),由于s3不携带电流,因此输出vout=r4704*ineu。在保持周期期间,s4闭合(接通)并且s1、s2和s3打开(断开),vout保持在电容器4703上。值得注意的
是,因为在携带电流的开关外部测量(启用)vout,所以可以在不遭受电压降的情况下测量vout。
[0292]
图48示出电流-电压转换器4800,其为图45中的电流-电压转换器4501的实施方案。电流-电压转换器4800包括运算放大器4801;开关4802和开关4805;s/h电容器4803;以及可变电阻器4804。电流-电压转换器4800接收电流ineu并且输出电压vout。值得注意的是,由于在携带电流的开关(多路复用器)外部测量(启用)vout,所以可以在没有电压降的情况下测量vout。在电流到电压的转换期间,电流ineu流过电阻器4804以生成输出电压=r4804*ineu,s1(4802)和s2(4805)闭合(接通),由于s2不携带电流,因此输出vout=r4804*ineu。在保持周期期间,s1和s2打开(断开),vout保持在电容器4803上,在这种情况下,s/h电压vout参考接地电平。
[0293]
另选地,电流-电压转换器4700和4800不包含可变电阻器4704或4804,在这种情况下,通过由预先确定的可微调定时脉冲值控制的可变信号脉冲使能开关4702或4802对s/h电容器4703或4803进行ineu充电,其中基于ineu动态电流范围来选择定时脉冲值。在这种情况下,s/h电容器可以是带有可微调电容值的可变电容器。
[0294]
图49a示出电流-电压转换器4900,其是图45中的电流-电压转换器4501的实施方案。电流-电压转换器4900包括开关4901和4902;可变电阻器4903;以及电容器4904。电流-电压转换器4800接收电流ineu并且输出电压vout。在电流到电压的转换期间,电流ineu流过可变电阻器4903以生成输出电压=r4903*ineu,s1(4901)闭合(接通),输出vout=r4804*ineu。在保持周期期间,s1打开(断开),vout保持在电容器4904上,并且可变电阻器4903内部的开关(多路复用器)(例如图49b中可变电阻器4950中的s1a/s2a/s3a/s4a)也打开(断开)。值得注意的是,由于在携带电流的开关(多路复用器)外部测量(启用)vout,所以可以在不遭受电压降的情况下测量vout。
[0295]
图49b示出在4903中使用的可变电阻器4950。可变电阻器4950包括开关s1a、s2a、s3a、s4a、s1b、s2b、s3b和s4b。
[0296]
图50示出电流-电压转换器5000,其为图45中的电流-电压转换器4501的实施方案。电流-电压转换器5000包括运算放大器(op amp)5001;电平移位器5002(晶体管5004的栅极=晶体管5004的漏极-voffset);nmos晶体管5003、pmos晶体管5004和5005;开关5006和5007;可变电阻器5008(其可以如上文关于图49b所描述的来实现);电容器5009;以及电压源vh。电流-电压转换器5000接收电流ineu并且输出电压vout。值得注意的是,可以在不遭受电压降的情况下类似地测量vout(如图49中)。在这种情况下,s/h电压vout参考接地电平。运算放大器5001和晶体管5003在读取操作期间将固定偏置电压vref 5010强加于阵列的位线上。pmos晶体管5004和5005充当可变比例电流镜以将阵列输出电流(ineu)镜射到可变电阻器5008和s/h电容器5009中。另选地,电流-电压转换器5000不包含可变电阻器5008,在这种情况下,镜像的ineu通过由预先确定的可微调定时脉冲值控制的可变信号脉冲使能开关5006对s/h电容器5009进行充电,其中基于ineu动态电流范围来选择定时脉冲值。在这种情况下,s/h电容器可以是带有可微调电容值的可变电容器。
[0297]
图51示出电流-电压转换器5100,其为图45中的电流-电压转换器4501的实施方案。电流-电压转换器5100包括运算放大器5101;nmos晶体管5102、可变电阻器5103(其可以如上文关于图49b所描述的来实现);开关5104和5105;电容器5106;以及电压源vh。电流-电
压转换器5100接收电流ineu并且输出电压vout。值得注意的是,与图50类似,可以在不遭受电压降的情况下测量vout,在这种情况下,s/h电压vout参考高压电源vh。运算放大器5101和晶体管5102用以在读取操作期间将固定偏置vref 5110强加于位线上。另选地,电流-电压转换器5100不包含可变电阻器5103,在这种情况下,通过由预先确定的可微调脉冲定时值控制的可变信号脉冲使能开关5106对s/h电容器5106进行ineu放电,其中基于ineu动态电流范围来选择定时值。在这种情况下,s/h电容器可以是带有可微调电容值的可变电容器。
[0298]
图52a示出混合串行模数转换器5200,其利用上文关于图48所描述的无损电流到电压转换器4800。它由电流到电压转换器5220、比较器5209、电流源5206和5207,以及开关s1和s2组成。电流到电压转换器5220可以改为使用上文在图46、47、49、50和51中所描述的电流到电压转换器中的任一者来实现。电流到电压转换器5220包括运算放大器5201、开关5205、可变电阻器5204以及采样和保持电容器5203。
[0299]
图52b示出了混合串行adc转换器5200的操作的时序图5250,其中在时间周期t1期间,通过闭合开关5202(s2)同时维持开关5202(s1)打开并且接着通过打开开关5208(s2)由电容器5203保持以将电流icell 5206转换成电压vout。在周期t2期间,通过闭合开关5208(s1)来启用iref 5207以开始去积分周期,这意味着计数周期,在该计数周期期间,表示为t2的时钟脉冲(未示出)由脉冲计数器5210计数,只要ec为高,其被转变成数字位dout,即计数的数量。用于将比较器输出ec转换成数字位的数字计数器和时钟以及控制逻辑部件未示出。
[0300]
图52c示出了混合串行adc转换器5200的操作的另一个时序图5250,其中t1周期与图52b的周期相同。在时间周期t2期间,通过将基准电压vref2从诸如vref1的参考电平斜升到其最大电平而将电压vout转变成数字位dout。在时间周期t2期间,数字计数器(未示出)对脉冲进行计数,并且数字计数器的输出是输出dout。当vref2超过vout时,时间周期t2结束,这将导致图52a中ec的值改变。
[0301]
应当指出,如本文所用,术语“在

上方”和“在

上”两者包容地包括“直接在

上”(之间未设置中间材料、元件或空间)和“间接在

上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。

技术特征:
1.一种用于从非易失性存储器单元阵列生成输出的输出块,所述输出块包括:电流-电压转换器,所述电流-电压转换器用于从所述阵列中的一个或多个所选非易失性存储器单元接收响应于到所述阵列的输入序列而生成的电流序列,并且用于响应于所述电流序列而生成的电压或电压序列;以及模数转换器,所述模数转换器用于将所述电压或所述电压序列转换成多个输出位,其中所述多个输出位反映对所述电流序列或者所述电压或所述电压序列中的一者或多者执行的加权函数。2.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。3.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。4.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括一个或多个脉冲序列,其中一个或多个脉冲的所述序列中的脉冲的数量与所述输入的数据值成比例。5.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的一个或多个脉冲序列,其中一个或多个脉冲的所述序列中的脉冲的数量与所述输入的数据值成比例。6.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。7.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值与所述输入的数据值成比例。8.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值与由所述输入表示的多个数字位的数据值成比例。9.根据权利要求1所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值根据由所述输入表示的数字位的位位置而变化。10.根据权利要求1所述的输出块,其中所述非易失性存储器单元是分裂栅闪存存储器单元。11.根据权利要求1所述的输出块,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。12.根据权利要求1所述的输出块,其中所述电流-电压转换器是无损耗的。13.根据权利要求1所述的输出块,其中所述电流-电压转换器包括输出所述电压或所述电压序列的采样保持电路。14.根据权利要求1所述的输出块,其中所述电流-电压转换器包括输出所述电压或所述电压序列的运算放大器。15.根据权利要求1所述的输出块,其中所述电流-电压转换器包括输出所述电压或所述电压序列的无损耗可变电阻器单元。16.根据权利要求1所述的输出块,其中所述阵列是矢量矩阵乘法器阵列。17.根据权利要求16所述的输出块,其中所述非易失性存储器单元是分裂栅闪存存储器单元。18.根据权利要求16所述的输出块,其中所述非易失性存储器单元是堆叠栅闪存存储
器单元。19.一种用于从非易失性存储器单元阵列生成输出的输出块,所述输出块包括:电流-电压转换器,所述电流-电压转换器用于响应于施加到阵列的输入而从所述阵列中的一个或多个所选非易失性存储器单元接收电流并且将所述电流转换成电压,所述电流-电压转换器包括用以保持所述电压的样本与保持电路20.根据权利要求19所述的输出块,所述输出块进一步包括:模数转换器,所述模数转换器用于将所述电压转换成多个输出位。21.根据权利要求19所述的输出块,其中所述电流-电压转换器包括提供所述电压的无损耗可变电阻器单元。22.根据权利要求20所述的输出块,其中所述模数转换器是混合串行模数转换器。23.根据权利要求20所述的输出块,其中所述模数转换器执行计数以将所述电压转变成数字位。24.根据权利要求23所述的输出块,其中所述计数的周期由使保持电容器放电的基准电流确定。25.根据权利要求23所述的输出块,其中所述计数的周期由基准电压梯度确定,直到其越过阈值电压。26.根据权利要求19所述的输出块,其中所述非易失性存储器单元是分裂栅闪存存储器单元。27.根据权利要求19所述的输出块,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。28.根据权利要求19所述的输出块,其中所述电流-电压转换器将所述电流序列转换成电压序列,而没有来自所述输出块的输出电流的电压降。29.根据权利要求19所述的输出块,其中所述电流-电压转换器包括提供所述电压的运算放大器。30.根据权利要求29所述的输出块,其中所述阵列是矢量矩阵乘法器阵列。31.根据权利要求19所述的输出块,其中所述电流-电压转换器包括通过控制开关由来自一个或多个所选非易失性存储器单元的电流充电的电容器。32.根据权利要求31所述的输出块,其中所述电容器是可变电容器。33.根据权利要求32所述的输出块,其中所述可变电容器是可微调的。34.根据权利要求31所述的输出块,其中在当所述电压超过参考电压时结束的第一时间周期期间对所述电容器充电。35.根据权利要求34所述的输出块,其中所述电流-电压转换器包括用于将所述电压与所述参考电压进行比较的运算放大器。36.根据权利要求34所述的输出块,其中在当由所述电流-电压转换器提供的所述电压达到接地时结束的第二时间周期期间对所述电容器放电。37.根据权利要求36所述的输出块,其中计数器在所述第二时间周期期间对时钟脉冲进行计数以输出计数,其中所述计数是所述电压的数字版本。38.一种用于响应于由非易失性存储器单元阵列接收的输入序列而从所述阵列接收到的电流序列生成输出的输出块,所述输出块包括:
模数转换器,所述模数转换器用于接收所述电流序列并且将所述电流序列转换成包括多个输出位的输出。39.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。40.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。41.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括一个或多个脉冲序列,其中一个或多个脉冲的所述序列中的脉冲的数量与所述输入的数据值成比例。42.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的一个或多个脉冲序列,其中一个或多个脉冲的所述序列中的脉冲的数量与所述输入的数据值成比例。43.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括添加到模拟偏置电压的脉冲,其中所述脉冲的宽度与所述输入的数据值成比例。44.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值与所述输入的数据值成比例。45.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值与由所述输入表示的多个数字位的数据值成比例。46.根据权利要求38所述的输出块,其中所述输入序列中的每个输入包括模拟偏置电压,其中所述模拟偏置电压的幅值根据由所述输入表示的数字位的位位置而变化。

技术总结
公开了用于读取或验证人工神经网络中的矢量-矩阵乘法(VMM)阵列中的所选非易失性存储器单元中所存储的值的多个实施方案。该实施方案包括用于在读取或验证操作期间将输入施加到该VMM阵列的输入块的各种设计以及用于在该读取或验证操作期间从该VMM阵列接收输出的输出块的各种设计。输出块的各种设计。输出块的各种设计。


技术研发人员:H
受保护的技术使用者:硅存储技术股份有限公司
技术研发日:2021.04.07
技术公布日:2023/8/24
版权声明

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

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

分享:

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

相关推荐