具有使用多页的组合验证的加速的写入后读取的非易失性存储器的方法与流程

文档序号:12010934阅读:192来源:国知局
具有使用多页的组合验证的加速的写入后读取的非易失性存储器的方法与流程
本申请涉及诸如半导体闪存的可再编程非易失性存储器系统,更具体地,涉及存储器操作中的错误的应对和有效管理。

背景技术:
能够非易失性地存储电荷的固态存储器、尤其是以被包装为小形状因子卡的EEPROM和快闪EEPROM的形式的固态存储器,近来已经变为在各种移动和手持设备、特别是信息用品和消费者电子产品中的存储的选择。不像也是固态存储器的RAM(随机存取存储器),闪存是非易失性的,且即使在掉电之后也维持其存储的数据。而且,不像ROM(只读存储器),闪存类似于盘存储设备而可重写。尽管有较高的成本,但闪存仍然逐渐用于大容量存储应用中。基于诸如硬盘和软盘的旋转磁介质的传统大容量存储器不适用于移动和手持环境。这是因为磁盘趋于大容量,易于产生机械故障,且具有高延迟时间和高功率需求。这些不期望的属性使得基于盘的存储器在大多数移动和便携式应用中不实际。另一方面,嵌入式和以可移除卡的形式的闪存由于其小尺寸、低功耗、高速度和高可靠性特性而理想地适用于移动和手持环境。快闪EEPROM类似于EPROM(电可擦除可编程只读存储器)之处在于其是可以被擦除且使得新数据被写入或“编程”到其存储器单元中的非易失性存储器。在场效应晶体管结构中,两者利用在源极和漏极区域之间的、位于半导体衬底中的沟道区之上的浮置(未连接)导电栅极。然后,控制栅极被提供在浮置栅极上。晶体管的阈值电压特性受浮置栅极上保留的电荷量控制。也就是说,对于在浮置栅极上的给定水平的电荷,存在必须在晶体管“导通”以允许在其源极和漏极区域之间导电之前施加到该控制栅极的对应电压(阈值)。具体地,诸如快闪EEPROM的闪存允许同时擦除存储器单元的各整个块。浮置栅极可以保持一范围的电荷,且因此可以被编程到阈值电压窗内的任意阈值电压电平。由器件的最小和最大阈值电平来界定(delimit)阈值电压窗的尺寸,该最小和最大阈值电平又对应于可以被编程到浮置栅极上的电荷的范围。该阈值窗通常取决于存储器器件的特征、操作条件和历史。在该窗内的每个不同的、可分辨的阈值电压电平范围原则上可以用于指定单元的明确的存储器状态。在当前商业产品中快闪EEPROM阵列的每个存储元件普遍地通过以二进制模式操作来存储单个位的数据,其中,存储元件晶体管的两个范围的阈值电平被定义为存储电平。晶体管的阈值电平对应于其存储元件上存储的电荷电平的范围。除了缩小存储器阵列的尺寸以外,趋势是通过在每个存储元件晶体管中存储多于一位数据来进一步增加这种存储器阵列的数据存储的密度。这通过将多于两个阈值电平定义为每个存储元件晶体管的存储状态来实现,现在在商业产品中包括四个这种状态(每个存储元件2位数据)。也正实现每个存储元件的更多存储状态,比如16个状态。每个存储元件存储器晶体管具有其可以实际被操作的阈值电压的特定总范围(窗),且该范围被划分为为其定义的多个状态加上在这些状态之间的、允许它们彼此清楚地区分的余量。显然,存储器单元被配置以存储的位越多,其必须在其中操作的错误余量越小。用作存储器单元的晶体管通常通过两个机制之一编程到“已编程”状态。在“热电子注入”中,施加到漏极的高电压加速电子穿过衬底沟道区域。同时,在施加到控制栅极的高电压拉动热电子经过薄栅极电介质到浮置栅极上。在“遂穿注入”中,相对于衬底,高电压被施加到控制栅极。以此方式,将电子从衬底拉到中间的(intervening)浮置栅极。虽然已经在历史上使用术语“编程”来描述通过向存储器单元的初始擦除的电荷存储单元注入电子以便改变存储器状态而向存储器的写入,但是现在与诸如“写入”或“记录”的更通用的术语可互换地使用。可以通过多种机制来擦除存储器器件。对于EEPROM,可通过相对于控制栅极向衬底施加高电压以便诱导浮置栅极中的电子遂穿过薄氧化物到衬底沟道区(即,Fowler-Nordheim隧穿)而电擦除存储器单元。通常,EEPROM可逐字节擦除。对于快闪EEPROM,该存储器可一次全部或一次一个或多个最小可擦除块地被电擦除,其中,最小可擦除块可以由一个或多个扇区构成,且每个扇区可以存储512字节或更多的数据。存储器器件通常包括可以被安装到卡上的一个或多个存储器芯片。每个存储器芯片包括由诸如解码器和擦除、写和读电路的外围电路支持的存储器单元的阵列。更复杂的存储器器件还与进行智能且较高级存储器操作和接口(interfacing)的控制器一起出现。存在当今正使用的许多商业成功的非易失性固态存储器器件。这些存储器器件可以是快闪EEPROM,或可以使用其他类型的非易失性存储器单元。在美国专利号5,070,032、5,095,344、5,315,541、5,343,063、5,661,053、5,313,421和6,222,762中给出了快闪存储器及系统和制造它们的方法的例子。具体地,在美国专利号5,570,315、5,903,495、6,046,935中描述了具有NAND串结构的闪存器件。而且,还从具有用于存储电荷的介电层的存储器单元制造非易失性存储器器件。取代先前描述的导电浮置栅极元件,使用介电层。使用介电存储元件的这种存储器器件已经由以下描述:Eitan等人的“NROM:ANovelLocalizedTrapping,2-BitNonvolatileMemoryCell”,IEEEElectronDeviceLetters,vol.21,no.11,2000年11月,pp.543-545。ONO介电层穿过源极和漏极扩散之间的沟道而延伸。一个数据位的电荷被定位(localize)在与漏极相邻的介电层中,且另一数据位的电荷被定位在与源极相邻的介电层中。例如,美国专利第5,768,192和6,011,725号公开了具有夹在两个二氧化硅层之间的捕获电介质(trappingdielectric)的非易失性存储器单元。通过分开地读取电介质内的空间上分开的电荷存储区的二进制状态来实现多状态数据存储。为了改善读取和编程性能,并行读取或编程在阵列中的多个电荷存储元件或存储器晶体管。因此,"一页"存储器元件被一起读取或编程。在现有存储器架构中,一行通常包含若干交织的页,或其可以组成一页。一页的所有存储器元件将一起被读取或编程。写入的数据中的错误在此说明的这些类型的存储器系统中以及在其他存储器系统中,包括磁盘存储系统,通过使用错误校正技术来维持被存储的数据的完整性。最普遍地,对于一次存储的数据的每个扇区或其他单元计算错误校正码(ECC),且该ECC与该数据一起存储。ECC最普遍地与用户数据的单元组一起存储,其中已经从该单元组计算了ECC。用户数据的单元组可以是扇区或多扇区页。当从存储器读取该数据时,使用ECC来确定被读取的用户数据的完整性。通常可以通过使用ECC来校正数据的单元组内的数据的错误位。趋势是减小存储器系统的大小以便能够在该系统中放置更多的存储器单元以及使得该系统尽可能小以适应更小的主机设备。通过电路的更高集成以及配置每个存储器单元存储更多位数据的组合来增加存储器容量。这两种技术要求存储器以增加的更收紧的错误余量来操作。这又对校正错误的ECC提出更高的要求。可以设计ECC来校正预定数量的错误位。其需要校正的位越多,该ECC将越复杂且更多计算量。为了质量保证,基于在存储器器件的寿命末期的预计最差情况单元错误率来设计传统ECC。因此,它们必须校正高达错误率的统计总体的远在尾端的最大数量的错误位。随着快闪存储器老化,其错误率在该器件的寿命末期附近迅速增加。因此,仅需要为最差情况设计的强大ECC在存储器器件的寿命末期时应用其全部性能。使用ECC来校正最差情况数量的错误位将消耗更大量的处理时间。其需要校正的位越多,所需的计算时间越多。存储器性能将降低。可以实现另外的专用硬件来在合理时间量进行ECC。这种专用硬件可能在控制器ASIC芯片上占据相当量的空间。另外,对于器件的大多数寿命时间,仅有余量地使用ECC,导致其大量系统开销(overhead)被浪费且没有实现真正收益。因此,需要提供高存储容量、不需要为最差情况设计的资源密集的ECC的非易失性存储器。

技术实现要素:
根据主要的一组方面,呈现操作存储器系统的方法。该存储器系统包括沿着多个字线形成的非易失性单元的阵列,每个字线能够存储一页或多页数据。所述方法包括:将多页数据写入到所述阵列中并随后从所述阵列读取多个写入的页的数据,并进行对所述合成数据结构的至少一部分的评估,以确定在所写入的多页数据中的高错误率的存在。在本发明的示例例子的以下描述中包括本发明的各种方面、优点、特征和实施例,该描述应该与附图结合。在此引用的所有专利、专利申请、文章、其他公开、文献和事物为了所有目的被全部引用附于此。置于在并入的公开、文档或事物的任一和本申请之间的术语的定义或使用中的任何不一致或冲突的程度,在本申请中的应该优先。附图说明图1图示与体现本发明的特征的存储器器件通信的主机。图2示意性地图示了非易失性存储器单元。图3图示了存储器单元的NOR阵列的例子。图4图示了被并行感测或编程的在例如NAND配置中组织的一页存储器单元。图5A将图1所示的感测模块更详细地图示为包含跨过存储器单元的阵列的一堆p个感测模块。图5B图示包括感测放大器的感测模块。图6示意性地示出在可擦除块中组织的存储器阵列的例子。图7图示具有每个单元处于两个可能状态之一的全体单元的二进制存储器。图8图示具有每个单元处于八个可能状态之一的全体单元的多状态存储器。图9示意性地图示包含ECC字段的数据页。图10A示出全体的百分比在各种范围的标准偏差σ的错误率的正态分布。图10B图示表格形式的图10A的分布。图11是列出闪存的主要错误源的表格。图12是示出在示例存储器器件的寿命初期和末期该示例存储器器件的估计的总错误的表格。图13是图示必须设计传统的ECC来校正最差情况的总错误ETOT的表格。图14A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。图14B图示将数据页的第二复制本重写到图14A的存储器阵列的第一部分中。图15是图示根据图14A和图14B中描述的实施例的写入后读取和适应性重写的处理的流程图。图16A图示根据本发明的优选实施例的被划分为两个部分且第一部分进一步被提供有缓存部分和重写部分的存储器阵列。图16B图示根据写入后读取的优选实施例的页比较技术。图16C图示在写入后读取确定了在第二部分中的数据页中的过量错误之后向第一部分的重写。图17是图示根据图16A到图16C中描述的实施例的写入后读取和适应性重写的处理的流程图。图18图示被组织为擦除块的存储器。图19是图示当存储器器件已经老化到由热计数确定的预定程度时被使能的错误管理的流程图。图20A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。图20B图示其中图20A的D3块未通过写入后读取测试的另一例子。图20C图示其中图20B的新的D3块再次未通过写入后读取测试的另一例子。图21是图示与增强的写入后读取错误管理相关的示例参数的表格。该表格优选地被保持在存储器中存储的文件系统配置文件中。图22A是图示应用于具有D1到D3折叠(folding)的存储器的EPWR错误管理的优选实施方式的流程图。图22B更详细地图示增强的写入后读取的错误管理的取决于器件年龄的使能特征。图22C更详细地图示增强的写入后读取错误管理的优选实施方式。图23(0)-23(3)图示用优选的2位逻辑码(“LM”码)编码的4状态存储器的逻辑逐页编程。图24A图示辨别用2位LM码编码的4状态存储器的较低位所需的读取操作。图24B图示辨别用2位LM码编码的4状态存储器的较高位所需的读取操作。图25(0)-25(4)图示用优选的3位逻辑码(“LM”码)编码的8状态存储器的编程。图26A示意性地图示包含类似于图9所示的ECC字段的ECC页。图26B图示构成数据页的多个ECC页。图27是图示加速的PWR的一般实施例的流程图。图28是图示图27所示的加速的PWR的优选实施例的流程图。图29图示在已写入一个字线上的一组3位存储器单元之后为写入后读取所选择的样本。图30例示向3位存储器分配数据状态。图31是例示使用多页的组合验证的增强的写入后的读取的方面的示例流程。图32示出对图30中示出的数据状态的顶部和底部页异或(XOR)的结果。具体实施方式存储器系统图1图示与其中体现本发明的特征的存储器器件通信的主机。主机80通常发送要在存储器器件90处存储的数据,或通过读存储器器件90来取得数据。存储器器件90包括由控制器102管理的一个或多个存储器芯片100。该存储器芯片100包括存储器单元的存储器阵列200,每个单元能够被配置为用于存储多位数据的多级单元("MLC")。该存储器芯片还包括诸如感测模块480、数据锁存器430和I/O电路440的外围电路。芯片上控制电路110控制每个芯片的低级存储器操作。控制电路110是与外围电路合作以对存储器阵列200进行存储器操作的芯片上控制器。该控制电路110通常包括状态机112来提供存储器操作的芯片级控制。在许多实施方式中,主机80经由控制器102与存储器芯片100通信和交互。该控制器102与存储器芯片协作,并控制和管理更高级的存储器操作。例如,在主机写入中,主机10发送要写到在从主机的操作系统的文件系统分配的逻辑扇区中的存储器阵列100的数据。在控制器中实现的存储器块管理系统阶段性存储(stage)这些扇区,并将它们映射并存储到存储器阵列的物理结构。在2010年7月8日公布的美国专利申请公开号:2010/0172180A1中公开了优选的块管理系统,其全部公开通过参考合并于此。固件60提供代码以实现控制器102的功能。错误校正码(“ECC”)处理器62在存储器器件的操作期间处理ECC。在另一实施例中,在主机内实现控制器102。物理存储器结构图2示意性地图示了非易失性存储器单元。存储器单元10可以由具有诸如浮置栅极或介电层的电荷存储单元20的场效应晶体管实现。存储器单元10还包括源极14、漏极16和控制栅极30。存在当今正使用的许多商业成功的非易失性固态存储器器件。这些存储器器件可以使用不同类型的存储器单元,每个类型具有一个或多个电荷存储元件。典型的非易失性存储器单元包括EEPROM和快闪EEPROM。在美国专利第5,595,924号中给出了EEPROM单元和制造它们的方法的例子。在美国专利第5,070,032、5,095,344、5,315,541、5,343,063、5,661,053、5,313,421和6,222,762号中给出了快闪EEPROM单元、其在存储器系统中的使用和制造它们的方法的例子。具体地,在美国专利第5,570,315、5,903,495、6,046,935号中描述了具有NAND单元结构的存储器器件的例子。而且,使用介电存储元件的存储器器件已经由以下描述:Eitan等人的“NROM:ANovelLocalizedTrapping,2-BitNonvolatileMemoryCell”,IEEEElectronDeviceLetters,vol.21,no.11,2000年11月,543-545页和美国专利第5,768,192和6,011,725号。实践中,通常通过当向控制栅极施加参考电压时感测跨过单元的源极和漏极的导电电流来读取该单元的存储器状态。因此,对于单元的浮置栅极上的每个给定的电荷,可以检测到针对固定参考控制栅极电压的相应导电电流。相反,阈值电压被定义为以给定的电荷将刚好导通该单元的在控制栅极上的电压。类似地,可编程到浮置栅极上的电荷的范围定义了对应的阈值电压窗或对应的导电电流窗。或者,代替检测在划分的电流窗之间的导电电流,能够在控制栅极处在测试下为给定存储器状态设置阈值电压,并检测导电电流是低于还是高于阈值电流。在一个实施方式中,通过检查导电电流通过位线的电容或已知电容器而放电的速率来实现针对阈值电流检测导电电流。如可以从上述描述看出的,使得存储器单元存储的状态越多,其阈值窗划分得越精细。例如,存储器器件可以具有拥有范围从-1.5V到5V的阈值窗的存储器单元。这提供了6.5V的最大宽度。如果该存储器单元要存储16个状态,则每个状态可以在阈值窗中占据200mV到300mV。这将需要在编程和读操作中的更高的精度以便能够实现需要的分辨率。存储器阵列200通常被组织为在行和列中排列且可由字线和位线寻址的二维阵列的存储器单元。可以根据NOR类型或NAND类型架构来形成该阵列。图3图示了存储器单元的NOR阵列的例子。在存储器阵列200中,每行存储器单元通过其源极14和漏极16以菊链方式连接。该设计有时称为虚拟接地设计(virtualgrounddesign)。一行中的单元10使其控制栅极30连接到诸如字线42的字线。一列中的单元使其源极和漏极分别连接到诸如位线34和36的所选位线。图4图示了被并行感测或编程的在例如NAND配置中组织的一页存储器单元。图4主要示出了存储器阵列200中的NAND串50的堆(bank)。NAND串50包括通过其源极和漏极菊链链接的一系列存储器晶体管(例如4、8、16个或更多)。一对选择晶体管S1、S2控制存储器晶体管链分别经由NAND串的源极端和漏极端与外部的连接。在存储器阵列中,当导通源极选择晶体管S1时,源极端耦合于源极线34。类似地,当导通漏极选择晶体管S2时,NAND串的漏极端耦合于存储器阵列的位线36。在该链中的每个存储器晶体管10担当存储器单元。其具有电荷存储元件20来存储给定量的电荷以便表示意图的存储器状态。每个存储器晶体管的控制栅极允许对读取和写入操作的控制。一行NAND串的对应存储器晶体管的控制栅极都连接到相同字线(比如WL0、WL1,……)。类似地,(分别经由选择线SGS和SGD访问的)每个选择晶体管S1、S2的控制栅极提供分别经由其源极端和漏极端对NAND串的控制访问。当在编程期间读或验证在NAND串内的被寻址的存储器晶体管10时,经由公共字线向其控制栅极供应适当的电压。同时,通过对NAND串50中的剩余未被寻址的存储器晶体管的控制栅极施加足够的电压来完全导通该剩余未被寻址的存储器晶体管。以此方式,有效地创建了从各个存储器晶体管的源极到NAND串的源极端的导电路径,且类似地对于各个存储器晶体管的漏极到该单元的漏极端创建了导电路径。在美国专利第5,570,315、5,903,495、6,046,935号中描述了具有这样的NAND串结构的存储器器件。诸如页70的“页”是使得能够并行被感测或编程的一组存储器单元。这通过相应页的感测放大器来实现。例如,页70沿着一行,且通过施加到共同连接到字线WL3的、该页的单元的控制栅极的感测电压来感测。沿着每列,诸如单元10的每个单元可由感测放大器经由位线36来访问。以上所称的页是物理页存储器单元或感测放大器。这取决于上下文,在每个单元都在存储的情况下。感测电路和技术图5A将图1所示的感测模块更详细地图示为包含跨过存储器单元的阵列的一堆p个感测模块。并行地工作的整堆p个感测模块480允许沿着一行的一组(或物理页)p个单元10被并行读取或编程。基本上,感测模块1将感测在单元1中的电流I1,感测模块2将感测在单元2中的电流I2,……,感测模块p将感测在单元p中的电流Ip,等等。该页的从源极线34流出到聚集节点CLSRC中且从那里流到地的总单元电流iTOT将是p个单元中的所有电流的总和。在传统的存储器架构中,具有公共字线的一行存储器单元形成两个或多个页,其中,在一页中的存储器单元被并行读取和编程。在一行具有两页的情况下,一页被偶数位线访问,且另一页被奇数位线访问。一个物理页的感测电路在任一时间被耦合到偶数位线或耦合到奇数位线。在当前生产的芯片中,物理页可以是64k或更大。在优选实施例中,组是一系列(arunof)整行单元。这是所谓的“全位线”架构,其中,该页由分别耦合于连续位线的一行连续的存储器单元构成。图5B图示包括感测放大器的感测模块。感测放大器490检测单元的导电电流高于还是低于参考水平。感测的结果被锁存在对应的锁存器集430中(见图1)。擦除块在快闪存储器和其他类型存储器之间的一个重要差别是必须从已擦除状态编程单元。也就是说,浮置栅极必须首先清空电荷。然后,编程向浮置栅极添加回期望的电荷量。其不支持将电荷的一部分从浮置栅极移除以从较高的编程状态去往较低的编程状态。这意味着,更新的数据不能重写已有的数据,且必须被写到先前未写入的位置。另外,擦除要将所有电荷从浮置栅极中清空,且通常花费相当多的时间。由于这个原因,这将很麻烦,且逐单元或甚至逐页地擦除是很慢的。实践中,存储器单元的阵列被划分为大量存储器单元块。如对于快闪EEPROM系统普遍的,块是擦除的单位。即,每个块包含一起被擦除的最小数量的存储器单元。图6示意性地示出在可擦除块中组织的存储器阵列的例子。电荷存储存储器器件的编程仅会导致向其电荷存储元件添加更多的电荷。因此,在编程操作之前,必须移除(或擦除)在存储器单元的电荷存储元件中的已有电荷。当一起(即,在一次快闪中)电擦除整个单元阵列200、或该阵列的大量单元组时,诸如EEPROM的非易失性存储器被称为“快闪”EEPROM。一旦被擦除,然后,可以重新编程该组单元。可一起擦除的该组单元可以包括一个或多个可寻址的擦除单元300。擦除单元或块300通常存储一页或多页数据,页是编程和读取的最小单位,虽然可以在单个操作中编程或读多于一页。每页通常存储一个或多个数据扇区,扇区的尺寸由主机系统来限定。一个例子是遵循随磁盘驱动器建立的标准的512字节的用户数据加上关于用户数据和/或其所存储在的该块的管理开销信息的一些字节的扇区。在图6所示的例子中,存储器阵列200中的各个存储器单元可由诸如WL0-WLy的字线42和诸如BL0-BLx的位线36来访问。该存储器被组织为擦除块,比如擦除块0、1……m..。也参考图5A和5B,如果NAND串50包含16个存储器单元,则该阵列中的第一堆NAND串将可由选择线44和诸如WL0到WL15的字线42来访问。擦除块0被组织为具有一起擦除的第一堆NAND串的所有存储器单元。在另一存储器架构中,可以一起擦除多于一堆的NAND串。二进制(SLC)和多状态(MLC)存储器划分的例子如之前所述,非易失性存储器的例子由场效应晶体管的阵列形成,每个场效应晶体管具有在其沟道区和其控制栅极之间的电荷存储层。电荷存储层或单元可以存储一范围的电荷,带来对于每个场效应晶体管的一个范围的阈值电压。可能的阈值电压的范围跨度为阈值窗。当该阈值窗被划分为阈值电压的多个子范围或区时,每个可分辨的区用于表示存储器单元的不同存储器状态。可以由一个或多个二进制位来编码多个存储器状态。图7图示具有每个单元处于两个可能状态之一的全体单元的二进制存储器。每个存储器单元的阈值窗被单个分界电平划分为两个不同区域。如图7(0)所示,在读取期间,在较低区域和较高区域之间的读取分界电平rV1用于确定单元的阈值电平位于哪个区域。如果该单元的阈值位于较低区域中则其处于“已擦除”状态中,且如果其阈值位于较高区域中则处于“已编程”状态。图7(1)图示存储器初始地具有处于“已擦除”状态中的所有其单元。图7(2)图示一些单元被编程到“已编程”状态。1位或二进制码用于编码这些存储器状态。例如,位值“1”表示“已擦除”状态,且“0”表示“已编程”状态。通常,通过施加一个或多个编程电压脉冲来进行编程。在每个脉冲之后,感测该单元来验证阈值是否已经移动超出验证分界电平vV1。具有这种存储器单元划分的存储器被称为"二进制"存储器或单电平单元(“SLC”)存储器。将看到,二进制或SLC存储器以宽的错误余量来操作,因为整个阈值窗仅被两个区域占据。图8图示具有每个单元处于八个可能状态之一的全体单元的多状态存储器。每个存储器单元的阈值窗由至少七个分界电平划分为八个不同区域。如图8(0)所示,在读取期间,使用读取分界电平rV1到rV7来确定单元的阈值电平位于哪个区域。如果该单元的阈值位于最低区域中则其处于“已擦除”状态中,且如果其阈值位于较高区域中则处于多个“已编程”状态之一。图8(1)图示存储器初始地具有处于“已擦除”状态的所有其单元。图8(2)图示一些单元被编程到“已编程”状态。具有较低位、中间位和较高位的3位码可以用于表示八个存储器状态的每个。例如,分别由“111”、“011”、“001”、“101”、“100”、“000”、“010”和“110”表示“0”、“1”、“2”、“3”、“4”、“5”、“6”和“7”状态。通常,通过施加一个或多个编程电压脉冲来进行编程。在每个脉冲之后,感测该单元来验证该阈值是否已经移动超出作为验证分界电平vV1到vV7之一的基准。具有这种存储器单元划分的存储器被称为“多状态”存储器或多电平单元(“MLC”)存储器。类似地,存储4位码的存储器将具有较低位、第一中间位、第二中间位和较高位,表示十六个状态的每个。通过至少15个分界电平来将阈值窗分界为十六个不同区域。随着存储器的有限阈值窗被划分为更多区域,编程和读取的分辨率将必然变得更精细。因此,多状态或MLC存储器需要以与具有较少的区域的存储器相比更窄的错误余量来操作。换句话说,错误率随着在每个单元中存储的位数量而增加。通常,错误率随着每个单元中存储的位的数量而增加。通常,错误率随着阈值窗中的划分的区域的数量而增加。通过错误校正码(“ECC”)的校正快闪存储器容易出错。为了保证无错误的数据,实施错误校正码(“ECC”)来校正错误。图9示意性地图示包含ECC字段的数据页。如结合图4和图6A描述的,通过并行工作的对应页的感测模块来并行编程和读取一个物理页的存储器单元。当每个存储器单元存储多位数据时,将存在与每个物理页相关的多个数据页。数据页70’包括用户部分72’和系统部分74’。用户部分72’用于存储用户数据。系统部分74’通常由存储器系统使用来存储系统数据。ECC被包括在系统数据中。对数据页计算ECC。通常,通过控制器102中的ECC处理器62计算ECC(见图1)。在从主机接收数据时,在控制器102中阶段性存储(stage)数据页,且通过ECC处理器62来计算其ECC76’。然后,并入了该ECC的数据页被写入到存储器阵列200。通常,当读取该数据页时,数据页被锁存在数据锁存器430中,且从I/O电路440移出到控制器102。在控制器102处,将该数据页的现有ECC与对读取的数据计算的ECC的第二版本相比较。ECC通常包括用于快速检测数据页中的任何错误的错误检测码(“EDC”)。如果EDC指示在读取的数据页中存在任何错误,则调用ECC来校正在读取的数据页中的出错位。可以设计ECC来校正任何数量的错误位。其需要校正的位越多,该ECC将越复杂且越多计算量。为了质量保证,基于在存储器器件的寿命末期(“EOL”)的预期最差情况单元错误率(“CER”)来设计传统ECC。因此,它们需要校正高达统计错误总体的远在尾端的最大数量的错误位。图10A示出全体的百分比在各种范围的标准偏差σ的错误率的正态分布。例如,总体的仅2.1%位于从2σ到3σ的范围内。总体的仅0.1%位于从3σ到4σ的范围内。图10B图示表格格式的图10A的分布。可以看出,总体中的仅E-09或十亿分之一超出6σ。在该表格中的最后列示出了最差情况下的示例存储器器件的估计错误率。例如,总体的5%将具有1个错误位,总体的0.135%将具有4个错误位,且总体的十亿分之一将具有42个错误位。考虑125个存储卡的样本。每个卡具有16GB的容量,每个数据页2KB。这达到每个页为2KB的十亿页的总数。为了保证125个存储卡的样本中没有一个页将在卡的寿命末期具有错误,将需要能够校正高达42位的ECC。在存储器的寿命期间的错误如上所述,通常设计ECC来校正预计的在存储器的可用寿命期间的任何错误。这些错误来自于大量源。图11是列出快闪存储器的主要错误源的表格。图11(A)示出作为在写入页之后出现的位错误的来自写入后的错误EPW(NCYC)的第一源。在快闪存储器中,“编程”指将单元的阈值从已擦除状态增加的处理。该术语将与“写入”可交换地使用。错误率随着编程-擦除循环的数量NCYC而增加。在数据已被写到单元之后,尽管通过了验证操作,但是数据可能仍然由于两个原因而出错。写之后的错误的第一原因是由于未被验证操作检测到的过编程(over-programming)。当要同时编程多个存储器单元时可能发生过编程。这是因为由于包括存储器单元的半导体器件的结构和操作中的小变化,每个存储器单元的特征不同;因此,通常将出现不同单元的编程速度方面的变化。这导致比其他更快地变为已编程的存储器单元,且导致一些存储器单元将被编程到与意图的不同状态的可能性。多个存储器单元的更快编程可能导致过冲(over-shooting)期望的阈值电压电平范围,产生被存储的数据中的错误。通常,当正编程数据时,该器件的编程-验证处理将检查存储器单元的编程的阈值电压是否高于将当前状态与相邻较低编程状态相分界的参考电平。但是,编程-验证不知道该编程的阈值电压高于该参考电平多少。因此,器件通常不保证对阈值电压的上限。一些器件进行检查来查看软编程处理(以下描述)是否将阈值电压升高得太高;但是,这些器件不进行检查来查看常规编程处理是否将阈值电压升高得太高。因此,将阈值电压升高得超出期望状态的范围的过编程可能不被察觉地发生。过编程可能导致存储器单元过冲到下一已编程状态,且因此存储不正确的数据。将在随后的读取操作中检测到该错误,其中,通常相对于分界给定存储器状态的阈值范围的下限和上限来检查单元的编程的阈值。可以在美国专利第5,321,699、5,386,422、5,469,444、5,602,789、6,134,140、6,914,823和6,917,542号中找到关于过编程的更多信息。写之后的错误的第二原因在于由于存储元件之间的场耦合而导致的在存储的电荷电平中的明显偏移。该耦合的程度必然随着存储器单元阵列的尺寸降低而增加,这由于集成电路制造技术的改进而发生。该问题在已在不同时间被编程的两组相邻单元之间最明显地发生。一组单元被编程以向对应于一个数据集的其存储元件添加一个水平的电荷。在用第二数据集编程第二组单元之后,由于电荷对与第一组存储元件电容性耦合的第二组存储元件的影响,因此从第一组单元的存储元件读取的电荷电平通常显得与已编程的不同。具体地,当被感测时,存储器单元将显得具有比其更少扰动时更高的阈值电平(或被更多编程)。这也已知为Yupin效应,且这在美国专利第5,867,429号中描述,该专利通过全部引用被合并于此。该专利描述了物理地相互隔离两组存储元件,或考虑当读取第一组存储元件时电荷对第二组存储元件的影响。图11(B)示出作为由于在EOL处的数据保留而导致的位错误的错误EDR(T,NCYC)的第二源。该错误率随着温度T和编程-擦除循环的数量NCYC而增加。该数据错误是由于该器件的历史。其通常涉及依赖于对环境、例如温度的存储器器件暴露的数据保留问题。随着时间,实际存储的电荷水平可能缓慢地泄漏掉,使得编程的阈值降低。随着在每个存储器单元中存储的状态的数量增加,对存储元件上的已编程电荷电平的任何偏移的容忍度降低。由于随着在每个存储器单元存储元件上存储的状态的数量增加,必然使得为每个存储状态设计的电荷的范围更窄并被放置得更靠近地在一起,所以必须以增加的精确度来进行编程,且降低可以容忍的在存储电荷电平的任何编程后偏移的程度。当编程和读取一个单元时以及当读取、编程和擦除具有与该单元的某程度的电耦合的其他单元、比如相同列或行中的其他单元和共享一个线或节点的其他单元时,可以创建对在该单元中存储的电荷的实际干扰。图11(C)示出作为由于读取干扰而导致的位错误的错误ERD(NR,NCYC)的第三源。该错误率随着读取的数量和编程-擦除循环的数量NCYC而增加。对快闪存储器的一个重要考虑是随着其使用老化,其具有耐用性问题。当重复编程和擦除一个单元时,通过对电介质遂穿,电荷在浮置栅极20中来回进出。每次一些电荷可能变得被捕获在电介质中,且将修改单元的阈值。通过循环计数NCYC(也已知为“热计数”)来测量单元已经历的编程-擦除循环的数量。通过重复循环,对于给定的擦除块,NCYC的值增加,使得该块中的单元的阈值窗逐渐变窄。因此,编程-擦除循环效应将显著影响图11中列出的所有错误源。图12是示出在示例存储器器件的寿命的初期和末期该器件的估计的总错误的表格。图12(A)示出来自图11(A)到图11(C)中列出的三个源的总错误为ETOT(NCYC,NR)=EPW(NCYC)+EDR(T,NCYC)+ERD(NR,NCYC)。图12(B)示出当该存储器相对较新(低NCYC)但已在85℃下烘烤了5年且已经被读取106次时的估计ETOT。对各个分量错误的估计是:EPW(1)~3,EDR(85℃,1)~2,且ERD(1M,1)~0。这些产生了总的估计错误ETOT(1,1M)=3+2+0=5位。图12(C)示出了当存储器接近器件的寿命末期(“EOL”)时的估计ETOT。其特征为高编程-擦除循环(NCYC=10K),其他参数类似于图12(B)的参数。对各个分量错误的估计是EPW(10K)~10,EDR(85℃,10K)~10,且ERD(1M,10K)~1。这些产生了总的估计错误ETOT(10K,1M)=10+10+1=21位。在图11和图12中描述的三个错误源中,通常,由于读取干扰而导致的错误ERD不如由于写入导致的错误EPW和由于数据保存而导致的错误EDR显著。可以通过周期性地在“读清洗(readscrub)”操作中刷新单元的阈值电平来减少数据保留错误。为了校正可能在存储器中出现的各种错误,尤其是在写之后出现的错误,使用EEC(先前结合图9描述)。但是,使用ECC校正错误将消耗处理时间,且其需要校正的位越多,需要的计算时间越多。通过使用能够校正大量错误位的强ECC,存储器性能被降低。可以实施另外的专用硬件来在合理时间量内来进行ECC。这种专用硬件可能在控制器ASIC芯片上占据相当量的空间。图13是图示传统的ECC必须被设计来校正最差情况总错误ETOT的表格。这将是具有高编程-擦除循环计数和数据保持规范的在寿命末期的器件。对于在图12(C)给出的例子,ECC必须能够校正至少21个错误位。从较高密度存储器部分向较低错误率存储器部分适应性重写数据来控制错误率根据本发明的一般方面,具有存储器单元的阵列的快闪存储器被配置有第一部分和第二部分。该第二部分以更高密度存储数据,但用比第一部分更小的错误余量来操作。为了有效存储,数据被写到第二部分。然后,该数据被读回以检查过量的错误位。如果错误位超过了预定量,则该数据被重写到更少错误倾向的第一部分。这对由于将数据写到存储器而产生的错误位的最大数量施加了限制。在错误率的统计分布中,该限制表示对该分布的数量标准偏差的限制,以便可以忽略(具有更高错误率的)分布的远尾端。这允许设计更小和更有效的错误校正码(“ECC”)用于校正较少数量的错误位,由此改善存储器的性能并降低成本。图14A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。存储器单元的阵列200被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储的存储器单元,每个单元存储多位的数据。第一部分410具有被配置为较低密度存储的存储器单元,每个单元存储比第二部分更少数量的位。例如,相比于第二部分中的3位数据,第一部分中的存储器单元被配置以存储1位数据。鉴于先前的讨论,第一部分将以比第二部分宽得多的错误余量来操作。因此,第一部分中的存储器操作将具有比第二部分中的更少的错误。题为“SelectiveOperationofaMulti-stateNon-volatileMemorySysteminaBinaryMode”的美国专利号第6,456,528号公开了一种快闪非易失性存储器,具有通常在多于两个状态中操作的存储器单元,但所选的存储器单元仅在两个状态中操作,以便在两状态操作期间提供增加的余量。这允许在两个状态中操作的存储器单元的更快的编程和更长的操作寿命,此时比起多状态操作提供的数据存储器的增加密度,更期望具有这些优点。US6,456,528的整个公通过参考合并于此。当要向存储器阵列200写入到来的数据页时,为了效率和高容量,优选其被存储在高密度的第二部分中。因此,该数据页的第一复制本被写到第二部分。稍后,在“写入后读取”中读回该数据页的第一复制本以确定是否存在任何错误。这通过与可能被缓存的原始复制本的比较或通过检查ECC的EDC部分来实现。确定在读取的复制本中的错误位的数量是否超出了预定量。如果错误位的数量没有超出预定量,则在第二部分中存储的第一复制本被认为有效。对数据页的随后读取将来自于第二部分中的第一复制本,且将由控制器处的ECC来校正任何错误。如先前结合图11所述的,在编程期间的验证处理仅检查欠编程(under-programming)而不检查过编程。因此,在已经编程-验证了数据页之后可能仍然存在错误。将采取针对所有分界电平的读操作(见图7和图8)来检测该数据页中的任何错误。另外,相邻单元的随后编程的Yupin效应可能干扰所考虑的数据页,且偏移视在的感测结果。因此,读回应该至少在可能对当前数据页具有显著Yupin影响的所有相邻单元的编程之后。在另一实施例中,读回是在包含所考虑的数据页的块中的所有单元都结束编程之后。在美国专利第6,914,823、6,917,542和7,009,889号中也公开了“写入后读取”,它们的全部公开通过参考合并于此。图14B图示将数据页的第二复制本重写到图14A的存储器阵列的第一部分中。在写入后读取检测到数据页中的错误位的数量已经超过预定量之后,该数据页的第二复制本被重写到第一部分。该第二复制本是可能被缓存的或在另一实施例中通过取得第一复制本并用ECC校正错误位的原始数据的第二复制本。在第二复制本被写到第一部分之后,其将替换第二部分中的第一复制本而作为有效复制本。第一复制本将变为废弃的,且在控制器(见图1)的固件中实现的块管理系统中的目录将被更新到对第二复制本的直接的随后访问。在一个优选实施例中,第一部分使每个存储单元存储一位数据,且第二部分使每个存储单元存储多于一位数据。图15是图示根据图14A和图14B中描述的实施例的写入后读取和适应性重写的处理的流程图。步骤500:将存储器配置为第一和第二部分,第一部分具有用比第二部分的错误余量更大的错误余量来操作的存储器单元。步骤510:将一组输入数据的第一复制本编程在第二部分中。步骤520:在预定时间之后从第二部分中读取第一复制本以检查错误。步骤530:错误超出了预定数量的错误位?如果是,前进到步骤540。否则,前进到步骤550。步骤540:将该组输入数据的第二复制本编程在第一部分中。步骤550:标识最后写入的复制本作为有效数据用于随后的读取。步骤560:该组输入数据完成存储在非易失性存储器中。在替换的实施例中,第一部分用作用于到来的数据的缓存,因此输入数据的缓存复制本被编程到该缓存中。然后,该数据的第一复制本被编程到第二部分中。如果写入后读取没有检测到第一复制本中的过量错误,则第一复制本将被视为有效,且随后的读取将被导向访问第一复制本。另一方面,如果写入后读取检测到第一复制本中的过量错误,则在第一部分中的缓存的复制本将替换第二部分中的第一复制本而作为有效数据。该第一复制本将变为废弃的,且在控制器(见图1)的固件中实现的块管理系统中的目录将更新为对缓存的复制本的直接随后访问。题为“Multi-stateNon-volatileFlashMemoryCapableofBeingitsOwnTwoStateWriteCache”的美国专利第5,930,167号公开了具有两个部分的快闪存储器阵列。第一部分被配置为每单元存储一位,且第二部分被配置为每单元存储多于一位。第一部分担当低密度写入缓存。到来的数据首先被缓存在该第一部分中。稍后,在后台,缓存的数据被传输到具有更高存储密度的第二部分。US5,930,167的整个通过参考合并于此。在优选实施例中,第一部分进一步被提供有第一区块(section)和第二区块。到来的数据被缓存在第一部分的第一区块中,且该数据的第一复制本被写到第二部分。然后,第二部分中的第一复制本被读回以检查过量错误位。如果错误位超过预定量,则到来的数据的第二复制本被写到第一部分的第二区块。图16A图示根据本发明的优选实施例的被划分为两个部分且第一部分被提供有缓存区块和重写区块的存储器阵列。如图14A中,存储器单元的阵列200被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储器的存储器单元,每个单元存储多位数据。第一部分410具有被配置为较低密度存储器的存储器单元,每个单元存储比第二部分更少数量的位。因此,第一部分用比第二部分更宽的错误余量来操作。第一部分410进一步被提供有用于缓存到来的数据的第一区块411和用于存储来自第二部分的重写的第二区块412。当要向存储器阵列200写入到来的数据页时,缓存的复制本被缓存在第一部分410的第一区块411中。为了效率和高容量,第一复制本优选存储在高密度的第二部分中。因此,该数据页的第一复制本被写到第二部分。根据另一优选实施例,存储器阵列被提供有在集成电路芯片上的数据锁存器集,通过将第一复制本和缓存的复制本加载到该数据锁存器集中并在该数据锁存器集处进行比较来实现对第一复制本中的错误位的检查。通过不在控制器处进行比较,数据无须被切出到控制器,因此可以节省很多时间。图1示出用于进行数据比较的在芯片上的数据锁存器430。图16B图示根据写入后读取的优选实施例的页比较技术。在“写入后读取”中读回第二部分中的数据页的第一复制本来确定是否存在任何错误。这通过与缓存的复制本相比较来实现。如果错误位的数量没有超出预定量,则在第二部分中存储的第一复制本被认为有效。缓存的复制本将变为废弃的,且在控制器(见图1)的固件中实现的块管理系统中的目录将更新到对该第一复制本的直接随后访问。对数据页的随后读取将来自于第二部分中的第一复制本,且将在控制器处通过ECC来校正任何错误。图16C图示在写入后读取已确定在第二部分中的数据页中的过量错误之后对第一部分的重写。在写入后读取检测到第一复制本的数据页中的错误位的数量超过了预定量之后,该数据页的第二复制本被重写到第一部分410的第二区块412。第二复制本取自缓存的复制本。在第二复制本已被写到第一部分的第二区块412之后,其将替换第二部分中的第一复制本。第一复制本和缓存的复制本将变为废弃的,且在控制器(见图1)的固件中实现的块管理系统中的目录将被更新为对第二复制本的直接随后访问。图17是图示根据图16A到图16C中描述的实施例的写入后读取和适应性重写的处理的流程图。步骤600:将存储器配置为第一和第二部分,该第一部分具有用比第二部分的错误余量更大的错误余量来操作的存储器单元。步骤602:将一组输入数据的缓存的复制本编程在第一部分的第一区块中。步骤610:将该组输入数据的第一复制本编程在第二部分中。步骤620:在预定时间之后从该第二部分中读取第一复制本以检查错误。步骤630:错误超出了预定数量的错误位?如果是,继续到步骤632。否则,继续到步骤650。步骤632:从第一部分的第一区块中读取该组输入数据的缓存的复制本。步骤642:将缓存的复制本作为该组输入数据的第二复制本编程在第一部分的第二区块中。步骤650:标识最后写入的复制本作为有效数据用于随后的读取。步骤660:该组输入数据完成存储在非易失性存储器中。为了例示和描述的目的已经呈现了对本发明的以上详细描述。不意图穷举本发明或将其限制到所公开的精确形式。考虑到上述教导,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理和其实际的应用,从而使得本领域技术人员能够在各种实施例中以及通过适合于所构思的具体用途的各种修改来最佳地使用本发明。意图本发明的范围由附于此的权利要求限定。增强的写入后读取错误管理在本发明的另一方面,实现增强的写入后读取错误管理。在存储器器件的寿命初期不使能写入后读取。在寿命初期存储器器件的错误率非常低,且不需要操作写入后读取。这避免浪费时间来进行写入后读取。由于存储器器件通过使用而老化,在器件的预定年龄时使能本发明的增强的写入后读取和错误管理。在优选实施例中,通过随存储器单元的每个擦除块维持的热计数来确定存储器器件的年龄。该热计数跟踪耐用性和该擦除块通过擦除和编程操作而被循环的次数。无论何时擦除块的热计数超过预定热计数阈值时,增强的写入后读取错误管理将开始并操作直到存储器器件的寿命末期。图18图示被组织为擦除块的存储器。如结合图6先前描述的,每个擦除块是一起被擦除的一组存储器单元。也如先前描述的,当重复编程和擦除一个单元时,通过遂穿电介质,电荷在浮置栅极20(见图2)中来回进出。每次一些电荷可能变得被捕获在电介质中,且将修改单元的阈值。通过循环计数NCYC(也已知为“热计数”)来测量单元已经历的编程-擦除循环的数量。通过重复循环,对于给定的擦除块,NCYC的值增加,该块中的单元的阈值窗逐渐变窄。图18图示其中在每个擦除块(m)中维持热计数NCYC(m)302的优选实施例。由于可编程的单元是一页,因此每个块的热计数可以存储在图9所示的数据页70'的系统数据区中。或者,热计数可以存储在存储器中的主控列表中。每次擦除一个块,其热计数递增一。图19是图示当存储器器件已老化到由该热计数确定的预定程度时被使能的错误管理的流程图。步骤700:提供被组织为存储器单元的擦除块的非易失性存储器,其中,每个擦除块的存储器单元一起被擦除,且随每个块的擦除/编程循环的数量而老化。步骤710:提供用于校正与老化的存储器器件相关的错误的错误管理。在优选实施例中,该错误管理是先前描述的写入后读取的错误管理。步骤720:通过维持记录了每个块经历的擦除/编程循环的数量的热计数来跟踪每个块的年龄。步骤730:存储器块的热计数>预定热计数阈值?在优选实施例中,该预定热计数阈值由存储器中存储的文件系统配置文件中的参数Hot_count_threshold_EPWR给出(见图21)。如果大于,则前进到步骤740,否则前进到步骤750。步骤740:对存储器的剩余寿命使能该错误管理。步骤750:仍不使能该错误管理。在本发明的另一方面的优选实施例中,存储器的高密度存储部分(D3)具有每个存储3位数据的存储器。存储器的更低错误倾向的低密度存储部分(D1)具有每个存储1位数据的存储器单元。输入的数据首先被阶段性存储在D1中,且随后被折叠(fold)到D3中。当增强的写入后读取错误管理被使能时,读回D3中当前的填充的块;且如果错误率超过预定阈值,则当前D3块被拒绝,且进行重试,数据被重新折叠到新的D3块中。再次读回该新D3块,且检查该新D3块的过量错误率。如果新D3块通过了,则其具有良好的数据,且使得D1中的原始数据废弃。如果新D3块再次示出过量错误率,则再次丢弃该新D3块。如果在预定数量的重试之后过量错误率仍持续,则不试图进行进一步的重试,且放弃D1到D3折叠操作,原始数据保持在D1处。此时,该存储器器件被认为太老而不适于进一步的编程操作,且使得该存储器器件只读,以保留存储器器件中存储的现有数据的完整性。图20A-20C图示在被配置有D1和D3部分的存储器中实施写入后读取错误管理的各种例子。在Gorobets等人在2009年12月18日提交的题为"MAINTAININGUPDATESOFMULTI-LEVELNONVOLATILEMEMORYINBINARYNON-VOLATILEMEMORY"的美国申请号12/642,584中也公开了被配置有D1和D3部分的存储器;其整个公开通过参考合并于此。图20A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。存储器单元的阵列200(见图1)被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储的存储器单元,每个单元存储多位数据。第一部分410具有被配置为较低密度存储的存储器单元,每个单元存储比第二部分更少数量的位。例如,第一部分中的存储器单元被配置以存储1位数据,相比于第二部分中的3位数据。每个单元存储1位数据的第一部分也将被称为D1,且每个单元存储3位数据的第二部分被称为D3。鉴于先前的讨论,第一部分将以比第二部分宽得多的错误余量来操作。因此,第一部分中的存储器操作将具有比第二部分中更少的错误。在一个实施例中,第一部分410或D1进一步划分为第一区块411和第二区块412。在步骤(1)中,在主机写入期间,输入数据首先被缓存在第一区块411中或直接被写到第二区块412。如果该输入数据被分段,则其首先被缓存在第一区块中。如果该输入数据是实质的一系列相继数据,则其被逐页直接写到第二区块412中。在步骤(2)中,在任何情况下,输入数据最终结束在第二区块412中,其中写入的页被阶段性存储在虚拟D1块中,比如块m.1、m.2和m.3中。在其中每个块包含来自明确定义的一组逻辑地址的数据的方案中,虚拟块可能不对应于物理块,但仍具有被分布在若干物理D1块上的该组逻辑地址。在步骤(3)中,随着数据逐页被写到D1中,当三个二进制页在D1中时,其可以被复制到D3中的单个3位页,这也称为从D1到D3的折叠。通过实施增强的写入后读取错误管理(“EPWR”),在存储器寿命时间的某时,写入后读取错误管理将开始。在步骤(4)中,在虚拟D1块m.1、m.2和m.3的完整页已被折叠到D3块m中之后,D3块m完成。然后,可以通过EPWR处理它,其中,D3块中的数据被读回且被检查ECC错误。如果ECC错误的数量小于如由在文件系统配置文件中设置的参数E_pw_check给出的那样的预定阈值,则在D3块中的数据被认为是有效的。然后,对应的D1页可以被安全替换且退休。图20B图示其中图20A的D3块未通过写入后读取的测试的另一例子。步骤(1)到步骤(3)与图20A相同。在步骤(4')中,当D3块中的数据被读回时,发现ECC错误的数量大于E_pw_check。这意味着在D3中的数据至多是临界的(marginal),且不能被使用。在步骤(5)中,在现有D3块未通过写入后读取测试的情况下,EPWR通过将数据折叠到新D3块中来指定重试。在步骤(6)中,新D3块中的数据经历另一写入后读取测试。如果其通过了该测试,则新D3块中的数据被视为有效。然后,对应的D1页可以被安全替换且退休。图20C图示其中图20B的新D3块再次未通过写入后读取测试的另一例子。步骤(1)到步骤(5)与图20B相同。在步骤(6')中,当新D3块中的数据被读回时,发现ECC错误的数量大于E_pw_check。这意味着在重试的D3块中的数据仍不良好,且不能被使用。EPWR处理可以指定对另一D3块的进一步重试。重试的数量由文件系统配置文件中的参数EPWR_retries来设置。例如,如果EPWR_retries为1,则在新块未通过该测试之后该处理将结束。在该情况下,在步骤(7)中,不能使用新D3块,而是文件系统将直接访问存在于D1中的对应数据。图21是图示与增强的写入后读取管理相关的示例参数的表格。该表格优选地被维持在存储器中存储的文件系统配置文件中。E_pw_check——在文件系统配置文件中设置的变量,用于指定在ECC位水平的哪个#,D3块被认为是高风险的,且需要重新开始到新D3块的D1到D3折叠。ECC_threshold_SLC——用于维持相对其来比较的SLC阈值以便决定是否继续EPWR所需的在文件系统配置文件中的变量。EPWR_enable_flag——在文件系统配置文件中控制。0=不设置(缺省);1=当使能EPWR时设置。Hot_count_enable_flag——0=不被使能;1=被使能。Hot_count_threshold_EPWR——在文件系统配置文件中设置的变量,用于指定在什么热计数水平,需要EPWR。如果所有D3块的热计数<热计数阈值,则即使EPWR使能标记是被使能,也不触发EPWR处理。EPWR_verify_page_budget——在文件系统配置文件中设置的变量,用于指定可以在EPWR的1阶段期间读取多少页。EPWR_retries——用于限制重试的数量的在文件系统配置文件中的变量。D3_Block_max_retries——用于限制在寿命时间期间对D3块的重试的总数的在在文件系统配置文件中的变量。图22A是图示应用于具有D1到D3折叠的存储器的EPWR错误管理的优选实施方式的流程图。步骤800:开始。步骤810:D1到D3折叠,其中,来自D1的三个二进制数据页的数据被编程到D3的一个第三页(tertiarypage),如结合图20A描述的。步骤812:完全填充了D3块?如果完全填充了,则继续到步骤820,否则返回到步骤810。步骤820:增强的写入之后读取错误管理(“EPWR”)被使能?在图22B中给出了取决于器件年龄的使能的更多细节。如果EPWR被使能,则在步骤830处理EPWR。如果不是,写入的D3块的完整性未知,但乐观地假设为良好。继续到步骤850。步骤830:处理EPWR。在图22C中给出了EPWR的更详细实施方式。步骤840:主要在较高级别处,EPWR进行D3块的写入后读取以及ECC错误率的测试。如果错误不超过E_pw_check(见图21),则D3块是良好的。继续到步骤850。否则,D3块中的数据不能被使用,且考虑将D1数据折叠到新D3块的重试。继续到步骤860。步骤850:D3块被视为良好的,因此,可以使得D1中的数据的原始复制本废弃且退休。步骤860:基于图22C中详细的多个考虑来决定是否对新D3块重试。如果不允许重试,则继续到步骤870。否则,继续到步骤862(如图22C所示)。步骤862:对新D3块重复D1到D3折叠。返回处理另一块。步骤870:在D3块中的数据被视为坏的,因此必须从D1中的原始复制本中访问数据。步骤872:由于在试图重写D3块时的大量不成功重试之后到达该步骤,因此该存储器被视为接近其寿命末期。其被置于只读状态以防止由于编程操作而造成的任何数据讹误。继续到步骤890。步骤890:完成。图22B更详细地图示增强的写入后读取错误管理的取决于器件年龄的使能特征。在图22B中示出图22A中的步骤820进一步包括以下:步骤822:检查EPWR_emable_flag(见图21)是否被使能。如果未被使能,则完全没有实现EPWR。缺省继续到步骤850,其中,D3块被视为良好。如果被使能,继续到步骤824以控制在存储器器件的某些老化之后是否应该开始EPWR。步骤824:检查Hot_count_enable_flag(见图21)是否被使能。如果未被使能,从存储器器件的寿命初期实现EPWR。直接继续到步骤830来处理EPWR。如果该标记被使能,继续到步骤826,其控制EPWR应该何时开始。步骤826:检查D3块中的任何一个是否具有超出Hot_count_threshold_EPWR中的值的热计数。如果未超过,则该存储器器件仍然较新(young),且不易于出现过量错误,继续到步骤850,且基本上EPWR被暂缓(onhold)。如果热计数超过该阈值,则当错误变得明显时,存储器器件到达年龄,且将得益于EPWR处理。继续到步骤830来处理EPWR。图22C更详细地图示在增强的写入后读取错误管理的优选实施方式。在图22C中示出了图22A中的步骤830进一步包括以下:步骤832:检查是否存在可用于进行D3块的写入后读取和可能的重试的处理时间。优选地,在先前中,从在前台执行主机命令期间的未使用的时间中取得可用时间。如果有必要,该处理可以被分割为更小的组块(chunks)以便更好地利用在每个主机命令期间的空闲时间。如果存在开始该处理的可用时间,则继续到步骤834,否则,继续到步骤838。步骤834:开始该处理,或如果该处理已经开始但在中间(interim)被中断,继续该处理。步骤836:从D3读取并转移出数据页到控制器,用于检查EDC(错误检测码)。继续到步骤838。步骤840:EPWR进行D3块的写入后读取以及ECC错误率的测试。如果错误不超过E_pw_check(见图21),则D3块中被测试的页是良好的。继续到步骤842。如果该页被测试为坏的,则D3块中的数据不能被使用,且考虑将D1数据折叠到新D3块的重试。继续到步骤864。步骤842:D3块中的所有页都已被测试?如果不,则继续到步骤844来处理下一页。如果整个块被测试为良好,则继续到步骤850。步骤844:选择在D3块中的下一页。返回到步骤836。步骤862:在试图重试之前,检查重试的数量是否超过设置的限制EPWR_retries(见图21)。如果未超过,则通过继续到步骤866来尝试重试。如果重试的数量超过了设置的限制,则存储器器件被视为在寿命末期,且控制继续到步骤870。步骤866:在尝试重试之前的另一考虑是检查过量错误是否是D1中的数据固有的而不是由于从D1到D3的编程错误而导致的。首先检查D1数据的过量ECC错误。如果错误的数量超过预定阈值,比如ECC_threshold_SLC(见图21),则重试没有意义。返回步骤834来处理另一D3块。但是,相反,如果实现以下描述的可选特征,则相反继续到可选的步骤868。另一方面,如果D1数据是良好的,在步骤869中继续尝试重试另一D3块。在另一实施例中,在步骤862之前进行步骤866。图22C还图示了由具有虚线的框指示的可选特征。由步骤864和865图示用于检查块是否在其寿命时间期间经历了太多的重试的一个选项。如果是,则该块的物理完整性可能是有问题的,并且最好使该块退休以便其不再使用。当实施该选项时,从步骤862中的否开始的流程将进行到步骤864。步骤864:D3块是否经历了多于参数Block_max_retires定义的阈值的重试。如果是,继续到步骤865来退休该块,否则,继续到步骤866以便进行进一步的重写决定。步骤865:D3块在其寿命时间期间经历了太多重试而不被认为是强健的。其退休且从循环(circulation)中被拿出。然后,控制直接继续到步骤869来重写该D3块。另一选项是,在D1数据不是很好的情况下,首先通过ECC对其校正,并在折叠到D3之前将其在D1中重新阶段性存储。当实施此选项时,从步骤866中的是开始的流程将进行到步骤868而不是834。步骤868:通过ECC来校正有问题的D1数据,且在D1中重新阶段性存储。继续到步骤869。加速的写入后读取先前的章节描述了在数据被写入(也称为“编程”)之后实际读回该数据的技术。该技术被称为“PWR”(写入后读取)。根据先前描述的本发明的一个方面,PWR技术是增强的且称为“EPWR”(增强的写入后读取)。在该情况下,仅当需要时启动PWR操作。例如,仅在存储器开始由于使用而发生更多错误之后开始PWR。这将减轻与PWR相关的一些管理开销。根据本发明的另一方面,取代写入后读取每个存储器单元来检查写入了什么,这可能消耗大量时间和系统资源,而仅对存储器单元的小样本进行写入后读取,该小样本表示具有类似错误率的存储器单元的群体(population)。当该样本的写入后读取产生在预定值内的错误率时,该群体被认为通过了该检查。否则,先前写在该群体的单元上的数据被认为具有太多错误,且再次被重写到相同区域中的不同位置或者具有固有的较低错误率的存储器的另一区域。如先前描述,写入后读取检查不同于作为编程操作的部分的一般编程验证。在编程单元时,该单元经历逐脉冲的编程电压。在每个脉冲之间,该单元的编程阈值与参考读取阈值相比较。一旦检测到该单元的阈值被编程超过该参考读取阈值,就通过施加到该单元的位线的编程禁止电压将该单元锁定以不能进一步编程。因此,编程-验证仅保证该单元是否已经编程超过参考阈值,但不给出可能已发生的任何过编程的指示。对于MLC存储器的读取操作实际上检查编程的阈值是否在一对参考阈值之间。在MLC存储器中,每个单元存储多于一位数据。例如,在D2存储器中,每个单元存储两位数据。该单元所支持的阈值窗被参考阈值划分为两半。当单元的编程的阈值位于第一半中时,其具有一位的值,例如“1”,且当位于第二半中时,其具有另一位的值,例如“0”。类似地,在D3存储器中,每个单元存储三位数据,且在D4存储器中,每个单元存储四位数据。通常,对于Dm存储器,每个单元存储m个位,且阈值窗被2m-1个参考阈值划分为2m个电压带。使用编码机制来给每个电压带分配m位码字。2位或4状态存储器的示例优选“LM”编码图23(0)-23(3)图示用优选的2位逻辑码(“LM”码)编码的4状态存储器的逻辑逐页编程。来自一页的每个存储器单元的2个码位形成两个逻辑页,每页从由该页的每个存储器单元贡献的一个码位中形成。可以通过较低页之后较高页的逐个逻辑页地进行编程。该码提供了容错(fault-tolerance),且减轻了BL-BL浮置栅极耦合(Yupin)效应。图23(0)图示了4-状态存储器阵列的阈值电压分布。每个存储器单元的可能的阈值电压跨度是阈值窗,该阈值窗被划分为四个区域以界定四个可能的存储器状态“Gr”、“A”、“B”和“C”。“Gr”是接地状态,其是在收紧的分布内的已擦除状态,且“A”、“B”和“C”是三个逐渐编程的状态。在读取期间,这四个状态通过三个分界参考阈值DA、DB和DC来界定。图23(3)图示了优选的2-位LM编码来表示四个可能的存储器状态。每个存储器状态(即“Gr”、“A”、“B”和“C”)分别由一对“较高、较低”码位来表示,即“11”、“01”、“00”和“10”。该LM编码不同于传统格雷码之处在于,对状态“A”和“C”,较高和较低位被反转。“LM”码已经在美国专利号6,657,891中公开,且益处在于通过避免需要电荷的大改变的编程操作来减小相邻浮置栅极之间的场效应耦合。如将在图23(2)和23(3)中看到的,每个编程操作导致电荷存储单元中电荷的温和改变,如从阈值电压VT的温和改变而显然的。设计该编码以便2个码位“较低”和“较高”位可以被分开编程和读取。当编程较低位时,单元的阈值电平维持在阈值窗的“已擦除”区域中或者移动到阈值窗的“中下(lowermiddle)”区域。当编程较高位时,在这两个区域的任一个区域中的单元的阈值电平被进一步提高到在阈值窗的“较低中间(lowerintermediate)”区域中的略高的电平。图23(1)和23(2)图示使用2位LM码的较低页编程。设计容错LM代码以避免任何随后的较高页编程经任何中间状态而过界(transit)。因此,如果较低位是“1”,则第一轮较低页编程使得单元维持在“已擦除”或“Gr”状态,或者如果较低位是“0”,则该单元被编程到“较低中间”状态。基本上,“Gr”或“接地”状态是通过具有被编程到阈值的恰当定义的范围内的深擦除状态而具有收紧的分布的“已擦除”状态。“较低中间”状态可以具有跨立在存储器状态“A”和“B”之间的阈值电压的宽分布。在编程期间,相对于诸如DA的粗略分界来验证该“较低中间”状态。图23(2)和23(3)图示使用2位LM码的较高页编程。基于第一轮较低页编程来进行该较高页编程。给定的较高位可以代表取决于较低位的值的不同存储器状态。在第二轮编程中,如果单元具有作为“1”的较高位,而较低位处于“1”,即(1,1),则不存在对该单元的编程,且该单元维持在“Gr”。如果较高位是“0”,而较低位处于“1”,即(0,1),则将该单元从“Gr”状态编程到“A”状态。在编程到“A”期间,相对于分界DVA进行验证。另一方面,如果单元具有作为“0”的较高位,而较低位处于“0”,即(0,0),则将该单元从“较低中间”状态编程到“B”。相对于分界DVB进行编程验证。类似地,如果单元具有作为“1”的较高位,而较低位处于“0”,即(1,0),则该单元将从“较低中间”状态编程到“C”。相对于分界DVC进行编程验证。由于较高页编程仅涉及从“Gr”状态或“较低中间”状态编程到下一相邻存储器状态,因此从一轮到另一轮没有大量电荷更改。而且,设计从“Gr”到粗略的“较低中间”状态的较低页编程来节省时间。图24A图示辨别用2位LM码编码的4状态存储器的较低位所需的读取操作。解码将取决于较高页是否已被编程。如果较高页已被编程,则读取较低页将需要相对于分界阈值电压DB的一遍读取(onereadpass)readB。另一方面,如果还没有编程较高页,则较低页将被编程到“中间”状态(见图23(2)),且readB将导致错误。然而,读取较低页将需要相对于分界阈值电压DA的一遍读取readA。为了区分这两种情况,当正编程较高页时,在较高页中(通常在管理开销或系统区域中)写入标记(“LM”标记)。在读取期间,首先将假设已经编程了较高页,因此将进行readB操作。如果读取到LM标记,则该假设正确,且该读取操作完成。另一方面,如果第一读取没有产生标记,这将指示较高页还没有被编程,因此将需要通过readA操作来读取较低页。图24B图示辨别用2位LM码编码的4状态存储器的较高位所需的读取操作。如从图中清楚的,较高页读取将需要2遍读取,分别相对于分界阈值电压DA和DC的readA和readC。类似地,如果较高页还没有被编程,则也可能由“中间”状态混淆较高页的解码。再次,LM标记将指示是否编程了较高页。如果还没有编程较高页,则读取的数据将被复位到“1”,指示较高页数据未被编程。如果该读取如在“全序列”读取或“所有位”读取中那样要扫描过界定的状态的所有序列,则相对于分别由参考阈值电压DA、DB和DC界定的存储器状态“Gr”、“A”、“B”和“C”来进行该读取。由于通过全序列读取来区分所有可能的状态,因此不需要检查任何LM标记。在该读取模式中,一起确定所有位。3位或8状态存储器的示例优选“LM”编码2位LM码的例子可以类似地扩展到3位或更高数量的位。图25(0)-25(4)图示用优选的3位逻辑码(“LM”码)编码的8状态存储器的编程。来自一页的每个存储器单元的3位形成三个逻辑页,且可以逐个逻辑页地进行编程。该码类似于先前描述的2位LM编码,且其扩展为3位以编码八个可能的存储器状态。图25(0)图示了8-状态存储器阵列的阈值电压分布。每个存储器单元的可能的阈值电压跨度为阈值窗,该阈值窗被划分为八个区域以界定八个可能的存储器状态“Gr”、“A”、“B”、“C”、“D”、“E”、“F”和“G”。“Gr”是接地状态,其是在收紧的分布内的已擦除状态,且“A”-“G”是七个逐渐编程的状态。在读取期间,这八个状态由七个分界参考阈值DA–DG界定。图25(4)图示了优选的3-位LM编码以代表八个可能的存储器状态。这八个存储器状态的每个分别由“较高、中间、较低”的三个位来表示,即“111”、“011”、“001”、“101”、“100”、“000”、“010”和“110。”如将在图25(1)和25(4)中看到的,每个编程操作导致电荷存储单元中电荷的温和改变,如从阈值电压VT的温和改变而显然的。设计该编码以便3个码位“较低”、“中间”和“较高”位可以被分开编程和读取。因此,如果较低位是“1”,第一轮较低页编程使得单元维持在“已擦除”或“Gr”状态,或者如果较低位是“0”,则该单元被编程到“较低中间”状态。基本上,“Gr”或“接地”状态是通过具有被编程在阈值的窄范围内的深擦除状态而具有收紧的分布的"已擦除"状态。“较低中间”状态可以具有跨立在存储器状态“B”和“D”之间的阈值电压的宽分布。在编程期间,可以相对于诸如DB的粗略分界参考阈值电平来验证“较低中间”状态。当编程中间位时,单元的阈值电平将从来源于较低页编程的两个区域之一开始,并移动到四个可能的区域之一。当编程较高位时,单元的阈值电平将从来源于中间页编程的四个区域之一开始,并移动到八个可能的存储器状态之一。通常,并行编程一页存储器单元,每个存储器单元具有3个位。因此,该页存储器单元可以被视为具有3个逻辑数据页,每个逻辑数据页由该页的每个单元的一个码位贡献。因此,“较低位”页由该页的每个存储器单元的较低位形成,且“中间位”页由每个单元的中间位形成,且“较高位”页由该页的每个单元的较高位形成。图25(1)和25(2)图示使用3位LM码的较低页编程。设计容错LM码以避免任何随后较高页编程经任何中间状态而过界。因此,如果较低位是“1”,即(x,x,1),第一轮较低页编程使得单元维持在“已擦除”或“Gr”状态,或者如果较低位是“0”,即(x,x,0),则该单元被编程到“较低中间”状态。基本上,“Gr”或“接地”状态是通过具有被编程在阈值的恰当定义的范围内的深擦除状态而具有收紧的分布的"已擦除"状态。“较低中间”状态可以具有跨立在存储器状态“B”和“D”之间的阈值电压的宽分布。在编程期间,相对于诸如DB的分界来验证“较低中间”状态。图25(2)和25(3)图示使用3位LM码的中间页编程。基于第一轮较低页编程来进行该中间页编程。给定的中间位可以代表取决于较低位的不同存储器状态。在第二轮编程中,如果单元将具有作为“1”的中间位,而较低位处于“1”,即(x,1,1),则不存在对该单元的编程,且该单元维持在“Gr”。如果中间位是“0”,而较低位处于“1”,即(x,0,1),则将该单元从“Gr”状态编程到跨立在“A”和“B”之间的第一“中间中等(middleintermediate)”状态。在编程到第一“中间中等”状态期间,相对于分界DVA来进行验证。另一方面,如果单元将具有作为“0”的中间位,而较低位处于“0”,即(x,0,0),则将该单元从“较低中间”状态编程到跨立在“C”和“D”之间的第二“中间中等”状态。相对于分界DVC进行编程验证。类似地,如果单元将具有作为"1"的中间位,而较低页处于“0”,即(x,1,0),则该单元将从“较低中间”状态被编程到跨立在“E”和“F”之间的第三“中间中等”状态。相对于分界DVE进行编程验证。图25(3)和25(4)图示使用3位LM码的较高页编程。基于第一和第二轮、即较低和中间页编程来进行该较高页编程。给定的较高位可以代表取决于较低和中间位的不同存储器状态。在第三轮编程中,如果单元将具有作为“1”的较高位,而较低和中间位处于“1”,即(1,1,1),则不存在对该单元的编程,且该单元维持在"Gr"。另一方面,如果较高位是“0”,而较低和中间位处于“1”,即(0,1,1),则将该单元从“Gr”状态编程到“A”状态。在编程到“A”期间,相对于分界DVA进行该验证。类似地,如果单元将具有作为"0"的较高位,而较低和中间位分别处于“0”和“1”,即(0,0,1),则该单元将从第一“中间中等”状态被编程到“B”。相对于分界DVB进行编程验证。如果单元将具有作为“1”的较高位,而较低和中间位分别处于“0”和“1”,即(1,0,1),则该单元从第一“中间中等”状态被编程到“C”。相对于分界DVC进行编程验证。类似地,如果单元将具有作为“1”的较高位,而较低和中间位分别处于“0”和“0”,即(1,0,0),则该单元从第二“中间中等”状态被编程到“D”。相对于分界DVD进行编程验证。如果单元将具有作为“0”的较高位,而较低和中间位分别处于“0”和“0”,即(0,0,0),则该单元从第二“中间中等”状态被编程到“E”。相对于分界DVE进行编程验证。类似地,如果单元将具有作为“0”的较高位,而较低和中间位分别处于“1”和“0”,即(0,1,0),则该单元从第三“中间中等”状态被编程到“F”。相对于分界DVF进行编程验证。如果单元将具有作为“1”的较高位,而较低和中间位分别处于“0”和“0”,即(1,1,0),则该单元从第三“中间中等”状态编程到“G”。相对于分界DVG进行编程验证。由于较高页编程仅涉及从“Gr”状态或“中间中等”状态之一到下一相邻存储器状态的编程,因此从一轮到另一轮没有大量电荷改变。这帮助减轻BL-BLYupin效应。因此,将看到,可以一次一位地编程Dm(m=1,2,3,……)存储器,且也可以一次一位地读取。当字线WLn上的一组存储器单元被并行编程或读取时,将存在与该组相关的m个数据页,每个数据页对应于来自该组的每个单元的一位。在逐渐读取模式中,相对于参考阈值的子集来进行感测,且在每次感测时,仅从WLn中读取m个数据页之一,且将其转移出到控制器。在全序列读取模式中,相对于所有参考阈值来进行该感测,且在逐页转移出之前从WLn中读取所有m个数据页。例如,在具有图4所示的NAND架构的存储器的情况下,每个NAND串具有n个存储器单元的菊链。在一个实施例中,一行这种NAND链形成图6所示的擦除块300。在图4中,并行对一页存储器单元、比如WL3上的页70进行操作。图9示出了作为字线WLn上的m位存储器的m个数据页之一的数据页70’。如先前描述的,在另一优选实施例中,当具有越来越高的器件集成时,在共享ECC字段的一页中存在大于最佳数量的存储器单元,该页70被划分为更小的单位,由“ECC页”构成。图26A示意性地图示包含类似于图9所示的ECC字段的ECC页。ECC页80包括用户部分82和系统部分84。用户部分82用于存储用户数据。系统部分84通常由存储器系统使用来存储系统数据。ECC被包括在系统数据中。为该ECC页计算ECC。通常,通过控制器102中的ECC处理器62(见图1)计算该ECC。在图26A和图9之间的不同在于,取代占用整个数据页70'的ECC页80,其是构成该数据页的几个ECC页之一。图26B图示构成数据页的多个ECC页。诸如图4所示的数据页70’的数据页是由来自于WL上的一页单元的每个单元的逻辑位构成的数据集。通常,存在构成一个数据页的N个EEC页。例如,N=4,其中,存在构成一个数据页70’的4个EEC页80。在从主机接收数据时,数据的ECC页被阶段性存储在控制器102中,且通过ECC处理器62(见图1)来计算其ECC86。然后,并入其自己的ECC的大量ECC页80然后被阶段性存储并写到存储器阵列200作为数据页70’。通常,当读取数据页70’时,该数据页被锁存在数据锁存器430中,且从I/O电路440移出到控制器102。在控制器102处,该数据页的每个ECC页将其ECC86与对读取的数据计算的ECC的第二版本相比较。ECC通常包括用于快速检测数据页中的任何错误的错误检测码(“EDC”)。如果EDC指示在读取的数据页中存在任何错误,则调用ECC来校正在读取的数据页中的出错位。该ECC被设计为校正高达预定最大数量的错误。实际上,在存储器的寿命中的任何给定时间,ECC可以具有校正少于预定最大值的预定数量的错误的预算。对于2位存储器,每个单元存储2位数据,且将存在与图4的例子中的每个WL相关的2个数据页。如果每个数据页具有4个ECC页,则将存在被编程到WL中且要读出用于PWR检查的总共8个ECC页。类似地,对于3位存储器,每个单元存储3位数据,且将存在与图4的例子中的每个WL相关的3个数据页。如果每个数据页具有4个ECC页,则将存在被编程到WL中且要读出用于PWR(写入后读取)检查的总共12个ECC页。因此,将看到,对于3位存储器,在写入每个WL之后进行PWR检查可以涉及感测12个ECC页,然后运送到控制器用于ECC检查。如果ECC解码器发现12个ECC页中的任何一个超出了预定错误预算,则对该WL的写入被视为不可接受,且在不同WL处进行重试。例如,该写入被重写到相同的块中的或具有较高容错的诸如具有一位单元的存储器的一部分中的另一WL。在3位存储器例子中,存在要感测的3个数据页。如从结合图25的描述中看到,将引起3个读取循环,对于每个数据页一个读取循环。每个读取循环将相对于一个或多个参考阈值来感测,且因此读取该WL将花费时间。另外,每个数据页具有4个ECC页,且需要连续将总共12个ECC页转移到控制器。该转移操作也将花费时间,可能比感测操作更多的时间。对样本而非整个群体的PWR检查在本发明的一般实施例中,通过仅检查已经写入的内容的子集来加速对已经写入的内容的写入后读取(PWR)检查。仅对写入的内容的样本进行该写入后读取检查。图27是图示加速的PWR的一般实施例的流程图。步骤900:提供多组存储器单元,每组中的存储器单元用于并行操作。步骤902:将多个数据子集编程到第一组存储器单元中,每个数据子集被提供有ECC。步骤910:选择被编程在第一组存储器单元中的数据的样本,该样本从编程到第一组中的所述多个数据子集中的一个数据子集中选择。步骤920:读取所述样本。步骤922:检查所述样本的错误。步骤930:无论何时从所述样本检查到的错误多于预定数量的错误位时,将所述多个数据子集重新编程到第二组存储器单元中。在一个实施例中,要检查的该样本是被写到字线上的一组单元的所有ECC页的子集。具体地,该子集是所有ECC页中被估计具有最高错误率的ECC页。图28是图示图27所示的加速的PWR的优选实施例的流程图。除了步骤910被步骤910’替换之外,该处理类似于图27的处理。步骤910’:选择被编程在所述第一组存储器单元中的数据的样本,该样本从被编程到第一组中的所述多个数据子集中的一个数据子集中选择,且所述样本是被编程到第一组中的所述多个数据子集之中被估计具有最高错误率的数据子集。图29图示在字线上的一组3位存储器单元已被写入之后为写入后读取所选择的样本。在该3位存储器中,将存在被写到字线WL42的3个数据页,即,较低、中间和较高页。取决于界定存储器的阈值窗中的各个电压带的参考阈值的设计布置,数据页之一可能具有比另一个略高的错误率。例如,如果较高数据页具有在三个数据页中的估计的最高数据率,则其将被选择。如果所选数据页中的所有ECC页被估计具有相同错误率,则其足够来选择具有第一个被移出到控制器的位置的ECC页。而且,编码机制的选择也可以具有对错误率的容忍。例如,当编程的阈值偏移时,格雷码提供最小的位错误。取决于编码的选择,被存储在相同组的存储器单元中的各个数据页可以具有类似或不同的错误率。实践中,在字线上的错误可能是由于类似于开路或具有不寻常的高电阻的电路中导致的裂缝(crack)的物理缺陷。如果在关注的单元和WL解码器之间出现缺陷,则该检查将示出错误。如果在单元的远离WL解码器的另一侧上出现缺陷,则该检查可能不能示出错误。因此,在沿着WL42的所有ECC页中,在最远离WL解码器40的WL的末端处的样本ECC页82很可能受该缺陷的影响,而不管该缺陷在WL上的位置。因此,在其中存在被写到字线(WL)的多个数据页的优选实施例中,首先从具有最高估计的错误率的数据页中选择用于检查被写到该WL的数据的样本。另外,如果在所选数据页中存在多个ECC页,则为该样本选择位于最远离字线解码器的ECC页。在另一个实施例中,要检查的样本是被写到一块中的一组单元的所有ECC页的子集。该块使得在其中的所有单元可一起擦除。具体地,该子集是所有ECC页中被评估具有最高错误率的ECC页。例如,在图4所示的NAND存储器中,擦除块由一行NAND链构成。每个NAND链是通过其源极和漏极而菊链链接的16个存储器单元,一端终止于源极端,且另一端终止于漏极端。公知的是,最靠近源极端和漏极端的单元更有错误倾向。因此,对于这种块,应该选择字线WL1或WL16。在该情况下,优选地,样本是在最远离字线解码器的WL1末端处的ECC页。在另一实施例中,其中,具有字线集的存储器单元块可作为擦除单位而擦除,且需要必须检查被写到该集的每个字线的数据,否则重写整个块,被估计具有最高错误率的该集的WL优选地首先被检查。以此方式,可能发生的任何错误将早被检测到,且该块的重写可以无延迟地开始。因此,对于图4所示的NAND存储器,首先应该选择字线WL1和WL16来检查。虽然对于被划分为具有每个存储1位数据的存储器单元的第一部分和具有每个存储3位数据的存储器单元的第二部分的存储器给出了例子,但是,本发明不限于该例子。具有同时多页验证的EPWR如之前讨论的,存储器系统可以使用增强的写入后读取(EPWR)处理以便保证用户数据完整性并增加在存在不可筛查的存储器故障时的存储器可靠性,不可筛查的存储器故障比如断裂的字线、控制栅极短路、字线与字线短路等。通常,通过读取每个块并在擦除复制本的源之前验证该块被可靠地存储来完成EPWR。在示例实施例中,这将是在从二进制存储器擦除源复制本之前验证多状态写入。因为这种EPWR方法需要大量时间,且因此可能显著降低编程吞吐量,尤其是在多裸片产品中,其中在对多个裸片进行EPWR时涉及单个控制器成为瓶颈。此部分提供了其中为了更快的进行EPWR的方法同时验证多页的技术。进一步重新考虑对于基本写入后读取实施方式的问题,对于具体例子使用每单元3位的MLC(或D3)实施例,控制器在其编程之后读取整个D3块,向控制器传送全部页并解码它们。这引起了非常高的编程吞吐量损失。例如,假设70MB/秒的ECC引擎,对于单个裸片,4MB块的EPWR时间可能花费每块~60ms(假设ECC是瓶颈)。随着裸片的数量增加,损失相应地变得更大,因为来源于多个裸片的多个块的所有数据需要被传送到单个控制器,且由单个ECC引擎解码。因此,对于4个裸片,EPWR处理可能花费~240ms,这将显著降低编程吞吐量。这类在每个块编程操作之后的非常长的EPWR操作可能显著减慢整个编程吞吐量(例如,在4裸片配置中-25%的降级,假设6MB/秒的原始(raw)编程吞吐量)。之前的部分已经呈现了更快EPWR的各种方法。此部分考虑一个块中的多页的同时验证,其中,控制器评估多页的组合功能,而不是单独地评估每个页。这种基于读取的数据对多页的组合验证可以显著地减少控制器的参与,降低EPWR需要的总线和ECC带宽,并因此当裸片数目大时允许高效的EPWR。在进一步考虑该具体方面之前,讨论用于快速EPWR的若干补充方法,因为这些将被合并在一些实施例中。加速EPWR处理的一种方式是减少读取和评估的数据量到用于识别诸如断裂的字线、控制栅极短路、字线与字线短路等的不可筛查的问题的所需的最小或至少较少的量。(关于断裂或含铅(leady)字线的更多信息在以下美国专利申请中给出:2010年7月9日提交的US12/833,167;2010年7月9日提交的12/833,146;2011年1月28日提交的13/016,732;以及2011年5月5日提交的13/101,765。)可以通过读取仅某些页来减少读取和传送的数据量。例如,在每单元三位的D3NAND实施例中,通过图30所示的映射,读取每个字线中的仅较低和较高页或仅字线的中间页可以足够。原因是可以通过观察一页或两页来识别上述的这类不可筛查NAND问题,使得不需要读取字线的所有3页。例如,读取较低和较高页对识别编程干扰问题(由于在擦除的状态和最低未擦除状态之间的读取)、源引起的泄露电压问题(或SILC,这导致来自最高状态的较低尾部)、或将干扰单元电压分布的任何其他异常NAND问题是足够的。这可以通过参考图30来例示,图30示出具有在分布中示出的较高、中间和较低页值的状态分布和在底部处标出的擦除(Er),A,...,G状态。因为在Er和A状态之间存在较低页读取阈值,所以这可以用于检查将在该读取中显现的编程干扰问题;且因为在F和G状态之间存在较高页读取阈值,因此该读取可以拾取来自G状态的指示SILC相关的错误的较低尾部。如以下讨论的,此部分的一个示例实施例将在进行多页验证处仅使用字线上的最高和最低页。也可以通过检查页的仅部分的有效性来减少读取和传送的数据量。其例子是其中位线被分裂为偶数和奇数集合的存储器或其中可以跨越阵列以另外方式将列分裂为组的存储器,以便仅读取一部分位线可以良好地体现整个字线。在下面的一些实施例中使用的另一例子是读取ECC块(或“Eblock”),这是用ECC编码的数据的单位。这种Eblock通常仅是一页的一部分;但是,这可能足以识别字线的任何部分中的问题。可以使用若干方法来基于读取的数据识别块(或字线)中的问题。一种方式是仅解码数据并计数错误的数量,花费相对长时间的一种方法,具有相对高的功耗,且还可能花费变化的时间量来完成(尤其是在使用ECC系统使用迭代解码时,但在BCH系统中也是这样)。另一方法是基于校正子(syndrome)权重(即,基于不满意的奇偶校验的数量)来估计位错误率(BER)。此选项可用于具有低密度奇偶校验矩阵的ECC。可以估计ECC块(Eblock)的BER为:BE^R=1-(1-2·W/M)1/d2]]>其中W是不满意的奇偶校验的数量,M是奇偶校验的总数,且d是每个奇偶校验中涉及的位数量(假设其是固定的)。实际上,可以离线进行这种计算,且使用查找表(LUT)来将不满意的奇偶校验的数量W转译为估计的BER。这相比于完全解码的优点是其快速且在确定的时间内完成。其还具有小的功耗。另一方法是测量读取的数据的统计,且将其与预期值比较;例如,通过计数每个状态(或在所选择的状态)中的单元的数量且将其与预期值比较。假设该系统使用数据串扰,预期在每单元3位的实施例中的1/8的单元被编程到每个状态。虽然该方法可能比之前讨论的两个方法(其测量/估计BER)较不强健,但是,假设相同数量的数据,其仍然可以允许捕获将显著影响单元电压分布(CVD)的异常存储器问题。在与本申请同时提交的EranSharon和IdanAlrod的题为“Post-WriteReadinNon-VolatileMemoriesUsingComparisonofDataAsWritteninBinaryandMulti-StateFormats”(使用以二进制和多状态格式写入的数据的比较的在非易失性存储器中的写入后读取)的临时美国专利申请No.61/512,749中展开的方法中,通过比较源SLC页与目的地MLC页来测量BER。这可以在闪存中内部进行。这些不同的方法以及在之前的部分中提到的其他方法可以不同地与作为本部分的主要焦点的该类对块中的多页的同时验证相组合。基于读取的数据对多页的组合验证可以显著地减少控制器的参与(即,EPWR的所需的总线和ECC带宽),并因此当裸片的数目大时允许高效的EPWR。该存储器系统评估多页的组合功能以便识别在一页或多页中的问题。其动机是需要检查少得多的数据量,且这可以显著减少来自在这种评估中涉及的控制器总线和ECC引擎的带宽需求。这又允许对大量裸片的高效操作。一个方法是使用多个读取的Eblock的求和取模2(即,XOR)。对于线性ECC(如在实践中使用的LDPC、BCH和大多数ECC方法的情况中),则Eblock的XOR也是有效的Eblock。因此,如果该系统对n个读取的Eblock进行XOR,则结果也是具有由以下给出的BER的Eblock:BER⊕=1-Πi=1n(1-2·BERi)2≅Σi=1nBERi]]>其中,是XOREblock的BER,且BERi是第i个Eblock的BER。因此,如果系统评估XOREblock的BER(诸如通过上述方式),则该系统评估关于其组成的(constituent)Eblock的BER的总和。由此,该系统可以识别Eblock之一中的问题。例如,考虑对n=16个Eblock进行XOR,来自每页一个Eblock。(一页可以具有一个或多个Eblock。)另外假设在编程之后的预计BER是0.1%,且标准方差σ=0.01%。然后,BER的期望值是n·0.1%=1.6%,且标准方差因此,如果高于则这将用作在这些页之一中可能存在问题的指示(采取余量以便保证在正常行为中,跨过阈值的可能性是~1/1000)。在该情况下,可以采用进一步的动作,比如对每页的具体评估或对块的重新编程。在详细研究之后,可以决定将该块标记为坏块,或在之前部分中描述的其他动作中的一些。以防在编程之后不知道BER统计(即,预期的BER及其变化),则当使用BER估计时的可能的担忧是将存在单个有问题的页,而其他页将具有非常低的BER,使得为指示问题而设置的阈值将不被跨过(cross),且我们将不会“捕捉”该问题。例如,对于估计的如果存在n=16页,每个页具有0.1%的BER,则其将不被知道;或如果具有15个BER是0.01%的页和一个BER是1.45%的页(在两种情况下,BER的总和都是1.6%)。为了克服该问题,系统应该确保这些页之间的变化是小的。这可以通过跟踪若干组的参数来进行。例如,如果当前组的参数是15·0.01%+1.45%=1.6%,但先前分组的参数曾经是16·0.01%=0.16%,则这将指示当前组具有有问题的页。考虑系统为了复合函数(function)而一起XOR的Eblock的数量(n),若干因素进入。一个限制是随着n变得更大,n个Eblock上的BER上的“平均”效果变得更显著,且其增加了丢失捕获有问题Eblock的可能性,虽然可以使用在先前段落中描述的解决方案来显著地降低该风险。另一限制取决于用于评估的方法。如果系统正使用解码来估计则其需要基于ECC的错误校正能力来限制例如,如果该系统使用能够校正60个位的BCHECC,且如果预期的在编程之后的位错误的最大数量是10位,则该系统应该限制n为6。如果该系统使用基于校正子权重的BER估计,则该估计有效高达某个错误率;例如,某个LDPC码可以提供高达~3%的BER和高于该错误率的良好的BER估计,该估计错误可能变得太大。在出情况下,如果预期的在编程之后的最大BER是0.3%,则可以一起验证的页的最大数量n应该限制为10。最后,如果该系统使用SLC页的XOR和D3页的XOR之间的比较以便估计则一方面,其不受可以评估的最大的限制。(该方法在如下中讨论:临时美国专利申请No.______,[案号0084567-721US0],与本申请同时提交,EranSharon和IdanAlrod的题为“Post-WriteReadinNon-VolatileMemoriesUsingComparisonofDataAsWritteninBinaryandMulti-StateFormats”(使用以二进制和多状态格式写入的数据的比较的在非易失性存储器中的写入后读取))。另一方面,该系统累计SLC和MLC页两者的错误,增加了未能捕获问题页的风险。另外,该方法需要读取3个源SLC块和目的地D3块,这在读取时间上是不利的,且因此在整个EPWR时间上也是不利的。在该部分的方法中,控制器的参与可以显著地减少,因为在存储器锁存器中内部地进行Eblock的XOR,因此向控制器发送少得多的数据量,且通过ECC核心来评估该数据量。这意味着对于单个裸片或两个裸片或四个裸片或更多裸片的EPWR时间基本上相同,因为EPWR的读取部分在所有裸片中同时进行,且基本上由其读取一块花费的时间来决定(dictate)。例如,假设我们希望通过以下来进行EPWR:读取每个字线中的较低和较高页且通过对n=16个页进行XOR,然后(例如,基于校正子权重)在XOR了的页中的第一个Eblock被发送到控制器BER估计。然后,EPWR处理将如下进行,其中,ADL是(二进制)锁存器,数据初始地从字线WLi读取到该锁存器,且XDL是传送数据锁存器,数据从其传送离开存储器WL,且NXOR是非XOR的简写:读取WL0的较低页到ADL中(ADL=Lower0)读取WL0的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper0)读取WL1的较低页并将其与ADL进行NXOR(ADL=ADLNXORLower1)读取WL1的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper1)读取WL7的较低页并将其与ADL进行NXOR(ADL=ADLNXORLower7)读取WL7的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper7)传送ADL到XDL(XDL=ADL)传送XDL的第一Eblock到控制器进行对传送的Eblock的BER估计读取WL8的较低页到ADL中(ADL=Lower8)(可以与两个先前的阶段并行)读取WL8的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper0)读取WL9的较低页并将其与ADL进行NXOR(ADL=ADLNXORLower1)读取WL9的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper1)读取WL15的较低页并将其与ADL进行NXOR(ADL=ADLNXORLower7)读取WL15的较高页并将其与ADL进行NXOR(ADL=ADLNXORUpper7)传送ADL到XDL(XDL=ADL)传送XDL的第一Eblock到控制器进行对传送的Eblock的BER估计关于可以适当地在此应用的锁存器结构(包括ADL、XDL)的示例实施例的更多细节可以在例如美国专利7,158,421和7,206,230中找到。上述EPWR处理显著地快于现有技术中的方法。假设流水线操作,其中到控制器的传送和BER估计操作(这些仅每n个页读取操作进行一次)与下一页组的读取并行进行,则一块的整体EPWR时间等于读取时间,这是以几毫秒量级的。另外,EPWR时间将对一个裸片、两个裸片和四个裸片保持相同,因为较高页和较低页的读取和XOR可以在所有裸片中并行进行,且传送和BER估计操作(每n个页读取进行一次)需要来自控制器和总线的低带宽。在一些情况下,可以存在进一步加速该处理的方式。刚刚讨论的实施例使用较低和较高页的XOR。参考图30,向8个分布分配3位数据的状态对应于具体的格雷(Grey)映射(“2-3-2”映射)。使用该映射并进行逐页读取,可以通过进行在状态Et和A之间的第一感测、然后进行在状态D和E之间的第二感测来读取较低页。可以通过进行在状态B和C之间的第一感测、然后进行在状态F和G之间的第二感测来读取较高页。在闪存系统中普遍地,多个感测操作以在2个状态之间的初始感测开始,且以在升高的电压下的感测序列而继续。在这种设置中,初始感测操作花费比每个接下来的感测操作更多的时间。这意味着根据图30所示的映射来读取较低和较高页将需要总共4个感测操作,其中2个感测操作(每页中的第一感测)将更长。但是,由于EPWR处理仅使用2页的XOR,因此能够减少2页的读取时间。这可以通过进行在以下的感测操作的序列来进行:在Er和A之间、继而在B和C之间的感测、继而在D和E之间的感测、继而在F和G之间的感测。通过根据交替的“1-2-4”格雷映射来应用较高页的读取,这4个感测操作可以比分别读取两页进行得更快,其中1-2-4格雷映射的较高页正是2-3-2格雷映射的较低页和较高页的XOR。从而,可以使用在1-2-4格雷映射中的对较高页的读取命令来产生2-3-2格雷映射的较低页和较高页的期望的XOR,其中,数据在单个命令中通过2-3-2格雷映射被写入。如果这是可能的,则每个字线的读取时间和整体EPWR读取时间将减少。另外,如果仅读取每个字线中的(或更通常地,一个)中间页是足够的,则将进一步减少EPWR时间(减少了达-33%)。图31是图示在可以将这些集成到编程处理中时的处理的方面的流程图。在1001,存储器系统的控制器从主机接收数据。控制器使用其ECC引擎来为数据的每个Eblock生成对应的ECC,并在1003中在页中形成这些ECC,然后在1005将其通过总线结构传送到存储器器件。虽然示出为将由特定数据集遵循的不同处理的集合,但是在实际器件中,这些步骤将通常并行地进行,如在先前部分中提到或在2011年6月9日提交的美国临时专利申请号61/495,053中进一步描述的。一旦数据被锁存在存储器上,则在1007其被写入到阵列中。在示例的写入处理中,首先将数据写入到二进制缓存中,在这之后将其折叠到多状态存储器中。流程的以下部分被描述为发生在该折叠处理之后,但是在其他情况下,它们可以对二进制存储器中的数据、对直接写为多状态格式的数据、或对二进制存储器执行。EPWR部分开始于1009,读回(readback)页或存储在存储器上的页的部分(例如一个Eblock),并形成合成数据结构1011。虽然在此示出为两个相继的操作,但是,如上所述,在示例实施例中,随着所选的页被相继读取并在存储器器件上的锁存器中被XOR,这实际上以循环来进行。在示例实施例中,然后在1013将合成数据结构传送到控制器,在1015,在控制器处评估形成了合成数据结构的数据的完整性。在其他实施例中,还可以对存储器器件本身进行该确定。可以根据在此描述的各种实施例的任意来进行1015的确定,无论通过确定错误量还是估计错误量、使用ECC还是不使用ECC而基于数据的统计。如果数据降级了,则在1017,如果希望的话,系统可以确定具体的坏页,并且还可以采取上述任何种类的校正动作。现在将在具体实施例的上下文中进一步考虑该处理。该实施例具有多个特征,包括:仅读取每个字线上的最低和最高页;仅检查每个页的第一Eblock;使用BER估计特征来评估来源于n页的n个Eblock的累计BER;将页的组形成为合成体散布该块以应对错误率的变化;以及选择适当的标准。将理解,这些特征将在不同的实施例中而不同,比如使用不同页、Eblock、组、标准等。针对这些特征中的第一个,系统仅读取每个字线中的较高和较低页。(在此该实施例再次每个单元存储3位,但是更通常地,如在4位布置中,可以使用最高和最低页。)如上所述,较低和较高页足够用于识别将扰乱单元电压分布的许多问题(编程干扰、SILC等等)。这在图32中示出,其很大程度上与图30相同,但是现在顶部和底部页的被XOR的值现在跨过底部。在示例系统中,可以进行WL的较高页和较低页的分离的读取。替换地,因为系统实际上仅需要较低页和较高页的XOR(而不是分别对每个页的XOR),因此在一个变型中,通过使用具有4个感测操作(Er&A,B&C,D&E,F&G)的相继类型的读取可以进一步减少读取时间,以使用单个读取命令且在更短时间内产生较低页⊕较高页。可以使用在1-2-4格雷映射中的较高页的逐页读取来进行这种读取,如上所述。而且如上所述,如果在存储器锁存器和阵列之间存在良好交错,则仅使用每个页一个Eblock(在此是第一个)作为来源于散布在整个字线上的单元的Eblock的单元。在存储器器件的示例实施例中,布置该锁存器结构(上述ADL和XDL锁存器),使得Eblock存储在该锁存器结构的连续段中。此具体实施例使用位错误率(BER)估计(例如基于校正子权重或基于解码)来评估来源于n页的n个Eblock、即每页中的第一Eblock的累计BER。可以在存储器电路中内部地XOR所有读取的页,在被XOR的页中的第一Eblock被传送到控制器,且使用ECC引擎来估计其BER。由于沿着块的字线的错误率的可能的变化,为了在不同页组之间具有错误率均一性,则优选地,每组由均等地散布在块上的n页来构成。这改进了对有问题的组的检测,如果这种组存在,因为有问题的组相比于预期由于散布而具有大致相同的累计BER的所有其他组将具有显著不同的累计BER。考虑例如在每个单元存储3位的X3闪存系统中的包括256个逻辑页的块。在该情况下,第一较低页将是页0,第一较高页将是页2,这两页存储在相同的字线(例如WL0)中。第二较低页将是页3,第二较高页将是页5,两者存储在WL1中,等等。为了生成沿着所有字线上散布的页组,可以将多个较低页和较高页交错到这些页组中。例如,如果每个页组将由9个逻辑页构成,则将需要19个组,且可以如下选择交错:页组0:0295786114143171200228页组1:2305987116144173201230页组2:3326089117146174203231页组3:5336290119147176204233页组4:6356392120149177206234页组5:8366593122150179207236页组6:9386695123152180209237页组7:11396896125153182210239页组8:12416998126155183212240页组9:14427199128156185213242页组10:154472101129158186215243页组11:174574102131159188216245页组12:184775104132161189218246页组13:204877105134162191219248页组14:215078107135164192221249页组15:235180108137165194222251页组16:245381110138167195224252页组17:265483111140168197225254页组18:275684113141170198227255在表1的EPWR过程“伪码”中提供生成页组的系统方式。作为可疑块的标准,一个例子是考虑在编程之后立即具有BER>0.2%的一页或多页的块。在此,每页的BER阈值可以被定义为BERTH=0.2%。一块的EPWR过程将产生19个BER估计:w0,wj,...,w18(每个页组的一个校正子权重数)。使得以及将基于BERmax、BERmin来检测可疑块,如果:BERmax-n-1nBERmin>BERTH⇒BERmax+8·(BERmax-BERmin)>9·BERTH]]>在满足上述条件的情况下,则通过读取该组的9个页的每页中的第一Eblock并对其进行BER估计以产生评估w来进行对应于wmax的页组的仔细检查(closeexamination)。如果对于该组中的一页或多页,w>BERTH,则该块被标记为可疑的。对最差组的这种检查将花费该块的EPWR时间的小于10%。因此,“假警报”的损失相对少。当检测到可疑块时,各种操作类似于在先前部分中讨论的那些操作。例如,该块的数据可以被重新编程到不同的块中(因为该数据处于风险)。另外,如果该块先前被标记为可疑的(即,这是第二次在该块中检测到问题),则可以将该块标记为坏的。在该例子中,可疑块的条件被选择为保守的,以便以更高数量的假警报为代价而避免漏检测,该漏检测将通过最差页组(对应于BERmax)的仔细检查而筛选。注意,假警报的损失是相对少的——在假警报的情况下,在最差组中的9个页需要被读取,且基于其第一个Eblock而估计其BER。这花费对于该块的EPWR时间的少于10%。可疑块条件背后的推理如下:漏检测的最有风险的情况是最差组包括一个“坏的”页,而所有其他n-1个页都非常好。为了捕捉到它,假设在该最差组中的非常好的页具有等于最好组的平均BER的BER——即,好页的然后,在最差组中的“坏”页的BER由以下给出:BERmax-(n-1)·BER(goodpage)=BERmax-(n-1)·BERminn]]>在假警报率高的情况下,则可以稍微更改上述条件。稍微更不保守的替换条件可以是:其中BERavg是对最佳的k个组的BER估计的平均值,其中k可以被优化。以此方式,良好页的代表性BER被确定为预期仅具有良好页的分组的平均BER。由于相邻页在不同组之间的散布,因此预期存在具有一个坏页的至多4个页组。断裂的字线将有贡献将处于两个不同的页组中的2个坏页(较低页和较高页)。字线与字线的短路可以贡献将处于4个不同页组中的4个坏页(来自相邻字线的两个较低页和两个较高页)。因此,如果BERavg被计算为最佳k个组的平均BER,其中k小于16,则其应该是对不包括坏页的组的平均值。例如,选择k=10将意味着对该块的较好的一半的平均。表1结论先前部分可以提供多个优点,包括显著更快的EPWR操作。它们也可以需要在控制器和存储器之间的更少的总线带宽。它们还可以需要来自控制器硬件的更少的带宽。各种实施例允许存储器系统中的高效的多裸片EPWR操作。已经为了例示和描述来呈现了本发明的前述的详细描述。不意图穷举或限制本发明到所公开的精确的形式。在上述教导下,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理和其实际的应用,从而使得本领域技术人员能够在各种实施例中且通过适合于所构思的具体用途的各种修改来最佳地使用本发明。意图本发明的范围被附于此的权利要求所限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1