首页> 中国专利> 包括多个矢量-矩阵乘法阵列和共享部件的用于深度学习神经网络的模拟神经存储器系统

包括多个矢量-矩阵乘法阵列和共享部件的用于深度学习神经网络的模拟神经存储器系统

摘要

公开了用于深度学习神经网络的模拟神经形态存储器系统的多个实施方案。该模拟神经形态存储器系统包括多个矢量‑矩阵乘法阵列和由这些阵列共享的各种部件。共享的部件包括高电压生成区块、验证区块和测试区块。该模拟神经形态存储器系统任选地用于长短期存储器系统或栅控递归单元系统内。

著录项

  • 公开/公告号CN112567391A

    专利类型发明专利

  • 公开/公告日2021-03-26

    原文格式PDF

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

    申请/专利号CN201980054181.7

  • 发明设计人 H·V·特兰;T·乌;A·李;S·洪;

    申请日2019-07-09

  • 分类号G06N3/04(20060101);G06N3/063(20060101);H01L29/423(20060101);

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

  • 代理人陈斌

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:22:47

说明书

优先权声明

本申请要求2018年8月21日提交的名称为“Analog Neural Memory System forDeep Learning Neural Network Comprising Multiple Vector-By-MatrixMultiplication Arrays and Shared Components”的美国临时专利申请第62/720,902号和2018年11月6日提交的名称为“Analog Neural Memory System for Deep LearningNeural Network Comprising Multiple Vector-By-Matrix Multiplication Arrays andShared Components”的美国专利申请第16/182,492号的优先权。

技术领域

公开了用于深度学习神经网络的模拟神经形态存储器系统的多个实施方案。模拟神经形态存储器系统包括多个矢量-矩阵乘法阵列以及由这些阵列共享的各种部件,包括高电压生成区块、验证区块和测试区块。

背景技术

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

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

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

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

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

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

支持这两种类型的读取操作导致若干挑战。例如,系统必须能够为各种操作提供大范围的电压和电流电平,这些操作应用于各个单元、整个阵列或甚至同时应用于所有阵列。这需要阵列自身外部的大量电路,这可增加系统在半导体管芯上所需的空间量,并且增加功率消耗和制造成本。

需要一种用于模拟神经形态存储器系统的改进架构,该改进架构利用闪存存储器单元的矢量-矩阵乘法阵列,使阵列本身外部所需的电路的量最小化。

发明内容

公开了用于深度学习神经网络的模拟神经形态存储器系统的多个实施方案。模拟神经形态存储器系统包括多个矢量-矩阵乘法阵列以及由这些阵列共享的各种部件,包括高电压生成区块、验证区块和测试区块。

附图说明

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

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

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

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

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

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

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

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

图9示出了矢量乘法器矩阵的另一实施方案。

图10示出了矢量乘法器矩阵的另一实施方案。

图11示出了矢量乘法器矩阵的另一实施方案。

图12示出了矢量乘法器矩阵的另一实施方案。

图13示出了矢量乘法器矩阵的另一实施方案。

图14示出了现有技术的长短期存储器系统。

图15示出了现有技术的长短期存储器系统中的示例性单元。

图16示出了图15的长短期存储器系统中的示例性单元的具体实施。

图17示出了图15的长短期存储器系统中的示例性单元的另一个具体实施。

图18示出了现有技术的栅控递归单元系统。

图19示出了现有技术的栅控递归单元系统中的示例性单元。

图20示出了图19的栅控递归单元系统中的示例性单元的具体实施。

图21示出了图19的栅控递归单元系统中的示例性单元的另一个实施方案。

图22示出了快闪式模拟神经形态存储器共享架构系统。

图23示出了图22的快闪式模拟神经形态存储器共享架构系统内的VMM系统。

图24示出了用于图22的快闪式模拟神经形态存储器共享架构系统的输出区块。

图25示出了用于图22的快闪式模拟神经形态存储器共享架构系统的可适应神经元。

图26示出了用于图22的快闪式模拟神经形态存储器共享架构系统的激活函数电路。

图27示出了用于图25的可适应神经元的运算放大器。

图28示出了用于图22的快闪式模拟神经形态存储器共享架构系统的与矢量-矩阵乘法阵列结合使用的各种区块。

图29示出了用于图22的快闪式模拟神经形态存储器共享架构系统的编程和感测区块。

图30示出了用于图22的快闪式模拟神经形态存储器共享架构系统的参考阵列系统。

图31示出了用于图22的快闪式模拟神经形态存储器共享架构系统的解码电路。

图32示出了用于图22的快闪式模拟神经形态存储器共享架构系统的解码电路。

图33示出了用于图22的快闪式模拟神经形态存储器共享架构系统的另一可适应神经元。

图34示出了采样保持电路。

图35示出了适用于在线性区域中操作的存储器单元的阵列架构。

图36示出了用于图22的快闪式模拟神经形态存储器共享架构系统的高电压生成区块。

图37示出了用于图22的快闪式模拟神经形态存储器共享架构系统的程序偏置区块。

图38示出了用于图22的快闪式模拟神经形态存储器共享架构系统的感测放大器电路。

具体实施方式

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

数字非易失性存储器是众所周知的。例如,美国专利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上的电子经由Fowler-Nordheim隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。

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

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

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

作为其他类型的闪存存储器单元的其他分裂栅存储器单元配置是已知的。例如,图3示出了四栅极存储器单元310,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28、以及在源极区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和衬底12的端子用于执行读取、擦除和编程操作的典型电压范围:

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

具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行微调调整是理想的。

图6概念性地示出了本实施方案的利用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。

对于该示例,S0为输入层,其为具有5位精度的32×32像素RGB图像(即,三个32×32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层S0到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3×3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3×3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层C1的像素。然后将3×3滤波器在输入层S0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3×3滤波器在输入层S0的整个32×32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。

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

在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层S1处,存在16个15×15特征映射(即,十六个每个特征映射15×15像素的不同阵列)。从层S1到层C2的突触CB2利用4×4滤波器扫描S1中的映射,其中滤波器移位1个像素。在层C2处,存在22个12×12特征映射。在从层C2转到层S2之前,应用激活函数P2(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。在层S2处,存在22个6×6特征映射。将激活函数(池化)应用于从层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)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。

图9示出了神经元VMM阵列900,其特别适用于图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的闪存存储器)优选地被配置成在亚阈值区域中操作。

在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:

Ids=Io*e

其中w=e

对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的I到V对数转换器:

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

此处,wp为参考存储器单元或外围存储器单元的w。

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

Iout=wa*Io*e

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

W=e

此处,wa=存储器阵列中的每个存储器单元的w。

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

另选地,本文所述的VMM阵列的闪存存储器单元可被配置成在线性区域中操作:

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

W=α(Vgs-Vth)

字线或控制栅极或位线或源极线可以用作在输入电压的线性区域中操作的存储器单元的输入。

对于I-V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管可以用来将输入/输出电流线性转换成输入/输出电压。

美国专利申请第15/826,345号描述了图7的VMM阵列32的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。

图10示出了神经元VMM阵列1000,其特别适用于图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的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

图11示出了神经元VMM阵列1100,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1103、第一非易失性参考存储器单元的参考阵列1101和第二非易失性参考存储器单元的参考阵列1102。参考阵列1101和1102在VMM阵列1100的行方向上延伸。VMM阵列类似于VMM1000,不同的是在VMM阵列1100中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,并且输出在读取操作期间出现在源极线(SL0、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。

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

图12示出了神经元VMM阵列1200,其特别适用于图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的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。

图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中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。

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

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

图14示出了示例性LSTM1400。在该示例中,LSTM1400包括单元1401、1402、1403和1404。单元1401接收输入矢量x

图15示出了可用于图14中的单元1401、1402、1403和1404的LSTM单元1500的示例性具体实施。LSTM单元1500接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。

LSTM单元1500包括sigmoid函数设备1501、1502和1503,每个sigmoid函数设备应用0和1之间的数字来控制允许输入矢量中的每个分量的多少通过到输出矢量。LSTM单元1500还包括用于将双曲线正切函数应用于输入矢量的tanh设备1504和1505、用于将两个矢量相乘在一起的乘法器设备1506、1507和1508、以及用于将两个矢量相加在一起的加法设备1509。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。

图16示出了LSTM单元1600,其为LSTM单元1500的具体实施的示例。为了方便读者,在LSTM单元1600中使用与LSTM单元1500相同的编号。Sigmoid函数设备1501、1502和1503以及tanh设备1504各自包括多个VMM阵列1601和激活电路块区1602。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。

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)时存储值i(t)的寄存器1707,当值f(t)*c(t-1)通过多路复用器1710从乘法器设备1703输出时存储值f(t)*c(t-1)的寄存器1704,当值i(t)*u(t)通过多路复用器1710从乘法器设备1703输出时存储值i(t)*u(t)的寄存器1705,当值o(t)*c~(t)通过多路复用器1710从乘法器设备1703输出时存储值o(t)*c~(t)的寄存器1706,和多路复用器1709。

LSTM单元1600包含多组VMM阵列1601和相应的激活函数区块1602,而LSTM单元1700仅包含一组VMM阵列1701和激活函数区块1702,它们用于表示LSTM单元1700的实施方案中的多个层。LSTM单元1700将需要的空间比LSTM1600更小,因为与LSTM单元1600相比,LSTM单元1700只需要其1/4的空间用于VMM和激活函数区块。

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

模拟VMM具体实施可用于栅控递归单元(GRU)系统。GRU是递归神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。

图18示出了示例性GRU1800。该示例中的GRU1800包括单元1801、1802、1803和1804。单元1801接收输入矢量x

图19示出了可用于图18的单元1801、1802、1803和1804的GRU单元1900的示例性具体实施。GRU单元1900接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元1900包括sigmoid函数设备1901和1902,每个设备将介于0和1之间的数应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元1900还包括用于将双曲线正切函数应用于输入矢量的tanh设备1903、用于将两个矢量相乘在一起的多个乘法器设备1904、1905和1906、用于将两个矢量相加在一起的加法设备1907,以及用于从1中减去输入以生成输出的互补设备1908。

图20示出GRU单元2000,该GRU单元2000是GRU单元1900的具体实施的示例。为了方便读者,GRU单元2000中使用与GRU单元1900相同的编号。如在图20中可见,sigmoid函数设备1901和1902以及tanh设备1903各自包括多个VMM阵列2001和激活函数区块2002。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。

GRU单元2000的替代形式(以及GRU单元1900的具体实施的另一个示例)在图21中示出。在图21中,GRU单元2100利用VMM阵列2101和激活函数块2102,激活函数块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输出时保持值h(t-1)*r(t)的寄存器2106,当值h(t-1)*z(t)通过多路复用器2104从乘法器设备2103输出时保持值h(t-1)*z(t)的寄存器2107,和当值h^(t)*(1-z(t))通过多路复用器2104从乘法器设备2103输出时保持值h^(t)*(1-z(t))的寄存器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作为两个单元的平均值。

图22示出了快闪式模拟神经形态存储器共享架构系统2200,其包括VMM系统2221、2222和2223以及共享电路区块2217。VMM系统2221包括宏区块2201和2202以及输出区块2207,后者可包括求和器、模数转换器或另一种类型的函数区块,并且为宏区块2201和2202提供输出。VMM系统2222包括宏区块2203和2204以及输出区块2208,后者可包括求和器、模数转换器或另一类型的函数区块,并且为宏区块宏区块2203和2204提供输出。VMM系统2223包括宏区块2205和2206以及输出区块2209,后者可包括求和器、模数转换器或另一类型的函数区块,并且为宏区块宏区块2205和2206提供输出。如相对于图23更详细地讨论,每个宏区块(诸如宏区块2201、2202、2203、2204、2205和2206)包含一个VMM阵列。

共享电路区块2217由VMM系统2221、2222和2223使用。在该示例中,共享电路区块2217包括:

·模拟电路区块2210;

·高电压生成区块2211;

·验证区块2212;

·系统控制区块2213;

·阵列参考区块2214;以及

·感测区块2215。

模拟电路区块2210包含模拟电路,该模拟电路用于执行宏区块2201、2202、2203、2204、2205和2206在操作期间所需的某些模拟功能,以便为编程、擦除、读取和验证操作提供参考电压、时序和电流。验证操作用于确认在擦除或编程期间达到目标权重(意味着一定的浮栅电荷)。

高电压生成区块2211在各种操作(诸如编程操作和擦除操作)期间提供宏区块2201、2202、2203、2204、2205和2206所需的各种高电压。任选地,高电压生成区块2211同时(以足够的电压和电流)向宏区块2201、2202、2203、2204、2205和2206中的两个或更多个宏区块提供高电压;任选地,响应于单个命令或多个命令,编程操作可在宏区块2201、2202、2203、2204、2205和2206中的两个或更多个宏区块内同时发生;并且任选地,响应于单个命令或多个命令,擦除操作可在宏区块2201、2202、2203、2204、2205和2206中的两个或更多个宏区块内同时发生。

验证区块2212作为写入和验证操作的一部分在写入操作期间对宏区块2201、2202、2203、2204、2205和2206或其一部分执行验证操作。任选地,验证区块2212可以在宏区块2201、2202、2203、2204、2205和2206中的两个或更多个宏区块上同时执行验证操作。验证区块2212包括感测区块(诸如图29所示的编程和感测区块2900的感测部分)。

系统控制区块2213提供各种系统控制功能,诸如使用修剪区块2216对各种部件(诸如下文讨论的可调电阻器、晶体管和电流源)进行修剪,以及测试。它还提供宏/核心接口命令控制逻辑和写入算法。它还提供用于跨多个宏或内核进行部件共享的控制逻辑,

阵列参考区块2214提供用于在宏区块2201、2202、2203、2204、2205和2206内的感测或验证操作期间使用的参考存储器单元。另选地,感测或验证可使用由电阻器、MOSFET或基于带隙的偏置设备提供的参考电平。

感测区块2215在写入操作期间对宏区块2201、2202、2203、2204、2205和2206或其一部分执行感测操作。任选地,感测区块2215可在宏区块2201、2202、2203、2204、2205和2206中的两个或更多个宏区块上同时执行感测操作。感测区块2215可包括图29所示的编程和感测区块2900的感测部分。

表9示出了图22的快闪式模拟神经形态存储器共享架构系统2200的操作模式。所示表中的列指示(按从左到右的顺序)高电压生成区块2211、验证区块2212、求和器和激活电路区块2207、2208和2209、模拟电路区块2210、阵列参考区块2214以及包含在系统2200中的每个VMM系统的状态。宏模式选择用于MACRO1(其为所选择的宏区块,诸如宏区块2201、2202、2203、2204、2205或2206)。在系统模式中,如果被选择,则MACRO处于打开状态。

所示表中的行指示(按从顶部到底部的顺序):

·系统批量擦除操作,其中系统2200中所有所选择的宏中的所选择的单元被擦除);

·系统批量编程操作,其中系统2200中的所有所选宏中的所选单元被编程;每个宏(使用宏高电压补偿区块)完成编程高电压补偿,这意味着在宏电平处,例如在每个宏处本地完成补偿,Icomp=未编程位的数量*Iprog;另选地,每个系统级(使用系统级高电压补偿区块)完成高电压补偿,例如在这种情况下,具有最多未编程位的宏用于在高电压生成电路(Hvgen)处(例如在Hvgen处)进行补偿,Icomp=未编程位的数量*Iprog。

·系统读取/验证操作,其中系统2200中的所有所选宏中的所选单元被读取和验证;为了读取多个核中的多个单元的“0”(编程状态),在电流感测中使用参考“0”容限I-M0电流来检测如果所选择的单元电流之和>I-M0,则其不能读取“0”;为了读取多个核中的多个单元的“1”(编程状态),在电流感测中使用参考“1”容限k*I-M1电流来检测如果所选单元电流之和

·宏擦除操作,其中仅擦除一个宏区块,此处是标记为MACRO1的一个宏区块;可用宏扇区擦除来擦除扇区(由多行组成),或者可通过宏批量擦除来擦除整个阵列。

·宏编程操作,其中仅编程一个宏区块,此处是标记为MACRO1的一个宏区块;可用宏字元程序来编程字元(由多列中的多个单元组成),或者可用宏批量程序来编程具有多行和/或多列的所选择的批量阵列。

·宏读取/验证操作,其中仅读取和验证一个宏区块,此处是标记为MACRO1的一个宏区块;以及

·读取神经操作,其中同时读取单个宏区块中的所有单元。

图23示出了VMM系统2300(其可用于实现图22中的VMM系统2221、2222和2223)。VMM系统2300包括宏区块2320(其可用于实现图22中的宏区块2201、2202、2203、2204、2205和2206)以及激活函数区块2314和输出区块2313,后者可包括求和器、模数转换器或其他类型的函数区块,并且为VMM系统2300提供输出。

宏区块2320包括VMM阵列2301、低电压行解码器2302、高电压行解码器2303和低电压参考列解码器2304。低电压行解码器2302为读取操作和编程操作提供偏置电压,并且为高电压行解码器2303提供解码信号。高电压行解码器2303为编程操作和擦除操作提供高电压偏置信号。

宏区块2320还包括冗余阵列2305和2306。冗余阵列2305和2306提供阵列冗余以替换阵列2301中的缺陷部分。VMM系统2300还包括NVR(非易失性寄存器,又名信息扇区)扇区2307,其是用于存储用户信息、设备标识、密码、安全密钥、修剪位、配置位、制造信息等的阵列扇区。宏区块2320还包括用于提供要在感测操作中使用的参考单元的参考扇区2308;用于解码解码器2302、2303和/或2304的地址的预解码器2309;位线多路复用器2310;宏控制逻辑2311;以及宏模拟电路区块2312,每个宏模拟电路区块在宏区块或VMM阵列级(与包括所有VMM阵列的系统级相反)执行功能。

现在将描述图22和图23所示的电路区块的实施方案的示例。

图24示出了输出区块2400(其可用作图22中的输出区块2207、2208、2209和图23中的输出区块2313)。在该示例中,输出区块2400包括多个单独的求和器和激活电路区块,诸如求和器和激活区块2401。

图25示出了可适应神经元电路2500,该可适应神经元电路2500包括运算放大器,该运算放大器提供低阻抗输出,用于对多个电流信号求和并将求和的电流信号转换为电压信号,并且是图26中的求和器区块2601a、……、2601i内的每个求和器区块的实施方案。可适应神经元电路2500接收来自VMM的电流,例如VMM阵列2401(标记为I_NEU),其在这里被表示为电流源2502,该电流被提供给运算放大器2501的反相输入。运算放大器2501的非反相输入耦接到电压源(标记为VREF)。运算放大器2501的输出(标记为VO)耦接到NMOSR_NEU晶体管2503,该NMOSR_NEU晶体管响应于施加到NMOS晶体管2503的栅极的信号VCONTROL而充当有效电阻R_NEU的可变电阻器。输出电压Vo等于I_NEU*R_NEU-VREF。I_NEU的最大值取决于突触数和包含在VMM中的权重值。R_NEU为可变电阻并且可适于其所耦接的VMM大小。此外,求和运算放大器2501的功率相对于R_NEU晶体管2503的值进行调整,以使功率消耗最小化。随着R_NEU晶体管2503的值增大,运算放大器2501的偏置(即,功率)经由电流偏置IBIAS_OPA2504而减小,且反之亦然。由于基于运算放大器的求和器电路可提供低阻抗输出,因此适于被配置成驱动长互连器和较重负载。

图26示出了激活函数电路2600。激活函数电路2600可用于图22中的激活电路区块2203a、2203b、2203c、2203d、2203e和2203f以及图23中的激活电路区块2303a、2303b、2303c、2303d、2303e和2303f以及图24中的激活区块2414。

激活函数电路2600使用tanh函数将输入电压对(Vin+和Vin-)转换为电流(Iout_neu),并且其可与上述VMM阵列一起使用。激活函数电路2600包括如图所示配置的PMOS晶体管2601、2602、2603、2604、2605和2606以及NMOS晶体管2607、2608、2609和2610。晶体管2603、2604和2606用作级联晶体管。输入NMOS对2607和2608在亚阈值区域中操作以实现tanh函数。电流I_neu_max是可从附接的VMM(未示出)接收的最大神经元电流。

图27示出了可以用作图25中的运算放大器2501的运算放大器2700。运算放大器2700包括在所示配置中充当可变偏置的PMOS晶体管2701、2702和2705,NMOS晶体管2703、2704、2706和2707,以及NMOS晶体管2708。运算放大器2700的输入端子被标记为Vin+(施加到NMOS晶体管2704的栅极)和Vin-(施加到NMOS晶体管2703的栅极),并且输出为Vout。偏置电流Ibias_opa被提供至NMOS晶体管2708的漏极。

图28示出了高电压生成区块2800、控制逻辑区块2804、模拟电路区块2805和测试区块2808。

高电压生成区块2800包括电荷泵2801、电荷泵调节器2802和高电压运算放大器2803。可使用施加到电荷泵调节器2802中的NMOS晶体管的栅极的控制位TRBIT_SL来控制电荷泵调节器2802的输出的电压。控制逻辑区块2804接收控制逻辑输入并生成控制逻辑输出。模拟电路区块2805包括电流偏置发生器2806,该电流偏置发生器用于接收参考电压VREF并生成可用于生成偏置信号IBIAS的电流,该电流可例如用作图25中的IBIAS_OPA2504。模拟电路区块2805还包括电压发生器2807,该电压发生器用于接收参考电压VREF和一组修剪位TRBIT_WL,并且在各种操作期间生成施加到字线的电压。测试区块2808在测试垫MONHV_PAD上接收信号,并且输出各种信号以供设计者在测试期间监测。

图29示出了编程和感测区块2900,其可在编程和验证操作期间使用并且可耦接到一个或多个VMM系统。编程和感测区块2900包括多个单独的编程和感测电路区块2901a、2901b、……、2901j所示,其中每一个编程和感测电路区块可读取所选存储器单元中的“0”或“1”。控制器或控制逻辑2910可以根据需要在每个周期期间激活适当的编程和感测电路区块2901a、2901b、……、2901j。

图30示出了参考系统3000,其可以用来代替图23中的参考扇区2308。参考系统3000包括参考阵列3002、低压行解码器3001、高压行解码器3003和低压参考列解码器3004。低电压行解码器3001为读取操作和编程操作提供偏置电压,并且为高电压行解码器3003提供解码信号。高电压行解码器3003为编程操作和擦除操作提供高电压偏置信号。

图31示出了VMM高电压解码电路,该VMM高电压解码电路包括适于与图2所示的类型的存储器单元一起使用的字线解码器电路3101、源极线解码器电路3104和高电压电平移位器3108。

字线解码器电路3101包括如图所示的那样配置的PMOS选择晶体管3102(由信号HVO_B控制)和NMOS取消选择晶体管3103(由信号HVO_B控制)。

源极线解码器电路3104包括如图所示的那样配置的NMOS监测晶体管3105(由信号HVO控制)、驱动晶体管3106(由信号HVO控制)和取消选择晶体管3107(由信号HVO_B控制)。

高电压电平移位器3108接收启用信号EN并且输出高电压信号HV及其互补信号HVO_B。

图32示出了VMM高电压解码电路,该VMM高电压解码电路包括适于与图3所示的类型的存储器单元一起使用的擦除栅解码器电路3201、控制栅解码器电路3204、源极线解码器电路3207和高电压电平移位器3211。

擦除栅解码器电路3201和控制栅解码器电路3204使用与图31中的字线解码器电路3101相同的设计。

源极线解码器电路3207使用与图31中的源极线解码器电路3104相同的设计。

高电压电平移位器3211使用与图31中的高电压电平移位器3108相同的设计。

图33示出了将输出神经元电流转换成电压的可适应神经元电路3300。可适应神经元电路3300仅使用一个PMOS晶体管3301,并且基本上被配置成使用开关3302、3303和3304来镜像自身(即,采样和保持镜像)。最初,开关3302和开关3303闭合,开关3304打开,此时PMOS晶体管3301耦接到I_NEURON,I_NEURON是表示来自VMM的电流的电流源3305。然后,开关3302和3303打开并且开关3304闭合,这使得PMOS晶体管3301将电流I_NEURON从其漏极发送到可变电阻器3306。因此,可适应神经元3300将电流信号(I_NEURON)转换为电压信号(VO)。基本上,晶体管3301对电流I_NEURON进行采样,并且通过将采样的栅极-源极电压存储在其栅极上来保持该电流。运算放大器电路可用于缓冲输出电压VO以驱动可配置互连器。

图34示出了电流采样和保持S/H电路3400以及电压采样和保持S/H电路3450。电流S/H电路3400包括采样开关3402和3403、S/H电容器3405、输入晶体管3404和输出晶体管3406。输入晶体管3404用于将输入电流3401转换为S/H电容器3405上的S/H电压并且耦接到输出晶体管3406的栅极。电压S/H电路3450包括采样开关3452、S/H电容器3453和运算放大器3454。运算放大器3454用于缓冲电容器3453上的S/H电压。S/H电路3400和3450可与本文所述的输出求和器电路和/或激活电路一起使用。在另选的实施方案中,可使用数字采样和保持电路代替模拟采样和保持电路3400和3450。

图35示出了适用于在线性区域中操作的存储器单元的阵列架构。系统3500包括存储器单元的输入区块3501、输出区块3502和阵列3503。输入区块3501耦接到阵列3503中的存储器单元的漏极(源极线),并且输出区块3502耦接到阵列3503中的存储器单元的位线。另选地,输入区块3501耦接到阵列3503中的存储器单元的字线,并且输出区块3502耦接到阵列3503中的存储器单元的位线。

在系统3500用于实现LSTM或GRU的情况下,输出区块3502和/或输入区块3501可根据需要包括用于LSTM/GRU架构的乘法器区块、加法区块、减法(输出=1-输入)区块,并且任选地可根据需要包括模拟采样保持电路(诸如图34中的电路3400或3450)或数字采样保持电路(例如,寄存器或SRAM)。

图36示出了高电压生成区块3600,该高电压生成区块3600是图22中的高电压生成区块2211的示例。高电压生成区块3600包括电荷泵3601、电荷泵调节器3603和高电压运算放大器3602。可基于发送到电荷泵调节器3603中的mux MOS晶体管的栅极的信号来控制电荷泵调节器3603的输出的电压。

图37示出了编程偏置电路3700,该编程偏置电路3700向各个编程电路3702-0、……、3702-N的栅极提供偏置,每个编程电路在编程操作期间向耦接到所选位线的存储器单元提供编程电流。

图38示出了感测放大器3800,该感测放大器3800可以用于编程和验证操作的验证方面。在所示配置中,读出放大器3800包括可调整电流参考源3801、开关3802、NMOS晶体管3803、电容器3804、开关3805、电流源3806和反相器3807。感测放大器3800在存储器单元3808的验证操作期间耦接到存储器单元3808。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号