CN103098378B - 分布式ecc处理的系统和方法 - Google Patents
分布式ecc处理的系统和方法 Download PDFInfo
- Publication number
- CN103098378B CN103098378B CN201180043802.5A CN201180043802A CN103098378B CN 103098378 B CN103098378 B CN 103098378B CN 201180043802 A CN201180043802 A CN 201180043802A CN 103098378 B CN103098378 B CN 103098378B
- Authority
- CN
- China
- Prior art keywords
- block
- sub
- data
- ecc
- processing
- 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.)
- Active
Links
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
- 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/1012—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 using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11B—INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
- G11B20/00—Signal processing not specific to the method of recording or reproducing; Circuits therefor
- G11B20/10—Digital recording or reproducing
- G11B20/18—Error detection or correction; Testing, e.g. of drop-outs
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
- H03M13/1555—Pipelined decoder implementations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3723—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6561—Parallelized implementations
Abstract
公开了用于进行分布式ECC操作的系统和方法。方法包括在存储器器件的控制器中:接收包括数据块和对于该数据块的主错误校正编码(ECC)数据的数据。该数据块包括数据的第一子块和与该第一子块对应的第一ECC数据。该方法包括开始数据块ECC操作以使用所述主ECC数据来处理所述数据块以及开始子块ECC操作以使用所述第一ECC数据来处理所述第一子块。该方法还包括基于所述子块ECC操作的结果来选择性地开始所述数据块ECC操作的错误位置搜索。
Description
技术领域
本公开一般涉及错误校正编码(ECC)处理。
背景技术
在将数据写到存储器中的处理期间,通常用额外的位(“奇偶校验位”)来编码数据以形成码字。在存在噪声时,表示码字的位中的一些可能改变,破坏原始码字使其出错。当从存储器读取码字时,可以使用解码器使用错误校正编码(ECC)来识别和校正错误。例如,使用博斯-查德胡里-霍昆格姆(Bose-Chaudhuri-Hocquenghem)(BCH)ECC方案用于其中位错误趋向于不相关的应用中。ECC方案的错误校正能力趋向于随着码字的长度增加而增加。因此,在数据存储系统和通信设备中实现的ECC方案趋向于使用更长的码字。
可以在多个连续的阶段中进行BCH解码以校正接收的数据中的错误。例如,BCH解码器可以生成对于可能包括错误的接收的码字的伴随式(syndrome)分量。BCH解码器可以生成关键方程(key equation)(例如错误位置多项式),该关键方程可以基于计算的伴随式生成并且可以指示在接收的码字中检测到的错误的数量。检测到的错误在接收的码字内的位置可以经由诸如Chien搜索的迭代处理、基于关键方程的根(root)而确定。因为通常顺序地对接收的码字中的每个值进行Chien搜索处理,所以处理码字的时间量可能与码字长度成比例。随着码字长度增加,由Chien搜索处理引起的延迟可能对ECC数据校正的速度施加限制。
发明内容
分布式ECC处理包括数据块以及数据块的一个或多个子块的同时处理。当在子块处理期间确定一子块不具有错误或者具有可校正的错误时,可以跳过数据块处理的一个或多个部分。例如,在数据块处理期间进行的Chien搜索可以跳过在子块处理期间已经校正的子块。因此,与进行每个接收的码字的全部Chien搜索相比,处理ECC码字的平均时间可以减少。
附图说明
图1是包括数据存储器件的系统的具体例示实施例的框图,该数据存储器件具有带有分布式ECC处理的错误校正编码(ECC)引擎;
图2是用于进行分布式ECC处理的系统的具体例示实施例的框图;
图3是流水线分布式ECC处理的具体例示实施例的数据流程图;
图4A-4B是基于分布式ECC处理系统中的子块处理的结果在数据块处理期间控制Chien搜索的方法的具体例示实施例的流程图;以及
图5是分布式ECC处理的方法的具体例示实施例的流程图。
具体实施方式
公开了在ECC解码期间使用诸如Chien搜索的线性错误位置搜索并且即使当在数据块的末尾发生错误时也具有减少的等待时间的系统和方法。可以确定一个或多个错误的近似位置并且可以从确定的位置开始错误位置搜索。可以通过将数据块划分为子块并对各个子块进行分布式ECC处理来确定近似错误位置。可以使用比用于主块的更小的ECC来寻找子块中的错误。可以在子块处理期间校正具有少量错误的子块,降低进行主块错误位置搜索的循环的数量,因此减少等待时间。
参考图1,描绘了用于进行分布式错误校正编码(ECC)处理的系统的具体实施例,并且概括地指定为100。系统100包括具有ECC引擎114的数据存储器件102,该ECC引擎114被配置为进行分布式ECC处理。该系统100还包括操作地耦接到数据存储器件102的主机设备104。
在具体实施例中,主机设备104被配置为与数据存储器件102通信并且发送对于存储在数据存储器件102处的数据的请求。主机设备104还配置为响应于请求而接收由数据存储器件102提供的数据。例如,主机设备104可以包括移动电话、音乐或视频播放器、游戏控制台、电子书阅读器、个人数字助理(PDA)、诸如膝上型计算机或者笔记本计算机的计算机、任何其他电子设备或其任意组合。
数据存储器件102包括控制器110和存储器112。控制器110被配置为管理存储器112以及当数据存储器件102操作地耦接到主机设备104时使能与主机设备104的通信。控制器110包括ECC引擎114,并且可以被配置为接收从存储器112读取的数据以及将接收的数据提供给ECC引擎114。控制器110可以被配置为取得由ECC引擎114输出的数据,比如已经校正过在存储或者传输期间发生的一个或多个错误的解码的数据,并且被配置为将解码的校正过的数据提供给主机设备104。
存储器112被配置为存储诸如数据(例如用户数据)和与该数据相关联的ECC数据(例如冗余数据或者“奇偶校验位”)的信息。例如,该数据可以包括要存储在存储器112处的多媒体文件的数据,并且该奇偶校验位可以包括使得ECC引擎114能够检测和校正数据中的错误的冗余信息。数据和相应的ECC数据可以一起被存储为数据字。存储器112可以是非易失性存储器。例如,存储器112可以是快闪存储器,比如NAND闪存。仅为了例示,数据存储器102可以是存储卡,比如安全数字卡、微卡、迷你SD.TM卡(特拉华,威尔明顿,SD-3C LLC的商标)、多媒体卡.TM(MMC.TM)卡(维吉尼亚,阿灵顿,JEDEC固态技术协会的商标)或者紧凑快闪(CompactFlash,CF)卡(加利福尼亚,米尔皮塔斯,SanDisk公司的商标)。作为另一例子,数据存储器102可以被配置为耦接到主机设备104作为嵌入存储器,比如(维吉尼亚,阿灵顿,JEDEC固态技术协会的商标)以及eSD,作为例示性的例子。
代表性的ECC页120被存储在存储器112中,ECC页120包括数据块130,该数据块130包括第一子块(SB1)121、第二子块(SB2)122、第三子块(SB3)123和第四子块(SB4)124。数据块130还包括与子块121-124的每个相关联的ECC数据,比如第一子ECC数据125、第二子ECC数据126、第三子ECC数据127和第四子ECC数据128。除了具有组合的子块121-124以及组合的子ECC块125-128的数据块130之外,ECC页120还包括奇偶校验位块129,该奇偶校验位块129存储与数据块130对应的ECC数据。
ECC引擎114被配置为经由分布式ECC处理对接收的数据进行ECC解码操作。例如,ECC引擎114可以根据BCH方案、里德-所罗门方案或者诸如通过使用Chien搜索的顺次地搜索错误位置的任何其他方案来进行解码。ECC引擎114可以接收从存储器读取的数据,比如ECC页120,并且沿着并行处理路径处理读取的数据116。第一处理路径包括进行诸如包括数据块130和ECC数据129的整个ECC页120的整个ECC码字的解码的数据块ECC解码器142。第二并行处理路径包括使用与数据的一个或多个子块(比如子块121-124)对应的ECC数据(比如子ECC数据125-128)进行这些子块的ECC处理的子块ECC编码器140。ECC引擎114可以基本同时开始在数据块ECC解码器142处的数据块ECC操作以及在子块ECC编码器140处的子块ECC操作。
在操作期间,响应于在子块121-124中的一个或多个中的、使用子ECC数据125-128在子块ECC解码器140处可校正的检测到的错误,可以减少在数据块ECC解码器142处的对于数据块130的ECC处理的量。例如,四个子块中的三个(例如子块121-123)可能被确定为经由在子块ECC解码器140处的子块ECC处理可校正。因此,在数据块ECC解码器142处的错误位置搜索可以被选择性地开始以绕过可校正的子块121-123,并且可以被约束为子块124中的被确定为不可由子块ECC处理校正的位置错误。关于图3-4进一步详细描述子块和数据块处理的例子。
每个子块121-124可以比ECC页120更迅速地被处理,但是由于在子ECC数据125-128中的更少数量的ECC位而可能具有降低的错误校正率(并且可能具有更大的误校正(mis-correction)的机会)。通过使用分布式ECC处理,ECC引擎114提供了具有与对于ECC页的全部奇偶校验位相关联的强度、同时在可以与校正ECC页并行地校正一个或多个子块时使能更快的操作的ECC解码。
参考图2,绘出了用于进行分布式ECC处理的系统的具体实施例,并且将其概括地指定为200。系统200包括主ECC处理电路202和子ECC处理电路204。例如,主ECC处理电路202可以对应于图1的数据块ECC解码器142,并且子ECC处理电路204可以对应于图1的子块ECC解码器140。子ECC处理电路204的输出被提供给控制电路206。控制电路206具有耦接到主ECC处理电路202的输出。系统200被配置为接收数据字,其被例示为ECC页120。
经由并行处理路径提供ECC页120用于在主ECC处理电路202以及在子ECC处理电路204处的处理。主ECC处理电路202可以对整个ECC页120进行ECC处理。例如,主ECC处理电路202可以生成伴随式,确定具有指示ECC页120中的错误的数量的次幂(order)的关键方程,并且比如通过进行Chien搜索而定位错误。在错误的校正之后得到的数据被提供为校正后的数据240。
子ECC处理电路204可以被配置为使用第一子ECC数据125进行第一子块121的ECC处理。子ECC处理电路204可以确定伴随式、生成关键方程并且使用第一子ECC数据125进行第一子块121的Chien搜索。子ECC处理204可以被配置为还使用第二子ECC数据126处理第二子块122、使用第三子ECC数据127处理第三子块123以及使用第四子ECC数据128处理第四子块124。例如,子ECC处理电路204可以被配置为以如关于图3所述的流水线方式处理ECC处理的一个或多个阶段。作为另一例子,子ECC处理电路204可以包括用于相互并行地处理子块121-124中的两个或多个的多个并行ECC处理电路。
子ECC处理的结果250被提供给控制电路206。这样的结果可以包括在子块121-124的每个的子ECC处理期间检测到的错误的数量254、指示子块121-124中的任何子块是否不可校正(即具有比使用子ECC数据125-128可校正的更多的错误)的一个或多个指示252、其他信息或其任意组合。控制电路206可以被配置为基于从子ECC处理电路204返回的结果来确定一个或多个参数、比如Chien搜索起始位置260和Chien搜索末尾位置262以更有效地继续主ECC处理电路202的处理。
例如,ECC处理的各个组成可能需要不同的时间量。为了例示,可以按固定的时间间隔进行伴随式计算,而关键方程的生成可能需要与ECC页中的错误的数量成比例的时间量,并且进行Chien搜索可能也需要与ECC页中的错误的数量和错误的位置成比例的时间量。指示错误是否已经被校正或者子块121-124的每个中的错误是否不可校正的子ECC处理电路204的结果可以使得主ECC处理电路202能够绕过主ECC处理的一个或多个方面的性能。为了例示,当子ECC处理电路204能够校正前三个子块121-123中的所有检测到的错误但是不能矫正出现在第四子块124中的错误时,控制电路206可以被配置为指示主ECC处理电路202在第四子块124的起始处(即在第三ECC数据127之后的第一位处)选择性地开始Chien搜索处理。以此方式,由于前三个子块121-123的并行ECC处理,在主ECC处理电路202处的Chien搜索处理循环的总数量可以实质上减少。
参考图3,例示了例示在诸如图1的ECC引擎114或者图2的系统200的分布式ECC系统中的ECC处理的例子的数据流图,并且将其概括地指定为300。参考图1的ECC页120,根据ECC处理的代表时序绘出数据流,并且该数据流包括在子ECC操作302中的数据流以及在主ECC操作304中的数据流。子ECC操作302可以对应于图1的子块ECC解码器140中的或者图2的子ECC处理电路204中的处理。主ECC操作304可以对应于图1的数据块ECC解码器142中的或者图2的主ECC处理电路202中的处理。
如例示的,子ECC操作302可以被流水线化而经过多个流水线循环,诸如第一循环310、第二循环311、第三循环312、第四循环313、第五循环314和第六循环315。循环310-315的每个被例示为通常对应于ECC页120的各个部分并且还对应于与子ECC处理相关联的每个流水线阶段的处理时间。
子ECC操作302可以包括计算对于接收的子块的伴随式的第一流水线阶段、基于计算的伴随式生成对于每个子块的关键方程的第二流水线阶段以及进行Chien搜索以查找并校正子块中的错误的第三流水线阶段。流水线阶段可以被布置为使得每个循环时按顺序的下一个子块进入第一流水线阶段,并且可以同时处理三个或更多子块,每个流水线阶段一个子块,并且每个子块的处理至少部分地与一个或多个其他子块的处理重叠。
为了例示,第一循环310包括使用第一ECC数据125对第一子块121的处理,这被例示为第一伴随式处理331,在此第一伴随式处理331期间,使用第一子ECC数据125进行第一子块121的伴随式计算。而且,对于主ECC操作304的伴随式生成321在该第一循环310期间开始。
第二循环311在第一循环310之后,并且包括使用第二ECC数据126对第二子块122的处理,进入流水线,以第二伴随式处理341而开始。另外,在第二循环311期间,进行对于第一子块121的第一关键方程生成332。在对于第一子块121的第一关键方程生成332之后,对于第一子块121的和对于第一子ECC数据125的第一Chien搜索处理333在第二循环期间开始并且继续到第三循环312中。
在第三循环312期间,使用第三ECC数据127的第三子块123的处理以对于第三子块123的第三伴随式处理351而开始。另外,对于第一子块121的和对于第一子ECC数据125的第一Chien搜索处理333完成,并且进行对于第二子块122的第二关键方程生成342。还例示了,在第三循环312期间,在对于第一子块121的和对于第一子ECC数据125的第一Chien搜索处理333结束时,对于第二子块112和对于第二子ECC数据126的第二Chien搜索处理343开始。例示了由于占据了Chien搜索流水线阶段的第一Chien搜索处理333导致的在第三循环312期间在第二关键方程处理342的完成和第二Chien搜索处理343的开始之间的经过时间。为了例示通常的流水线处理的目的绘出了第二子块122的处理中的暂时中断,并且其不应被认为是对系统300内的处理的限制或者必然代表。
使用第四ECC数据128的第四子块124的处理在第四循环313期间以第四伴随式处理361而开始。而且在第四循环313期间,对于第三子块123的第三关键生成352开始,并且然后开始对于第三子块123和对于第三子ECC数据127的第三Chien搜索处理353。而且在第四循环313期间,对于第二子块112和对于第二子ECC数据126的第二Chien搜索处理343完成。
在第五循环314期间,进行对于第四子字124的第四关键方程生成362。而且,对于第三子块123和对于第三子ECC数据127的第三Chien搜索处理353完成,并且对于第四子块124和第四子ECC数据128的第四Chien搜索处理363开始。另外,在第五循环314期间,主ECC操作304的伴随式处理324完成,并且主ECC的关键方程生成322开始。如例示的,当主ECC操作304开始关键方程生成322时,第一和第二子块121和122的子ECC处理已经完成,并且第三和第四子块123和124的子ECC处理在进行中。
在第六循环315期间,对于第四子块124的子ECC处理开始,同时主ECC关键方程生成322继续。因此,在主ECC Chien搜索处理323开始时,作为处理各个子块121-124的结果,搜索起始位置和/或在Chien搜索处理323期间要分析的一个或多个区域可以是已知的。例如,当第一子块121和第二子块122的子ECC处理完成而没有发生不可校正的错误时,在对于第一和第二子块121和122内以及第一和第二ECC块125和126内的数据位的主ECC操作304期间不需要应用Chien搜索处理322。
如果第三子块123的子ECC操作302指示了不可校正的错误,而第四子块124被指示为可由子ECC操作302校正,则可以控制Chien搜索处理323以仅处理第三子块123和第三ECC块127。在传统的系统中可以与ECC页120的长度成比例并且可以构成解码处理的实质部分的进行对于主ECC304的Chien搜索处理323的总处理时间可以减少四分之一或更多(a factor of fouror more)。作为另一例子,当子ECC操作302指示子字121-124都不具有不可校正的错误时,主ECC操作304的Chien搜索处理323可以限制为仅对ECC数据129的搜索或者可以一起跳过。
参考图4A-B,绘出了方法400的具体实施例,其在图4A开始并且继续到图4B。方法400例示了可以基于子ECC处理的结果、比如由图2的控制电路206进行的处理。参考图3的数据流图说明方法400。图4A绘出对由子ECC操作指示为具有不可校正的错误的子块进行Chien搜索并且确定ECC字中的所有错误是否已经被校正。图4B绘出在错误仍未被校正(例如一个或多个子块在子ECC处理期间被误校正)时的处理,并且该处理包括对被指示为不具有不可校正的错误的子块进行Chien搜索。
在402,接收主关键生成处理已经完成的指示。例如,可以在图3的关键生成处理322之后接收该指示。在404确定第一子块(SB)121是否导致不可校正的错误。响应于在404处第一子块121导致不可校正的错误,可以在主ECC操作304中开始Chien搜索(CS),该Chien搜索以第一子块121的开头而开始并且继续到第一子ECC数据125的结尾。
在408,确定第二子块122是否导致不可校正的错误。当第二子块122被确定为没有导致不可校正的错时,处理继续到412。或者,当第二子块122被确定为已经导致不可校正的错误时,在410,在主ECC中进行对应于第二子块122和第二子块122的第二子ECC数据126的主ECC Chien搜索,并且处理前进到412。
在412,确定第三子块123是否导致不可校正的错误。当第三子块123被确定为没有导致不可校正的错误时,处理前进到416。或者,当第三子块123被确定为已经导致不可校正的错误时,在414进行与第三子块123和第三子ECC数据127对应的主ECC Chien搜索处理,并且处理继续到416。
在416,确定第四子块124是否导致不可校正的错误或者第四子块124的处理是否未完成。当在416第四子块124导致了不可校正的错误或者对于第四子块124的Chien搜索处理未完成时,可以进行主ECC Chien搜索处理,以第四子块124顺序上的第一位开始并且继续到ECC页120的结尾(即包括ECC数据129)。或者,当第四子块124未被指示为具有不可校正的错误并且第四Chien搜索处理363已经完成时,处理继续到420,在此确定(在子ECC操作302以及在406、410和414的Chien搜索的任意中检测到的)错误的总数是否等于从主ECC操作304的关键方程处理322得到的主关键方程的次幂。
响应于确定发现的错误的总数不等于主ECC操作304的主关键方程的次幂,在424,从ECC页120的ECC数据129的开头进行Chien搜索处理。否则,处理继续到426,在此确定校正的ECC错误的数量是否等于主ECC操作304的主关键处理322生成的关键方程的次幂。当校正的ECC错误(包括子ECC和主ECC校正)的数量等于从关键方程处理322得到的关键方程的次幂时,基于主ECC操作304的所有检测的错误已经被子ECC操作302和/或被在406、410、414、418中的一个或多个处进行的目标Chien搜索处理或其任意组合检测到并校正。因此,在428,所有检测到的错误已经被校正,并且对于ECC页120的ECC处理完成。当在426,校正过的错误的数量被确定为不等于主关键方程的次幂时,处理继续到在图4B中例示的430。
在430,确定第一子块121是否被子ECC操作302确定为具有不可校正的错误。当第一子块被子ECC操作302确定为不具有不可校正的错误时,在432,进行第一子块121和第一子ECC数据125的主ECC操作304的Chien搜索处理。继续到434,在434确定校正过的错误的数量是否等于主关键方程的次幂。当在434确定校正过的错误的数量等于主关键方程的次幂时,在436所有检测到的错误已经被校正并且处理完成。否则,在438,确定第二子块122是否被子ECC操作302确定为导致了不可校正的错误。当第二子块122被子ECC操作302确定为不具有不可校正的错误时,在440,对第二子块122和第二子ECC数据126进行主ECC操作304的Chien搜索处理。在440处,完成了第二Chien搜索处理之后或者当第二子块122被子ECC操作302确定为具有不可校正的错误时,在442,确定校正过的错误的数量是否等于主关键方程的次幂。
如果在442处校正的错误的数量被确定为等于主关键方程的次幂,则在444,所有检测到的错误已经被校正并且处理完成。否则,在446,确定第三子块123是否被子ECC操作302确定为不可校正。如果第三子块123被子ECC操作302确定为不具有不可校正的错误,则对第三子块123和第三子ECC数据127进行主ECC操作304的Chien搜索处理。在448的Chien搜索处理的完成之后,或者在446在确定第三子块123被子ECC操作302确定为具有不可校正的错误之后,在450,确定校正过的错误的数量是否等于主关键方程的次幂。
当在450确定校正过的错误的数量等于主关键方程的次幂时,在452,所有检测到的错误已经被校正并且处理完成。否则,在454,确定第四子块124是否被子ECC操作302确定为具有不可校正的错误。如果在454第四子块124被子ECC操作302确定为不具有不可校正的错误,则在456,对第四子块124和第四子ECC数据128进行Chien搜索处理。
在458,确定总共校正过的错误是否等于主关键方程的次幂。如果是,则在460所有检测到的错误已经被校正并且处理结束。如果在458处,校正过的错误的数量不等于主关键方程的次幂,则已经发生的错误的数量超过了主ECC操作304的能力,在462生成错误,并且处理终止。
图5是分布式ECC处理的方法的实施例的流程图。该方法可以在存储器器件的控制器中、比如图1的控制器110中进行。该方法包括在502接收包括数据块和对于该数据块的主错误校正编码(ECC)数据的数据。该数据块包括数据的第一子块以及与该第一子块对应的第一ECC数据。存储器器件可以包括非易失性存储器,并且可以通过从非易失性存储器读取数据并将读取的数据发送到控制器的ECC引擎来接收数据。例如,可以在图1的ECC引擎114处接收ECC页120作为读取的数据116。
在504,开始数据块ECC操作以处理该数据块。该数据块ECC操作可以包括主伴随式生成处理、主关键方程生成处理和主错误位置处理。例如,该数据块ECC操作可以是图3的主ECC操作304。可以通过将数据提供到诸如图1的数据块ECC解码器142的数据块ECC解码器的输入并指示数据块ECC解码器开始处理该数据来进行开始数据块ECC操作。
在506,开始子块ECC操作以使用第一ECC数据来处理第一子块。数据块ECC操作和子块ECC操作可以基本同时开始。子块ECC操作可以包括对于数据块中的每个子块的子块伴随式生成处理、子块关键方程生成处理和子块错误位置处理。数据块可以包括第二子块和对应于第二子块的第二ECC数据。子块ECC操作还可以使用第二ECC数据处理第二子块。子块ECC操作可以被流水线化并且第二子块的处理可以至少部分地与第一子块的处理重叠。例如,子块ECC操作可以是图3的子ECC操作302。可以通过将数据提供到诸如图1的子块ECC解码器140的子块ECC解码器的输入并指示子块ECC解码器开始处理该数据来开始子块ECC操作。
在508,基于子块ECC操作的结果选择性地开始数据块ECC操作的错误位置搜索。例如,响应于子块ECC操作指示在第一子块中的不可校正的错误,可以开始错误位置搜索以在第一子块的起始处开始。错误位置搜索可以包括Chien搜索,比如图3的Chien搜索处理323。
为了例示,可以通过接收指示不可由子块ECC操作校正的子块的起始位位置的起始位置数据、比如图2的Chien搜索起始位置260来进行基于子块ECC操作的结果选择性地开始数据块ECC操作的错误位置搜索。还可以接收指示与不可由子块ECC操作校正的子块对应的ECC数据的末尾位位置的末尾位置数据,比如图2的Chien搜索末尾位置262。可以开始错误位置搜索以从起始位位置到末尾位位置顺序地处理数据。
数据块ECC操作可以确定数据中的错误的第一数量。错误的第一数量由数据块ECC操作、比如基于与该数据块对应的关键方程的次幂来确定。比如图4A的决定420处,可以将错误的第一数量与由子块ECC操作校正的错误的第二数量比较。
当数据块包括多个子块时,可以控制错误位置搜索以处理在子块ECC操作期间被识别为具有不可校正的错误的多个子块的每个。例如,可以响应于图4A的决定404、408、412和416而选择性地进行Chien搜索。在完成被识别为具有不可校正的错误的多个子块的每个的错误位置搜索之后,可以将校正过的错误的数量与数据中的错误的第一数量相比较。响应于错误的第一数量超过校正过的错误的数量,可以控制错误位置搜索以处理主ECC数据,如在图4A的420-424处所例示的。
当在主ECC数据中校正一个或多个错误时可以更新校正过的错误的数量。当错误的第一数量超过校正过的错误的数量时,比如响应于图4的决定430、438、446和454,可以控制错误位置搜索以处理在子块ECC操作期间未被识别为具有不可校正的错误的多个子块的至少一个。
尽管图1的分布式ECC系统在数据存储器件中实现,但是在其他实施例中,分布式ECC系统可以在其他系统、比如通信系统中实现。例如,图1的ECC引擎114可以在无线接收器中实现以校正在编码的信号的传输期间发生的错误。
尽管ECC页120被例示为具有四个子块121-124,但是在其他实施例中,ECC页120可以具有少于四个子块或者多于四个子块。子块可以同样大小或者可以具有在ECC页120内的不同大小。另外,尽管图3的子块操作302以及图4的处理被例示为顺序地处理子块121-124,但是在其他实施例中,可以按非顺序的方式进行子块处理或者可以跳过一个或多个子块。例如,可以通过与主块同时地处理单个子块并基于处理子块的结果来控制主块中的Chien搜索以减少平均ECC解码等待时间。
尽管在此绘出的各个组件被例示为块组件并且按一般术语来描述,但是这样的组件可以包括一个或多个微处理器、状态机或者配置为使得图1的数据存储器件102能够进行属于这样的组件的具体功能的其他电路。例如,图1的子块ECC解码器140和数据块ECC解码器142可以表示物理组件,比如硬件控制器、状态机、逻辑电路或者使得图1的ECC引擎114能够使用子块ECC解码器140的结果来调整在数据块ECC解码器142处的处理来进行分布式ECC处理的其他结构。
图1的子块ECC解码器140和数据块ECC解码器142可以被实现为专用硬件(例如电路)来减少等待时间。或者,可以使用被编程为进行ECC解码的一个或多个阶段、比如伴随式生成、关键方程生成或者错误位置搜索的微处理器或者微控制器来实现图1的子块ECC解码器140和数据块ECC解码器142之一或两者。在具体实施例中,子块ECC解码器140和数据块ECC解码器142之一或两者包括由处理器执行的可执行指令,并且这些指令被存储在存储器112处。或者,或另外地,由可以被包括在控制器110中的处理器执行的可执行指令可以被存储在不是存储器112的部分的单独的存储器位置处,比如只读存储器(ROM)(未示出)。
在具体实施例中,数据存储器件102可以是被配置为选择性地耦接到一个或多个外部设备的可携式器件。但是,在其他实施例中,数据存储器102可以附连或者嵌入在一个或多个主机设备内,比如在可携式通信设备的外壳内。例如,数据存储器件102可以在诸如无线电话、个人数字助理(PDA)、游戏设备或控制台、可携式导航设备或者使用内部非易失性存储器的其他设备的包装好的装置内。在具体实施例中,数据存储器102包括非易失性存储器,比如快闪存储器(例如NAND、NOR、多级单元(MLC)、划分的位线NOR(DINOR)、AND、高电容耦合比(HiCR)、不对称非接触晶体管(ACT)、或者其他闪存)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、一次可编程存储器(OTP)或者任何其他类型的存储器。
在此描述的实施例的例示意图提供对各个实施例的一般理解。可以利用并从本公开得出其他实施例,以便可以不脱离本公开的范围做出结构和逻辑上的替换和改变。本公开意图覆盖各个实施例的任意以及所有随后的适应及变型。因而,本公开和附图将被认为是例示性的而不是限制性的。
以上公开的主题将被认为是例示性的而不是限制性的,并且所附权利要求意图覆盖所有这样的修改、增强和其他实施例,它们落在本公开的范围内。因此,达法律允许的最大范围,本发明的范围将由以下权利要求及其等效物的最宽可允许的解释来确定,并且不应受以上详细描述的限制或限定。
Claims (23)
1.一种方法,包括:
在存储器器件的控制器中:
接收包括数据块和对于该数据块的ECC数据的数据,所述数据块包括数据的第一子块和与该第一子块对应的第一ECC数据;
开始数据块ECC操作以使用所述主ECC数据处理所述数据块;
开始子块ECC操作以使用所述第一ECC数据处理所述第一子块;以及
基于所述子块ECC操作的结果选择性地开始所述数据块ECC操作的错误位置搜索,
其中所述数据块ECC操作确定数据中的错误的第一数量,并且所述方法还包括:
将错误的第一数量与由所述子块ECC操作校正的错误的第二数量相比较。
2.如权利要求1的方法,其中响应于所述子块ECC操作指示所述第一子块中的不可校正的错误,开始所述错误位置搜索以在所述第一子块的起始处开始。
3.如权利要求1的方法,其中所述错误位置搜索包括Chien搜索。
4.如权利要求1的方法,其中所述数据块包括第二子块和与该第二子块对应的第二ECC数据,以及其中所述子块ECC操作还使用该第二ECC数据处理该第二子块。
5.如权利要求4的方法,其中所述子块ECC操作被流水线化,以及其中所述第二子块的处理至少部分地与所述第一子块的处理重叠。
6.如权利要求1的方法,其中所述数据块包括多个子块,并且还包括:
控制所述错误位置搜索以处理在所述子块ECC操作期间被识别为具有不可校正的错误的多个子块的每个。
7.如权利要求6的方法,还包括在完成被识别为具有不可校正的错误的多个子块的每个的错误位置搜索之后:
将校正过的错误的数量与数据中的错误的第一数量相比较,其中所述错误的第一数量由所述数据块ECC操作确定;以及
响应于所述错误的第一数量超过校正过的错误的数量,控制所述错误位置搜索以处理主ECC数据。
8.如权利要求7的方法,其中所述错误的第一数量是基于与所述数据块对应的关键方程的次幂。
9.如权利要求7的方法,还包括:
当在主ECC数据中校正一个或多个错误时,更新校正过的错误的数量;以及
当错误的第一数量超过校正过的错误的数量时,控制所述错误位置搜索以处理在所述子块ECC操作期间未被识别为具有不可校正的错误的多个子块的至少一个。
10.如权利要求1的方法,其中所述存储器器件还包括非易失性存储器,以及
其中通过以下来接收数据:
从所述非易失性存储器读取数据;以及
将读取的数据发送到所述控制器的ECC引擎。
11.如权利要求1的方法,其中:
通过以下来开始数据块ECC操作:
将数据提供到数据块ECC解码器的输入;以及
指示所述数据块ECC解码器开始处理所述数据;以及
通过以下来开始子块ECC操作:
将所述数据提供给子块ECC解码器的输入;以及
指示所述子块ECC解码器开始处理所述数据。
12.如权利要求11的方法,其中同时开始所述数据块ECC操作和所述子块ECC操作。
13.如权利要求1的方法,其中通过以下来基于所述子块ECC操作的结果选择性地开始所述数据块ECC操作的错误位置搜索:
接收指示不可由子块ECC操作校正的子块的起始位位置的起始位置数据;
接收指示与不可由所述子块ECC操作校正的子块对应的ECC数据的末尾位位置的末尾位置数据;以及
开始所述错误位置搜索以从所述起始位位置到所述末尾位位置顺序地处理所述数据。
14.如权利要求1的方法,其中所述数据块ECC操作包括主伴随式生成处理、主关键方程生成处理和主错误位置处理,以及其中所述子块ECC操作包括对于所述数据块中的每个子块的子块伴随式生成处理、子块关键方程生成处理以及子块错误位置处理。
15.一种数据存储器件,包括:
存储器;以及
控制器,耦接到所述存储器,其中所述控制器包括ECC引擎,该ECC引擎包括:
数据块ECC解码器,配置为处理从存储器取得的数据,所述数据包括数据块和对于该数据块的主ECC数据;以及
子块ECC解码器,配置为处理所述数据块的子块和对应于子块的ECC数据,
其中所述ECC引擎被配置为同时开始在所述数据块ECC解码器处和在所述子块ECC解码器处的数据的处理,
其中所述数据块ECC解码器被配置为确定数据中的错误的第一数量,并且
将错误的第一数量与由所述子块ECC操作校正的错误的第二数量相比较。
16.如权利要求15的数据存储器件,其中所述ECC引擎被配置为基于所述子块ECC解码器的结果选择性地开始在所述数据块ECC解码器处的错误位置搜索。
17.如权利要求16的数据存储器件,其中所述ECC引擎还包括响应于子块ECC解码器的控制电路,该控制电路被配置为选择在所述数据块ECC解码器处的错误位置搜索的起始位置以搜索在所述子块中的被所述子块ECC解码器识别为不可校正的错误。
18.如权利要求15的数据存储器件,其中在数据块ECC解码器处的处理至少部分地与在子块ECC解码器处的处理重叠。
19.如权利要求15的数据存储器件,其中所述数据存储器件是以下之一:
快闪存储卡;
通用串行总线(USB)快闪盘;
固态盘(SSD);以及
嵌入式快闪存储器。
20.一种数据存储器件,包括:
快闪存储器;以及
控制器,耦接到所述快闪存储器,其中所述控制器包括ECC引擎,该ECC引擎包括:
数据块ECC解码器,配置为处理从快闪存储器取得的数据,所述数据包括数据块和对于该数据块的主ECC数据;以及
子块ECC解码器,配置为处理所述数据块的子块和对应于子块的ECC数据,
控制电路,响应于所述子块ECC解码器,并且被配置为选择在所述数据块ECC解码器处的错误位置搜索的起始位置以搜索在所述子块中的被所述子块ECC解码器识别为不可校正的错误,
其中所述数据块ECC解码器被配置为确定数据中的错误的第一数量,并且
将错误的第一数量与由所述子块ECC操作校正的错误的第二数量相比较。
21.如权利要求20的数据存储器件,其中所述ECC引擎被配置为同时开始在所述数据块ECC解码器处和在所述子块ECC解码器处的数据的处理。
22.如权利要求20的数据存储器件,其中所述数据存储器件被配置为可移除地耦接到主机设备。
23.如权利要求20的数据存储器件,其中所述数据存储器件被配置为耦接到主机设备作为嵌入式存储器。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/882,357 US8392807B2 (en) | 2010-07-23 | 2010-09-15 | System and method of distributive ECC processing |
US12/882,357 | 2010-09-15 | ||
PCT/US2011/051231 WO2012037032A2 (en) | 2010-09-15 | 2011-09-12 | System and method of distributive ecc processing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103098378A CN103098378A (zh) | 2013-05-08 |
CN103098378B true CN103098378B (zh) | 2014-08-20 |
Family
ID=44652042
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180043802.5A Active CN103098378B (zh) | 2010-09-15 | 2011-09-12 | 分布式ecc处理的系统和方法 |
Country Status (3)
Country | Link |
---|---|
KR (1) | KR101367351B1 (zh) |
CN (1) | CN103098378B (zh) |
WO (1) | WO2012037032A2 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102131230B1 (ko) * | 2018-11-26 | 2020-07-08 | 현대오트론 주식회사 | 파워트레인 제어기의 램 에러 감지 로직의 자가진단 방법 및 장치 |
CN112214172A (zh) * | 2020-10-12 | 2021-01-12 | 北京泽石科技有限公司 | Qlc nand的编码方法与编码装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256842A (zh) * | 2007-01-03 | 2008-09-03 | 三星电子株式会社 | 纠错码控制器和包括该纠错码控制器的存储器系统 |
CN101473308A (zh) * | 2006-05-18 | 2009-07-01 | 矽玛特公司 | 非易失性存储器纠错系统和方法 |
US20090222708A1 (en) * | 2008-03-01 | 2009-09-03 | Kabushiki Kaisha Toshiba | Error correcting device and error correcting method |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008118522A1 (en) * | 2007-03-23 | 2008-10-02 | Bigfoot Networks, Inc. | Distributed processing system and method |
-
2011
- 2011-09-12 CN CN201180043802.5A patent/CN103098378B/zh active Active
- 2011-09-12 KR KR1020137007541A patent/KR101367351B1/ko active IP Right Grant
- 2011-09-12 WO PCT/US2011/051231 patent/WO2012037032A2/en active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101473308A (zh) * | 2006-05-18 | 2009-07-01 | 矽玛特公司 | 非易失性存储器纠错系统和方法 |
CN101256842A (zh) * | 2007-01-03 | 2008-09-03 | 三星电子株式会社 | 纠错码控制器和包括该纠错码控制器的存储器系统 |
US20090222708A1 (en) * | 2008-03-01 | 2009-09-03 | Kabushiki Kaisha Toshiba | Error correcting device and error correcting method |
Also Published As
Publication number | Publication date |
---|---|
WO2012037032A2 (en) | 2012-03-22 |
KR101367351B1 (ko) | 2014-02-26 |
WO2012037032A3 (en) | 2012-06-28 |
CN103098378A (zh) | 2013-05-08 |
KR20130054385A (ko) | 2013-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8392807B2 (en) | System and method of distributive ECC processing | |
KR101369444B1 (ko) | 정정 불가능한 에러를 해결하는 하이브리드 에러 정정 코딩 | |
US8806297B2 (en) | Data recovery using additional error correction coding data | |
US8719677B2 (en) | Using ECC encoding to verify an ECC decode operation | |
US8726140B2 (en) | Dummy data padding and error code correcting memory controller, data processing method thereof, and memory system including the same | |
US8938656B2 (en) | Data storage device with intermediate ECC stage | |
US8065583B2 (en) | Data storage with an outer block code and a stream-based inner code | |
US8631304B2 (en) | Overlapping error correction operations | |
CN103544073B (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
KR101686980B1 (ko) | 비휘발성 메모리 내의 데이터 저장 방법 | |
TW201346923A (zh) | 使用單一錯誤偵測奇偶校驗的抹除修正 | |
TWI474329B (zh) | 提昇錯誤更正能力之方法以及記憶裝置及控制器 | |
US8738996B1 (en) | Method and system for ceasing access to memory cells of flash memory when less than a maximum number of correctable errors for an error correction code exists | |
CN103098378B (zh) | 分布式ecc处理的系统和方法 | |
US9208863B1 (en) | Memory system and method of controlling memory system | |
US20140245101A1 (en) | Semiconductor memory | |
TW201312578A (zh) | 分配的錯誤修正編碼處理之系統及方法 | |
JP2007179480A (ja) | メモリコントローラおよびフラッシュメモリシステム |
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 | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: texas Patentee after: DELPHI INT OPERATIONS LUX SRL Address before: texas Patentee before: Sandisk Corp. |