CN101258471A - 闪存纠错 - Google Patents

闪存纠错 Download PDF

Info

Publication number
CN101258471A
CN101258471A CNA200680025877XA CN200680025877A CN101258471A CN 101258471 A CN101258471 A CN 101258471A CN A200680025877X A CNA200680025877X A CN A200680025877XA CN 200680025877 A CN200680025877 A CN 200680025877A CN 101258471 A CN101258471 A CN 101258471A
Authority
CN
China
Prior art keywords
data
storer
error correction
mistake
error
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
CNA200680025877XA
Other languages
English (en)
Inventor
摩根·科尔默
邓肯·约翰·罗伯特·麦考雷
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.)
Cufer Asset Ltd LLC
Original Assignee
GS IP LLC
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 GS IP LLC filed Critical GS IP LLC
Publication of CN101258471A publication Critical patent/CN101258471A/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/1068Adding 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
    • 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
    • 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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials

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)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Read Only Memory (AREA)

Abstract

一种用于施加纠错算法到写入到和读出自可重写存储器的数据的数据处理装置,该数据处理装置包括:在硬件中实现的编码单元,该编码单元能够执行编码操作,在该操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出用于写入到该存储器的第二数据集,以及能够执行错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定该读出数据是否包含错误;以及在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法对此数据进行处理以纠正所述错误并因此形成校正数据,并且输出该校正数据。

Description

闪存纠错
本发明涉及用于将纠错算法应用到将被写入到和/或读出自可重写存储器的数据的数据处理装置。
闪速存储器是一种可以被电擦除和重新编程的非易失性存储器。它被组合入各种各样的消费产品中,诸如数字音频播放器,数字摄象机和移动电话。然而,所有的闪速存储器都存在只能经得起有限数量的擦除周期数的缺点。随着闪存的裸片区域不断变大,存储器中的任何给定位被损坏的统计概率增加。
对于大容量存储器应用,通用的选择是NAND闪存,因为和NOR闪存相比数据密度增加。使用NAND闪存具有的主要缺陷是字节的单个位不能随机地存取。作为替代,像硬盘驱动器一样将装置安排为512个字节扇区。当制造和测试闪存集成电路时,可以预期,由于工艺,这些扇形中的一些将被受损,因此额外的扇区可以用来替换那些失去的扇区以解决半导体成品率的问题。经常存在使得这个工艺对外不可见的复杂的控制器,通常对此存在2%的可用额外扇区。通常NAND闪存扇区可以重编程大约10000次。
由于闪存固有的有限持久性,许多制造商放置一些简单的纠错在存储器中。典型地他们使用汉明码并且通过更进一步的16个字节增加扇区大小以调节纠错的额外消耗,但是这个数据空间对外部的系统是不可用的。所有这些技术要求闪存装置上的额外的裸片区域以执行这些功能。
利用纠错,闪存可以仅仅纠正一个扇区中的一个位(4096位中的1位)并且检测每扇区中的2位错误。闪存制造商声称这对于大多数的用途是足够的;然而,一些文件系统可能引起由某些扇区遭受的故障等级大大地增加,使得该产品在很短的时间内就会毁坏。
文件系统诸如FAT16和FAT32保存表格的两个副本,该表格用于告诉主处理器存储在该装置所有东西的位置。每当大容量存储器的任何部分被改变,文件系统使得这个基本数据的两个副本被重写。在NAND闪存中,单个位置或者字节不能被单个地擦除,因此每当大容量存储器的部分被改变时,必须将整个块(覆盖几个扇区)格式化并且重写。这引起许多装置诸如拇指驱动器的过早失效。
这个问题的一个解决方法是保证某些经常被存取的数据项目不被写回到该闪存的相同区域而是旋转该存储器以将“磨损“遍及整个装置布置。
显而易见,制造商不想不断地增加闪存驱动的内装复杂性的水平,因为这在用户不一定能察觉到好处的情况下增加了成本。闪存制造商同样不想引起关于其产品的先天不可靠性的大问题。
消费音频制造商面临的一个问题是他们的成本越来越与商品存储器市场价格相联系。因为数字媒体的普及性增长,所以这个趋势将增加。然而,终端客户不允许他们的音频供应者将这个存储器价格浮动转嫁到他们的购买价格中(正如这是个人计算机市场中的情况)因此这将音频供应者暴露在了反复无常的存储器市场风口浪尖。
消费音频工业已经寻找到克服这个问题的方法并且存储器的重复利用已经变得平常。DRAM是经常地从旧的SIMMS中拯救出的一种商品存储器产品并且其价格经常是周围市价的一部分。随着来自音频电子工业的NAND闪存需求的革命即将发生,看来很可能这种类型的存储器产品将同样成为部件重复利用公司的目标。
重复利用闪存将以许多因素为特征:(i)较旧的技术以及(ii)故障扇区的高检出概率。进入市场的任何闪存控制器应适合于处理这些缺点以便它能与重复利用闪存一起被使用。
因此存在对用于处理写入到和/或读出自可重复利用的存储器的数据的改进的数据处理装置的需要。
根据本发明的第一方面,提供对于施加纠错算法到写入到或者读出自可重写存储器的数据的数据处理装置,该数据处理装置包括在硬件中实现的编码单元,该编码单元能够执行编码操作,在操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出写入到该存储器的第二数据集,以及错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定是否该读出数据包含错误以及在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法处理那些数据以纠正所述错误并因此形成校正数据,并输出该校正数据。
优选地,如果它确定从存储器读出的数据不包含错误,该编码单元被安排以输出从存储器读出的数据。
该编码单元可以被安排在错误检测操作期间对从存储器读出的数据执行与它在编码操作期间在第一数据集上执行的相同的处理。
在错误检测操作期间,该编码单元可以被安排将从存储器读出的数据视为根据编码操作的第一数据集,并且根据该纠错算法处理那些数据以形成第二数据集。
该编码单元优选地被安排以接收从该存储器中的第一位置读出的信息数据,在该第一位置预先写第一数据集,并与该信息数据有关的同等数据从该存储器的第二位置读出,在该第二位置预先写第二数据集,其中在编码操作期间,从所述第一数据集预先形成第二数据集。
该编码单元可以被安排通过根据纠错处理处理信息数据以形成第二数据集而确定从存储器读出的数据包含错误,比较第二数据集和奇偶校验数据并且如果第二数据集与奇偶校验数据不一致则确定信息数据包含错误。
该编码单元可以包括代码字发生器,被安排为接收第一数据集,用生成多项式乘该数据,并将该乘法的结果作为第二数据集输出。
该编码单元可以包括代码字发生器,被安排为接收从存储器读出的数据,用生成多项式乘包括在该读出数据内的信息数据并且比较该乘法的结果和包括在该读出数据内的奇偶校验数据。
该编码单元可以包括校正子发生器,被安排为接收从存储器读出的数据,连接信息数据和包括在该读出数据内的奇偶校验数据,将生成多项式的根替换为连结的数据并且合计该结果值。优选地,该编码单元被安排以确定如果结果值的总和是非零,信息数据包含错误。
校正子发生器可以被安排为将复数个生成多项式的根替换为连接数据并且合计由每个置换产生的值,每个和的结果表现出信息数据中的错误的位置。
优选地,当已经确定从存储器读出的数据包含错误时,该编码单元被安排以输出那些信息数据给纠错单元。
该纠错单元可以被安排以分解将被写到存储器的数据并且合并从该存储器读出的数据。
该编码单元优选地能检测从存储器读出的每256字节中的超过一位的错误。
该纠错单元优选地能纠正从存储器读出的每512字节中的超过一位的错误。
该纠错算法可以是里德-索罗蒙码代码。该纠错算法优选地是交叉隔行里德-索罗蒙码代码。
优选地该纠错单元是数字处理机。
根据本发明的第二方面,提供包括可重写存储器,在硬件中实现的编码单元的数据存储器,该编码单元能够执行编码操作,在操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出写入到该存储器的第二数据集,以及错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定是否该读出数据包含错误以及在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法处理那些数据以纠正所述错误并因此形成校正数据,并输出该校正数据。
至少该存储器的一个被用于通过处理器进行数据读取和/或写入的扇区可能具有大于512字节中的一位的差错率。
该存储器可以是可重复利用的集成存储器。
该存储器可能具有超过通常验收的制造标准的差错率。
优选地该存储器是闪存。优选地该存储器是NAND闪存。
该存储器可以是这样的,即该存储器的位在与该存储器的其它位隔离中是不可存取的。
根据本发明的第三方面,提供用于处理被写入到并且读出自可重写存储器的方法,包括在硬件中执行编码操作,该编码操作包括接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集执行输出写入到该存储器的第二数据集,以及在硬件中执行错误检测操作,该错误检测操作包括接收自该存储器读出的数据执行根据该纠错算法处理那些数据以确定是否该读出数据包含错误以及执行在软件中的纠错操作,该纠错操作包括接收包含错误的读出数据,根据该纠错算法处理那些数据以纠正所述错误并因此形成校正数据,并输出该校正数据。
根据本发明的第四方面,提供用于重复利用可重写存储器的方法,包括将该存储器从可操作的并且放置该存储器的装置移动到另外的装置中,具有数据处理装置的另一个装置包括在硬件中实现的编码单元,该编码单元能够执行编码操作,其中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出写入到该存储器的第二数据集,以及错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定是否该读出数据包含错误以及在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法处理那些数据以纠正所述错误并因此形成校正数据,并输出该校正数据。
现在将根据附图举例来描述本发明,其中:
图1表示根据本发明的实施例的数据处理装置;
图2表示说明根据本发明的实施例的数据处理装置的操作的流程图;
图3表示通过里德-索罗蒙码代码生成的包括该数据和奇偶校验位的代码字;
图4表示系统编码器的一般架构;
图5表示校正子计算器的一般架构;
图6表示根据交叉交错的里德-索罗蒙码代码安排的数据位和奇偶校验位;
图7表示允许纠正多扇区的分解数据。
本发明的实施例提供与可重写存储器一起使用的数据处理装置。该装置特别适合于与包含大量损坏扇区的可重复利用的存储器一起使用,或者与具有过高差错率的但将作为正规装置销售所制造的存储器一起使用。该数据处理装置被安排以根据纠错码处理被写入到和/或读出自该存储器的数据。该数据处理装置方便地在硬件和软件之间分解该错误编码和校正功能,以便可以实现一个强大的纠错码(其对处理由损坏存储器扇区所引起的数据错误是必需的)而不需要增加读出和写入时间的实际的额外消耗并且不需要实质上增加该处理器需要的处理能力。这和许多现有的存储控制器大不相同,在现有的存储控制器中必须由软件处理所有被写入到和/或读出自该存储器的数据。
图1说明了根据本发明实施例的数据处理装置。一般地以101表示该数据处理装置且与存储器102耦合。该数据处理装置包括编码单元103,其在硬件中实现,以及纠错单元104,其在软件中实现。优选地该纠错单元是数字处理器。
该编码单元被安排以接收写入到该存储器的数据。该编码单元编码写入到该存储器的数据并且输出结果编码数据,以便也可以被写入到该存储器。该编码单元优选地执行系统码,其中该编码过程从被写入到存储器的数据生成辅助码数据(即奇偶校验数据),而不是改变该数据本身。
该编码单元可以只输出该被写入到存储器的编码数据,或者可以输出该编码数据和写入存储器的实际数据。该编码数据和实际数据可以随后被保存在不同的存储单元,也就是说,该实际数据不必与它的相关奇偶校验数据相邻存储。
该编码单元被同样安排接收从该存储器读出的数据。该数据应该包括从写入原始数据的存储单元读出的信息数据和与此信息数据相关联的奇偶校验数据,也就是说,从由原始数据形成的编码数据被写入到该存储器的位置读出数据。该编码单元处理从存储器读出的数据以便检测它是否包含任何错误。这种处理可以包括奇偶校验数据和信息数据两者或者仅仅包括奇偶校验数据。如果该编码单元从存储器读出的数据中检测到一个错误或者多个错误,它将错误的数据传送给纠错单元。如果该编码单元未检测到任何错误,然后它可以输出该信息数据。可选择地,该编码单元可以发信号给耦合到该存储器的另外部件,例如控制器,该信息数据可以通过这些部件安全地输出。
除如上所述的错误编码和错误检测操作之外,该编码单元还可以在纠错操作期间提供针对纠错单元的硬件支持。纠错算法诸如里德-索罗蒙码代码需要的一些数据处理操作特别适合于在硬件中实现。通过为编码单元提供具有执行一些此类处理的能力,可以加快纠错过程。这个附加过程可以包括例如校正子的计算和处理,在下面将更详细地描述。这种附加过程可以通过该编码单元执行,只要确定从存储器读出的数据包含错误并且任何从那个处理生成的附加数据(诸如校正子)可以和该错误数据一起被传送到纠错单元。可选择地,在该纠错单元的控制下该编码单元可以执行这种附加处理,也就是说,如果该编码单元通过该纠错单元将用于处理的合适的数据转发了,该编码单元可以立即将任何错误的数据传送给该纠错单元并且仅仅执行附加处理。
可以将该编码单元并入用于处理读入到和/或读出自存储器的数据的不同的专门化硬件块。例如,该编码单元可以使用与用于执行如上所述的编码和错误检测操作相同的硬件块。可选择地,该编码单元可以由两个相同的硬件块提供:一个用于编码被写入到存储器的数据以及一个用于检测从存储器读出的数据中的错误。该编码单元可以进一步地具备用于执行任何附加处理的专门硬件。该编码单元可以具备不同的专门硬件块以提供对于可以通过该纠错单元的软件实现的不同的纠错算法的硬件支持。
作为执行在该编码单元中的附加数据处理单元的替代,针对可以在硬件中有效地执行的任何纠错处理,可以将与单独的硬件单元该纠错单元耦合并因此加快该纠错操作。
该纠错单元被安排以接收来自编码单元的数据并且纠正包含在信息数据中的错误。通过该纠错单元接收的数据可以包括该信息数据,奇偶校验数据以及可选地更进一步地包括一些由该编码单元计算的数据,例如校正子数据。
由这种实现(其中在硬件中执行错误检测但是在软件中执行纠错)提供的一个优势是可以由该处理器将复杂性的附加层引入纠错编码方案而不需要硬件编码单元知道此额外的复杂性。例如,该处理器可以执行在被写入到以及读出自存储器的数据上的交插以及去交插。可以酌情由该处理器将该交插/去交插数据传送到该编码单元,而由编码单元执行的编码以及检错操作保持不变。
根据本发明实施例的数据处理装置的进一步的优势是它可通过改变由该处理器使用的算法而被用于实现各种各样的纠错方案。由该编码单元执行的基本的错误编码以及检错功能保持不变。同样,因为在硬件中执行该检错功能,任何经改变该处理器实现的算法而被加到读出操作附加的额外消耗的影响可以被最小化。这是因为任何额外开销将不会存在于所有的读取操作中,而是应该局限于在其中检测到错误的读取操作。
图2a以及2b表示根据本发明实施例的数据处理装置的操作。图2a表示写入操作,其中在步骤S202,该数据处理装置接收被写入的数据,在步骤S204处理该数据并在步骤S206输出编码数据。图2b表示读出操作,其中在步骤S208中接收从存储器读出的数据以及在步骤S210中处理该数据以确定是否它包含错误。如果确定该数据包含错误,那么在步骤S212处理该数据以纠正那个错误并且在步骤S214输出校正数据。如果在步骤S210中从存储器读出的数据确定不包含错误,那么从存储器读出的数据在步骤S216中被输出。如上所释,从存储器读出的数据可以由该数据处理装置本身输出,或者由与该存储器耦合的另外装置输出,该数据处理装置发信号给该装置以指示从存储器读出的数据可以以它当前的形式输出。
使用纠错码执行上述形成编码数据,检测从存储器读出的数据中的错误以及纠正那些错误的步骤。如上所释,一些现有的存储器利用汉明码引入一些简单的纠错。然而,纠错的水平不能胜任处理存在于可重复利用的存储器中的或者作为正规装置被销售的具有过高差错率的存储器中的大量的损坏扇区。通常,具有高达2%的不能使用的块的闪存被销售(即2048块中的40块)。一般任何其中不能使用的块的百分比大于2%的存储器为不合格品。
为了能利用旧的可重复利用的闪存,为了两个理由需要施加扩展纠错方案:(i)旧的存储器类型在它们中甚至不包括简单的汉明码纠错,以及(ii)很可能已经超出了汉明码的能力(这是它首先被重复利用的原因)且该闪存已经被认为“损坏”。
存在许多执行针对数字数据流的纠错方法,并且所有这些方法都将包括计算的额外消耗以及存储器额外消耗,有一些比其他的更加繁重。
所有的前向纠错(FEC)校正系统都是复杂的,繁琐的且一般需要花费相当多的时间和努力去开发。
根据本发明的实施例的数据处理装置使用的一些纠错方案描述如下。这仅仅是用于举例的目的,并且很清楚的是本发明不被限制在任何特定的编码方案中。如上所释,根据本发明实施例的数据处理装置可以用来实现各种各样的纠错方案。同时,该处理器可以被配置为施加附加的纠错编码的水平给写入到和/或读出自下面未描述的存储器的数据。
根据本发明实施例的数据处理装置使用的合适的纠错方案包括里德-索罗蒙码纠错码。通常,这些代码包括为数据帧增加奇偶校验字节。通过不仅仅能够确定是否已经存在错误,而且确定错误是什么以及在哪里的这样的方式计算奇偶校验字节。在一定范围内,在帧内纠正几个错误是可能的。这些基本的纠错能力可以通过交叉交错,在所谓的交叉交错里德-索罗蒙码代码(CIRC)中扩展。在下面更详细地描述通常的里德-索罗蒙码代码以及CIRC代码,连同伽罗瓦域算法的描述一起,其可以有效地被用于生成简单的硬件解码器。
里德-索罗蒙码代码是包括给数字数据块(如图3所示)增加冗余的奇偶校验位的纠错码。每个里德-索罗蒙码代码被定义为具有s位符号的RS(n,k)。这表示每个s位的k个数据符号被处理以获得当被加到该数据符号时形成n位符号代码字的冗余的、奇偶校验位。里德-索罗蒙码解码器可以检测高达代码字中的2t个错误并且可以纠正高达代码字中的t个错误,在此2t=n-k(即奇偶校验位的数目)。如果错误符号的位置已知,则这个错误的符号被称为擦除。里德-索罗蒙码解码器可以纠正代码字中的高达2t个擦除。
通过被称为生成器多项式的专门的多项式来生成里德-索罗蒙码代码字。所有的有效代码字由该生成多项式除尽。该生成多项式的通式被给定为:
g(x)=(x-αi)(x-αi+1)...(x-αi+2i)(1)
该代码字被构造为:
c(x)=g(x).i(x)(2)
在此g(x)是生成器多项式,i(x)是信息块,c(x)是有效的代码字,以及α被称为原始元素。
举例来说,对于生成6位奇偶校验位的代码,等式1可以被写为:
g(x)=(x-α0)(x-α1)(x-α2)(x-α3)(x-α4)(x-α5)(3)
g(x)=x6+g5x5+g4x4+g3x3+g2x2+g1x+g0             (4)
系统的里德-索罗蒙码代码字中的2t个奇偶符号被给定为:
p(x)=i(x).xn-kmodg(x)                          (5)
图4表示里德-索罗蒙码编码器的架构的例子。该图中表示的每个寄存器都保有一个符号并且算法运算符在完整的符号上执行加法或者乘法。
在根据本发明的实施例的数据处理装置中,由该编码单元中的专门化硬件执行用于每个被写入到存储器的信息块的奇偶校验位的计算。在硬件中计算该奇偶校验位而不是使用软件实现能够使该奇偶符号计算地更快,因此减少被加到每个写入操作的额外消耗。
当从存储器读出数据时由该编码单元中的这个专门化硬件执行奇偶符号的相同计算。例如,该编码单元可以接收从存储器读出的代码字并且将这个代码字分离为信息数据和奇偶校验数据。通过执行与从存储器读出的信息数据上的生成器多项式相同的乘法可以形成一套新奇偶符号。该新的奇偶符号能因此与从存储器读出的奇偶符号相比较以确定是否该代码字包含错误。如果该重新计算的奇偶符号与从存储器读出的那些不相配,则检测出从存储器读出的代码字中的错误。这个可以通过从自存储器读出的奇偶符号中减去该重新形成的奇偶符号而被直接完成。如果该减法的结果是非零,那么可以确定从存储器读出的代码字包含错误。
如上所释,包括特殊代码字的奇偶符号和数据符号不必作为连续的数据被存储在该存储器中。因此,存储器保存的与特殊的信息块有关的奇偶校验数据的位置应该和该信息块的位置一起被记录,以便当从存储器读出那些信息块时,同时读取与那些信息有关的奇偶校验数据。用这种方法,可以将一个完整的代码字传送给编码单元用于错误检测。
如果由编码单元在从存储器读出的数据上执行的处理指示代码字中存在错误,那些代码字则直接地被传送给纠错单元用于在软件中处理。纠正代码字中的任何错误的任务比检测他们的任务更繁重,因此这任务可以由该纠错单元在软件中更方便地执行。在一些实现中,编码单元可以通过执行错误代码字的一些附加处理加速该软件。例如,编码单元可以从自存储器读出的代码字方便地生成“校正子”。下面更详细地描述校正子。
通过将生成器多项式的根替换为从存储器读出的代码字而生成“校正子”。将由每个替换(即,对于该生成器多项式的每个根)生成的符号生成该校正子。针对正确的代码字的校正子都应该是零。如果校正子是非零,则表示该代码字包含错误。由于该生成器多项式存在2t个根,因此每个代码字有2t个校正子。每个校正子取决于每个代码字中的错误。这些校正子不仅能被用于检测代码字中的错误还能被用于确定代码字中的错误的位置。
由于校正子不仅能被用于检测错误还能被用于纠正错误,在本发明的一些实施例中,编码单元可以方便地被安排以计算来自从存储器读出的代码字的校正子而代替计算奇偶校验数据。编码单元然后能通过计算那些数据的2t个校正子并确定是否有非零的校正子来检测从存储器读出的代码字是否包含错误。如果检测到错误,该错误的代码字以及它的相关的校正子通过编码单元被传送给纠错单元。这是本发明特别有效的实施例,因为通过该编码单元计算的为了检测错误的校正子数据然后被纠错单元使用以纠正任何检测出的错误。根据该发明的这样一个实施例的编码单元可以具备不同的硬件块:一个块用于在编码操作期间计算奇偶校验数据,以及一个块用于在错误检测操作期间计算校正子。图5表示适合于计算校正子数据的一般架构。典型地,一个编码单元将具备2t个这样的架构:一个用于计算一个代码字的一个校正子。这使单个代码字的校正子能并行的计算。
可以从上面的等式3看出:因为生成器多项式的每个根相差一个原始元素α的幂,所以每个校正子同样相差一个原始元素α的幂(这还可以从下面的等式7看出)。因此,错误的位置可以通过将校正子相除并且获得日志而确定。这种计算特别适合硬件实现,该硬件实现可以利用使用伽罗瓦域算法而有效的的简易性。
在伽罗瓦域算法中,字节的每个位都被认为是基本要素的幂的模2系数。当处理如上所述的校正子时,这个基本要素是该生成器多项式的基本要素α。
该数据的这个处理的真正优势是可以加、减、乘以及除数据,并且结果总是在该域中,即字节宽。这意味着作为数据字节的数字组合的错误检测或者纠错码将总是字节宽而与实际的数据无关。
伽罗瓦域的元素可以由非常像伪随机数发生器的反馈的移位寄存器产生。在CD中该移位寄存器从LSB移位到MSB并且当存在执行时值1Dh被异或入字节。因此该伽罗瓦域的第一个元素,以十六进制计,是:
1,2,4,8,10,20,40,80,1D,3A,74,E8,CD.。
在255个移位之后该周期重复。在数学上,每个移位被认为是α的乘法,所以该域的每个元素可以被认为是α的幂。应当注意到零不是该域的元素。由于两个原因这是不意外的。不管有多少移位在该移位寄存器中的零总是产生零。α的幂不可能是零。在一些情况下零必须被当做特例。
该域的两个元素的加、减法相同的。该结果只不过是两个字节的异或。这是因为每个位都是模2系数。
乘法和除法是稍加复杂的。因为每个单元可以被认为是α的幂,对任何元素的求对数是有可能的。该对数只不过是在上述序列中的位置即,移位的数目或者α的幂。所以1的对数是0且3A的对数是9。为了乘或者除2个字节我们首先获得每个数字的对数,再或者加或者减该对数,然后将α提升至该幂以得到该结果。
存在用乘法以及除法的更进一步的复杂化因为在该域内在仅仅有255个元素。这意味着当加或减对数时应该以模255算出它。
如上所述的里德-索罗蒙码代码的纠错能力可以通过使用交插而增加。这使得交叉交错里德-索罗蒙码代码(CIRC)是非常有效的纠错算法。
里德-索罗蒙码代码的基本的纠错能力可以通过交叉交错而扩展。这实质上意味着安排该数据成为二维阵列并且为行和列计算单独的奇偶校验字节。这意味着,可能来自存储器的损坏扇区的,影响一维中的许多相连字节的突发错误,仅影响其它的维中的每帧的一或两个字节。图6表示这样一个阵列。
在“垂直的”或者列方向中的帧称为C1并且包含32个字节,其中的四个字节是奇偶校验字节。在“水平的”上或者行方向中的帧称为C2并且包含28个字节,其中的四个字节是奇偶校验字节。在处理C1和C2之后,剩余24个数据字节。这些等于6个立体的样本。
以大致相同的方式计算用于C1和C2两者的奇偶校验字节。如此计算C1奇偶校验以致以下等式成立。
d0+d1+d2.....+d31=0(6)
d031+d130+d229.....+d310=0(7)
d062+d160+d258.....+d310=0 (8)
d093+d190+d287.....+d310=0 (9)
符号d0到d31是该帧中的字节。C2稍有不同因为仅仅具有28个字节所以α的幂因此减少。
使用该校正子发生器逻辑可以快速检查该数据。这个逻辑包含4个累加器。当向校正子逻辑写入一个字节时,每个累加器中的先前的值分别乘以1,α1,α2和α3然后加到新的字节。这有效地执行上述计算而不管该帧的尺寸。
如果该数据是正确的那么该累加器中的被称为校正子的值可能全部是零。如果该校正子是非零,那么该校正子可用单错纠正,双重错误纠正和四擦除纠正,三种方式之一来纠正误差。
编码单元可以被安排以计算接收的代码字的一个校正子,而非从读出自存储器中的数据中计算出一套新奇偶校验数据,来确定那些数据是否包含任何错误。如果该校正子是非零,则检测到错误。
单错纠正
假设,如果仅仅在d5中具有一个错误那么四个校正子字节被给定为:
s0=e            (10)
s1=e.α31-5     (11)
s1=e.α62-10    (12)
s1=e.α93-15    (13)
在此e是d5的正确值和恢复值之间的差。
显而易见该错误被给定为S0。它的位置可以通过由S1除S0并通过求对数提取α幂来确定。超过一个错误可以冒充成单个错误一直是可能的。可以通过再次使用S2和S3计算该位置而获得高置信度。这些必须是一致的而且在范围0-31中。那么遗漏纠正的几率仅仅为524,288分之1。
双差错纠正
在该校正子字节中具有足够的信息以识别2个错误的值和位置。算法是相对复杂的。Peterson-Berlekamp算法可用于找到被称为定位器多项式的多项式。一旦该定位器多项式已经计算,该多项式的根必须被发现。这些可以使用Chien搜索法完成。还可以使用欧几里得算法发现该定位器多项式。这个算法一般地不如Peterson-Berlekamp有效,但是更适合于硬件解决方法。
遗漏纠正具有双重错误的几率是32分之1。然而,由在C1的双查错纠错所提供的低置信级通过在C2提供的双重检查而被改善。
在此两个错误存在于代码字中,开头两个校正子如下:
s0=e0+e1                                  (14)
s 1 = e 0 . α 31 - L 0 + e 1 . α 31 - L 1 - - - ( 15 )
这里L0和L1是已知的错误的位置。e0和e1可以如下求出:
e 0 = s 0 ( α 31 - L 0 + s 0 . α 31 - L 1 ) - - - ( 16 )
e1=s0+e0                                  (17)
注意在解这些等式中,减法等于加法。
四个擦除纠正
如上所释,擦除是给予帧中位置已知但是值未知的错误的名称。这发生在一列数据在C1阶段被标志为坏,但然后,在C2阶段处理相同的数据时,仅仅将一个单独的字节被标记为无效的时候。该标志列译为该错误位置。C2可以纠正高达四个擦除即四个连续的可能有差错的列。通过偏移该数据以至于连续的行数据分别来自列四个一组可以进一步地将这个能力提高四倍。  因此可以是纠正16个连续的错误帧。
用于具有四个错误的帧的校正子可以用下式表示:
s0=e0+e1+e2+e3                         (18)
s 1 = e 0 . α 27 - L 0 + e 1 . α 27 - L 1 + e 2 . α 27 - L 2 + e 3 . α 27 - L 3 - - - ( 19 )
s 2 = e 0 . α 54 - 2 , L 0 + e 1 . α 54 - 2 , L 1 + e 2 . α 54 - 2 , L 2 + e 3 . α 54 - 2 , L 3 - - - ( 20 )
s 3 = e 0 . α 81 - 3 , L 0 + e 1 . α 81 - 3 , L 1 + e 2 . α 81 - 3 , L 2 + e 3 . α 81 - 3 , L 3 - - - ( 21 )
值L0,L1,L2和L3由来自C1的标志给出。
因此存在具有四个未知数:e0,e1,e2和e3的四个线性方程组并且以多种方式求解。一个方法将方程组考虑为矩阵:
s 0 S 1 S 2 S 3 = 1 1 1 1 α 27 - 1 , L 0 α 27 - 1 , L 1 α 27 - 1 , L 2 α 27 - 1 , L 3 α 54 - 2 , L 0 α 54 - 2 , L 1 α 54 - 2 , L 2 α 54 - 2 , L 3 α 81 - 3 , L 0 α 81 - 3 , L 1 α 81 - 3 , L 2 α 81 - 3 , L 3 × e 0 e 1 e 2 e 3 - - - ( 22 )
通过换算行并且从另外的行中减去一行,矩阵可以被转换为单位矩阵。
s′0     1 0 0 0     e0
s′1     0 1 0 0     e1
      =          ×                       (23)
s′2     0 0 1 0     e2
s′3     0 0 0 1     e3
那么错误数与被修改的校正子字节相等。代码为了速度运用某些捷径。当系数可能到达它的终值时不必计算或者存储那些值因为不再需要它了。
如果错误少于四个则可以在该帧外创建虚拟位置以使其达到四个。可以为具有一个,两个和三个擦除的情况提供专门代码,因为这可能倾向于在单个帧上更快速。然而,该系统必须对付连续的四个擦除帧因此一般地可能不具有提供这种专用代码的系统优势。还应该执行在纠正后的帧上的最终的校正子校验。
如果仅使用了纠错的第二阶段,那么这连同去交插缓冲器一起将允许纠正高达4096个连续的错误位,而一个位的错误数据都不需要由主机CPU去发现。这比当前纠错好4096倍,并且无需不定期检查所可预期的巨大的额外消耗。
在典型的由存储器供应商使用的闪存纠错算法中,将每512个字节中的16个字节作为冗余,因此存储到该闪存的数据的3.1%是该纠错额外消耗,在基于CIRC的系统中,这个冗余水平上升到12.5%(当仅仅使用C2时),然而这是代表纠错容量中的4096∶1的增长。该CIRC纠错还可以重用来自现在不用的汉明码系统的附加的可用空间,其使得数据冗余降至仅仅9.4%。
作为进一步改善纠错能力的方法,另外对数据进行交插以允许纠正多个扇区是有可能的。例如,如果该数据被写入到的存储器装置的数据被交插在4个扇区上,那么错误纠正系统能完全地从4个连续的完全被破坏的扇区恢复该数据。这额外的交插以需要额外的存储器处理该数据为代价而发生,但是显而易见,只要CPU中的工作存储器足够,可以允许将该额外交插扩展以允许将可校正数据的最大长度延伸到任何长度。
图7表示当运行于一个典型的NAND闪存的四个512个字节扇区上时,该增加的交插结构。在该图中,bn是位数而wn是字数。在这种情况下字是8位长。
取决于在该数据中发现的错误等级,对于典型的128kbps的MP3文件用于完成编码和解码器的处理额外消耗应该小于1到4MIPS,且总内存空间使用大约为1.5K字节。
根据本发明实施例的数据处理装置的处理器可以利用存在于CD数据解码器中的现有的指令。这可以有助于加速数据纠正处理。
纠错的目的:允许使用可重复利用的闪存,不是这个系统给与的仅有的优势-闪存产品的使用寿命还可以显著地增加,而不必需要在闪存存储器件上的昂贵的硅解决方法。
在将根据本发明实施例的数据处理装置与包含大量损坏扇区的存储器,诸如可重复利用的存储器或者具有过高差错率而不能正常销售的,和因其他原因制造的不合格的存储器,一起使用时是特别有利的。然而,该数据处理装置不局限于与这种损坏的存储器耦合在一起的状况中。它可以被有利地用于任何期望实施有效的纠错码,但又不产生在软件中单独实现这样的纠错码一般所必须承担的读写额外消耗的状况中。
根据本发明实施例的数据处理装置,已经在上面具体参照闪存描述了。然而,此技术同样地可应用到DRAM或者任何其它种类的固态存储器装置。
根据本发明的数据处理装置可以被方便地结合到各种各样的消费电子产品中,诸如CD播放器,数字音频播放器,数字式照相机,移动式电话等等。
申请人在此分别描述了每个单独的特征以及两个或更多这种特征的任何组合,对本领域的技术人员,根据公知常识,根据本说明书可以实现这种特征或者组合,以及利用这种特征或者特征组合解决任何在此揭露的问题,并且没有限制本权利要求书的范围。申请人指出,可以由任何这种单独的特征或者组合特征组成本发明的各个方面。鉴于上述描述,本领域的技术人员可以在本发明的范围内作出不同的修改是显而易见的。

Claims (31)

1.一种用于施加纠错算法到写入到和读出自可重写存储器的数据的数据处理装置,该数据处理装置包括:
在硬件中实现的编码单元,该编码单元能够执行编码操作,在该操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出用于写入到该存储器的第二数据集,以及能够执行错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定该读出数据是否包含错误;以及,
在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法对此数据进行处理以纠正所述错误并因此形成校正数据,并且输出该校正数据。
2.如权利要求1所要求的数据处理装置,其中如果该编码单元确定从存储器读出的数据未包含错误,则它被安排以输出该从存储器读出的数据。
3.如权利要求1或2所要求的数据处理装置,其中该编码单元被安排为在错误检测操作期间以执行与它于该编码操作期间在第一数据集上执行的从存储器读出的数据的处理相同的处理。
4.如权利要求3所要求的数据处理装置,其中在错误检测操作期间,该编码单元被安排为将从存储器读出的数据视为根据编码操作的第一数据集,并且根据该纠错算法处理那些数据以形成第二数据集。
5.如前述权利要求中任意一项所要求的数据处理装置,其中该编码单元被安排以接收从预先写入第一数据集的该存储器中的第一位置读出的信息数据,在该第一位置,并从预先写入了第二数据集中的该存储器的第二位置读出与该信息数据相关联的奇偶校验数据,其中从所述第一数据集通过编码操作预先形成第二数据集。
6.如直接地或者间接地从属于权利要求4的权利要求5所要求的数据处理装置,其中该编码单元被安排以通过根据该纠错算法而处理该信息数据确定从存储器读出的数据包含错误以形成第二数据集,将此第二数据集与该奇偶校验数据相比较并且如果第二数据集和该奇偶校验数据不一致,则确定该信息数据包含错误。
7.如前述权利要求中任意一项所要求的数据处理装置,其中该编码单元包括代码字发生器,该代码字发生器被安排以接收第一数据集,由生成器多项式乘所述数据,并且输出所述乘法的结果作为第二数据集。
8.如权利要求5至7中任意一项所要求的数据处理装置,其中该编码单元包括代码字发生器,该代码字发生器被安排以接收从存储器读出的数据,由生成器多项式乘包括在该读出数据中的信息数据并且将所述乘法的结果与包括在该读出数据中的奇偶校验数据进行比较。
9.如权利要求5至8中任意一项所要求的数据处理装置,其中该编码单元包括校正子发生器,该校正子发生器被安排以接收从存储器读出的数据,连接该信息数据和包括在该读出数据内的奇偶校验数据,将该生成多项式的一个根替换为该连接数据并且对结果值求和。
10.如权利要求9所要求的数据处理装置,其中该编码单元被安排以确定,如果该结果值的和是非零,则该信息数据包含错误。
11.如权利要求10所要求的数据处理装置,其中校正子发生器可以被安排为将复数个生成器多项式的根替换为连接数据并且对由每个替换产生的值求和,每个和的结果指示出信息数据中的错误的位置。
12.如前述权利要求中任意一项所要求的数据处理装置,其中该编码单元被安排为,当已经确定从存储器读出的数据包含错误时,输出那个信息数据到该纠错单元。
13.如前述权利要求中任意一项所要求的数据处理器,其中该纠错单元被安排以对被写入到该存储器的数据进行交插并对从该存储器读出的数据进行区交插。
14.如前述权利要求中任意一项所要求的数据处理器,其中该编码单元能够检测每256个从存储器读出的字节中的超过一位的错误。
15.如前述权利要求中任意一项所要求的数据处理器,其中该纠错单元能够纠正每512个从存储器读出的字节中的超过一位的错误。
16.如前述权利要求中任意一项所要求的数据处理装置,其中该纠错算法是里德-索罗蒙码代码。
17.如前述权利要求中任意一项所要求的数据处理装置,其中该纠错算法是交叉交错里德-索罗蒙码代码。
18.如前述权利要求中任意一项所要求的数据处理器,其中该纠错单元是数字处理器。
19.一种数字存储装置包括:
可重写存储器,
在硬件中实现的编码单元,该编码单元能够执行编码操作,在该操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出用于写入到该存储器的第二数据集,以及能够执行错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定该读出数据是否包含错误;以及,
在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法对此数据进行处理以纠正所述错误并因此形成校正数据,并且输出该校正数据。
20.如权利要求19所要求的数据存储装置,其中至少该存储器的一个被用于通过该处理器读取和/或写入数据的扇区具有大于在512个字节中的1位的差错率。
21.如权利要求19或者20所要求的数据存储装置,其中该存储器是可重复利用的集成化存储器。
22.如权利要求19或者20所要求的数据存储装置,其中该存储器具有超过通常验收制造标准的差错率。
23.如权利要求19至22中任何一个所要求的数据存储装置,其中该存储器是闪存。
24.如权利要求19至23中任何一个所要求的数据存储装置,其中该存储器是NAND闪存。
25.如权利要求19到24任何一个所要求的数据存储装置,其中该存储器是如此以至该存储器的位不可独立于该存储器的其它位而存取。
26.一种用于处理被写入到并且读出自可重写存储器的方法包括:
在硬件中执行编码操作,该操作包括接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出用于写入到该存储器的第二数据集;
执行错误检测操作,该错误检测操作包括接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定该读出数据是否包含错误;以及,
执行纠错操作,该纠错操作包括接收包含错误的读出数据,根据该纠错算法对此数据进行处理以纠正所述错误并因此形成校正数据,并且输出该校正数据。
27.一种用于重复利用可重写存储器的方法包括:
将该存储器从可操作的并且放置该存储器的装置移动到另外的装置中,具有数据处理装置的另一个装置包括:
在硬件中实现的编码单元,该编码单元能够执行编码操作,在该操作中它接收将写入到该存储器的第一数据集,根据纠错算法处理那些数据以形成第二数据集并且输出用于写入到该存储器的第二数据集,以及能够执行错误检测操作,在该操作中它接收自该存储器读出的数据并且根据该纠错算法处理那些数据以确定该读出数据是否包含错误;以及,
在软件中实现的纠错单元,该纠错单元被安排以接收包含错误的读出数据,根据该纠错算法对此数据进行处理以纠正所述错误并因此形成校正数据,并且输出该校正数据。
28.一种实质上参考附图在此描述的数据处理装置。
29.一种实质上参考附图在此描述的数据存储装置。
30.一种实质上参考附图在此描述的用于处理数据的方法。
31.一种实质上参考附图在此描述的用于重复利用可重写存储器的方法。
CNA200680025877XA 2005-07-15 2006-07-06 闪存纠错 Pending CN101258471A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0514610.5 2005-07-15
GB0514610A GB2428496A (en) 2005-07-15 2005-07-15 Error correction for flash memory

Publications (1)

Publication Number Publication Date
CN101258471A true CN101258471A (zh) 2008-09-03

Family

ID=34897323

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA200680025877XA Pending CN101258471A (zh) 2005-07-15 2006-07-06 闪存纠错

Country Status (8)

Country Link
US (1) US8140939B2 (zh)
EP (1) EP1907933B1 (zh)
JP (1) JP4988731B2 (zh)
KR (1) KR100989532B1 (zh)
CN (1) CN101258471A (zh)
DE (1) DE602006009273D1 (zh)
GB (1) GB2428496A (zh)
WO (1) WO2007010189A2 (zh)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327236B2 (en) 2008-11-18 2012-12-04 Fujitsu Limited Error judging circuit and shared memory system
CN103890732A (zh) * 2011-08-26 2014-06-25 牛津布鲁克斯大学 数字错误校正
CN104035833A (zh) * 2013-03-07 2014-09-10 联发科技股份有限公司 校验机器可读代码完整性的方法及系统
CN104268030A (zh) * 2009-12-09 2015-01-07 英特尔公司 用于存储器装置中的差错管理的方法和系统
CN104750571A (zh) * 2013-12-30 2015-07-01 慧荣科技股份有限公司 用以进行错误纠正的方法、存储装置与存储装置的控制器
CN104932951A (zh) * 2015-07-12 2015-09-23 符方晓 一种nand闪存出现ecc无法纠错时的数据恢复方法
CN105607974A (zh) * 2015-12-18 2016-05-25 西安电子科技大学 高可靠性多核处理系统
CN105653391A (zh) * 2014-11-13 2016-06-08 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
CN106601305A (zh) * 2016-11-18 2017-04-26 华中科技大学 一种使用检错码和纠错码相结合的固态盘纠错方法
CN107239358A (zh) * 2017-06-01 2017-10-10 捷开通讯(深圳)有限公司 安卓系统的启动方法、移动终端及具有存储功能的装置
US9858996B2 (en) 2010-04-19 2018-01-02 Silicon Motion Inc. Memory access module for performing sensing operations on storage cells of a storage device to obtain soft information and executing a program mode to control access to the storage device
US11869584B2 (en) 2010-04-19 2024-01-09 Silicon Motion, Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101504337B1 (ko) * 2008-06-26 2015-03-25 삼성전자주식회사 메모리 시스템 및 그 구동방법
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7979666B2 (en) * 2006-12-08 2011-07-12 William Marsh Rice University System and method for context-independent codes for off-chip interconnects
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US20090070655A1 (en) * 2007-09-11 2009-03-12 Silicon Motion, Inc. Method for Generating an ECC Code for a Memory Device
KR101403314B1 (ko) 2008-05-23 2014-06-05 삼성전자주식회사 메모리 장치 및 데이터 비트 저장 방법
US8458536B2 (en) * 2008-07-17 2013-06-04 Marvell World Trade Ltd. Data recovery in solid state memory devices
JP2010097600A (ja) * 2008-09-22 2010-04-30 Panasonic Corp 半導体記録装置
US8341501B2 (en) 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US20110040924A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Detecting a Transmission Error Over a NAND Interface Using Error Detection Code
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
KR101616100B1 (ko) * 2009-09-25 2016-04-28 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8572457B2 (en) 2010-05-28 2013-10-29 Seagate Technology Llc Outer code protection for solid state memory devices
US8769374B2 (en) * 2010-10-13 2014-07-01 International Business Machines Corporation Multi-write endurance and error control coding of non-volatile memories
TWI459396B (zh) * 2010-12-30 2014-11-01 Phison Electronics Corp 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
JP2012155541A (ja) 2011-01-26 2012-08-16 Toshiba Corp データ記憶装置、メモリ制御装置及びメモリ制御方法
FR2992504A1 (fr) * 2012-06-26 2013-12-27 Commissariat Energie Atomique Dispositif et procede pour la correction d'erreurs dans un mot de code
KR102002925B1 (ko) 2012-11-01 2019-07-23 삼성전자주식회사 메모리 모듈, 그것을 포함하는 메모리 시스템, 그것의 구동 방법
EP2863566B1 (en) 2013-10-18 2020-09-02 Université de Nantes Method and apparatus for reconstructing a data block
US9690823B2 (en) 2014-09-25 2017-06-27 Dropbox, Inc. Synchronizing copies of an extent in an append-only storage system
US9720607B2 (en) * 2014-09-25 2017-08-01 Dropbox, Inc. Append-only storage system supporting open and closed extents
US9772783B2 (en) 2014-09-25 2017-09-26 Dropbox, Inc. Constructing an index to facilitate accessing a closed extent in an append-only storage system
US10049007B2 (en) * 2015-10-28 2018-08-14 Via Technologies, Inc. Non-volatile memory device and read method thereof
US11184446B2 (en) 2018-12-05 2021-11-23 Micron Technology, Inc. Methods and apparatus for incentivizing participation in fog networks
US11256778B2 (en) 2019-02-14 2022-02-22 Micron Technology, Inc. Methods and apparatus for checking the results of characterized memory searches
US11327551B2 (en) * 2019-02-14 2022-05-10 Micron Technology, Inc. Methods and apparatus for characterizing memory devices
US10867655B1 (en) 2019-07-08 2020-12-15 Micron Technology, Inc. Methods and apparatus for dynamically adjusting performance of partitioned memory
US10922012B1 (en) 2019-09-03 2021-02-16 Dropbox, Inc. Fair data scrubbing in a data storage system
US11449577B2 (en) 2019-11-20 2022-09-20 Micron Technology, Inc. Methods and apparatus for performing video processing matrix operations within a memory array
US11853385B2 (en) 2019-12-05 2023-12-26 Micron Technology, Inc. Methods and apparatus for performing diversity matrix operations within a memory array
CN111966524B (zh) * 2020-08-24 2021-07-13 深圳三地一芯电子有限责任公司 一种Flash数据写入方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08139615A (ja) * 1994-11-10 1996-05-31 Kenwood Corp エンコード装置
JPH10207786A (ja) * 1997-01-22 1998-08-07 Kanebo Ltd メモリシステム
JPH11272568A (ja) * 1998-01-07 1999-10-08 Hitachi Ltd 記憶再生装置、誤り訂正方法及びこれらを用いた携帯情報端末ならびにディジタルカメラ
JP2004055098A (ja) * 2002-07-24 2004-02-19 Renesas Technology Corp 不揮発性メモリの記憶システム
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装
US20040158675A1 (en) * 2002-12-02 2004-08-12 Elpida Memory, Inc. Memory system and control method therefor

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2553565B2 (ja) * 1987-06-30 1996-11-13 松下電器産業株式会社 ガロア体演算装置
JP2606862B2 (ja) 1987-12-28 1997-05-07 株式会社東芝 単−エラー検出・訂正方式
JPH07146825A (ja) * 1993-11-22 1995-06-06 Okuma Mach Works Ltd メモリシステム
US5603001A (en) 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
US5778009A (en) * 1995-06-14 1998-07-07 Quantum Corporation Dedicated ALU architecture for 10-bit Reed-Solomon error correction module
JPH10207726A (ja) * 1997-01-23 1998-08-07 Oki Electric Ind Co Ltd 半導体ディスク装置
US6360346B1 (en) * 1997-08-27 2002-03-19 Sony Corporation Storage unit, method of checking storage unit, reading and writing method
KR100535291B1 (ko) * 1998-01-21 2005-12-09 소니 가부시끼 가이샤 엔코딩 방법 및 메모리 장치
JP3975245B2 (ja) * 1999-12-16 2007-09-12 株式会社ルネサステクノロジ 記録再生装置および半導体メモリ
US7231585B2 (en) * 2002-12-11 2007-06-12 Nvidia Corporation Error correction for flash memory
JP2004234545A (ja) * 2003-01-31 2004-08-19 Toshiba Corp 制御回路及びメモリコントローラ
US7426676B2 (en) * 2004-01-14 2008-09-16 Broadcom Corporation Data retrieval from a storage device using a combined error correction and detection approach
US7389465B2 (en) * 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
JP4595342B2 (ja) * 2004-02-19 2010-12-08 日本電気株式会社 記憶装置のデータ書き込み、読み出し方法およびデータ記憶システム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08139615A (ja) * 1994-11-10 1996-05-31 Kenwood Corp エンコード装置
JPH10207786A (ja) * 1997-01-22 1998-08-07 Kanebo Ltd メモリシステム
JPH11272568A (ja) * 1998-01-07 1999-10-08 Hitachi Ltd 記憶再生装置、誤り訂正方法及びこれらを用いた携帯情報端末ならびにディジタルカメラ
JP2004055098A (ja) * 2002-07-24 2004-02-19 Renesas Technology Corp 不揮発性メモリの記憶システム
JP2004164634A (ja) * 2002-10-28 2004-06-10 Sandisk Corp 不揮発性メモリシステム内のエラー訂正コードのためのハイブリッド実装
US20040158675A1 (en) * 2002-12-02 2004-08-12 Elpida Memory, Inc. Memory system and control method therefor

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327236B2 (en) 2008-11-18 2012-12-04 Fujitsu Limited Error judging circuit and shared memory system
CN104268030A (zh) * 2009-12-09 2015-01-07 英特尔公司 用于存储器装置中的差错管理的方法和系统
CN104268030B (zh) * 2009-12-09 2019-03-22 英特尔公司 用于存储器装置中的差错管理的方法和系统
US9858996B2 (en) 2010-04-19 2018-01-02 Silicon Motion Inc. Memory access module for performing sensing operations on storage cells of a storage device to obtain soft information and executing a program mode to control access to the storage device
US11869584B2 (en) 2010-04-19 2024-01-09 Silicon Motion, Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US10102904B2 (en) 2010-04-19 2018-10-16 Silicon Motion Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US11386952B2 (en) 2010-04-19 2022-07-12 Silicon Motion, Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US10854285B2 (en) 2010-04-19 2020-12-01 Silicon Motion, Inc. Memory access module for performing a plurality of sensing operations to generate digital values of a storage cell in order to perform decoding of the storage cell
US10490268B2 (en) 2010-04-19 2019-11-26 Silicon Motion Inc. Memory access module for performing memory access management
CN103890732A (zh) * 2011-08-26 2014-06-25 牛津布鲁克斯大学 数字错误校正
CN103890732B (zh) * 2011-08-26 2017-08-22 牛津布鲁克斯大学 数字错误校正
CN104035833A (zh) * 2013-03-07 2014-09-10 联发科技股份有限公司 校验机器可读代码完整性的方法及系统
CN104750571A (zh) * 2013-12-30 2015-07-01 慧荣科技股份有限公司 用以进行错误纠正的方法、存储装置与存储装置的控制器
CN104750571B (zh) * 2013-12-30 2017-10-31 慧荣科技股份有限公司 用以进行错误纠正的方法、存储装置与存储装置的控制器
CN105653391A (zh) * 2014-11-13 2016-06-08 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
CN105653391B (zh) * 2014-11-13 2018-11-02 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
CN104932951A (zh) * 2015-07-12 2015-09-23 符方晓 一种nand闪存出现ecc无法纠错时的数据恢复方法
CN104932951B (zh) * 2015-07-12 2017-09-05 符方晓 一种nand闪存出现ecc无法纠错时的数据恢复方法
CN105607974A (zh) * 2015-12-18 2016-05-25 西安电子科技大学 高可靠性多核处理系统
CN106601305A (zh) * 2016-11-18 2017-04-26 华中科技大学 一种使用检错码和纠错码相结合的固态盘纠错方法
CN107239358A (zh) * 2017-06-01 2017-10-10 捷开通讯(深圳)有限公司 安卓系统的启动方法、移动终端及具有存储功能的装置

Also Published As

Publication number Publication date
US20080235560A1 (en) 2008-09-25
GB2428496A (en) 2007-01-31
DE602006009273D1 (de) 2009-10-29
US8140939B2 (en) 2012-03-20
WO2007010189A2 (en) 2007-01-25
EP1907933A2 (en) 2008-04-09
WO2007010189A3 (en) 2007-07-12
KR20080045676A (ko) 2008-05-23
EP1907933B1 (en) 2009-09-16
JP2009501380A (ja) 2009-01-15
KR100989532B1 (ko) 2010-10-25
GB0514610D0 (en) 2005-08-24
JP4988731B2 (ja) 2012-08-01

Similar Documents

Publication Publication Date Title
CN101258471A (zh) 闪存纠错
CN101131876B (zh) 误差校正电路和方法、包含该电路的半导体存储装置
CN100386735C (zh) 对存储于存储设备中的数据进行编码和解码的方法
US11740960B2 (en) Detection and correction of data bit errors using error correction codes
CN101211667A (zh) 降低误纠概率的纠错电路和方法和包括该电路的存储设备
US10635528B2 (en) Memory controller and method of controlling memory controller
US8694872B2 (en) Extended bidirectional hamming code for double-error correction and triple-error detection
KR19990071935A (ko) 논리 블럭 어드레스를 이용한 데이터 보존 및 크로스-체크 코드
JP2007172818A5 (zh)
US10498364B2 (en) Error correction circuits and memory controllers including the same
JPH11507754A (ja) 10ビットリード−ソロモン誤り訂正モジュール用専用aluアーキテクチャ
US10243588B2 (en) Error correction code (ECC) decoders sharing logic operations, memory controllers including the error correction code decoders, and methods of decoding error correction codes
CN102468855A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
US20050149834A1 (en) (18, 9) Error correction code for double error correction and triple error detection
KR19990087035A (ko) 향상된다중버스트정정시스템
JP5170010B2 (ja) ディスクアレイ装置、ディスクアレイ装置制御方法、及びディスクアレイ装置用プログラム
US6728052B2 (en) Recording/reproducing apparatus, error correcting coding method and information recording method
Jing et al. A fast error and erasure correction algorithm for a simple RS-RAID
Gilroy Appendix II: RAID 6 tutorial
JP2011029857A (ja) フラッシュファイルシステムの誤り検出訂正機能
Chen et al. Burst error recovery method for VF arithmetic codes
Lin et al. Decoding nonsystematic Reed-Solomon codes using the Berlekamp-Massey algorithm
KR19980026491A (ko) 디지털 신호계의 에러와 이레이저의 정정장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20080903