CN114651307B 用于人工神经网络中的模拟神经存储器的精确编程方法和装置(硅存储技术股份有限公司)_第1页
CN114651307B 用于人工神经网络中的模拟神经存储器的精确编程方法和装置(硅存储技术股份有限公司)_第2页
CN114651307B 用于人工神经网络中的模拟神经存储器的精确编程方法和装置(硅存储技术股份有限公司)_第3页
CN114651307B 用于人工神经网络中的模拟神经存储器的精确编程方法和装置(硅存储技术股份有限公司)_第4页
CN114651307B 用于人工神经网络中的模拟神经存储器的精确编程方法和装置(硅存储技术股份有限公司)_第5页
已阅读5页,还剩167页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局(12)发明专利(65)同一申请的已公布的文献号申请公布号CN114651307A(43)申请公布日2022.06.21(30)优先权数据(85)PCT国际申请进入国家阶段日PCT/US2020/0343262020(87)PCT国际申请的公布数据WO2021/096563EN2(73)专利权人硅存储技术股份有限公司地址美国加利福尼亚州(74)专利代理机构上海专利商标事务所有限公司31100专利代理师蔡悦US2019164617A1,2019.0审查员许金明(54)发明名称用于人工神经网络中的模拟神经存储器的精确编程方法和装置本发明公开了用于将正确的电荷量精确快速地沉积在人工神经网络中的矢量-矩阵乘法(VMM)阵列内的非易失性存储器单元的浮栅上的精确编程算法和装置的多个实施方案。因此,可极精确地对所选单元进行编程,以保持开始自适应校准方法。开始自适应校准方法。是21.一种对所选择的非易失性存储器单元进行编程以存储N个可能值中的一个可能值的方法,其中N是大于2的整数,所述所选择的非易失性存储器单元包括浮栅、控制栅端子、擦除栅端子和源极线端子,所述方法包括:执行包括多个编程验证循环的第一编程过程,其中在所述第一编程验证循环之后在每个编程验证循环中将幅值递增的编程电压施加到所述所选择的非易失性存储器单元的端将第一电压施加到所述所选择的非易失性存储器单元的所述擦除栅端子和所述控制栅端子中的一者;测量通过所述所选择的非易失性存储器单元产生的第一电流;将第二电压施加到所述所选择的非易失性存储器单元的所述擦除栅端子和所述控制栅端子中的所述一者;测量通过所述所选择的非易失性存储器单元产生的第二电流;基于所述第一电压、所述第二电压、所述第一电流和所述第二电流确定斜率值;以及基于所确定的斜率值来确定所述幅值递增的编程电压中的下一编程电压以用于下一编程验证循环。2.根据权利要求1所述的方法,其中每个编程验证循环包括验证在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。3.根据权利要求1所述的方法,还包括:使用所述下一编程电压编程所述所选择的非易失性存储器单元。4.根据权利要求3所述的方法,还包括:重复确定下一编程电压和使用所述下一编程电压编程所述非易失性存储器单元的步骤,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。当在所述读取或验证操作期间通过所述所选择的非易失性存储器单元的所述电流小于或等于所述第一阈值电流值时,执行第二编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第二阈值电流值。6.根据权利要求1所述的方法,还包括:执行第三编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第四阈值电流值。7.根据权利要求5所述的方法,其中所述第二编程过程包括将幅值递增的电压脉冲施加到所述所选择的非易失性存储器单元的所述控制栅。8.根据权利要求7所述的方法,其中所述第二编程过程还包括将幅值递增的电压脉冲施加到所述所选择的非易失性存储器单元的所述擦除栅。9.根据权利要求1所述的方法,其中所述所选择的非易失性存储器单元是分裂栅闪存存储器单元。10.根据权利要求1所述的方法,其中所述所选择的非易失性存储器单元在模拟神经网络中的矢量-矩阵乘法阵列中。11.一种对所选择的非易失性存储器单元进行编程以存储N个可能值中的一个可能值3的方法,其中N是大于2的整数,所述所选择的非易失性存储器单元包括浮栅、控制栅端子、擦除栅端子和源极线端子,所述方法包括:执行包括多个编程验证循环的第一编程过程,其中在所述第一编程过程期间,将幅值递增的第一编程电压施加到所述所选择的非易失性存储器单元的所述控制栅并且将幅值递减的第二编程电压施加到所述所选择的非易失性存储器单元的所述擦除栅,其中每个编程验证循环包括:将第一电压施加到所述所选择的非易失性存储器单元的所述擦除栅和所述控制栅中测量通过所述所选择的非易失性存储器单元产生的第一电流;将第二电压施加到所述所选择的非易失性存储器单元的所述擦除栅和所述控制栅中的所述一者;测量通过所述所选择的非易失性存储器单元产生的第二电流;基于所述第一电压、所述第二电压、所述第一电流和所述第二电流确定斜率值;基于所述斜率值分别确定所述幅值递增的编程电压和所述幅值递减的编程电压中的下一编程电压;使用所述下一编程电压编程所述非易失性存储器单元;重复确定下一编程电压和使用所述下一编程电压编程所述非易失性存储器单元的步骤,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。12.根据权利要求11所述的方法,其中每个编程验证循环包括验证在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。13.根据权利要求11所述的方法,还包括:执行第二编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第二阈值电流值。14.根据权利要求11所述的方法,其中执行第一编程过程还包括:当通过所述所选择的非易失性存储器单元的电流小于或等于第三阈值电流值时,擦除所述所选择的非易失性存储器单元并重复所述第一编程过程。15.根据权利要求13所述的方法,还包括:执行第三编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第四阈值电流值。16.一种对所选择的非易失性存储器单元进行编程以存储N个可能值中的一个可能值的方法,其中N是大于2的整数,所述所选择的非易失性存储器单元包括浮栅、控制栅、擦除执行包括多个编程验证循环的第一编程过程,其中在所述第一编程过程中,将幅值递增的第一编程电压施加到所述所选择的非易失性存储器单元的所述擦除栅并且将幅值递减的第二编程电压施加到所述所选择的非易失性存储器单元的所述控制栅,其中每个编程验证循环包括:将第一电压施加到所述所选择的非易失性存储器单元的所述擦除栅和所述控制栅中的一者;4测量通过所述所选择的非易失性存储器单元产生的第一电流;将第二电压施加到所述所选择的非易失性存储器单元的所述擦除栅和所述控制栅中的所述一者;测量通过所述所选择的非易失性存储器单元产生的第二电流;基于所述第一电压、所述第二电压、所述第一电流和所述第二电流确定斜率值;基于所述斜率值分别确定所述幅值递增的编程电压和所述幅值递减的编程电压中的下一编程电压;使用所述下一编程电压编程所述非易失性存储器单元;重复确定下一编程电压和使用所述下一编程电压编程所述非易失性存储器单元的步骤,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。17.根据权利要求16所述的方法,其中每个编程验证循环包括验证在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第一阈值电流值。18.根据权利要求16所述的方法,还包括:执行第二编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第二阈值电流值。19.根据权利要求16所述的方法,其中执行第一编程过程的步骤还包括:当通过所述所选择的非易失性存储器单元的电流小于或等于第三阈值电流值时,擦除所述所选择的非易失性存储器单元并重复所述第一编程过程。20.根据权利要求18所述的方法,还包括:执行第三编程过程,直到在读取或验证操作期间通过所述所选择的非易失性存储器单元的电流小于或等于第四阈值电流值。5[0001]优先权声明[0002]本申请要求于2019年11月11日提交的名称为“PRECISEPROGRAMMINGMETHODANDNETWORK”的美国临时申请号62/933,809和于2020年1月23日提交的名称为“PRECISEPROGRAMMINGMETHODANDAPPARATUSFORANALOGNEURALMEMORYINADEEPARTIFICIALNEURALNETWORK”的美国专利申请号16/751,202的优先权。技术领域[0003]本发明公开了用于将正确的电荷量精确快速地沉积在人工神经网络中的矢量-矩阵乘法(VMM)阵列内的非易失性存储器单元的浮栅上的精确编程算法和装置的多个实施方背景技术[0004]人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息[0005]图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得人工神经网络适应于输入并且能够学习。通常,人工神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。[0006]在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际人工神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。[0007]申请人先前在美国专利申请号15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。如本文所用的术语“神经形态”是指实现神经系统模型的电路。模拟神经形态存储器包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在6沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。以这种方式布置的存储器单元阵列可被称为矢量矩阵乘法(VMM)阵列。[0008]必须擦除和编程在模拟神经形态存储器阵列中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。模拟神经形态存储器系统中的一个挑战是能够以不同N值所需的精度和粒度来编程所选单元。[0009]需要适于与模拟神经形态存储器中的VMM阵列一起使用的改进的编程系统和方发明内容[0010]本发明公开了用于将正确的电荷量精确快速地沉积在模拟神经形态存储器中的矢量-矩阵乘法(VMM)阵列内的非易失性存储器单元的浮栅上的精确编程算法和装置的多个实施方案。因此,可极精确地对所选单元进行编程,以保持N个不同值中的一个值。附图说明[0011]图1为示出现有技术的人工神经网络的示意图。[0012]图2示出现有技术分裂栅闪存存储器单元。[0013]图3示出另一现有技术的分裂栅闪存存储器单元。[0014]图4示出另一现有技术的分裂栅闪存存储器单元。[0015]图5示出另一现有技术的分裂栅闪存存储器单元。[0016]图6示出另一现有技术的分裂栅闪存存储器单元。[0017]图7示出现有技术的堆叠栅闪存存储器单元。[0018]图8为示出使用一个或多个非易失性存储器阵列的示例性人工神经网络的不同层级的示意图。[0019]图9为示出矢量-矩阵乘法系统的框图。[0020]图10为示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。[0021]图11示出矢量-矩阵乘法系统的另一实施方案。[0022]图12示出矢量-矩阵乘法系统的另一实施方案。[0023]图13示出矢量-矩阵乘法系统的另一实施方案。[0024]图14示出矢量-矩阵乘法系统的另一实施方案。[0025]图15示出矢量-矩阵乘法系统的另一实施方案。[0026]图16示出矢量-矩阵乘法系统的另一实施方案。[0027]图17示出矢量-矩阵乘法系统的另一实施方案。[0028]图18示出矢量-矩阵乘法系统的另一实施方案。[0029]图19示出矢量-矩阵乘法系统的另一实施方案。[0030]图20示出矢量-矩阵乘法系统的另一实施方案。7[0031]图21示出矢量-矩阵乘法系统的另一实施方案。[0032]图22示出矢量-矩阵乘法系统的另一实施方案。[0033]图23示出矢量-矩阵乘法系统的另一实施方案。[0034]图24示出矢量-矩阵乘法系统的另一实施方案。[0035]图25示出现有技术的长短期存储器系统。[0036]图26示出在长短期存储器系统中使用的示例性单元。[0037]图27示出图26的示例性单元的一个实施方案。[0038]图28示出图26的示例性单元的另一实施方案。[0039]图29示出现有技术的栅控递归单元系统。[0040]图30示出在栅控递归单元系统中使用的示例性单元。[0041]图31示出图30的示例性单元的一个实施方案。[0042]图32示出图30的示例性单元的另一实施方案。[0043]图33A示出对非易失性存储器单元进行编程的方法的实施方案。[0044]图33B示出对非易失性存储器单元进行编程的方法的另一实施方案。[0045]图34示出粗略编程方法的一个实施方案。[0046]图35示出在非易失性存储器单元的编程中使用的示例性脉冲。[0047]图36A示出在非易失性存储器单元的编程中使用的示例性脉冲。[0048]图36B示出在非易失性存储器单元的编程中使用的示例性互补递增和递减脉冲。[0049]图37示出用于编程非易失性存储器单元的校准算法,该校准算法基于该单元的斜率特征来调整编程参数。[0050]图38示出在图37的校准算法中使用的电路。[0051]图39示出用于编程非易失性存储器单元的校准算法。[0052]图40示出用于编程非易失性存储器单元的校准算法。[0053]图41示出在图41的校准算法中使用的电路。累进。[0055]图43示出在编程操作期间施加到非易失性存储器单元的控制栅的电压的示例性累进。[0056]图44示出用于在矢量-乘法矩阵系统内的非易失性存储器单元的编程期间施加编程电压的系统。[0057]图45示出矢量-矩阵乘法系统,该矢量-矩阵乘法系统具有包括调制器、模数转换器和求和器的输出模块。[0058]图46示出电荷求和器电路。[0059]图47示出电流求和器电路。[0060]图48示出数字求和器电路。[0061]图49A示出用于神经元输出的积分型模数转换器的一个实施方案。[0062]图49B示出示出图49A的积分型模数转换器的电压输出随时间变化的曲线图。[0063]图49C示出用于神经元输出的积分型模数转换器的另一实施方案。[0064]图49D示出示出图49C的积分型模数转换器的电压输出随时间变化的曲线图。8[0065]图49E示出用于神经元输出的积分型模数转换器的另一实施方案。[0066]图49F示出用于神经元输出的积分型模数转换器的另一实施方案。[0067]图50A和图50B示出神经元输出的逐次逼近型模数转换器。[0068]图51示出∑-△型模数转换器的一个实施方案。[0069]图52A、图52B和图52C示出斜坡型模数转换器的实施方案。[0070]图53示出算法型模数转换器的一个实施方案。[0071]图54示出逻辑多位单元。[0072]图55示出编程图54的逻辑多位单元的方法。具体实施方式[0073]本发明的人工神经网络利用CMOS技术和非易失性存储器阵列的组合。[0074]非易失性存储器单元[0075]数字非易失性存储器是众所周知的。例如引用方式并入本文,公开了分裂栅非易失性存储器单元的阵列,它是一种闪存存储器单元。此类存储器单元210在图2中示出。每个存储器单元210包括形成于半导体衬底12中的源极区14和漏极区16,其间具有沟道区18.浮栅20形成在沟道区18的第一部分上方并且与其绝缘(并控制其电导率),并且形成在源极区14的一部分上方。字线端子22(其通常被耦接到字线)具有设置在沟道区18的第二部分上方并且与该沟道区的第二部分绝缘(并且控制其电导率)的第一部分,以及向上延伸并且位于浮栅20上方的第二部分。浮栅20和字线端子22通过栅极氧化物与衬底12绝缘。位线端子24耦接到漏极区16。[0076]通过将高的正电压置于字线端子22上来对存储器单元210进行擦除(其中电子从浮栅去除),这导致浮栅20上的电子经由Fowler-Nordheim隧穿从浮栅20到字线端子22隧穿通过中间绝缘体。[0077]通过将正的电压置于字线端子22上以及将正的电压置于源极区14上来编程存储器单元210(其中电子被置于浮栅上)。电子电流将从源极区14(源极线端子)流向漏极区16。当电子到达字线端子22和浮栅20之间的间隙时,电子将加速并且变热。由于来自浮栅20的静电引力,一些加热的电子将通过栅极氧化物被注入到浮栅20上。[0078]通过将正的读取电压置于漏极区16和字线端子22(其接通沟道区18的在字线端子下方的部分)上来读取存储器单元210.如果浮栅20带正电(即,电子被擦除),则沟道区18的在浮栅20下方的部分也被接通,并且电流将流过沟道区18,该沟道区被感测为擦除状态或“1”状态。如果浮栅20带负电(即,通过电子进行了编程),则沟道区的在浮栅20下方的部分被大部分或完全关断,并且电流将不会(或者有很少的电流)流过沟道区18,该沟道区被感[0079]表1示出可施加到存储器单元110的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:[0080]表1:图2的闪存存储器单元210的操作读取1读取22-0.1V9约11-13V[0082]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。[0083]图3示出了存储器单元310,其与图2的存储器单元210类似,但增加了控制栅(CG)端子28。控制栅端子28在编程中被偏置在高电压处(例如,10V),在擦除中被偏置在低电压或负电压处(例如,0v/-8V),在读取中被偏置在低电压或中等电压处(例如,0v/2.5V)。其他端子类似于图2那样偏置。[0084]图4示出了四栅极存储器单元410,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。[0085]表2示出可施加到存储器单元410的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:[0086]表2:图4的闪存存储器单元410的操作读取1读取22-0.1V擦除编程[0088]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。[0089]图5示出了存储器单元510,除了不含擦除栅EG端子,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅CG端子28偏置到低电压或负电压来执行擦除。另选地,通过将字线端子22偏置到正电压并将控制栅端子28偏置到负电压来执行擦除。编程和读取类似于图4的那样。[0090]图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,除了存储器单元610没有单独的控制栅端子。除了没有施加控制栅偏置,擦除操作(通过使用擦除栅端子进行擦除)和读取操作类似于图4的操作。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线端子上施加更高的电压,以补偿控制栅偏置的缺乏。[0091]表3示出可施加到存储器单元610的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:[0092]表3:图6的闪存存储器单元610的操作读取1读取22-0.1V极线端子上输出的读取模式。[0095]图7示出堆叠栅存储器单元710,其为另一种类型的闪存存储器单元。存储器单元710与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅端子22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。[0096]表4示出可以施加到存储器单元710和衬底12的端子用于执行读取、擦除和编程操作的典型电压范围:[0097]表4:图7的闪存存储器单元710的操作衬底读取12-0.1V擦除编程[0099]“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源和列的阵列中,源极线可耦接到一行存储器单元或相邻的两行存储器单元。即,源极线端子可由相邻行的存储器单元共享。[0100]为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。[0101]具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行微调调整是理想的。[0102]本文所述的方法和装置可应用于其他非易失性存储器技术,诸如但不限于SONOS法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于SRAM、DRAM和/或易失性突触单元。[0103]采用非易失性存储器单元阵列的神经网络[0104]图8概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性11示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。[0105]对于该示例,S0为输入层,其为具有5位精度的32x32像素RGB图像(即,三个32x32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层SO到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3x3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3x3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层C1的像素。然后将3x3滤波器在输入层SO内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3x3滤波器在输入层SO的整个32x32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。[0107]在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用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个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。[0108]使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。[0109]图9为可用于该目的的系统的框图。矢量-矩阵乘法(VMM)系统32包括非易失性存码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对VMM阵列33的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对VMM阵列33的输出进行解码。另选33有效地将输入与存储在VMM阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,VMM阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算也是高功效的。[0111]将VMM阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对VMM阵列33的输出进行求和,以为该用于执行正权重输入和负权重输入两者的求和,以输出单个值。[0112]然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层C1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,VMM阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器PAC来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供DAC以将数字位转换至合适的输入模拟电输出模拟电平转换成数字位)。的框图。如图10所示,通过数模转换器31将输入(表示为Inputx)从数字转换为模拟,并将其使用将输入Inputx映射到输入VMM系统32a的矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换也可由模拟至模拟(A/A)转换器完成,以将外部模拟输入转换成到输入VMM系统32a的映射模拟输入。输入转换也可由数字至数字脉冲(D/P)转换器完成,以将外部数字输入转换成到输入VMM系统32a的映射的一个或多个数字脉冲。供,该输入继而生成作为下一VMM系统(隐藏级别2)32c的输入而提供的输出,以此类推。VMM系统32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM系统32a、32b、32c、32d和32e可以是包括相应非易失性存储器阵列的独立物理系统、或者多个VMM系统可利用相同物理非易失性存储器阵列的不同部分、或者多个VMM系统可利用相同物理非易失的不同部分进行时分复用。图10所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个完全连接的层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。[0117]图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1101和非易失性参考存储器单元的参考阵列1102(在阵列的顶[0118]在VMM阵列1100中,控制栅线(诸如控制栅线1103)在竖直方向上延伸(因此参考阵列1102在行方向上与控制栅线1103正交),并且擦除栅线(诸如擦除栅线1104)在水平方向1100的输出出现在源极线(SLO,SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SLO、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。[0119]如本文针对神经网络所述,VMM阵列1100的非易失性的闪存存储器)优选地被配置成在亚阈值区域中操作。[0120]在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:[0123]其中Ids为漏极到源极电流;Vg为存储器单元上的栅极电压;Vth是存储器单元的阈值电压;Vt是热电压=k*T/q,其中k是玻尔兹曼常数,T是以开尔文为单位的温度,并且q是电子电荷;n是斜率因子=1+(Cdep/Cox),其中Cdep=耗尽层的电容,并且Cox是栅极氧化物层的电容;Io是等于阈值电压的栅极电压下的存储器单元电流,Io与(Wt/L)*u*Cox*(n-1)*Vt²成比例,其中u是载流子迁移率,并且Wt和L分别是存储器单元的宽度和长度。[0124]对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入[0126]此处,wp为参考存储器单元[0127]对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入[0129]此处,wp为参考存储器单元或外围存储器单元的w。[0131]Iout=wa*Io*e(Vg)/[0135]此处,wa=存储器阵列中的每个存储器单元的w。[0136]字线或控制栅可用作输入电压的存储器单元的输入。[0137]另选地,本文所述的VMM阵列的非易失性存储器单元可被配置成在线性区域中操[0138]Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L,[0140]意指线性区域中的权重W与(Vgs-Vth)成比例[0141]字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。[0142]对于I到V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管或电阻器可以用来将输入/输出电流线性转换成输入/输出电压。[0144]Ids=1/2*β*(Vgs-Vth)²;β[0145]Wa(Vgs-Vth)²,意指权重W与(Vgs-Vth)²成比例[0146]字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。[0147]另选地,本文所述的VMM阵列的存储器单元可用于所有区域或其组合(亚阈值、线性或饱和区域)。[0148]美国专利申请第15/826,345号中描述了图9的VMM阵列33的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。[0149]图12示出神经元VMM阵列1200,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。沿阵列的列方向布置的参考阵列1201和1202用于将流入端子BLRO、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL考存储器单元和第二非易失性参考存储器单元通过多路复用器1214(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。[0150]存储器阵列1203用于两个目的。首先,它将VMM阵列1200将使用的权重存储在其相BLR3中提供的电流输入,参考阵列1201和1202将它们转换成输入电压以提供给字线WL0、WL1、WL2和WL3)乘以存储在存储器阵列1203中的权重,然后将所有结果(存储器单元电流)相加以在相应的位线(BLO-BLN)上产生输出,该输出将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列1203消除了对单独的乘法逻辑电路和加法逻辑电路的读取(推断)操作期间出现在相应位线(BL0-BLN)上。置于位线BL0-BLN中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。[0151]表5示出用于VMM阵列1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线编程操作。[0152]表5:图12的VMM阵列1200的操作约5-13VVinh约2.5V元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。参考阵列1301和1302在VMM阵列1300的行方向上延上,并且输出在读取操作期间出现在源极线(SLO、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。[0155]表6示出用于VMM阵列1300的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。[0156]表6:图13的VMM阵列1300的操作约0.3-1V(Ineuron)SL-禁止(约4-8V)Vinh约2.5V[0158]图14示出神经元VMM阵列1400,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1400包括非易失性存储器单元的存储器阵列1403、第一非易失性参考存储器单元的参考阵列1401和第二非易失性参考存储器单元的参考阵列1402。参考阵列1401和1402用于将流入端子BLRO、BLR1、考存储器单元和第二非易失性参考存储器单元通过多路复用器1412(仅部分示出)二极管应的多路复用器1405和共源共栅晶体管1404,以确保在读取操作期间第一非易失性参考存储器单元和第二非易失性参考存储器单元中的每一者的位线(诸如BLRO)上的恒定电压。将参考单元调谐至目标参考电平。在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。[0160]VMM阵列1400为存储器阵列1403中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。这可例如使用下文所述的精确编程技术来执行。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅(诸如EGO或EG1)的两行需要一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。[0161]表7示出用于VMM阵列1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。[0162]表7:图14的VMM阵列1400的操作选相同扇区选[0164]图15示出神经元VMM阵列1500,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1500包括非易失性存储器单元的存储器阵列1503、第一非易失性参考存储器单元的参考阵列1501和第二非易同的是VMM阵列1500实现双向调谐,其中每个单独的单元可以根据需要被完全擦除、部分编程和部分擦除,以由于使用单独的EG线而在浮栅上达到期望的电荷量。如图所示,参考阵列元的动作)。电流输出(神经元)在位线BL0-BLN中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。[0165]表8示出用于VMM阵列1500的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。[0166]表8:图15的VMM阵列1500的操作选相同扇区[0168]图16示出神经元VMM阵列1600,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列1600中,输入[0169]图17示出神经元VMM阵列1700,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT₀、[0170]图18示出神经元VMM阵列1800,该神经元VMM阵列特别适用于图2所示的存储器单[0171]图19示出神经元VMM阵列1900,该神经元VMM阵列特别适用于图3所示的存储器单[0172]图20示出神经元VMM阵列2000,该神经元VMM阵列特别适用于图4所示的存储器单源极线SL₀和SL₁上生成。[0173]图21示出神经元VMM阵列2100,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT₀至INPUT分别在位线控制栅极2901-1、2901-2至2901-(N-1)和2901-N的栅极上被接收,这些[0174]图22示出神经元VMM阵列2200,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT₀,…,INPUT₁在字线WL₀,…,WLM上被接[0175]图23示出神经元VMM阵列2300,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT。至INPUT在控制栅线CG₀至CG上被接到列i中的所有存储器单元的源极线。[0176]图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT。至INPUT在控制栅线CG₀至CG上被接i中的所有存储器单元的位线。[0178]现有技术包括被称为长短期存储器(LSTM)的概念。LSTM通常用于人工神经网络。LSTM允许人工神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM包括单元、输入栅、输出栅和忘记栅。三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔。VMM在LSTM中特别有用。2504。单元2501接收输入矢量x₀并生成输出矢量h₀和单元状态矢量c₀单元2502接收输入矢量x₁、来自单元2501的输出矢量(隐藏状态)h₀和来自单元2501的单元状态c₀,并生成输出矢量h₁和单元状态矢量c₁。单元2503接收输入矢量x₂、来自单元2502的输出矢量(隐藏状态)h₁和来自单元2502的单元状态c₁,并生成输出矢量h₂和单元状态矢量c₂单元2504接收输入矢量x₃、来自单元2503的输出矢量(隐藏状态)h₂和来自单元2503的单元状态c₂,并生成输出矢量h₃。可以使用另外的单元,并且具有四个单元的LSTM仅仅是示例。[0180]图26示出可用于图25中的单元2501、2502、2503和2504的LSTM单元2600的示例性具体实施。LSTM单元2600接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。[0181]LSTM单元2600包括sigmoid函数设备2601、2602和2603,每个sigmoid函数设备应用0至1之间的数字来控制允许输入矢量中的每个分量通过到输出矢量的数量。LSTM单元2600还包括用于将双曲线正切函数应用于输入矢量的tanh设备2604和2605、用于将两个矢量相乘在一起的乘法器设备2606、2607和2608以及用于将两个矢量相加在一起的加法设备2609。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问[0182]图27示出LSTM单元2700,该LSTM单元为LST2603以及tanh设备2604各自包括多个VMM阵列2701和激活电路区块2702.因此,可以看出,[0183]LSTM单元2700的另选形式(以及LSTM单元2600的具体实施的另一示例)在图28中示出。在图28中,sigmoid函数设备2601、2602和2603以及tanh设备2604以时分复用方式共享相同的物理硬件(VMM阵列2801和激活函数块2802)。LSTM单元2800还包括将两个矢量相乘在一起的乘法器设备2803,将两个矢量相加在一起的加法设备2808,tanh设备2605(其包括激活电路区块2802),当从sigmoid函数块2802输出值i(t)时存储值i(t)的寄存器2807,当值f(t)*c(t-1)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2804,当值i(t)*u(t)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2805,当值o(t)*c~(t)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2806,和多路复用器2809。[0184]LSTM单元2700包含多组VMM阵列2701和相应的激活函数块2702,而LSTM单元2800仅包含一组VMM阵列2801和激活函数块2802,它们用于表示LSTM单元2800的实施方案中的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效[0186]栅控递归单元[0187]模拟VMM具体实施可用于GRU(栅控递归单元)。GRU是递归人工神经网络中的栅控[0188]图29示出了示例性GRU2900。该示例中的GRU2900包括单元2901、2902、2903和2904。单元2901接收输入矢量x₀并生成输出矢量h。。单元2902接收输入矢量x₁、来自单元2901的输出矢量h₀并生成输出矢量h₁。单元2903接收输入矢量x₂和来自单元2902的输出矢量(隐藏状态)h,并生成输出矢量h₂单元2904接收输入矢量x₃和来自单元2903的输出矢量(隐藏状态)h₂并生成输出矢量h₃。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。[0189]图30示出可用于图29的单元2901、2902、2903和2904的GRU单元3000的示例性具体实施。GRU单元3000接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元3000包括sigmoid函数设备3001和3002,这些设备中的每个设备将介于0和1之间的数应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元3000还包括用于将双曲线正切函数应用于输入矢量的tanh设备3003、用于将两个矢量相乘在一起的多个乘法器设备3004、3005和3006、用于将两个矢量相加在一起的加法设备3007,以及用于从1中减去输入以生成输出的互补设备3008。[0190]图31示出GRU单元3100,该GRU单元为G阵列在某些神经网络系统中使用的GRU单元中特别有用。[0191]GRU单元3100的另选形式(以及GRU单元3000的具体实施的另一示例)在图32中示sigmoid函数时,应用0与1之间的数字来控制允许输入矢量中的每个分量有多少通过到输出矢量。在图32中,sigmoid函数设备3001和3002以及tanh设备3003以时分复用方式共享相同的物理硬件(VMM阵列3201和激活函数块3202)。GRU单元3200还包括将两个矢量相乘在一起的乘法器设备3203,将两个矢量相加在一起的加法设备3205,从1减去输入以生成输出的互补设备3209,多路复用器3204,当值h(t-1)*r(t)通过多路复用器3204从乘法器设备3203输出时保持该值的寄存器3206,当值h(t-1)*z(t)通过多路复用器3204从乘法器设备3203输出时保持该值的寄存器3207,和当值h^(t)*(1-z(t))通过多路复用器3204从乘法器设备3203输出时保持该值的寄存器3208。[0192]GRU单元3100包含多组VMM阵列3101和激活函数块3102,而GRU单元3200仅包含一其1/3的空间用于VMM和激活函数块。VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要度上是低效的。因此,下文所述的实施方案试图最小化VMM阵列本身之外所需的电路。流或电压转换成数字位)。[0195]对于VMM阵列中的每个存储器单元,每个权重w可由单个存储器或由两个混合存储器单元(2个或更多个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重w作为差分权重(w=w+-w-)。在两个混合存储器单元中,需要两个存储器单元来实现权重w作为两个单元的平均值。[0196]用于对VMM中的单元进行精确编程的实施方案[0197]现在将描述用于通过递增或递减施加到存储器单元的不同端子的编程电压来精[0198]图33A示出编程方法3300。首先,该方法开始(步骤3301),这通常响应于接收到编软擦除操作将所有单元擦除到中间弱擦除电平,使得每个单元在读取操作期间将消耗例如大约3μA-5μA的电流(步骤3303)。这与深度擦除最大电平形成对比,在深度擦除最大电平中每个单元在读取操作期间将消耗大约约20μA-30μA的电流。例如,通过施加递增擦除电压脉冲直至达到中间单元电流来完成软擦除。执行递增擦除电压脉冲以限制硬擦除(即,最大擦除电平)对存储器单元造成的劣化。然后,对所有未选择的单元执行硬编程到非常深的编程状态,以将电子添加到单元的浮栅(步骤3304),以确保那些单元真正“关断”,这意味着那些单元将在读取操作期间消耗可忽略不计的电流量,例如未使用的存储器单元。硬编程例如以更高的递增编程电压脉冲和/或更长的编程时间来执行。[0199]然后对所选择的单元执行粗略编程方法(以使单元更接近目标,例如,目标的2倍-100倍)(步骤3305),之后对所选择的单元执行精密编程方法(步骤3306)以对每个所选择的单元所需的精确值进行编程。[0200]图33B示出与编程方法3300类似的另一种编程方法3310。然而,并非如图33A的步骤3302中那样将所有单元编程到“0”状态的编程操作,而是在该方法开始(步骤3301)之后,使用软擦除操作将所有单元擦除到“1”状态(步骤3312)。然后使用软编程操作(步骤3313)将所有单元编程到中间状态,使得每个单元在读取操作期间将消耗大约3uA-5uA的电流。之后,如图33A所示执行粗略编程方法3305和精确编程方法3306。图33B的实施方案的变型将完全移除软编程操作(步骤3313)。可使用多个粗略编程方法来加速编程,诸如通过在执行精确(精细)编程步骤3306之前瞄准多个逐渐变小的粗略目标。精确编程方法3306例如以精细(精确)增量编程电压脉冲或恒定编程定时脉冲来完成。[0201]存储器单元的不同端子可用于粗略编程方法3305和精确编程方法3306。也就是说,在粗略编程方法3305期间,施加到存储器单元的端子中的一个端子(其可被称为粗略编程端子)的电压将改变,直至浮栅20内实现期望的电压电平,并且在精确编程方法3306期间,施加到存储器单元的端子中的一个端子(其可被称为精确编程端子)的电压将改变,直至实现期望的电平。可用作粗略编程端子和精确编程端子的端子的各种组合示于表9中:[0202]表9:用于粗略编程方法和精确编程方法的存储器单元端子编程序列名称适用的存储器单元类型控制栅28(CG)控制栅28(CG)控制栅28(CG)擦除栅30(EG)控制栅28(CG)控制栅28(CG)和源极线14(SL)擦除栅30(EG)擦除栅30(EG)擦除栅30(EG)控制栅28(CG)控制栅28(CG)源极线14(SL)源极线14(SL)控制栅28(CG)源极线14(SL)擦除栅30(EG)[0204]对于粗略编程步骤和精确编程步骤,端子的其他组合是可能的。[0205]图34示出了粗略编程方法3305的第一实施方案,其为搜索和执行方法3400。首先,执行查找表搜索或函数(I-V曲线),以基于旨在存储在所选择的单元中的值来确定该所选择的单元的粗略目标电流值(Ic)(步骤3401)。例如,该表由硅特性或晶圆测试校准创建。所选择的单元可被编程为存储N个可能值(例如,128、64、32个值对应于在读取操作期间由所选择的单元消耗的不同期望电流值(I)。在一个实施方案中,查找表可包含M个可能的电流值,以在搜索和执行方法3400期间用作所选单元的粗略目元可存储的8个可能值,并且4个粗略目标电流值中的一者将被选择用作搜索和执行方法3400的粗略目标。也就是说,搜索和执行方法3400(其也是粗略编程方法3305的一个实施方案)旨在将所选择的单元快速编程为在一定程度上接近期望值(I)的值(Ic),然后精确编程方法3306旨在将所选择的单元更精确地编程为达到或极其接近期望值(I)。[0206]对于N=8和M=4的简单示例,单元值、期望电流值和粗略目标电流值的示例示于表10和表11中:[0207]表10:N=8时的N个期望电流值的示例期望电流值(I)[0209]表11:M=4时的M个目标电流值的示例粗略目标电流值(Ic)[0211]偏移值IcTOFSETx用于防止在粗调期[0212]在步骤3402中,一旦选定粗略目标电流值Ic,则通过根据上表9中列出的序列中的一个序列将初始电压v₀施加到所选择单元的粗略编程端子来对所选择单元进行编程。(初始电压v₀的值和粗略编程端子任选地可从存储v。与粗略目标电流值Ic的电压查找表中确表12:施加到粗略编程端子的初始电压v。编程序列名称粗略编程端子施加到粗略编程端子的初始电压v。控制栅28(CG)控制栅28(CG)擦除栅30(EG)控制栅28(CG)源极线14(SL)源极线14(SL)接下来,在步骤3403中,通过将电压v=v:-1+Yincrement施加到粗略编程端子对所选压的将导致适合于所需变化粒度的编程程度的增量。因此,执行第一时间步骤3403,i=1,并且v₁将为v₀+Yincremente然后验证操作发生(步骤3404),其中对所选择的单元执行读取操值),则搜索和执行方法3400完成,并且可开始精确编程方法3306。如果Ice11不小于或等于IcT,则重复步骤3403,并且i递增。[0216]因此,在粗略编程方法3305结束并且精确编程方法3306开始的时刻,电压v,将是施加到粗略编程端子以对所选择的单元进行编程的最终电压,并且所选择的单元将存储与粗略目标电流值Ic₁相关联的值,具体地小于或等于Icr。精确编程方法3306的目的是将所选择的单元编程到在读取操作期间其消耗电流I,(加上或减去可接受的偏差幅度,诸如+/-30%或更小)的程度,该电流是与旨在存储在所选择的单元中的值相关联的期望电流值。[0217]图35示出了可在粗略编程方法3305期间根据表9施加到所选择存储器单元的粗略编程端子和/或在精确编程方法3306期间施加到所选择存储器单元的精确编程端子的不同电压累进的示例。[0218]在第一种方法下,累进地向粗略编程端子和/或精确编程端子施加递增的电压以进一步编程所选择的存储器单元。起点为v,其为在粗略编程方法3305期间施加的最终电压。将增量vp₁添加到v,,然后使用电压v₁+vp₁对所选择单元(由从累进3501中的左侧起的第增量。在将每个编程电压施加到编程端子之后,执行验证步骤(类似于步骤3404),其中确定Ice₁1是否小于或等于Ipr₁(其为第一精确目标电流值并且此处为第二阈值),其中Ipr1=Ip+是为防止编程过冲而添加的偏移值。如果不是,则将另一个增量vp添序列的该部分停止。任选地,如果Ipr等于I,或以足够的允许精度近似等于I,则所选择的存储器单元已被成功编程。[0219]如果Ipr不够接近I,,则可进行较小粒度的进一步编程。这里,现使用累进3502。累进3502的起点是用于累进3501下的编程的最终电压。将增量V₂(其小于vp₁)添加到该电压,并且将组合电压施加到精确编程端子以对所选择的存储器单元进行编程。在施加每个编程电压之后,执行验证步骤(类似于步骤3404),其中确定Ice₁1是否小于或等于Ipr₂(其为第二过冲而添加的偏移值。如果不是,则将另一个增量v,₂添加到先前施加的编程电压,并重复该于Ip或足够接近I,以便编程可停止,因为目标值已以足够的允许精度实现。本领域的普通技术人员可以理解,可通过使用越来越小的编程增量来施加附加的累进。例如,在图36A中,施加三个累进(3601、3602和3603)而不是仅两个累进。[0220]在累进3503中示出了第二种方法。此处,并非增加在所选择的存储器单元的编程期间施加的电压,而是在周期递增的持续时间内施加相同的电压(诸如V;或V+Vp+Vp1或V+Vp₂+VD₂)。并非在累进3501中添加增量电压诸如vp并且在累进3502中添加vp₂,而是将附加的时间增量tp₁添加到编程脉冲,使得每个施加的脉冲比先前施加的脉冲长tp₁。在将每个编程脉冲施加到精确编程端子之后,执行与先前针对累进3501所述相同的验证步骤。任选地,在添加到编程脉冲中的附加时间增量比先前使用的进度具有更短的持续时间的情况下,则可以施加附加累进。[0221]任选地,可施加附加的编程循环累进,其中编程脉冲具有与所使用的先前编程循环累进相同的持续时间。尽管仅示出一个时间累进,但本领域的普通技术人员将理解,可施加任何数量的不同时间累进。也就是说,并非改变编程期间所使用的电压幅值或改变编程期间所使用的电压脉冲的周期,而是系统可改为改变所使用的编程循环的数目。[0222]图36B示出了互补脉冲编程累进的图,其中施加到一个精确编程端子的电压增加,而施加到另一个精确编程端子的电压减小。例如,可将递增的电压累进施加到所选择单元的控制栅,并且将递减的电压累进施加到所选择单元的擦除栅或源极线。或者在另选方案中,可将递增的电压累进施加到所选择单元的擦除栅或源极线,并且将递减的电压累进施加到所选择单元的控制栅。这些互补的累进编程脉冲在编程中得到更高精度。例如,在具有压是10mV*40%-20mV*15%=约1mV,假定40%的CG到FG耦合比和10%的EG到FG耦合比。此互补脉冲编程方法可在粗略编程步骤3305之后的精确编程步骤3306中使用,因为粗略编程步骤3305通常将在其编程操作期间仅使用CG增量或EG增量。[0223]现在将提供针对粗略编程方法3305的第二和第三实施方案的附加细节。[0224]图37示出了粗略编程(调谐)方法3305的第二实施方案,其为自适应校准方法3700。该方法开始(步骤3701)。通过根据表9中所示的序列中的一个序列将初始电压v₀施加到粗略编程端子来对单元进行编程(步骤3702)。与搜索和执行方法3400中不同,这里v₀不是从查找表得出的,而是可以是相对较小的预定初始值。在第一电流值IR1(例如,100na)下测量单元的控制栅(或擦除栅)电压(其可称为CG1或EG1),并且在第二电流值IR2(例如,10na)下测量同一栅极上的电压(其可被称为CG2或EG2),即,在IR2为IR1的10%并且亚阈值I-V斜率基于那些测量值(例如,360mV/dec的电流或dV/dLOG(I))来确定并被存储(步骤3703)的非限制性实施方案中。线性区域中的I-V斜率将是dV/dI。[0225]确定新的编程电压v;。第一次执行该步骤时,i=1,并且使用亚阈值公式基于所存储的亚阈值斜率值以及电流目标值和偏移值来确定编程电压v,诸如以下:电压,并且利用从1到2的g,其中在电流IR1处确定V1并且在电流IR2处确定V2。[0233]如果所存储的斜率值相对较陡,则可使用相对较小的电流偏移值。如果所存储的斜率值相对平坦,则可使用相对较高的电流偏移值。因此,确定斜率信息将允许选择为所考虑的特定单元定制的电流偏移值。这通常将使编程过程更短。当重复步骤3704时,递增,并[0234]接下来,验证操作发生,其中对所选择的单元执行读取操作,并且测量通过所选择的单元消耗的电流(Ice₁1)(步骤3705)。如果Ice11小于或等于Ic(此处其为粗略目标阈值),3700完成并且可开始精确编程方法3306。如果Ice₁1不小于或等于Ic,则重复步骤3704至3705(其中用新的数据点测量新的斜率测量值)或步骤3703至3705(其中重新使用先前使用的相同斜率),并且递增i。[0235]图38示出了用于实现方法3703的电路的高级框图。使用电流源3801将示例性电流值IR1和IR2施加到所选择的单元(此处为存储器单元3802),然后测量存储器单元3802的粗略编程端子处的电压(对于IR1为V1(VCGR1或VEGR1)并且对于IR2为V2(VCGR2或VEGR2)),其中根据表9来选择粗略编程端子。线性斜率将为(V1-V2)/LOGI-V曲线上单元电流的十倍,或等效地等于(V1-V2)/(LOG(IR1)-LOG(IR2))。[0236]图39示出了编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论