CN105453439A - 用于乘积码的组合纠错和擦除解码 - Google Patents
用于乘积码的组合纠错和擦除解码 Download PDFInfo
- Publication number
- CN105453439A CN105453439A CN201480044152.XA CN201480044152A CN105453439A CN 105453439 A CN105453439 A CN 105453439A CN 201480044152 A CN201480044152 A CN 201480044152A CN 105453439 A CN105453439 A CN 105453439A
- Authority
- CN
- China
- Prior art keywords
- decoding
- catching
- erasing
- data
- failure
- 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.)
- Granted
Links
Classifications
-
- 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
- H03M13/2909—Product 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/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
- H03M13/2927—Decoding strategies
- H03M13/293—Decoding strategies with erasure setting
-
- 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/2957—Turbo codes and decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon 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/1515—Reed-Solomon 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Error Detection And Correction (AREA)
Abstract
在一个实施例中,用于乘积码的组合纠错和擦除解码的系统包括处理器以及与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑配置成:接收捕获的数据,为捕获的数据生成擦除旗标并将所述擦除旗标提供给C2解码器,将停止参数设定成等于用于对所述捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。在另外的实施例中,一种方法和/或计算机程序产品可用于乘积码的组合纠错和擦除解码。
Description
技术领域
本发明涉及数据存储,并且更特别地涉及使用组合纠错和擦除解码提供改善的乘积码解码。
背景技术
存储介质和传输介质(诸如磁带、光存储或光纤传输)使用乘积码来对数据进行编码,该编码的数据随后必须被解码以从所述介质读取数据。乘积码也可用在存储类和闪存存储器中。乘积码是两级纠错架构的关键组成部分。磁带驱动器中的纠错通常基于使用第一级C1码和第二级C2码的乘积码,该过程在本领域中是熟知的。乘积码字可被表示为二维阵列,其中该阵列的行包括来自行代码(C1码)的码字,并且该阵列的列由来自列代码(C2码)的码字组成。
根据现有技术,如图1所示,每个数据集使用被组织成大小为M字节×N字节(M×N)的ECC编码矩阵的交织的码字集进行编码,且随后被写入磁带。该矩阵150内存在两级编码。第一级编码利用矩阵行102。该矩阵的每个行102包含C1-ECC行奇偶校验106,其向n字节的用户数据添加p字节的C1-ECC(例如,N=n+p字节)。第二级编码即C2-ECC列奇偶校验108向每个矩阵列104添加q字节的C2-ECC。例如,如果q=12,则添加12字节的C2-ECC将会向矩阵150添加12行(例如,M=m+q字节)。
在磁带存储中,用于乘积码的解码器被设计成减少非常长的错误事件诸如漏码(drop-out)和同步滑移(syncslip)。在一些磁带驱动器中,在边读边写期间也被使用的C1解码器执行纠错解码,并且C2解码器执行擦除解码。这种特定解码策略的缺陷是在短错误事件存在的情况下表现不良。此外,这种策略不允许使用迭代解码来改善出错率性能。
在其他通信信道诸如光纤传输信道中,纠错解码被用在非常短的独立位错误存在的情况下。这种解码策略的缺陷是,只要长错误事件是可忽略的,就能很好地工作。
然而,许多信道和存储介质诸如磁带存储通道既展现短错误事件又展现长错误事件。因此,需要一种在长和短错误事件都存在的情况下输送改善的出错率性能的改善的解码调度/策略。
发明内容
在一个实施例中,用于乘积码的组合纠错和擦除解码的系统包括处理器以及与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑配置成:接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
在另一实施例中,用于乘积码的组合纠错和擦除解码的方法包括:接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
根据另一实施例,用于乘积码的组合纠错和擦除解码的计算机程序产品包括其中体现有程序代码的计算机只读存储介质,所述程序代码可由处理器读取/执行以便:接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
根据下面的详细描述,本发明的其他方面和实施例将变得明显,所述详细描述在结合附图阅读时借助示例示出本发明的原理。
附图说明
图1示出根据现有技术的数据集矩阵或阵列。
图2示出根据一个实施例的网络存储系统。
图3示出根据一个实施例的基于磁带的数据存储系统的简化的磁带驱动器。
图4是根据一个实施例的方法的流程图。
图5是根据另一实施例的方法的流程图。
图6是根据又一实施例的方法的流程图。
具体实施方式
下面的描述是为了说明本发明的一般原理,而并非意在限制本文要求保护的创造性构思。此外,本文所述的特定特征可以与各种可能的组合和置换中的每种组合和置换中的其他所述特征结合使用。
除非本文另有特别限定,所有术语应被给予它们最广泛的可能解释,包括从说明书中暗示的含义以及本领域技术人员所理解的和/或在字典、论文等中定义的含义。
还必须注意的是,如在本说明书和所附权利要求中使用的,单数形式的“一”和“该”包括复数形式,除非另外指明。
根据一个实施例,使用基于纠错和擦除解码的用于乘积码的解码策略,以便在存在短和长错误事件的情况下实现改善的出错率性能。
在一个一般实施例中,用于乘积码的组合纠错和擦除解码的系统包括处理器以及与处理器集成和/或可由处理器执行的逻辑,该逻辑配置成接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
在另一个一般实施例中,用于乘积码的组合纠错和擦除解码的方法包括:接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
根据另一个一般实施例,用于乘积码的组合纠错和擦除解码的计算机程序产品包括其中体现有程序代码的计算机可读存储介质,所述程序代码可由处理器读取/执行以便:接收捕获的数据,为捕获的数据生成擦除旗标并将该擦除旗标提供给C2解码器,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度,以及在迭代过程中选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
如本领域技术人员将理解的是,本发明的各方面可以实施为系统、方法或计算机程序产品。因此,本发明的各方面可采取纯硬件实施例、纯软件实施例(包括固件、驻留软件、微代码等)、或者将软件和硬件方面进行组合的实施例的形式,上述实施例可在本文中全部被一般地称为“逻辑”、“电路”、“模块”或“系统”。而且,本发明的各方面可采取在一个或多个计算机可读介质中实现的计算机程序产品的形式,所述一个或多个计算机可读介质在其上体现有计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。该计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读存储介质可以例如是但不限于电子、磁、光学、电磁、红外或半导体系统、装置或设备或上述的任何适合的组合。计算机可读存储介质的更具体的示例(非无遗漏的列表)包括下述:便携式计算机软盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存存储器)、便携式紧凑盘只读存储器(CD-ROM)、光存储设备、磁存储设备或上述的任何适合的组合。在本文档的上下文中,计算机可读存储介质可以是包含或存储程序的任何有形介质,所述程序由指令执行系统、装置或设备使用或与其结合使用。
计算机可读信号介质可以包括例如在基带中或者作为载波的一部分的其中体现有计算机可读程序代码的传播的数据信号。这样的传播信号可采取各种形式(包括但不限于电磁、光学或上述的任何适合的组合,诸如具有一个或多个导线的电连接、光纤等)中的任一种。计算机可读信号介质可以是除计算机可读存储介质以外的、并且可以传送、传播或传输程序的任何计算机可读介质,所述程序由指令执行系统、装置或设备使用或者与其结合使用。
计算机可读介质上体现的程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意适合的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的各方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言诸如“C”程序设计语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。将理解的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些计算机程序指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。
也可以把这些计算机程序指令存储在计算机可读介质中,这些指令使得计算机、其它可编程数据处理装置、或其他设备以特定方式工作,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的指令的制造品。
计算机程序指令还可以加载到计算机、其它可编程数据处理装置或其他设备上,以使一系列操作步骤在计算机、其它可编程装置或其他设备上被执行以产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现流程图和/或框图中的一个或多个方框中规定的功能/动作的处理。
附图中的流程图和框图示出根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。还应注意的是,在有些替代实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续示出的方框实际上可以基本并行地执行,或者它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
现在参考图2,其示出根据一个实施例的网络存储系统10的示意图。该网络存储系统10仅是适合的存储系统的一个示例,而并非旨在暗示对本文所述的本发明的实施例的使用范围或功能进行任何限制。无论如何,网络存储系统10能够被实现和/或执行上文阐述的任何功能。
在网络存储系统10中,存在计算机系统/服务器12,其可以与许多其他通用或专用计算系统环境或配置一起运行。可以适合于与计算机系统/服务器12一起使用的熟知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、迷你计算机系统、大型计算机系统以及包括上述系统或设备中的任一种的分布式云计算环境、等等。
计算机系统/服务器12可在计算机系统可执行指令(诸如由计算机系统执行的程序模块)的一般背景中描述。通常,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器12可在任务由通过通信网络连接的远程处理装置执行的分布式云计算环境中实施。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图2所示,网络存储系统10中的计算机系统/服务器12以通用计算设备的形式示出。在一个实施例中,计算机系统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系统、磁带驱动器以及数据档案存储系统等。
图3示出根据各个实施例可被采用的基于磁带的数据存储系统的简化的磁带驱动器100。尽管磁带驱动器的一种具体实现在图3中示出,但应注意的是,本文所述的实施例可在任何类型的磁带驱动器系统的背景中实现。
如图所示,磁带供给盒120和收带卷筒121被设置以提供磁带122。一个或多个卷筒可形成可移动带盒的一部分、且并非必须是磁带驱动器100的一部分诸如在图3中所示的磁带驱动器100还可包括驱动磁带供给盒120和收带卷筒121以在任何类型的磁带头126上移动磁带122的驱动电机。
导带部件125引导磁带122越过磁带头126。这样的磁带头126继而经由电缆130耦合至控制器组件128。控制器128通常包括伺服通道134和包括数据流处理的数据通道136。控制器控制卷筒移动(未在图3中示出)和磁带头功能诸如磁道跟踪、写入、读取等。电缆130可包括读/写电路,以便将数据传送至磁带头126以使其记录在磁带122上、以及接收由磁带头126从磁带122读取的数据。致动器132将磁带头126移动到磁带122上的一组磁道以便执行写入或读取操作。
在一个实施例中,磁带驱动器100可以包括可由磁带驱动器100和控制器128访问的数据缓冲区138。该数据缓冲区138可被组织为环形缓冲区、并且可被分割成一个或多个部分,其中一个部分是保留数据缓冲区140,其也可被组织为环形缓冲区以用于在从磁带122的读取操作期间存储部分数据集。
还可以提供接口以用于磁带驱动器100和主机(一体的或外部的)之间的通信以发送和接收数据,以及用于控制磁带驱动器100的操作和向主机传送磁带驱动器100的状态,如本领域技术人员所理解的那样。
根据一个实施例,使用基于纠错和擦除解码的用于乘积码的解码策略,以便当如在实际磁带解码中常经历的那样遇到短和长错误事件时,实现比常规技术更好的出错率性能。这种解码策略的创新方面包括:有条件地进行分支跳转以执行纠错或擦除解码,被引入以保证用于对乘积码进行解码的迭代解码算法将在固定数量的迭代后停止的基于参数(在本文中称为E2)的停止机制,以及在乘积码的解码开始前添加用于C2解码的初始擦除旗标。
停止该解码算法的一种常规方法是允许发生预定或固定数量的迭代并随后停止解码。然而,这种方法可以与参数E2的使用一致地被使用,从而提供甚至更好的性能并限制解码延迟。
根据各个实施例,本文所述的技术可以在C1解码后面跟随着C2解码的非迭代解码模式(单次迭代)中使用,或者可以在执行C1/C2解码的若干次迭代的迭代解码模式中使用。这些技术也可实时地或者在错误恢复过程(ERP)期间使用。通过使用本文所述的技术可实现许多益处,包括在存在短和长错误事件的情况下的改善的出错率性能,能够使用有保证的遗留的C2擦除解码方案作为初始解码步骤,以及能够执行迭代和非迭代解码。
出于示例性目的,下面的参数在解码测试中被使用。对于C1码而言,使用具有以下参数的里德-所罗门(RS)码:RS(N1=240,K1=230,d1=11)。对于C2码而言,参数是RS(N2=96,K2=84,d2=13),其中N1和N2是等于阵列中的每个码字中的字节数的块长度,K1和K2是等于每个码字中的数据字节数的消息长度,并且d1和d2是等于N-K+1的距离或最小距离,其中d-1个擦除可通过RS码纠正。
根据第一示例性解码策略(策略A),非迭代解码可以利用擦除指针来执行。由于可由C1解码器纠正的错误的数量t1是基于t1=(d1-1)/2=(11-1)/2=5的关系确定的,所以针对C1解码器的可纠正错误的数量可以确定为t1=5。为了该示例,假定在策略A中,C1解码器可纠正多达4个错误(t1=5-1以包括1的裕量以减少误纠正)并且无法纠正的行被标记为针对C2解码器的擦除。随后,C2解码器在纠正多达d2–1=12个擦除而不包含额外裕量的擦除模式中运行。对于奇数最小距离d2而言,最大擦除纠正能力按照d2–1=2×t2而与最大错误纠正能力相关。
在另一示例性解码策略(策略B)中,可使用迭代解码,其中C1和C2解码器如同在策略A中那样运行。如果成功,则解码策略在C1解码后终止;否则,向C2解码器通知哪些行已被纠正以及哪些行中有C1解码失败。随后,C2解码器对出错的子阵列执行纠错解码并应用第二轮C1/C2解码。
为了选择用于策略B的C2解码器中的纠错和擦除解码参数,具有已知的长缺陷(诸如同步滑移、或者由于丢失头部而丢失数据)的行被标记为针对C2解码器的擦除。
现在,针对沿着C1码字的非常长的错误事件中的最差情形下的长错误突发(例如周期滑移),假定如上所述的策略A和B的操作,则C1失败率是在C2解码器输入处的字节出错率的良好量度。在这种情况下,单独的擦除解码基本上比单独的纠错解码更好。在沿着C1码字遇到随机错误的另一情形中,C1失败率是在C2解码器输入处的字节出错率的非常悲观的量度,并且单独的纠错解码基本上比单独的擦除解码更好。在C2擦除解码中已经失败的策略A和B所产生的捕获的数据的分析表明,C2纠错解码能够纠正这些情况下的错误。
然而,在现实世界应用中,捕获的数据中的错误既不总是长错误突发也不总是随机错误。不管遇到哪种类型的错误,两轮迭代解码(策略B的特定实现)能够处理的C1出错率大约是可由策略A处理的C1出错率的100倍。此外,当策略B利用两个完全出错(被擦除)的行时,策略B的仅纠错模式能够处理的C1出错率是策略A的15倍。而且,当策略B在错误/擦除模式中利用两个完全出错(被擦除)的行时,可处理的C1出错率是策略A的50倍。
这全都会导致如下判定:无论在非迭代还是迭代策略中,纠错和擦除解码都将提供比常规方法更好的出错率性能。
现在参考图4,其示出根据一个实施例的用于乘积码的组合纠错和擦除解码的方法400的流程图。在各个实施例中,除了别的环境外,方法400可以根据本发明在图1-3中示出的任一环境中执行。当然,比图4中具体所述的操作更多或更少的操作可被包含在方法400中,如本领域技术人员在阅读本说明书后所理解的那样。在一种方法中,方法400可用于对来自磁带介质的数据进行解码,所述磁带介质可以是本领域中已知的任何适合的磁数据存储磁带。
方法400的每个步骤可由操作环境的任何适合的组件执行。例如,在各个非限制性实施例中,方法400可由磁带驱动器、光学驱动器、处理器部分或完全执行,所述处理器诸如是中央处理单元(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等,其可被嵌入系统、装置、驱动器、存储设备等中和/或在其内运行,并且可具有与所述处理器一起嵌入和/或可由所述处理器访问的逻辑。
如图4所示,方法400可以以操作402开始,在操作402中,接收捕获的数据。该数据可从任何适合的存储介质诸如磁带、光学驱动器、光通信光纤等捕获。捕获的数据是通过一个或多个数据通道接收的数据,其先前已经编码有乘积码(C1/C2)以用于其存储和/或传输。
在操作404中,为捕获的数据生成指示具有不可靠和/或丢失数据的行的擦除旗标、并将其提供给C2解码器。每个擦除旗标对应于捕获的数据的一部分,该部分由于观察到的、计算的或预期的条件而在C2擦除解码期间将作为被擦除来对待(与被单独留下用于纠错解码相反),所述条件将使用擦除解码而得到更好的恢复,诸如错误突发条件(长错误突发)。
根据一个实施例,擦除旗标可基于指示长错误突发的以下条件中的任一个而生成:未检测到或丢失针对码字交织的头部(诸如包括四个交织码字的CWI-4),检测到锁相环(PLL)周期滑移,在调制解码器的输出处的CWI-4(或C1码字)内检测到的连续非法调制码字的数量超过预定阈值量(诸如,十个17位调制码字),在前向同步模式(诸如,预定的17位模式)和重新同步模式(诸如,预定的33位模式)之间的位数不等于头部和四个码字交织的大小(例如,7776位),和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小(例如,7776位)。
根据各个实施例,PLL周期滑移可根据本领域中已知的任何技术来检测,例如通过应用美国专利号7,003,065中的方法来检测。而且,阈值量可以是取决于C1码的纠正能力、交织因子和调制码字的长度的任何适合的数量。例如,对于所考虑的CWI-4和长度-17调制代码而言,10个连续非法调制码字指示无法由C1码纠正的长错误事件。此外,本领域中已知的任何技术可用于尝试检测CWI-4头部。7776位是基于对两种同步模式之间的位数进行计数来计算的,所述位数合计为头部的12字节加上CWI-4的4×240字节,即7776位。对于具有不同大小的头部和/或码字交织的其他布局,该7776位可被调整以反映其他数据格式。
在操作406中,将停止参数(E2)设定成等于CWI-4中的C1码字的长度(N1),例如E2=N1。随后,停止参数可用于确定何时停止方法400(由于解码成功或不成功)。
在操作408中,对捕获的数据执行C1纠错解码。根据一个实施例,C1纠错解码包括这样的纠错和擦除解码:具有读回(read-back)的C1码字的行被保持不变(不擦除或以其他方式被改变,即使在404或420中生成的擦除旗标指示该判定不正确)。当然,在第一次迭代中(或在非迭代过程中),不存在C2失败,所以这是无实际意义的。
在操作410中,确定在对捕获的数据执行C1(纠错或擦除)解码后检测到的C1失败的数量(F1)是否等于零,例如F1=0。如果是这样,则方法400继续到操作414;否则,方法400继续到操作412。
在操作412中,确定C1失败的数量(F1)是否大于C2错误纠正能力(t2)的两倍减去C2解码裕量(m2),例如F1>2t2-m2。如果是这样,则方法400继续到操作420;否则,方法400继续到操作418。C2解码裕量可以取决于该裕量被用于纠错解码还是擦除解码而相同或不同。
C2错误纠正能力(t2)表示可使用特定捕获的数据中的乘积码来纠正的C2错误的数量,并且取决于所选择的用于C2的RS码的参数而可以是具有大于零的值的整数诸如1、2、4、6、7、10等。C2解码裕量(m2)是可被自动设定或者由管理员或其他用户选择的值,其提供C2错误纠正能力(t2)和C2解码器能够纠正多少错误的“更安全”的近似值之间的裕量。在一个实施例中,所述裕量可以仅与C2擦除解码或C2纠错和擦除解码相关联。
在操作414中,确定停止参数(E2)是否等于零,例如E2=0。如果是这样,则方法400继续到操作416并停止,因为解码已经是成功的(例如,在解码的数据中没有另外检测到的错误);否则,方法400继续到操作420。
在操作418中,对(已经执行过C1解码后的或者没有进行任何C1解码的原始捕获形式的)捕获的数据执行C2擦除解码。根据一个实施例,C2擦除解码包括C1失败被擦除的纠错和擦除解码。当在C1解码后执行C2擦除解码时,甚至在第一次迭代中(或者在非迭代过程中),C1失败(除非未检测到任何C1失败)将存在并且将作为被擦除的数据来对待。
在操作420中,对(已经执行过C1解码后的或者没有进行任何C1解码的原始捕获形式的)捕获的数据执行C2纠错解码。根据一个实施例,C2纠错解码包括这样的纠错和擦除解码:C1失败被保持不变(不擦除或以其他方式被改变,即使指示该判定不正确)。当在C1解码后执行C2解码时,甚至在第一次迭代中(或在非迭代过程中),C1失败(除非未检测到任何C1失败)将存在。解码器对其上发生了C2解码失败的那些列生成擦除旗标。
在操作422中,确定C1失败的数量(F1)和C2失败的数量(F2)是否都等于零,例如F1=0ΛF2=0。如果是这样,则方法400继续到操作424并停止,因为解码已经是成功的(例如,在解码的数据中没有另外检测到的错误);否则,方法400继续到操作426。
在操作426中,确定C2失败的数量(F2)是否大于或等于停止参数(E2),例如F2≥E2。如果是这样,则方法400继续到操作428并停止,因为解码已经不成功并且错误是不可恢复/不可纠正的;否则,方法400继续到操作430,在操作430中,将停止参数(E2)设定为C2失败的数量(F2)。以这种方式,可确保迭代只会朝向更少的C2错误收敛,不会发散并导致更多的C2错误和/或在始终无法自己解决的循环状况中被卡住。
在操作432中,确定停止参数(E2)是否小于或等于C1错误纠正能力(t1)的两倍减去C1解码裕量(m1),例如E2≤2t1–m1。C1解码裕量可以取决于该裕量被用于纠错还是擦除解码而相同或不同。
如果是这样,则方法400继续到操作434,在操作434中,使用来自操作420的擦除旗标对捕获的数据执行C1擦除解码;否则,方法400继续到操作408以再次执行C1纠错解码。在一个实施例中,C1擦除解码包括把C2失败作为被擦除的数据来对待的纠错和擦除解码。在方法400中,当在初始C1解码后执行C2解码时,甚至在第一次迭代中(或在非迭代过程中),C2失败(除非未检测到任何C2失败)将存在、并将作为被擦除的数据来对待。
C1错误纠正能力(t1)表示可使用特定捕获的数据中的乘积码来纠正的C1错误的数量,并且取决于所选择的用于C1的RS码的参数而可以是具有大于零的值的整数诸如1、2、5、6、7、10等。C1解码裕量(m1)是可被自动设定或者由管理员或其他用户选择的值,其提供C1错误纠正能力(t1)和C1解码器能够纠正多少错误的“更安全”的近似值之间的裕量。在一个实施例中,所述裕量可以仅与C1擦除解码或C1纠错和擦除解码相关联。
方法400继续进行,直到到达操作416、424和/或428中的停止点中的一个。停止参数E2被设计成确保方法400将不会陷入无限循环中,并且将在有限数量的迭代内明确地到达操作416、424和/或428中的停止点中的一个。
根据一个实施例,方法400可由系统执行。例如,该系统可配置成用于乘积码的组合纠错和擦除解码,并且该系统可包括处理器(诸如CPU、ASIC、FPGA、IC等)以及与处理器集成和/或可由处理器执行的逻辑。所述逻辑可以是硬件、软件或它们的某种组合,并且可配置成执行方法400的一个或多个操作,并且可配置成在各种方法中执行未在本文具体描述的另外的功能。
在另一实施例中,计算机程序产品可被设计成用于乘积码的组合纠错和擦除解码,所述计算机程序产品包括其中体现有程序代码的计算机可读存储介质。在一个实施例中,所述程序代码可由诸如磁带驱动器、处理器等之类的设备读取和/或执行以执行方法400的一个或多个操作,并且可配置成在各种方法中执行未在本文具体描述的另外的功能。
现在参考图5,其示出根据一个实施例的用于乘积码的组合纠错和擦除解码的方法500的流程图。在各个实施例中,除了其他环境之外,方法500可根据本发明在图1-3中示出的任一环境中执行。当然,比图5中具体所述的操作更多或更少的操作可被包含在方法500中,如本领域技术人员在阅读本说明书后所理解的那样。在一种方法中,方法500可用于对来自磁带介质的数据进行解码,所述磁带介质可以是本领域中已知的任何适合的磁数据存储磁带。
方法500的每个步骤可由操作环境的任何适合的组件执行。例如,在各个非限制性实施例中,方法500可由磁带驱动器、光学驱动器、处理器部分或完全执行,所述处理器诸如是CPU、ASIC、FPGA等,其可被嵌入系统、装置、驱动器、存储设备等中和/或在其内运行,并且可具有与所述处理器一起嵌入和/或可由所述处理器访问的逻辑。
如图5所示,方法500可以以操作502开始,在操作502中,接收捕获的数据。该数据可从任何适合的存储介质诸如磁带、光学驱动器、光通信光纤等捕获。捕获的数据是通过一个或多个数据通道接收的数据,其先前已经编码有乘积码(C1/C2)以用于其存储和/或传输。
在操作504中,为捕获的数据生成指示具有不可靠和/或丢失数据的行的擦除旗标、并将其提供给C2解码器。每个擦除旗标对应于捕获的数据的一部分,该部分由于观察到的或预期的条件而在擦除解码期间将作为被擦除来对待(与被单独留下用于纠错解码相反),所述条件将使用擦除解码而得到更好的恢复,诸如错误突发条件(长错误突发)。
根据一个实施例,擦除旗标可基于指示长错误突发的以下条件中的任一个而生成:未检测到或丢失针对码字交织的头部(诸如包括四个交织码字的CWI-4),检测到PLL周期滑移,在调制解码器的输出处的CWI-4(或C1码字)内检测到的连续非法调制码字的数量超过预定阈值量,在前向同步模式和重新同步模式之间的位数不等于头部和四个码字交织的大小(例如,7776位),和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小(例如,7776位)。
根据各个实施例,PLL周期滑移可根据本领域中已知的任何技术来检测。此外,本领域中已知的任何技术可用于尝试检测CWI-4头部。7776位是基于对两种同步模式之间的位数进行计数来计算的,所述位数合计为头部的12字节加上CWI-4的4×240字节,即7776位。对于具有不同大小的头部和/或码字交织的其他布局,该7776位可被调整以反映其他数据格式。
在操作506中,将停止参数(E2)设定成等于CWI-4中的C1码字的长度(N1),例如E2=N1。随后,停止参数可用于确定何时停止方法500(由于解码成功或不成功)。
在操作508中,对捕获的数据执行C1纠错解码。根据一个实施例,C1纠错解码包括这样的纠错和擦除解码:具有读回的C1码字的行被保持不变(不擦除或以其他方式被改变,即使擦除旗标指示该判定不正确)。
在操作510中,确定在对捕获的数据执行C1(纠错或擦除)解码后检测到的C1失败的数量(F1)是否等于零,例如F1=0。如果是这样,则方法500继续到操作518;否则,方法500继续到操作512。
在操作512中,确定C1失败的数量(F1)是否大于C2错误纠正能力(t2)的两倍减去C2解码裕量(m2),例如F1>2t2-m2。如果是这样,则方法500继续到操作516;否则,方法500继续到操作514。
C2错误纠正能力(t2)表示可使用特定捕获的数据中的乘积码来纠正的C2错误的数量,并且取决于所选择的用于C2的RS码的参数而可以是具有大于零的值的整数诸如1、2、5、6、7、10等。C2解码裕量(m2)是可被自动设定或者由管理员或其他用户选择的值,其提供C2错误纠正能力(t2)和C2解码器能够纠正多少错误的“更安全”的近似值之间的裕量。在一个实施例中,所述裕量可以仅与C2擦除解码或C2纠错和擦除解码相关联。
在操作514中,对(已经执行过C1解码后的或者没有进行任何C1解码的原始捕获形式的)捕获的数据执行C2擦除解码。根据一个实施例,C2擦除解码包括C1失败被擦除的纠错和擦除解码。当在C1解码后执行C2擦除解码时,甚至在第一次迭代中(或者在非迭代过程中),C1失败(除非未检测到任何C1失败)将存在并且将作为被擦除的数据来对待。
在操作516中,对(已经执行过C1解码后的或者没有进行任何C1解码的原始捕获形式的)捕获的数据执行C2纠错解码。根据一个实施例,C2纠错解码包括这样的纠错和擦除解码:C1失败被保持不变(不擦除或以其他方式被改变,即使指示该判定不正确)。当在C1解码后执行C2解码时,甚至在第一次迭代中(或在非迭代过程中),C1失败(除非未检测到任何C1失败)将存在。解码器对其上发生了C2解码失败的那些列生成擦除旗标。
在操作520中,确定C2失败的数量(F2)是否等于零,例如F2=0。如果是这样,则方法500继续到操作522并停止,因为解码已经是成功的(例如,在解码的数据中没有另外检测到的错误);否则,方法500继续到操作524。
在操作524中,确定C2失败的数量(F2)是否大于或等于停止参数(E2),例如F2≥E2。如果是这样,则方法500继续到操作526并停止,因为解码已经不成功并且错误是不可恢复/不可纠正的;否则,方法500继续进行将停止参数(E2)设定为C2失败的数量(F2)的操作528。以这种方式,可确保迭代只会朝向更少的C2错误收敛,不会发散并导致更多的C2错误和/或在始终无法自己解决的循环状况中被卡住。
在操作530中,确定停止参数(E2)是否小于或等于C1错误纠正能力(t1)的两倍减去C1解码裕量(m1),例如E2≤2t1–m1。如果是这样,则方法500继续到操作532,在操作532中,使用来自操作516的擦除旗标对捕获的数据执行C1擦除解码;否则,方法500继续到操作508以再次执行C1纠错解码。在一个实施例中,C1擦除解码包括C2失败被擦除的纠错和擦除解码。在方法500中,当在初始C1解码后执行C2解码时,甚至在第一次迭代中(或在非迭代过程中),C2失败(除非未检测到任何C2失败)将存在、并将作为被擦除的数据来对待。
C1错误纠正能力(t1)表示可使用特定捕获的数据中的乘积码来纠正的C1错误的数量,并且取决于所选择的用于C1的RS码的参数而可以是具有大于零的值的整数诸如1、2、5、6、7、10等。C1解码裕量(m1)是可被自动设定或者由管理员或其他用户选择的值,其提供C1错误纠正能力(t1)和C1解码器能够纠正多少错误的“更安全”的近似值之间的裕量。在一个实施例中,所述裕量可以仅与C1擦除解码或C1纠错和擦除解码相关联。
方法500继续进行,直到到达操作518、522和/或526中的停止点中的一个。停止参数E2被设计成确保方法500将不会陷入无限循环中,并且将在有限数量的迭代内明确地到达操作518、522和/或526中的停止点中的一个。
根据一个实施例,当解码方法500在操作518、522和/或526中的停止点中的一个停止时,可确定解码的数据(乘积码字)的所有行和列是否是合法的C1码字(行)和合法的C2码字(列)。当乘积码字是合法的(被允许)时,解码是成功的;否则,解码是不成功的(解码失败)。
根据一个实施例,方法500可由系统执行。例如,该系统可配置成用于乘积码的组合纠错和擦除解码,并且该系统可包括处理器(诸如CPU、ASIC、FPGA、IC等)以及与处理器集成和/或可由处理器执行的逻辑。所述逻辑可以是硬件、软件或它们的某种组合,并且可配置成执行方法500的一个或多个操作,并且可配置成在各种方法中执行未在本文具体描述的另外的功能。
在另一实施例中,计算机程序产品可被设计成用于乘积码的组合纠错和擦除解码,所述计算机程序产品包括其中体现有程序代码的计算机可读存储介质。在一个实施例中,所述程序代码可由诸如磁带驱动器、处理器等之类的设备读取和/或执行以执行方法500的一个或多个操作,并且可配置成在各种方法中执行未在本文具体描述的另外的功能。
乘积码的迭代解码在本领域中是已知的,但是所述迭代解码还未使用具体的擦除和纠错解码调度来执行。例如,美国专利号8,046,660描述了用于非易失性存储器的乘积码解码器。该解码器对第一和第二维度码字进行解码。当第一解码器检测到第一维度码字中的一个码字中的错误时,该第一维度码字被标记为擦除。第二解码器基于所述擦除来检测第二维度码字中的一个码字中的另一错误。第一和第二解码器迭代地对码字进行解码以确定第一和第二维度码字中的其他错误。
然而,美国专利号8,046,660并未公开具体的解码调度,而是仅限于乘积码的标准迭代纠错和擦除解码。特别地,该专利并未教导使用保证在有限数量的迭代内完成的纠错和擦除解码的解码调度。此外,美国专利号8,046,660并未考虑基于通道侧信息的用于C2解码器的初始擦除旗标。
现在参考图6,其示出根据一个实施例的用于乘积码的组合纠错和擦除解码的方法600的流程图。在各个实施例中,除了其他环境之外,方法600可根据本发明在图1-3中示出的任一环境中执行。当然,比图6中具体所述的操作更多或更少的操作可被包含在方法600中,如本领域技术人员在阅读本说明书后所理解的那样。在一种方法中,方法600可用于对来自磁带介质的数据进行解码,所述磁带介质可以是本领域中已知的任何适合的磁数据存储磁带。
方法600的每个步骤可由操作环境的任何适合的组件执行。例如,在各个非限制性实施例中,方法600可由磁带驱动器、光学驱动器、处理器部分或完全执行,所述处理器诸如是CPU、ASIC、FPGA等,其可被嵌入系统、装置、驱动器、存储设备等中和/或在其内运行,并且可具有与所述处理器一起嵌入和/或可由所述处理器访问的逻辑。
如图6所示,方法600可以以操作602开始,在操作602中,接收捕获的数据。随后,在操作604中,生成针对捕获的数据的擦除旗标并将其提供给C2解码器。接下来,在操作606中,将停止参数设定成等于用于对捕获的数据进行编码的码字交织中的C1码字的长度。最后,在操作608中,在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
根据一个实施例,每个擦除旗标可对应于捕获的数据的一部分,该部分由于观察到的或计算的条件而在擦除解码期间将作为被擦除来对待。这些观察到的或计算的条件可包括能够指示在捕获的数据中已发生错误突发的任何条件。根据各个实施例,观察到的或计算的条件可包括下述中的至少一个:未检测到针对码字交织的头部,检测到PLL周期滑移,在调制解码器的输出处的码字交织或C1码字内检测到的连续非法调制码字的数量超过预定阈值量,在前向同步模式和重新同步模式之间的位数不等于头部和四个码字交织的大小,和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小。
根据另一实施例,迭代过程可包括:在第一次迭代中并且当停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对捕获的数据执行C1纠错解码,否则对捕获的数据执行C1擦除解码;当执行C1解码后C1失败的数量等于零并且停止参数等于零时,确定解码是成功的;在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对捕获的数据执行C2纠错解码;在执行C1解码后当停止参数不等于零或C1失败的数量小于或等于C2错误纠正能力的两倍减去C2解码裕量并大于零时,对捕获的数据执行C2擦除解码;在执行C2解码后当C2失败的数量和C1失败的数量都等于零时,确定解码是成功的;以及在执行C2解码后当C2失败的数量大于或等于停止参数时,确定解码是不成功的,否则将停止参数设定成等于C2失败的数量。
在另一实施例中,迭代过程可包括:在第一次迭代中并且当停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对捕获的数据执行C1纠错解码,否则对捕获的数据执行C1擦除解码;当C1失败的数量等于零时停止解码并执行码字检查;在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对捕获的数据执行C2纠错解码,否则在执行C1解码后对捕获的数据执行C2擦除解码;在执行C2解码后当C2失败的数量等于零时,停止解码;以及在执行C2解码后当C2失败的数量大于或等于停止参数时,确定解码是不成功的,否则将停止参数设定成等于C2失败的数量。所述码字检查可包括确定每个C1码字是合法的并且每个C2码字是合法的,使得当每个C1码字是合法的并且每个C2码字是合法的时,解码是成功的,否则,解码是不成功的。
在又一实施例中,C1错误纠正能力可以表示可使用捕获的数据中的乘积码纠正的C1错误的数量,并且C2错误纠正能力可以表示可使用捕获的数据中的乘积码纠正的C2错误的数量。
附图中的流程图和框图示出根据本发明的各个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。还应注意的是,在有些替代实现中,方框中所标注的功能可以以不同于附图中所标注的顺序发生。例如,两个连续示出的方框实际上可以基本并行地执行,或者它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
尽管已经在上面描述了各个实施例,但应理解的是,它们仅借助示例来呈现而并非进行限制。因此,本发明的实施例的广度和范围不应仅限于上述任意一个示例性实施例,而是应当仅根据所附权利要求及其等效形式来限定。
Claims (20)
1.一种用于乘积码的组合纠错和擦除解码的系统,所述系统包括处理器以及与所述处理器集成和/或可由所述处理器执行的逻辑,所述逻辑配置成:
接收捕获的数据;
为捕获的数据生成擦除旗标并将所述擦除旗标提供给C2解码器;
将停止参数设定成等于用于对所述捕获的数据进行编码的码字交织中的C1码字的长度;以及
在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
2.如权利要求1所述的系统,其中每个擦除旗标对应于所述捕获的数据的一部分,所述一部分由于观察到的或计算的条件而在擦除解码期间将作为被擦除来对待。
3.如权利要求2所述的系统,其中观察到的或计算的条件包括下述中的至少一个:未检测到针对码字交织的头部,检测到锁相环(PLL)周期滑移,在调制解码器的输出处的码字交织或C1码字内检测到的连续非法调制码字的数量超过预定阈值量,在前向同步模式和重新同步模式之间的位数不等于头部和四个码字交织的大小,和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小。
4.如权利要求1所述的系统,其中配置成在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功的所述逻辑包括配置成执行以下操作的逻辑:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当在执行C1解码后C1失败的数量等于零并且所述停止参数等于零时,确定解码是成功的;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码;
在执行C1解码后当所述停止参数不等于零或者C1失败的数量小于或等于C2错误纠正能力的两倍减去C2解码裕量并大于零时,对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量和C1失败的数量都等于零时,确定解码是成功的;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量。
5.如权利要求4所述的系统,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
6.如权利要求1所述的系统,其中配置成在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功的所述逻辑包括配置成执行以下操作的逻辑:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当C1失败的数量等于零时停止解码并执行码字检查;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码,否则在执行C1解码后对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量等于零时,停止解码;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量,
其中所述码字检查包括配置成确定每个C1码字是合法的并且每个C2码字是合法的逻辑,以及其中当每个C1码字是合法的并且每个C2码字是合法的时,解码是成功的,否则,解码是不成功的。
7.如权利要求6所述的系统,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
8.一种用于乘积码的组合纠错和擦除解码的方法,所述方法包括:
接收捕获的数据;
为捕获的数据生成擦除旗标并将所述擦除旗标提供给C2解码器;
将停止参数设定成等于用于对所述捕获的数据进行编码的码字交织中的C1码字的长度;以及
在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
9.如权利要求8所述的方法,其中每个擦除旗标对应于所述捕获的数据的一部分,所述一部分由于观察到的或计算的条件而在擦除解码期间将作为被擦除来对待。
10.如权利要求9所述的方法,其中观察到的或计算的条件包括下述中的至少一个:未检测到针对码字交织的头部,检测到锁相环(PLL)周期滑移,在调制解码器的输出处的码字交织或C1码字内检测到的连续非法调制码字的数量超过预定阈值量,在前向同步模式和重新同步模式之间的位数不等于头部和四个码字交织的大小,和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小。
11.如权利要求8所述的方法,其中在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功包括:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当在执行C1解码后C1失败的数量等于零并且所述停止参数等于零时,确定解码是成功的;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码;
在执行C1解码后当所述停止参数不等于零或者C1失败的数量小于或等于C2错误纠正能力的两倍减去C2解码裕量并大于零时,对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量和C1失败的数量都等于零时,确定解码是成功的;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量。
12.如权利要求11所述的方法,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
13.如权利要求8所述的方法,其中在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功包括:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当C1失败的数量等于零时停止解码并执行码字检查;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码,否则在执行C1解码后对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量等于零时,停止解码;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量,
其中所述码字检查包括确定每个C1码字是合法的并且每个C2码字是合法的,以及其中当每个C1码字是合法的并且每个C2码字是合法的时,解码是成功的,否则,解码是不成功的。
14.如权利要求13所述的方法,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
15.一种用于乘积码的组合纠错和擦除解码的计算机程序产品,所述计算机程序产品包括其中体现有程序代码的计算机只读存储介质,所述程序代码可由处理器读取/执行以便:
接收捕获的数据;
为捕获的数据生成擦除旗标并将所述擦除旗标提供给C2解码器;
将停止参数设定成等于用于对所述捕获的数据进行编码的码字交织中的C1码字的长度;以及
在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功。
16.如权利要求15所述的计算机程序产品,其中每个擦除旗标对应于所述捕获的数据的一部分,所述一部分由于观察到的或计算的条件而在擦除解码期间将作为被擦除来对待,其中观察到的或计算的条件包括下述中的至少一个:未检测到针对码字交织的头部,检测到锁相环(PLL)周期滑移,在调制解码器的输出处的码字交织或C1码字内检测到的连续非法调制码字的数量超过预定阈值量,在前向同步模式和重新同步模式之间的位数不等于头部和四个码字交织的大小,和/或在重新同步模式和反向同步模式之间的位数不等于头部和四个码字交织的大小。
17.如权利要求15所述的计算机程序产品,其中可由处理器读取/执行以便在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功的程序代码还可由所述处理器读取/执行以便:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当在执行C1解码后C1失败的数量等于零并且所述停止参数等于零时,确定解码是成功的;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码;
在执行C1解码后当所述停止参数不等于零或者C1失败的数量小于或等于C2错误纠正能力的两倍减去C2解码裕量并大于零时,对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量和C1失败的数量都等于零时,确定解码是成功的;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量。
18.如权利要求17所述的计算机程序产品,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
19.如权利要求15所述的计算机程序产品,其中可由处理器读取/执行以便在迭代过程中,选择性地执行后面跟随着纠错或擦除C2解码的纠错或擦除C1解码,直到解码成功或不成功的程序代码还可由所述处理器读取/执行以便:
在第一次迭代中并且当所述停止参数小于或等于C1错误纠正能力的两倍减去C1解码裕量时,对所述捕获的数据执行C1纠错解码,否则对所述捕获的数据执行C1擦除解码;
当C1失败的数量等于零时停止解码并执行码字检查;
在执行C1解码后当C1失败的数量大于C2错误纠正能力的两倍减去C2解码裕量时,对所述捕获的数据执行C2纠错解码,否则在执行C1解码后对所述捕获的数据执行C2擦除解码;
在执行C2解码后当C2失败的数量等于零时,停止解码;以及
在执行C2解码后当C2失败的数量大于或等于所述停止参数时,确定解码是不成功的,否则将所述停止参数设定成等于C2失败的数量,
其中所述码字检查包括配置成确定每个C1码字是合法的并且每个C2码字是合法的逻辑,以及其中当每个C1码字是合法的并且每个C2码字是合法的时,解码是成功的,否则,解码是不成功的。
20.如权利要求19所述的计算机程序产品,其中所述C1错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C1错误的数量,以及其中所述C2错误纠正能力表示可使用所述捕获的数据中的乘积码纠正的C2错误的数量。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/961,839 US9166627B2 (en) | 2013-08-07 | 2013-08-07 | Combination error and erasure decoding for product codes |
US13/961,839 | 2013-08-07 | ||
PCT/CN2014/083149 WO2015018285A1 (en) | 2013-08-07 | 2014-07-28 | Combination error and erasure decoding for product codes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105453439A true CN105453439A (zh) | 2016-03-30 |
CN105453439B CN105453439B (zh) | 2019-05-17 |
Family
ID=52449691
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480044152.XA Active CN105453439B (zh) | 2013-08-07 | 2014-07-28 | 用于乘积码的组合纠错和擦除解码的系统和方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9166627B2 (zh) |
JP (1) | JP6415557B2 (zh) |
CN (1) | CN105453439B (zh) |
DE (1) | DE112014002870B4 (zh) |
GB (1) | GB2533501B (zh) |
WO (1) | WO2015018285A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9166627B2 (en) * | 2013-08-07 | 2015-10-20 | International Business Machines Corporation | Combination error and erasure decoding for product codes |
EP3248311B1 (en) * | 2015-01-20 | 2020-07-08 | Telefonaktiebolaget LM Ericsson (publ) | Transmitting device, receiving device, and methods performed therein |
US20160323060A1 (en) * | 2015-04-28 | 2016-11-03 | Intel IP Corporation | Apparatus, computer readable medium, and method for higher qam in a high efficiency wireless local-area network |
US9780913B2 (en) * | 2015-10-23 | 2017-10-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Decoding margin estimation |
US9412410B1 (en) * | 2015-11-19 | 2016-08-09 | International Business Machines Corporation | Track-dependent decoding |
US9837117B2 (en) | 2015-11-19 | 2017-12-05 | International Business Machines Corporation | Track-dependent decoding |
US9984771B2 (en) | 2016-01-11 | 2018-05-29 | Sandisk Technologies Llc | Multi-level raid-type encoding with random correction capability |
US10536172B2 (en) | 2016-03-04 | 2020-01-14 | Western Digital Technologies, Inc. | ECC and raid-type decoding |
US9940194B2 (en) | 2016-03-04 | 2018-04-10 | Sandisk Technologies Llc | ECC decoding using raid-type parity |
US9959168B2 (en) | 2016-03-04 | 2018-05-01 | Sandisk Technologies Llc | ECC and RAID-type decoding |
US10348334B2 (en) | 2016-10-25 | 2019-07-09 | International Business Machines Corporation | Reducing a decoding error floor by post-processing codewords encoded by binary symmetry-invariant product codes |
US10846175B2 (en) * | 2018-04-10 | 2020-11-24 | Micron Technology, Inc. | High throughput bit correction of data inside a word buffer for a product code decoder |
US11216196B2 (en) * | 2018-05-24 | 2022-01-04 | Quantum Corporation | Erasure coding magnetic tapes for minimum latency and adaptive parity protection feedback |
JP2020195007A (ja) | 2019-05-24 | 2020-12-03 | キオクシア株式会社 | メモリシステム |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86100949A (zh) * | 1985-03-20 | 1986-10-15 | 国际美孚机器公司 | 在一个或多个射频信道上同时提供多路语声和/或数据信号的用户射频电话系统 |
CN1173668A (zh) * | 1996-08-06 | 1998-02-18 | 三星电子株式会社 | 数字处理系统的纠错装置和方法 |
US20040199564A1 (en) * | 2003-04-03 | 2004-10-07 | Shen Chih-Chiang | Apparatus and method for multimedia data stream production |
CN101127530A (zh) * | 2007-08-27 | 2008-02-20 | 北京航空航天大学 | 一种基于帧间相关的前向纠错编解码方法 |
CN102568575A (zh) * | 2010-12-23 | 2012-07-11 | 三星电子株式会社 | 闪速存储器件以及包括其的存储系统 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6048090A (en) * | 1997-04-23 | 2000-04-11 | Cirrus Logic, Inc. | Error correction and concurrent verification of a product code |
JPH11175362A (ja) * | 1997-12-16 | 1999-07-02 | Toshiba Ave Co Ltd | 誤り訂正装置及びデータ再生装置 |
US6047395A (en) * | 1998-01-30 | 2000-04-04 | Cirrus Logic, Inc. | Error correction processor for correcting a multi-dimensional code by generating an erasure polynomial over one dimension for correcting multiple codewords in another dimension |
US6272659B1 (en) * | 1998-05-18 | 2001-08-07 | Cirrus Logic, Inc. | Error correction code processor employing adjustable correction power for miscorrection minimization |
US7003065B2 (en) | 2001-03-09 | 2006-02-21 | Ericsson Inc. | PLL cycle slip detection |
JP3876662B2 (ja) | 2001-08-03 | 2007-02-07 | 三菱電機株式会社 | 積符号の復号方法および積符号の復号装置 |
US6616060B2 (en) * | 2001-10-11 | 2003-09-09 | Delphi Technologies, Inc. | Flexible film cartridge with balanced effort |
JP2004087018A (ja) * | 2002-08-28 | 2004-03-18 | Toshiba Corp | エラー訂正方法およびエラー訂正装置 |
US7441175B2 (en) | 2004-03-12 | 2008-10-21 | Seagate Technology Llc | Turbo product code implementation and decoding termination method and apparatus |
CN101228583B (zh) | 2005-06-10 | 2010-12-08 | 国际商业机器公司 | 用于纠错的装置、方法 |
US7577893B2 (en) | 2006-06-07 | 2009-08-18 | Agere Systems Inc. | Forward error correction decoding method and apparatus for satellite digital audio radio broadcasting |
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 |
US7840872B2 (en) | 2006-10-10 | 2010-11-23 | O-Mass As | N-dimensional iterative ECC method and apparatus with combined erasure—error information and re-read |
JP2009246640A (ja) * | 2008-03-31 | 2009-10-22 | Fujitsu Microelectronics Ltd | 誤り訂正装置、データ読み出し装置及び誤り訂正方法 |
US8214718B2 (en) * | 2008-06-19 | 2012-07-03 | International Business Machines Corporation | Erasure flagging system and method for errors-and-erasures decoding in storage devices |
US8276045B2 (en) * | 2009-01-09 | 2012-09-25 | International Business Machines Corporation | ECC interleaving for multi-track recording on magnetic tape |
US9166627B2 (en) | 2013-08-07 | 2015-10-20 | International Business Machines Corporation | Combination error and erasure decoding for product codes |
-
2013
- 2013-08-07 US US13/961,839 patent/US9166627B2/en active Active
-
2014
- 2014-07-28 DE DE112014002870.3T patent/DE112014002870B4/de active Active
- 2014-07-28 JP JP2016532221A patent/JP6415557B2/ja active Active
- 2014-07-28 CN CN201480044152.XA patent/CN105453439B/zh active Active
- 2014-07-28 WO PCT/CN2014/083149 patent/WO2015018285A1/en active Application Filing
- 2014-07-28 GB GB1603366.4A patent/GB2533501B/en active Active
-
2015
- 2015-09-10 US US14/850,883 patent/US9455749B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN86100949A (zh) * | 1985-03-20 | 1986-10-15 | 国际美孚机器公司 | 在一个或多个射频信道上同时提供多路语声和/或数据信号的用户射频电话系统 |
CN1173668A (zh) * | 1996-08-06 | 1998-02-18 | 三星电子株式会社 | 数字处理系统的纠错装置和方法 |
US20040199564A1 (en) * | 2003-04-03 | 2004-10-07 | Shen Chih-Chiang | Apparatus and method for multimedia data stream production |
CN101127530A (zh) * | 2007-08-27 | 2008-02-20 | 北京航空航天大学 | 一种基于帧间相关的前向纠错编解码方法 |
CN102568575A (zh) * | 2010-12-23 | 2012-07-11 | 三星电子株式会社 | 闪速存储器件以及包括其的存储系统 |
Also Published As
Publication number | Publication date |
---|---|
DE112014002870B4 (de) | 2021-06-24 |
GB2533501A (en) | 2016-06-22 |
US20160006460A1 (en) | 2016-01-07 |
WO2015018285A1 (en) | 2015-02-12 |
US9455749B2 (en) | 2016-09-27 |
US9166627B2 (en) | 2015-10-20 |
CN105453439B (zh) | 2019-05-17 |
US20150046767A1 (en) | 2015-02-12 |
GB201603366D0 (en) | 2016-04-13 |
JP2016527832A (ja) | 2016-09-08 |
JP6415557B2 (ja) | 2018-10-31 |
DE112014002870T5 (de) | 2016-03-10 |
GB2533501B (en) | 2018-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105453439A (zh) | 用于乘积码的组合纠错和擦除解码 | |
US9564171B2 (en) | Reconstructive error recovery procedure (ERP) using reserved buffer | |
CN106856103B (zh) | 用于与非闪存的涡轮乘积码 | |
US9590660B2 (en) | Reconstructive error recovery procedure (ERP) using reserved buffer | |
US9703627B2 (en) | Error correction code unit, self-test method and associated controller applied to flash memory device for generating soft information | |
US9673839B2 (en) | Decoding of product codes | |
JP6388599B2 (ja) | 不均一誤り保護を備えたヘッダ付サブ・データ・セットを復号するためのシステム、方法、及びプログラム | |
US9734008B2 (en) | Error vector readout from a memory device | |
US11513894B2 (en) | Hard decoding methods in data storage devices | |
KR20180123393A (ko) | Siso 복호 방법, 디코더 및 반도체 메모리 시스템 | |
US10147458B2 (en) | Iterative decode and post-decode microcode cut and paste optimization | |
US10025652B2 (en) | Error location pointers for non volatile memory | |
US10262681B2 (en) | Reliable data reading with data set screening by error injection | |
US20150074490A1 (en) | Nonvolatile semiconductor memory device | |
KR20180033740A (ko) | 메모리 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US20230370090A1 (en) | Encoding and decoding of data using generalized ldpc codes | |
US20240311236A1 (en) | Efficient hard decoding of error correction code via extrinsic bit information | |
CN111406282B (zh) | 一种用于存储设备的存储器控制电路 | |
KR102706981B1 (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR20180022175A (ko) | 컨트롤러, 반도체 메모리 시스템 및 그것의 동작 방법 |
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 |