具有快速位检测及验证跳过的对非易失性存储器的编程的制作方法

文档序号:6770738阅读:150来源:国知局
专利名称:具有快速位检测及验证跳过的对非易失性存储器的编程的制作方法
技术领域
本发明涉及非易失性存储器技术。
背景技术
半导体存储器设备已经变得更普遍地用于各种电子设备中。例如,将非易失性半导体存储器用于蜂窝电话、数码相机、个人数字助理、移动计算设备、非移动计算设备以及其它设备中。电可擦除可编程只读存储器(EEPROM)及闪速存储器属于最流行的非易失性半导体存储器。EEPROM和闪速存储器都使用位于半导体衬底中的沟道区上方并与该沟道区绝缘的浮置栅极。该浮置栅极位于源区和漏区之间。在浮置栅极上设置控制栅极并且控制栅极与浮置栅极绝缘。晶体管的阈值电压由浮置栅极上保留的电荷量来控制。也就是说,在晶 体管导通以允许在晶体管的源极和漏极之间传导之前必须施加给控制栅极的最小电压量是由浮置栅极上电荷的水平来控制的。当对EEPROM或闪速存储器设备编程时,给控制栅极施加典型的编程电压并将位线接地。来自沟道的电子被注入到浮置栅极中。当电子在浮置栅极中积聚时,浮置栅极变为带负电并且存储器单元的阈值电压升高,使得存储器单元处于已编程状态。关于编程的更多信息可在名称为“Source Side Self Boosting Technique For Non-Volatile Memeory的第 6,859,397 美国专利以及名称为“Detecting Over Programmed Memory”第 6,917,542美国专利中找到,通过引用将这两篇专利的全部内容并入本文。一些EEPROM或闪速存储器设备具有用于存储两种范围的电荷的浮置栅极,因此,存储器单元能够在两个状态(对应数据“I”和数据“0”的已擦除状态和已编程状态)之间编程/擦除。这样的设备被称为二进制或两状态设备。多状态闪速存储器单元通过识别多个不同的允许阈值电压范围而实现。每个不同的阈值电压范围与数据位集合的预定值对应。被编程到存储器单元中的数据与存储器单元的阈值电压范围之间的特定关系取决于存储器单元采用的数据编码方案。例如,第6,222,762美国专利及公开号是2004/0255090的美国专利申请描述了用于多状态闪速存储器单元的各种数据编码方案,通过引用将这两篇文件的全部内容并入本文。在一些实施例中,施加给控制栅极的编程电压包括一连串脉冲,其幅度在每个连续脉冲以预定步长(例如,0. 2v、0. 3v、0. 4v或其它)增加。在脉冲之间,存储器系统将验证各个存储器单元是否已经达到它们各自的目标阈值电压范围。那些已经达到它们的目标阈值电压范围的存储器单元将被锁闭(例如,通过将位线电压升高至Vdd)而不再编程。当所有存储器单元都已经达到它们的目标阈值电压范围时,编程结束。对于多状态非易失性存储,一些系统将在编程脉冲之间对正被编程到每个允许阈值电压范围的存储器单元进行验证。允许的阈值电压范围越多,执行验证的时间越长。较长的验证操作使编程过程变慢。


图I是NAND串的俯视图。图2是NAND串的等效电路图。图3是非易失性存储器系统的框图。图4是示出感测块的一个实施例的框图。图5A是示出存储器阵列的一个实施例的框图。图5B示出一页数据。
图6A示出阈值电压分布的示例性集合并描述对非易失性存储器编程的过程。图6B示出三个编程脉冲以及在编程脉冲之间施加的验证脉冲。图7A至图7E表示各种阈值电压分布并描述对非易失性存储器编程的过程。图8A、图8B和图8C示出粗略/精细编程方案的一个实施例。图9A、图9B和图9C示出粗略/精细编程方案的一个实施例。图9是示出在一个实施例中对非易失性存储器编程的顺序的表格。图10是描述操作非易失性存储器的过程的一个实施例的流程图。图11是描述对非易失性存储器编程的过程的一个实施例的流程图。图12A是描述在编程期间验证非易失性存储器的过程的一个实施例的流程图。图12B示出三个编程脉冲以及在编程脉冲之间施加的验证脉冲。图13是描述在编程期间验证非易失性存储器的过程的一个实施例的流程图。图14是描述在编程期间验证非易失性存储器的过程的一个实施例的流程图。图15A是描述在编程期间验证非易失性存储器的过程的一个实施例的流程图。图15B示出编程脉冲以及在编程脉冲之间施加的验证脉冲。图16A是描述对非易失性存储器编程的过程的一个实施例的流程图。图16B示出编程脉冲以及在编程脉冲之间施加的验证脉冲。
具体实施例方式对非易失性存储元件集合进行编程处理以存储数据。在编程过程期间,执行一个或多个验证操作以确定非易失性存储元件是否已经达到它们的目标。对正被编程到一个或多个目标的第一集合的非易失性存储元件进行验证,以确定它们是否已经达到它们的目标,如果它们已经达到它们的目标,则被锁闭而不再编程。对正被编程到一个或多个目标的第二集合的非易失性存储元件进行测试,以确定快速编程位的数目。当用于特定目标的快速位的数目大于阈值时,则对正被编程到特定目标的非易失性存储元件停止编程。可实现本文描述的技术的非易失性存储系统的一个示例是使用NAND结构的闪速存储器系统,其包括布置夹在两个选择栅极之间的多个串联的晶体管。串联的晶体管及选择栅极被称为NAND串。图I是表示一个NAND串的俯视图,图2是其等效电路。图I和图2描述的NAND串包括夹在选择栅极120 (漏极侧的)与选择栅极122 (源极侧的)之间的四个串联的晶体管100、102、104和106。选择栅极120将NAND串经过位线触头126连接到位线。选择栅极122将NAND串连接到源极线128。通过向选择线SGD施加合适的电压而对选择栅极120进行控制。通过向选择线SGS施加合适的电压而对选择栅极122进行控制。晶体管100、102、104和106中的每一个都具有控制栅极和浮置栅极。例如,晶体管100具有控制栅极IOOCG和浮置栅极100FG。晶体管102包括控制栅极102CG和浮置栅极102FG。晶体管104包括控制栅极104CG和浮置栅极104FG。晶体管106包括控制栅极106CG和浮置栅极106FG。控制栅极100CG连接到字线WL3,控制栅极102CG连接到字线WL2,控制栅极104CG连接到字线WLl,控制栅极106CG连接到字线WLO。应注意,尽管图I和图2在NAND串中示出了四个存储器单元,但使用四个存储器单元仅作为示例而提供。NAND串可具有少于四个存储器单元或多于四个存储器单元。例如,一些NAND串将包括8个存储器单元、16个存储器单元、32个存储器单元、64个存储器单元、128个存储器单元等。本文讨论的内容并不限于NAND串中任何特定数目的存储器单元。一个实施例使用具有66个存储器单元的NAND串,其中使用64个存储器单元存储数据,并且两个存储器单元由于它们不存储数据而被称为伪存储器单元。使用NAND结构的闪速存储器系统的典型结构将包括数个NAND串。每个NAND串通过由选择线SGS控制的其源极选择栅极连接至共源极线并且通过由选择线SGD控制的其 漏极选择栅极连接至其相关位线。每个位线以及经由位线触头连接至该位线的相应的NAND串包括数列存储器单元阵列。位线由多个NAND串共享。通常,位线在垂直于字线的方向上在NAND串的顶部上延伸并连接至感测放大器。以下美国专利/专利申请中提供了 NAND类型闪速存储器及它们操作的相关示例第5,570,315号美国专利;第5,774,397号美国专利;第6,046,935号美国专利;第6,456,528号美国专利及公开号为US2003/0002348的美国专利申请,通过弓I用将所有这些文件的全部内容并入本文。除了 NAND闪速存储器,还可使用其它类型的非易失性存储设备以实现本文描述的新技术。例如,TANOS结构(由在硅衬底上的TaN-Al2O3-SiN-SiO2的堆栈层组成),它作为利用捕获氮化层(而不是浮置栅极)中的电荷的基本存储器单元,也能够与本文中描述的技术一起使用。在闪速EEPROM系统中有用的另一类型的存储器单元利用非导电电介质材料代替导电浮置栅极来以非易失性方式存储电荷。这样的单元在1987年3月的IEEE电子设备指南在EDL-8卷第3期第93-95页Chan等人的“A True Single-TransistorOxide-Nitride-Oxide EEPROM Device”文章中有描述。在存储器单元沟道上方,由氧化娃、氮化硅及氧化硅(“0N0”)形成的三层电介质夹在导电控制栅极与半导体衬底的表面之间。通过从单元沟道向氮化物中注入电子而对该单元编程,其中电子被捕获并存储在有限的区域中。然后,该存储的电荷以可检测的方式改变该单元的沟道的一部分的阈值电压。通过向氮化物中注入热空穴而擦除单元。再参见1991年4月的IEEE固态电路杂志26卷第4期第497-501 页的Nozaki 等人的“A I-Mb EEPROM with MONOS Memory Cell for SemiconductorDisk Application”,它描述了处于分裂栅极配置的类似单元,其中掺杂多晶硅栅极在存储器单元沟道的一部分上延伸以形成单独的选择晶体管。在2000年11月的IEEE电子设备指南21卷第11期第543-545页的Eitan等人的“NROM :A Novel Localized Trapping, 2~Bit Nonvolatile Memory Cell”中描述了另一个示例。0N0电介质层延伸跨过在源极扩散和漏极扩散之间的沟道。用于一个数据位的电荷被局限在与漏极相邻的电介质层,并且用于其它数据位的电荷被局限在与源极相邻的电介质层。第5,768, 192号及第6,011, 725号美国专利公开了捕获电介质夹在两个二氧化娃层之间的非易失性存储器单元。通过单独读取电介质内空间上独立的电荷存储区的二进制状态而实现多状态数据存储。也可使用其它类型的非易失性存储器技术。图3示出具有用于对一页存储器单元(例如,NAND多状态闪速存储器)进行并行读取及编程的读/写电路的存储器设备210。存储器设备210可包括一个或多个存储器管芯或芯片212。存储器管芯212包括存储器单元的阵列200 ( 二维的或三维的)、控制电路220及读/写电路230A和230B。在一个实施例中,在阵列的相对侧,通过各种外围电路以对称方式实施对存储器阵列200的访问,使得每侧的访问线和电路的密度减小一半。读/写电路230A和230B包括允许一页存储器单元被并行读取或编程的多个感测块300。存储器阵列200可经由行解码器240A和240B通过字线并经由列解码器242A和242B通过位线来寻址。在典型的实施例中,控制器244作为一个或多个存储器管芯212而包括在相同的存储器设备210 (例如,移动存储卡或包)中。指令和数据经由线232在主机和控制器244之间传送并经由线234在控制器和一个或多个存储器管芯212之间传送。控制电路220与读/写电路230A和230B配合,以对存储器阵列200执行存储器操作。控制电路220包括状态机222、片上地址解码器224和功率控制模块226。状态机222提供存储器操作的芯片级控制。片上地址解码器224在主机或存储器控制器使用的地址与 解码器240A、240B、242A及242B使用的硬件地址之间提供地址接口。功率控制模块226在存储器操作期间对施加给字线和位线的功率和电压进行控制。在一个实施例中,功率控制模块226包括一个或多个电荷泵,该电荷泵能够产生大于电源电压的电压。控制电路220、功率控制226、解码器224、状态机222、解码器240A/B及242A/B、读/写电路230A/B以及控制器244,一起或单独地可称为一个或多个管理电路。图4是单个感测块300的框图,该单个感测块300被分割成核芯部分(被称为感测模块480)以及共用部分490。在一个实施例中,针对每个位线具有单独的感测模块480,而针对多个感测模块480的集合具有一个共用部分490。在一个示例中,感测模块将包括一个共用部分490以及八个感测模块480。组中的每个感测模块将经由数据总线472与关联的共用部分通信。更多细节可参考美国专利申请公开2006/0140007,通过引用将其全部内容并入本文。 感测模块480包括感测电路470,该感测电路470确定所连接的位线的传导电流是否高于或低于预定的阈值水平。在一些实施例中,感测模块480包括通常称为感测放大器的电路。感测模块480还包括位线锁存器482,该位线锁存器482用于设置关于所连接的位线的电压状态。例如,在位线锁存器482中锁存的预定状态将导致所连接的位线被拉至指示编程禁止的状态(例如,Vdd)。共用部分490包括处理器492、数据锁存器集合494以及耦合在数据锁存器494与数据总线420之间的I/O接口 496。例如,它的功能之一是确定在被感测存储器单元中存储的数据以及将所确定的数据存储在数据锁存器集合中。数据锁存器集合494用于存储在读取操作期间由处理器492确定的数据位。它还用于存储在编程操作期间从数据总线420输入的数据位。所输入的数据位代表将要被编程至存储器中的写入数据。I/O接口 496在数据锁存器494与数据总线420之间提供接口。在读取或感测期间,系统的操作是处于状态机222的控制下的状态机222控制向被寻址到的单元提供不同的控制栅极电压。由于感测模块480步进通过与存储器所支持的各种存储器状态对应的各种预定控制栅极电压(读取参考电压或验证参考电压),感测模块480可在这些电压之一处启动,并且从感测模块480经由总线472向处理器492提供输出。此时,处理器492通过考虑感测模块的启动事件以及经由输入线493来自状态机的关于所施加的控制栅极电压的信息,确定作为结果的存储器状态。然后它为存储器状态计算二进制编码并将作为结果的数据位存储在数据锁存器494中。在核芯部分的另一个实施例中,位线锁存器482行使两个职责既用作用于锁存感测模块480的输出的锁存器,又用作上述的位线锁存器。可预期,一些实现方式将包括多个处理器492。在一个实施例中,每个处理器492将包括输出线(在图4中未示出),使得每个输出线被一起以“线或”布线。在一些实施例中,在连接到“线或”线之前,输出线被反转。这种配置能够在编程验证过程快速确定编程过程何时已经结束,这是因为接收“线或”线的状态机能够确定所有被编程的位何时已经达 到期望的电平。例如,当每个位已经达到它的期望电平时,用于这个位的逻辑零将被发送给“线或”线(或者被反转的数据线)。当所有的位输出数据0 (或者被反转的数据值)时,则状态机知晓终止编程过程。在每个处理器与八个感测模块通信的实施例中,状态机可能(在一些实施例中)需要读取“线或”线八次,或者逻辑被增加至处理器492,从而累计关联位线的结果,使得状态机仅需要读取“线或”线一次。在具有许多感测模块的一些实施例中,这许多感测模块的“线或”线能够组成N个感测模块的集合,然后这些组能够被分组形成二进制树。在编程或验证期间,待编程数据通过数据总线420存储在数据锁存器的集合494中。在状态机的控制下,编程操作包括同时施加给被寻址的存储器单元的控制栅极的一连串的编程电压脉冲(具有增加的幅度),使得存储器单元同时被编程。每个编程脉冲后进行验证过程,以确定存储器单元是否已经被编程到期望状态。处理器492监视与期望存储器状态相关的验证存储器状态。当两个状态一致时,处理器492设置位线锁存器492,使位线被拉至指示编程禁止的状态。即使在存储器单元的控制栅极上出现编程脉冲,与位线耦合的存储器单元也会被禁止进一步编程。在其它实施例中,处理器最初加载位线锁存器482且在验证过程期间感测电路将该位线锁存器482设置为禁止值。数据锁存器堆栈494包含与感测模块对应的一堆数据锁存器。在一个实施例中,每个感测模块480有三个(或者四个或者另一个数目)数据锁存器。在一些实施方式(不是必须的)中,数据锁存器被实施为移位寄存器,使得其中存储的并行数据被转换为用于数据总线420的串行数据,反之亦然。在一个优选的实施例中,与m个存储器单元的读/写块对应的所有数据锁存器能够链接在一起,以形成块移位寄存器,使得数据块能够以串行传送而被输入或输出。特别地,调整读/写模块组,使其数据锁存器的集合中的每一个依次将数据从数据总线移入或移出,就像它们是用于整个读/写块的移位寄存器的一部分那样。关于非易失性存储设备的各种实施例的结构和/或操作的附加信息可在以下文献中找到(1)于2004年3月25日公开的公开号为2004/0057287的美国专利申请^Non-Voltatile Memory And Method With Reduced Sourve Lines Bias Errors,,;(2)于2004年6月10日公开的公开号为2004/0109357的美国专利申请“Non-Volatile MemoryAnd Method with Improved Sensing” ;(3)公开号为 20050169082 的美国专利申请;(4)于 2005 年 4 月 5 日提交、发明人为 Jian Chen、题为“Compensating for Coupling DuringRead Operations of Non-Volatile Memory”、公开号为 2006/0221693 的美国专利申请;及(5)于2005年12月28日提交、发明人为Siu Lung Chan和Raul-Adrian Cernea、题为“Reference Sense Amplifier For Non-Volatile Memory,,、公开号为 2006/0158947 的美国专利申请。通过引用将直接在上面列出的所有五个专利文件的全部内容并入本文。图5A示出存储器单元阵列200的示例性结构。在一个实施例中,存储器单元阵列被划分为较多数量的存储器单元块。如闪速EEPROM系统中常见的,块是擦除的单位。也就是,每个块包含可被一起擦除的最小数目的存储器单元。作为一个示例,在图5A中示出了被分割成1024个块的NAND闪速EEPR0M。然而,
可使用比1024个块更多或更少的块。在这个示例中,在每个块中存在与位线BL0、BL1......
BL69623对应的69624个列。在一个实施例中,块的所有位线在读取和编程操作期间能够被同时选择。沿着共用字线并被连接至任何位线的存储器单元能够在同一时间被编程(读 取)。在另一个实施例中,位线被划分为偶数位线和奇数位线。在奇/偶位线结构中,沿着共用字线并被连接至奇数位线的存储器单元在一个时间被编程,而沿着共用字线并被连接至偶数位线的存储器单元在另一个时间被编程。图5A表示四个存储器单元串联连接以形成NAND串。尽管示出四个单元包括在每个NAND串中,但是可使用比四个更多或更少的单元(例如,16、32、64、128或其它数量的存储器单元能够用在NAND串上)。NAND串的一个端子经由漏极选择栅极(连接至选择栅极漏极线S⑶的漏极选择栅极)连接至对应的位线,且另一个端子经由源极选择栅极(连接至选择栅极源极线SGS的源极选择栅极)连接至源极线。通常,每个块被划分为数个页。页是编程的单位。通常,一个或多个页的数据被存储在一行存储器单元中。页能够存储一个或多个扇区。扇区包括用户数据及开销数据。开销数据通常包括已经从扇区的用户数据计算得到的纠错码(ECC)。当正将数据编程至阵列时,控制器计算ECC,并且当正从阵列读出数据时,还检验ECC。在一些实施例中,状态机、控制器或者其它部件能够计算并检验ECC。在一些可替选方案中,ECC和/或其它开销数据被存储在与用户数据所属的页不同的页中,或者甚至被存储在与用户数据所属的块不同的块中。对应于磁盘驱动器中扇区的大小,用户数据的扇区通常是512字节。较大数目的页(例如从8页到32、64、128或者更多页的任何数目的页)形成块。在一个实施例中,块的每个字线与一个页关联。在另一个实施例中,块的每个字线与3个页关联。在其它实施例中,字线能够与其它数量的页关联。图5B示出用于页的数据。取决于页的大小,页包含许多扇区。每个扇区包括用户数据、纠错码(ECC)及头信息。在使用多状态存储器单元的一些存储器系统中,存储器单元中的每位数据处于不同的页中。例如,如果存储器单元的阵列在每个存储器单元存储三位数据(八个状态或电平的数据),则每个存储器单元在三个页中存储数据,其中三位数据中的每一位处于不同页中。因此,在该示例的块内,每个字线与三个页或三个页的整数关联。其它布置也是可能的。在大规模数据存储设备、存储系统以及数据通信系统中使用纠错码(ECC)是众所周知的。在该技术中非常重要的是,纠错码涉及由被编码的净荷(或者原始数据)数据位确定或计算的附加位(通常称为校验位、代码位、检验和位数、ECC位等)的存储或通信。例如,纠错码数据在存储器资源中的存储涉及使用被选代码,对一个或多个码字编码,从而包括实际数据以及附加代码位。恢复存储的数据涉及根据与对存储的码字进行编码所使用的相同的代码,对存储的码字进行解码。由于代码位“重复指示”码字的实际数据部分,因此一些数量的错误位能够被容忍,而在解码之后不会出现明显的实际数据的损失。许多ECC编码方案在本领域中是众所周知的。由于这样的编码方案能够对制造生产及设备可靠性提供相当大的影响,这些传统的纠错码在包括闪速(及其它非易失性)存储器的大型存储器中特别有用,从而使具有较少数量的非可编程的或者有缺陷的单元的设备是可用的。当然,在提供附加存储器单元以存储代码位(即,编码“率”)的生产节约及费用之间存在权衡。用于闪速存储器设备的一些ECC代码趋于具有比在数据通信应用(其可具有低至1/2的编码率)中使用的代码更高的编码率(即,代码位到数据位的较低的比率)。由于在一些存储器单元中的制造变化、由于一些单元预先被擦除到比其它单元更低的阈值电压、由于在页内对单元的不均衡消耗或者其它原因,这些存储器单元比其它存储器单元被编程或擦除得更慢。当然,由于缺陷或其它原因,一些单元无论如何也不能被编程或擦除。此外,一些存储器单元编程迅速且可能被过度编程,这也可能导致错误。如上面 提到的,纠错码提供容忍一些数量的错误单元的能力,而仍保持存储器是可用的。在一些应用中,通过重复施加编程脉冲对数据页进行编程,直至在该页上的所有存储器单元验证为期望的编程状态。在一些实施方式中,当还未完全被编程或擦除的错误存储器单元的数量小于可纠正的位的数量时,通过终止编程或擦除脉冲的序列而节省编程或擦除时间。通常以逐扇区为基础执行纠错。因此,每个扇区将具有它自己的ECC代码集合。在一个实施例中,由于扇区是来自主机系统的数据或向主机系统传送的数据的期望单位,因此纠错是方便且有用的。适当的,在成功编程过程(带验证)的结尾,存储器单元的阈值电压应该在用于被编程的存储器单元的阈值电压的一个或多个分布之内,或者在用于被擦除存储器单元的阈值电压的分布之内。图6A示出当每个存储器单元存储三位数据时用于存储器单元阵列的示例性阈值电压分布。然而,其它实施例可以按每个存储器单元使用比三位数据更多或更少的数据(例如,每个存储器单元三位数据)。在图6A的示例中,每个存储器单元存储三位数据;因此,存在八个有效的阈值电压分布,也称作数据状态S0、S1、S2、S3、S4、S5、S6和S7。在一个实施例中,数据状态SO在0伏特以下而数据状态S1-S7在0伏特以上。在其它实施例中,所有八个数据状态都在0伏特以上,或者能够实施其它布置。在一个实施例中,用于SO的阈值电压分布比用于S1-S7的阈值电压分布宽。在一个实施例中,SO用于被擦除存储器单元。数据从SO被编程到S1-S7。对于存储在存储器单元中的三个数据位,每个数据状态对应唯一的值。在一个实施例中,SO = 111,SI = 110,S2 = 101,S3 = 100,S4 = 011,S5 = 010,S6 = 001 及 S7 =000。还可使用数据到状态S0-S7的其它映射。被编程到存储器单元中的数据与单元的阈值电压水平之间的特定关系取决于单元所采用的数据编码方案。例如,第6,222,762号美国专利以及于2003年6月13日提交的公开号为2004/0255090的美国专利申请“TrackingCells For A Memory System”,描述了用于多状态闪速存储器单元的各种数据编码方案,通过引用将这两篇专利文件的全部内容并入本文。在一个实施例中,使用格雷码(Gray Code)分配方案为阈值电压范围分配数据值,使得如果浮置栅极的阈值电压错误地移位至其邻近阈值电压分布,则仅一位会受到影响。然而,在其它实施例中,不使用格雷码。在一个实施例中,存储在存储器单元中的所有数据位都被存储在相同的逻辑页中。在其它实施例中,存储在存储器单元中的每个数据位与不同的逻辑页对应。因此,存储三个数据位的存储器单元将包括在第一页的数据、在第二页的数据以及在第三页的数据。在一些实施例中,与相同字线连接的所有存储器单元将在相同的三个数据页中存储数据。在一些实施例中,连接至字线的存储器单元能够组成不同的页集合(例如,通过奇偶位线或者通过其它布置)。在一些设备中,存储器单元将被擦除至状态S0。从状态S0,存储器单元能够被编程至状态S1-S7的任何状态。在一个实施例中,作为全序列编程而已知的,存储器单元能够从被擦除状态SO被直接编程至被编程状态S1-S7的任何状态。例如,待编程的存储器单元总体可首先被擦除,使得总体的所有存储器单元处于被擦除状态S0。一些存储器单元从状态SO被编程至状态SI,而其它存储器单元从状态SO被编程至状态S2、状态S3、状态S4、状态S5、状态S6和状态S7。全序列编程由图6A的七个弯曲箭头图示示出。 图6A表示验证目标电平Vvl、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7的集合。这些验证电平用作在编程过程期间的比较电平。例如,当将存储器单元编程至状态SI时,系统将检验存储器单元的阈值电压是否已经达到Vvl。如果存储器单元的阈值电压还没有达到Vvl,则将继续对这个存储器单元编程,直至其阈值电压大于或等于Vvl。如果存储器单元的阈值电压已经达到Vvl,则对该存储器单元停止编程。验证目标电平Vv2用于正被编程至状态S2的存储器单元。验证目标电平Vv3用于正被编程至状态S3的存储器单元。验证目标电平Vv4用于正被编程至状态S4的存储器单元。验证目标电平Vv5用于正被编程至状态S5的存储器单元。验证目标电平Vv6用于正被编程至状态S6的存储器单元。验证目标电平Vv7用于正被编程至状态S7的存储器单元。图6B还表示读取比较电平Vrl、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7的集合。这些读取的比较电平用作在读取过程期间的比较电平。通过测试存储器单元是否响应正单独施加给存储器单元的控制栅极的读取比较电平Vrl、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7而导通或保持断开,系统能够确定存储器单元正为哪个状态存储数据。通常,在验证操作及读取操作期间,被选字线连接至电压,其电平被指定用于每个读取操作(例如,参见图6A的读取比较电平Vrl、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7)或验证操作(例如,参见图6A的验证目标电平VvU Vv2、Vv3、Vv4、Vv5、Vv6和Vv7),以确定所关注的存储器单元的阈值电压是否已经达到该电平。在施加字线电压之后,测量存储器单元的传导电流,以确定存储器单元是否响应施加给字线的电压而导通。如果传导电流测量为比某个值大,则假设存储器单元导通且施加给字线的电压大于存储器单元的阈值电压。如果传导电流测量为不大于某个值,则假设存储器单元未导通且施加给字线的电压不大于存储器单元的阈值电压。在读取或验证操作期间测量存储器单元的传导电流有许多方法。在一个示例中,通过存储器单元的传导电流对感测放大器中的指定电容器放电或充电的速率而对其进行测量。在另一个示例中,选择的存储器单元的传导电流允许(或者不允许)包括存储器单元的NAND串对对应的位线进行放电。在一段时间后,测量位线上的电压,以查看它是否已经被放电。注意到,本文所描述的技术可与本领域已知的用于验证/读取的不同方法一起使用。关于验证/读取的更多信息可在下面的专利文件中找到,通过引用将这些专利文件的全部内容并入本文(I)公开号为2004/0057287的美国专利申请;(2)公开号为2004/0109357的美国专利申请;(3)公开号为2005/0169082的美国专利申请;(4)公开号为2006/0221692的美国专利申请。根据本领域已知的技术执行上述的读取和验证操作。因此,本领域技术人员可对所解释的许多细节进行变型。也可使用本领域已知的其它读取和验证技术。在一些实施例中,施加给控制栅极的编程电压包括一连串的脉冲,其幅度在每个连续脉冲以预定步长(例如,0. 2v、0. 3v、0. 4v或其它)增加。在脉冲之间,一些存储器系统将验证各存储器单元是否已经达到它们各自的目标阈值电压范围。例如,图6B表示施加给连接至共用字线的多个存储器单元的控制栅极的信号的一部分。图6B表示编程脉冲526、528和530,在编程脉冲之间有验证脉冲集合。当在一个实施例中执行全序列编程时,在编程脉冲之间的验证过程将测试阈值电压分布(数据状态)S1-S7中的每一个。因此,图6B表示具有与验证目标电平Vr I、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7对应的幅度的七个验证脉冲。在一些实施例中,因为验证操作是非必须的或者是多余的,因此可跳过一个或多个验证操作(因此可跳过一个或多个验证脉冲)。例如,如果根据图6A正被编程的存储器单元都没 有达到Vv2,则没有理由在Vv7处验证。关于跳过用于一个或多个状态的验证的明智的验证方案的更多信息可在下面的专利文件中找到美国专利7,073,103、美国专利7,224,614、美国专利7, 310,255、美国专利7,301,817、美国专利申请2004/0109362和美国专利申请2009/0147573,通过引用将这些专利文件的全部内容并入本文。图6A表示包括一个阶段的编程过程,在该阶段期间连接至相同字线的所有存储器单元被同时编程。图7示出多阶段编程方式。在该实施例中,编程过程包括三个阶段。在编程之前,存储器单元被擦除,使得连接至共用字线的所有存储器单元处于被擦除阈值电压分布E,如图7A所示。在编程的第一阶段期间,目标是数据状态S4、S5、S6或S7的那些存储器单元(由于数据要存储在这些存储器单元)被编程至中间状态IM。那些存储器单元目标为数据状态S0、SI、S2或S3,并且保持在被擦除阈值电压分布E中。第一阶段由图7B图示示出。正被编程至中间状态頂的存储器单元被编程至目标阈值电压VvIM。在图7A至图7E的编程过程的第二阶段,处于被擦除阈值电压分布E中的那些存储器单元被编程至它们的目标数据状态。例如,待被编程至数据状态S3的那些存储器单元从被擦除阈值电压分布E被编程至数据状态S3,待被编程至数据状态S2的那些存储器单元从被擦除阈值电压分布E被编程至数据状态S2,待被编程至数据状态SI的那些存储器单元从被擦除阈值电压分布E被编程至数据状态SI,并且待处于数据状态SO的那些存储器单元在编程过程的第二阶段未被编程。因此,被擦除阈值电压分布E变成数据状态S0。而且,在第二阶段期间,存储器单元从中间状态IM被编程至不同的数据状态S4-S7。例如,待被编程至数据状态S7的那些存储器单元从中间状态頂被编程至数据状态S7,目标是数据状态S6的那些存储器单元从中间状态頂被编程至数据状态S6,待被编程至数据状态S5的两个存储器单元从中间状态頂被编程至数据状态S5,且待被编程至数据状态S4的那些存储器单元从中间状态IM被编程至数据状态S4。该编程的第二阶段在图7C中示出。如在图7C中可见,在编程的第二阶段的结尾,数据状态S1-S7与邻近数据状态重叠。例如,数据状态SI与数据状态S2重叠,数据状态S2与数据状态S I和S3重叠,数据状态S3与数据状态S2和S4重叠,数据状态S4与数据状态S3和S5重叠,数据状态S5与数据状态S4和S6重叠,以及数据状态S6与数据状态S5和S7重叠。在一些实施例中,m在编程的第三阶段,数据状态S1-S7的每一个被缩紧,使得它们不再与邻近状态重叠。这由图7D图示示出。编程过程的三个阶段的最终结果在表示数据状态S0-S7的步骤7E示出。在一些实施例中,数据状态SO比数据状态S1-S7宽。在一些实施例中,待被编程至数据状态S4的那些存储器单元在第二阶段期间未被编程,因此,保持在中间状态IM。在第三编程阶段期间,存储器单元从IM被编程至S4。在其它实施例中,指定为其它状态的存储器单元也能够在第二阶段保持在IM或E。在一些编程过程中,可并入粗略/精细编程技术。例如,正被编程至目标状态(例如,Vv2)的存储器单元将首先迅速地被编程至粗略状态(例如,小于一小电压的Vv2),该粗略状态对应于比目标状态稍微小的阈值电压状态。因此,存储器单元将以较慢的方式(而 具有较高精度)被编程至目标状态。图8A-C及图9A-C提供了粗略/精细编程技术的一个示例的更多细节。图8A和图9A示出施加给控制栅极的编程脉冲Vpgm。图8B和图9B示出用于正被编程的存储器单元的位线电压。图8C和图9C示出正被编程的存储器单元的阈值电压。该示例使用如在图中以Vverl和Vver2表示的两个验证电平。最终的目标电平(例如,图6A中的验证电平Vvl、Vv2、Vv3、Vv4、Vv5、Vv6和Vv7)是Vverl。当存储器单元的阈值电压已经达到Vverl时,通过向与存储器单元对应的位线施加禁止电压而禁止对存储器单元进一步编程。例如,位线电压能够升高至Vinhibit(参见图8B及图9B)。在一个实施例中,Vinhibit是Vdd。然而,当存储器单元已经达到接近(但低于)目标值Vverl的阈值电压时,通过通常以0.3v到0. Sv的次序向位线施加某个偏置电压而使随后编程脉冲期间的存储器单元的阈值电压偏移减慢。由于在下一个较少编程脉冲期间减慢了阈值电压偏移的速度,因此最终阈值电压分布能够比其它情况变得更窄。为了实现该方法,使用比Vverl更低的第二验证电平。该第二验证电平以Vver2示出。当存储器单元的阈值电压大于Vver2但仍低于Vverl时,将通过施加位线偏置vs (图9B)而使随后编程脉冲的存储器单元的阈值电压偏移减慢。注意到在该情况下,每个状态需要两个验证操作。每个状态在对应的Vverl需要一个验证操作,并且每个状态在对应的Vver2需要一个验证操作。这可增加对存储器单元编程的总时间。然而,可使用较大AVpgm步长加速过程。图8A、8B和SC表示存储器单元的行为,该存储器单元的阈值电压在一个编程脉冲中移动经过Vver2和Vverl。例如,在图8C中示出阈值电压在t2和t3之间经过Vver2和Vverl0因此,在t3之前,存储器单元处于粗略阶段。在t3之后,存储器单元处于禁止模式。图9A、9B和9C示出进入粗略及精细两个编程阶段的存储器单元。存储器单元的阈值电压在时刻t2和时刻t3之间与Vver2交叉。在t3之前,存储器单元处于粗略阶段。在t3之后,位线电压被升高至Vs ;因此,存储器单元处于精细阶段。在t3和t4之间,存储器单元的阈值电压与Vverl交叉;因此,通过将位线电压值升高到Vinhibit而禁止对存储器单元进一步编程。在一个实施例中,将粗略/精细编程技术用于图7A-7E的多阶段编程过程的第三阶段,但是不用于前两个阶段。在其它实施例中,将粗略/精细编程技术用于所有阶段。粗略/精细编程技术还可用于全序列编程。
图10是描述用于操作非易失性存储系统的过程的流程图。在一个实施例中,图10的过程用于对一块存储器单元进行编程。在图10的过程的一个实施方式中,存储器单元被预编程(步骤550),以保持对存储器单元的均衡消耗。在一个实施例中,存储器单元被编程至最高数据状态、随意模式或者任何其它模式。在一些实施例中,不需要执行预编程。在步骤552中,在编程之前(以块为单位或以其它单位)擦除存储器单元。在一个实施例中,通过将P阱升高至擦除电压(例如,20伏特)足够时间段并将被选块的字线接地,同时将源极和位线浮置,从而擦除存储器单元。在没有被选为要擦除的块中,字线被浮置。由于电容性耦合,未被选字线、位线、选择线以及共源极线也被升高至擦除电压的可观的部分,由此阻止对没有被选为要擦除的块的擦除。在被选为要被擦除的块中,通常通过Fowler-Nordheim隧道机制,随着浮置栅极的电子被发射到衬底侧,强电场被施加给被选存储器单元的隧道氧化层并且被选存储器单元被擦除。随着电子从浮置栅极被传送到P阱区,被选单元的阈值电压降低。能够对整个存储器阵列、各个块或者存储器单元的其它单位执行擦除。在一个实施例中,在对存储器单元进行擦除之后,所有的被擦除存储器单元将处于状态SO。擦除过程的一个实施方式包括向p阱施加几个擦除脉冲以及在擦除脉冲之间验证NAND串是否被正确擦除。 在步骤554,对于被擦除存储器单元(可选地)执行软编程以使被擦除阈值电压的分布变窄。作为擦除过程的结果,一些存储器单元可能处于比所需更深的被擦除状态。软编程能够施加编程脉冲,以将较深的被擦除存储器单元的阈值电压移动至擦除阈值分布(例如,so)。在步骤556中,该块的存储器单元被编程。可响应来自主机的编程请求或者响应内部过程而执行编程。在编程之后,该块的存储器单元可被读取(步骤558)。本领域已知的许多不同的读取过程可用于读取数据。在一些实施例中,读取过程包括使用ECC以纠错。被读取的数据输出给请求该读取操作的主机。可通过状态机、控制器或者其它设备执行ECC过程。图10表示擦除程序循环能够发生许多次而不读取或与读取无关,读取过程能够发生许多次而不编程或与编程无关,并且读取过程能够在编程后任何时间发生。图10的过程能够在状态机的指导下使用上述各种电路执行。在其它实施例中,图10的过程能够在控制器的指导下使用上述各种电路执行。图11是描述执行对连接至共用字线的存储器单元编程至一个或多个目标(例如,数据状态或阈值电压范围)的过程的一个实施例的流程图。图11的过程能够在图11的步骤556期间执行一次或多次。例如,图11的过程能够用于将存储器单元从状态SO直接编程(例如,全序列编程)至状态S1-S7的任何状态。可替选地,图11的过程能够用于执行图7A至图7E的过程的一个或每个阶段。例如,当执行图7A的过程时,图11的过程用于实现第一阶段,该第一阶段包括将一些存储器单元从状态E编程至状态IM。然后,图11的过程能够再用于实现第二阶段,该第二阶段包括将一些存储器单元从状态E编程至状态S1-S3以及从状态頂编程至状态S4-S7。图11的过程能够再用于调整在第三阶段中的状态Sl-S7(见图7D)。图11的过程还能够用于其它多阶段编程过程。典型地,在编程操作期间施加给控制栅极的编程电压是作为一连串的编程脉冲而施加的。在编程脉冲之间,存在执行验证的验证脉冲的集合。在许多实施方式中,编程脉冲的幅度在每个连续的脉冲以预定步长增加。在图11的步骤570中,编程电压(Vpgm)被初始化为开始幅度(例如, 12-16V或其它合适的电平)并且由状态机222保持的编程计数器PC被初始化为I。在步骤572中,编程信号Vpgm的编程脉冲被施加给被选字线(被选择用于编程的字线)。在一个实施例中,正被编程的存储器单元组都连接至相同的字线(被选字线)。未被选字线接收一个或多个升压电压(例如, 9伏特),以执行本领域已知的升压方案。如果存储器单元应该被编程,则对应的位线接地。另一方面,如果存储器单元应该保持在其当前的阈值电压,则对应的位线连接至Vdd以禁止编程。在步骤572中,编程脉冲被同时施加给连接到被选字线的所有存储器单元,使得连接到被选字线的所有存储器单元被同时编程。也就是,它们在相同时间(或者在重叠的时间)被编程。以这种方式,连接到被选字线的所有存储器单元将同时具有它们的阈值电压变化,除非它们已经锁闭而不进行编程。在步骤574中,使用合适的目标电平集合对合适的存储器单元进行验证,以执行一个或多个验证操作。下面关于图12A、图13、图14、图15A和图16A描述了步骤574的更多细节。 在步骤576中,确定所有存储器单元是否已经达到它们的阈值电压。如果是,由于所有被选存储器单元被编程并验证至它们的目标状态,因此编程过程结束并成功。在步骤578中报告状态“通过”。在步骤576中,如果确定并不是所有存储器单元已经达到它们的目标阈值电压,则编程过程继续至步骤580。在步骤580,系统计算还未达到它们各自的目标阈值电压分布的存储器单元的数量。也就是,系统计算验证过程已经失败的单元的数量。该计算可通过状态机、控制器或其它逻辑完成。在一个实施例中,感测块300 (见图3)的每一个将存储它们各个单元的状态(通过/失败)。这些值可使用数字计数器计算。如上所述,许多感测块具有一起被“线或”的输出信号。因此,对一个线的检验能够表示大组单元中没有单元已经验证失败。通过恰当地将线一起组织为“线或”(例如,类似二叉树结构),可使用二分搜索方法确定已经失败的单元的数量。在这样的方式中,如果较少数量的单元失败,则计算快速完成。如果较大数量的单元失败,则计算花费较长时间。更多信息可在美国专利公开2008/0126676中找到,通过引用将该专利文件的全部内容并入本文。在另一个可替选方案中,如果对应的存储器单元已经失败,感测放大器的每一个能够输出模拟电压或者电流,并且可使用模拟电压或电流求和电路计算已经失败的存储器单元的数量。在一个实施例中,存在一个总计数,其反映最后验证步骤已经失败的当前正被编程的存储器单元的总数。在另一个实施例中,为每个数据状态进行单独计数。在步骤582中,确定来自步骤580的计数是否小于或等于预定限制。在一个实施例中,预定限制是能够在该页的存储器单元的读取过程期间被ECC纠正的位的数量。如果失败单元的数量小于或等于预定限制,则编程过程可停止且在步骤578中报告状态“通过”。在这种情况下,足够的存储器单元被正确地编程,使得在读取过程期间未被完全编程的较少的剩余存储器单元能够使用ECC被纠正。在一些实施例中,步骤580将为每个扇区、每个目标数据状态或其它单位计算失败单元的数量,并且这些计数将在步骤582中单独或集体与阈值进行比较。在另一个实施例中,预定限制可以小于在读取过程期间能够通过ECC被纠正的位的数量,从而允许将来的错误。当对少于一页的所有存储器单元的单元进行编程时,或者仅为一个数据状态(或者少于所有状态)比较计数时,则预定限制可以是针对该页的存储器单元在读取过程期间通过ECC能够纠正的位的数量的一部分(按比例分配,或者不按比例分配)。在一些实施例中,限制不是预定的。替代地,它可以基于针对该页已经计算的错误的数量、执行的编程擦除循环的数量、温度或其它标准。如果失败单元的数量不小于预定限制,则编程过程在步骤584继续,并针对编程限制值(PU检验编程计数器PC。编程限制值的一个示例是20 ;然而,其它值也可使用。如果编程计数器PC不小于编程限制值PL,则认为编程过程已经失败且在步骤588中报告失败状态。如果编程计数器PC小于编程限制值PL,则过程在步骤586继续,在此期间编程计数器PC增加I且编程电压Vpgm步进至下一个幅度。例如,下一个脉冲将具有比先前脉冲大一个步长(例如,0. 1-0. 4伏特的步长)的幅度。在步骤586之后,过程循环回至步骤572且另一个编程脉冲被施加给被选字线。图11的步骤574包括为正被编程的存储器单元执行验证过程并且锁闭合适的存 储器单元而不对其进行进一步编程。有各种本领域已知的在编程期间对存储器单元进行验证的方法,这些方法中的许多方法合适。图14A是描述用于在一个实施例的编程过程的第一阶段(例如,见图7B)期间执行验证过程(例如,步骤574)的过程的该实施例的流程图,该实施例包括根据图7A至图7E的方法进行编程。在步骤600中,施加测试,以确定正被编程的不同存储器单元是否具有大于或等于VvIM(见图7B)的阈值电压。那些将保持在阈值电压分布E中的存储器单元将不需要被验证。正被编程至中间阈值电压分布IM的存储器单元通过确定阈值电压是否已经达到VvM而被验证。在一个实施例中,连接至正被编程的存储器单元的控制栅极的字线将在VvIM接收电压并且系统将测试存储器单元是否导通或未导通(导电与否)。在步骤602确定该测试的结果。例如,系统将确定哪些存储器单元响应施加给它们的控制栅极的VvIM而导通或传导电流。在步骤604中,确定(正被编程到状态S4、S5、S6和S7的那些存储器单元的)具有已经达到VvM的阈值电压的那些存储器单元将被锁闭而不能在阶段I进一步编程。如上讨论,锁闭的一个示例包括将位线升高至Vinhibit (例如,VDD)。如适合于特定实施方式,在步骤606中,验证的结果将被报告给状态机或控制器。图12B表示在图11的步骤572的连续迭代施加的采样编程脉冲630、632和634。在每对编程脉冲之间存在单个验证脉冲。对于图14A的过程,验证脉冲的幅度是处于VvIM。由于在连续编程脉冲之间仅执行一个验证操作(例如,在VvM的验证操作),因此验证过程执行得相当快。图13是描述用于执行针对图7A至图7E的三阶段编程过程的第三阶段的存储器单元的验证或锁闭的一个实施例的流程图。也就是,当实现图7D中示出的编程过程时,图13的过程是用于执行步骤574。在这种情况下,正被编程至数据状态SI的存储器单元在电压Vvl (数据状态的最低电压)被验证。正被编程至数据状态S2的存储器单元在Vv2被验证,正被编程至数据状态S3的存储器单元在Vv3被验证,正被编程至数据状态S4的存储器单元在Vv4被验证,正被编程至数据状态S5的存储器单元在Vv5被验证,正被编程至数据状态S6的存储器单元在Vv6被验证,以及正被编程至数据状态S7的存储器单元在Vv7被验证。
在图13的步骤700中,系统将测试存储器单元是否具有大于Vvl的阈值电压。在步骤702中,系统将为正被编程至数据状态SI的每个存储器单元确定测试结果。在步骤704中,具有大于Vvl的阈值电压的正被编程至状态SI的那些存储器单元被锁闭而不被进
一步编程。在步骤706中,系统将测试存储器单元是否具有大于Vv2的阈值电压。在步骤704中,确定步骤706的测试结果。在步骤710中,具有大于Vv2的阈值电压的正被编程至状态S2的那些存储器单元被锁闭而不被进一步编程。在步骤712中,系统将测试存储器单元是否具有大于Vv3的阈值电压。在步骤714中,确定步骤712的测试结果。在步骤716中,具有大于Vv3的阈值电压的正被编程至状态S3的那些存储器单元被锁闭而不被进一步编程。
在步骤718中,系统将测试存储器单元是否具有大于Vv4的阈值电压。在步骤720中,确定步骤718的测试结果。在步骤722中,具有大于Vv4的阈值电压的正被编程至状态S4的那些存储器单元被锁闭而不被进一步编程。在步骤724中,系统将测试存储器单元是否具有大于Vv5的阈值电压。在步骤726中,确定步骤724的测试结果。在步骤728中,具有大于Vv5的阈值电压的正被编程至状态S5的那些存储器单元被锁闭而不被进一步编程。在步骤730中,系统将测试存储器单元是否具有大于Vv6的阈值电压。在步骤732中,确定步骤730的测试结果。在步骤734中,具有大于Vv6的阈值电压的正被编程至状态S6的那些存储器单元被锁闭而不被进一步编程。在步骤736中,系统将测试存储器单元是否具有大于Vv7的阈值电压。在步骤738中,确定步骤736的测试结果。在步骤740中,具有大于Vv7的阈值电压的正被编程至状态S7的那些存储器单元被锁闭而不被进一步编程。按照特定实施方式,在步骤742,图13的验证过程的结果被报告给状态机、控制器或者任何其它处理设备。与图13的过程关联的施加的编程脉冲及验证脉冲的波形与图6B中示出的波形相同。如所见,由于执行七个验证操作而施加七个验证脉冲。由于有很多验证操作要执行,因此编程过程可减慢。这不利于加速编程过程。加速编程过程的一个方案是减少被执行的验证操作的数量。在本文讨论的方案中,对于数据状态第一集合仍执行验证操作。然而,对于数据状态第二集合不执行验证操作。对于数据状态第二集合,不执行验证过程,而系统能够确定每个特定数据状态的快速位的数量。如果快速位的数量大于阈值,则通过锁闭正被编程至该特定数据状态的所有存储器单元而停止对正被编程至该特定数据状态的所有存储器单元的编程。在一个示例性实施方式中,可通过将阈值电压(正被编程至数据状态第二集合的存储器单元的阈值电压)与针对数据状态第一集合的验证目标电平进行比较而对快速位执行测试。该方法无附加操作地执行用于数据状态第二集合。而且,在随后的编程脉冲期间,可执行对存储器单元的数量的计数,该计数对于数据状态第二集合是快速位。图14是描述使用上述段落中描述的用于加速验证过程的技术而用于执行步骤574的验证及锁闭的过程的一个实施例的流程图。在一个示例性实施方式中,针对图7A至图7E的三阶段编程过程的第二过程,图14的过程用于实现图11的步骤574。也就是,当执行图7C的过程时,图14的方法将用于实现步骤574的验证及锁闭过程。注意到,图14的过程还可用于三阶段编程过程的第三阶段的步骤574的验证及锁闭过程。而且,图14的过程可用于与图6A的全序列编程、其它多阶段编程过程以及其它编程过程。在图14的步骤770中,对正被编程至数据状态第一集合的存储器单元进行测试,以查看他们是否已经达到它们各自目标。如上描述,数据状态(例如,S1-S7)被划分为第一集合和第二集合。正被编程至数据状态第一集合的存储器单元将按照如上讨论的被验证。例如,在步骤770中,正被编程至数据状态第一集合的那些存储器单元将被测试,以确定它们阈值电压是否已经达到它们各自的验证目标电平。在一个示·例性实施例中,数据状态第一集合包括数据状态S2、S4、S6和S7,而数据状态第二集合包括数据状态SI、S3和S5。还可使用其它分组。因此,在步骤770中,使用图7C的过程的正被编程至数据状态S2、S4、S6和S7的存储器单元将他们的阈值电压与Vv3’、Vv5’、Vv6’和Vv7’比较,以确定它们是否已经达到它们预期的目标。在步骤772中,基于步骤770的测试已经达到它们预期目标的那些存储器单元将被锁闭而不被进一步编程。对于正被编程至第二集合的一个或多个数据状态的存储器单元,系统将在步骤774中检测正被编程至该数据状态第二集合的每个数据状态的数个快速位。在一个实施例中,将存在一个或多个比较电平用于确定什么是快速位。在步骤774中,正被编程至数据状态第二集合的存储器单元将那个阈值电压与用于确定快速位的一个或多个比较电平比较。在一个示例中,用于确定快速位的比较电平是下一个更高数据状态的验证比较电平。例如,为了确定正被编程至数据状态SI的快速位,系统将测试正被编程至数据状态SI的那些存储器单元的阈值电压是否大于Vvl’。为了确定正被编程至数据状态S3的快速位,系统将测试那些存储器单元的阈值电压是否大于Vv4’。为了测试正被编程至S5存储器单元是快速位,系统将测试那些存储器单元以查看该阈值电压是否大于Vv6’。在其它实施例中,可使用不同比较值以确定位是否是快速位。例如,可使用不同于下一个状态目标验证电平的比较值。通常,使用比用于数据状态的目标验证电平大的比较值。还应注意,针对特定状态X的对快速位的测试不同于针对状态X的验证过程。应注意,可使用其它过程确定位是否是快速位。作为步骤774的一部分,系统将为每个数据状态确定快速位的数量。对于具有多于预定数量的快速位的数据状态第二集合的那些数据状态,在步骤776中对于该特定编程趟次,正被编程至该数据状态的所有存储器单元被锁闭而不被进一步编程。在步骤778中,验证过程的结果被报告给状态机、控制器或其它处理器。再看图7C,它表示各种数据状态如何重叠。与数据状态S2重叠的数据状态SI的部分表示快速位。因此,通过测试哪些存储器单元大于Vv2’,可确定哪些存储器单元是快速位。通过提前特征化阈值电压分布,可对较多数量的存储器单元而进行预测当状态SI的阈值电压分布处于合适的状态时存在多少快速位(例如,有多少位将具有大于Vv2’的阈值电压)。因此,基于设备特征可在步骤776中确定用于比较的预定数量,以在合适时间停止编程。由于数据状态SI正与和数据状态S2 —样的值进行比较,因此仅执行一个验证脉冲以及一个验证操作。当验证时,由此当编程时,这节约了大量的时间。在一个实施例中,数据状态第一集合与数据状态第二集合交错。例如,数据状态第一集合包括数据状态S2、S4和S6,而数据状态第二集合包括数据状态SI、S3和S5。在另一个实施例中,数据状态第一集合包括数据状态S2-S7,而数据状态第二集合仅包括数据状态SI。因此,仅对数据状态SI跳过验证过程。图15A是描述针对图7A-7E编程的第二阶段而执行步骤574的验证及锁闭的过程的一个实施例的流程图,在该示例中,其中,数据状态第二集合仅包括数据状态SI。图15A的过程是图14的过程的一个示例性实施方式。在步骤800中,系统将测试存储器单元是否具有大于Vv2’的阈值电压。在步骤802,系统将为正被编程至数据状态S2的那些存储器单元确定测试结果。在步骤804,具有大于Vv2 ’的阈值电压的、正被编程至状态S2的那些存储器单元被锁闭而不被进一步编程。在步骤806中,系统将为正被编程至状态SI的那些存储器单元确定步骤802的测试结果。在步骤808中,系统将计算具有大于Vv2’的阈值电压的正被编程至状态SI的存储器单元的数量。在一个实施例中,在下一个编程脉冲期间执行步骤808(这意味着在图15A所有步骤之后执行)。在另一个实施例中,响应先前编程脉冲而执行步骤808以及图12、图13、图14和图15A的所有步骤。如果在步骤808中计算的存储器单元的数量大于某个数量K(例如,参考步骤776中的预定数量),则在编程过程的该阶段,在步骤812中,正被编程至状态SI的所有存储器单元被锁闭而不被进一步编程。注意到,步骤806-812是步骤774-776的示例性实施方式。
注意到,执行步骤802和806的顺序可以颠倒,从而在对正被编程至S2的存储器单元进行测试之前、期间或之后执行对正被编程至SI的存储器单元的测试。在执行步骤812之后,执行步骤814。如果在步骤810中系统确定在步骤808中计算的存储器单元的数量不大于K,则过程将跳过步骤812并直接到步骤814。注意到,在一些实施例中不需要预先确定在步骤810中比较的数量K。在步骤814中,系统将测试存储器单元是否具有大于Vv3’的阈值电压。在步骤816中,系统将为正被编程至状态S3的存储器单元确定测试结果。在步骤818中,具有大于Vv3’的阈值电压的正被编程至状态S3的存储器单元将被锁闭而不被进一步编程。在步骤820中,系统将测试存储器单元是否具有大于Vv4’的阈值电压。在步骤882中,系统将为正被编程至数据状态S4的存储器单元确定测试结果。在步骤824中,具有大于Vv4’的阈值电压的正被编程至状态S4的那些存储器单元将被锁闭而不被进一步编程。在步骤826中,系统将施加测试,以确定存储器单元是否具有大于Vv5’的阈值电压。在步骤828中,系统将为正被编程至数据状态S5的那些存储器单元确定测试结果。在步骤830中。正被编程至数据状态S5的并具有大于Vv5的阈值电压的那些存储器单元将被锁闭而不被进一步编程。在步骤832中,系统将施加测试,用于确定哪些存储器单元具有大于Vv6’的阈值电压。在步骤834中,系统将为正被编程至状态S6的存储器单元确定测试结果。在步骤836中,正被编程至状态S6且具有大于Vv6’的阈值电压的那些存储器单元将被锁闭而不被进一步编程。在步骤838中,系统将施加测试,以确定哪些存储器单元具有大于Vv7’的阈值电压。在步骤840中,系统将为正被编程至数据状态S7的那些存储器单元确定测试结果。在步骤842中,正被编程至数据状态S7并具有大于Vv7’的阈值电压的那些存储器单元将被锁闭而不被进一步编程。按照实施方式,在步骤844中,验证过程的结果被提供给状态机、控制器或其它处理器。图15B示出三个编程脉冲的集合并且在图15A的过程期间在三个编程脉冲之间施加验证脉冲。在编程脉冲860、862和864之间,仅存在六个验证脉冲。六个验证脉冲的幅度处于7¥2’、7¥3’、¥¥4’、¥¥5’、¥¥6’和Vv7’。由于对状态SI跳过了验证,因此在Vvl’没有验证脉冲。图16A是描述针对图7A至图7E编程的第二阶段而执行步骤574的验证及锁闭的过程的一个实施例的流程图,在该示例中,数据状态第二集合包括数据状态SI、S3和S5。在图16A的实施例中,对数据状态SI、S3和S5跳过验证。因此,数据状态SI、S3、S5在数据状态第二集合中,且第二集合的数据状态与第一集合的数据状态交错。数据状态第一集合包括 S2、S4、S6 和 S7。在图16A的步骤902中,系统施加测试,从而确定存储器单元是否具有大于Vv2’的阈值电压。在步骤904中,系统为正被编程至状态S2的存储器单元确定测试结果。在步骤906中,正被编程至状态S2的且具有大于Vv2’的阈值电压的存储器单元被锁闭而不被进一步编程。在步骤908中,系统为正被编程至数据状态SI的存储器单元确定步骤904的测试结果。也就是,正被编程至数据状态SI的那些存储器单元将它们的阈值电压与Vv2’比较。在步骤910中,系统计算具有大于Vv2’的阈值电压的正被编程至状态SI的存储器单元的数量。在一个实施例中,在下一个编程脉冲期间(它意味着在图16A的所有步骤之 后)执行步骤910。在步骤912中,系统确定具有大于Vv2’的阈值电压的存储器单元的数量(在步骤910中计算的)是否大于某个数量K。如果否,过程继续至步骤916。如果具有大于Vv2的阈值电压的正被编程至状态SI的存储器单元的数量大于K,则在步骤914,正被编程至数据状态SI的所有存储器单元被锁闭而不被进一步编程。注意到,步骤908-914是步骤774-776的示例性实施方式。注意到,执行步骤904和908的顺序可以颠倒,从而在对正被编程至S2的存储器单元进行测试之前、期间或之后执行对正被编程至SI的存储器单元的测试。在图16A的步骤916中,系统施加测试,以确定存储器单元是否具有大于Vv4’的阈值电压。在步骤918中,系统确定正被编程至数据状态S4的存储器单元的测试结果。在步骤920中,具有大于Vv4’的阈值电压的正被编程至数据状态S4的存储器单元被锁闭而不被进一步编程。在步骤922中,对正被编程至数据状态S3的那些存储器单元确定步骤916的测试结果。在该实施方式中,跳过对数据状态SI、S3、S5的验证。因此,正被编程至数据状态S3的存储器单元与数据状态S4的验证目标电平Vv4’进行比较。在步骤924中,计算具有大于Vv4’的阈值电压的正被编程至数据状态S3的存储器单元的数量。如果该计数大于某个数量K (步骤926),则在步骤928中,正被编程至该数据状态S3的所有存储器单元被锁闭。注意到,步骤922-928是步骤774-776的示例性实施方式。注意到,执行步骤918和922的顺序可以颠倒,从而在对正被编程至S4的存储器单元进行测试之前、期间或之后执行对正被编程至S3的存储器单元的测试。在步骤930中,系统对存储器单元施加测试,以确定它们的阈值电压是否大于Vv6’。在步骤932,为正被编程至数据状态S6的那些存储器单元确定测试结果。在步骤934中,具有大于Vv6’的阈值电压的正被编程至数据状态S6的存储器单元被锁闭而不被进一步编程。在步骤936中,为正被编程至数据状态S5的每个存储器单元确定步骤930的测试结果。如上所述,跳过对数据状态S5的验证。在步骤938中,计算具有大于Vv6’的阈值电压的正被编程至数据状态S5的存储器单元的数量。如果该计数大于某个数量K (步骤940),则正被编程至该数据状态S5的所有存储器单元被锁闭而不被进一步编程。如果该计数不大于数量K,则过程跳过步骤942并在步骤944继续。注意到,步骤936-942是步骤774-776的示例性实施方式。注意到,执行步骤932和936的顺序可以颠倒,从而在对正被编程至S6的存储器单元进行测试之前、期间或之后执行对正被编程至S5的存储器单元的测试。在步骤944中,测试存储器单元,以确定它们的阈值电压是否大于Vv7’。在步骤946中,为正被编程至数据状态S7的那些存储器单元确定步骤944的测试结果。在步骤948中,具有大于Vv7’的阈值电压的正被编程至数据状态S7的存储器单元被锁闭而不被进一步编程。在步骤950中,上述验证结果被报告给状态机、控制器或其它处理器。注意到,步骤912、926和940使用相同值K ;然而,在其它实施例中,对于步骤912、926和940的比较可使用不同的数量。图16B示出三个编程脉冲。在连续的编程脉冲之间是具有幅度Vv2’、Vv4’、Vv6’和Vv7’的四个验证脉冲。在图16A的过程期间施加图16B的脉冲。因为对数据状态S1、S3 和S5已经跳过了验证,因此在幅度Vvl’、Vv3’或Vv5’没有验证脉冲。通过对某些数据状态跳过验证,编程过程完成的更快。当图16A的方法用于图7A至图7E的第三编程趟次时,系统将使用 VvU Vv3、Vv3、Vv4、Vv5、Vv6 和 Vv7,而不使用 Vvl,、Vv2,、Vv3,、Vv4,、Vv5’、Vv6’和Vv7’。而且,除了图6和图7A至图7E的过程之外,图15A和图16A的过程还可用于其它编程过程。在另一个实施例中,通常根据上述规则,数据状态第二集合可包括数据状态S1、S4和S6,使得对数据状态SI、S4和S6跳过验证而对数据状态S2、S3、S5和S7执行验证。当对S2进行验证时,系统对SI的快速位进行测试。当对S5验证时,系统对S4的快速位进行测试。当对S7进行验证时,系统对S6的快速位进行测试。还可实施其它配置。一个实施例包括向正被编程至目标第一集合的非易失性存储元件第一集合以及正被编程至一个或多个目标的第二集合的非易失性存储元件第二集合实施编程,测试非易失性存储元件第一集合是否已经达到它们各自的目标,锁闭已经确定已经达到它们各自目标的非易失性存储元件第一集合的非易失性存储元件而不对该非易失性存储元件进一步编程,针对具有一个或多个目标的第二集合的每个目标,检测非易失性存储元件第二集合的快速编程非易失性存储元件的数量,以及,锁闭正被编程至具有一个或多个目标的第二集合中的一个或多个目标的、并具有比正被编程至具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的非易失性存储元件第二集合的非易失性存储元件,而不对该非易失性存储元件进一步编程。一个实施例包括多个非易失性存储元件和与该多个非易失性存储元件通信的一个或多个管理电路,所述多个非易失性存储元件包括正被编程至一个或多个目标的第一集合的非易失性存储元件第一集合及正被编程至一个或多个目标的第二集合的非易失性存储元件第二集合。该一个或多个管理电路向非易失性存储元件第一集合及非易失性存储元件第二集合施加多次编程;响应于多次编程的至少一个子集,该一个或多个管理电路测试非易失性存储元件第一集合是否已经达到它们各自的目标,锁闭已经被确定达到它们各自目标的非易失性存储元件第一集合的非易失性存储元件,而不对该非易失性存储元件进一步编程,针对具有一个或多个目标的第二集合检测非易失性存储元件第二集合的快速编程非易失性存储元件的数量,并且锁闭正被编程至具有一个或多个目标的第二集合中的一个或多个目标的、且具有比正被编程至所述具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的非易失性存储元件第二集合的非易失性存储元件,而不对该非易失性存储元件进一步编程。一个实施例包括将多个非易失性存储元件编程至中间目标。多个非易失性存储元件包括正被编程至中间目标第一集合的非易失性存储元件第一集合以及正被编程至一个或多个中间目标的第二集合的非易失性存储元件第二集合。将多个非易失性存储元件编程至中间目标包括基于检测第一集合的非易失性存储元件是否已经达到它们各自的中间目标来锁闭第一集合的非易失性存储元件,以及基于检测第二集合的被快速编程的非易失性存储元件而锁闭第二集合的非易失性存储元件。该方法进一步包括将这多个非易失性存储 元件从中间目标编程至最终目标,包括基于检测第一集合的非易失性存储元件是否已经达到它们各自目标而锁闭第一集合的非易失性存储元件,以及基于检测第二集合的非易失性存储元件是否已经达到它们各自的目标而锁闭第二集合的非易失性存储元件。一个实施例包括多个非易失性存储元件和与这多个非易失性存储元件通信的一个或多个管理电路,这多个非易失性存储元件包括正被编程至中间目标第一集合的非易失性存储元件第一集合及正被编程至一个或多个中间目标的第二集合的非易失性存储元件第二集合。该一个或多个管理电路将这多个非易失性存储元件编程至中间目标。作为将多个非易失性存储元件编程至中间目标的一部分,该一个或多个管理电路基于检测非易失性存储元件是否已经达到它们各自的中间目标而锁闭第一集合的非易失性存储元件,并且基于检测第二集合的被快速编程的非易失性存储元件的数量而锁闭第二集合的非易失性存储元件。该一个或多个管理电路将多个非易失性存储元件从中间目标编程至最终目标,包括基于检测第一集合的非易失性存储元件是否已经达到它们各自的目标而锁闭第一集合的非易失性存储元件,以及基于检测第二集合的非易失性存储元件是否已经达到它们各自的目标而锁闭第二集合的非易失性存储元件。一个实施例包括向非易失性存储元件第一集合施加编程信号,从而将非易失性存储元件第一集合编程至第一目标,测试第一集合的非易失性存储元件是否已经达到大于第一目标的不同目标,确定已经达到不同目标的第一集合的非易失性存储元件的数量是否大于第一数量,并且响应于确定了已经达到不同目标的第一集合的非易失性存储元件的数量大于第一数量而结束对非易失性存储元件第一集合的编程。上文中提供了对本发明的具体描述以用于进行阐述和说明。但并非要穷举或者将本发明限于所公开的精确形式。根据以上教导,可实现很多修改和变型。选取上述实施例以最佳地解释本发明的原理及其实际应用,从而使得本领域技术人员能够以不同的实施例并利用适于特定预期用途的不同变型来最佳地利用本发明。本发明的范围要由所附权利要求来定义。
权利要求
1.一种对非易失性存储器编程的方法,包括 向正被编程至目标第一集合的非易失性存储元件第一集合以及正被编程至具有一个或多个目标的第二集合的非易失性存储元件第二集合实施编程; 测试所述非易失性存储元件第一集合是否已经达到它们各自的目标; 锁闭经确定已经达到它们各自的目标的所述非易失性存储元件第一集合的非易失性存储元件,而不对所述非易失性存储元件进一步编程; 针对所述具有一个或多个目标的第二集合中的每个目标,检测所述非易失性存储元件第二集合的快速编程非易失性存储元件的数量; 锁闭正被编程至所述具有一个或多个目标的第二集合中的一个或多个目标的、且具有比正被编程至所述具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的所述非易失性存储元件第二集合的非易失性存储元 件而不对其进一步编程。
2.根据权利要求I所述的方法,其中 所述施加编程包括施加编程脉冲;以及 所述测试及检测是响应所述编程脉冲而执行。
3.根据权利要求2所述的方法,其中 所述检测快速编程非易失性存储元件的数量包括在所述编程脉冲之一期间,针对所述具有一个或多个目标的第二集合的每个目标,计算所述非易失性存储元件第二集合的快速编程非易失性存储元件的数量。
4.根据权利要求1、2或3所述的方法,其中 所述锁闭非易失性存储元件第二集合的非易失性存储元件而不对其进一步编程包括锁闭正被编程至所述具有一个或多个目标的第二集合中的一个或多个目标的、且具有比正被编程至所述具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的所述非易失性存储元件第二集合的所有非易失性存储元件而不对其进一步编程。
5.根据权利要求1-4中任一项所述的方法,其中 所述检测快速编程非易失性存储元件的数量包括测试所述非易失性存储元件第二集合的非易失性存储元件是否已经达到高于它们各自的目标的电平。
6.根据权利要求1-5中任一项所述的方法,其中 所述检测快速编程非易失性存储元件的数量包括不执行验证,而测试所述非易失性存储元件第二集合的非易失性存储元件是否已经达到它们各自的目标。
7.根据权利要求1-6任一项所述方法,其中 所述检测快速编程非易失性存储元件的数量包括测试所述非易失性存储元件第二集合的非易失性存储元件是否已经达到针对所述非易失性存储元件第一集合的一个或多个目标。
8.根据权利要求1-7中任一项所述的方法,其中 所述具有一个或多个目标的第二集合包括第一目标; 所述具有一个或多个目标的第一集合包括第二目标; 所述测试非易失性存储元件第一集合是否已经达到它们各自的目标包括测试所述非易失性存储元件第一集合的子集是否已经达到所述第二目标;以及 所述检测非易失性存储元件第二集合的快速编程非易失性存储元件的数量包括测试所述非易失性存储元件第二集合的子集是否已经达到所述第二目标。
9.根据权利要求1-8中任一项所述的方法,其中 所述检测快速编程非易失性存储元件的数量包括测试所述非易失性存储元件第二集合的非易失性存储元件是否被过度编程。
10.根据权利要求1-9中任一项所述的方法,其中 所述具有一个或多个目标的第二集合包括与所述目标第一集合交错的多个目标。
11.根据权利要求1-10中任一项所述的方法,其中 所述施加编程、测试所述非易失性存储元件第一集合是否已经达到它们各自目标、锁闭所述非易失性存储元件第一集合的非易失性存储元件而不对其进一步编程、检测以及锁闭所述非易失性存储元件第二集合的非易失性存储元件而不对其进一步编程,是作为将所述非易失性存储元件第一集合及所述非易失性存储元件第二集合编程至中间状态的中间编程阶段的一部分而执行的; 所述方法进一步包括随后的编程阶段,该随后的编程阶段包括将所述非易失性存储元件第一集合及所述非易失性存储元件第二集合编程至不同于中间状态的目标状态;以及 所述随后编程阶段进一步包括测试所述非易失性存储元件第一集合及所述非易失性存储元件第二集合是否已经达到它们各自的目标状态。
12.根据权利要求11所述的方法,进一步包括 至少针对所述非易失性存储元件第一集合,在所述中间编程阶段之前执行前一编程阶段。
13.一种非易失性存储系统,包括 多个非易失性存储元件,所述多个非易失性存储元件包括正被编程至具有一个或多个目标的第一集合的非易失性存储元件第一集合及正被编程至具有一个或多个目标的第二集合的非易失性存储元件第二集合;及 与所述多个非易失性存储元件通信的一个或多个管理电路,所述一个或多个管理电路向所述非易失性存储元件第一集合及所述非易失性存储元件第二集合施加多次编程; 响应于所述多次编程的至少一个子集,所述一个或多个管理电路测试所述非易失性存储元件第一集合是否已经达到它们各自的目标,锁闭经确定已经达到它们各自的目标的所述非易失性存储元件第一集合的非易失性存储元件而不对其进一步编程,针对所述具有一个或多个目标的第二集合检测所述非易失性存储元件第二集合的快速编程非易失性存储元件的数量,并且锁闭正被编程至所述具有一个或多个目标的第二集合中的一个或多个目标的、且具有比正被编程至所述具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的所述非易失性存储元件第二集合的非易失性存储元件而不对其进一步编程。
14.根据权利要求13所述的非易失性存储系统,其中 所述多次编程包括编程脉冲。
15.根据权利要求14所述的非易失性存储系统,其中 所述一个或多个管理电路通过在所述编程脉冲之一期间针对所述具有一个或多个目标的第二集合的每个目标计算所述非易失性存储元件第二集合的快速编程非易失性存储元件的数量而检测快速编程非易失性存储元件的数量。
16.根据权利要求13、14或15的非易失性存储系统,其中 所述一个或多个管理电路锁闭正被编程至所述具有一个或多个目标的第二集合中的一个或多个目标的、且具有比正被编程至所述具有一个或多个目标的第二集合中的所述一个或多个目标的快速编程非易失性存储元件的阈值数量更多的所述非易失性存储元件第二集合的所有非易失性存储元件而不对其进一步编程。
17.根据权利要求13-16中任一项所述的非易失性存储系统,其中 所述一个或多个管理电路通过测试非易失性存储元件是否已经达到大于它们各自目标的电平而检测快速编程非易失性存储元件的数量。
18.根据权利要求13-17中任一项所述的非易失性存储系统,其中 所述一个或多个管理电路通过测试所述非易失性存储元件第二集合是否已经达到针对所述非易失性存储元件第一集合的一个或多个目标而检测快速编程非易失性存储元件的数量。
19.根据权利要求13-18中任一项所述的非易失性存储系统,其中 所述具有一个或多个目标的第二集合包括第一目标; 所述具有一个或多个目标的第一集合包括第二目标和第三目标; 所述一个或多个管理电路通过测试所述非易失性存储元件第一集合的子集是否已经达到所述第二目标而测试所述非易失性存储元件第一集合是否已经达到它们各自的目标;以及 所述一个或多个管理电路通过测试所述非易失性存储元件第二集合的子集是否以及达到所述第二目标而检测所述非易失性存储元件第二集合的快速编程非易失性存储元件的数量。
20.根据权利要求13-19中任一项所述的非易失性存储系统,其中 所述一个或多个管理电路通过测试所述非易失性存储元件第二集合是否被过度编程而检测快速非易失性存储元件的数量。
21.根据权利要求13-20中任一项所述的非易失性存储系统,其中 所述一个或多个目标的第二集合包括与目标第一集合交错的多个目标。
22.根据权利要求13-21中任一项所述的非易失性存储系统,其中 所述一个或多个管理电路施加多次编程、测试所述非易失性存储元件第一集合是否已经达到它们各自的目标、锁闭所述非易失性存储元件第一集合的非易失性存储元件而不对其进一步编程、检测快速编程非易失性存储元件的数量、锁闭所述非易失性存储元件第二集合的非易失性存储元件而不对其进一步编程,是作为将所述非易失性存储元件第一集合及所述非易失性存储元件第二集合编程至中间状态的中间编程阶段的一部分而执行的; 所述一个或多个管理电路还执行随后的编程阶段,该随后的编程阶段包括将所述非易失性存储元件第一集合及所述非易失性存储元件第二集合编程至不同于中间状态的目标状态;以及 所述随后编程阶段包括所述一个或多个管理电路测试所述非易失性存储元件第一集合及所述非易失性存储元件第二集合是否已经达到它们各自的目标状态。
全文摘要
对非易失性存储元件集合进行编程处理以存储数据。在编程过程期间,执行一个或多个验证操作,以确定非易失性存储元件是否已经达到它们的目标。对正被编程至一个或多个目标的第一集合的非易失性存储元件进行验证,以确定它们是否已经达到它们的目标,如果确定它们已经达到它们的目标,锁闭它们而不对它们进一步编程。对正被编程至一个或多个目标的第二集合的非易失性存储元件进行测试,以确定快速编程位的数量。当针对特定目标的快速位的数量大于阈值时,则对正被编程至特定目标的非易失性存储元件停止编程。
文档编号G11C11/56GK102754164SQ201080057462
公开日2012年10月24日 申请日期2010年12月14日 优先权日2009年12月15日
发明者徐华灵, 杰弗里·卢茨, 董英达, 陈长远 申请人:桑迪士克科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1