CN115191016A - 深度学习人工神经网络中的模拟神经存储器单元的超精确调谐 - Google Patents
深度学习人工神经网络中的模拟神经存储器单元的超精确调谐 Download PDFInfo
- Publication number
- CN115191016A CN115191016A CN202080097429.0A CN202080097429A CN115191016A CN 115191016 A CN115191016 A CN 115191016A CN 202080097429 A CN202080097429 A CN 202080097429A CN 115191016 A CN115191016 A CN 115191016A
- Authority
- CN
- China
- Prior art keywords
- memory cell
- programming
- cell
- tuning
- voltage
- 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
- 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/10—Programming or data input circuits
- G11C16/107—Programming all cells in an array, sector or block to the same state prior to flash erasing
-
- 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/10—Programming or data input circuits
-
- 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
-
- 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/5628—Programming or writing circuits; Data input 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/0408—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells containing floating gate transistors
-
- 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/10—Programming or data input circuits
- G11C16/12—Programming voltage switching 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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching 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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- 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/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- 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
- 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/08—Nonvolatile memory wherein data storage is accomplished by storing relatively few electrons in the storage layer, i.e. single electron memory
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Theoretical Computer Science (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Mathematical Physics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Non-Volatile Memory (AREA)
- Read Only Memory (AREA)
- Image Analysis (AREA)
- Networks Using Active Elements (AREA)
- Control Of Amplification And Gain Control (AREA)
- Semiconductor Memories (AREA)
Abstract
对神经存储器中的选定存储器单元进行超精确调谐。首先使用粗略编程和精细编程方法对选定存储器单元进行编程。然后,选定存储器单元通过相邻存储器单元的编程经历超精确编程。由于相邻存储器单元被编程,相邻存储器单元的浮栅与选定存储器单元的浮栅之间的电容耦合将导致选定存储器单元的浮栅的电压增加,但是比通过对选定存储器单元进行直接编程可以实现的增量小。以此方式,可以利用超精确刻度对选定存储器单元进行编程。
Description
优先权声明
本申请要求于2020年2月26日提交的标题为“Ultra-Precise Tuning of AnalogNeural Memory Cells in a Deep Learning Artificial Neural Network”的美国临时专利申请号62/981,757和于2020年8月4日提交的标题为“Ultra-Precise Tuning of AnalogNeural Memory Cells in a Deep Learning Artificial Neural Network”的美国专利申请号16/985,147的优先权。
技术领域
本发明公开了用于模拟神经存储器中所选非易失性存储器单元的超精确调谐的实施方案。
背景技术
人工神经网络模拟生物神经网络(动物的中枢神经系统,特别是大脑),并且用于估计或近似可取决于大量输入并且通常未知的函数。人工神经网络通常包括互相交换消息的互连“神经元”层。
图1示出了人工神经网络,其中圆圈表示神经元的输入或层。连接部(称为突触)用箭头表示,并且具有可以根据经验进行调整的数值权重。这使得人工神经网络适应于输入并且能够学习。通常,人工神经网络包括多个输入的层。通常存在神经元的一个或多个中间层,以及提供神经网络的输出的神经元的输出层。处于每一级别的神经元分别地或共同地根据从突触所接收的数据作出决定。
在开发用于高性能信息处理的人工神经网络方面的主要挑战中的一个挑战是缺乏足够的硬件技术。实际上,实际人工神经网络依赖于大量的突触,从而实现神经元之间的高连通性,即非常高的计算并行性。原则上,此类复杂性可通过数字超级计算机或专用图形处理单元集群来实现。然而,相比于生物网络,这些方法除了高成本之外,能量效率也很普通,生物网络主要由于其执行低精度的模拟计算而消耗更少的能量。CMOS模拟电路已被用于人工神经网络,但由于给定大量的神经元和突触,大多数CMOS实现的突触都过于庞大。
申请人先前在美国专利申请号15/594,439(公开为美国专利公布2017/0337466)中公开了一种利用一个或多个非易失性存储器阵列作为突触的人工(模拟)神经网络,该专利申请以引用方式并入本文。非易失性存储器阵列作为模拟神经形态存储器操作。如本文所用的术语“神经形态”是指实现神经系统模型的电路。模拟神经形态存储器包括被配置成接收第一多个输入并从其生成第一多个输出的第一多个突触,以及被配置成接收第一多个输出的第一多个神经元。第一多个突触包括多个存储器单元,其中存储器单元中的每个存储器单元包括:形成于半导体衬底中的间隔开的源极区和漏极区,其中沟道区在源极区和漏极区之间延伸;设置在沟道区的第一部分上方并且与第一部分绝缘的浮栅;以及设置在沟道区的第二部分上方并且与第二部分绝缘的非浮栅。多个存储器单元中的每个存储器单元被配置成存储与浮栅上的多个电子相对应的权重值。多个存储器单元被配置成将第一多个输入乘以所存储的权重值以生成第一多个输出。以这种方式布置的存储器单元阵列可被称为矢量矩阵乘法(VMM)阵列。
非易失性存储器单元
在VMM阵列中可以使用各种类型的已知非易失性存储器单元。例如,美国专利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(其中电子被置于浮栅上)。电子电流将从漏极区16流向源极区14(源极线端子)。当电子到达字线端子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示出可施加到存储器单元410的端子用于执行读取操作、擦除操作和编程操作的典型电压范围:
表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偏置到高电压并将控制栅CG端子28偏置到低电压或负电压来执行擦除。另选地,通过将字线端子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上方延伸,由绝缘层(未示出)分开。使用从沟道18到靠近漏极区16的沟道区中的浮栅20的热电子注入来执行编程,并且使用从浮栅20到衬底12的福勒-诺德海姆(Fowler-Nordheim)电子隧穿来执行擦除。读取操作以与先前针对存储器单元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的行和列的阵列中,源极线可耦接到一行存储器单元或相邻的两行存储器单元。即,源极线端子可由相邻行的存储器单元共享。
图8示出双分裂栅存储器单元810。双分裂栅存储器单元810包括一对存储器单元(左侧的A和右侧的B),其中每个存储器单元包括:浮栅(FGA、FGB)20,其设置在衬底12上方并与该衬底绝缘;控制栅28(CGA、CGB),其设置在浮栅20上并与该浮栅绝缘;擦除栅30(EG),其设置成与浮栅20和控制栅28相邻并与该浮栅和控制栅绝缘并且设置在衬底12上并与该衬底绝缘,其中擦除栅以T形创建,使得每个控制栅CGA、CGB的顶角面向T形擦除栅的相应内角以提高擦除效率;以及在衬底中与浮栅20相邻的漏极区16(DRA、DRB)(具有连接到相应漏极扩散区16(DRA、DRB)的位线接触件24(BLA、BLB))。存储器单元形成为共享共同擦除栅30的存储器单元对。此单元设计与上文参考图2-图7讨论的存储器单元的不同之处至少在于,该单元缺少擦除栅EG下方的源极区,缺少选择栅(也称为字线),并且缺少用于每个存储器单元的沟道区。相反,单个连续沟道区18在两个存储器单元下方延伸(即,从一个存储器单元的漏极区16延伸到另一个存储器单元的漏极区16)。为了读取或编程一个存储器单元,将另一个存储器单元的控制栅28升高到足够的电压,以经由电压耦合到其间的浮栅20接通底层沟道区部分(例如,为了读取或编程单元A,经由来自CGB的电压耦接升高FGB上的电压以接通FGB下方的沟道区部分)。使用从浮栅20A和/或浮栅20B到擦除栅30的福勒-诺德海姆电子隧穿来执行擦除。使用从沟道18到浮栅20A或20B的热电子注射来执行编程。
表5示出可施加到存储器单元810的端子用于执行读取操作、擦除操作和编程操作的典型电压范围。选择单元A(FG、CGA、BLA)进行读取操作、编程操作和擦除操作。
表5:图8的闪存存储器单元810的操作
为了在人工神经网络中利用包括上述类型的非易失性存储器单元之一的存储器阵列,在一些实施方案中进行了两个修改。第一,对线路进行配置,使得每个存储器单元可被单独编程、擦除和读取,而不会不利地影响阵列中的其他存储器单元的存储器状态,如下文进一步解释。第二,提供存储器单元的连续(模拟)编程。
具体地,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全擦除状态变为完全编程状态。在另一个实施方案,阵列中的每个存储器单元的存储器状态(即,浮栅上的电荷)可在独立地并且对其他存储器单元的干扰最小的情况下连续地从完全编程状态变为完全擦除状态,或从完全擦除状态变为完全编程状态。这意味着单元存储装置是模拟的,或者至少可存储许多离散值(诸如16或256个不同的值)中的一个离散值,这允许对存储器阵列中的所有单元进行非常精确且单独的调谐(意味着将单元编程或擦除至目标值),并且这使得存储器阵列对于存储和对神经网络的突触权重进行微调是理想的。
本文所述的方法和装置可应用于其他非易失性存储器技术,诸如但不限于FINFET分裂栅闪存或堆叠栅闪存、SONOS(硅-氧化物-氮化物-氧化物-硅,电荷捕获在氮化物中)、MONOS(金属-氧化物-氮化物-氧化物-硅,金属电荷捕获在氮化物中)、ReRAM(电阻式ram)、PCM(相变存储器)、MRAM(磁性ram)、FeRAM(铁电ram)、OTP(双层或多层式一次可编程)和CeRAM(关联电子ram)等。本文所述的方法和装置可应用于用于神经网络的易失性存储器技术,诸如但不限于SRAM、DRAM和/或易失性突触单元。
采用非易失性存储器单元阵列的神经网络
图9概念性地示出本实施方案的使用非易失性存储器阵列的神经网络的非限制性示例。该示例将非易失性存储器阵列神经网络用于面部识别应用,但任何其他适当的应用也可使用基于非易失性存储器阵列的神经网络来实现。
对于该示例,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区域的值进行池化。池化函数P1的目的是对邻近位置求均值(或者也可使用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个神经元,其中最高输出神经元确定类。例如,该输出可指示对原始图像的内容的识别或分类。
使用非易失性存储器单元的阵列或阵列的一部分来实现每层的突触。
图10为可用于该目的的系统的框图。VMM系统32包括非易失性存储器单元,并且用作一层与下一层之间的突触(诸如图6中的CB1、CB2、CB3和CB4)。具体地,VMM系统32包括VMM阵列33(包括以行和列布置的非易失性存储器单元)、擦除栅和字线栅解码器34、控制栅解码器35、位线解码器36和源极线解码器37,这些解码器对VMM阵列33的相应输入进行解码。对VMM阵列33的输入可来自擦除栅和字线栅解码器34或来自控制栅解码器35。在该示例中,源极线解码器37还对VMM阵列33的输出进行解码。另选地,位线解码器36可对VMM阵列33的输出进行解码。
非易失性存储器单元阵列33用于两个目的。首先,它存储将由VMM系统32使用的权重。其次,非易失性存储器单元阵列33有效地将输入与存储在VMM阵列33中的权重相乘并且每个输出线(源极线或位线)将它们相加以产生输出,该输出将作为下一层的输入或最终层的输入。通过执行乘法和加法函数,VMM阵列33消除了对单独的乘法和加法逻辑电路的需要,并且由于其原位存储器计算也是高功效的。
将VMM阵列33的输出提供至差分求和器(诸如求和运算放大器或求和电流镜)38,该差分求和器对VMM阵列33的输出进行求和,以为该卷积创建单个值。差分求和器38被布置用于执行正权重输入和负权重输入两者的求和,以输出单个值。
然后将差分求和器38的输出值求和后提供至激活函数电路39,该激活函数电路对输出进行修正。激活函数电路39可提供sigmoid、tanh、ReLU函数或任何其他非线性函数。激活函数电路39的经修正的输出值成为作为下一层(例如,图8中的层C1)的特征映射的元素,然后被应用于下一个突触以产生下一个特征映射层或最终层。因此,在该示例中,VMM阵列33构成多个突触(其从现有神经元层或从输入层诸如图像数据库接收它们的输入),并且求和器38和激活函数电路39构成多个神经元。
图10中对VMM系统32的输入(WLx、EGx、CGx以及任选的BLx和SLx)可为模拟电平(例如,电流、电压或电荷)、二进制电平、数字脉冲(在这种情况下,可能需要脉冲-模拟转换器PAC来将脉冲转换至合适的输入模拟电平)或数字位(在这种情况下,提供DAC以将数字位转换至合适的输入模拟电平);输出可为模拟电平、二进制电平、数字脉冲或数字位(在这种情况下,提供输出ADC以将输出模拟电平转换成数字位)。
图11为示出多层VMM系统32(此处标记为VMM系统32a、32b、32c、32d和32e)的使用的框图。如图11所示,通过数模转换器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也可针对其阵列或神经元的不同部分进行时分复用。图11所示的示例包含五个层(32a,32b,32c,32d,32e):一个输入层(32a)、两个隐藏层(32b,32c)和两个完全连接的层(32d,32e)。本领域的普通技术人员将会知道,这仅仅是示例性的,并且相反,系统可包括两个以上的隐藏层和两个以上的完全连接的层。
必须擦除和编程用于VMM中的每个非易失性存储器单元,以在浮栅中保持非常特定且精确的电荷量(即电子数量)。例如,每个浮栅必须保持N个不同值中的一个,其中N是可由每个单元指示的不同权重的数量。N的示例包括16、32、64、128和256。一个挑战在于能够以不同N值所需的精度和粒度对所选单元进行编程。例如,如果所选单元可包括128个不同值中的一个值,则在编程操作中需要极高精度。
需要适于与模拟神经形态存储器中的VMM阵列一起使用的改进的编程系统和方法。
发明内容
本发明公开了用于对选定存储器单元进行超精确调谐的实施方案。首先可选地使用粗略编程和精细编程方法对选定存储器单元进行编程。然后,选定存储器单元通过相邻存储器单元的编程经历超精确(超精细)编程。由于相邻存储器单元被编程,相邻存储器单元的浮栅与选定存储器单元的浮栅之间的电容耦合将导致选定存储器单元的浮栅的电压增加,但是比通过对选定存储器单元进行直接编程可以实现的增量小。这样,以这种方式可以利用超精确刻度对选定存储器单元进行编程,该方式对应于每编程脉冲向选定存储器单元的浮栅添加的亚单个电子精度(分级电子精度(fractional electron precision))。
在一个实施方案中,公开了一种将神经存储器中的选定存储器单元编程为目标值的方法,该方法包括:通过向选定存储器单元的端子施加第一电压序列将选定存储器单元的浮栅编程为第一电压;以及通过将第二电压序列施加到相邻调谐单元的端子,通过选定存储器单元的浮栅与相邻调谐单元的浮栅之间的电容耦合将选定存储器单元的浮栅编程为第二电压,其中第二电压对应于目标值。
附图说明
图1示出现有技术的人工神经网络。
图2示出现有技术的分裂栅闪存存储器单元。
图3示出另一现有技术的分裂栅闪存存储器单元。
图4示出另一现有技术的分裂栅闪存存储器单元。
图5示出另一现有技术的分裂栅闪存存储器单元。
图6示出另一现有技术的分裂栅闪存存储器单元。
图7示出现有技术的堆叠栅闪存存储器单元。
图8示出现有技术的双分裂栅闪存存储器单元。
图9示出使用一个或多个非易失性存储器阵列的示例性人工神经网络的不同层级。
图10示出矢量-矩阵乘法系统。
图11示出使用一个或多个矢量-矩阵乘法系统的示例性人工神经网络。
图12示出VMM系统的实施方案。
图13A示出对非易失性存储器单元进行编程的方法的实施方案。
图13B示出对非易失性存储器单元进行编程的方法的另一实施方案。
图14示出粗略编程方法的一个实施方案。
图15示出在非易失性存储器单元的编程中使用的示例性脉冲。
图16示出在非易失性存储器单元的编程中使用的示例性脉冲。
图17示出用于编程非易失性存储器单元的校准算法,该校准算法基于该单元的斜率特征来调整编程参数。
图18示出用于编程非易失性存储器单元的校准算法。
图19示出用于编程非易失性存储器单元的校准算法。
图20示出在编程脉冲序列期间选定存储器单元的浮栅电压。
图21示出能够超精确编程的VMM阵列。
图22示出图21的VMM阵列的单元布局。
图23示出能够超精确编程的VMM阵列,其中某些列包含正值(W+)并且某些列包含负值(W-)。
图24示出在编程脉冲序列期间选定存储器单元的浮栅电压。
图25A示出能够进行超精确编程的VMM阵列,其中相邻单元被一起读取以减少噪声。
图25B示出由读出放大器一起读取的相邻单元的示意图。
图26示出超精确编程方法。
图27示出另一超精确编程方法。
图28示出在编程脉冲序列期间选定存储器单元和相邻调谐单元的浮栅电压。
具体实施方式
图12示出VMM系统1200的框图。VMM系统1200包括VMM阵列1201、行解码器1202、高电压解码器1203、列解码器1204、位线驱动器1205、输入电路1206、输出电路1207、控制逻辑部件1208和偏置发生器1209。VMM系统1200还包括高电压生成块1210,该高电压生成块包括电荷泵1211、电荷泵调节器1212和高电压电平发生器1213。VMM系统1200还包括算法控制器1214、模拟电路1215、控制逻辑部件1216和测试控制逻辑部件1217。下文描述的系统和方法可以在VMM系统1200中实现。
可以使用粗略编程、精确编程和超精确编程在编程过程期间实现各种精度水平。
如本文针对神经网络所述,VMM阵列1200的非易失性存储器单元(即VMM阵列1200的闪存存储器)优选地被配置成在亚阈值区域中操作。
在亚阈值区中偏置本文所述的非易失性参考存储器单元和非易失性存储器单元:
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阵列的存储器单元可用于神经网络的每个层或多个层的所有区域或其组合(亚阈值、线性或饱和区域)。
用于对VMM中的单元进行粗略编程和精确编程的实施方案
图13A示出利用粗略编程和精确编程的编程方法1300。首先,该方法开始(步骤1301),这通常响应于接收到编程命令而发生。接下来,批量编程操作将所有单元编程到“0”状态(步骤1302)。然后,软擦除操作将所有单元擦除到中间弱擦除电平,使得每个单元在读取操作期间将消耗例如大约3μA-5μA的电流(步骤1303)。这与深度擦除级别形成对比,在深度擦除级别中每个单元在读取操作期间将消耗大约20μA-30μA的电流。然后,对所有未使用单元执行硬编程到非常深的编程状态,以将电子添加到单元的浮栅(步骤1304),以确保那些单元真正“关断”,这意味着那些单元将在读取操作期间消耗可忽略不计的电流量。
然后对所选择的单元执行粗略编程方法(以使单元更接近目标,例如,目标的1.2倍-100倍)(步骤1305),之后对所选择的单元执行精密编程方法(步骤1306)以对每个所选择的单元所需的精确值进行编程。
图13B示出另一编程方法1310,其类似于编程方法1300并且还利用粗略编程和精确编程。然而,代替如图13A的步骤1302中那样将所有单元编程到“0”状态的编程操作,在该方法开始(步骤1301)之后,使用擦除操作将所有单元擦除到“1”状态(步骤3312)。然后使用软(弱)编程操作(步骤1313)将所有单元编程到中间状态(级别),使得每个单元在读取操作期间将消耗大约0.2uA-5uA(例如,目标的2倍-100倍)的电流。此后,粗略且精确的编程方法将如图13A所示。图13B的实施方案的变型将完全移除软编程方法(步骤1313)。
图14示出了粗略编程方法1305的第一实施方案,其为搜索和执行方法1400。首先,执行查找表或功能搜索以基于旨在存储在所选择的单元中的值来确定该所选择的单元的粗略目标电流值(ICT)(步骤1401)。例如,该表或功能由硅特性或晶圆测试校准创建。假设所选择的单元可被编程为存储N个可能值(例如,非限制地128、64、32)中的一者。N个值中的每个值将对应于在读取操作期间由所选择的单元消耗的不同期望电流值(ID)。在一个实施方案中,查找表可包含M个可能的电流值,以在搜索和执行方法1400期间用作所选单元的粗略目标电流值ICT,其中M为小于N的整数。例如,如果N为8,则M可以为4,这意味着存在所选择的单元可存储的8个可能值,并且4个粗略目标电流值中的一者将被选择用作搜索和执行方法1400的粗略目标。也就是说,搜索和执行方法1400(其也是粗略编程方法1305的一个实施方案)旨在将所选择的单元快速编程为在一定程度上接近期望电流值(ID)的粗略目标电流值(ICT),然后精确编程方法1306旨在将所选择的单元更精确地编程为极其接近期望电流值(ID)。
对于N=8和M=4的简单示例,单元值、期望电流值和粗略目标电流值的示例示于表9和表10中:
表9:N=8时的N个期望电流值的示例
<u>存储在所选择单元中的值</u> | <u>期望电流值(I<sub>D</sub>)</u> |
000 | 100pA |
001 | 200pA |
010 | 300pA |
011 | 400pA |
100 | 500pA |
101 | 600pA |
110 | 700pA |
111 | 800pA |
表10:M=4时的M个目标电流值的示例
<u>粗略目标电流值(I</u><sub>CT</sub><u>)</u> | 相关联的单元值 |
800pA+<u>I<sub>CTOFFSET1</sub></u> | 000,001 |
1600pA+<u>I<sub>CTOFFSET2</sub></u> | 010,011 |
2400pA+<u>I<sub>CTOFFSET3</sub></u> | 100,101 |
3200pA+<u>I<sub>CTOFFSET4</sub></u> | 110,111 |
偏移值ICTOFFSETx用于防止在粗略调谐期间过冲期望的电流值。一旦选择了粗略目标电流值ICT,就通过基于所选择单元(例如,存储器单元210、310、410或510)的单元架构类型将电压v0施加到所选择单元的适当端子来对所选择单元进行编程(步骤1402)。如果所选择的单元是图3中类型的存储器单元310,则电压v0将被施加到控制栅端子28(和/或源极线14),并且根据粗略目标电流值ICT,v0可以是例如5-8V。V0的值任选地可由存储v0的电压查找表与粗略目标电流值ICT确定。
接下来,通过施加电压vi=vi-1+vincrement对所选择的单元进行编程,其中i从1开始并在每次重复该步骤时递增,并且vincrement为将导致适合于所需的变化粒度的编程程度的小精细电压(步骤1403)。因此,执行第一时间步骤1403,i=1,并且v1将为v0+vincrement。然后验证操作发生(步骤1404),其中对所选择的单元执行读取操作,并且测量通过所选择的单元消耗的电流(Icell)。如果Icell小于或等于ICT(此处为第一阈值),则搜索和执行方法1400完成,并且可开始精确编程方法1306。如果Icell不小于或等于粗略目标电流值ICT,则重复步骤1403,并且i递增。
因此,在粗略编程方法1305结束并且精确编程方法1306开始的时刻,电压vi将是用于对所选择的单元进行编程的最终电压,并且所选择的单元将存储与粗略目标电流值ICT相关联的值。精确编程方法1306的目的是将所选择的单元编程到在读取操作期间其消耗电流ID(加上或减去可接受的偏差量,诸如+/-50pA或者+/-30%或更小)的程度,该电流ID是与旨在存储在所选择的单元中的值相关联的期望电流值。
图15示出了可在粗略编程方法1305和/或精确编程方法1306期间施加至所选择的存储器单元的控制栅的不同电压累进的示例。
在第一种方法下,累进地向控制栅施加递增的电压以进一步编程所选择的存储器单元。起始点是vi,其大约为在粗略编程方法1305期间施加的最后一个电压(根据需要或根据目标电流+或-一些Δ电压)。将增量vp1添加到vi,然后使用电压vu+vp1对所选择单元(由从累进1501中的左侧起的第二脉冲所指示)进行编程。vp1是小于vincrement(在粗略编程方法1305期间使用的电压增量)的增量。在施加每个编程电压之后,执行验证步骤(类似于步骤1404),其中确定Icell是否小于或等于IPT1(其为第一精确目标电流值并且此处为第二阈值),其中IPT1=ID+IPT1OFFSET,其中IPT1OFFSET是为防止编程过冲而添加的偏移值。如果不是,则将另一个增量vp1添加到先前施加的编程电压,并重复该过程。在Icell小于或等于IPT1时,则编程序列的该部分停止。任选地,如果IPT1等于ID或足够精确地近似等于ID,则所选择的存储器单元已被成功编程。
如果IPT1不够接近ID,则可进行较小粒度的进一步编程。这里,现使用累进1502。累进1502的起始点大约是在累进1501下用于编程的最后一个电压(根据需要或根据目标电流+或-一些delta电压)。将增量Vp2(其小于vp1)添加到该电压,并且施加组合电压以对所选择的存储器单元进行编程。在施加每个编程电压之后,执行验证步骤(类似于步骤1404),其中确定Icell是否小于或等于IPT2(其为第二精确目标电流值并且此处为第三阈值),其中IPT2=ID+IPT2OFFSET,其中IPT2OFFSET是为防止编程过冲而添加的偏移值。通常,IPT2OFFSET<IPT1OFFSET,因为编程步骤在每一轮中变得更小且更精确。如果不是,则将另一个增量vp2添加到先前施加的编程电压,并重复该过程。在Icell小于或等于IPT2时,则编程序列的该部分停止。这里,假设IPT2等于ID或足够接近ID,以便编程可停止,因为目标值已以足够的精度实现。本领域的普通技术人员可以理解,可通过使用越来越小的编程增量来施加附加的累进。例如,在图16中,施加三个累进(1601、1602和1603)而不是仅两个累进。
第二种方法示出在图15中的累进1503和图16中的累进1604中。此处,并非增加在所选择的存储器单元的编程期间施加的电压,而是在增加周期的持续时间内施加相同的电压。并非在累进1501中添加增量电压诸如vp1并且在累进1503中添加vp2,而是将附加的时间增量tp1添加到编程脉冲,使得每个施加的脉冲比先前施加的脉冲长tp1。在施加每个编程脉冲之后,执行验证步骤(类似于步骤1404)。任选地,在添加到编程脉冲中的附加时间增量比先前使用的进度具有更短的持续时间的情况下,则可以施加附加累进。尽管仅示出一个时间累进,但本领域的普通技术人员将理解,可施加任何数量的不同时间累进。
另选地,每个脉冲的持续时间对于脉冲累进1503和1603可以是相同的,并且系统可以依赖于脉冲数量来执行附加编程。
现在将提供针对粗略编程方法1305的两个附加实施方案的附加细节。
图17示出了粗略编程方法1305的第二实施方案,其为自适应校准方法1700。该方法开始(步骤1701)。以默认起始值v0对单元进行编程(步骤1702)。与搜索和执行方法1400中不同,这里v0不是从查找表得出的,而是可以是预先确定的相对较小的初始值。在第一电流值IR1(例如,100na)和第二电流值IR2(例如,10na)处测量该单元的控制栅电压,并基于这些测量值(例如,360mV/dec)确定亚阈值斜率并存储(步骤1703)。
确定新的期望电压vi。第一次执行该步骤时,i=1,并且使用亚阈值公式基于所存储的亚阈值斜率值以及电流目标值和偏移值来确定v1,诸如以下:
Vi=Vi-1+Vincrement,
其中Vincrement与Vg的斜率成比例
Vg=n*Vt*log[Ids/wa*Io]
这里,wa是存储器单元的w,Ids是电流目标值加上偏移值。
如果所存储的亚阈值斜率值相对较陡,则可使用相对较小的电流偏移值。如果所存储的亚阈值斜率值相对平坦,则可使用相对较高的电流偏移值。因此,确定亚阈值斜率值将允许选择为所考虑的特定单元定制的电流偏移值。这最终将使编程过程更短。当重复该步骤时,i递增,并且vi=vi-1+vincrement。然后使用vi对该单元进行编程。vincrement可由例如存储vincrement值与期望电流值(ID)的查找表确定。
接下来,执行验证操作,其中对所选择的单元执行读取操作,并且测量通过所选择的单元消耗的电流(Icell)(步骤1705)。如果Icell小于或等于粗略目标电流值ICT,其中ICT被设定为=ID+ICTOFFSET,其中ICTOFFSET是为防止编程过冲所添加的偏移值,则自适应校准方法1700完成并且可开始精确编程方法2206。如果Icell不小于或等于粗略目标电流值ICT,则重复步骤1704-1705,并且i递增。
图18示出了粗略编程方法1305的第二实施方案,其为自适应校准方法1800。该方法开始(步骤1801)。以默认起始值v0对单元进行编程(步骤1802)。v0是从诸如利用硅特性创建的查找表得出的,其中该表的值包括偏移,以便使得编程目标不过冲。
在步骤1803中,形成用于预测下一个编程电压的I-V斜率参数。第一控制栅读取电压VCGR1被施加到所选择的单元,并且测量得到单元电流IR1。然后,第二控制栅读取电压VCGR2被施加到所选择的单元,并且测量得到的单元电流IR2。基于这些测量值来确定斜率,并且例如根据亚阈值区域(在亚阈值中操作的小区)中的等式来存储斜率:
斜率=(VCGR1–VCGR2)/(LOG(IR1)–LOG(IR2))
(步骤1803)。VCGR1和VCGR2的值的示例分别是1.5V和1.3V。
确定斜率信息允许选择针对所讨论的特定单元定制的Vincrement值。这最终将使编程过程更短。
当重复步骤1804时,i递增,基于所存储的斜率值和电流目标ICT和偏移值,使用如下等式确定新的期望编程电压Vi:
Vi=Vi-1+Vincrement,
其中,对于i-1,Vincrement=α*斜率*(LOG(IR1)-LOG(ICT)),
其中,ICT是粗略目标电流,并且α是预定常数<1(编程偏移值)以防止过冲,例如,0.9。
然后使用Vi对该单元进行编程。(步骤1805)在此,根据所使用的编程方案,可以向所选单元的源极线端子、控制栅端子或擦除栅端子施加vi。
接下来,验证操作发生,其中对所选择的单元执行读取操作,并且测量通过所选择的单元消耗的电流(Icell)(步骤1806)。如果Icell小于或等于粗略目标阈值ICT,其中粗略目标阈值ICT被设定为=ID+ICTOFFSET,其中ICTOFFSET是为防止编程过冲所添加的偏移值,则过程进行到步骤1807。如果不是,则过程返回到步骤1804,并且i递增。
在步骤1807,将Icell与小于粗略目标阈值ICT的阈值ICT2进行比较。这样做的目的是查看过冲是否已经发生。也就是说,尽管目标是让Icell低于粗略目标阈值ICT,但如果它远远低于粗略目标阈值ICT,则过冲已经出现,并且所存储的值实际上可能对应错误的值。如果Icell不小于或等于ICT2,则没有过冲发生,并且自适应校准方法1800已经完成,此时过程前进到精确编程方法1306。如果Icell小于或等于ICT2,则过冲已经出现。然后擦除所选的单元(步骤1808),并且编程过程在步骤1802处开始,其中根据其过冲多少,调整的Vincrement诸如具有较小的值。任选地,如果步骤1808被执行超过预定次数,则所选择的单元可被视为不应该被使用的坏单元。
精确编程方法1306由多个验证周期和编程周期组成,其中编程电压由具有固定脉冲宽度的恒定精细电压递增,或者其中编程电压是固定的,并且编程脉冲宽度对于下一个脉冲是变化的或恒定的,如上关于图15所述的。
任选地,确定在读取或验证操作期间通过所选择的非易失性存储器单元的电流是否小于或等于第一阈值电流值ICT的步骤可通过以下步骤来执行:向非易失性存储器单元的端子施加固定偏置;测量和数字化由所选择的非易失性存储器单元消耗的电流以生成数字输出位;以及将该数字输出位与表示第一阈值电流值ICT的数字位进行比较。
任选地,确定在读取或验证操作期间通过所选择的非易失性存储器单元的电流是否小于或等于第一阈值电流值ICT的步骤可通过以下步骤来执行:将输入施加到非易失性存储器单元的端子;用输入脉冲调制由非易失性存储器单元消耗的电流以生成调制输出;数字化该调制输出以生成数字输出位;以及将数字输出位与表示第一阈值电流ICT的数字位进行比较。
图19示出了编程方法1305的第三实施方案,其为绝对校准方法1900。该方法开始(步骤1901)。以默认起始值v0对单元进行编程(步骤1902)。在电流目标值Itarget处测量该单元的控制栅电压(VCGRx)并存储(步骤1903)。基于所存储的控制栅电压以及电流目标值Itarget和偏移值Itarget+Ioffset来确定新的期望电压v1(步骤1904)。例如,新的期望电压v1可如下计算:v1=v0+θ*(VCGBIAS-所存储的VCGR),θ约为1,VCGBIAS为最大目标电流下的默认读取控制栅电压,通常约为1.5V,并且所存储的VCGR为步骤1903测量的读取控制栅电压。简而言之,基于所测量的控制栅电压与目标控制栅电压之间的差值来调整更新后的编程电压。
然后使用vi对该单元进行编程。当i=1时,使用得自步骤1904的电压v1。当i>=2时,使用电压vi=vi-1+vincrement。Vincrement可由存储Vincrement值与目标电流值ICT的查找表确定。接下来,验证操作发生,其中对所选择的单元执行读取操作,并且测量通过所选择的单元消耗的电流(Icell)(步骤1906)。如果Icell小于或等于粗略目标电流值ICT,则绝对校准方法1900完成,并且可开始精确编程方法1306。如果Icell不小于或等于粗略目标电流值ICT,则重复步骤1905-1906,并且i递增。
另选地,粗略和/或精细编程方法可以包括增加一个端子(例如,CG)上的编程电压,并且减小另一端子(例如,EG或SL)上的电压,以更精确地控制到浮栅中的电荷耦合。
迄今为止描述的粗略和精确编程方法将足够精确,以便用于大多数系统。然而,即使这些方法也对其精度具有限制。极限精度可以理解为一个电子精度。图20示出申请人针对上述粗略和精确编程方法的工作实施方案收集的数据。图20示出浮栅电压与在尝试将浮栅电压2002编程为尽可能接近目标2001时执行的编程脉冲的数量。可以看出,浮栅电压2002能够在+/-4mV内接近目标2001,这等同于添加到浮栅的单个电子的电荷。对于某些系统,这可能不足够精确。例如,如果N(可以保持在任何浮栅上的不同值的数目)较大(例如,512),则可能需要比+/-4mV更大的精度,这意味着可能需要亚电子(分级电子)精度编程;也就是说,需要一种机制,其中可以以小于+/-4mV的增量调整浮栅电压,这意味着必须添加或从浮栅中减去电子的一部分。此外,可以看出,在编程过程期间浮栅电压的增量不均匀且可预测,这意味着系统将不总是能够利用完整精度来实现给定目标电压。这可能是由于编程物理学的统计学性质。
用于对VMM中的单元进行超精确编程的实施方案
图21至图28示出超精确编程方法和系统的实施方案,其允许比单独通过粗略编程方法1305和精确编程方法1306实现更精确的编程。超精确编程方法和系统使得选定存储器单元的浮栅的电压能够增加相当于添加到每个编程脉冲的浮栅中的单个电子(亚单个电子)的一部分的电荷,这是物理上可能的最精细编程增量。
图21示出包括非易失性存储器单元的行和列的VMM阵列2100。这里,示出了一行存储器单元的一部分。具体地为,数据存储器单元2101、数据存储器单元2102、调谐存储器单元2103、调谐存储器单元2104、数据存储器单元2105和数据存储器单元2106,其分别耦接到位线2121、2122、2123(调谐位线)、2124(调谐位线)、2125和2126,并且耦接到控制栅线,并且可选地耦接到字线、擦除线和/或源极线,这取决于使用的存储器单元架构的类型(例如,存储器单元210、310、410、510、610、710或810)。数据存储器单元2101包括浮栅2111,数据存储器单元2102包括浮栅2112,调谐存储器单元2103包括浮栅2113,调谐存储器单元2104包括浮栅2114,数据存储器单元2105包括浮栅2115,并且数据存储器单元2106包括浮栅2116。调谐位线2123和2124分别是用于对相邻位线执行超精确调谐的位线。
通常,如图21所示,相同行中的相邻浮栅之间存在电容耦合。VMM阵列2100利用这种现象来实现超精确可编程性。在此示例中,数据存储器单元2102用于存储数据,但调谐存储器单元2103不用于存储数据,而是仅用于通过电容耦合来辅助编程单元2102。类似地,数据存储器单元2105用于存储数据,但调谐存储器单元2104仅用于通过电容耦合来辅助编程单元2105。数据存储器单元2101和2106用于存储数据,并且其编程由未示出的相邻调谐单元辅助。
在一个实施方案中,特别地,当数据存储器单元彼此相邻时,它们被分隔距离d2,如用于数据存储器单元2101和2102,以及用于数据存储器单元2105和2106。然而,当数据存储器单元与调谐存储器单元相邻时,它们分开距离d1,如数据存储器单元2102和相邻调谐存储器单元2103,以及数据存储器单元2104和相邻调谐存储器单元2105所示。当调谐存储器单元与另一调谐存储器单元相邻时,它们可以分开距离d1或d2,如调谐存储器单元2103和2104所示。通过设计,d2>d1。因此,分开距离d2的单元之间的电容耦合具有电容C2,而分开距离d1的单元之间的电容耦合具有电容C1,其中C1>C2。也就是说,彼此更接近的单元之间的电容较大。进一步讲,距离d1可以被设计成实现C1的期望值,以优化调谐存储器单元对数据存储器单元的影响,并且因此优化最终编程精度。
如果数据存储器单元2102是所选单元并且期望将数据存储器单元2102编程为某个目标值,则可以使用先前参考图13至图20描述的粗略编程方法和精确编程方法来将数据存储器单元2102编程为一定程度。然而,在实现或超过目标值之前,停止粗略编程和精确编程,并且实施超精确编程方法。
具体地,使用粗略编程方法和精确编程方法对调谐存储器单元2103进行编程。由于电容耦合,因为调谐存储器单元2103被编程,浮栅2113中的电荷将引起浮栅2112上的电荷也增加,但比浮栅2113的电荷增加更小。通过这种机制,浮栅2112将增加比浮栅2113中发生的或者可以通过使用粗略编程方法和精确编程方法1305和1306直接编程单元2102而实现的更精细的增量。在这种情况下,对调谐存储器单元2103执行编程,但是仅需要对数据存储器单元2102执行验证操作。一旦在数据存储器单元2102中实现目标值,就将浮栅2113维持在其充电状态,使得浮栅2112保持在目标值。
图22示出用于具有双向调谐的系统的数据存储器单元2102、调谐存储器单元2103、调谐存储器单元2104和数据存储器单元2105的示例性布局2200(意味着,由于擦除栅是水平的并且控制栅是竖直的(这意味着控制栅与擦除栅正交),编程和擦除均可以用于调谐目的;类似地,控制栅线或字线可以与源极线正交)。此处,竖直方向上,两个相邻列共享CG栅。在可以利用双向调谐的单元的情况下,可以通过擦除或编程调谐单元或两者来实现超精确调谐。
图23示出利用VMM阵列2100的另选实施方案。在此,存储器单元2102用于存储正值(W+),并且存储器单元2105用于存储负值(W-),并且这些存储器单元一起存储值W,其中W=(W+)–(W-),这在读取或验证操作期间可以通过减法电路实现。在此实施方案中,调谐单元(诸如调谐单元2103和2104)被利用权重进行编程,该权重用于将相邻数据单元调谐为相反的权重。因此,例如,位线2123对调谐存储器单元2103进行编程以使电容耦合减小单元2102中浮栅2112的电压,并且位线2124对调谐存储器单元2104进行编程以使电容耦合减小存储器单元2105中浮栅2115的电压。
图24示出调谐存储器单元对相邻数据存储器单元的影响,例如,如图21中的调谐存储器单元2103和数据存储器单元2102。最初,数据存储器单元2102和调谐存储器单元2103都被编程为接近目标电压2401,但仍低于其。然后,调谐存储器单元2103被编程为使得浮栅2113的电压可以超过目标电压2401。浮栅2112上的电压被验证(通过读取验证操作),并且调谐存储器单元2103继续被编程,直到数据存储器单元2102实现准确的目标电压2401。该过程导致等于亚单个电子电势的电荷在编程脉冲期间被添加到浮栅2112,这是物理上可能的最精细的编程增量。
图25A示出利用VMM阵列2100的另一个另选实施方案。在此,调谐位线和数据位线(构成位线对)是可互换的。例如,位线对内具有较大量噪声(诸如随机电报噪声RTN)的位线可以被指定为位线对内的调谐位线。例如,如果存储器单元2102具有比存储器单元2103更大的RTN噪声,则可以将位线2122指定为调谐位线,即存储器单元2102被指定为调谐存储器单元,并且位线2123被指定为数据位线,即存储器单元2103被指定为数据存储器单元。图25B示意性地示出其如何完成。位线2122和2123两者分别通过位线读取晶体管2501和2502作为输入馈送到感测放大器2503。RTN噪声比另一位线少的位线将被指定为数据位线,即相关联的存储器单元被指定为数据存储器单元。位线对中的单元分开距离d1,其中在它们的相应浮栅之间存在固有电容C1。不成对使用的单元可能与相邻单元分开距离d2(如上文所指示的大于距离d1),并且具有小于C1的合成电容C2。
图26示出超精确编程方法2600。该方法开始(步骤2601)。擦除选定数据存储器单元及其相邻调谐存储器单元(步骤2602)。对未选定存储器单元进行深度编程(步骤2603)。对选定数据存储器单元执行粗略编程(步骤2604)。对选定数据存储器单元执行使用增量和/或减量的精确编程(步骤2605),和/或对选定数据存储器单元执行使用恒定电压的精确编程(步骤2605)。然后使用相邻调谐存储器单元与选定数据存储器单元之间的电容耦合执行超精确编程(步骤2607)。一旦达到目标值,则方法结束(步骤2608)。
图27示出超精确编程方法2700。该方法开始(步骤2701)。擦除整个VMM阵列(步骤2702)。对未选定单元进行深度编程(步骤2703)。使用粗略编程将所有单元编程为中间值(例如,约0.5-1μA)(步骤2704)。对选定数据存储器单元执行使用增量的精确编程(步骤2705),和/或对选定数据存储器单元执行使用恒定电压的精确编程(步骤2706)。然后使用相邻调谐存储器单元与选定数据存储器单元之间的电容耦合执行超精确编程(步骤2707)。一旦达到目标值,则方法结束(步骤2708)。
在上述实施方案中,当读取或验证选定数据存储器单元时,也必须读取或验证其相关联的调谐存储器单元,因为在读取或验证数据存储器单元时,电容耦合必须是活动的。这样做的一种方式是在读取或验证操作期间将数据位线和调谐位线耦接到读出放大器。
超精确编程的最终结果如图28所示,其示出由申请人收集的用于本文描述的超精确编程方法和系统的工作实施方案的数据。图28示出数据存储器单元(例如,2102)和相邻调谐存储器单元(例如,2103)的浮栅电压以及通过对相邻调谐存储器单元2103中的浮栅2113进行编程以尝试将浮栅2112的电压精准编程为目标2801中所执行的编程脉冲的数量。首先将选定数据存储器单元2102编程为最高至仅低于90个脉冲,并且通过仅向相邻调谐存储器单元2103提供编程脉冲来完成编程的平衡。可以看出,超精确编程比单独的粗略编程和精细编程方法(在图20中所示的)更精确,并且由于浮栅2112和2113之间电容耦合的浮栅2112的电压增量实际上对应于每编程脉冲向浮栅2112添加的小于一个电子。
超精确编程的另一个实施方案使用到浮栅耦合的竖直浮栅而不是到浮栅耦合的水平浮栅,诸如上文参考调谐位线所述的。在这种情况下,相邻行(调谐行)用于耦合目的。这特别适用于存储器单元210、310、510和710,在这种情况下,顶部FG和底部FG中没有物理屏障(擦除栅)。
超精确编程的另一个实施方案使用到浮栅耦合的重叠浮栅,诸如其中调谐单元浮栅与目标单元浮栅重叠。重叠为诸如当一个浮栅部分地位于另一浮栅的顶部上时。
应当指出,如本文所用,术语“在…上方”和“在…上”两者包容地包括“直接在…上”(之间未设置中间材料、元件或空间)和“间接在…上”(之间设置有中间材料、元件或空间)。类似地,术语“相邻”包括“直接相邻”(之间没有设置中间材料、元件或空间)和“间接相邻”(之间设置有中间材料、元件或空间),“安装到”包括“直接安装到”(之间没有设置中间材料、元件或空间)和“间接安装到”(之间设置有中间材料、元件或空间),并且“电耦接至”包括“直接电耦接至”(之间没有将元件电连接在一起的中间材料或元件)和“间接电耦接至”(之间有将元件电连接在一起的中间材料或元件)。例如,“在衬底上方”形成元件可包括在两者间没有中间材料/元件的情况下在衬底上直接形成元件,以及在两者间有一个或多个中间材料/元件的情况下在衬底上间接形成元件。
Claims (45)
1.一种将神经存储器中的选定存储器单元编程为目标值的方法,包括:
通过向所述选定存储器单元的端子施加第一电压序列将所述选定存储器单元的浮栅编程为第一电压;以及
通过将第二电压序列施加到相邻调谐单元的端子,通过所述选定存储器单元的所述浮栅与所述相邻调谐单元的浮栅之间的电容耦合将所述选定存储器单元的所述浮栅编程为第二电压,其中所述第二电压对应于所述目标值。
2.根据权利要求1所述的方法,其中所述选定存储器单元的所述端子包括耦接到位线的位线端子、耦接到源极线的源极线端子以及耦接到字线的字线端子。
3.根据权利要求2所述的方法,其中所述选定存储器单元的所述端子还包括耦接到控制栅线的控制栅端子。
4.根据权利要求3所述的方法,其中所述选定存储器单元的所述控制栅端子连接到控制栅线,并且其中所述控制栅线连接到包含所述选定存储器单元的单元列和相邻单元列的控制栅端子。
5.根据权利要求3所述的方法,其中所述选定存储器单元的所述端子还包括耦接到擦除栅线的擦除栅端子。
6.根据权利要求5所述的方法,其中所述控制栅与所述擦除栅线正交。
7.根据权利要求5所述的方法,其中所述控制栅线与所述源极线正交。
8.根据权利要求2所述的方法,其中所述选定存储器单元为分栅存储器单元。
9.根据权利要求2所述的方法,其中所述选定存储器单元为叠栅存储器单元。
10.根据权利要求1所述的方法,其中在所述第二电压序列中的每个编程脉冲期间,将等于亚单个电子的电荷添加到所述选定存储器单元的所述浮栅。
11.根据权利要求1所述的方法,其中所述选定存储器单元和所述相邻调谐单元被包含在包括多对相邻数据单元和调谐单元的行内。
12.根据权利要求1所述的方法,其中所述选定存储器单元和所述相邻调谐单元被包含在包括多对相邻数据单元和调谐单元的阵列内。
13.根据权利要求11所述的方法,其中相邻数据单元之间的距离大于相邻数据单元与调谐单元之间的距离。
14.根据权利要求11所述的方法,其中所述行中的所述数据单元的一半存储W+值,并且所述行中的所述数据单元的一半存储W-值。
15.根据权利要求14所述的方法,其中存储W+值的所述数据单元的所述一半用作调谐单元。
16.根据权利要求14所述的方法,其中存储W-值的所述数据单元的一半用作调谐单元。
17.根据权利要求11所述的方法,其中在读取操作期间,相邻对的数据位线和调谐位线耦接到读出放大器。
18.根据权利要求17所述的方法,其中所述数据位线和所述调谐位线是可互换的。
19.根据权利要求1所述的方法,其中将所述选定存储器单元的浮栅编程为第一电压的所述步骤包括粗略编程。
20.根据权利要求1所述的方法,其中将所述选定存储器单元的浮栅编程为第一电压的所述步骤包括粗略编程和精确编程。
21.根据权利要求1所述的方法,其中在编程所述选定存储器单元的浮栅的所述步骤期间的事件中,如果所述选定存储器单元的所述电压被过度编程为超过所述第一电压的电压,则所述方法还包括擦除所述选定存储器单元。
22.根据权利要求1所述的方法,其中所述选定存储器单元的所述浮栅和所述相邻调谐单元的所述浮栅部分重叠。
23.一种将神经存储器中的第一存储器单元编程为目标值的方法,包括:
通过将编程电压施加到所述第二存储器单元的端子来对第二存储器单元进行编程;以及
确定所述第一存储器单元的输出是否已达到所述目标值。
24.根据权利要求23所述的方法,其中所述第二存储器单元邻近所述第一存储器单元。
25.根据权利要求23所述的方法,其中所述第一存储器单元耦接到数据位线,并且所述第二存储器单元耦接到调谐位线。
26.根据权利要求25所述的方法,还包括:
在所述编程步骤之前,确定一对相邻位线中的哪个位线包含更大的噪声并且将所述位线指定为所述调谐位线并将所述对中的所述另一位线指定为所述数据位线。
27.根据权利要求23所述的方法,其中所述第一存储器单元和所述第二存储器单元被包含在模拟神经存储器阵列中。
28.根据权利要求23所述的方法,还包括:
如果所述第一存储器单元的所述输出尚未达到所述目标值,则重复所述编程和确定步骤,直到所述第一存储器单元的所述输出已达到所述目标值。
29.根据权利要求28所述的方法,其中针对每个重复步骤,增加施加到所述第二存储器单元的所述端子的所述编程电压中的一个或多个。
30.根据权利要求28所述的方法,其中在每个重复步骤期间使用相同的编程电压。
31.根据权利要求23所述的方法,其中所述第二存储器单元的所述端子包括位线端子、源极线端子和字线端子。
32.根据权利要求31所述的方法,其中所述第二存储器单元的所述端子还包括控制栅端子。
33.根据权利要求32所述的方法,其中所述第一存储器单元的所述控制栅端子连接到控制栅线;以及
其中所述控制栅线连接到包含所述第一存储器单元的单元列的控制栅端子和包含所述第二存储器单元的相邻单元列。
34.根据权利要求34所述的方法,其中所述第二存储器单元的所述端子还包括擦除栅端子。
35.根据权利要求34所述的方法,其中所述控制栅与所述擦除栅正交。
36.根据权利要求34所述的方法,其中所述控制栅与所述源极线正交。
37.根据权利要求23所述的方法,其中所述第一存储器单元和所述第二存储器单元为分裂栅存储器单元。
38.根据权利要求23所述的方法,其中所述第一存储器单元和所述第二存储器单元为叠栅存储器单元。
39.根据权利要求23所述的方法,其中在所述编程步骤期间,将等于亚单个电子的电荷添加到所述第一存储器单元的所述浮栅。
40.根据权利要求23所述的方法,其中所述第一存储器单元和所述第二存储器单元被包含在包括多对相邻数据单元和调谐单元的阵列内。
41.根据权利要求40所述的方法,其中相邻数据单元之间的距离大于相邻数据单元与调谐单元之间的距离。
42.根据权利要求23所述的方法,其中在所述确定步骤期间,耦接到所述第一存储器单元的位线和耦接到所述第二存储器单元的位线均耦接到感测放大器。
43.根据权利要求23所述的方法,还包括:
对所述第一存储器单元执行粗略编程。
44.根据权利要求23所述的方法,还包括:
对所述第一存储器单元执行粗略编程;以及
对所述第一存储器单元执行精确编程。
45.根据权利要求21所述的方法,其中所述第一存储器单元的所述浮栅和所述第二存储器单元的所述浮栅部分重叠。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062981757P | 2020-02-26 | 2020-02-26 | |
US62/981,757 | 2020-02-26 | ||
US16/985,147 | 2020-08-04 | ||
US16/985,147 US11393535B2 (en) | 2020-02-26 | 2020-08-04 | Ultra-precise tuning of analog neural memory cells in a deep learning artificial neural network |
PCT/US2020/048829 WO2021173185A1 (en) | 2020-02-26 | 2020-08-31 | Ultra-precise tuning of analog neural memory cells in a deep learning artificial neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115191016A true CN115191016A (zh) | 2022-10-14 |
Family
ID=77366771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080097429.0A Pending CN115191016A (zh) | 2020-02-26 | 2020-08-31 | 深度学习人工神经网络中的模拟神经存储器单元的超精确调谐 |
Country Status (7)
Country | Link |
---|---|
US (2) | US11393535B2 (zh) |
EP (1) | EP4111453A1 (zh) |
JP (1) | JP7418602B2 (zh) |
KR (1) | KR20220143076A (zh) |
CN (1) | CN115191016A (zh) |
TW (2) | TWI759062B (zh) |
WO (1) | WO2021173185A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11755899B2 (en) * | 2019-11-11 | 2023-09-12 | Silicon Storage Technology, Inc. | Precise programming method and apparatus for analog neural memory in an artificial neural network |
US11532354B2 (en) * | 2020-03-22 | 2022-12-20 | Silicon Storage Technology, Inc. | Precision tuning of a page or word of non-volatile memory cells and associated high voltage circuits for an analog neural memory array in an artificial neural network |
US11907571B2 (en) * | 2020-07-13 | 2024-02-20 | SK Hynix Inc. | Read threshold optimization systems and methods using domain transformation |
US11355204B2 (en) | 2020-09-03 | 2022-06-07 | SK Hynix Inc. | Efficient read-threshold calculation method for parametric PV-level modeling |
US11430530B2 (en) | 2021-01-25 | 2022-08-30 | SK Hynix Inc. | Deep learning based program-verify modeling and voltage estimation for memory devices |
US11514999B2 (en) | 2021-04-16 | 2022-11-29 | SK Hynix Inc. | Systems and methods for parametric PV-level modeling and read threshold voltage estimation |
US11749354B2 (en) | 2021-07-13 | 2023-09-05 | SK Hynix Inc. | Systems and methods for non-parametric PV-level modeling and read threshold voltage estimation |
US11769556B2 (en) | 2021-07-27 | 2023-09-26 | SK Hynix Inc. | Systems and methods for modeless read threshold voltage estimation |
US11769555B2 (en) | 2021-07-27 | 2023-09-26 | SK Hynix Inc. | Read threshold voltage estimation systems and methods for parametric PV-level modeling |
US11854629B2 (en) | 2021-11-22 | 2023-12-26 | SK Hynix Inc. | System and method for non-parametric optimal read threshold estimation using deep neural network |
KR20230114500A (ko) * | 2022-01-25 | 2023-08-01 | 삼성전자주식회사 | 플래시 메모리 제어 방법 및 장치 |
Family Cites Families (12)
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 |
US7064980B2 (en) * | 2003-09-17 | 2006-06-20 | Sandisk Corporation | Non-volatile memory and method with bit line coupled compensation |
US7049652B2 (en) | 2003-12-10 | 2006-05-23 | Sandisk Corporation | Pillar cell flash memory technology |
US20080273389A1 (en) * | 2007-03-21 | 2008-11-06 | Micron Technology, Inc. | Flash memory cells, NAND cell units, methods of forming NAND cell units, and methods of programming NAND cell unit strings |
US7936599B2 (en) * | 2007-06-15 | 2011-05-03 | Micron Technology, Inc. | Coarse and fine programming in a solid state memory |
US7723774B2 (en) * | 2007-07-10 | 2010-05-25 | Silicon Storage Technology, Inc. | Non-diffusion junction split-gate nonvolatile memory cells and arrays, methods of programming, erasing, and reading thereof, and methods of manufacture |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
JP2010123210A (ja) * | 2008-11-20 | 2010-06-03 | Toshiba Corp | 半導体記憶装置 |
US11308383B2 (en) | 2016-05-17 | 2022-04-19 | Silicon Storage Technology, Inc. | Deep learning neural network classifier using non-volatile memory array |
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 |
US10910061B2 (en) * | 2018-03-14 | 2021-02-02 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
-
2020
- 2020-08-04 US US16/985,147 patent/US11393535B2/en active Active
- 2020-08-31 WO PCT/US2020/048829 patent/WO2021173185A1/en unknown
- 2020-08-31 JP JP2022550938A patent/JP7418602B2/ja active Active
- 2020-08-31 EP EP20772477.4A patent/EP4111453A1/en active Pending
- 2020-08-31 KR KR1020227031893A patent/KR20220143076A/ko unknown
- 2020-08-31 CN CN202080097429.0A patent/CN115191016A/zh active Pending
-
2021
- 2021-01-07 TW TW110100537A patent/TWI759062B/zh active
- 2021-01-07 TW TW111105352A patent/TWI778920B/zh active
-
2022
- 2022-06-27 US US17/850,447 patent/US20220336020A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
KR20220143076A (ko) | 2022-10-24 |
US11393535B2 (en) | 2022-07-19 |
TWI778920B (zh) | 2022-09-21 |
JP2023515531A (ja) | 2023-04-13 |
TW202133163A (zh) | 2021-09-01 |
US20220336020A1 (en) | 2022-10-20 |
TW202219956A (zh) | 2022-05-16 |
WO2021173185A1 (en) | 2021-09-02 |
EP4111453A1 (en) | 2023-01-04 |
US20210264983A1 (en) | 2021-08-26 |
JP7418602B2 (ja) | 2024-01-19 |
TWI759062B (zh) | 2022-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI759062B (zh) | 深度學習人工神經網路中類比神經記憶體單元的超精確調節 | |
TWI787099B (zh) | 用於在深度學習人工類神經網路中的類比類神經記憶體之高電壓產生之方法及設備 | |
US11636322B2 (en) | Precise data tuning method and apparatus for analog neural memory in an artificial neural network | |
CN115885345A (zh) | 模拟神经存储器中的并发写入和验证操作 | |
TWI809663B (zh) | 用於人工神經網路中之類比神經記憶體之精確資料調校方法及裝置 | |
TWI819298B (zh) | 包含邏輯單元之人工神經網路中之類比神經記憶體陣列及經改良之程式化機制 | |
TWI785574B (zh) | 具有源極線下拉機制之人工神經網路中之類比神經記憶體陣列 | |
CN115968495A (zh) | 用于人工神经网络中的模拟神经存储器阵列的自适应偏置解码器 | |
US11989440B2 (en) | Hybrid memory system configurable to store neural memory weight data in analog form or digital form | |
US20210209458A1 (en) | Precise data tuning method and apparatus for analog neural memory in an artificial neural network | |
TW202343451A (zh) | 包含i-v斜率組構的參考陣列之人工神經網路 | |
CN117178324A (zh) | 用于深度学习人工神经网络中模拟神经存储器的分裂阵列架构 | |
CN117751406A (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 |