通过写入后读取和适应性重写来管理错误的非易失性存储器和方法

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

发明内容
从较高密度存储器部分向较低错误率存储器部分适应性重写数据来控制错误率根据本发明的一般方面,提供一种写入后读取错误管理,其中具有存储器单元的阵列的快闪存储器被配置有第一部分和第二部分。该第二部分以更高密度存储数据,但用比第一部分更小的错误余量来操作。为了有效存储,数据被写到第二部分。然后,在写入后读取操作中读回该数据来检查过量的错误位。如果错误位超过了预定量,则数据被重写到或保持在更少错误倾向的第一部分。这对由于将数据写到存储器而产生的错误位的最大数量施加了限制。在错误率的统计分布中,该限制表示对该分布的数量标准偏差的限制,以便可以忽略(具有更高错误率的)分布的远尾端(far tail end)。这允许设计更小和更有效的错误校正码(“ECC”)用于校正较小数量的错误位,由此改善存储器的性能并降低成本。在一个优选实施例中,第一部分使每个存储器单元存储一位数据,且第二部分使每个存储器单元存储多于一位数据。在替换的实施例中,第一部分用作用于到来的数据的缓存,因此输入数据的缓存副本被编程到该缓存中。然后,数据的第一副本被编程到第二部分中。如果写入后读取没有检测到第一副本中的过量错误,第一副本将被视为有效,且随后的读取将被导向访问第一副本。另一方面,如果写入后读取已检测到第一副本中的过量错误,在第一部分中的缓存的副本将替换第二部分中的第一副本作为有效数据。第一副本将变为废弃的,且随后访问将被导向该缓存的副本。在优选实施例中,第一部分进一步被提供有第一区块和第二区块。到来的数据被缓存在第一部分的第一区块中,且该数据的第一副本被写到第二部分。然后,第二部分中的第一副本被读回以检查过量 错误位。如果错误位超过预定量,到来的数据的第二副本被写到第一部分的第二区块。根据另一优选实施例,存储器阵列被提供有在集成电路芯片上的数据锁存器集,通过将第一副本和缓存的副本加载到该数据锁存器集中并在该数据锁存器集处进行比较来实现在第一副本中的错误位的检查。在替换实施例中,在写入后读取已检测到第一副本中的过量错误之后,第一部分中的缓存的副本将替换第二部分中的第一副本作为有效数据。第一副本将变为废弃的,且在控制器(见图I)的固件中实现的块管理系统中的目录将更新为对该缓存的副本的直接随后访问。因此,当向存储器的高密度存储部分写入时,写入后读取检查错误率是否在规定的限制内。如果不是,则数据被重写到或保持在存储器的另一更小错误倾向的部分。相比高密度存储部分,更少错误倾向的部分通常具有每单元存储更少数据位的每个存储器单元。通过提供机制来控制并限制在向高密度存储器写入之后产生的错误,以及如果在高密度存储器中的副本具有过量错误则提供第二机会来重写具有更少错误的数据,ECC将需要校正的错误率的数量显著减少。以另外的写入后读取和对较低密度存储器部分的不频繁的另外的重写的微小开销获得该优点。例如,存储器的高密度存储部分具有存储3位数据的每个存储器单元。更少错误倾向的部分具有存储I位数据的每个存储器单元。估计通过将错误率限制在三个标准偏差(3 0)内,而不是6 O的传统最差情况方式,ECC仅需要校正4位而不是42位。限制到3 o是预期总体的0. 13%具有超过4位的错误率。带来的代价是,在具有多于4个错误位(总体的0. 13% )的高密度存储器中写入的数据将简单地使得数据被重写到更低密度存储器来避免超过错误限制。相比较,在传统方式中,为最差情况设计的校正42位写错误的ECC一直携带大的管理开销,尽管大多数时间其仅需要校正少得多数量的位。增强的写入后读取错误管理在本发明的另一方面,实现增强的写入后读取错误管理。在存储器器件的寿命初期不使能写入后读取。在寿命初期存储器器件的错误率非常低,且不需要操作写入后读取。这避免浪费时间来进行写入后读取。由于存储器器件通过使用而老化,在器件的预定年龄时使能本发明的增强的写入后读取和错误管理。在优选实施例中,通过随存储器单元的每个擦除块维持的热计数来确定存储器器件的年龄。该热计数跟踪耐用性和该擦除块通过擦除和编程操作而被循环的次数。无论何时擦除块的热计数超过预定热计数阈值时,增强的写入后读取错误管理将开始并操作直到存储器器件的寿命末期。在本发明的另一方面的优选实施例中,存储器的高密度存储部分(D3)具有存储3位数据的每个存储器。存储器的更低错误倾向的低密度存储部分(Dl)具有存储I位数据的每个存储器单元。输入的数据首先阶段性存储(stage)在Dl中,且随后将其折叠(fold,折叠存入)到D3中。当增强的写入后读取错误管理被使能时,读回D3中当前的填充的块;且如果错误率超过预定阈值,则当前D3块被拒绝,且进行重试,数据被重新折叠到新的D3块中。再次读回该新D3块,且检查该新D3块的过量错误率。如果新D3块通过了,则其具有良好的数据,且使得Dl中的原始数据废弃。如果新D3块再次示出过量错误率,则再次丢弃该新D3块。如果在预定数量的重试之后过量错误率仍持续,则不试图进行进一步的重试,且放弃Dl到D3折叠操作,原始 数据保持在Dl处。此时,该存储器器件被认为太老而不适于进一步的编程操作,且使得该存储器器件只读,以保留存储器器件中存储的现有数据的完整性。


图I图示与体现本发明的特征的存储器器件通信的主机。图2示意性地图示了非易失性存储器单元。图3图示了存储器单元的NOR阵列的例子。图4图示了被并行感测或编程的在例如NAND配置中组织的一页存储器单元。图5A将图I所示的感测模块更详细地图示为包含跨过存储器单元的阵列的一堆P个感测模块。图5B图示包括感测放大器的感测模块。图6示意性地示出在可擦除块中组织的存储器阵列的例子。图7图示具有每个单元处于两个可能状态之一的全体单元的二进制存储器。图8图示具有每个单元处于八个可能状态之一的全体单元的多状态存储器。图9示意性地图示包含ECC字段的数据页。图IOA示出全体的百分比在各种范围的标准偏差O的错误率的正态分布。图IOB图示表格形式的图IOA的分布。图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是图示应用于具有Dl到D3折叠(folding)的存储器的EPWR错误管理的优选实施方式的流程图。图22B更详细地图示增强的写入后读取的错误管理的取决于器件年龄的使能特征。图22C更详细地图示增强的写入后读取错误管理的优选实施方式。
具体实施例方式存储器系统图I图示与其中体现本发明的特征的存储器器件通信的主机。主机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),并将它们映射并存储到存储器阵列的物理结构。在2009年I月I日提交的美国专利申请第12/348,891号中公开了优选的块管理系统,其整个公开被引用合并于此。固件60提供代码以实现控制器102的功能。错误校正码("ECC")处理器62在存储器器件的操作期间处理ECC。在另一实施例中,在主机内实现控制器102。物理存储器结构图2示意性地图示了非易失性存储器单元。存储器单元10可以由具有诸如浮置栅极或介电层的电荷存储单元20的场效应晶体管实现。存储器单元10还包括源极14、漏极16和控制栅极30。存在当今正使用的许多商业成功的非易失性固态存储器器件。这些存储器器件可以使用不同类型的存储器单元,每个类型具有一个或多个电荷存储元件。典型的非易失性存储器单元包括EEPROM和快闪EEPR0M。在美国专利第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 :ANovel Localized Trapping, 2~Bit NonvolatileMemory Cell”,IEEE Electron Device Letters,vol. 21,no. 11,2000 年 11 月,543-545 页和美国专利第5,768,192和6,011,725号。实践中,通常通过当向控制栅极施加参考电压时感测跨过单元的源极和漏极的导电电流来读取该单元的存储器状态。因此,对于单元的浮置栅极上的每个给定的电荷,可以检测到针对固定参考控制栅极电压 的相应导电电流。相反,阈值电压被定义为以给定的电荷将刚好导通该单元的在控制栅极上的电压。类似地,可编程到浮置栅极上的电荷的范围定义了对应的阈值电压窗或对应的导电电流窗。或者,代替检测在划分的电流窗之间的导电电流,能够在控制栅极处在测试下为给定存储器状态设置阈值电压,并检测导电电流是低于还是高于阈值电流。在一个实施方式中,通过检查导电电流通过位线的电容或已知电容器而放电的速率来实现针对阈值电流检测导电电流。如可以从上述描述看出的,使得存储器单元存储的状态越多,其阈值窗划分得越精细。例如,存储器器件可以具有拥有范围从-I. 5V到5V的阈值窗的存储器单元。这提供了 6. 5V的最大宽度。如果该存储器单元要存储16个状态,则每个状态可以在阈值窗中占据200mV到300mV。这将需要在编程和读操作中的更高的精度以便能够实现需要的分辨率。存储器阵列200通常被组织为在行和列中排列且可由字线和位线寻址的二维阵列的存储器单元。可以根据NOR类型或NAND类型架构来形成该阵列。图3图示了存储器单元的NOR阵列的例子。在存储器阵列200中,每行存储器单元通过其源极14和漏极16以菊链方式连接。该设计有时称为虚拟接地设计(virtual grounddesign)。一行中的单元10使其控制栅极30连接到诸如字线42的字线。一列中的单元使其源极和漏极分别连接到诸如位线34和36的所选位线。图4图示了被并行感测或编程的在例如NAND配置中组织的一页存储器单元。图4主要示出了存储器阵列200中的NAND串50的堆(bank)。NAND串50包括通过其源极和漏极菊链链接的一系列存储器晶体管(例如4、8、16个或更多)。一对选择晶体管SI、S2控制存储器晶体管链分别经由NAND串的源极端和漏极端与外部的连接。在存储器阵列中,当导通源极选择晶体管SI时,源极端耦合于源极线34。类似地,当导通漏极选择晶体管S2时,NAND串的漏极端耦合于存储器阵列的位线36。在该链中的每个存储器晶体管10担当存储器单元。其具有电荷存储元件20来存储给定量的电荷以便表示意图的存储器状态。每个存储器晶体管的控制栅极允许对读取和写入操作的控制。一行NAND串的对应存储器晶
体管的控制栅极都连接到相同字线(比如WL0、WL1,......)。类似地,(分别经由选择线
SGS和SGD访问的)每个选择晶体管SI、S2的控制栅极提供分别经由其源极端和漏极端对NAND串的控制访问。当在编程期间读或验证在NAND串内的被寻址的存储器晶体管10时,经由公共字线向其控制栅极供应适当的电压。同时,通过对NAND串50中的剩余未寻址的存储器晶体管的控制栅极施加足够的电压来完全导通该剩余未寻址的存储器晶体管。以此方式,有效地创建了从各个存储器晶体管的源极到NAND串的源极端的导电路径,且类似地对于各个存储器晶体管的漏极到该单元的漏极端创建了导电路径。在美国专利第5,570,315、5,903,495、6,046,935号中描述了具有这样的NAND串结构的存储器器件。诸如页70的"页"是被使得能够并行被感测或编程的一组存储器单元。这通过相应页的感测放大器来实现。例如,页70沿着一行,且通过施加到共同连接到字线WL3的、该页的单元的控制栅极的感测电压来感测。沿着每列,诸如单元10的每个单元可由感测放大器经由位线36来访问。以上所称的页是物理页存储器单元或感测放大器。这取决于上下文,在每个单元都存储的情况下。感测电路和抟术图5A将图I所示的感测模块更详细地图示为包含跨过存储器单元的阵列的一堆p个感测模块。并行地工作的整堆P个感测模块480允许沿着一行的一组(或物理页)p个单元10被并行读取或编程。基本上,感测模块I将感测在单元I中的电流I1,感测模块2
将感测在单元2中的电流I2,......,感测模块p将感测在单元p中的电流Ip,等等。该页
的从源极线34流出到聚集节点CLSRC中且从那里流到地的总单元电流iT0T将是p个单元中的所有电流的总和。在传统的存储器架构中,具有公共字线的一行存储器单元形成两个或多个页,其中,在一页中的存储器单元被并行读取和编程。在一行具有两页的情况下,一页被偶数位线访问,且另一页被奇数位线访问。一个物理页的感测电路在任一时间被耦合到偶数位线或耦合到奇数位线。在当前生产的芯片中,物理页可以是64k或更大。在优选实施例中,组是一系列(arun of)整行单元。这是所谓的“全位线”架构,其中,该页由分别耦合于连续位线的一行连续的存储器单元构成。图5B图示包括感测放大器的感测模块。感测放大器490检测单元的导电电流高于还是低于参考水平。感测的结果被锁存在对应的锁存器集430中(见图I)。擦除块在快闪存储器和其他类型存储器之间的一个重要差别是必须从已擦除状态编程单元。也就是说,浮置栅极必须首先清空电荷。然后,编程向浮置栅极添加回期望的电荷量。其不支持将电荷的一部分从浮置栅极移除以从较高的编程状态去往较低的编程状态。这意味着,更新的数据不能重写已有的数据,且必须被写到先前未写入的位置。另外,擦除要将所有电荷从浮置栅极中清空,且通常花费相当多的时间。由于这个原因,这将很麻烦,且逐单元或甚至逐页地擦除是很慢的。实践中,存储器单元的阵列被划分为大量存储器单元块。如对于快闪EEPROM系统共同的,该块是擦除的单位。S卩,每个块包含一起被擦除的最小数量的存储器单元。图6示意性地示出在可擦除块中组织的存储器阵列的例子。电荷存储存储器器件的编程仅会导致向其电荷存储元件添加更多的电荷。因此,在编程操作之前,必须移除(或擦除)在存储器单元的电荷存储元件中的已有电荷。当一起(即,在一次快闪中)电擦除整个单元阵列200、或该阵列的大量单元组时,诸如EEPROM的非易失性存储器被称为“快闪”EEPR0M。一旦被擦除,然后,可以重新编程该组单元。可一起擦除的该组单元可以包括一个或多个可寻址的擦除单元300。擦除单元或块300通常存储一页或多页数据,页是编程和读取的最小单位,虽然可以在单个操作中编程或读多于一页。每页通常存储一个或多个数据扇区,扇区的尺寸由主机系统来限定。一个例子是遵循随磁盘驱动器建立的标准的512字节的用户数据加上关于用户数据和/或其所存储在的该块的管理开销信息的一些字节的扇区。在图6所示的例子中,存储器阵列200中的各个存储器单元可由诸如WLO-WLy的字线42和诸如BLO-BLx的位线36来访问。该存储器被组织为擦除块,比如擦除块O、
I......m..。也参考图5A和5B,如果NAND串50包含16个存储器单元,则该阵列中的第一 堆NAND串将可由选择线44和诸如WLO到WL15的字线42来访问。擦除块0被组织为具有一起擦除的第一堆NAND串的所有存储器单元。在另一存储器架构中,可以一起擦除多于一堆的NAND串。二进制(SLC)和多状态(MLC)存储器划分的例子如之前所述,非易失性存储器的例子由场效应晶体管的阵列形成,每个场效应晶体管具有在其沟道区和其控制栅极之间的电荷存储层。电荷存储层或单元可以存储一范围的电荷,带来对于每个场效应晶体管的一范围的阈值电压。可能的阈值电压的范围跨度为阈值窗。当该阈值窗被划分为阈值电压的多个子范围或区时,每个可分辨的区用于表示存储器单元的不同存储器状态。可以由一个或多个二进制位来编码多个存储器状态。图7图示具有每个单元处于两个可能状态之一的全体单元的二进制存储器。每个存储器单元的阈值窗被单个分界电平划分为两个不同区域。如图7(0)所示,在读取期间,在较低区域和较高区域之间的读取分界电平rVl用于确定单元的阈值电平位于哪个区域。如果该单元的阈值位于较低区域中则其处于"已擦除"状态中,且如果其阈值位于较高区域中则处于"已编程"状态。图7(1)图示存储器初始地具有处于"已擦除"状态中的所有其单元。图7(2)图示一些单元被编程到"已编程"状态。I位或二进制码用于编码这些存储器状态。例如,位值“I”表示“已擦除”状态,且“0”表示“已编程”状态。通常,通过施加一个或多个编程电压脉冲来进行编程。在每个脉冲之后,感测该单元来验证阈值是否已经移动超出验证分界电平vVl。具有这种存储器单元划分的存储器被称为"二进制"存储器或单电平单元("SLC")存储器。将看到,二进制或SLC存储器以宽的错误余量来操作,因为整个阈值窗仅被两个区域占据。图8图示具有每个单元处于八个可能状态之一的全体单元的多状态存储器。每个存储器单元的阈值窗由至少七个分界电平划分为八个不同区域。如图8(0)所示,在读取期间,使用读取分界电平rVl到rV7来确定单元的阈值电平位于哪个区域。如果该单元的阈值位于最低区域中则其处于"已擦除"状态中,且如果其阈值位于较高区域中则处于多个"已编程"状态之一。图8(1)图示存储器初始地具有处于"已擦除"状态的所有其单元。图8(2)图示一些单元被编程到"已编程"状态。具有较低位、中间位和较高位的3位码可以用于表示八个存储器状态的每个。例如,分别由“111”、“011”、“001”、“101”、“100”、“ 000 ”、“ 010 ” 和 “ 110 ” 表示“ 0 ”、“ I ”、“ 2 ”、“ 3 ”、“ 4 ”、“ 5 ”、“ 6 ” 和“ 7 ” 状态。通常,通过施加一个或多个编程电压脉冲来进行编程。在每个脉冲之后,感测该单元来验证该阈值是否已经移动超出作为验证分界电平W1到vV7之一的基准。具有这种存储器单元划分的存储器被称为"多状态"存储器或多电平单元("MLC")存储器。类似地,存储4位码的存储器将具有较低位、第一中间位、第二中间位和较高位,表示十六个状态的每个。通过至少15个分界电平来将阈值窗分界为十六个不同区域。随着存储器的有限阈值窗被划分为更多区域,编程和读取的分辨率将必然变得更精细。因此,多状态或MLC存储器需要以与具有较少的区域的存储器相比更窄的错误余量来操作。换句话说,错误率随着在每个单元中存储的位数量而增加。通常,错误率随着每个单元中存储的位的数量而增加。通常,错误率随着阈值窗中的划分的区域的数量而增加。
通过错误校IH码(“ECC”)的校IH快闪存储器容易出错。为了保证无错误的数据,实施错误校正码(“ECC”)来校正错误。图9示意性地图示包含ECC字段的数据页。如结合图4和图6A描述的,通过并行工作的对应页的感测模块来并行编程和读取一个物理页的存储器单元。当每个存储器单元存储多位数据时,将存在与每个物理页相关的多个数据页。数据页70’包括用户部分72’和系统部分74’。用户部分72’用于存储用户数据。系统部分74’通常由存储器系统使用来存储系统数据。ECC被包括在系统数据中。对数据页计算ECC。通常,通过控制器102中的ECC处理器62计算ECC(见图I)。在从主机接收数据时,一页数据阶段性存储在控制器102中,且通过ECC处理器62来计算其ECC 76,。然后,并入了该ECC的数据页被写入到存储器阵列200。通常,当读取该数据页时,数据页被锁存在数据锁存器430中,且从I/O电路440移出到控制器102。在控制器102处,将该数据页的现有ECC与对读取的数据计算的ECC的第二版本相比较。ECC通常包括用于快速检测数据页中的任何错误的错误检测码("EDC")。如果EDC指示在读取的数据页中存在任何错误,则调用ECC来校正在读取的数据页中的出错位。可以设计ECC来校正任何数量的错误位。其需要校正的位越多,该ECC将越复杂且越多计算量。为了质量保证,基于在存储器器件的寿命末期("E0L")的预期最差情况单元错误率("CER")来设计传统ECC。因此,它们需要校正高达统计错误总体的远在尾端的最大数量的错误位。图IOA示出全体的百分比在各种范围的标准偏差O的错误率的正态分布。例如,总体的仅2. I %位于从2 O到3o的范围内。总体的仅0. I %位于从3 O到4o的范围内。图IOB图示表格格式的图IOA的分布。可以看出,总体中的仅E-09或十亿分之一超出60。在该表格中的最后列示出了最差情况下的示例存储器器件的估计错误率。例如,总体的5%将具有I个错误位,总体的0. 135%将具有4个错误位,且总体的十亿分之一将具有42个错误位。考虑125个存储卡的样本。每个卡具有16GB的容量,每个数据页2KB。这达到每个页为2KB的十亿页的总数。为了保证125个存储卡的样本中没有一个页将在卡的寿命末期具有错误,将需要能够校正高达42位的ECC。在存储器的寿命期间的错误如上所述,通常设计ECC来校正预计的在存储器的可用寿命期间的任何错误。这些错误来自于大量源。图11是列出快闪存储器的主要错误源的表格。图Il(A)示出作为在写入页之后出现的位错误的来自写入后的错误Epw(Nctc)的第一源。在快闪存储器中,“编程”指将单元的阈值从已擦除状态增加的处理。该术语将与"写入"可交换地使用。错误率随着编程-擦除循环的数量Nere而增加。在数据已被写到单元之后,尽管通过了验证操作,但是数据可能仍然由于两个原因而出错。写之后的错误的第一原因是由于未被验证操作检测到的过编程(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⑶示出作为由于在EOL处的数据保留而导致的位错误的错误Edk(T,Nctc)的第二源。该错误率随着温度T和编程-擦除循环的数量Nere而增加。该数据错误由于该器件的历史。其通常涉及依赖于对环境、例如温度的存储器器件暴露的数据保留问题。随着时间,实际存储的电荷水平可能缓慢地泄漏掉,使得编程的阈值降低。随着在每个存储器单元中存储的状态的数量增加,对存储元件上的已编程电荷电平的任何偏移的容忍度降低。由于随着在每个存储器单元存储元件上存储的状态的数量增加,必然使得为每个存储状态设计的电荷的范围更窄并被放置得更靠近地在一起,所以必须以增加的精确度来进行编程,且降低可以容忍的在存储电荷电平的任何编程后偏移的程度。当编程和读取一个单元时以及当读取、编程和擦除具有与该单元的某程度的电耦合的其他单元、比如相同列或行中的其他单元和共享一个线或节点的其他单元时,可以创建对在该单元中存储的电荷的实际干扰。图Il(C)示出作为由于读取干扰而导致的位错误的错误Ekd(Nk,Nctc)的第三源。该错误率随着读取的数量和编程-擦除循环的数量NeTC而增加。对快闪存储器的一个重要考虑是随着其使用老化,其具有耐用性问题。当重复编程和擦除一个单元时,通过对电介质遂穿,电荷在浮置栅极20中来回进出。每次一些电荷可能变得被捕获在电介质中,且将修改单元的阈值。通过循环计数NeTC(也已知为"热计数")来测量单元已经历的编程-擦除循环的数量。通过重复循环,对于给定的擦除块,Nctc的值增加,使得该块中的单元的阈值窗逐渐变窄。因此,编程-擦除循环效应将显著影响图11中列出的所有错误源。
图12是示出在示例存储器器件的寿命的初期和末期该器件的估计的总错误的表格。图12(A)示出来自图Il(A)到图Il(C)中列出的三个源的总错误为Etqt(Ncyc,Ne)=Epw (Ncyc) +Ede (T,Ncyc) +Eed (Nr,Ncyc)。图12(B)示出当该存储器相对较新(低Nctc)但已在85°C下烘烤了 5年且已经被读取IO6次时的估计Etqt。对各个分量错误的估计是=Epff(I) 3,Edk(85。。,I) 2,且Ekd(1M,I) O。这些产生了总的估计错误Etqt(I,1M) = 3+2+0 = 5位。图12(C)示出了当存储器接近器件的寿命末期("E0L")时的估计Etqt。其特征为高编程-擦除循环= 10K),其他参数类似于图12 (B)的参数。对各个分量错误的估计是Epw(IOK) 10,Ede(85°C, 10K) 10,且Ekd(1M,10K) I。这些产生了总的估计错误Etot (I OK, 1M) = 10+10+1 = 21 位。在图11和图12中描述的三个错误源中,通常,由于读取干扰而导致的错误Eed不如由于写入导致的错误Epw和由于数据保存而导致的错误Edk显著。可以通过周期性地在“读清洗(read scrub) ”操作中刷新单元的阈值电平来减少数据保留错误。为了校正可能在存储器中出现的各种错误,尤其是在写之后出现的错误,使用EEC (先前结合图9描述)。但是,使用ECC校正错误将消耗处理时间,且其需要校正的位越多,需要的计算时间越多。通过使用能够校正大量错误位的强ECC,存储器性能被降低。可以实施另外的专用硬件来在合理时间量内来进行ECC。这种专用硬件可能在控制器ASIC芯片上占据相当量的空间。图13是图示传统的ECC必须被设计来校正最差情况总错误Etot的表格。这将是具有高编程-擦除循环计数和数据保持规范的在寿命末期的器件。对于在图12(C)给出的例子,ECC必须能够校正至少21个错误位。从较高密度存储器部分向较低错误率存储器部分适应性重写数据来控制错误率根据本发明的一般方面,具有存储器单元的阵列的快闪存储器被配置有第一部分和第二部分。该第二部分以更高密度存储数据,但用比第一部分更小的错误余量来操作。为了有效存储,数据被写到第二部分。然后,该数据被读回以检查过量的错误位。如果错误位超过了预定量,则该数据被重写到更少错误倾向的第一部分。这对由于将数据写到存储器而产生的错误位的最大数量施加了限制。在错误率的统计分布中,该限制表示对该分布的数量标准偏差的限制,以便可以忽略(具有更高错误率的)分布的远尾端。这允许设计更小和更有效的错误校正码(“ECC”)用于校正较少数量的错误位,由此改善存储器的性能并降低成本。
图14A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。存储器单元的阵列200被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储的存储器单元,每个单元存储多位的数据。第一部分410具有被配置为较低密度存储的存储器单元,每个单元存储比第二部分更少数量的位。例如,相比于第二部分中的3位数据,第一部分中的存储器单元被配置以存储I位数据。鉴于先前的讨论,第一部分将以比第二部分宽得多的错误余量来操作。因此,第一部分中的存储器操作将具有比第二部分中的更少的错误。题为 “Selective Operation of a Multi-state Non-volatile Memory Systemin a Binary Mode”的美国专利号第6,456,528号公开了一种快闪非易失性存储器,具有通常在多于两个状态中操作的存储器单元,但所选的存储器单元仅在两个状态中操作,以便在两状态操作期间提供增加的余量。这允许在两个状态中操作的存储器单元的更快的编程和更长的操作寿命,此时比起多状态操作提供的数据存储器的增加密度,更期望具有这些优点。US 6,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校正错误位的原始数据的第二副本。在第二副本被写到第一部分中之后,其将替换第二部分中的第一副本而作为有效副本。第一副本将变为废弃的,且在控制器(见图I)的固件中实现的块管理系统中的目录将被更新到对第二副本的直接的随后访问。在一个优选实施例中,第一部分使每个存储单元存储一位数据,且第二部分使每个存储单元存储多于一位数据。图15是图示根据图14A和图14B中描述的实施例的写入后读取和适应性重写的处理的流程图。步骤500 :将存储器配置为第一和第二部分,第一部分具有用比第二部分的错误余量更大的错误余量来操作的存储器单元。步骤510 :将一组输入数据的第一副本编程在第二部分中。步骤520 :在预定时间之后从第二部分中读取第一副本以检查错误。
步骤530:错误超出了预定数量的错误位?如果是,前进到步骤540。否则,前进到步骤550。步骤540 :将该组输入数据的第二副本编程在第一部分中。步骤550 :标识最后写入的副本作为有效数据用于随后的读取。步骤560 :该组输入数据完成存储在非易失性存储器中。在替换的实施例中,第一部分用作用于到来的数据的缓存,因此输入数据的缓存副本被编程到该缓存中。然后,该数据的第一副本被编程到第二部分中。如果写入后读取没有检测到第一副本中的过量错误,则第一副本将被视为有效,且随后的读取将被导向访问第一副本。另一方面,如果写入后读取检测到第一副本中的过量错误,则在第一部分中的缓存的副本将替换第二部分中的第一副本而作为有效数据。该第一副本将变为废弃的,且在控制器(见图I)的固件中实现的块管理系统中的目录将更新为对缓存的副本的直接随后访问。题为“Multi-stateNon-volatile Flash Memory Capable of Being its Own TwoState Write Cache”的美国专利第5,930,167号公开了具有两个部分的快闪存储器阵列。第一部分被配置为每单元存储一位,且第二部分被配置为每单元存储多于一位。第一部分担当低密度写入缓存。到来的数据首先被缓存在该第一部分中。稍后,在后台,缓存的数据被传输到具有更高存储密度的第二部分。US 5,930,167的整个通过参考合并于此。在优选实施例中,第一部分进一步被提供有第一区块(section)和第二区块。到来的数据被缓存在第一部分的第一区块中,且该数据的第一副本被写到第二部分。然后,第二部分中的第一副本被读回以检查过量错误位。如果错误位超过预定量,则到来的数据的第二副本被写到第一部分的第二区块。图16A图示根据本发明的优选实施例的被划分为两个部分且第一部分被提供有缓存区块和重写区块的存储器阵列。如图14A中,存储器单元的阵列200被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储器的存储器单元,每个单元存储多位数据。第一部分410具有被配置为较低密度存储器的存储器单元,每个单元存储比第二部分更少数量的位。因此,第一部分用比第二部分更宽的错误余量来操作。第一部分410进一步被提供有用于缓存到来的数据的第一区块411和用于存储来自第二部分的重写的第二区块412。当要向存储器阵列200写入到来的数据页时,缓存的副本被缓存在第一部分410的第一区块411中。为了效率和高容量,第一副本优选存储在高密度的第二部分中。因此,该数据页的第一副本被写到第二部分。根据另一优选实施例,存储器阵列被提供有在集成电路芯片上的数据锁存器集,通过将第一副本和缓存的副本加载到该数据锁存器集中并在该数据锁存器集处进行比较来实现对第一副本中的错误位的检查。通过不在控制器处进行比较,数据无须被切出到控制器,因此可以节省很多时间。图I示出用于进行数据比较的在芯片上的数据锁存器430。图16B图示根据写入后读取的优选实施例的页比较技术。在“写入后读取”中读回第二部分中的数据页的第一副本来确定是否存在任何错误。这通过与缓存的副本相比较来实现。如果错误位的数量没有超出预定量,则在第二部分中存储的第一副本被认为有效。缓存的副本将变为废弃的,且在控制器(见图I)的固件中实现的块管理系统中的目录将更新到对该第一副本的直接随后访问。对数据页的随后读取将来自于第二部分中的第一副本,且将在控制器处通过ECC来校正任何错误。 图16C图示在写入后读取已确定在第二部分中的数据页中的过量错误之后对第一部分的重写。在写入后读取检测到第一副本的数据页中的错误位的数量超过了预定量之后,该数据页的第二副本被重写到第一部分410的第二区块412。第二副本取自缓存的副本。在第二副本已被写到第一部分的第二区块412之后,其将替换第二部分中的第一副本。第一副本和缓存的副本将变为废弃的,且在控制器(见图I)的固件中实现的块管理系统中的目录将被更新为对第二副本的直接随后访问。图17是图示根据图16A到图16C中描述的实施例的写入后读取和适应性重写的处理的流程图。步骤600 :将存储器配置为第一和第二部分,该第一部分具有用比第二部分的错误余量更大的错误余量来操作的存储器单元。步骤602 :将一组输入数据的缓存的副本编程在第一部分的第一区块中。步骤610 :将该组输入数据的第一副本编程在第二部分中。步骤620 :在预定时间之后从该第二部分中读取第一副本以检查错误。步骤630 :错误超出了预定数量的错误位?如果是,继续到步骤632。否则,继续到步骤650。步骤632 :从第一部分的第一区块中读取该组输入数据的缓存的副本。步骤642 :将缓存的副本作为该组输入数据的第二副本编程在第一部分的第二区块中。步骤650 :标识最后写入的副本作为有效数据用于随后的读取。步骤660 :该组输入数据完成存储在非易失性存储器中。为了例示和描述的目的已经呈现了对本发明的以上详细描述。不意图穷举本发明或将其限制到所公开的精确形式。考虑到上述教导,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理和其实际的应用,从而使得本领域技术人员能够在各种实施例中以及通过适合于所构思的具体用途的各种修改来最佳地使用本发明。意图本发明的范围由附于此的权利要求限定。增强的写入后读取错误管理在本发明的另一方面,实现增强的写入后读取错误管理。在存储器器件的寿命初期不使能写入后读取。在寿命初期存储器器件的错误率非常低,且不需要操作写入后读取。这避免浪费时间来进行写入后读取。由于存储器器件通过使用而老化,在器件的预定年龄时使能本发明的增强的写入后读取和错误管理。在优选实施例中,通过随存储器单元的每个擦除块维持的热计数来确定存储器器件的年龄。该热计数跟踪耐用性和该擦除块通过擦除和编程操作而被循环的次数。无论何时擦除块的热计数超过预定热计数阈值时,增强的写入后读取错误管理将开始并操作直到存储器器件的寿命末期。图18图示被组织为擦除块的存储器。如结合图6先前描述的,每个擦除块是一起被擦除的一组存储器单元。也如先前描述的,当重复编程和擦除一个单元时,通过在遂穿电介质,电荷在浮置栅极20 (见图2)中来回进出。每次一些电荷可能变得被捕获在电介质中,且将修改单元的阈值。通过循环计数Nctc(也已知为"热计数")来测量单元已经历的编程-擦除循环的数量。通过重复循环,对于给定的擦除块,乂¥。的值增加,该块中的单元的阈值窗逐渐变窄。图18图示其中在每个擦除块(m)中维持热计数(m) 302的优选实施例。由于可编程的单元是一页,因此每个块的热计数可以存储在图9所示的数据页70'的系统数据区中。或者,热计数可以存储在存储器中的主控列表中。每次擦除一个块,其热计数递增一。图19是图示当存储器器件已老化到由该热计数确定的预定程度时被使能的错误管理的流程图。步骤700 :提供被组织为存储器单元的擦除块的非易失性存储器,其中,每个擦除块的存储器单元一起被擦除,且随每个块的擦除/编程循环的数量而老化。步骤710 :提供用于校正与老化的存储器器件相关的错误的错误管理。在优选实施例中,该错误管理是先前描述的写入后读取的错误管理。步骤720 :通过维持记录了每个块经历的擦除/编程循环的数量的热计数来跟踪每个块的年龄。步骤730 :存储器块的热计数>预定热计数阈值?在优选实施例中,该预定热计数阈值由存储器中存储的文件系统配置文件中的参数Hot_count_thresho I d_EPWR给出(见图21)。如果大于,则前进到步骤740,否则前进到步骤750。步骤740 :对存储器的剩余寿命使能该错误管理。步骤750 :仍不使能该错误管理。在本发明的另一方面的优选实施例中,存储器的高密度存储部分(D3)具有每个存储3位数据的存储器。存储器的更低错误倾向的低密度存储部分(Dl)具有每个存储I位数据的存储器单元。输入的数据首先阶段性存储(stage)在Dl中,且随后将其折叠(fold,折叠存入)到D3中。当增强的写入后读取错误管理被使能时,读回D3中当前的填充的块;且如果错误率超过预定阈值,则当前D3块被拒绝,且进行重试,数据被重新折叠到新的D3块中。再次读回该新D3块,且检查该新D3块的过量错误率。如果新D3块通过了,则其具有良好的数据,且使得Dl中的原始数据废弃。如果新D3块再次示出过量错误率,则再次丢弃该新D3块。如果在预定数量的重试之后过量错误率仍持续,则不试图进行进一步的重试,且放弃Dl到D3折叠操作,原始数据保持在Dl处。此时,该存储器器件被认为太老而不适于进一步的编程操作,且使得该存储器器件只读,以保留存储器器件中存储的现有数据的完整性。
图20A-20C图示在被配置有Dl和D3部分的存储器中实施写入后读取错误管理的各种例子。在Gorobet等人在与本申请相同日期提交的题为"MAINTAINING UPDATES OFMULTI-LEVEL NONVOLATILE MEMORY IN BINARY NON-VOLATILE MEMORY"的美国申请中也公开了被配置有Dl和D3部分的存储器;其整个公开通过参考合并于此。图20A图示根据本发明的优选实施例的被划分为两个部分的存储器阵列。存储器单元的阵列200 (见图I)被划分为第一部分410和第二部分420。第二部分420具有被配置为高密度存储的存储器单元,每个单元存储多位数据。第一部分410具有被配置为较低密度存储的存储器单元,每个单元存储比第二部分更少数量的位。例如,第一部分中的存储器单元被配置以存储I位数据,相比于第二部分中的3位数据。每个单元存储I位数据的第一部分也将被称为Dl,且每个单元存储3位数据的第二部分被称为D3。鉴于先前的讨论,第一部分将以比第二部分宽得多的错误余量来操作。因此,第一部分中的存储器操作将具有比第二部分中更少的错误。在一个实施例中,第一部分410或Dl进一步划分为第一区块411和第二区块412。 在步骤(I)中,在主机写入期间,输入数据首先被缓存在第一区块411中或直接被写到第二区块412。如果该输入数据被分段,则其首先被缓存在第一区块中。如果该输入数据是实质的一系列相继数据,则其被逐页直接写到第二区块412中。在步骤(2)中,在任何情况下,输入数据最终在第二区块412中,其中写入的页被阶段性存储到虚拟Dl块中,比如块m. l、m. 2和m. 3中。在其中每个块包含来自明确定义的一组逻辑地址的数据的方案中,虚拟块可能不对应于物理块,但仍具有被分布在若干物理Dl块上的该组逻辑地址。在步骤(3)中,随着数据逐页被写到Dl中,当三个二进制页在Dl中时,其可以被复制到D3中的单个3位页,这也称为从Dl到D3的折叠。通过实施增强的写入后读取错误管理(“EPWR”),在存储器寿命时间的某时,写入后读取错误管理将开始。在步骤(4)中,在虚拟Dl块m. l、m.2和m.3的完整页已被折叠到D3块m中之后,D3块m完成。然后,可以通过EPWR处理它,其中,D3块中的数据被读回且被检查ECC错误。如果ECC错误的数量小于如由在文件系统配置文件中设置的参数E_pW_check给出的那样的预定阈值,则在D3块中的数据被认为是有效的。然后,对应的Dl页可以被安全替换且退休。图20B图示其中图20A的D3块未通过写入后读取的测试的另一例子。步骤(I)到步骤⑶与图20A相同。在步骤(4')中,当D3块中的数据被读回时,发现ECC错误的数量大check。这意味着在D3中的数据至多是临界的(marginal),且不能被使用。在步骤(5)中,在现有D3块未通过写入后读取测试的情况下,EPWR通过将数据折叠到新D3块中来指定重试。在步骤(6)中,新D3块中的数据经历另一写入后读取测试。如果其通过了该测试,则新D3块中的数据被视为有效。然后,对应的Dl页可以被安全替换且退休。图20C图示其中图20B的新D3块再次未通过写入后读取测试的另一例子。步骤
(I)到步骤(5)与图20B相同。
在步骤(6')中,当新D3块中的数据被读回时,发现ECC错误的数量大Check0这意味着在重试的D3块中的数据仍不良好,且不能被使用。EPffR处理可以指定对另一 D3块的进一步重试。重试的数量由文件系统配置文件中的参数EPWR_retries来设置。例如,如果EPWR_retries为1,则在新块未通过该测试之后该处理将结束。在该情况下,在步骤(7)中,不能 使用新D3块,而是文件系统将直接访问存在于Dl中的对应数据。图21是图示与增强的写入后读取管理相关的示例参数的表格。该表格优选地被维持在存储器中存储的文件系统配置文件中。E_pw_check——在文件系统配置文件中设置的变量,用于指定在ECC位水平的哪个#,D3块被认为是高风险的,且需要重新开始到新D3块的Dl到D3折叠。ECC_threshold_SLC——用于维持相对其来比较的SLC阈值以便决定是否继续EPffR所需的在文件系统配置文件中的变量。EPffR_enabIe_flag-在文件系统配置文件中控制。0 =不设置(缺省);1 =当
使能EPWR时设置。Hot_count_enabIe_fIag-0 =不被使能;1 =被使能。Ho t_count_thr e sho I d_EPWR——在文件系统配置文件中设置的变量,用于指定在什么热计数水平,需要EPWR。如果所有D3块的热计数<热计数阈值,则即使EPWR使能标记是被使能,也不触发EPWR处理。EPWR_verify_page_budget-在文件系统配置文件中设置的变量,用于指定可
以在EPWR的I阶段期间读取多少页。EPWR_retries——用于限制重试的数量的在文件系统配置文件中的变量。D3_Block_max_retries-用于限制在寿命时间期间对D3块的重试的总数的在
在文件系统配置文件中的变量。图22A是图示应用于具有Dl到D3折叠的存储器的EPWR错误管理的优选实施方式的流程图。步骤800:开始。步骤810 D1到D3折叠,其中,来自Dl的三个二进制数据页的数据被编程到D3的一个第三页(tertiary page),如结合图20A描述的。步骤812 :完全填充了 D3块?如果完全填充了,则继续到步骤820,否则返回到步骤 810。步骤820 :增强的写入之后读取错误管理("EPffR")被使能?在图22B中给出了取决于器件年龄的使能的更多细节。如果EPWR被使能,则在步骤830处理EPWR。如果不是,写入的D3块的完整性未知,但乐观地假设为良好。继续到步骤850。步骤830 :处理EPWR。在图22C中给出了 EPWR的更详细实施方式。步骤840 :主要在较高级别处,EPffR进行D3块的写入后读取以及ECC错误率的测试。如果错误不超SE_pw_check(见图21),则D3块是良好的。继续到步骤850。否则,D3块中的数据不能被使用,且考虑将Dl数据折叠到新D3块的重试。继续到步骤860。步骤850 :D3块被视为良好的,因此,可以使得Dl中的数据的原始副本废弃且退休。步骤860 :基于图22C中详细的多个考虑来决定是否对新D3块重试。如果不允许重试,则继续到步骤870。否则,继续到步骤862。步骤862 :对新D3块重复Dl到D3折叠。返回处理另一块。
步骤870 :在D3块中的数据被视为坏的,因此必须从Dl中的原始副本中访问数 据。步骤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被暂缓(on hold)。如果热计数超过该阈值,则当错误变得明显时,存储器器件到达年龄,且将得益于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块中的数据不能被使用,且考虑将Dl数据折叠到新D3块的重试。继续到步骤864。步骤842 D3块中的所有页都已被测试?如果不,则继续到步骤844来处理下一页。如果整个块被测试为良好,则继续到步骤850。步骤844 :选择在D3块中的下一页。返回到步骤836。
步骤862:在试图重试之前,检查重试的数量是否超过设置的限制EPWR_retries (见图21)。如果未超过,则通过继续到步骤866来尝试重试。如果重试的数量超过了设置的限制,则存储器器件被视为在寿命末期,且控制继续到步骤870。步骤866 :在尝试重试之前的另一考虑是检查过量错误是否是Dl中的数据固有的而不是由于从Dl到D3的编程错误而导致的。首先检查Dl数据的过量ECC错误。如果错误的数量超过预定阈值,比如ECC_threshold_SLC(见图21),则重试没有意义。返回步骤834来处理另一 D3块。但是,相反,如果实现以下描述的可选特征,则相反继续到可选的步骤868。另一方面,如果Dl数据是良好的,在步骤869中继续尝试重试另一 D3块。在另一实施例中,在步骤862之前进行步骤866。 图22C还图示了由具有虚线的框指示的可选特征。由步骤864和865图示用于检查块是否在其寿命时间期间经历了太多的重试的一个选项。如果是,则该块的物理完整性可能是有问题的,并且最好使该块退休以便其不再使用。当实施该选项时,从步骤862中的否开始的流程将进行到步骤864。步骤864 :D3块是否经历了多于参数Block_max_retires定义的阈值的重试。如果是,继续到步骤865来退休该块,否则,继续到步骤866以便进行进一步的重写决定。步骤865 D3块在其寿命时间期间经历了太多重试而不被认为是强健的。其退休且从循环(circulation)中被拿出。然后,控制直接继续到步骤869来重写该D3块。另一选项是,在Dl数据不是很好的情况下,首先通过ECC对其校正,并在折叠到D3之前将其在Dl中重新阶段性存储。当实施此选项时,从步骤866中的是开始的流程将进行到步骤868而不是834。步骤868 :通过ECC来校正有问题的Dl数据,且在Dl中重新阶段性存储。继续到步骤869。虽然对于存储器被划分为具有每个存储I位数据的存储器单元的第一部分和具有每个存储3位数据的存储器单元的第二部分的存储器给出了例子,但是,本发明不限于该例子。为了例示和描述的目的已经呈现了对本发明的以上详细描述。不意图穷举本发明或将其限制到所公开的精确形式。考虑到上述教导,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理和其实际的应用,从而使得本领域技术人员能够在各种实施例中以及通过适合于所构思的具体用途的各种修改来最佳地使用本发明。意图本发明的范围由附于此的权利要求限定。
权利要求
1.一种操作非易失性存储器的方法,包括 提供用于校正当非易失性存储器通过使用而老化时易于产生的错误的错误管理; 提供通过非易失性存储器经历的编程/擦除循环的数量对非易失性存储器的年龄的測量;以及 仅当非易失性存储器达到了预定年龄时才开始所述错误管理。
2.根据权利要求I的方法,其中 所述非易失性存储器被组织为存储器単元的块,每块的存储器単元可一起被擦除;以及 所述提供非易失性存储器的年龄的测量是通过跟踪ー个块经历的编程/擦除循环的数量。
3.根据权利要求2的方法,其中 非易失性存储器的预定年龄由ー个块经历的编程/擦除循环的预定数量给出。
4.根据权利要求I的方法,还包括 将所述存储器配置为第一和第二部分,第一部分具有以比第二部分更少的错误率但更低密度的存储来操作的存储器単元; 将输入数据编程到第一部分中; 随后,复制该数据以在第二部分中创建副本;以及 其中,错误校正管理还包括 (a)检查所述副本的错误; (b)取决于错误是否少于预定数量的错误位,将所述副本标识为有效或无效数据; (C)当所述副本被标识为无效时,重复复制到第二部分中的另一位置,且重复步骤(a)到(C)达预定次数。
5.根据权利要求4的方法,其中,通过与所述副本相关的ECC来检查所述副本的错误。
6.根据权利要求4的方法,其中 所述存储器被进ー步组织为多个擦除块,每个块中的存储器単元可一起被擦除;以及 逐块进行所述复制和检查。
7.根据权利要求4的方法,其中 所述第一部分具有每个存储I位数据的存储器单元; 所述第二部分具有每个存储η位数据的存储器单元,且η > I。
8.根据权利要求4的方法,其中,所述错误管理还包括 当第二部分中的副本被标识为无效时,将在第一部分中的与第二部分中的该副本对应的数据标识为有效。
9.根据权利要求4的方法,其中,所述错误管理还包括 当第二部分中的副本被标识为有效时,将在第一部分中的与第二部分中的该副本对应的数据标识为无效。
10.根据权利要求I到9中的任ー个的方法,其中,所述非易失性存储器是快闪EEPROM。
11.一种非易失性存储器,包括 错误管理,用于校正当非易失性存储器通过使用而老化时易于产生的错误;通过非易失性存储器经历的编程/擦除循环的数量对非易失性存储器的年龄的测量;以及其中 仅当非易失性存储器达到了预定年龄时才开始所述错误管理。
12.根据权利要求11的非易失性存储器,其中 所述非易失性存储器被组织为存储器単元的块,每块的存储器単元可一起被擦除;以及 所述对非易失性存储器的年龄的测量由一个块经历的编程/擦除循环的数量给出。
13.根据权利要求12的非易失性存储器,其中 非易失性存储器的预定年龄由ー个块经历的编程/擦除循环的预定数量给出。
14.根据权利要求11的非易失性存储器,还包括 存储器控制器;以及其中 所述存储器被配置为第一和第二部分,第一部分具有以比第二部分更少的错误率但更低密度的存储来操作的存储器単元; 所述存储器控制器与具有包括以下的操作的错误校正管理合作 (a)将输入数据编程到第一部分中; (b)随后,复制该数据以在第二部分中创建副本; (C)检查所述副本的错误; (d)取决于所述错误是否少于预定数量的错误位,将所述副本标识为有效或无效数据;以及 (e)当所述副本被标识为无效时,重复复制到第二部分中的另一位置,且重复步骤(a)到(e)达预定次数。
15.根据权利要求14的非易失性存储器,其中,所述存储器控制器检查所述副本的错误是通过与所述副本相关的ECC。
16.根据权利要求14的非易失性存储器,其中 所述存储器被进ー步组织为多个擦除块,每个块中的存储器単元可一起被擦除;以及 逐块进行所述存储器控制器的复制和检查。
17.根据权利要求14的方法,其中 所述第一部分具有每个存储I位数据的存储器单元; 所述第二部分具有每个存储η位数据的存储器单元,且η > I。
18.根据权利要求14的非易失性存储器,其中,所述错误管理还包括 当第二部分中的副本被标识为无效时,将在第一部分中的与第二部分中的该副本对应的数据标识为有效。
19.根据权利要求14的非易失性存储器,其中,所述错误管理还包括 当第二部分中的副本被标识为有效时,将在第一部分中的与第二部分中的该副本对应的数据标识为无效。
20.根据权利要求11到19中的任一个的非易失性存储器,其中,所述非易失性存储器是快闪EEPROM。
全文摘要
在非易失性存储器中的数据错误不可避免地随使用和每个单元存储的位的更高密度而增加。存储器被配置为具有以较少错误操作但具有较低密度存储的第一部分以及以更高密度操作但更不强健存储的第二部分。输入数据在被复制到第二部分之前被写入并阶段性存储在第一部分中。错误管理提供针对过量错误位来检查复制的数据的质量。在第二部分中的不同位置上重复该复制和检查,直到满足了预定质量或重复的次数超过预定限制。当存储器是新的而有很少或没有错误时不开始错误管理,而在存储器已老化到由其经历的擦除/编程循环的数量而确定的预定量之后开始。
文档编号G11C16/34GK102667945SQ201080049027
公开日2012年9月12日 申请日期2010年10月22日 优先权日2009年10月28日
发明者C.阿维拉, G.A.杜西加, J.黄, L.M.加文斯, 陈健 申请人:桑迪士克科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1