CN105009218B - 用于收紧阈值电压宽度以避免编程干扰的编程方法 - Google Patents
用于收紧阈值电压宽度以避免编程干扰的编程方法 Download PDFInfo
- Publication number
- CN105009218B CN105009218B CN201380036509.5A CN201380036509A CN105009218B CN 105009218 B CN105009218 B CN 105009218B CN 201380036509 A CN201380036509 A CN 201380036509A CN 105009218 B CN105009218 B CN 105009218B
- Authority
- CN
- China
- Prior art keywords
- threshold voltage
- programmed
- data threshold
- state data
- distribution
- 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
Links
Classifications
-
- 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/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
-
- 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/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
一种非易失性存储系统执行多阶段编程处理以将非易失性存储装置编程为一组数据阈值电压分布。该多阶段编程处理包括:执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布;以及在执行多阶段编程处理的中间阶段之后,执行多阶段编程处理的后一阶段以仅收紧数据阈值电压分布的子集。
Description
技术领域
本发明涉及用于非易失性存储装置的技术。
背景技术
半导体存储器设备已变得愈加普遍地用于各种电子设备中。例如,非易失性半导体存储器用于蜂窝式电话、数码相机、个人数字助理、移动计算设备、非移动计算设备以及其他设备中。电可擦除可编程只读存储器(EEPROM)和闪速存储器在最普遍的非易失性半导体存储器之中。
EEPROM和闪速存储器两者均利用位于半导体衬底中的沟道区上方且与其隔离的浮置栅极。浮置栅极位于源极区与漏极区之间。控制栅极设置在浮置栅极上方并且与浮置栅极隔离。晶体管的阈值电压由保持在浮置栅极上的电荷量控制。也就是说,在晶体管导通之前必须施加到控制栅极以允许其源极与漏极之间导电的最小电压量由浮置栅极上的电荷电平控制。
当对EEPROM或闪速存储器设备进行编程时,通常将编程电压施加到控制栅极并且将位线接地。来自沟道的电子注入浮置栅极中。当电子在浮置栅极中聚集时,浮置栅极变为带负电,并且存储器单元的阈值电压升高,使得存储器单元处于编程状态。关于编程的更多信息可以查阅题为“Source Side Self Boosting Technique For Non-Volatile Memory”的美国专利6,859,397和题为“Detecting Over Programmed Memory”的美国专利6,917,542,两个专利的全部内容通过引用并入本文中。
一些EEPROM和闪速存储器设备具有用于存储两个电荷范围的浮置栅极,因此,存储器单元可在两个状态(与数据“1”和数据“0”对应的擦除状态和编程状态)之间被编程/擦除。这样的设备被称为二进制设备或双态设备。
通过识别多个不同的允许阈值电压范围来实现多态闪速存储器单元。每个不同的阈值电压范围与在存储器单元中被编码的数据位组的预定值对应。通常,可以使用2N个阈值电压范围(也被称为数据状态)来表示每存储器单元N个数据位。每存储器单元使用高数量的数据位使得能够制造具有高数据密度的闪存设备,从而降低了每个闪存设备的总成本。编程到存储器单元中的数据与存储器单元的阈值电压范围之间的具体关系取决于存储器单元所采用的数据编码方案。例如,第6,222,762号美国专利和第2004/0255090号美国专利申请公布描述了用于多态闪速存储器单元的各种数据编码方案,两者的全部内容通过引用并入本文中。
通常,将编程电压(Vpgm)作为一系列脉冲施加到存储器单元的控制栅极。编程脉冲的幅度随每个连续脉冲而增加了预定步长(例如,0.2v、0.3v、0.4v等)。在编程操作期间,将高电压施加到选择的字线(WL)并且将0伏特施加到选择的位线(BL),其中未选择的WL保持处于传导电压并且未选择的BL保持处于比编程电压低的某个电压。当期望对选择的WL上的一个存储器单元进行编程而不对连接至同一字线的其他存储器单元进行编程时出现问题。因为编程电压被施加到与选择的WL连接的全部存储器单元,所以字线上的未选择的存储器单元(不是要被编程的存储器单元),尤其是与被选择用于进行编程的存储器单元相邻的存储器单元,可能无意中被编程。对选择的WL上的未选择的存储器单元的无意编程被称为“编程干扰”。编程干扰通常在低电压电平存储器单元中更严重,并且在使用高编程电压时增加。
另一个问题是浮置栅极与浮置栅极耦合。浮置栅极与浮置栅极耦合现象在已被在不同时间编程的相邻存储器单元组之间最显著地发生。例如,第一存储器单元被编程为将电荷电平添加到与一组数据对应的该第一存储器单元的浮置栅极。随后,一个或多个相邻存储器单元被编程为将电荷电平添加到与第二组数据对应的该一个或更多个相邻存储器单元的浮置栅极。在对一个或更多个相邻存储器单元进行编程之后,从第一存储器单元读取的电荷电平由于被耦合到第一存储器单元的相邻存储器单元上的电荷效应而与经编程的电平不同。与相邻存储器单元的耦合可以使被读取的表观电荷电平偏移足以导致对所存储的数据的错误读取的量。
多态设备更关注浮置栅极与浮置栅极耦合的影响,因为在多态设备中,所允许的阈值电压范围和禁止范围比在二进制设备中更窄。因此,浮置栅极与浮置栅极耦合可能导致存储器单元从允许阈值电压范围偏移到禁止范围。
当将数据编程为多个状态(例如,而不是二进制编程)时,重要的是编程处理足够精确以使得读取处理可以明确区分不同的阈值电压分布。编程的精确度与在编程处理之后已编程的存储器单元的阈值电压的分布相关。阈值电压分布越紧,越容易明确地读取存储器单元。为了获得紧密的阈值电压分布,使用了大量的编程脉冲。使用高数量的编程脉冲导致在编程操作期间施加到WL的高编程电压,这(在某些情况下)会导致更多编程干扰。
附图说明
图1是NAND串的顶视图。
图2是NAND串的等效电路图。
图3是非易失性存储器系统的框图。
图4是描绘了感测块的一个实施例的框图。
图5是描绘了存储器阵列的一个实施例的框图。
图6是描述了用于编程的处理的一个实施例的流程图。
图7是描述了用于将数据编程到存储器单元块中的处理的一个实施例的流程图。
图8是描述了用于对非易失性存储器进行编程的处理的一个实施例的流程图。
图9描绘了三个编程脉冲以及施加在编程脉冲之间的验证脉冲。
图10描绘了阈值电压分布的示例组并且描述了用于对非易失性存储器进行编程的处理。
图11描绘了将数据编码成与阈值电压分布相关联的一组数据状态的示例。
图12A至图12E示出了多阶段编程的一个示例。
图13是描述了根据本技术的一个实施例的多阶段编程的流程图。
图14A至图14D描述了根据本技术的一个实施例的多阶段编程。
图15A至图15D描述了根据本技术的另一实施例的多阶段编程。
图16A至图16D描述了根据本技术的另一实施例的多阶段编程。
具体实施方式
用于在对一组非易失性存储元件进行编程时实现紧密阈值分布以避免编程干扰的一个解决方案是使用多阶段编程处理。多阶段编程处理的第一阶段包括:将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间分布。多阶段编程处理的中间阶段包括:将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布。在执行多阶段编程处理的中间阶段之后执行的多阶段编程处理的后一阶段包括:仅收紧数据阈值电压分布中的子集。在一个实施例中,执行多阶段编程处理的中间阶段包括:将非易失性存储元件编程为数据阈值电压分布中的全部分布;以及执行多阶段编程处理的后一阶段包括:收紧低状态数据阈值电压分布,而不收紧高状态数据阈值电压分布。
可以实现本文中描述的技术的非易失性存储系统的一个示例是使用NAND结构的闪速存储器系统,其包括布置夹在两个选择栅极之间的串联的多个晶体管。串联的晶体管和选择栅极被称为NAND串。图1是示出了一个NAND串的顶视图。图2是其等效电路。图1和图2中描绘的NAND串包括串联的且夹在(漏极侧)选择栅极120与(源极侧)选择栅极122之间的四个晶体管100、102、104以及106。选择栅极120将NAND串经由位线接触部126连接至位线。选择栅极122将NAND串连接至源极线128。通过向选择线SGD施加适当的电压来控制选择栅极120。通过向选择线SGS施加适当的电压来控制选择栅极122。晶体管100、102、104以及106中的每一个均具有控制栅极和浮置栅极。例如,晶体管100具有控制栅极100CG和浮置栅极100FG。晶体管102包括控制栅极102CG和浮置栅极102FG。晶体管104包括控制栅极104CG和浮置栅极104FG。晶体管106包括控制栅极106CG和浮置栅极106FG。控制栅极100CG连接至字线WL3,控制栅极102CG连接至字线WL2,控制栅极104CG连接至字线WL1,并且控制栅极106CG连接至字线WL0。
注意,虽然图1和图2示出了NAND串中的四个存储器单元,但是仅提供四个存储器单元的使用作为示例。NAND串可以少于四个存储器单元或多于四个存储器单元。例如,一些NAND串具有128个或更多个存储器单元。本文中的讨论不限于NAND串中的任何具体数量的存储器单元。一个实施例使用具有66个存储器单元的NAND串,其中64个存储器单元用于存储数据,并且存储器单元中的两个存储器单元由于其不存储数据而被称为伪存储器单元(dummy memory cell)。
使用NAND结构的闪速存储器系统的典型架构包括若干NAND串。每个NAND串通过由选择线SGS控制的其源极选择栅极而连接至公共源极线,并且通过由选择线SGD控制的其漏极选择栅极而连接至其关联的位线。每条位线和经由位线接触部连接至该位线的相应的(一个或多个)NAND串包括存储器单元阵列的列。位线由多个NAND串共用。通常,位线沿垂直于字线的方向在NAND串之上运行并且连接至感测放大器。
在以下美国专利/专利申请中提供了NAND型闪速存储器及其操作的相关示例:美国专利第5,570,315号;美国专利第5,774,397号;美国专利第6,046,935号;美国专利第6,456,528号;以及美国专利公布第US2003/0002348号,其全部内容通过引用并入本文中。
除NAND闪速存储器外,还可以使用其他类型的非易失性存储设备来实现本文中描述的新技术。例如,TANOS结构(由硅衬底上的TaN-Al2O3-SiN-SiO2堆叠层构成)也可以与本文中描述的技术一起使用,该TANOS结构基本上是利用在氮化层中俘获电荷的存储器单元(代替浮置栅极)。用在闪速EEPROM系统中的另一类型的存储器单元利用非导电介电材料来代替导电浮置栅极以按非易失性方式储存电荷。在Chan等人的文章“A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device”(IEEE Electron Device Letters,第EDL-8卷,第3期,1987年3月,第93页至第95页)中对这样的存储器单元进行了描述。由氧化硅、氮化硅、和氧化硅(“ONO”)形成的三层电介质夹在存储器单元沟道上方的导电控制栅极与半导电衬底的表面之间。通过将来自存储器单元沟道的电子注入到氮化物中来对存储器单元进行编程,其中电子被俘获并且储存在有限的区域中。这样储存的电荷然后以可检测的方式来改变存储器单元的沟道的一部分的阈值电压。通过将热空穴注入到氮化物中来对存储器单元进行擦除。此外,参见Nozaki等人的“A 1-Mb EEPROM with MONOS Memory Cellfor Semiconductor Disk Application”(IEEE Journal of Solid-State Circuits,第26卷,第4期,1991年4月,第497页至第501页),其描述了分栅(split-gate)配置中的类似单元,其中掺杂有多晶硅的栅极在存储器单元沟道的一部分之上延伸以形成单独的选择晶体管。
图3示出了存储器设备210,其具有用于对并联的存储器单元(例如,NAND多态闪速存储器)的页面进行读取和编程的读/写电路。存储器设备210可以包括一个或多个存储器管芯或芯片212。存储器管芯212包括存储器单元阵列(二维或三维)200、控制电路220以及读/写电路230A和230B。在一个实施例中,在阵列的相对侧以对称方式来实现各个外围电路对存储器阵列200的访问,使得在每一侧的访问线(access line)和电路的密度减小一半。读/写电路230A和230B包括多个感测块300,其使得能够对存储器单元的页面进行并行读取或编程。存储器阵列200可通过经由行解码器240A和240B的字线和通过经由列解码器242A和242B的位线寻址。在典型的实施例中,控制器244与一个或多个存储器管芯212一样包括在同一存储器设备210(例如,可移动存储卡或封装件)中。经由线232在主机与控制器244之间以及经由线路234在控制器与一个或多个存储器管芯212之间传递命令和数据。一些存储器系统可以包括与控制器244通信的多个管芯212。
控制电路220与读/写电路230A和230B协作以对存储器阵列200执行存储器操作。控制电路220包括状态机222、芯片上地址解码器224以及功率控制模块226。状态机222提供存储器操作的芯片级控制。芯片上地址解码器224为解码器240A、240B、242A以及242B所使用的硬件地址提供主机或存储器控制器使用的地址之间的地址接口。功率控制模块226控制在存储器操作期间向字线和位线供给的功率和电压。在一个实施例中,功率控制模块226包括可以产生大于供给电压的电压的一个或多个电荷泵。控制电路220、功率控制226、解码器224、状态机222、解码器240A/240B和242A/242B、读/写电路230A/230B以及控制器244可以被统一地或单独地称为一个或多个管理电路。
图4是被划分成称为感测模块480的核心部分与公共部分490的单个感测块300的框图。在一个实施例中,对于每条位线有单独的感测模块480并且对于一组多个感测模块480有一个公共部分490。在一个示例中,感测块包括一个公共部分490和八个感测模块480。一组中的每个感测模块将经由数据总线472与关联的公共部分进行通信。对于进一步详情,参考美国专利申请公布2006/0140007,其全部内容通过引用并入本文中。
感测模块480包括确定所连接的位线中的传导电流是在预定电平以上还是以下的感测电路470。在一些实施例中,感测模块480包括通常被称为感测放大器的电路。感测模块480还包括用于设置所连接的位线上的电压条件的位线锁存器482。例如,锁存在位线锁存器482中的预定状态将导致所连接的位线被拉到指定编程禁止的状态(例如,Vdd)。
公共部分490包括处理器492、一组数据锁存器494以及耦接在该组数据锁存器494与数据总线420之间的I/O接口496。处理器492执行计算。例如,处理器492的功能之一是确定存储在所感测的存储器单元中的数据并且将所确定的数据存储在该组数据锁存器中。该组数据锁存器494用于存储在读取操作期间由处理器492确定的数据位。该组数据锁存器494还用于存储在编程操作期间从数据总线420导入的数据位。所导入的数据位表示打算编程到存储器中的写入数据。I/O接口496提供数据锁存器494与数据总线420之间的接口。
在读取或感测期间,系统的操作受状态机222的控制,状态机222控制向被寻址的存储器单元供给不同的控制栅极电压。由于状态机222单步调试(step through)与存储器支持的各种存储器状态对应的各个预定义的控制栅极电压(读取参考电压或验证参考电压),所以感测模块480可以在这些电压中的一个电压下跳变(trip)并且将经由总线472从感测模块480向处理器492提供输出。在这一点上,处理器492通过考虑感测模块的(一个或多个)跳变事件以及关于经由输入线493从状态机施加的控制栅极电压的信息来确定所得到的存储器状态。处理器492接着计算对于存储器状态的二进制编码并且将所得到的数据位存储到数据锁存器494中。在核心部分的另一实施例中,位线锁存器482担负双重任务:既作为用于锁存感测模块480的输出的锁存器,又作为如上所述的位线锁存器。
可以预料到的是,一些实现方式包括多个处理器492。在一个实施例中,每个处理器492包括输出线(图4中未描绘),以使得每条输出线被线或(OR)在一起。在一些实施例中,输出线在连接至线或的线之前被反转。该配置使得能够在编程验证处理期间快速确定编程处理何时已完成,这是因为容纳线或的线的状态机可以确定正被编程的全部位何时已达到期望电平。例如,当每个位已达到其期望电平时,向线或的线发送该位的逻辑零(或者反转数据1)。当全部位输出数据0(或者数据1反转)时,则状态机知道要终止编程处理。在每个处理器与八个感测模块进行通信的实施例中,状态机可能(在一些实施例中)需要读取线或的线八次,或者向处理器492添加逻辑电路以累积关联的位线的结果,以使得状态机仅需要读取线或的线一次。在具有许多感测模块的一些实施例中,可以将许多感测模块的线或的线分组成N个感测模块的组,并且可以对这些组进行分组以形成二叉树。
在编程或验证期间,将要编程的数据从数据总线420存储在该组数据锁存器494中。在状态机的控制下,编程操作包括同时施加到被寻址的存储器单元的控制栅极的一系列编程电压脉冲(具有增加的幅度),以使得存储器单元被同时编程。每个编程脉冲之后是验证处理以确定存储器单元是否已被编程为期望状态。处理器492监测相对于期望的存储器状态的经验证的存储器状态。当两者一致时,处理器492设置位线锁存器482以使位线被拉到指定编程禁止的状态。这抑制了耦接到位线的存储器单元进一步进行编程,即使在其控制栅极上经受编程脉冲也是如此。在其他实施例中,处理器最初加载位线锁存器482,并且感测电路在验证处理期间将其设置为禁止值。
数据锁存器堆栈494包括与感测模块对应的数据锁存器堆栈。在一个实施例中,每个感测模块480有三个(或四个或另一数量)数据锁存器。在一些实现方式中(但不要求),将数据锁存器实现为移位寄存器,使得其中存储的并行数据被转换为用于数据总线420的串行数据,并且反之亦然。在一个优选实施例中,可以将与存储器单元的读/写块对应的全部数据锁存器链接在一起以形成块移位寄存器,使得可以通过串行传输来输入或输出数据块。具体地,将读/写模块库适配成使得其数据锁存器组中的每个数据锁存器将数据依次移进或移出数据总线,就好像其是用于整个读/写块的移位寄存器的一部分。
可以在以下专利申请中查阅关于非易失性存储设备的各种实施例的结构和/或操作的附加信息:(1)2004年3月25日公布的美国专利申请公布第2004/0057287号,“Non-Volatile Memory And Method With Reduced Source Line Bias Errors”;(2)2004年6月10日公布的美国专利申请公布第2004/0109357号,“Non-Volatile Memory And Methodwith Improved Sensing,”;(3)美国专利申请公布第20050169082号;(4)2005年4月5日提交的发明人为Jian Chen的、题为“Compensating for Coupling During Read Operationsof Non-Volatile Memory”的美国专利申请公布2006/0221692;(5)2005年12月28日提交的发明人为Sui Lung Chan和Raul-Adrian Cernea的、题为“Reference Sense AmplifierFor Non-Volatile Memory”的美国专利申请公布2006/0158947。以上直接列出的全部五个专利文献的全部内容通过引用并入本文中。
图5描绘了存储器单元阵列200的示例性结构。在一个实施例中,将存储器单元阵列划分成大量存储器单元块。如对于闪速EEPROM系统所常见的,块是擦除单位。也就是说,每个块包含被一起擦除的最小数量的存储器单元。其他实施例可以使用不同的擦除单位。
作为一个示例,将图5中描绘的NAND闪速EEPROM划分成1024个块。然而,可以使用多于或少于1024个块。在该示例中,在每个块中有与位线BL0、BL1、…BL69,623对应的69,624个列。在一个实施例中,在读取操作和编程操作期间可以同时选择块的全部位线。可以同时(例如同期地)对沿着公共字线并且连接至任意位线的存储器单元进行编程(或读取)。在另一实施例中,将位线划分成偶数位线和奇数位线。在奇数/偶数位线架构中,在一个时间对沿着公共字线并且连接至奇数位线的存储器单元进行编程,而在另一时间对沿着公共字线并且连接至偶数位线的存储器单元进行编程。
图5示出了串联连接以形成NAND串的四个存储器单元。虽然四个存储器单元被示为包括在每个NAND串中,但是可以使用多于或少于四个(例如,16个、32个、64个、128个或另一数量的存储器单元可以在NAND串上)。NAND串的一个端子经由漏极选择栅极(其连接至选择栅极漏极线SGD)连接至对应的位线,并且另一端子经由源极选择栅极(其连接至选择栅极源极线SGS)连接至源极线。
通常将每个块划分成许多页面。在一个实施例中,页面是编程单位。一个或多个页面的数据通常存储在一行存储器单元中。页面可以存储一个或多个扇区(sector)。扇区包括用户数据和开销数据。开销数据通常包括已根据扇区的用户数据而计算出的纠错码(ECC)。控制器在数据被编程到阵列中时计算ECC,并且还在数据被从阵列中读取时校验ECC。在一些实施例中,状态机、控制器或其他部件可以计算并校验ECC。在一些替选中,ECC和/或其他开销数据存储在与和其有关的用户数据不同的页面或甚至不同的块中。用户数据的扇区通常为512个字节,其与磁盘驱动器中的扇区的大小相对应。大量页面构成块,大概由例如8个页面构成,可达32、64、128或更多个页面。在一个实施例中,块的每条字线与一个页面相关联。在另一实施例中,块的每条字线与3个页面相关联。在其他实施例中,字线可以与其他数量的页面相关联。
一些存储器单元的编程或擦除比其他存储器单元慢,这是因为那些存储器单元之间的制造变化、因为那些存储器单元先前被擦除以达到比其他存储器单元更低的阈值电压、因为页面内的存储器单元之间的不均匀磨损或者其他原因。而且,当然,一些存储器单元由于缺陷或其他原因而无论如何都无法被编程或擦除。此外,一些存储器单元快速编程并且可以被过编程,这也可能造成错误。如上所述,纠错编码提供了容忍一些数量的失败的存储器单元、同时仍然将存储器保持为可用的能力。在一些应用中,通过反复地施加编程脉冲来对数据的页面进行编程,直到页面上的全部存储器单元验证为期望的编程状态为止。在一些实现方式中,当尚未被完全编程或擦除的错误存储器单元的数量少于可纠正的位数时,通过终止编程脉冲或擦除脉冲的序列来节省编程和擦除时间。
图6是描述用于进行编程的处理的一个实施例的流程图。在步骤520中,从主机、控制器或其他实体接收用于进行编程的请求。在步骤522中,控制器(或状态机或其他实体)确定哪组的一个或多个块来存储数据。在步骤524中,将针对该请求而接收到的数据编程到存储器单元的一个或多个块中。在步骤526中,可以读取数据。步骤524与步骤526之间的虚线表明在编程与读取之间可以存在不可预测的时间量。
图7是描述了用于对存储器块进行编程的处理的流程图。在图6的步骤524期间,执行图7的处理一次或多次。在一个示例实现方式中,对存储器单元进行预编程以保持存储器单元上的均匀磨损(步骤550)。在一个实施例中,将存储器单元预编程为最高数据状态、随机模式或任何其他模式。在一些实现方式中,无需执行预编程。一些实施例不实现预编程。
在步骤552中,在编程之前(以块或其他单位)擦除存储器单元。在一个实施例中,通过将p阱提高至擦除电压(例如,20伏特)达充足的时间段并且在源极线和位线浮置时将选择的块的字线接地来擦除存储器单元。在未被选择为进行擦除的块中,字线被浮置。由于电容耦合,未被选择的字线、位线、选择线以及公共源极线也被提高至擦除电压的相当大的一部分,由此阻碍了对未被选择为进行擦除的块的擦除。在被选择为进行擦除的块中,向选择的存储器单元的隧道氧化层施加强电场,并且通常通过富勒-诺得海姆(Fowler-Nordheim)隧穿机制,随着浮置栅极的电子被发射到衬底侧,选择的存储器单元被擦除。由于电子从浮置栅极传递到p阱区域,所以降低了选择的存储器单元的阈值电压。可以对整个存储器阵列、对各个块或存储器单元的另一单位执行擦除。在一个实施例中,在擦除存储器单元后,块中的被擦除的全部存储器单元将处于状态S0(以下讨论)。擦除处理的一种实现方式包括将若干个擦除脉冲施加到p阱并且在擦除脉冲之间验证NAND串是否被适当地擦除。
在步骤554中,(可选地)执行软编程以缩窄对于所擦除的存储器单元的擦除阈值电压分布。由于擦除处理,一些存储器单元可以处于比需要的状态更深的擦除状态。软编程可以施加编程脉冲以将被较深地擦除的存储器单元的阈值电压移至擦除阈值分布。在步骤556中,对块的存储器单元进行编程。可以响应于来自主机的进行编程的请求或响应于内部处理来执行编程。在进行编程之后,可以读取块的存储器单元。可以使用本领域中公知的许多不同的读取处理来读取数据。在一些实施例中,读取处理包括使用ECC来纠错。读取的数据被输出到请求了读取操作的主机。ECC处理可以由状态机、控制器或另一设备来执行。擦除-编程循环可以发生许多次而不进行读取或者与进行读取无关,该读取处理可以发生许多次而不进行编程或者与进行编程无关并且读取处理可以在进行编程之后的任何时间发生。可以在状态机的指引下使用上述各种电路来执行图7的处理。在其他实施例中,可以在控制器的指引下使用上述各种电路来执行图7的处理。
图8是描述用于对与公共字线连接的存储器单元进行编程的处理的一个实施例的流程图。在图7的步骤556期间,可以执行图8的处理一次或多次。例如,可以使用图8的处理来将存储器单元从数据状态S0直接编程(例如,全序列编程)为如图10所示的数据状态S1至SF中的任意状态。替选地,可以将图8的处理与多阶段编程处理一起使用。
通常,将在编程操作期间被施加到控制栅极的编程电压作为一系列编程脉冲来施加。在编程脉冲之间是用于执行验证的一组验证脉冲。在许多实现方式中,编程脉冲的幅度随每个连续脉冲而增加了预定的步长。在图8的步骤570中,将编程电压(Vpgm)初始化为起始幅度(例如,~12-16V或另一适当电平),并且将由状态机222保持的编程计数器PC初始化为1。在步骤572中,将编程信号Vpgm的编程脉冲施加到所选择的字线(被选择用于进行编程的字线)。在一个实施例中,将同期地被编程的一组存储器单元全部连接至同一字线(所选择的字线)。未选择的字线接收一个或多个升压电压(例如,~7-11伏特)以执行本领域中公知的升压方案。如果存储器单元应该被编程,则对应的位线接地。另一方面,如果存储器单元应该保持在其当前阈值电压,则对应的位线连接至Vdd以禁止编程。在步骤572中,将编程脉冲同期地施加到与所选择的字线连接的全部存储器单元,使得与所选择的字线连接的全部存储器单元同期地被编程。也就是说,它们同时(或在重叠时间期间)被编程。以这种方式,与所选择的字线连接的全部存储器单元将同期地使其阈值电压改变,除非它们已被锁定而不进行编程。
在步骤574中,使用适当的目标电平组来验证适当的存储器单元以执行一种或多种验证操作。在一个实施例中,通过应用对被选择用于进行编程的存储器单元的阈值电压是否已达到适当的验证比较电压的测试来执行验证处理(图10示出了一组验证比较电压Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv13、Vv13、Vv14、以及Vv15)。
在步骤576中,确定全部存储器单元是否已达到它们的目标阈值电压(通过)。如果是这样,则编程处理完成且成功,这是因为选择的全部存储器单元被编程且验证为它们的目标状态。在步骤578中报告“通过”的状态。如果在576中确定出并非全部存储器单元都已达到它们的目标阈值电压(失败),则编程处理继续至步骤580。
在步骤580中,系统对还未达到它们各自的目标阈值电压分布的存储器单元的数量进行计数。也就是说,系统对未通过验证处理的存储器单元的数量进行计数。该计数可以由状态机、控制器或其他逻辑电路来完成。在一种实现方式中,每个感测块300(参见图3)存储它们各自的存储器单元的状态(通过/失败)。可以使用数字计数器来对这些值进行计数。如上所述,许多感测块具有线或在一起的输出信号。因而,检查一条线就可以表明大的存储器单元组中没有存储器单元验证失败。通过适当地组织线或在一起的线(例如,类似二叉树的结构),可以使用二分搜索法来确定已失败的存储器单元的数量。以这样的方式,如果少量存储器单元失败,则迅速完成计数。如果大量存储器单元失败,则计数占用较长时间。更多信息可以查阅美国专利公布2008/0126676,其全部内容通过引用并入本文中。在另一替选实施例中,如果每个感测放大器的对应的存储器单元已失败,则该感测放大器可以输出模拟电压或电流,并且可以使用模拟电压/电流求和电路来对已失败的存储器单元的数量进行计数。
在一个实施例中,存在一个总计数,其反映未通过最后验证步骤的、当前被编程的存储器单元的总数量。在另一实施例中,对于每个数据状态保留单独计数。
在步骤582中,确定来自步骤580的计数是否小于或等于预定限值。在一个实施例中,预定限值是在对于存储器单元的页面的读取处理期间可以通过ECC纠正的位数。如果失败的存储器单元的数量小于或等于预定限值,则编程处理可以停止,并且在步骤578中报告“通过”的状态。在这种情况下,正确地对足够的存储器单元进行编程,以使得在读取处理期间可以使用ECC来对还尚未被完全编程的一些剩余的存储器单元进行纠正。在一些实施例中,步骤580针对每个扇区、每个目标数据状态或其他单位而对失败的存储器单元的数量进行计数,并且在步骤582中将那些计数单独地或全体地与阈值进行比较。
在另一实施例中,预定限值可以小于在读取处理期间可以通过ECC纠正的位数,以对未来的错误留有余地。当对少于全部存储器单元的页面进行编程,或者与仅一个数据状态(或少于全部状态)的计数相比较时,预定限值可以是在对于存储器单元的页面的读取处理期间可以通过ECC纠正的位的数量的一部分(按比例或不按比例)。在一些实施例中,该限值不是预定的。替代地,其基于已针对页面计数的错误的数量、所执行的编程-擦除循环的次数、温度或其他标准而改变。
如果失败的存储器单元的数量不少于预定限值,则编程处理在步骤584继续,并且对照编程限制值(PL)来检查编程计数器PC。编程限制值的示例包括20和30;然而,可以使用其他值。如果编程计数器PC不小于编程限制值PL,则认为编程处理已失败,并且在步骤588中报告失败的状态。如果编程计数器PC小于编程限制值PL,则处理在步骤586继续,在其期间编程计数器PC递增了1并且编程电压Vpgm步进达到下一幅度。例如,下一脉冲具有比前一脉冲大一个步长(例如,0.1伏特至0.4伏特的步长)的幅度。在步骤586之后,处理循环返回至步骤572,并且将另一编程脉冲施加到所选择的字线。
在一些实施例中,在编程操作期间施加到控制栅极的编程电压包括幅度随每个连续脉冲而增加预定步长(例如,0.2v、0.3v、0.4v等)的一系列脉冲。在脉冲之间,一些存储器系统验证各个存储器单元是否已达到它们各自的目标阈值电压范围。例如,图9示出了施加到与公共字线连接的多个存储器单元的控制栅极的信号的一部分。图9示出了编程脉冲564、565以及566,其中一组验证脉冲在编程脉冲之间。当在一个实施例中执行全序列编程时,编程脉冲之间的验证处理将针对每个阈值电压分布(数据状态)进行测试。例如,如果存储器单元存储三位数据,则存在八个有效的阈值电压分布(也被称为数据状态:S0、S1、S2、S3、S4、S5、S6以及S7)。在本示例中,将数据从S0(S0是针对擦除的存储器单元)编程为S1至S7。因此,图9示出了具有与验证目标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6以及Vv7对应的幅度的七个验证脉冲。然而,其他实施例可以使用每存储器单元多于或少于三位数据。例如,图10示出了在每个存储器单元存储四位数据时与存储器单元阵列的数据状态对应的示例阈值电压分布。因此,图10示出了与数据状态S0至SF对应的十六个阈值电压分布。在本实施例中,存在具有与验证目标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv13、Vv13、Vv14、、Vv15对应的幅度的十五个验证脉冲。
在一些实施例中,由于验证操作不是必需的或者是多余的,所以可以省略一种或多种验证操作(并且因此,可以省略一个或多个验证脉冲)。例如,如果没有一个正被编程的存储器单元已达到Vv2,则达到Vv7的可能性非常低,因此在Vv7处进行验证是不必要的。可以在全部内容通过引用并入本文中的以下专利文献中查阅关于省略针对一个或更多个状态的验证的智能验证方案的更多信息:美国专利7,073,103;美国专利7,224,614;美国专利7,310,255;美国专利7,301,817;美国专利申请2004/0109362;以及美国专利申请2009/0147573。
在成功的编程处理(利用验证)结束时,存储器单元的阈值电压应视情况在用于所编程的存储器单元的阈值电压的一个或多个分布内,或者在用于所擦除的存储器单元的阈值电压分布内。图10示出了当每个存储器单元存储四位数据时存储器单元阵列的示例阈值电压分布。然而,其他实施例可以使用每存储器单元多于或少于四位数据(例如,诸如每存储器单元三位数据)。
在图10的示例中,每个存储器单元存储四位数据;因此,存在十六个有效的阈值电压分布,也被称为数据状态:S0、S1、S2、S3、S4、S5、S6、S7、S8、S9、SA、SB、SC、SD、SE以及SF。在一个实施例中,数据状态S0在0伏特以下,并且数据状态S1至SF在0伏特以上。在其他实施例中,所有十六个数据状态都在0伏特以上,或者可以实现其他布置。在一个实施例中,S0的阈值电压分布比S1至SF的阈值电压分布宽。
在一些设备中,存储器单元被擦除而达到状态S0。可以将存储器单元从状态S0编程为状态S1至SF中的任意状态。在一个实施例中,被称为全序列编程,可以将存储器单元从擦除状态S0直接编程为编程状态S1至SF中的任意状态。例如,可以首先将要编程的存储器单元的全体擦除,使得该全体中的全部存储器单元处于擦除状态S0。在将一些存储器单元从状态S0编程为状态S1时,可以将其他存储器单元从状态S0编程为状态S2、从状态S0编程为状态S3、从状态S0编程为状态S4、从状态S0编程为状态S5、从状态S0编程为状态S6、从状态S0编程为状态S7、从状态S0编程为状态S8、从状态S0编程为状态S9、从状态S0编程为状态SA、从状态S0编程为状态SB、从状态S0编程为状态SC、从状态S0编程为状态SD、从状态S0编程为状态SE以及从状态S0编程为状态SF。全序列编程可以通过图10的十五个曲线箭头以图形方式描绘。
图10示出了一组验证目标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv12、Vv13、Vv14以及Vv15。这些验证电平在编程处理期间被用作比较电平(也称为目标电平)。例如,当将存储器单元编程为数据状态S1时,系统进行检查以查看存储器单元的阈值电压是否已达到Vv1。如果存储器单元的阈值电压尚未达到Vv1,则针对该存储器单元的编程将继续,直到其阈值电压大于或等于Vv1为止。如果存储器单元的阈值电压已达到Vv1,则针对该存储器单元的编程将停止。验证目标电平Vv2用于被编程为数据状态S2的存储器单元。验证目标电平Vv3用于被编程为数据状态S3的存储器单元。验证目标电平Vv4用于被编程为数据状态S4的存储器单元。验证目标电平Vv5用于被编程为数据状态S5的存储器单元。验证目标电平Vv6用于被编程为数据状态S6的存储器单元。验证目标电平Vv7用于被编程为数据状态S7的存储器单元。验证目标电平Vv8用于被编程为数据状态S8的存储器单元。验证目标电平Vv9用于被编程为数据状态S9的存储器单元。验证目标电平Vv10用于被编程为数据状态SA的存储器单元。验证目标电平Vv11用于被编程为数据状态SB的存储器单元。验证目标电平Vv12用于被编程为数据状态SC的存储器单元。验证目标电平Vv13用于被编程为数据状态SD的存储器单元。验证目标电平Vv14用于被编程为数据状态SE的存储器单元。验证目标电平Vv15用于被编程为数据状态SF的存储器单元。
图10还示出了一组读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6、Vr7、Vr8、Vr9、Vr10、Vr11、Vr12、Vr13、Vr14以及Vr15。这些读取比较电平在读取处理期间被用作比较电平。通过测试存储器单元是否响应于被单独地施加到存储器单元的控制栅极的读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6、Vr7、Vr8、Vr9、Vr10、Vr11、Vr12、Vr13、Vr14以及Vr15而接通或保持关断,系统可以确定存储器单元将数据存储为哪些状态。
一般来说,在验证操作和读取操作期间,选择的字线连接至如下电压,该电压的电平被指定用于每个读取操作(例如,参见图10的读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6、Vr7、Vr8、Vr9、Vr10、Vr11、Vr12、Vr13、Vr14以及Vr15)或验证操作(例如,参见图10的验证目标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv12、Vv13、Vv14以及Vv15),以便确定所关注的存储器单元的阈值电压是否已达到这样的电平。在施加字线电压之后,测量存储器单元的传导电流以确定存储器单元是否响应于施加到字线的电压而接通。如果传导电流被测量为大于特定值,则假设存储器单元接通并且施加到字线的电压大于存储器单元的阈值电压。如果传导电流被测量为不大于特定值,则假设存储器单元没有接通并且施加到字线的电压不大于存储器单元的阈值电压。在读取或验证处理期间,未选择的存储器单元在其控制栅极处被提供了一个或多个读取通过电压,使得这些存储器单元用作通过栅极(例如,传导电流而与其是被编程还是被擦除无关)。
存在很多测量存储器单元在读取操作或验证操作期间的传导电流的方法。在一个示例中,根据存储器单元对感测放大器中的专用电容器放电或充电的速率来测量存储器单元的传导电流。在另一示例中,所选择的存储器单元的传导电流使得(或无法使得)包括存储器单元的NAND串能够使相应的位线放电。一段时间之后测量位线上的电压以查看其是否已放电。注意,本文中所描述的技术可以与本领域中公知的用于验证/读取的不同方法一起使用。关于验证/读取的更多信息可以在全部内容通过引用并入本文中的以下专利文献中查阅:(1)美国专利申请公布第2004/0057287号;(2)美国专利申请公布第2004/0109357号;(3)美国专利申请公布第2005/0169082号;以及(4)美国专利申请公布第2006/0221692号。根据本领域中公知的技术来执行上述的读取和验证操作。因而,本领域的技术人员可以改变所说明的许多细节。也可以使用本领域中公知的其他读取和验证技术。
图10的每个数据状态对应于在被编程为相应状态的存储器单元中存储的数据位的预定值。图11是提供被分配给每个数据状态S0至SF的数据值的示例的表。在一个实施例中,存储器单元将数据存储在四个不同页面中。四个页面被称为第一下部页面、第二上部页面,第三更高页面以及第四顶部页面。图11描绘了每个页面中针对每个数据状态S0至SF的数据。在一个实施例中,单独地对每个页面进行编程。在另一实施例中,同时对存储器单元的全部四个数据位进行编程。也可以使用数据到状态S0至SF的其他映射。被编程到存储器单元中的数据与存储器单元的阈值电压电平之间的具体关系取决于针对存储器单元所采用的数据编码方案。例如,美国专利第6,222,762号和2003年6月13日提交的美国专利申请公布第2004/0255090号“Tracking Cells For A Memory System”描述了用于多态闪速存储器单元的各种数据编码方案,这两者的全部内容通过引用并入本文中。
在一个实施例中,使用格雷码分配来将图11的数据值分配给阈值电压范围使得:如果浮置栅极的阈值电压错误地偏移到其相邻的阈值电压分布,则仅影响一个位。这种布置在存储器单元的阈值电压太低或太高的情况下减少了错误位的数量。然而,在其他实施例中,不使用格雷码。
当将数据编程为多个状态(例如,而不是二进制编程)时,重要的是,编程处理足够精确以使得读取处理可以明确区分不同的阈值电压分布。例如,阈值电压分布越紧密,越容易明确地读取存储器单元。
一种用于实现紧密阈值电压分布而没有不合理地减慢编程处理的解决方案包括使用两阶段编程处理。粗略编程阶段包括:试图以更快的方式提高阈值电压并且更少关注于实现紧密阈值电压分布。精细编程阶段试图以更慢的方式提高阈值电压以达到目标阈值电压、同时还实现更紧密阈值电压分布。关于粗略/精细编程的更多信息可以查阅全部内容通过引用并入本文中的以下专利文献:(1)美国专利6,643,188;以及(2)美国专利7,092,290。
正如前面注意到的那样,对选择的WL上的未选择的存储器单元的无意编程被称为“编程干扰”。通常,由于较高编程电压(Vpgm),低数据状态比较高数据状态遭受更多编程干扰。
一种用于减少编程干扰的解决方案包括:在对较高/高数据状态进行编程之后对低数据状态进行编程(也称为高状态优先(high-state-first)或“HSF”编程)。例如,对8电平存储器单元设备(S0至S7)进行编程包括:首先对较高状态S4至S7进行编程,并且在对较高状态进行编程之后对较低状态S1至S3进行编程。HSF减少了对低数据状态的编程干扰影响。根据存储器单元的目标状态对存储器单元的编程的该排序与公知技术相反,在公知技术中,编程处理从低阈值状态进行到高阈值状态。关于HSF编程的更多信息可以在题为“Programming a NAND flash memory with reduced program disturb”的美国专利8,059,456中查阅,其全部内容通过引用并入本文中。
为了实现紧密阈值电压分布、同时避免编程干扰,一种解决方案是将粗略/精细编程与如上所述的HSF编程组合。然而,如以下在图12A至图12E中描述的那样,这种解决方案的缺点在于,在粗略编程阶段的低状态可能遭受由在精细编程阶段的高状态编程引起的编程干扰。
图12A至图12E示出了多阶段编程方法的一个示例。在本实施例中,编程处理包括三个阶段。在编程之前,擦除存储器单元,使得连接至公共字线的全部存储器单元都处于擦除阈值电压分布E。在编程的第一阶段期间,将存储器单元中的至少子集从擦除阈值电压分布E编程为一个或多个中间阈值电压分布。例如,如图12A中描绘的那样,将存储器单元中的目标为数据状态S4至S7的第一子集编程为具有阈值电压LU_1的中间阈值电压分布IM_1,将存储器单元中的目标为数据状态S8至SB的第二子集编程为具有阈值电压LU_2的中间阈值电压分布IM_2,将存储器单元中的目标为数据状态SC至SF的第三子集编程为具有阈值电压LU_3的中间阈值电压分布IM_3。在本示例中,要被编程为数据状态S0至S3的那些存储器单元保持处于擦除阈值电压分布E。
在图12A至图12E的编程处理的第二阶段(粗略编程)期间,如图12B中描绘的那样,首先将存储器单元编程为针对高数据状态的适当数据阈值电压分布。例如,如可以从图12B看到的那样,将要被编程为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态S8的数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态S9的数据阈值电压分布,将要被编程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态SA的数据阈值电压分布,以及将要被编程为数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态SB的数据阈值电压分布。同样,将要被编程为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程为针对数据状态SC的数据阈值电压分布,将要被编程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编程为针对数据状态SD的数据阈值电压分布,将要被编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3编程为针对数据状态SE的数据阈值电压分布,以及将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布IM_3编程为针对数据状态SF的数据阈值电压分布。
在第二阶段(即,粗略编程)期间,在编程为高数据状态之后,随后将存储器单元编程为针对低数据状态的适当数据阈值电压分布。例如,如从图12C可以看到的那样,将要被编程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为针对数据状态S0的数据阈值电压分布,将要被编程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为针对数据状态S1的数据阈值电压分布,将要被编程为数据状态S2的那些存储器单元从擦除阈值电压分布E编程为针对数据状态S2的数据阈值电压分布,以及将要被编程为数据状态S3的这些存储器单元从擦除阈值电压分布E编程为针对数据状态S3的数据阈值电压分布。同样,将要被编程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为针对数据状态S4的数据阈值电压分布,将要被编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为针对数据状态S5的数据阈值电压分布,将要被编程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为针对数据状态S6的数据阈值电压分布,以及将要被编程为数据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为针对数据状态S7的数据阈值电压分布。
如可以在图12C中看到的那样,在编程的第二阶段结束时,全部数据状态(状态S0至状态SF)与相邻数据状态不重叠。在一些实施例中,全部或部分数据状态可以与相邻数据状态重叠。
在图12A至图12E的编程处理的第三阶段(精细编程)中,首先收紧针对上部数据状态的数据阈值电压分布。例如,如图12D中描绘的那样,收紧针对数据状态S8的数据阈值电压分布以实现具有目标阈值电压Vv9的针对数据状态S8的目标阈值电压分布,收紧针对数据状态S9的数据阈值电压分布以实现具有目标阈值电压Vv10的针对数据状态S9的目标阈值电压分布,收紧针对数据状态SA的数据阈值电压分布以实现具有目标阈值电压Vv11的针对数据状态SA的目标阈值电压分布,收紧针对数据状态SB的数据阈值电压分布以实现具有目标阈值电压Vv12的针对数据状态SB的目标阈值电压分布,收紧针对数据状态SC的数据阈值电压分布以实现具有目标阈值电压Vv13的针对数据状态SC的目标阈值电压分布,收紧针对数据状态SD的数据阈值电压分布以实现具有目标阈值电压Vv14的针对数据状态SD的目标阈值电压分布,收紧针对数据状态SE的数据阈值电压分布以实现具有目标阈值电压Vv15的针对数据状态SE的目标阈值电压分布,以及收紧针对数据状态SF的数据阈值电压分布以实现具有目标阈值电压Vv16的针对数据状态SF的目标阈值电压分布。
在编程的第三阶段期间,在收紧高状态数据阈值电压分布之后,随后收紧针对低数据状态的数据阈值电压分布。这通过图12E来以图形的方式描绘。例如,如图12E中描绘的那样,收紧针对数据状态S0的数据阈值电压分布以实现具有目标阈值电压Vv1的针对数据状态S0的目标阈值电压分布,收紧针对数据状态S1的数据阈值电压分布以实现具有目标阈值电压Vv2的针对数据状态S1的目标阈值电压分布,收紧针对数据状态S2的数据阈值电压分布以实现具有目标阈值电压Vv3的针对数据状态S2的目标阈值电压分布,收紧针对数据状态S3的数据阈值电压分布以实现具有目标阈值电压Vv4的针对数据状态S3的目标阈值电压分布,收紧针对数据状态S4的数据阈值电压分布以实现具有目标阈值电压Vv5的针对数据状态S4的目标阈值电压分布,收紧针对数据状态S5的数据阈值电压分布以实现具有目标阈值电压Vv6的针对数据状态S5的目标阈值电压分布,收紧针对数据状态S6的数据阈值电压分布以实现具有目标阈值电压Vv7的针对数据状态S6的目标阈值电压分布,以及收紧针对数据状态S7的数据阈值电压分布以实现具有目标阈值电压Vv8的针对数据状态S7的目标阈值电压分布。
在一些实施例中,在编程处理的第二阶段期间不对要被编程为一种或多种数据状态的一些存储器单元进行编程,因此,这些存储器单元保持处于中间状态。在第三编程阶段期间,将这些存储器单元从中间状态编程为其适当的目标数据状态。在其他实施例中,在编程处理的第二阶段期间,被指定为其他目标数据状态的存储器单元也可以保持处于中间状态或擦除阈值电压分布E。
如可以在图12B至图12E中看到的那样,在粗略编程阶段和精细编程阶段二者中,高状态优先(HSF)都首先对高数据状态进行编程并且随后对低数据状态进行编程。然而,在粗略编程阶段的低数据状态(参见图12C)可能遭受因在精细编程阶段对高数据状态的编程(参见图12D)引起的编程干扰。
为了收紧阈值电压分布、同时避免编程干扰(例如,如图12A至图12E的编程处理中描绘的编程干扰),如下详细描述的那样,本文描述的系统在编程处理期间针对一种或多种数据状态来屏蔽(mask)数据。
图13是描述根据本技术的一个实施例的对一组非易失性存储元件的多阶段编程的流程图,该多阶段编程提供了精确编程,同时减少编程干扰以及浮置栅极与浮置栅极耦合。在图7的步骤556期间可以执行图13的处理一次或多次。例如,图13的处理可以用于对连接至公共字线的存储器单元进行编程;因此,如果针对块来对连接至X条字线的存储器单元进行编程,则执行图13的处理X次。在一个实施例中,图13的处理包括三个阶段,并且每个阶段包括执行图8的处理一次或多次。
在编程之前,擦除非易失性存储元件,使得连接至公共字线的全部存储器单元都处于擦除阈值电压分布E。在图13的步骤850中,针对非易失性存储元件执行多阶段编程处理的第一阶段,以将存储器单元中的至少子集的阈值电压从擦除分布改变为中间阈值电压分布。步骤850中的编程的第一阶段类似于如图12A中描绘的编程的第一阶段。
在图13的步骤852中,针对非易失性存储元件来执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为目标数据阈值电压分布中的适当分布。在一个实施例中,执行中间阶段包括:首先将非易失性存储元件的第一子集编程为高状态数据阈值电压分布,并且随后将非易失性存储元件的第二子集编程为低状态数据阈值电压分布。例如,在中间阶段期间,首先将要被编程为高数据状态S8至SF的那些存储器单元编程为高状态数据阈值电压分布中的适当分布,并且在编程为高状态数据阈值电压分布之后,随后将要被编程为低数据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布中的适当分布。图14B至图14C包括步骤852的一种示例实现方式。图15B包括步骤852的另一示例实现方式。图16B包括步骤852的又一示例实现方式。
在步骤854中,在中间阶段之后,执行多阶段编程处理的后一阶段,该阶段仅收紧数据阈值电压分布的子集。在一个实施例中,执行多阶段编程处理的后一阶段包括:仅收紧低状态数据阈值电压分布,而不收紧高状态数据阈值电压分布。图14D包括步骤854的一种示例实现方式。图15C至图15D包括步骤854的另一示例实现方式。图16C至图16D包括步骤854的又一示例实现方式。
图14A至图14D描述了根据本技术的一个实施例的针对一组非易失性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的一种示例实现方式。在该实施例中,图14A至图14D的编程处理包括三个阶段。在编程之前,擦除非易失性存储元件,使得连接至公共字线的全部存储器单元都处于擦除阈值电压分布E。如图14A中描绘的编程的第一阶段将存储器单元中的至少子集编程为中间阈值电压分布(例如,如图14A中描绘的IM_1、IM_2和IM_3),并且类似于如图12A中描绘的编程的第一阶段。
在图14A至图14D的编程处理的第二阶段(粗略编程)期间,首先将非易失性存储元件的第一子集编程为高状态数据阈值电压分布,并且在将非易失性存储元件的第一子集编程为高状态数据阈值电压分布之后,随后将非易失性存储元件的第二子集编程为低状态数据阈值电压分布。在一些实施例中,首先将要被编程为数据状态S8至SF的那些存储器单元编程为高状态数据阈值电压分布中的适当分布。例如,如通过图14B以图形的方式描绘的那样,将要被编程为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压Vv9的针对数据状态S8的目标数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压Vv10的针对数据状态S9的目标数据阈值电压分布,将要被编程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压Vv11的针对数据状态SA的目标数据阈值电压分布,将要被编程为数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压Vv12的针对数据状态SB的目标数据阈值电压分布,将要被编程为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压Vv13的针对数据状态SC的目标数据阈值电压分布,将要被编程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压Vv14的针对数据状态SD的目标数据阈值电压分布,将要被编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压Vv15的针对数据状态SE的目标数据阈值电压分布,以及将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压Vv16的针对数据状态SF的目标数据阈值电压分布。
随后,在图14A至图14E的编程处理的第二阶段(粗略编程)中,在编程为针对数据状态S8至SF的高状态数据阈值电压分布之后,将要被编程为数据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布中的适当分布。例如,如通过图14C以图形的方式描绘的那样,将要被编程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_0的针对数据状态S0的数据阈值电压分布,将要被编程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_1的针对数据状态S1的数据阈值电压分布,将要被编程为数据状态S2的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_2的针对数据状态S2的数据阈值电压分布,将要被编程为数据状态S3的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_3的针对数据状态S3的数据阈值电压分布,将要被编程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_4的针对数据状态S4的数据阈值电压分布,将要被编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_5的针对数据状态S5的数据阈值电压分布,将要被编程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_6的针对数据状态S6的数据阈值电压分布,以及将要被编程为数据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_7的针对数据状态S7的数据阈值电压分布。如图14B至图14C中以图形的方式描绘的编程处理的第二阶段示出了图13中的步骤852的一种示例实现方式。
在图14A至图14D的编程处理的第三阶段(精细编程)中,收紧针对低数据状态的数据阈值电压分布而不收紧高状态数据阈值电压分布。例如,如图14D中描绘的那样,收紧针对数据状态S0的数据阈值电压分布以实现具有目标阈值电压Vv1的针对数据状态S0的目标阈值电压分布,收紧针对数据状态S1的数据阈值电压分布以实现具有目标阈值电压Vv2的针对数据状态S1的目标阈值电压分布,收紧针对数据状态S2的数据阈值电压分布以实现具有目标阈值电压Vv3的针对数据状态S2的目标阈值电压分布,收紧针对数据状态S3的数据阈值电压分布以实现具有目标阈值电压Vv4的针对数据状态S3的目标阈值电压分布,收紧针对数据状态S4的数据阈值电压分布以实现具有目标阈值电压Vv5的针对数据状态S4的目标阈值电压分布,收紧针对数据状态S5的数据阈值电压分布以实现具有目标阈值电压Vv6的针对数据状态S5的目标阈值电压分布,收紧针对数据状态S6的数据阈值电压分布以实现具有目标阈值电压Vv7的针对数据状态S6的目标阈值电压分布,以及收紧针对数据状态S7的数据阈值电压分布以实现具有目标阈值电压Vv8的针对数据状态S7的目标阈值电压分布。如图14D中描绘的编程处理的第三阶段示出了图13中的步骤854的一种示例实现方式。
如可以从图14A至图14D看到的那样,在编程为低状态数据阈值电压分布之后不收紧高状态数据阈值电压分布。由于在最后对低数据状态进行编程,所以低数据状态不太可能遭受由高数据状态引起的编程干扰。
图15A至图15D描述了根据本技术的另一实施例的针对一组非易失性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的一种示例实现方式。在该实施例中,图15A至图15D的编程处理包括三个阶段。在进行编程之前,擦除非易失性存储元件,使得连接至公共字线的全部存储器单元都处于擦除阈值电压分布E。如图15A中描绘的编程的第一阶段将存储器单元中的至少子集编程为中间阈值电压分布(例如,如图15A中描绘的IM_1、IM_2、IM_3),并且类似于如图12A中描绘的编程的第一阶段。
在图15A至图15D的编程处理的第二阶段(粗略编程)期间,将非易失性存储元件编程为高状态数据阈值电压分布,而不编程为低状态数据阈值电压分布。在一些实施例中,在编程处理的第二阶段期间,将要被编程为数据状态S8至SF的那些存储器单元编程为高状态数据阈值电压分布中的适当分布。例如,如通过图15B以图形方式描绘的那样,将要被编程为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_8的针对数据状态S8的数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_9的针对数据状态S9的数据阈值电压分布,将要被编程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_A的针对数据状态SA的数据阈值电压分布,将要被编程为数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_B的针对数据状态SB的数据阈值电压分布,将要被编程为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_C的针对数据状态SC的数据阈值电压分布,将要被编程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_D的针对数据状态SD的数据阈值电压分布,将要被编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_E的针对数据状态SE的数据阈值电压分布,以及将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_F的针对数据状态SF的数据阈值电压分布。如图15B中描绘的编程处理的第二阶段示出了图13中的步骤852的一种示例实现方式。
在图15A至图15D的编程处理的第二阶段期间,不对要被编程为数据状态S0至S7的那些存储器单元进行编程。在一些实施例中,要被编程为数据状态S0至S3的那些存储器单元在第二阶段期间保持在擦除阈值电压分布E状态,并且要被编程为数据状态S4至S7的那些存储器单元在第二阶段期间保持处于中间阈值电压分布IM_1。
在图15A至图15D的编程处理的第三阶段(精细编程)中,首先收紧高状态数据阈值电压分布,并且在收紧高状态数据阈值电压分布之后,随后将非易失性存储元件编程为低状态数据阈值电压分布。在一些实施例中,在编程处理的第三阶段期间,首先收紧针对数据状态S8至SF的数据阈值电压分布以实现目标阈值电压分布中的适当分布。例如,如图15C中描绘的那样,收紧针对数据状态S8的数据阈值电压分布以实现具有目标阈值电压Vv9的针对数据状态S8的目标阈值电压分布,收紧针对数据状态S9的数据阈值电压分布以实现具有目标阈值电压Vv10的针对数据状态S9的目标阈值电压分布,收紧针对数据状态SA的数据阈值电压分布以实现具有目标阈值电压Vv11的针对数据状态SA的目标阈值电压分布,收紧针对数据状态SB的数据阈值电压分布以实现具有目标阈值电压Vv12的针对数据状态SB的目标阈值电压分布,收紧针对数据状态SC的数据阈值电压分布以实现具有目标阈值电压Vv13的针对数据状态SC的目标阈值电压分布,收紧针对数据状态SD的数据阈值电压分布以实现具有目标阈值电压Vv14的针对数据状态SD的目标阈值电压分布,收紧针对数据状态SE的数据阈值电压分布以实现具有目标阈值电压Vv15的针对数据状态SE的目标阈值电压分布,以及收紧针对数据状态SF的数据阈值电压分布以实现具有目标阈值电压Vv16的针对数据状态SF的目标阈值电压分布。
随后,在图15A至图15D的编程处理的第三阶段(精细编程)中,在收紧针对数据状态S8至SF的高状态数据阈值电压分布之后,将要被编程为数据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布中的适当分布。例如,如通过图15D以图形的方式描绘的那样,将要被编程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv1的针对数据状态S0的目标数据阈值电压分布,将要被编程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv2的针对数据状态S1的目标数据阈值电压分布,将要被编程为数据状态S2的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv3的针对数据状态S2的目标数据阈值电压分布,将要被编程为数据状态S3的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv4的针对数据状态S3的目标数据阈值电压分布,将要被编程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压Vv5的针对数据状态S4的目标数据阈值电压分布,将要被编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压Vv6的针对数据状态S5的目标数据阈值电压分布,将要被编程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压Vv7的针对数据状态S6的目标数据阈值电压分布,以及将要被编程为数据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压Vv8的针对数据状态S7的目标数据阈值电压分布。如图15C至图5D中描绘的编程处理的第三阶段示出了图13中的步骤854的一种示例实现方式。
如可以从图15A至图15D看到的那样,在编程为低状态数据阈值电压分布之后不收紧高状态数据阈值电压分布。由于在最后对低数据状态进行编程,所以低数据状态不太可能遭受由高数据状态引起的编程干扰。
图16A至图16D描述了根据本技术的另一实施例的针对一组非易失性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的一种示例实现方式。在该实施例中,图16A至图16D的编程处理包括三个阶段。在进行编程之前,擦除非易失性存储元件,使得连接至公共字线的全部存储器单元都处于擦除阈值电压分布E。如图16A中描绘的编程的第一阶段将存储器单元中的至少子集存储器单元编程为中间阈值电压分布(例如,如图16A中描绘的IM_1、IM_2、IM_3),并且类似于如图12A中描绘的编程的第一阶段。
在图16A至图16D的编程处理的第二阶段(粗略编程)期间,将非易失性存储元件编程为高状态数据阈值电压分布和第一组低状态数据阈值电压分布,而不编程为第二组低状态数据阈值电压分布。在一些实施例中,在编程处理的第二阶段期间将要被编程为数据状态S8至SF的那些存储器单元编程为高状态数据阈值电压分布中的适当分布,并且将要被编程为数据状态S2至S7的那些存储器单元编程为第一组低状态数据阈值电压分布中的适当分布。例如,如通过图16B以图形的方式描绘的那样,将要被编程为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_8的针对数据状态S8的数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_9的针对数据状态S9的数据阈值电压分布,将要被编程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_A的针对数据状态SA的数据阈值电压分布,将要被编程为数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为具有目标阈值电压PT_B的针对数据状态SB的数据阈值电压分布,将要被编程为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_C的针对数据状态SC的数据阈值电压分布,将要被编程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_D的针对数据状态SD的数据阈值电压分布,将要被编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_E的针对数据状态SE的数据阈值电压分布,以及将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压PT_F的针对数据状态SF的数据阈值电压分布。
同样如通过图16B以图形的方式描绘的那样,在编程处理的第二阶段期间,将要被编程为数据状态S2的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_2的针对数据状态S2的数据阈值电压分布,将要被编程为数据状态S3的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压PT_3的针对数据状态S3的数据阈值电压分布,将要被编程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_4的针对数据状态S4的数据阈值电压分布,将要被编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_5的针对数据状态S5的数据阈值电压分布,将要被编程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_6的针对数据状态S6的数据阈值电压分布,将要被编程为数据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压PT_7的针对数据状态S7的数据阈值电压分布。如图16B中描绘的编程处理的第二阶段示出了图13中的步骤852的一种示例实现方式。
然而,在图16A至图16D的编程处理的第二阶段期间,不对要被编程为最低数据状态S0至S1的那些存储器单元进行编程,并且因此要被编程为最低数据状态S0至S1的那些存储器单元保持在擦除阈值电压分布E状态。如将在下面讨论的那样,在完成了对全部高数据状态的编程之后,最后对最低数据状态S0至S1(最低数据状态S0和S1经受最多编程干扰)进行编程。
在图16A至图16D的编程处理的第三阶段(精细编程)中,首先收紧高状态数据阈值电压分布,并且在收紧高状态数据阈值电压分布之后,随后收紧第一组低状态数据阈值电压分布。同样,在编程处理的第三阶段期间,在收紧高状态数据阈值电压分布之后,随后将非易失性存储元件编程为第二组低状态数据阈值电压分布。
在一些实施例中,在编程处理的第三阶段期间,首先收紧针对高数据状态S8至SF的数据阈值电压分布以实现针对数据状态S8至SF的目标阈值电压分布中的适当分布。例如,如图16C中描绘的那样,收紧针对数据状态S8的数据阈值电压分布以实现具有目标阈值电压Vv9的针对数据状态S8的目标阈值电压分布,收紧针对数据状态S9的数据阈值电压分布以实现具有目标阈值电压Vv10的针对数据状态S9的目标阈值电压分布,收紧针对数据状态SA的数据阈值电压分布以实现具有目标阈值电压Vv11的针对数据状态SA的目标阈值电压分布,收紧针对数据状态SB的数据阈值电压分布以实现具有目标阈值电压Vv12的针对数据状态SB的目标阈值电压分布,收紧针对数据状态SC的数据阈值电压分布以实现具有目标阈值电压Vv13的针对数据状态SC的目标阈值电压分布,收紧针对数据状态SD的数据阈值电压分布以实现具有目标阈值电压Vv14的针对数据状态SD的目标阈值电压分布,收紧针对数据状态SE的数据阈值电压分布以实现具有目标阈值电压Vv15的针对数据状态SE的目标阈值电压分布,以及收紧针对数据状态SF的数据阈值电压分布以实现具有目标阈值电压Vv16的针对数据状态SF的目标阈值电压分布。
随后,在图16A至图16D的编程处理的第三阶段(精细编程)中,在收紧针对数据状态S8至SF的高状态数据阈值电压分布之后,收紧针对低数据状态S2至S7的数据阈值电压分布。例如,如图16D中描绘的那样,收紧针对数据状态S2的数据阈值电压分布以实现具有目标阈值电压Vv3的针对数据状态S2的目标阈值电压分布,收紧针对数据状态S3的数据阈值电压分布以实现具有目标阈值电压Vv4的针对数据状态S3的目标阈值电压分布,收紧针对数据状态S4的数据阈值电压分布以实现具有目标阈值电压Vv5的针对数据状态S4的目标阈值电压分布,收紧针对数据状态S5的数据阈值电压分布以实现具有目标阈值电压Vv6的针对数据状态S5的目标阈值电压分布,收紧针对数据状态S6的数据阈值电压分布以实现具有目标阈值电压Vv7的针对数据状态S6的目标阈值电压分布,以及收紧针对数据状态S7的数据阈值电压分布以实现具有目标阈值电压Vv8的针对数据状态S7的目标阈值电压分布。
同样,在图16A至图16D的编程处理的第三阶段期间,在收紧针对数据状态S8至SF的高状态数据阈值电压分布之后,随后将要被编程为数据状态S0至S1的那些存储器单元编程为低状态数据阈值电压分布中的适当分布。例如,如通过图16D以图形方式描绘的那样,将要被编程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv1的针对数据状态S0的目标数据阈值电压分布,以及将要被编程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压Vv2的针对数据状态S1的目标数据阈值电压分布。由于两个最低数据状态S0和S1经受最多编程干扰,所以图16A至图16D的编程处理确保在完成了对全部高数据状态的编程之后最后对数据状态S0和S1进行编程。这减少了总的编程干扰。如图16C至图16D中描绘的编程处理的第三阶段示出了图13中的步骤854的一种示例实现方式。
在上述示例实施例中,针对高状态优先编程在数据状态S7与数据状态S8之间划分数据状态S0至SF。在一些实施例中,针对高状态优先编程的对数据状态S0至SF的划分可以移动到其他数据状态。例如,在数据状态S3与数据状态S4之间划分数据状态S0至SF,以使得数据状态S4至SF是针对高状态优先编程的高数据状态。在另一示例中,在数据状态SB与数据状态SC之间划分数据状态S0至SF,以使得数据状态SC至SF是针对高状态优先编程的高数据状态。
一个实施例包括一种将非易失性存储装置编程为一组数据阈值电压分布的方法,该方法包括:针对连接至公共字线的一组非易失性存储元件来执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布;以及在中间阶段之后执行多阶段编程处理的后一阶段,该后一阶段仅收紧数据阈值电压分布中的子集。
一个实施例包括:多个非易失性存储元件;以及与非易失性存储元件通信的一个或多个管理电路,用于将非易失性存储元件编程为一组数据阈值电压分布。为了对非易失性存储元件进行编程,该一个或多个管理电路执行多阶段编程处理,包括:执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布;以及在执行多阶段编程处理的中间阶段之后执行多阶段编程处理的后一阶段以仅收紧数据阈值电压分布中的子集。
一个实施例包括:针对连接至公共字线的一组非易失性存储元件来执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件的阈值电压改变为低状态数据阈值电压分布和高状态数据阈值电压分布;以及在中间阶段之后执行多阶段编程处理的后一阶段,该后一阶段仅收紧低状态数据阈值电压分布而不收紧高状态数据阈值电压分布。
一个实施例包括:执行多阶段编程处理的第一阶段以将非易失性存储元件从擦除分布编程为多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件编程为一组数据阈值电压分布中的多个分布;以及在中间阶段之后,通过首先收紧高状态数据阈值电压分布并且随后收紧低状态数据阈值电压分布来执行多阶段编程处理的后一阶段。
出于说明和描述目的,已呈现了以上详细描述。其不旨在穷尽或限于所公开的确切形式。根据上述教导可进行许多修改和变化。选择所描述的实施例是为了最佳地说明所公开的技术的原理及其实际应用,从而使得本领域的技术人员能够最佳地利用各种实施例中的具有适合于所预期的特定用途的各种修改的技术。范围由本文所附权利要求来限定。
Claims (18)
1.一种用于在将非易失性多态存储元件编程为一组N个数据阈值电压分布时减少编程干扰的发生的方法,N为大于2的自然数,所述方法包括:
针对连接至公共字线的一组非易失性存储元件来执行多阶段编程处理的第一阶段(850)以将所述非易失性存储元件中的至少子集的阈值电压从擦除分布(E)改变为一个或多个中间分布(IM_1、IM_2、IM_3);
执行所述多阶段编程处理的中间阶段(852)以将所述非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为至少高状态数据阈值电压分布;以及
在所述中间阶段之后,执行所述多阶段编程处理的后一阶段(854)以使得仅在高状态阈值分布已达到目标阈值分布之后,才执行对所述数据阈值电压分布中的包括低状态数据阈值电压分布的子集的任意收紧。
2.根据权利要求1所述的方法,其中:
所述执行所述中间阶段包括:首先将所述非易失性存储元件的第一子集编程为所述高状态数据阈值电压分布,随后将所述非易失性存储元件的第二子集编程为所述低状态数据阈值电压分布;并且
所述执行所述多阶段编程处理的后一阶段包括:收紧所述低状态数据阈值电压分布,而不收紧所述高状态数据阈值电压分布。
3.根据权利要求2所述的方法,其中:
在将所述非易失性存储元件的第二子集编程为所述低状态数据阈值电压分布之后,不收紧所述高状态数据阈值电压分布。
4.根据权利要求1所述的方法,其中:
所述执行所述中间阶段包括:将非易失性存储元件编程为所述数据阈值电压分布中的全部分布;并且
所述执行所述多阶段编程处理的后一阶段包括:收紧低状态数据阈值电压分布,而不收紧高状态数据阈值电压。
5.根据权利要求1所述的方法,其中:
所述执行所述中间阶段包括:将非易失性存储元件编程为所述高状态数据阈值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值电压分布;并且
所述执行所述多阶段编程处理的后一阶段包括:收紧所述高状态数据阈值电压分布,并且随后将非易失性存储元件编程为所述低状态数据阈值电压分布。
6.根据权利要求1所述的方法,其中:
所述执行所述中间阶段包括:将非易失性存储元件编程为所述高状态数据阈值电压分布和低状态数据阈值电压分布中的第一组低状态数据阈值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压分布;并且
所述执行所述多阶段编程处理的后一阶段包括:
收紧所述高状态数据阈值电压分布,
在收紧所述高状态数据阈值电压分布之后,收紧所述低状态数据阈值电压分布中的所述第一组低状态数据阈值电压分布,以及
将非易失性存储元件编程为所述低状态数据阈值电压分布中的所述第二组低状态数据阈值电压分布。
7.根据权利要求1所述的方法,其中:
所述执行所述中间阶段包括:将非易失性存储元件编程为所述数据阈值电压分布中的多个分布;并且
所述执行所述多阶段编程处理的后一阶段包括:首先收紧高状态数据阈值电压分布,随后收紧低状态数据阈值电压分布。
8.根据权利要求7所述的方法,其中:
将非易失性存储元件编程为所述数据阈值电压分布中的多个分布包括:将非易失性存储元件编程为所述高状态数据阈值电压分布和所述低状态数据阈值电压分布中的第一组低状态数据阈值电压分布;并且
所述执行所述多阶段编程处理的后一阶段包括:在收紧所述高状态数据阈值电压分布之后,随后将非易失性存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压分布。
9.根据权利要求7所述的方法,其中:
在将非易失性存储元件编程至所述低状态数据阈值电压分布之后,不将所述非易失性存储元件编程至所述高状态数据阈值电压分布,并且不收紧所述高状态数据阈值电压分布。
10.一种非易失性存储系统,包括:
多个非易失性存储元件;以及
与所述非易失性存储元件通信的一个或多个管理电路(240),所述一个或多个管理电路通过执行多阶段编程处理来将所述非易失性存储元件编程为一组数据阈值电压分布,所述多阶段编程处理包括:执行所述多阶段编程处理的第一阶段(850)以将所述非易失性存储元件中的至少子集的阈值电压从擦除分布(E)改变为一个或多个中间分布(IM_1、IM_2、IM_3);执行所述多阶段编程处理的中间阶段(852)以将所述非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为至少高状态数据阈值电压分布(Vv9至VvF);以及在执行所述多阶段编程处理的所述中间阶段之后,执行所述多阶段编程处理的后一阶段(854),以使得仅在高状态阈值分布已达到目标阈值分布之后,执行对所述数据阈值电压分布中的包括低状态数据阈值电压分布的子集的任何收紧。
11.根据权利要求10所述的非易失性存储系统,其中:
所述一个或多个管理电路通过将非易失性存储元件编程为所述数据阈值电压分布中的全部分布来执行所述多阶段编程处理的所述中间阶段;并且
所述一个或多个管理电路通过收紧所述低状态数据阈值电压分布而不收紧所述高状态数据阈值电压分布来执行所述多阶段编程处理的后一阶段。
12.根据权利要求10所述的非易失性存储系统,其中:
所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理的所述中间阶段:首先将所述非易失性存储元件的第一子集编程为所述高状态数据阈值电压分布,随后将所述非易失性存储元件的第二子集编程为所述低状态数据阈值电压分布;并且
所述一个或多个管理电路通过收紧所述低状态数据阈值电压分布而不收紧所述高状态数据阈值电压分布来执行所述多阶段编程处理的后一阶段。
13.根据权利要求12所述的非易失性存储系统,其中:
在将所述非易失性存储元件的第二子集编程为所述低状态数据阈值电压分布之后,所述高状态数据阈值电压分布不被收紧。
14.根据权利要求10所述的非易失性存储系统,其中:
所述一个或多个管理电路通过下述操作来执行所述中间阶段:将非易失性存储元件编程为所述高状态数据阈值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值电压分布;并且
所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理的后一阶段:收紧所述高状态数据阈值电压分布,并且随后将非易失性存储元件编程为所述低状态数据阈值电压分布。
15.根据权利要求10所述的非易失性存储系统,其中:
所述一个或多个管理电路通过下述操作来执行所述中间阶段:将非易失性存储元件编程为所述高状态数据阈值电压分布和所述低状态数据阈值电压分布中的第一组低状态数据阈值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压分布;并且
所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理的后一阶段:首先收紧所述高状态数据阈值电压分布;随后,在收紧所述高状态数据阈值电压分布之后,收紧所述低状态数据阈值电压分布中的第一组低状态数据阈值电压分布并且将非易失性存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压分布。
16.根据权利要求10所述的非易失性存储系统,其中:
所述一个或多个管理电路通过将非易失性存储元件编程为所述数据阈值电压分布中的多个分布来执行所述中间阶段;并且
所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理的后一阶段:首先收紧所述高状态数据阈值电压分布,随后收紧所述低状态数据阈值电压分布中的第一组低状态数据阈值电压分布。
17.根据权利要求16所述的非易失性存储系统,其中:
所述一个或多个管理电路通过下述操作来将非易失性存储元件编程为所述数据阈值电压分布中的多个分布:将非易失性存储元件编程为高状态数据阈值电压分布和所述低状态数据阈值电压分布中的第一组低状态数据阈值电压分布;并且
所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理的后一阶段:在收紧所述高状态数据阈值电压分布之后,随后将非易失性存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压分布。
18.根据权利要求10至17中任一项所述的非易失性存储系统,其中:
所述多个非易失性存储元件为多态NAND闪速存储器设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/546,553 US9053819B2 (en) | 2012-07-11 | 2012-07-11 | Programming method to tighten threshold voltage width with avoiding program disturb |
US13/546,553 | 2012-07-11 | ||
PCT/US2013/049712 WO2014011627A1 (en) | 2012-07-11 | 2013-07-09 | Programming method to tighten threshold voltage width with avoiding program disturb |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105009218A CN105009218A (zh) | 2015-10-28 |
CN105009218B true CN105009218B (zh) | 2018-01-09 |
Family
ID=48874516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380036509.5A Active CN105009218B (zh) | 2012-07-11 | 2013-07-09 | 用于收紧阈值电压宽度以避免编程干扰的编程方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9053819B2 (zh) |
CN (1) | CN105009218B (zh) |
WO (1) | WO2014011627A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102125376B1 (ko) | 2013-07-01 | 2020-06-23 | 삼성전자주식회사 | 저장 장치 및 그것의 쓰기 방법 |
US9595317B2 (en) * | 2015-05-28 | 2017-03-14 | Sandisk Technologies Llc | Multi-state programming for non-volatile memory |
JP6115740B1 (ja) * | 2015-12-17 | 2017-04-19 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
US10229740B2 (en) * | 2016-10-17 | 2019-03-12 | SK Hynix Inc. | Memory system of 3D NAND flash and operating method thereof |
TWI733460B (zh) * | 2020-05-22 | 2021-07-11 | 旺宏電子股份有限公司 | 記憶體裝置的寫入方法及記憶體系統 |
US11145373B1 (en) | 2020-05-22 | 2021-10-12 | Macronix International Co., Ltd. | Method for programming flash memory device and flash memory system |
US12020747B2 (en) * | 2021-07-20 | 2024-06-25 | Macronix International Co., Ltd. | Non-volatile memory and programming method thereof |
JP2023116846A (ja) * | 2022-02-10 | 2023-08-23 | キオクシア株式会社 | 半導体記憶装置及び方法 |
KR20240006348A (ko) * | 2022-07-06 | 2024-01-15 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이의 동작 방법 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127240A (zh) * | 2001-06-27 | 2008-02-20 | 三因迪斯克公司 | 降低非易失性存储器存储元件间耦合效应的方法 |
CN101461012A (zh) * | 2006-06-06 | 2009-06-17 | 美光科技公司 | 编程非易失性存储器装置 |
CN102203874A (zh) * | 2008-10-24 | 2011-09-28 | 桑迪士克股份有限公司 | 以高分辨率可变初始编程脉冲对非易失性存储器编程 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5555204A (en) | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
JP2001126490A (ja) | 1999-10-25 | 2001-05-11 | Hitachi Ltd | 不揮発性半導体多値記憶装置の書込み方法 |
JP3631463B2 (ja) | 2001-12-27 | 2005-03-23 | 株式会社東芝 | 不揮発性半導体記憶装置 |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US7046568B2 (en) | 2002-09-24 | 2006-05-16 | Sandisk Corporation | Memory sensing circuit and method for low voltage operation |
US7196931B2 (en) | 2002-09-24 | 2007-03-27 | Sandisk Corporation | Non-volatile memory and method with reduced source line bias errors |
US7327619B2 (en) | 2002-09-24 | 2008-02-05 | Sandisk Corporation | Reference sense amplifier for non-volatile memory |
US7073103B2 (en) | 2002-12-05 | 2006-07-04 | Sandisk Corporation | Smart verify for multi-state memories |
US6859397B2 (en) | 2003-03-05 | 2005-02-22 | Sandisk Corporation | Source side self boosting technique for non-volatile memory |
US7237074B2 (en) | 2003-06-13 | 2007-06-26 | Sandisk Corporation | Tracking cells for a memory system |
US6917542B2 (en) | 2003-07-29 | 2005-07-12 | Sandisk Corporation | Detecting over programmed memory |
JP4170952B2 (ja) | 2004-01-30 | 2008-10-22 | 株式会社東芝 | 半導体記憶装置 |
US7092290B2 (en) | 2004-11-16 | 2006-08-15 | Sandisk Corporation | High speed programming system with reduced over programming |
US20060140007A1 (en) | 2004-12-29 | 2006-06-29 | Raul-Adrian Cernea | Non-volatile memory and method with shared processing for an aggregate of read/write circuits |
US7196928B2 (en) | 2005-04-05 | 2007-03-27 | Sandisk Corporation | Compensating for coupling during read operations of non-volatile memory |
US20070086244A1 (en) | 2005-10-17 | 2007-04-19 | Msystems Ltd. | Data restoration in case of page-programming failure |
US7301817B2 (en) | 2005-10-27 | 2007-11-27 | Sandisk Corporation | Method for programming of multi-state non-volatile memory using smart verify |
US7310255B2 (en) | 2005-12-29 | 2007-12-18 | Sandisk Corporation | Non-volatile memory with improved program-verify operations |
US7224614B1 (en) | 2005-12-29 | 2007-05-29 | Sandisk Corporation | Methods for improved program-verify operations in non-volatile memories |
US8059456B2 (en) | 2006-11-07 | 2011-11-15 | Sandisk Il Ltd. | Programming a NAND flash memory with reduced program disturb |
US7545681B2 (en) | 2006-11-27 | 2009-06-09 | Sandisk Corporation | Segmented bitscan for verification of programming |
US7564711B2 (en) | 2007-02-20 | 2009-07-21 | Sandisk Corporation | Multiple pass write sequence for non-volatile storage |
US7688638B2 (en) | 2007-12-07 | 2010-03-30 | Sandisk Corporation | Faster programming of multi-level non-volatile storage through reduced verify operations |
US8274838B2 (en) * | 2010-07-19 | 2012-09-25 | Sandisk Technologies Inc. | Programming non-volatile memory with bit line voltage step up |
-
2012
- 2012-07-11 US US13/546,553 patent/US9053819B2/en active Active
-
2013
- 2013-07-09 WO PCT/US2013/049712 patent/WO2014011627A1/en active Application Filing
- 2013-07-09 CN CN201380036509.5A patent/CN105009218B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127240A (zh) * | 2001-06-27 | 2008-02-20 | 三因迪斯克公司 | 降低非易失性存储器存储元件间耦合效应的方法 |
CN101461012A (zh) * | 2006-06-06 | 2009-06-17 | 美光科技公司 | 编程非易失性存储器装置 |
CN102203874A (zh) * | 2008-10-24 | 2011-09-28 | 桑迪士克股份有限公司 | 以高分辨率可变初始编程脉冲对非易失性存储器编程 |
Also Published As
Publication number | Publication date |
---|---|
WO2014011627A1 (en) | 2014-01-16 |
US20140016415A1 (en) | 2014-01-16 |
CN105009218A (zh) | 2015-10-28 |
US9053819B2 (en) | 2015-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102906820B (zh) | 用同步耦合编程非易失性存储器 | |
CN105009218B (zh) | 用于收紧阈值电压宽度以避免编程干扰的编程方法 | |
KR101502104B1 (ko) | 프로그래밍 동안에 간섭의 영향을 감소시키는 방법 | |
CN106688042B (zh) | 用于数据刷新的部分块擦除 | |
CN102099867B (zh) | 非易失性存储器的擦除-验证处理 | |
CN102160118B (zh) | 非易失性存储器阵列的最后字线的数据保持的改进 | |
KR101736414B1 (ko) | 다른 메모리 셀들로부터의 영향을 감소시키는 것을 포함하는 비휘발성 저장 소자의 프로그래밍 | |
EP2332146B1 (en) | Data state-based temperature compensation during sensing in non-volatile memory | |
CN102203874B (zh) | 以高分辨率可变初始编程脉冲对非易失性存储器编程 | |
CN103765519B (zh) | 用于非易失性存储的读取通过电压的智能移位 | |
CN102203878B (zh) | 用于改进升压箝位的对位线编程 | |
TWI494933B (zh) | 藉由偵測自然臨限電壓分佈以預測記憶體中之程式干擾 | |
KR101688603B1 (ko) | 비휘발성 저장 소자에 대한 프로그래밍 완료의 검출 | |
CN102005244B (zh) | 非易失性存储的可变编程 | |
EP2345038B1 (en) | Multi-pass programming for memory using word line coupling | |
KR101904581B1 (ko) | 고장난 워드 라인 스크린 및 데이터 복원을 갖는 비휘발성 저장장치 | |
US8363471B2 (en) | Nonvolatile memory device and method of programming the same | |
CN107112047A (zh) | 用于在非易失性存储器中区块编程的部分区块擦除 | |
WO2014137651A1 (en) | Non-volatile storage with process that reduces read disturb on end wordlines | |
WO2013028721A1 (en) | Read compensation for partially programmed blocks of non-volatile storage | |
CN101779250B (zh) | 编程脉冲持续期的智能控制 | |
CN101802925B (zh) | 控制门线架构 | |
TW201324513A (zh) | 在非揮發性儲存器之程式化期間之基板偏壓 | |
CN114550786A (zh) | 使用单脉冲智能校验的存储器设备和操作方法 | |
JP2012203945A (ja) | 半導体記憶装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American Texas Applicant after: DELPHI INT OPERATIONS LUX SRL Applicant after: Toshiba Corp Address before: American Texas Applicant before: Sandisk Technologies, Inc Applicant before: Toshiba Corp |
|
COR | Change of bibliographic data | ||
GR01 | Patent grant | ||
GR01 | Patent grant |