CN103812512B - 具有交织的turbo乘积码(tpc) - Google Patents

具有交织的turbo乘积码(tpc) Download PDF

Info

Publication number
CN103812512B
CN103812512B CN201310743902.XA CN201310743902A CN103812512B CN 103812512 B CN103812512 B CN 103812512B CN 201310743902 A CN201310743902 A CN 201310743902A CN 103812512 B CN103812512 B CN 103812512B
Authority
CN
China
Prior art keywords
parity information
group
corrected
section
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.)
Active
Application number
CN201310743902.XA
Other languages
English (en)
Other versions
CN103812512A (zh
Inventor
N·库马
吴征
J·贝罗拉多
曾令琪
M·马罗
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.)
SK Hynix Memory Solutions America Inc
Original Assignee
SK Hynix Memory Solutions America Inc
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 SK Hynix Memory Solutions America Inc filed Critical SK Hynix Memory Solutions America Inc
Publication of CN103812512A publication Critical patent/CN103812512A/zh
Application granted granted Critical
Publication of CN103812512B publication Critical patent/CN103812512B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/27Coding, 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 using interleaving techniques
    • 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
    • H03M13/2918Coding, 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 with error correction codes in three or more dimensions, e.g. 3-dimensional product code where the bits are arranged in a cube
    • 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
    • H03M13/2927Decoding strategies
    • 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2963Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product 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/2957Turbo codes and decoding
    • H03M13/296Particular turbo code structure
    • H03M13/2966Turbo codes concatenated with another code, e.g. an outer block code

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

本发明涉及具有交织的TURBO乘积码(TPC)。执行与第二纠错码和第一纠错码相关联的解码。将Ns个第一和第二纠正的数据段、第一组奇偶校验信息、和第二组奇偶校验信息进行段间交织,以获得段间交织数据,其中所述Ns个数据段、Ns个第一组奇偶校验信息、和Ns个第二组奇偶校验信息已经使与所述第一和第二纠错码相关联的解码对其执行(Ns是被交织在一起的段的数量)。对所述段间交织数据和交织奇偶校验信息执行与第三纠错码相关联的解码,以至少获得第三纠正的交织数据。所述第三纠正的交织数据被解交织。

Description

具有交织的TURBO乘积码(TPC)
其他申请的交叉引用
本申请要求2012年11月8日提交的、题为用于NAND闪存技术的多级TPC的编号为61/724,093(代理案卷号LINKP128+)的美国临时专利申请,和2013年1月2日提交的、题为用于多级TURBO乘积码的误码平台减少的方案的编号为61/748,364(代理案卷号LINKP129+)的美国临时专利申请的优先权,将这两个申请为所有目的通过引用结合于本文中。
背景技术
正在探索供下一代固态存储系统使用的Turbo乘积码(TPC)。虽然目前的TPC技术具有许多吸引人的特征,但目前的TPC技术的一个缺点是相关联的误码平台(errorfloor)。在高信号噪声比(SNR)下,利用目前TPC技术的页面故障率(PFR)变缓。换一种方式,当位误差率(BER)较低时,性能是相对平坦的。相比之下,在当前的固态存储解决方案中所使用的纠错码在高SNR(即低BER)区域中具有瀑布状的性能曲线,使得不存在性能的平稳(leveling-off)。将期望下推误码平台(例如,使得性能曲线在其下变平的PFR比以前更好)的新的TPC技术。
附图说明
以下详细描述和附图中公开了本发明的各种实施例。
图1A是图示出了用于使用具有交织的Turbo乘积码(TPC)来编码信息的过程的实施例的流程图。
图1B和1C示出了图示段间TPC交织的解码过程的实施例的流程图。
图2是图示出了未结合交织的TPC系统所具有的问题的示图。
图3是图示出了使用第一代码所生成的第一组奇偶校验信息的实施例的示图。
图4是图示出了使用第二代码所生成的第二组奇偶校验信息的实施例的示图。
图5是图示出了由段内TPC交织系统所生成的交织数据的实施例的示图。
图6是图示出了由段内TPC交织系统所生成的交织奇偶校验信息的实施例的示图。
图7是图示出了第一段内TPC交织写处理器的实施例的示图。
图8A是图示出了列组合的Turbo乘积码(CCTPC)解码器的实施例的示图。
图8B是图示出了第一段内TPC交织读处理器的实施例的示图。
图9是图示出了段间TPC交织写处理器的实施例的示图。
图10是图示出了段间TPC交织读处理器的实施例的示图。
图11是用于将段间TPC交织信息写到存储器的过程的实施例的流程图。
图12A-12C是图示出了用于从存储器读取段间TPC交织信息的过程的实施例的示图。
图13是图示出了第二段内TPC交织写处理器的实施例的示图。
图14A是图示出了第二段内TPC交织读处理器的实施例的示图,示出了初始解码尝试期间所使用的CCTPC解码器。
图14B是图示出了第二段内TPC交织读处理器的实施例的示图,该第二段内TPC交织读处理器包括与使用第三代码的纠错解码相关联的部件。
图15是图示出了用于将段内TPC交织数据写到固态存储器的过程的第二实施例的流程图。
图16A-16D是图示出了用于从存储器读取段内TPC交织信息的过程的实施例的流程图。
发明内容
本发明可以按照多种方式实施,包括作为的过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置为执行指令的处理器,该指令被存储在与该处理器耦合的存储器上和/或由该存储器所提供。在本说明书中,本发明可以采取的这些实施方式或任何其他形式可被称为技术。在一般情况下,所公开的过程的步骤的顺序在本发明的范围内可被改变。除非另有说明,被描述为被配置成执行任务的诸如处理器或存储器的部件可以被实现为通用部件或专用部件,所述一般部件被暂时配置为在给定时间执行该任务,所述专用部件被制造为执行该任务。如本文所使用的,术语“处理器”是指被配置为处理诸如计算机程序指令的数据的一个或多个设备、电路、和/或处理核。
下面,与图示出本发明原理的附图一起提供本发明的一个或多个实施例的详细描述。结合这些实施例描述本发明,但本发明并不限定于任何实施例。本发明的范围仅由权利要求的限定,并且本发明涵盖许多替代、修改和等同方式。为了提供本发明的透彻理解,在下面的描述中阐述了许多具体细节。这些细节都是出于示例的目的而被提供的,并且可以根据不具有一些或所有这些具体细节的权利要求来实践本发明。为了清楚的目的,尚未详细描述与本发明有关的技术领域中已知的技术材料,使得本发明不会不必要地晦涩。
图1A是图示出了用于使用具有交织的Turbo乘积码(TPC)来编码信息的过程的实施例的流程图。在一些实施例中,该过程在存储系统中由写处理器来执行,该存储系统例如是固态存储系统(例如NAND闪存)。在一些实施例中,该过程在通信系统中由发送器实现,该通信系统例如是无线通信系统。
在100处,至少部分地基于数据段和第一纠错码来生成第一组奇偶校验信息。在一个示例中,该第一码是BCH码,并且数据段被布置为阵列(例如,具有一定数目的行和一定数目的列),其中使用BCH码对每行进行编码(例如,独立于任何其他行)以产生奇偶校验信息的多个行。所生成的奇偶校验信息的行是第一组奇偶校验信息的示例。
在102处,至少部分地基于数据段、第一组奇偶校验信息和第二纠错码来生成第二组奇偶校验信息。继续上面的示例,数据段和第一组奇偶校验信息被布置为阵列(例如,具有与对步骤100的阵列输入相同数目的行,但具有作为附加列而添加的第一组奇偶校验信息)。至少在这个示例中,将列分组在一起(例如,两列每组,三列每组等),并且使用另一种BCH码来编码这些列分组。注意,分组在一起的列的数目不一定是列的整数(例如,每组可以包括1.5个列每组,或列的一些其他的非整数)。
在108处,至少部分地基于数据段、第一组奇偶校验信息、以及第二组奇偶校验信息来生成交织数据。交织是数据的重新排序或重新排列,因此在步骤108处所输入的位数与在步骤108处所输出的位数相匹配。在一个示例中,在108处生成的交织数据包括多组交织数据,以及每组交织数据包括来自多个码字(例如,第一码的码字或第二码的码字)之一的单个采样。在这些实施例中,当利用第三码进行编码时(后续在步骤110处),第三码将跨越前两个码的多个码字。这是期望的,因为其可以打破误差,该误差阻碍第一码和第二码成功对一段进行成功解码。
在110处,至少部分地基于交织数据和第三纠错码来生成交织奇偶校验信息。例如,在步骤108处的交织数据可以在一些阵列内重新排列数据,并且使用BCH码沿着交织阵列的行来执行纠错编码。替代地,交织数据可以在垂直方向上进行编码。注意,“交织奇偶校验信息”指的不是被交织的奇偶校验信息,而是从交织数据所生成的奇偶校验信息。
在110处所生成的交织奇偶校验信息和/或第三码(此处两个术语可以被可互换地使用)以按需要为基础而被使用(例如,如果第一码和第二码本身无法成功解码所期望的段)。换句话说,虽然总是生成交织奇偶校验信息,但在某些情况下,在解码过程期间不使用该交织奇偶校验信息(例如,由于第一码和第二码足够用于解码)。
如图1A所示的过程,包括段内TPC交织以及段间TPC交织两者。在段内TPC交织中,与单个段相关联的信息在步骤108处被交织。为了使用比喻,段内TPC交织就像是混洗单包纸牌(而段间TPC交织就像是混洗多包纸牌)。图1A中,在段内TPC交织的实施例中,步骤100和102仅被执行一次,并且然后,过程前进到步骤108(例如,由于到交织器的所有输入都准备好)。
在段间TPC交织中,与多个段相关联的信息被交织。例如,如果两个段被交织,步骤100和102将均被执行两次。当步骤100(例如,行编码)和步骤102(例如,列编码)第一次被执行,其是对第一段执行,当步骤100中(例如,行编码)和步骤102(例如,列编码)第二次被执行,其是对第二段执行。只有这样,用于交织器的所有信息才准备好,并且步骤108可以被执行。然后,在步骤108处,对第一数据段、第二数据段、与第一数据段相关联的第一组奇偶校验信息、与第二数据段相关联的第一组奇偶校验信息、与第一数据段相关联的第二组奇偶校验信息、和与第二数据段相关联的第二组奇偶校验信息执行交织。
以下对图1A的附加示例进一步详细描述。
当提到解码所存储的数据时,存在两种可能性:(1)存在处罚(例如,关联于不得不获得附加段,而不是所期望的段),以便在解码期间使用第三码,或(2)对于在解码期间使用第三码而言不存在处罚(例如,由于不需要获取超出期望段的附加段以便在解码期间使用该第三码)。对于后一种情况,根据初始的尝试使用所有三个码。由于所有的码跨越完全相同的数据集,因此在使用所有三个码时存在很少的实际处罚,并且根据最初的解码尝试使用该第三码(除了所述第一和第二码外),将提高解码性能。从技术上讲,虽然可能存在与第三码的奇偶校验相关联的处罚,然而与总数据大小相比时,其是可以忽略不计的。
如果在解码期间(例如,由于必须从存储器中获取除了所期望的段外的其他段)存在与使用第三码相关联的处罚,那么解码仅以第一码和第二码开始。大多数段将可能在此时段期间进行解码,以及因此对于大多数段来说,在解码期间第三码将不被使用。在这种情况下(其包括段间TPC交织),以按需要为基础使用第三码。这是为了避免与使用第三码相关联的处罚,特别是需要将所有其他所需的数据段从固态存储器传输到读处理器,以便进行解码。基于它们的解码时间来对存储控制器进行评估和比较,并且不得不将所有其他数据段从固态存储器传输到读处理器(对于每个段,而不只是正难于被解码的段)引起了处罚。同样地,在段间TPC交织实施例和一些其他实施例中,在解码期间以按需要为基础使用第三码。
图1B和1C示出了图示段间TPC交织解码过程的实施例的流程图。在一些实施例中,所示的过程是在存储器系统中由读处理器所执行的。在其他实施例中,该过程是由通信系统中的接收器所执行。
如上面描述的,由于对于在段间TPC交织解码期间使用第三码而言存在处罚(即,获取与所期望的段交织在一起的其他段所花费的时间),在所示的段间TPC交织解码期间,第三码仅以按需要为基础而被使用。本文所述的技术的优点是,大多数段可以在不使用第三码和/或不需要与另一段相关联的信息的情况下被解码。只有当第一码和第二码不足以解码所期望的段时(例如,达到最大数量的解码尝试而没有成功解码所期望的段),才涉及到第三码。以按需要为基础使用第三码是有吸引力的,这是因为使用第三码对于每个段而言消耗了不必要的功率、带宽、和/或其他资源,这些不是绝对必要的(例如,由于第一码和第二码本身已经将是足够的)。考虑到这一点,图1B的过程通过获得数据段、第一组奇偶校验信息和第二组奇偶校验信息而在151处开始。例如,在151处获得的所有信息可以从固态存储器(例如,NAND闪存)获得。自然地,在151处获得的信息可能包括误差。
在156处,至少对该数据段、第一组奇偶校验信息和第二组奇偶校验信息执行与第二纠错码相关联的解码,以至少获得纠正的数据段、纠正的第一组奇偶校验信息、以及纠正的第二组奇偶校验信息。在某些情况下,误差可能仍留在步骤156之后的纠正的信息中。在某些情况下,纠错解码可能无法以减少误差的数量,以及纠正的信息与输入到步骤156的信息的对应块相匹配。
在158,至少对纠正的数据段、纠正的第一组奇偶校验信息、以及纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以至少获得进一步纠正的数据段、进一步纠正的第一组奇偶校验信息、以及进一步纠正的第二组奇偶校验信息。
除了能够在不使用第三码的情况下解码每个段(例如,假设条件是正确的),每个段能够在不使用与另一段相关联的信息的情况下被解码。对于其中每个段(例如,再加上与其相关联的第一组奇偶校验信息和第二组奇偶校验信息)被设计为适合单I/O访问的宽度(例如,存储控制器“芯片”和固态存储“芯片”之间的数据总线的宽度)的那些系统而言,可能期望在不需要来自任何其他段的信息的情况下能够解码。因此,如果每个段可以独立于任何其他段而被解码,则仅需要单I/O读取或访问。需要两个或更多个I/O读取以便读取和解码单个段可能是没有吸引力的。
注意,步骤156和步骤158的顺序仅仅是示例性的,并且可以按需要被切换。
在160处,确定解码是否成功。例如,如果第一码和第二码指示不存在剩余误差,则将该段确定为被成功解码,并且输出该段。如果解码不成功,则在162处确定是否已达到最大尝试次数。例如,在转到第三码之前,第一码和第二码可被给予十次尝试(例如,每个都给予)以解码所期望的段。对于一段而言并不罕见的是,需要在156处使用第二码以及在158处使用第一码的两个或更多个解码通行证(例如,每个都需要),并且因此在162处的最大尝试次数通常是两次或更多次,使得两次或多次尝试在“放弃”并使用第三码以及第一码和第二码之前被准予。
如果还没有达到最大尝试次数,则与第二纠错码相关联的解码在156处再次被尝试。如果已经达到了最大尝试次数,则执行下图中所执行的过程。
如图1B中所示,如果第一码和第二码(本身)无法成功解码所期望的段,则以按需要为基础使用第三码。在步骤162处达到最大尝试次数之前,大多数段将最终能够以成功解码的结果退出步骤160。
然而,如果使用第三码进行解码是适当的(例如,由于达到最大尝试次数),那么在图1C中继续段间TPC交织解码过程。在一些实施例中,在这一点上执行数据冲洗,使得从图1B中得到的中间数据或中间结果被丢弃,并不在图1C中被使用。
在180处,从固态存储器获得与所期望的段相关联的(Ns-1)个数据段、与所期望的段相关联的(Ns-1)个第一组奇偶校验信息、以及与所期望的段相关联的(Ns-1)个第二组奇偶校验信息。Ns是交织在一起的段的数量,因此如果Ns=4(作为示例),那么将获得与所期望的段交织一起的其他三个段,以及它们的奇偶校验信息。在180处的该检索具有与它相关联的处罚,所以其仅在使用第一和第二码无法解码所期望的段的情况下才被执行。
在186处,执行与第二纠错码相关联的解码。例如,如果Ns=4,则从固态存储器获得其他三个段(与所期望的段交织在一起)(连同其各自的(Ns-1)个第一组奇偶校验信息和(Ns-1)个第二组奇偶校验信息),并使用第二码对其进行解码。在该示例中,没有必要再次处理所期望的段,这是由于已经在图1B中的步骤156处使用第二码来对其进行解码。
在188处,执行与第一纠错码相关联的解码。例如,由步骤186输出的(Ns-1)个段和奇偶校验信息可以被输入到步骤186,用于使用第一纠错码进行解码。按需要,步骤186和188可以在前进到步骤181之前对(Ns-1)个段如所期望的那样多地进行重复。注意,步骤186和步骤188的顺序(例如,用第二码解码之前可以执行用第一代码解码)可能被交换。
在181处,对Ns个第一纠正和第二纠正的数据段、Ns个第一纠正和第二纠正的第一组奇偶校验信息、以及Ns个第一纠正和第二纠正的第二组奇偶校验信息执行段间交织,以获得段间交织数据,其中,Ns个数据段、Ns个第一组奇偶校验信息、以及Ns个第二组奇偶校验信息已经使与第一纠错码相关联的解码和与第二纠错码相关联的解码对其执行。如本文所使用的,“第一纠正的”是指已经(例如,最近)使用第一(纠错)码进行纠正的一些信息。类似地,“第二纠正的”和“第三纠正的”是指已经(例如,最近)(分别)使用第二码或第三码进行纠正的信息。
在182处,对段间交织数据和交织奇偶校验信息执行与第三纠错码相关联的解码,以至少获得第三纠正的交织数据。在184处,对第三纠正的交织数据执行解交织。注意,这里示出的码被使用的顺序(在该示例中,第二码、第一码、以及然后第三码)仅仅是示例性的,并且不意图是限制性的。
在190处确定对于所期望的段而言解码是否成功。例如,如果没有被任何码标记误差,则成功解码的所期望的段被输出,并且过程结束。如果没有,则在192处,确定是否继续尝试。如果不进行尝试,则过程结束,并声明解码失败。在一个实施例中,步骤192包括检查对第三码的迭代次数。如果使用第三码进行解码超过一定的最大迭代次数,则该过程决定停止尝试,并声明解码失败。(注意,如果最大尝试次数被用在192处,则该最大尝试次数不需要与图1B中在162处的最大尝试次数相匹配)。如果确定保持尝试,则该过程返回到步骤186以便进行另一解码途径。
根据特定实施方式(例如,根据实际上存储或传输何种信息),图1A-1C的各种实施例可以包括各种步骤。在下面进一步详细描述图1A-lC的更具体的示例。
图2是图示了未结合交织的TPC系统所具有的问题的示例的示图。在所示示例中,阵列元素200(在第j行和第k至(k+9)列处)是TPC阵列中的元素,在传统的TPC系统的这个示例中,T=3的BCH码在水平方向上被施加到每一行,其中T是可以被纠正的误差的最大数目(即,使得每行最多三个误差可以通过使用第一码来纠正)。在垂直方向上,列被分组,十列分为一组。每个十列的组通过使用第二T=3的BCH码来进行纠错编码,以便使用第二码来纠正最多三个误差(每个十列的组)。
在阵列元素200中,存在4个位误差,这超出了在水平方向上的第一码和在垂直方向上的第二码的纠错能力。TPC解码期间,解码在水平方向上的第一码和在垂直方向上的第二码之间交替,使得它们按照这样的系统轮流进行解码,即,两个码将逐渐降低误差数,直到所有的误差都已被纠正。然而,在这个示例中,由于误差的数量超出第一码和第二码的纠错能力,TPC解码将无法降低在阵列元素200中的误差数目。
与此相比,具有交织的TPC(例如,段内TPC交织,或段间TPC交织),能够纠正阵列元素200中所示的误差。如果改为使用具有交织的TPC,并且示例误差模式被接收,则解交织过程(例如,在读处理器或接收器处所执行的)将使阵列元素200中所示的四个误差被分散在多个行和/或多个十列的组中间。从本质上讲,解交织使误差被分解到第三码的不同码字中,使得第三码对其进行纠正。第三码消除或减少了传统TPC中的弱点。也就是说,处于不良位置的少数误差将引起解码失败。交织使不良位置中的这样的误差被分离到第三码的不同码字中,使得第三纠错解码器能够对第三码空间中的不同码字中的那些误差单独地进行起作用。
下面的附图描述了段内TPC交织的第一示例。
段内TPC交织示例1
图3是图示出使用第一码生成的第一组奇偶校验信息的实施例的示图。在各种实施例中,由段内TPC交织系统或段间TPC交织系统执行处理。为了方便起见,在该图和下面的图中示出相对较小的数据段。自然地,所示的大小和尺寸仅仅是示例性的,并且本文描述的技术可适用于任何大小或尺寸。
行300a-300d中的每行是通过使用第一码(例如,BCH码)所独立纠错编码的,以获得相应的奇偶校验信息。行300a被纠错编码以生成奇偶校验信息302a,行300b被纠错编码以生成奇偶校验信息302b,行300c被纠错编码以生成奇偶校验信息302c,以及行300d被纠错编码以生成奇偶校验信息302d。奇偶校验信息302a-302d示出了在图1A中的步骤100处所生成的第一数据段的示例。
图4是图示出使用第二码生成的第二组奇偶校验信息的实施例的示图。这里所示的示例可适用于段内TPC交织系统以及段间TPC交织系统两者。图4继续图3中的示例。
在所示的示例中,成对的列被分组在一起,并对列对400a、列对400b、以及列对400c执行纠错编码(例如,使用BCH码)。从列对400a生成奇偶校验位402a,从列对400b生成奇偶校验位402b,以及从列对400c生成奇偶校验位402c。列对可以按照任何顺序被输入到纠错编码器中。例如,列对400a可以按照序列[D11 D12 D21...D32 D41 D42]或按照序列[D11 D21 D31...D22 D32 D42]进行编码。奇偶校验位402a-402c示出了在图1A中的步骤102处所生成的第二组奇偶校验信息。自然地,任意数量的列可以被分组在一起。在一些实施例中,非整数的列被分组在一起(例如,2.5个列被分组在一起)。
分组列的好处是生成较少的开销信息。例如,如果列没有被分组,则将为每一列生成奇偶校验位,在本示例中产生6个奇偶校验位。与将两列分组在一起并然后进行纠错编码相比,这是两倍多的奇偶校验位。
图5是图示出由段内TPC交织系统所生成的交织数据的实施例的示图。图5继续图4的示例。这里所示的示例是段内TPC交织示例,并且因此,将数据段、用于单个段的第一组奇偶校验信息和第二组奇偶校验信息进行交织(例如,不将其与其他段所关联的信息进行混合)。交织重新排列数据的序列或顺序,并因此使交织前的数据量与交织后的数据量相同(即,预交织数据500的大小与交织数据502相同)。在这个示例中,使用随机模式来交织预交织数据500,以生成交织数据502。任何种类的交织都将起作用,只要它随机交织所有行和列组成的码。交织器背后的构想是要打破由行和列解码所不能解码的难以摆脱的误差模式。交织将传播所有的误差,这将最终通过使用第三码而得以解码。如图2中的示例中那样,在TPC的误码平台中占主导地位的最低权重误差模式是在一行码中的模式,以及在一列码中的模式。对角线交织器可以将这种误差模式中每个位分解为第三码的不同码字,其由此可以由第三码进行纠正。
图6是图示出由段内TPC交织系统所生成的交织奇偶校验信息的实施例的示图。图6继续图5的示例。在这个示例中,使用第三码(例如,BCH码)来将列对600a-600c进行纠错编码,以生成(各自的)奇偶校验位602a-602c。在一些其他实施例中(未示出),为了生成交织奇偶校验信息,与数据的列相反,数据的行通过使用第三码来被纠错编码。奇偶校验位602a-602c是在图1A中的步骤110处生成的交织奇偶校验信息的示例。
图7是图示出了第一段内TPC交织写处理器的示图。图7示出了执行图1A和3-6中所示的处理的系统的示例。在一些实施例中,使用例如专用集成电路(ASIC)或现场可编程门阵列(FPGA)的半导体装置来实现写处理器700。虽然此处所示出了存储系统,但类似的部件也可以被通信系统中的发送器所采用(例如,在通过无线信道或有线连接被传输之前)。
数据段被输入到写处理器700中。第一纠错编码器704输入数据段并输出数据段以及第一组奇偶校验信息。例如,第一纠错编码器704执行图3中所示的处理。
将数据段和第一组奇偶校验信息从第一纠错编码器704传递到列分组器705。列分组器705将任意数量的列分组在一起,以及然后第二纠错编码器706编码被分组的列,从而生成数据段、第一组奇偶校验信息、和第二组奇偶校验信息。例如,列分组器705和第二纠错编码器706执行图4中所示的分组和编码。第一纠错编码器704和列分组器705、以及第二纠错编码器706一起包括列组合的turbo乘积码(CCTPC)编码器702。
段内交织器708输入数据段、第一组奇偶校验信息、和第二组奇偶校验信息,并且交织所有的位以产生交织数据。段内交织器708被配置为交织用于单个段的信息。图5示出了由段内交织器708执行的过程的示例。
将交织数据从段内交织器708传递到第三纠错编码器710,其使用第三码生成交织奇偶校验信息。图6示出了由第三纠错编码器710执行的处理的示例。在这个示例中,数据段、第一组奇偶校验信息和第二组奇偶校验信息、以及交织奇偶校验信息被存储在固态存储器720中。在一些实施例中,数据段、第一组奇偶校验信息和第二组奇偶校验、以及交织奇偶校验信息被拟合到单个读取(例如,页面)中,使得所有的信息都可以在单个访问中被读回。
图8A是图示出列组合的turbo乘积码(CCTPC)解码器的实施例的示图。CCTPC解码器802包括:第一纠错解码器806和第二纠错解码器804。CCTPC解码器802对应于图7中的CCTPC编码器702,第一纠错解码器806对应于图7中的第一纠错编码器704,和第二纠错解码器804对应于图7中的第二纠错编码器706。数据段(例如,从固态存储器中读取的,可能具有误差)、第一组奇偶校验信息(例如,从固态存储器中读取的,可能具有误差)、以及第二组奇偶校验信息(例如,从固态存储器中读取的,可能具有误差)可以被输入(未示出)到第二纠错解码器804,其生成纠正的数据段、纠正的第一组奇偶校验信息、和纠正的第二组奇偶校验信息。在一些情况下,第二纠错解码器804无法进行任何纠正(例如,由于误差数超过第二码的纠错能力),并且输出的信息与输入的信息相同。
第一纠错解码器806输入纠正的数据段、纠正的第一组奇偶校验信息、和纠正的第二组奇偶校验信息,并输出进一步纠正的数据段、进一步纠正的第一组奇偶校验信息、和进一步纠正的第二组奇偶校验信息。注意,这里示出的解码的顺序仅仅是示例性的,并且可根据需要进行改变。例如,如在图8A中所示,在某些情况下,先执行与第一码相关联的纠错解码。
如果第一码和第二码两者都指示不存在任何误差,那么将该段由读处理器800输出。如果不是这样,则第二纠错解码器804和第一纠错解码器806轮流进行解码,直到达到最大尝试次数,或直至该段被成功解码和输出。在某些情况下,最大的尝试次数被设置为1,使得在尝试第三码之前,第一码和第二码仅被使用一次。下图示出了这样的示例。在一些其他实施例中(例如,段间TPC交织),最大尝试次数被设置为2或更多(例如,由于存在与使用第三码的解码相关联的处罚,因此不期望在利用第一码和第二码的仅一次解码尝试之后转到第三码)。
图8B是图示出了第一段内TPC交织读处理器的实施例的示图。在所示的示例中,读处理器800对应于图7中的写处理器700。在一些实施例中,使用例如专用集成电路(ASIC)或现场可编程门阵列(FPGA)的半导体装置来实现读处理器800。读处理器800示出了对如图3-6中所示被编码的数据进行解码的系统的一个示例。
在所示的示例中,将读取的数据段(可能具有误差)、读取的第一组奇偶校验信息(可能具有误差)、以及读取的第二组奇偶校验信息(可能具有误差)从固态存储器820输入到CCTPC解码器802。图8A示出了CCTPC解码器802的更详细视图。如上所述,CCTPC解码器802对来自固态存储器的信息执行使用所述第一码和第二码的解码。在这个特定的段内TPC交织示例中,CCTPC解码器802尝试解码一次,并然后不再次执行解码,直到尝试第三码之后。如果CCTPC解码器802检测没有误差,则输出成功解码的段,并且读处理器停止(或进行下一个所期望的段的读取和处理)。
如果CCTPC解码器802无法解码所期望的段,则将第一和第二纠正的段、第一和第二纠正的第一组奇偶校验信息、以及第一和第二纠正的第二组奇偶校验信息传递到段内交织器810。段内交织器810执行与在图7中的段内交织器708相同的交织。由于第三纠错解码器812期待看到交织数据(而不是未交织形式),段内交织器810对输入信息进行操作,以便将其变成由第三纠错解码器812所期待的形式。将交织数据从段内交织器810传递到第三纠错解码器812。第三纠错解码器812生成第三纠正的交织数据和第三纠正的交织奇偶校验信息。
段内解交织器814输入第三纠正的交织数据,执行对由段内交织器810所执行的重排列或重新排序的反转,并从第三纠正的交织数据输出第三纠正的段、第三纠正的第一组奇偶校验信息、以及第三纠正的第二组奇偶校验信息(例如,图1c中的步骤184的一个示例)。如果第三纠错解码器812能够去除所有剩余的误差,则将成功解码的段输出,并且读处理器800停止处理或继续到下一段。
如果在所期望的段中,仍留有一些误差(例如,由一个或多个的码所指示),则CCTPC解码器802输入第三纠正的段、第三纠正的第一组奇偶校验信息、和第三纠正的第二组奇偶校验信息,并且处理这些信息。只要需要或直到达到最大尝试次数为止,CCTPC解码器802、段内交织器810、第三纠错解码器812、和段内解交织器814可以继续。
注意的是,在此图中和其他图中所示的码序列仅仅是示例性的。可使用任何的码序列(例如,(码1、码2、码3)或(码3、码1、码2)等)。
与传统的TPC系统相比,上述段内TPC交织实施例降低了误码平台。然而,如果与第三码相关联的开销信息的量可以被更进一步降低,这将是期望的。下面的图描述了段间TPC交织实施例,其准许了与第三码相关联的开销信息的量(每段)上的减少。在下面的图中,由于在用第三码进行纠错编码之前,将四个段(示例性的数字)交织在一起,因此减少了每段的与第三码相关联的开销信息的量。
段间TPC交织的示例
图9是图示出段间TPC交织写处理器的实施例的示图。图9是执行图1A的过程的系统的一个实施例。在所示的示例中,将四个数据段(分别)输入到CCTPC编码器902a-902d。CCTPC编码器902a-902d如图7中以上所述的进行操作(例如,使用第一码和第二码来分别生成用于输入到该特定CCTPC编码器的数据段的第一组奇偶校验信息和第二组奇偶校验信息)。为了保留可读性,包括在CCTPC编码器中的第一纠错编码器和第二纠错编码器在图9中未被示出。CCTPC编码器902a-902d中的每个输出向该特定CCTPC编码器输入的特定数据段、对应的第一组奇偶校验信息、和对应的第二组奇偶校验信息(为了可读性,在图9中未标记)。
数据组合器904组合了输入的四个数据段、四个第一组奇偶校验信息、和四个第二组奇偶校验信息,并且输出组合的数据。数据组合器904可以被认为是级联器(concatenater),或者是12至1的并行到串行转换器,其中位值没有被改变,而仅将输入收集或集结在一起。
组合的数据由段间交织器906进行交织,以产生交织数据。可以使用任何所期望的交织模式,诸如随机交织模式或对角线交织模式。不同于在图7中的段内交织器708,段间交织器906被配置为混合或交织来自多个段的信息,在这种情况下是四个段。将交织数据传递给使用第三码生成交织奇偶校验信息的第三纠错编码器908。
将四个数据段、四个第一组奇偶校验信息、四个第二组奇偶校验信息以及交织奇偶校验信息存储在固态存储器920中。如以前一样,以按需要为基础使用第三码,因此解码将以第一码或第二码开始,并且不使用第三码,除非确定第一码和第二码将不会成功解码该段(例如,达到最大尝试次数)。同样地,如果将未交织的数据(其准备好通过使用第一码或第二码来被解码)存储在固态存储器920中,其与由段间交织器906所输出交织数据相反,则这对于读处理器而言是更有效的。
在一些应用中,虽然页面(例如,16kB)是可从固态存储器读回的最小单位,但是存储控制器(例如,其包括读处理器)可以选择为将它希望的任何4kB的段从固态存储器传送到存储控制器。在存储器产业中,4kB段可以被回读和解码的速度是用于评估和/或比较不同的存储控制器的重要品质因数(figure of merit)。由于这一点,在一些实施例中,每个数据段(例如,输入到写处理器900中)是4k字节,使得每个段都可以被相对迅速地单独读取(并因此该存储控制器与其竞争对手相比,具有良好的性能测量)。
图10是图示出段间TPC交织读处理器的实施例的示图。读处理器1000对应于图9中的写处理器900。如上所述,由于存在与从固态存储器获取其他段(其与所期望的段一起被交织)相关联的处罚,因此以按需要为基础使用第三码。同样地,处理开始于一个段及其关联的奇偶校验信息。从固态存储器1020获得(例如单个)数据段(可能含有误差)、第一组奇偶校验信息(可能含有误差)、以及第二组奇偶校验信息(可能含有误差),并将其输入到CCTPC解码器1002a。在这个示例中,CCTPC解码器1002a被指定为将被用于初始解码尝试的解码器(例如,解码器1002a-l002d中的解码器)。为了保留可读性,从固态存储器1020传递到CCTPC解码器1002a的三个信号未被示出。
CCTPC解码器1002包括第一纠错解码器(未示出)和第二纠错解码器(未示出)。那两个解码器轮流对该段进行解码,直到段被成功解码(在该点处该段被输出并且过程结束),或者直到达到最大尝试次数(例如,在该点处系统决定第一码和第二码将不能够独立地对该段进行解码,并且应当使用第三码)。如果达到最大尝试次数,则在解码中使用第三码,并且从固态存储装置1020中获取与所期望的段交织的其他段。通常,大多数段将能够只通过使用第一码和第二码来被解码,而不使用第三码并且不从存储器获取其他相关的段。
在这个系统中,四个段及相关的奇偶校验信息被交织在一起,并且将第三码应用于该段间TPC交织信息上。同样地,从固态存储器获得与所期望的段交织在一起的其他三个段、与那三个段相关联的第一组奇偶校验信息和与那三个段相关联的第二组奇偶校验信息。为了可读性,固态存储器1020和CCTPC解码器1002b-1002d之间的信号没有被标记。然后CCTPC解码器1002b-1002d如上所述地处理这些段(例如,对于一些最大迭代次数而言或直至该特定段被成功解码)。
CCTPC解码器1002a-1002d均输出第一和第二纠正的数据段、第一和第二纠正的第一组奇偶校验信息、以及第一和第二纠正的第二组奇偶校验信息,并把其传递给数据组合器1008。这四个段、四个第一组奇偶校验信息、和四个第二组奇偶校验信息由数据组合器1008进行组合,以生成组合的数据。数据组合器1008执行与图9中的数据组合器904相同的处理。
段间交织器1010对组合的数据进行交织,以生成交织数据。第三纠错解码器1012从段间交织器1010取得交织数据,并从固态存储器1020读取交织奇偶校验信息,并执行使用第三码的纠错解码。第三纠正的交织奇偶校验信息和第三纠正的交织数据由第三纠错解码器1012输出。
段间解交织器1014解交织第三纠正的交织数据,以获得四个(第三纠正的)段,四个(第三纠正的)第一组奇偶校验信息、以及四个(第三纠正的)第二组奇偶校验信息(所有这些都已经使用第三码来纠正)。由第一CCTPC解码器(1002a)来处理第一段、与该段相关联的第一组奇偶校验信息、和与该段相关联的第二组奇偶校验信息。类似地,第二CCTPC解码器(1002b)处理第二段、相关联的第一组奇偶校验信息、和相关联的第二组奇偶校验信息。第三CCTPC解码器1002c和第四CCTPC解码器1002d类似地处理相似的信息组。
如果在所期望的段中不存在剩余误差,则所期望的段(以及如果已被成功地解码的话,可能是其他段中的一个或多个)被输出(例如,来自段间解交织器1014的输出)。如果在所期望的段中仍然存在至少一个误差,则处理继续经过循环,该循环包括CCTPC解码器1002a-1002d、数据组合器1008、段间交织器1010、第三纠错解码器1012、以及段间解交织器1014。注意,与来自固态存储器1020的输入不同,来自段间解交织器1014的输入已通过使用第三码来被纠正,使得大约在此刻质量更好,并且有更好的机会成功解码所期望的段。
在一些点处,如果所期望的段无法被成功解码(例如,在一些数量的总体或全局尝试之后),系统至少对于所期望的段声明误差(即,由于其他的三个段可以能够仅通过使用第一码和第二码而被成功地解码)。
图11是图示出了用于将段间TPC交织信息写到存储器的过程的实施例的流程图。图11描述了由图9中的写处理器900所执行且是图1A的一个实施例的处理。在该图中具有与图1A中的步骤类似编号的步骤是那些步骤的示例(例如,步骤100b是图1A中的步骤100的示例)。在1100处,获得Ns个数据段。Ns是段间TPC交织系统中(与它们相关联的奇偶校验信息)交织在一起的段的数量。例如,在图9中,Ns=4。
在100b处,至少部分地基于Ns个数据段和第一纠错码来生成Ns个第一组奇偶校验信息。在102b处,至少部分地基于Ns个数据段、Ns个第一组奇偶校验信息和第二纠错码来生成Ns个第二组奇偶校验信息。例如,在图9中,由CCTPC解码器902a-902d执行步骤100b和102b。
在108b处,将Ns个数据段、Ns个第一组奇偶校验信息和Ns个第二组奇偶校验信息进行段间交织,以便生成段间交织数据。例如,在图9中,由段间交织器906执行步骤108b。
在110b处,至少部分地基于段间交织数据和第三纠错码来生成段间交织奇偶校验信息。例如,在图9中,由第三纠错编码器908执行步骤110b。
在1102处,将Ns个数据段、Ns个第一组奇偶校验信息、Ns个第二组奇偶校验信息、和段间交织奇偶校验信息存储在固态存储器上。例如,在图9中,将来自CCTPC编码器902a-902d的12个输出和来自第三纠错编码器908的(段间)交织奇偶校验信息存储在固态存储器920中。在一些实施例中,将Ns个段一起存储在单个页面中(其能够在单个读取中被读回),并切将相关联的奇偶校验信息存储在与该页面相关联的额外的字节中。在一些实施例中,将这些段放到配对平面页面中,因为读取时间可被此结构的页面所共享。
图12A-12C是图示出用于从存储器读取段间TPC交织信息的过程的实施例的流程图。图12A-12C描述了由图10中的读处理器1000所执行的处理。如以前一样,具有类似编号的步骤是那些步骤的示例。
在151b处,从固态存储器读取所期望的数据段、与所期望的数据段相关联的第一组奇偶校验信息、以及与所期望的数据段相关联的第二组奇偶校验信息。由于这是段间TPC交织示例,在151b处获得的段被称为所期望的段,以便将其区别于与所期望的段交织的其他三个段(示例性的数字)。
在156b处,对所期望的数据段、第一组的奇偶校验信息、以及第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得纠正的且所期望的数据段、与所期望的数据段相关联的纠正的第一组奇偶校验信息、以及与所期望的数据段相关联的纠正的第二组奇偶校验信息。在158b处,对纠正的且所期望的数据段、纠正的第一组奇偶校验信息、以及纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得进一步纠正的所期望的数据段、与所期望的数据段相关联的进一步纠正的第一组奇偶校验信息、以及与所期望的数据段相关联的进一步纠正的第二组奇偶校验信息。例如,图10中的CCTPC解码器所包括的第一纠错解码器(未示出)和第二纠错解码器(未示出)分别执行步骤156b和158b。
在160处,确定所期望的段的解码是否成功。如果是,则该过程结束。如果不是,则在162处确定是否已达到最大尝试次数。如果没有,则该过程返回到使用当前所期望的段和相关联的奇偶校验信息的步骤156b。换句话说,这两个解码器迭代地解码所期望的段,交替轮流并使用来自其他解码器的输出。
如果在162处确定达到最大尝试次数,则在180b处从固态存储器获得与所期望的段相关联的三个数据段、与所期望的段相关联的三个第一组奇偶校验信息、以及与所期望的段相关联的三个第二组奇偶校验信息。在这个特定的示例中,Ns=4,所以(Ns-1)=3。
在186b处,对与所期望的段相关联的三个数据段、与所期望的段相关联的三个第一组奇偶校验信息、以及与所期望的段相关联的三个第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得三个第二纠正的数据段、三个第二纠正的第一组奇偶校验信息、和三个第二纠正的第二组奇偶校验信息。在188b处,对三个第二纠正的数据段、三个第二纠正的第一组奇偶校验信息、和三个第二纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得三个第一纠正的数据段、三个第一纠正的第一组奇偶校验信息、和三个第一纠正的第二组奇偶校验信息。例如,在图10中,由CCTPC解码器1002b-1002d执行步骤186b和188b。
在181b处,对四个第一纠正和第二纠正的数据段、四个第一纠正和第二纠正的第一组奇偶校验信息、和四个第一纠正和第二纠正的第二组奇偶校验信息执行段间交织,以获得段间交织数据,其中四个数据段、四个第一组奇偶校验信息、和四个第二组奇偶校验信息已经使与第一纠错码相关联的解码和与第二纠错码相关联的解码对其执行。在图10中,由数据组合器1008和段间交织器1010执行步骤181b。
在182处,对段间交织数据和交织奇偶校验信息执行与第三纠错码相关联的解码,以至少获得第三纠正的交织数据。例如,在图10中,由第三纠错解码器1012执行步骤182,以及在该示例中,交织数据来自段间交织器1010,并且段间交织奇偶校验信息来自固态存储器1020。
在184b处,对第三纠正的交织数据执行解交织,以至少获得四个第三纠正的数据段,其包括第三纠正的所期望的数据段。在图10中,由段间解交织器1014执行步骤184b,并且段间解交织器1014还输出与四个段相关联的奇偶校验信息。
在190处,确定对于所期望的数据段而言解码是否成功。图12A-12C的目的是解码特定的数据段,所以如果所期望的数据段被成功解码,则该过程可以结束(例如,即使与所期望的数据段交织的其他三个段中任意没有被成功解码,或者没有被完全解码,使得解码结果是不确定的)。如果在190处确定所期望的数据段被成功解码,则该过程结束。
如果在190处确定所期望的数据段没有被成功解码,则在192处确定是否保持尝试。例如,可能存在一些(绝对的或总体的)最大尝试次数,在该情况下系统将放弃,并声明解码失败。如果在194处确定保持尝试,则在步骤186b处执行与第二纠错码相关联的另一解码迭代。例如,在图10中,这对应于通过CCTPC解码器1002a-1002d执行另一迭代。
虽然上述的段间TPC交织示例在某些应用中是有用的,但是如果可以使用甚至更少的交织奇偶校验信息来实现一些优点,则其将是期望的(例如,由于以按需要为基础使用第三码,所以与第三码相关联的交织奇偶校验信息仅被用于一些段)。下面的图描述了第二段内TPC交织实施例,其提供了用于执行段间TPC交织的更有效的技术。
段内TPC交织示例2
图13是图示出第二段内TPC交织写处理器的实施例的示图。在所示的示例中,四个数据段(分别)被传递到CCTPC编码器1302a-1302d。每个CCTPC编码器处理对其输入的段并输出数据段、第一组奇偶校验信息(例如,基于第一码)、和第二组奇偶校验信息(例如,基于第二码)。CCTPC编码器1302a-1302d如图7中所述进行操作。为了保留可读性,由CCTPC编码器1302a-1302d输出的段和对应的奇偶校验信息未在图13中被标记。
CCTPC编码器1302a-1302d的输出(分别)被传递到段内交织器1304a-1304d。每个段内交织器1304a-1304d交织对其传递的信息,并输出相应的交织数据信号。
由段内交织器1304a-1304d所生成的四个交织数据信号(分别)由生成交织奇偶校验信息的第三纠错编码器1306a-1306d所输入。每对段内交织器1304a-1304d和第三纠错编码器1306a-1306d包括交织奇偶发生器(例如1310a-1310d)。使用异或(即,XOR)组合四个交织奇偶校验信息,以生成组合奇偶校验信息。下表示出了交织奇偶校验信息为3位长的一个示例。
位1 位2 位3
交织奇偶校验信息1 0 0 0
交织奇偶校验信息2 0 0 1
交织奇偶校验信息3 0 1 1
交织奇偶校验信息4 1 1 1
组合奇偶校验信息 1 0 1
表1:使用XOR功能所生成的示例组合奇偶校验信息。
将四个数据段、四个第一组奇偶校验信息、四个第二组奇偶校验信息(由CCTPC编码器1302a-1302d所输出)和组合的奇偶校验信息(由交织奇偶校验组合器1308所输出)存储在固态存储器1320中。注意,将四个奇偶校验信息信号组合成单个的组合奇偶校验信息信号减少了必须存储的开销信息的量。在这个示例中,与存储所有四个交织奇偶校验信息信号相比,仅必须被存储与第三码相关联的奇偶校验信息的量的1/4。自然地,所保存的开销信息的量将至少取决于被组合的段的数量。
图14A是图示出了第二段内TPC交织读处理器的实施例的示图,其示出了在初始解码尝试期间使用的CCTPC解码器。读处理器1400对应于图13中的写处理器1300。在所示的示例中,从固态存储器1420读取所期望的数据段(其可能包括误差)、与该段相关联的第一组奇偶校验信息(其可能包括误差)、和与该段相关联的第二组奇偶校验信息(其可能包括误差),并将其传递到读处理器1400中的CCTPC解码器1402。
CCTPC解码器1402包括迭代解码所期望的段的第一纠错解码器1406和第二纠错解码器1404。两个解码器轮流迭代处理该段和关联的奇偶校验信息,直至该段被成功解码(在这种情况下,将其输出),或者直到达到最大尝试次数(在这种情况下,系统决定第一码和第二码本身将无法解码所期望的段)。如果是这样,则使用第三码,并且使用下图中所示的部件。
图14B是图示出第二段内TPC交织读处理器的实施例的示图,该处理器包括与使用第三码的纠错解码相关联的部件。在所示的示例中,仅使用第一码和第二码无法解码所给定的段,因此,第三码和所存储的组合奇偶校验信息被用于解码所期望的段。
从固态存储器1420读取所期望的段和与其相关联的三个段(即用于与交织奇偶校验信息组合在一起以形成组合奇偶校验信息的那些段),并与其相应的第一和第二组奇偶校验信息(所有这些信息都可能包括误差)分别传递到CCTPC解码器1402a-1402d。例如,CCTPC解码器1402a处理与第一段相关联的信息,CCTPC解码器1402b处理与第二段相关联的信息,等等。为了保留可读性,从固态存储器1420到CCTPC解码器1402a-1402d的信号没有被单独标记。
每个CCTPC解码器1402a-1402d处理其相应的段(例如,使用第一和第二纠错解码器迭代地处理),直到该特定段被成功解码,或达到最大尝试次数。注意,CCTPC解码器1402a-1402d中的任意可以包括用于图14A中的初始解码尝试的CCTPC解码器1402。在一些实施例中,图14B中处理所期望的段的CCTPC解码器在图14B中没有被再次运行(例如,如果最大尝试次数与图14A中的相同,并且因此将生成重复的结果)。
CCTPC解码器1402a-1402d中的每个将其纠正的数据段、其纠正的第一组奇偶校验信息、以及其纠正的第二组奇偶校验信息(其中“纠正的”是指使用第一和第二码所纠正的)传递到交织奇偶校验发生器1410a-1410d中相应的一个。为了保留可读性,这在图14B中被示为三个信号,所述三个信号从CCTPC解码器1402a-1402d中的相应的一个来到交织奇偶校验发生器1410a-1410d中的每个。交织奇偶校验发生器1410a-1410d与在图13中描述的交织奇偶校验发生器1310a-13l0d类似地操作,具有输出交织数据的副本(例如,由内部段内交织器所生成)的附加特征。
交织奇偶校验发生器1410a-1410d将其交织奇偶校验信息传递到交织奇偶校验纠正器1416,如果可能的话其纠正对其输入的交织奇偶校验信息。首先,交织奇偶校验纠正器1416将分析来自CCTPC解码器1402a-1402d的四个解码结果(例如,“成功”或“失败”),以确定是否可以执行任何纠正。如果两个或更多个CCTPC解码器1402a-1402d输出失败信号,则没有纠正可以被执行(即,由于不能100%确定哪个交织奇偶校验信息信号引入了误差,并因此不能确定纠正那个)。在这种情况下进行纠正可能引入更多的误差。然而,如果一个且仅一个解码器指示解码失败,则纠正可以被执行。
接下来,如果由解码成功/失败信号所准许,交织奇偶校验纠正器1416将确定四个交织奇偶校验信息信号中的哪个被纠正。如果解码器输出成功信号,则该交织奇偶校验信息信号将不被纠正(例如,由于不存在误差,并且改变交织奇偶校验信息中的任何值实际上将引入误差)。与(单个)解码失败信号相对应的(单个)交织奇偶校验信息信号是将被纠正(如需要的话)的信号。交织奇偶校验纠正将把由交织奇偶校验发生器1410a-1410d所输出的交织奇偶校验信息的XOR结果与从固态存储器1420读取的组合奇偶校验信息进行比较。如果这些值匹配于给定位的位置,则在要被纠正的交织奇偶校验信息信号中的该位不倒转。如果这些值不匹配于给定位的位置,则要被纠正的交织奇偶校验信息信号中的该位倒转。
然后将交织奇偶校验信号(包括被纠正的信号)从交织奇偶校验纠正器1416输出,并传递到第三纠错解码器1412a-1412d。第三纠错解码器1412a-1412d也输入来自交织奇偶校验发生器1410a-1410d的交织数据。使用那两个信号,第三纠错解码器1412a-1412d中的每个都使用第三码来执行纠错。
第三纠错解码器1412a-1412d分别将第三纠正的交织数据信号传递到段内解交织器1414a-1414d。段内解交织器1414a-1414d中的每个生成第三纠正的数据段、第三纠正的第一组奇偶校验信息、以及第三纠正的第二组奇偶校验信息。然后,将第三纠正的信息从段内解交织器1414a-1414d分别传递到CCTPC解码器1402a-1402d,其对第三纠正的信息执行处理。如果需要,可以执行任何数目的附加解码尝试(例如,使用第一和第二码和/或使用第三码)。
图15是图示出用于将段内TPC交织数据写到固态存储器的过程的第二实施例的流程图。图15描述了由图13中的写处理器1300所执行的并且是图1A中所示的过程的示例的处理。
在1500处,获得Ns个数据段。由于这是段内TPC交织实施例,所以Ns不是被交织在一起的段的数目,而是与相关联的交织奇偶校验信息组合在一起的段的数目。例如,在图13中,Ns=4。在l00c处,至少部分地基于Ns个数据段和第一纠错码来生成Ns个第一组奇偶校验信息。在102c处,至少部分地基于Ns个数据段、Ns个第一组奇偶校验信息和第二纠错码来生成Ns个第二组奇偶校验信息。例如,在图13中,由CCTPC编码器1302a-1302d执行步骤100c和102c。
在108c处,将Ns个数据段、Ns个第一组奇偶校验信息和Ns个第二组奇偶校验信息进行段内交织,以便生成Ns个段内交织数据。在110c处,至少部分地基于Ns个段内交织数据和第三纠错码来生成Ns个段内交织奇偶校验信息。例如,在图13中,由段内交织器1304a-1304d执行步骤108c,以及由第三纠错编码器1306a-1306d执行步骤110c。
在1502处,组合Ns个段内交织奇偶校验信息以获得组合奇偶校验信息。例如,在图13中,Ns=4,以及交织奇偶校验组合器1308使用XOR来组合交织奇偶校验信息。
在1504处,将Ns个数据段、Ns个第一组奇偶校验信息、Ns个第二组奇偶校验信息和组合奇偶校验信息存储在固态存储器上。例如,在图13中,将四个数据段、四个第一组奇偶校验信息、和四个第二组奇偶校验信息(从CCTPC编码器1302a-1302d输出)存储在固态存储器1320中,并且将组合奇偶校验信息(由交织奇偶校验组合器1308输出)存储在固态存储器1320中。
图16A-16D是图示出用于从存储器读取段内TPC交织信息的过程的实施例的流程图。图16A-16D描述了由图14A和14B中的读处理器1400所执行的处理。
在1600处,从固态存储器读取所期望的数据段、第一组奇偶校验信息和第二组奇偶校验信息。在一些实施例中,将所读取的信息存储在缓冲器中,以防万一稍后如果一个或多个初始解码尝试不成功的话需要该信息。
在1602处,对所期望的数据段、第一组奇偶校验信息和第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得纠正的且所期望的数据段、与所期望的段相关联的纠正的第一组奇偶校验信息、和与所期望的段相关联的纠正的第二组奇偶校验信息。在1604处,对纠正的且所期望的数据段、纠正的第一组奇偶校验信息、和纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得进一步纠正的且所期望的数据段、与所期望的段相关联的进一步纠正的第一组奇偶校验信息、和与所期望的段相关联的进一步纠正的第二组奇偶校验信息。例如,分别由图14A中的纠错解码器1404和1406执行步骤1602和1604。
在1606处,确定所期望的段的解码是否成功。如果是,则该过程结束。如果不是,则在1608处确定是否已达到最大尝试次数。如果没有,则再次在1602和1604处(例如,使用当前数据段和相关联的奇偶校验信息)执行解码。例如,这准许纠错解码器1404和1406迭代地解码所期望的段如所期望的那样多的次数(即,Ns可以被设置为任何期望的数量)。
如果在1608处确定已达到最大尝试次数,则尝试利用第三码进行解码。为这样做,在1620处,获得Ns个数据段、Ns个第一组奇偶校验信息、Ns个第二组奇偶校验信息和与所期望的段相关联的组合奇偶校验信息。在一些实施例中,从缓冲器获得所期望的数据段及其相关联的奇偶校验信息,以便不需要对固态存储器的重复读取。在图14B的示例中,Ns=4。
在1622处,对Ns个数据段、Ns个第一组奇偶校验信息和Ns个第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息和Ns个第二纠正的第二组奇偶校验信息。在1624处,对Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息和Ns个第二纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得Ns个第一纠正的数据段、Ns个第一纠正的第一组奇偶校验信息和Ns个第一纠正的第二组奇偶校验信息。在1626处,确定是否达到最大尝试次数。如果尚未达到,则在步骤1622和1624处再次执行解码。自然地,如果在1622或1624处成功解码给定的段,则该特定的解码器被准许停止处理。
注意,在步骤1626处的最大尝试次数不需要等于图16A中的步骤1608中的次数。在图14B中,由CCTPC解码器1402a-1402d执行步骤1622、1624和1626。例如,这准许CCTPC解码器1402a-1402在尝试利用第三码进行解码之前,如所期望的那样多地迭代解码这四个段。
在1626处达到最大尝试次数之后,在1628处将Ns个第一纠正的数据段、Ns个第一纠正的第一组奇偶校验信息和Ns个第一纠正的第二组奇偶校验信息进行段内交织,以获得Ns个段内交织数据。在1630处,至少部分地基于Ns个段内交织数据和第三纠错码来生成Ns个段内交织奇偶校验信息。在图14B的示例中,由交织奇偶校验发生器1410a-1410d执行步骤1628和1630。
在1640处,确定是否只有一个段未被成功解码。如果如上所述的最多只有一个段未被成功解码,则只能纠正段内交织奇偶校验信息。如果在步骤1640处的决定为“否”,则该过程结束(例如,并且过程输出解码失败信号)。如果在步骤1640处的决定为“是”,则在1642处,从Ns个段内交织奇偶校验信息选择要至少部分地基于Ns个解码结果来纠正的段内交织奇偶校验信息。例如,在1642处选择与唯一未成功解码的结果相对应的段内交织奇偶校验信息。
在1644处,至少部分地基于Ns个段内交织奇偶校验信息和组合奇偶校验信息来纠正所选择的段内交织奇偶校验信息,以获得Ns个纠正的交织奇偶校验信息。例如,在图14B中,交织奇偶校验纠正器1416组合来自交织奇偶校验发生器1410a-1410d的交织奇偶校验信息,并将其与从固态存储器1420所读取的组合奇偶校验信息相比较。如果对于给定位的位置,这两个位值匹配,则所选择的段内交织奇偶校验信息在该位的位置处不倒转。如果两者不匹配,则所选择的段内交织奇偶校验信息在该位的位置处倒转。
在1646处,对Ns个段内交织奇偶校验数据和Ns个纠正的交织奇偶校验信息执行与第三纠错码相关联的解码,以获得Ns个第三纠正的交织数据和Ns个第三纠正的交织奇偶校验信息。在图14B中,由第三纠错解码器1412a-1412d执行步骤1623。
在1648处,对Ns个第三纠正的交织数据执行段内解交织,以获得Ns个第三纠正的数据段、Ns个第三纠正的第一组奇偶校验信息、和Ns个第三纠正的第二组奇偶校验信息。例如,在图14B中,由段内解交织器1414a-1414d执行此步骤。
在1660处,对Ns个第三纠正的数据段、Ns个第三纠正的第一组奇偶校验信息、和Ns个第三纠正的第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息、和Ns个第二纠正的第二组奇偶校验信息。在1662处,对Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息、和Ns个第二纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得Ns个第一纠正的数据段、Ns个第一纠正的第一组奇偶校验信息、和Ns个第一纠正的第二组奇偶校验信息。例如,在图14B中,由CCTPC解码器1402a-1402d使用来自段内解交织器1414a-1414d的输入(与来自固态存储器1420的输入相反)来执行步骤1660和1662。
在1664处,确定所期望的数据段的解码是否成功。如果是,该过程结束(例如,并且该过程输出所期望的数据段)。如果在1664处确定所期望的段的解码未成功,则在1666处确定是否保持尝试。如果是,则在步骤1668处确定是否再次尝试第一码和第二码。如果是,则在步骤1688处确定是再次尝试第一码和第二码,还是再次尝试第三码。如果在步骤1668处确定再次尝试第一码和第二码,则再次执行步骤1660和1662。例如,在图14B中,CCTPC解码器1402a-1402d执行另一迭代解码经过。如果在步骤1668处确定再次尝试第三码,则在步骤1628处再次执行段内交织。例如,在图14B中,这与处理来自CCTPC解码器1402a-1402d的输出的交织奇偶校验发生器1410a-1410d相对应。
虽然已经出于清楚理解的目的以一定的细节描述了前述的实施例,但本发明并不限于所提供的细节。存在实施本发明的许多替代方式。所公开的实施例是说明性的,而不是限制性的。

Claims (18)

1.一种使用具有交织的Turbo乘积码的系统,包括:
第二纠错解码器,其被配置为执行与第二纠错码相关联的解码;
第一纠错解码器,其被配置为执行与第一纠错码相关联的解码;
段间交织器,其被配置为对Ns个第一纠正和第二纠正的数据段、Ns个第一纠正和第二纠正的第一组奇偶校验信息、和Ns个第一纠正和第二纠正的第二组奇偶校验信息执行段间交织,以获得段间交织数据,其中:
Ns个数据段、Ns个第一组奇偶校验信息、和Ns个第二组奇偶校验信息已经使与所述第一纠错码相关联的解码和与所述第二纠错码相关联的解码对其执行;以及
Ns是由所述段间交织器所交织在一起的段的数量;
第三纠错解码器,其被配置为对所述段间交织数据和交织奇偶校验信息执行与第三纠错码相关联的解码,以至少获得第三纠正的交织数据,其中,交织奇偶校验信息是指从段间交织数据生成的奇偶校验信息;以及
段间解交织器,其被配置为对所述第三纠正的交织数据执行解交织。
2.根据权利要求1所述的系统,进一步包括接口,其被配置为从固态存储器获得与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、以及与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息。
3.根据权利要求2所述的系统,其中所述接口被配置为在与第一纠错码和第二纠错码相关联的解码对于最大尝试次数不成功的情况下来从固态存储器获得与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、以及与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息。
4.根据权利要求3的系统,其中:
所述第二纠错解码器被配置为执行与所述第二纠错码相关联的解码,包括:对来自固态存储器的与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、和与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息执行与所述第二纠错码相关联的解码,以获得(Ns-1)个第二纠正的数据段、(Ns-1)个第二纠正的第一组奇偶校验信息、和(Ns-1)个第二纠正的第二组奇偶校验信息;以及
所述第一纠错解码器被配置为执行与所述第一纠错码相关联的解码,包括:对所述(Ns-1)个第二纠正的数据段、所述(Ns-1)个第二纠正的第一组奇偶校验信息、和所述(Ns-1)个第二纠正的第二组奇偶校验信息执行与所述第一纠错码相关联的解码,以获得(Ns-1)个第一纠正的数据段、(Ns-1)个第一纠正的第一组奇偶校验信息、和(Ns-1)个第一纠正的第二组奇偶校验信息。
5.一种使用具有交织的Turbo乘积码的方法,包括:
使用处理器来执行与第二纠错码相关联的解码;
使用所述处理器来执行与第一纠错码相关联的解码;
对Ns个第一纠正和第二纠正的数据段、Ns个第一纠正和第二纠正的第一组奇偶校验信息、和Ns个第一纠正和第二纠正的第二组奇偶校验信息执行段间交织,以获得段间交织数据,其中:
所述Ns个数据段、所述Ns个第一组奇偶校验信息、和所述Ns个第二组奇偶校验信息已经使与所述第一纠错码相关联的解码和与所述第二纠错码相关联的解码对其执行;以及
Ns是由段间交织器所交织在一起的段的数量;
使用所述处理器来对所述段间交织数据和交织奇偶校验信息执行与第三纠错码相关联的解码,以至少获得第三纠正的交织数据,其中,交织奇偶校验信息是指从段间交织数据生成的奇偶校验信息;以及
对所述第三纠正的交织数据执行解交织。
6.根据权利要求5的方法,进一步包括从固态存储器获得与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、以及与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息。
7.根据权利要求6的方法,其中,在与第一纠错码和第二纠错码相关联的解码对于最大尝试次数不成功的情况下执行从固态存储器获得与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、以及与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息。
8.根据权利要求7的方法,其中:
使用所述处理器来执行与所述第二纠错码相关联的解码,包括:对来自固态存储器的与所期望解码的段相关联的(Ns-1)个数据段、与所期望解码的段相关联的(Ns-1)个第一组奇偶校验信息、和与所期望解码的段相关联的(Ns-1)个第二组奇偶校验信息执行与所述第二纠错码相关联的解码,以获得(Ns-1)个第二纠正的数据段、(Ns-1)个第二纠正的第一组奇偶校验信息、和(Ns-1)个第二纠正的第二组奇偶校验信息;以及
使用所述处理器来执行与所述第一纠错码相关联的解码,包括:对所述(Ns-1)个第二纠正的数据段、所述(Ns-1)个第二纠正的第一组奇偶校验信息、和所述(Ns-1)个第二纠正的第二组奇偶校验信息执行与所述第一纠错码相关联的解码,以获得(Ns-1)个第一纠正的数据段、(Ns-1)个第一纠正的第一组奇偶校验信息、和(Ns-1)个第一纠正的第二组奇偶校验信息。
9.一种使用具有交织的Turbo乘积码的系统,包括:
交织奇偶校验发生器,其被配置为:
段内交织Ns个数据段、Ns个第一组奇偶校验信息和Ns个第二组奇偶校验信息,以获得Ns个段内交织数据,其中,Ns是段的数量,对于这些段,相关联的交织奇偶校验信息被组合在一起,其中,交织奇偶校验信息是指从段内交织数据生成的奇偶校验信息;以及
至少部分地基于所述Ns个段内交织数据和第三纠错码来生成Ns个段内交织奇偶校验信息;
交织奇偶校验纠正器,其被配置为:
从所述Ns个段内交织奇偶校验信息选择要至少部分地基于Ns个解码结果来纠正的段内交织奇偶校验信息;其中
至少部分地基于所述Ns个段内交织奇偶校验信息和所组合的奇偶校验信息来纠正所选择的段内交织奇偶校验信息,以获得Ns个纠正的交织奇偶校验信息;
第三纠错解码器,其被配置为对所述Ns个段内交织奇偶校验数据和所述Ns个纠正的交织奇偶校验信息执行与所述第三纠错码相关联的解码,以获得Ns个第三纠正的交织数据和Ns个第三纠正的交织奇偶校验信息;以及
段内解交织器,其被配置为对所述Ns个第三纠正的交织数据执行段内解交织,以获得Ns个第三纠正的数据段、Ns个第三纠正的第一组奇偶校验信息、和Ns个第三纠正的第二组奇偶校验信息。
10.根据权利要求9所述的系统,进一步包括:
第二纠错解码器,其被配置为对所述Ns个第三纠正的数据段、所述Ns个第三纠正的第一组奇偶校验信息和所述Ns个第三纠正的第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息和Ns个第二纠正的第二组奇偶校验信息;以及
第一纠错解码器,其被配置为对所述Ns个第二纠正的数据段、所述Ns个第二纠正的第一组奇偶校验信息和所述Ns个第二纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得Ns个第一纠正的数据段、Ns个第一纠正的第一组奇偶校验信息和Ns个第一纠正的第二组奇偶校验信息。
11.根据权利要求9所述的系统,其中:
由所述交织奇偶校验发生器输入的所述Ns个数据段包括Ns个第一纠正的数据段;
由所述交织奇偶校验发生器输入的所述Ns个第一组奇偶校验信息包括Ns个第一纠正的第一组奇偶校验信息;以及
由所述交织奇偶校验发生器输入的所述Ns个第二组奇偶校验信息包括Ns个第一纠正的第二组奇偶校验信息。
12.根据权利要求9的系统,其中:
由所述交织奇偶校验发生器输入的所述Ns个数据段包括Ns个第二纠正的数据段;
由所述交织奇偶校验发生器输入的所述Ns个第一组奇偶校验信息包括Ns个第二纠正的第一组奇偶校验信息;以及
由所述交织奇偶校验发生器输入的所述Ns个第二组奇偶校验信息包括Ns个第二纠正的第二组奇偶校验信息。
13.根据权利要求9所述的系统,其中,所述交织奇偶校验纠正器被配置为在仅存在一个未被成功解码的段的情况下进行选择和纠正。
14.一种使用具有交织的Turbo乘积码的方法,包括:
将Ns个数据段、Ns个第一组奇偶校验信息、和Ns个第二组奇偶校验信息进行段内交织,以获得Ns个段内交织数据,其中Ns是段的数量,对于这些段,相关联的交织奇偶校验信息被组合在一起,其中,交织奇偶校验信息是指从段内交织数据生成的奇偶校验信息;
至少部分地基于所述Ns个段内交织数据和第三纠错码来生成Ns个段内交织奇偶校验信息;
从所述Ns个段内交织奇偶校验信息选择要至少部分地基于Ns个解码结果来纠正的段内交织奇偶校验信息;
至少部分地基于所述Ns个段内交织奇偶校验信息和所组合的奇偶校验信息来纠正所选择的段内交织奇偶校验信息,以获得Ns个纠正的交织奇偶校验信息;
使用处理器来对所述Ns个段内交织数据和所述Ns个纠正的交织奇偶校验信息执行与所述第三纠错码相关联的解码,以获得Ns个第三纠正的交织数据和Ns个第三纠正的交织奇偶校验信息;以及
对所述Ns个第三纠正的交织数据执行段内解交织,以获得Ns个第三纠正的数据段、Ns个第三纠正的第一组奇偶校验信息、和Ns个第三纠正的第二组奇偶校验信息。
15.根据权利要求14所述的方法,进一步包括:
使用处理器来对所述Ns个第三纠正的数据段、所述Ns个第三纠正的第一组奇偶校验信息和所述Ns个第三纠正的第二组奇偶校验信息执行与第二纠错码相关联的解码,以获得Ns个第二纠正的数据段、Ns个第二纠正的第一组奇偶校验信息和Ns个第二纠正的第二组奇偶校验信息;以及
使用处理器来对所述Ns个第二纠正的数据段、所述Ns个第二纠正的第一组奇偶校验信息和所述Ns个第二纠正的第二组奇偶校验信息执行与第一纠错码相关联的解码,以获得Ns个第一纠正的数据段、Ns个第一纠正的第一组奇偶校验信息和Ns个第一纠正的第二组奇偶校验信息。
16.根据权利要求14的方法,其中:
所述Ns个数据段包括Ns个第一纠正的数据段;
所述Ns个第一组奇偶校验信息包括Ns个第一纠正的第一组奇偶校验信息;以及
所述Ns个第二组奇偶校验信息包括Ns个第一纠正的第二组奇偶校验信息。
17.根据权利要求14的方法,其中:
所述Ns个数据段包括Ns个第二纠正的数据段;
所述Ns个第一组奇偶校验信息包括Ns个第二纠正的第一组奇偶校验信息;以及
所述Ns个第二组奇偶校验信息包括Ns个第二纠正的第二组奇偶校验信息。
18.根据权利要求14所述的方法,其中,在仅存在一个未被成功解码的段的情况下进行选择和纠正。
CN201310743902.XA 2012-11-08 2013-11-07 具有交织的turbo乘积码(tpc) Active CN103812512B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261724093P 2012-11-08 2012-11-08
US61/724093 2012-11-08
US201361748364P 2013-01-02 2013-01-02
US61/748364 2013-01-02
US14/061,600 US9300329B2 (en) 2012-11-08 2013-10-23 Turbo-product codes (TPC) with interleaving
US14/061600 2013-10-23

Publications (2)

Publication Number Publication Date
CN103812512A CN103812512A (zh) 2014-05-21
CN103812512B true CN103812512B (zh) 2017-04-12

Family

ID=50623532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310743902.XA Active CN103812512B (zh) 2012-11-08 2013-11-07 具有交织的turbo乘积码(tpc)

Country Status (3)

Country Link
US (1) US9300329B2 (zh)
KR (1) KR101588306B1 (zh)
CN (1) CN103812512B (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9300329B2 (en) 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US9559727B1 (en) 2014-07-17 2017-01-31 Sk Hynix Memory Solutions Inc. Stopping rules for turbo product codes
US9906241B2 (en) * 2014-11-20 2018-02-27 SK Hynix Inc. Apparatus and method for turbo product codes
US9673840B2 (en) * 2014-12-08 2017-06-06 SK Hynix Inc. Turbo product codes for NAND flash
US9954556B2 (en) 2015-02-25 2018-04-24 SK Hynix Inc. Scheme to avoid miscorrection for turbo product codes
CN106169312B (zh) 2015-05-18 2021-05-07 爱思开海力士有限公司 用于快闪存储的广义乘积码
US9935659B2 (en) 2015-05-18 2018-04-03 SK Hynix Inc. Performance optimization in soft decoding for turbo product codes
US9906240B2 (en) 2015-06-03 2018-02-27 SK Hynix Inc. One-shot decoder for two-error-correcting BCH codes
US9998148B2 (en) * 2015-12-01 2018-06-12 SK Hynix Inc. Techniques for low complexity turbo product code decoding
US10498366B2 (en) 2016-06-23 2019-12-03 SK Hynix Inc. Data dependency mitigation in parallel decoders for flash storage
US10484020B2 (en) 2016-02-03 2019-11-19 SK Hynix Inc. System and method for parallel decoding of codewords sharing common data
US10439649B2 (en) 2016-02-03 2019-10-08 SK Hynix Inc. Data dependency mitigation in decoder architecture for generalized product codes for flash storage
US10523245B2 (en) 2016-03-23 2019-12-31 SK Hynix Inc. Soft decoder for generalized product codes
US10263643B2 (en) 2017-04-05 2019-04-16 Alibaba Group Holding Limited Method and system of multi-fold data protection for high-density storage appliance with improved availability and robustness
CN109412610B (zh) * 2017-08-16 2022-08-09 深圳市中兴微电子技术有限公司 一种编码方法、译码方法、编码装置及译码装置
JP6818667B2 (ja) 2017-09-20 2021-01-20 キオクシア株式会社 メモリシステム
CN110896309B (zh) * 2018-09-12 2022-11-15 中兴通讯股份有限公司 Turbo乘积码的译码方法、装置、译码器及计算机存储介质
US10977119B2 (en) * 2018-09-28 2021-04-13 Apple Inc. Techniques for utilizing volatile memory buffers to reduce parity information stored on a storage device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192834A (zh) * 2006-11-30 2008-06-04 株式会社东芝 纠错装置和纠错方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5185746A (en) * 1989-04-14 1993-02-09 Mitsubishi Denki Kabushiki Kaisha Optical recording system with error correction and data recording distributed across multiple disk drives
US5333143A (en) * 1991-08-29 1994-07-26 International Business Machines Corporation Method and means for b-adjacent coding and rebuilding data from up to two unavailable DASDS in a DASD array
US5428627A (en) * 1992-11-10 1995-06-27 Qlogic Corporation Method and apparatus for initializing an ECC circuit
EP1281241A2 (en) * 2000-04-04 2003-02-05 Advanced Hardware Architectures, Inc Enhanced turbo product code decoder system
US7047474B2 (en) 2002-12-23 2006-05-16 Do-Jun Rhee Decoding concatenated codes via parity bit recycling
KR100698620B1 (ko) * 2003-06-16 2007-03-21 삼성전자주식회사 강건한 에러 정정 부호화 장치를 가지는 디지털 송/수신시스템 및 그의 에러정정부호화/정정방법
WO2005109653A1 (en) * 2004-04-09 2005-11-17 Agere Systems Inc. Multidimensional block encoder with sub-block interleaver and de-interleaver
JP4530807B2 (ja) 2004-11-05 2010-08-25 シャープ株式会社 データ伝送システム
KR100856129B1 (ko) 2006-12-29 2008-09-03 삼성전자주식회사 오정정 확률을 줄이는 에러 정정 회로, 그 방법 및 상기회로를 구비하는 반도체 메모리 장치
US9300329B2 (en) 2012-11-08 2016-03-29 Sk Hynix Memory Solutions Inc. Turbo-product codes (TPC) with interleaving
US8996969B2 (en) 2012-12-08 2015-03-31 Lsi Corporation Low density parity check decoder with miscorrection handling

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101192834A (zh) * 2006-11-30 2008-06-04 株式会社东芝 纠错装置和纠错方法

Also Published As

Publication number Publication date
CN103812512A (zh) 2014-05-21
KR20140059740A (ko) 2014-05-16
US20140129899A1 (en) 2014-05-08
US9300329B2 (en) 2016-03-29
KR101588306B1 (ko) 2016-01-26

Similar Documents

Publication Publication Date Title
CN103812512B (zh) 具有交织的turbo乘积码(tpc)
EP1538757B1 (en) Rate matching and channel interleaving for a communications system
US8543884B2 (en) Communications channel parallel interleaver and de-interleaver
CN100486117C (zh) 通信装置和无线通信系统
CN102394660B (zh) 分组交织的准循环扩展并行编码ldpc码的编码方法和编码器
US8281214B2 (en) Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel
KR20150131540A (ko) 천공 장치 및 그의 천공 방법
RU2011115420A (ru) Устройство и способ обработки данных и программа
EP1125366B1 (en) Generalized convolutional interleaver/deinterleaver
KR20000074862A (ko) 이동 통신시스템의 직렬 쇄상 컨볼루션 부호화를 위한 인터리빙장치 및 방법
JP4298175B2 (ja) ターボ符号のための行内並べ替え
MX2020011644A (es) Transmisor y metodo de permutacion de paridad del mismo.
CN102447521A (zh) 一种解速率匹配方法及装置
CN109150383A (zh) 一种Polar码的编码方法及装置
KR20120029776A (ko) 레이트 매칭 장치 및 그것의 레이트 매칭 방법
KR20080041488A (ko) 병렬 인터리빙 장치 및 방법
EP1537673B1 (en) Method of interleaving/deinterleaving in a communication system
JP3515036B2 (ja) インターリービング方法、インターリービング装置、ターボ符号化方法及びターボ符号化装置
CN1183687C (zh) Turbo码编码器及编码方法
KR101320684B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
CN105577196B (zh) 基于宽带OFDM电力线通信系统的Turbo码数据交织方法和交织器
JP3896841B2 (ja) インターリーブ処理方法及びインターリーブ処理装置
CN105099599B (zh) 交织、解交织方法以及相应的装置
CN102611465A (zh) 结构化多元非规则重复累积码的编码器与编码方法
CN113726476A (zh) 信道交织处理方法和处理模块

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant