CN102725738A - 使用位值的存储的计数来校正数据错误的系统和方法 - Google Patents

使用位值的存储的计数来校正数据错误的系统和方法 Download PDF

Info

Publication number
CN102725738A
CN102725738A CN2011800070634A CN201180007063A CN102725738A CN 102725738 A CN102725738 A CN 102725738A CN 2011800070634 A CN2011800070634 A CN 2011800070634A CN 201180007063 A CN201180007063 A CN 201180007063A CN 102725738 A CN102725738 A CN 102725738A
Authority
CN
China
Prior art keywords
counting
group
value
memory array
storage
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.)
Pending
Application number
CN2011800070634A
Other languages
English (en)
Inventor
M.A.德阿布里奥
S.斯卡拉
C.J.冈萨雷兹
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SanDisk Corp filed Critical SanDisk Corp
Publication of CN102725738A publication Critical patent/CN102725738A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1072Adding 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 multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

在耦合于存储器阵列的控制器处,一种方法包括接收如下指示:从存储器阵列读取的第一组数据位包括错误校正码(ECC)引擎无法校正的错误。可以将具有特定位值的第一组数据位的计数与具有该特定位值的数据位的先前计数相比较。响应于确定所述计数超过所述先前计数,标识所述第一组数据位中的具有所述特定位值且与第二组数据位的校正的数据位对应于相同的存储器单元的位。可以改变第一组的所标识的位的值,以生成调整后的一组数据位,可以将调整后的该组数据位提供给ECC引擎。

Description

使用位值的存储的计数来校正数据错误的系统和方法
技术领域
本公开通常涉及数据处理和存储系统,且更具体地涉及检测和校正在存储或传输的数据内的错误。
背景技术
计算机数据存储系统通常包括改善数据完整性的错误校正码(ECC)处理。例如,可以在读取操作期间使用ECC,来确定所访问的数据位(例如,表示由处理器提取的信息的存储器单元)是否具有不正确的状态。ECC处理可以通过检测和校正多个出错位来增加存储器器件的操作可靠性。校正的位的阈值数量取决于应用的特定ECC技术的校正能力。尽管ECC提供了先进性,但是将期望能够校正超过应用的ECC技术的校正能力的错误。
发明内容
公开了可以标识和校正存储或传输的数据内的错误的系统和方法。一个特定实施例可以跟踪从字线读取的数据内或从来自存储器的一页或多页数据中发现的多个错误。当在读取的数据中的错误的数量超过错误校正码(ECC)引擎的能力时,可以使用校正后模块来确定要调整的一个或多个位来呈现(render)可由ECC引擎校正的数据。例如,读取字线可以包括存储多个位的多级单元(MLC),诸如在所述字线的第一逻辑页中存储第一位且在所述字线的第二逻辑页中存储第二位。第一页可以具有ECC引擎无法校正的错误,而第二页可以具有可由ECC引擎校正的错误。该校正模块可以至少部分地基于在第二页中标识的错误来选择第一页内的一个或多个位。例如,特定MLC在第一页中具有位错误的可能性可以与MLC在其他页中具有的位错误的数量或类型相关。可以通过改变第一页中的所选位的值(例如从逻辑“1”改变为逻辑“0”或从逻辑“0”改变为逻辑“1”)来调整第一页,且可以将调整后的第一页重新发送到ECC引擎来确定该调整后的第一页是否可校正。可以重复在第一页中选择和翻转位的处理,直到调整后的第一页可由ECC引擎校正。
当存储器器件确定特定字线的错误的数量逼近其ECC引擎的校正能力时,该器件可以存储附加的信息来帮助标识错误类型和在字线内的位置。例如,当错误的数量到达阈值时,可以存储该字线内的一组位中所标识的1的数量的计数。该字线或页内的单元可以根据该计数来分组。例如,随着页内的错误的数量增加,组的数量也可以增加。一页的每个组的1的数量的计数可以与从先前读取中保存的该组的1的数量的计数相比较。可以使用该比较来确定在每个组内要翻转的位的值和数量(例如,当读取的计数超过存储的计数两个时,组内的两个1将被翻转为0)。可以使用概率表来基于该组中哪个位更可能出错来确定要翻转哪个(些)位。
可以使用这些概率表、以及每组的1的数量来决定翻转对应于被标识为具有一个或多个其他位错误、诸如在其他页中的校正后的位错误的MLC的位。在翻转了所选位之后,可以执行ECC过程来验证翻转该所选位的决定。该处理可以是反复的,且可以当ECC引擎可以恢复原始数据时、当完成了预定数量的反复时、或根据其他终止标准而终止。
附图说明
图1是包括被配置以标识和校正在从存储器阵列中提取的数据中的错误的控制器的系统的特定示例实施例的方框图;
图2是图示具有使用错误校正码计算和概率表查找来翻转出错位而被校正的状态的存储器单元的一般图;
图3是包括具有读取的计数和错误概率表的存储器阵列的系统的特定实施例的方框图;
图4是分析和校正存储器单元内的错误的方法的特定实施例的流程图;
图5是分析和校正存储器单元内的错误的方法的另一特定实施例的流程图;
图6是基于表查找来校正存储器单元内的错误的方法的特定实施例的流程图。
具体实施方式
图1是包括被配置以校正从存储器阵列102(例如,闪存多级单元阵列)中读取的数据中的超出ECC引擎118的校正能力的错误的控制器104的系统100的特定示例实施例的方框图。控制器104包括被配置以确定在ECC引擎119无法校正的数据中要调整的一个或多个位的校正模块130。
该存储器阵列102可以包括一个或多个字线108。字线108可以表示包括一个或多个多级单元(MLC)144的存储器阵列102的行和耦合于存储器阵列102的行中的MLC 144的控制栅极的导线。存储器阵列102可以通过通信路径156诸如经由读取操作146来针对控制器104发送和接收数据。
控制器104可以响应于诸如主机设备的外部设备106,且可以使能对存储器阵列102的写入和读取访问。控制器104包括校正模块130,校正模块130被配置以调整ECC引擎118无法校正的数据且向ECC引擎118提供调整后的数据用于校正。控制器104还包括缓冲器162、校正后缓冲器124、日志文件134、和错误概率表138。
该ECC引擎118可以被配置以基于诸如里德-所罗门(Reed-Solomon)(RS)、Bose-Chaudhuri-Hochquenghem(BCH)、低密度奇偶校验(Low DensityParity Check)(LDPC)、一个或多个其他ECC处理或其任一组合的错误校正机制来解码和校正错误。ECC引擎118可以被配置以解码具有少于或等于ECC引擎118的错误校正能力的错误的数量的接收的数据。例如,该错误校正能力可以是每编码数据的512字节的12位错误。该ECC引擎118可以被配置以经由路径120向校正后缓冲器124传送校正后的数据(即,不具有错误且不需要校正的数据、或已经由ECC引擎118校正的数据)。该ECC引擎118可以被配置以经由路径116向缓冲器162传送ECC引擎118无法校正的数据。
该缓冲器162可以被配置以存储ECC引擎118无法校正的数据,且校正后缓冲器124可以被配置以存储已经由ECC引擎118校正的数据。例如,当读取字线108时,从字线108读取的第一组110位ECC引擎118无法校正,且被存储在缓冲器162处,且从字线108读取的第二组126位可以由ECC引擎118校正,且被存储在校正后缓冲器124处。
该第一组110可以包括一个或多个未校正页112,且该第二组126可以包括一个或多个校正后的页128。为了例示,每个MLC 144可以具有对应于三位值的状态,且每个MLC 144的低阶(lower-order)位被分配给第一逻辑页,且中间位被分配给第二逻辑页,且高阶位被分配给第三逻辑页。每个页可以单独编码且在ECC引擎118处独立地处理。该字线108的一个或多个页可能不可由ECC引擎118校正,且被存储在缓冲器162中作为未校正的页112,而字线108的一个或多个其他页可由ECC引擎118校正,且被存储在校正后缓冲器162中作为校正后的页128。
校正模块130被配置以经由路径140访问缓冲器162处的第一组110位,且被配置以翻转该第一组110的一个或多个位来生成调整后的一组170位。调整后的该组170位被提供给ECC引擎118以便处理。如果调整后的该组170位可由ECC引擎118校正,则可以向外部设备106提供校正后且解码后的数据,作为对针对字线108的读取访问的请求的响应。如果调整后的该组170位ECC引擎118无法校正,则可以在反复处理中由校正模块130翻转第一组110的一个或多个其他位,来呈现可由ECC引擎118校正的第一组110数据位。
校正模块130可以被配置以通过将第一组110的位值的计数114与经由路径158从日志文件134中提取的存储的先前计数136相比较来确定在第一组110中要校正的具有特定值的位的数量148。可以通过校正模块130或通过控制器104内的其他硬件来生成该计数114。可以从在先前写入操作期间被写入字线108的数据中、或从先前从字线108读取并由ECC引擎118校正的数据中生成该存储的先前计数136。
例如,该计数114可以指示未校正的第一组110中的1的数量,且存储的先前计数136可以指示在校正了所有错误之后应该在第一组110中出现的1的数量。当该计数114超过存储的先前计数1361个时,第一组110中的取“0”值的位错误地改变为了“1”值,且校正模块130可以选择第一组110中的取“1”值的位来翻转为“0”值。当存储的先前计数136超过计数114时,取“1”值的位错误地改变为了“0”值,且校正模块130可以选择第一组110中的取“0”值的位来翻转为“1”值。该校正模块130可以被配置以选择等于计数114和存储的先前计数136之间的差的数量148的位来翻转。虽然该计数114和该存储的先前计数136被描述为“1”值的计数,但是相反,该计数114和存储的先前计数136可以是“0”值的计数,且该校正模块130可以被配置以基于比较0的计数来确定要翻转的位的数量和值。
该配置模块130可以根据所选的位出错的可能性来选择第一组110中要翻转的特定位。例如,该配置模块130可以被配置以访问错误概率表138中的至少一个来标识第一组110中的用于校正的至少一个位。错误概率表138包括对应于多位单元(例如MLC)的一个位基于是否已经检测和/或校正了多位单元的其他位中的错误152而是否可能出错的错误数据150。
例如,MLC可以具有由未校正的页112中的第一位和校正后的页128中的第二位的值表示的状态(例如,阈值电压)。MLC的状态可能由于硬件故障(诸如断开的字线或其他连接)而被错误地读取,或可能被其他事件(诸如由对相邻字线的写入操作导致的编程干扰)损坏。导致校正后的页128中的位错误的事件也可能导致未校正的页112中的位错误。如在图2-3中描述的,特定位出错的可能性可以与MLC的其他位中的错误152的数量、特定位的值、MLC的一个或多个状态值160、一个或多个其他因素或其任意组合相关。
校正模块130可以被配置以从ECC引擎118接收指示第二组126中的哪些位被校正了的校正数据。校正模块130可以被配置以定位第一组110的与第二组126的校正位共享公共MLC的每个位。校正模块130可以针对第一组110中的每个定位的位开始在错误概率表138处的查找操作,以提取指示该位出错的可能性的数据。
例如,该校正模块130可以经由路径142来访问校正后缓冲器124来提取在第二组126中与第一组110的特定位共享MLC的一个或多个位的位值。校正模块130可以处理提取的位值,且使用MLC的校正后的位的数量、MLC的一个或多个位值、或其他信息来在错误概率表138处进行查找操作,以在错误概率表138处定位条目。在错误概率表138处定位的条目的错误可能性值可以被返回到该校正模块130,且与第一组110的特定位相关联。
校正模块130可以通过选择被指示为具有最高错误可能性值的位来选择在第一组110中要校正的确定的数量148的位。例如,在确定要校正的位的数量148为N的情况下,则可以选择对应于N个最高错误可能性值的N位。校正模块130可以读取第一组110位,翻转所选位来生成调整后的组170,且开始在ECC引擎118处对调整后的组170的解码。
在操作期间,可以对字线108进行读取操作。ECC引擎118可以成功地解码字线108的每个逻辑页,且可以生成指示每个页的校正的错误的数量的校正数据。校正模块130可以将校正的错误的数量与阈值错误数量相比较,来确定字线108或字线108的一个或多个页是否面临在随后的读取操作中超出ECC引擎118的校正能力的危险。
响应于满足该阈值的校正的错误的数量,校正模块130可以逻辑地将字线108或该字线108的页划分为一个或多个组,且在日志文件134中存储每个组的1的计数。因此,在日志文件中存储的计数对应于数据的校正后、无错误的表示(即,在ECC引擎118的成功校正之后)。可以确定组的数量来减少在相同组中出现1改变为0错误和0改变为1错误两者的概率。例如,如果ECC引擎118的校正能力是每512字节页12位,则每页可以被逻辑地划分为十二或更多组。在稍后的读取操作期间,当在该页中的多于十二个错误使得该页不可由ECC引擎118校正时,每个组在统计上很可能仅具有一个错误。虽然被图示为被存储在控制器104内,但是日志文件134可以替换地被存储在存储器阵列102处。
在针对字线108或该字线108内的一个或多个页而存储每个组内的对应于具有特定值的位的数量的计数,在字线108处的随后的读取操作可能返回具有比ECC引擎118的校正能力更多数量的错误的页数据。该ECC引擎118可以生成诸如非收敛错误信号的信号,且响应于其,可以在缓冲器162处存储读取的数据的一个或多个不可校正的页。字线108的校正后的页可以被存储在校正后缓冲器124处。还可以由ECC引擎生成对应于校正后的数据的错误位置数据,并将其存储在校正后缓冲器124处。
校正模块130可以提取对应于不可校正的页的数据组中的1的存储的计数、诸如存储的先前计数136。校正模块130可以通过将每个组的最近计数(诸如计数114)与该组的存储的先前计数相比较,来对于在缓冲器162处存储的数据的各个组确定要翻转的位的数量和位值。对于被指示为具有要校正的一个或多个位错误的每个组,该错误校正模块130可以通过访问错误概率表138并基于该概率表查找结果来选择被指示为最可能出错的位,来选择要翻转的一个或多个位。
校正模块130可以生成调整后的组170,并对ECC引擎118发信号来开始包括调整后的组170的解码操作。例如,校正模块130可以生成匹配缓冲器162中的数据的每个组的所选的位被翻转的调整后的数据页(即,调整后的页包含以页格式的调整后的一个或多个组)。调整后的数据页可以被发送到ECC引擎118。作为另一例子,校正模块130可以在缓冲器162处翻转所选位,且指示ECC引擎118来读取缓冲器162以便解码(例如,在缓冲器162内生成调整后的组170)。
当翻转了足够数量的出错位时,调整后的数据中的剩余错误的数量可以在ECC引擎118的错误校正能力之内,且可以完成解码。该ECC引擎118可以生成指示在调整后的数据中的校正的错误的位置的数据。校正模块130可以基于错误的总数(由模块130翻转的位和由ECC引擎130校正的位)、错误的位置、错误值或其组合来更新将页逻辑地划分为组的逻辑划分。校正模块130可以为新的组生成1值的新的计数,且在日志文件134中存储该分组信息和计数信息用于在对字线108的下一次读取中使用。
因此,即使从字线108读取的数据不再可由ECC引擎118校正,也可以继续使用字线108。因此,该存储器阵列102可以具有与不使用错误校正模块130且受ECC引擎118的校正能力限制的系统相比更长的有用生命。或者,或另外,控制器104可以被设计为通过对于具有较少能力的ECC引擎118使用校正模块130来维持更有能力的ECC引擎的有效错误校正能力,且相比于更有能力的ECC引擎,其可以用减少的功耗、器件大小、和制造成本来操作。
图2示出被分析用于错误标识和校正的存储器单元的变型。存储器单元可以包括MLC、诸如图1的存储器阵列102的MLC 144。图2示出可以从存储器阵列读取的存储器单元的不同变型200、250和290。为了简化描述,该存储器单元被图示为包括以列格式排列的三个位、包括顶部位、中间位和底部位。顶部位可以是第一页的部分,中间位可以是第二页的部分,且底部位可以是第三页的部分。可以使用ECC引擎来校正第二和第三页,而第一页不可由ECC引擎校正。
该单元变型200包括具有顶部、中间和底部位值的不同组合的不同状态202、204、206、208、210、212、214和216。每个状态202-216可以对应于存储器单元的不同阈值电压范围。该存储器单元可以被初始地读为“101”,对应于该状态208。该状态208可以被存储为“之前(before)”值。
包括存储器单元的顶部位的第一页可以包括不可校正的错误。单元变型250和290图示了在由ECC引擎校正了第二和第三页之后可能发生的两种情况。例如,单元变型250包括状态202-216。单元变型250的校正后的状态可以包括“100”,这对应于状态210。因此,第三页的校正导致第三位从“1”改变为“0”,而该第二位不改变。该状态210可以被存储为“之后(after)”值。从208到210的状态的改变可以表示一个状态位置的移动。箭头218图示了从“之前”状态到“之后”状态的移动。该移动对应于一的汉明距离(Hamming distance)。
相反,单元变型290的校正后的状态可以包括“110”,这对应于状态216。因此,在变型290中,第三页的校正导致第三位从“1”改变为“0”,且第二页的校正导致第二位从“0”改变为“1”。该状态216可以被存储为“之后(after)”值。从208到216的状态的改变可以表示两个状态位置的移动。箭头220图示了从“之前”状态到“之后”状态的移动。该移动对应于二的汉明距离。
可以使用汉明距离的值作为输入以寻址错误概率表来确定第一位不正确的概率。例如,对应于单元变型250的、一的汉明距离可以被用于查找诸如图1的错误概率表138的查找错误概率表内的值。还可以使用包括该单元的该组的1的计数、诸如图1的计数114作为查找因素。诸如图1的控制器104的控制器可以使用ECC计算的错误概率表输入(例如,一的汉明距离)且使用该计数来确定该单元的校正后的状态应该是“000”。箭头222示出单元状态向正确状态212的可能的翻转。
在另一例子中,对应于单元变型290的二的汉明距离可以被用于查找诸如图1的错误概率表138的查找错误概率表内的值。该错误概率表还可以使用包括该单元的该组的1的计数、诸如图1的计数114作为查找因素。诸如图1的控制器104的控制器可以生成包括ECC计算的错误概率表输入(例如,二的汉明距离)和该计数来确定该单元的校正后的状态应该是“010”。箭头224示出顶部位向正确状态214的可能的翻转。
因此,单元变型250和290图示了具有使用ECC计算和概率表查找来翻转出错位而被校正的状态的存储器单元的例子。提供给诸如图1的错误概率表138的错误概率表的数据可以通过从读取的值到部分校正的值的汉明距离来索引。可以使用具有相对小的处理需求的ECC机制,且可以快速地标识错误。可以使用最后确定的校正后的状态来改善数据完整性。
图3图示了被配置以标识并校正数据错误的系统300的另一特定实施例。系统300类似于图1的系统100;但是,存储的计数310和错误概率表312被包括在存储器阵列302中。图3图示被存储在存储器阵列302内的第一、存储的计数(例如存储的计数310),而图1图示被存储在控制器104内的第一、存储的计数(例如,存储的先前计数136)。如图3所示,该存储器阵列302被耦合于控制器304,且包括字线308。控制器304可以包括与图1的控制器104相似的功能。控制器304耦合于外部设备306。外部设备306可以与图1的外部设备106相同。
该存储器阵列302包括错误概率表312。错误概率表312可以与图1的错误概率表138相同。图3所示的错误概率表包括查找表350、352、354和356。
控制器304可以包括校正模块314、缓冲器316和ECC引擎318。校正模块314可以与图1的校正模块130相同。缓冲器316可以对应于图1的缓冲器162和校正后缓冲器124。ECC引擎318可以与图1的ECC引擎118相同。
可以使用查找表350来基于MLC的其他检测的错误的数量来确定MLC的特定位出错的概率。例如,在MLC存储三位值、每个位值对应于不同页、且两页可校正且第三页不可校正的情况下,第三页中的特定位的错误的概率可以与MLC的其他两位中检测到的错误的数量相关。
在如由路径346指示的、第一、存储的计数310和第二、读取的计数的差等于1的情况下,且在特定位值等于1的情况下,可以使用该查找表350。在如在346指示的、第一、存储的计数310和读取的计数的差等于1的情况下,且在特定位值等于0的情况下,可以使用该查找表352。查找表352包括指示MLC中的校正的错误的数量的列。该列与指示位错误的概率的列相关。
例如,在MLC中检测到了0个错误的情况下,特定位出错的概率可以对应于被示为“A”的值。在MLC中检测到了1个错误的情况下,特定位出错的概率可以对应于被示为“B”的值。在另一例子中,在MLC中检测到了2个错误的情况下,特定位出错的概率可以对应于被示为“C”的值。例如,值“A”可以小于值“B”,值“B”可以小于值“C”。
在如在348指示的、第一、存储的计数310和读取的计数的差大于1的情况下,且在特定位值等于1的情况下,可以使用该查找表354。在如在348指示的、第一、存储的计数310和读取的计数的差大于1的情况下,且在特定位值等于0的情况下,可以使用该查找表356。查找表356包括指示部分校正的值的列。该列与指示位错误的概率的列相关。
为了例示,在三位MLC中,特定位出错的概率可以对应于其他两位的校正后的值。例如,在三位MLC的第一位和第二位的校正后的值都是“0”的情况下,特定位出错的概率可以对应于被示为“D”的值。在第一位的校正后的值是“0”且第二位的校正后的值是“1”的情况下,特定位出错的概率可以对应于被示为“E”的值。在另一例子中,在第一位的校正后的值是“1”且第二位的校正后的值是“0”的情况下,特定位出错的概率可以对应于被示为“F”的值。在三位MLC的第一位和第二位的校正后的值都是“1”的情况下,特定位出错的概率可以对应于被示为“G”的值。因为表354和356指示作为单个MLC的正确的位值和读取的位值的函数的位错误的可能性,因此表354和356可以基于MLC的状态(例如,基于MLC的阈值电压)反映错误的可能性。
在操作中,控制器304可以接收如下指示:从存储器阵列302读取的数据位包括不能由ECC引擎318校正的错误。控制器304可以使得校正模块314能够基于错误概率表312的查找值且基于存储的计数310来改变数据位的值。控制器304可以反复地翻转位,直到ECC引擎318可以校正数据位。
虽然图3图示了基于错误的数量的查找表350和352和基于部分校正的值的查找表354和356,但是,在其他实施例中,可以使用其他标准作为确定或评估错误的概率的基础。例如,可以通过部分校正的值来索引所有错误概率表312,或可以通过检测到的错误的数量来索引所有错误概率表312。作为另一例子,错误概率表312可以与第一、存储的计数310和读取的计数之间的差无关。而且,虽然错误概率表312被示为对应于三位值(例如,MLC的八个状态),但是另一实施例的存储器单元的状态所表示的位的数量可以小于三位或大于三位。
可以基于实验数据、基于理论计算、基于诸如计算简化性和表存储大小的一个或多个其他因素、或其任一组合来确定图示的值“A”、“B”等中的一个或多个。如此,虽然图示的值“A”、“B”等被描述为对应于位错误的概率,但是在其他实施例中,图示的值“A”、“B”等中的一个或多个可能不对应于实际的概率,且相反可以指示错误的相对可能性或检查MLC以找到可能的错误的优先化机制。
图4是分析和校正存储器单元内的错误的方法的特定实施例的流程图。通常被指定为400的该方法包括在402处读取字线。例如,图1的控制器104可以从存储器阵列102读取字线108。
该方法400可以包括在404处读取包括不可校正的错误的页。例如,图1的控制器104可以在读取操作146期间从存储器阵列102读取该页112。
在406处,可以保存读取的单元的当前状态。该当前的状态可以被标记为“之前”状态。例如,图1的第一组110和计数114可以被存储在缓冲器162内。
在408处,可以进行字线的复制,且可以校正这些页上的可校正的错误。校正后的数据的副本可以被标记为“之后”。例如,图1的ECC引擎118可以校正字线108上的其他页上的错误,且存储校正后的数据作为页128。
该方法400可以包括在410处标识已经校正且移动到不同状态的单元。例如,图1的校正模块130可以标识在页128中已经校正且移动到不同状态的MLC 144。可以通过ECC引擎118向校正模块130提供关于校正的单元的信息。
在412处,可以分析要翻转的特定单元。例如,图1的校正模块130可以通过确定ECC引擎118不能校正的一组位中要校正的位的数量来分析MLC144。校正模块130可以进行概率表中的查找操作来确定最可能不正确的MLC位。校正模块130可以翻转所确定的位,且向ECC引擎118发送该数据。如果该组位仍然不可校正,则校正模块130可以基于与下一位相关的确定的概率来选择要翻转的下一位。
图5是校正存储器单元内的错误的方法的一个实施例的流程图。可以在耦合于存储器阵列的诸如图1的控制器104的控制器处进行通常被指定为500的方法。该方法500包括在502处接收如下指示:从所述存储器阵列读取的第一组数据位包括不可由ECC引擎校正的错误。例如,图1的控制器104可以从读取操作146中确定第一组110包括不可由ECC引擎118校正的错误。为了例示,图1的校正模块130可以从ECC引擎118接收指示ECC引擎118不能校正第一组110的一个或多个页112的信号。校正模块130还可以从ECC引擎118接收指示曾由ECC引擎118成功校正了的在第二组126中的一个或多个页128中发生的错误的信号。
在504处,可以将具有特定位值的第一组数据位的计数与具有该特定位值的数据位的先前计数相比较。例如,图1的校正模块130可以经由通信路径140接收该计数114。校正模块130可以诸如通过访问日志文件134、(例如,通过将第一组110的存储器地址与对应于存储的先前计数136的存储器地址相比较来)定位对应于第一组110的存储的先前计数136且从日志文件134提取存储的先前计数136来接收该存储的先前计数136。校正模块130可以诸如通过进行减法操作、逐位(bit-wise)比较操作、或确定计数114和存储的先前计数136之间的差的另一操作,来将计数114与存储的先前计数136相比较。该特定位值可以是“0”,且该计数114可以对应于第一组110的“0”值的数量。或者,该特定位值可以是“1”,且该计数114可以对应于第一组110的“1”值的数量。
在506处,可以确定在第一组中要翻转的位的数量。例如,图1的校正模块130可以确定要校正的位的数量148作为下述操作的结果,所述操作为从存储的先前计数136中减去该计数114并分配该减法的结果作为要校正的位的数量148。负的值可以指示一个或多个位应该被翻转为具有该特定值,而正的值可以指示具有该特定值的一个或多个位应该被翻转。或者,可以使用一个或多个其他处理来确定计数114和存储的先前计数136之间的差的符号和量值。
响应于确定所述计数超过所述先前计数,在508处,可以标识第一组数据位中的具有特定位值且与第二组数据位的校正的数据位对应于相同的存储器单元的位。例如,图1的控制器104可以响应于计数114超过存储的先前计数136,标识与第二组126的校正的位对应于相同的存储器单元的第一组110的位。
为了例示,ECC引擎118可以生成指示由ECC引擎118校正了的第二组126的位的数据。该校正模块130可以从ECC引擎118接收数据,且可以定位对应于第二组126的校正后的位的第一组110的一个或多个位。例如,MLC144可以具有对应于三个位值的状态,每个位值与分离的页上的相同位位置相关联(例如,如针对图2描述的)。可以标识一个或多个页128中的校正的错误的位位置,且可以将在校正的错误的位位置处的页112中的位标识为对应于与校正的错误相同的MLC。在其他实施例中,校正模块130可以根据与相同MLC 144相关联的第一和第二组110、124的对应位之间的一个或多个其他映射来标识第一组110的位。
可以定位与第二组126中的校正的错误的MLC对应的、第一组110的多个位。图1的校正模块130可以进行在错误概率表138处的多个查找操作。每个查找操作可以返回第一组110的对应位出错的可能性值或概率。校正模块130可以对对应于与第二组126中的校正的错误相同的MLC的、第一组110的每个定位的位进行查找操作,且标识由查找操作返回的一个或多个最大值。可以标识与最大返回的值相关联的第一组126中的位(例如,根据概率表138被指示为最可能出错的位)。
例如,校正模块130可以生成包括第一组110中对应于第二组126中的校正的错误的位位置、且包括针对每个位位置的表查找的结果的条目的表或缓冲器。每个表查找可以包含确定索引数据,诸如图3所示的。例如,校正模块130可以将第一组110中的位位置与对应于相同MLC的第二组126的位相比较。校正模块130可以基于由ECC引擎118生成的数据来确定第二组126中的(相同MLC的)对应位中多少位被校正了,且可以在对诸如图3的表350或352的概率表的查找操作期间供应该结果。作为另一例子,校正模块130可以访问校正后缓冲器124来读取第二组126的(相同MLC的)对应位的校正后的位值,且可以在对诸如图3的表354或356的概率表的查找操作期间提供校正后的位值。
继续该例子,在用与位位置和表查找的相关结果对应的条目来填充该表或缓冲器之后,可以定位最大表查找结果。例如,可以基于表查找结果值来对这些结果排序,且可以标识排序第一的条目。作为另一例子,可以遍历该表或缓冲器,且可以定位最大表查找结果。虽然在本例子中,基于最大表结果值来标识单个位,但是在其他实施例中,可以基于定位的N个最大表查找结果值来标识多个位(即N位)。例如,N的值可以等于要翻转的位的值。
在510处,可以改变第一组的所标识的位的值以生成调整后的一组数据位。例如,校正模块130可以改变所标识的位来生成调整后的组。为了例示,校正模块130可以访问缓冲器162且从第一组110中生成位值的副本。校正模块130可以在位值的副本中定位与第一组110的所标识的位对应的位位置。当所标识的位具有“0”值时,校正模块130可以用“1”值来替换“0”值以生成调整后的该组数据位170。当所标识的位具有“1”值时,校正模块130可以用“0”值来替换“1”值以生成调整后的该组数据位170。如果标识多个位,则校正模块130可以对每个所标识的位进行替换操作,以生成调整后的该组数据位。
在512处,可以基于表查找(例如至少部分地基于汉明距离、计数或状态值中的一种或多种)来选择所标识的位。为了例示,当如针对图3的表350和352描述的使用MLC中的错误的数量来确定错误的可能性时,表查找可以至少部分地基于汉明距离。作为另一例子,表查找可以通过使用计数作为选择要访问的概率表的参数、而至少部分地基于该计数,如针对图3的路径346和路径348描述的。作为另一例子,表查找可以至少部分地基于状态值、诸如结合该特定值基于MLC单元的部分校正后的位值,如图3的表354和356描述的。可以选择所标识的位作为具有定位的位中的最大表查找结果的位。
在514处,可以向ECC引擎提供调整后的该组数据位。例如,图1的校正模块130可以经由路径122向ECC引擎118的输入传送该调整后的组170。校正模块130可以生成一个或多个控制信号或引起一个或多个控制信号以向ECC引擎118提供,来使用调整后的该组170数据位作为输入数据来开始解码操作。ECC引擎118可以开始该解码操作,且可以生成校正后的输出或失败指示符。当ECC引擎118生成校正后的输出时,在调整后的组170中已经校正了第一组110的足够数量的错误从而满足了ECC引擎118的校正能力。
在接收到失败指示符时,在516处,可以反复翻转第一组中的位,直到ECC引擎确定该第一组是可校正的。例如,对调整后的该组数据位的ECC操作可能导致失败指示符提供给图1的校正模块130。响应于其,校正模块130可以选择要翻转的一个或多个附加或替换的位来生成调整后的另一组数据位,以供使用ECC引擎118评估。
例如,在校正模块130标识要翻转的每次反复的单个位(即,以用“0”值来替换单个“1”值或用“1”值来替换单个“0”值)的情况下,校正模块130可以将最近翻转的位返回到其原始值,且翻转第一组110的下一最可能出错的位来生成调整后的下一组数据位,以供在ECC引擎118处测试。可以根据诸如先前描述的查找表结果来标识下一最可能出错的位。可以向ECC引擎118提供得到的调整后的下一组数据位作为反复处理的下一反复,该反复处理可以当ECC引擎可以在任一特定反复中校正调整后的该组数据位时终止。该反复处理的其他终止标准可以包括:已经测试了所有定位的位,且每个得到的调整后的组都不能解码;已经测试了第一组110的所有位(即,包括不对应于与第二组126的校正的错误相同的单元的位),且每个得到的调整后的组都不能解码;已经完成了预定数量的反复;一个或多个其他终止标准;或其任一组合。
图6是基于表查找来校正存储器单元内的错误的方法的一个实施例的流程图。可以在耦合于存储器阵列的诸如图1的控制器104的控制器处进行通常被指定为600的方法。该方法600包括在602处存储一组位中被标识为具有特定位值的位的第一计数,该组位对应于该存储器阵列的字线的至少一部分。例如,图1的计数114可以对应于字线108,且可以被存储在日志文件134中作为存储的先前计数136,以供在ECC引擎118无法校正字线108的数据读取情况下以后提取。该特定位值可以是“0”,且被存储在缓冲器162中的该计数114可以对应于第一组110的“0”值的数量。或者,该特定位值可以是“1”,且被存储在缓冲器162中的该计数114可以对应于第一组110的“1”值的数量。虽然缓冲器162在图1中被图示为包括计数114,但是计数可以替换地被存储在与校正模块130或相当的逻辑器件通信的任一适当的存储器内。
位的第一计数可以被存储在控制器处或存储器阵列处。虽然存储的先前计数136在图1中被图示为在日志文件134内,但是在其他实施例中,该存储的计数可以不被存储在日志文件内。虽然图1示出在控制器104处存储该存储的先前计数136,但是在其他实施例中,该存储的计数不被存储在控制器处,而是可以被存储在存储器阵列102处。例如,第一计数可以被存储在存储器阵列内的日志文件中。
在604处,可以接收如下指示:该字线具有超过阈值错误数量的数量的错误,且可以响应于接收到该指示来存储该计数。例如,图1的控制器可以响应于从ECC引擎118接收到字线108具有过量的错误的指示来存储先前计数136。ECC引擎118可以指示错误的数量,且校正模块130可以确定该字线108很可能很快超出ECC引擎118的校正能力。随着逼近校正能力,控制器104可以开始存储针对字线108内的一组或多组数据位的先前计数136。可以在存储器阵列102或控制器104内设置标记或其他指示符(designator)以指示字线108具有大量错误或与存储的计数相关联。作为例子,图1的校正模块130可以从ECC引擎118接收指示已经由ECC引擎118检测到超过阈值的字线108的错误的数量的信号。对应于字线108的校正后的数据可以被逻辑地划分为一组或多组数据位,且为每组生成一个计数。与字线108相关联的计数可以被存储在日志文件134处以当在以后的读取操作期间从字线108读取数据时提取。
在606处,与字线相关联的计数的数量可以随着字线中的错误的数量增加而增加。例如,图1的字线108中的大量错误可以增加计数114的数量。为了例示,校正模块130可以接收由ECC引擎118检测的错误的数量,或可以基于计数114和针对该字线108的存储的先前计数136之间的差来确定该数量。校正模块130可以使用错误的数量来确定要在缓冲器162内存储的计数的数量。随着字线108内的错误的数量增加,计数的数量也可能增加。增加计数的数量可以减少由单个组内的多个单元的状态表示的位值将错误地翻转的概率。
在608处,可以确定计数的数量,以便在该组位内包括1改变为0的错误和0改变为1的错误中的仅一个。例如,可以基于ECC引擎118检测的错误的数量来确定图1的计数114的数量,以便在该组110内包括1改变为0的错误和0改变为1的错误中的仅一个。为了例示,字线108的读取操作146可能导致一个或多个组(例如,组110)具有与该组的存储的计数(例如,存储的计数136)相差多于1的计数。具有比对应的存储的计数超过二或更多的计数的组的数量和具有比存储的计数小二或更多的计数的组的数量可以被确定且添加到组的当前数量,以确定更大数量的组来逻辑地划分该字线108。可以通过将字线108划分为基本上相等大小的数据位来确定对应于字线108的新的组集合,每个组具有相关联的“1”或“0”的计数。作为另一例子,具有与其存储的计数相差二或更多的计数的每个组可以被划分为两个或更多的较小组,导致字线108的不均匀的组大小,但在字线108的下述部分中提供更精细的粒度,所述部分比其他部分具有更多错误。
在610处,可以响应于导致不可由ECC引擎校正的数据的字线的读取来提取第一计数。例如,可以响应于导致具有ECC引擎118的不可校正数量的错误的数据的字线108的读取操作146来提取图1的存储的先前计数136。例如,图1的校正模块130可以从ECC引擎118接收指示ECC引擎118不能校正一个或多个页112的信号。响应于其,校正模块130可以提取存储的先前计数136。为了例示,校正模块130可以访问日志文件134,定位对应于第一组110的存储的先前计数136。例如,校正模块130可以将第一组110的存储器地址与对应于存储的先前计数136的存储器地址相比较,且从日志文件134中提取存储的先前计数136。在612处,可以将第一计数与具有特定位值的位的第二计数相比较,且基于从字线读取的数据来确定位的第二计数。例如,可以将图1的存储的先前计数136与计数114相比较。为了例示,校正模块130可以通过进行减法操作、位式比较操作、或确定计数114和存储的先前计数136之间的差的另一操作来将计数114与存储的先前计数136相比较。
在614处,可以从该比较中确定要校正的位的数量。为了例示,可以将“1”值校正为“0”值,或可以用“1”值来替换“0”值。在例子中,可以通过将具有特定值的提取的位的计数114与存储的先前计数136相比较来确定图1的要校正的位的数量148。为了例示,图1的校正模块130可以由于从存储的先前计数136中减去计数114并分配减法的结果作为要校正的位的数量148而确定要校正的位的数量148。负的值可以指示一个或多个位应该被翻转以具有特定值,而正的值可以指示具有该特定值的一个或多个位应该被翻转。或者,可以使用一个或多个其他处理来确定计数114和存储的先前计数136之间的差的符号和量值。
在616处,可以校正存储器阵列的单元的状态。可以基于表查找来校正该状态。例如,存储器阵列可以包括多个多级单元,且可以使用图1的错误功率表138以使得表查找来改变存储器阵列102的MLC 144的状态。为了例示,校正模块130可以访问缓冲器162来标识第一组110的位用于使用表查找来校正。当使用MLC中的错误的数量来确定错误的可能性时,表查找可以至少部分地基于汉明距离,如针对图3的表350和352描述的。作为另一例子,表查找可以通过使用该计数作为选择要访问的概率表的参数而至少部分地基于该计数,如针对图3的346和348描述的。作为另一例子,表查找可以至少部分地基于状态值,诸如基于MLC单元的部分校正后的位值结合该特定位值,如针对图3的354和356描述的。
虽然在此描述的各种组件被图示为块组件且以通用术语描述,但是这种组件可以包括一个或多个微处理器、状态机或被配置以使得图1的控制器104或图3的控制器304来进行归属于这种组件的特定功能的其他电路、或其任意组合。例如,图1的校正模块130、或图3的ECC引擎318和校正模块314或其任一组合可以表示物理组件、诸如硬件控制器、状态机、逻辑电路或其他结构来使得图1的控制器104或图3的控制器304来检测和校正错误。
例如,可以使用被编程以通过确定要校正的位的数量来分析MLC 144的微处理器或微控制器来实现校正模块130。为了例示,诸如控制器104的微处理器或微控制器可以被编程以进行查找操作来确定很可能翻转的MLC位。控制器104可以翻转确定的位,且试图ECC操作。如果包括该位的数据仍然不可校正,则控制器104可以基于与下一位相关联的确定的功率来选择要翻转的下一位。校正模块130可以包括由控制器104执行的可执行指令。由控制器104执行的可以被包括在校正模块130中的可执行指令可以被存储在分离的存储器位置处、诸如在只读存储器(ROM)(未示出)处。
虽然在本公开中使用各种特定值,提供这种值为了例示的目的而不是为了限制。例如,虽然描述了存储三个位的MLC,但是可以使用存储两个位、或四个或更多位的MLC。作为另一例子,虽然ECC校正能力被描述为每512字节页的12位,但是可以使用ECC校正能力。例如,ECC校正能力可以大于每512字节的字的12位,或小于每512字节的字的12位,且可以基于与512字节不同的字线大小(例如256字节、1024字节或任何其他字线大小)。另外,ECC校正能力可以根据ECC机制(例如Reed-Solomon vs.BCH)和强度(例如,12奇偶校验位/字vs.16奇偶校验位/字)而改变,作为例示的例子。
虽然描述了各种实施例为诸如经由图3的查找表312而确定位值出错的概率或可能性,但是,在其他实施例中,可以使用位值正确的可能性或概率。例如,可以使用指示特定位具有正确的值的可能性或其他指示符的一个或多个概率表。在未校正的一组位中翻转的位的确定可以包括定位从表查找返回的最小值,指示对应的位正确的最低信心。
在字线包含在ECC引擎处独立可解码的多页、将页逻辑地划分为位的组且在所表示的页内为每个组存储1(或0)的计数的方面描述各种实施例。但是,在其他实施例中,字线可以包含单个页,且该字线可以是在ECC处单独可解码的最小数据单元(例如单个码字)。或者,或另外,诸如当划分为逻辑组的字线基于错误密度且特定页相对无错误、导致整个页处于单个组中时,(对应于存储的计数的)一组位可以包括一个或多个页。虽然描述对页或字线内的位的分组以对于每个组生成在稍后的读取操作期间存储和使用的1(0)的计数,但是,在一些实施例中,页或字线的一部分但不是所有可以被逻辑地划分为多个组。例如,字线或页(或其他存储单元)的中心区域或端部区域内的位可以被分配给组和存储的计数,而字线或页的剩余区域内的位可以不被分配给组。
图1和3中描述的系统、诸如耦合于图1的存储器阵列102的控制器104可以被实现为被配置以选择性地耦合于一个或多个外部设备、诸如外部设备106的便携式设备。但是,在其他实施例中,图1的控制器104和存储器阵列102可以被附接或嵌入在一个或多个主机设备中、诸如在便携式通信设备的外壳内。例如,图1的控制器104和存储器阵列102可以在诸如无线电话、个人数字助理(PDA)、游戏设备或控制台、便携式导航设备、或使用内部非易失性存储器的其他设备的包装好的装置内。存储器阵列102包括非易失性存储器、诸如闪存(例如,NAND,NOR,多级单元(MLC)、分裂位线NOR(DINOR)、AND、高电容耦合率(HiCR)、非对称无接触晶体管(ACT)、或其他闪存)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、一次可编程存储器(OTP)或任意其他类型的存储器。
在此描述的实施例的图示意图提供各种实施例的结构的大体理解。可以使用且可以从公开中得出其他实施例,以便可以进行结构和逻辑的替换和修改,而不脱离本公开的范围。该公开意图覆盖各种实施例的任意和所有随后的适用或变型。
上述主题要被考虑为例示的而不限制的,且所附权利要求意图覆盖所有这种修改、改进和其他实施例,这都落入本公开的范围内。因此,为了允许的最大限度,本发明的范围要由以下权利要求和其等同物的最大可允许的解释来确定,而不应该由前述详细描述局限或限制。

Claims (26)

1.一种方法,包括:
在耦合于存储器阵列的控制器处:
接收如下指示:从所述存储器阵列读取的第一组数据位包括错误校正码(ECC)引擎无法校正的错误;
将具有特定位值的所述第一组数据位的计数与具有所述特定位值的数据位的先前计数相比较;
响应于确定所述计数超过所述先前计数,标识所述第一组数据位中的具有所述特定位值且与第二组数据位的校正的数据位对应于相同的存储器单元的位;
改变所述第一组的所标识的位的值以生成调整后的一组数据位;以及
向所述ECC引擎提供所述调整后的该组数据位。
2.根据权利要求1的方法,其中,所述存储器阵列包括多个多级单元。
3.根据权利要求1的方法,还包括基于表查找来选择所标识的位。
4.根据权利要求3的方法,其中,所述表查找至少部分地基于汉明距离。
5.根据权利要求3的方法,其中,所述表查找至少部分地基于所述计数。
6.根据权利要求3的方法,其中,所述表查找至少部分地基于状态值。
7.根据权利要求1的方法,还包括确定所述第一组中要翻转的位的数量。
8.根据权利要求1的方法,还包括反复地翻转所述第一组中的位,直到所述ECC引擎确定所述第一组是可校正的。
9.一种方法,包括:
在耦合于存储器阵列的控制器处:
存储一组位中被标识为具有特定位值的位的第一计数,该组位对应于所述存储器阵列的字线的至少一部分;以及
响应于读取所述字线导致错误校正码(ECC)引擎无法校正的数据:
提取所述第一计数;
将所述第一计数与具有所述特定位值的位的第二计数相比较,所述第二计数是基于从所述字线读取的数据确定的;以及
根据该比较确定要校正的位的数量。
10.根据权利要求9的方法,还包括随着所述字线中的错误的数量增加而增加与所述字线相关联的计数的数量。
11.根据权利要求10的方法,还包括确定所述计数的数量,以便在该组位中仅出现1变为0的错误和0变为1的错误之一。
12.根据权利要求9的方法,还包括在存储器阵列内的日志文件中存储所述第一计数。
13.根据权利要求9的方法,还包括接收如下指示:所述字线具有超过阈值错误数量的数量的错误,且所述方法还包括响应于接收到该指示来存储所述第一计数。
14.根据权利要求9的方法,其中,在所述控制器处或在所述存储器阵列处存储所述位的第一计数。
15.根据权利要求9的方法,其中,所述存储器阵列包括多个多级单元。
16.根据权利要求9的方法,还包括校正所述存储器阵列的单元的状态。
17.根据权利要求16的方法,还包括基于表查找来校正所述状态。
18.根据权利要求17的方法,其中,所述表查找至少部分地基于汉明距离和所述第二计数中的至少一种。
19.一种存储器器件,包括:
存储器阵列;
至少一个错误概率表,其存储指示所述存储器阵列的存储器单元的多位值的特定位的错误的可能性的数据,所述数据至少部分地基于所述存储器单元的其他位的错误的数量;以及
耦合于所述存储器阵列的控制器,所述控制器包括被配置以检测所述存储器单元的所述其他位的错误的错误校正码(ECC)引擎,其中,所述控制器被配置以确定要校正的具有特定值的位的数量,所述位是经由在存储器阵列处的读取操作而提取的,所述位的数量是基于将具有特定值的提取的位的计数与位值的存储的计数相比较而确定的,所述控制器还被配置以访问所述至少一个错误概率表来标识用于校正的至少一个位。
20.根据权利要求19的存储器器件,其中,通过从读取的值到部分校正的值的汉明距离来索引所述至少一个错误概率表。
21.根据权利要求19的存储器器件,其中,通过部分校正的值来索引所述至少一个错误概率表。
22.根据权利要求19的存储器器件,其中,在所述控制器处存储所述至少一个错误概率表。
23.根据权利要求19的存储器器件,其中,在所述存储器阵列处存储所述至少一个错误概率表。
24.根据权利要求19的存储器器件,其中,在所述控制器处的存储器中存储所述存储的计数。
25.根据权利要求19的存储器器件,其中,在所述存储器阵列处存储所述存储的计数。
26.根据权利要求19的存储器器件,其中,所述存储器阵列包括闪存多级单元阵列。
CN2011800070634A 2010-01-27 2011-01-07 使用位值的存储的计数来校正数据错误的系统和方法 Pending CN102725738A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/695,038 US8429468B2 (en) 2010-01-27 2010-01-27 System and method to correct data errors using a stored count of bit values
US12/695,038 2010-01-27
PCT/US2011/020533 WO2011094051A1 (en) 2010-01-27 2011-01-07 System and method to correct data errors using a stored count of bit values

Publications (1)

Publication Number Publication Date
CN102725738A true CN102725738A (zh) 2012-10-10

Family

ID=43736047

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011800070634A Pending CN102725738A (zh) 2010-01-27 2011-01-07 使用位值的存储的计数来校正数据错误的系统和方法

Country Status (7)

Country Link
US (1) US8429468B2 (zh)
EP (1) EP2529305B1 (zh)
JP (1) JP5649663B2 (zh)
KR (1) KR101696389B1 (zh)
CN (1) CN102725738A (zh)
TW (1) TW201145296A (zh)
WO (1) WO2011094051A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105097044A (zh) * 2014-05-16 2015-11-25 爱思开海力士有限公司 读取干扰检测
CN107683464A (zh) * 2015-06-24 2018-02-09 英特尔公司 存储器设备中的自适应纠错
CN109785893A (zh) * 2017-11-13 2019-05-21 意法半导体国际有限公司 用于验证静态随机访问存储器的适当操作的错误纠正码校验位的冗余存储
CN110444243A (zh) * 2019-07-31 2019-11-12 至誉科技(武汉)有限公司 存储设备读错误纠错能力的测试方法、系统及存储介质
CN113380303A (zh) * 2020-03-10 2021-09-10 华邦电子股份有限公司 内存存储装置及数据访问方法

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8645792B2 (en) * 2008-12-16 2014-02-04 Micron Technology, Inc. Memory with guard value dependent error correction
KR101739878B1 (ko) * 2011-02-22 2017-05-26 삼성전자주식회사 컨트롤러, 이의 동작방법, 및 상기 컨트롤러를 포함한 메모리 시스템
US8874994B2 (en) 2011-07-22 2014-10-28 Sandisk Technologies Inc. Systems and methods of storing data
US8719668B2 (en) * 2011-11-01 2014-05-06 Hitachi, Ltd. Non-volatile storage system compensating prior probability for low-density parity check codes
US9391638B1 (en) * 2011-11-10 2016-07-12 Marvell Israel (M.I.S.L) Ltd. Error indications in error correction code (ECC) protected memory systems
US8775904B2 (en) 2011-12-07 2014-07-08 International Business Machines Corporation Efficient storage of meta-bits within a system memory
KR101941270B1 (ko) 2012-01-03 2019-04-10 삼성전자주식회사 멀티-레벨 메모리 장치를 제어하는 메모리 제어기 및 그것의 에러 정정 방법
DE112012005617T5 (de) * 2012-01-31 2014-10-09 Hewlett-Packard Development Company, L.P. Speicherung von Daten in Speichermodulpuffern
US9362003B2 (en) 2012-03-09 2016-06-07 Sandisk Technologies Inc. System and method to decode data subject to a disturb condition
KR101917192B1 (ko) 2012-03-12 2018-11-12 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 읽기 방법
US9064575B2 (en) 2012-08-03 2015-06-23 Micron Technology, Inc. Determining whether a memory cell state is in a valley between adjacent data states
RU2012134916A (ru) * 2012-08-15 2014-02-20 ЭлЭсАй Корпорейшн Способ выбора подходящего кода ldcp
KR102168096B1 (ko) * 2013-03-15 2020-10-20 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 쓰기 방법
US9218890B2 (en) * 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
US20150046772A1 (en) * 2013-08-06 2015-02-12 Sandisk Technologies Inc. Method and device for error correcting code (ecc) error handling
KR102081588B1 (ko) 2013-08-08 2020-02-26 삼성전자 주식회사 Ecc 디코더의 동작 방법 및 그것을 포함하는 메모리 컨트롤러
US9270296B1 (en) * 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9305663B2 (en) * 2013-12-20 2016-04-05 Netapp, Inc. Techniques for assessing pass/fail status of non-volatile memory
US9614547B2 (en) 2014-06-30 2017-04-04 Sandisk Technologies Llc Multi-stage decoder
US10089177B2 (en) 2014-06-30 2018-10-02 Sandisk Technologies Llc Multi-stage decoder
KR102023121B1 (ko) * 2014-10-31 2019-11-04 에스케이하이닉스 주식회사 에러를 보정하는 메모리 장치 및 그의 에러 보정 방법
US10147500B2 (en) * 2015-05-22 2018-12-04 SK Hynix Inc. Hybrid read disturb count management
US10303536B2 (en) * 2015-10-28 2019-05-28 Via Technologies, Inc. Non-volatile memory device and control method thereof
US9853661B2 (en) * 2015-12-08 2017-12-26 Apple Inc. On-the-fly evaluation of the number of errors corrected in iterative ECC decoding
KR102375060B1 (ko) * 2016-10-18 2022-03-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US11036578B2 (en) * 2018-04-12 2021-06-15 Samsung Electronics Co., Ltd. Semiconductor memory devices and memory systems including the same
JP7182373B2 (ja) * 2018-04-24 2022-12-02 ラピスセミコンダクタ株式会社 半導体集積回路、記憶装置及びエラー訂正方法
US20220368351A1 (en) * 2020-06-22 2022-11-17 SK Hynix Inc. Memory and operation method of memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6089749A (en) * 1997-07-08 2000-07-18 International Business Machines Corporation Byte synchronization system and method using an error correcting code
US7320100B2 (en) * 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
JP2005004288A (ja) * 2003-06-10 2005-01-06 Digital Electronics Corp 誤り検出回路
JP2005011386A (ja) * 2003-06-16 2005-01-13 Renesas Technology Corp 誤り訂正装置
US7900125B1 (en) * 2004-05-24 2011-03-01 Seagate Technology Llc Majority detection in error recovery
US7290185B2 (en) * 2005-04-28 2007-10-30 International Business Machines Corporation Methods and apparatus for reducing memory errors
US7634706B1 (en) * 2005-11-22 2009-12-15 Seagate Technology Llc Majority-detected erasure enhanced error correction
US7533328B2 (en) * 2006-07-04 2009-05-12 Sandisk Il, Ltd. Method of error correction in a multi-bit-per-cell flash memory
KR100871700B1 (ko) * 2007-02-13 2008-12-08 삼성전자주식회사 불휘발성 메모리 장치에서 전하 손실에 기인한 오류 데이터정정 방법
WO2008121553A1 (en) 2007-03-29 2008-10-09 Sandisk Corporation Non-volatile storage with decoding of data using reliability metrics based on multiple reads
US7765426B2 (en) * 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
US20090177943A1 (en) * 2008-01-09 2009-07-09 Broadcom Corporation Error correction coding using soft information and interleaving
US20090292971A1 (en) * 2008-05-21 2009-11-26 Chun Fung Man Data recovery techniques
JP2012069180A (ja) * 2010-09-21 2012-04-05 Toshiba Corp 半導体記憶装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105097044A (zh) * 2014-05-16 2015-11-25 爱思开海力士有限公司 读取干扰检测
CN105097044B (zh) * 2014-05-16 2018-07-27 爱思开海力士有限公司 读取干扰检测
CN107683464A (zh) * 2015-06-24 2018-02-09 英特尔公司 存储器设备中的自适应纠错
CN107683464B (zh) * 2015-06-24 2022-01-25 英特尔公司 存储器设备中的自适应纠错
CN109785893A (zh) * 2017-11-13 2019-05-21 意法半导体国际有限公司 用于验证静态随机访问存储器的适当操作的错误纠正码校验位的冗余存储
CN109785893B (zh) * 2017-11-13 2023-05-02 意法半导体国际有限公司 用于验证存储器适当操作的错误纠正码校验位的冗余存储
CN110444243A (zh) * 2019-07-31 2019-11-12 至誉科技(武汉)有限公司 存储设备读错误纠错能力的测试方法、系统及存储介质
CN113380303A (zh) * 2020-03-10 2021-09-10 华邦电子股份有限公司 内存存储装置及数据访问方法
CN113380303B (zh) * 2020-03-10 2024-06-11 华邦电子股份有限公司 内存存储装置及数据访问方法

Also Published As

Publication number Publication date
US8429468B2 (en) 2013-04-23
JP2013518345A (ja) 2013-05-20
KR20120114366A (ko) 2012-10-16
EP2529305A1 (en) 2012-12-05
TW201145296A (en) 2011-12-16
JP5649663B2 (ja) 2015-01-07
US20110185251A1 (en) 2011-07-28
EP2529305B1 (en) 2013-11-27
KR101696389B1 (ko) 2017-01-13
WO2011094051A1 (en) 2011-08-04

Similar Documents

Publication Publication Date Title
CN102725738A (zh) 使用位值的存储的计数来校正数据错误的系统和方法
CN107391026B (zh) 闪存装置及闪存存储管理方法
CN102804146B (zh) 跟踪存储器件内的错误数据的系统和方法
CN107403646B (zh) 闪存装置及闪存存储管理方法
US8719677B2 (en) Using ECC encoding to verify an ECC decode operation
CN103544073B (zh) 读取闪存中区块的数据的方法及相关的记忆装置
CN101256842B (zh) 纠错码控制器和包括该纠错码控制器的存储器系统
US20080195900A1 (en) Flash memory system and method for controlling the same
TW201346923A (zh) 使用單一錯誤偵測奇偶校驗的抹除修正
CN102741819A (zh) 用于解码码字的方法、设备和计算机程序
CN105340022A (zh) 用于校正数据错误的电路、设备及方法
WO2012075826A1 (en) Method and memory controller for reading data stored in flash memory by referring to binary digit distribution characteristics of bit sequences read from flash memory
CN102201266A (zh) 半导体存储器装置
US20110078541A1 (en) Storage device and data process method
CN111710358B (zh) 闪存装置、闪存控制器及闪存存储管理方法
CN101281788A (zh) 闪存系统及其控制方法
CN101882472A (zh) 具可变动错误校正码机制的快闪储存装置及其控制方法
US9128827B2 (en) Data modification based on matching bit patterns
CN102546095B (zh) 用于检测编码二进制字中的错误的设备和方法
CN105575439B (zh) 一种存储单元失效纠错的方法及存储器
CN104681095B (zh) 储存装置及其操作方法
CN105005513A (zh) 高速缓存多位数据翻转错误的检测及容错装置与方法
US9934093B2 (en) Control device, method of controlling a storage device, and storage system
CN108154903A (zh) 快闪存储器的写入控制方法及装置、读取控制方法及装置以及存储器系统
US11449236B2 (en) Data storage device with syndrome weight minimization for data alignment

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20121010