非易失性存储器和关联多遍编程的方法

文档序号:6768194阅读:161来源:国知局
专利名称:非易失性存储器和关联多遍编程的方法
技术领域
本发明总体上涉及诸如电可擦除可编程只读存储器(EEPROM)和快闪EEPROM之类 的非易失性半导体存储器,并且更具体地,涉及其中编程-验证操作的数量被最小化的存 储器和编程操作。
背景技术
能够进行电荷的非易失性存储的固态存储器、特别是被封装为小形状因子卡 (form factor card)的EEPROM和快闪EEPROM形式的固态存储器最近成为各种移动和手持 设备、特别是信息装置和消费电子产品中的存储选择。不同于也是固态存储器的RAM(随机 存取存储器),闪存为非易失性,并且即使在切断电源之后仍保持它所存储的数据。尽管成 本更高,但是闪存正被更多地用于海量存储应用中。基于诸如硬盘或软盘之类的旋转磁介 质的传统海量存储不适合于移动和手持环境。这是因为盘驱动倾向于体积大,易出现机械 故障,并且具有高等待时间和高功率要求。这些不希望的属性使得基于盘的存储在大部分 移动和便携式应用中不实用。另一方面,嵌入式和可移除卡形式这两种闪存由于其小尺寸、 低功耗、高速和高可靠性特征而理想地适合于移动和手持环境。EEPROM和电可编程只读存储器(EPROM)是可以被擦除、并使新数据写入或“编程” 到其存储器单元中的非易失性存储器。在场效应晶体管结构中,两者都利用在源极和漏极 区域之间的、位于半导体衬底中的沟道区之上的浮置(未连接)导电栅极。然后在浮置栅 极之上提供控制栅极。由被保留在浮置栅极上的电荷量来控制晶体管的阈值电压特性。也 就是,对于浮置栅极上给定水平的电荷,存在必须在“导通”晶体管以允许在其源极和漏极 区之间导电之前施加到控制栅极的相应电压(阈值)。浮置栅极可以保持一个范围的电荷,因此可以被编程到在阈值电压窗内的任何阈 值电压电平。由器件的最小和最大阈值电平来界定(delimit)阈值电压窗的大小,该最小 和最大阈值电平又与可以被编程到浮置栅极上的电荷的范围相对应。阈值窗通常取决于存 储器器件的特性、工作条件和历史。在该窗内的每个不同的可分辨的阈值电压电平范围原 则上可以用于指定单元的明确的存储器状态。当将阈值电压划分为两个不同区域时,每个 存储器单元将能够存储一位数据。类似地,当将阈值电压窗划分为多于两个不同区域时,每 个存储器单元将能够存储多于一位数据。在通常的两状态EEPROM单元中,建立至少一个电流分界点水平以将导电窗划分 为两个区域。当通过施加预定的固定电压来读取单元时,其源极/漏极电流通过与分界点 水平(或参考电流IREF)相比较而被解析为存储器状态。如果读取的电流高于分界点水 平的电流,则确定该单元处于一个逻辑状态(例如“0”状态)。另一方面,如果该电流小于 分界点水平的电流,则确定该单元处于另一逻辑状态(例如“1”状态)。从而,这样的两状 态单元存储一位数字信息。通常将可以从外部编程的参考电流源提供为存储器系统的一部 分,以生成分界点水平电流。为了增大存储器容量,随着半导体技术的状态进步,正用越来越高密度来制造快
5闪EEPROM器件。增大存储容量的另一方法是使每个存储器单元存储多于两个状态。对于多状态或多级EEPROM存储器单元,导电窗通过多于一个分界点被划分为多 于两个区域,使得每个单元能够存储多于一位的数据。给定的EEPROM阵列可以存储的信息 因此随着每个单元可以存储的状态的数量而增加。在美国专利No. 5172338中描述了具有 多状态或多级存储器单元的EEPROM或快闪EEPR0M。通常通过两种机制之一来将用作存储器单元的晶体管编程到“已编程”状态。在 “热电子注入”中,施加到漏极的高电压加速了穿过衬底沟道区的电子。同时,施加到控制栅 极的高电压拉动热电子穿过薄栅极电介质到浮置栅极上。在“隧穿注入”中,相对于衬底, 高电压被施加到控制栅极。以此方式,将电子从衬底拉到中间的(intervening)浮置栅极。可以通过多种机制来擦除存储器器件。对于EPR0M,可通过紫外线辐射从浮置栅极 移除电荷而大量擦除该存储器。对于EEPR0M,可通过相对于控制栅极向衬底施加高电压以 便诱使浮置栅极中的电子隧穿过薄氧化物到衬底沟道区(即,Fowler-Nordheim隧穿),而 电擦除存储器单元。通常,EEPROM可逐字节擦除。对于快闪EEPR0M,在块可由存储器的512 字节或更多组成的情况下,该存储器可一次性全部电擦除或一次一个或多个块地电擦除。存储器器件通常包括可以被安装在卡上的一个或多个存储器芯片。每个存储器芯 片包括由诸如解码器和擦除、写和读电路的外围电路支持的存储器单元的阵列。更复杂的 存储器器件利用进行智能和更高级的存储器操作和接口的外部存储器控制器而工作。存在现今正使用的许多商业上成功的非易失性固态存储器器件。这些存储 器器件可以是快闪EEPR0M,或可以使用其他类型的非易失性存储器单元。在美国专利 nos. 5070032、5095344、5315541、5343063 和 5661053,5313421 和 6222762 中给出 了闪存 和系统及其制造方法的例子。具体地,在美国专利nos. 5570315,5903495,6046935中描述 了具有NAND串结构的闪存器件。而且还由具有用于存储电荷的介电层的存储器单元制造 非易失性存储器器件。取代先前描述的导电浮置栅极元件,使用介电层。由Eitan等人的 "NROM :A Novel Localized Trapping,2-Bit Nonvolatile Memory Cell", IEEE Electron Device Letters, vol. 21, no. 11,2000年11月,543-545页描述了利用介电存储元件的这 种存储器器件。0N0介电层延伸穿过在源极和漏极扩散之间的沟道。用于一个数据位的电 荷被局限在与漏极相邻的介电层中,且用于另一数据位的电荷被局限在与源极相邻的介电 层中。例如,美国专利nos. 5768192和6011725公开了具有夹在两个二氧化硅层之间的俘 获(trapping)电介质的非易失性存储器单元。通过分别读取该电介质中的空间分离的电 荷存储区域的二进制状态来实现多状态数据存储。为了改善读取和编程性能,并行地读取或编程阵列中的多个电荷存储元件或存储 器晶体管。从而,一起读取或编程存储器元件的“页”。在现有存储器架构中,行通常包含几 个交织的页,或者它可能构成一页。一页的所有存储器元件将被一起读取或编程。使用一系列交替的编程/验证周期的传统编程技术用于处理编程过程中的不确 定性,其中,响应于vreM相对大的改变,单元的阈值电压起初增长很快。但是,随着被编程到 浮置栅极中的电荷起屏蔽作用而减小了用于使电子进一步隧穿到浮置栅极中的有效电场, 增长变慢并最终停止。该过程表现出高度非线性,因此利用了试错(trial-and-error)方 法。编程/验证编程技术的缺点是,验证周期占用时间并影响性能。能够存储多位的存储器单元的实现加剧了该问题。基本上需要对于存储器单元的可能的多个状态中的每个 执行验证。对于具有16个可能的存储器状态的存储器,这意味着每个验证周期可能导致高 达16个感测操作。从而,随着在多级存储器单元(“MLC”)中可区分的状态级数量的增加, 编程/验证方案的验证周期变得越来越耗时。由 Loc Tu等人于2006年9 月 12 日提交的题为“Method for Non-volatile Memory with Linear Estimation of Initial Programming Voltage,,的美国专禾丨J 申请序列号 11/531227公开了通过线性估算来估算初始编程电压的方法。为了实现非易失性存储器的 良好编程性能,必须在工厂最优地选择初始编程电压Vreffil和步长大小。这通过测试每页的 存储器单元来完成。通过在脉冲之间具有验证的一系列阶梯波形的电压脉冲,来连续编程 与所选择的页耦接的字线,直到该页被验证为指定样式(pattern)。通过线性缩放(scale) 回到该页的起始编程电压的初始值,编程验证该页时的编程电压将被用于估算。通过把来 自第一遍(pass)的估算用在第二遍中,来进一步细化估算。从而,传统的交替编程和验证 被用于建立最终编程电压,用于成功对页编程。然后,将最终编程电压线性缩放回到该页的 所估算的初始编程电压。这种类型的缩放在总规模上处于页级别,并且没有克服在基于逐 单元的领域中的传统编程和验证存储器的缺点。具体地,传统编程要求在每个脉冲之间的验证操作。当将存储器划分为许多存储 器状态时,验证操作必须在每个脉冲之间检查许多状态。验证操作的数量随状态划分数量 的平方增加。从而,对于每单元保存3位或更多位数据的存储器,验证操作的数量变得极其 大。为了改善编程解析度(programming resolution),传统方法是使编程脉冲步长大 小更精细。但是,这具有成比例增加编程所需的脉冲数量、从而增加编程时间的效果。此外, 编程脉冲的增加将增加传统方法中交织验证的数量。因此,存在对高容量和高性能非易失性存储器的普遍需要。特别地,存在对具有使 前述缺点最小化的改善编程性能的高容量非易失性存储器的需要。

发明内容
关联的多遍编程在多状态存储器中,每个单元可以被编程到具有在阈值电压的预定范围之一内的 阈值电压的多状态之一。在这种存储器单元的群体中,期望准确地编程,使得阈值电压或分 布的各个范围不扩展为形成模糊的范围。收紧分布的一种技术是进行多个编程遍,每次使 用更精细的编程脉冲步长大小。但是,随着越来越精细的脉冲步长大小,编程性能随着脉冲 数的增加而降低。根据本发明的另一方面,在多个编程遍中并行编程一组存储器单元,其中多遍中 的编程电压关联联。每个编程遍采用具有公共步长大小的阶梯脉冲串形式的编程电压,并 且每个相继的遍具有从前一遍的阶梯脉冲串偏移了预定偏移水平的阶梯脉冲串。该预定偏 移水平小于公共步长大小,并且可以小于或等于前一遍的预定偏移水平。在一个优选实施例中,预定偏移是前一遍的预定偏移的一半。例如,第二遍的阶梯 脉冲串从第一遍偏移了步长大小的一半,并且第三遍的阶梯脉冲串从第二遍偏移了步长大 小的四分之一。在每遍中,脉冲的数量相同。以此方式,与使用多遍而每遍使用具有更精细的步长大小的编程阶梯脉冲串的传统方法相比,可以使用更少的编程脉冲对多遍实现相同 的编程解析度。关联多遍编程的优点在于通过减少在多个编程遍上的编程脉冲的数量而改善编 程性能。多遍索引编程技术能够极大地节省验证操作的数量。类似地,多遍关联编程技术 能够极大地节省所需的编程脉冲的数量。可以将这两种技术一起结合成高性能的多遍索引 和关联编程。对于被配置为每单元存储三位或更多位数据的存储器,益处甚至更多。将从本发明的优选实施例的以下描述中理解本发明的另外的特征和优点,该描述 应该结合附图来考虑。


图1示意性地图示了可以实现本发明的非易失性存储器芯片的功能块。图2示意性地图示了非易失性存储器单元。图3图示了针对浮置栅极可以在任何一个时刻选择性存储的四个不同电荷Q1-Q4 的、在源极-漏极电流Id和控制栅极电压Vra之间的关系。图4图示了存储器单元的NOR阵列的例子。图5A示意性地图示了组织成NAND串的存储器单元串。图5B图示了由诸如图5A所示的NAND串50构成的存储器单元的NAND阵列200 的例子。图6图示了图1所示的读/写电路270A和270B,其包含跨过存储器单元阵列的一 排(bank) ρ个感测模块。图7示意性地图示了图6所示的感测模块的优选组织。图8更详细地图示了图7所示的读/写堆叠。图9(0)-9 )图示了编程4状态存储器单元的群体(population)的例子。图10(0)-10 )图示了编程8状态存储器单元的群体的例子。图11图示了用于将4状态存储器单元编程到目标存储器状态的传统技术。图12是图示使用传统交替编程/验证算法来编程页的编程脉冲和验证周期的估 算数量的表格。图13是图示索引编程方法的总体方案的流程图。图14Α是图示根据第一实现方式提供存储器单元的编程索引的流程图。图14Β是图示获取存储器单元的编程索引的第二实现方式的流程图。图14C是图示使用通过一个或多个校验点校准的预测函数来获取存储器单元的 编程索引的第三实现方式的流程图。图14D是图示根据一个实施例的获取存储器单元的编程索引的第三实现方式的 流程图。图14Ε是图示根据另一实施例的获取存储器单元的编程索引的第三实现方式的 流程图。图15图示了用于提供将存储器单元编程到目标阈值电压电平所需的编程电压的 预定函数的优选实施例。
图16图示了对于与在擦除状态之上的第一编程状态对应的校验点的优选指定。图17图示了在第一编程遍中利用并用于建立每个单元的编程索引的预测编程。图18A是图示用使得每个另外的脉冲将把存储器单元编程到下一存储器状态的 步长大小来设置编程电压的流程图。图18B示意性地图示了经历第一编程遍的存储器单元的阈值电压。图19是图示建立存储器单元的编程索引的优选实现方式的流程图。图20(A)、20⑶和20(C)分别图示了对于图18B所示的“普通”单元、“慢”单元和 “非常慢”单元的图19的锁存操作。图21是图示索引编程方法的优选实施例的流程图。图22图示了用于修整(trimming)第一遍之后的编程结果的图21的步骤820所 示的另外的验证和编程遍。图23示意性地图示了用于存储验证状况标志的锁存器。图24A是图示通过使用验证状况标志而使得未验证的存储器单元能够进一步编 程的方法的流程图。图24B是图示通过偏移存储器单元的编程索引而使得未验证的存储器单元能够 进一步编程的方法的流程图。图24C是图示通过偏移脉冲计数而使得未验证的存储器单元能够进一步编程的 方法的流程图。图25是图示使用索引编程技术来编程页的编程脉冲和验证周期的估算数量的表 格。图沈图示了把关联多遍编程应用到图21所示的索引编程遍。图27图示了通过使用多遍编程收紧(tighten)存储器状态的阈值电压分布。图28A是示出对于存储器状态的各种划分的、在传统多遍编程中使用的编程脉冲 数量的表格。图28B是示出对于存储器状态的各种划分的、在关联多遍编程中使用的编程脉冲 数量的表格。图四是图示在各遍之间利用关联编程电平的多遍编程方法的流程图。
具体实施例方式存储器系统图1至图10图示了其中可以实现本发明的各个方面的示例存储器系统。图11和图12图示了传统编程技术。图13至图四图示了本发明的各个方面和实施例。图1示意性地图示了其中可以实现本发明的非易失性存储器芯片的功能块。存储 器芯片100包括存储器单元的二维阵列200、控制电路210以及诸如解码器、读/写电路和 复用器之类的外围电路。存储器阵列200可经由行解码器230(被分为230A、230B)由字线来寻址,以及经 由列解码器260(被分为^0A、260B)由位线来寻址(还见图4和5)。读/写电路270 (被 分为270A、270B)允许并行地读取或编程存储器单元页。数据I/O总线231耦接到读/写电路270。在优选实施例中,页由共享同一字线的连续行的存储器单元构成。在另一实施例 中,在存储器单元行被划分为多页的情况下,提供块复用器250(被分为250A和250B)来将 读/写电路270复用到各个页。例如,分别由奇数和偶数列的存储器单元形成的两页被复 用到读/写电路。图1图示了其中在该阵列的相对侧上以对称的方式来实现由各种外围电路对存 储器阵列200的访问、使得在每侧的访问线和电路的密度减少一半的优选布置。因此,行解 码器被分为行解码器230A和230B,且列解码器被分为列解码器^OA和^0B。在其中存储 器单元行被划分为多页的实施例中,页复用器250被分为页复用器250A和250B。类似地, 读/写电路270被分为连接到来自阵列200的底部的位线的读/写电路270A和连接到来 自阵列200的顶部的位线的读/写电路270B。以此方式,读/写模块的密度以及因此感测 模块380的密度实质上减少了 一半。控制电路110是与读/写电路270协作以对存储器阵列200进行存储器操作的芯 片上(on-chip)控制器。控制电路110典型地包括状态机112和诸如芯片上地址解码器和 功率控制模块(未明确示出)的其他电路。状态机112提供对存储器操作的芯片级控制。 控制电路经由外部存储器控制器与主机通信。存储器阵列200典型地组织为按行和列排列且可由字线和位线寻址的存储器单 元的二维阵列。可以根据NOR类型或NAND类型架构来形成该阵列。图2示意性图示了非易失性存储器单元。可以由具有诸如浮置栅极或介电层的电 荷存储单元20的场效应晶体管来实现存储器单元10。存储器单元10还包括源极14、漏极 16和控制栅极30。存在现今正使用的许多商业上成功的非易失性固态存储器器件。这些存储器器件 可以使用不同类型的存储器单元,每个类型具有一个或多个电荷存储元件。典型的非易失性存储器单元包括EEPROM和快闪EEPR0M。在美国专利no. 5595924 中给出了 EEPROM单元及其制造方法的例子。在美国专利nos. 5070032,5095344,5315541, 5343063,5661053,5313421和6222762中给出了快闪EEPROM单元、其在存储器系统中 的使用及其制造方法的例子。具体地,在美国专利nos. 5570315、5903495和6046935中 描述了具有NAND单元结构的存储器器件的例子。而且,已经在Eitan等人的“NR0M: ANovel Localized Trapping,2-Bit Nonvolatile Memory Cell,,, IEEE Electron Device Letters, vol. 21,no. 11,2000 年 11 月,543-545 页中以及在美国专利 nos. 5768192 和 6011725中描述了利用介电存储元件的存储器器件的例子。实际上,通常通过在向控制栅极施加参考电压时感测穿过单元的源极和漏极电极 的导电电流来读取单元的存储器状态。因此,对于在单元的浮置栅极上的每个给定电荷,可 以检测关于固定的参考控制栅极电压的相应导电电流。类似地,可编程到浮置栅极上的电 荷的范围定义了相应的阈值电压窗或相应的导电电流窗。或者,取代检测在划分的电流窗之间的导电电流,能够在控制栅极处为在测试下 的给定存储器状态设置阈值电压,并检测导电电流是低于还是高于阈值电流。在一个实施 方式中,通过检查导电电流经过位线的电容而放电的速率来实现相对于阈值电流对导电电 流的检测。
图3图示了对于浮置栅极可以在任何一个时间选择性地存储的四个不同的电荷 Q1-Q4的源极-漏极电流Id和控制栅极电压Vra之间的关系。四条实线Id对VCG曲线表示 分别与四个可能的存储器状态对应的、可以被编程到存储器单元的浮置栅极上的四个可能 的电荷水平。作为例子,单元的群体(population)的阈值电压窗可以是从0. 5V到3. 5V的 范围。可以通过将阈值窗划分为每个以大约0.5V为间隔的五个区域来界定分别表示一个 擦除状态和六个编程状态的七个可能的存储器状态“0”、“1”、“2”、“3”、“4”、“5”、“6”。例 如,如果如所示地使用2μ A的参考电流Ikef,则用Ql编程的单元可以被认为是处于存储器 状态“1”,因为其曲线与Ikef在由VCG = 0.5V和1. OV界定的阈值窗的区域中相交。类似 地,Q4处于存储器状态“5”。如从上述描述中可看出,使得存储器单元存储的状态越多,则其阈值窗划分得越 精细。例如,存储器器件可以具有拥有范围从-1.5V到5V的阈值窗的存储器单元。这提供 了 6. 5V的最大宽度。如果该存储器单元要存储16个状态,则每个状态可以占据阈值窗中 的200mv到300mv。这将需要在编程和读取操作中更高的精度,以便能够实现所需的解析度。图4图示了存储器单元的NOR阵列的例子。在存储器阵列200中,每行存储器单 元通过其源极14和漏极16以菊串(daisy-chain)方式连接。该设计有时被称为虚拟接地 设计。行中的单元10具有连接到诸如字线42的字线的其控制栅极30。列中的单元具有分 别连接到诸如位线34和36的所选位线的其源极和漏极。图5A示意性地图示了组织为NAND串的一串存储器单元。NAND串(string) 50由
通过其源极和漏极菊串连接的一系列存储器晶体管Ml、M2......Mn (例如,η = 4、8、16或
更高)组成。一对选择晶体管S1、S2控制存储器晶体管串分别经由NAND串的源极端讨和 漏极端56与外部的连接。在存储器阵列中,当源极选择晶体管Sl导通时,源极端耦接到源 极线(见图5B)。类似地,当漏极选择晶体管S2导通时,NAND串的漏极端耦接到该存储器 阵列的位线。在该串中的每个存储器晶体管10用作存储器单元。其具有电荷存储元件20 来存储给定量的电荷,以便表示所要的存储器状态。每个存储器晶体管的控制栅极30允许 对读和写操作的控制。如将在图5B中看到,NAND串的行的相应存储器晶体管的控制栅极 30全部连接到同一字线。类似地,每个选择晶体管Si、S2的控制栅极32提供分别经由其 源极端M和漏极端56对NAND串的控制访问。同样,NAND串的行的相应选择晶体管的控 制栅极32全部连接到同一选择线。当在编程期间读取或验证NAND串内的被寻址的存储器晶体管10时,其控制栅极 30被供应了适当的电压。同时,NAND串50中的其余未被寻址的存储器晶体管通过在其控 制栅极上施加足够的电压而完全导通。以此方式,从各个存储器晶体管的源极到NAND串的 源极端M有效地建立了导电路径,且对各个存储器晶体管的漏极到该单元的漏极端56进 行类似处理。在美国专利nos. 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中的电流12,......,感测模块ρ将感测单元ρ中的电流Ip,等等。从源极线34
流出到集合节点CLSRC并从那里到地的对于页的总单元电流iTOT将是ρ个单元中所有电流 之和。在传统存储器架构中,具有公共字线的一行存储器单元形成两页或多页,其中一页中 的存储器单元被并行读取和编程。在一行具有两页的情况下,由偶数位线存取一页,由奇数 位线存取另一页。一页的感测电路在任何一个时刻与偶数位线或奇数位线相耦接。在该情 况下,提供页复用器250A和250B以将读/写电路270A和270B分别复用到各个页。在基于56nm技术的当前生产的芯片中,ρ > 64000,并且在43nm 32G位X 4芯片 中,ρ > 150000。在优选实施例中,块是一连串(rim)的整行单元。这是所谓的“全位线 (all bit-line)”架构,其中页由分别与邻近位线耦接的一行邻近的存储器单元构成。在另 一实施例中,块是行中单元的子集。例如,单元的子集可以是整行的一半或者整行的四分之 一。单元的子集可以是一连串的邻近单元或者每隔一个的单元、或者每隔预定数量的单元。 每个感测模块经由位线与存储器单元耦接,并包括用于感测存储器单元的导电电流的感测 放大器。通常,如果读/写电路分布在存储器阵列的相对侧上,则该排的P个感测模块将分 布在读/写电路270A和270B的两个集合之间。图7示意性地图示了图6所示的感测模块的优选组织。将包含ρ个感测模块的读 /写电路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-Al中公开了公共处理器的详细描述,其全 部公开内容通过引用合并于此。并行工作的整排被划分的读/写堆叠400允许沿着一行的ρ个单元的块(或页) 被并行读取或编程。从而,对于整行单元,将有P个读/写模块。因为每个堆叠服务于k个 存储器单元,因此该排中读/写堆叠的总数由r = p/k给出。例如,如果r是该排中堆叠的 数量,则P = r*k。一个示例存储器阵列可以具有ρ = 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 相连的η晶体管550的栅极。标志总线优选地由控制器310预充电,并当任何读/写堆叠 确立(assert)状况信号时将被拉低。多状杰存储器划分的例子已经结合图3描述了其中每个存储器单元存储多位数据的非易失性存储器。具体 例子是由场效应晶体管的阵列形成的存储器,每个场效应晶体管具有在其沟道区和其控制 栅极之间的电荷存储层。电荷存储层或单元可以存储一个范围的电荷,引起对于每个场效 应晶体管的一个范围的阈值电压。可能阈值电压的范围跨度是阈值窗。当将阈值窗划分为 阈值电压的多个子范围或区带(zone)时,每个可分辨的区带用于代表存储器单元的不同 存储器状态。可以通过一个或多个二进制位来编码多个存储器状态。例如,被划分为四个 区带的存储器单元可以支持可以被编码为2位数据的四个状态。类似地,被划分为八个区 带的存储器单元可以支持可以被编码为3位数据的八个存储器状态,等等。图9(0)-9(2)图示了编程4状态存储器单元的群体的例子。图9 (0)图示了可编 程到分别代表存储器状态“0”、“1”、“2”和“3”的阈值电压的四个不同分布中的存储器单元 的群体。图9(1)图示了被擦除的存储器的“被擦除”阈值电压的初始分布。图9 )图示 了在编程了许多存储器单元之后的存储器的例子。实质上,单元初始具有“被擦除”阈值电 压,并且编程将把它移动到更高的值而进入由DVpDV2和DV3划界的三个区带之一中。以此 方式,每个存储器单元可以被编程到三个编程状态“1”、“2”和“3”之一,或者在“被擦除” 状态中保持未被编程。随着存储器得到更多的编程,如图9(1)所示的“被擦除”状态的初 始分布将变得更窄,并且由“ 0 ”状态代表被擦除状态。具有较低位和较高位的2位代码可以用于表示四个存储器状态中的每个。例如, “ 0,,、“ 1,,、“ 2,,和“ 3,,状态分别由“ 11 ”、“ 01,,、“ 00,,和“ 10 ”表示。通过在“全序列,,模式下
感测,可以从存储器中读取2位数据,在该“全序列”模式下,该两位通过分别在三个次级遍 (sub-pass)中相对于读取界定阈值DVp DV2和DV3感测而一起感测。图10(0)-10 )图示了编程8状态存储器单元的群体的例子。图10(0)图示了可 编程到分别代表存储器状态“0”至“7”的阈值电压的八个不同分布中的存储器单元的群 体。图10(1)图示了被擦除的存储器的“被擦除”阈值电压的初始分布。图10⑵图示了在 编程了许多存储器单元之后的存储器的例子。实质上,单元初始具有“被擦除”阈值电压, 并且编程将把它移动到更高的值而进入由DV1-DV7界定的8个区带之一中。以此方式,每个 存储器单元可以被编程到七个编程状态“ 1” - “7”之一,或者在“被擦除”状态中保持未被 编程。当存储器得到更多的编程时,如图10(1)所示的“被擦除”状态的初始分布将变得更 窄,并且由“ 0 ”状态代表被擦除状态。
具有较低位和较高位的3位代码可以用于表示8个存储器状态中的每个。例如, “ 0 ”、“ 1 ”、“ 2 ”、“ 3 ”、“ 4 ”、“ 5 ”、“ 6 ” 和 “ 7 ” 状态分别由 “ 111 ”、“011 ”、“ 001”、“ 101 ”、“ 100 ”、 “000”、“010”和“110”表示。通过在“全序列”模式下感测,可以从存储器中读取3位数据, 在该“全序列”模式下,该三位通过分别在七个次级遍中相对于读取界定阈值DV1-DV7进行 感测而一起感测。页或字线编稈和验证对页编程的一种方法是全序列编程。页的所有单元最初处于被擦除状态。从而, 将该页的所有单元从被擦除状态朝向它们的目标状态并行编程。一旦被编程到“1”状态, 则具有“1”状态作为目标状态的那些存储器单元,就将被禁止进一步编程,而具有目标状态 “2”或更高的其他存储器单元将经受进一步编程。最终,具有“2”作为目标状态的存储器 单元也将被排除于(lock out)进一步编程。类似地,随着逐渐的编程脉冲,具有目标状态 “3”- “7”的单元也到达并被排除。图11图示了用于将4状态存储器单元编程到目标存储器状态的传统技术。编程 电路通常将一系列编程脉冲施加到所选择的字线。以此方式,控制栅极与字线耦接的一页 存储器单元可以一起被编程。所使用的编程脉冲串(pulse train)可以具有增加的时段或 幅度以便抵消被编程到存储器单元的电荷存储单元中的累积电子。将编程电压VreM施加到 处于编程的页的字线。编程电压VreM是从初始电压电平Vreffil开始的阶梯波形形式的一系列 编程电压脉冲。处于编程的页的每个单元经受该序列的编程电压脉冲,在每个脉冲处试图 将增加的电荷添加到该单元的电荷存储元件。在编程脉冲之间,单元被读回以确定它的阈 值电压。读回过程可能涉及一个或多个感测操作。当单元的阈值电压已被验证为落入与目 标状态相对应的阈值电压区带内时,对于该单元停止编程。无论何时该页的存储器单元被 编程到其目标状态时,其被禁止编程,而其他单元继续经受编程,直到该页的所有单元已经 被编程验证。使用一系列交替的编程/验证周期的传统编程技术用于处理编程过程中的不确 定性,在该编程过程中起初响应于VreM相对大的改变,单元的阈值电压增长很快。但是,随 着被编程到浮置栅极中的电荷起屏蔽的作用而减小了用于使电子进一步隧穿到浮置栅极 中的有效电场,增长变慢并最终停止。编程/验证编程技术的缺点是,验证周期占用时间并影响性能。能够存储多位的 存储器单元的实现加剧了该问题。实质上,需要对于存储器单元的可能的多个状态中的每 个执行验证。对于具有16个可能的存储器状态的存储器,这意味着每个验证步骤将导致至 少16个感测操作。在一些其他方案中,这可能甚至是多出几倍。从而,随着将存储器划分 成增加数量的状态,编程/验证方案的验证周期变得越来越耗时。图12是图示使用传统交替的编程/验证算法来编程页的编程脉冲和验证周期的 估算数量的表格。例如,对于N位存储器,划分成Ns = 状态。编程脉冲数量至少与状 态数量Ns相同。一些算法可能需要k编程遍(其中k可以是1至4)。对于多状态存储器, 每个验证操作进一步乘以2N-1,每个编程状态对应一个。从而,所估算的验证数量与2^成 比例,这是状态数量的平方。如可以从表格中看到的,对于3位单元,验证周期的标称数量 已经极高,并且其不包括其他方案中所需的另外的感测。对于4位单元,验证周期数量是惊 人的。
从而,存在对于具有其中验证周期数量降低的改善编程性能的存储器器件的需要。索引编稈技术根据本发明的一个总体方面,并行工作在一组存储器单元上的多遍索引编程方法 包括对于每个单元维持编程索引,以便提供诸如该单元已经接收到的最后的编程电压电 平之类的信息,使得在随后的编程遍中,可以相对于编程索引进行单元的编程或禁止编程。优选地,在每个编程遍,如阶梯脉冲串形式的一系列递增脉冲中的编程电压被施 加到存储器单元组,使得随着脉冲计数的增加,存储器单元被暴露给增加的编程电压。在优 选实施例中,每个离散的编程电压电平被方便地表达为脉冲计数或脉冲数量。类似地,按照 脉冲数量表达编程索引。在存储器单元组的编程遍中,该组中的单元的编程索引用于控制相对于每个递增 脉冲允许还是禁止编程。图13是图示索引编程方法的总体方案的流程图。步骤700 提供将被并行编程的一组存储器单元,每个存储器单元可被编程到独 立的目标阈值电压电平。步骤710是进一步包括步骤720、步骤730和步骤732的索引编程。步骤720 为处于编程的该组的每个存储器单元提供编程索引,存储器单元的编 程索引指示最后用于编程该存储器单元的编程电压电平、或者在随后编程中允许该存储器 单元接收的最大编程电压电平。优选地通过与读/写电路协作的另外的锁存电路来实现编 程索引。步骤730 将递增编程电压作为编程遍中的一系列递增电压脉冲施加到该组存储 器单元。步骤740 相对于存储器单元的编程索引,基于递增的编程电压电平,在该编程遍 期间禁止或允许处于编程中的存储器单元的编程。将看到,随着编程电压增加,正被并行编程的该组的每个存储器单元在编程电压 已达到由该单元的编程索引指示的电平之后,被阻止过度编程。以此方式,不同于传统编程 方法,在每个编程脉冲之间不需要具有验证步骤。在第一实现方式中,从存储器单元的初始编程经历来获取单元的编程索引。编程 索引存储在编程遍期间被禁止编程之前施加到该单元的最后的编程电压电平或脉冲数。通 过如传统交织编程/验证方法中那样交织编程和验证步骤来建立每个单元的编程索引。在 该组中的单元被编程验证之后,禁止对该单元的编程,并将最后的脉冲数记录为其编程索 引。尽管该实现方式可能导致更多的验证步骤,但是其较不可能过度编程任何单元。然后, 可以在随后编程遍中有利地使用为每个单元建立的编程索引以节省验证步骤。在为存储器单元提供编程索引的第一实现方式中,通过一系列编程脉冲来编程存 储器单元,每个脉冲之后跟有验证,直到存储器单元被编程验证到目标阈值电压电平。当存 储器单元被编程验证时,该存储器单元的编程索引被设置为与最终编程电压相称。图14A是图示根据第一实现方式的提供存储器单元的编程索引的流程图。从而, 与图13所示的步骤720对应的步骤720’进一步包括步骤721和步骤722 步骤721 交替地编程和验证存储器单元,直到编程验证了目标阈值电压电平。
15
步骤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作为编程电压VreM的函数Vt(Vpgm) = <Slope>VPGM+VT(0) 公式(1)(其中〈Slope〉=AVt/AVpgm)相反,Vpgm(Vt) = l/<Slope> [Vt-Vt (0)]; 公式(2)在优选实施例中,可以通过在工厂时测试来自类似生产批次的样品来预定平均 〈Slope〉(<斜率 >)。例如,测试可以产生平均为0. 9、具有大约0. 1的标准偏差的〈Slope〉。 Vt(O)是依赖于单元的,并在每个单元的预测编程之前由来自每个存储器单元的校验点来 预定。一旦〈slope〉和Vt(O)已知,就定义了存储器单元的预定函数,并且公式(2)可以用 于获取编程到目标阈值电压电平所需的编程电压电平。通常,不是一定要用通过线性函数来近似预定函数。如果预定函数要准确地覆盖 宽范围的阈值电压电平,则可以通过在工厂时测试生产批次来确定,并通过某个合适的函 数来建模。诸器单元的予页测「函数的校验点校准
公式⑴或⑵中的Vt(O)是依赖于单元的,并通过指定稍微高于被擦除状态的 校验点阈值电压,并在脉冲之间实际交替地编程和验证给定单元到检验点来预定。以此方 式,将给定单元编程到校验点阈值电压所需的实际编程电压是已知的。然后,将该实际坐标 用于求解公式(2)中的Vt(O)。图14A、步骤722、步骤723和步骤724图示了使用存储器单元的预定函数的校验 点来校准该函数的总体原理。图16图示了将校验点指定为与在被擦除状态之上的第一编程状态相对应的优选 指定。如在下一部分的描述中将看到的,当编程脉冲串具有使得每个脉冲能够将单元编程 到下一存储器状态的步长大小时,校验点将用作校准的基态。显然,如果单元的编程数据要 求单元保持在被擦除状态,则将不需要校验点。步骤724’ 指定第一编程的存储器状态的阈值电压电平作为存储器单元的预定函 数的校验点。从而,存储器单元的校验点(0)被指定为处于比被认为与被擦除状态相关联的阈 值电压电平稍高的阈值电压电平(校验点阈值电压电平)。在第一编程遍的第一阶段中,施 加一系列增加的编程电压脉冲以朝向该校验点阈值电压电平来编程存储器单元。编程模式 可以是交替编程和验证直到校验点阈值电压电平被编程验证的传统模式。一旦校验点(0) 的坐标集[VreM,VT]Checkpoint(0)已知,就可以对\(0)求解公式(2)形式的预定函数(参见图 15),并完全规定该预定函数。在规定了公式( 形式的预定函数之后,随后可以使用该预定函数在预测模式的 第二阶段中编程存储器单元,以提供对于目标阈值电压电平或对于目标存储器状态的估算 的编程电压电平。还在与本申请相同发明人的、2007年4月10日提交的共同未决的美国专利申请 No. 11/733694"PREDICTIVE PROGRAMMING IN NON-VOLATILE MEMORY,,中、以及与本申请相同 发明人的、2007年4月10日提交的共同未决的美国专利申请No. 11/733706"NON-VOLATILE MEMORY WITH PREDICTIVE PROGRAMMING,,中公开了通过一个或多个校验点校准的预测编程。 上述两申请的全部公开内容通过引用合并于此。图17图示了在第一编程遍中采用的、并用于对每个单元构建编程索引的预测编 程。第一编程遍是两个阶段的。在所示例子中,第一阶段使用第三实现方式的预测编程方 法(参见图14C)来编程存储器单元并维持编程索引。预测编程利用每个单元的预测函数, 该预测函数提供将给定单元编程到给定目标状态所需的估算编程电压。第一编程遍的第一阶段是根据每个单元的编程特性来校准每个单元的预定函数。 这通过将每个单元交替编程/验证到指定的阈值电压或校验点来完成。优选地,校验点处 于与被擦除状态的阈值电压相邻的阈值电压处,所以交替编程和验证通常涉及相对少的脉 冲。脉冲之间的每个验证步骤仅需要感测对于该校验点的一个划界值。在阶段二中,从处于来自下一存储器状态的已知位置处的校验点开始,每个单元 将继续被编程。因此预定函数将能够预测将单元编程到给定目标状态所期望的编程电压, 而无需如在传统试错方法中那样在脉冲之间进行验证。每个单元的编程索引将是用于在第 一编程遍中编程单元的最后的编程电压电平或脉冲数。
在优选实施例中,调整编程电压步长大小,使得每个附加的脉冲将把存储器单元 编程到下一存储器状态。对于具有16个可能存储器状态的存储器单元的例子,脉冲大小可 以是300mV。以此方式,一个附加的脉冲将把存储器编程到状态(1),另一附加的脉冲将把 存储器编程到状态0),等等。从而,编程到给定存储器状态可以被缩减(reduced)为对从 状态(0)起的状态数计数并提供相同数量的脉冲。例如,可以将标志设置在状态(0)中一 次,其后可以通过与目标状态相距状态(0)的状态的数量相同数量的脉冲来编程存储器单兀。其他编程脉冲大小是可能的。例如,对于具有16个可能的存储器状态的存储器单 元,脉冲大小可以是150mV。在该情况下,将采用两个脉冲来从一个存储器状态编程到下一 相邻存储器状态。这将在编程中提供更精细的解析度,这在利用相距目标阈值的余量的一 些实现方式中是有用的。图18A是图示设置具有使得每个附加的脉冲将把存储器单元编程到下一存储器 状态的步长大小的编程电压的流程图。图13所示的步骤710进一步包括步骤712 以具有递增幅度的脉冲串的形式提供具有随时间递增的幅度的编程电压。步骤714 调整在脉冲之间的幅度增量,使得通过相继的脉冲将存储器单元从一 个编程的存储器状态编程到下一编程的存储器状态。图18B示意性地图示了经受第一编程遍的存储器单元的阈值电压。存储器单元开 始于可以处于低的(low-lying)阈值电压电平的任何一个的被擦除状态。在初始编程阶段 期间,一系列编程/验证周期(例如,总共χ个编程脉冲加上n*x个验证步骤)将把存储器 单元从被擦除状态编程到状态(0)。通常,每个存储器单元的χ相互独立。归因于各个单元 被擦除了多深和其他因素,各个单元可能在到达指定校验点的编程脉冲数方面不同。例如, 具有较低阈值电压的“慢”单元将采用比具有较高阈值电压的“普通”单元更多的脉冲来到 达状态(0)。被深擦除的“非常慢”的单元将具有甚至更低的阈值电压,并将采用更多的编 程脉冲以使它达到状态(0)。一旦存储器单元处于状态(0),预测编程模式就开始,并且每 个另外的脉冲将把存储器单元编程到下一存储器状态。图19是图示为存储器单元建立编程索引的优选实现方式的流程图。编程索引被 维持在如图8所示的与存储器单元相关联的数据锁存器430之一中。图13所示的步骤720 进一步包括步骤752 提供锁存器来存储存储器单元的编程索引。步骤754 按将存储器单元从校验点状态编程到目标状态所期望的脉冲数的形 式,将目标状态初始存储在锁存器中。例如,如果目标状态是状态(5),则值“5”将被存储在 锁存器中(二进制值0101)。步骤756 通过在锁存器中累计将存储器单元从被擦除状态编程到校验点状态所 需的脉冲数来计算存储器单元的编程索引,该编程索引指示将存储器单元编程到目标状态 所期望的脉冲数。例如,每次在将存储器单元从被擦除状态编程到校验点的过程中,将脉冲 施加到该存储器单元时,锁存器中的编程索引递增1。图20(A)、20⑶和20(C)分别图示了针对图18B所示的“普通”单元、“慢”单元和 “非常慢”单元的图19的锁存操作。
图20(A)图示了用于计算图18B所示的示例“普通”存储器单元的编程索引的锁 存操作。“普通”存储器单元已经被擦除到位于在被擦除群体的阈值电压范围的中间值附近 的阈值电压。存储器单元将被编程到由目标状态锁存器中的数据指示的状态(3)。从而,将 用于维持编程索引的数据锁存器初始设置为“3”。随着使存储器单元从被擦除状态到达校 验点状态(0)的每个编程脉冲,数据锁存器中的值递增1。当校验点被编程验证时,递增停 止。在该例子中,这发生在一个脉冲之后,并且锁存器中的编程索引已递增到“4”。这意味 着该单元期望四个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3),施加另 外三个脉冲使总数为四个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元被禁止 编程,而该页中的其他单元可以继续被编程。这由从“P”到“I”的编程/禁止状态表示。图20(B)图示了用于计算图18B所示的示例“慢”存储器单元的编程索引的锁存 操作。“慢”存储器单元已被擦除到位于比被擦除群体的阈值电压范围的中间值低的阈值电 压。该存储器单元也将被编程到由目标状态锁存器中的数据指示的状态(3)。从而,将用于 维持编程索引的数据锁存器初始设置为“3”。随着使存储器单元从被擦除状态到达校验点 状态(0)的每个编程脉冲,数据锁存器中的值递增1。当校验点被编程验证时,递增停止。 在该例子中,这发生在两个脉冲之后,并且锁存器中的编程索引递增到了 “5”。这意味着该 单元期望五个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3),施加另外三 个脉冲使总数为五个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元被禁止编程, 而该页中的其他单元可以继续被编程。这由从“P”到“I”的编程/禁止状态表示。图20(C)图示了用于计算图18B所示的示例“非常慢”的存储器单元的编程索引 的锁存操作。“非常慢”的存储器单元已被擦除到位于被擦除群体的阈值电压范围的较低尾 部的阈值电压。该存储器单元也将被编程到由目标状态锁存器中的数据指示的状态(3)。 从而,将用于维持编程索引的数据锁存器初始设置为“3”。随着使存储器单元从被擦除状态 到达校验点状态(0)的每个编程脉冲,数据锁存器中的值递增1。当校验点被编程验证时, 递增停止。在该例子中,这发生在四个脉冲之后,并且锁存器中的编程索引已经递增到“7”。 这意味着该单元期望七个脉冲以编程到状态(3)。为了将该单元从校验点编程到状态(3), 施加另外三个脉冲使总数为五个脉冲。在单元经受了与编程索引相等的脉冲数后,该单元 禁止编程,而该页中的其他单元可以继续被编程。用于改善编稈准确度并收紧阈倌分布的利用索引编稈的随后编稈遍根据本发明的另一总体方面,在一组存储器单元上并行工作的多遍索引编程方法 包括初始编程遍和每个单元的编程索引的构建。初始编程遍之后跟有验证步骤和另外的编 程遍,以修整初始遍的任何差量(short-fall)。通过使用索引编程,用数量降低得多的验证 操作来执行多遍编程。当构建每个单元的编程索引时,优选地,第一编程遍还将该组的每个单元编程到 接近其各自目标状态的差量内。然后,在一个或多个随后的编程遍中,将每个单元从其差量 进一步编程到其目标状态。这优选地通过在每个随后编程遍之前而不是在一遍中的各个脉 冲之间的验证步骤来完成。如果单元还没被验证,则在下一编程遍中使能它进行于另外的 编程。在编程遍的结尾处的单元的编程索引指示该单元已接收到的最后的编程电压电平。 如果验证步骤揭示该单元未被验证到其目标状态,则编程索引将递增预定量以提供在下一 编程遍中允许的期望最大编程电压,以便将单元朝向其目标状态编程。在优选实施例中,编程索引按照脉冲数表达,并递增1。在下一编程遍中,存储器单元然后将经历基于其被更新 的编程索引的下一脉冲。在下一编程遍期间,验证的单元被禁止进一步编程。使得未验证的单元能够用超 过上一编程遍中的脉冲的一个脉冲而被编程。重复验证步骤和编程遍,直到该组中的所有 单元被验证到它们各自的目标状态。以此方式,能够通过在执行验证步骤之前施加整个一 连串的脉冲串来将存储器单元页并行地准确编程到它们各自的目标状态。索引编程的优点是,可以编程单元组而不需要在编程遍的各个编程脉冲之间的验 证步骤。索引编程将极大地改善编程操作的性能。图21是图示索引编程方法的优选实施例的流程图。该方法包括用于建立每个单 元的编程索引的第一编程遍步骤810,之后跟有将单元编程到它们各自的目标状态的验证 和索引编程的另外遍的步骤820。步骤800 提供将被并行编程的一组存储器单元,每个存储器单元可通过一系列 递增编程电压脉冲而被编程到各自的目标状态。步骤810 在初始编程遍期间为该组的每个单元构建编程索引,该编程索引按照 脉冲数来存储由每个单元经历的最后的编程电压电平。步骤820是在编程遍之后验证,并更新用于下一编程遍的编程索引。它进一步包 括步骤822、步骤824、步骤拟6和步骤828 步骤830 验证该组中的存储器单元。步骤840 该组中的每个存储器单元被验证到其各自的目标状态?如果已验证, 则前进到步骤870 ;否则,前进到步骤850。步骤850 将每个未验证的存储器单元的编程索引递增1。步骤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。在第二优选实施例中,通过将存储器单元的编程索引向更高偏移预定数量,来使 得未验证的存储器单元能够进一步修整编程。在大多数情况下,偏移的预定数量是1。以此 方式,在下一编程遍中,将用另外预定数量的脉冲来编程存储器单元。图24B是图示通过偏移存储器单元的编程索引来使得未验证的存储器单元能够 进一步编程的方法的流程图。图21的步骤850被步骤850’代替。步骤850’当存储器单元未被验证时,将存储器单元的编程索引递增预定数量,使 得在随后的编程遍中,使得该存储器单元能够经受另外的预定数量的脉冲。在第三优选实施例中,通过在下一编程遍中将脉冲计数向更低偏移预定数量,来 使得未验证的存储器单元能够进一步修整编程。以此方式,将用另外的预定数量的脉冲来 编程存储器单元。图24C是图示通过偏移脉冲计数来使得未验证的存储器单元能够进一步编程的 方法的流程图。图21的步骤850被步骤852代替。步骤852 当存储器单元未被验证时,将编程脉冲计数递减预定数量,使得在随后 的编程遍中,使得存储器单元能够经受另外的预定数量的脉冲。图25是图示用于使用索引编程技术对页编程的编程脉冲和验证周期的估算数量 的表格。例如,对于N位存储器,划分成Ns = 状态。编程脉冲数至少与状态数Ns相 同。针对以下给出了脉冲和验证数的估算1. 1)被编程-验证到校验点,1.2)从校验点到 目标状态的预测编程,以及2、一个或多个修整遍。图12中的最后一列示出了对于验证总 数的估算。可以看到,实质上,它与存储器状态数成比例。可以将该属性与使用图12所示 的传统方法的属性相比较,在该传统方法中,验证总数与状态数的平方成比例。例如,对于 具有3位存储器单元的存储器,相比于传统的56,估算验证总数是大约18。对于4位存储 器,节省甚至更加显著,其中相比于对0,验证总数是34。关联的多遍编程图13所示的索引编程方法需要多个编程遍。用于索引和预测编程的第一遍很可 能在之后跟有用于将编程的阈值修整得更接近目标状态的一个或两个索引编程遍。每个编 程遍中的脉冲数至少等于存储器状态数。这将给出粗略的粒度(granularity),即每个脉冲 将单元的阈值电压增加与两个状态之间的间隔相等的量。结果,每个存储器状态的阈值分 布(例如参见图10)将扩展(spread out)。使用当前算法,为了对每个存储器状态获取更收紧的阈值电压分布,能够随每一 遍而使用越来越精细的步长大小。例如,在第一次修整中,脉冲步长大小可以比在预测编程 中使用的脉冲步长大小精细两倍。类似地,在第二次修整中,脉冲步长大小可以比在第一次修整中使用的脉冲步长大小精细两倍,等等。然而,每次步长大小降低一半时,脉冲数以及 由此的编程时间将加倍。根据本发明的另一方面,在多个编程遍中并行编程一组存储器单元,其中,在该多 个遍中的编程电压是关联的。每个编程遍利用具有公共步长大小的阶梯脉冲串形式的编程 电压,并且每个相继遍具有从前一遍的阶梯脉冲串偏移了预定偏移水平的阶梯脉冲串。该 预定偏移水平小于公共步长大小,并且可以小于或等于前一遍的预定偏移水平。在一个优选实施例中,预定偏移是前一遍的预定偏移的一半。例如,第二遍的阶梯 脉冲串从第一遍偏移了步长大小的一半,第三遍的阶梯脉冲串从第二遍偏移了步长大小的 四分之一。以此方式,使用比使用多遍而每一遍使用具有更精细的步长大小的编程阶梯脉 冲串的传统方法更少的编程脉冲,可以对多遍实现相同的编程解析度。图沈图示了将关联的多遍编程应用到图21所示的索引编程遍。在该方面,图沈 还示出了从诸如图17和图22所示的第一编程遍得出的修整编程遍2~)和幻。在该三个遍 中使用的阶梯脉冲串都具有相同的步长大小。在第一编程遍1)中使用的阶梯脉冲串具有 Vraci的初始编程电压。另一方面,在第二编程遍幻中使用的阶梯脉冲串具有VremW初始编 程电压,其中Vrem与Vresci相关联,使得VreM1 = VPGMO+Δ Vpgmio在优选实施例中,AVpgmi =步长 大小的一半。类似地,在第三编程遍幻中使用的阶梯脉冲串具有VreM2的初始编程电压,其中 Vpgm2 与 Vrem 和 Vreffil 关联,使得 VreM2 = Vpgmo+ Δ Vpgm2 = Vpgmi+ Δ Vpgm120 在优选实施例中,Δ Vpgm2 =步长大小的3/4,或者AVrem2 =步长大小的1/4。从而,除了每遍中整个阶梯脉冲的DC电平向更高移动了预定量之外,关联的多遍 编程利用相同的阶梯脉冲串来编程每个遍。在优选实施例中,相对于前一遍,第二遍移动了 步长大小的一半,第三遍移动了步长大小的四分之一。利用这三个关联编程电压波形的编 程产生与三个传统的单遍编程相同的解析度,在该三个传统的单遍编程中,每一遍使用之 前遍的阶梯波形一半步长大小的阶梯波形。图27图示了通过使用多遍编程收紧存储器状态的阈值电压分布。每遍收紧每个 分布的下沿。图28Α是示出对于存储器状态的各种划分、在传统多遍编程中使用的编程脉冲数 的表格。将看到,脉冲数是. . 2Μ) X 2Ν,其中P是编程的遍数。例如,对于3遍编程, 3位单元将需要56个脉冲,4位单元将需要112个脉冲。图28Β是示出对于存储器状态的各种划分的、在关联多遍编程中使用的编程脉冲 数的表格。将看到,脉冲数仅是ΡΧ2Ν。例如,对于3遍编程,3位单元将需要M个脉冲,4 位单元将需要48个脉冲,这比图28Α所示的传统多遍编程所需要的少得多。图四是图示在各遍之间利用关联编程电平的多遍编程方法的流程图。步骤960 以具有给定步长大小的阶梯脉冲串的形式提供在有限时段随着时间递 增的编程电压。步骤970 在预定数目的多个编程遍中编程一组存储器单元,每个相继的编程遍 具有施加来编程该组存储器单元的阶梯脉冲串,其中每个相继的编程遍具有从前一编程遍 的阶梯脉冲串偏移预定偏移水平的阶梯脉冲串。步骤980 对该组完成编程。
多遍索引编程技术允许极大地节省验证操作的数量。类似地,多遍关联编程技术 允许极大地节省所需的编程脉冲的数量。可以将这两种技术一起结合成高性能的多遍索引 和关联编程。对于被配置为每单元存储三位或更多位数据的存储器,益处甚至更多。在此参考的所有专利、专利申请、论文、书本、规范、其他出版物、文档和事物,为所 有目的作为参考将其全部内容合并于此。至于在任何所合并的出版物、文档或事物与本文 档的文本之间的术语的定义或使用方面的任何不一致或冲突,应以本文档中术语的定义或 使用为准。虽然已经关于某些实施例描述了本发明的各个方面,要理解的是,本发明有权在 所附权利要求的整个范围内进行保护。
权利要求
1.一种并行编程非易失性存储器单元组的方法,包括以具有给定步长大小的阶梯脉冲串形式,提供在有限时间段随时间递增的编程电压;以及在多个编程遍中编程该组存储器单元,每个相继的编程遍具有被施加来编程该组存储 器单元的阶梯脉冲串,并且其中,每个相继的编程遍具有从前一编程遍的阶梯脉冲串偏移 预定偏移水平的阶梯脉冲串。
2.如权利要求1所述的方法,其中每个编程遍中的预定偏移水平小于所述给定步长大小、并且小于或等于前一编程遍的 预定偏移水平。
3.如权利要求1所述的方法,其中 所述多个编程遍包括使用第一阶梯脉冲串的第一编程遍;使用与第一阶梯脉冲串类似但是从所述第一阶梯脉冲串偏移步长大小的一半的第二 阶梯脉冲串的第二编程遍。
4.如权利要求3所述的方法,还包括使用与第二阶梯脉冲串类似但是从所述第二阶梯脉冲串偏移步长大小的四分之一的 第三阶梯脉冲串的第三编程遍。
5.如权利要求1所述的方法,其中,该组非易失性存储器单元的每个存储器单元可编 程到各自的目标状态,并且所述方法还包括(a)为编程中的该组的每个存储器单元提供编程索引,存储器单元的编程索引指示用 于对该存储器单元编程的最后的编程电压电平;(b)将所述编程电压作为编程遍中一系列递增的电压脉冲施加到该组存储器单元;以及(c)根据存储器单元的编程索引,在该编程遍期间对该单元允许编程或禁止编程。
6.如权利要求5所述的方法,其中执行所述施加编程电压作为一系列递增的电压脉冲,而不在该编程遍期间的电压脉冲 之间对该组存储器单元进行验证步骤。
7.如权利要求5所述的方法,其中每个编程遍中的预定偏移水平小于所述给定步长大小、并且小于或等于前一编程遍的 预定偏移水平。
8.如权利要求5所述的方法,其中 所述多个编程遍包括使用第一阶梯脉冲串的第一编程遍;使用与第一阶梯脉冲串类似但是从所述第一阶梯脉冲串偏移步长大小的一半的第二 阶梯脉冲串的第二编程遍。
9.如权利要求8所述的方法,还包括使用与第二阶梯脉冲串类似但是从所述第二阶梯脉冲串偏移步长大小的四分之一的 第三阶梯脉冲串的第三编程遍。
10.如权利要求1所述的方法,其中,每个存储器单元具有作为场效应晶体管的浮置栅极的电荷存储元件。
11.如权利要求1所述的方法,其中,每个存储器单元具有作为场效应晶体管中的介电 层的电荷存储元件。
12.如权利要求1所述的方法,其中,所述非易失性存储器具有NAND结构的存储器单元。
13.如权利要求1所述的方法,其中,所述非易失性存储器是闪存EEPROM。
14.如权利要求1所述的方法,其中,所述非易失性存储器嵌入在存储卡中。
15.如权利要求1所述的方法,其中,编程中的存储器单元每个存储多于一位的数据。
16.一种非易失性存储器,包括存储器单元的阵列,其中,每个存储器单元可编程到各自的目标状态; 读/写电路,用于并行读和编程存储器单元组; 所述读/写电路执行包括以下的编程以具有给定步长大小的阶梯脉冲串形式,提供在有限时间段随时间递增的编程电压;以及在多个编程遍中编程该组存储器单元,每个相继的编程遍具有被施加来编程该组存储 器单元的阶梯脉冲串,并且其中,每个相继的编程遍具有从前一编程遍的阶梯脉冲串偏移 预定偏移水平的阶梯脉冲串。
17.如权利要求16所述的非易失性存储器,其中每个编程遍中的预定偏移水平小于所述给定步长大小、并且小于或等于前一编程遍的 预定偏移水平。
18.如权利要求16所述的非易失性存储器,其中 所述多个编程遍包括使用第一阶梯脉冲串的第一编程遍;使用与第一阶梯脉冲串类似但是从所述第一阶梯脉冲串偏移步长大小的一半的第二 阶梯脉冲串的第二编程遍。
19.如权利要求18所述的非易失性存储器,还包括使用与第二阶梯脉冲串类似但是从所述第二阶梯脉冲串偏移步长大小的四分之一的 第三阶梯脉冲串的第三编程遍。
20.如权利要求16所述的非易失性存储器,还包括用于编程中的该组的每个存储器单元的编程索引,存储器单元的编程索引指示用于编 程该存储器单元的最后的编程电压电平; 所述读/写电路执行包括以下的编程将编程电压作为编程遍中一系列递增的电压脉冲施加到该组存储器单元;以及 根据存储器单元的编程索引,在该编程遍期间对该单元允许编程或禁止编程。
21.如权利要求20所述的非易失性存储器,其中执行所述读/写电路施加编程电压作为一系列递增的电压脉冲,而在该编程遍期间的 电压脉冲之间不对该组存储器单元进行验证步骤。
22.如权利要求20所述的非易失性存储器,其中每个编程遍中的预定偏移水平小于所述给定步长大小、并且小于或等于前一编程遍的预定偏移水平。
23.如权利要求20所述的非易失性存储器,其中 所述多个编程遍包括使用第一阶梯脉冲串的第一编程遍;使用与第一阶梯脉冲串类似但是从所述第一阶梯脉冲串偏移步长大小的一半的第二 阶梯脉冲串的第二编程遍。
24.如权利要求23所述的非易失性存储器,还包括使用与第二阶梯脉冲串类似但是从所述第二阶梯脉冲串偏移步长大小的四分之一的 第三阶梯脉冲串的第三编程遍。
25.如权利要求16所述的非易失性存储器,其中,每个存储器单元具有作为场效应晶 体管的浮置栅极的电荷存储元件。
26.如权利要求16所述的非易失性存储器,其中,每个存储器单元具有作为场效应晶 体管中的介电层的电荷存储元件。
27.如权利要求16所述的非易失性存储器,其中,所述非易失性存储器具有NAND结构 的存储器单元。
28.如权利要求16所述的非易失性存储器,其中,所述非易失性存储器是闪存EEPROM。
29.如权利要求16所述的非易失性存储器,其中,所述非易失性存储器嵌入在存储卡中。
30.如权利要求16所述的非易失性存储器,其中,编程中的存储器单元每个存储多于 一位的数据。
全文摘要
使用多遍编程方法并行地将一组存储器单元分别编程到其目标状态,在该多遍编程方法中,多遍中的编程电压相关联。每个编程遍采用具有公共步长大小的阶梯脉冲串形式的编程电压,每个相继遍具有从前一遍的阶梯脉冲串偏移了预定偏移水平的阶梯脉冲串。该预定偏移水平小于公共步长大小,并且可以小于或等于前一遍的预定偏移水平。因此,可以使用比每个相继遍使用具有更精细的步长大小的编程阶梯脉冲串的传统方法更少的编程脉冲,来对多遍实现相同的编程解析度。多遍编程用于收紧编程的阈值的分布,同时降低编程脉冲的整体数量。
文档编号G11C16/10GK102089827SQ200980126873
公开日2011年6月8日 申请日期2009年6月4日 优先权日2008年6月12日
发明者劳尔-阿德里安·瑟尼 申请人:桑迪士克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1