CN102067233B - 使用索引编程和减少的验证的非易失性存储器和方法 - Google Patents

使用索引编程和减少的验证的非易失性存储器和方法 Download PDF

Info

Publication number
CN102067233B
CN102067233B CN200980122199.2A CN200980122199A CN102067233B CN 102067233 B CN102067233 B CN 102067233B CN 200980122199 A CN200980122199 A CN 200980122199A CN 102067233 B CN102067233 B CN 102067233B
Authority
CN
China
Prior art keywords
programming
memory cell
memory
index
programmed
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.)
Active
Application number
CN200980122199.2A
Other languages
English (en)
Other versions
CN102067233A (zh
Inventor
劳尔-阿德里安·瑟尼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Delphi International Operations Luxembourg SARL
Original Assignee
SanDisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US12/138,371 external-priority patent/US7800945B2/en
Priority claimed from US12/138,378 external-priority patent/US7826271B2/en
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN102067233A publication Critical patent/CN102067233A/zh
Application granted granted Critical
Publication of CN102067233B publication Critical patent/CN102067233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital 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/5621Digital 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/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/562Multilevel memory programming aspects
    • G11C2211/5621Multilevel programming verification

Abstract

在非易失性存储器中,使用减少验证步骤数量的多遍索引编程方法分别将一组存储器单元并行编程到它们的目标状态。对于每个单元,维持编程索引来存储施加到该单元的最后的编程电压。在施加一系列递增的编程脉冲的第一遍编程期间索引每个单元。在第一遍编程之后跟有验证和一遍或多遍随后的编程以修整到各自目标状态的任何差量。如果单元未被验证到它的目标状态,则它的编程索引递增,并允许通过从最后接收的脉冲开始的下一脉冲来编程该单元。重复验证和编程遍,直到该组中所有单元被验证到它们各自的目标状态。在脉冲之间不需要验证操作。

Description

使用索引编程和减少的验证的非易失性存储器和方法
技术领域
本发明一般涉及诸如电可擦除可编程只读存储器(EEPROM)和快闪EEPROM之类的非易失性半导体存储器,并且具体地,涉及其中编程-验证操作的数量被最小化的存储器和编程操作。
背景技术
能够非易失性存储电荷的固态存储器、特别是被封装为小型规格卡的EEPROM和快闪EEPROM形式的固态存储器最近成为各种移动和手持设备、特别是信息装置和消费电子产品中存储选择。不同于也是固态存储器的RAM(随机存取存储器),闪存是非易失性存储器,并且即使在切断电源之后仍保持它所存储的数据。尽管成本更高,但是闪存正被更多地用于海量存储应用中。基于诸如硬盘驱动或软盘之类的旋转磁介质的传统海量存储不适合于移动和手持环境。这是因为盘驱动倾向于体积大,易出现机械故障,并且具有高等待时间和高功率要求。这些不希望的属性使得基于盘的存储在大部分移动和便携式应用中不实用。另一方面,嵌入式和可移动卡形式这两种的闪存由于其小尺寸、低功耗、高速和高可靠性特征而理想地适合于移动和手持环境。
EEPROM和电可编程只读存储器(EPROM)是可以被擦除、并使新数据写入或“被编程”到其存储器单元中的非易失性存储器。在场效应晶体管结构中,两者利用在源极和漏极区域之间的、位于半导体衬底中的沟道区之上的浮置(未连接)导电栅极。然后在浮置栅极之上提供控制栅极。由被保留在浮置栅极上的电荷量来控制晶体管的阈值电压特性。也就是,对于浮置栅极上给定水平的电荷,存在必须在“导通”晶体管之前施加到控制栅极以允许在其源极和漏极区之间导电的相应电压(阈值)。
浮置栅极可以保持一个范围的电荷,因此可以被编程到在阈值电压窗内的任何阈值电压电平。由器件的最小和最大阈值电平来界定(delimit)阈值电压窗的大小,该最小和最大阈值电平又对应于可以被编程到浮置栅极上的电荷的范围。阈值窗通常取决于存储器器件的特性、工作条件和历史。在该窗内的每个不同的可分辨的阈值电压电平范围原则上可以用于指定单元的明确的存储器状态。当将阈值电压划分为两个不同区域时,每个存储器单元将能够存储一位数据。类似地,当将阈值电压窗划分为多于两个不同区域时,每个存储器单元将能够存储多于一位数据。
在通常的两状态EEPROM单元中,建立至少一个电流分界点水平以将导电窗划分为两个区域。当通过施加预定的固定电压来读取单元时,其源极/漏极电流通过与分界点水平(或参考电流IREF)相比较而被解析为存储器状态。如果读取的电流高于分界点水平的电流,则确定该单元处于一个逻辑状态(例如“0”状态)。另一方面,如果该电流小于分界点水平的电流,则确定该单元处于另一逻辑状态(例如“1”状态)。从而,这样的两状态单元存储一位数字信息。通常将可以从外部编程的参考电流源提供为存储器系统的一部分,以生成分界点水平电流。
为了增大存储器容量,随着半导体技术的状态进步,正用越来越高的密度来制造快闪EEPROM器件。增大存储容量的另一方法是使每个存储器单元存储多于两个状态。
对于多状态或多级EEPROM存储器单元,导电窗被通过多于一个分界点划分为多于两个区域,使得每个单元能够存储多于一位的数据。给定的EEPROM阵列可以存储的信息因此随着每个单元可以存储的状态的数量而增加。在美国专利No.5172338中描述了具有多状态或多级存储器单元的EEPROM或快闪EEPROM。
通常通过两种机制之一来将充当存储器单元的晶体管编程到“已编程”状态。在“热电子注入”中,施加到漏极的高电压加速了穿过衬底沟道区的电子。同时,施加到控制栅极的高电压拉动热电子经过薄栅极电介质到浮置栅极上。在“隧穿注入”中,相对于衬底,高电压被施加到控制栅极。以此方式,将电子从衬底拉到中间的(intervening)浮置栅极。
可以通过多种机制来擦除存储器器件。对于EPROM,可通过紫外线辐射从浮置栅极移除电荷而大量擦除该存储器。对于EEPROM,可通过相对于控制栅极向衬底施加高电压以便诱导浮置栅极中的电子遂穿过薄氧化物到衬底沟道区(即,Fowler-Nordheim隧穿)而电擦除存储器单元。通常,EEPROM可逐字节擦除。对于快闪EEPROM,在块可由存储器的512字节或更多组成的情况下,该存储器可一次性电擦除或一次一个或多个块地电擦除。
存储器器件通常包括可以被安装在卡上的一个或多个存储器芯片。每个存储器芯片包括由诸如解码器和擦除、写和读电路的外围电路支持的存储器单元的阵列。更复杂的存储器器件利用进行智能和更高级的存储器操作和接口的外部存储器控制器而工作。
存在现今正使用的许多商业上成功的非易失性固态存储器器件。这些存储器器件可以是快闪EEPROM,或可以使用其他类型的非易失性存储器单元。在美国专利No.5070032、5095344、5315541、5343063和5661053、5313421和6222762中给出了闪存和系统及其制造方法的例子。具体地,在美国专利No.5570315、5903495、6046935中描述了具有NAND串结构的闪存器件。而且还由具有用于存储电荷的介电层的存储器单元制造非易失性存储器器件。取代先前描述的导电浮置栅极元件,使用介电层。由Eitan等人的“NROM:A Novel Localized Trapping,2-Bit Nonvolatile Memory Cell”,IEEE ElectronDevice Letters,Vol.21,No.11,2000年11月,543-545页描述了利用介电存储元件的这种存储器器件。ONO介电层延伸穿过在源极和漏极扩散之间的沟道。用于一个数据位的电荷被局限在与漏极相邻的介电层中,且用于另一数据位的电荷被局限在与源极相邻的介电层中。例如,美国专利No.5768192和6011725公开了具有夹在两个二氧化硅层之间的俘获(trapping)电介质的非易失性存储器单元。通过分别读取该电介质中的空间分离的电荷存储区域的二进制状态来实现多状态数据存储。
为了改善读取和编程性能,并行地读取或编程阵列中的多个电荷存储元件或存储器晶体管。从而,一起读取或编程一“页”的存储器元件。在现有存储器架构中,一行通常包含几个交织的页,或者它可能构成一页。一页的所有存储器元件将被一起读取或编程。
使用一系列交替的编程/验证周期的传统编程技术用于处理编程过程中的不确定性,其中响应于VPGM相对大的改变,单元的阈值电压起初增长很快。但是,随着被编程到浮置栅极中的电荷起屏蔽作用而减小了用于使电子进一步隧穿到浮置栅极中的有效电场,增长变慢并最终停止。该过程表现出高度非线性,因此利用了试错(trial-and-error)方法。
编程/验证编程技术的缺点是,验证周期占用时间并影响性能。能够存储多位的存储器单元的实现加剧了该问题。基本上需要对于存储器单元的可能的多个状态中的每个执行验证。对于具有16个可能的存储器状态的存储器,这意味着每个验证周期可能导致高达16个感测操作。从而,随着在多级存储器单元(“MLC”)中可区分的状态级数量的增加,编程/验证方案的验证周期变得越来越耗时。
由Loc Tu等人于2006年9月12日提交的题为“Method for Non-volatileMemory with Linear Estimation of Initial Programming Voltage”的美国专利申请序列号11/531227公开了通过线性估算来估算初始编程电压的方法。为了实现非易失性存储器的良好编程性能,必须在工厂时最优地选择初始编程电压VPGM0和步长大小。这通过测试每页的存储器单元来完成。通过在脉冲之间具有验证的一系列阶梯波形的电压脉冲来连续编程与所选择的页耦接的字线,直到该页被验证为指定样式(pattern)。通过线性缩放(scale)回到该页的起始编程电压的初始值,编程验证该页时的编程电压将被用于估算。通过将来自第一遍(pass)的估算用在第二遍中来进一步细化估算。从而,传统的交替编程和验证被用于建立最终编程电压,用于成功对页编程。然后,将最终编程电压线性缩放回为达到该页的所估算的初始编程电压。这种类型的缩放在总规模上是页级别的,并且没有克服在基于逐单元的领域中的传统编程和验证存储器的缺点。
具体地,传统编程要求在每个脉冲之间的验证操作。当将存储器划分为许多存储器状态时,验证操作必须在每个脉冲之间检查许多状态。验证操作的数量随状态划分数量的平方增加。从而,对于每单元保存3位或更多位数据的存储器,验证操作的数量变得极其大。
为了改善编程分辨率,传统方法是使编程脉冲步长大小更精细。但是,这具有成比例增加编程所需的脉冲数量、从而增加编程时间的效果。此外,编程脉冲的增加将增加传统方法中交叉验证的数量。
因此,存在对高容量和高性能非易失性存储器的普遍需要。特别地,存在对具有使前述缺点最小化的改善编程性能的高容量非易失性存储器的需要。
发明内容
根据本发明的一个一般方面,在一组存储器单元上并行工作的多遍索引编程方法包括为每个单元维持编程索引,以便提供诸如该单元接收的最后的编程电压电平之类的信息,使得在随后遍的编程中,可以相对于编程索引对该单元编程或禁止编程。
优选地,在每遍编程,将作为阶梯脉冲串形式的一系列递增的脉冲的编程电压施加到该组存储器单元,使得随着脉冲计数的增加,存储器单元被暴露于增加的编程电压。在优选实施例中,每个离散编程电压电平被方便地表达为脉冲计数或脉冲数。类似地,根据脉冲数来表达编程索引。
在该组存储器单元组的一遍编程中,该组中的单元的编程索引用于控制相对于每个递增脉冲允许还是禁止编程。
在第一实现方式中,从存储器单元的初始编程经历获取单元的编程索引。编程索引存储在一遍编程期间在单元被禁止编程之前施加到该单元的最后的编程电压电平或脉冲数。通过如传统的交织编程/验证方法中那样交织编程和验证步骤来建立每个单元的编程索引。在该组中的单元已被编程验证之后禁止该单元的编程,并将最后的脉冲数记录为它的编程索引。虽然该实现方式可能导致更多的验证步骤,但是这更不太可能过度编程任何单元。然后,可以在随后遍的编程中有利地使用为每个单元建立的编程索引来节省验证步骤。
在第二实现方式中,将单元的编程索引初始设置为用于将该单元编程到接近但不超过其目标状态的估算的最大编程电压电平。随着阶梯脉冲串被施加到该组中的每个单元,单元在达到由它的编程索引指示的期望最大编程电压电平之后被禁止进一步编程。阶梯脉冲串的后续脉冲对所禁止的单元将没有影响。在该遍编程的最后,该组中的每个单元将被编程到接近每个各自的目标状态,并且每个编程索引将反映每个单元接收到的最后的编程电压电平。
在第三实现方式中,从存储器单元的初始编程经历估算单元的编程索引。具体地,通过每个脉冲之后跟有验证的一系列编程脉冲来将存储器单元从被擦除状态编程到给定阈值电压电平,该给定阈值电压电平用作校验点并校准预测函数,从该预测函数获取对于给定目标阈值电压电平的编程索引或编程电压电平。通过由一个或多个校验点校准的预测方法来获取编程索引。
在一个实施例中,通过线性函数来近似预定函数,该线性函数成比例地产生给定目标阈值电压电平的编程电压电平。该线性函数具有由可施加到存储器阵列的全体(population)单元的预定平均值给出的斜率。通过预定对于给定存储器单元的线性函数上的校验点来唯一地确定对于给定存储器单元的线性函数。校验点基于将存储器单元编程到指定阈值电压电平的实际编程电压。校验点优选地对应于存储器单元的最低编程状态之一。通过利用例如传统编程/验证编程技术,将存储器单元初始编程到校验点。以此方式,确定将存储器单元编程到指定存储器状态所需的实际编程电压的校验点值。从而,在被用于确定将存储器单元编程到目标阈值电压电平的编程电压值之前,当在校验点阈值电压电平处评估时,校准预定函数以产生校验点编程电压值。
预测编程技术的优点在于,编程到目标状态不需要验证操作。验证操作仅需要验证校验点状态而不是存储器的所有可能状态。
执行另外的各遍编程以改善编程准确度并收紧多状态存储器中的每个存储器状态的分布。
索引编程的优点是,可以编程单元组而在该遍编程的每个编程脉冲之间无需验证步骤。这将极大改善编程操作的性能。
根据本发明的另一一般方面,在一组存储器单元上并行工作的多遍索引编程方法包括初始遍编程和对每个单元的编程索引的构建。初始遍编程之后跟有验证步骤和另外的各遍编程以修整(trim)初始遍的任何差量(short-fall)。通过使用索引编程,执行多遍编程并且验证操作的数量降低很多。
在下一遍编程期间,验证过的单元被禁止进一步编程。使得能够通过超过上一遍编程中的脉冲的一个脉冲来编程未验证的单元。重复验证步骤和编程遍,直到该组中所有单元被验证到它们各自的目标状态。以此方式,能够通过在执行验证步骤之前施加整个一连串的脉冲串来将一页的存储器单元准确地并行编程到它们各自的目标状态。
索引编程的优点是,可以编程单元组而该遍编程的每个编程脉冲之间无需验证步骤。索引编程将极大地改善编程操作的性能。
附图说明
图1示意性地图示了可以实现本发明的非易失性存储器芯片的功能块。
图2示意性地图示了非易失性存储器单元。
图3图示了针对浮置栅极可以在任何一个时刻选择性存储的四个不同电荷Q1-Q4、在源极-漏极电流ID和控制栅极电压VCG之间的关系。
图4图示了存储器单元的NOR阵列的例子。
图5A示意性地图示了被组织成NAND串的存储器单元串。
图5B图示了由诸如图5A所示的NAND串50构成的存储器单元的NAND阵列200的例子。
图6图示了图1所示的读/写电路270A和270B,其包含跨过存储器单元阵列的一排(bank)p个感测模块。
图7示意性地图示了图6所示的感测模块的优选组织。
图8更详细地图示了图7所示的读/写堆叠。
图9(0)-9(2)图示了编程4状态存储器单元的全体(population)的例子。
图10(0)-10(2)图示了编程8状态存储器单元的全体的例子。
图11图示了用于将4状态存储器单元编程到目标存储器状态的传统技术。
图12是图示使用传统交替编程/验证算法来编程一页的编程脉冲和验证周期的估算数量的表格。
图13是图示索引编程方法的一般方案的流程图。
图14A是图示根据第一实现方式提供存储器单元的编程索引的流程图。
图14B是图示获取存储器单元的编程索引的第二实现方式的流程图。
图14C是图示使用通过一个或多个校验点校准的预测函数来获取存储器单元的编程索引的第三实现方式的流程图。
图14D是图示根据一个实施例的获取存储器单元的编程索引的第三实现方式的流程图。
图14E是图示根据另一实施例的获取存储器单元的编程索引的第三实现方式的流程图。
图15图示了用于提供将存储器单元编程到目标阈值电压电平所需的编程电压的预定函数的优选实施例。
图16图示了对于与在擦除状态之上的第一编程状态对应的校验点的优选指定。
图17图示了在第一遍编程中利用的并用于建立每个单元的编程索引的预测编程。
图18A是图示用步长大小设备编程电压、使得每个另外的脉冲将把存储器单元编程到下一存储器状态的流程图。
图18B示意性地图示了经历第一遍编程的存储器单元的阈值电压。
图19是图示建立存储器单元的编程索引的优选实现方式的流程图。
图20(A)、20(B)和20(C)分别图示了对于图18B所示的“常规”单元、“慢”单元和“非常慢”单元的图19的锁存操作。
图21是图示索引编程方法的优选实施例的流程图。
图22图示了用于修整(trimming)第一遍之后的编程结果的图21的步骤820所示的另外的验证和各遍编程。
图23示意性地图示了用于存储验证状态标记的锁存器。
图24A是图示通过使用验证状态标记而使得未验证的存储器单元能够进一步编程的方法的流程图。
图24B是图示通过偏移存储器单元的编程索引而使得未验证的存储器单元能够进一步编程的方法的流程图。
图24C是图示通过偏移脉冲计数而使得未验证的存储器单元能够进一步编程的方法的流程图。
图25是图示使用索引编程技术来编程页的编程脉冲和验证周期的估算数量的表格。
图26图示了相关多遍编程应用到图21所示的各遍索引编程。
图27图示了通过使用多遍编程收紧(tighten)存储器状态的阈值电压分布。
图28A是示出对于存储器状态的各种划分、在传统多遍编程中使用的编程脉冲数量的表格。
图28B是示出对于存储器状态的各种划分、在相关多遍编程中使用的编程脉冲数量的表格。
图29是图示在各遍之间利用相关编程电平的多遍编程方法的流程图。
具体实施方式
存储器系统
图1至图10图示了其中可以实现本发明的各个方面的示例存储器系统。
图11和图12图示了传统编程技术。
图13至图29图示了本发明的各个方面和各实施例。
图1示意性地图示了其中可以实现本发明的非易失性存储器芯片的功能块。存储器芯片100包括存储器单元的二维阵列200、控制电路210以及诸如解码器、读/写电路和复用器之类的外围电路。
存储器阵列200可经由行解码器230(被分为230A、230B)由字线来寻址,以及经由列解码器260(被分为260A、260B)由位线来寻址(还见图4和5)。读/写电路270(被分为270A、270B)允许并行地读取或编程一页存储器单元。数据I/O总线231耦接到读/写电路270。
在优选实施例中,一页由共享同一字线的一连续行的存储器单元构成。在另一实施例中,在一行存储器单元被划分为多页的情况下,提供块复用器250(被分离为250A和250B)来将读/写电路270复用到各个页。例如,分别由奇数和偶数列存储器单元形成的两页被复用到读/写电路。
图1图示了其中在该阵列的相对侧上以对称的方式来实现由各种外围电路对存储器阵列200的访问、使得在每侧的访问线和电路的密度减少一半的优选布置。因此,行解码器被分为行解码器230A和230B,且列解码器被分为列解码器260A和260B。在其中一行存储器单元被划分为多页的实施例中,页复用器250被分为页复用器250A和250B。类似地,读/写电路270被分为连接到来自阵列200的底部的位线的读/写电路270A和连接到来自阵列200的顶部的位线的读/写电路270B。以此方式,读/写模块的密度以及因此的感测模块380的密度实质上减少了一半。
控制电路110是与读/写电路270协作以对存储器阵列200进行存储器操作的芯片上控制器。控制电路110通常包括状态机112和诸如芯片上地址解码器和功率控制模块(未明确示出)的其他电路。状态机112提供对存储器操作的芯片级控制。控制电路经由外部存储器控制器与主机通信。
存储器阵列200通常被组织为按行和列排列且可由字线和位线寻址的存储器单元的二维阵列。可以根据NOR类型或NAND类型架构来形成该阵列。
图2示意性图示了非易失性存储器单元。可以由具有诸如浮置栅极或介电层的电荷存储单元20的场效应晶体管来实现存储器单元10。存储器单元10还包括源极14、漏极16和控制栅极30。
存在现今正使用的许多商业上成功的非易失性固态存储器器件。这些存储器器件可以使用不同类型存储器单元,每个类型具有一个或多个电荷存储元件。
典型的非易失性存储器单元包括EEPROM和快闪EEPROM。在美国专利No.5595924中给出了EEPROM单元及其制造方法的例子。在美国专利No.5070032、5095344、5315541、5343063、5661053、5313421和6222762中给出了快闪EEPROM单元、其在存储器系统中的使用及其制造方法的例子。具体地,在美国专利No.5570315、5903495和6046935中描述了具有NAND单元结构的存储器器件的例子。而且,已经在Eitan等人的“NORM:ANovel Localized Trapping,2-Bit Nonvolatile Memory Cell”,IEEE ElectronDevice Letters,Vol.21,No.11,2000年11月,543-545页中以及在美国专利No.5768192和6011725中描述了利用介电存储元件的存储器器件的例子。
实际上,通常通过在向控制栅极施加参考电压时感测穿过单元的源极和漏极电极的导电电流来读取该单元的存储器状态。因此,对于在单元的浮置栅极上的每个给定电荷,可以检测关于固定的参考控制栅极电压的相应导电电流。类似地,可编程到浮置栅极上的电荷的范围定义了相应的阈值电压窗或相应的导电电流窗。
或者,取代检测在划分的电流窗之间的导电电流,能够在控制栅极处为在测试下的给定存储器状态设置阈值电压,并检测导电电流是低于还是高于阈值电流。在一个实施方式中,通过检查导电电流经过位线的电容而放电的速率来实现相对于阈值电流对导电电流的检测。
图3图示了对于浮置栅极可以在任何一个时间选择性地存储的四个不同的电荷Q1-Q4的源极-漏极电流ID和控制栅极电压VCG之间的关系。四条实线ID对VCG曲线表示分别对应于四个不同的存储器状态的、可以被编程到存储器单元的浮置栅极上的四个可能的电荷水平。作为例子,全体(population)单元的阈值电压窗可以是从0.5V到3.5V的范围。可以通过将阈值窗划分为每个以大约0.5V为间隔的五个区域来界定分别表示一个擦除状态和六个编程状态的七个可能的存储器状态“0”、“1”、“2”、“3”、“4”、“5”、“6”。例如,如果如所示地使用2μA的参考电流IREF,则用Q1编程的单元可以被认为是处于存储器状态“1”,因为其曲线与IREF在由VCG=0.5V和1.0V界定的阈值窗的区域中相交。类似地,Q4处于存储器状态“5”。
如从上述描述中可看出,使得存储器单元存储的状态越多,则其阈值窗划分得越精细。例如,存储器器件可以具有拥有范围从-1.5V到5V的阈值窗的存储器单元。这提供了6.5V的最大宽度。如果该存储器单元要存储16个状态,每个状态可以占据阈值窗中的200mv到300mv。这将需要在编程和读取操作中更高的精度,以便能够实现所需的分辨率。
图4图示了存储器单元的NOR阵列的例子。在存储器阵列200中,每行存储器单元通过其源极14和漏极16以菊链方式连接。该设计有时被称为虚拟接地设计。一行中的单元10使得其控制栅极30连接到诸如字线42的字线。一列中的单元使得其源极和漏极分别连接到诸如位线34和36的所选位线。
图5A示意性地图示了被组织为NAND串的一串存储器单元。NAND串50由通过其源极和漏极菊链连接的一系列存储器晶体管M1、M2......Mn(例如,n=4、8、16或更高)组成。一对选择晶体管S1、S2控制存储器晶体管链分别经由NAND串的源极端54和漏极端56与外部的连接。在存储器阵列中,当源极选择晶体管S1导通时,源极端耦接到源极线(见图5B)。类似地,当漏极选择晶体管S2导通时,NAND串的漏极端耦接到该存储器阵列的位线。在该链中的每个存储器晶体管10用作存储器单元。其具有电荷存储元件20来存储给定量的电荷,以便表示想要的存储器状态。每个存储器晶体管的控制栅极30允许对读和写操作的控制。如将在图5B中看到,一行NAND串的相应存储器晶体管的控制栅极30全部连接到同一字线。类似地,每个选择晶体管S1、S2的控制栅极32提供分别经由其源极端54和漏极端56对NAND串的控制访问。同样,一行NAND串的相应选择晶体管的控制栅极32全部连接到同一选择线。
当在编程期间读取或验证NAND串中的被寻址的存储器晶体管10时,其控制栅极30被供应了适当的电压。同时,NAND串50中的其余未被寻址的存储器晶体管通过在其控制栅极上施加足够的电压而完全导通。以此方式,从各个存储器晶体管的源极到NAND串的源极端54有效地建立了导电路径,且对各个存储器晶体管的漏极到该单元的漏极端56类似。在美国专利No.5570315、5903495、6046935中描述了具有这种NAND串结构的存储器器件。
图5B图示了由诸如图5A所示的NAND串50组成的存储器单元的NAND阵列200的例子。沿着每列NAND串,诸如位线36的位线耦接到每个NAND串的漏极端56。沿着每排(bank)NAND串,诸如源极线34的源极线耦接到每个NAND串的源极端54。而且沿着一排NAND串中的一行存储器单元的控制栅极被连接到诸如字线42的字线。沿着一排NAND串中的一行选择晶体管的控制栅极被连接到诸如选择线44的选择线。在一排NAND串中的整行存储器单元可以通过该排NAND串的字线和选择线上的适当电压而被寻址。当NAND串内的存储器晶体管正被读取时,该串中的剩余存储器晶体管经由其相关的字线而硬导通(turned on hard),使得流过该串的电流主要取决于被读取的单元中所存储的电荷的水平。
感测电路和技术
图6图示了图1所示的读/写电路270A和270B,其包含跨过存储器单元阵列的一排p个感测模块。并行工作的整排p个感测模块480允许沿着一行p个单元10的块(或页)被并行读取或编程。实质上,感测模块1将感测单元1中的电流I1,感测模块2将感测单元2中的电流I2,......,感测模块p将感测单元p中的电流Ip,等等。从源极线34流出到集合节点CLSRC并从那里到地的对于页的总单元电流iTOT将是p个单元中所有电流之和。在传统存储器架构中,具有公共字线的一行存储器单元形成两页或多页,其中一页中的存储器单元被并行读取和编程。在一行具有两页的情况下,由偶数位线存取一页,并由奇数位线存取另一页。一页的感测电路在任何一个时间与偶数位线或奇数位线相耦接。在该情况下,提供页复用器250A和250B以将读/写电路270A和270B分别复用到各个页。
在基于56nm技术的当前生产的芯片中,p>64000,并且在43nm 32G位×4芯片中,p>150000。在优选实施例中,块是一连串(run)的整行单元。这是所谓的“全位线(all bit-line)”架构,其中页由分别与邻近位线耦接的一行邻近的存储器单元构成。在另一实施例中,块是行中单元的子集。例如,单元的子集可以是整行的一半或者整行的四分之一。单元的子集可以是一连串的临近单元或者每隔一个的单元、或者每隔一定数量的单元。每个感测模块经由位线与存储器单元耦接,并包括用于感测存储器单元的导电电流的感测放大器。通常,如果读/写电路分布在存储器阵列的相对侧上,则该排的p个感测模块将分布在读/写电路270A和270B的两个集合之间。
图7示意性地图示了图6所示的感测模块的优选组织。将包含p个感测模块的读/写电路270A和270B分组为一排读/写堆叠400。
图8更详细地图示了图7所示的读/写堆叠。每个读/写堆叠400在一组k条位线上并行工作。如果页具有p=r*k条位线,则将有r个读/写堆叠400-1、...、400-r。实质上,该架构使得由公共处理器500服务于k个感测模块的每个堆叠以节省空间。公共处理器500基于位于感测模块480的锁存器中和位于数据锁存器430处的锁存器中的电流值和来自状态机112的控制,计算将被存储在那些锁存器中的被更新的数据。在2006年6月29日的美国专利申请公开号US-2006-0140007-A1中公开了公共处理器的详细描述,其全部公开内容通过引用合并于此。
并行工作的整排被划分的读/写堆叠400允许沿着一行的p个单元的块(或页)被并行读取或编程。从而,对于整行单元将有p个读/写模块。因为每个堆叠服务于k个存储器单元,因此该排中读/写堆叠的总数由r=p/k给出。例如,如果r是该排中堆叠的数量,则p=r*k。一个示例存储器阵列可以具有p=150000,k=8,因此r=18750。
诸如400-1之类的每个读/写堆叠实际上包含并行服务于一段(segment)k个存储器单元的感测模块480-1至480-k的堆叠。页控制器410将控制和定时信号经由线路411提供给读/写电路370。页控制器本身经由线路311而依赖于存储器控制器310。每个读/写堆叠400中的通信受互连堆叠总线431影响并被页控制器410控制。控制线411将控制和时钟信号从页控制器410提供给读/写堆叠400-1的组件。
在优选布置中,将堆叠总线划分为用于在公共处理器500和感测模块480的堆叠之间通信的SABus(SA总线)422以及用于在处理器和数据锁存器430的堆叠之间通信的DBus(D总线)423。
数据锁存器430的堆叠由数据锁存器430-1至430-k组成,对于与堆叠相关联的每个存储器单元存在一个数据锁存器。I/O模块440使得数据锁存器能够经由I/O总线231与外部交换数据。
公共处理器还包括输出507,用于输出指示诸如错误情况之类的存储器操作状态的状态信号。该状态信号用于驱动在线或(Wired-Or)配置中与标记总线(FLAG BUS)509相联系的n晶体管550的栅极。标记总线优选地由控制器310预充电,并在任何读/写堆叠对状态信号赋值(asserted)时将被拉低。
多状态存储器划分的例子
已经结合图3描述了其中每个存储器单元存储多位数据的非易失性存储器。具体例子是由场效应晶体管的阵列形成的存储器,每个场效应晶体管具有在其沟道区和其控制栅极之间的电荷存储层。电荷存储层或单元可以存储一个范围的电荷,引起对于每个场效应晶体管的一个范围的阈值电压。可能阈值电压的范围跨度是阈值窗。当将阈值窗划分为阈值电压的多个子范围或区带(zone)时,每个可分辨的区带用于代表存储器单元的不同存储器状态。可以通过一个或多个二进制位来编码多个存储器状态。例如,被划分为四个区带的存储器单元可以支持可以被编码为2位数据的四个状态。类似地,被划分为八个区带的存储器单元可以支持可以被编码为3位数据的八个存储器状态,等等。
图9(0)-9(2)图示了编程4状态存储器单元全体的例子。图9(0)图示了可编程到分别代表存储器状态“0”、“1”、“2”和“3”的阈值电压的四个不同分布中的存储器单元的全体。图9(1)图示了被擦除的存储器的“被擦除的”阈值电压的初始分布。图9(2)图示了在编程了许多存储器单元之后的存储器的例子。实质上,单元初始地具有“被擦除的”阈值电压,并且编程将把它移动到更高的值而进入由DV1、DV2、DV3划界的三个区带之一中。以此方式,每个存储器单元可以被编程到三个编程状态“1”、“2”和“3”之一,或者在“被擦除”状态中保持未被编程。随着存储器得到更多的编程,如图9(1)所示的“被擦除”状态的初始分布将变得更窄,并且由“0”状态代表被擦除状态。
具有较低位和较高位的2位代码可以用于代表四个存储器状态中的每个。例如,“0”、“1”、“2”和“3”状态分别由“11”、“01”、“00”和“10”表示。通过在“全序列”模式下感测,可以从存储器中读取2位数据,在该全序列模式下,通过分别在三个子过程(sub-pass)中相对于读取界定阈值DV1、DV2和DV3感测而一起感测两位。
图10(0)-10(2)图示了编程8状态存储器单元的全体的例子。图10(0)图示了可编程到分别代表存储器状态“0”至“7”的阈值电压的八个不同分布中的存储器单元的全体。图10(1)图示了被擦除的存储器的“被擦除”阈值电压的初始分布。图10(2)图示了在编程了许多存储器单元之后的存储器的例子。实质上,单元初始具有“被擦除”阈值电压,并且编程将把它移动到更高的值而进入由DV1-DV7界定的三个区带之一中。以此方式,每个存储器单元可以被编程到七个编程状态“1”-“7”之一,或者在“被擦除”状态中保持未被编程。当存储器得到更多的编程时,如图10(1)所示的“被擦除”状态的初始分布将变得更窄,并且由“0”代表被擦除状态。
具有较低位和较高位的3位代码可以用于表示八个存储器状态的每个。例如,“0”、“1”、“2”、“3”、“4”、“5”、“6”和“7”状态分别由“111”、“011”、“001”、“101”、“100”、“000”、“010”和“110”表示。通过在“全序列”模式下感测,可以从存储器中读取3位数据,在该全序列模式下,通过分别在七个子过程中相对于读取界定阈值DV1-DV7进行感测而一起感测三位。
页或字线编程和验证
对页编程的一种方法是全序列编程。页的所有单元最初处于被擦除状态。从而,将该页的所有单元从被擦除状态朝向它们的目标状态并行编程。一旦具有“1”状态作为目标状态的那些存储器单元被编程到“1”状态,就将禁止其被进一步编程,而具有目标状态“2”或更高的其他存储器单元将经受进一步编程。最终,具有“2”作为目标状态的存储器单元也将被锁定不被进一步编程。类似地,随着逐渐的编程脉冲,具有目标状态“3”-“7”的单元也到达并被锁定。
图11图示了用于将4状态存储器单元编程到目标存储器状态的传统技术。编程电路通常将一系列编程脉冲施加到所选择的字线。以此方式,控制栅极与字线耦接的一页存储器单元可以一起被编程。所使用的编程脉冲串(train)可以具有增加的时段或幅度以抵消被编程到存储器单元的电荷存储单元中的累积电子。将编程电压VPGM施加到处于编程的页的字线。编程电压VPGM是从初始电压电平VPGM0开始的阶梯波形形式的一系列编程电压脉冲。处于编程的页的每个单元经受该序列的编程电压脉冲,在每个脉冲处试图将增加的电荷添加到该单元的电荷存储元件。在编程脉冲之间,单元被读回以确定它的阈值电压。读回过程可能涉及一个或多个感测操作。当单元的阈值电压已被验证为落入与目标状态相对应的阈值电压区带内时,对于该单元停止编程。无论何时该页的存储器单元被编程到其目标状态时,其被禁止编程,同时其他单元继续经受编程,直到该页的所有单元已经被编程验证。
使用一系列交替编程/验证周期的传统编程技术用于处理编程过程中的不确定性,编程过程中起初响应于VPGM相对大的改变,单元的阈值电压增长很快。但是,随着被编程到浮置栅极中的电荷起屏蔽的作用而减小了用于使电子进一步隧穿到浮置栅极中的有效电场,增长变慢并最终停止。
编程/验证编程技术的缺点是,验证周期占用时间并影响性能。能够存储多位的存储器单元的实现加剧了该问题。基本需要对于存储器单元的可能的多个状态中的每个执行验证。对于具有16个可能的存储器状态的存储器,这意味着每个验证周期可能导致高达16个感测操作。在一些其他方案中这可能甚至是几倍更多。从而,随着将存储器中划分成增加数量的状态,编程/验证方案的验证周期变得越来越耗时。
图12是图示使用传统交替编程/验证算法来编程页的编程脉冲和验证周期的估算数量的表格。例如,对于N位存储器,划分成Ns=2N个状态。编程脉冲数量至少与状态数量Ns相同。一些算法可能需要k遍编程(其中k可以是1至4)。对于多状态存储器,每个验证操作进一步乘以2N-1,对于每个编程状态有一个验证操作。从而,所估算的验证数量与22N成比例,这是状态数量的平方。如可以从表格中看到的,对于3位单元,验证周期的标定数量已经极高,并且那不包括其他方案中所需的另外的感测。对于4位单元,验证周期数量是惊人的。
从而,存在对于具有其中验证周期数量降低的改善编程性能的存储器器件的需要。
索引编程技术
根据本发明的一个一般方面,并行工作在一组存储器单元上的多遍索引编程方法包括对于每个单元维持编程索引以便提供诸如该单元接收到的最后的编程电压平压之类的信息,使得在随后遍的编程中,可以相对于编程索引进行单元的编程或禁止编程。
优选地,在每遍编程,如阶梯脉冲串形式的一系列递增脉冲中的编程电压被施加到存储器单元组,使得随着脉冲计数的增加,各存储器单元被暴露给增加的编程电压。在优选实施例中,每个离散编程电压电平被方便地表达为脉冲计数或脉冲数量。类似地,按照脉冲数量表达编程索引。
在存储器单元组的一遍编程中,该组中的单元的编程索引用于控制相对于每个递增脉冲允许还是禁止编程。
图13是图示索引编程方法的一般方案的流程图。
步骤700:提供将被并行编程的一组存储器单元,每个存储器单元可被编程到独立的目标阈值电压电平。
步骤710是进一步包括步骤720、步骤730和步骤732的索引编程。
步骤720:为处于编程的该组的每个存储器单元提供编程索引,存储器单元的编程索引指示最后用于编程该存储器单元的编程电压电平、或者在随后编程中允许该存储器单元接收的最大编程电压电平。优选地通过与读/写电路协作的另外的锁存电路来实现编程索引。
步骤730:将递增编程电压作为一遍编程中的一系列递增电压脉冲施加到该组存储器单元。
步骤740:相对于存储器单元的编程索引,基于递增的编程电压电平,在该遍编程期间禁止或允许处于编程的存储器单元的编程。
将看到随着编程电压增加,在编程电压已达到由正被并行编程的该组的每个存储器单元的编程索引指示的电平之后,阻止该单元被过度编程。以此方式,不同于传统编程方法,在每个编程脉冲之间不需要具有验证步骤。
在第一实现方式中,从存储器单元的初始编程经历来获取单元的编程索引。编程索引存储在一遍编程期间对单元禁止编程之前施加到该单元的最后的编程电压电平或脉冲数。通过如传统交织编程/验证方法中那样交织编程和验证步骤来建立每个单元的编程索引。在该组中的单元被编程验证之后,禁止对该单元的编程,并将最后的脉冲数记录为其编程索引。尽管该实现方式可能导致更多的验证步骤,但是其较不可能过度编程任何单元。然后,可以在随后遍的编程中有利地使用为每个单元建立的编程索引以节省验证步骤。
在为存储器单元提供编程索引的第一实现方式中,通过一系列编程脉冲编程存储器单元,每个脉冲之后跟有验证,直到存储器单元被编程验证为目标阈值电压电平。当存储器单元被编程验证时,存储器单元的编程索引被设置为与最终编程电压相称。
图14A是图示根据第一实现方式的提供存储器单元的编程索引的流程图。从而,与图13所示的步骤720对应的步骤720”进一步包括步骤721和步骤722:
步骤721:交替地编程和验证存储器单元,直到编程验证了目标阈值电压电平。
步骤722:将编程索引设置为与在其处存储器单元被编程验证为目标阈值电压电平的编程电压电平相称的值。
将看到,第一实现方式是通过在每个编程脉冲之后验证存储器单元的传统编程技术来获取编程索引。该方法提供了单元的接近其目标的最准确的编程,但是以更多的验证操作为代价。
在第二实现方式中,将单元的编程索引初始设置为用于将单元编程到接近但不超过其目标状态、比如在距离目标状态预定差量(short-fall)内的估算最大编程电压电平。当阶梯脉冲串被施加到组中的每个单元时,单元在达到由其编程索引指示的期望最大编程电压电平之后被禁止进一步编程。阶梯脉冲串的随后的脉冲对被禁止的单元将没有影响。在该遍编程的末尾,组中的每个单元将被编程为接近每个各自的目标状态,并且每个编程索引将反映每个单元已接收的最后的编程电压电平。
图14B是图示获取存储器单元的编程索引的第二实现方式的流程图。从而与图13所示的步骤720对应的步骤720”包括:
步骤720”:将存储器单元的编程索引设置为将该单元编程到接近但不超过其目标状态的估算的编程电压电平或等效脉冲数。
在第三实现方式中,从存储器单元的初始编程经历来估算该单元的编程索引。具体地,由每个脉冲后跟有验证的一系列编程脉冲将存储器单元从被擦除状态编程到给定阈值电压电平,该给定阈值电压电平用作校验点并校准预测函数,其中从该预测函数获取对于给定目标阈值电压电平的编程索引或编程电压电平。
图14C是图示使用通过一个或多个校验点校准的预测函数来获取存储器单元的编程索引的第三实现方式的流程图。从而,与图13所示的步骤720对应的步骤720’”包括:
步骤720’”:通过由一个或多个校验点校准的预测函数来设置存储器单元的编程索引。
结合图14D至图21来更详细描述通过预测技术获取单元的编程索引的第三实现方式。
图14D是图示根据一个实施例的获取存储器单元的编程索引的第三实现方式的流程图。从而,与图13所示的步骤720对应的步骤720’”进一步包括步骤723至步骤727。
步骤723:为存储器单元提供预定的预测函数,产生将存储器单元编程到目标阈值电压电平所期望的编程电压电平。
步骤724:使用可由相应的校验点编程电压电平而编程的指定校验点阈值电压电平来为存储器单元指定预定函数的校验点。
步骤725:通过交替地编程和验证存储器单元直到校验点阈值电压电平被编程验证,来确定相应的校验点编程电压值。
步骤726:当在校验点阈值电压电平处评估(evaluate)时,校准预定函数以产生所确定的相应校验点编程电压电平。
步骤727:通过在存储器单元的目标阈值电压电平处评估该预定函数来估算编程索引。
在为存储器单元提供编程索引的第二实施例中,利用多个校验点来改善编程索引的准确度。
图14E是图示根据另一实施例的获取存储器单元的编程索引的第三实现方式的流程图。
从而,与图13所示的步骤720对应的步骤720’”进一步包括步骤728。
步骤728:除了使用更多的校验点来获取更准确的编程外,类似于图14D的步骤723-727。
根据校验点的预测编程
图15、图16和图17更详细地描述了图14A的步骤720’”所示的预测编程。
在具有存储器单元阵列的非易失性存储器中,其中各存储器单元可单独编程到一个范围的阈值电压电平之一,提供了预测将需要施加什么编程电压电平以便将给定存储器单元编程到给定目标阈值电压电平的预测函数。以此方式,不需要执行验证操作,从而极大改善编程操作的性能。
在一个实施例中,通过线性函数来近似预测函数,该线性函数对于给定目标阈值电压电平成比例地产生编程电压电平。该线性函数具有由可应用于存储器阵列的单元全体的预定平均值给出的斜率。通过预定义给定存储器单元的线性函数上的校验点来对给定存储器单元唯一地确定线性函数。校验点基于将存储器单元编程到指定阈值电压电平的实际编程电压。校验点优选对应于存储器单元的各最低编程状态之一。通过利用例如传统编程/验证编程技术来将存储器单元最初编程到校验点。以此方式,确定将存储器单元编程到指定存储器状态所需的实际编程电压的各校验点值。从而,在预定函数被用于确定将存储器单元编程到目标阈值电压电平的编程电压之前,校准该预定函数以在校验点阈值电压电平处评估时产生校验点编程电压值。
预测编程技术的优点在于,编程到目标状态不需要验证操作。验证操作仅需要验证校验点状态而不是存储器的所有可能状态。
图15图示了用于提供将存储器单元编程到目标阈值电压电平所需的编程电压的预定函数的优选实施例。通过线性函数来近似预定函数,其中通过如下关系给出目标阈值电平VT作为编程电压VPGM的函数:
VT(VPGM)=<Slope>VPGM+VT(0)    式(1)
(其中<Slope>=ΔVT/ΔVPGM)
相反,
VPGM(VT)=1/<Slope>[VT-VT(0)];式(2)
在优选实施例中,可以通过在工厂时测试来自类似生产批次的样品来预定平均<Slope>(<斜率>)。例如,测试可以产生平均为0.9、具有大约0.1的标准偏差的<Slope>。VT(0)是依赖于单元的,并在每个单元的预测编程前由来自每个存储器单元的校验点来预定。一旦<slope>和VT(0)已知,就定义了存储器单元的预定函数,并且式(2)可以用于获取编程到目标阈值电压电平所需的编程电压电平。
通常,不需要通过线性函数来近似预定函数。如果预定函数要准确地覆盖宽范围的阈值电压电平,则可以通过在工厂时测试生产批次来确定,并通过某个合适的函数来建模。
每个存储器单元的预测函数的校验点校准
式(1)或(2)中的VT(0)是依赖于单元的,并通过指定稍微高于被擦除状态的校验点阈值电压、并在脉冲之间实际交替地编程和验证给定单元到检验点来预定。以此方式,将给定单元编程到校验点阈值电压所需的实际编程电压是已知的。然后,将该实际坐标用于求解式(2)中的VT(0)。
图14A、步骤722、步骤723和步骤724图示了使用存储器单元的预定函数的校验点来校准该函数的一般原理。
图16图示了将校验点指定为对应于在被擦除状态之上的第一编程状态的优选指定。如在下一部分的描述中将看到的,当编程脉冲串具有使得每个脉冲能够将单元编程到下一存储器状态的步长大小时,校验点将用作校准基准状态。显然,如果单元的编程数据要求单元保持在被擦除状态,则将不需要校验点。
步骤724’:指定第一编程的存储器状态的阈值电压电平作为存储器单元的预定函数的校验点。
从而,存储器单元的校验点(0)被指定为处于比被认为与被擦除状态相关联的阈值电压电平稍高的阈值电压电平(校验点阈值电压电平)。在第一遍编程的第一阶段中,施加一系列增加的编程电压脉冲以朝向该校验点阈值电压电平编程存储器单元。编程模式可以是交替编程和验证的传统模式,直到校验点阈值电压电平被编程验证。一旦校验点(0)的坐标集[VPGM,VT]checkpoint(0)已知,就可以对VT(0)求解式(2)形式的预定函数(参见图15),并完全规定该预定函数。
在规定了式(2)形式的预定函数之后,随后可以使用该预定函数在预测模式的第二阶段中编程存储器单元,以提供对于目标阈值电压电平或目标存储器状态的估算编程电压电平。
还在与本申请相同发明人的、于2007年4月10日提交的共同未决美国专利申请号11/733694“PREDICTIVE PROGRAMMING IN NON-VOLATILEMEMORY”中、以及与本申请相同发明人的、于2007年4月10日提交的共同未决美国专利申请号11/733706“NON-VOLATILE MEMORY WITHPREDICTIVE PROGRAMMING”中公开了通过一个或多个校验点校准的预测编程。上述两申请的全部公开内容通过引用合并于此。
图17图示了在第一遍编程中采用的并用于每个单元构建编程索引的预测编程。第一遍编程是以两个阶段的。在所示例子中,第一阶段使用第三实现方式的预测编程方法(参见图14C)来编程存储器单元并维持编程索引。预测编程利用每个单元的预测函数,该预测函数提供将给定单元编程到给定目标状态所需的估算编程电压。
第一遍编程的第一阶段是根据每个单元的编程特性来校准每个单元的预定函数。这通过将每个单元交替编程/验证到指定的阈值电压或校验点来完成。优选地,校验点处于与被擦除状态的阈值电压相邻的阈值电压处,所以交替编程和验证通常涉及相对少的脉冲。脉冲之间的每个验证步骤仅需要感测对于该校验点的一个划界值。
在阶段二中,从处于来自下一存储器状态的已知位置处的校验点开始,每个单元将继续被编程。因此预定函数将能够预测将单元编程到给定目标状态所需的编程电压,而不用如在传统试错方法中那样在脉冲之间进行验证。每个单元的编程索引将是用于在第一遍编程中编程单元的最后的编程电压电平或脉冲数。
作为具有预定步长大小的脉冲串的编程电压
在优选实施例中,调整编程电压步长,使得每个另外的脉冲将把存储器单元编程到下一存储器状态。对于具有16个可能存储器状态的存储器单元的例子,脉冲大小可以是300mV。以此方式,一个另外的脉冲将把存储器编程到状态(1),另一另外的脉冲将把存储器编程到状态(2),等等。从而,编程到给定存储器状态可以被具体化(reduced)为对从状态(0)开始的状态数计数并提供相同数量的脉冲。例如,可以将标记设置在状态(0)中一次,其后可以通过与目标状态距离状态(0)的状态的数量相同数量的多个脉冲来编程存储器单元。
其他编程脉冲大小是可能的。例如,对于具有16个可能存储器状态的存储器单元,脉冲大小可以是150mV。在该情况下,将采用两个脉冲来从一个存储器状态编程到下一相邻存储器状态。这将在编程中提供更精细的分辨率,这在利用距离目标阈值的余量的一些实现方式中是有用的。
图18A是图示设置具有使得每个另外的脉冲将把存储器单元编程到另一存储器状态的步长大小的编程电压的流程图。图13所示的步骤710进一步包括:
步骤712:以具有递增幅度的脉冲串的形式提供具有幅度随时间递增的编程电压。
步骤714:调整在脉冲之间的幅度增量,使得通过相继的脉冲将存储器单元从一个编程的存储器状态编程到下一编程的存储器状态。
图18B示意性地图示了经受第一遍编程的存储器单元的阈值电压。存储器单元开始于可以处于各个低的(low-lying)阈值电压电平的任何一个的被擦除状态。在初始编程阶段期间,一系列编程/验证周期(例如,总共x个编程脉冲加上n*x个验证步骤)将把存储器单元从被擦除状态编程到状态(0)。通常,每个存储器单元的x相互独立。归因于各个单元被擦除了多深和其他因素,各个单元可能在用于到达指定校验点的编程脉冲数方面不同。例如,具有较低阈值电压的“慢”单元将采用比具有较高阈值电压的“常规”单元更多的脉冲来到达状态(0)。被深度擦除的“非常慢”的单元将具有甚至更低的阈值电压,并将采用更多的编程脉冲以使它达到状态(0)。一旦存储器单元处于状态(0),预测编程模式就开始,并且每个另外的脉冲将把存储器单元编程到下一存储器状态。
图19是图示为存储器单元建立编程索引的优选实现方式的流程图。编程索引被维持如图8所示的与存储器单元相关联的数据锁存器430之一中。图13所示的步骤720进一步包括:
步骤752:提供锁存器来存储存储器单元的编程索引。
步骤754:按将存储器单元从校验点状态编程到目标状态所期望的脉冲数的形式,将目标状态初始存储在锁存器中。例如,如果目标状态是状态(5),则值“5”将被存储在锁存器中(二进制值0101)。
步骤756:通过在锁存器中累计将存储器单元从被擦除状态编程到校验点状态所需的脉冲数来计算存储器单元的编程索引,该编程索引指示将存储器单元编程到目标状态所期望的脉冲数。例如,每次在将存储器单元从被擦除状态编程到校验点中将脉冲施加到该存储器单元时,锁存器中的编程索引递增一。
图20(A)、20(B)和20(C)分别图示了针对图18B所示的“常规”单元、“慢”单元和“非常慢”单元的图19的锁存操作。
图20(A)图示了用于计算图18B所示的示例“常规”存储器单元的编程索引的锁存操作。“常规”存储器单元已经被擦除到位于在被擦除全体的阈值电压范围的中间附近的阈值电压。存储器单元将被编程到由目标状态锁存器中的数据指示的状态(3)。从而,将用于维持编程索引的数据锁存器初始被设置为“3”。随着使存储器单元从被擦除状态到达校验点状态(0)的每个编程脉冲,数据锁存器中的值递增一。当校验点被编程验证时,递增停止。在该例子中,这发生在一个脉冲之后,并且锁存器中的编程索引已递增到“4”。这意味着预期该单元需要四个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3),施加使总数为四个脉冲的另外的三个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元被禁止编程,而该页中的其他单元可以继续被编程。这由从“P”到“I”的编程/禁止状态表示。
图20(B)图示了用于计算图18B所示的示例“慢”存储器单元的编程索引的锁存操作。“慢”存储器单元已被擦除到位于比被擦除全体的阈值电压范围的中间低的阈值电压。该存储器单元也将被编程到由目标状态锁存器中的数据指示的状态(3)。从而,将用于维持编程索引的数据锁存器初始设置为“3”。随着使存储器单元从被擦除状态到达校验点状态(0)的每个编程脉冲,数据锁存器中的值递增一。当校验点被编程验证时,递增停止。在该例子中,这发生在两个脉冲之后,并且锁存器中的编程索引递增到了“5”。这意味着预期该单元需要五个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3),施加使总数为五个脉冲的另外的三个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元被禁止编程,而该页中的其他单元可以继续被编程。这由从“P”到“I”的编程/禁止状态表示。
图20(C)图示了用于计算图18B所示的示例“非常慢”的存储器单元的编程索引的锁存操作。“非常慢”的存储器单元已被擦除到位于被擦除全体的阈值电压范围的较低尾部的阈值电压。该存储器单元也将被编程到由目标状态锁存器中的数据指示的状态(3)。从而,将用于维持编程索引的数据锁存器初始设置为“3”。随着使存储器单元从被擦除状态到达校验点状态(0)的每个编程脉冲,数据锁存器中的值递增一。当校验点被编程验证时,递增停止。在该例子中,这发生在四个脉冲之后,并且锁存器中的编程索引递增到了“7”。这意味着预期该单元需要七个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3),施加使总数为五个脉冲的另外的三个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元禁止编程,而该页中的其他单元可以继续被编程。
用于改善编程准确度并收紧阈值分布的利用索引编程的随后遍的编程
根据本发明的另一一般方面,在一组存储器单元上并行工作的多遍索引编程方法包括初始遍的编程和每个单元的编程索引的构建。初始遍的编程之后跟有验证步骤和另外遍的编程以修整初始遍的任何差量。通过使用索引编程,用数量降低得多的验证操作来执行多遍编程。
当构建每个单元的编程索引时,优选地,第一遍编程还将该组的每个单元编程到接近其各自目标状态的差量(short-fall)内。然后在一遍或多遍随后的编程中,将每个单元从其差量进一步编程到其目标状态。这优选通过在每个随后遍的编程之前而不是在一遍中的每个脉冲之间的验证步骤来完成。如果单元还没被验证,则在下一遍编程中使能另外的编程。在一遍编程的结束处的单元的编程索引指示该单元已接收到的最后的编程电压电平。如果验证步骤显示单元没被验证到其目标状态,则编程索引递增预定量以提供在下一遍编程中允许的期望最大编程电压,以便将单元朝向其目标状态编程。在优选实施例中,编程索引以脉冲数表达,并递增一。在下一遍编程中,存储器单元然后将经历基于其被更新的编程索引的下一脉冲。
在下一遍编程期间,验证过的单元被禁止进一步编程。使得未验证的单元能够通过超过上一遍编程中的脉冲的一个脉冲而被编程。重复验证步骤和编程遍,直到该组中的所有单元被验证到它们各自的目标状态。以此方式,能够通过在执行验证步骤之前施加整个一连串脉冲串来将一页的存储器单元并行地准确编程到它们各自的目标状态。
索引编程的优点是,可以编程单元组而不需要在编程遍的每个编程脉冲之间的验证步骤。索引编程将极大地改善编程操作的性能。
图21是图示索引编程方法的优选实施例的流程图。该方法包括:用于建立每个单元的编程索引的第一遍编程步骤810,之后跟有将各单元编程到它们各自的目标状态的验证和索引编程的各另外遍的步骤820。
步骤800:提供将被并行编程的一组存储器单元,每个存储器单元可通过一系列递增编程电压脉冲而被编程到各自的目标状态。
步骤810:在初始遍编程期间为该组的每个单元构建编程索引,该编程索引以脉冲数来存储由每个单元经历的最后的编程电压电平。
步骤820是在一遍编程之后验证并更新下一遍编程的编程索引。它进一步包括步骤822、步骤824、步骤826和步骤828:
步骤830:验证该组中的存储器单元。
步骤840:该组中的每个存储器单元被验证到其各自的目标状态?如果已验证,则前进到步骤870;反之,前进到步骤850。
步骤850:将每个未验证的存储器单元的编程索引递增一。
步骤860:用由每个编程索引选择的编程脉冲编程每个未验证的存储器单元。在优选实施例中,所选择的编程脉冲具有与由编程索引指示的脉冲数相同的脉冲数。前进到步骤830,用于另一遍编程。
步骤870:该组的所有存储器单元被验证为已被编程到它们各自的目标状态。
优选在控制存储器阵列200的存储器操作的控制电路110中的状态机112(参见图1)中实现图13和图21所示的索引编程方法。
图22图示了用于修整第一遍之后的编程结果的、在图21的步骤820中所示的各遍另外的验证和编程。在第一遍编程中的指向目标状态处的第一次尝试(shot)之后,通过验证来校验每个存储器单元。第一遍编程趋向于没有达到(under shoot)目标状态。如果任何单元被验证没到它的目标状态,则使得能在第二遍编程中的递增编程。重复该验证和编程过程,直到该页中的所有单元被验证到它们各自的目标状态。以此方式,通过修正之前遍的编程结果,单元可能够准确地收敛于其目标状态。通常,需要一遍或两遍修整。
图23示意性地图示了用于存储验证状态标记的锁存器。在优选实施例中,作为图8所示的数据锁存器430的一部分的锁存器432用于存储验证状态位。例如,当单元被验证时,将锁存器432中的验证状态位设置为“0”。该标记将导致控制逻辑禁止对该单元的进一步编程和/验证操作。另一方面,如果单元验证失败,则该标记将导致控制逻辑允许在下一遍编程中对该单元进行另外的编程。验证状态标记的传统实现方式是通过目标改变指示编程-禁止。在该情况下,当单元验证时,目标数据被编程到单元中,并且不再需要该目标数据。从而,指示目标数据的数据锁存器中的数据值被从“目标代码”复位到“擦除代码”以指示该单元被验证的状态。在本发明中,因为在随后遍的编程中需要目标数据,所以其被保留在数据锁存器中。替代地,验证状态被存储在验证状态标记中。
图24A是图示通过使用验证状态标记来使得未验证的存储器单元能够进一步编程的方法的流程图。当执行图21中的步骤840时,发生如下步骤842和步骤844。
步骤842:根据验证的结果来设置锁存器中的验证状态标记。
步骤844:响应于指示存储器单元未被验证的验证状态标记,前进到步骤850,否则前进到图21的步骤870。
在第二优选实施例中,通过将存储器单元的编程索引向更高处偏移预定数量,使得未验证的存储器单元能够进一步修整编程。在大多数情况下,偏移的预定数量是一。以此方式,在下一遍编程中,将通过另外预定数量的脉冲来编程存储器单元。
图24B是图示通过偏移存储器单元的编程索引来使得未验证的存储器单元能够进一步编程的方法的流程图。图21的步骤850被步骤850’代替。
步骤850’:当存储器单元未被验证时,将存储器单元的编程索引递增预定数量,使得在随后遍的编程中,使得该存储器单元能够经受另外的预定数量的脉冲。
在第三优选实施例中,通过在下一遍编程中将脉冲计数向更低处偏移预定数量,使得未验证的存储器单元能够进一步修整编程。以此方式,将通过另外的预定数量的脉冲来编程存储器单元。
图24C是图示通过偏移脉冲计数来使得未验证的存储器单元能够进一步编程的方法的流程图。图21的步骤850被步骤852代替。
步骤852:当存储器单元未被验证时,将编程脉冲计数递减预定数量,使得在随后遍的编程中,使得存储器单元能够经受另外的预定数量的脉冲。
图25是图示用于使用索引编程技术对页编程的编程脉冲和验证周期的估算数量的表格。例如,对于N位存储器,划分成Ns=2N个状态。编程脉冲数至少与状态数Ns相同。针对以下给出了脉冲和验证数的估算:1.1)被编程-验证到校验点,1.2)从校验点到目标状态的预测编程,以及2)一遍或多遍修整。图12中的最后一列示出了对于验证总数的估算。可以看到,实质上,它与存储器状态数成比例。可以将该属性与从使用图12所示的传统方法的得到的属性相比较,在该传统方法中,验证总数与状态数的平方成比例。例如,对于具有3位存储器单元的存储器,相比于传统的56次,估算验证总数是大约18次。对于4位存储器,节省甚至更加显著,其中相比于240,验证总数是34。
关联的多遍编程
图13所示的索引编程方法需要多遍编程。用于索引和预测编程的第一遍很可能在之后跟有用于将编程的阈值修整得到更接近于目标状态的一遍或两遍索引编程。每遍编程中的脉冲数至少等于存储器状态数。这将给出粗略的粒度(granularity),每个脉冲将单元的阈值电压增加与两个状态之间的间隔等效的量。结果,每个存储器状态的阈值分布(例如参见图10)将扩展(spread out)。
使用当前算法,为了对每个存储器状态获取更收紧的阈值电压分布,能够随每遍使用越来越精细的步长大小。例如,在第一次修整中,脉冲步长大小可以比在预测编程中使用的脉冲步长大小精细两倍。类似地,在第二次修整中,脉冲步长大小可以比在第一次修整中使用的脉冲步长大小精细两倍,等等。然而,每次步长大小降低一半时,脉冲数以及由此的编程时间将加倍。
根据本发明的另一方面,在多遍编程中并行编程一组存储器单元,其中在该多遍中的编程电压是相关的。每遍编程利用具有公共步长大小的阶梯脉冲串形式的脉冲电压,并且每个相继遍具有比前一遍的阶梯脉冲串偏移了预定偏移量水平的阶梯脉冲串。该预定偏移量水平小于公共步长大小,并且可以小于或等于前一遍的预定偏移量水平。
在一个优选实施例中,预定偏移是前一遍的预定偏移的一半。例如,第二遍的阶梯脉冲串比第一遍偏移了步长大小的一半,以及第三遍的阶梯脉冲串比第二遍偏移了步长大小的四分之一。以此方式,使用比使用多遍而每个遍使用具有更精细的步长大小的编程阶梯脉冲串的传统方法更少的编程脉冲,可以对多遍实现相同的编程分辨率。
图26图示了将关联的多遍编程应用到图21所示的各遍索引编程。在该方面,图26还示出了根据诸如图17和图22所示的第一遍编程得出的各遍修整编程2)和3)。在这三遍中使用的阶梯脉冲串都具有相同的步长大小。在第一遍编程1)中使用的阶梯脉冲串具有VPGM0的初始编程电压。另一方面,在第二遍编程2)中使用的阶梯脉冲串具有VPGM1的初始编程电压,其中VPGM1与VPGM0相关联,使得VPGM1=VPGM0+ΔVPGM1。在优选实施例中,ΔVPGM1=步长大小的一半。
类似地,在第三遍编程3)中使用的阶梯脉冲串具有VPGM2的初始编程电压,其中VPGM2与VPGM1和VPGM0相关,使得VPGM2=VPGM0+ΔVPGM2=VPGM1+ΔVPGM12。在优选实施例中,ΔVPGM2=步长大小的3/4,或者ΔVPGM12=步长大小的1/4。
从而,除了每个遍中整个阶梯脉冲的DC电平向更高处移动了预定量之外,关联的多遍编程利用相同的阶梯脉冲串来编程每遍。在优选实施例中,相对于前一遍,第二遍移动了步长大小的一半,以及第三遍移动了步长大小的四分之一。利用这三个相关编程电压波形的编程产生与三个传统的单遍编程相同的分辨率,在该三个传统的单遍编程中,每遍使用离之前一遍的阶梯波形一半步长大小的阶梯波形。
图27图示了通过使用多遍编程收紧存储器状态的阈值电压分布。每遍收紧每个分布的下沿。
图28A是示出对于存储器状态的各种划分在传统多遍编程中使用的编程脉冲数的表格。将看到,脉冲数是(20+21+...2P-1)×2N,其中P是编程遍数。例如,对于3遍编程,3位单元将需要56个脉冲,以及4位单元将需要112个脉冲。
图28B是示出对于存储器状态的各种划分在相关多遍编程中使用的编程脉冲数的表格。将看到,脉冲数仅是P×2N。例如,对于3遍编程,3位单元将需要24个脉冲,以及4位单元将需要48个脉冲,这比图28A所示的传统多遍编程所需要的少得多。
图29是图示在各遍之间利用相关编程电平的多遍编程方法的流程图。
步骤960:以具有给定步长大小的阶梯脉冲串的形式提供对于有限时段随着时间递增的编程电压。
步骤970:在预定遍数的多遍编程中编程一组存储器单元,每个相继遍的编程具有被施加以编程该组存储器单元的阶梯脉冲串,以及其中每个相继遍的编程具有比前一遍编程的阶梯脉冲串偏移了预定偏移量水平的阶梯脉冲串。
步骤980:对该组完成编程。
多遍索引编程技术允许极大地节省验证操作的数量。类似地,多遍相关编程技术允许极大地节省所需的编程脉冲的数量。可以将这两种技术一起结合成高性能的多遍索引和相关编程。对于被配置为每单元存储三位或更多数据的存储器,益处甚至更多。
在此参考的所有专利、专利申请、论文、书本、规范、其他出版物、文档和事物,为了所有目的通过该参考将其全部内容合并于此。至于在任何所合并的出版物、文档或事物与本文档的文本之间的术语的定义或使用方面的任何不一致或冲突,应以本文档中术语的定义或使用为准。
虽然已经关于某些实施例描述了本发明的各个方面,要理解的是,本发明有权在所附权利要求的整个范围内进行保护。

Claims (38)

1.一种并行编程一组存储器单元的方法,应用于具有存储器单元的阵列的非易失性存储器中,其中每个存储器单元可编程到各自的目标状态,所述方法包括:
(a)为处于编程的该组的每个存储器单元提供编程索引,存储器单元的编程索引指示用于对该存储器单元编程的最后的编程电压电平;
(b)将编程电压作为一遍编程中的一系列递增的电压脉冲施加到该组存储器单元;以及
(c)根据存储器单元的编程索引,在该遍编程期间对该存储器单元允许编程或禁止编程。
2.如权利要求1所述的方法,其中:
所述将编程电压作为一系列递增的电压脉冲施加到该组存储器单元被执行,而在该遍编程期间没有在电压脉冲之间的对该组存储器单元的验证步骤。
3.如权利要求1所述的方法,还包括:
(d)相对于该组存储器单元的各自目标状态来验证该组存储器单元;
(e)将未被验证的存储器单元的编程索引更新预定增量,以反映将在下一遍编程中使用的最后的编程电压电平,并使得未被验证的存储器单元能够在该下一遍编程中进一步编程;以及
(f)重复(b)至(e),直到该组的存储器单元已经相对于它们各自的目标阈值电压电平而被验证。
4.如权利要求3所述的方法,其中:
所述将编程电压作为一系列递增的电压脉冲施加到该组存储器单元被执行,而在该遍编程期间没有在电压脉冲之间的对该组存储器单元组的验证步骤。
5.如权利要求1所述的方法,其中:
由编程索引指示的所述最后的编程电压电平由标识用于编程存储器单元的最后的电压脉冲的脉冲数来表示。
6.如权利要求1所述的方法,其中:
在初始遍编程期间,在每个递增的编程电压脉冲之后跟有验证步骤;以及
通过用最后的编程电压脉冲的电压电平来更新直到存储器单元被验证为目标状态,来获取该存储器单元的编程索引。
7.如权利要求1所述的方法,其中:
在初始遍编程期间,存储器单元的编程索引被初始设置为用于将该存储器单元编程到距离该存储器单元的目标状态在预定差量内的估算的编程电压电平。
8.如权利要求7所述的方法,其中:
在初始遍编程期间,通过预定函数来初始设置存储器单元的编程索引;
所述预定函数产生作为该存储器单元的目标状态的函数的所计算的编程电压值。
9.如权利要求8所述的方法,其中所述预定函数基本上是线性函数。
10.如权利要求8所述的方法,其中所述预定函数是线性的,并由所估算的斜率和校验点来定义。
11.如权利要求10所述的方法,还包括:
指定在指定的阈值电压电平处的所述预定函数的校验点;
通过交替编程和验证存储器单元直到该存储器单元被编程验证在所述指定的阈值电压电平处,来确定相应的校验点编程电压值;以及
根据所述校验点来校准所述预定函数。
12.如权利要求1所述的方法,还包括:
提供数据锁存器的集合来存储将被编程到存储器单元的编程数据;以及
提供除了所述数据锁存器的集合之外的锁存器,用于存储指示存储器单元是否被编程验证的状态。
13.如权利要求1所述的方法,其中每个递增的电压脉冲具有将存储器单元从一个存储器状态基本上编程到相邻存储器状态的电压电平。
14.如权利要求1所述的方法,其中每个存储器单元具有作为场效应晶体管的浮置栅极的电荷存储元件。
15.如权利要求1所述的方法,其中每个存储器单元具有作为场效应晶体管中的介电层的电荷存储元件。
16.如权利要求1所述的方法,其中所述非易失性存储器具有NAND结构的存储器单元。
17.如权利要求1所述的方法,其中所述非易失性存储器是快闪EEPROM。
18.如权利要求1所述的方法,其中所述非易失性存储器被实现在存储卡中。
19.如权利要求1所述的方法,其中处于编程的每个存储器单元存储多于一位的数据。
20.一种非易失性存储器,包括:
存储器单元的阵列,其中每个存储器单元可编程到各自的目标状态;
读/写电路,用于并行读取和编程一组存储器单元;
处于编程的该组的每个存储器单元的编程索引,存储器单元的该编程索引指示用于编程该存储器单元的最后的编程电压电平;
所述读/写电路执行包括以下的编程:
(a)将编程电压作为一遍编程中的一系列递增的电压脉冲施加到该组存储器单元;以及
(b)根据存储器单元的编程索引在该遍编程期间对该单元允许编程或禁止编程。
21.如权利要求20所述的非易失性存储器,其中:
所述读/写电路将编程电压作为一系列递增的电压脉冲施加到该组存储器单元被执行,而在该遍编程期间没有在电压脉冲之间的对该组存储器单元的验证步骤。
22.如权利要求20所述的非易失性存储器,其中所述读/写电路还执行包括以下的编程:
(c)相对于该组存储器单元各自的目标状态来验证该组存储器单元;
(d)将未被验证的存储器单元的编程索引更新预定增量,以反映将在下一遍编程中使用的最后的编程电压电平,并使得未被验证的存储器单元能够在该下一遍编程中进一步编程;以及
(e)重复(a)至(d),直到该组的存储器单元已经相对于它们各自的目标阈值电压电平而被验证。
23.如权利要求22所述的非易失性存储器,其中:
所述读/写电路将编程电压作为一系列递增的电压脉冲施加到该组存储器单元被执行,而在该遍编程期间没有在电压脉冲之间的对该组存储器单元的验证步骤。
24.如权利要求20所述的非易失性存储器,其中:
由编程索引指示的所述最后的编程电压电平由标识用于编程存储器单元的最后的电压脉冲的脉冲数来表示。
25.如权利要求20所述的非易失性存储器,其中:
在初始遍编程期间,所述读/写电路执行在每个编程电压脉冲之后跟随的验证步骤;以及
通过用每个编程电压脉冲的电压电平来更新直到存储器单元被验证为目标状态,来获取该存储器单元的编程索引。
26.如权利要求20所述的非易失性存储器,其中:
在初始遍编程期间,存储器单元的编程索引被初始设置为用于将该存储器单元编程到距离该存储器单元的目标状态在预定差量内的估算的编程电压电平。
27.如权利要求26所述的非易失性存储器,其中:
在初始遍编程期间,通过预定函数来初始设置存储器单元的编程索引;
所述预定函数产生作为该存储器单元的目标状态的函数的所计算的编程电压值。
28.如权利要求27所述的非易失性存储器,其中所述预定函数基本上是线性函数。
29.如权利要求27所述的非易失性存储器,其中所述预定函数是线性的,并由所估算的斜率和校验点来定义。
30.如权利要求29所述的非易失性存储器,其中所述读/写电路校准所述预定函数,包括:
指定在指定的阈值电压电平处的所述预定函数的校验点;
通过交替编程和验证存储器单元直到该存储器单元被编程验证在所述指定的阈值电压电平处,来确定相应的校验点编程电压值;以及
根据所述校验点来校准所述预定函数。
31.如权利要求20所述的非易失性存储器,还包括:
数据锁存器的集合,用于存储将被编程到存储器单元的编程数据;以及
除了所述数据锁存器的集合之外的锁存器,用于存储指示存储器单元是否被编程验证的状态。
32.如权利要求20所述的非易失性存储器,其中每个递增的电压脉冲具有将存储器单元从一个存储器状态基本上编程到相邻存储器状态的电压电平。
33.如权利要求20所述的非易失性存储器,其中每个存储器单元具有作为场效应晶体管的浮置栅极的电荷存储元件。
34.如权利要求20所述的非易失性存储器,其中每个存储器单元具有作为场效应晶体管中的介电层的电荷存储元件。
35.如权利要求20所述的非易失性存储器,其中所述非易失性存储器具有NAND结构的存储器单元。
36.如权利要求20所述的非易失性存储器,其中所述非易失性存储器是快闪EEPROM。
37.如权利要求20所述的非易失性存储器,其中所述非易失性存储器被实现在存储卡中。
38.如权利要求20所述的非易失性存储器,其中处于编程的每个存储器单元存储多于一位的数据。
CN200980122199.2A 2008-06-12 2009-05-19 使用索引编程和减少的验证的非易失性存储器和方法 Active CN102067233B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US12/138,371 US7800945B2 (en) 2008-06-12 2008-06-12 Method for index programming and reduced verify in nonvolatile memory
US12/138,371 2008-06-12
US12/138,378 US7826271B2 (en) 2008-06-12 2008-06-12 Nonvolatile memory with index programming and reduced verify
US12/138,378 2008-06-12
PCT/US2009/044554 WO2009151894A1 (en) 2008-06-12 2009-05-19 Nonvolatile memory and method with index programming and reduced verify

Publications (2)

Publication Number Publication Date
CN102067233A CN102067233A (zh) 2011-05-18
CN102067233B true CN102067233B (zh) 2014-03-12

Family

ID=40849249

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980122199.2A Active CN102067233B (zh) 2008-06-12 2009-05-19 使用索引编程和减少的验证的非易失性存储器和方法

Country Status (6)

Country Link
EP (1) EP2289069B1 (zh)
JP (1) JP5529858B2 (zh)
KR (1) KR20110036884A (zh)
CN (1) CN102067233B (zh)
TW (1) TWI391929B (zh)
WO (1) WO2009151894A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101676816B1 (ko) 2010-02-11 2016-11-18 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법
CN103366826B (zh) * 2012-04-06 2016-03-30 北京兆易创新科技股份有限公司 一种nand闪存芯片及其棋盘格检查时的芯片编程方法
US9208847B2 (en) 2013-10-30 2015-12-08 Taiwan Semiconductor Manufacturing Co., Ltd. Memory devices with improved refreshing operations
US9564226B1 (en) * 2015-10-30 2017-02-07 Sandisk Technologies Llc Smart verify for programming non-volatile memory
JP6490018B2 (ja) * 2016-02-12 2019-03-27 東芝メモリ株式会社 半導体記憶装置
JP6539608B2 (ja) * 2016-03-15 2019-07-03 東芝メモリ株式会社 半導体記憶装置
US10283511B2 (en) * 2016-10-12 2019-05-07 Ememory Technology Inc. Non-volatile memory
CN110556146A (zh) * 2018-06-01 2019-12-10 北京兆易创新科技股份有限公司 一种存储单元的编程方法、装置、电子设备及存储介质
CN110556145A (zh) * 2018-06-01 2019-12-10 北京兆易创新科技股份有限公司 一种存储单元的编程方法、装置、电子设备及存储介质
CN112530494A (zh) * 2019-09-17 2021-03-19 硅存储技术股份有限公司 具有存储的索引信息的非易失性存储器设备
KR20210111584A (ko) * 2020-03-03 2021-09-13 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0913832A1 (en) * 1997-11-03 1999-05-06 STMicroelectronics S.r.l. Method for multilevel programming of a nonvolatile memory, and a multilevel nonvolatile memory
CN1926637A (zh) * 2004-01-21 2007-03-07 桑迪士克股份有限公司 编程非易失性存储器

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701266A (en) * 1995-12-14 1997-12-23 Intel Corporation Programming flash memory using distributed learning methods
US7187589B2 (en) * 2005-05-11 2007-03-06 Infineon Technologies Flash Gmbh & Co. Kg Non-volatile semiconductor memory and method for writing data into a non-volatile semiconductor memory
EP1911033B1 (en) * 2005-08-01 2011-08-24 SanDisk Corporation Programming non-volatile memory with self-adjusting maximum program loop
US7457178B2 (en) * 2006-01-12 2008-11-25 Sandisk Corporation Trimming of analog voltages in flash memory devices
TWI302312B (en) * 2006-06-28 2008-10-21 Elite Semiconductor Esmt Method for reading nand memory device and memory cell array thereof
EP2135252A2 (en) * 2007-04-10 2009-12-23 Sandisk Corporation Non-volatile memory and method for predictive programming
US7643348B2 (en) * 2007-04-10 2010-01-05 Sandisk Corporation Predictive programming in non-volatile memory
JP4560073B2 (ja) * 2007-09-18 2010-10-13 株式会社東芝 不揮発性半導体記憶装置
US7826271B2 (en) * 2008-06-12 2010-11-02 Sandisk Corporation Nonvolatile memory with index programming and reduced verify
US7800945B2 (en) * 2008-06-12 2010-09-21 Sandisk Corporation Method for index programming and reduced verify in nonvolatile memory
WO2009152037A2 (en) * 2008-06-12 2009-12-17 Sandisk Corporation Nonvolatile memory and method for correlated multiple pass programming

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0913832A1 (en) * 1997-11-03 1999-05-06 STMicroelectronics S.r.l. Method for multilevel programming of a nonvolatile memory, and a multilevel nonvolatile memory
CN1926637A (zh) * 2004-01-21 2007-03-07 桑迪士克股份有限公司 编程非易失性存储器

Also Published As

Publication number Publication date
EP2289069B1 (en) 2016-12-28
JP2011524062A (ja) 2011-08-25
TWI391929B (zh) 2013-04-01
KR20110036884A (ko) 2011-04-12
EP2289069A1 (en) 2011-03-02
WO2009151894A1 (en) 2009-12-17
TW201011751A (en) 2010-03-16
CN102067233A (zh) 2011-05-18
JP5529858B2 (ja) 2014-06-25

Similar Documents

Publication Publication Date Title
CN102067233B (zh) 使用索引编程和减少的验证的非易失性存储器和方法
CN102272852B (zh) 连续扫描时域感测的非易失性存储器和方法
US7826271B2 (en) Nonvolatile memory with index programming and reduced verify
US7643348B2 (en) Predictive programming in non-volatile memory
JP5250117B2 (ja) メモリのための適応消去及びソフトプログラミング
CN102150216B (zh) 具有降低的数据存储要求的存储器的多遍编程
CN102177555B (zh) 具有通过忽略最快和/或最慢编程位减少编程验证的非易失性存储器和方法
CN102985976B (zh) 包括减小其他存储单元的影响的对非易失性存储器的编程
US7813181B2 (en) Non-volatile memory and method for sensing with pipelined corrections for neighboring perturbations
US7800945B2 (en) Method for index programming and reduced verify in nonvolatile memory
TWI467585B (zh) 以高解析度可變初始程式化脈衝程式化非揮發性記憶體
US8045378B2 (en) Nonvolatile memory with correlated multiple pass programming
CN102138183B (zh) 对非易失性存储器的选择性擦除操作
US7551483B2 (en) Non-volatile memory with predictive programming
CN101351848A (zh) 用于非易失性存储器中经改进的编程检验操作的方法和装置
CN102132351A (zh) 非易失性存储器和斜下降编程的方法
US7796435B2 (en) Method for correlated multiple pass programming in nonvolatile memory
CN101405813A (zh) 用于对非易失性存储器进行非实时重新编程以实现较紧密的阈值电压分布的方法
CN102906820A (zh) 用同步耦合编程非易失性存储器
CN101689400A (zh) 基于阈值电压分布的动态检验
EP2135252A2 (en) Non-volatile memory and method for predictive programming
CN101584006A (zh) 非易失性存储器中的经分割的软编程
CN102099867A (zh) 非易失性存储器的擦除-验证处理
CN101779250B (zh) 编程脉冲持续期的智能控制
CN102089827B (zh) 非易失性存储器和关联多遍编程的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: SANDISK TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: SANDISK CORP.

Effective date: 20120621

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20120621

Address after: texas

Applicant after: Sandisk Corp.

Address before: American California

Applicant before: Sandisk Corp.

GR01 Patent grant
GR01 Patent grant
C56 Change in the name or address of the patentee
CP01 Change in the name or title of a patent holder

Address after: texas

Patentee after: DELPHI INT OPERATIONS LUX SRL

Address before: texas

Patentee before: Sandisk Corp.