CN108370252B - 对乘积码诊断的后解码错误检查 - Google Patents

对乘积码诊断的后解码错误检查 Download PDF

Info

Publication number
CN108370252B
CN108370252B CN201680073311.8A CN201680073311A CN108370252B CN 108370252 B CN108370252 B CN 108370252B CN 201680073311 A CN201680073311 A CN 201680073311A CN 108370252 B CN108370252 B CN 108370252B
Authority
CN
China
Prior art keywords
error
decoding
decoded data
response
codewords
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
CN201680073311.8A
Other languages
English (en)
Other versions
CN108370252A (zh
Inventor
R·A·哈特金斯
S·R·本特利
田中启介
R·D·塞德斯延
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN108370252A publication Critical patent/CN108370252A/zh
Application granted granted Critical
Publication of CN108370252B publication Critical patent/CN108370252B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/2909Product codes
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1833Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information
    • 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
    • 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/2948Iterative decoding
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3738Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with judging correct decoding
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/613Use of the dual code
    • 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/1515Reed-Solomon codes

Landscapes

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

Abstract

在一个实施例中,系统包括控制器和与该控制器集成和/或可由该控制器执行的逻辑。该逻辑被配置为对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。该逻辑还被配置为响应于在编码数据的迭代解码之后未在第一部分中获得有效的乘积码字而对解码数据的第一部分执行解码后错误诊断。根据更多实施例呈现了用于产生解码后错误签名的其他系统方法和计算机程序产品。

Description

对乘积码诊断的后解码错误检查
技术领域
本发明涉及数据存储系统,更具体来说,涉及对乘积码诊断的后解码错误检查。
背景技术
当前使用的线性磁带驱动器应用二维乘积码用于纠错编码(ECC)。这些乘积码通常包含两个由C1行代码和C2列代码组成的正交分量代码。C1和C2码一般来说分别是具有最小汉明距离d1和d2的线性分组码(linear block codes),其可以是二进制(基于比特位的)码,诸如伽罗瓦域(GF)GF(2)上的二进制Bose-Chaudhuri-Hocquenghem(BCH)码或具有符号字母大小Q的基于符号的码,诸如GF(Q=2q)上的具有q位符号的Reed-Solomon(RS)码,或GF(Q=2q)上的具有q位符号的非二进制BCH码。在存储和传输系统中,通常Q=2(1位符号,即二进制码),Q=16(4位符号),Q=64(6位符号),Q=256(8位符号),Q=512(9位符号),Q=1024(10位符号)或Q=4096(12位符号)等。
磁带存储和光存储技术通常使用是RS代码的C1和C2代码,而闪存和光通信技术通常使用是二进制BCH代码的C1和C2代码。
当使用乘积码对解码数据执行纠错时,存在几种潜在的错误来源:1)由于一个或多个解码错误而由ECC解码器进行误校正,2)由于一个或多个解码失败在由ECC解码器解码之后剩余的未纠正错误,以及3)与在解码期间和之后用于存储数据的缓冲器和/或存储器的纠错中的不稳定性有关的存储器错误。
未能对乘积码字进行解码(其要求成功解码乘积码内的所有C1行和全部C2列)导致临时和/或永久性错误,并且乘积码的解码器(可能是迭代解码器)不产生有效的乘积码字。但是,在常规数据存储和数据传输系统出现这种故障后,不会执行诊断。
发明内容
根据一个方面,提供了一种包括控制器以及与该控制器集成和/或可由该控制器执行的逻辑的系统。该逻辑被配置为对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。该逻辑还被配置为响应于在编码数据的迭代解码之后未在解码数据的第一部分中获得有效的乘积码字(product codeword)而对解码数据的第一部分执行后解码错误诊断(post-decodingerror diagnostics)。
根据一个方面,提供了一种控制器实现的方法,包括对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。该控制器实现的方法还包括响应于在编码数据的迭代解码之后在解码数据的第一部分中没有获得有效的乘积码字而对解码数据的第一部分执行后解码错误诊断。
根据一个方面,提供了一种计算机程序产品,其包括具有用其体现的程序指令的计算机可读存储介质。所体现的程序指令可由控制器执行以使控制器通过控制器对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。所体现的程序指令也可由控制器执行以使控制器响应于在迭代解码之后在解码数据的第一部分中未获得有效的乘积码字而对解码数据的第一部分执行后解码错误诊断。
从以下结合附图的详细描述中,本发明的其他方面和实施例将变得显而易见,所述详细描述结合附图以示例的方式说明本发明的原理。
附图说明
现在将参照附图仅以举例的方式描述本发明的实施例,其中:
图1示出根据一个实施例的网络存储系统。
图2示出根据一个实施例的基于磁带的数据存储系统的简化磁带驱动器。
图3是根据一个实施例的带盒的示意图。
图4示出根据一个实施例的、可用于用乘积码来组织子数据集(SDS)中的数据的逻辑数据阵列。
图5A示出根据一个实施例的从具有最后C1解码操作的迭代解码产生的没有检测到的错误的乘积码字。
图5B示出根据一个实施例的没有检测到的从具有最后C2解码操作的迭代解码产生的错误的乘积码字。
图6A示出根据一个实施例的有检测到的从具有最后C1解码操作的迭代解码产生的存储器错误的乘积码字。
图6B示出根据一个实施例的有检测到的从具有最后C2解码操作的迭代解码产生的存储器错误的乘积码字。
图7A示出了根据一个实施例的有从具有最后C1解码操作的迭代解码产生的信道和插入符号错误的组合的乘积码字。
图7B示出了根据一个实施例的有从具有最后C2解码操作的迭代解码产生的信道和插入符号错误的组合的乘积码字。
图8A示出了根据一个实施例的有从具有最后C1解码操作的迭代解码产生的信道、存储器和插入符号错误的组合的乘积码字。
图8B示出了根据一个实施例的有从具有最后C2解码操作的迭代解码产生的信道、存储器和插入符号错误的组合的乘积码字。
图9A示出了根据一个实施例的有检测到的从具有最后C1解码操作的迭代解码产生的信道错误的乘积码字。
图9B示出了根据一个实施例的有检测到的从具有最后C2解码操作的迭代解码产生的信道错误的乘积码字。
图10A示出了根据一个实施例的有检测到的从具有最后C1解码操作的迭代解码产生的信道和存储器错误的组合的乘积码字。
图10B示出了根据一个实施例的有检测到的从具有最后C2解码操作的迭代解码产生的信道和存储器错误的组合的乘积码字。
图11A示出了根据一个实施例的有检测到的从具有最后C1解码操作的迭代解码产生的信道和插入符号错误的组合的乘积码字。
图11B示出了根据一个实施例的有检测到的从具有最后C2解码操作的迭代解码产生的信道和插入符号错误的组合的乘积码字。
图12A示出了根据一个实施例的有检测到的从具有最后C1解码操作的迭代解码产生的信道和存储器的组合以及插入符号错误的乘积码字。
图12B示出了根据一个实施例的有检测到的从具有最后C2解码操作的迭代解码产生的信道和存储器的组合以及插入符号错误的乘积码字。
图13示出了根据一个实施例的方法的流程图。
图14示出了根据一个实施例的方法的流程图。
图15示出了根据一个实施例的方法的流程图。
图16示出了根据一个实施例的方法的流程图。
图17示出了根据一个实施例的方法的流程图。
图18示出了根据一个实施例的方法的流程图。
图19示出了根据一个实施例的方法的流程图。
图20示出了根据一个实施例的方法的流程图。
图21示出了根据一个实施例的方法的流程图。
图22示出了根据一个实施例的方法的流程图。
具体实施方式
以下描述是为了说明本发明的一般原理的目的而做出的,并不意味着限制本申请要求保护的发明构思。此外,本文描述的特定特征可以与各种可能的组合和排列中的每一种中的其他描述的特征组合使用。
除非在此另外具体定义,否则将给予所有术语其最宽泛的可能解释,包括从说明书暗示的含义以及本领域技术人员理解和/或如在词典、论文等中定义的含义。
还必须注意的是,除非另有说明,否则如说明书和所附权利要求书中所使用的单数形式“一”、“一个”和“该”包括复数指示物。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合。正如本领域技术人员将会理解的那样,本文所用的术语“约”表示术语“约”之后的值以及合理地接近术语“约”之后的值的任何值。当没有另外指明时,术语“约”表示在术语“约”之后的值±10%。例如,“约10”表示从9.0到11.0的所有值。
以下描述公开了用于对乘积码字执行后解码错误诊断的系统、方法和计算机程序产品的若干优选实施例。错误诊断可以识别在解码期间由于解码失败、在解码期间由于误校正、以及在数据存储在存储器中时的数据存储期间所出现的各种类型的错误。
当错误发生时,如果可能的话,期望识别后解码错误类型和错误位置,即执行后解码错误诊断。这里描述了按照各种实施例、被配置为验证纠错编码(ECC)已经被正确地应用于解码数据并且在应用纠错之后没有任何错误被引入到ECC缓冲器或存储器中的系统、方法和计算机程序产品。还描述了几个算法,这些算法被配置成在特定实施例中识别解码乘积码之后残留的各类错误。
在一个一般性实施例中,系统包括控制器和与该控制器集成的和/或可由该控制器执行的逻辑。该逻辑被配置为对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。该逻辑还被配置为响应于在编码数据的迭代解码之后未在解码数据的第一部分中获得有效的乘积码字而对解码数据的第一部分执行后解码错误诊断。
在另一个一般性实施例中,一种控制器实现的方法包括对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。该控制器实现的方法还包括响应于在编码数据的迭代解码之后在解码数据的第一部分中没有获得有效的乘积码字而对解码数据的第一部分执行后解码错误诊断。
在另一个一般性实施例中,一种计算机程序产品包括具有用其体现的程序指令的计算机可读存储介质。所体现的程序指令可由控制器执行以使控制器通过控制器对编码数据执行迭代解码以获得解码数据。在迭代解码中执行至少三个解码操作,其中解码操作从包括C1解码和C2解码的组中选择。所体现的程序指令也可由控制器执行以使控制器响应于在迭代解码之后在解码数据的第一部分中未获得有效的乘积码字而对解码数据的第一部分执行后解码错误诊断。
现在参考图1,根据一个实施例示出了一个网络存储系统10的示意图。该网络存储系统10仅仅是合适的存储系统的一个示例,并不旨在对这里描述的本发明的实施例的使用范围或功能提出任何限制。无论如何,网络存储系统10能够被实现并且/或者能执行上文所述的任何功能。
在网络存储系统10中,存在计算机系统/服务器12,其可与许多其他通用或专用计算系统环境或配置一起操作。可适用于计算机系统/服务器12的公知计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统,瘦客户机、胖客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统和包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器12可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等等。计算机系统/服务器12可以在分布式云计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图1所示,网络存储系统10中的计算机系统/服务器12以通用计算设备的形式示出。计算机系统/服务器12的组件可以包括但不限于一个或多个处理器或处理单元16、系统存储器28以及将包括系统存储器28的各种系统组件耦合到处理器16的总线18。
总线18表示若干类型的总线结构中的任何一种总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线体系结构中的任何一种的处理器或本地总线。作为示例而非限制,这种体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器12通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器12可访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。
系统存储器28可以包括诸如随机存取存储器(RAM)30和/或高速缓冲存储器32的易失性存储器形式的计算机系统可读介质。计算机系统/服务器12可以进一步包括其他可移动/不可移动的,易失性/非易失性计算机系统存储介质。仅作为示例,存储系统34可以被提供用于读取和写入可以在HDD中操作的不可移动、非易失性磁介质(未示出,通常称为“硬盘”)。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM,DVD-ROM的可移动、非易失性光盘或其他光学介质读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据媒体接口连接到总线18。如下面将进一步描绘和描述的,存储器28可以包括至少一个程序产品,该程序产品具有被配置为执行本文描述的实施例的功能的一组(例如,至少一个)程序模块。
具有一组(至少一个)程序模块42的程序/实用程序40,以及操作系统、一个或多个应用程序、其他程序模块和程序数据,可以——作为示例而非限制——存储在存储器28中。操作系统、一个或多个应用程序、其他程序模块和程序数据或其一些组合中的每一个都可以包括网络环境的实现。程序模块42通常执行如本文所述的本发明的实施例的功能和/或方法。
计算机系统/服务器12还可以与一个或多个外部设备14(例如键盘、指点设备、显示器24等)通信;与使用户能够与计算机系统/服务器12交互的一个或多个设备通信;和/或与使计算机系统/服务器12能够与一个或多个其他计算设备进行通信的任何设备(例如网卡、调制解调器等)通信。这样的通信可以经由输入/输出(I/O)接口22发生。然而,计算机系统/服务器12还可以通过网络适配器20与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)的一个或多个网络通信。如图所示,网络适配器20经由总线18与计算机系统/服务器12的其他组件进行通信。应该理解,虽然未示出,但其他硬件和/或软件组件可以与计算机系统/服务器12结合使用。示例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、独立磁盘冗余阵列(RAID)系统、磁带驱动器和数据归档存储系统等。
图2示出了可以在本发明的上下文中使用的基于磁带的数据存储系统的简化的磁带驱动器100。虽然图2中示出了磁带驱动器的一个具体实现,应该注意,这里描述的实施例可以在任何类型的磁带驱动器系统的背景下实现。
如图所示,提供供带盒120和卷带轴121以支撑磁带122。卷带轴的一个或多个可以形成可移除盒的一部分,并且不一定是带驱动器100的一部分。诸如图2所示的磁带驱动器,可以进一步包括,以驱动供带盒120和卷带轴121,将磁带122移动到任何类型的磁带头126上。这样的磁带头可能包括一系列读取头、写入头或两者。
导轨125引导磁带122越过磁带头126。这种磁带头126又通过电缆130耦合到控制器128。控制器128可以是—或者包括—处理器和/或用于控制磁带驱动器100的任何逻辑。例如,控制器128通常控制诸如伺服跟随、数据写入、数据读取等的磁头功能。控制器128可以包括至少一个伺服通道和至少一个数据通道,其中的每一个都包括被配置为处理和/或存储要被写入磁带122和/或从磁带122读取的信息的数据流处理逻辑。控制器128可以按本领域中已知的逻辑以及本文公开的任何逻辑操作,因此在各种实施例中可以被认为是用于本文包括的磁带机的任何描述的处理器。控制器128可以耦合到任何已知类型的存储器136,存储器136可以存储可由控制器128执行的指令。此外,控制器128可以被配置和/或可编程为执行或控制本文呈现的方法中的一些或全部。因此,控制器128可以被认为被配置得通过编程到一个或多个芯片、模块和/或块中的逻辑来执行各种操作;可以被认为是软件、固件和/或可用于一个或多个处理器的其他指令,等等,以及它们的组合。
电缆130可以包括读取/写入电路,以将数据传输到磁带头126以记录在磁带122上,以及接收磁带头126从磁带122读取的数据。致动器132控制磁带头126相对于磁带122的位置。
还可以提供接口134,用于磁带驱动器100和主机(内部或外部)之间的通信以发送和接收数据,并且用于控制磁带驱动器100的操作并向主机传送磁带驱动器100的状态,这些都是本领域技术人员将会理解的。
图3示出根据一个实施例的示例性磁带盒150。这种磁带盒150可以与诸如图2所示的系统一起使用。如图所示,磁带盒150包括壳体152、壳体152中的磁带122以及耦合到壳体152的非易失性存储器156。在一些方法中,非易失性存储器156可以嵌入壳体152内,如图3所示的那样。在更多方法中,非易失性存储器156可以被附接到壳体152的内部或外部,而无需改动壳体152。例如,非易失性存储器可以被嵌入在自粘标签154中。在一个优选实施例中,非易失性存储器156可以是嵌入或耦合到磁带盒150的内部或外部的闪存设备、ROM设备等。非易失性存储器可由磁带驱动器和磁带操作软件(驱动器软件)和/或其他设备访问。
图4示出根据一个实施例的可用于组织子数据集(SDS)中的数据的逻辑数据阵列400。如图所示,数据阵列包括多个行402和列404。数据阵列400中的每一行402是包括多个C1码字的码字交织(CWI)。当CWI包含四个交织码字时,它被称为CWI-4。SDS中的数据,通过在每个行402上进行C1编码以产生C1行奇偶校验(未示出,因为它稍后被修改以产生数据阵列400)以及通过在每个列404上进行C2编码以产生C2列奇偶校验408而被保护。
如图所示,可以通过修改C1奇偶性(仅针对行402中的数据计算)来解释首部(header)406以产生C1'奇偶校验410,用C1编码方案来编码每行402的首部406。在该实施例中,首部406由一级ECC(仅限于C1'奇偶校验410)保护,而数据由两级ECC(C1'奇偶校验410和C2奇偶校验408)保护。
每个数据集都包括多个子数据集,每个子数据集则可以由一个逻辑二维阵列表示。通常将数百个首部分配给单个数据集,这是因为每个数据集包含多个子数据集(SDS),并且一个列编码的SDS的每个行(CWI)都被分配一个首部。目前使用的线性磁带驱动器同时向磁带介质写入和读取多达32条磁道。乘积码的C1行码字(codeword)以字节交织方式被写入磁带介质的多个单独磁道,然后被同时从这些单独磁道读取。
根据这里描述的实施例,可以利用ECC的现有能力—而不管所使用的ECC的类型如何,以确定是否已经发生ECC解码器的误校正(mis-correction)。ECC还可以用于确定—诸如由于设备本身的不稳定性—在解码器的纠错(error-correction)缓冲器和/或存储器中发生的任何错误的类型。
根据一个实施例,迭代解码可以包括三个解码操作:C1解码,接着C2解码,然后再C1解码。
在替代实施例中,迭代解码可包括以不同顺序的三个解码操作:C2解码,接着C1解码,然后再C2解码。在这些实施例的每一个实施例中,可以在最后的C1或C2解码操作之后执行更多的解码步骤,在C1和C2解码之间交替。
在一个特定实施例中,迭代解码可以利用一个C1码和一个C2码,C1码是具有等于240的码字长度(N1)和等于13的最小汉明距离(d1)(即N1=240,d1=13)的Reed-SolomonRS(240,228)码,C2码是具有码字长度(N2)等于192并且最小汉明距离(d2)等于25(即N2=192,d2=25)的RS(192,168)码。
ECC解码器可以被配置为在以流模式操作的同时执行C1-C2-C1迭代解码,随后是C2出错位组检验(syndrome check)和C1出错位组检验。当且仅当个体乘积码字中的所有C1码字都被允许(即,所有C1码字都具有零出错位组,等于所有C1码字都通过出错位组检验)并且同一个体乘积码字中的所有C2码字都被允许(即,所有C2码字都具有零出错位组,等于所有C2码字都通过出错位组检验)时,编码数据(其包括接收到的乘积码字)的解码才在解码后被认为是成功的。否则,解码被认为是不成功的。
在替代实施例中,ECC解码器可以被配置为在流模式下操作时执行C2-C1-C2迭代解码,随后进行C1出错位组检验和C2出错位组检验。成功解码的确定,与上述的相同。
在解码其中具有接收到的乘积码字的编码数据完成之后,可以检查错误源。错误源可以来自各种不同的贡献者,诸如(由于解码失败导致的)信道错误,由于(由于误校正而导致的)解码器错误导致的解码错误,以及解码器和/或系统的缓冲器和/或存储器(例如嵌入式动态随机存取存储器(eDRAM)等)中的存储器错误。
后解码错误检查可以包括针对在未成功解码的乘积码字中检测到的任何错误确定一个或多个错误签名(error signature)。这些错误签名可以基于可从ECC解码中确定的多个参数来确定。例如,可以使用参数U、U'、W、W'、D、D'、M和M'定义在最终的C1解码操作之后在解码数据中剩余的任何错误的错误签名,其中:U是被确定为在最后的C1解码操作之后所接收的乘积码字中的不可纠正的C1码字(C1解码失败)的数量,U'被确定为在最后的C2操作之后所接收的乘积码字中的不可纠正的C2码字(C2解码失败)的数量,W被确定为在执行C1出错位组检验之后检测到的所接收的乘积码字中具有非零出错位组的C1码字(非法C1码字)的数量,W'被确定为在执行C2出错位组检验之后检测到的所接收的乘积码字中具有非零出错位组的C2码字(非法C2码字)的数量,D被确定为所接收的乘积码字中的除U个不可校正的C1码字之外的、具有至少d1个在确定C2错误位置(d1是C1码的最小汉明距离)之后检测到的符号错误的C1码字的数量,D’被确定为所接收的乘积码字中的除U'个不可校正的C2码字之外的、具有至少d2个在确定C1错误位置(d2是C2码的最小汉明距离)之后检测到的符号错误的C2码字的数量,M被确定为解码的乘积码字中除U个不可纠正的C1码字以外的、有在确定C2错误位置之后检测到的e小于d1个符号错误的C1码字的数量,并且M'被确定为在解码的乘积码字中除了U'个不可纠正的C2码字之外的、有在确定C1错误位置之后检测到的小于d2个符号错误的C2码字的数量。C1和C2错误位置可以通过求解关键方程从出错位组多项式来确定。例如,在C1解码器和C2解码器中可以用欧几里德算法来求解关键方程。
对于具有最后执行的C1解码的解码序列,多个错误签名可由一个二进制3元组表示,如下表1所示。每个元组(S)被定义为S=[c d m]。c、d和m的值如下设置:响应于U=0,c=0,并且响应于U>0,c=1,表示在C1解码之后存在信道错误;响应于D=0,d=0,并且响应于D>0,d=1,表示存在C1解码器错误(误校正);并且响应于M=0,m=0,并且响应于M>0,m=1,表示存在存储器错误。
信道错误 解码器错误 存储器错误 错误签名(S)
[0 0 0]
[0 0 1]
[0 1 0]
[0 1 1]
[1 0 0]
[1 0 1]
[1 1 0]
[1 1 1]
表1:最后C1解码的错误签名
对于具有最后执行的C2解码的解码序列,多个错误签名可由一个二进制3元组表示,如下表1所示。每个元组(S’)被定义为S’=[c’ d’ m’]。c’、d’和m’的值如下设置:响应于U’=0,c’=0,并且响应于U’>0,c’=1,表示在C2解码之后存在信道错误;响应于D’=0,d’=0,并且响应于D’>0,d’=1,表示存在C2解码器错误(误校正);并且响应于M’=0,m’=0,并且响应于M’>0,m’=1,表示存在存储器错误。
信道错误 解码器错误 存储器错误 错误签名(S)
[0 0 0]
[0 0 1]
[0 1 0]
[0 1 1]
[1 0 0]
[1 0 1]
<u>否</u> [1 1 0]
[1 1 1]
表2:最后C2解码的错误签名
本领域技术人员在阅读本说明书后将会明白,可以定义更多或更少类型的错误并且可以在解码数据中识别错误类型。此外,元组可以具有更多或更少的条目,例如二进制2元组、二进制4元组等,以与将在解码数据中进行诊断的错误类型相对应。
在图5A-12B中,为了本文中的描述,可以假定,用于创建每个附图中所示的解码乘积码字的乘积码可以基于具有d1=5的RS(N1,K1)C1码和具有d2=5的GF(256)上的RS(N2,K2)C2码。当然,可以使用任何其他合适的乘积码,并且该乘积码的选择仅仅为了便于描述,而不以任何方式限制可以结合在此描述的实施例使用的乘积码。
此外,图5A-12B中所得到的解码乘积码字的描述,适用于最小的汉明距离分别为d1和d2的任何GF(Q)上的线性分组码C1和GF(Q)上的线性分组码C2。
现在参考图5A,其中示出了根据具有C1解码作为最后解码操的迭代解码的一个可能结果的解码乘积码字500。解码乘积码字500具有N1列和N2行,使其成为二维N1×N2乘积码字。
在解码乘积码字500中,不存在可检测的错误,因为其中的所有符号或者被解码而没有错误,或者能够在产生该解码乘积码字500的迭代解码期间被校正。尽管该乘积码字500中的多个符号中的一些符号多个可能被错误地解码(与存储到解码数据被读取的介质不同,或者与产生编码数据的数据不同),但迭代解码不能够检测到这样的错误;因此,这是一个有效的乘积码字。
在一个示例性实施例中,假设上述乘积码,在解码乘积码字500中,针对S=[0 00]的错误签名,U=0,W'=0且M=0。这是由于解码乘积码字500中的所有C1码字和C2码字都是被允许的码字,并且因此不存在未校正的C1码字(U=0)并且所有C2码字的出错位组都是零(W'=0)。而且,在诸如eDRAM或其他合适的缓冲存储器的缓冲存储器中,没有检测到存储器错误(M=0)。
图5B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字550。解码乘积码字550具有N2列和N1行,使其成为二维N2xN1乘积码字。在解码乘积码字550中,对于S'=[0 0 0]的错误签名,U'=0,W=0且M'=0,因为解码乘积码字550中的所有C1码字和C2码字都是被允许的码字,因此不存在未校正的C2码字(U'=0)并且所有C1码字的出错位组都是零(W=0)。此外,在诸如eDRAM或其他合适的缓冲存储器的缓冲存储器中,没有检测到存储器错误(M'=0)。
现在参考图6A,其中示出了根据将C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字600。在解码乘积码字600中,存在一个可检测到的错误,即因与缓冲存储器中的存储器符号错误相关联的符号的错误存储而导致的存储器符号错误(e)。尽管该乘积码字600中的其他多个符号中的一些可能被错误地解码(与存储到解码数据被读取的介质的不同,或者与产生编码数据的数据不同),迭代解码无法检测到这样的错误;但是,由于内存系统错误,这不是有效的乘积码字。
在解码乘积码字600中,对于错误签名S=[0 0 1]来说,U=0,W'=1,W=1且M=1,这是因为,没有未校正的C1码字(U=0),在解码乘积码字600中只有一个C2码字具有非零出错位组(W'=1),在解码乘积码字600中C1码字中的一个具有非零出错位组(W=1),并且因除U之外一个C1码字具有小于d1个符号错误而检测到存储器错误(M=1)。
图6B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字650。由于U'=0,W=1,W'=1且M'=1,导致解码乘积码字650的错误签名为S’=[0 01],这是因为,不存在未校正的C2码字(U'=0),在解码乘积码字650中只有一个C2码字具有非零出错位组(W'=1),在解码乘积码字650中一个C1码具有非零出错位组(W=1),并且因除U'以外一个C2码字具有小于d2个符号错误而检测到存储器错误(M=1)。
现在参考7A,其中示出根据将C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字700。在解码乘积码字700中,在相同的C1码字中存在几个错误,包括在C1解码之前的信道符号错误(x)以及由于C1解码器错误而导致的插入符号错误(o)。虽然该乘积码字700中的其他多个符号中的一些可能被错误地解码(与存储到解码数据被读取的介质不同,或与产生编码数据的数据不同),但迭代解码无法检测到这样的错误;然而,由于错误的组合,这不是有效的乘积码字。
在解码乘积码字700中,对于S=[0 1 0]的错误签名,U=0,W'=5,W=0,D=1且M=0,因为不存在未校正的C1码字(U=0),在解码乘积码字700中五个C2码字具有非零出错位组(W'=5),在解码乘积码字700中没有一个C1码字具有非零出错位组(W=0),除U之外零个C1码字具有至少d1个在确定C2错误位置后检测到的符号错误(D=0),并且没有检测到存储器错误(M=0)。
图7B示出根据C2解码作为最后解码操作的的迭代解码的一个可能结果解码的乘积码字750。由于U'=0,W=5,W'=0,D'=1和M'=0,这个解码乘积码字750的错误签名将是S'=[0 1 0],这是因为,不存在未校正的C2码字(U'=0),在解码乘积码字750中没有C2码字具有非零出错位组(W'=0),在解码乘积码字750中C1码字中的五个具有非零出错位组(W=5),除U'之外零个C2码字具有至少d2个在确定C1错误位置之后检测到的符号错误(D'=0),并且没有检测到存储器错误(M'=0)。
现在参考图8A,其中示出了根据具有C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字800。在解码乘积码字800中,在相同的C1码字中存在多个错误,包括C1解码之前的信道符号错误(x),以及由于C1解码器错误而导致的插入符号错误(o),以及在另一个C1码字中的一个存储器错误(e)。尽管该乘积码字800中的其他多个符号中的一些可能被错误地解码(与存储到解码数据被读取的介质的不同,或者与产生编码数据的数据不同),迭代解码无法检测到这样的错误;然而,由于错误的组合,这不是有效的乘积码字。
在解码乘积码字800中,对于S=[0 1 1]的错误签名,U=0,W'=6,W=1,D=1且M=1,这是因为,不存在未校正的C1码字(U=0),在解码乘积码字800中六个C2码字有非零出错位组(W'=6),由于存储器错误在解码乘积码字800中C1码字之一有非零出错位组(W=1),除U之外一个C1码字具有至少d1个在确定C2错误位置之后检测到的符号错误(D=1),并且由于除U之外一个C1码字具有少于d1个在确定C2错误位置后检测到的符号错误而检测到一个存储器错误(M=1)。
图8B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字850。这个解码乘积码字850的错误签名,将是由U'=0、W'=1、W=6、D'=1和M'=1产生的S'=[0 1 1],这是因为,不存在未纠错C2码字(U'=0),在解码乘积码字850中一个C2码字具有非零校验子(W'=1),在解码乘积码字850中六个C1码字具有非零出错位组(W=6),除U'之外一个C2码字有至少d2个在确定C1错误位置之后被检测到的符号错误(D'=1),并且,检测到一个存储器错误(M'=1)。
现在参考图9A,示出了根据将C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字900。在解码乘积码字900中,在同一个C1码字中存在几个错误:在C1解码之前的三个信道符号错误(x)。尽管该乘积码字900中的其他多个符号中的一些可能被错误地解码(与存储到解码数据被读取的介质的不同,或与产生编码数据的数据不同),迭代解码无法检测到这样的错误;但是,由于信道符号错误,这不是有效的乘积码字。
在解码乘积码字900中,对于S=[1 0 0]的错误签名,U=1,W'=3,W=1,D=0且M=0,这是因为,有一个未校正的C1码字(U=1),在解码乘积码字900中三个C2码字具有非零出错位组(W'=3),在解码乘积码字900中C1码字中的一个具有非零出错位组(W=1),除了U之外零个C1码字具有至少d1个在确定C2错误位置之后被检测到的符号错误(D=0),并且没有检测到存储器错误(M=0)。
图9B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字950。这个解码乘积码字950的错误签名将是由U'=1、W=1、W'=3、D'=0和M'=0导致的S'=[1 0 0],这是因为,存在一个未校正的C2码字(U'=1),在解码乘积码字950中三个C2码字具有非零校验子(W'=3),在解码乘积码字950中C1码字之一具有非零出错位组(W=1),除U'以外没有C2码字有至少d2个在确定C1错误位置(D'=0)之后被检测到的符号错误,并且没有检测到存储器错误(M'=0)。
现在参考图10A,示出了根据具有C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字1000。在解码乘积码字1000中,在相同的C1码字中存在多个错误,包括在C1解码之前的三个信道符号错误(x)以及在不同的C1码字中的存储器错误(e)。尽管该乘积码字1000中的其他多个符号中的一些可能被错误地解码(不同于存储到解码数据被读取的介质,或与产生编码数据的数据不同),迭代解码无法检测到这样的错误;然而,由于错误的组合,这不是有效的乘积码字。
在解码乘积码字1000中,对于S=[1 0 1]的错误签名,U=1,W'=4,W=2,D=0且M=1,这是因为,存在一个未校正的C1码字(U=1)中,在解码乘积码字1000中四个C2码字具有非零出错位组(W'=4),在解码乘积码字1000中两个C1码字中具有非零出错位组(W=2),除U以外没有C1码字有至少d1个在确定C2错误位置之后被检测到的符号错误(D=0),并且由于除U以外一个C1码字有少于d1个在确定C2错误位置之后被检测到的符号错误而检测到一个存储器错误(M=1)。
图10B示出了根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字1050。由于U'=1,W=4,W'=2,D'=0,并且M'=1,所以这个解码乘积码字1050的错误签名将是S'=[1 0 1],这是因为,存在一个未纠错C2码字(U'=1),在解码乘积码字1050中2个C2码字具有非零出错位组(W'=2),在解码乘积码字1050中C1码字中的四个具有非零出错位组(W=4),除了U'以外没有C2码字有至少d2个在确定C1错误位置之后检测到的符号错误(D'=0),并且检测到一个存储器错误(M'=1)。
现在参考图11A,示出了根据将C1解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字1100。在解码乘积码字1100中,在两个C1码字中存在若干个错误,包括在一个C1码字中的C1解码之前的三个信道符号错误(x),以及在不同的C1码字中的三个信道错误和由于C1解码器导致的两个插入符号错误(o)错误。尽管该乘积码字1100中的其他多个符号中的一些可能被不正确地解码(与存储到解码数据被读取的介质的不同,或与产生编码数据的数据不同),迭代解码是无法检测到这样的错误;然而,由于错误的组合,这不是有效的乘积码字。
在解码乘积码字1100中,针对S=[1 1 0]的错误签名,U=1,W'=8,W=1,D=1且M=0,这是因为,存在一个未校正的C1码字(U=1),在解码乘积码字1100中八个C2码字具有非零乘积(W'=8),在解码乘积码字1100中C1码之一字具有非零乘积(W=1),除了U以外一个C1码字有至少d1个在确定C2错误位置之后检测到的符号错误(D=1),并且没有检测到存储器错误(M=0)。
图11B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字1150。这个解码乘积码字1150的错误签名将是由U'=1,W=8,W'=1,D'=1和M'=0导致的S'=[1 1 0],这是因为,存在一个未校正的C2码字(U'=1),在解码乘积码字1150中一个C2码字具有非零乘积(W'=1),在解码乘积码字1150中C1码字中的八个具有非零乘积(W=8),除U'之外一个C2码字具有至少d2个在确定C1错误位置之后检测到的符号错误(D'=1),并且未检测到存储器错误(M'=0)。
现在参考图12A,示出了根据将C1解码作为最后解码操作的迭代解码的一个可能结果解码乘积码字1200。在解码乘积码字1200中,在三个C1码字中存在几个错误,包括一个C1码字中的C1解码之前的三个信道符号错误(x),在第二C1码字中的另外三个信道错误和因C1解码器错误导致的两个插入符号错误(o),以及在第三C1码字中的存储器错误。尽管该乘积码字1200中的其他多个符号中的一些可能被错误地解码(与存储到解码数据被读取的介质中的不同,或与产生编码数据的数据不同),迭代解码无法检测到这样的错误;然而,由于错误的组合,这不是有效的乘积码字。
在解码乘积码字1200中,对于S=[1 1 1]的错误签名,U=1,W'=9,W=2,D=1且M=1,这是因为,存在一个未校正的C1码字(U=1),在解码乘积码字1200中九个C2码字具有非零乘积(W'=9),解码乘积码字1200中C1码字中的两个具有非零乘积(W=2),除了U之外一个C1码字有至少d1个在确定C2错误位置之后至少检测到的符号错误(D=1),并且由于除U以外一个C1码字有小于d1个在确定C2之后检测到的符号错误而检测到一个存储器错误(M=1)。
图12B示出根据C2解码作为最后解码操作的迭代解码的一个可能结果的解码乘积码字1250。由于U'=1,W=9,W'=2,D'=1并且M'=1,所以这个解码乘积码字1250的错误签名将是S'=[1 1 1],这是因为,存在一个未纠错C2码字(U'=1),在解码乘积码字1250中两个C2码字具有非零校验子(W'=2),在解码乘积码字1250中C1码字中的九个具有非零出错位组(W=9),除U'之外一个C2码字具有至少d2个在确定C1错误位置检测到的符号错误(D'=1),并且检测到一个存储器错误(M'=1)。
对于在固态存储器、光存储器、光学传输等中使用的乘积码,还可以在错误恢复过程(ERP)—有时被称为数据恢复程序(DRP)—中使用后诊断动作(例如,诊断的结果)。对于ERP或DRP来说,存在两个实施例:a)响应于数据在缓冲器中仍然可用而重复数据的解码,例如在在缓冲器中解码数据的存储期间发生错误(存储器错误、软错误)的情况下,或者b)重新读取来自光学/磁性/固体介质的数据,并且响应于来自光学/磁性/固体介质的重读的波形而重复数据的解码,或者用额外的解码或更强大的解码(例如,更高数量的C1/C2迭代以实现成功解码)来解码所重读的波形。
现在参考图13,根据一个实施例示出了用于迭代解码的方法1300。方法1300可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1300可以包括比图13中具体描述的操作更多或更少的操作。
方法1300的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1300可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1300的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图13所示,方法1300可以以操作1302开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作1304中,迭代计数器递增1(例如,i=i+1),以表示将要对数据执行解码的另一(或第一)迭代。
在操作1306中,对包括乘积码字的编码数据执行C1解码以产生C1解码数据。
在操作1308中,对包括乘积码字的C1解码数据执行C2解码以产生解码数据。
在操作1310中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法1300返回到操作1304以重复C1/C2解码。响应于i等于P,方法1300继续到操作1312。
在操作1312中,再次对解码数据执行C1解码以产生最终解码数据,并且计算不可纠正的C1码字的数量(U)。
在操作1314中,对最终解码数据执行C2出错位组检验以计算乘积码字中具有非零出错位组的C2码字的数量(W’)。
在操作1316中,对最终解码数据执行C1出错位组检验以计算乘积码字中具有非零出错位组的C1码字的数量(W)。
如图所示,方法1300依赖于获得参数U、W'和W以便确定错误签名。然后,方法1300继续到图17中的A,为解码乘积码字计算错误签名。将在描述图14-16中的用于迭代解码的其他实施例之后对图17进行描述。
现在参考图14,根据一个实施例示出了用于迭代解码的方法14400。方法1400可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1400可以包括比图14中具体描述的操作更多或更少的操作。
方法1400的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1400可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1300的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图14所示,方法1400可以以操作1402开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作1404中,迭代计数器递增1(例如,i=i+1),以表示将对数据执行解码的另一(或第一)迭代。
在操作1406中,对包括乘积码字的编码数据执行C1解码以产生C1解码数据。
在操作1408中,对包括乘积码字的C1解码数据执行C2解码以产生解码数据。
在操作1410中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法1400返回到操作1404以重复C1/C2解码。响应于i等于P,方法1400继续到操作1412。
在操作1412中,再次对解码数据执行C1解码以产生C1后解码数据。
在操作1414中,对C1后解码数据执行C2解码以产生最终解码数据。此外,计算不可纠正的C2码字的数量(U')。
在操作1416中,对最终解码数据执行C1出错位组检验以计算乘积码字中具有非零出错位组的C1码字的数量(W)。
在操作1418,对最终解码数据执行C2出错位组检验以计算乘积码字中具有非零出错位组的C2码字的数量(W’)。
如图所示,方法1400依赖于获得参数U',W'和W以确定错误签名。然后,方法1400继续到图18中的B。为解码乘积码字计算错误签名。将在描述图17中的用于计算错误签名的其他实施例之后对图18进行描述。
现在参考图15,根据一个实施例示出了用于迭代解码的方法1500。方法1500可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1500可以包括比图15中具体描述的操作更多或更少的操作。
方法1500的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1500可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1500的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图15所示,方法1500可以以操作1502开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作1504中,迭代计数器增加1(例如,i=i+1)以表示将要对数据执行解码的另一(或第一)迭代。
在操作1506中,对包括乘积码字的编码数据执行C2解码以产生C2解码数据。
在操作1508中,对包括乘积码字的C2解码数据执行C1解码以产生解码数据。
在操作1510中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P,例如C1/C2解码的2次完整迭代、3次完整迭代、4次完整迭代,等等。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法1500返回到操作1504以重复C2/C1解码。响应于i等于P,方法1500继续到操作1512。
在操作1512中,再次对解码数据执行C2解码以产生最终解码数据,并且计算解码数据中的不可纠正C2码字的数量(U')。
在操作1514,对最终解码数据执行C1出错位组检验以计算乘积码字中具有非零出错位组的C1码字的数量(W)。
在操作1516中,对最终解码数据执行C2出错位组检验以计算乘积码字中具有非零出错位组的C2码字的数量(W’)。
如图所示,方法1500依赖于获得参数U'、W'和W以便确定错误签名。然后,方法1500继续到图18中的B,为解码乘积码字计算错误签名。
现在参考图16,根据一个实施例示出了用于迭代解码的方法1600。方法1600可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1600可以包括比图16中具体描述的操作更多或更少的操作。
方法1600的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1600可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1600的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图16所示,方法1600可以以操作1602开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作1604中,迭代计数器递增1(例如,i=i+1)以表示将要对数据执行解码的另一(或第一)迭代。
在操作1606中,对包括乘积码字的编码数据执行C2解码以产生C2解码数据。
在操作1608中,对包括乘积码字的C2解码数据执行C1解码以产生解码数据。
在操作1610中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法1600返回到操作1604以重复C2/C1解码。响应于i等于P,方法1600继续到操作1612。
在操作1612中,对解码数据执行C2解码以产生C2后解码数据。
在操作1614中,对C2解码后数据执行C1解码以产生最终解码数据。此外,计算最终解码数据中不可纠正的C1码字的数量(U)。
在操作1616中,对最终解码数据执行C2出错位组检验以计算乘积码字中具有非零出错位组的C2码字的数量(W’)。
在操作1618中,对最终解码数据执行C1出错位组检验以计算乘积码字中具有非零出错位组的C1码字的数量(W)。
如图所示,方法1600依赖于获得参数U,W'和W以便确定错误签名。然后,方法1600继续到图17中的A,为解码乘积码字计算错误签名。
现在参考图17,根据一个实施例示出了用于迭代解码的方法1700,其可在图13和16所示的方法的无论哪一个之后执行。方法1700可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1700可以包括比图17中具体描述的操作更多或更少的操作。
方法1700的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1700可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1700的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图17所示,方法1700从先前执行的迭代解码方法的A连接以操作1702开始,其中确定不可纠正的C1码字的数量(U)是否等于零(例如,U=0)。响应于U等于零,方法1700继续到操作1704;否则,方法1700移至操作1712。
在操作1704中,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C2码字(非法C2码字)的数量是否等于零(例如,W'=0)。响应于W'等于零,方法1700移至操作1714;否则,方法1700继续到操作1706。
在操作1706,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C2码字(非法C2码字)的数量是否小于C1码的最小汉明距离(d1)(例如W'<d1)。响应于W'小于d1,方法1700继续到操作1708;否则,方法1700移至操作1716。
在操作1708中,响应于W'<d1,检测到存储器错误,然后在操作1710中,输出S=[00 1]的错误签名。
在操作1712中,响应于U≠0,检测到信道错误,然后方法1700继续到操作1718。
在操作1714中,确定解码已成功,然后方法1700继续到操作1726。
在操作1716中,响应于W'≥d1,检测到C1解码器错误,然后方法1700继续到操作1728。
在操作1718中,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C1码字(非法C1码字)的数量(W)是否等于不可纠正的C1码字的数量(U)(例如,W=U)。响应于W等于U,方法1700移至操作1724;否则,方法1700继续到操作1720。
在操作1720中,响应于W≠U并且U≠0,检测到存储器错误,并且在操作1722中,输出S=[1 d 1]的错误签名,其中d基于D的值,其中D=0时d=0,D>0时d=1。
在操作1724中,输出S=[1 d 0]的错误签名,其中d基于D的值,当D=0时d=0,当D>0时d=1。
在操作1726中,响应于乘积码字中的所有码字的成功解码,输出S=[0 0 0]的错误签名。
在操作1728中,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C1码字(非法C1码字)的数量(W)是否等于零(例如,W=0)。响应于W等于0,方法1700转移到操作1730;否则,方法1700继续到操作1732。
在操作1730,输出S=[0 1 0]的错误签名。
在操作1732中,响应于W'≥d1并且W≠0,检测到存储器错误,然后在操作1734中,输出S=[0 1 1]的错误签名。
根据一个实施例,在方法1700中获得错误签名之后,可以在从介质重新读取编码数据和/或再次尝试迭代解码之前,执行一个或多个动作,以纠正由错误签名标识的特定类型的错误。这些动作可以包括相对于读取传感器横向地调节介质的物理位置,介质相对于读取传感器向前或向后的移动,使用更密集或更不密集的解码算法来解码编码数据,使用一个或多个不同解码算法来解码编码数据,增加或减少解码方案中的迭代次数,增加或减小重新读取期间介质的移动速度等。
现在参考图18,示出了根据一个实施例的方法1800,其可在图14和15所示的方法的无论哪一个之后执行。。再次参照图18,方法1800可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1800可以包括比图18中具体描述的操作更多或更少的操作。
方法1800的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1800可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1800的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图所示,在图18中,方法1800从先前执行的迭代解码方法的B连接以操作1802开始,其中确定不可纠正的C2码字的数目(U')是否等于零(例如,U'=0)。响应于U'等于零,方法1800继续到操作1804;否则,方法1800转到操作1812。
在操作1804中,确定在检查C1出错位组之后检测到的乘积码字中具有非零出错位组的C1码字(非法C1码字)的数量是否等于零(例如,W=0)。响应于W等于零,方法1800移至操作1814;否则,方法1800继续到操作1806。
在操作1806,确定在检查C1出错位组之后检测到的乘积码字中具有非零出错位组的C1码字(非法C1码字)的数量是否小于C2码的最小汉明距离(d2)(例如W<d2)。响应于W小于d2,方法1800继续到操作1808;否则,方法1800转到操作1816。
在操作1808中,响应于W<d2,检测到存储器错误,然后在操作1810中,输出S'=[00 1]的错误签名。
在操作1812中,响应于U'≠0,检测到信道错误,然后方法1800继续到操作1818。
在操作1814中,确定解码已成功,并且方法1800继续到操作1826。
在操作1816中,响应于W≥d2,检测C2解码器错误,然后方法1800继续到操作1828。
在操作1818中,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C2码字(非法C2码字)的数量(W’)是否等于不可校正的C2码字的数量(U')(例如,W'=U')。响应于W'等于U',方法1800转到操作1824;否则,方法1800继续到操作1820。
在操作1820中,响应于W'≠U'且U'≠0而检测到存储器错误,并且在操作1822中,输出S'=[1 d' 1]的错误签名,其中d'基于D'的值,其中当D'=0时d'=0,当D'>0时d'=1。
在操作1824中,输出S'=[1 d' 0]的错误签名,其中d'基于D'的值,当D'=0时d'=0,当D'>0时d'=1。
在操作1826中,响应于乘积码字中的所有码字的成功解码,输出S'=[0 0 0]的错误签名。
在操作1828中,确定在检查C2出错位组之后检测到的乘积码字中具有非零出错位组的C2码字(非法C2码字)的数量(W’)是否等于零(例如,W’=0)。响应于W’等于0,方法1800转移到操作1830;否则,方法1800继续到操作1832。
在操作1830中,输出S'=[0 1 0]的错误签名。
在操作1832中,响应于W<d2且W'≠0,检测到存储器错误,然后在操作1834中,输出S'=[0 1 1]的错误签名。
根据一个实施例,在方法1800中获得错误签名之后,可以在从介质重新读取编码数据和/或再次尝试迭代解码之前,执行一个或多个动作,以纠正由错误签名标识的特定类型的错误。这些动作可以包括相对于读取传感器横向地调节介质的物理位置,介质相对于读取传感器向前或向后的移动,使用更密集或更不密集的解码算法来解码编码数据,使用一个或多个不同解码算法来解码编码数据,增加或减少解码方案中的迭代次数,重新读取期间介质的移动速度的增加或减小等。
现在参考附图19,根据一个实施例示出了用于迭代解码的方法1900。方法1900可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法1900可以包括比图19中具体描述的操作更多或更少的操作。
方法1900的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法1900可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法1900的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图19所示,方法1900可以以操作1902开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作1904中,迭代计数器递增1(例如,i=i+1)以表示将对数据执行解码的另一(或第一)迭代。
在操作1906中,对包括乘积码字的编码数据执行C1解码以产生C1解码数据。
在操作1908中,对包括乘积码字的C1解码数据执行C2解码以产生解码数据。
在操作1910中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法1900返回到操作1904以重复C1/C2解码。响应于i等于P,方法1900继续到操作1912。
在操作1912中,再次对解码数据执行C1解码以产生最终解码数据,并计算乘积码字中不可纠正的C1码字的数量(U)。
然后,方法1900继续到图20中的C,为解码乘积码字计算错误签名。
现在参考图20,根据一个实施例示出了方法2000。方法2000可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法2000可以包括比图20中具体描述的操作更多或更少的操作。
方法2000的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法2000可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法2000的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图20所示,方法2000可以开始于操作2002,其中对最终解码数据执行C2出错位组检验,以计算被称为W'的非零C2出错位组(非法C2码字)的数量。
在操作2004中,基于非法C2码字和在解码期间获得的其他信息来计算C2错误位置。
在操作2006中,将C2错误位置转换为C1错误位置。因为C1和C2码字在乘积码字中是正交的,C2码字中的错误的位置可以被转换为C1码字中的错误的位置,反之亦然。
在操作2008中,计算除了不可校正的C1码字(U)之外的、至少具有d1个符号错误(D)的C1码字的数量。此外,计算除了不可纠正的C1码字(U)之外的、具有小于d1个符号错误(M)的C1码字的数量。在确定C2错误位置之后,计算这两个值D和M。
在操作2010中,基于先前描述的关系来计算c、d和m,并且输出相应的错误签名S=[c d m]。
根据一个实施例,在方法2000中获得错误签名之后,可以在从介质重新读取编码数据和/或再次尝试迭代解码之前,执行一个或多个动作,以纠正由错误签名标识的特定类型的错误。这些动作可以包括相对于读取传感器横向地调节介质的物理位置,介质相对于读取传感器向前或向后的移动,使用或多或少密集的解码算法来解码编码数据,使用一个或多个不同解码算法来解码编码数据,增加或减少解码方案中的迭代次数,重新读取期间介质的移动速度的增加或减小等。
方法2000是错误签名计算,其依赖于在诸如在图19作为例子所示的方法1900的、以C1解码作为最后的解码操作的C1/C2迭代解码之后的U的确定,以及D和M的计算。
现在参考附图21,根据一个实施例示出了用于迭代解码的方法2100。方法2100可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法2100可以包括比图21中具体描述的操作更多或更少的操作。
方法2100的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法2100可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法2100的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图所示,如图21所示,方法2100可以以操作2102开始,其中迭代计数器(i)被设置为零(例如,i=0)。该迭代计数器用于跟踪对包括乘积码字的接收到的编码数据执行解码的迭代次数。
在操作2104中,迭代计数器递增1(例如,i=i+1)以表示将对数据执行解码的另一(或第一)迭代。
在操作2106中,对包括乘积码字的编码数据执行C2解码以产生C2解码数据。
在操作2108中,对包括乘积码字的C2解码数据执行C1解码以产生解码数据。
在操作2110中,确定迭代计数器是否等于用于解码乘积码字的完整迭代的预定最大次数(P)(例如,i=P)。可以为完成任何期望的目标以及为提供任意数量的迭代而设置P。在流模式中,P=1,对于C1/C2解码的两次迭代,P=2等等。
响应于i不等于P,方法2100返回到操作2104以重复C2/C1解码。响应于i等于P,方法2100继续到操作2112。
在操作2112中,再次对解码数据执行C2解码以产生最终解码数据。然后,方法2100继续到图22中的D,为解码乘积码字计算错误签名。
现在参考图22,根据一个实施例示出了方法2200。可以根据本发明在各种实施例中在包括图1-12所示的任何环境中执行。当然,如本领域技术人员在阅读本说明书后将会理解的那样,方法2000可以包括比图22中具体描述的操作更多或更少的操作。
方法2200的每个步骤可以由操作环境的任何合适的部件执行。例如,在各种实施例中,方法2200可以由控制器、处理器、磁带驱动器或其中具有一个或多个处理器的某个其他设备部分地或全部地执行。处理器(例如以硬件和/或软件实现并且优选地具有至少一个硬件组件的处理电路、芯片和/或模块)可以用于任何设备中以执行方法2200的一个或多个步骤。示例性处理器包括但不限于CPU、ASIC、FPGA等,上述的组合,或本领域已知的任何其他合适的计算设备。
如图22所示,方法2200可以以操作2202开始,其中在最终解码数据上执行C1出错位组检验,以计算被称为W的非零C1出错位组(非法C1码字)的数量。
在操作2204中,基于非法C1码字和在解码期间获得的其他信息来计算C1错误位置。
在操作2206中,将C1错误位置转换为C2错误位置。由于C1和C2码字在乘积码字中是正交的,所以C1码字中的错误位置可以被转换为C2码字中的错误位置,反之亦然。
在操作2208中,计算除了不可校正的C2码字(U‘)之外的、至少具有d2个符号错误的C2码字的数量(D’)。此外,计算除了不可纠正的C2码字(U‘)之外的、具有小于d2个符号错误的C2码字的数量(M’)。在确定C1错误位置之后,计算这两个值D'和M'。
在操作2210中,基于先前描述的关系来计算c'、d'和m',并且输出相应的错误签名S'=[c' d' m']。
根据一个实施例,在方法2200中获得错误签名之后,可以在从介质重新读取编码数据和/或再次尝试迭代解码之前,执行一个或多个动作,以纠正由错误签名标识的特定类型的错误。这些动作可以包括相对于读取传感器横向地调节介质的物理位置,介质相对于读取传感器向前或向后的移动,使用或多或少密集的解码算法来解码编码数据,使用一个或多个不同解码算法来解码编码数据,增加或减少解码方案中的迭代次数,重新读取期间介质的移动速度的增加或减小等。
方法2200是错误签名计算,其依赖于在以C2解码作为最后的解码操作的C2/C1迭代解码之后的U的确定,以及D'和M'的计算。
在一个实施例中,可以用C1和C2解码器以及C1和C2出错位组检验器的纠错状态来识别错误是由于存储器中的软故障造成的,还是C1解码器或C2解码器的误校正,还是不可纠正的错误。表3示出了根据一个实施例的解码器状态、出错位组检查器状态和出现的错误类型之间的关系。
Figure BDA0001695816650000311
表3:错误类型的关系
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现
此外,根据各种实施例的系统可以包括一个处理器和与该处理器集成的和/或可由该处理器执行的逻辑,该逻辑被配置以执行本文所述的一个或多个处理步骤。所谓与处理器集成,指处理器具有作为硬件逻辑嵌入的逻辑,例如ASIC、FPGA等。所谓的可由处理器执行,指该逻辑是硬件逻辑、诸如固件的软件逻辑,操作系统的一部分,应用程序的一部分等,或者可由处理器访问并且被配置为使处理器在处理器执行时执行某些功能的硬件和软件逻辑的某种组合。如本领域已知的,软件逻辑可以存储在任何存储器类型的本地和/或远程存储器上。可以使用本领域已知的任何处理器,诸如软件处理器模块和/或诸如ASIC、FPGA、CPU、集成电路(IC)、图形处理单元(GPU)等的硬件处理器。
将清楚的是,可以以任何方式对上述系统和/或方法的各种特征进行组合,创建以上的描述的多个组合。
将进一步认识到,可以以为按需提供服务而代表客户部署的服务的形式提供本发明的实施例。
虽然以上已经描述了各种实施例,但应该理解,它们仅作为示例而不是限制而呈现。因此,优选实施例的宽度和范围不应被任何上述示例性实施例限制,而应仅根据所附权利要求及其等同物来限定。

Claims (18)

1.一种用于对乘积码诊断的后解码错误检查的系统,包括:
控制器和与所述控制器集成和/或由所述控制器可执行的逻辑,所述逻辑被配置为:
对编码数据执行迭代解码以获得解码数据,其中在所述迭代解码中执行至少三个解码操作,所述解码操作选自包括以下各项的组:C1解码和C2解码;和
响应于在编码数据的迭代解码之后在第一部分中没有获得有效的乘积码字,对解码数据的第一部分执行后解码错误诊断;
其中被配置为对所述解码数据执行解码后错误诊断的所述逻辑还被配置为识别所述解码数据中的错误签名;
其中被配置成识别解码数据中的错误签名的所述逻辑还被配置为:
获得解码数据中的不可纠正的C1码字的数量U;
获得解码数据中具有非零出错位组的C2码字的数量W';
在解码数据中获得具有非零出错位组的C1码字的数量W;
获得除不可纠正的C1码字的数量U外解码数据中具有在其中至少检测到的阈值数量d1的符号错误的C1码字的数量D;和
获得除不可纠正的C1码字的数量U外解码数据中具有少于所述阈值数量d1的在其中检测到的符号错误的C1码字的数量M。
2.如权利要求1所述的系统,其中所述逻辑还被配置为响应于在所述编码的所述迭代解码中的至少一个解码操作之后在第二部分中获得有效乘积码字而输出所述解码数据的第二部分数据。
3.如权利要求1所述的系统,其中所述解码操作包括初始C1解码,接着是C2解码,再接着是C1解码。
4.如权利要求1所述的系统,其中,所述解码操作包括初始C2解码,之后是C1解码,再接着是C2解码。
5.如权利要求1所述的系统,其中,所述逻辑还被配置为为所述解码数据定义八个错误签名:表示在解码数据中没有发现错误类型的第一错误签名,表示在解码数据中发现至少一个存储器错误M>0的第二错误签名,表示在解码数据中发现至少一个解码器错误D>0的第三错误签名,表示在解码数据中发现至少一个解码器错误D>0和至少一个存储器错误M>0的第四错误签名,表示在解码数据中发现的至少一个信道错误U>0的第五错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个存储器错误M>0的第六错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个解码器错误D>0的第七错误签名,以及表示在解码数据中发现至少一个信道错误U>0、至少一个解码器错误D>0和至少一个存储器错误M>0的第八错误签名。
6.如权利要求5所述的系统,其中响应于U=0、D=0和M=0的条件而识别所述第一错误签名,其中响应于U=0、D=0且M>0的条件而识别所述第二错误签名,其中响应于U=0、D>0和M=0的条件而识别第三错误签名,其中响应于U=0、D>0和M>0的条件而识别第四错误签名,其中响应于U>0、D=0和M=0的条件的条件而识别第五错误签名,其中响应于U>0、D=0和M>0的条件而识别第六错误签名,其中响应于U>0、D>0和M=0的条件的条件而识别第七错误签名,并且其中响应于U>0、D>0和M>0的条件而识别第八错误签名。
7.一种控制器实现的方法,所述方法包括:
对编码数据执行迭代解码以获得解码数据,其中在所述迭代解码中执行至少三个解码操作,所述解码操作选自包括以下各项的组:C1解码和C2解码;和
响应于在编码数据的迭代解码之后在第一部分中没有获得有效的乘积码字,对解码数据的第一部分执行解码后错误诊断;
其中,对解码数据执行解码后错误诊断包括识别解码数据中的错误签名;
其中,识别解码数据中的错误签名包括:
获得解码数据中的不可纠正的C1码字的数量U;
获得解码数据中具有非零出错位组的C2码字的数量W';
在解码数据中获得具有非零出错位组的C1码字的数量W;
获得除不可纠正的C1码字的数量U外解码数据中具有在其中至少检测到的阈值数量d1的符号错误的C1码字的数量D;和
获得除不可纠正的C1码字的数量U外解码数据中具有少于所述阈值数量d1的在其中检测到的符号错误的C1码字的数量M。
8.如权利要求7所述的方法,还包括响应于在所述编码的所述迭代解码中的至少一个解码操作之后在第二部分中获得有效乘积码字而输出所述解码数据的第二部分数据。
9.如权利要求7所述的方法,其中所述解码操作包括初始C1解码,接着是C2解码,再接着是C1解码。
10.如权利要求7所述的方法,其特征在于,所述解码操作包括初始C2解码,接着是C1解码,再接着是C2解码。
11.如权利要求7所述的方法,还包括为所述解码数据定义八个错误签名:表示在解码数据中没有发现错误类型的第一错误签名,表示在解码数据中发现至少一个存储器错误M>0的第二错误签名,表示在解码数据中发现至少一个解码器错误D>0的第三错误签名,表示在解码数据中发现至少一个解码器错误D>0和至少一个存储器错误M>0的第四错误签名,表示在解码数据中发现的至少一个信道错误U>0的第五错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个存储器错误M>0的第六错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个解码器错误D>0的第七错误签名,以及表示在解码数据中发现至少一个信道错误U>0、至少一个解码器错误D>0和至少一个存储器错误M>0的第八错误签名。
12.如权利要求11所述的方法,其中响应于U=0、D=0和M=0的条件而识别所述第一错误签名,其中响应于U=0、D=0且M>0的条件而识别所述第二错误签名,其中响应于U=0、D>0和M=0的条件而识别第三错误签名,其中响应于U=0、D>0和M>0的条件而识别第四错误签名,其中响应于U>0、D=0和M=0的条件的条件而识别第五错误签名,其中响应于U>0、D=0和M>0的条件而识别第六错误签名,其中响应于U>0、D>0和M=0的条件的条件而识别第七错误签名,并且其中响应于U>0、D>0和M>0的条件而识别第八错误签名。
13.一种存储有计算机程序产品的计算机可用介质,所述计算机程序产品包括具有用其体现的程序指令的计算机可读存储介质,所体现的程序指令可由控制器执行以使所述控制器:
由所述控制器对编码数据进行迭代解码以获得解码数据,其中在迭代解码中执行至少三个解码操作,所述解码操作选自包括以下各项的组:C1解码和C2解码;和
响应于在编码数据的迭代解码之后未在第一部分中获得有效的乘积码字,由控制器对解码数据的第一部分执行后解码错误诊断;
其中,可由所述控制器执行以使所述控制器对所述解码数据执行解码后错误诊断的所体现的程序指令还使所述控制器识别所述解码数据中的错误签名;
其中,可由所述控制器执行以使所述控制器识别所述解码数据中的所述错误签名的所体现的程序指令还使所述控制器:
获得解码数据中的不可纠正的C1码字的数量U;
获得解码数据中具有非零出错位组的C2码字的数量W';
在解码数据中获得具有非零出错位组的C1码字的数量W;
获得除不可纠正的C1码字的数量U外解码数据中具有在其中至少检测到的阈值数量d1的符号错误的C1码字的数量D;和
获得除不可纠正的C1码字的数量U外解码数据中具有少于所述阈值数量d1的在其中检测到的符号错误的C1码字的数量M。
14.如权利要求13所述的计算机可用介质,其中所体现的程序指令还可由所述控制器执行以使所述控制器:
响应于在编码数据的迭代解码中的至少一个解码操作之后在第二部分中获得有效的乘积码字,由所述控制器输出第二部分解码数据。
15.如权利要求13所述的计算机可用介质,其中所述解码操作包括初始C1解码,接着是C2解码,再接着是C1解码。
16.如权利要求13所述的计算机可用介质,其中所述解码操作包括初始C2解码,接着是C1解码,再接着是C2解码。
17.如权利要求13所述的计算机可用介质,其中,所体现的程序指令还可由所述控制器执行,以使所述控制器为所述解码的数据定义八个错误签名:表示在解码数据中没有发现错误类型的第一错误签名,表示在解码数据中发现至少一个存储器错误M>0的第二错误签名,表示在解码数据中发现至少一个解码器错误D>0的第三错误签名,表示在解码数据中发现至少一个解码器错误D>0和至少一个存储器错误M>0的第四错误签名,表示在解码数据中发现的至少一个信道错误U>0的第五错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个存储器错误M>0的第六错误签名,表示在解码数据中发现至少一个信道错误U>0和至少一个解码器错误D>0的第七错误签名,以及表示在解码数据中发现至少一个信道错误U>0、至少一个解码器错误D>0和至少一个存储器错误M>0的第八错误签名。
18.如权利要求17所述的计算机可用介质,其中响应于U=0、D=0和M=0的条件而识别所述第一错误签名,其中响应于U=0、D=0且M>0的条件而识别所述第二错误签名,其中响应于U=0、D>0和M=0的条件而识别第三错误签名,其中响应于U=0、D>0和M>0的条件而识别第四错误签名,其中响应于U>0、D=0和M=0的条件的条件而识别第五错误签名,其中响应于U>0、D=0和M>0的条件而识别第六错误签名,其中响应于U>0、D>0和M=0的条件的条件而识别第七错误签名,并且其中响应于U>0、D>0和M>0的条件而识别第八错误签名。
CN201680073311.8A 2015-12-14 2016-11-29 对乘积码诊断的后解码错误检查 Active CN108370252B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/968,726 2015-12-14
US14/968,726 US9413392B1 (en) 2015-12-14 2015-12-14 Post-decoding error check with diagnostics for product codes
PCT/IB2016/057180 WO2017103716A1 (en) 2015-12-14 2016-11-29 Post-decoding error check with diagnostics for product codes

Publications (2)

Publication Number Publication Date
CN108370252A CN108370252A (zh) 2018-08-03
CN108370252B true CN108370252B (zh) 2021-06-15

Family

ID=56556546

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680073311.8A Active CN108370252B (zh) 2015-12-14 2016-11-29 对乘积码诊断的后解码错误检查

Country Status (6)

Country Link
US (2) US9413392B1 (zh)
JP (1) JP6817301B2 (zh)
CN (1) CN108370252B (zh)
DE (1) DE112016003638B4 (zh)
GB (1) GB2562352B (zh)
WO (1) WO2017103716A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9413392B1 (en) 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes
RU2693190C1 (ru) * 2018-07-02 2019-07-01 Федеральное государственное бюджетное образовательное учреждение высшего образования "Владимирский Государственный Университет имени Александра Григорьевича и Николая Григорьевича Столетовых" (ВлГУ) Способ диагностики недвоичных блоковых кодов
GB2579591B (en) 2018-12-04 2022-10-26 Imagination Tech Ltd Buffer checker
GB2579590B (en) * 2018-12-04 2021-10-13 Imagination Tech Ltd Workload repetition redundancy
JP2020195007A (ja) * 2019-05-24 2020-12-03 キオクシア株式会社 メモリシステム
US11693733B2 (en) * 2021-01-21 2023-07-04 Kioxia Corporation Soft error detection and correction for data storage devices
US11750221B1 (en) * 2022-03-28 2023-09-05 Samsung Electronics Co., Ltd. Encoding and decoding of data using generalized LDPC codes

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4104735A (en) 1976-09-15 1978-08-01 Siemens Aktiengesellschaft Arrangement for addressing a MOS store
JP3154607B2 (ja) * 1993-12-28 2001-04-09 三菱電機株式会社 誤り訂正復号装置及び誤り訂正復号方法
US5974580A (en) 1997-07-23 1999-10-26 Cirrus Logic, Inc. Concurrent row/column syndrome generator for a product code
JP3880144B2 (ja) 1997-08-21 2007-02-14 キヤノン株式会社 誤り訂正方法
EP1146650A1 (en) * 2000-04-10 2001-10-17 Hewlett-Packard Company, A Delaware Corporation Error detection for data storage and transmission
CN1471763A (zh) * 2001-08-28 2004-01-28 连宇通信有限公司 对源数据元素进行纠错编码的方法及相应的迭代译码器
JP3889286B2 (ja) * 2002-01-31 2007-03-07 三菱電機株式会社 復号方法、復号装置及びディジタル伝送システム
TWI241073B (en) * 2005-01-03 2005-10-01 Sunplus Technology Co Ltd Decoding device for product code decoding and method thereof
JP2008016151A (ja) * 2006-07-07 2008-01-24 Canon Inc データ処理方法及び再生装置
US8046660B2 (en) * 2006-08-07 2011-10-25 Marvell World Trade Ltd. System and method for correcting errors in non-volatile memory using product codes
US7912028B2 (en) * 2007-05-31 2011-03-22 Agere Systems Inc. Reducing false detection in an HSDPA 3G terminal
WO2009122307A2 (en) * 2008-03-31 2009-10-08 Marvell Israel ( Misl) Ltd. Method and apparatus for decoding
US20110158333A1 (en) * 2008-09-12 2011-06-30 Hiroshi Nakano Radio communication system, radio communication method, and communication device
CN101483443B (zh) * 2008-12-26 2012-07-25 中国航空无线电电子研究所 Turbo乘积码优化编译码算法的FPGA实现方法
JP5881930B2 (ja) * 2009-05-13 2016-03-09 三菱電機株式会社 誤り訂正符号化装置および誤り訂正復号装置
US8467249B2 (en) 2010-07-06 2013-06-18 Densbits Technologies Ltd. Systems and methods for storing, retrieving, and adjusting read thresholds in flash memory storage system
US8566672B2 (en) 2011-03-22 2013-10-22 Freescale Semiconductor, Inc. Selective checkbit modification for error correction
US8806295B2 (en) 2012-05-24 2014-08-12 International Business Machines Corporation Mis-correction and no-correction rates for error control
US9160373B1 (en) 2012-09-24 2015-10-13 Marvell International Ltd. Systems and methods for joint decoding of sector and track error correction codes
US9413392B1 (en) 2015-12-14 2016-08-09 International Business Machines Corporation Post-decoding error check with diagnostics for product codes

Also Published As

Publication number Publication date
GB201803554D0 (en) 2018-04-18
DE112016003638B4 (de) 2023-09-21
US9413392B1 (en) 2016-08-09
DE112016003638T5 (de) 2018-05-03
WO2017103716A1 (en) 2017-06-22
US10298272B2 (en) 2019-05-21
GB2562352B (en) 2019-03-06
GB2562352A (en) 2018-11-14
US20170170849A1 (en) 2017-06-15
JP2019503603A (ja) 2019-02-07
CN108370252A (zh) 2018-08-03
JP6817301B2 (ja) 2021-01-20

Similar Documents

Publication Publication Date Title
CN108370252B (zh) 对乘积码诊断的后解码错误检查
JP4833173B2 (ja) 復号化器、符号化・復号化装置及び記録再生装置
US9542265B2 (en) Unequal error protection scheme for headerized sub data sets
US9985658B2 (en) Decoding of product codes
JP5007676B2 (ja) 符号化装置、復号化装置、符号化・復号化装置及び記録再生装置
US8910012B2 (en) Block-interleaved and error correction code (ECC)-encoded sub data set (SDS) format
US9455749B2 (en) Combination error and erasure decoding for product codes
US11031042B2 (en) Efficient rewrite using larger codeword sizes
JP2007087529A (ja) 信号復号装置、信号復号方法、および記憶システム
US10824346B2 (en) Logical format utilizing lateral encoding of data for storage on magnetic tape
US10153788B2 (en) Detection of multiple bit errors in random access memories
US9564925B1 (en) Pipelined architecture for iterative decoding of product codes
US9712188B2 (en) Decoding data stored with three orthogonal codewords
US9477552B1 (en) Priority-based decoding

Legal Events

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