CN113785311A - 用于深度学习人工神经网络中的模拟神经存储器的可配置输入块和输出块以及物理布局 - Google Patents
用于深度学习人工神经网络中的模拟神经存储器的可配置输入块和输出块以及物理布局 Download PDFInfo
- Publication number
- CN113785311A CN113785311A CN201980095991.7A CN201980095991A CN113785311A CN 113785311 A CN113785311 A CN 113785311A CN 201980095991 A CN201980095991 A CN 201980095991A CN 113785311 A CN113785311 A CN 113785311A
- Authority
- CN
- China
- Prior art keywords
- output
- input
- analog
- vector
- arrays
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
- G06N3/065—Analogue means
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/54—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using elements simulating biological cells, e.g. neuron
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C27/00—Electric analogue stores, e.g. for storing instantaneous values
- G11C27/005—Electric analogue stores, e.g. for storing instantaneous values with non-volatile charge storage, e.g. on floating gate or MNOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/02—Detection or location of defective auxiliary circuits, e.g. defective refresh counters
- G11C29/028—Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C2029/4402—Internal storage of test result, quality data, chip identification, repair information
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/50—Marginal testing, e.g. race, voltage or current testing
- G11C2029/5006—Current
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2216/00—Indexing scheme relating to G11C16/00 and subgroups, for features not directly covered by these groups
- G11C2216/02—Structural aspects of erasable programmable read-only memories
- G11C2216/04—Nonvolatile memory cell provided with a separate control gate for erasing the cells, i.e. erase gate, independent of the normal read control gate
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Biomedical Technology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- General Physics & Mathematics (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Neurology (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Read Only Memory (AREA)
- Non-Volatile Memory (AREA)
- Semiconductor Memories (AREA)
- Memory System (AREA)
- Image Processing (AREA)
- Analogue/Digital Conversion (AREA)
Abstract
本发明公开了利用非易失性存储器单元的模拟神经存储器系统的可配置输入块和输出块以及物理布局。输入块可被配置为支持在水平方向上布置的不同数量的阵列,并且输出块可被配置为支持在竖直方向上布置的不同数量的阵列。公开了用于在可配置输入块和输出块中使用的可调整部件。
Description
优先权声明
本申请要求于2019年5月2日提交的名称为“CONFIGURABLE INPUT BLOCKS ANDOUTPUT BLOCKS AND PHYSICAL LAYOUT FOR ANALOG NEURAL MEMORY IN DEEP LEARNINGARTIFICIAL NEURAL NETWORK”的美国临时申请号62/842,279以及于2019年6月21日提交的名称为“CONFIGURABLE INPUT BLOCKS AND OUTPUT BLOCKS AND PHYSICAL LAYOUT FORANALOG NEURAL MEMORY IN DEEP LEARNING ARTIFICIAL NEURAL NETWORK”的美国专利申请号16/449,201的优先权。
技术领域
本发明公开了利用非易失性存储器单元的模拟神经存储器系统的可配置输入块和输出块以及相关联的物理布局。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得神经网络适应于输入并且能够学习。通常,神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于需要大量神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经存储器操作。神经网络设备包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。
必须擦除和编程在模拟神经存储器系统中使用的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。
矢量-乘矩阵乘法(VMM)系统中的一个挑战是快速且准确地将来自VMM的输出作为输入递送到另一个VMM,并且在有效地利用半导体管芯内的物理空间的同时这样做的能力。
所需要的是利用非易失性存储器单元的模拟神经存储器系统的可配置输入块和输出块以及物理布局。
发明内容
本发明公开了利用非易失性存储器单元的模拟神经存储器系统的可配置输入块和输出块以及相关联的物理布局。
模拟神经存储器系统的一个实施方案包括:多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;和输入块,所述输入块能够向可配置数量N的所述多个矢量-矩阵乘法阵列提供输入,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;其中接收所述输入的所述阵列响应于所述输入而提供输出。
模拟神经存储器系统的另一实施方案包括:多个矢量-矩阵乘法阵列,所述多个矢量-矩阵乘法阵列中的每一者包括组织成行和列的非易失性存储器单元;和输出块,所述输出块能够提供来自可配置数量N的所述多个矢量-矩阵乘法阵列的输出,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;其中响应于接收的输入而提供所述输出。
模拟神经存储器系统的另一实施方案包括:多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;和输出块,所述输出块用于在针对可配置数量N的所述矢量-矩阵乘法阵列的编程操作之后执行验证操作,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内。
模拟神经存储器系统的另一实施方案包括:多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;输入块,所述输入块能够向第一可配置数量N的所述矢量-矩阵乘法阵列提供输入,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;和输出块,所述输出块能够提供来自第二可配置数量M的所述矢量-矩阵乘法阵列的输出,其中M能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;其中所述输出块响应于所述输入而生成所述输出。
模拟神经存储器系统的另一实施方案包括:多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括组织成行和列的非易失性存储器单元;和输出块,所述输出块能够从所述矢量-矩阵乘法阵列中的一者或多者接收输出神经元电流,并且使用斜坡模数转换器来生成数字输出位。
模拟神经存储器系统的另一实施方案包括:多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括非易失性存储器单元;和输入块,所述输入块能够将多个数字输入位转换成二进制索引的时间求和信号,作为所述矢量-矩阵乘法阵列中的至少一者的定时输入。
一种针对模拟神经存储器执行输出转换的方法,所述模拟神经存储器包括多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括非易失性存储器单元,所述方法的实施方案包括:从所述多个矢量-矩阵乘法阵列中的一者或多者接收输出神经元电流;以及使用所述输出神经元电流和斜坡模数转换器来生成数字输出位,所述转换器以粗略比较模式和精细比较模式操作。
附图说明
图1为示出现有技术的人工神经网络的示意图。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元。
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6示出另一现有技术的分裂栅闪存存储器单元。
图7示出现有技术的堆叠栅闪存存储器单元。
图8为示出使用一个或多个非易失性存储器阵列的示例性人工神经网络的不同层级的示意图。
图9为示出矢量-矩阵乘法系统的框图。
图10为示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络的框图。
图11示出矢量-矩阵乘法系统的另一实施方案。
图12示出矢量-矩阵乘法系统的另一实施方案。
图13示出矢量-矩阵乘法系统的另一实施方案。
图14示出矢量-矩阵乘法系统的另一实施方案。
图15示出矢量-矩阵乘法系统的另一实施方案。
图16示出现有技术的长短期存储器系统。
图17示出在长短期存储器系统中使用的示例性单元。
图18示出图17的示例性单元的一个实施方案。
图19示出图17的示例性单元的另一实施方案。
图20示出现有技术的栅控递归单元系统。
图21示出在栅控递归单元系统中使用的示例性单元。
图22示出图21的示例性单元的一个实施方案。
图23示出图21的示例性单元的另一实施方案。
图24示出矢量-矩阵乘法系统的另一实施方案。
图25示出矢量-矩阵乘法系统的另一实施方案。
图26示出矢量-矩阵乘法系统的另一实施方案。
图27示出矢量-矩阵乘法系统的另一实施方案。
图28示出矢量-矩阵乘法系统的另一实施方案。
图29示出矢量-矩阵乘法系统的另一实施方案。
图30示出矢量-矩阵乘法系统的另一实施方案。
图31示出矢量-矩阵乘法系统的另一实施方案。
图32示出矢量-矩阵乘法系统的另一实施方案。
图33示出矢量-矩阵乘法系统的示例性框图。
图34示出矢量-矩阵乘法系统的示例性框图,其中竖直相邻的阵列共享输出块。
图35A示出矢量-矩阵乘法系统的示例性框图,其中水平相邻的阵列共享输入块。
图35B示出矢量-矩阵乘法系统的示例性框图,其中水平相邻的阵列共享输入块。
图36示出矢量-矩阵乘法系统的示例性框图。
图37A示出积分型模数转换器的一个实施方案。
图37B示出图37A的系统的示例性输出波形。
图38示出可提供给图37A的积分型模数转换器的示例性输入。
图39示出电流-电压转换器的一个实施方案。
图40示出数字数据-电压转换器。
图41示出可配置的模数转换器。
图42示出可配置的电流-电压输入电路。
图43A示出数字-脉冲行转换器。
图43B示出图43A的数字-脉冲行转换器的示例性波形。
图44A示出数字-脉冲行转换器。
图44B示出图44A的数字-脉冲行转换器的示例性波形。
图44C示出用于与图44A的数字-脉冲行转换器一起使用的行数字脉冲发生器。
图45A示出斜坡模数转换器输出转换器。
图45B和图45C示出用于由图45A的斜坡模数转换器输出转换器使用的示例性参考电压。
图46示出算法模数转换器输出转换器4600。
图47A示出SAR ADC。
图47B示出用于为图47A的SAR ADC生成数字输出位的算法。
图48示出Σ-Δ型模数转换器。
图49示出校准方法。
图50A示出实时校准方法。
图50B示出背景校准方法。
图51A示出校准和转换方法。
图51B示出另一校准和转换方法。
图52示出用于任选地与图37A至图37B和图45A至图45C的实施方案一起使用的比较器。
具体实施方式
本发明的人工神经网络利用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的端子用于执行读取、擦除和编程操作的典型电压范围:
表1:图2的闪存存储器单元210的操作
WL | BL | SL | |
读取1 | 0.5-3V | 0.1-2V | 0V |
读取2 | 0.5-3V | 0-2V | 2-0.1V |
擦除 | 约11-13V | 0V | 0V |
编程 | 1V-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示出可施加到存储器单元310的端子用于执行读取、擦除和编程操作的典型电压范围:
表2:图4的闪存存储器单元410的操作
WL/SG | BL | CG | EG | SL | |
读取1 | 0.5-2V | 0.1-2V | 0-2.6V | 0-2.6V | 0V |
读取2 | 0.5-2V | 0-2V | 0-2.6V | 0-2.6V | 2-0.1V |
擦除 | -0.5V/0V | 0V | 0V/-8V | 8-12V | 0V |
编程 | 1V | 1μA | 8-11V | 4.5-9V | 4.5-5V |
“读取1”是其中单元电流在位线上输出的读取模式。“读取2”是其中单元电流在源极线上输出的读取模式。
图5示出了存储器单元510,除了不含擦除栅EG,存储器单元510与图4的存储器单元410类似。通过将衬底18偏置到高电压并将控制栅CG28偏置到低电压或负电压来执行擦除。另选地,通过将字线22偏置到正电压并将控制栅28偏置到负电压来执行擦除。编程和读取类似于图4的那样。
图6示出三栅极存储器单元610,其为另一种类型的闪存存储器单元。存储器单元610与图4的存储器单元410相同,不同的是存储器单元610没有单独的控制栅。除了没有施加控制栅偏置,擦除操作(由此通过使用擦除栅进行擦除)和读取操作与图4的操作类似。在没有控制栅偏置的情况下,编程操作也被完成,并且结果,在编程操作期间必须在源极线上施加更高的电压,以补偿控制栅偏置的缺乏。
表3示出可施加到存储器单元610的端子用于执行读取、擦除和编程操作的典型电压范围:
表3:图6的闪存存储器单元610的操作
WL/SG | BL | EG | SL | |
读取1 | 0.5-2.2V | 0.1-2V | 0-2.6V | 0V |
读取2 | 0.5-2.2V | 0-2V | 0-2.6V | 2-0.1V |
擦除 | -0.5V/0V | 0V | 11.5V | 0V |
编程 | 1V | 2-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.1-2V | 0-2V | 0V |
读取2 | 0.5-2V | 0-2V | 2-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个特征映射,每个特征映射具有30×30像素。每个像素是从输入和内核的乘积中提取的新特征像素,因此每个特征映射是二维阵列,因此在该示例中,层C1由16层的二维阵列构成(记住本文所引用的层和阵列是逻辑关系,而不必是物理关系,即阵列不必定向于物理二维阵列)。在层C1中的16个特征映射中的每个特征映射均由应用于滤波器扫描的十六个不同组的突触权重中的一组生成。C1特征映射可全部涉及相同图像特征的不同方面,诸如边界识别。例如,第一映射(使用第一权重组生成,针对用于生成该第一映射的所有扫描而共享)可识别圆形边缘,第二映射(使用与第一权重组不同的第二权重组生成)可识别矩形边缘,或某些特征的纵横比,以此类推。
在从层C1转到层S1之前,应用激活函数P1(池化),该激活函数将来自每个特征映射中连续的非重叠2×2区域的值进行池化。池化函数的目的是对邻近位置求均值(或者也可使用max函数),以例如减少边缘位置的依赖性,并在进入下一阶段之前减小数据大小。在层S1处,存在16个15×15特征映射(即,十六个每个特征映射15×15像素的不同阵列)。从层S1到层C2的突触CB2利用4x4滤波器扫描S1中的映射,其中滤波器移位1个像素。在层C2处,存在22个12×12特征映射。在从层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)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。此外,不同层可使用n位存储器单元(支持多个不同级别的不同单元)的不同组合,包括2级存储器单元(意味着仅2个级别,“0”和“1”)。
VMM阵列
图11示出神经元VMM阵列1100,该神经元VMM阵列特别适用于图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
其中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分别为存储器单元的宽度和长度。
对于使用存储器单元(诸如参考存储器单元或外围存储器单元)或晶体管将输入电流转换为输入电压的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
此处,wa=存储器阵列中的每个存储器单元的w。
字线或控制栅可用作输入电压的存储器单元的输入。
另选地,本文所述的VMM阵列的闪存存储器单元可被配置成在线性区域中操作:
Ids=β*(Vgs-Vth)*Vds;β=u*Cox*Wt/L,
其中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阵列32的其他实施方案,该申请以引用方式并入本文。如本文所述,源极线或位线可以用作神经元输出(电流求和输出)。
图12示出神经元VMM阵列1200,该神经元VMM阵列特别适用于图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.5-3.5V | -0.5V/0V | 0.1-2V(Ineuron) | 0.6V-2V/FLT | 0V | 0V |
擦除 | 约5-13V | 0V | 0V | 0V | 0V | 0V |
编程 | 1V-2V | -0.5V/0V | 0.1-3uA | Vinh约2.5V | 4-10V | 0-1V/FLT |
图13示出神经元VMM阵列1300,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。VMM阵列1300包括非易失性存储器单元的存储器阵列1303、第一非易失性参考存储器单元的参考阵列1301和第二非易失性参考存储器单元的参考阵列1302。参考阵列1301和1302在VMM阵列1300的行方向上延伸。VMM阵列与VMM 1100类似,不同的是在VMM阵列1300中,字线在竖直方向上延伸。这里,输入设置在字线(WLA0、WLB0、WLA1、WLB2、WLA2、WLB2、WLA3、WLB3)上,并且输出在读取操作期间出现在源极线(SL0、SL1)上。置于各源极线上的电流执行来自连接到该特定源极线的存储器单元的所有电流的求和函数。
表6示出VMM阵列1300的操作电压。表中的列指示置于用于所选单元的字线、用于未选单元的字线、用于所选单元的位线、用于未选单元的位线、用于所选单元的源极线和用于未选单元的源极线上的电压。行指示读取、擦除和编程操作。
表6:图13的VMM阵列1300的操作
WL | WL-未选 | BL | BL-未选 | SL | SL-未选 | |
读取 | 0.5-3.5V | -0.5V/0V | 0.1-2V | 0.1V-2V/FLT | 约0.3-1V(Ineuron) | 0V |
擦除 | 约5-13V | 0V | 0V | 0V | 0V | SL-禁止(约4-8V) |
编程 | 1-2V | -0.5V/0V | 0.1-3uA | Vinh约2.5V | 4-10V | 0-1V/FLT |
图14示出神经元VMM阵列1400,该神经元VMM阵列特别适用于图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,该神经元VMM阵列特别适用于图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的操作
图24示出神经元VMM阵列2400,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在VMM阵列2400中,输入INPUT0…,INPUTN分别在位线BL0,…BLN上被接收,并且输出OUTPUT1、OUTPUT2、OUTPUT3和OUTPUT4分别在源极线SL0、SL1、SL2和SL3上生成。
图25示出神经元VMM阵列2500,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0、INPUT1、INPUT2和INPUT3分别在源极线SL0、SL1、SL2和SL3上被接收,并且输出OUTPUT0,…OUTPUTN在位线BL0,…,BLN上生成。
图26示出神经元VMM阵列2600,该神经元VMM阵列特别适用于图2所示的存储器单元210,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM分别在字线WL0,…,WLM上被接收,并且输出OUTPUT0,…OUTPUTN在位线BL0,…,BLN上生成。
图27示出神经元VMM阵列2700,该神经元VMM阵列特别适用于图3所示的存储器单元310,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM分别在字线WL0,…,WLM上被接收,并且输出OUTPUT0,…OUTPUTN在位线BL0,…,BLN上生成。
图28示出神经元VMM阵列2800,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTn分别在竖直控制栅线CG0,…,CGN上被接收,并且输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图29示出神经元VMM阵列2900,该神经元VMM阵列特别适用于图4所示的存储器单元410,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTN分别在位线控制栅极2901-1、2901-2至2901-(N-1)和2901-N的栅极上被接收,这些栅极分别耦接到位线BL0至BLN。示例性输出OUTPUT1和OUTPUT2在源极线SL0和SL1上生成。
图30示出神经元VMM阵列3000,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM在字线WL0,…,WLM上被接收,并且输出OUTPUT0,…,OUTPUTN分别在位线BL0,…,BLN上生成。
图31示出神经元VMM阵列3100,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM在控制栅线CG0,…,CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直源极线SL0,…,SLN上生成,其中每个源极线SLi耦接到列i中的所有存储器单元的源极线端子。
图32示出神经元VMM阵列3200,该神经元VMM阵列特别适用于图3所示的存储器单元310、图5所示的存储器单元510和图7所示的存储器单元710,并且用作输入层与下一层之间的神经元的突触和部件。在该示例中,输入INPUT0,…,INPUTM在控制栅线CG0,…,CGM上被接收。输出OUTPUT0,…,OUTPUTN分别在竖直位线BL0,…,BLN上生成,其中每个位线BLi耦接到列i中的所有存储器单元的位线端子。
长短期存储器
现有技术包括被称为长短期存储器(LSTM)的概念。LSTM单元通常用于神经网络中。LSTM允许神经网络在预定的任意时间间隔内记住信息并在后续操作中使用该信息。常规的LSTM单元包括单元、输入栅、输出栅和忘记栅。三个栅调控进出单元的信息流以及信息在LSTM中被记住的时间间隔。VMM尤其可用于LSTM单元中。
图16示出了示例性LSTM 1600。该示例中的LSTM 1600包括单元1601、1602、1603和1604。单元1601接收输入矢量x0并生成输出矢量h0和单元状态矢量c0。单元1602接收输入矢量x1、来自单元1601的输出矢量(隐藏状态)h0和来自单元1601的单元状态c0,并生成输出矢量h1和单元状态矢量c1。单元1603接收输入矢量x2、来自单元1602的输出矢量(隐藏状态)h1和来自单元1602的单元状态c1,并生成输出矢量h2和单元状态矢量c2。单元1604接收输入矢量x3、来自单元1603的输出矢量(隐藏状态)h2和来自单元1603的单元状态c2,并生成输出矢量h3。可使用另外的单元,并且具有四个单元的LSTM仅为示例。
图17示出可用于图16中的单元1601、1602、1603和1604的LSTM单元1700的示例性具体实施。LSTM单元1700接收输入矢量x(t)、来自前一单元的单元状态矢量c(t-1)和来自前一单元的输出矢量h(t-1),并生成单元状态矢量c(t)和输出矢量h(t)。
LSTM单元1700包括sigmoid函数设备1701、1702和1703,每个sigmoid函数设备应用0至1之间的数字来控制允许输入向量中的每个分量通过到输出向量的数量。LSTM单元1700还包括用于将双曲线正切函数应用于输入向量的tanh设备1704和1705、用于将两个向量相乘在一起的乘法器设备1706、1707和1708以及用于将两个向量相加在一起的加法设备1709。输出矢量h(t)可被提供给系统中的下一个LSTM单元,或者其可被访问用于其他目的。
图18示出LSTM单元1800,该LSTM单元为LSTM单元1700的具体实施的示例。为了方便读者,在LSTM单元1800中使用与LSTM单元1700相同的编号。sigmoid函数设备1701、1702和1703以及tanh设备1704各自包括多个VMM阵列1801和激活电路块1802。因此,可以看出,VMM阵列在某些神经网络系统中使用的LSTM单元中特别有用。乘法器设备1706、1707和1708以及加法设备1709以数字方式或模拟方式实施。激活函数块1802可以数字方式或模拟方式实施。
LSTM单元1800的替代形式(以及LSTM单元1700的具体实施的另一示例)在图19中示出。在图19中,sigmoid函数设备1701、1702和1703以及tanh设备1704以时分复用方式共享相同的物理硬件(VMM阵列1901和激活函数块1902)。LSTM单元1900还包括将两个矢量相乘在一起的乘法器设备1903,将两个矢量相加在一起的加法设备1908,tanh设备1705(其包括激活电路块1902),当从sigmoid函数块1902输出值i(t)时存储值i(t)的寄存器1907,当值f(t)*c(t-1)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1904,当值i(t)*u(t)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1905,当值o(t)*c~(t)通过多路复用器1910从乘法器设备1903输出时存储该值的寄存器1906,和多路复用器1909。
LSTM单元1800包含多组VMM阵列1801和相应的激活函数块1802,而LSTM单元1900仅包含一组VMM阵列1901和激活函数块1902,它们用于表示LSTM单元1900的实施方案中的多个层。LSTM单元1900将需要比LSTM1800更少的空间,因为与LSTM单元1800相比,LSTM单元1900只需要其1/4的空间用于VMM和激活函数块。
还可理解,LSTM单元通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。
栅控递归单元
模拟VMM具体实施可用于栅控递归单元(GRU)系统。GRU是递归神经网络中的栅控机构。GRU类似于LSTM,不同的是GRU单元一般包含比LSTM单元更少的部件。
图20示出了示例性GRU 2000。该示例中的GRU 2000包括单元2001、2002、2003和2004。单元2001接收输入矢量x0并生成输出矢量h0。单元2002接收输入矢量x1、来自单元2001的输出矢量h0并生成输出矢量h1。单元2003接收输入矢量x2和来自单元2002的输出矢量(隐藏状态)h1,并生成输出矢量h2。单元2004接收输入矢量x3和来自单元2003的输出矢量(隐藏状态)h2,并生成输出矢量h3。可以使用另外的单元,并且具有四个单元的GRU仅仅是示例。
图21示出可用于图20的单元2001、2002、2003和2004的GRU单元2100的示例性具体实施。GRU单元2100接收输入矢量x(t)和来自前一个GRU单元的输出矢量h(t-1),并生成输出矢量h(t)。GRU单元2100包括sigmoid函数设备2101和2102,每个设备将介于0和1之间的数应用于来自输出矢量h(t-1)和输入矢量x(t)的分量。GRU单元2100还包括用于将双曲线正切函数应用于输入矢量的tanh设备2103、用于将两个矢量相乘在一起的多个乘法器设备2104、2105和2106、用于将两个矢量相加在一起的加法设备2107,以及用于从1中减去输入以生成输出的互补设备2108。
图22示出GRU单元2200,该GRU单元为GRU单元2100的具体实施的示例。为了方便读者,GRU单元2200中使用与GRU单元2100相同的编号。如图22所示,sigmoid函数设备2101和2102以及tanh设备2103各自包括多个VMM阵列2201和激活函数块2202。因此,可以看出,VMM阵列在某些神经网络系统中使用的GRU单元中特别有用。乘法器设备2104、2105和2106、加法设备2107和互补设备2108以数字方式或模拟方式实施。激活函数块2202可以数字方式或模拟方式实施。
GRU单元2200的替代形式(以及GRU单元2300的具体实施的另一示例)在图23中示出。在图23中,GRU单元2300利用VMM阵列2301和激活函数块2302,当该激活函数块在被配置成sigmoid函数时,应用0至1之间的数字来控制允许输入矢量中的每个分量到达输出矢量的数量。在图23中,sigmoid函数设备2101和2102以及tanh设备2103以时分复用方式共享相同的物理硬件(VMM阵列2301和激活函数块2302)。GRU单元2300还包括将两个矢量相乘在一起的乘法器设备2303,将两个矢量相加在一起的加法设备2305,从1减去输入以生成输出的互补设备2309,多路复用器2304,当值h(t-1)*r(t)通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2306,当值h(t-1)*z(t)通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2307,和当值h^(t)*(1-z(t))通过多路复用器2304从乘法器设备2303输出时保持该值的寄存器2308。
GRU单元2200包含多组VMM阵列2201和激活函数块2202,而GRU单元2300仅包含一组VMM阵列2301和激活函数块2302,它们用于表示GRU单元2300的实施方案中的多个层。GRU单元2300将需要比GRU单元2200更少的空间,因为与GRU单元2200相比,GRU单元2300只需要其1/3的空间用于VMM和激活函数块。
还可以理解的是,GRU系统通常将包括多个VMM阵列,每个VMM阵列需要由VMM阵列之外的某些电路区块(诸如求和器和激活电路区块以及高电压生成区块)提供的功能。为每个VMM阵列提供单独的电路区块将需要半导体设备内的大量空间,并且将在一定程度上是低效的。
VMM阵列的输入可为模拟电平、二进制电平或数字位(在这种情况下,需要DAC来将数字位转换成适当的输入模拟电平),并且输出可为模拟电平、二进制电平或数字位(在这种情况下,需要输出ADC来将输出模拟电平转换成数字位)。
对于VMM阵列中的每个存储器单元,每个权重W可由单个存储器单元或由差分单元或由两个混合存储器单元(2个单元的平均值)来实现。在差分单元的情况下,需要两个存储器单元来实现权重W作为差分权重(W=W+–W-)。在两个混合存储器单元中,需要两个存储器单元来实现权重W作为两个单元的平均值。
针对VMM阵列的可配置输入-输出系统
图33示出VMM系统3300。VMM系统3300包括VMM阵列3301(其可基于先前所讨论的VMM阵列设计中的任一种,诸如VMM阵列1100、1200、1300、1400、1500、2400、2500、2600、2700、2800、2900、3000、3100和3200或其他VMM阵列设计)、低压行解码器3302、高压行解码器3303、列解码器3304、列驱动器3305、控制逻辑3306、偏置电路3307、神经元输出电路块3308、输入VMM电路块3309、算法控制器3310、高压发生器块3311、模拟电路块3315和控制逻辑3316。
输入电路块3309用作从外部输入到存储器阵列3301的输入端子的接口。输入电路块3309可包括但不限于DAC(数模转换器)、DPC(数字-脉冲转换器)、APC(模拟-脉冲转换器)、IVC(电流-电压转换器)、AAC(模拟-模拟转换器,诸如电压-电压定标器)或FAC(频率-模拟转换器)。神经元输出块3308用作从存储器阵列输出到外部接口的接口(未示出)。神经元输出块3308可包括但不限于ADC(模数转换器)、APC(模拟-脉冲转换器)、DPC(数字-脉冲转换器)、IVC(电流-电压转换器)或IFC(电流-频率转换器)。神经元输出块3308可包括但不限于激活功能、归一化电路和/或重新缩放电路。
图34示出VMM系统3400,该VMM系统包括VMM阵列3401、3402、3403和3404;高压行解码器3405和3406;低压行解码器3407和3408;输入块3409和3410(各自类似于图33中的输入块3309);和输出块3411和3412。在该配置中,VMM阵列3401和3403共享一组位线以及输出块3411,并且VMM阵列3402和3404共享一组位线以及输出块3412。VMM阵列3401和3403可被同时读取,这将有效地将它们组合成单个更大的阵列,或者它们可在不同的时间被读取。输出块3411和3412(类似于图33中的输出块3308)可被配置为能够一次处理来自一个阵列的读取操作(诸如仅来自阵列3401或3403的读取)或一次处理来自多个阵列的读取操作(诸如来自阵列3401和3403两者的读取)。
图35A示出VMM系统3500,该VMM系统包括VMM阵列3503、3504和3505;共享全局高压行解码器3506;局部高压行解码器3507和3508;共享低压行解码器3509;和输入块3510。在该配置中,VMM阵列3503、3504和3505共享输入块3510。VMM阵列3503、3504和3505可同时通过输入块3510接收输入(例如,字线、控制栅线、擦除栅线或源极线上的电压或脉冲),这有效地将它们组合成单个更大的VMM阵列,或者它们可在不同的时间通过输入块3510接收输入,这有效地使它们作为具有相同输入块的三个不同VMM阵列操作。输入块3510可被配置为能够一次向一个阵列或一次向多个阵列提供输入。
图35B示出VMM系统3550,该VMM系统包括VMM阵列3511、3512、3513和3514;全局高压解码器3515;局部高压行解码器3516、3517和3518;共享低压行解码器3519;和输入块3520。在该配置中,VMM阵列3511、3512、3513和3514共享输入块3520。VMM阵列3511、3512、3513和3514可同时通过输入块3520接收输入(例如,字线、控制栅线、擦除栅线或源极线上的电压或脉冲),这有效地将它们组合成单个更大的阵列,或者它们可在不同的时间通过输入块3520接收输入,这有效地使它们作为具有相同输入块3520的三个不同VMM阵列操作。输入块3520可被配置为能够一次向一个阵列或一次向多个阵列提供输入。例如,图35A的输入块3510被配置为向3个阵列提供输入,并且输入块3520被配置为向4个阵列提供输入。
图36示出VMM系统3600,该VMM系统包括水平组3601和水平组3611。水平组3601包括VMM阵列3602和3603;共享全局高压行解码器3604;局部高压行解码器3605;共享低压行解码器3606;和输入块3607。VMM阵列3602和3603共享输入块3607。输入块3607可被配置为能够一次向一个阵列或一次向多个阵列提供输入。
水平组3611包括VMM阵列3612和3613;共享全局高压解码器3614;局部高压行解码器3615;共享低压行解码器3616;和输入块3617。VMM阵列3612和3613共享输入块3617。输入块3617可被配置为能够一次向一个阵列或一次向多个阵列提供输入。
在第一配置中,水平组3601利用输出块3608和3609,并且水平组3611利用输出块3618和3619。输出块3608、3609、3618和3619可输出电流、数字脉冲或数字位作为输出。在数字位为输出的一个实施方案中,输出块3608、3609、3618和3619各自输出8个数字输出位。
在第二配置中,输出块3608和3609被禁用,并且VMM阵列3602和3612共享输出块3618,并且VMM阵列3603和3613共享输出块3619。VMM阵列3602和3612可被同时读取,这有效地将它们组合成单个更大的竖直阵列(意味着每个位线有更多行),或者它们可在不同的时间被读取。如果VMM阵列3602和3612被同时读取,则在其中每个输出块在耦接到仅一个阵列时将输出8位范围的值的一个实施方案中,则输出块3608和3609各自将输出9位范围的值。这是由于已通过使用2个阵列作为单个大阵列而加倍的输出神经元的动态范围。在这种情况下,如果下一个阵列仅需要8位的动态范围,则输出可能需要被重新缩放或归一化(例如,从9位缩小到8位)。在另一个实施方案中,当增加竖直阵列的数量时,输出位的数量可保持相同。
类似地,VMM阵列3603和3613可被同时读取,这有效地将它们组合成单个更大的阵列,或者它们可在不同的时间被读取。输出块3618和3619可被配置为能够一次处理来自一个阵列的读取操作或一次处理来自多个阵列的读取操作。
在VMM系统3400、3500、3550和3600中,当系统可被配置为将不同数量的阵列与每个输入块和/或输出块一起使用时,则输入块或输出块本身也必须是可配置的。例如,在VMM系统3600中,如果输出块3608、3609、3612和3619在耦接到单个阵列时各自输出8位输出,则输出块3618和3619各自将需要被配置为在其耦接到两个阵列(例如,分别为阵列3602和3612以及阵列3603和3609)时输出9位输出。如果这些输出随后将被提供至另一VMM系统的输入块,则如果输入块期望8位输入而不是9位输入,输出将需要首先被归一化。已知用于将N位值转换成M位值的多种模拟和数字技术。在前述示例中,N将为9并且M将为8,但本领域的普通技术人员将理解,N和M可为任何正整数。
附加阵列可耦接到VMM系统3400、3500、3550和3600中的输入块和输出块。例如,在VMM系统3400中,可将超过两个阵列耦接到输入块3409并且可将超过两个阵列耦接到输入块3410;在VMM系统3500中,可将超过三个阵列耦接到输入块3510;在VMM系统3550中,可将超过四个阵列耦接到输入块3520;并且在VMM系统3600中,可将超过两个阵列耦接到输入块3607,可将超过两个阵列耦接到输入块3617,可将超过两个阵列耦接到输出块3618,并且可将超过两个阵列耦接到输出块3619。在那些情况下,相关的输入块和输出块需要被进一步配置为适应附加阵列。
VMM系统3400中的输出块3411和3412以及输出块3618和3619需要可被配置用于编程操作之后的验证操作,验证操作将受到连接到输出块的阵列的数量的影响。此外,对于编程/擦除验证(用于调谐,意味着在存储器的浮栅上产生特定电荷以产生期望的单元电流),输出块电路的准确度(例如,10位)需要大于推断读取所需的准确度(例如,8位)。例如,验证准确度>推断准确度,相差>=1位(例如,相差1-5位)。这是必需的,以确保一个层级与下一个层级之间具有足够裕度,诸如用于验证结果分布、数据保留漂移、温度或变化,而不受限制。
此外,图34、图35A、图35B和图36中的输入块3409、3410、3510、3520、3607和3617以及输出块3411、3412、3608、3609、3618和3619需要可被配置用于校准过程,因为校准将受连接到输出块的阵列的数量的影响。校准过程的示例包括用于补偿偏移、泄漏、制造过程和由于温度变化引起的变化的过程。
在下一节中,公开了用于在输入块和输出块中使用以使得能够基于耦接到输入块或输出块的阵列的数量来配置输入块和输出块的各种可调整部件。
输入块和输出块的部件
图37A示出可用于输出块(诸如图34和图36中的输出块3411、3412、3608、3609、3618和3619)中的积分型双混合斜率模数转换器(ADC)3700,其中输出神经元(INEU 3706)是由输出块从VMM阵列接收的输出电流。积分型双混合斜率模数转换器(ADC)3700将INEU 3706转换成一系列数字/模拟脉冲或数字输出位。图37B示出图37A中的积分型ADC 3700的操作波形。输出波形3710、3711和3714针对一个电流电平。输出波形3712、3713和3715针对另一更高的电流电平。波形3710和3712具有与输出电流的值成比例的脉冲宽度。波形3711和3713具有与输出电流的值成比例的脉冲数。波形3714和3715具有与输出电流的值成比例的数字输出位。
在一个实施方案中,ADC 3700将INEU 3706(其为由输出块从VMM阵列接收的模拟输出电流)转换成数字脉冲,该数字脉冲的宽度与神经元输出块中的模拟输出电流的量值成比例地变化,如图38中示出的示例所示。ADC 3700包括由积分型运算放大器3701和可调整积分型电容器3702构成的积分器,相对于可调整参考电流IREF 3707对INEU 3706进行积分。任选地,IREF 3707可包括温度系数为0或温度系数跟踪神经元电流INEU 3706的带隙滤波器。后一种温度系数任选地可从包含在测试阶段期间确定的值的参考阵列获得。在初始化阶段期间,开关3708闭合。然后,Vout 3703和运算放大器3701的负端子的输入将变为等于VREF值。此后,开关3708打开,并且在固定时间段tref期间,开关S1闭合,并且神经元电流INEU 3706被上积分。在固定时间段tref期间,Vout上升,并且其斜率随着神经元电流变化而变化。此后,在时间段tmeas期间,通过打开开关S1和闭合开关S2,恒定参考电流IREF在时间段tmeas期间(在此期间Vout下降)向下积分,其中tmeas是将Vout向下积分到VREF所需的时间。
当VOUT>VREFV时,输出EC 3705将为高,反之则为低。EC 3705因此生成脉冲,该脉冲的宽度反映时间段tmeas,其反过来与电流INEU 3706成正比(图37B中的脉冲3710和3712)。
任选地,输出脉冲EC 3705可被转换成具有均匀周期的一系列脉冲,以传输至电路的下一级,诸如另一个VMM阵列的输入块。在时间段tmeas开始时,将输出EC 3705连同参考时钟3741输入到与门3740中。在VOUT>VREF的时间段期间,输出将是脉冲序列3742(其中脉冲序列3742中脉冲的频率与时钟3741的频率相同)。脉冲数与时间段tmeas成正比,时间段tmeas与电流INEU 3706成正比(图37B中的波形3711和3713)。
任选地,脉冲序列3743可被输入到计数器3720,该计数器将对脉冲序列3742中的脉冲数进行计数并且将生成计数值3721,该计数值是脉冲序列3742中的脉冲数的数字计数,该数字计数与神经元电流INEU 3706成正比。计数值3721包括一组数字位(图37B中的波形3714和3715)。
在另一个实施方案中,积分型双斜率ADC 3700可将神经元电流INEU 3706转换成脉冲,其中该脉冲的宽度与神经元电流INEU 3706的量值成反比。这种反转可以数字或模拟方式完成,并被转换成一系列脉冲或数字位以用于输出到跟随电路。
响应于连接到积分型双混合斜率模数转换器(ADC)3700的阵列的数量N而对可调整积分型电容器3702和可调整参考电流IREF 3707进行调整。例如,当N个阵列连接到积分型双混合斜率模数转换器(ADC)3700时,可调整积分电容器3702通过1/N进行调整,或者可调整参考电流IREF 3707通过N进行调整。
任选地,可在VMM阵列和ADC 3700处于或高于操作温度时执行校准步骤,以抵消VMM阵列或控制电路中存在的任何泄漏电流,然后可从图37A中的Ineu中减去该偏移值。还可执行校准步骤以补偿除温度变化之外的过程或电压源变化。
输出电路块的操作方法包括首先执行用于偏移和电压源变化补偿的校准。接下来,执行输出转换(诸如将神经元电流转换成脉冲或数字位),并且然后执行数据归一化以将输出范围与下一个VMM阵列的输入范围对准。数据归一化可包括数据压缩或输出数据量化(诸如以将位的数量从10位减小到8位)。可在输出转换之后或在数据归一化、压缩或量化之后执行激活。下面参考下面讨论的图49、图50A、图50B和图51讨论校准算法的示例。
图39示出了电流-电压转换器3900,其任选地可用于将神经元输出电流转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。因此,当图34、图35A、图35B和图36中的输入块3409、3410、3510、3520、3607和3617接收模拟电流(而不是脉冲或数字数据)作为输入时,在这些输入块中可使用电流-电压转换器3900。
电流-电压转换器3900包括运算放大器3901、可调整电容器3902、开关3903、开关3904和此处表示由输入块接收的神经元电流INEU的电流源3905。在电流-电压操作期间,开关3903将打开,并且开关3904将闭合。输出Vout的振幅将与神经元电流INEU 3905的量值成正比地增加。
图40示出数字数据-电压转换器4000,其任选地可用于将数字数据(被接收为DIN)转换成例如可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。当开关4002闭合时,信号DIN的数据输入将使得IREF_u参考电流4001能够进入电容器4003,从而在其端子上产生电压。因此,当图34、图35A、图35B和图36中的输入块3409、3410、3510、3520、3607和3617接收数字数据(而不是脉冲或模拟电流)作为输入时,在这些输入块中可使用数字数据-电压转换器4000。此外,数字数据-电压转换器4000可被配置成使得在输入处作为信号DIN接收的数字数据通过打开开关4002和4004以及闭合开关4005来直接馈送到输出OUT。开关4002、4004和4005因此被配置成使得输出OUT能够接收电容器4003上的电压或直接接收作为信号DIN接收的数字数据。在所示的实施方案中,信号DIN作为数据脉冲被接收。
数字数据-电压脉冲转换器4000包括可调整参考电流4001、开关4002、可变电容器4003、开关4004和开关4005。可调整参考电流4001和可变电容器4003可被配置为具有不同值以调整数字数据-电压脉冲转换器400所附接到的阵列的大小的差异。在操作期间,数字数据控制开关4002,使得每当数字数据为高时开关4002闭合。当开关闭合时,可调整参考电流4001将对可变电容器4003进行充电。每当期望在节点OUT处提供输出时,诸如当阵列准备好被读取时,开关4004闭合。在替代方案中,开关4004可打开并且开关4005可闭合,并且数据输入可穿过作为输出。
图41示出可配置模数转换器4100,其任选地可用于将模拟神经元电流转换成数字数据。可配置模数转换器4100可用于输出块(诸如图34和图36中的输出块3411、3412、3608、3609、3618和3619),其中输出神经元(INEU 4101)是由输出块接收的输出电流。
可配置模数转换器4100包括电流源4101、可变电阻器4102和模数转换器4103。电流INEU 4101跨可变电阻器4102Rneu下降以产生电压Vneu=Ineu*Rneu。ADC 4103(诸如但不限于此积分型ADC、SAR ADC、闪存ADC或Σ-Δ型ADC)将该电压转换成数字位。
图42示出可配置的电流-电压转换器4200,其任选地可用于将模拟神经元电流转换成可作为VMM存储器阵列的输入(例如,在WL或CG线上)被施加的电压。因此,当图34、图35A、图35B和图36中的输入块3409、3410、3510、3520、3607和3617接收模拟电流(而不是脉冲或数字数据)作为输入时,在这些输入块中可使用可配置电流-电压转换器4200。可配置电流-电压转换器4200包括可调整电阻器Rin 4202并且接收输入电流Iin 4201(其为所接收的输入电流)并且生成Vin 4203,=Iin*Rin。
图43A和图43B示出了要在输入块、行解码器或输出块内使用的数字位-脉冲宽度转换器4300。来自数字位-脉冲宽度转换器4300的脉冲宽度输出与数字位的值成正比。
数字位-脉冲宽度转换器包括二进制计数器4301。二进制计数器4301的状态Q[N:0]可由加载序列中的串行或并行数据加载。行控制逻辑4310输出电压脉冲WLEN,该电压脉冲具有与从块诸如图37中的积分型ADC提供的数字数据输入的值成正比的脉冲宽度。
图43B示出输出脉冲宽度的波形,其中宽度与数字位值成正比。首先,反转所接收的数字位中的数据,并将反转的数字位串行地或并行地加载到计数器4301中。然后由行控制逻辑4310生成行脉冲宽度,该行脉冲宽度如波形4320所示,通过以二进制方式计数直到其达到最大计数器值。
针对DIN使用4位值的示例在表9中示出:
表9:数字输入位到输出脉冲宽度
任选地,脉冲序列-脉冲转换器可用于将包括脉冲序列的输出转换成宽度与脉冲序列中的脉冲数成正比地变化的单脉冲,该脉冲序列用作VMM阵列的将施加到VMM阵列内的字线或控制栅的输入。脉冲序列-脉冲转换器的示例是具有控制逻辑的二进制计数器。
另一个实施方案利用向上二进制计数器和数字比较逻辑。即,通过计数向上二进制计数器直到该二进制计数器的数字输出与数字输入位相同来生成输出脉冲宽度。
另一个实施方案利用向下二进制计数器。首先,将向下二进制计数器串行或并行地加载有数字数据输入模式。接下来,通过倒计向下二进制计数器直到该二进制计数器的数字输出达到最小值(即“0”逻辑状态)来生成输出脉冲宽度。
图44A示出数字数据-脉冲行转换器4400,该数字数据-脉冲行转换器包括二进制索引脉冲级4401-i,其中i在0至N(即,最低有效位LSB至最高有效位MSB)的范围内。行转换器4400用于向阵列提供行输入。每个级4401-i包括锁存器4402-i、开关4403-i和行数字二进制索引脉冲输入4404-i(RDIN_Ti)。例如,二进制索引脉冲输入4404-0(RDIN_T0)具有等于一个时间单位(即,1*tpls1单位)的脉冲宽度。二进制索引脉冲输入4404-1(RDIN_T1)具有等于两个时间单位(即,2*tpls1单位)的宽度。二进制索引脉冲输入4404-2(RDIN_T2)具有等于四个时间单位(即,4*tpls1单位)的宽度。二进制索引脉冲输入4403-3(RDIN_T3)具有等于八个时间单位(即,8*tpls1单位)的宽度。每行的以模式DINi的数字数据(来自神经元输出)存储在锁存器4402-i中。如果锁存器4402-i的输出Qi为“1”,则其将通过开关4403-i将二进制索引脉冲输入4404-i(RDIN_Ti)转移到时间求和转换器节点4408。每次求和转换器节点4408连接到与非门4404的相应输入,并且与非门4404的输出通过电平移位反相器4405生成行转换器WLIN/CGIN 4409的输出。时间求和转换器节点4408响应于公共时钟控制信号CLK而在时间上顺序地对二进制索引脉冲输入4404-i求和,因为二进制索引脉冲输入4404-i(RDIN_Ti)以顺序方式一次一个数字位地启用,例如从LSB到MSB,或从MSB到LSB,或任何随机位模式。
图44B示出示例性波形4420。这里示出的是行数字二进制索引脉冲输入4404-i(具体地,4404-0、4404-1、4404-2和4404-3)的示例性信号,以及来自电平移位反相器4405的示例性输出,标记为WL0和WL3,其中WL0和WL3由行转换器4400电路生成。在该示例中,WL0由其被断言的行解码器的行数字输入4403-0和4403-3(WL0:Q0=“1”,Q3=“1”)生成,并且WL3由其被断言的行解码器的行数字输入4403-1和4403-2(WL3:Q1=“1”,Q2=“1”)生成。如果没有行数字输入4403-x被断言,则在WL0或WL3上不存在脉冲(其控制逻辑未在图44A中示出)。假设来自数字-脉冲行转换器4400的其他行的输入(即与非门4404的其他输入)在该周期期间为高。
图44C示出行数字脉冲发生器4410,该行数字脉冲发生器生成行数字二进制索引脉冲输入4403-i(RDIN_Ti),其中脉冲的宽度与数字位的二进制值成比例,如上文关于图44A所述。
图45A示出斜坡模数转换器4400,该斜坡模数转换器包括电流源4401(其表示所接收的神经元电流,Ineu)、开关4402、可变可配置电容器4403,以及比较器4404,该比较器接收跨可变可配置电容器4403形成的电压(表示为Vneu)作为非反相输入并且接收可配置参考电压Vreframp作为反相输入并且生成输出Cout。Vreframp随着每个比较时钟周期以离散电平斜升。比较器4404将Vneu与Vreframp进行比较,并且因此当Vneu>Vreframp时,输出Cout将为“1”,并且否则将为“0”。因此,输出Cout将是脉冲,其宽度响应于Ineu而变化。较大的Ineu将致使Cout在较长时间段内为“1”,从而导致输出Cout的较宽脉冲。数字计数器4420将输出Cout的每个脉冲转换成数字输出位,如图45B分别针对两个不同的Ineu电流(表示为OT1A和OT2A)所示。另选地,斜坡电压Vreframp是连续斜坡电压4455,如图45B的曲线图4450所示。图45C中示出了用于通过利用粗略-精细斜坡转换算法来减小转换时间的多斜坡实施方案。第一粗略参考斜坡参考电压4471以快速方式斜坡变化以找出每个Ineu的子范围。接下来,针对每个子范围分别使用精细参考斜坡参考电压4472(即,Vreframp1和Vreframp2)以转换相应子范围内的Ineu电流。如图所示,存在精细参考斜坡电压的两个子范围。超过两个粗略/精细步骤或超过两个子范围是可能的。
图52示出用于任选地替代图37A和图45A中的比较器3704和4404使用的比较器5200。比较器5200可以是静态比较器(其不一定利用时钟信号)或动态比较器(其利用比较时钟信号)。如果比较器5200是动态比较器,则其可包括时钟控制的交叉耦接的反相器比较器、StrongARM比较器或其他已知动态比较器。当粗略使能5203被断言时,比较器5200作为粗略比较器操作,并且当精细使能5204被断言时,比较器5200作为精细比较器操作。选择信号5206任选地可用于指示粗略比较器模式或精细使能模式,或者其任选地可用于将比较器5200配置为作为静态比较器或动态比较器操作。对于比较器5200充当动态比较器的情况,比较器5200接收时钟信号5205。当作为动态比较器操作时,当比较器是粗略比较器时,比较时钟信号5205将是第一频率的第一时钟信号,并且当比较器是精细比较器时,时钟信号5205将是大于第一频率的第二频率的第二时钟信号。与比较器5200作为精细比较器操作的情况相比,比较器5200在作为粗略比较器操作时将具有更低的准确度和更慢的速度,但将使用更少的功率。因此,在转换斜坡变化周期期间,用于粗略比较的动态比较器可利用慢速比较时钟,而用于精细比较的动态比较器可利用快速比较时钟。
比较器5200将阵列输出5201与参考电压5202进行比较,如有关图37A和图45A中的比较器3704和4404的情况,并且生成输出5205。当比较器5200作为粗略比较器操作时,参考电压5202可为偏移电压。
在生成数字输出位的转换周期期间,诸如图37B和图45B/45C所示,比较器5200可分别在粗略比较周期和精细比较周期期间充当粗略比较器和精细比较器。在该数字输出位转换开始时,在固定时间段内执行精细比较周期或混合粗略-精细(粗略与精细并行)比较周期。接下来,执行粗略比较周期,然后最后执行精细比较以完成转换。
图46示出算法模数输出转换器4600,该算法模数输出转换器包括开关4601、开关4602、采样保持(S/H)电路4603、1位模数转换器(ADC)4604、1位数模转换器(DAC)4605、加法器4606,以及两个残余运算放大器(2x opamp)4607的增益。算法模数输出转换器4600响应于模拟输入Vin和施加到开关4602和4602的控制信号而生成转换数字输出4608。在模拟输入Vin处接收的输入(例如,图45A中的Vneu)首先由S/H电路4603通过开关4602采样,然后针对N位在N个时钟周期中执行转换。对于每个转换时钟周期,1位ADC 4604将S/H电压4609与参考电压(例如,VREF/2,其中VREF是N位的满标度电压)进行比较,并且输出数字位(例如,如果输入<=VREF/2,则输出“0”,并且如果输入>VREF/2,则输出“1”)。该数字位(其为数字输出信号4608)继而由1位DAC 4605转换成模拟电压(例如,转换成VREF/2或0V)并且馈送到加法器4606以从S/H电压4609中减去。2x残余opamp 4607然后将加法器差电压输出放大成转换残余电压4610,该转换残余电压通过开关4601馈送到S/H电路4603以用于下一个时钟周期。代替该1位(即,2个级别)算法ADC,可使用1.5位(即,3个级别)算法ADC来减小诸如来自ADC 4604和残余opamp 4607的偏移的影响。1.5位或2位(即,4个级别)DAC是1.5位算法ADC所需要的。
图47A示出应用于输出神经元以将表示输出神经元的单元电流转换成数字输出位的逐次逼近寄存器(SAR)模数转换器4700。SAR ADC 4700包括SAR 4701、数模转换器4702和比较器4703。单元电流可跨电阻器下降以生成电压VCELL,该电压被施加到比较器4703的反相输入。另选地,单元电流可对采样保持电容器充电以生成电压VCELL(诸如如图45A所示的Vneu)。SAR 4701然后使用二分搜索来计算从MSB位(最高有效位)开始到LSB位(最低有效位)的每个位。基于来自SAR 4701的数字位(DN至D0),DAC 4702用于向比较器4703设置适当的模拟参考电压。比较器4703的输出继而反馈到SAR 4701以选择到比较器4703的模拟参考电压的下一个模拟电平。如图47B所示,对于4位数字输出位的示例,存在4个评估周期:用于通过将比较器4703的模拟参考电压的模拟电平设置在范围的中点处来评估DOUT3的第一脉冲,然后是用于通过将比较器4703的模拟参考电压的模拟电平设置为从范围的中点到范围的最大点的中间或从范围的中点到范围的最小点的中间来评估DOUT2的第二脉冲。这之后是另外的步骤,每个步骤进一步细化比较器4703的模拟参考电压电平。SAR 4701的连续输出是输出数字位。另选的SAR ADC电路是具有仅一个参考电平和局部SC比率的开关电容(SC)电路以连续生成用于连续比较的比率化参考电平。
图48示出了应用于输出神经元以将单元电流4806(ICELL或Ineu)转换成数字输出位4807的Σ-Δ型模数转换器4800。包括运算放大器4801和可配置电容器4805(Cint)的积分器对来自单元电流4806的电流和由1位电流DAC 4804产生的可配置参考电流的总和进行积分,这将数字输出4807转换成电流。比较器4802将来自比较器4801的积分输出电压Vint与参考电压VREF2进行比较,并且比较器4802的输出被馈送到时钟控制的DFF 4803的D输入。时钟控制的DFF 4803响应于比较器4802的输出而提供数字输出流4807。数字输出流4807可在作为数字输出位4807输出之前被馈送到数字滤波器。时钟控制的DFF 4803的时钟周期可针对不同的Ineu范围进行配置。
现在将分别参考图49、图50A、图50B和图51来讨论校准方法4900、5010、5020和5100。方法4900、5010、5020和5100补偿泄漏和/或偏移。泄漏可包括阵列泄漏和电路泄漏中的一者或多者。阵列泄漏可包括存储器单元泄漏以及来自解码电路和列写入电路中的一者或多者的泄漏中的一者或多者。偏移可包括阵列偏移和电路偏移中的一者或多者。阵列偏移可包括来自由于存储器单元电容和单元结电容中的一者或多者引起的阵列变化的偏移。电路偏移可包括来自解码电路和列写入电路中的一者或多者的偏移。
图49示出用于补偿泄漏和/或偏移的校准方法4900。执行泄漏和/或偏移校准步骤(步骤4901)。测量泄漏和/或偏移,并且将所测量的量存储为leakage_value和/或offset_value(步骤4902)。使用以下公式来确定LSB:LSB=leakage_value和/或offset_value+deltaLmin。任选地,deltaLMin是补偿由于过程、温度、噪声或使用劣化引起的电平之间的变化并且确保电平之间的分离为充分的电流值。deltaLMin任选地可根据样本数据表征来确定。(步骤4903)使用以下公式来确定MSB:MSB=LSB+(N-1)*deltaL,其中N是电平的数量并且deltaL是等于两个连续电平之间的平均或理想差值的增量电平量。(步骤4904)在一个实施方案中,DeltaL等于LSB。在另一实施方案中,根据样本数据表征确定DeltaL。对于连续电平的不同配对,DeltaL可具有均匀或不均匀的值。
例如,对于6位存储器单元,存在64个电流电平,其中每个电平与神经网络应用程序中的权重相关,其中N=64。在校准期间的该步骤中以及在测量步骤期间,可注入最小偏移电流以产生基线值。
表10包含4位单元的示例性值:
表10:4位单元的示例性电平(16个电平):
电平编号 | 理想电平 | 针对偏移/泄漏的经调整电平 |
0 | 0 | |
1 | 1 | |
2 | 2 | |
3 | 3 | 3 |
4 | 4 | 4 |
5 | 5 | 5 |
6 | 6 | 6 |
7 | 7 | 7 |
8 | 8 | 8 |
9 | 9 | 9 |
10 | 10 | 10 |
11 | 11 | 11 |
12 | 12 | 12 |
13 | 13 | 13 |
14 | 14 | 14 |
15 | 15 | 15 |
16 | 16 | |
17 | 17 | |
18 | 18 |
图50A和图50B示出校准方法5000,该校准方法包括实时校准方法5010和背景校准方法5020中的一者或多者。
在实时校准方法5010中,执行泄漏和/或偏移校准,包括测量泄漏和/或偏移并且将所测量的值存储为leakage_value和/或offset_value(步骤5011)。使用以下公式来确定LSB:LSB level=leakage_value和/或offset_value+deltaLmin。(步骤5012)使用以下公式来确定MSB:MSB=LSB+(N-1)*deltaL,其中N是电平的数量(步骤5013)。关于图49的deltaLmin和deltaL的描述也适用于图50A。数值示例如下:泄漏和偏移=200pA,deltaLmin=300pA,LSB=500pA,deltaL=400pA,N=16,则MSB=500pA+(16-1)*400pA=6500pA。
在背景校准方法5020中,将offset_value和/或leakage_value+温度数据存储在熔断器(例如,用于偏移和/或泄漏相对温度的查找表)中(步骤5021)。这在背景校准步骤中进行一次或周期性地进行。调用offset_value和/或leakage_value+温度数据(步骤5022)。根据查找表或通过设备晶体管方程来执行针对offset_value和/或leakage_value的温度调整(步骤5023)。然后使用以下公式来确定LSB:LSB level=offset_value和/或leakage_value+deltaLmin(步骤5024)。然后使用以下公式来确定MSB:MSB=LSB+(N-1)*deltaL(步骤5025)。关于图49的deltaLmin和deltaL的描述也适用于图50B。温度调整可通过查找表完成或从设备方程(例如,亚阈值、线性或饱和方程)外推。
图51A示出了具有自动泄漏和/或偏移消除的校准和转换方法5100。执行泄漏和/或偏移校准(步骤5101)。诸如通过ADC转换来测量泄漏和/或偏移,并且将所测量的数字输出存储在计数器中(步骤5102)。启用对神经元输出的转换,并且在计数器中执行递减计数直到计数器达到零(这补偿了初始存储在计数器中的泄漏和/或偏移),然后对数字输出位执行递增计数(步骤5103)。
图51B示出了具有自动泄漏和/或偏移消除的校准和转换方法5110,这是方法5100的变型。执行泄漏和/或偏移校准(步骤5111)。诸如通过ADC转换来测量泄漏和/或偏移,并且将所测量的数字输出存储在寄存器中(步骤5112)。启用对神经元输出的转换,并且对数字输出位执行递增计数,并且然后减去所存储的数字输出(步骤5113)。
应当指出,如本文所用,术语“在…上方”和“在…上”两者包容地包含“直接在…上”(之间未设置中间材料、元件或空间)和“间接在…上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。
Claims (63)
1.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;和
输入块,所述输入块能够向可配置数量N的所述多个矢量-矩阵乘法阵列提供输入,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;
其中接收所述输入的所述阵列响应于所述输入而提供输出。
2.根据权利要求1所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的模拟电流而生成。
3.根据权利要求1所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的可变长度的脉冲而生成。
4.根据权利要求1所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的一系列均匀脉冲而生成。
5.根据权利要求1所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的一组位而生成。
6.根据权利要求1所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
7.根据权利要求1所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
8.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,所述多个矢量-矩阵乘法阵列中的每一者包括组织成行和列的非易失性存储器单元;和
输出块,所述输出块能够提供来自可配置数量N的所述多个矢量-矩阵乘法阵列的输出,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;
其中响应于接收的输入而提供所述输出。
9.根据权利要求8所述的系统,其中所述输出块包括:
模数转换器,所述模数转换器用于将从所述N个矢量-矩阵乘法阵列接收的模拟电流转换成所述输出,其中所述输出包括一系列数字脉冲。
10.根据权利要求9所述的系统,其中所述模数转换器包括比较器。
11.根据权利要求10所述的系统,其中所述比较器能够被配置为响应于第一时钟信号或第二时钟信号而操作,其中所述第二时钟信号的频率大于所述第一时钟信号的频率。
12.根据权利要求9所述的系统,其中所述模数转换器包括积分型模数转换器。
13.根据权利要求9所述的系统,其中所述模数转换器包括斜坡模数转换器。
14.根据权利要求9所述的系统,其中所述模数转换器包括算法模数转换器。
15.根据权利要求9所述的系统,其中所述模数转换器包括Σ-Δ型模数转换器。
16.根据权利要求9所述的系统,其中所述模数转换器包括逐次逼近寄存器模数转换器。
17.根据权利要求9所述的系统,其中所述系统还包括:
数字数据-电压转换器,所述数字数据-电压转换器用于将所述一系列数字脉冲转换成电压。
18.根据权利要求9所述的系统,其中所述系统还包括:
积分型模数数据转换器,所述积分型模数数据转换器用于将所述模拟电流转换成一组数字位。
19.根据权利要求18所述的系统,其中所述系统还包括:
数字位-脉冲宽度转换器,所述数字位-脉冲宽度转换器用于将所述一组数字位转换成一个或多个脉冲,其中所述一个或多个脉冲的宽度与所述一组数字位的值成比例。
20.根据权利要求9所述的系统,其中所述系统还包括:
电流-电压转换器,所述电流-电压转换器用于将所述输出模拟电流转换成电压。
21.根据权利要求8所述的系统,其中所述输出是可变长度的脉冲。
22.根据权利要求8所述的系统,其中所述输出是一系列均匀脉冲。
23.根据权利要求8所述的系统,其中所述输出是一组位。
24.根据权利要求8所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
25.根据权利要求8所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
26.根据权利要求8所述的系统,其中所述输出块执行校准以补偿温度。
27.根据权利要求8所述的系统,其中所述输出块执行校准以补偿过程或电压源变化。
28.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;和
输出块,所述输出块用于在针对可配置数量N的所述矢量-矩阵乘法阵列的编程操作之后执行验证操作,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内。
29.根据权利要求28所述的系统,其中所述验证操作的准确度超过推断准确度。
30.根据权利要求29所述的系统,其中所述推断由积分型ADC执行。
31.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,每个阵列包括组织成行和列的非易失性存储器单元;
输入块,所述输入块能够向第一可配置数量N的所述矢量-矩阵乘法阵列提供输入,其中N能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;和
输出块,所述输出块能够提供来自第二可配置数量M的所述矢量-矩阵乘法阵列的输出,其中M能够在1与所述多个矢量-矩阵乘法阵列中的阵列总数之间的范围内;
其中所述输出块响应于所述输入而生成所述输出。
32.根据权利要求31所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的模拟电流而生成。
33.根据权利要求31所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的可变长度的脉冲而生成。
34.根据权利要求31所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的一系列均匀脉冲而生成。
35.根据权利要求31所述的系统,其中所述输入由所述输入块响应于由所述输入块接收的一组位而生成。
36.根据权利要求31所述的系统,其中所述输出是模拟电流。
37.根据权利要求31所述的系统,其中所述输出是可变长度的脉冲。
38.根据权利要求31所述的系统,其中所述输出是一系列均匀脉冲。
39.根据权利要求31所述的系统,其中所述输出是一组位。
40.根据权利要求31所述的系统,其中所述输出块包括模数转换器,所述模数转换器包括比较器。
41.根据权利要求40所述的系统,其中所述比较器能够被配置为响应于第一时钟信号或第二时钟信号而操作,其中所述第二时钟信号的频率大于所述第一时钟信号的频率。
42.根据权利要求40所述的系统,其中所述比较器能够被配置为在转换期间的粗略比较周期或精细比较周期中操作。
43.根据权利要求31所述的系统,其中所述非易失性存储器单元是分裂栅闪存存储器单元。
44.根据权利要求31所述的系统,其中所述非易失性存储器单元是堆叠栅闪存存储器单元。
45.根据权利要求31所述的系统,其中所述输出块执行校准以补偿温度。
46.根据权利要求31所述的系统,其中所述输出块执行校准以补偿过程变化。
47.根据权利要求31所述的系统,其中所述输出块执行校准以补偿电压源变化。
48.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括组织成行和列的非易失性存储器单元;和
输出块,所述输出块能够从所述矢量-矩阵乘法阵列中的一者或多者接收输出神经元电流,并且使用斜坡模数转换器来生成数字输出位。
49.根据权利要求48所述的系统,还包括离散的或连续的斜坡变化参考电压。
50.根据权利要求48所述的系统,还包括采样保持电路和比较器,所述比较器具有施加到所述比较器的输入的斜坡变化参考电压。
51.根据权利要求50所述的系统,其中所述斜坡变化参考电压包括粗略电压斜坡,然后是多个精细电压斜坡。
52.根据权利要求51所述的系统,其中所述粗略电压斜坡包括多个粗略斜坡变化电压。
53.一种模拟神经存储器系统,包括:
多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括非易失性存储器单元;和
输入块,所述输入块能够将多个数字输入位转换成二进制索引的时间求和信号,作为所述矢量-矩阵乘法阵列中的至少一者的定时输入。
54.根据权利要求53所述的系统,其中所述输入块针对每个数字输入位生成二进制索引脉冲。
55.根据权利要求53所述的系统,其中所述输入块包括针对每个输入数字位的存储锁存器。
56.根据权利要求53所述的系统,还包括用于生成二进制索引脉冲的发生器。
57.根据权利要求53所述的系统,其中所述输入块包括行解码器。
58.根据权利要求53所述的系统,其中响应于每行的数字输入位而生成所述二进制索引的时间求和信号。
59.根据权利要求53所述的系统,其中所述时间求和是从LSB到MSB或任何随机顺序。
60.一种针对模拟神经存储器执行输出转换的方法,所述模拟神经存储器包括多个矢量-矩阵乘法阵列,每个矢量-矩阵乘法阵列包括非易失性存储器单元,所述方法包括:
从所述多个矢量-矩阵乘法阵列中的一者或多者接收输出神经元电流;以及
使用所述输出神经元电流和斜坡模数转换器来生成数字输出位,所述转换器以粗略比较模式和精细比较模式操作。
61.根据权利要求60所述的方法,其中所述生成步骤利用动态比较器。
62.根据权利要求61所述的方法,其中所述动态比较器针对所述粗略比较模式和所述精细比较模式进行了不同地配置。
63.根据权利要求62所述的方法,其中所述动态比较器接收所述粗略比较模式的第一比较时钟和所述精细比较模式的第二比较时钟,其中所述第二比较时钟的频率超过所述第一比较时钟的频率。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962842279P | 2019-05-02 | 2019-05-02 | |
US62/842,279 | 2019-05-02 | ||
US16/449,201 | 2019-06-21 | ||
US16/449,201 US11507642B2 (en) | 2019-05-02 | 2019-06-21 | Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network |
PCT/US2019/061902 WO2020222868A1 (en) | 2019-05-02 | 2019-11-18 | Configurable input blocks and output blocks and physical layout for analog neural memory in deep learning artificial neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113785311A true CN113785311A (zh) | 2021-12-10 |
Family
ID=73015948
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980095991.7A Pending CN113785311A (zh) | 2019-05-02 | 2019-11-18 | 用于深度学习人工神经网络中的模拟神经存储器的可配置输入块和输出块以及物理布局 |
CN201980095990.2A Pending CN113785360A (zh) | 2019-05-02 | 2019-11-18 | 用于深度学习人工神经网络中的模拟神经存储器的输出阵列神经元转换和校准 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980095990.2A Pending CN113785360A (zh) | 2019-05-02 | 2019-11-18 | 用于深度学习人工神经网络中的模拟神经存储器的输出阵列神经元转换和校准 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11507642B2 (zh) |
EP (2) | EP3963513B1 (zh) |
JP (3) | JP7308290B2 (zh) |
KR (2) | KR102709575B1 (zh) |
CN (2) | CN113785311A (zh) |
TW (2) | TWI805908B (zh) |
WO (2) | WO2020222868A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10970630B1 (en) * | 2017-06-15 | 2021-04-06 | National Technology & Engineering Solutions Of Sandia, Llc | Neuromorphic computing architecture with dynamically accessible contexts |
US12075618B2 (en) | 2018-10-16 | 2024-08-27 | Silicon Storage Technology, Inc. | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network |
US20210125049A1 (en) * | 2019-10-29 | 2021-04-29 | Taiwan Semiconductor Manufacturing Co., Ltd. | System for executing neural network |
US11600321B2 (en) | 2020-03-05 | 2023-03-07 | Silicon Storage Technology, Inc. | Analog neural memory array storing synapsis weights in differential cell pairs in artificial neural network |
US11875852B2 (en) | 2020-07-06 | 2024-01-16 | Silicon Storage Technology, Inc. | Adaptive bias decoder to provide a voltage to a control gate line in an analog neural memory array in artificial neural network |
WO2022146468A1 (en) * | 2021-01-01 | 2022-07-07 | Silicon Storage Technology, Inc. | Digital output mechanisms for analog neural memory in a deep learning artificial neural network |
US20220215239A1 (en) * | 2021-01-01 | 2022-07-07 | Silicon Storage Technology, Inc. | Digital output mechanisms for analog neural memory in a deep learning artificial neural network |
US20220230064A1 (en) * | 2021-01-20 | 2022-07-21 | Mediatek Singapore Pte. Ltd. | Calibration of analog circuits for neural network computing |
US11693560B2 (en) * | 2021-01-22 | 2023-07-04 | Taiwan Semiconductor Manufacturing Company, Ltd. | SRAM-based cell for in-memory computing and hybrid computations/storage memory architecture |
US11720784B2 (en) * | 2021-04-01 | 2023-08-08 | Mythic, Inc. | Systems and methods for enhancing inferential accuracy of an artificial neural network during training on a mixed-signal integrated circuit |
US20240242061A1 (en) | 2021-05-07 | 2024-07-18 | Blumind Inc. | System, method, and computer device for transistor-based neural networks |
TWI769875B (zh) * | 2021-06-24 | 2022-07-01 | 國立中央大學 | 深度學習網路裝置、其使用的記憶體存取方法與非揮發性儲存媒介 |
US11989440B2 (en) | 2021-08-11 | 2024-05-21 | Silicon Storage Technology, Inc. | Hybrid memory system configurable to store neural memory weight data in analog form or digital form |
JP2023088730A (ja) * | 2021-12-15 | 2023-06-27 | キオクシア株式会社 | 演算システム |
US11756565B2 (en) | 2022-01-25 | 2023-09-12 | Blumind Inc. | Analog systems and methods for audio feature extraction and natural language processing |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS55130229A (en) * | 1979-03-30 | 1980-10-08 | Mitsubishi Electric Corp | Analog-digital converter |
JPS6346581A (ja) * | 1986-08-13 | 1988-02-27 | Toshiba Corp | 半導体記憶装置 |
KR940001173B1 (ko) * | 1988-08-31 | 1994-02-16 | 후지쓰 가부시끼가이샤 | 뉴로 컴퓨터 |
US5216746A (en) | 1989-02-28 | 1993-06-01 | Fujitsu Limited | Error absorbing system in a neuron computer |
US5029130A (en) | 1990-01-22 | 1991-07-02 | Silicon Storage Technology, Inc. | Single transistor non-valatile electrically alterable semiconductor memory device |
US5298796A (en) | 1992-07-08 | 1994-03-29 | The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration | Nonvolatile programmable neural network synaptic array |
JP3561096B2 (ja) * | 1996-09-10 | 2004-09-02 | 株式会社東芝 | 関数学習装置 |
JP3910707B2 (ja) * | 1997-12-01 | 2007-04-25 | 松下電器産業株式会社 | ディジタル信号処理回路 |
KR100370164B1 (ko) * | 2000-12-20 | 2003-01-30 | 주식회사 하이닉스반도체 | 비트라인의 누설전류 보상이 가능한 풀업회로 |
JP2003263624A (ja) * | 2002-03-07 | 2003-09-19 | Matsushita Electric Ind Co Ltd | ニューラル・ネットワーク装置の学習演算回路 |
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 |
US7395287B2 (en) * | 2003-12-15 | 2008-07-01 | Micrel, Inc. | Numerical value conversion using a saturation limited arithmetic logic unit supporting variable resolution operands |
JP2005322198A (ja) | 2004-04-07 | 2005-11-17 | Sony Corp | データ処理装置 |
US7129880B2 (en) * | 2004-08-09 | 2006-10-31 | Northrop Grumman Corporation | Auto-zoom sloped ADC |
US7366021B2 (en) * | 2005-05-04 | 2008-04-29 | Micron Technology, Inc. | Method and apparatus for sensing flash memory using delta sigma modulation |
ITTO20070109A1 (it) * | 2007-02-14 | 2008-08-15 | St Microelectronics Srl | Circuito e metodo di lettura per un dispositivo di memoria non volatile basati sulla generazione adattativa di una grandezza elettrica di riferimento |
US7768868B2 (en) | 2007-06-15 | 2010-08-03 | Micron Technology, Inc. | Digital filters for semiconductor devices |
US7755948B2 (en) * | 2008-08-19 | 2010-07-13 | Agere Systems Inc. | Process and temperature tolerant non-volatile memory |
TW201019327A (en) * | 2008-09-30 | 2010-05-16 | Lsi Corp | Methods and apparatus for soft data generation for memory devices using reference cells |
US7868800B2 (en) * | 2008-10-22 | 2011-01-11 | Industrial Technology Research Institute | Mixed-signal control apparatus of modulation system |
US8473439B2 (en) * | 2010-12-08 | 2013-06-25 | International Business Machines Corporation | Integrate and fire electronic neurons |
TWI530183B (zh) * | 2011-12-08 | 2016-04-11 | Sony Corp | An imaging element, a control method, and an imaging device |
US10217045B2 (en) * | 2012-07-16 | 2019-02-26 | Cornell University | Computation devices and artificial neurons based on nanoelectromechanical systems |
US9164526B2 (en) * | 2012-09-27 | 2015-10-20 | Sandisk Technologies Inc. | Sigma delta over-sampling charge pump analog-to-digital converter |
US8643168B1 (en) * | 2012-10-16 | 2014-02-04 | Lattice Semiconductor Corporation | Integrated circuit package with input capacitance compensation |
US9325321B2 (en) * | 2013-03-13 | 2016-04-26 | Microsemi SoC Corporation | Background auto-refresh apparatus and method for non-volatile memory array |
US9418333B2 (en) * | 2013-06-10 | 2016-08-16 | Samsung Electronics Co., Ltd. | Synapse array, pulse shaper circuit and neuromorphic system |
KR102140787B1 (ko) | 2014-07-07 | 2020-08-03 | 삼성전자주식회사 | 저항성 메모리 장치, 저항성 메모리 시스템 및 저항성 메모리 장치의 동작방법 |
US10325655B2 (en) * | 2015-04-10 | 2019-06-18 | Hewlett Packard Enterprise Development Lp | Temperature compensation circuits |
US9654132B2 (en) * | 2015-07-08 | 2017-05-16 | Marvell World Trade Ltd. | Hybrid charge-sharing charge-redistribution DAC for successive approximation analog-to-digital converters |
US10748058B2 (en) * | 2015-12-28 | 2020-08-18 | International Business Machines Corporation | LUT based neuron membrane potential update scheme in STDP neuromorphic systems |
CN108780492B (zh) * | 2016-02-08 | 2021-12-14 | 斯佩罗设备公司 | 模拟协处理器 |
CN115995242A (zh) * | 2016-03-18 | 2023-04-21 | 株式会社半导体能源研究所 | 半导体装置 |
JP6833873B2 (ja) | 2016-05-17 | 2021-02-24 | シリコン ストーリッジ テクノロージー インコーポレイテッドSilicon Storage Technology, Inc. | 不揮発性メモリアレイを使用したディープラーニングニューラルネットワーク分類器 |
US10123143B2 (en) | 2016-09-26 | 2018-11-06 | Cirrus Logic, Inc. | Correction for speaker monitoring |
US11238887B2 (en) * | 2017-01-23 | 2022-02-01 | Dsp Group Ltd. | Interface to leaky spiking neurons |
JP2018133016A (ja) * | 2017-02-17 | 2018-08-23 | 株式会社半導体エネルギー研究所 | ニューラルネットワークシステム |
US10896367B2 (en) | 2017-03-07 | 2021-01-19 | Google Llc | Depth concatenation using a matrix computation unit |
WO2018163005A1 (ja) * | 2017-03-10 | 2018-09-13 | 株式会社半導体エネルギー研究所 | タッチパネルシステム、電子機器および半導体装置 |
US11568223B2 (en) * | 2017-04-14 | 2023-01-31 | Semiconductor Energy Laboratory Co., Ltd. | Neural network circuit |
US10460817B2 (en) | 2017-07-13 | 2019-10-29 | Qualcomm Incorporated | Multiple (multi-) level cell (MLC) non-volatile (NV) memory (NVM) matrix circuits for performing matrix computations with multi-bit input vectors |
EP3432226B1 (en) | 2017-07-19 | 2023-11-01 | IMEC vzw | Control plane organisation for flexible digital data plane |
JP2019028569A (ja) * | 2017-07-26 | 2019-02-21 | 株式会社東芝 | メモリシステム、半導体記憶装置及び信号処理システム |
KR20190020408A (ko) * | 2017-08-21 | 2019-03-04 | 에스케이하이닉스 주식회사 | 고 선형성의 투-스텝 싱글-슬롭 비교 장치 및 그에 따른 씨모스 이미지 센서 |
US10580492B2 (en) | 2017-09-15 | 2020-03-03 | Silicon Storage Technology, Inc. | System and method for implementing configurable convoluted neural networks with flash memories |
KR102126791B1 (ko) * | 2017-11-23 | 2020-06-25 | 서울대학교산학협력단 | 교차점 어레이를 이용한 신경 연결망 및 그 패턴 인식방법 |
US10748630B2 (en) | 2017-11-29 | 2020-08-18 | Silicon Storage Technology, Inc. | High precision and highly efficient tuning mechanisms and algorithms for analog neuromorphic memory in artificial neural networks |
US10594334B1 (en) * | 2018-04-17 | 2020-03-17 | Ali Tasdighi Far | Mixed-mode multipliers for artificial intelligence |
CN108932548A (zh) * | 2018-05-22 | 2018-12-04 | 中国科学技术大学苏州研究院 | 一种基于fpga的稀疏度神经网络加速系统 |
US10205463B1 (en) | 2018-07-18 | 2019-02-12 | Teledyne Scientific & Imaging, Llc | Dual-gain single-slope ADC with digital CDS |
US10861553B2 (en) * | 2018-09-27 | 2020-12-08 | Taiwan Semiconductor Manufacturing Co., Ltd. | Device-region layout for embedded flash |
US11061646B2 (en) * | 2018-09-28 | 2021-07-13 | Intel Corporation | Compute in memory circuits with multi-Vdd arrays and/or analog multipliers |
CN109658471B (zh) * | 2018-12-20 | 2023-07-25 | 上海联影医疗科技股份有限公司 | 一种医学图像重建方法和系统 |
WO2020146890A1 (en) * | 2019-01-11 | 2020-07-16 | Apple Inc. | Method for measurement of ue-to-ue reference signal in new radio networks with cross-link interference |
US10756748B1 (en) * | 2019-04-26 | 2020-08-25 | Xilinx, Inc. | Capacitor-enhanced comparator for switched-capacitor (SC) circuits with reduced kickback |
US11562249B2 (en) * | 2019-05-01 | 2023-01-24 | International Business Machines Corporation | DNN training with asymmetric RPU devices |
-
2019
- 2019-06-21 US US16/449,201 patent/US11507642B2/en active Active
- 2019-06-21 US US16/449,205 patent/US20200349422A1/en active Pending
- 2019-11-18 EP EP19817533.3A patent/EP3963513B1/en active Active
- 2019-11-18 EP EP19821455.3A patent/EP3963587B1/en active Active
- 2019-11-18 JP JP2021564789A patent/JP7308290B2/ja active Active
- 2019-11-18 KR KR1020217035908A patent/KR102709575B1/ko active IP Right Grant
- 2019-11-18 KR KR1020217035930A patent/KR102657705B1/ko active IP Right Grant
- 2019-11-18 JP JP2021564790A patent/JP2022531766A/ja active Pending
- 2019-11-18 CN CN201980095991.7A patent/CN113785311A/zh active Pending
- 2019-11-18 WO PCT/US2019/061902 patent/WO2020222868A1/en unknown
- 2019-11-18 WO PCT/US2019/062073 patent/WO2020222869A1/en unknown
- 2019-11-18 CN CN201980095990.2A patent/CN113785360A/zh active Pending
-
2020
- 2020-03-24 TW TW109109709A patent/TWI805908B/zh active
- 2020-03-24 TW TW109109710A patent/TWI805909B/zh active
-
2023
- 2023-07-03 JP JP2023109273A patent/JP2023139013A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
JP7308290B2 (ja) | 2023-07-13 |
KR102709575B1 (ko) | 2024-09-25 |
TW202042233A (zh) | 2020-11-16 |
US20200349421A1 (en) | 2020-11-05 |
EP3963587A1 (en) | 2022-03-09 |
EP3963513A1 (en) | 2022-03-09 |
JP2022531766A (ja) | 2022-07-11 |
TWI805909B (zh) | 2023-06-21 |
TW202044123A (zh) | 2020-12-01 |
KR20210147032A (ko) | 2021-12-06 |
EP3963513B1 (en) | 2024-04-17 |
US11507642B2 (en) | 2022-11-22 |
EP3963587B1 (en) | 2024-09-11 |
JP2022539486A (ja) | 2022-09-12 |
US20200349422A1 (en) | 2020-11-05 |
TWI805908B (zh) | 2023-06-21 |
WO2020222869A1 (en) | 2020-11-05 |
KR102657705B1 (ko) | 2024-04-15 |
CN113785360A (zh) | 2021-12-10 |
KR20210145809A (ko) | 2021-12-02 |
JP2023139013A (ja) | 2023-10-03 |
WO2020222868A1 (en) | 2020-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102657705B1 (ko) | 딥 러닝 인공 신경 네트워크 내의 아날로그 신경 메모리를 위한 출력 어레이 뉴런 변환 및 교정 | |
CN112868063B (zh) | 深度学习人工神经网络中的模拟神经存储器的编程的精确调谐 | |
KR102715858B1 (ko) | 딥 러닝 인공 신경 네트워크 내의 아날로그 신경 메모리의 프로그래밍을 위한 정밀도 튜닝 | |
CN114651307A (zh) | 用于人工神经网络中的模拟神经存储器的精确编程方法和装置 | |
US11893478B2 (en) | Programmable output blocks for analog neural memory in a deep learning artificial neural network | |
TWI820532B (zh) | 深度學習人工神經網路中類比神經記憶體之數位輸出機制 | |
US20220374161A1 (en) | Output circuit for analog neural memory in a deep learning artificial neural network | |
US20210118894A1 (en) | Input and digital output mechanisms for analog neural memory in a deep learning artificial neural network | |
KR20240147680A (ko) | 딥 러닝 인공 신경망에서의 전기적 파라미터들의 교정 | |
WO2022245384A1 (en) | Output circuit for analog neural memory in a deep learning artificial neural network | |
US20230306246A1 (en) | Calibration of electrical parameters in a deep learning artificial neural network | |
CN118633126A (zh) | 深度学习人工神经网络中的电参数的校准 | |
CN116615784A (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 |