CN102171659A - 非易失性存储器中的数据错误恢复 - Google Patents
非易失性存储器中的数据错误恢复 Download PDFInfo
- Publication number
- CN102171659A CN102171659A CN2009801392394A CN200980139239A CN102171659A CN 102171659 A CN102171659 A CN 102171659A CN 2009801392394 A CN2009801392394 A CN 2009801392394A CN 200980139239 A CN200980139239 A CN 200980139239A CN 102171659 A CN102171659 A CN 102171659A
- Authority
- CN
- China
- Prior art keywords
- unit
- data
- specified scope
- charge
- storer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/16—Protection against loss of memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Read Only Memory (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
当纠错码(ECC)单元在固态非易失性存储器设备中发现了不可校正的错误时,可以使用一种处理过程来试图定位和校正错误。这个处理过程可以首先识别可能包含错误的“低信度”存储单元,然后基于各种标准确定在这些单元中哪些数据更可能被校正。然后,可以用ECC单元来检查新数据,以验证对于ECC单元来说,所述新数据是足够正确的从而可以校正任何剩余的错误。
Description
背景技术
一些类型的固态非易失性存储器,诸如闪速存储器,通过将某一数量的电荷存储在存储单元(memory cell)中来记录二进制数据。当从这些基于电荷的非易失性存储器中的一个中读取数据时,将已存储电荷的电压电平与基准电压进行比较。从上述单元中读取的数据的二进制值取决于已存储电荷的电压是高于基准电压还是低于基准电压。然而,因为已存储的电荷是一种模拟现象,它的实际值可能并不恰好是所期望的值;当数据被读取时,可能会遇到错误。纠错码(ECC)单元可以用于检测和校正这些错误中的一些,但是有时错误太多以至于不能将所有的错误都以这种方式来校正。当上述情况发生时,数据可能永久丢失。
附图说明
通过参考用于说明本发明的实施例的以下描述和附图,可以理解本发明的一些实施例。在附图中:
图1示出了根据本发明的一实施例的包含固态非易失性存储器的系统;
图2示出了根据本发明的一实施例的非易失性存储器阵列的一部分;
图3示出了根据本发明的一实施例的校正存储器中的错误的方法的流程图;
图4示出了根据本发明的一实施例的可以影响目标单元的电荷模式的例子;
图5示出了根据本发明的一实施例的用于识别NV存储器阵列中的低信度单元的模式匹配方法的流程图;
图6示出了根据本发明的一实施例的通过采用与基准电压的接近度来识别NV存储器阵列中的低信度单元的方法的流程图;
图7示出了根据本发明的一实施例的通过对模拟电荷值的调整来校正NV存储器中的数据的方法的流程图。
具体实施方式
在下述说明书中,阐述了许多具体细节。然而,应当理解,可以实施本发明的实施例而无需这些具体细节。在其他情况下,为了不模糊对本说明书的理解,并未详细示出公知的电路、结构和技术。
对“一个实施例”、“一实施例”、“示例实施例”、“各种实施例”等的引述指出,所描述的本发明的实施例可以包括特定特征、结构或特性,但不是每个实施例都一定包括该特定特征、结构或特性。另外,一些实施例可以具有在其他实施例中描述的特征中的一些或所有特征,或不具有在其他实施例中描述的特征。
以下说明书和权利要求书中,可能用到术语“耦合”和“连接”以及其派生词。应当理解的是,这些术语并不意在是彼此的同义词。而是,在特定实施例中,“连接”用于指示两个或更多个元件之间彼此直接物理接触或电接触。“耦合”用于指示两个或更多个元件彼此合作或交互,但是它们可以或可以不直接物理接触或电接触。
如权利要求书中所用的,除非另外说明,否则使用序数形容词“第一”、“第二”、“第三”等来描述一个共同的元件仅表明正在提及相同元件的不同实例,而不是想要暗示所描述的这些元件必须处于给定的顺序,无论是在时间上、空间上、按等级或按任何其它的方式。
本发明的各种实施例可以以硬件、固件和软件中的一个或任意组合来实施。本发明也可以被实现为包含在计算机可读介质中的指令或包含在计算机可读介质之上的指令,所述指令可以由一个或多个处理器读取并执行从而使得能够执行本文描述的操作。计算机可读介质可以包括用于存储、发送、和/或接收以一个或更多个计算机可读形式的信息的任何机制。例如,计算机可读介质可以包括有形存储介质,例如但不限于只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪速存储器设备等。计算机可读介质也可以包括被调制后用来编码指令的传播信号,例如但不限于电磁、光或声载波信号。
在各个实施例中,如果当从基于电荷的非易失性存储器的一部分中读取数据时发现不可校正的错误,则随后可以进行一处理过程来试图校正该数据。因为可能不知道坏数据的准确位置,所以该处理过程可以包括:1)识别该部分存储器中的“低信度”(LC)存储单元(即,比其他单元更可能包含错误的单元),2)确定这些单元中哪些数据可能被校正,和3)验证新数据是正确的。识别低信度单元可以通过以下两种方式中的任意一种来执行:1)查找其模拟电荷电压接近于基准电压的单元,或2)寻找已知会造成目标单元中数据破坏的周边单元中的电荷电平的特定模式。确定低信度单元中可能正确的新数据可以用以下两种方式中的任意一种来执行:1)在看起来最好的方向和数量上调整这些单元中的模拟电荷值,或2)在LC单元中尝试随机的数据值。验证新数据是正确的,这可以用任何合适的方式来执行,但是典型地可以通过使用错误检查和校正(ECC)算法来执行,这是因为只要错误的数目在某一阈值以下,这种方式就将产生有效的数据。一旦确定出数据的正确值,该数据可以被重写到希望不再经历数据破坏的相同问题的另一位置。虽然计算量很大,但是这个处理过程对于恢复那些用其他方式恢复并不实际的数据(例如,重要数据中包含致命错误的固态盘(SSD)中的数据)来说可以是有帮助的。
图1示出了根据本发明的一实施例的包含固态非易失性存储器的系统。图示的系统100包括处理器110、主存储器120、输入输出逻辑130和非易失性(NV)存储器140。在这个特定实现中,NV存储器作为I/O设备(例如但不限于固态盘)而被附接,但是其它实施例可以将NV存储器放置在系统中的其他位置,例如但不限于主存储器自身的一部分、与硬盘驱动器协同工作的高速缓冲存储器等。本发明的各个实施例应可适用于不同的应用、系统的不同部件,而无论是否在此详细描述过那些应用和部件。
NV存储器可以采用任何可行类型的NV存储技术,该技术使用存储的电荷来存储数据,并且使用一个或多个基准电压用于读操作。在NV存储器中,可能尤其有用的是,用单个读命令来读取一整个范围的连续存储位置(memory location)(例如但不限于,从NAND闪速存储器阵列中读取存储器的一页),而不是用单个读命令来读取单个字节或字。
在图1的图示实施例中,NV存储器140可以包括存储阵列148和控制器142,该控制器用于控制对阵列的操作,例如读、写、擦除和基准电压的调整。控制器142可以被进一步划分为其它的功能单元,例如错误检查与校正(ECC)单元143、错误分析单元144和基准电压控制单元145。基准电压控制单元145可以提供在从该阵列中的存储单元中读取数据时使用的一个或多个基准电压中的每一个。基准电压控制单元145也可以按照执行在此描述的操作的需要来调高和/或调低这些基准电压。虽然将NV存储器140中的各个单元示出为独立的功能单元,但是这些单元中的两个或多个可以共享共用的电路和/或代码。
每当控制器142接收到来自处理器110或其他设备的读请求时,控制器142可以发起从存储器阵列中的多个连续位置读取数据的操作。这些位置的起始地址可以由读请求来指示,而位置的数目可以在该请求中指定或可以以某种其他方式预定义。当数据被读取且被放置在缓冲器中,ECC单元可以检测该数据中的错误,跟踪这些错误,且校正那些能够通过其错误校正算法来校正的错误。当以这种方式检测出不可校正的错误(即,不能由ECC单元校正)时,来自一整个范围的连续地址(例如,存储器的一页或一个扇区)的数据可以被指定为不正确的,这是因为该范围内不可校正的错误的数量和位置是未知的。
图2示出了根据本发明的一实施例的非易失性存储器阵列的一部分。图示的例子示出了闪速存储器阵列的常见表示,其中每个晶体管代表一个存储单元,其中栅极附近的已存储电荷的数量表示此单元中存储的数据。除了闪速存储器以外的其它存储器类型、以及除了所示出的那个电路以外的其它电路也都可以被包括在本发明的各种实施例中。在示出的特定例子中,每条水平线代表一条字线(word line),其连接该行中多个单元(此例中大约为32000个单元,但是其它实施例中该数目可以是不同的)的栅极,而每个位线(bit line)列中的单元连接到此列中每个相邻的单元。这些单元可以代表单层单元(SLC)或多层单元(MLC)技术。当在本文中使用这些术语时,SLC是指每个单元只存储一位的技术,而MLC是指每个单元存储两位或更多位的技术。图示的阵列表示4层MLC技术,其中可能的电荷的范围被划分为4个子范围,标记为L0-L3,每个子范围表示一个不同的2位组合(例如,11、10、00或01)。如果特定单元中的电荷落入那四个子范围中的一个时,此单元会被认为存储了对应的2位二进制值。给出了15个单元的示例值,而第16个单元的未知电荷为Vt。
在以下讨论中,假设已使用了ECC或其他类型的错误检测和校正算法,但是不能校正给定范围的连续存储器地址内的所有错误。这种情况下,知道错误包含在此范围内,但是并不准确地知道哪些地址(并且因此,哪些单元)包含有错误。在许多情况下,除了知道错误的数目超出了ECC的能力而使其无法校正所有错误以外,并不知道其中到底有多少错误。在此讨论中,假设整个页被认为是“故障的”,因为ECC单元不能校正该页中的所有错误;但是,如果ECC码块的大小使故障单位变成不同于页的大小,则也可以以这种方式来检查不同于页的单位(例如扇区)。以下定义被使用在本文中:
1)模拟电荷值——表示存储在特定单元中的电荷的电压的值。虽然该值可以被表示为离散数字值或二进制数以进行处理,但它代表模拟电荷值,因此被标记为模拟值。
2)电荷电平值——表示单元中的电荷电平的多个子范围中的一个的值,其中每个子范围代表一个不同的二进制数据值。例如,在4层MLC中,电荷电平值“0”可以代表最低的子范围(最少的电荷量),“1”代表较高的下一子范围,“2”代表更高的下一子范围,和“3”代表最高的子范围(最多的电荷量)。
3)二进制数据值——存储在单元中的数据的二进制值。例如,在4层MLC中,二进制“11”可以由电荷电平值“0”表示,二进制“10”可以由电荷电平值“1”表示,二进制“00”可以由电荷电平值“2”表示,二进制“01”可以由电荷电平值“3”表示。这些特定的转换值是很有益的,这是因为从一个电荷电平转变到下一个电荷电平只需要改变等价的二进制值中的一位,从而将边界读取的不确定性降低到只有两种可能。然而,也可以使用其它的转换值。
图3示出了根据本发明的一实施例的校正存储器中的错误的方法的流程图。在流程图300中,操作310、314、318和操作311、315表示用于在被认为故障的一页数据中识别低信度(LC)单元的两种不同方法。操作320、324、328和操作321表示用于试图校正这些LC单元中的数据的两种不同方法。不管使用何种识别和校正处理过程的组合,在330的验证操作可以是相同的。
通过模式匹配的识别
这个处理过程对应于图3中的操作310、314、318。随着存储器阵列采用的几何尺寸不断变小,存储在每个单元中的电荷量可能受存储在周边单元中的电荷量的影响,电荷被提升或降低,而偏离所期望的情形。重新参照图2,例如,电荷电平为Vt的单元是“目标”单元,其中通过检查周边单元对Vt的可能影响来研究该目标单元。箭头指示其电荷电平可能影响电荷Vt的可能单元的例子,因为这些可能的单元在物理上接近或电连接到目标单元。这种影响的确切特性和可能引起这种效应的特定单元可以取决于该阵列的细节,例如这些单元的物理紧密度、单元结构、采用的半导体材料、每个周边单元和目标单元中的实际电荷电平等。对于每种类型的阵列以及这些单元中电荷分布的每种模式,都可以确定这种相互关系。
图4示出了根据本发明的一实施例的可以影响目标单元的示例电荷模式。对于本文来说,“模式”是一组单元,其具有预定义的物理排列、具有预定义的彼此的电连接、以及这些单元内预定义的电荷电平。目标单元是占据该物理排列内的一预定义位置的单元,也是正被检查以确定此模式中其它单元对该目标单元的可能影响的单元。一种特定的模式可以基于此模式中所有单元中的电荷电平(包括目标单元中的电荷电平)来定义。例如,图4中,在目标单元两侧的单元(同一字线上的相邻单元)具有电荷电平L3,而紧挨着目标单元上方和下方的单元(同一位线上的相邻单元)具有电荷电平L2。如果目标单元中正确的电荷电平应该是L0,则这些周边单元可以将目标单元的电荷提升为L1电平(如图所示),因此目标单元中具有电荷L1是此模式的一部分。另一方面,如果目标单元中的电荷电平应该是L2或L3,则周边单元中的电荷可能足够接近于使其对目标单元几乎无影响的电平,因此该排列将不被认为是要查找的预定义模式。在一些实施例中,模式中任何给定单元的电荷电平都可能涵盖多于1种电平。使用图4的模式为例,与目标单元相邻的四个单元中的任意单元都被允许具有电荷电平L2或L3,并且这样依然被认为是匹配该模式。
这个例子示出了具有特定电荷分布的一种简单的5单元模式(目标单元和在同一字线和位线上的相邻单元),但是其它模式可以涉及围绕在目标单元周围的单元的不同排列、和/或不同的单元数量、和/或这些单元中不同的电荷分布。虽然可以期望同一组模式应用于该阵列的大部分,但是一些模式可以仅适用于该阵列的特定部分(例如,在阵列边缘处的目标单元在一侧将不具有相邻单元,所以对于在边缘处的单元可能采用不同的一组模式)。因为每个单元都可以用该模式匹配技术来分别检查,所以一个给定单元在一种场合下可能被认为是目标单元,但是当另一个单元被作为目标时,此给定单元可能是多个周边单元中的一个。
图5示出了根据本发明的一实施例的用于识别NV存储器阵列中的低信度单元的模式匹配方法的流程图。在所描述的方法中,假设存储器中特定一页数据具有不能由ECC单元校正的一个或更多个错误,并且这些错误至少部分地是由前述类型的电荷分布效应引起的,因此可以通过分析该电荷分布来确定正确的数据。在此讨论中,假设整个页被认为是故障的,这是因为ECC单元不能校正该页中的所有错误;但是,如果ECC码块的大小使故障单位变成不同于页的大小,则也可以以这种方式检查不同于页的单位(例如扇区)。
在图示的流程图500中,在510,可以读取包含故障页的整个擦除区块中的二进制数据。虽然整个页被认为是“故障的”(因为已知有错误,但是该页内的错误的位置是未知的),但是依然可以从该页中的所有单元读取数据,即使其中一些数据会是不正确的。希望读取整个擦除区块而不只是故障页,这是由于NV存储器典型的布局方式,该方式使得该擦除区块中被正确读取的页中的单元能够影响到同一擦除区块中故障页中的单元。
在520,从该擦除区块中读取的二进制数据可以被转换为电荷电平值。这种转换的确切方式可以取决于有多少电荷电平(以及因此,多少位二进制数据)被包含在每个单元中,以及取决于这些电平中的每一个如何表示一特定的二进制数据值。这种转换的结果可以被放置在电荷电平映射表(map)中,该映射表包含该擦除区块中每个单元的电荷电平值。该映射表还可以表示(例如,通过映射表的组织)这些单元如何在物理上和/或电上互相关联,因此这些单元可以被组合成对于随后的模式匹配处理过程有意义的组。一种这样的组织方式(虽然不是唯一的方式)是将该映射表组织成一个二维阵列,该阵列反映了该擦除区块中各单元的行和列电路布局。
在530,可以执行实际的模式匹配处理过程。上述对图4的描述提供了这种模式匹配处理过程的一个例子。在540,作为已匹配模式中的目标单元的每个单元可以被指定为低信度单元。并不是擦除区块中的所有单元都需要被检查以确定具有该单元的作为目标单元的模式。只有其中目标单元位于故障页中的那些组单元需要被检查以用于模式匹配。因为页经常被分配到交替的位线,这可以简化模式匹配处理过程。参照图4,中间的位线位于故障页中,但是左边和右边的位线则位于另一个页(其中ECC已经示出该页包含正确的数据)中。因此,模式匹配不需要应用于其中目标单元并不位于故障页的那些组单元。这也减少了该模式中另一个单元(不是目标单元)包含不正确数据的机会,因为在此例中只有与目标单元在同一位线上的那些单元位于故障页中。
通过基准电压接近度来识别
这个处理过程对应于图3中的操作311、315。当存储在单元中的电荷的模拟值非常接近于在读取此单元时所采用的基准电压时,电荷的电压很容易最终达到该基准电压的错误一侧,并且产生不正确的读取。图6的处理过程利用了这种现象。
图6示出了根据本发明的一实施例的通过采用与基准电压的接近度来识别NV存储器阵列中的低信度单元的方法的流程图。在流程图600中,在此称为“活动读基准”(MRR)的处理过程可以用于测量每个单元中的模拟电荷电压。在610,可以在一值范围内增加每个读基准电压。这个增加的处理过程可以在操作610-650反复循环直到MRR处理过程结束,如在620所确定的。任何可行的技术都可以用于增加基准电压。对于其中存在多个基准电压的多层单元技术,一些实施例可以在每个新循环内只增加单个基准电压,而其他实施例可以在每个新循环内增加多个基准电压。一些实施例可以在每个新循环内增加所有的基准电压。一些实施例可以在不同的循环内在这些替代方案之间进行切换。
在每次增加之后,在630,可以读取存储在故障页的每个单元中的数据的二进制值。如果从给定单元读取的数据与其在上一轮中的值不同,如在640所示,这表示增加后的基准电压正好超过模拟电荷值,且模拟电荷值一定非常接近于基准电压(在一次增加的范围内)。然后在650,该值被记录在模拟电荷值的映射表中。该处理过程可以针对示出其数据相对于上一轮发生改变的每个单元来执行。在具有多个基准电压的MLC存储器中,需要检查特定的之前和之后的二进制值,以便确定哪个基准电压被超过了,所以可以记录正确的电压。610-650的处理过程可以被反复执行,直到故障页中所有单元的模拟电荷值都已经被记录。
如果所有增加后的基准电压值都已经被尝试过,但该页中不是所有的单元都具有针对其模拟电荷的记录值,那么这些未记录的单元可能具有在测试范围外的模拟电荷值(这种情况下,可以扩大范围以用于进一步的测试),或者该单元已经彻底出了故障(这种情况下,可以采取其他校正动作,未在此描述)。假设所有单元都具有记录值,则该处理过程可以从操作620移动到操作660,在660,基准电压可以被恢复为其初始值从而可以进行正常的读操作。
这里,在670,为每个单元记录的模拟电荷值可以与恢复的基准电压进行比较。(可以记录恢复的基准电压值,并且可以在该比较中使用记录值,因此对实际单元的进一步访问将不是必须的。)如果任意单元具有与恢复的基准电压接近的模拟电荷值,则在680该单元可以被识别为低信度单元。至于在模拟电荷值被认为是“低信度”之前,该模拟电荷值需要与基准电压有多接近,这可以取决于各种因素。在一些实施例中,可以在处理期间改变被认为“接近”基准电压的模拟电荷值的范围、和/或这个范围的中心点。例如,开始可以使用非常小的电压范围。如果这没有产生满意的结果,则范围可以被扩大以试图包括更多单元到“低信度”类别中。在获得满意结果之前,可以进行这些变化的若干次迭代。
通过电荷调整来校正
这个处理过程对应于图3的操作320、324、328。通常,该处理过程涉及以一种被设计用于提高从低信度单元得到正确的数据的可能性的方式来调整该单元的模拟电荷值。
图7示出了根据本发明的一实施例的通过对模拟电荷值的调整来校正NV存储器中的数据的方法的流程图。为了调整故障页中的低信度单元的模拟电荷值,必须知道这些模拟电荷值的起始值。如果图6中操作610-650的MRR处理过程已经被执行以识别出低信度单元,则这些起始值是已知的。如果没有执行,则可以在开始流程图700的方法之前执行MRR处理过程。
对于每个低信度单元,在710,可以确定所设计的针对该单元的调整的数量(改变电荷量,其改变模拟电荷值)和方向(增加或减少电荷)。可以使用任何可行的方法来确定这种调整的方向和数量。在操作720,可以对模拟电荷值进行该调整。不是改变存在于物理单元中的实际电荷,而是可以针对先前为故障页建立的模拟电荷映射表中所记录的模拟电荷值来在数学上执行该处理过程。
执行验证之前要以该方式调整的低信度单元的数量可以取决于很多因素。调整所有低信度单元(或至少大量的单元)存在着将之前正确的数据改变为坏数据的风险,可能使问题更糟糕。执行验证之前调整小数量的单元存在的风险是,没有改变足够多的坏数据以至于在验证期间不能得到有效的ECC结果,因此不知道这些改变是否正确。然而,要改变的单元的数量可能是确定的,在该数量的单元都已经被改变之后(如操作730所确定的),此处理过程可以移动到740,在740,低信度单元的新模拟电荷值可以被转变为其等价的二进制数据。
通过随机数据替换来进行校正
这个处理过程对应于图3的操作321。通常,该处理过程涉及在低信度单元中尝试随机数据,直到发现一组合,其中该组合产生的页所具有的错误少到这些错误可以通过其它的手段(诸如ECC处理过程)来校正。如图7的处理过程所描述的,在尝试进行验证之前要以这种方式改变的单元的数量可以变化。在一些实施例中,要改变的单元的优选数量可以取决于各种因素,例如但不限于:1)正使用的校正技术;2)故障地址范围内包含的单元的数量;3)等等。
验证
验证对应于图3的操作330。对页中数据的验证可以通过任何可行的方式来执行,例如但不限于通过ECC处理过程对该页的二进制数据进行处理,该ECC处理过程将校正剩余的错误,倘若错误的数量不超过ECC的校正能力的话。如果校正的数据以这种方式被验证,则校正的数据可以被写入其中它可以被使用的存储位置。该位置将可能并不在最初出现故障的同一擦除区块的同一页中,重要的一点是因为那个物理存储位置中的缺陷可能引起错误。另一方面,如果新一页的数据依然具有不可校正的错误,则随后可以进行各种过程,例如但不限于以下中的一个或多个:1)假设该页中的数据丢失了,并且丢弃所述数据;2)对新的或原始的数据重新执行上述操作,但是使用不同的参数来校正所述数据;3)对不同的低信度单元重新执行先前操作;4)执行不同的检测操作以确定低信度单元;5)等等。
在一些实施例中,可以在NV存储器的控制器(例如通过图1的错误分析单元144)中执行这些操作。在其它实施例中,可以在NV存储器之外(例如通过计算机系统中的一个或多个主处理器)执行这些操作。在另外的实施例中,可以由多个这样的设备执行这些操作(例如,一些操作可以在NV存储器控制器中执行,一些操作可以由主处理器执行)。这些只是可以执行所述操作的方法中的几种。
上述描述是要用作说明性的而不是限制性的。本领域的技术人员会想到各种变更。这些变更要被包括在本发明的各个实施例中,这些实施例仅由所附权利要求的范围来限定。
Claims (20)
1.一种方法,包括:
确定从基于电荷的非易失性(NV)存储器的指定范围的连续存储位置中读取的二进制数据包含未被与所述NV存储器相关联的纠错码(ECC)单元校正的错误;
识别所述指定范围内的哪些存储单元产生了可能出错的数据;
改变其数据被确定为可能出错的所述单元中的至少一些单元的数据;以及
验证改变后的数据对于所述ECC单元来说是否足够正确以用来为所述指定范围提供正确的数据。
2.如权利要求1所述的方法,其中,所述的识别包括:
为至少所述指定范围内的存储单元生成电荷电平值的映射表;以及
将所述映射表中各组单元的电荷电平值与电荷电平的预定义模式进行比较,以识别哪些存储单元产生了可能出错的二进制数据。
3.如权利要求1所述的方法,其中,所述的识别包括:
确定所述指定范围内的单元的模拟电荷值;以及
确定所述指定范围内的哪些单元的模拟电荷值在所述NV存储器的读基准电压的预定电压量的范围内。
4.如权利要求1所述的方法,其中,所述的改变包括:
调整被识别为可能出错的存储单元的模拟电荷值。
5.如权利要求1所述的方法,其中,所述的改变包括:
用随机二进制数据替代来自被识别为可能出错的存储单元的数据。
6.如权利要求1所述的方法,还包括:
在一电压范围内增加读基准电压;
对于每次增加,从所述指定范围的连续存储位置中读取二进制数据;以及
识别哪些单元在当前的增加中产生了与前一次增加中不同的二进制数据。
7.如权利要求1所述的方法,其中,所述指定范围的连续存储位置是存储器的页。
8.一种装置,包括:
包含处理器和基于电荷的非易失性(NV)存储器的计算机系统,该计算机系统用于执行:
确定从所述NV存储器的指定范围的连续存储位置中读取的二进制数据包含未被与所述NV存储器相关联的纠错码(ECC)单元校正的错误;
识别所述指定范围内的哪些存储单元产生了可能出错的数据;
改变其数据被确定为可能出错的所述单元中的至少一些单元的数据;以及
验证改变后的数据对于所述ECC单元来说是否足够正确以用来为所述指定范围提供正确的数据。
9.如权利要求8所述的装置,其中,所述的识别包括:
为至少所述指定范围内的存储单元生成电荷电平值的映射表;以及
将所述映射表中各组单元的电荷电平值与电荷电平的预定义模式进行比较,以识别哪些存储单元产生了可能出错的二进制数据。
10.如权利要求8所述的装置,其中,所述的识别包括:
确定所述指定范围内的单元的模拟电荷值;以及
确定所述指定范围内的哪些单元的模拟电荷值在所述NV存储器的读基准电压的预定电压量的范围内。
11.如权利要求8所述的装置,其中,所述的改变包括:
调整被识别为可能出错的存储单元的模拟电荷值。
12.如权利要求8所述的装置,其中,所述的改变包括:
用随机二进制数据替代来自被识别为可能出错的存储单元的数据。
13.如权利要求8所述的装置,还包括:
在一电压范围内增加读基准电压;
对于每次增加,从所述指定范围的连续存储位置中读取二进制数据;以及
识别哪些单元在当前的增加中产生了与前一次增加中不同的二进制数据。
14.一种制品,包括:
包含指令的有形计算机可读介质,所述指令当被一个或更多个处理器执行时,导致执行以下操作,包括:
确定从基于电荷的非易失性(NV)存储器的指定范围的连续存储位置中读取的二进制数据包含未被与所述NV存储器相关联的纠错码(ECC)单元校正的错误;
识别所述指定范围内的哪些存储单元产生了可能出错的数据;
改变其数据被确定为可能出错的所述单元中的至少一些单元的数据;以及
验证改变后的数据对于所述ECC单元来说是否足够正确以用来为所述指定范围提供正确的数据。
15.如权利要求14所述的制品,其中,识别操作包括:
为至少所述指定范围内的存储单元生成电荷电平值的映射表;以及
将所述映射表中各组单元的电荷电平值与电荷电平的预定义模式进行比较,以识别哪些存储单元产生了可能出错的二进制数据。
16.如权利要求14所述的制品,其中,识别操作包括:
确定所述指定范围内的单元的模拟电荷值;以及
确定所述指定范围内的哪些单元的模拟电荷值在所述NV存储器的读基准电压的预定电压量的范围内。
17.如权利要求14所述的制品,其中,改变操作包括:
调整被识别为可能出错的存储单元的模拟电荷值。
18.如权利要求14所述的制品,其中,改变操作包括:
用随机二进制数据替代来自被识别为可能出错的存储单元的数据。
19.如权利要求14所述的制品,其中,所述操作还包括:
在一电压范围内增加读基准电压;
对于每次增加,从所述指定范围的连续存储位置中读取二进制数据;以及
识别哪些单元在当前的增加中产生了与前一次增加中不同的二进制数据。
20.如权利要求14所述的制品,其中,所述指定范围的连续存储位置是存储器的页。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/316,986 | 2008-12-18 | ||
US12/316,986 US8291297B2 (en) | 2008-12-18 | 2008-12-18 | Data error recovery in non-volatile memory |
PCT/US2009/066612 WO2010080257A2 (en) | 2008-12-18 | 2009-12-03 | Data error recovery in non-volatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102171659A true CN102171659A (zh) | 2011-08-31 |
CN102171659B CN102171659B (zh) | 2013-11-06 |
Family
ID=42267898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801392394A Expired - Fee Related CN102171659B (zh) | 2008-12-18 | 2009-12-03 | 非易失性存储器中的数据错误恢复 |
Country Status (7)
Country | Link |
---|---|
US (1) | US8291297B2 (zh) |
EP (1) | EP2368186B1 (zh) |
JP (1) | JP5367835B2 (zh) |
KR (1) | KR101248352B1 (zh) |
CN (1) | CN102171659B (zh) |
TW (1) | TWI455145B (zh) |
WO (1) | WO2010080257A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317525A (zh) * | 2014-09-23 | 2015-01-28 | 天津国芯科技有限公司 | 一种随机存储器的扩展方法及装置 |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8291297B2 (en) | 2008-12-18 | 2012-10-16 | Intel Corporation | Data error recovery in non-volatile memory |
US8407564B2 (en) * | 2009-07-15 | 2013-03-26 | Intel Corporation | Prediction and cancellation of systematic noise sources in non-volatile memory |
US8301980B2 (en) * | 2009-09-28 | 2012-10-30 | Nvidia Corporation | Error detection and correction for external DRAM |
US8190974B2 (en) * | 2009-09-28 | 2012-05-29 | Nvidia Corporation | Error detection and correction for external DRAM |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
KR101736384B1 (ko) | 2010-09-29 | 2017-05-16 | 삼성전자주식회사 | 비휘발성 메모리 시스템 |
US8422303B2 (en) | 2010-12-22 | 2013-04-16 | HGST Netherlands B.V. | Early degradation detection in flash memory using test cells |
US8369143B2 (en) | 2010-12-22 | 2013-02-05 | HGST Netherlands B.V. | Early detection of degradation in NOR flash memory |
US8599609B2 (en) | 2010-12-22 | 2013-12-03 | HGST Netherlands B.V. | Data management in flash memory using probability of charge disturbances |
US8649215B2 (en) | 2010-12-22 | 2014-02-11 | HGST Netherlands B.V. | Data management in flash memory using probability of charge disturbances |
US8422296B2 (en) | 2010-12-22 | 2013-04-16 | HGST Netherlands B.V. | Early detection of degradation in NAND flash memory |
KR101739878B1 (ko) | 2011-02-22 | 2017-05-26 | 삼성전자주식회사 | 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템 |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
KR101835605B1 (ko) * | 2011-11-24 | 2018-03-08 | 삼성전자 주식회사 | 플래시 메모리 시스템 및 플래시 메모리 시스템의 리드 방법 |
WO2013095525A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Content-aware caches for reliability |
KR101625000B1 (ko) * | 2012-03-29 | 2016-05-27 | 인텔 코포레이션 | 메모리 셀을 위한 적응적 판독 기준 이동 |
US9208022B2 (en) * | 2012-03-29 | 2015-12-08 | Intel Corporation | Techniques for adaptive moving read references for memory cell read error recovery |
US8793558B2 (en) * | 2012-08-27 | 2014-07-29 | Freescale Semiconductor, Inc. | Adaptive error correction for non-volatile memories |
US8869008B2 (en) * | 2013-01-17 | 2014-10-21 | Apple Inc. | Adaptation of analog memory cell read thresholds using partial ECC syndromes |
US10114912B1 (en) * | 2014-03-26 | 2018-10-30 | Cadence Design Systems, Inc. | System and method for monitoring address traffic in an electronic design |
KR102292167B1 (ko) * | 2014-04-04 | 2021-08-25 | 삼성전자주식회사 | 배드 블록 관리 방법 및 메모리 시스템 |
US9389973B2 (en) | 2014-05-30 | 2016-07-12 | Oracle International Corporation | Memory error propagation for faster error recovery |
US9558069B2 (en) * | 2014-08-07 | 2017-01-31 | Pure Storage, Inc. | Failure mapping in a storage array |
US9728278B2 (en) | 2014-10-24 | 2017-08-08 | Micron Technology, Inc. | Threshold voltage margin analysis |
KR20160073834A (ko) * | 2014-12-17 | 2016-06-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템 동작 방법 |
US9679661B1 (en) | 2016-06-28 | 2017-06-13 | Sandisk Technologies Llc | Non-volatile storage system with self-test for read performance enhancement feature setup |
US9672940B1 (en) | 2016-08-18 | 2017-06-06 | Sandisk Technologies Llc | Non-volatile memory with fast read process |
KR20210132784A (ko) | 2020-04-27 | 2021-11-05 | 삼성전자주식회사 | 메모리 장치 및 메모리 장치로부터 데이터를 읽는 방법 |
US11409601B1 (en) | 2021-01-26 | 2022-08-09 | Micron Technology, Inc. | Memory device protection |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060133141A1 (en) * | 2004-12-22 | 2006-06-22 | Gorobets Sergey A | Erased sector detection mechanisms |
US20070277060A1 (en) * | 2006-05-15 | 2007-11-29 | Apple Inc. | Use of Alternative Value in Cell Detection |
US20080034272A1 (en) * | 2006-08-07 | 2008-02-07 | Zining Wu | System and method for correcting errors in non-volatile memory using product codes |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6222762B1 (en) * | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5859858A (en) * | 1996-10-25 | 1999-01-12 | Intel Corporation | Method and apparatus for correcting a multilevel cell memory by using error locating codes |
JP2001332096A (ja) * | 2000-05-16 | 2001-11-30 | Hitachi Ltd | 不揮発性半導体メモリおよび不揮発性半導体メモリを用いた記録再生装置 |
JP4323707B2 (ja) * | 2000-10-25 | 2009-09-02 | 富士通マイクロエレクトロニクス株式会社 | フラッシュメモリの欠陥管理方法 |
EP1211812B1 (en) * | 2000-10-31 | 2006-11-15 | STMicroelectronics S.r.l. | A/D conversion method in high density multilevel non-volatile memory devices and corresponding converter device |
US6542407B1 (en) * | 2002-01-18 | 2003-04-01 | Sandisk Corporation | Techniques of recovering data from memory cells affected by field coupling with adjacent memory cells |
US6751766B2 (en) * | 2002-05-20 | 2004-06-15 | Sandisk Corporation | Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data |
JP3914839B2 (ja) | 2002-07-11 | 2007-05-16 | エルピーダメモリ株式会社 | 半導体記憶装置 |
US7231585B2 (en) * | 2002-12-11 | 2007-06-12 | Nvidia Corporation | Error correction for flash memory |
JP4158526B2 (ja) * | 2003-01-09 | 2008-10-01 | 松下電器産業株式会社 | メモリカード及びメモリへのデータ書き込み方法 |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
JP4256198B2 (ja) * | 2003-04-22 | 2009-04-22 | 株式会社東芝 | データ記憶システム |
US7012835B2 (en) * | 2003-10-03 | 2006-03-14 | Sandisk Corporation | Flash memory data correction and scrub techniques |
JP4332132B2 (ja) | 2005-05-11 | 2009-09-16 | Tdk株式会社 | メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法 |
JP4575288B2 (ja) * | 2005-12-05 | 2010-11-04 | 株式会社東芝 | 記憶媒体、記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム |
US8055979B2 (en) * | 2006-01-20 | 2011-11-08 | Marvell World Trade Ltd. | Flash memory with coding and signal processing |
US7844879B2 (en) * | 2006-01-20 | 2010-11-30 | Marvell World Trade Ltd. | Method and system for error correction in flash memory |
CN103208309B (zh) | 2006-05-12 | 2016-03-09 | 苹果公司 | 存储设备中的失真估计和消除 |
JP4999921B2 (ja) * | 2006-05-12 | 2012-08-15 | アノビット テクノロジーズ リミテッド | メモリ素子用の歪み推定と誤り訂正符号化の組み合せ |
KR101266594B1 (ko) * | 2006-08-05 | 2013-05-22 | 벤호프 게엠베하 엘엘씨 | 솔리드 스테이트 스토리지 소자 및 방법 |
US7369434B2 (en) * | 2006-08-14 | 2008-05-06 | Micron Technology, Inc. | Flash memory with multi-bit read |
US7567461B2 (en) * | 2006-08-18 | 2009-07-28 | Micron Technology, Inc. | Method and system for minimizing number of programming pulses used to program rows of non-volatile memory cells |
JP2008090451A (ja) * | 2006-09-29 | 2008-04-17 | Toshiba Corp | 記憶装置 |
US7904788B2 (en) | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of varying read threshold voltage in nonvolatile memory |
KR100871700B1 (ko) | 2007-02-13 | 2008-12-08 | 삼성전자주식회사 | 불휘발성 메모리 장치에서 전하 손실에 기인한 오류 데이터정정 방법 |
US7616495B2 (en) * | 2007-02-20 | 2009-11-10 | Sandisk Corporation | Non-volatile storage apparatus with variable initial program voltage magnitude |
KR100865830B1 (ko) * | 2007-02-22 | 2008-10-28 | 주식회사 하이닉스반도체 | 메모리 소자의 독출 방법 |
US7904793B2 (en) * | 2007-03-29 | 2011-03-08 | Sandisk Corporation | Method for decoding data in non-volatile storage using reliability metrics based on multiple reads |
US7966546B2 (en) | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Non-volatile memory with soft bit data transmission for error correction control |
US7966550B2 (en) * | 2007-03-31 | 2011-06-21 | Sandisk Technologies Inc. | Soft bit data transmission for error correction control in non-volatile memory |
US7876621B2 (en) * | 2007-04-23 | 2011-01-25 | Sandisk Il Ltd. | Adaptive dynamic reading of flash memories |
US7971123B2 (en) * | 2007-07-02 | 2011-06-28 | International Business Machines Corporation | Multi-bit error correction scheme in multi-level memory storage system |
KR101425958B1 (ko) * | 2007-09-06 | 2014-08-04 | 삼성전자주식회사 | 멀티-비트 데이터를 저장하는 메모리 시스템 및 그것의읽기 방법 |
KR101515122B1 (ko) * | 2008-02-15 | 2015-04-27 | 삼성전자주식회사 | 저장된 데이터의 오류에 기반하여 기준 전압을 제어하는 방법과 메모리 데이터 검출 장치 |
KR101466698B1 (ko) * | 2008-02-19 | 2014-11-28 | 삼성전자주식회사 | 메모리 장치 및 메모리 데이터 읽기 방법 |
US8291297B2 (en) | 2008-12-18 | 2012-10-16 | Intel Corporation | Data error recovery in non-volatile memory |
-
2008
- 2008-12-18 US US12/316,986 patent/US8291297B2/en active Active
-
2009
- 2009-12-03 WO PCT/US2009/066612 patent/WO2010080257A2/en active Application Filing
- 2009-12-03 EP EP09837801.1A patent/EP2368186B1/en not_active Not-in-force
- 2009-12-03 JP JP2011534940A patent/JP5367835B2/ja not_active Expired - Fee Related
- 2009-12-03 KR KR1020117007710A patent/KR101248352B1/ko active IP Right Grant
- 2009-12-03 CN CN2009801392394A patent/CN102171659B/zh not_active Expired - Fee Related
- 2009-12-07 TW TW098141707A patent/TWI455145B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060133141A1 (en) * | 2004-12-22 | 2006-06-22 | Gorobets Sergey A | Erased sector detection mechanisms |
CN101120417A (zh) * | 2004-12-22 | 2008-02-06 | 桑迪士克股份有限公司 | 擦除扇区检测机构 |
US20070277060A1 (en) * | 2006-05-15 | 2007-11-29 | Apple Inc. | Use of Alternative Value in Cell Detection |
US20080034272A1 (en) * | 2006-08-07 | 2008-02-07 | Zining Wu | System and method for correcting errors in non-volatile memory using product codes |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317525A (zh) * | 2014-09-23 | 2015-01-28 | 天津国芯科技有限公司 | 一种随机存储器的扩展方法及装置 |
CN104317525B (zh) * | 2014-09-23 | 2017-08-11 | 天津国芯科技有限公司 | 一种随机存储器的扩展方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2010080257A2 (en) | 2010-07-15 |
EP2368186B1 (en) | 2017-07-26 |
WO2010080257A3 (en) | 2010-09-02 |
TW201035984A (en) | 2010-10-01 |
CN102171659B (zh) | 2013-11-06 |
EP2368186A4 (en) | 2012-07-18 |
JP2012507108A (ja) | 2012-03-22 |
US8291297B2 (en) | 2012-10-16 |
JP5367835B2 (ja) | 2013-12-11 |
TWI455145B (zh) | 2014-10-01 |
US20100162084A1 (en) | 2010-06-24 |
KR101248352B1 (ko) | 2013-04-01 |
EP2368186A2 (en) | 2011-09-28 |
KR20110065497A (ko) | 2011-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102171659B (zh) | 非易失性存储器中的数据错误恢复 | |
CN102804146B (zh) | 跟踪存储器件内的错误数据的系统和方法 | |
TWI569273B (zh) | 非揮發性記憶體裝置讀取干擾管理方法 | |
TWI574277B (zh) | 記憶體裝置中之錯誤校正操作 | |
KR100799688B1 (ko) | 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법 | |
US8345487B2 (en) | Method of setting read voltage minimizing read data errors | |
TWI555023B (zh) | 快閃記憶體更新方法以及快閃記憶體控制器 | |
US10936391B2 (en) | Memory management method and storage controller | |
US7870472B2 (en) | Methods and apparatus for employing redundant arrays to configure non-volatile memory | |
CN101599305B (zh) | 具有数据修复功能的储存系统及其数据修复方法 | |
US9189313B2 (en) | Memory system having NAND-type flash memory and memory controller with shift read controller and threshold voltage comparison module | |
US8276028B2 (en) | Using error information from nearby locations to recover uncorrectable data in non-volatile memory | |
US10977139B1 (en) | Detailed failure notifications in memory sub-systems | |
KR20080035353A (ko) | 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법 | |
US7870471B2 (en) | Methods and apparatus for employing redundant arrays to configure non-volatile memory | |
CN109378027A (zh) | 固态储存装置的控制方法 | |
US10475522B2 (en) | Memory system including a delegate page and method of identifying a status of a memory system | |
US20240069765A1 (en) | Two-tier defect scan management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20131106 Termination date: 20181203 |