首页> 中国专利> 对深度学习人工神经网络中的模拟神经存储器中包含故障存储器单元的行或列的冗余存储器访问

对深度学习人工神经网络中的模拟神经存储器中包含故障存储器单元的行或列的冗余存储器访问

摘要

本发明公开了用于在深度学习人工神经网络中使用的模拟神经存储器系统中的编程、擦除、读取或神经读取操作期间对冗余非易失性存储器单元而不是包含一个或多个故障非易失性存储器单元的一个或多个行或列进行访问的许多实施方案。

著录项

  • 公开/公告号CN112368716A

    专利类型发明专利

  • 公开/公告日2021-02-12

    原文格式PDF

  • 申请/专利权人 硅存储技术股份有限公司;

    申请/专利号CN201980044382.9

  • 申请日2019-06-07

  • 分类号G06N3/04(20060101);G06N3/063(20060101);G11C11/54(20060101);G11C11/56(20060101);G11C16/10(20060101);G11C16/16(20060101);G11C16/28(20060101);G11C16/04(20060101);G11C7/10(20060101);G11C29/00(20060101);

  • 代理机构31100 上海专利商标事务所有限公司;

  • 代理人陈斌

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 09:52:39

说明书

本申请要求于2018年7月11日提交的名称为“Redundant Memory Access forRows or Columns Containing Faulty Memory Cells in Analog Neural Memory inDeep Learning Artificial Neural Network”的美国临时专利申请第62/696778号和于2018年10月3日提交的名称为“Redundant Memory Access for Rows or ColumnsContaining Faulty Memory Cells in Analog Neural Memory in Deep LearningArtificial Neural Network”的美国专利申请第16/151259号的优先权。

技术领域

本发明公开了用于在深度学习人工神经网络中使用的模拟神经存储器系统中的编程、擦除、读取或神经读取操作期间对冗余非易失性存储器单元而不是包含一个或多个故障非易失性存储器单元的一个或多个行或列进行访问的许多实施方案。

背景技术

人工神经网络模拟生物神经网络(例如,动物的中枢神经系统,特别是大脑),这些人工神经网络用于估计或近似可取决于大量输入并且通常未知的功能。人工神经网络通常包括互相交换消息的互连“神经元”层。

图1示出了人工神经网络100,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以基于经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。

在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。

申请人先前在美国专利申请15/594439号中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。神经网络装置包括被配置为接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置为接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与所述第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与所述第二部分绝缘的非浮栅。多个存储器单元中的每一个被配置为存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置为将第一多个输入乘以所存储的权重值以生成第一多个输出。

必须擦除和编程在模拟神经形态存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32和64。

模拟神经形态存储器系统的一个独特特性是该系统必须支持两种不同类型的读取操作。在正常读取操作中,如在常规存储器系统中那样读取单独的存储器单元。然而,在神经读取操作中,一次读取整个存储器单元阵列,其中每个位线将输出电流,该电流是来自连接到该位线的存储器单元的所有电流的总和。

支持这两种类型的读取操作导致若干挑战。一个挑战是如何为系统提供冗余。在正使用多个冗余行或列的情况下(由于出现了多个故障的行或列),系统必须能够在神经读取操作期间一次激活所有冗余行或列。然而,在常规系统中,读取或编程操作将在任何给定时间仅在一个行或行的扇区上操作(而不是全部行),因此在任何给定时间将需要使冗余行或列中的仅一些行或列生效(asserted)。因此,现有技术解码系统不支持神经读取操作。

需要一种改进的解码系统来与模拟神经形态存储器一起使用,以在编程、擦除、读取和神经读取操作期间提供冗余。

发明内容

本发明公开了用于在深度学习人工神经网络中使用的模拟神经存储器系统中的编程、擦除、读取或神经读取操作期间对冗余非易失性存储器单元而不是包含一个或多个故障非易失性存储器单元的一个或多个行或列进行访问的许多实施方案。

附图说明

图1为示出现有技术人工神经网络的示意图。

图2为常规的2栅极非易失性存储器单元的横截面侧视图。

图3为常规的4栅极非易失性存储器单元的横截面侧视图。

图4为常规的3栅极非易失性存储器单元的侧面横截面侧视图。

图5为另一个常规的2栅极非易失性存储器单元的横截面侧视图。

图6为示出利用非易失性存储器阵列的示例性人工神经网络的不同级的示意图。

图7为示出向量乘法器矩阵的框图。

图8为示出向量乘法器矩阵的各种级的框图。

图9描绘了向量乘法器矩阵的另一实施方案。

图10描绘了向量乘法器矩阵的另一实施方案。

图11描绘了对图10的向量乘法器矩阵执行运算的工作电压。

图12描绘了向量乘法器矩阵的另一实施方案。

图13描绘了对图12的向量乘法器矩阵执行运算的工作电压。

图14描绘了向量乘法器矩阵的另一实施方案。

图15描绘了对图14的向量乘法器矩阵执行运算的工作电压。

图16描绘了向量乘法器矩阵的另一实施方案。

图17描绘了对图16的向量乘法器矩阵执行运算的工作电压。

图18描绘了包括向量乘法器矩阵的存储器系统和冗余系统。

图19描绘了现有技术冗余系统。

图20描绘了用于向量乘法器矩阵的冗余系统的实施方案。

图21描绘了用于向量乘法器矩阵的冗余系统的另一个实施方案。

图22描绘了用于向量乘法器矩阵的冗余系统的另一个实施方案。

图23描绘了用于向量乘法器矩阵的冗余系统的另一个实施方案。

图24描绘了在编程、读取或擦除操作期间访问冗余存储器单元而不是故障存储器单元的方法的实施方案。

图25描绘了神经读取操作期间访问冗余存储器单元而不是故障存储器单元的方法的实施方案。

图26描绘了用于与向量乘法器矩阵一起使用的解码系统的实施方案。

图27描绘了用于与向量乘法器矩阵一起使用的解码系统的另一实施方案。

图28描绘了现有技术长短期存储器系统。

图29描绘了现有技术长短期存储器系统中的示例性元胞(cell)。

图30描绘了图29的长短期存储器系统中的示例性元胞的具体实施。

图31描绘了现有技术门控循环单元系统。

图32描绘了现有技术门控循环单元系统中的示例性元胞。

图33描绘了图32的门控循环单元系统中的示例性元胞的具体实施。

具体实施方式

本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。

数字非易失性存储器是众所周知的。例如,美国专利5,029,130(“所述’130专利”)公开了一种分裂栅非易失性存储器单元阵列,并且出于所有目的将该专利以引用方式并入本文。此类存储器单元在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18。浮栅20形成在沟道区18的第一部分上方并且与该第一部分绝缘(并控制该第一部分的电导率),并且形成在源极区16的一部分上方。字线端子22(其通常被耦合到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线24耦合到漏极区16。

通过将高的正电压置于字线端子22上来对储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由Fowler-Nordheim隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。

通过将正电压置于字线端子22上以及将正电压置于源极16上来编程存储器单元210(其中电子被置于浮栅上)。电子电流将从源极16流向漏极14。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物26被注入到浮栅20上。

通过将正读取电压置于漏极14和字线端子22(其接通在字线端子下方的沟道区)上来读取存储器单元210。如果浮栅20带正电(即,电子被擦除以及正极耦合到漏极16),则沟道区在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或“1”状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感测为编程状态或“0”状态。

表1示出了可以施加到存储器单元210的端子用于执行读取、擦除和编程操作的典型电压范围:

其他分裂栅存储器单元配置是已知的。例如,图3示出了四栅极存储器单元310,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅28(通常耦合到字线)、在浮栅20上方的控制栅22、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的受热电子示出,电子将自身注入浮栅20上。擦除通过从浮栅20隧穿到擦除栅30的电子来显示。

表2描绘了可以施加到存储器单元310的端子以用于执行读取、擦除和编程操作的典型电压范围:

图4示出了分裂栅三栅极存储器单元410。存储器单元410与图3的存储器单元310相同,除了存储器单元410没有单独的控制栅。擦除操作(通过擦除栅进行擦除)和读取操作与图3的操作类似,不同的是不存在控制栅偏置。编程操作也在无控制栅偏置的情况下完成,因此源极线上的编程电压更高以对缺少控制栅偏置进行补偿。

表3描绘了可以施加到存储器单元410的端子以用于执行读取、擦除和编程操作的典型电压范围:

图5示出了叠栅存储器单元510。存储器单元510类似于图2的存储器单元210,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅22在浮栅20上方延伸,由绝缘层分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。

表4描绘了可以施加到存储器单元510的端子以用于执行读取、擦除和编程操作的典型电压范围:

为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。

具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着该单元存储装置是模拟的,或者至少可存储许多分立值(诸如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滤波器向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,由此将它们乘以相同的权重并且由相关联的神经元确定第二单个输出值。继续该过程,直到3x3滤波器在整个32x32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。

在C1处,在本示例中,存在16个特征映射,每个特征映射具有30x30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,突触CB1由16层的二维阵列构成(记住本文所引用的神经元层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。

在从C1转到S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。池化阶段的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在S1处,存在16个15x15特征映射(即,16个每个15x15像素的不同阵列)。CB2中从S1到C2的突触和相关联神经元利用4x4滤波器扫描S1中的映射,其中滤波器移位1个像素。在C2处,存在22个12x12特征映射。在从C2转到S2之前,应用激活函数P2(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。在S2处,存在22个6x6特征映射。将激活函数应用于从S2到C3的突触CB3,其中C3中的每个神经元连接至S2中的每个映射。在C3处,存在64个神经元。从C3到输出S3的突触CB4将S3完全连接至C3。S3处的输出包括10个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。

使用非易失性存储器单元的阵列或阵列的一部分来实现每个级别的突触。图7为包括非易失性存储器单元并且被用作输入层和下一层之间的突触的向量-矩阵乘法(VMM)阵列的框图。具体地,VMM 32包括非易失性存储器单元阵列33、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对存储器阵列33的输入进行解码。在该示例中,源极线解码器37还对存储器单元阵列的输出进行解码。另选地,位线解码器36可以解码存储器阵列的输出。存储器阵列有两个用途。首先,它存储将由VMM使用的权重。其次,存储器阵列有效地将输入与存储在存储器阵列中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且由于原位存储器计算也是高功效的。

将存储器阵列的输出提供至差动加法器(诸如加法运算放大器或加法电流镜)38,该差动加法器对存储器单元阵列的输出进行求和,以为该卷积创建单个值。差动加法器是为了实现正权重和负权重与正输入的总和。然后将求和后的输出值提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数可包括sigmoid、tanh或ReLU函数。经修正的输出值成为下一层的特征映射的元素(例如,上述描述中的C1),然后被应用于下一突触以产生下一特征映射层或最终层。因此,在该示例中,存储器阵列构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和运算放大器38和激活函数电路39构成多个神经元。

图8是VMM的各个级的框图。如图8所示,通过数模转换器31将输入从数字转换为模拟,并将其提供至输入VMM 32a。转换的模拟输入可以是电压或电流。第一层的输入D/A转换可通过使用将输入映射到矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换还可由A/A转换器完成,以将外部模拟输入转换为映射到VMM的模拟输入。输入VMM 32a生成的输出作为下一VMM(隐藏的级别1)32b的输入而提供,该输入继而生成作为下一VMM(隐藏的级别2)32b的输入而提供的输出,以此类推。VMM 32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM可以是独立的非易失性存储器阵列、或者多个VMM可以利用相同非易失性存储器阵列的不同部分、或者多个VMM可以利用相同非易失性存储器阵列的重叠部分。图8所示的示例包含五个层(32a、32b、32c、32d、32e):一个输入层(32a)、两个隐藏层(32b、32c)和两个完全连接的层(32d、32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。

图9示出了神经元VMM 900,其特别适用于图3所示类型的存储器单元,并且用作输入层与下一层之间的神经元的突触和部件。VMM 900包括非易失性存储器单元的存储器阵列901和参考阵列902(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。在VMM 900中,控制栅线(诸如控制栅线903)在竖直方向上延伸(因此参考阵列902在与输入控制栅线正交的行方向上),并且擦除栅线(诸如擦除栅线904)在水平方向上延伸。这里,输入在控制栅线上提供,并且输出出现在源极线上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于源极线上的电流执行来自连接到源极线的存储器单元的所有电流的求和功能。

如本文针对神经网络所述,闪存单元优选地被配置为在亚阈值区域中操作。

本文所述的存储器单元以弱反偏置:

Ids=Io*e

w=e

对于使用存储器单元将输入电流转换为输入电压的I到V对数转换器:

Vg=k*Vt*log[Ids/wp*Io]

对于用作向量矩阵乘法器VMM的存储器阵列,输出电流为:

Iout=wa*Io*e

Iout=(wa/wp)*Iin=W*Iin

W=e

字线或控制栅可用作输入电压的存储器单元的输入。

另选地,闪存存储器单元可被配置为在线性区域中操作:

Ids=beta*(Vgs-Vth)*Vds;beta=u*Cox*W/L

Wα(Vgs-Vth)

对于I至V线性转换器,在线性区域中操作的存储器单元可用于将输入/输出电流线性地转换为输入/输出电压。

ESF向量矩阵乘法器的其他实施方案如美国专利申请15/826345号中所述,该专利申请以引用方式并入本文。源极线或位线可用作神经元输出(电流求和输出)。

图10示出了神经元VMM 1000,其特别适用于图2所示类型的存储器单元,并且用作输入层与下一层之间的突触。VMM 1000包括非易失性存储器单元的存储器阵列1003、参考阵列1001和参考阵列1002。在阵列的列方向上的参考阵列1001和1002用于将流入端子BLR0-3的电流输入转换为电压输入WL0-3。实际上,参考存储器单元是通过多路复用器连接的二极管,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵提供。存储器阵列1003用于两个目的。首先,它存储将由VMM 1000使用的权重。其次,存储器阵列1003有效地将输入(端子BLR0-3中提供的电流输入;参考阵列1001和1002将这些电流输入转换成输入电压以提供给字线WL0-3)乘以存储在存储器阵列中的权重并且随后将所述结果(存储器单元电流)相加以产生输出,该输出将是到下一层的输入或到最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线上提供,并且输出在读取(推断)操作期间出现在位线上。置于位线上的电流执行来自连接到位线的存储器单元的所有电流的求和功能。

图11示出了用于VMM 1000的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

图12描绘了神经元VMM 1200,其特别适用于图2所示类型的存储器单元,并且用作输入层与下一层之间的神经元的突触和部件。VMM 1200包括非易失性存储器单元的存储器阵列1203、参考阵列1201和参考阵列1202。在阵列VMM 1200的行方向上延伸的参考阵列1201和1202与VMM 1000相似,除了在VMM 1200中,字线在垂直方向上延伸。这里,输入在字线上提供,并且输出在读取操作期间出现在源极线上。置于源极线上的电流执行来自连接到源极线的存储器单元的所有电流的求和功能。

图13描绘了用于VMM 1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

图14描绘了神经元VMM 1400,其特别适用于图3所示类型的存储器单元,并且用作输入层与下一层之间的神经元的突触和部件。VMM 1400包括非易失性存储器单元的存储器阵列1403、参考阵列1401和参考阵列1402。参考阵列1401和1402用于将流入端子BLR0-3的电流输入转换为电压输入CG0-3。实际上,参考存储器单元是通过共源共栅多路复用器1414连接的二极管,其中电流输入流入其中。多路复用器1414包括多路复用器1405和共源共栅晶体管1404,以确保读取中的参考单元的位线上的电压恒定。将参考单元调谐至目标参考电平。存储器阵列1403用于两个目的。首先,它存储将由VMM 1400使用的权重。其次,存储器阵列1403有效地将输入(提供到端子BLR0-3的电流输入;参考阵列1401和1402将这些电流输入转换成输入电压以提供给控制栅CG0-3)乘以存储在存储器阵列中的权重并且随后将所述结果(单元电流)相加以产生输出,该输出将是到下一层的输入或到最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入在字线上提供,并且输出在读取操作期间出现在位线上。置于位线上的电流执行来自连接到位线的存储器单元的所有电流的求和功能。

VMM 1400为存储器阵列1403中的存储器单元实现单向调谐。也就是说,每个单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅的两行需要一起擦除(称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷,

图15描绘了用于VMM 1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

图16描绘了神经元VMM 1600,其特别适用于图3所示类型的存储器单元,并且用作输入层与下一层之间的神经元的突触和部件。VMM 1600包括非易失性存储器单元的存储器阵列1603、参考阵列1601和参考阵列1602。EG线垂直延伸,而CG和SL线水平延伸。VMM 1600类似于VMM 1400,不同的是VMM 1600实现双向调谐,其中每个单独的单元可根据需要被完全擦除、部分编程和部分擦除,以达到浮栅上的所需电荷量。如图所示,参考阵列1601和1602将端子BLR0-3中的输入电流转换为要沿行方向施加到存储器单元的控制栅电压CG0-3(通过经由复用器的二极管连接的参考单元的动作)。电流输出(神经元)在位线中,该位线对来自连接到位线的存储器单元的所有电流求和。

图17描绘了用于VMM 1600的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

现有技术包括被称为长短期存储器(LSTM)的概念。LSTM单元通常用于神经网络中。LSTM允许神经网络在任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM单元包括元胞(cell)、输入门、输出门和遗忘门。这三个门调节进出该元胞的信息流。VMM尤其可用于LSTM单元中。

图28描绘了示例性LSTM 2800。该示例中的LSTM包括元胞2801、2802、2803和2804。元胞2801接收输入向量x

图29描绘了可用于图28中的元胞2801、2802、2803和2804的LSTM元胞2900的示例性具体实施。LSTM元胞2900从前一元胞接收输入向量x(t)和元胞状态向量c(t-1),并生成元胞状态(t)和输出向量h(t)。

LSTM元胞2900包括S型函数装置2901、2902和2903,每个S型函数装置应用介于0和1之间的数字来控制允许输入向量中的每个分量的多少直达输出向量。LSTM元胞2900还包括用于将双曲线正切函数应用于输入向量的双曲正切装置2904和2905、用于将两个向量相乘在一起的乘法器装置2906、2907和2908以及用于将两个向量相加在一起的加法装置2909。

图30描绘了LSTM元胞3000,其为LSTM元胞2900的具体实施的示例。为了方便读者,在图30和LSTM元胞3000中使用与图29和LSTM元胞2900相同的编号。如在图30中可见,S型函数装置2901、2902和2903以及双曲正切装置2904和2905各自包括多个VMM阵列3001。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM元胞中特别重要。

还可理解,LSTM系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路块(诸如加法器和激活电路块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路块将需要半导体装置内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图使在VMM阵列本身之外所需的电路最小化。

类似地,模拟VMM具体实施可用于GRU(门控循环单元)系统。GRU是循环神经网络中的门控机制。GRU类似于LSTM,其中一个显著的区别是GRU缺少输出门。

图31描绘了示例性GRU 3100。该示例中的GRU包括元胞3101、3102、3103和3104。元胞3101接收输入向量x

图32描绘了可用于图31中的元胞3101、3102、3103和3104的GRU元胞3200的示例性具体实施。GRU元胞3200从前一元胞接收输入向量x(t)和元胞状态向量h(t-1),并生成元胞状态h(t)。GRU元胞3200包括S型函数装置3201和3202,每个S型函数装置将介于0和1之间的数字应用于来自元胞状态h(t-1)和输入向量x(t)的分量。GRU元胞3200还包括用于将双曲线正切函数应用于输入向量的双曲正切装置3203、用于将两个向量相乘在一起的乘法器装置3204、3205和3206、用于将两个向量相加在一起的加法装置3207以及用于从1减去输入以生成输出的互补装置3208。

图33描绘了GRU元胞3300,其为GRU元胞3200的具体实施的示例。为了方便读者,在图33和GRU元胞3300中使用与图32和GRU元胞3200相同的编号。如在图33中可见,S型函数装置3201和3202以及双曲正切装置3203各自包括多个VMM阵列3301。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU元胞中特别有用。

还可理解,GRU系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路块(诸如加法器和激活电路块以及高电压生成块)提供的功能。为每个VMM阵列提供单独的电路块将需要半导体装置内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图使在VMM阵列本身之外所需的电路最小化。

图18示出了VMM系统1800。VMM系统1800包括VMM阵列1807、低电压行解码器1803、高电压行解码器1805、参考单元低电压列解码器1806(针对列方向上的参考阵列示出,这意味着提供行方向上的输入到输出转换)、位线PE驱动器1802、位线多路复用器1808、激活函数电路和加法器1809、控制逻辑器1804和模拟偏置电路1801。

低电压行解码器1803为读取操作和编程操作提供偏置电压,并且为高电压行解码器1805提供解码信号。高电压行解码器1805为编程操作和擦除操作提供高电压偏置信号。位线PE驱动器1801为处于编程、验证和擦除的位线提供控制功能。偏置电路1801是提供各种编程、擦除、编程验证和读取操作所需的多个电压的共享偏置块。

VMM系统1800还包括冗余阵列1810和/或冗余阵列1813。根据下文更详细描述的冗余实施方案,冗余阵列1810和1813各自提供用于替换阵列1807中的缺陷部分的阵列冗余。

VMM系统1800还包括NVR(非易失性寄存器也称为信息扇区)扇区1811,其是用于存储用户信息、装置ID、密码、安全密钥、修正位、配置位、制造信息等的阵列扇区。

VMM系统1800任选地包括参考扇区1812和/或参考系统1850。参考系统1850包括参考阵列1852、参考阵列低电压行解码器1851、参考阵列高电压行解码器1853和参考阵列低电压列解码器1854。参考系统可以跨多个VMM系统共享。

参考阵列低电压行解码器1851为涉及参考阵列1852的读取操作和编程操作提供偏置电压,并且还为参考阵列高电压行解码器1853提供解码信号。参考阵列高电压行解码器1853为涉及参考阵列1852的编程和操作提供高电压偏置。参考阵列低电压列解码器1854为参考阵列1852提供解码功能。参考阵列1852是诸如用于为编程验证或单元边际微调(搜索边际单元)提供参考目标。

图19描绘了现有技术存储器系统1900,其在编程、擦除或读取操作期间为包含一个或多个故障存储器单元的行提供冗余。存储器系统1900包括地址比较器1903、逻辑电路1905、阵列1906、冗余阵列1907、行解码器1908和冗余行解码器1909。

在测试或配置阶段期间,对阵列1906中的每行存储器单元进行测试和验证。识别出被视为有故障的任何存储器单元,并且将包含一个或多个有故障的存储器单元的每个行的地址存储在非易失性存储器(未示出)中。此后,在存储器系统1900的操作期间,地址比较器1903将用于读取或写入操作的每个地址1901与跟包含一个或多个故障存储器单元的行对应的一组存储地址中的每个地址进行比较。

如果地址比较器1903发现与任何所存储地址的匹配,则使能信号1904生效,这表示所接收的地址用于故障行。使能信号1904由冗余阵列行解码器1909接收,该冗余阵列行解码器然后选择已被分配给包含故障存储器单元的行的行。因此,编程、擦除或读取操作涉及冗余行,而不是包含故障存储器单元的行。

如果地址比较器1903未发现匹配,则使能信号1904失效,并且行解码器1908由逻辑电路1905(此处被示出为反相器)的输出启用。在这种情况下,所接收的地址1901用于访问阵列1906中的行以用于操作。

通过设计,在任何给定时间分配的冗余行中的仅一个冗余行可生效。因此,在所有非故障行和分配的冗余行生效的情况下,该现有技术系统不能用于执行神经读取操作。

图20描绘了改进的存储器系统的一个实施方案。存储器系统2000为包含一个或多个错误(bad)存储器单元的行提供冗余。与存储器系统1900不同,存储器系统2000能够在神经读取操作期间使所有分配的冗余行生效,并且其还可以执行如存储器系统1900中的编程、擦除或读取操作。存储器系统2000包含与存储器系统1900相同的部件,不同的是存储器系统2000使用行解码器和冗余锁存器块2008来代替行解码器1908。行解码器和冗余锁存器块2008包含使所有分配的冗余行能够在神经读取操作期间生效的电路。

图21描绘了关于行解码器和冗余锁存器块2008(此处被示出为行解码器和冗余锁存器块2101)的实施方案的进一步细节。存储器系统2100包括行解码器和冗余锁存器块2101、阵列2102、冗余阵列2103和高电压解码器2104。行解码器和冗余锁存器块2101包括子块2105的多个实例,其中子块2105的每个实例耦接到阵列2102中的一对字线(此处为字线2115和2116)。因此,在该实施方案中,子块2105和类似的子块各自耦接到阵列2102中的存储器的扇区。在另选的实施方案中,每个子块可耦接到多于两个行。

行解码器和冗余锁存器块2101还包括冗余子块2113,该冗余子块耦接到冗余阵列2103中的一对字线(此处为字线2117和2118)。类似于冗余子块2113的附加冗余子块可包括在行解码器和冗余锁存器块2101中。

子块2105包括“与非”门2106和2107、反相器2108和2109、“与非”门2110和2111、反相器2112和2113以及锁存器2114。在测试或配置阶段期间,锁存器2114被编程(或在加电或响应于冗余负载命令时加载配置数据)。如果字线2115或2116耦接到包含一个或多个故障存储器单元的行,则“1”将被编程到锁存器2114中。否则,锁存器2114将存储“0”。在正常操作期间,当“与非”门2106或2107分别接收到对应于字线2115或2116的地址时,锁存器2114将使该字线失效而不是生效。因此,将不选择包含故障存储器单元的字线。

冗余子块2113包含与子块2105类似的部件。这里,锁存器2119在测试或配置阶段期间被编程。如果要使用字线2117或2118,则锁存器2119被编程为具有“0”。否则,锁存器2119被编程为具有“1”。在正常操作期间,当接收“与非”门接收到对应于字线2117或2118的地址时,锁存器2119将使该字线生效。因此,将选择包含冗余存储器单元的字线。值得注意的是,可在任何给定时间(诸如在神经读取操作期间)通过将锁存器诸如锁存器2119配置为具有“0”来选择多个冗余行。

图22描绘了关于行解码器和冗余锁存器块2008(此处被示出为行解码器和冗余锁存器块2201)的另一实施方案的进一步细节。存储器系统2200包括行解码器和冗余锁存器块2201、阵列2202、冗余阵列2203和高电压解码器2204。行解码器和冗余锁存器块2201包含子块2205的多个实例,其中子块2205的每个实例耦接到阵列2202中的字线(此处为字线2211)。因此,在该实施方案中,子块2205和类似的子块各自耦接到阵列2202中的存储器的扇区。

行解码器和冗余锁存器块2201还包括耦接到冗余阵列2203中的冗余字线(此处为字线2212)的冗余块2213。

子块2205包括“与非”门2206、反相器2207、锁存器2208以及开关2209和2210。这里,冗余锁存器2208在存储器系统2200的配置阶段期间被编程。如果锁存器2208包含“1”,则耦接至阵列2202中的字线2211的对应行不是故障的。在正常操作期间,开关2209将闭合并且开关2210将打开,并且当接收到适当地址时将访问阵列2202中的字线2211。如果锁存器2208包含“0”,则阵列2202中的对应行是故障的。在正常操作期间,开关2209将打开并且开关2109将闭合,并且当接收到适当地址时,阵列2202中的字线2211将不会被访问。相反,将通过竖直线2215访问阵列2202中的冗余字线2212。

图23描绘了本发明构思的另一个实施方案。存储器系统2300包括列解码器和冗余锁存器块2301、阵列2302和冗余阵列2303。列解码器和冗余锁存器块2301包含子块2304的多个实例,其中子块2304的每个实例选择性地耦接到阵列2302中的位线或位线组(这里,位线2308)。子块2304包括锁存器2305、开关2306和开关2307。

锁存器2305在存储器系统2300的测试或配置阶段期间被编程。如果锁存器2305包含“1”,则耦接到位线2308的对应列不是故障的。在正常操作期间,开关2306将闭合并且开关2307将打开,并且当接收到适当地址时将访问位线2308。如果锁存器2305包含“0”,则阵列2302中的对应列是故障的。在正常操作期间,开关2306将打开并且开关2307将闭合,并且当接收到适当地址时,阵列2202中的位线2308将不会被访问。相反,将通过水平线2315访问冗余阵列2303中的冗余位线2309。

图24描绘了编程、编程验证和擦除方法2400。过程开始(步骤2401)。接收编程、编程验证或擦除命令(步骤2402)。将所接收的地址与用于存储器阵列中的已知错误行或列的地址进行比较(步骤2403)。

如果发现匹配(步骤2404),则这意味着存在错误的地址。系统将禁用错误的地址(步骤2405)并启用对应的冗余地址(步骤2406)。然后使用冗余地址执行编程、编程验证或擦除命令(步骤2407)。然后该过程完成(步骤2408)。

如果未找到匹配(步骤2404),则启用所接收的地址(步骤2409)。然后使用所接收的地址来执行编程、编程验证或擦除命令(步骤2410)。然后该过程完成(步骤2408)。

图25描绘了神经读取过程2500的实施方案。过程开始(步骤2501)。冗余锁存器被加载或配置有冗余信息(步骤2502)。发生神经读取操作,由此启用除错误行或列之外的整个阵列和冗余阵列(步骤2503)。过程完成(步骤2504)。

图26描绘了适于与包含图2所示类型的存储器单元的阵列一起使用的解码电路2600。解码电路2600包括字线解码器2601、高电压源2604和源极线解码器2606。子线解码器2601包括如图所示配置的PMOS晶体管2603和NMOS晶体管2602。源极线解码器2606包括NMOS晶体管2607、2608和2609,如图所示配置。高电压电源2604包括高电压逻辑电源2605。

图27描绘了适于与包含图3所示类型的存储器单元的阵列一起使用的解码电路2700。解码电路2700包括擦除栅线解码器2701、控制栅解码器2706、源极线解码器2709和高压电源2704。擦除栅解码器2701包括PMOS晶体管2703和NMOS晶体管2702,如图所示配置。控制栅解码器2706包括PMOS晶体管2708和NMOS晶体管2707。源极线解码器2709包括NMOS晶体管2710、2711和2712,如图所示配置。高电压电源2704包括高电压逻辑电源2705。

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

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号