CN103324548A - 存储器控制器 - Google Patents

存储器控制器 Download PDF

Info

Publication number
CN103324548A
CN103324548A CN201310088326XA CN201310088326A CN103324548A CN 103324548 A CN103324548 A CN 103324548A CN 201310088326X A CN201310088326X A CN 201310088326XA CN 201310088326 A CN201310088326 A CN 201310088326A CN 103324548 A CN103324548 A CN 103324548A
Authority
CN
China
Prior art keywords
check bit
user data
error correction
coding
decoding
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
CN201310088326XA
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Publication of CN103324548A publication Critical patent/CN103324548A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明提供存储器控制器。根据实施方式,存储器控制器具备:编码部,其通过对用户数据进行纠错码化处理而生成第1至第n校验位,通过对第1至第n校验位分别进行纠错码化处理而生成第1至第n外部校验位;和译码部,其用用户数据、第1至第n校验位及第1至第n外部校验位,进行纠错译码处理,根据用于生成第1至第(i-1)校验位的生成多项式来选择用于生成第i校验位的生成多项式。

Description

存储器控制器
相关申请
本申请享受于2012年3月19日申请的日本专利申请号2012-061692及于2012年8月28日申请的日本专利申请号2012-187140的优先权,这些日本专利申请的全部内容在本申请中援引。
技术领域
本实施方式一般性地涉及存储器控制器。
背景技术
从存储器读出存储器所存储的用户数据时,有时会发生用户数据变为不同于本来的值的值,或者当发送装置发送的数据被接收装置接收时、接收的数据变为不同于本来的值的值等现象。
为了应对该问题,一般采取对用户数据进行纠错编码而生成校验位数据,将用户数据和校验位数据作为一组进行管理这样的方法。作为纠错码例如有BCH码和/或RS(里德-索罗门)码。
发明内容
本发明的实施方式提供可对用户数据进行根据错误的规模而变更处理量的自适应的纠错的存储器控制器。
根据实施方式,具备:编码部,其通过对用户数据进行纠错编码处理而生成第1至第n校验位,通过对第1至第n校验位分别进行纠错编码处理而生成第1至第n外部校验位;和译码部,其用用户数据、第1至第n校验位及第1至第n外部校验位来进行纠错译码处理,基于用于生成第1至第(i-1)校验位的生成多项式来选择用于生成第i校验位(i是1以上且n以下的整数)的生成多项式。
根据实施方式,提供能够可对用户数据进行根据错误的规模而变更处理量的自适应纠错的存储器控制器。
附图说明
图1是第1实施方式涉及的存储器系统的构成例的框图。
图2是表示第1实施方式的校验位的存储概念的一例的图。
图3是表示第1实施方式的编码运算的概念的图。
图4是表示第1实施方式的译码运算的概念的图。
图5是表示第1实施方式的编码运算顺序的一例的流程图。
图6是表示第1实施方式的译码运算顺序的一例的流程图。
图7是表示用户数据和校验位的存储形式的例子的图。
图8是表示用户数据和校验位的存储形式的例子的图(校验位数因用户数据而异的例子)。
图9是表示用户数据和校验位的存储形式的例子的图(在多个存储装置中存储的例子)。
图10是表示第2实施方式涉及的存储器系统的构成例的框图。
图11是表示第2实施方式的编码运算的概念的图。
图12是表示第3实施方式涉及的存储器系统的构成例的框图。
图13是表示校验位保护表的一例的图。
图14是表示第3实施方式的编码运算的概念的图。
图15是表示第3实施方式的译码运算的概念和用户数据及校验位的存储例的图。
图16是表示根据1个用户数据和多个校验位来计算外部校验位时的用户数据及校验位的存储例的图。
图17是表示用户数据和校验位的存储形式的例子的图(在校验位专用页存储校验位的例)。
图18是表示用户数据和校验位的存储形式的例子的图(在校验位专用页存储校验位,校验位量因页而异的例)。
图19是表示用户数据和校验位的存储形式的例的图(在校验位专用页存储校验位,在其他页也存储校验位的例)。
图20是表示具备第4实施方式涉及的纠错装置的通信装置的构成例的框图。
图21是表示第5实施方式涉及的半导体存储装置中的译码部的构成例的框图。
图22是表示第5实施方式的译码处理顺序的一例的流程图。
图23是表示伴随式计算部的构成例的图。
图24是表示第1阶的纠错处理中的电路使用状态的图。
图25是表示第5实施方式的伴随式计算的处理顺序的一例的流程图。
图26是表示也进行采用外部校验位的译码时的译码部的构成例的图。
图27是表示第6实施方式涉及的半导体存储装置中的伴随式计算部的伴随式Si计算电路的构成例的框图。
图28是表示第6实施方式的数据格式的一例的图。
图29是表示以d1位的零填充位置作为校验位#1的最后部分时的数据格式的一例的图。
图30是表示采用3阶纠错方式时的数据格式的一例的图。
图31是表示用于生成与译码时的P位并行处理相对应的校验位#n的编码部的构成例的示图。
具体实施方式
下面参照附图,详细地说明实施方式涉及的存储器控制器、存储装置及纠错方法。另外,本发明不受这些实施方式限定。
(第1实施方式)
图1是第1实施方式的存储器系统的构成例的框图。本实施方式的半导体存储装置(存储装置)1具备存储器控制器2和半导体存储器部(非易失性存储器)3。存储装置1可与主机4连接,图1表示了与主机4连接的状态。主机4是例如个人电脑、便携终端等电子设备。
半导体存储器部3是非易失性地存储数据的非易失性存储器,例如是NAND存储器。另外,这里,说明了采用半导体存储器部3作为NAND存储器的例子,但是,作为半导体存储器部3也可以采用NAND存储器以外的存储装置。NAND存储器中,存在一般被称为页的写入单位(最小写入),以页为单位进行写入。
存储器控制器2按照来自主机4的写入指令(请求)对向半导体存储器部3的写入进行控制,并按照来自主机4的读出指令(请求)对从NAND存储器3的读出进行控制。存储器控制器2具备HostI/F21、存储器I/F22、控制部23和编码/译码部24。编码/译码部24具备编码部25和译码部26。HostI/F21、存储器I/F22、控制部23、编码部25及译码部26通过内部总线20连接。
HostI/F21实施按照与主机4之间的接口规格的处理,向内部总线20输出从主机4接收的命令、用户数据等。另外,HostI/F21向主机4发送从半导体存储器部3读出的用户数据、来自控制部23的响应等。
存储器I/F22根据控制部23的指示,对将写入数据写入半导体存储器部3的处理及从半导体存储器部3的读出处理进行控制。
控制部23是综合地对半导体存储装置1的各构成要素进行控制的控制部。控制部23在从主机4经由HostI/F21接受了命令时,进行按照该命令的控制。例如,控制部23按照来自主机4的命令向存储器I/F22指令对半导体存储器部3的用户数据及校验位的写入、从半导体存储器部3的用户数据的读出等。
编码部25根据在内部总线20上传输的数据,实施纠错码化处理并生成校验位。纠错码可以采用任意的码,例如,能够采用BCH码和/或RS(Reed-Solomon)码等。以下的说明中,说明了采用BCH码的例,但是,纠错码的种类不限于此,优选,编码后可分离为信息数据和校验位的码。
译码部26根据从半导体存储器部3读出的用户数据及校验位来实施译码处理。在用户数据无错误的情况下,将从半导体存储器部3读出的用户数据原样地向内部总线20输出,在用户数据存在错误的情况下,在用校验位进行了纠错后向内部总线20输出用户数据。
在NAND存储器中,以页为单位进行写入,但是有时存在可靠性不同(错误发生的概率不同)的页。例如,在采用多值单元作为NAND存储器的存储单元的情况下,一般,对一个存储单元所存储的各bit分配不同的页。例如,当将一个存储单元所存储的位设为3位时,对3位分别分配不同的页。在这样的情况下,有时可靠性因页而异。
在可靠性低的页中,优选,预先生成纠错能力高的校验位。为了实现纠错能力高的校验位而增大校验位的大小,但是NAND存储器的各页的大小相同。因而,为了生成与可靠性低的页相对应的纠错能力的校验位,考虑例如将可靠性低的页的校验位分割为2个,在可靠性高的页存储分割出的一个校验位的方法。但是,在该方法中,在读出可靠性低的页的用户数据时,必须还将存储分割出的校验位的其他页读出,读出速度降低。另外,即使是可靠性低的页,实际上在大部分的页中往往也是无错误或错误数比最大的假定数少的情况,能够以与可靠性高的页相对应的纠错能力来充分地应对。
本实施方式中,作为纠错码,采用可通过追加提高了纠错能力的部分的校验位阶性地进行纠错能力高的编码的码。图2是表示本实施方式的校验位的存储概念的一例的图。在图2的上侧,作为比较例示出了对可靠性低的页的用户数据#1生成纠错能力高的校验位#1并存储,对可靠性高的页的用户数据#2生成纠错能力低的校验位#2并存储的例子。如果这样根据可靠性的高低来改变纠错能力而生成校验位并将其与用户数据存储在同一页,则各个页的校验位的大小不同。
相对于此,图2的下侧所示的本实施方式中,不是在1阶生成纠错能力高的校验位#1,而是根据用户数据#1生成具有预定纠错能力的校验位#1-1作为第1阶,用用户数据#1和校验位#1-1生成校验位#1-2作为第2阶,用用户数据#1和校验位#1-1和校验位#1-2生成校验位#1-3作为第3阶,…以这样的方式阶性地生成校验位。然后,在译码时,首先用校验位#1-1进行译码,在不可纠错的情况下,读出校验位#1-2,用校验位#1-1及校验位#1-2进行译码,在不可纠错的情况下,读出校验位#1-3,…以这样的方式阶性地进行译码。如果进行这样的编码及译码,则例如图2所示,在可靠性低的(平均错误位数多)页#1中存储用户数据#1的的情况下,能够将基于用户数据#1生成的校验位#1-1在存储与该校验位相对应的用户数据#1的页中存储,在可靠性高的页#2中存储校验位#1-2。在译码时,通常首先读出用户数据#1及校验位#1-1。若这样构成,则在通过采用校验位#1-1的译码能够进行纠错的情况下,可以不读出页#1以外的页(图2的例中为页#2)。另外,图2中,为了图的简化,以2阶的校验位为例进行了说明,但是本实施方式的校验位的生成不限于2阶,如后述也可以按任意阶来生成。
另一方面,作为分多阶生成校验位的方法,也可以考虑阶性地进行独立的编码处理的方法。例如,作为第1阶对于用户数据生成具有预定纠错能力的校验位A。然后,作为第2阶,根据用户数据,通过其他编码处理生成具有比预定纠错能力高的纠错能力的校验位B,与图2同样,也可以考虑在在同一页存储用户数据和校验位A,在不同页存储校验位B。但是,该情况下,校验位B完全独立于校验位A地生成,因此,采用校验位B的译码时无法采用校验位A。另一方面,若采用追加上述的提高了纠错能力的量的校验位的码,则在采用校验位#1-2的译码时也能够采用校验位#1-1。因此,若合计的校验位大小相同,则追加提高了纠错能力的量的校验位的码与独立的多阶编码相比,具有高纠错能力,另外,若纠错能力相同,则追加提高了纠错能力的量的校验位的码的大小小亦可。
因而,本实施方式中,按n阶生成校验位,以使第i(i是2以上n以下的整数)阶的校验位的大小比以具有用第1至第i阶的全部的校验位进行纠错时同等的纠错能力的方式而单独生成的校验位的大小小。例如,上述的例中,本实施方式的第2阶校验位即校验位#1-2的大小比独立于校验位A而生成的第2阶校验位即校验位B的大小小。
以下,说明本实施方式的纠错码化处理(以下,简称编码运算)及译码运算。图3是表示本实施方式的编码运算的概念的图。如图3所示,本实施方式的编码部25作为编码运算,如下地按n阶来计算校验位。
(1)用用户数据,通过G1(x)来计算校验位#1。
(2)用用户数据+校验位#1,通过G2(x)来计算校验位#2。
(3)用用户数据+校验位#1+校验位#2,通过G3(x)来计算校验位#3。
(n)用用户数据+校验位#1+校验位#2+…+校验位#(n-1),通过Gn(x)来计算校验位#n(n是1以上的整数)。
另外,Gi(x)(i=1、2、…、n)是生成多项式,Gi(x)将后述。
图4是表示本实施方式的译码运算的概念的图。如图4所示,本实施方式的译码部26作为译码运算,如下地按n阶来实施纠错。
(1)用校验位#1来实施用户数据+校验位#1的纠错。
(2)在(1)的纠错失败的情况下,用校验位#1~校验位#2来实施用户数据+校验位#1+校验位#2的纠错。
(3)在(2)的纠错失败的情况下,用校验位#1~校验位#3来实施用户数据+校验位#1+校验位#2+校验位#3的纠错。
(n)在(n-1)的纠错失败的情况下,用校验位#1~校验位#n来实施用户数据+校验位#1+校验位#2+校验位#3+…+校验位#n的纠错。
另外,在各阶中,在纠错失败的情况下进入下一阶,在各阶纠错成功的情况不进入下一阶地结束译码运算。在第n阶的纠错处理中纠错失败的情况下,译码部26向控制部23通知纠错失败的情况。控制部23实施纠错失败时的预定顺序(例如,向主机4通知读出的用户数据存在错误等)。
另外,用校验位#1来实施用户数据+校验位#1的译码处理时,在用户数据无错误的情况下,对用户数据不实施纠错地将读出的用户数据原样地输出。另外,也可以向用户数据附加检错码,用检错码来判定用户数据的错误的有无。
在实施以上的运算时,因为与用校验位#1到校验位#i进行纠错相比,使用校验位#1到校验位#(i+1)进行纠错具有更强的纠错能力,所以在本实施方式中,例如实施以下的编码运算。
另外,以下的说明中,说明用BCH码时的编码运算方法及译码运算方法,但是不限于BCH码。
首先,进行与BCH码相关的一般性的说明。用户数据、校验位、代码字等是0或1的值的列,为了表达这些而存在各种方法,这里用多项式表达来说明。例如,用户数据10101能够通过多项式表达而表现为用户数据多项式x4+x2+1。
在编码运算时,对用户数据多项式实施采用被称为生成多项式的多项式的四则运算,计算校验位的多项式表现即校验位多项式。然后,通过组合用户数据多项式和校验位多项式,来计算代码多项式。
上述四则运算根据如下事项进行,但是省略它们的详细情况。
·伽罗瓦域GF(2)
·伽罗瓦扩展域GF(2m
·原始多项式
·最小多项式
伽罗瓦扩展域GF(2m)具有2m种类的域元素,它们表现为0、1、α、α2、α3、…、αM-1、αM(M=2m-2)。
将作为对用生成多项式计算的代码多项式添加了错误的结果(随着时间的经过而接受各种压力的结果)而获得的多项式作为接收多项式时,为了可根据接收多项式来计算错误多项式,用错误多项式来计算代码多项式,必须适当地选择生成多项式。
具体地说,为了可计算t位的错误,将r设为任意的整数,生成多项式=0持有αr、αr+1、αr+2、…、α2t+r-2、α2t+r-1这2t个根即可(BCH界限)。
接着,根据以上进行的BCH码的说明,说明本实施方式中的生成多项式的选择方法。图3所示的n阶的纠错编码中,用G1(x)、G2(x)、…、Gn(x)这n个生成多项式来进行编码。另外,以下,带附注的文字(r1、bb1等)用在上标(指数的肩)和/或附注文字(下标)中的情况下,记载为非上标或下标的表记(r1、bb1等),但是两者表示相同的东西。
此时,选择n个生成多项式G1(x)、G2(x)、…、Gn(x),以满足
(1)r1设为整数,G1(x)=0持有αr1、αr1+1、αr1+2、…、α2t1+r1-2α2t1+r1-1这2t1(=2×t1)个根,
(2)r2设为整数,G1(x)*G2(x)=0持有αr2、αr2+1、αr2+2、…、α2t2+r2-2、α2t2+r2-1这2t2个根,
(n)rn设为整数,G1(x)*G2(x)…*Gn(x)=0持有αrn、αrn+1、αrn+2、…、α2tn+rn-2、α2tn+rn-1这2tn个根…这样的n种条件的方式。另外,r1、r2、…、rn满足以下的关系:
·r2≤r1、r1+2t1-1≤r2+2t2-1
·r3≤r2、r2+2t2-1≤r3+2t3-1
·rn≤rn-1、rn-1+2tn-1-1≤rn+2tn-1
从而,tn>tn-1>…>t2>t1
如果进行上述的生成多项式选择,则在设为t0=0、bi=ti-ti-1(1≤i≤n)时,通过Gi(x)计算的校验位#i持有bi位的纠正能力。
另外,如果进行上述的生成多项式选择,则若用校验位#1到校验位#i来纠正用户数据内的错误、则在用户数据+校验位#1+校验位#2+…+校验位#i内存在到ti位为止的错误的情况下,用户数据能够获得本来应该取的值。
从而,如果进行上述的生成多项式选择,则若用校验位#1到校验位#n,来纠正用户数据内的错误、则在用户数据+校验位#1+校验位#2+…+校验位#n内存在到tn位为止的错误的情况下,用户数据能够获得本来应该取的值。
作为为了满足上述的n-1种条件而选择的生成多项式的一例,说明r1=r2=…=rn=1的例。将以αi作为根的GF(2)上的最小多项式置为Mi(x)。对于满足0<bb1<bb2<bb3<…<bbn的任意的整数bb1、bb2、bb3、…、bbn,如以下的式(1)那样设置GGi(x)。
GGi(x)=M1(x)*M3(x)*M5(x)*
…*M2bbi-1(x)(1≤i≤n)…(1)
此时,以GGi(x)为生成多项式的BCH码可进行bb i位为止的纠错。
如果按以下的式(2)那样置Gi(x),则
G0(x)=1,
Gi(x)=GGi(x)/GGi-1(x)
=M2bb(i-1)+1(x)*M2bb(i-1)+3(x)*
…*M2bbi-1(1≤i≤n)…(2)
另外,设为bb(i-1)=bbi-1。
式(2)表示的生成多项式成为为了满足上述的n-1种条件而选择的生成多项式的一例,与上述的n-1种的条件中bi=bb i-bbi-1、t i=bb i的例相当。
图5是本实施方式的编码运算顺序的一例的流程图。图5的顺序示出了选择通过上述说明了的生成多项式来进行n阶的编码时的编码运算顺序。首先,设为i=1,将代码字#0作为用户数据(代码字#0=用户数据)(步骤S1)。接着,将代码字#i作为代码字#(i-1)×xK(K是生成多项式Gi(x)的次数)(代码字#i=代码字#(i-1)×xK)(步骤S2)。求出校验位#i作为基于代码字#i的生成多项式G i(x)的留数(步骤S3)。
然后,向代码字#i添加校验位#i以更新代码字#i(代码字#i=代码字#i+校验位#i)(步骤S4)。然后,设为i=i+1(步骤S5),判断是否是n<i(步骤S6)。在n<i的情况下(步骤S6是),处理结束,在不是n<i的情况下(步骤S6否),返回步骤S2。
图6是表示本实施方式的译码运算顺序的一例的流程图。图6的顺序示出了进行了图5说明的编码运算后的代码字在半导体存储器部3中存储后,在被读出时的译码部26中的译码顺序。首先,设为i=1,接收用户数据和校验位#1(步骤S12)。具体地说,根据控制部23的指示,经由内部总线20接收存储器I/F22从半导体存储器部3读出的用户数据和该用户数据对应的校验位#1。
利用用户数据和校验位#1基于到校验位#i为止的校验位,尝试纠错(步骤S13)。然后,判断纠错是否成功(步骤S14),在纠错成功的情况下(步骤S14是),处理结束。
在纠错不成功的情况下(步骤S14否),设为i=i+1(步骤S15),判断是否是n<i(步骤S16)。在n<i的情况下(步骤S16是),处理结束。在不是n<i的情况下(步骤S16否),接收校验位#i(步骤S17),返回步骤S13。校验位#i的接收具体为,译码部26向控制部23通知纠错失败,控制部23根据该通知对存储器I/F22指示校验位#i的读出。然后,经由内部总线20接收由存储器I/F22从半导体存储器部3读出的校验位#i。
接着,说明用户数据和校验位向半导体存储器部3的存储方法的例。图7~图8是表示用户数据和校验位向半导体存储器部3的存储形式的例子的图。
在图7的例中,示出了全部的用户数据的大小相同(用户数据#1、用户数据#2、…、用户数据#U的大小相同)的例子,对于全部的用户数据生成同一大小的校验位并在半导体存储器部3中存储。该例中,对于用户数据#i(i=1、2、…、U),生成并存储与上述的第1阶的校验位#1相当的校验位#i-1、与上述的第2阶的校验位#2相当的校验位#i-2、与上述的第3阶的校验位#3相当的校验位#i-3、…、与上述的第n阶的校验位#2相当的校验位#i-n。例如,在半导体存储器部3是NAND存储器的情况下,也可以将图7的一行作为1个页。
另外,在图7中,全部的用户数据的大小设为相同的,但是,即使用户数据中的一部分或全部的大小不同,也能够同样地对于用户数据#i生成并存储校验位#i-1~#i-n。
另外,在图7的例中,对于1≤i≤U的全部的i,将校验位#i-1的大小设为相同的,校验位#i-2的大小设为相同的,校验位#i-3的大小设为相同的,…,校验位#i-n的大小设为相同的,但是这些校验位中的一部分或全部的大小也可以不同。
另外,在图7的例中,全部的用户数据的校验位的数(n)是相同的,但是关于用户数据中的一部分或全部,校验位的数也可以不同。
另外,在图7的例中,校验位#i-1、校验位#i-2、校验位#i-3、…、校验位#i-n存储在连续的区域内,但是这些校验位中的一部分或全部也可以在非连续区域存储。
在图8的例中,示出了在用户数据#2和用户数据#1及用户数据#3中,校验位的数(n)不同,另外,校验位#i-1、校验位#i-2、校验位#i-3、…、校验位#i-n在非连续区域中存储的例。在用户数据#2中设为n=3,在用户数据#1及用户数据#3中设为n=1。然后,在与用户数据#2连续的区域存储校验位#2-1,校验位#2-2存储在与用户数据#1连续的区域,校验位#2-3存储在与用户数据#3连续的区域。与各用户数据相对应的校验位的数、各校验位的配置位置不限于图8的例。例如,在半导体存储器部3是NAND存储器的情况下,也可以将图8的一行作为1个页。
在图6、图7、图8的例中,示出了半导体存储器部3是一个存储装置的例子,而图9示出了半导体存储器3包括存储器部3-1~3-(n+1)的多个存储装置的例子。存储器部3-1~3-(n+1)例如既可以是不同的存储器芯片,也可以是不同形式(例如,NAND存储器和磁存储装置等)的存储装置。在图9的例中,在存储器部3-1中存储用户数据#1~#U,在存储器部3-2中存储校验位#i-1,在存储器部3-3中存储校验位#i-2,在存储器部3-4中存储校验位#i-3,…,在存储器部3-(n+1)中存储校验位#i-n。图9示出了向各存储器部分散地存储用户数据及各校验位时的一例,具体的分散方法不限于图9的例。另外,在图9的例中,示出了在半导体存储器部3内的不同存储装置分散地存储用户数据及各校验位的例,但是,也可以在半导体存储器部3外的其他存储装置存储用户数据及各校验位的一部分。
以上,在本实施方式中,按多阶生成校验位。在译码时,在编码运算中生成编码,该编码通过将第1阶和第2阶的校验位用在第2阶的纠错中,将第1阶、第2阶及第3阶的校验位用在第3阶的纠错中这样地,将其他阶的校验位用在译码中,能够提高纠错能力。因而,能够不降低平均的读出速度地根据错误的规模而使在纠错中使用的校验位数自适应地变化,另外,与独立地生成多阶的校验位的情况相比,如果校验位量相同则能够提高纠错能力。
(第2实施方式)
图10是表示第2实施方式涉及的存储器系统的构成例的框图。本实施方式的半导体存储装置1a具备存储器控制器2a和半导体存储器部3。半导体存储器部3与第1实施方式的半导体存储器部3相同。存储装置1a与第1实施方式的存储装置1同样地可与主机4连接。对具有与第1实施方式同样的功能的构成要素,标注与第1实施方式相同的附图标记,省略重复的说明。
存储器控制器2a除了将编码/译码部24替换为编码/译码部24a以外,与第1实施方式的存储器控制器2相同。编码/译码部24a包括编码部25a和译码部26a。本实施方式的工作除了向半导体存储器部3写入时的编码运算及从半导体存储器部3读出时的译码运算外,与第1实施方式相同。
说明本实施方式的编码部25a中的编码运算。图11是示出本实施方式的编码运算的概念的图。图11所示的G1(x)~Gn(x)与第1实施方式所述生成多项式G1(x)~Gn(x)相同。
如图11所示,本实施方式的编码部25a作为编码运算,如下按n阶来计算校验位。
(1)用用户数据,通过G1(x)计算校验位#1,计算校验位#1的校验位即外部校验位#1。
(2)用用户数据,通过G2(x)计算校验位#2,计算校验位#2的校验位即外部校验位#2。
(3)用用户数据,通过G3(x)计算校验位#3,计算校验位#3的校验位即外部校验位#3。
(n)用用户数据,通过Gn(x)计算校验位#n(n是1以上的整数),计算校验位#n的校验位即外部校验位#n。
接着,说明本实施方式的译码部26a中的译码运算。本实施方式的译码部26a作为译码运算,如下按n阶来实施纠错。
(1)用外部校验位#1进行校验位#1的纠错。在校验位#1的纠错成功的情况下,用纠错后的校验位#1(无错误时为原来的校验位#1)和用户数据,来实施用户数据的纠错。
(2)在(1)中进行的用户数据的纠错失败的情况下,用外部校验位#2进行校验位#2的纠错。在校验位#2的纠错成功的情况下,用纠错后的校验位#1和纠错后的校验位#2和用户数据,来实施用户数据的纠错。
(3)在(2)中进行的用户数据的纠错失败的情况下,用外部校验位#3进行校验位#3的纠错。在校验位#3的纠错成功的情况下,用纠错后的校验位#1和纠错后的校验位#2和纠错后的校验位#3和用户数据,来实施用户数据的纠错。
(n)在(n-1)中进行的用户数据的纠错失败的情况下,用外部校验位#n进行校验位#n的纠错。在校验位#n的纠错成功的情况下,用纠错后的校验位#1和纠错后的校验位#2和纠错后的校验位#3和…纠错后的校验位#n和用户数据,来实施用户数据的纠错。
另外,在采用外部校验位#i(i=1、2、…、n)的校验位#i的纠错失败的情况下,由于无法进行用户数据的纠错,因此,译码部26a向控制部23通知该用户数据的纠错失败。
另外,对用户数据、校验位#i、外部校验位#i向半导体存储器部3的存储方法没有限制,既可以将用户数据、校验位#i、外部校验位#i存储在连续的区域中,也可以分散地存储。另外,也可以如在第1实施方式中所述那样,在多个存储装置中分散地存储。例如,在半导体存储器部3为NAND存储器的情况下,也可以将校验位#1~#n和用户数据存储在同一页内,将外部校验位#1~#n存储在半导体存储器部3外的其他存储装置。另外,也可以将校验位#1与用户数据存储在同一的页内,将校验位#2~#n和外部校验位#1~#n存储在不同页。
以上,本实施方式中,根据用户数据采用与第1实施方式同样的生成多项式,生成各阶的校验位,生成各阶的校验位的校验位即外部校验位。因而,在进行用户数据的纠错的运算中,能够设为在校验位不含错误地进行运算,与第1实施方式相比能够使运算高速化。
(第3实施方式)
图12是表示第3实施方式的存储器系统的构成例的框图。本实施方式的半导体存储装置1b具备存储器控制器2b和半导体存储器部3。半导体存储器部3与第1实施方式的半导体存储器部3相同。存储装置1b与第1实施方式的存储装置1同样,可与主机4连接。对具有与第1实施方式同样的功能的构成要素标注与第1实施方式相同的附图标记,省略重复的说明。
存储器控制器2b除了将编码/译码部24替换为编码/译码部24b以外,与第1实施方式的存储器控制器2相同。编码/译码部24b包括编码部25b和译码部26b和校验位保护表存储部27。本实施方式的工作除了向半导体存储器部3写入时的编码运算及从半导体存储器部3读出时的译码运算,与第1实施方式相同。
在第1实施方式中,在第n阶的纠错手续的主要部分中,校验位#1、校验位#2、…、校验位#n的纠错对象是用户数据+校验位#1+校验位#2+…+校验位#n,全部的校验位为纠错的对象。即,在校验位#1、校验位#2、…、校验位#n中可能包含错误的前提下进行纠错。
相对于此,在第2实施方式中,校验位#1、校验位#2、…、校验位#n的纠错对象仅仅是用户数据,校验位#1、校验位#2、…、校验位#n自身不是校验位#1、校验位#2、…、校验位#n的纠错对象。校验位#1、校验位#2、…、校验位#n是不同于校验位#1、校验位#2、…、校验位#n的其他校验位即外部校验位#1、外部校验位#2、…、外部校验位#n的纠错对象。
即,在校验位#i(1≤i≤n)有错误的情况下,在第1实施方式中,使用校验位#i自身和校验位j(i<j)来纠正校验位#i,在第2实施方式中,使用外部校验位#i来纠正校验位#i。
本实施方式中,能够按校验位#i来设定校验位#i的错误适用第1实施方式的方法来纠正还是用第2实施方式的方法来纠正,作为校验位保护表保持表示校验位#i的错误用哪个校验位来纠错的校验位保护信息。然后,在进行编码运算、译码运算时,按照校验位保护表来实施运算。通过可任意地设定校验位保护表,能够任意设定用哪个校验位对校验位#i的错误进行纠错。校验位保护表在校验位保护表存储部27中存储。
图13是表示校验位保护表的一例的图。图13的表的纵向表示成为纠错对象的校验位,横向表示可在设为纠错对象时使用的校验位。图13的表中,圆圈标记表示可在纠错中使用,叉号标记表示不能用校验位。另外,图13的表中,以校验位#i作为纠错对象时的校验位#1~#i不会通过设定而变更,所以表示为“-”。例如,第1行的校验位#1可以采用自然用的校验位#1和成为圆圈标记的校验位#2、校验位#3、…、校验位#n来进行纠错。校验位#2可以采用自然用的的校验位#2和外部校验位来进行纠错。校验位#3可以采用自然用的的校验位#3和外部校验位来进行纠错。另外,图13是一例,校验位保护表的具体的内容不限于该例。
图14是表示本实施方式的编码运算的概念的图。图14示出与图13所示的校验位保护表相对应的编码运算的例。
在图14的例中,编码部25b作为编码运算,如下按n阶来计算校验位。
(1)用用户数据,通过G1(x)计算校验位#1。
(2)用用户数据和校验位#1,通过G2(x)计算校验位#2,计算校验位#2的校验位即外部校验位#2。
(3)用用户数据和校验位#1,通过G3(x)计算校验位#3,计算校验位#3的校验位即外部校验位#3。
(n)用用户数据和校验位#1,通过Gn(x)计算校验位#n(n是1以上的整数),计算校验位#n的校验位即外部校验位#n。
编码部25b根据校验位保护表来选择校验位的生成方法,生成相对应的校验位。例如,在图13的例的情况下,对于校验位#1,不采用外部校验位,因此与第1实施方式同样地根据用户数据来生成校验位#1,不生成对于校验位#1的外部校验位。另一方面,对于校验位#2,采用外部校验位,因此,根据用户数据来生成校验位#2,进一步生成对于校验位#2的外部校验位。
另外,在从校验位#1到校验位#(i-1)的全部由外部校验位保护的情况下,仅根据用户数据来生成校验位#i即可,但是,在从校验位#1到校验位#(i-1)中存在不由外部校验位保护的校验位的情况下,用不由用户数据+外部校验位保护的全部校验位来生成校验位#i。
译码部26b根据校验位保护表来选择校验位的译码方法,实施相对应的纠错处理。例如,在图13的例的情况下,在采用了校验位#1的第1阶的纠错处理中,没有生成外部校验位,因此,与第1实施方式同样地根据校验位#1和用户数据,来进行用户数据的纠错。另一方面,对于校验位#2,由于生成外部校验位,因此在用校验位#2的外部校验位进行了校验位#2的纠错后,根据校验位#1、校验位#2及用户数据来实施用户数据的纠错。
图15是表示本实施方式的译码运算的概念和用户数据及校验位的存储例的示图。图15作为对半导体存储器部3的存储例示出了对于用户数据#1、用户数据#2、用户数据#3,向用户数据#2分配比用户数据#1、#3多的校验位的例。对于图15的用户数据#2实施3阶的编码运算,对于用户数据#1、用户数据#3实施1阶的编码。这里,将半导体存储器部3设为NAND存储器,用户数据#1、用户数据#2、用户数据#3分别存储在不同页。
具体地说,对于用户数据#2,生成校验位#2-1(没有对于校验位#2-1的外部校验位)作为第1阶校验位,生成校验位#2-2并生成校验位#2-2的外部校验位(图15的校验位#1-1与外部校验位相当)作为第2阶校验位,生成校验位#2-3并生成校验位#2-3的外部校验位(图15的校验位#3-1与外部校验位相当)作为第3阶校验位。另外,对于用户数据#1,将用户数据#1和校验位#2-2视为与通常的用户数据同样,生成校验位#1-1。同样地,对于用户数据#3,将用户数据#3和校验位#2-3视为与通常的用户数据同样,生成校验位#3-1。这样,校验位#1-1是用户数据#1的校验位,也是校验位#2-2的外部校验位。另外,校验位#3-1是用户数据#3的校验位,也是校验位#2-3的外部校验位。
在图15的例中,在其他页存储进行多阶的编码的用户数据#2的外部校验位,作为其他页的校验位(校验位#1-1,#3-1)的纠错对象,不仅包含用户数据,还包含在该页存储的用户数据#2的校验位,但是外部校验位的生成方法不限于该方法。也可以与其他页(用户数据#1、用户数据#3)的用户数据的校验位相独立地生成用户页#2的校验位的外部校验位,在半导体存储器3上或其他存储装置存储。
说明图15的例的用户数据#2的译码运算的顺序。
(1)用用户数据#2及校验位#2-1来实施用户数据的纠错。
(2)在(1)中进行用户数据的纠错失败的情况下,用外部校验位即校验位#1-1和用户数据#1和校验位#2-2,进行校验位#2-2的纠错。在校验位#2-2的纠错成功的情况下,用校验位#2-1和纠错后的校验位#2-2和用户数据#2,实施用户数据#2的纠错。
(3)在(2)中进行用户数据的纠错失败的情况下,用外部校验位即校验位#3-1和用户数据#3和校验位#2-3,进行校验位#2-3的纠错。在校验位#2-3的纠错成功的情况下,用校验位#2-1和纠错后的校验位#2-2和纠错后的校验位#2-3和用户数据#2,实施用户数据#2的纠错。
图16是表示根据1个用户数据和多个校验位来计算外部校验位时的用户数据及校验位的存储例的图。在图16的例中,对于用户数据#2、#3进行2阶的校验位生成,对于用户数据#1进行1阶的校验位生成。对于用户数据#2、#3,分别根据生成多项式G1(x)生成校验位#2-1、#3-1作为第1阶的校验位,根据生成多项式G2(x)生成校验位#2-2、#3-2作为第2阶的校验位。然后,对用户数据#1、校验位#2-2及#3-2,用生成多项式G3(x)生成校验位#1-1。校验位#1-1成为校验位#2-2及#3-2的外部校验位。
图17~图19表示以半导体存储器部3为NAND存储器时的本实施方式的用户数据及各校验位的存储方法的例。这里,设为在一个存储单元存储3bit的数据,对该3bit分别分配不同页,在1个字线(word line)存储的页分别称为低(L)页、中(M)页、上(U)页,但是构成半导体存储器部3的NAND存储器不限于这样的类型的存储器。图17~图18中,在校验位专用页以外,分别用不同阴影表示低页、中页、上页。例如,图17~图19中,第1行设为低页,第2行设为中页,第3行设为上页,第4行设为低页,…。对于校验位专用页,将低页用的校验位、中用页的校验位、上页用的校验位分别用与低页、中页、上页同一的阴影表示。校验位专用页是低页、中页、上页之一即可,但是图17~图19中,校验位专用页表示了中页(从下算第2段)和上页(最下段)的例。
在图17~图18的例中,在(不存储用户数据)校验位专用页存储校验位的一部分。在图17的例中,向低页、中页、上页的全部分配同一大小的校验位。然后,将在第1阶生成的校验位(122B)与各自对应的用户数据(512B×2)存储在同一的页,将在第2阶的校验位(7B)存储在从下开始的2行所示的2个页的校验位专用页。另外,最下级的校验位专用页中,对第2阶的校验位进行与用户数据同等的处理,生成外部校验位(129B),在各页(校验位专用页)内存储。
在图17的例中,对于低页、中页、上页的全部,用分别在各页内存储的第1阶的校验位(122B)可纠正至69位为止,而且,若用校验位专用页存储的第2阶的校验位(7B),可纠正至73位为止。
另外,图18的例中,在低页、中页、上页的全部,对于第1阶的校验位,分配同一大小的校验位。然后,将在第1阶生成的校验位(122B)与各自对应的用户数据(512B×2)存储在同一的页。对于中页生成第2阶的校验位(23B),存储在从下开始的2行所示的2个页的校验位专用页。另外,最下级的校验位专用页中,对第2阶的校验位进行与用户数据同等的处理,生成外部校验位(145B),在各页(校验位专用页)内存储。
图18的例中,对于低页、中页、上页的全部,用分别在各页内存储的第1阶的校验位(122B)可纠正至69位为止,而且,若采用校验位专用页存储的第2阶的校验位(23B),则可对中页纠正至82位为止。
另外,图19的例中,中页的第1阶的校验位的大小比低页及上页的第1阶的校验位的大小大。中页的第1阶的校验位是可纠正到69位为止的122B,低页及上页的第1阶的校验位是可纠正到67位为止的118B。另外,对中页生成第2阶的校验位(23B),存储在从下开始的2行所示的2页的校验位专用页。而且,对中页生成第3阶及第4阶的校验位(各4B),在低页及上页存储。另外,最下级的校验位专用页中,对第2阶的校验位进行与用户数据同等的处理,生成外部校验位(153B),在各页(校验位专用页)内存储。
图19的例中,对于低页及上页,可纠正到为止67位,对于中页,若采用与用户数据同一页内的第1阶的校验位,则可纠正到69位为止,若采用校验位专用页的第2阶的校验位,则可纠正到82位为止,若采用到第4阶为止的全部的校验位,则可纠正到87位为止。
如图18、图19的例,若预先按页改变校验位的大小,则例如在可靠性低的页能够分配大的校验位。另外,在实际的错误数少的情况下,仅进行页内的校验位的读出即可。而且,如上所述,进行通过追加各阶的校验位来纠错的编码,所以与独立地生成多阶校验位的情况比,若校验位量同一,则能够提高纠错能力。
另外,图18、图19的例中,向3页中的1页分配大小大的校验位,向其余的2页分配同一大小的校验位,但是也可以向3页全部分配不同大小的校验位。
以上,本实施方式中,通过用校验位保护表可设定保护校验位#i的校验位,能够组合实施第1实施方式的编码运算及译码运算和第2实施方式的编码运算及译码运算。因而,能够根据对假定的错误数和/或运算速度的要求等,进行适当的编码运算及译码运算。
(第4实施方式)
图20是具备第4实施方式涉及的纠错装置的通信装置的构成例的框图。图20中,表示了与纠错处理相关的构成要素,省略了例如通信装置为无线通信装置时的天线等通信装置通常具备的功能的图示。
通信装置30-1、30-2分别具有发送功能及接收功能,从通信装置30-1发送的用户数据由通信装置30-2接收,从通信装置30-2发送的用户数据由通信装置30-1接收。通信装置30-1与通信装置30-2间的通信路径中,可能发生错误。
对这样的通信路径中的错误的纠错,也能够采用第1实施方式所述的多阶的编码。
通信装置30-1、30-2具有同样的构成。如图20所示,通信装置30-1、30-2具备编码部40和译码部50。编码部40具备用户数据生成部41、编码运算部42、编码存储部43、发送部44及编码发送请求接收部45。译码部50具备接收部51、译码运算部52及编码发送请求发送部53。编码部40及译码部50构成本实施方式的纠错装置。
首先,说明用户数据的发送工作。例如,在从通信装置30-1向通信装置30-2发送用户数据的情况下,通信装置30-1的用户数据生成部41生成用户数据,输入编码运算部42。编码运算部42通过与第1实施方式(或第2实施方式、第3实施方式之一也可)同样的多阶的编码运算,生成校验位,向编码存储部43存储校验位。例如,存储校验位#1~校验位#n。发送部44向通信装置30-2发送用户数据和预定阶为止的校验位(例如,校验位#1)。另外,在进行第3实施方式的编码的情况下,通信装置30-1及通信装置30-2保持校验位保护表。
通信装置30-2中,接收部51接收用户数据及校验位(例如,校验位#1),输入译码运算部52。译码运算部52实施与第1实施方式(或第2实施方式、第3实施方式之一也可)同样接收的校验位相应的处理。例如,在实施第1实施方式的编码运算、接收了校验位#1的情况下,根据校验位#1和用户数据,进行用户数据的纠错。译码运算部52在该纠错成功的情况下,结束该用户数据的接收处理。另一方面,在该纠错失败的情况下,译码运算部52向编码发送请求发送部53通知纠错失败。编码发送请求发送部53接受该通知后,向通信装置30-1发送对该用户数据的下一阶的校验位(例如,校验位#2)的发送请求。另外,译码运算部52在纠错失败的情况下,保持已经接收的校验位和用户数据。
通信装置30-1的编码发送请求接收部,如果接收来自通信装置30-2的发送请求,则进行控制以从编码存储部43向发送部44输出对应的校验位,发送部44将输入的校验位向通信装置30-1发送。通信装置30-1的接收部51将该校验位转发到译码运算部52,译码运算部52用保持的校验位和用户数据和新接收的校验位,来实施译码运算。以下,在译码运算中纠错失败的情况下,同样地请求下一阶的校验位的发送,在接收了该校验位的情况下,用接收的校验位和保持的校验位及用户数据来反复进行译码运算。
例如,首先,通信装置30-1将用户数据和第1实施方式的校验位#1一起发送,在接收了校验位的发送请求的情况下(即,基于校验位#1的纠错失败的情况下),发送校验位#2,而且,在接收了校验位的发送请求的情况下(即,基于校验位#2为止的纠错失败的情况下),发送校验位#2,…以这样的方式可阶性地发送校验位。从而,可以根据错误的规模,使在纠错中用的校验位数自适应地变化,在防止校验位导致的通信波段的浪费的同时,在错误数多时也可以实施纠错。
另外,这里,通信装置30-1、30-2生成用户数据,但是,通信装置30-1、30-2也可以与用户终端等连接,从用户终端等接收用户数据,对接收的用户数据进行编码运算。
(第5实施方式)
图21是表示第5实施方式的半导体存储装置中的译码部的构成例的框图。本实施方式中,说明用于实现第3实施方式所述多阶纠错方式的译码部26b的构成和工作的一例。
如图21所示,本实施方式的译码部26b具备伴随式计算部261、错误位置多项式运算部262、链接检索部263及译码控制部264。
图22是表示本实施方式的译码处理顺序的一例流程图。用图21、22,说明本实施方式的译码处理的全体工作。控制部23如果经由HostI/F21从主机4接受数据的读出请求,则指示存储器I/F22读出读出对象的数据,存储器I/F22将读出对象的数据与对应的校验位一起读出,转发到译码部26。译码部26中,如多从存储器I/F22接受读出对象的数据及校验位,则开始译码处理。
本实施方式中,与第3实施方式同样,通过多阶纠错方式实施编码运算。以下的说明中,对在编码运算中生成2阶的校验位、并对第2阶的校验位生成外部校验位的例进行说明,但是多阶纠错方式的阶数和/或外部校验位的赋予方法不限于此,也可以不采用外部校验位。即使在采用不采用外部校验位的多阶纠错方式的情况下,本实施方式的译码处理也可适用,该情况下,例如,假定各阶的校验位无错误地实施译码处理。
图22的顺序表示多阶的译码运算中的1阶的处理。如第1实施方式~第3实施方式所述,通过采用第1阶的校验位的图22所示顺序,实施译码处理,在纠错失败的情况下,实施采用第2阶的校验位的译码处理。此时,在向第2阶的校验位赋予了外部校验位的情况下,采用外部校验位的译码处理以与图22同样的顺序实施,用译码后(纠错后)的第2阶的校验位实施第2阶的译码处理。
首先,译码控制部264如果开始译码处理,则对伴随式计算部261指示伴随式计算的实施,伴随式计算部261实施伴随式计算(步骤S21)。然后,译码控制部264指示错误位置多项式运算部262用已计算的伴随式计算结果进行错误多项式运算,错误位置多项式运算部262实施错误位置多项式运算(步骤S22)。
接着,译码控制部264指示链接检索部263用错误位置多项式运算的结果进行链接检索,链接检索部263用错误位置多项式运算的结果即错误位置多项式的系数来实施链接检索(步骤S23),确定错误位置,结束处理。译码控制部264通过使由链接检索判定为有错误的位反相,实施纠错。
采用第1阶的校验位的译码处理中,向伴随式计算部261输入的是用户数据(读出数据)和第1阶的校验位。在判定为在采用第1阶的校验位的译码处理中不可纠错的情况下,本实施方式中,向第2阶的校验位赋予外部校验位,因此进行采用外部校验位和第2阶的校验位的译码处理。然后,向伴随式计算部261输入用户数据和第1阶的校验位和纠错后的第2阶的校验位,实施第2阶的译码处理。另外,对于采用外部校验位和第2阶的校验位的译码处理,可以用图21所示的伴随式计算部261、错误位置多项式运算部262、链接检索部263及译码控制部264实施,也可以设置与这些独立的译码处理运算的电路,通过该电路实施。
以下,本实施方式中,根据第1实施方式所述生成多项式G1(x)生成校验位#1作为第1阶的校验位,根据生成多项式G2(x)生成校验位#2作为第2阶的校验位,生成校验位#2的外部校验位。
校验位#1设为具有t1的纠错能力(可进行t1位的纠错),采用校验位#1和校验位#2的两方时的纠错能力设为t2(可进行t2位的纠错)。此时,也可以构成为分别具备与t1的纠错能力对应的译码处理电路和与t2的纠错能力对应的译码处理电路,按阶分开使用,但是如过分别具备则使硬件规模增大,因此优选共用译码处理电路。本实施方式中,说明各阶的译码处理由单一的译码处理电路实施时的构成及工作。
首先,说明本实施方式的伴随式计算部261。一般地,伴随式计算部261具备可纠错位数个包含用于进行αi倍的乘法的乘法器的最小单位的计算电路(包含αi倍的乘法器、XOR电路、寄存器等)。αi的上标i与G1(x)×G2(x)的根(α设为伽罗瓦扩展域GF(2m)的原始域元素时的根α1、α2、α3、α4、α5、α6、…、α2t2-1)的指数部相对应。这里,该最小单位的计算电路(算出伴随式Si的电路)称为伴随式Si计算电路。为了在第1阶的纠错处理(译码处理)和第2阶的纠错处理共用电路,至少具备与i=1、3、5、…、2t2-1分别对应的合计t2个伴随式Si计算电路。
图23是伴随式计算部261的构成例的示图。图23中,作为一例,表示了校验位#1、校验位#2分别具有2位的纠正能力的例,但是校验位#1、校验位#2的纠正能力都不限于此。这里,构成为,因为共有可实施采用第2阶的校验位#1及校验位#2的纠错处理的译码电路,而具备纠正能力高的第2阶的纠错能力t2(图23的例中t2=2)个电路。
伴随式Si计算电路具备:乘以αi的m位的伽罗瓦扩展域乘法电路62-j(j=(i+1)/2);保持伴随式Si的计算中途结果的m位的寄存器(FF(FlipFlop))64-j;和m位的XOR电路62-j。以上与一般的伴随式计算电路同样。本实施方式中,αi为G1(x)的根的伴随式Si计算电路构成组#1,αi为G2(x)的根的伴随式Si计算电路构成组#2。本实施方式中,对于属于组#1的伴随式Si计算电路,具备将用于伴随式的寄存器更新的值切换为输入数据(IDATA)或者0的选择电路(选择电路)61-j,在组#1内至少具备一个对选择电路61-j进行控制的控制电路65。输入数据是指用户数据及校验位。图23的例中,在组#1内设置一个控制电路65,例如,也可以按每个选择电路具备控制电路。
图24是第1阶的纠错处理中的电路使用状态的示图。图24中,表示了通过图23所示的伴随式计算部261,用第1阶的校验位#1(将第1阶的校验位#1和用户数据作为输入)进行纠错时的电路使用状态。第1阶的纠错中,如图24所示,也可以采用属于组#1的伴随式Si计算电路,属于组#2的伴随式Si计算电路预先停止。第1阶的纠错中,控制电路65对选择电路61-j进行控制以使其选择输入数据(用户数据及校验位#1)。另外,图23、24中,将用户数据、校验位#1、校验位#2分别简述为Data、P1、P2。
如图24所示,第1阶的纠错中,不输入校验位#2地将校验位#1的最终位位置定义为第0个而实施通常的伴随式计算。一般,在纠错处理中,按多项式显示从高次的项开始依次向伴随式计算电路输入数据,将最终输入位作为第0个位,在链接检索处理中实施错误位置的确定。这里,设为按用户数据、校验位的顺序输入,将校验位的最终位(最后输入的位)设为第0个。第1阶的纠错处理中的伴随式计算与通常的纠错处理同样。第1阶的纠错处理中的伴随式计算以外的处理也与通常的纠错处理同样。
接着,说明本实施方式的伴随式计算处理。图25是表示本实施方式的伴随式计算的处理顺序的一例的流程图。如前所述,第2阶的纠错处理在第1阶的纠错处理失败时实施,而在实施第2阶的纠错处理时,在已向校验位#2赋予了外部校验位的情况下,校验位#2已实施完毕采用外部校验位的纠错。
首先,向组#1及组#2的伴随式Si计算电路从高次的项开始输入1位用户数据和校验位#1(步骤S31)。具体地说,图23的例中,控制电路65控制选择电路61-1、61-2以使其选择输入数据(用户数据和校验位)。从而,对选择电路61-1~61-4的全部输入输入数据的1位。
接着,控制电路65判断是否输入了校验位#1的最终位(步骤S32),在未输入的情况下(步骤S32否),返回步骤S31,输入1位下一次数的项的输入数据。是否输了入校验位#1的最终位,例如能够通过比较已输入的位数与用户数据+校验位#1的位数来判定。
在输入了校验位#1的最终位的情况下(步骤S32是),判断是否输入校验位#2(即,第2阶的纠错处理)(步骤S33)。在未输入校验位#2的情况下(步骤S33否),处理结束。
在输入校验位#2的情况下(步骤S33是),向组#1的伴随式Si计算电路输入1位的0,向组#2的伴随式Si计算电路从高次的项开始输入1位的校验位#2(步骤S34)。具体地说,图23的例中,控制电路65控制选择电路61-1、61-2以使其选择0。
接着,控制电路65判断是否输入了校验位#2的最终位(步骤S35),在未输入的情况下(步骤S35否),返回步骤S34,输入1位下一次数的校验位#2。在校验位#2的最终位输入的情况下(步骤S35是),处理结束。
通过以上那样实施伴随式计算,第2阶的纠错处理中,在校验位#2输入结束时,对于保持组#1的伴随式的寄存器64-1、64-2,存储在将“数据和校验位#1”按校验位#2的次数量上移后的(使位位置向高次侧移动后的)多项式中代入αi的结果,对于保持组#1的伴随式的寄存器64-3、64-4,存储向并排显示“数据和校验位#1和校验位#2”的多项式中代入αi后的结果。
这样,由于输入组#1的多项式和输入组#2的多项式的次数一致,可以将“数据和校验位#1和校验位#2”的校验位#2的最低次数的位置作为“数据和校验位#1和校验位#2”的第0个位处理。因而,随后,若有通常的t2重(可进行t2位为止的纠错处理)的错误位置多项式的计算电路和错误位置的计算电路(链接检索电路),则可进行第2阶的纠错处理。
另外,本实施方式中采用2阶的纠错方式,而采用n阶(n是3以上的整数)的纠错方式的情况下,可以设置组#1~组#n,分别具备与生成多项式G1(x)的根~生成多项式Gn(x)的根对应的伴随式Si计算电路。另外,也可以组#2~组#n分别具备选择电路及控制电路,在输入用户数据和与自组对应的根对应的校验位期间,选择电路选择输入数据,在输入不与和自组相对应的根相对应的校验位期间,选择电路选择0。
接着,说明错误位置多项式运算部262及链接检索部263。错误位置多项式运算部262基于根据伴随式计算部261计算的伴随式,来计算错误位置多项式。为了与多阶的纠错方式相对应,错误位置多项式运算部262具备可与t2重的错误为止相对应的构成即可。作为错误位置多项式计算的算法之一的Berlekamp-Massey算法进行与码的最大纠正位数相对应的循环次数的处理。采用该算法,在将仅以“数据和校验位#1”为输入而计算出的伴随式作为输入的第1阶的纠错处理中,若按与t1重的错误相对应的循环次数结束处理,则能够快速结束处理。
链接检索部263是根据错误位置多项式来计算错误位置的电路。对于链接检索部263,在具有可与t2重的错误为止相对应的构成的基础上,还考虑如下所示的2种控制方式。
链接检索部263中,通过依次计算向由错误位置多项式运算部262求出的错误位置多项式中代入错误定位符而得出的值,求出错误定位符成为错误位置多项式的根的位置。这里,将以多项式来表达数据和校验位组合成的代码字的形式称为代码多项式。代码多项式的最高次数的项与数据的开头位相对应,最低次数的项与校验位的最终位相对应。从代码多项式的最高次数的侧的错误定位符开始代入的情况和从最低次数的侧的错误定位符开始代入的情况下,控制的方法不同。
在从代码多项式的最高次数的侧的错误定位符开始代入的情况下,在含校验位#2时(第2阶的纠错处理)和不含时(第1阶的纠错处理),代码多项式的最高次数不同,因此,最初代入链接检索电路的定位符的值不同。即,必须进行根据译码对象是否包含校验位#2(是第2阶的纠错处理还是第1阶的纠错处理),切换向链接检索部263最初代入的值的处理。
在从代码多项式的最低次数的侧的错误定位符开始代入的情况下,在含校验位#2时(第2阶的纠错处理)和不含时(第1阶的纠错处理)时,表示代码多项式的最低次数的位置的错误定位符相同,因此,不必进行上述那样向链接检索部263最初代入的值的切换。
不管是从代码多项式的最高次数的侧的错误定位符开始代入,还是从最低次数的侧的错误定位符开始代入,使代入的错误定位符的位置顺序偏移的方向,在前者的情况下为次数降低的方向,在后者的情况下为次数提高的方向,仅此不同,而使代入的错误定位符的位置偏移,检查是否成为错误位置多项式的根的处理本身是相同的。
假设属于组#1的伴随式Si计算电路中没有输入数据切换的机构(选择电路61-1、61-2、控制电路65)。这样,校验位#2也输入属于组#1的伴随式Si计算电路。校验位#1的生成多项式G1(x)持有与组#1相对应的根(图23的例中,为α1、α3),而不持有生成多项式G2(x)的根。从而,如果将校验位#2输入组#1的伴随式Si计算电路,则无法排除伴随式中代码字的贡献,非常难以求出错误位置多项式(为了高效地求出错误位置多项式,伴随式必须仅仅依赖于错误图形而确定)。因此,用通常的错误位置多项式计算电路和链接检索电路无法纠错。
另外,如果在“数据和校验位#1”输入的时刻将对属于组#1的伴随式Si计算电路的输入数据中止,则在组#1和组#2中输入的多项式的次数不同,因此无法确定表示错误位置的值,无法定义错误位置。因此,错误位置多项式本身无法定义,用通常的错误位置多项式计算电路和链接检索电路无法纠错。
另外,在译码的各阶中,进行与在译码中不使用的校验位的生成中采用的生成多项式的根相对应的伴随式计算的部分,进行控制使工作停止,即使在各阶的纠错处理中共用伴随式计算部261,也可以将消耗功率抑制为与设为各阶的纠错所必要的最低限的电路构成时的相同程度。
另外,在采用保护校验位#2的外部校验位的校验位纠错处理中,可以具备与采用校验位#1、校验位#2的纠错处理不同的译码电路,也能够共用译码电路。
具体地说,将保护校验位#2的外部校验位的纠正能力设定成t2位以下,若具备用于进行t2重的纠错的电路,则对于采用外部校验位的纠错处理,也可以共用电路。特别是在外部校验位的生成多项式采用生成多项式G1(x)且代码长也与第1阶的代码字(用户数据+校验位#1)统一为相同的情况下,能够用与采用第1阶的校验位#1的用户数据的纠错处理完全相同的处理进行译码,能够使控制简单化。
图26是也进行采用外部校验位的译码时的译码部26b的构成例的示图。图26的译码器100包括图21的伴随式计算部261、错误位置多项式运算部262、链接检索部263及译码控制部264。如图26所示,与采用外部校验位的译码共用的情况下,还具备已纠正的扩展校验位暂时保存区域101及选择电路102。
选择电路102通过控制部23或译码控制部264的控制,在采用校验位#1的第1阶的纠错处理中,选择输入数据向译码器100输入。在第1阶的纠错处理失败的情况下,选择电路102通过控制部23或译码控制部264的控制,选择输入数据向译码器100输入。此时,作为输入数据,输入校验位#2和外部校验位。在进行采用外部校验位的校验位#2的纠错处理后,纠错处理后的校验位#2暂时在已纠正的扩展校验位暂时保存区域101存储。
然后,在进行对于用户数据的第2阶的纠错处理时,选择电路102通过控制部23或译码控制部264的控制,首先选择输入数据(用户数据和校验位#1),如果用户数据和校验位#1的输入结束,则选择在已纠正的扩展校验位暂时保存区域101存储的数据(已纠错的校验位#2),向译码器100输入。
以上,本实施方式中,在按2阶实施纠错编码的情况下,具有与采用校验位#1和校验位的两方时的纠正能力相对应的译码部26b,将计算与同一阶的生成多项式的根相对应的伴随式的伴随式Si计算电路作为同一组地,按每阶对伴随式Si计算电路进行分组。在第2阶的纠错处理中,在属于与第1阶相对应的组的伴随式Si计算电路中,输入0以取代校验位#2。因而,在第1阶和第2阶的纠错处理中可共用电路,且能够正确地定义错误位置。
(第6实施方式)
图27是表示第6实施方式涉及的半导体存储装置中的伴随式计算部261a的伴随式Si计算电路的构成例的框图。本实施方式的半导体存储装置的构成除了用本实施方式的伴随式计算部261a替代第5实施方式的伴随式计算部261以外,与第5实施方式的半导体存储装置相同。以下,说明不同于第5实施方式的部分。
在第1实施方式中,表示了向伴随式计算部261逐位地输入数据的例,而本实施方式中,说明在伴随式计算部261a中进行P(P是2以上的整数)位的并行处理的例。本实施方式的编码运算与第5实施方式同样地按2阶纠错方式实施。图27中表示了P=2时的组#1的伴随式Si计算电路的构成例。组#1的伴随式Si计算电路具备:选择电路71-1、71-2;XOR电路72-1、72-2;进行αi的乘法的乘法器73-1、73-2;寄存器74;和控制电路75。另外,在P为3以上的情况下,同样地各伴随式Si计算电路具备P个乘法器及XOR电路,组#1的伴随式Si计算电路具备P个选择电路和控制电路75即可。
本实施方式的伴随式计算部261a与第5实施方式同样,也具备组#2的伴随式Si计算电路,而对于组#2的伴随式Si计算电路,与传统的进行P位并行处理的伴随式Si计算电路同样。即,从图27的伴随式Si计算电路删除选择电路71-1、71-2及控制电路75而形成的,因此省略图示。
组#1的伴随式Si计算电路的选择电路71-1、71-2根据来自控制电路75的控制,选择输入数据(用户数据、校验位)和0中的一方,分别输入XOR电路72-1、72-2。具体地说,控制电路75控制选择电路71-1、71-2,以使其在用户数据和校验位#1输入的期间选择输入数据,在校验位#2输入的期间选择0。控制电路75也可以与与第5实施方式的控制电路65同样地由多个伴随式Si计算电路共用。
在进行并行处理的情况下,在1个周期向伴随式Si计算电路输入P位P位地输入数据。图27中,P=2,作为一例表示了输入数据的第0位和第1位(图27的IDATA[0]、IDATA[1])同时输入的例。除了由选择电路71-1、71-2进行的输入数据和0的切换工作以外,与通常的并行处理的工作同样。即,进行P位并行处理时的1个周期中的寄存器74的更新值REG_update在将CUR设为更新前的寄存器74的值时,可用以下的式(3)表示。
REG_update=
CUR×(αiP
+IDATA[0]×(αiP-1
+IDATA[1]×(αiP-2
+IDATA[P-2]×(αi1
+IDATA[P-1]×(αi0   …(3)
本实施方式的伴随式计算顺序,除了在图25所示的处理顺序的步骤S31及步骤S34中以P位输入替代1位输入以外,与第5实施方式的顺序同样。
以上那样在伴随式计算中进行并行处理时,在校验位#1、校验位#2的位数不是并行位数P的倍数的情况下,产生输入数据不足P位的周期。另外,用户数据设为P位的倍数(非P位的倍数时也通过附加0等数据而最终成为P位的倍数)。另一方面,对于校验位#1、校验位#2,分别是由生成多项式G1(x)、G2(x)的最大次数确定的数值,与P无关系地生成。
在包含输入数据不足P位的周期的情况下,该周期的处理不同于其他P位并行处理,必须有准备其他硬件等的对策。因而,本实施方式中,在编码运算时,为了不必实施准备其他硬件等的对策,实施使校验位#1、校验位#2的位数分别成为P的倍数的零填充(零插入处理)。
图28是表示本实施方式的数据格式的一例的图。这里,设为校验位#1的位数(成为生成多项式G1(x)的最大次数)未成为P位的整数倍。本实施方式中,在设为roundup(校验位#1的位数/P)×P-校验位#1的位数=d1时,在如图28所示位置81进行d1位的零填充。该d1位的零通过编码部25中计算校验位#1的运算,作为信息多项式的下位d1位而附加。
校验位#2也同样,在设为roundup(校验位#2的位数/P)×P-校验位#2的位数=d2时,在图28所示位置82进行d2位的零填充。另外,对于d2位的零,不输入编码部25中的校验位生成运算,而在校验位#2的生成后附加零。
这样,如图28所示,校验位#1、校验位#2的位数成为P的倍数,能够防止发生在伴随式计算中输入数据不足P位的周期。因而,与输入数据不足P位的周期对应的情况相比,不必进行多余的处理,因此能够抑制电路规模。
另外,在校验位#1的位数不是P的倍数的情况下,在第2阶的纠错处理中,在校验位#1与校验位#2间包含无效数据,在按每周期使用对P处所的位置是否错误进行检测的P并行链接检索电路时,为了进行跳过无效数据部分的错误位置的分配,以对齐P位的格式来输出错误位置,必须进行使该部分偏移以露出错误位置的处理。如图28所示,通过进行d1位的零填充,不需要这样的处理,能够抑制电路规模。
另外,也可以在编码部25中的校验位#1的生成处理中不输入d1位的零,而在校验位#1生成后附加零。该情况下,d1位的零的位置81设为校验位#1的最后。图29是表示将d1位的零填充的位置81设为校验位#1的最后的部分时的数据格式的一例的图。位置81不是校验位#1的开始,而是最后。同样地,也可以在编码部25中的校验位#2的生成处理中不输入d2位的零,而在校验位#2生成后附加d2位的零。d2位的填充的位置82也设为校验位#2内的最后。
另外,本实施方式中,将在编码部25b中的校验位运算中插入零而把校验位的位数设为P的倍数的处理和在编码部25b中生成校验位(位数不是P的倍数)后插入零以使校验位的位数成为P的倍数的处理的两方称为零填充。
图30是表示采用3阶纠错方式时的数据格式的一例的图。在校验位#1的开始部分的位置81填充d1位的零,在校验位#2的开始部分的位置82填充d2位的零。具体地说,图30的例中,与图28的例同样地在校验位#1的生成时将d1位的零作为信息多项式的下位位输入。另外,在校验位#2的生成时,将d2位的零作为信息多项式的下位位(校验位#1的下位位)输入。另外,这里,校验位#3的位数设为P的倍数,不进行零填充,而在校验位#3的位数不是P的倍数的情况下,在校验位#3的生成后向校验位#3的开始或最后附加roundup(校验位#3的位数/P)×P-校验位#3的位数=d3位。另外,对于d1位的零、d2位的零,也可以不在分别生成校验位#1、校验位#2时输入,而在校验位#1、校验位#2生成后附加零。该情况下,位置81、位置82设为校验位#1、校验位#2的最后的部分。
图31是表示在n阶纠错方式中用于生成与译码时的P位并行处理相对应的校验位#n的编码部25b的构成例的图。这里,表示了在校验位#n的生成时,将dn位(dn=roundup(校验位#n的位数/P)×P-校验位#n)的位数作为信息多项式的下位位输入时的构成例。图31所示编码部25具备:对输入数据进行采用生成多项式Gn(x)的留数计算的P并行留数计算电路91;保持校验位#n的计算中途结果的寄存器(FF)93;切换对寄存器93的输入的选择电路95;控制选择电路95的切换的选择电路控制电路92;和对dn位的零进行采用生成多项式Gn(x)的留数计算的dn位填充处理部94。
对于P并行留数计算电路91(即,对于编码部25)的输入数据(信息位)成为用户数据+校验位#1+…+校验位#(n-1)(但是,在计算校验位#1时,输入数据仅仅是用户数据)。在向编码部25输入输入数据期间,选择电路控制电路92控制选择电路95,以使其向寄存器93输入基于Gn(x)的P并行留数计算电路91的输出。如果输入结束,则选择电路控制电路92控制选择电路95,以使其向寄存器93输入dn位填充处理部94电路的输出。
dn位填充处理部94电路例如由基于dn’(dn’是dn的约数)并行的Gn(x)的留数电路构成,输入固定为零,若按dn÷dn’周期的量用该电路的输出更新寄存器93,则编码处理结束,能够输出校验位#n。
另外,以上,省略了采用外部校验位的情况的说明,但是,在采用外部校验位的校验位#i(i=1、2、…、n)的译码处理中,采用其他电路时,采用外部校验位的校验位#i的译码处理与通常的译码处理同样。如第1实施方式所述那样,在采用外部校验位的校验位#i和采用校验位#1等的用户数据的译码处理中共用电路的情况下,在采用外部校验位的校验位#i的译码处理中也实施P并行运算。因而,即使对于外部校验位,在位数不是P的倍数的情况下,也期望进行成为P的倍数的零填充。
以上,本实施方式中,在译码运算中实施P位并行处理的情况下,在编码运算中各阶的校验位的位数不是P的倍数时,进行零填充以使各阶的校验位成为P的倍数。因而,在译码时,不必进行校验位不是P的倍数而导致的多余的处理,能够抑制电路规模。
虽然说明了本发明的几个实施方式,但是这些实施方式只是例示的,而不用于限定发明的范围。这些新实施方式能够以其他的各种形态实施,在不脱离发明的要旨的范围内能够进行各种省略、置换、变更。这些实施方式及其变形是发明的范围和要旨所包含的,也是技术方案记载的发明及其均等的范围所包含的。

Claims (20)

1.一种存储器控制器,对非易失性存储器进行控制,其特征在于,具备:
编码部,通过对用户数据进行纠错编码处理而生成第1至第n校验位,通过对所述第1至第n校验位分别进行纠错编码处理而生成第1至第n外部校验位;
存储器接口部,对所述用户数据、所述第1至第n校验位及所述第1至第n外部校验位向所述非易失性存储器的写入及从所述非易失性存储器的读出进行控制;和
译码部,用从所述非易失性存储器读出的所述用户数据、所述第1至第n校验位及所述第1至第n外部校验位,进行纠错译码处理,
基于用于生成第1至第(i-1)校验位的生成多项式来选择用于生成所述第i校验位的生成多项式,其中i是1以上且n以下的整数。
2.根据权利要求1所述的存储器控制器,其特征在于,
所述译码部,在用所述第1至第k外部校验位进行所述第1至第k校验位的纠错译码处理后,用所述第1至第k校验位进行所述用户数据的纠错译码处理,其中k是1以上且n以下的整数。
3.根据权利要求1所述的存储器控制器,其特征在于,
用于生成所述第i校验位的生成多项式Gi(x),其中i是1以上且n以下的整数,在将ri、ti设为整数的情况下,
r1、r2、…、rn满足以下的关系:
r2≤r1、r1+2t1-1≤r2+2t2-1
r3≤r2、r2+2t2-1≤r3+2t3-1
rn≤rn-1、rn-1+2tn-1-1≤rn+2tn-1
选择为,G1(x)×G2(x)×...×Gi(x)=0具有αri、αri+1、αri+2、…、α2ti+ri-2、α2ti+ri-1这2×ti个根。
4.根据权利要求1所述的存储器控制器,其特征在于,
在生成所述第1至第n校验位的纠错编码处理中采用同一纠错码。
5.根据权利要求4所述的存储器控制器,其特征在于,
所述纠错码是BCH码。
6.6根据权利要求1所述的存储器控制器,其特征在于,
所述校验位及所述外部校验位的至少一部分,在不同于所述用户数据的存储校验位的专用校验位专用页中存储。
7.根据权利要求1所述的存储器控制器,其特征在于,
所述校验位及所述外部校验位的至少一部分,存储在与校验位的保护对象即用户数据或校验位不同的用户数据页。
8.根据权利要求1所述的存储器控制器,其特征在于,
所述译码部具备伴随式计算部,该伴随式计算部在采用第1至第n校验位的全部时的纠正能力设为tn位时,可与tn位以上的运算相对应,
所述伴随式计算部具备tn个以上的伴随式计算电路,其计算与用于生成第1至第n校验位的生成多项式的各根相对应的伴随式,
在将用于生成第i校验位的生成多项式设为Gi时、与G1至Gn-1所包含的根相对应的所述伴随式计算电路具备选择电路,该选择电路选择用户数据,或用户数据及第1至第(n-1)校验位中的至少一个或0,
在进行采用所述第1至第i校验位的所述用户数据的纠错处理和第i纠错处理时,由所述伴随式计算部来实施第1至第n纠错处理。
9.根据权利要求8所述的存储器控制器,其特征在于,
在第i纠错处理中,使与Gi所包含的根相对应的所述伴随式计算电路以外的所述伴随式计算电路的工作停止。
10.根据权利要求8所述的存储器控制器,其特征在于,
在所述伴随式计算电路进行P位并行运算的情况下,
所述编码部,在所述第1至第n校验位中存在位数不是P的倍数的校验位时,实施零插入处理以使该校验位的位数成为P的倍数,其中P是2以上的整数。
11.根据权利要求10所述的存储器控制器,其特征在于,
在所述第1至第n校验位中的位数不是P的倍数的校验位的生成处理中,将所述零插入处理设为向所述生成处理输入零以使该校验位的位数成为P的倍数的处理。
12.一种存储器控制器,对非易失性存储器进行控制,其特征在于,具备:
编码部,通过对用户数据进行纠错编码处理而生成第1校验位,通过对所述用户数据和所述第1校验位进行纠错编码处理而生成第2校验位,通过对所述用户数据和所述第1校验位进行纠错编码处理而生成第n校验位,而且,通过对所述第2至第n校验位分别进行纠错编码处理而生成第2至第n外部校验位;
存储器接口部,对所述用户数据、所述第1至第n校验位及所述第2至第n外部校验位向所述非易失性存储器的写入及从所述非易失性存储器的读出进行控制;和
译码部,用从所述非易失性存储器读出的所述用户数据、所述第1至第n校验位及所述第2至第n外部校验位进行纠错译码处理,
根据用于生成第1至第(i-1)校验位的生成多项式来选择用于生成所述第i校验位的生成多项式,其中i是1以上且n以下的整数。
13.根据权利要求12所述的存储器控制器,其特征在于,
所述译码部,在靠所述第1校验位的纠错能力无法进行所述用户数据的纠错译码的情况下,在用所述第2至第k外部校验位进行所述第2至第k校验位的纠错译码处理后,用所述第2至第k校验位进行所述用户数据及所述第1校验位的纠错,其中k是2以上且n以下的整数。
14.根据权利要求12所述的存储器控制器,其特征在于,
用于生成所述第i校验位的生成多项式Gi(x),其中i是1以上且n以下的整数,在将ri、ti设为整数的情况下,
r1、r2、…、rn满足以下的关系:
r2≤r1、r1+2t1-1≤r2+2t2-1
r3≤r2、r2+2t2-1≤r3+2t3-1
rn≤rn-1、rn-1+2tn-1-1≤rn+2tn-1
选择为,G1(x)×G2(x)×…×Gi(x)=0具有αri、αri+1、αri+2、…、α2ti+ri-2、α2ti+ri-1这2×ti个根。
15.根据权利要求12所述的存储器控制器,其特征在于,
在生成所述第1至第n校验位的纠错码处理中采用同一纠错码。
16.根据权利要求15所述的存储器控制器,其特征在于,
所述纠错码是BCH码。
17.一种存储器控制器,对非易失性存储器进行控制,其特征在于,具备:
编码部,通过对第1用户数据进行纠错编码处理而生成第1校验位,通过对所述第1用户数据和所述第1校验位进行纠错编码处理而生成第2校验位,通过对第2用户数据和包含所述第2校验位的多个校验位进行纠错编码处理而生成第3校验位;
存储器接口部,对所述第1用户数据和所述第1校验位向第1页的写入及所述第2用户数据及包含所述第2校验位的多个校验位、第3校验位向第2页的写入进行控制;和
译码部,基于从所述非易失性存储器读出的所述第1用户数据、第2用户数据及所述第1至第3校验位,进行纠错译码处理,
基于用于生成第1校验位的生成多项式来选择用于生成所述第2校验位的生成多项式。
18.根据权利要求17所述的存储器控制器,其特征在于,
所述第1校验位的大小为所述第2校验位的大小和所述第3校验位的大小之和以上。
19.根据权利要求17所述的存储器控制器,其特征在于,
所述纠错码是BCH码。
20.根据权利要求17所述的存储器控制器,其特征在于,
用于生成所述第i校验位的生成多项式Gi(x),其中i是1以上且n以下的整数,在将r1、t1、r2、t2、r3、t3设为整数的情况下
r1、t1、r1、r2、r3、t3满足以下的关系:
r2≤r1、r1+2t1-1≤r2+2t2-1
r3≤r2、r2+2t2-1≤r3+2t3-1
选择为,G1(x)×G2(x)×…×Gi(x)=0具有αri、αri+1、αri+2、…、α2ti+ri-2、α2ti+ri-1这2×ti个根。
CN201310088326XA 2012-03-19 2013-03-19 存储器控制器 Pending CN103324548A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012061692 2012-03-19
JP061692/2012 2012-03-19
JP187140/2012 2012-08-28
JP2012187140A JP5768022B2 (ja) 2012-03-19 2012-08-28 メモリコントローラ、記憶装置、誤り訂正装置および誤り訂正方法

Publications (1)

Publication Number Publication Date
CN103324548A true CN103324548A (zh) 2013-09-25

Family

ID=49158859

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310088326XA Pending CN103324548A (zh) 2012-03-19 2013-03-19 存储器控制器

Country Status (4)

Country Link
US (1) US8954828B2 (zh)
JP (1) JP5768022B2 (zh)
CN (1) CN103324548A (zh)
TW (1) TW201351427A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445724A (zh) * 2015-08-11 2017-02-22 Hgst荷兰公司 与受保护数据分开存储奇偶校验数据

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW201346922A (zh) 2012-05-14 2013-11-16 Toshiba Kk 記憶體控制器、記憶裝置及錯誤修正方法
US8924820B2 (en) 2012-07-27 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor memory system, and memory control method
US9069698B2 (en) * 2012-09-06 2015-06-30 Advanced Micro Devices, Inc. Channel rotating error correction code
CN107632904B (zh) 2013-08-23 2020-12-22 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN110175088B (zh) * 2013-08-23 2022-11-11 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN104424127A (zh) 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN108447516B (zh) 2013-08-23 2020-04-24 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
US9160371B2 (en) * 2013-09-05 2015-10-13 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
US9520901B2 (en) * 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
TWI564904B (zh) * 2014-05-13 2017-01-01 群聯電子股份有限公司 資料處理方法、記憶體控制電路單元以及記憶體儲存裝置
US9208863B1 (en) 2014-05-19 2015-12-08 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
CN105095011B (zh) * 2014-05-23 2019-03-19 群联电子股份有限公司 数据处理方法、存储器控制电路单元以及存储器存储装置
US9960788B2 (en) 2015-03-27 2018-05-01 Toshiba Memory Corporation Memory controller, semiconductor memory device, and control method for semiconductor memory device
US10461777B2 (en) 2015-07-14 2019-10-29 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10439644B2 (en) 2015-07-14 2019-10-08 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10572189B2 (en) * 2016-11-04 2020-02-25 Sandisk Technologies Llc Method and decoder to adjust an error locator polynomial based on an error parity
JP6115740B1 (ja) * 2015-12-17 2017-04-19 ウィンボンド エレクトロニクス コーポレーション 半導体記憶装置
US9971523B2 (en) 2016-03-10 2018-05-15 Toshiba Memory Corporation Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US10740176B2 (en) * 2016-09-19 2020-08-11 Cnex Labs, Inc. Computing system with shift adjustable coding mechanism and method of operation thereof
US10256843B2 (en) * 2017-06-09 2019-04-09 Western Digital Technologies, Inc. Systems, methods, and devices for encoding and decoding data using multi-layer integrated interleaved codes
JP2020150515A (ja) * 2019-03-15 2020-09-17 キオクシア株式会社 誤り訂正回路及びメモリシステム
KR20220050315A (ko) 2020-10-16 2022-04-25 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
KR20230026016A (ko) 2021-08-17 2023-02-24 삼성전자주식회사 스토리지 장치
US11694761B2 (en) 2021-09-17 2023-07-04 Nxp B.V. Method to increase the usable word width of a memory providing an error correction scheme

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035401A (en) * 1997-02-03 2000-03-07 Intel Corporation Block locking apparatus for flash memory
CN101622608A (zh) * 2007-12-28 2010-01-06 株式会社东芝 存储器系统
US20110239065A1 (en) * 2010-03-24 2011-09-29 Apple Inc. Run-time testing of memory locations in a non-volatile memory

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4525838A (en) 1983-02-28 1985-06-25 International Business Machines Corporation Multibyte error correcting system involving a two-level code structure
JPS6354254A (ja) 1986-08-25 1988-03-08 Canon Inc 印刷装置
US4996690A (en) * 1988-08-26 1991-02-26 Stac Electronics Write operation with gating capability
JPH098672A (ja) 1995-06-21 1997-01-10 Toshiba Corp シンドローム回路
JPH09245442A (ja) * 1996-03-05 1997-09-19 Hitachi Ltd ディジタル信号記録方法及び記録装置
US7231585B2 (en) * 2002-12-11 2007-06-12 Nvidia Corporation Error correction for flash memory
US20050028067A1 (en) 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
JP2005129596A (ja) 2003-10-21 2005-05-19 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置
US20050149819A1 (en) * 2003-12-15 2005-07-07 Daewoo Electronics Corporation Three-dimensional error correction method
US7210077B2 (en) 2004-01-29 2007-04-24 Hewlett-Packard Development Company, L.P. System and method for configuring a solid-state storage device with error correction coding
US7418644B2 (en) 2004-03-01 2008-08-26 Hewlett-Packard Development Company, L.P. System for error correction coding and decoding
JP2006295510A (ja) * 2005-04-08 2006-10-26 Mitsubishi Electric Corp Fecフレーム符号化装置、fec多重化装置、fec多重分離装置、および光通信装置
US8271848B2 (en) 2006-04-06 2012-09-18 Alcatel Lucent Method of decoding code blocks and system for concatenating code blocks
JP4534164B2 (ja) 2006-07-25 2010-09-01 エルピーダメモリ株式会社 半導体装置の製造方法
US8225185B1 (en) * 2007-02-07 2012-07-17 Marvell International, Ltd. RS codec architecture that combines a compact encoder and serial BMA
JP5045242B2 (ja) * 2007-05-30 2012-10-10 富士通セミコンダクター株式会社 半導体メモリ、半導体メモリの動作方法およびシステム
WO2009072105A2 (en) * 2007-12-05 2009-06-11 Densbits Technologies Ltd. A low power chien-search based bch/rs decoding system for flash memory, mobile communications devices and other applications
KR101437396B1 (ko) * 2008-02-27 2014-09-05 삼성전자주식회사 레이턴시를 줄일 수 있는 에러 정정 블록을 포함하는메모리 시스템 및 그것의 에러 정정 방법
JP5166074B2 (ja) 2008-02-29 2013-03-21 株式会社東芝 半導体記憶装置、その制御方法、および誤り訂正システム
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
JP2009259975A (ja) 2008-04-15 2009-11-05 Toshiba Corp 半導体集積回路装置
PL2700651T3 (pl) * 2008-07-18 2019-09-30 Bristol-Myers Squibb Company Kompozycje jednowartościowe dla wiązania cd28 i sposoby stosowania
JP5317742B2 (ja) 2009-02-06 2013-10-16 株式会社東芝 半導体装置
JP2010245454A (ja) 2009-04-09 2010-10-28 Renesas Electronics Corp 半導体装置およびその製造方法
JP5467270B2 (ja) 2010-04-28 2014-04-09 国立大学法人 東京大学 データ入出力制御装置および半導体記憶装置システム
KR101800445B1 (ko) * 2011-05-09 2017-12-21 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
WO2013038464A1 (en) * 2011-09-16 2013-03-21 Hitachi, Ltd. Multi-stage encoding and decoding of bch codes for flash memories
US8645789B2 (en) 2011-12-22 2014-02-04 Sandisk Technologies Inc. Multi-phase ECC encoding using algebraic codes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6035401A (en) * 1997-02-03 2000-03-07 Intel Corporation Block locking apparatus for flash memory
CN101622608A (zh) * 2007-12-28 2010-01-06 株式会社东芝 存储器系统
US20110239065A1 (en) * 2010-03-24 2011-09-29 Apple Inc. Run-time testing of memory locations in a non-volatile memory

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106445724A (zh) * 2015-08-11 2017-02-22 Hgst荷兰公司 与受保护数据分开存储奇偶校验数据
CN106445724B (zh) * 2015-08-11 2020-06-16 西部数据技术公司 与受保护数据分开存储奇偶校验数据

Also Published As

Publication number Publication date
TW201351427A (zh) 2013-12-16
US8954828B2 (en) 2015-02-10
US20130246887A1 (en) 2013-09-19
JP2013225830A (ja) 2013-10-31
JP5768022B2 (ja) 2015-08-26

Similar Documents

Publication Publication Date Title
CN103324548A (zh) 存储器控制器
US9128864B2 (en) Memory controller, storage device and error correction method
CN101821980B (zh) 一种发送数据的方法
US8099644B2 (en) Encoders and methods for encoding digital data with low-density parity check matrix
CN102208210B (zh) 闪存设备及其数据存储方法
KR20110135985A (ko) 확장 단일-비트 오류 정정 및 다중-비트 오류 검출
CN103325425B (zh) 存储器控制器
US8843810B2 (en) Method and apparatus for performing a CRC check
CN102468855A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
CN1983822A (zh) 奇偶校验矩阵及其产生方法、编码方法和纠错设备
CN1333530C (zh) 编码线性成块码的方法和装置
Papailiopoulos et al. Distributed storage codes through Hadamard designs
CN106788878A (zh) 一种具有单比特纠错功能的并行crc纠错方法
CN102096610B (zh) 利用纠错码和同步信息的数据行存储及传输
CN109766214A (zh) 一种最优h矩阵生成方法及装置
CN102761340A (zh) 一种bch并行编码电路
RU164633U1 (ru) Устройство хранения и передачи информации с обнаружением ошибок
CN101803204B (zh) 纠正位串错误的方法
CN1987800A (zh) 编码电路及数字信号处理电路
CN103151078A (zh) 一种存储器检错纠错码生成方法
EP2621121A2 (en) Supercharged codes
CN105095012A (zh) 控制器、存储装置及控制方法
TW202024907A (zh) 資料處理
CN112687324A (zh) 奇偶校验生成电路、存储器控制器和含该电路的存储模块
US20220044753A1 (en) Method for memory storage and access

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: 20130925