CN116917905A - 用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置 - Google Patents

用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置 Download PDF

Info

Publication number
CN116917905A
CN116917905A CN202180093494.0A CN202180093494A CN116917905A CN 116917905 A CN116917905 A CN 116917905A CN 202180093494 A CN202180093494 A CN 202180093494A CN 116917905 A CN116917905 A CN 116917905A
Authority
CN
China
Prior art keywords
cell
neural network
memory cells
value
volatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202180093494.0A
Other languages
English (en)
Inventor
H·V·特兰
S·莱姆克
N·多
M·雷顿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Storage Technology Inc
Original Assignee
Silicon Storage Technology Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/185,725 external-priority patent/US20210209458A1/en
Application filed by Silicon Storage Technology Inc filed Critical Silicon Storage Technology Inc
Publication of CN116917905A publication Critical patent/CN116917905A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • G06N3/065Analogue means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0442Recurrent networks, e.g. Hopfield networks characterised by memory or gating, e.g. long short-term memory [LSTM] or gated recurrent units [GRU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/54Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
    • HELECTRICITY
    • H10SEMICONDUCTOR DEVICES; ELECTRIC SOLID-STATE DEVICES NOT OTHERWISE PROVIDED FOR
    • H10BELECTRONIC MEMORY DEVICES
    • H10B41/00Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates
    • H10B41/30Electrically erasable-and-programmable ROM [EEPROM] devices comprising floating gates characterised by the memory core region

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Non-Volatile Memory (AREA)
  • Read Only Memory (AREA)
  • Feedback Control In General (AREA)
  • Magnetic Resonance Imaging Apparatus (AREA)
  • Networks Using Active Elements (AREA)

Abstract

本发明公开了用于将正确的电荷量精确快速地沉积在人工神经网络中的矢量‑矩阵乘法(VMM)阵列内的非易失性存储器单元的浮栅上的精确编程算法和装置的多个实施方案。因此,可极精确地对所选单元进行编程,以保持N个不同值中的一个值。

Description

用于人工神经网络中的模拟神经存储器的精确数据调谐方法 和装置
优先权声明
本申请要求2021年2月25日提交的名称为“Precise Data Tuning Method andApparatus for Analog Neural Memory in an Artificial Neural Network”的美国专利申请17/185,725号的优先权,该美国专利申请是2020年3月25日提交的名称为“PreciseData Tuning Method and Apparatus for Analog Neuromorphic Memory in anArtificial Neural Network”的美国专利申请16/829,757号的部分继续申请,该美国专利申请要求2020年1月3日提交的名称为“Precise Data Tuning Method and Apparatus forAnalog Neuromorphic Memory in an Artificial Neural Network”的美国临时专利申请62/957,013号的优先权。
技术领域
本发明公开了用于将正确的电荷量精确快速地沉积在人工神经网络中的矢量-矩阵乘法(VMM)阵列内非易失性存储器单元的浮栅上的精确调谐方法和装置的多个实施方案。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得人工神经网络适应于输入并且能够学习。通常,人工神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际人工神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请号15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。如本文所用的术语“神经形态”是指实现神经系统模型的电路。模拟神经形态存储器包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。以这种方式布置的存储器单元阵列可被称为矢量矩阵乘法(VMM)阵列。
必须擦除和编程用于VMM中的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。一个挑战在于能够以不同值N所需的精度和粒度对选定单元进行编程。例如,如果选定单元可包括64个不同值中的一个值,则在编程操作中需要极高精度。
需要适于与模拟神经形态存储器中的VMM阵列一起使用的改进的编程系统和方法。
发明内容
本发明公开了用于将正确的电荷量精确快速地沉积在模拟神经形态存储器系统中的VMM阵列内的非易失性存储器单元的浮栅上的精确调谐算法和装置的多个实施方案。因此,可极精确地对所选单元进行编程,以保持N个不同值中的一个值。
在一个实施方案中,神经网络包括非易失性存储器单元的矢量乘以矩阵乘法阵列,其中权重值w根据公式w=(w+)-(w-)作为差分对w+和w-被存储在阵列中的第一非易失性存储器单元和第二非易失性存储器单元中,其中w+和w-包括非零偏移值。
在另一实施方案中,神经网络包括非易失性存储器单元的矢量乘以矩阵乘法阵列,该阵列组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)作为差分对w+和w-被存储在第一非易失性存储器单元和第二非易失性存储器单元中,其中w+和w-值的存储近似均匀地分布在阵列中的所有列中。
在另一实施方案中,一种编程、验证及读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的差分对中的0值的方法包括:将该差分对中的第一单元w+编程为第一电流值;通过将等于第一电压加上偏置电压的电压施加到该第一单元的控制栅极端子来验证该第一单元;将该差分对中的第二单元w-编程为该第一电流值;通过将等于第一电压加上偏置电压的电压施加到该第二单元的控制栅极端子来读取验证该第二单元;通过将等于第一电压的电压施加到该第一单元的控制栅极端子来读取该第一单元;通过将等于该第一电压的电压施加到该第二单元的控制栅极端子来读取该第二单元;以及根据公式w=(w+)-(w-)计算值w。
在另一实施方案中,一种编程、验证及读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的差分对中的0值的方法包括:将该差分对中的第一单元w+编程为第一电流值;通过将等于第一电压加上偏置电压的电压施加到该第一单元的控制栅极端子来验证该第一单元;将该差分对中的第二单元w-编程为该第一电流值;通过将等于第一电压加上偏置电压的电压施加到该第二单元的控制栅极端子来读取验证该第二单元;通过将等于第一电压的电压施加到该第一单元的控制栅极端子来读取该第一单元;通过将等于该第一电压的电压施加到该第二单元的控制栅极端子来读取该第二单元;以及根据公式w=(w+)-(w-)计算值w。
在另一实施方案中,一种神经网络包括非易失性存储器单元的矢量乘以矩阵乘法阵列,该阵列被组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)被存储为差分对w+和w-,其中w+被存储为该阵列中的第一非易失性存储器单元和第二非易失性存储器单元中的差分对,并且w-被存储为该阵列中的第三非易失性存储器单元和第四非易失性存储器单元中的差分对,其中w+和w-值的存储被偏移偏置值。
在另一实施方案中,一种神经网络包括非易失性存储器单元的矢量乘以矩阵乘法阵列,该阵列组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)被存储为第一非易失性存储器单元和第二非易失性存储器单元中的差分对w+和w-,其中w+的值选自非零值的第一范围并且w-的值选自非零值的第二范围,其中第一范围和第二范围不重叠。
在另一实施方案中,一种读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的方法包括读取存储在该阵列中的选定单元中的权重,包括:将零电压偏置施加到该选定单元的控制栅极端子,以及感测包括从该选定单元输出的电流的神经元输出电流。
在另一实施方案中,一种操作矢量乘以矩阵乘法阵列中的非易失性存储器单元的方法包括:通过将第一偏置电压施加到该非易失性存储器单元的控制栅极来读取该非易失性存储器单元;以及在待机操作、深度掉电操作或测试操作中的一者或多者期间将第二偏置电压施加到该非易失性存储器单元的控制栅极。
附图说明
图1为示出现有技术的人工神经网络的示意图。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6示出另一现有技术的分裂栅闪存存储器单元。
图7示出现有技术的堆叠栅闪存存储器单元。
图8为示出使用一个或多个VMM阵列的示例性人工神经网络的不同层级的示意图。
图9为示出包括VMM阵列和其他电路的VMM系统的框图。
图10为示出使用一个或多个VMM系统的示例性人工神经网络的框图。
图11示出VMM阵列的另一实施方案。
图12示出VMM阵列的另一实施方案。
图13示出VMM阵列的另一实施方案。
图14示出VMM阵列的另一实施方案。
图15示出VMM阵列的另一实施方案。
图16示出VMM阵列的另一实施方案。
图17示出VMM阵列的另一实施方案。
图18示出VMM阵列的另一实施方案。
图19示出VMM阵列的另一实施方案。
图20示出VMM阵列的另一实施方案。
图21示出VMM阵列的另一实施方案。
图22示出VMM阵列的另一实施方案。
图23示出VMM阵列的另一实施方案。
图24示出VMM阵列的另一实施方案。
图25示出现有技术的长短期存储器系统。
图26示出在长短期存储器系统中使用的示例性单元。
图27示出图26的示例性单元的一个实施方案。
图28示出图26的示例性单元的另一实施方案。
图29示出现有技术的栅控递归单元系统。
图30示出在栅控递归单元系统中使用的示例性单元。
图31示出图30的示例性单元的一个实施方案。
图32示出图30的示例性单元的另一实施方案。
图33示出VMM系统。
图34示出调谐校正方法。
图35A示出调谐校正方法。
图35B示出扇区调谐校正方法。
图36A示出温度对存储在单元中的值的影响。
图36B示出在VMM系统的操作期间由数据漂移造成的问题。
图36C示出用于补偿数据漂移的块。
图36D示出数据漂移监测器。
图37示出位线补偿电路。
图38示出另一位线补偿电路。
图39示出另一位线补偿电路。
图40示出另一位线补偿电路。
图41示出另一位线补偿电路。
图42示出另一位线补偿电路。
图43示出神经元电路。
图44示出另一个神经元电路。
图45示出另一个神经元电路。
图46示出另一个神经元电路。
图47示出另一个神经元电路。
图48示出另一个神经元电路。
图49A示出输出电路的框图。
图49B示出另一输出电路的框图。
图49C示出另一输出电路的框图。
具体实施方式
本发明的人工神经网络利用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上的电子经由福勒-诺德海姆隧穿从浮栅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的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表1:图2的闪存存储器单元210的操作
WL BL SL
读取1 0.5V-3V 0.1V-2V 0V
读取2 0.5V-3V 0-2V 2V-0.1V
擦除 约11-13V 0V 0V
编程 1-2V 1-3μA 9-10V
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图3示出了存储器单元310,其与图2的存储器单元210类似,但增加了控制栅(CG)端子28。控制栅端子28在编程中被偏置在高电压处(例如,10V),在擦除中被偏置在低电压或负电压处(例如,0v/-8V),在读取中被偏置在低电压或中等电压处(例如,0v/2.5V)。其他端子类似于图2那样偏置。
图4示出了四栅极存储器单元410,其包括源极区14、漏极区16、在沟道区18的第一部分上方的浮栅20、在沟道区18的第二部分上方的选择栅22(通常耦接到字线WL)、在浮栅20上方的控制栅28、以及在源极区14上方的擦除栅30。这种配置在美国专利6,747,310中有所描述,该专利以引用方式并入本文以用于所有目的。这里,除了浮栅20之外,所有的栅极均为非浮栅,这意味着它们电连接到或能够电连接到电压源。编程由来自沟道区18的将自身注入到浮栅20的加热的电子执行。擦除通过从浮栅20隧穿到擦除栅30的电子来执行。
表2示出可施加到存储器单元410的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表2:图4的闪存存储器单元410的操作
WL/SG BL CG EG SL
读取1 0.5V-2V 0.1V-2V 0-2.6V 0-2.6V 0V
读取2 0.5V-2V 0-2V 0-2.6V 0-2.6V 2V-0.1V
擦除 -0.5V/0V 0V 0V/-8V 8-12V 0V
编程 1V 1μA 8-11V 4.5V-9V 4.5-5V
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图5示出了存储器单元510,除了不含擦除栅EG端子,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅CG端子28偏置到低电压或负电压来执行擦除。另选地,通过将字线端子22偏置到正电压并将控制栅端子28偏置到负电压来执行擦除。编程和读取类似于图4的那样。
图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,除了存储器单元610没有单独的控制栅端子。除了没有施加控制栅偏置,擦除操作(通过使用擦除栅端子进行擦除)和读取操作类似于图4的操作。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线端子上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元610的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表3:图6的闪存存储器单元610的操作
WL/SG BL EG SL
读取1 0.5V-2.2V 0.1V-2V 0-2.6V 0V
读取2 0.5V-2.2V 0-2V 0-2.6V 2V-0.1V
擦除 -0.5V/0V 0V 11.5V 0V
编程 1V 2μA-3μA 4.5V 7-9V
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。
图7示出堆叠栅存储器单元710,其为另一种类型的闪存存储器单元。存储器单元710与图2的存储器单元210类似,不同的是浮栅20在整个沟道区18上方延伸,并且控制栅端子22(其在这里将耦接到字线)在浮栅20上方延伸,由绝缘层(未示出)分开。擦除、编程和读取操作以与先前针对存储器单元210所述类似的方式操作。
表4示出可以施加到存储器单元710和衬底12的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表4:图7的闪存存储器单元710的操作
CG BL SL 衬底
读取1 0-5V 0.1V-2V 0-2V 0V
读取2 0.5V-2V 0-2V 2V-0.1V 0V
擦除 -8至-10V/0V FLT FLT 8-10V/15-20V
编程 8-12V 3-5V/0V 0V/3-5V 0V
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线端子上输出的读取模式。任选地,在包括存储器单元210、310、410、510、610或710的行和列的阵列中,源极线可耦接到一行存储器单元或相邻的两行存储器单元。即,源极线端子可由相邻行的存储器单元共享。
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,反之亦然。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或64个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐,并且这使得存储器阵列对于存储和对神经网络的突触权重进行精细调谐是理想的。
本文所述的方法和装置可应用于其他非易失性存储器技术,诸如但不限于SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、OTP(双层或多层式一次可编程)和CeRAM(关联电子ram)等。本文所述的方法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于SRAM、DRAM和/或易失性突触单元。
采用非易失性存储器单元阵列的神经网络
图8概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,S0为输入层,其为具有5位精度的32x32像素RGB图像(即,三个32x32像素阵列,分别用于每个颜色R、G和B,每个像素为5位精度)。从输入层S0到层C1的突触CB1在一些情况下应用不同的权重集,在其他情况下应用共享权重,并且用3x3像素重叠滤波器(内核)扫描输入图像,将滤波器移位1个像素(或根据模型所指示的多于1个像素)。具体地,将图像的3x3部分中的9个像素的值(即,称为滤波器或内核)提供给突触CB1,其中将这9个输入值乘以适当的权重,并且在对该乘法的输出求和之后,由CB1的第一突触确定并提供单个输出值以用于生成特征映射的其中一层C1的像素。然后将3x3滤波器在输入层S0内向右移位一个像素(即,添加右侧的三个像素的列,并释放左侧的三个像素的列),由此将该新定位的滤波器中的9个像素值提供给突触CB1,其中将它们乘以相同的权重并且由相关联的突触确定第二单个输出值。继续该过程,直到3x3滤波器在输入层S0的整个32x32像素图像上扫描所有三种颜色和所有位(精度值)。然后使用不同组的权重重复该过程以生成C1的不同特征映射,直到计算出层C1的所有特征映射。
在层C1处,在本示例中,存在16个特征映射,每个特征映射具有30x30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2x2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用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个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图9为可用于该目的的系统的框图。VMM系统32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的CB1、CB2、CB3和CB4)。具体地,VMM系统32包括VMM阵列33(包括以行和列布置的非易失性存储器单元)、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对非易失性存储器单元阵列33的相应输入进行解码。对VMM阵列33的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对VMM阵列33的输出进行解码。另选地,位线解码器36可对VMM阵列33的输出进行解码。
VMM阵列33用于两个目的。首先,它存储将由VMM系统32使用的权重。其次,VMM阵列33有效地将输入与存储在VMM阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,VMM阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算也是高功效的。
将VMM阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对VMM阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重输入和负权重输入两者的求和,以输出单个值。
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh、ReLU函数或任何其他非线性函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层C1)的特征映射的元素,随后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,VMM阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。
图9中对VMM系统32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平、二进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器PAC来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供DAC以将数字位转换至合适的输入模拟电平);输出可为模拟电平、二进制电平、数字脉冲或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图10为示出了多层VMM系统32(此处标记为VMM系统32a、32b、32c、32d和32e)的使用的框图。如图10所示,通过数模转换器31将输入(表示为Inputx)从数字转换为模拟,并将其提供至输入VMM系统32a。转换的模拟输入可以是电压或电流。第一层的输入D/A转换可通过使用将输入Inputx映射到输入VMM系统32a的矩阵乘法器的适当模拟电平的函数或LUT(查找表)来完成。输入转换也可由模拟至模拟(A/A)转换器完成,以将外部模拟输入转换成到输入VMM系统32a的映射模拟输入。输入转换也可由数字至数字脉冲(D/P)转换器完成,以将外部数字输入转换成到输入VMM系统32a的映射的一个或多个数字脉冲。
由输入VMM系统32a产生的输出被作为到下一个VMM系统(隐藏级别1)32b的输入提供,该输入继而生成作为下一VMM系统(隐藏级别2)32c的输入而提供的输出,以此类推。VMM系统32的各层用作卷积神经网络(CNN)的突触和神经元的不同层。每个VMM系统32a、32b、32c、32d和32e可以是包括相应非易失性存储器阵列的独立物理系统、或者多个VMM系统可利用相同物理非易失性存储器阵列的不同部分、或者多个VMM系统可利用相同物理非易失性存储器阵列的重叠部分。每个VMM系统32a、32b、32c、32d和32e也可针对其阵列或神经元的不同部分进行时分复用。图10所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个全连接层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
VMM阵列
图11示出神经元VMM阵列1100,其特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1100包括非易失性存储器单元的存储器阵列1101和非易失性参考存储器单元的参考阵列1102(在阵列的顶部)。另选地,可将另一个参考阵列置于底部。
在VMM阵列1100中,控制栅线(诸如控制栅线1103)在竖直方向上延伸(因此参考阵列1102在行方向上与控制栅线1103正交),并且擦除栅线(诸如擦除栅线1104)在水平方向上延伸。此处,VMM阵列1100的输入设置在控制栅线(CG0,CG1,CG2,CG3)上,并且VMM阵列1100的输出出现在源极线(SL0,SL1)上。在一个实施方案中,仅使用偶数行,并且在另一个实施方案中,仅使用奇数行。置于各源极线(分别为SL0、SL1)上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
如本文针对神经网络所述,VMM阵列1100的非易失性存储器单元(即VMM阵列1100的闪存存储器)优选地被配置为在亚阈值区域中操作。
在弱反转中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
Ids=Io*e(Vg-Vth)/nVt=w*Io*e(Vg)/nVt
其中w=e(-Vth)/nVt
其中Ids为漏极到源极电流;Vg为存储器单元上的栅极电压;Vth是存储器单元的阈值电压;Vt是热电压=k*T/q,其中k是玻尔兹曼常数,T是以开尔文为单位的温度,并且q是电子电荷;n是斜率因子=1+(Cdep/Cox),其中Cdep=耗尽层的电容,并且Cox是栅极氧化物层的电容;Io是等于阈值电压的栅极电压下的存储器单元电流,Io与(Wt/L)*u*Cox*(n-1)*Vt2成比例,其中u是载流子迁移率,并且Wt和L分别是存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流Ids转换为输入电压Vg的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
此处,wp为参考存储器单元或外围存储器单元的w。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流Ids转换为输入电压Vg的I到V对数转换器:
Vg=n*Vt*log[Ids/wp*Io]
此处,wp为参考存储器单元或外围存储器单元的w。
对于用作矢量矩阵乘法器VMM阵列的存储器阵列,输出电流为:
Iout=wa*Io*e(Vg)/nVt,即
Iout=(wa/wp)*Iin=W*Iin
W=e(Vthp-Vtha)/nVt
Iin=wp*Io*e(Vg)/nVt
此处,wa=存储器阵列中的每个存储器单元的w。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的非易失性存储器单元可被配置成在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L,
Wα(Vgs-Vth),
意指线性区域中的权重W与(Vgs-Vth)成比例
字线或控制栅或位线或源极线可以用作在线性区域中操作的存储器单元的输入。位线或源极线可用作存储器单元的输出。
对于I到V线性转换器,在线性区域工作的存储器单元(例如参考存储器单元或外围存储器单元)或晶体管或电阻器可以用来将输入/输出电流线性转换成输入/输出电压。
另选地,本文所述的VMM阵列的存储器单元可被配置成在饱和区域中操作:
Ids=1/2*β*(Vgs-Vth)2;β=u*Cox*Wt/L
Wα(Vgs-Vth)2,意指权重W与(Vgs-Vth)2成比例
字线、控制栅或擦除栅可以用作在饱和区域中操作的存储器单元的输入。位线或源极线可用作输出神经元的输出。
另选地,本文所述的VMM阵列的存储器单元可用于所有区域或其组合(亚阈值、线性或饱和区域)。
美国专利申请15/826,345号中描述了图9的VMM阵列33的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
图12示出神经元VMM阵列1200,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的突触。VMM阵列1200包括非易失性存储器单元的存储器阵列1203、第一非易失性参考存储器单元的参考阵列1201和第二非易失性参考存储器单元的参考阵列1202。沿阵列的列方向布置的参考阵列1201和1202用于将流入端子BLR0、BLR1、BLR2和BLR3的电流输入转换为电压输入WL0、WL1、WL2和WL3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1214(仅部分示出)二极管式连接,其中电流输入流入其中。参考单元被调谐(例如,编程)为目标参考电平。目标参考电平由参考微阵列矩阵(未示出)提供。
存储器阵列1203用于两个目的。首先,它将VMM阵列1200将使用的权重存储在其相应的存储器单元上。第二,存储器阵列1203有效地将输入(即,在端子BLR0、BLR1、BLR2和BLR3中提供的电流输入,参考阵列1201和1202将它们转换成输入电压以提供给字线WL0、WL1、WL2和WL3)乘以存储在存储器阵列1203中的权重,然后将所有结果(存储器单元电流)相加以在相应的位线(BL0-BLN)上产生输出,该输出将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列1203消除了对单独的乘法逻辑电路和加法逻辑电路的需要,并且也是高功效的。这里,电压输入在字线(WL0、WL1、WL2和WL3)上提供,并且输出在读取(推断)操作期间出现在相应位线(BL0-BLN)上。置于位线BL0-BLN中的每个位线上的电流执行来自连接到该特定位线的所有非易失性存储器单元的电流的求和函数。
表5示出用于VMM阵列1200的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压,其中FLT指示浮动,即未施加电压。行指示读取、擦除和编程操作。
表5:图12的VMM阵列1200的操作
WL WL-未选 BL BL-未选 SL SL-未选
读取 0.5V-3.5V -0.5V/0V 0.1V-2V(Ineuron) 0.6V-2V/FLT 0V 0V
擦除 约5-13V 0V 0V 0V 0V 0V
编程 1-2V -0.5V/0V 0.1-3uA Vinh约2.5V 4-10V 0-1V/FLT
图13示出神经元VMM阵列1300,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。参考阵列1301和1302在VMM阵列1300的行方向上延伸。VMM阵列与VMM1000类似,不同的是在VMM阵列1300中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,并且输出在读取操作期间出现在源极线(SL0、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出用于VMM阵列1300的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图13的VMM阵列1300的操作
图14示出神经元VMM阵列1400,其特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1400包括非易失性存储器单元的存储器阵列1403、第一非易失性参考存储器单元的参考阵列1401和第二非易失性参考存储器单元的参考阵列1402。参考阵列1401和1402用于将流入端子BLR0、BLR1、BLR2和BLR3的中的电流输入转换为电压输入CG0、CG1、CG2和CG3。实际上,第一非易失性参考存储器单元和第二非易失性参考存储器单元通过多路复用器1412(仅部分示出)二极管式连接,其中电流输入通过BLR0、BLR1、BLR2和BLR3流入其中。多路复用器1412各自包括相应的多路复用器1405和共源共栅晶体管1404,以确保在读取操作期间第一非易失性参考存储器单元和第二非易失性参考存储器单元中的每一者的位线(诸如BLR0)上的电压恒定。将参考单元调谐至目标参考电平。
存储器阵列1403用于两个目的。首先,它存储将由VMM阵列1400使用的权重。第二,存储器阵列1403有效地将输入(提供到端子BLR0、BLR1、BLR2和BLR3的电流输入,参考阵列1401和1402将这些电流输入转换成输入电压以提供给控制栅(CG0、CG1、CG2和CG3))乘以存储在存储器阵列中的权重,然后将所有结果(单元电流)相加以产生输出,该输出出现在BL0-BLN并且将是下一层的输入或最终层的输入。通过执行乘法和加法函数,存储器阵列消除了对单独的乘法和加法逻辑电路的需要,并且也是高功效的。这里,输入提供在控制栅线(CG0、CG1、CG2和CG3)上,输出在读取操作期间出现在位线(BL0-BLN)上。置于各位线上的电流执行来自连接到该特定位线的存储器单元的所有电流的求和函数。
VMM阵列1400为存储器阵列1403中的非易失性存储器单元实现单向调谐。也就是说,每个非易失性存储器单元被擦除,然后被部分编程,直到达到浮栅上的所需电荷。这可例如使用下文所述的精确编程技术来执行。如果在浮栅上放置过多电荷(使得错误的值存储在单元中),则必须擦除单元,并且部分编程操作的序列必须重新开始。如图所示,共享同一擦除栅(诸如EG0或EG1)的两行需要一起擦除(其被称为页面擦除),并且此后,每个单元被部分编程,直到达到浮栅上的所需电荷。
表7示出用于VMM阵列1400的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表7:图14的VMM阵列1400的操作
图15示出神经元VMM阵列1500,其特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1500包括非易失性存储器单元的存储器阵列1503、第一非易失性参考存储器单元的参考阵列1501和第二非易失性参考存储器单元的参考阵列1502。EG线EGR0、EG0、EG1和EGR1竖直延伸,而CG线CG0、CG1、CG2和CG3以及SL线WL0、WL1、WL2和WL3水平延伸。VMM阵列1500与VMM阵列1400类似,不同的是VMM阵列1500实现双向调谐,其中每个单独的单元可以根据需要被完全擦除、部分编程和部分擦除,以由于使用单独的EG线而在浮栅上达到期望的电荷量。如图所示,参考阵列1501和1502将端子BLR0、BLR1、BLR2和BLR3中的输入电流转换成要在行方向上施加到存储器单元的控制栅电压CG0、CG1、CG2和CG3(通过经由多路复用器1514的二极管连接的参考单元的动作)。电流输出(神经元)在位线BL0-BLN中,其中每个位线对来自连接到该特定位线的非易失性存储器单元的所有电流求和。
表8示出用于VMM阵列1500的工作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的控制栅、用于与所选单元相同扇区中的未选单元的控制栅、用于与所选单元不同扇区中的未选单元的控制栅、用于所选单元的擦除栅、用于未选单元的擦除栅、用于所选单元的源极线、用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表8:图15的VMM阵列1500的操作
图16示出神经元VMM阵列1600,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列1600中,输入INPUT0…,INPUTN分别在位线BL0,…BLN上被接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图17示出神经元VMM阵列1700,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上被接收,并且输出OUTPUT0、…、OUTPUTN在位线BL0、…、BLN上生成。
图18示出神经元VMM阵列1800,其特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、…、INPUTM分别在字线WL0、…、WLM上被接收,并且输出OUTPUT0、…、OUTPUTN在位线BL0、…、BLN上生成。
图19示出神经元VMM阵列1900,其特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、…、INPUTM分别在字线WL0、…、WLM上被接收,并且输出OUTPUT0、…、OUTPUTN在位线BL0、…、BLN上生成。
图20示出神经元VMM阵列2000,其特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、…、INPUTn分别在竖直控制栅线CG0、…、CGN上被接收,并且输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图21示出神经元VMM阵列2100,其特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTN分别在位线控制栅极2901-1、2901-2至2901-(N-1)和2901-N的栅极上被接收,这些栅极分别耦接到位线BL0至BLN。示例性输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图22示出神经元VMM阵列2200,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM在字线WL0,…,WLM上被接收,并且输出OUTPUT0,…,OUTPUTN分别在位线BL0,…,BLN上生成。
图23示出神经元VMM阵列2300,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直源极线SL0,…,SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线。
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0至INPUTM在控制栅线CG0至CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直位线BL0,…,BLN上生成,其中每个位线BLi耦接到列i中的所有存储器单元的位线。
长短期存储器
现有技术包括被称为长短期存储器(LSTM)的概念。LSTM通常用于人工神经网络。LSTM允许人工神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM包括单元、输入栅、输出栅和忘记栅。该三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔。VMM在LSTM中特别有用。
图25示出了示例性LSTM 2500。该示例中的LSTM 2500包括单元2501、2502、2503和2504。单元2501接收输入矢量x0并生成输出矢量h0和单元状态矢量c0。单元2502接收输入矢量x1、来自单元2501的输出矢量(隐藏状态)h0和来自单元2501的单元状态c0,并生成输出矢量h1和单元状态矢量c1。单元2503接收输入矢量x2、来自单元2502的输出矢量(隐藏状态)h1和来自单元2502的单元状态c1,并生成输出矢量h2和单元状态矢量c2。单元2504接收输入矢量x3、来自单元2503的输出矢量(隐藏状态)h2和来自单元2503的单元状态c2,并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的LSTM仅仅是示例。
图26示出可用于图25中的单元2501、2502、2503和2504的LSTM单元2600的示例性具体实施。LSTM单元2600接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
LSTM单元2600包括sigmoid函数设备2601、2602和2603,每个sigmoid函数设备应用0至1之间的数字来控制允许输入矢量中的每个分量通过到输出矢量的数量。LSTM单元2600还包括用于将双曲线正切函数应用于输入矢量的tanh设备2604和2605、用于将两个矢量相乘在一起的乘法器设备2606、2607和2608以及用于将两个矢量相加在一起的加法设备2609。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。
图27示出LSTM单元2700,其为LSTM单元2600的具体实施的示例。为了方便读者,LSTM单元2700中使用与LSTM单元2600相同的编号。sigmoid函数设备2601、2602和2603以及tanh设备2604各自包括多个VMM阵列2701和激活电路块2702。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。
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)时存储该值的寄存器2807,当值f(t)*c(t-1)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2804,当值i(t)*u(t)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2805,当值o(t)*c~(t)通过多路复用器2810从乘法器设备2803输出时存储该值的寄存器2806,以及多路复用器2809。
LSTM单元2700包含多组VMM阵列2701和相应的激活函数块2702,而LSTM单元2800仅包含一组VMM阵列2801和激活函数块2802,它们用于表示LSTM单元2800的实施方案中的多个层。LSTM单元2800将需要的空间比LSTM 2700更小,因为与LSTM单元2700相比,LSTM单元2800只需要其1/4的空间用于VMM和激活函数区块。
还可理解,LSTM单元通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化VMM阵列本身之外所需的电路。
栅控递归单元
模拟VMM具体实施可用于GRU(栅控递归单元)。GRU是递归人工神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。
图29示出了示例性GRU 2900。该示例中的GRU 2900包括单元2901、2902、2903和2904。单元2901接收输入矢量x0并生成输出矢量h0。单元2902接收输入矢量x1、来自单元2901的输出矢量h0并生成输出矢量h1。单元2903接收输入矢量x2和来自单元2902的输出矢量(隐藏状态)h1并生成输出矢量h2。单元2904接收输入矢量x3和来自单元2903的输出矢量(隐藏状态)h2并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。
图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。
图31示出GRU单元3100,其为GRU单元3000的具体实施的示例。为了方便读者,GRU单元3100中使用与GRU单元3000相同的编号。如图31所示,sigmoid函数设备3001和3002以及tanh设备3003各自包括多个VMM阵列3101和激活函数块3102。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。
GRU单元3100的另选形式(以及GRU单元3000的具体实施的另一示例)在图32中示出。在图32中,GRU单元3200利用VMM阵列3201和激活函数块3202,该激活函数块在被配置成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。
GRU单元3100包含多组VMM阵列3101和激活函数块3102,而GRU单元3200仅包含一组VMM阵列3201和激活函数块3202,它们用于表示GRU单元3200的实施方案中的多个层。GRU单元3200将需要比GRU单元3100更少的空间,因为与GRU单元3100相比,GRU单元3200只需要其1/3的空间用于VMM和激活函数块。
还可以理解的是,利用GRU的系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。因此,下文所述的实施方案试图最小化VMM阵列本身之外所需的电路。
VMM阵列的输入可为模拟电平、二进制电平、定时脉冲、或数字位,并且输出可为模拟电平、二进制电平、定时脉冲或数字位(在这种情况下,需要输出ADC来将输出模拟电平电流或电压转换成数字位)。
对于VMM阵列中的每个存储器单元,每个权重w可由单个存储器单元或由差分单元或由两个混合存储器单元(2个或更多个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重w作为差分权重(w=w+-w-)。在两个混合存储器单元中,需要两个存储器单元来实现权重w作为两个单元的平均值。
用于对VMM中的单元进行精确调谐的实施方案
图33示出了VMM系统3300的框图。VMM系统3300包括VMM阵列3301、行解码器3302、高电压解码器3303、列解码器3304、位线驱动器3305、输入电路3306、输出电路3307、控制逻辑部件3308和偏置发生器3309。VMM系统3300进一步包括高电压生成块3310,该高电压生成块包括电荷泵3311、电荷泵调节器3312和高电压电平发生器3313。VMM系统3300还包括算法控制器3314、模拟电路3315、控制逻辑部件3316和测试控制逻辑部件3317。下文所述的系统和方法能够在VMM系统3300中实现。
输入电路3306可以包括电路,诸如DAC(数模转换器)、DPC(数字到脉冲转换器)、AAC(模拟到模拟转换器,诸如电流到电压转换器)、PAC(脉冲到模拟电平转换器)或任何其他类型的转换器。输入电路3306可以实现归一化、尺度函数或算术函数。输入电路3306可以实现对输入的温度补偿函数。输入电路3306可以实现激活函数,诸如ReLU或sigmoid函数。
输出电路3307可以包括电路,诸如ADC(模数转换器,用于将神经元模拟输出转换为数字位)、AAC(模拟到模拟转换器,诸如电流到电压转换器)、APC(模拟到脉冲转换器)或任何其他类型的转换器。输出电路3307可以实现激活函数,诸如ReLU或sigmoid函数。输出电路3307可以实现用于神经元输出的归一化、尺度函数或算术函数。输出电路3307可以实现用于神经元输出或阵列输出(诸如位线输出)的温度补偿函数,如下所述。
图34示出调谐(将存储器单元编程或者擦除到目标)校正方法3400,其可以由VMM系统3300中的算法控制器3314执行。调谐校正方法3400基于由单元输出和单元初始目标产生的最终误差生成自适应目标。该方法通常响应于接收到调谐命令而开始(步骤3401)。使用预测目标模型(诸如通过使用函数或查找表)确定所选单元或所选单元组Itargetv(i)的初始电流目标(用于编程/验证算法),并且将可变DeltaError设置为0(步骤3402)。目标函数(如果使用的话)将基于所选存储器单元或单元组的I-V编程曲线。目标函数还取决于由阵列特性引起的各种变化,这些阵列特性诸如单元表现出的编程干扰程度(其取决于扇区内的单元地址和单元层级,其中如果单元表现出相对较大的干扰,则该单元在抑制条件下经受更多编程时间,其中具有较高电流的单元通常具有更多干扰)、单元间的耦合和各种类型的阵列噪声。可以在PVT(工艺、电压、温度)方面表征针对硅的这些变化。查找表(如果使用的话)可以以相同的方式表征以模拟I-V曲线和各种变化。
然后,对VMM中的所有单元执行软擦除,该软擦除将所有单元擦除到中间弱擦除电平,使得每个单元在读取操作期间将消耗例如约3μA-5μA的电流(步骤3403)。例如,通过向单元施加增量擦除脉冲电压直至达到中间单元电流来执行软擦除。接下来,对所有未使用的单元执行编程操作(诸如通过深度编程或通过对目标的粗略/精细编程)(步骤3404),以便达到<pA的电流水平或达到等效零权重。然后执行基于误差结果的目标调整(校正)。如果DeltaError>0,意味着该单元已在编程中经历过冲,则将Itargetv(i+1)设置为Itarget+θ*DeltaError,其中θ例如为1或接近1的数字(步骤3405A)。
也可以基于先前Itarget(i)以适当的误差目标调整/校正来调整Itarget(i+1)。如果DeltaError<0,意味着该单元已在编程中经历下冲,这意味着单元电流尚未达到目标,则将Itargetv(i+1)设置为先前目标Itargetv(i)(步骤3405B)。
接下来,执行粗略和/或精细编程和验证操作(步骤3406)。可使用多个自适应粗略编程方法来加速编程,诸如通过在执行精确(精细)编程步骤之前瞄准多个逐渐变小的粗略目标。自适应精确编程例如以精细(精确)增量编程电压脉冲或恒定编程定时脉冲来完成。用于执行粗略编程和精细编程的系统和方法的实施例在由与本申请相同的受让人提交于2019年11月11日并且标题为“Precise Programming Method and Apparatus for AnalogNeural Memory in a Deep Learning Artificial Neural Network”的美国临时专利申请第62/933,809号中有所描述,该申请以引用的方式并入本文。
测量所选单元中的Icell(步骤3407)。例如,可以通过电流计电路测量单元电流。例如,可以通过ADC(模拟-数字转换器)电路测量单元电流,其中在这种情况下,输出由数字位表示。例如,可以通过I-V(电流-电压转换器)电路测量单元电流,其中在这种情况下,输出由模拟电压表示。计算DeltaError,即Icell-Itarget,其表示所测量单元中的实际电流(Icell)与目标电流(Itarget)之间的差值。如果|DeltaError|<DeltaMargin,则单元已在某个容差(DeltaMargin)内达到目标电流,并且该方法结束(步骤3410)。|DeltaError|=abs(DeltaError)=DeltaError的绝对值。如果不是,则该方法返回到步骤3403并且再次按顺序执行步骤(步骤3410)。
图35A和图35B示出调谐校正方法3500,其可以由VMM系统3300中的算法控制器3314执行。参考图35A,该方法的开始(步骤3501)通常响应于接收到调谐命令而进行。诸如通过软擦除方法擦除整个VMM阵列(步骤3502)。对所有未使用的单元执行编程操作(诸如通过深度编程或通过对目标的粗略/精细编程)(步骤3503),以达到<pA电平的单元电流或达到等效零权重。使用粗略和/或精细编程循环将VMM阵列中的所有单元编程为中间值,诸如0.5μA-1.0μA(步骤3504)。用于执行粗略编程和精细编程的系统和方法的实施例在由与本申请相同的受让人提交于2019年11月11日并且标题为“Precise Programming Method andApparatus for Analog Neural Memory in a Deep Learning Artificial NeuralNetwork”的美国临时专利申请第62/933,809号中有所描述,该申请以引用的方式并入本文。使用如上所述的函数或查找表来设置用于已使用单元的预测目标(步骤3505)。然后,对VMM中的每个扇区执行扇区调谐方法3507(步骤3506)。扇区通常由阵列中的两个或更多个相邻行组成。
图35B示出自适应目标扇区调谐方法3507。使用单独或组合编程/验证(P/V)方法将扇区中的所有单元编程为最终期望值(例如,1nA-50nA),这些方法诸如:(1)粗略/精细/恒定P/V循环;(2)CG+(仅CG增量)或EG+(仅EG增量)或互补的CG+/EG-(CG增量和EG减量);和(3)首先进行最深编程单元(诸如渐进式分组,意味着将单元分为不同组,具有最低电流的单元的组首先被编程)(步骤3508A)。接下来,确定Icell是否<Itarget。如果是,则该方法前进到步骤3509。如果否,则该方法重复步骤3508A。在步骤3509中,测量DeltaError,其等于所测量的Icell-Itarget(i+1)(步骤3509)。确定|DeltaError|是否<DeltaMargin(步骤3510)。如果是,则该方法完成(步骤3511)。如果不是,则执行目标调整。如果DeltaError>0,意味着该单元已在编程中经历过冲,则通过将新目标设置为Itarget+θ*DeltaError来调整目标,其中θ通常=1(步骤3512A)。也可以基于先前Itarget(i)以适当的误差目标调整/校正来调整Itarget(i+1)。如果DeltaError<0,意味着该单元已在编程中经历下冲,这意味着单元尚未达到目标,则通过保持先前目标来调整目标,即Itargetv(i+1)=Itargetv(i)(步骤3512B)。对扇区进行软擦除(步骤3513)。将扇区中的所有单元编程为中间值(步骤3514),并返回到步骤3509。
典型的神经网络可以具有正权重w+和负权重w-以及组合权重=w+-w-。w+和w-由存储器单元(分别为Iw+和Iw-)来实现,并且组合权重(Iw=Iw+-Iw-,电流相减)可以在外围电路电平处(诸如通过使用阵列位线输出电路)执行。因此,用于组合权重的权重调谐实施方案可以包括例如同时调谐w+单元和w-单元,仅调谐w+单元,或仅调谐w-单元,如表8所示的示例中。使用先前参考图34/图35A/图35B描述的编程/验证和误差目标调整方法来执行调谐操作。可以仅针对组合权重(例如,测量/读取组合的权重电流而不是单独的正w+单元电流或w-单元电流)、仅针对w+单元电流或仅针对w-单元电流来执行验证操作。
例如,对于3nA的组合Iw,Iw+可以是3nA并且Iw-可以是0nA;或者,Iw+可以是13nA并且Iw-可以是10nA,意味着正权重Iw+和负权重Iw-均不为零(例如,其中零将表示深度编程单元)。在某些操作条件下,这可能是优选的,因为其将使得Iw+和Iw-均不那么容易受噪声影响。
表8:权重调谐方法(值是以nA为单位的电流值)
Iw Iw+ Iw- 说明
初始目标 3 3 0 调谐Iw+和Iw-
初始目标 -2 0 2 调谐Iw+和Iw-
初始目标 3 13 10 调谐Iw+和Iw-
新目标 2 12 10 仅调谐Iw+
新目标 2 11 9 调谐Iw+和Iw-
新目标 4 13 9 仅调谐Iw-
新目标 4 12 8 调谐Iw+和Iw-
新目标 -2 8 10 调谐Iw+和Iw-
新目标 -2 7 9 调谐Iw+和Iw-
初始目标 0 0 0 深度编程的Iw+和Iw-;零w或未使用的单元
新目标 0 7 7 调谐Iw+和Iw-
新目标 0+ 7.01 7 调谐Iw+和Iw-
新目标 0- 7 7.01 调谐Iw+和Iw-
新目标 0 1 1 调谐Iw+和Iw-
新目标 0 约-0 约-0 调谐Iw+和Iw-
新目标 0 约-1 约-1 调谐Iw+和Iw-
新目标 0 约-5 约-5 调谐Iw+和Iw-
因此,根据公式w=(w+)-(w-)的差分权重映射可以用于将调谐值w存储在神经网络中供使用。w+和w的映射可以被优化以应对在神经网络中的VMM阵列中出现的特定问题,例如,通过在每个值被存储时在w+和w-中包括偏移值。
在一个实施方案中,优化权重映射以减少RTN噪声。例如,在w的期望值为0nA(零w或未使用的存储器单元)的情况下,一个可能的映射为(w+)=0nA并且(w-)=0nA,并且另一可能的映射为(w+)=30nA并且(w-)=30nA,其中此处30nA为在存储之前添加到每个w+和w-值的非零偏移值的示例。包括此类非零偏移值将最终消耗更多的功率并且在调谐过程期间引起更大的不准确性,但是它将最小化任何噪声的影响。类似地,在w的期望值是1nA的情况下,一种可能的映射是(w+)=1nA并且(w-)=0nA,并且另一种可能的映射是(w+)=30nA并且(w-)=29nA。后者将消耗更多的功率并且在调谐过程期间可能引起更大的不准确性,但是将最小化任何噪声的影响。
在另一实施方案中,对于零权重w,w+和w-两者可被调谐为近似为0,诸如通过使用用于验证操作的偏置偏移电压的方法,现在将对其进行描述。在该方法中,例如,在高于用于推断(读取)的正常CG电压的控制栅极电压(VCG)下,w+和w-两者被调谐到5nA。例如,对于dVCG/Ir=2mV/1nA,如果在推断中使用VCG=1.5V的值,则在调谐算法(用于权重调谐的编程验证算法)中,将使用VCG=1.510V的值来验证零权重单元达到5nA的目标。在推断操作中,因为使用VCG=1.5V,所以单元电流每1nA下降2mV,因此验证操作中的5nA变为推断操作中的大约0nA。
在另一实施方案中,对于零权重w,w+和w-两者可被调谐为具有负电流,诸如通过使用用于验证操作的偏置偏移电压的负电流调谐方法,现在将对其进行描述。对于这种情况,例如,在高于用于推断(读取)的正常CG电压的控制栅极电压(VCG)下,w+和w-两者被调谐到-10nA。例如,对于dVCG/Ir=2mV/1nA,如果在推断中使用VCG=1.5V的值,则在调谐算法(用于权重调谐的编程验证算法)中,使用VCG=1.530V来验证零权重单元达到5nA的目标。在推断操作中,因为使用VCG=1.5V,所以单元电流每1nA下降2mV,因此验证操作中的5nA变为推断操作中的大约-10nA。
偏移偏置条件或偏置(电压和/或电流和/或定时和/或温度)序列的类似方法可用于测试筛选的目的,以检测异常位,诸如易受显著噪声(诸如RTN噪声、热噪声或任何其它噪声源)影响的单元。基本上,存在可用于通过使来自存储器单元的噪声衰减到比其它偏置条件或偏置序列大的程度(噪声衰减测试)来更好地检测噪声的偏置条件或偏置序列。例如,对于20nA存储器单元来说,可能有利的是通过调制此单元的偏置条件(例如,通过在测试筛选中改变控制栅极偏置电压)而从将此单元置于另一条件中来检测不期望的行为。例如,由于测试器限制或电路限制,通过调制偏置条件来检测在较高电流电平下易受噪声(诸如RTN噪声)影响的位/单元可能是有利的。
用于存储器单元的筛选或验证噪声电平的另一种方法(诸如RTN噪声筛选)是对存储器单元输出进行采样(诸如通过多次测量输出,诸如4/8/.../1024次)。该筛选标准使得任何样本实例的值比样本的平均值大一定量。另一个筛选标准是一个样品的值比下一个样品大一定量。这些技术由申请人在提交于2019年11月11日并且名称为“PreciseProgramming Method and Apparatus for Analog Neural Memory in a Deep LearningArtificial Neural Network”的美国临时专利申请第62/933,809号中有所描述,该申请以引用的方式并入本文。
一种调谐存储器单元的权重(编程或擦除该单元)的方法(其并入上文权重分配中的一些权重分配)可包括:软擦除该单元,接着编程零权重单元(诸如上文),接着利用噪声筛选来执行粗略及精细以及/或者超精细调谐算法,诸如上文所描述。用于粗略、精细和超精细调谐算法的技术先前由2020年3月25日提交的名称为“Precise Data Tuning Methodand Apparatus for Analog Neural Memory in an Artificial Neural Network”的美国专利申请16/829757号中的申请公开,该申请以引用的方式并入本文。
在另一实施方案中,可通过使用包括偏置条件定序的读取(推断)或验证的方法来减少噪声影响。例如,在执行读取或验证操作之前对存储器单元执行累积条件。
在另一实施方案中,可通过在控制栅极上施加负电压范围来减小噪声影响。在另一个实施方案中,针对零权重和未使用的单元的阵列的背景数据可以是特定模式以减少变化。例如,对于诸如RTN噪声降低之类的噪声,可能期望高电流电平背景。例如,对于诸如数据漂移之类的噪声,可能期望低电流电平背景。在待机或深度掉电中,通过调制该控制栅极电压(诸如,通过使用与检验操作期间所使用的控制栅极电压相比的特定电压电平)而将阵列置于正确条件中,这意味着该控制栅极电平可被设定以在待机或深度掉电操作期间降低电流或升高电流电平。
在另一实施方案中,通过在读取或验证操作期间在控制栅极上施加0V、约0V或低偏置电压来执行读取或检验方法。使用字线代替控制栅线来接收行数据输入(激活值),诸如通过脉冲宽度调制的输入或施加到字线的模拟电压。
在另一实施方案中,w的“0”值(零w或未使用的小区)可被定义为<10nA或另一预定阈值。也就是说,如果(w+)-(w-)<10nA,则w被赋予值“0”。这在每次w=0时提供了更大的容差,并且对于由噪声、温度变化或其他力引起的不准确性将更加稳健。
在另一个实施方案中,优化权重映射以减少温度变化。例如,在w的期望值是5nA的情况下,一种可能的映射是(w+)=5nA并且(w-)=0nA,并且另一种可能的映射是(w+)=30nA并且(w-)=25nA。后者将消耗更多的功率并且在调谐过程期间可能引起更大的不准确性,但是将最小化温度变化。
在另一实施方案中,权重映射被优化以减少针对神经元的总噪声或温度变化。例如,每位线的所存储w+及w-值的数目(例如,对于5nA可实施为30nA-25nA或50nA-45nA或80nA-75nA)可经映射以在所有位线之间平衡,使得每位线的所存储值的数目对于所有位线近似相同。
在另一实施方案中,优化权重映射以减少针对神经元(位线)的总噪声。例如,可以在所有位线之间平衡每位线的所存储w+及w-值(单元)的数目,使得神经元(位线)中的所有权重(单元)的总噪声影响是最优的(具有最小噪声)。
表9A:权重调谐方法
电平 Iw Iw+ Iw-
16 80 80 0
15 75 75 0
14 70 70 0
13 65 65 0
12 60 60 0
11 55 55 0
10 50 50 0
9 45 45 0
8 40 40 0
7 35 35 0
6 30 30 0
5 25 25 0
4 20 20 0
3 15 15 0
2 10 10 0
1 5 5 0
表9B:权重调谐方法
电平 Iw Iw+ Iw-
16 -80 0 80
15 -75 0 75
14 -70 0 70
13 -65 0 65
12 -60 0 60
11 -55 0 55
10 -50 0 50
9 -45 0 45
8 -40 0 40
7 -35 0 35
6 -30 0 30
5 -25 0 25
4 -20 0 20
3 -15 0 15
2 -10 0 10
1 -5 0 5
表9A和表9B示出了针对以nA为单位的16个电平(状态)的示例性实施方案。意味着存储器单元可具有16个电平,如所示。根据公式Iw=Iw+-Iw-,表9A描述了w可以是16个不同正值之一的情况,并且表9B描述了w可以是16个不同负值之一的情况。所示的电流范围为0-80nA。
表10A:权重调谐方法
电平 Iw Iw+ Iw-
16 80 80 0
15 75 75 0
14 70 70 0
13 65 65 0
12 60 60 0
11 55 55 0
10 50 50 0
9 45 45 0
8 40 80 40
7 35 75 40
6 30 70 40
5 25 65 40
4 20 60 40
3 15 55 40
2 10 50 40
1 5 45 40
表10B:权重调谐方法
电平 Iw Iw+ Iw-
16 -80 0 80
15 -75 0 75
14 -70 0 70
13 -65 0 65
12 -60 0 60
11 -55 0 55
10 -50 0 50
9 -45 0 45
8 -40 40 80
7 -35 40 75
6 -30 40 70
5 -25 40 65
4 -20 40 60
3 -15 40 55
2 -10 40 50
1 -5 40 45
表10A和表10B示出了将电平的动态总电流范围从0-80nA压缩到40nA到85nA的实施方案。
对于表10A/11A/12A,可以用粗略或精细或超精细调谐步骤调整Iw-(例如编程和验证Iw-单元),并且可以用精细或超精细步骤调整Iw+(例如编程和验证Iw=(Iw+-Iw-),或仅通过验证Iw+单元)。对于表10B/11B/12B,可以用粗略或精细或超精细调谐步骤调整w+(例如编程和验证w+单元),并且可以用精细或超精细步骤调整Iw-(例如编程和验证Iw=(Iw+-Iw-),或仅通过验证IIw-单元)。
这在减少由于工艺、温度、噪声、操作应力或操作条件引起的变化和失配方面是有利的,这类似于图11-图12中所示的概念。
如表10A和表10B中所示,将表的下半部分中的值增加正量(偏移偏置),使得那些值的总范围与表的上半部分近似相同。该偏移近似等于最大电流(电平)的一半。
表11A:权重调谐方法
电平 Iw Iw+ Iw-
16 80 100 20
15 75 95 20
14 70 90 20
13 65 85 20
12 60 80 20
11 55 75 20
10 50 70 20
9 45 65 20
8 40 80 40
7 35 75 40
6 30 70 40
5 25 65 40
4 20 60 40
3 15 55 40
2 10 50 40
1 5 45 40
表11B:权重调谐方法
电平 Iw Iw+ Iw-
16 -80 20 100
15 -75 20 95
14 -70 20 90
13 -65 20 85
12 -60 20 80
11 -55 20 75
10 -50 20 70
9 -45 20 65
8 -40 40 80
7 -35 40 75
6 -30 40 70
5 -25 40 65
4 -20 40 60
3 -15 40 55
2 -10 40 50
1 -5 40 45
表11A和表11B示出类似于图10A和10B的实施方案的实施方案,其中零权重(w=0)等于偏移偏置值。如示例示出了针对一个偏移偏置值的权重值的一个范围、针对两个偏移值的权重的两个子范围。
表12A:权重调谐方法
电平 Iw Iwa+ Iwa- Iwb+ Iwb-
16 80 40 0 40 0
15 75 35 0 40 0
14 70 35 0 35 0
13 65 32.5 0 32.5 0
12 60 30 0 30 0
11 55 27.5 0 27.5 0
10 50 25 0 25 0
9 45 22.5 0 22.5 0
8 40 40 40 40 0
7 35 35 40 40 0
6 30 30 40 40 0
5 25 32.5 40 32.5 0
4 20 30 40 30 0
3 15 27.5 40 27.5 0
2 10 25 40 25 0
1 5 22.5 40 22.5 0
表12B:权重调谐方法
电平 Iw Iwa+ Iwa- Iwb+ Iwb-
16 -80 0 40 0 40
15 -75 0 37.5 0 37.5
14 -70 0 35 0 35
13 -65 0 32.5 0 32.5
12 -60 0 30 0 30
11 -55 0 27.5 0 27.5
10 -50 0 25 0 25
9 -45 0 22.5 0 22.5
8 -40 40 40 0 40
7 -35 40 37.5 0 37.5
6 -30 40 35 0 35
5 -25 40 32.5 0 32.5
4 -20 40 30 0 30
3 -15 40 27.5 0 27.5
2 -10 40 25 0 25
1 -5 40 22.5 0 22.5
表13:权重调谐方法
电平 Iw Iw+ Iw-
16 80 100 20
15 75 97.5 22.5
14 70 95 25
13 65 92.5 27.5
12 60 90 30
11 55 87.5 32.5
10 50 85 35
9 45 82.5 37.5
8 40 80 40
7 35 77.5 42.5
6 30 75 45
5 25 72.5 47.5
4 20 70 50
3 15 67.5 52.5
2 10 65 55
1 5 62.5 57.5
表13示出了针对正权重和负权重使用变化偏移的实施方案。
表14:权重调谐方法
电平 Iw Iw+ Iw-
16 80 120 40
15 75 115 40
14 70 110 40
13 65 105 40
12 60 100 40
11 55 95 40
10 50 90 40
9 45 85 40
8 40 80 40
7 35 75 40
6 30 70 40
5 25 65 40
4 20 60 40
3 15 55 40
2 10 50 40
1 5 45 40
表14示出了针对正权重和负权重使用共同偏移的实施方案。
表15:权重调谐方法
Iw Iw+ Iw-
80 120 40
75 115 40
70 110 40
65 105 40
60 100 40
55 95 40
50 90 40
45 85 40
40 115 75
35 105 70
30 95 65
25 85 60
20 75 55
15 65 50
10 55 45
5 45 40
表15示出了对权重使用递增偏移的实施方案。
表16:权重调谐方法
Iw Iw+ Iw-
80 120 40
75 120 45
70 120 50
65 120 55
60 120 60
55 120 65
50 120 70
45 120 75
40 120 80
35 120 85
30 120 90
25 120 95
20 120 100
15 120 105
10 120 110
5 120 115
表16示出了对权重使用递减偏移的实施方案。它还示出了针对Iw+的恒定偏移。它还示出了Iw+的最大恒定值,基本上使所有权重向最大值移动。
表12A和表12B示出类似于图10A及图10B的实施方案的实施方案,其中每个w+或w+值由两个存储器单元实施以将总动态范围进一步减小约另一半。
应当理解,以上实施方案中提供的w+和w-的值仅仅是示例,并且根据所公开的概念可以使用其他值。
例如,偏移偏置值可以是用于移位针对每个电平的值的任何值,或者它可以是用于所有电平的固定值。实际上,每个w被实现为差分单元,其可以有效地最小化来自工艺、温度、噪声(诸如RTN或电源噪声)、应力或操作条件的变化或失配。
图36A示出随温度变化的数据行为(I-V曲线)(例如,在亚阈值区域中),图36B示出在VMM系统的操作期间由数据漂移产生的问题,并且图36C和图36D示出用于补偿数据漂移的块并且关于图36C,示出用于补偿温度变化的块。
图36A示出随工作温度增加的VMM系统的已知特性,VMM阵列中的任何给定所选非易失性存储器单元中的感测电流在亚阈值区域中增加,在饱和区域中减小或者通常在线性区域中减小。
图36B示出随时间使用的阵列电流分布(数据漂移),并且其示出来自VMM阵列的合计输出(其为来自VMM阵列中的所有位线的电流的总和)随着工作时间使用向右(或向左,这取决于所使用的技术)偏移,这意味着总的合计输出将随着VMM系统的寿命使用而漂移。这种现象被称为数据漂移,因为数据由于使用条件而漂移并且由于环境因素而劣化。
图36C示出位线补偿电路3600,该位线补偿电路可以包括将补偿电流iCOMP注入位线输出电路3610的输出以补偿数据漂移。位线补偿电路3600可以包括基于电阻器或电容器网络由缩放器电路对输出进行放大或缩小。位线补偿电路3600可以包括基于其电阻器或电容器网络由移位器电路对输出进行移位或偏移。
图36D示出检测数据漂移量的数据漂移监测器3620。该信息继而用作位线补偿电路3600的输入,以便可以选择适当水平的iCOMP
图37示出位线补偿电路3700,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路3700包括可调电流源3701和可调电流源3702,该两者共同生成iCOMP,其中iCOMP等于由可调电流源3701生成的电流减去由可调电流源3701生成的电流。
图38示出位线补偿电路3700,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路3800包括运算放大器3801、可调电阻器3802和可调电阻器3803。运算放大器3801在其同相端子上接收参考电压VREF,并且在其反相端子上接收VINPUT,其中VINPUT是从图36C中的位线输出电路3610接收的电压,并且生成输出VOUTPUT,其中VOUTPUT是VINPUT的缩放版本,以基于电阻器3803和3802的比率补偿数据漂移。通过配置电阻器3803和/或3802的值,可以放大或缩小VOUTPUT
图39示出位线补偿电路3900,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路3900包括运算放大器3901、电流源3902、开关3904和可调积分输出电容器3903。这里,电流源3902实际上是VMM阵列中的单条位线上或多条位线(诸如一条用于求和正权重w+,一条用于求和负权重w-)的集合上的输出电流。运算放大器3901在其同相端子上接收参考电压VREF,并且在其反相端子上接收VINPUT,其中VINPUT是从图36C中的位线输出电路3610接收的电压。位线补偿电路3900充当积分器,其对在可调积分时间内通过电容器3903的电流Ineu进行积分,以生成输出电压VOUTPUT,其中VOUTPUT=Ineu*积分时间/C3903,其中C3903是电容器3903的值。因此,输出电压VOUTPUT与(位线)输出电流Ineu成正比,与积分时间成正比,并且与电容器3903的电容成反比。位线补偿电路3900生成输出VOUTPUT,其中VOUTPUT的值基于电容器3903的配置值和/或积分时间来缩放以补偿数据漂移。
图40示出位线补偿电路4000,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路4000包括具有M:N比率的电流镜4010,这意味着ICOMP=(M/N)*iinput。电流镜4010接收电流iINPUT,并且对该电流进行镜像,并且任选地缩放该电流以生成iCOMP。因此,通过配置M参数和/或N参数,可以放大或缩小iCOMP
图41示出位线补偿电路4100,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路4100包括运算放大器4101、可调缩放电阻器4102、可调移位电阻器4103和可调电阻器4104。运算放大器4101在其同相端子上接收参考电压VREF,并且在其反相端子上接收VIN。VIN响应于VINPUT和Vshft而生成,其中VINPUT是从图36C中的位线输出电路3610接收的电压,并且Vshft是旨在实现VINPUT与VOUTPUT之间移位的电压。
因此,VOUTPUT是VINPUT的经缩放和移位版本,以补偿数据漂移。
图42示出位线补偿电路4200,其为图36中的位线补偿电路3600的一个实施方案。位线补偿电路4200包括运算放大器4201、输入电流源Ineu4202、电流移位器4203、开关4205和4206以及可调积分输出电容器4204。这里,电流源4202实际上是VMM阵列中的单条位线或多条位线上的输出电流Ineu。运算放大器4201在其同相端子上接收参考电压VREF,并且在其反相端子上接收IIN,其中IIN是Ineu与电流移位器4203输出的电流的总和,并且生成输出VOUTPUT,其中VOUTPUT被缩放(基于电容器4204)和移位(基于Ishifter 4203)以补偿数据漂移。
图43至图48示出可以用于在编程或读取操作期间提供待编程或读取到每个所选单元中的W值的各种电路。
图43示出神经元输出电路4300,其包括可调电流源4301和可调电流源4302,该两者共同生成IOUT,其中IOUT等于由可调电流源4301生成的电流IW+减去由可调电流源4302生成的电流IW-。可调电流Iw+4301是单元电流或神经元电流(诸如位线电流)用于实现正权重的缩放电流。可调电流Iw-4302是单元电流或神经元电流(诸如位线电流)用于实现负权重的缩放电流。电流缩放诸如通过M:N比率电流镜电路来完成,其中Iout=(M/N)*Iin。
图44示出神经元输出电路4400,其包括可调电容器4401、控制晶体管4405、开关4402、开关4403和可调电流源4404Iw+,该电流是诸如M:N电流镜电路的单元电流或(位线)神经元电流的缩放输出电流。晶体管4405用于例如对电流4404施加固定偏置电压。电路4404生成VOUT,其中VOUT与电容器4401成反比,与可调积分时间(开关4403闭合和开关4402断开的时间)成正比,并且与由可调电流源4404IW+生成的电流成正比。VOUT等于V+-((Iw+*积分时间)/C4401),其中C4401是电容器4401的值。电容器4401的正端子V+连接到正电源电压,并且电容器4401的负端子V-连接到输出电压VOUT
图45示出神经元电路4500,其包括电容器4401和可调电流源4502,该电流是诸如M:N电流镜的单元电流或(位线)神经元电流的缩放电流。电路4500生成VOUT,其中VOUT与电容器4401成反比,与可调积分时间(开关4501断开的时间)成正比,并且与由可调电流源4502IWi生成的电流成正比。电容器4401在完成其对电流Iw+积分的操作之后从神经元输出电路44重新使用。然后,正端子和负端子(V+和V-)在神经元输出电路45中交换,其中正端子连接到输出电压VOUT,该输出电压由电流Iw-去积分。负端子通过钳位电路(未示出)保持在先前的电压值。实际上,输出电路44用于正权重具体实施,并且电路45用于负权重具体实施,其中电容器4401上的最终电荷有效地表示组合权重(Qw=Qw+-Qw-)。
图46示出神经元电路4600,其包括可调电容器4601、开关4602、控制晶体管4604和可调电流源4603。电路4600生成VOUT,其中VOUT与电容器4601成反比,与可调积分时间(开关4602断开的时间)成正比,并且与由可调电流源4603IW-生成的电流成正比。电容器4601的负端子V-例如等于接地。电容器4601的正端子V+例如在对电流Iw-进行积分之前初始地被预充电到正电压。神经元电路4600可用于取代神经元电路4500与神经元电路4400以实现组合权重(Qw=Qw+-Qw-)。
图47描绘了神经元电路4700,其包括:运算放大器4703和4706;可调节电流源Iw+4701和Iw-4702;以及可调节电阻器4704、4705和4707。神经元电路4700生成VOUT,该电压等于R4707*(Iw+-Iw-)。可调电阻器4707实现对输出的缩放。可调电流源Iw+4701和Iw-4702也实现对输出的缩放,例如通过M:N比率电流镜电路(Iout=(M/N)*Iin)。
图48描绘了神经元电路4800,其包括:运算放大器4803和4806;开关4808和4809;可调节电流源Iw-4802和Iw+4801;可调节电容器4804、4805和4807。神经元电路4800生成VOUT,该电压与(Iw+-Iw-)成正比,与积分时间(开关4808和4809断开的时间)成正比,并且与电容器4807的电容成反比。可调电容器4807实现对输出的缩放。可调电流源Iw+4801和Iw-4802也实现对输出的缩放,例如通过M:N比率电流镜电路(Iout=(M/N)*Iin)。积分时间也可以调整输出缩放。
图49A、图49B和图49C示出输出电路诸如图33中的输出电路3307的框图。
在图49A中,输出电路4901包括ADC电路4911,其用于直接将模拟神经元输出4910数字化以提供数字输出位4912。
在图49B中,输出电路4902包括神经元输出电路4921和ADC 4911。神经元输出电路4921接收神经元输出4920并对其进行整形,然后由ADC电路4911数字化以生成输出4912。神经元输出电路4921可用于归一化、缩放、移位、映射、算术运算、激活和/或温度补偿,诸如先前所描述。ADC电路可以是串行(斜坡式或跃升式或计数式)ADC、SAR ADC、流水线型ADC、∑-Δ型ADC或任何类型的ADC。
在图49C中,输出电路包括神经元输出电路4921和转换器电路4931,该神经元输出电路接收神经元输出4930,并且该转换器电路用于将来自神经元输出电路4921的输出转换为输出4932。转换器4931可以包括ADC、AAC(类似于模拟到模拟转换器,诸如电流到电压转换器)、APC(模拟到脉冲转换器)或任何其他类型的转换器。ADC 4911或转换器4931可以用于通过例如位映射(例如,量化)或削波(例如,经削波ReLU)来实现激活函数。ADC 4911和转换器4931可以是可配置的,诸如用于更低或更高精度(例如,更低或更高位数)、更低或更高性能(例如,更慢或更快速度)等。
用于缩放和移位的另一实施方案是通过配置用于将阵列(位线)输出转换为诸如具有更低或更高位精度的数字位的ADC(模拟-数字)转换电路(诸如串行ADC、SAR ADC、流水线型ADC、斜坡式ADC等),然后根据某种函数(例如,线性或非线性、压缩、非线性激活等)操纵数字输出位,诸如通过归一化(例如,12位到8位)、移位或重新映射。ADC转换电路的实施例在由与本申请相同的受让人提交于2019年11月11日并且标题为“Precise ProgrammingMethod and Apparatus for Analog Neural Memory in a Deep Learning ArtificialNeural Network”的美国临时专利申请第62/933,809号中有所描述,该申请以引用的方式并入本文。
表9示出执行读取、擦除和编程操作的另选方法:
表9:闪存存储器单元的操作
SL BL WL CG EG P-Sub
读取 0 0.5 1 0 0 0
擦除 0 0 0 0/-8V 10V-12V/+8V 0
Program1 0-5V 0 0 8V -10到-12V 0
Program2 0 0 0 8V 0-5V -10V
读取和擦除操作类似于先前的表。然而,用于编程的两种方法由福勒-诺德海姆(FN)隧穿机制来实现。
用于对输入进行缩放的实施方案可以诸如通过一次启用VMM的一定数量的行然后将结果完全结合在一起来完成。
另一个实施方案是对输入电压进行缩放,并且适当地重新缩放输出以实现归一化。
用于对脉宽调制输入进行缩放的另一实施方案是通过调制脉宽的时序。该技术的实施例在由与本申请相同的受让人提交于2019年6月21日并且标题为“ConfigurableInput Blocks and Output Blocks and Physical Layout for Analog Neural Memoryin Deep Learning Artificial Neural Network”的美国专利申请第16/449,201号中有所描述,该申请以引用的方式并入本文。
用于对输入进行缩放的另一实施方案是通过一次启用一个输入二进制位,例如,对于8位输入IN7:0,按顺序分别评估IN0、IN1、…、IN7,然后将输出结果与适当的二进制位加权结合在一起。该技术的实施例在由与本申请相同的受让人提交于2019年6月21日并且标题为“Configurable Input Blocks and Output Blocks and Physical Layout forAnalog Neural Memory in Deep Learning Artificial Neural Network”的美国专利申请第16/449,201号中有所描述,该申请以引用的方式并入本文。
任选地,在上述实施方案中,为了验证或读取电流的目的而测量单元电流可以进行平均或多次测量,例如进行8次到32次测量,以减少噪声(诸如RTN或任何随机噪声)的影响和/或检测有缺陷并且需要由冗余位替换的任何异常值位。
应当指出,如本文所用,术语“在…上方”和“在…上”两者包容地包括“直接在…上”(之间未设置中间材料、元件或空间)和“间接在…上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。

Claims (50)

1.一种神经网络,包括:
非易失性存储器单元的矢量乘以矩阵乘法阵列,其中权重值w根据公式w=(w+)-(w-)作为差分对w+和w-被存储在所述阵列中的第一非易失性存储器单元和第二非易失性存储器单元中,其中w+和w-包括非零偏移值。
2.根据权利要求1所述的神经网络,其中所述非零偏移值是正值。
3.根据权利要求1所述的神经网络,其中所述非零偏移值是负值。
4.根据权利要求1所述的神经网络,其中当0值被期望用于w时,针对w+和w-存储等于所述非零偏移值的值。
5.根据权利要求1所述的神经网络,其中当用于w的0值是由小于预定阈值的用于w的存储值指示的时。
6.根据权利要求5所述的神经网络,其中所述预定阈值是5nA。
7.根据权利要求5所述的神经网络,其中所述预定阈值是10nA。
8.根据权利要求1所述的神经网络,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
9.根据权利要求1所述的神经网络,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
10.根据权利要求1所述的神经网络,其中通过粗略、精细或超精细调谐算法中的一者或多者将所述第一非易失性存储器单元调谐到w+,并且通过精细或超精细调谐算法中的一者或多者将所述第二非易失性存储器单元调谐到w-。
11.一种神经网络,包括:
非易失性存储器单元的矢量乘以矩阵乘法阵列,所述阵列被组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)作为差分对w+和w-被存储在第一非易失性存储器单元和第二非易失性存储器单元中,其中w+和w-值的存储近似均匀地分布在所述阵列中的所有列中。
12.根据权利要求11所述的神经网络,其中所述非零偏移值是正值。
13.根据权利要求11所述的神经网络,其中所述非零偏移值是负值。
14.根据权利要求11所述的神经网络,其中当0值被期望用于w时,针对w+和w-存储等于所述非零偏移值的值。
15.根据权利要求11所述的神经网络,其中当用于w的0值是由小于预定阈值的用于w的存储值指示的时。
16.根据权利要求15所述的神经网络,其中所述预定阈值是5nA。
17.根据权利要求15所述的神经网络,其中所述预定阈值是10nA。
18.根据权利要求11所述的神经网络,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
19.根据权利要求11所述的神经网络,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
20.根据权利要求11所述的神经网络,其中通过粗略、精细或超精细调谐算法中的一者或多者将所述第一非易失性存储器单元调谐到w+,并且通过精细或超精细调谐算法中的一者或多者来调谐所述第二非易失性存储器单元。
21.一种编程、验证和读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的差分对中的零值的方法,所述方法包括:
将所述差分对中的第一单元w+编程到第一电流值;
通过向所述第一单元的控制栅端子施加等于第一电压加上偏置电压的电压来验证所述第一单元;
将所述差分对中的第二单元w-编程到所述第一电流值;
通过向所述第二单元的控制栅端子施加等于所述第一电压加上所述偏置电压的电压来验证所述第二单元;
通过向所述第一单元的所述控制栅端子施加等于所述第一电压的电压来读取所述第一单元;
通过向所述第二单元的所述控制栅端子施加等于所述第一电压的电压来读取所述第二单元;
根据公式w=(w+)-(w-)来计算值w。
22.根据权利要求21所述的方法,其中通过粗略、精细或超精细调谐算法中的一者或多者来调谐所述第一单元,并且通过精细或超精细调谐算法中的一者或多者来调谐所述第二单元。
23.一种编程、验证和读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的差分对中的零值的方法,所述方法包括:
将所述差分对中的第一单元w+编程到第一电流值;
通过向所述第一单元的控制栅端子施加等于第一电压加上偏置电压的电压来验证所述第一单元;
将所述差分对中的第二单元w-编程到所述第一电流值;
通过向所述第二单元的控制栅端子施加等于所述第一电压加上所述偏置电压的电压来验证所述第二单元;
通过向所述第一单元的所述控制栅端子施加等于所述第一电压的电压来读取所述第一单元;
通过向所述第二单元的所述控制栅端子施加等于所述第一电压的电压来读取所述第二单元;
根据公式w=(w+)-(w-)来计算值w。
24.根据权利要求23所述的方法,其中所述第一电流值是正值。
25.根据权利要求23所述的方法,其中所述第二电流值是负值。
26.根据权利要求23所述的方法,其中通过粗略、精细或超精细调谐算法中的一者或多者将所述第一单元调谐到w+,并且通过精细或超精细调谐算法中的一者或多者将所述第二单元调谐到w-。
27.一种神经网络,包括:
非易失性存储器单元的矢量乘以矩阵乘法阵列,所述阵列被组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)被存储为差分对w+和w-,其中w+被存储为所述阵列中的第一非易失性存储器单元和第二非易失性存储器单元中的差分对,并且w-被存储为所述阵列中的第三非易失性存储器单元和第四非易失性存储器单元中的差分对,其中w+和w-值的存储被偏移偏置值。
28.根据权利要求27所述的神经网络,其中所有存储器单元的电流范围被近似减小了表示偏置值的存储器单元电流值。
29.根据权利要求27所述的神经网络,其中所述存储器单元具有多个电流电平。
30.根据权利要求28所述的神经网络,其中跨多个存储器单元电平共享偏置值。
31.根据权利要求27所述的神经网络,其中所述偏置值是正值。
32.根据权利要求27所述的神经网络,其中所述偏置值是负值。
33.根据权利要求27所述的神经网络,其中当0值被期望用于w时,针对w+和w-存储等于所述偏置值的值。
34.根据权利要求27所述的神经网络,其中用于w的0值是由小于预定阈值的用于w的存储值指示的。
35.根据权利要求34所述的神经网络,其中所述预定阈值是5nA。
36.根据权利要求34所述的神经网络,其中所述预定阈值是10nA。
37.根据权利要求27所述的神经网络,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
38.根据权利要求27所述的神经网络,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
39.根据权利要求27所述的神经网络,其中通过粗略、精细或超精细调谐算法中的一者或多者来调谐所述第一非易失性存储器单元和所述第三非易失性存储器单元,并且通过精细或超精细调谐算法中的一者或多者来调谐所述第二非易失性存储器单元和所述第四非易失性存储器单元。
40.一种神经网络,包括:
非易失性存储器单元的矢量乘以矩阵乘法阵列,所述阵列被组织成非易失性存储器单元的行和列,其中权重值w根据公式w=(w+)-(w-)被存储为第一非易失性存储器单元和第二非易失性存储器单元中的差分对w+和w-,其中w+的值选自非零值的第一范围并且w-的值选自非零值的第二范围,其中所述第一范围和所述第二范围不重叠。
41.根据权利要求40所述的神经网络,其中用于w的0值是由小于预定阈值的用于w的存储值指示的。
42.根据权利要求41所述的神经网络,其中所述预定阈值是5nA。
43.根据权利要求41所述的神经网络,其中所述预定阈值是10nA。
44.根据权利要求40所述的神经网络,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
45.根据权利要求40所述的神经网络,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
46.根据权利要求40所述的神经网络,其中通过粗略、精细或超精细调谐算法中的一者或多者将所述第一非易失性存储器单元调谐到w+,并且通过精细或超精细调谐算法中的一者或多者将所述第二非易失性存储器单元调谐到w-。
47.一种读取矢量乘以矩阵乘法阵列中的非易失性存储器单元的方法,所述方法包括:
读取存储在所述阵列中的选定单元中的权重,包括:
将零电压偏置施加到所述选定单元的控制栅端子;以及
感测包括从所述选定单元输出的电流的神经元输出电流。
48.根据权利要求47所述的方法,其中所述读取步骤还包括:
将电压施加到所述选定单元的字线端子。
49.一种操作矢量乘以矩阵乘法阵列中的非易失性存储器单元的方法,所述方法包括:
通过向所述非易失性存储器单元的控制栅施加第一偏置电压来读取所述非易失性存储器单元;以及
在待机操作、深度掉电操作或测试操作中的一者或多者期间将第二偏置电压施加到所述非易失性存储器单元的所述控制栅。
50.根据权利要求49所述的方法,还包括:
调制所述阵列中的背景数据模式或零权重或非用户单元。
CN202180093494.0A 2021-02-25 2021-05-19 用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置 Pending CN116917905A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/185,725 2021-02-25
US17/185,725 US20210209458A1 (en) 2020-01-03 2021-02-25 Precise data tuning method and apparatus for analog neural memory in an artificial neural network
PCT/US2021/033122 WO2022182378A1 (en) 2021-02-25 2021-05-19 Precise data tuning method and apparatus for analog neural memory in an artificial neural network

Publications (1)

Publication Number Publication Date
CN116917905A true CN116917905A (zh) 2023-10-20

Family

ID=76355597

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180093494.0A Pending CN116917905A (zh) 2021-02-25 2021-05-19 用于人工神经网络中的模拟神经存储器的精确数据调谐方法和装置

Country Status (6)

Country Link
EP (1) EP4298557A1 (zh)
JP (1) JP2024508807A (zh)
KR (1) KR20230110361A (zh)
CN (1) CN116917905A (zh)
TW (1) TWI809663B (zh)
WO (1) WO2022182378A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024063792A1 (en) * 2022-09-22 2024-03-28 Silicon Storage Technology, Inc. Verification method and system in artificial neural network array

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5029130A (en) 1990-01-22 1991-07-02 Silicon Storage Technology, Inc. Single transistor non-valatile electrically alterable semiconductor memory device
US6747310B2 (en) 2002-10-07 2004-06-08 Actrans System Inc. Flash memory cells with separated self-aligned select and erase gates, and process of fabrication
WO2017200883A1 (en) 2016-05-17 2017-11-23 Silicon Storage Technology, Inc. Deep learning neural network classifier using non-volatile memory array
US10346740B2 (en) * 2016-06-01 2019-07-09 Kla-Tencor Corp. Systems and methods incorporating a neural network and a forward physical model for semiconductor applications
US10643119B2 (en) * 2018-07-24 2020-05-05 Sandisk Technologies Llc Differential non-volatile memory cell for artificial neural network
US20200364583A1 (en) * 2019-05-14 2020-11-19 Robert D. Pedersen Iot sensor network artificial intelligence warning, control and monitoring systems and methods

Also Published As

Publication number Publication date
KR20230110361A (ko) 2023-07-21
JP2024508807A (ja) 2024-02-28
WO2022182378A1 (en) 2022-09-01
TWI809663B (zh) 2023-07-21
TW202236170A (zh) 2022-09-16
EP4298557A1 (en) 2024-01-03

Similar Documents

Publication Publication Date Title
JP7404542B2 (ja) 人工ニューラルネットワークにおけるアナログニューラルメモリのための精密なデータ調整方法及び装置
JP2023515531A (ja) 深層学習人工ニューラルネットワークにおけるアナログニューラルメモリセルの超精密チューニング
JP7153802B2 (ja) 深層学習人工ニューラルネットワークのアナログニューラルメモリにおいて不揮発性メモリセルのプログラミング動作中に格納された値を検証するためのアルゴリズム及び回路
TWI809663B (zh) 用於人工神經網路中之類比神經記憶體之精確資料調校方法及裝置
CN116635869A (zh) 深度学习人工神经网络中模拟神经存储器的数字输出机制
CN115968495A (zh) 用于人工神经网络中的模拟神经存储器阵列的自适应偏置解码器
CN115516565A (zh) 人工神经网络中的具有源极线拉低机构的模拟神经存储器阵列
US20210209458A1 (en) Precise data tuning method and apparatus for analog neural memory in an artificial neural network
CN117813653A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
CN118043889A (zh) 要施加到神经网络中的一个或多个存储器单元的偏置电压的确定
TW202336748A (zh) 決定施加至神經網路中的一或多個記憶體胞元的偏壓
CN117751406A (zh) 可配置为以模拟形式或数字形式存储神经存储器权重数据的混合存储器系统
CN117178323A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输出电路
CN117716427A (zh) 用于深度学习人工神经网络中的模拟神经存储器的输入电路

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination