CN102823141B - 用于固态存储器件的两级bch码 - Google Patents
用于固态存储器件的两级bch码 Download PDFInfo
- Publication number
- CN102823141B CN102823141B CN201180016566.8A CN201180016566A CN102823141B CN 102823141 B CN102823141 B CN 102823141B CN 201180016566 A CN201180016566 A CN 201180016566A CN 102823141 B CN102823141 B CN 102823141B
- Authority
- CN
- China
- Prior art keywords
- code
- bch
- word
- code word
- input data
- 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.)
- Expired - Fee Related
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/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2906—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
-
- 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- 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/29—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2942—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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes wherein a block of parity bits is computed only from combined information bits or only from parity bits, e.g. a second block of parity bits is computed from a first block of parity bits obtained by systematic encoding of a block of information bits, or a block of parity bits is obtained by an XOR combination of sub-blocks of information bits
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- Error Detection And Correction (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了用于对输入数据进行编码以记录在固态存储器件(1)的s级存储器(2)中的方法和装置,其中s≥2。根据第一和第二BCH码在包含M个输入数据字的组中对输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合。产生M个第一码字的所述集合,使得所述M个第一码字的至少一个预定线性组合产生所述第二BCH码的第二码字,此第二BCH码是所述第一BCH码的子码。然后在所述s级存储器(2)中记录M个第一码字的各集合。如果所述第一和第二码字均包括N个q元符号,其中q=pk,k是正整数并且p是素数,则通过确保q和s分别是公共基数r的u和v次幂,可以使q元码字母与所述s元存储器(2)匹配,其中u和v是正整数并且k≥u,由此p(k/u)v=s。
Description
技术领域
本发明一般地涉及固态存储器件(SSD)中的数据编码。提供了用于对数据进行编码和在s级固态存储器中记录编码数据的方法和装置,其中s≥2表示固态存储器的基本存储单位或“单元”可以采取的不同值或级别的数量。
背景技术
固态存储器是通常在集成电路中使用电子电路存储数据的存储器,而不是盘和带等常规磁或光介质。目前,诸如闪存器件之类的固态存储设备彻底改变了数据存储的前景。这些设备比常规存储设备更坚固(因为没有活动部件)并提供极高的带宽、显著的功耗节省以及优于硬盘驱动器(HDD)几个数量级的随机I/O(输入/输出)性能。
诸如HDD之类的常规存储设备记录二进制数据。即,这些设备中的基本存储单元仅保存1位信息。诸如DRAM(动态随机存取存储器)之类的易失性固态存储器技术也记录二进制数据,此类存储器中的基本存储单元仅能够采取两个级别(s=2),因此仅记录二进制值。然而,在其他类型的SSD中,存储单元可以采取超过两个级别(s>2)。例如,闪存和相变存储器(PCM)这两种重要的非易失性存储器技术允许多级记录。例如,NOR闪存每个单元可以存储4个级别,即2位。目前提供了使用43纳米工艺技术的多级单元(MLC)NAND闪存芯片,每个闪存单元可以存储4位数据。当需要10纳米以下的工艺技术时,PCM技术预计将取代闪存技术。尽管商用PCM芯片目前每个单元仅存储1位,但实验已经证明,PCM芯片中的每个单元可存储4位。
由于诸如闪存和PCM之类的固态存储器已成功用于数字照相机和音乐播放器之类的消费产品中,因此目前考虑将这些存储器技术用于企业存储。将这些技术转入企业空间时,一直是数据存储设备的主要问题的误码性能变得越来越重要。尽管HDD等常规存储设备具有约为10%至15%的ECC(错误纠正代码)开销,但商用闪存中的ECC开销仅约为2.5%至5%。因此,效率对于这些设备中的EC编码方案来说至关重要。
在SSD中,存储器被组织成存储区域或块,每个存储区域或块包含可以将数据写入其中的一组存储位置。在SSD中,通过在写入单元级别(即,在每个数据写入位置中)添加冗余而执行EC编码。例如,闪存包含称为“页”的数据写入位置。每个页包含多个扇区,但通常基于页执行写入操作。针对写入每个闪存页或页中的每个扇区的输入数据计算EC码,并将EC码与输入数据一起记录在该页或扇区中。此编码允许从各个数据页内的错误中恢复。已经针对此所谓的“一级”EC编码采用诸如RS(里德-所罗门)和BCH(博斯-乔赫里-霍克文黑姆)码之类的线性码。其中基于页执行编码(即,每个页一个码字)的“长”一级码充分利用了可用页冗余,因此提供最佳的误码性能,但这些方案的实施极其复杂,并且如果页大小和所需的错误纠正能力很大,则需要高功耗。与这些代码关联的复杂性取决于其中执行编码和解码算术的有限域(伽罗瓦域(GF))的大小。(下文中,包含来自具有q个元素(通过GF(q)表示)的伽罗瓦域的元素的所有N元组的集合是通过GF(q)N表示的矢量空间)。例如,已经设计了用于有效负载为2KiB和4KiB的两个不同页大小的长一级码。假设有效负载为2KiB和4KiB的长一级码的可用ECC开销(冗余)分别为56字节和120字节。最佳的2KiB一级RS码(其中2KiB是页大小)可以纠正每个页多达20个随机选择的11位符号,但需要GF(211)次运算进行编码和解码。最佳的4KiB一级RS码可以在一个页中纠正多达40个随机选择的12位符号,但需要GF(212)次运算进行编码和解码。此外,可以纠正每个页多达29个随机选择的位的最佳2KiB一级BCH码需要GF(2)次运算进行编码,但需要GF(215)次运算进行解码。可以纠正每个页多达60个随机选择的位的最佳4KiB一级BCH码需要GF(2)次运算进行编码,但需要GF(216)次运算进行解码。由于这些长代码的过度复杂性,因此在实践中使用“短”一级代码,其中一个页中包含多个较短的码字,从而为了实施方式的实用性而牺牲误码性能。
美国专利第7,047,478B2号披露了一种用于多级单元存储器的一级编码系统,其中操作模式可从使用所有可用存储级别的模式切换到使用少于所有级别的模式。为了适应这种情况,编码方案采用q元字母(q-aryalphabet)(即,码字由可以采取q个不同值的符号组成),其中q等于多级单元的可用级别s的数量。
如在“Integrated Interleaving–A Novel ECC Architecture(集成交错-一种新颖ECC体系结构)”(M.Hassner等人,IEEE Trans.on Magn.,第37卷第2期,第773-775页,2001年3月)和美国专利第5,946,328、5,942,005和7,231,578 B2号中描述的,已在HDD中采用使用交错RS码的两级编码方案。这些系统基于例如在以下各项中描述的广义级联码:E.L.Blokh和V.V.Zyablov“Generalized concatenated codes(广义级联码)”(Plenum Publishing Corporation,第218-222页,1976年)(翻译自Problemy Peredachi Informatsii,第10卷第3期,第45-50页,1974年7月-9月);以及J.Maucher等人“On the Equivalence of GeneralizedConcatenated Codes and Generalized Error Location Codes(有关广义级联码和广义错误位置码的等效性)”(IEEE Trans.on Information Theory,第46卷第2期,2000年3月)。上面引用的Hassner等人的两级RS编码方案使用分别由C1和C2表示的第一和第二RS码,其中第二RS码是第一RS码的子码。生成M个第一(C1)码字的集合,使得这M个码字的线性组合是第二(C2)码字。具体地说,上述集合中的M个C1码字的B≥1个加权和是第二RS码的相应C2码字。这些加权和的加权系数由范德蒙矩阵定义。此外,编码方案受M<q的限制,即上述集合中C1码字的数量M小于伽罗瓦域元素的总数q。例如,在GF(q=2)上的二进制线性码的情况下,条件M<2适用于集成交错码,即M=1,因此由Hassner等人定义的集成交错代码系列不包含二进制两级码。在此方案中,使用多个在扇区上交错的RS码字将增加对HDD通道中突发错误的鲁棒性。RS码非常适合于这种情况,并且通常广受青睐。这可能部分地由于可轻松进行性能评估,因为RS码的权重分布已知。实施方式复杂性与如上所示的BCH码相比也是有利的,具体地说,RS码的解码复杂性显著减少。
还针对DRAM采用了两级RS编码,如在“Reliable Memories withSubline Accesses(使用子行访问的可靠存储器)”(Junsheng Han等人,ISIT2007,法国,尼斯,6月24日-6月29日,第2531-2535页)和美国专利申请第2008/0168329A1号中讨论的那样。两级RS编码基于上面引用的Hassner等人的集成交错方案,然而未指定代码设计细节和解码算法。
发明内容
本发明的一个方面的一个实施例提供了一种用于在固态存储器件的s级存储器中记录输入数据的方法,其中s≥2。所述方法包括:
根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码;以及
在所述s级存储器中记录M个第一码字的各集合。
与确定使用上面讨论的RS码相比,体现本发明的方法采用BCH码在s级固态存储器件中进行两级编码。本发明的各实施例部分地基于认识到BCH码特别适合于在SSD存储通道中纠正错误模式。此外,通过采用两级BCH编码方案,在最小化解码器复杂性的影响的同时,可以利用误码性能优势。实际上,可以就实施方式复杂性而言以最低损失实现良好的误码率性能。不管感知的缺点为何,通过使用BCH码在SSD中进行两级编码,可以实现高效错误纠正方案,并具有低实施方式复杂性和低功耗。此外,如下面进一步讨论的,可以很容易地调整BCH码特性以适合SSD单元的级别数s和SSD通道的错误结构。因此,总体上,体现本发明的记录方法可以提供实用且高效的系统以在s级固态存储器中可靠地存储信息。
通常,待编码的输入数据字可以包括多个数据符号,其中数据符号可以是一位(即二进制)符号或多位符号。在本发明的各优选实施例中,所述第一和第二码字均包括多个(由N表示)q元符号,其中q=pk,k是正整数而p是素数。此外,在特别优选的实施例中,根据固态存储器的级别数s调整两级BCH码的q元字母以实现特别高效的操作。这通过使用q和s分别是公共基数r的u和v次幂的代码实现,其中u和v是正整数而k≥u。这确保根据条件p(k/u)v=s使q元码字母与s元存储器“匹配”。通过确保代码满足此“匹配字母”约束,可以简单且高效地将q元码字符号转换成s元字母以便记录在s级存储器中、提供高效操作以及代码选择的灵活性。具体地说,尽管在某些情况下q和s可能相同,但下面将详述其中q≠s的优选实施例。此外,尽管体现本发明的方法可应用于二进制(s=2)固态存储器,但优选实施例为多级固态存储器(s>2)提供了灵活且高效的操作。
在特别优选的实施例中,在固态存储器的相应写入位置中记录M个第一码字的每个集合。例如,在闪存中,每个页将包含一个包括M个第一码字的集合。然而,在某些实施例中可能需要在每个写入位置中记录M个第一码字的多个集合,例如闪存页的每个扇区一个集合。还可以设想其中在固态存储器的多个写入位置中记录M个第一码字的每个集合的实施例。
根据本发明的另一方面的一个实施例,提供了一种包括程序代码装置的计算机程序,所述程序代码装置用于导致计算机执行根据本发明的第一方面的方法。将理解,术语“计算机”用于最一般的意义,并且包括任何具有用于实现计算机程序的数据处理能力的设备、组件和系统。此外,体现本发明的计算机程序可以组成独立程序或可以是较大程序的元素,并且可以例如包含在诸如盘或电子传输之类的计算机可读介质中以便载入计算机。所述计算机程序的程序代码装置可以包括一组指令的以任何语言、代码或符号表示的任何表达,旨在导致计算机直接执行所述方法,或者在以下之一或两者后执行所述方法:(a)转换成另一种语言、代码或符号,和(b)以不同的材料形式再现。
本发明的第三方面的一个实施例提供了一种固态存储器件,包括:
s级固态存储器,其中s≥2;以及
两级BCH编码器,其用于根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码;
其中所述器件适于在所述s级存储器中记录M个第一码字的各集合。
本发明的第四方面的一个实施例提供了一种编码器装置,其用于对要记录在固态存储器件的s级存储器中的输入数据进行编码,其中s≥2。所述编码器装置包括:
两级BCH编码器,其用于根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码,其中所述第一和第二码字均包括N个q元符号,其中q≠s,q=pk,k是正整数并且p是素数,并且其中q和s分别是公共基数r的u和v次幂,其中u和v是正整数并且k≥u,由此p(k/u)v=s;以及
符号转换器,其用于将每个第一码字的所述q元符号转换成s元字母以便记录在所述s级存储器中。
通常,如果在此参考本发明的一个方面的一个实施例描述特性,则可以在本发明的另一个方面的各实施例中提供对应的特性。
附图说明
现在将通过实例的方式参考附图描述本发明的优选实施例,这些附图是:
图1是体现本发明的s级固态存储器件的示意方块图;
图2示出了在图1的器件中使用的第一种两级编码方案;以及
图3示出了在图1的器件中使用的第二种两级编码方案。
具体实施方式
图1是固态存储器件的简化示意图,在此将描述示出了编码系统中包含的主要元件的闪存器件1。器件1包括用于在闪存单元的集成阵列中存储数据的s级闪存2,其中每个单元可以采取s≥2个不同存储级别。尽管在图中被示为一个块,但通常闪存2可以包括任何所需的闪存存储单元配置,例如范围从单个芯片或裸片(die)到多个存储库(storage bank),每个存储库包含多个存储芯片封装。器件1具有编码器装置,其以广义形式被示为包括两级BCH编码器3和符号转换器4,符号转换器4在图中以虚线为边界。符号转换器4包括q元到r元转换器5和通道映射单元6。器件1的对应解码器装置通常在图中被指示为解码器7。
通常,BCH编码器3、符号转换器4和解码器7的功能可以在硬件、软件或其组合中实现。例如,BCH编码器3中的编码操作可以全部或部分地通过软件执行,所述软件配置所述编码器装置的处理器以实现下面详述的编码方案。通过此处描述,适合的软件对于本领域的技术人员来说是显而易见的。然而,由于操作速度的原因,通常尽可能首选使用硬连线逻辑电路以实现功能。此外,编码过程通常可以通过系统编码(其中编码不改变编码过程的输入数据,但将奇偶码添加到未编码符号以获得输出码字)或通过非系统编码(其中编码将编码过程的输入数据嵌入输出码字中)实现。然而,为了编码器(和对应的解码器)实施方式的简单性,首选系统编码。通过此处描述,器件1的编码器和解码器装置的适合实施方式对于本领域的技术人员来说很容易地显而易见。
在器件1的操作中,将在闪存2中记录的输入数据提供给BCH编码器3。输入数据包括一系列输入数据字,BCH编码器3根据下面详细描述的两级BCH编码方案在包含M个输入数据字的组中对这些输入数据字进行编码。对于包含M个输入数据字(可以包括具有不同数量的数据符号的字,如下面解释的那样)的每个组,BCH编码器3输出一个包含M个q元符号码字(即,这些码字的一个符号可以具有q个可能值)的集合,其中q=pk,k是正整数而p是素数。根据q和s之间的关系,符号转换器4按照下面进一步讨论的那样操作,以将q元符号码字转换成s元字母以便记录。然后在闪存2中记录s元符号码字,由此每个闪存单元存储码字的一个s元符号。在此实施例中,闪存的每个页为包含M个s元码字的一个集合提供足够的存储,由此在相应闪存页中存储M个s元码字的每个集合。随后从闪存2读取页时,解码器7执行与编码器装置3、4相反的处理以对s元码字进行解码,并以通常公知的方式实现错误检测和恢复操作。由此恢复并提供原始输入数据字作为来自解码器7的输出数据。
现在,将更详细解释BCH编码器3的操作。提供给编码器3的M个输入数据字的每个组都包括来自矢量空间GF(q)k 1的(M-P)个K1符号数据字和来自矢量空间GF(q)k 2的P个K2符号数据字。编码器3根据第一BCH码将(M-P)个K1符号数据字映射到相应的N符号第一码字。此第一BCH码包括来自矢量空间GF(q)N的预定义N元组集合。因此,所述代码一对一地将输入q元符号数据字映射到q元符号第一码字,其中(M-P)个第一码字的每一个中的N-K1个奇偶符号提供ECC过程必需的冗余的第一部分。此外,编码器3根据第二BCH码将剩余P个K2符号数据字映射到相应的N符号第二码字。此第二BCH码包括来自矢量空间GF(q)N的另一个预定义N元组集合,并且是所述第一BCH码的子码,即包含所有第二码字的集合是包含所有第一码字的集合的子集。因此,所述第二代码一对一地将输入q元符号数据字映射到q元符号第二码字(其也是第一码字),其中P个码字的每一个中的N-K2个奇偶符号提供ECC过程必需的冗余的第二部分。因此,所述编码器生成M个码字的初始集合。然后,通过以P个已修改(第一)码字替换所述初始集合中的P个第二码字来获得M个码字的最终集合,其中每个已修改码字的第i个符号(其中i=1至N)是所述初始集合中M个码字的第i个符号的特定线性组合。生成这些已修改码字以便通过所述第二BCH码约束M个第一码字的最终集合。具体地说,M个第一码字的所述集合的至少一个预定线性组合是所述第二BCH码的码字。因此,当根据一个或多个预定线性组合进行组合时,M个第一码字的结果集合将产生所述第二BCH码的一个或多个第二码字。
尽管上面描述了编码器3中的两级编码方案的示例性实施方式,但可以设想各种两级代码结构。根据本发明的各实施例,根据第一和第二BCH码对包含M个输入数据字的每个组进行编码以产生一个包含所述第一BCH码的M个第一码字的集合,以便所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,此第二代码是所述第一BCH码的子码。图2中示意性地示出了一个简单实例。所述第一和第二码字通过图的顶部的两个不同矩形块表示。与第一码字类似,第二码字均包括N个q元符号,如指示的那样。对于包含M个输入数据字的给定组,当以定义的顺序级联(concatenate)时,包含M个第一码字的结果集合将有效地形成整体两级BCH码的两级码字,如图的中心中所示。此两级码字满足在图底部示出的条件。即,M个第一码字的和(逐个符号)产生所述第二BCH码的码字。
图3中示出了另一个示例性两级编码方案。在此情况下,M个第一码字的多个线性组合中的每一个都产生第二BCH码的码字。具体地说,对于定义的级联顺序,M个第一码字的多个加权和中的每一个都是相应的第二码字。这通过图底部的条件以广义形式示出,其中“*”表示乘法。具体地说,从M个码字的P个加权和获得第二码字,其中这些加权和的加权系数由与第三线性码对应的奇偶校验矩阵定义,如下面解释的那样。
有限域GF(q)上的此类两级BCH码C基于有限域GF(q)上的三个代码C1、C2和C*的定义,其中q是素数的幂。代码C1是由(N-K1)×N奇偶校验矩阵H1定义的具有最小距离d(C1)的第一BCH码[N,K1,d(C1)]。第二代码C2是具有最小距离d(C2)的第二BCH码[N,K2,d(C2)]。这是第一代码C1的子码并由(N-K2)×N奇偶校验矩阵 定义,其中Ha是(K1-K2)×N奇偶校验矩阵,表示C2代码除了奇偶校验约束H1之外必须满足的奇偶校验约束。使为GF(q)上大小为P×M的任何满秩奇偶校验矩阵,其定义大小K*=M-P并具有最小距离d(C*)的线性[M,K*,d(C*)]码。通过以下奇偶校验矩阵定义长度为MN的整体两级代码C,所述整体两级代码C从具有奇偶校验矩阵的线性码C*以及代码C1和C2获得,其中
d(C)=min{d(C*)d(C1),d(C2)}。
将理解,可以根据图2和3的编码体系结构构造多种两级BCH码,并且可以根据各个系统的参数选择特定代码C1、C2和C*。例如,可以根据给定系统的s元存储器的级别数s和性能要求选择特定代码。然而,为了增强执行效率和简化实施方式,在器件1的优选实施例中,选择BCH码,使得:
(1)q=pk=ru,其中k≥u;以及
(2)s=rv。
其中u和v是正整数。换言之,q和s分别是公共基数r的u和v次幂。这暗示条件:
p(k/u)v=s。
在此,此条件被称为“匹配字母”约束。满足此约束将确保使两级BCH码的q元字母与s元存储器匹配以实现最高效的器件操作。具体地说,在确保可以在符号转换器4中将q元代码简单且高效地转换成s元字母的同时,提供编码选择的灵活性。因此,编码方案并不限于q=s的那些方案,而是可以进行选择以便为特定s级存储特性提供最佳结果。在其中s≠q的器件1的操作中,通过q元到r元转换器5将q元符号码字转换成r元符号码字,其中rv=s,如上面定义的那样。如果在此v>1(即r≠s),则可以在通道映射单元6中将r元符号映射到存储器2的s个存储通道。具体地说,根据将v个r元符号的所有可能值映射到s个级别的不同级别的预定映射方案,将每个r元输入码字的v个r元符号的连续集合映射到s级存储器的相应的对应级别。在此,可以以任何所需方式(例如,使用公知的格雷映射方案)执行通道映射,以适合s元存储器的错误特性,如本领域技术人员将显而易见的那样。因此,v个r元输入符号的每个集合对应于通道映射单元6的输出处的一个s元符号,并且作为对应级别记录在存储器2的相应s元单元中。
在其中u=1由此q=r的实施例中,则当然不需要q元到r元转换,并且可以省略或绕过转换器5。然而,假设r≠s,则在此针对v个q元符号的集合仍可执行通道映射,如上面描述的那样。同样,在其中r=s的实施例中,则可以省略或绕过通道映射器6。因此,通常符号转换器4可以根据存储系统的特定参数执行q元到r元转换和通道映射之一或两者。要指出的是,还可以将描述的两级编码技术应用于其中q=s的系统,在这种情况下,符号转换器4可以作为一个整体被省略或绕过。
尽管上面的系统可以提供卓越的编码选择灵活性,但在下面将描述用于存储器件1的两个特别感兴趣的编码方案系列。
第一编码方案系列以r=s>2来表征,并且在存储器通道可以由具有独立s元符号错误的s元通道模型来描述时特别有用。第二编码方案系列以r=2且k=u来表征,并且在通道映射单元、存储器通道、在解码器7中执行的读回过程和反向通道映射的级联可以由具有独立位错误的二进制通道来描述时特别有用。如果使用格雷编码作为通道映射,并且非易失性存储器通道中的错误导致将通道级别错误地读取为相邻通道级别,则独立位错误通道对于非易失性s级存储器而言是一种良好模型。在此情况下,q=2k,r=2且s=2v。对于独立位错误通道,好的选择是选择两级二进制BCH编码方案,其中q=2,即p=2且k=1。然而,由于实施方式和/或误码率性能的原因,使用GF(q)(q>2)上的代码可以是有利的,其中在GF(q=2k)(k>1)中执行用于编码的有限域运算。
现在,将详细描述用于闪存的两级代码的两个特定实例。目前,闪存中的一个典型页包含4KiB的用户数据。此外,假设每个页的可用ECC冗余是224字节。当使用二进制代码时,代码长度MN必须为34560(位),并且代码大小必须至少为32768(位)。将根据长度为3840的二进制BCH码,使用GF(212)上的解码算法来构造长度为34560=M×N=9×3840的两个二进制两级代码。
在第一实例中,通过参数为[N=3840,K1=3660,d1=31]的第一二进制BCH码C1、参数为[N=3840,K2=3492,d2=59]的第二二进制BCH码C2以及具有长度M=9、大小K*=8并且d(C*)=2的单个奇偶校验代码C*来构造二进制两级代码C。结果两级代码的大小为32772,因此它可以容纳4KiB用户数据。此外,d(C)=59,即,代码可以纠正多达29个错误。
在第二实例中,通过参数为[N=3840,K1=3732,d1=19]的第一二进制BCH码C1、参数为[N=3840,K2=3528,d2=53]的第二二进制BCH码C2以及具有长度M=9、大小K*=5并且d(C*)=3的缩短汉明码C*来构造二进制两级代码C。结果两级代码的大小为32772,因此它可以容纳4KiB用户数据。此外,d(C)=53,即,代码可以纠正多达26个错误。
应将GF(2)上的这些二进制两级代码实例与参数为[34560,32768,225]的二进制BCH码相比较。此长BCH码可以纠正多达112个错误,但其解码算法在大型域GF(216)上操作,这目前对于SSD存储器应用来说不切实际。
上述两级代码的另一种比较针对参数为[3840,3648,33]的二进制一级BCH码的9-路交错方案,其可以纠正多达16个错误。用于9个交错BCH码中的每一个的解码器在GF(212)上操作。尽管两级代码具有在相同域GF(212)上操作的解码器,但与简单的9-路交错方案相比时,它们可以纠正显著更多的错误。
按照上述那样使用匹配字母两级BCH码在s级闪存中进行页编码可以提供高效的错误纠正编码。BCH码特别适合于诸如非易失性闪存和PCM存储器之类的s级固态存储器的错误特性,记录介质受独立符号错误的影响,其中在当前非易失性存储器产品中,符号长度为1位至4位。此外,可以实现改进的误码性能,而对实施方式复杂性和功耗的影响最小。因此,可以通过使用所描述的系统获得卓越的整体性能。
当然将理解,在不偏离本发明的范围的情况下,可以对所述示例性实施例做出许多更改和修改。
Claims (13)
1.一种用于在固态存储器件(1)的s级存储器(2)中记录输入数据的方法,其中s≥2,所述方法包括:
根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码,所述第一和第二BCH码是二进制BCH码,其中所述集合中的所述M个第一码字的多个加权和中的每一个加权和均是相应第二码字,并且其中由与第三线性码对应的奇偶校验矩阵定义所述多个加权和的加权系数;以及
在所述s级存储器(2)中记录M个第一码字的各所述集合。
2.根据权利要求1所述的方法,其中所述集合中的所述M个第一码字的和是所述第二码字。
3.根据任一上述权利要求所述的方法,其中:
所述第一和第二码字均包括N个q元符号,其中q=pk,k是正整数并且p是素数;以及
q和s分别是公共基数r的u和v次幂,其中u和v是正整数并且k≥u,由此p(k/u)v=s。
4.根据权利要求3所述的方法,其中s≠q。
5.根据权利要求4所述的方法,所述方法包括在所述s级存储器(2)中记录之前,将每个q元第一码字转换成r元第一码字。
6.根据权利要求5所述的方法,其中r≠s,所述方法包括根据预定映射方案将每个r元第一码字的v个r元符号的连续集合映射到所述s级存储器(2)的相应对应级别,并且在所述s级存储器(2)中作为所述对应级别而记录v个r元符号的每个集合。
7.根据权利要求4所述的方法,其中q=r≠s,所述方法包括根据预定映射方案将每个q元第一码字的v个q元符号的连续集合映射到所述s级存储器(2)的相应对应级别,并且在所述s级存储器(2)中作为所述对应级别而记录v个q元符号的每个集合。
8.根据权利要求3所述的方法,其中r=s>2。
9.根据权利要求3所述的方法,其中r=2并且k=u。
10.根据权利要求1所述的方法,其中s>2。
11.根据权利要求1所述的方法,包括将M个第一码字的每个所述集合记录在所述固态存储器件的相应写入位置中。
12.一种用于对要记录在固态存储器件(1)的s级存储器(2)中的输入数据进行编码的编码器装置,其中s≥2,所述编码器装置包括:
两级BCH编码器(3),其用于根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码,其中所述第一和第二码字均包括N个q元符号,其中q≠s,q=pk,k是正整数并且p是素数,并且其中q和s分别是公共基数r的u和v次幂,其中u和v是正整数并且k≥u,由此p(k/u)v=s,所述第一和第二BCH码是二进制BCH码,其中所述集合中的所述M个第一码字的多个加权和中的每一个加权和均是相应第二码字,并且其中由与第三线性码对应的奇偶校验矩阵定义所述多个加权和的加权系数;以及
符号转换器(4),其用于将每个第一码字的所述q元符号转换成s元字母以便记录在所述s级存储器(2)中。
13.一种固态存储器件(1),包括:
s级存储器(2),其中s≥2;以及
两级BCH编码器(3),其用于根据第一和第二BCH码对包含M个输入数据字的组中的输入数据字进行编码,以针对每个组产生所述第一BCH码的M个第一码字的一个集合,使得所述M个第一码字的预定线性组合产生所述第二BCH码的第二码字,其中所述第二BCH码是所述第一BCH码的子码,所述第一和第二BCH码是二进制BCH码,其中所述集合中的所述M个第一码字的多个加权和中的每一个加权和均是相应第二码字,并且其中由与第三线性码对应的奇偶校验矩阵定义所述多个加权和的加权系数;
其中所述器件(1)适于在所述s级存储器(2)中记录M个第一码字的各集合。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP10158438 | 2010-03-30 | ||
EP10158438.1 | 2010-03-30 | ||
PCT/IB2011/051219 WO2011121490A1 (en) | 2010-03-30 | 2011-03-23 | Two -level bch codes for solid state storage devices |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102823141A CN102823141A (zh) | 2012-12-12 |
CN102823141B true CN102823141B (zh) | 2015-09-16 |
Family
ID=44235962
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180016566.8A Expired - Fee Related CN102823141B (zh) | 2010-03-30 | 2011-03-23 | 用于固态存储器件的两级bch码 |
Country Status (6)
Country | Link |
---|---|
US (1) | US8930798B2 (zh) |
JP (1) | JP5723967B2 (zh) |
CN (1) | CN102823141B (zh) |
DE (1) | DE112011101116B4 (zh) |
GB (1) | GB2492708B (zh) |
WO (1) | WO2011121490A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20160118365A (ko) * | 2012-02-06 | 2016-10-11 | 노키아 테크놀로지스 오와이 | 코딩을 위한 방법 및 장치 |
KR20140114516A (ko) * | 2013-03-15 | 2014-09-29 | 삼성전자주식회사 | 메모리 컨트롤러 및 이의 동작 방법 |
RU2013128346A (ru) * | 2013-06-20 | 2014-12-27 | ИЭмСи КОРПОРЕЙШН | Кодирование данных для системы хранения данных на основе обобщенных каскадных кодов |
US9219503B2 (en) * | 2013-10-16 | 2015-12-22 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Systems and methods for multi-algorithm concatenation encoding and decoding |
GB2525430B (en) | 2014-04-25 | 2016-07-13 | Ibm | Error-correction encoding and decoding |
US9524207B2 (en) * | 2014-09-02 | 2016-12-20 | Micron Technology, Inc. | Lee metric error correcting code |
US9710199B2 (en) | 2014-11-07 | 2017-07-18 | International Business Machines Corporation | Non-volatile memory data storage with low read amplification |
US10162700B2 (en) | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
US9647694B2 (en) | 2014-12-28 | 2017-05-09 | International Business Machines Corporation | Diagonal anti-diagonal memory structure |
US9712190B2 (en) | 2015-09-24 | 2017-07-18 | International Business Machines Corporation | Data packing for compression-enabled storage systems |
US9870285B2 (en) | 2015-11-18 | 2018-01-16 | International Business Machines Corporation | Selectively de-straddling data pages in non-volatile memory |
US10333555B2 (en) * | 2016-07-28 | 2019-06-25 | Micron Technology, Inc. | Apparatuses and methods for interleaved BCH codes |
US10275309B2 (en) | 2017-04-26 | 2019-04-30 | Western Digital Technologies, Inc. | Multi-layer integrated zone partition system error correction |
CN109857340B (zh) * | 2019-01-14 | 2022-05-06 | 普联技术有限公司 | Nor flash中文件的存储和读取方法、装置及存储介质 |
US11184021B2 (en) | 2019-03-15 | 2021-11-23 | Samsung Electronics Co., Ltd. | Using predicates in conditional transcoder for column store |
US10871910B1 (en) * | 2019-09-27 | 2020-12-22 | Western Digital Technologies, Inc. | Non-volatile memory with selective interleaved coding based on block reliability |
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 (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227194A (zh) * | 2008-01-22 | 2008-07-23 | 炬力集成电路设计有限公司 | 用于并行bch编码的电路、编码器及方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5942005A (en) | 1997-04-08 | 1999-08-24 | International Business Machines Corporation | Method and means for computationally efficient error and erasure correction in linear cyclic codes |
US6275965B1 (en) * | 1997-11-17 | 2001-08-14 | International Business Machines Corporation | Method and apparatus for efficient error detection and correction in long byte strings using generalized, integrated, interleaved reed-solomon codewords |
US5946328A (en) * | 1997-11-17 | 1999-08-31 | International Business Machines Corporation | Method and means for efficient error detection and correction in long byte strings using integrated interleaved Reed-Solomon codewords |
JPH11212876A (ja) | 1998-01-21 | 1999-08-06 | Sony Corp | 符号化方法およびそれを利用したメモリ装置 |
KR100535291B1 (ko) | 1998-01-21 | 2005-12-09 | 소니 가부시끼 가이샤 | 엔코딩 방법 및 메모리 장치 |
IT1321049B1 (it) * | 2000-11-07 | 2003-12-30 | St Microelectronics Srl | Metodo di costruzione di un codice a controllo dell'errore polivalenteper celle di memoria multilivello funzionanti a un numero variabile di |
US7231578B2 (en) | 2004-04-02 | 2007-06-12 | Hitachi Global Storage Technologies Netherlands B.V. | Techniques for detecting and correcting errors using multiple interleave erasure pointers |
US7844877B2 (en) | 2005-11-15 | 2010-11-30 | Ramot At Tel Aviv University Ltd. | Method and device for multi phase error-correction |
TWM314385U (en) * | 2006-10-23 | 2007-06-21 | Genesys Logic Inc | Apparatus for inspecting and correcting encoding random error of BCH |
US7895502B2 (en) | 2007-01-04 | 2011-02-22 | International Business Machines Corporation | Error control coding methods for memories with subline accesses |
CN101779379B (zh) * | 2007-08-08 | 2014-03-12 | 马维尔国际贸易有限公司 | 使用通用级联码(gcc)进行编码和解码 |
US8136020B2 (en) * | 2007-09-19 | 2012-03-13 | Altera Canada Co. | Forward error correction CODEC |
US8266495B2 (en) * | 2008-02-20 | 2012-09-11 | Marvell World Trade Ltd. | Systems and methods for performing concatenated error correction |
US8656263B2 (en) * | 2010-05-28 | 2014-02-18 | Stec, Inc. | Trellis-coded modulation in a multi-level cell flash memory device |
-
2011
- 2011-03-23 WO PCT/IB2011/051219 patent/WO2011121490A1/en active Application Filing
- 2011-03-23 CN CN201180016566.8A patent/CN102823141B/zh not_active Expired - Fee Related
- 2011-03-23 GB GB1219123.5A patent/GB2492708B/en not_active Expired - Fee Related
- 2011-03-23 US US13/582,768 patent/US8930798B2/en not_active Expired - Fee Related
- 2011-03-23 DE DE112011101116.4T patent/DE112011101116B4/de active Active
- 2011-03-23 JP JP2013501998A patent/JP5723967B2/ja active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227194A (zh) * | 2008-01-22 | 2008-07-23 | 炬力集成电路设计有限公司 | 用于并行bch编码的电路、编码器及方法 |
Non-Patent Citations (1)
Title |
---|
"Integrated Interleaving-A Novel ECC Architecture";M.Hassner等;《IEEE Transactions on magnetics》;20010331;第37卷(第2期);第773-775页 * |
Also Published As
Publication number | Publication date |
---|---|
DE112011101116B4 (de) | 2017-09-21 |
GB2492708A (en) | 2013-01-09 |
CN102823141A (zh) | 2012-12-12 |
WO2011121490A1 (en) | 2011-10-06 |
US20130013974A1 (en) | 2013-01-10 |
JP5723967B2 (ja) | 2015-05-27 |
JP2013524609A (ja) | 2013-06-17 |
GB201219123D0 (en) | 2012-12-05 |
US8930798B2 (en) | 2015-01-06 |
GB2492708B (en) | 2017-01-25 |
DE112011101116T5 (de) | 2013-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102823141B (zh) | 用于固态存储器件的两级bch码 | |
CN101944067B (zh) | 存储数据的方法和存储器系统 | |
CN103392172B (zh) | 纠正存储阵列中的擦除 | |
JP2013524609A5 (zh) | ||
KR101438072B1 (ko) | 소거 없는 플래시 메모리의 다중 프로그래밍 | |
US6732322B1 (en) | Encoding method and memory device | |
GB2527604A (en) | Data encoding in solid-state storage devices | |
CN101635158A (zh) | 编码和/或解码系统数据的方法、装置、系统和体系结构 | |
Wang et al. | Reliable MLC NAND flash memories based on nonlinear t-error-correcting codes | |
CN104303155A (zh) | 用于组合错误译码与调制方案的设备及方法 | |
CN106664098A (zh) | 用于将二进制映射到三进制及其反转的装置和方法 | |
US9059744B2 (en) | Encoding a data word for writing the encoded data word in a multi-level solid state memory | |
Nguyen et al. | Two-dimensional weight-constrained codes for crossbar resistive memory arrays | |
US9734010B2 (en) | Data encoding in solid-state storage apparatus | |
Gabrys et al. | Tackling intracell variability in TLC flash through tensor product codes | |
Cassuto et al. | Multi-block interleaved codes for local and global read access | |
US9639421B2 (en) | Operating method of flash memory system | |
Nielsen | List decoding of linear block codes | |
CN103151078B (zh) | 一种存储器检错纠错码生成方法 | |
Qin et al. | Time–space constrained codes for phase-change memories | |
KR20210001927A (ko) | 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법 | |
Youn et al. | Efficient encoding and decoding schemes for balanced codes | |
Pham | Term-Rank Codes for Data Storage Systems | |
Shetty et al. | Synthesis of BCH codes for enhancing data integrity in flash memories | |
Sima et al. | Correcting $ k $ Deletions and Insertions in Racetrack Memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150916 Termination date: 20210323 |
|
CF01 | Termination of patent right due to non-payment of annual fee |