CN113785274A - 用于错误校正码结构的解码方案 - Google Patents

用于错误校正码结构的解码方案 Download PDF

Info

Publication number
CN113785274A
CN113785274A CN202080031759.XA CN202080031759A CN113785274A CN 113785274 A CN113785274 A CN 113785274A CN 202080031759 A CN202080031759 A CN 202080031759A CN 113785274 A CN113785274 A CN 113785274A
Authority
CN
China
Prior art keywords
corrections
proposed
component
bits
proposed corrections
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
Application number
CN202080031759.XA
Other languages
English (en)
Other versions
CN113785274B (zh
Inventor
艾维·史坦纳
哈能·温加顿
梅尔·纳丹-奥列格诺维奇
奥菲尔·肯特
阿米尔·纳西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Kioxia Corp
Original Assignee
Kioxia 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 Kioxia Corp filed Critical Kioxia Corp
Publication of CN113785274A publication Critical patent/CN113785274A/zh
Application granted granted Critical
Publication of CN113785274B publication Critical patent/CN113785274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/781Masking faults in memories by using spares or by reconfiguring using programmable devices combined in a redundant decoder
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/84Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability
    • G11C29/844Masking faults in memories by using spares or by reconfiguring using programmable devices with improved access time or stability by splitting the decoders in stages
    • 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
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes

Landscapes

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

Abstract

本文中所描述的各种实施方案涉及用于通过解码码字以确定建议校正来在闪存装置中执行错误校正的系统及方法。另外,确定基于多个组件码中的第一组件码获得的第一组所述建议校正是否与基于所述多个组件码中的第二组件码获得的第二组所述建议校正一致。基于所述第一组所述建议校正与所述第二组所述建议校正是否一致来选择接受所述第一组所述建议校正或拒绝所述第一组所述建议校正中的一者。

Description

用于错误校正码结构的解码方案
技术领域
本公开大体上涉及用于闪存装置的错误校正码(ECC)结构的解码方案的系统及方法。
背景技术
闪存装置(例如NAND闪存装置)基于闪存装置的电压阈值启用页面读取。由于编程及读取期间的不同噪声(例如NAND噪声)及干扰源,存储于闪存装置中的信息位可发生错误。此类错误可由于编程错误、非最佳阈值读取、滞留/读取干扰应力等等中的一或多者。强ECC可允许快速编程(具有可能高编程错误)且在高应力条件下及/或使用低复杂性数字信号处理(DSP)读取。
码率由码字的信息内容(称为“有效负载”)与码字的总大小的比率定义。例如,对于含有k个位及r个冗余位的代码,码率Rc
Figure BDA0003323071370000011
定义。常规编码方法不太适合支持具有高码率的代码用于硬解码及软解码两者。例如,具有高码率(例如0.9)的常规低密度奇偶校验(LDPC)码具有相当长码长,从而导致复杂且高成本实施方案。
发明内容
在某些方面中,本发明实施方案涉及使用具有多个组件码的ECC结构解码在闪存装置中编程的经编码输入有效负载。
附图说明
图1展示根据一些实施方案的非易失性存储装置的实例的框图;
图2是说明根据一些实施方案的实例编码方法的过程流程图;
图3是说明根据各种实施方案的使用HFPC结构的编码过程中的映射的图;
图4是说明根据各种实施方案的使用不规则HFPC结构的编码过程中的映射的图;及
图5是说明根据各种实施方案的使用一群组的HFPC结构的编码过程中的映射的图。
图6A是说明根据各种实施方案的其中两个组件码指示一致建议校正的解码情形的图;
图6B是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图;
图6C是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图;
图6D是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图;
图7是说明根据各种实施方案的实例硬解码方法的过程流程图。
图8是说明根据各种实施方案的实例硬解码方法的过程流程图。
具体实施方式
本文中所公开的布置涉及用于提供具有改进耐久性及平均读取性能的闪存装置(例如NAND闪存装置)的系统、设备、方法及非暂时性计算机可读媒体。本公开涉及能够以高性能校正高原始位错误率(RBER)的ECC结构。在一些布置中,ECC结构包含经修改半乘积码,称为半折叠乘积码(HFPC)。如本文中所描述,实施HFPC的ECC结构实现闪存装置的高码率。在一些实例中,执行本文中所描述的ECC结构的ECC编码器/解码器可在控制器硬件及/或固件上实施。在一些实例中,执行本文中所描述的ECC结构的ECC编码器/解码器可在主机软件上实施。低复杂性处理可在ECC编码器/解码器上实施。
实施HFPC的ECC结构及执行ECC结构的ECC编码器/解码器依各种方式改进常规ECC结构及ECC编码器/解码器。例如,ECC结构提供高读取性能(例如高读取吞吐量)。在一些布置中,本文中所描述的码构造是基于可高效实施的简单组件码(例如但不限于博斯-乔赫里-霍克文黑姆(BCH)组件)。组件码实施迭代解码。因此,与具有复杂及高成本实施方案的常规码(例如LDPC码)相比,码构造具有更具成本效益的实施方案。此允许码结构适合于闪存装置(例如NAND闪存装置及其控制器)的存储应用。
简单码组件可以低实施复杂性实现解码器的硬输入或软输入两者的经改进编码/解码吞吐量及效率。即,本文中所描述的ECC结构可为硬解码及软解码两者提供高错误校正能力。例如,ECC结构可用解码器的硬输入(硬解码)实现高RBER错误校正且可以低实施复杂性提供高吞吐量。鉴于存储系统通常实施单读取操作,此提高存储系统的错误校正能力。因此,可在存储装置的整个生命周期内实现存储装置的高性能读取操作。另外,ECC结构可用解码器的软输入(软解码)实现高RBER错误校正,从而以高编程-擦除(P/E)循环计数且在困难滞留条件下提供高可靠性,因为存储系统通常需要非常小的不可校正位错误率(UBER)(例如1E-15)。
另外,ECC结构允许高效硬件实施方案,例如通过具有低功耗。此外,ECC结构可经配置以支持多个码率而不折损可靠性,同时接近多个码率的理论边界。因此,ECC结构可提供低错误底限。ECC结构实现高耐久性及对滞留及读取干扰应力的改进适应能力。
在一些实施方案中,ECC结构的码率可经配置用于每一应用。例如,单个引擎可配置(使用固件)码参数依所描述的方式确定ECC的有效负载大小及冗余大小。此允许对不同类型的页面使用不同码,例如根据页面的RBER特性。替代地,有效负载大小可依优化性能与可靠性之间的权衡的方式确定。
为了辅助说明本发明实施方案,图1展示根据一些实施方案的非易失性存储装置100的框图。在一些实例中,非易失性存储装置100位于数据中心(为了简洁未展示)中。数据中心可包含一或多个平台,其中的每一者支持一或多个存储装置(例如但不限于非易失性存储装置100)。在一些实施方案中,平台内的存储装置连接到架顶式(TOR)交换机且可经由TOR交换机或另一合适平台内通信机制彼此通信。在一些实施方案中,至少一个路由器可促进不同平台、机架或机柜中的非易失性存储装置之间的通信。非易失性存储装置100的实例包含但不限于固态硬盘(SSD)、非易失性双列直插存储器模块(NVDIMM)、通用闪存(UFS)、安全数字(SD)装置等等。
非易失性存储装置100至少包含控制器110及存储器阵列120。为简洁起见,未展示非易失性存储装置100的其它组件。如所展示,存储器阵列120包含NAND闪存装置130a到130n。NAND闪存装置130a到130n中的每一者包含一或多个个别NAND闪存裸片,其是能够在没电时保存数据的非易失性存储器(NVM)。因此,NAND闪存装置130a到130n是指闪存装置100内的多个NAND闪存装置或裸片。NAND闪存装置130a到130n中的每一者包含具有一或多个平面的裸片。每一平面具有多个块,且每一块具有多个页面。
尽管NAND闪存装置130a到130n经展示为存储器阵列120的实例,但用于实施存储器阵列120的非易失性存储器技术的其它实例包含但不限于磁随机存取存储器(MRAM)、相变存储器(PCM)、铁电RAM(FeRAM)等等。本文中所描述的ECC结构同样可在使用此类存储器技术的存储器系统上实施。
控制器110的实例包含但不限于SSD控制器(例如客户端SSD控制器、数据中心SSD控制器、企业SSD控制器等等)、UFS控制器或SD控制器等等。
控制器110可组合多个NAND闪存装置130a到130n中的原始数据存储装置,使得所述NAND闪存装置130a到130n用作单个存储装置。控制器110可包含微控制器、缓冲器、错误校正系统、闪存转译层(FTL)及闪存接口模块。此类功能可在硬件、软件及固件或其任何组合中实施。在一些布置中,控制器110的软件/固件可存储于非易失性存储器120或任何其它合适计算机可读存储媒体中。
控制器110包含用于执行本文中所描述的功能以及其它功能的合适处理及存储器能力。如所描述,控制器110管理NAND闪存装置130a到130n的各种特征,其包含但不限于I/O处置、读取、写入/编程、擦除、监测、记录、错误处置、废弃项目收集、损耗均衡、逻辑到物理地址映射、数据保护(加密/解密)等等。因此,控制器110提供NAND闪存装置130a到130n的可见性。
控制器110的错误校正系统可包含或否则实施一或多个ECC编码器及一或多个ECC解码器。ECC编码器经配置以使用本文中所描述的ECC结构编码编程到非易失性存储器120(例如,到NAND闪存装置130a到130n)的数据(例如输入有效负载)。ECC解码器经配置以解码经编码数据以校正编程错误、由非最佳阈值读取引起的错误、由滞留/读取干扰应力引起的错误等等。
在一些实例中,控制器110经配置以依伪三角矩阵形式布置输入有效负载且对每个组件码执行折叠编码(例如折叠BCH编码)。在一些实例中,有效负载中的每个位(例如每个信息位)可由(至少)两个组件码(也称为“码组件”)编码,且每一组件码与所有其它组件码相交。即,对于编码信息位的组件码,执行编码过程使得每个组件码的系统位也由所有其它组件码编码。组件码一起为使用组件码的每个信息位提供编码。
在一些布置中,ECC结构使用多维编码。在多维编码中,使数据流通过一组多个组件编码器(由控制器110实施或否则包含),其一起将全有效负载编码到单个码字中。BCH编码可通过使代码的系统数据通过控制器110的移位寄存器来执行。因此,系统数据可仅通过控制器110的组件编码器而无需在移位寄存器推进时修改。在系统数据完全通过移位寄存器之后,移位寄存器的内容是代码的冗余且附加到数据流。相同特性适用于所有维度上的所有组件编码器。多维编码可用乘积码或对称乘积码获得且可提供经改进能力。此类结构创建组件码的乘积以获得全码字。因而,解码过程可包含组件码的迭代解码。
图2是说明根据一些实施方案的编码方法200的实例的过程流程图。参考图1到2,方法200编码输入有效负载以获得对应ECC,如本文中所描述。输入有效负载包含信息位。
在210,控制器110产生输入有效负载的签名。签名可在解码期间用于检查解码是否成功。在一些实例中,签名可通过使信息位通过散列函数来产生。在一些实例中,签名包含从信息位产生的循环冗余校验和(CRC)。在一些实例中,除CRC之外,签名还可包含从输入有效负载产生的其它指示。CRC可经产生以具有指定长度。CRC的长度可基于例如但不限于码字解码的目标误检概率、解码过程的误检概率(单独没有CRC)等等的因素确定。码字解码的误检概率是指尽管存在解码错误但发出“解码成功”信号的概率。解码过程的误检概率(单独没有CRC)是指尽管不存在解码错误但发出“解码失败”信号的概率。一定水平的解码置信度可使用组件码零校验子提供,其在一些情况中可足以允许零长度CRC。否则,CRC可用于经组合误检决策。例如,CRC的较长长度对应于码字解码的低误检概率。另一方面,CRC的较短长度对应于码字解码的高目标误检概率。
在220,控制器110将输入有效负载的每一信息位映射到两个或更多个组件码。在一些实例中,对应于签名的位(例如CRC位)也可被编码(例如,在其中ECC是规则HFPC的布置中,每一CRC位可映射到一或多个组件码)。即,控制器110实施使输入有效负载的每一信息位与ECC的对应组件码映射的映射功能。在其中ECC是规则HFPC的布置(例如图3)中,每一信息位可映射到两个组件码(例如i1及i2)。在其中ECC是不规则HFPC的布置(例如图4)中,至少一个信息位可映射到三个或更多个组件码,因此创建不规则编码过程。
在一些实例中,块210及220可同时或并行实施。在其它实例中,块210及220可依任何合适顺序依序实施。
ECC码结构由多个组件码组成。每一组件码可为例如BCH码。组件码的数目n可由每一组件码的校正能力及码率确定。例如,给定每组件码的最小距离Dmin,每一组件码的校正能力t可表示为:
t=(Dmin-1)/2 (1)。
其中线性分组码的Dmin定义为代码中任何一对的码向量之间的最小汉明距离。冗余位的数目r可表示为:
r=Q·(Dmin-1)/2 (2);
其中Q是在GF(2Q)上定义的BCH组件码的伽罗瓦域参数。给定码率R及有效负载长度K位,所需的组件码的数目可确定为:
Figure BDA0003323071370000051
Figure BDA0003323071370000052
在230,控制器110用额外信息位更新用于编码每一组件码的检验子。因此,取决于在220执行的映射函数,每个组件码编码输入有效负载的一部分。在根据块210到230编码所有有效负载位(包含信息位及签名位)之后,产生对应于组件码的一组冗余位。
在240,控制器110在一些布置中编码冗余位(在额外编码过程中)。即,冗余位可映射到额外码组件。例如,编码可通过一组类似组件码获得。所述一组组件码可为比例如用于更高码率的一组有效负载编码组小的组。每个冗余编码组件可接收单独冗余输入位用于编码。因而,产生奇偶校验编码的奇偶校验。
图3是说明根据各种实施方案的使用HFPC结构的编码过程中的映射300的图。参考图1到3,映射300对应于HFPC编码方案且是块220的实例实施方案。控制器110可包含或可否则实施经配置以将输入位301组织(例如交织或映射)成一种形式的伪三角矩阵310的HFPC交织器。在一些实例中,输入位301包含输入有效负载302及签名位D1 303。输入有效负载302包含信息位。如所描述,D1 303的实例是附加CRC位。D1 303的位也可称为“外奇偶校验位”,假设CRC编码可被视为外编码过程。从输入位301到伪三角矩阵310的映射由控制器110维持。
如所展示,伪三角矩阵310具有上三角形式,其具有行321到325(其中为清楚起见,省略行323与324之间的行)及列331到335(其中为清楚起见,省略列333与334之间的列)。伪三角矩阵310经展示为具有多个块。伪三角矩阵310中的每一块包含或否则表示输入位301的两个或更多个位。每一块的输入位的数目可为预定的且对于伪三角矩阵310的所有块是相等的。因此,HFPC通过允许任何一对组件码编码(例如相交于)一个以上位来获得。通常,任何一对组件HFPC仅与一个共同(相交)位相交。所公开的实施方案允许任何一对组件码的两个或更多个共同位相交。伪三角矩阵310是“伪”的,假设每一行比紧邻于所述行下方的行多两个或更多个位(例如块),且每一列比紧邻其左侧的列多的两个或更多个位(例如块)。因此,伪三角矩阵中的每一行或列与相邻行或列相差两个或更多个位。
在一些实施方案中,输入位301连续(按任何合适顺序)映射到伪三角矩阵310中的块。例如,行321到325可依所述顺序或依相反顺序由输入位301从一行的最左块到一行的最右块逐块连续填充,反之亦然。在另一实例中,列331到335可依所述顺序或依相反顺序由输入位301从一列的最上块到一行的最下块逐块连续填充,反之亦然。在一些实施方案中,输入位301伪随机地映射到伪三角矩阵310。在其它实施方案中,输入位301可使用另一合适映射机制映射到伪三角矩阵310。在一个实施例中,映射是一对一映射,其中输入位301中的每一位映射到伪三角矩阵310中的一个位且伪三角矩阵310中的位总数等于输入位301的数目。在另一实施例中,映射可为一对多,其中输入位301中的每一位映射到伪三角矩阵310中的一或多个位且伪三角矩阵310中的位总数大于输入位301的数目。
如所展示,上三角形式具有相同数目个列及相同数目个行。在上三角形式中,行321含有伪三角矩阵310中所有行中的最多位。行322比行321少一个块。行323比行322少一个块,依此类推。行324具有两个块,且行325(作为最下行)具有一个块。换句话说,伪三角矩阵310中的任何行(除了行321)比上一紧邻行少一个块。类似地,在上三角形式中,列331(作为最左列)具有一个块。列332比列331多一个块。列333比列332多一个块,依此类推。列335(作为最右列)具有伪三角矩阵310中的列中的最多块。换句话说,伪三角矩阵310中的任何列(除了列335)比右边紧邻列少一个块。
以伪三角矩阵310的上三角形式组织或映射输入位301(其包含输入有效负载302的位及签名位Dl 303)允许每个组件码依所描述的方式与具有相同大小或几乎相同大小的行及列中的位相关联。例如,R1 341表示对应于第一组件码的冗余位。R1 341冗余位通过编码(例如折叠组件编码)第一行中的输入位301(例如行321中的位)来获得。R2 342冗余位通过编码(例如经由折叠组件编码)第一列中的输入位301(例如列331中的位)及第二行中的输入位301(例如行322中的位)来获得。由R2 342编码的总位数(例如列331中的位加上行322中的位)相同于由R1 341编码的总位数(例如行321中的位)。R3 343冗余位通过编码(例如经由折叠组件编码)第二列中的输入位301(例如列332中的位)及第三行中的输入位301(例如行323中的位)来获得。由R3 343编码的总位数(例如列332中的位加上行323中的位)相同于由R2 342编码的总位数(以及由R1 341编码的总位数)。此过程继续获得最后冗余位Rn 345,其编码(例如经由折叠组件编码)最后一列中的输入位301(例如列335中的位)。因此,每一组件码编码伪三角矩阵310中的行及列,从而提供折叠组件编码。折叠组件编码的实例是折叠BCH编码。
换句话说,根据映射300,输入位301映射到ECC的组件码且编码为经映射组件码。例如,编码过程以矩阵(例如伪三角矩阵形式)组织或映射输入位301,且对每个组件码执行折叠BCH编码。输入位301中的每一者由两个组件码编码。每一组件码与所有其它组件码相交。对于编码输入位301的组件码,执行编码过程,使得每个组件码的系统位也由所有其它组件码编码。由组件码中的任何者编码的输入位也由ECC中每隔一个组件码依非重叠方式编码。例如,由对应于R3 343冗余位的组件码编码的位也由对应于R1 341、R2 342及R4到Rn345的其它组件码编码。行321与列332的相交点处的位也由对应于R1 341的组件码编码;行322与列332的相交点处的位也由对应于R2 342的组件码编码;行323与列334的相交点处的位也由对应于Rn-1 344的组件码编码;行323与列335的相交点处的位也由对应于Rn 345的组件码编码。由组件码中的任何者(例如对应于R3 343的组件码)编码的位的每一块由所述组件码(例如对应于R3 343的组件码)编码且不超过组件码中的另一者,因此依非重叠方式。因而,每个组件码相互依赖所有其它组件码。组件码一起提供使用两个组件码编码输入位301中的每一者。假设每一组件码编码相同数目个位,组件码具有相同码率。
在一些实施方案中,奇偶校验位可经由奇偶校验编码产生。例如,折叠奇偶校验编码可用于将R1 341到Rn 345中的每一者的至少一部分编码成另一组件码(例如折叠乘积码350,其是一组封包)。折叠乘积码350由奇偶校验位组成。产生奇偶校验位的此方法可高效用于获得HFPC的简单硬件编码实施方案,因为方法可使用各种硬或软解码方法迭代解码。
在一些实例中,为了提供高效结构,R1 341到Rn 345中的每一者的一不完全部分(例如非整个)经编码以获得折叠乘积码350。这是因为仅输入位301的经编码版本(例如输入有效负载302)需要解码——解码所有冗余位R1 341到Rn 345会延长解码时间。
在一些布置中,对一些信息位的保护程度可因利用不规则半折叠乘积码编码而大于2。例如,除参考图3所描述那样编码规则半折叠乘积码之外,还可通过用一组不同组件码编码一些输入位301来将额外编码过程应用于所述位。在一些实例中,编码过程的不规则性由一些输入位301由两个以上组件码编码而输入位301的其它位由两个组件码编码引起,从而对码字内的位产生不均等错误保护且导致经改进校正能力(如应用于迭代解码)。在这方面,图4是说明根据各种实施方案的使用不规则HFPC结构的编码过程中的映射400的图。
参考图1到4,映射400对应于不规则HFPC编码方案且是块220的实例实施方案。控制器110可包含或否则可实施经配置以将输入位301组织(例如交织或映射)成伪三角矩阵310的HFPC交织器,如结合图4所描述。冗余位R1 341'、R2 342'、R3 343'、…、Rn-m-1 344'及Rn-m 345'依类似于R1 341到Rn 345根据图3产生的方式的方式产生。例如,最后冗余位Rn-m 345',其编码(例如,经由折叠组件编码)最后一列中的输入位301(例如列335中的位)。
在一些实例中,输入位301包含受保护部分401(“3D受保护有效负载部分”)。受保护部分401含有可为需要额外错误校正保护的输入位301的任何部分的一或多个位(例如,已知受保护部分401易于出错)。
从关于图3描述的HFPC编码过程产生的冗余位Rl 341'到Rn-m 345'可由用于通过另一组码组件编码这些冗余位的全部或子集的另一组单独组件码编码。受保护部分401可使用一组单独组件码编码(及如所描述那样基于伪三角矩阵310编码)。如所展示,受保护部分401可使用不同于伪三角矩阵310的HFPC映射的映射410编码以创建位411、412、…、413(为简洁起见,省略412与413之间的位)。映射410创建m组冗余位P1 421、P2 422、…、Pm423。
因此,保护部分401中的位可由三个组件码保护:两个基于伪三角矩阵310的HFPC映射且另一个基于映射过程410。因此,此额外映射过程410提供受保护部分401的额外保护,从而提供迭代解码过程的改进启动能力、导致更高解码能力及导致低复杂性编码过程。
在一些实施方案中,奇偶校验位(例如折叠乘积码430)可经由奇偶校验编码产生。例如,折叠奇偶校验编码可用于将R1 341'到Rn-m 345'中的每一者的至少一部分及P1 421到Pm 423中的每一者的至少一部分编码成另一组件码(例如折叠乘积码430,其是一组封包)。例如,通过使用R1 341'到Rn-m 345'中的每一者的至少一部分的折叠奇偶校验编码来获得的组件码可添加到通过使用R1 341'到Rn-m 345'中的每一者的至少一部分的折叠奇偶校验编码来获得的组件码以产生折叠乘积码430。
如所展示,在对应于映射300及400的ECC结构中的解码期间,每一组件码的位取决于另一组件码的位。在其它实施方案中,多个组件码可群组在一起且充当根据HFPC结构的单个元件,使得每一群组的组件码内的组件码的位之间不存在依赖性。此编码方案减少HFPC结构的依赖性且实现硬件中的更快解码实施方案(鉴于编码方案是低复杂性编码)及通过定义群组(其中每一群组包含独立组件)获得的解码结构。
在这方面,图5是说明根据各种实施方案的使用一群组HFPC结构的编码过程中的映射500的图。参考图1到5,映射500对应于群组HFPC编码方案且是块220的实例实施方案。控制器110的HFPC交织器经配置以将输入位501组织(例如交织)成一种形式的伪三角矩阵510。在一些实例中,输入位501包含输入有效负载502及签名位D1 503。输入有效负载502包含信息位。如所描述,D1 503的实例是附加CRC位(外奇偶校验位)。从输入位501到伪三角矩阵510的映射由控制器110维持。
如所展示,伪三角矩阵510具有上三角形式,其具有行521到536(其中为清楚起见,省略行532与533之间的行)及列541到556(其中为清楚起见,省略列552与553之间的列)。伪三角矩阵510经展示为具有多个块。伪三角矩阵510中的每一块包含或否则表示输入位501中的两个或更多个位。每一块的输入位的数目可为预定的且对于伪三角矩阵510的所有块是相等的。所公开的实施方案允许任何一对组件码的两个或更多个共同位相交。
在一些实施方案中,输入位501连续(按任何合适顺序)映射到伪三角矩阵510中的块。例如,行521到536可依所述顺序或依相反顺序由输入位501从一行的最左块到一行的最右块连续逐块填充,或反之亦然。在另一实例中,列541到556可依所述顺序或依相反顺序由输入位501从一列的最上块到一列的最下块逐块连续填充,或反之亦然。在一些实施方案中,输入位501伪随机地映射到伪三角矩阵510。在其它实施方案中,输入位501可使用另一合适映射机制映射到伪三角矩阵510。
伪三角矩阵510中的块、行及列可群组在一起。例如,伪三角矩阵510包含第一群组列541到544、第二群组列545到548、第三群组列549到552、…及另一群组列553到556。伪三角矩阵510包含第一群组行521到524、第二群组行525到528、第三群组行529到532、…及另一群组行533到536。因此,HFPC结构分成4个组件码的数个群组。每4个组件码根据HFPC指南编码。尽管图5中展示4组件码群组(例如4个行/列),但任何数目(例如2、3、6、8、10、12、16等等)个组件码可群组在一起。
如所展示,上三角形式具有相同数目个列及相同数目个行。相同组件码群组中的行(例如行521到524)或列(例如列541到544)具有相同数目个块且因此具有相同数目个位。在上三角形式中,行521到524含有伪三角矩阵510中所有行中的最多位。行525到528中的每一者比行521到524中的任何者少一个群组块(4个块,对应于列群组541到544)。行529到532中的每一者比行525到528中的任何者少一个群组块(4个块,对应于列群组545到548),依此类推。行533到536中的每一者(作为最下行)具有一群组块(例如4个块)。换句话说,伪三角矩阵510中的任何行(除行521到524之外)比上一紧邻群组的行少4个块。类似地,在上三角形式中,列541到544中的每一者(作为最左列中的一者)具有一群组块(例如4个块)。列545到548中的每一者具有比列541到544中的任何者多一个群组块(4个块,对应于行群组525到528)。列549到552中的每一者比列545到548中的任何者多一个群组块(4个块,对应于行群组529到532),依此类推。列553到556中的每一者(作为最右列)具有最多数目个块。换句话说,伪三角矩阵510中的任何列(除列553到556之外)比右边紧邻群组的列少4个块。
以伪三角矩阵510的上三角形式组织或映射输入位501允许每个组件码依所描述的方式与具有相同大小或几乎相同大小的行及列中的位相关联。相同群组内的组件码编码单独组的输入位501且彼此独立。
R1 561到R4 564是基于相同群组的组件码确定的冗余位。R1 561表示对应于第一组件码的冗余位且通过编码(例如折叠组件编码)第一行中的输入位501(例如行521中的位)来获得。R2 562、R3 563及R4 564表示对应于额外组件码的冗余位且分别通过编码(例如折叠组件编码)行522、523及523中的位的输入位501来获得。用于确定R1 561到R4 564中的每一者的位不重叠,且因此独立确定R1 561到R4 564。
R5 565、R6 566、R7 567及R8 568表示对应于额外组件码的冗余位且分别通过编码(例如折叠组件编码)列544及行525、列543及行526、列542及行527及列541及行528中的位中的输入位501来获得。用于确定R5 565到R8 568中的每一者的位不重叠且因此独立确定R5 565到R8 568。
R9 569、R10 570、R11 571及R12 572表示对应于额外组件码的冗余位且分别通过编码(例如折叠组件编码)列548及行529、列547及行530、列546及行531及列545及行532中的位中的输入位501来获得。用于确定R9 569到R12 572中的每一者的位不重叠,且因此独立确定R9 569到R12 572。
此过程继续直到确定Rn-3 573、Rn-2 574、Rn-1 575及Rn 576。Rn-3 573、Rn-2574、Rn-1 575及Rn 576表示对应于额外组件码的冗余位且分别通过编码(例如折叠组件编码)列556、列555、列554及列553中的位中的输入位501来获得。用于确定Rn-3 573、Rn-2574、Rn-1 575及Rn 576中的每一者的位不重叠,且因此独立确定Rn-3 573、Rn-2 574、Rn-1575及Rn 576。折叠组件编码的实例是折叠BCH编码。
在组件码分成两个群组的独立组件码的特殊情况中,所得编码方案简并成折叠乘积码。
换句话说,根据映射500,输入位501映射到ECC的组件码且编码为经映射组件码。例如,编码过程以矩阵(例如伪三角矩阵形式)组织或映射输入位501,且对每个组件码执行折叠BCH编码。输入位501中的每一者由不同组件码群组的两个组件码编码。因此,任何组件码与相同于所述组件码所属的群组的群组中的所有其它组件码相交。对于编码输入位501的组件码,执行编码过程使得每个组件码的系统位也由属于不同群组的所有其它组件码编码,其中消除组件码群组内的依赖性。由组件码中的给定组件码编码的输入位也由每隔一个组件码(其不在相同于所述组件码的群组中)依非重叠方式编码。例如,由对应于R9 569冗余位的组件码编码的位也由不在对应于R9 569冗余位的组件码所属的群组中的对应于R1 561到R8 568及R11到Rn 576的其它组件码编码。由组件码中的任何者(例如对应于R9569的组件码)编码的位的每一块由所述组件码(例如对应于R9 569的组件码)编码且不超过另一组件码,因此依非重叠方式。因而,每个组件码相互依赖于不在相同群组内的所有其它组件码。组件码使用两个组件码一起提供每一输入位501的编码。
在一些实施方案中,奇偶校验位可经由奇偶校验编码产生。例如,折叠奇偶校验编码可用于将R1 561到Rn 576中的每一者的至少一部分编码成另一组件码(例如折叠乘积码580,其是一组封包)。折叠乘积码580(例如,具有Rp1到Rp3)是奇偶校验位。产生奇偶校验位的此方法可高效用于获得HFPC的简单硬件编码实施方案,因为方法可使用各种硬或软解码方法迭代解码。
题为“错误校正码结构(ERROR CORRECTION CODE STRUCTURE)”、[XXXX]申请的代理档案号117441-0124中描述关于本文中所描述的ECC结构的进一步公开内容,所述案的全文以引用的方式并入本文中。
关于解码使用本文中所描述的ECC结构编码的数据,可通过计算及应用每个解码组件的外在信息来高效提供HFPC的迭代软解码。
另外,通过在通用乘积码内应用组件解码的错误校正最小化,可以低复杂性执行硬解码,因此提高可靠性。通用乘积码内组件解码的错误校正最小化包含检测及实施、拒绝组件码的可疑及矛盾解决方案、包含用于经解算组件码的强制位等等。
在一些布置中,基于本文中所描述的ECC结构的安全解码可用于在解码过程期间减少错误校正。即,可通过使用由ECC结构定义的相互依赖性检测组件码的错误校正来提高HFPC结构的迭代解码的效率,因此允许执行有效校正,同时忽略无效校正。本文中所描述的HFPC结构改进解码收敛时间,因为HFPC的所有组件码(非仅组件码的一半)是相互依赖的。因此,每个组件解码校正可用于提高至少另一组件码解码成功的概率。换句话说,错误修复的传播在HFPC结构中可非常高效,因此提高解码吞吐量。
在一些布置中,安全解码可通过解决由相互依赖组件码提供的矛盾解决方案(修复)及将强制旗标添加到由相互依赖组件码提供的一致解决方案来降低错误校正概率。在一些实例中,所接受组件码的更新发生在完成组件码的解码测试(检测)之后。
本文中所描述的安全解码包含检测阶段,其通常需要两遍解码迭代。对于小BCH组件码(例如其中错误校正能力t≤4),可应用单循环实施方案,且安全解码每组件码添加不超过一个附加循环,或甚至可更少,取决于实施细节。此指示安全解码流程维持高效解码吞吐量及可靠性。
对于硬解码,可使用安全解码决策规则来评估从所有组件码的内解码获得的建议校正。基于组件码的相互依赖性(例如,相互依赖组件码的提出校正是否彼此一致或矛盾),安全解码决策规则导致鉴于整组组件假设建议来决定实施或拒绝组件解决方案(例如建议校正)。因此,安全解码决策规则可在所有组件码的内解码完成之后且在通过所有组件码的内解码获得的建议校正中的任何者实施之前应用/评估。
在一些实例中,安全解码决策规则包含强接受规则、第一拒绝规则、第二拒绝规则及第三拒绝规则。此类规则是示范性的,且也可基于实施细节实施任何其它合适的基于依赖性的安全解码决策规则。在一些实例中,强接受规则、第一拒绝规则、第二拒绝规则及第三拒绝规则依所述顺序应用于从所有组件码的内解码获得的建议校正。在其它实例中,强接受规则、第一拒绝规则、第二拒绝规则及第三拒绝规则可依任何其它合适顺序应用于从所有组件码的内解码获得的建议校正。
在一些实例中,强接受规则应用于其中在块处相交的组件码中的至少两者或全部同意对所述块中的位进行相同建议校正的情形。在块处相交的相互依赖组件码的数目可为两个或更多个。在解码过程中的错误检测期间,在块处相交的组件码中的至少两者或全部建议在相交块内具有至少一个共同位的校正。在块处相交的组件码称为交叉组件码。此类组件码一致指示建议校正是可靠解决方案的高概率。因此,响应于确定满足强接受规则(例如,在块处相交的组件码中的至少两者或全部同意对块进行相同建议校正)而强制建议校正。如本文中所使用,强制建议校正是指校正(例如对应于强接受)与高可靠性相关联且使用此类校正的校验子来拒绝其它矛盾建议校正。无交叉解码可恢复强制校正。拒绝对一或多个位或由组件码校正的其它位的其它建议校正(由于本文中所描述的拒绝标准中的一者,不实施组件解码结果(例如建议校正))。因而,如果不同组件码的至少一个建议错误相同,那么满足强接受条件。一致组件码的数目及建议错误的一致位的最小数可通过配置特定码率及组件类型来确定。
在这方面,图6A是说明根据各种实施方案的其中两个组件码指示一致建议校正的解码情形的图。参考图1到6A,图6A中所展示的ECC结构600a可基于映射(例如但不限于映射300、400及500)实施。即,ECC结构600a可为将输入位(例如输入位301及501)映射到伪三角矩阵(例如伪三角矩阵310及510)的结果。相互依赖组件码用于基于ECC结构600a编码及解码输入位,类似于关于映射300、400及500所描述。例如,行611a中的输入位使用组件码C1610a编码/解码(例如,行611a可对应于行321或521,其中R1 341或561基于C1 610a确定)。列621a及行622a中的输入位使用组件码Ci 620a编码/解码(例如,相应地,列621a可对应于列332或542,行622a可对应于行323或527,其中R3 343或R7 567基于Ci 620a确定)。列631a及行632a中的输入位使用组件码Cm 630a编码/解码(例如,相应地,列631a可对应于列334或548,行632a可对应于行325或529,其中Rn-1 344或R9 569基于Cm 630a确定)。C1 610a、Ci 620a及Cm 630a中的每一者可为BCH组件码。为清楚起见,省略除具有建议校正的组件码及块那些之外的其它组件码(及其相关联行及列)及块。
使用Ci 620a的错误检测在块623a、626a及624a处产生建议校正。如本文中所使用,建议校正是指对给定块中多个位中的一者的建议校正。每一块含有多个位,且建议校正对应于所述多个位中的一者。使用Cm 630a的错误检测在块633a、626a及634a处产生建议校正。使用Ci 620a及Cm 630a的错误检测独立执行。因此,Ci 620a及Cm 630a同意块626a处的建议校正,且应用强接受规则。通过Ci 620a及Cm 630a的所有建议校正被强制及修复(接受)。即,除块626a处的建议校正之外,还强制及修复(接受)块623a、624a、633a及634a处的建议校正。拒绝对对应于Ci 620a及Cm 630a的任何块(例如列621a及631a及行622a及632a中的任何块)的所有其它解决方案。
在一些实例中,第一拒绝规则(拒绝类型一)应用于其中当前组件码指示建议校正以准确校正t(BCH组件码的错误校正能力)个错误且撤销n≥THz个交叉组件零校验子(或将为零的校验子)的情形。在一些实例中,THz可为1,其意味着可响应于确定建议校正尝试撤销交叉组件的至少一个零检验子而应用拒绝类型一。此意味着组件解决方案(例如建议校正)可包含改变THz组件的零检验子或更多。此情形对应于错误校正的高概率且可基于第一拒绝规则拒绝建议校正。
在这方面,图6B是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图。参考图1到6B,图6B中所展示的ECC结构600b可基于映射(例如但不限于映射300、400及500)实施。即,ECC结构600b可为将输入位(例如输入位301及501)映射到伪三角矩阵(例如伪三角矩阵310及510)的结果。相互依赖组件码用于基于ECC结构600b编码及解码输入位,类似于关于映射300、400及500所描述。例如,行611b中的输入位使用组件码C1 610b编码/解码(例如,行611b可对应于行321或521,其中R1 341或561基于C1 610b确定)。列621b及行622b中的输入位使用组件码Ci 620b编码/解码(例如,相应地,列621b可对应于列332或542,行622b可对应于行323或527,其中R3 343或R7 567基于Ci 620b确定)。列641b及行642b中的输入位使用组件码Cm 640b编码/解码(例如,相应地,列641b可对应于列334或548,行642b可对应于行325或529,其中Rn-1 344或R9 569基于Cm 640b确定)。列631b及行632b中的输入位使用组件码Cj 630b编码/解码(例如,相应地,列631b可对应于伪三角矩阵310或510中的另一列,行632b可对应于伪三角矩阵310或510中的另一行,其中对应冗余位基于Cj 630b确定)。C1 610b、Ci 620b、Cj 630b及Cm 640b中的每一者可为BCH组件码。为清楚起见,省略除具有建议校正的组件码及块之外的其它组件码(及其相关联行及列)及块。
Ci 620b、Cj 630b及Cm 640b中的每一者具有t=3个错误的错误校正能力。组件Cm640b尝试修复3个错误(例如块643b、644b及645b处的3个建议校正),而另外两个交叉组件码Ci 620b及Cj 630b尝试修复交叉封包中其它位置或块上的错误。鉴于Cm 640b分别在块644b及645b处与Ci 620b及Cj 630b两者相交,Ci 620b及Cj 630b是Cm 640b的交叉组件码。例如,使用Ci 620b的错误检测在块623b、624b及625b处产生建议校正。使用Cj 630b的错误检测在块633b、634b及635b处产生建议校正。使用Ci 620b、Cj 630b及Cm 640b的错误检测独立执行。尽管Ci 620b及Cj 630b在块644b及645b处与Cm 640b相交,但Ci 620b及Cj 630b不同意在块644b及645b处通过Cm 640b进行建议校正。因此,应用第一拒绝规则,从而引起Cm 640b拒绝所有建议校正(例如,在块643b、644b及645b处)。
在一些实例中,第二拒绝规则(拒绝类型二)应用于其中当前组件码指示建议校正以校正t(错误校正能力)个错误而当前组件码的交叉组件码指示建议校正以校正属于当前组件码的块处的错误的情形,其中所述块不是由当前组件码指示的t个错误中的一者。换句话说,关于当前组件码与另一组件码相交的位置(例如块),当前组件码未发现错误,而另一组件码发现错误。在此情况中,基于第二拒绝规则拒绝由当前组件码指示的建议校正。
在这方面,图6C是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图。参考图1到6C,图6C中所展示的ECC结构600c可基于映射(例如但不限于映射300、400及500)实施。即,ECC结构600c可为将输入位(例如输入位301及501)映射到伪三角矩阵(例如伪三角矩阵310及510)的结果。相互依赖组件码用于基于ECC结构600c编码及解码输入位,类似于关于映射300、400及500所描述。例如,行611c中的输入位使用组件码C1 610c编码/解码(例如,行611c可对应于行321或521,其中R1 341或561基于C1 610c确定)。列621c及行622c中的输入位使用组件码Ci 620c编码/解码(例如,相应地,列621c可对应于列332或542,行622c可对应于行323或527,其中R3 343或R7 567基于Ci 620c确定)。列631c及行632c中的输入位使用组件码Cm 630c编码/解码(例如,相应地,列631c可对应于列334或548,行632c可对应于行325或529,其中Rn-1 344或R9 569基于Cm 630c确定)。C1 610c、Ci620c及Cm 630c中的每一者可为BCH组件码。为清楚起见,省略除具有建议校正的组件码及块之外的其它组件码(及其相关联行及列)及块。
Ci 620c及Cm 630c中的每一者具有t=3个错误的错误校正能力。组件Cm 630c尝试修复3个错误(例如块633c、634c及635c处的3个建议校正)。使用交叉组件Ci 620c的错误检测在块623c、624c及625c处产生建议校正。鉴于Ci 620c在块624c处与Cm 630c相交,Ci620c及Cm 630c是彼此交叉组件码。使用Ci 620c及Cm 630c的错误检测独立执行。尽管Ci620c及Cm 630c在块624c处相交,但Ci 620c及Cm 630c鉴于由Cm 630c指示的块633c、634c及635c处的建议错误(高达错误校正能力)不包含块624c中的一者而不一致,而Ci 620c指示块624c处的建议错误。因此,应用第二拒绝规则,从而引起Cm 630c拒绝所有建议校正(例如,在块633c、634c及635c处)。
在一些实例中,第三拒绝规则(拒绝类型三)应用于其中当前组件码指示比由当前组件码的交叉组件码指示的建议错误少的建议错误的情形。在此情形中,拒绝交叉组件解决方案(例如由交叉组件码指示的建议错误)。交叉组件因为具有BCH码的更多错误位置的有效解决方案的错误校正的概率可更高而拒绝。
在这方面,图6D是说明根据各种实施方案的其中拒绝组件码的建议校正的解码情形的图。参考图1到6D,图6D中所展示的ECC结构600d可基于映射(例如但不限于映射300、400及500)实施。即,ECC结构600d可为将输入位(例如输入位301及501)映射到伪三角矩阵(例如伪三角矩阵310及510)的结果。相互依赖组件码用于基于ECC结构600d编码及解码输入位,类似于关于映射300、400及500所描述。例如,行611d中的输入位使用组件码C1 610d编码/解码(例如,行611d可对应于行321或521,其中R1 341或561基于C1 610d确定)。列621d及行622d中的输入位使用组件码Ci 620d编码/解码(例如,相应地,列621d可对应于列332或542,行622d可对应于行323或527,其中R3 343或R7 567基于Ci 620d确定)。列631d及行632d中的输入位使用组件码Cm 630d编码/解码(例如,相应地,列631d可对应于列334或548,行632d可对应于行325或529,其中Rn-1 344或R9 569基于Cm 630d确定)。C1 610d、Ci620d及Cm 630d中的每一者可为BCH组件码。为清楚起见,省略除具有建议校正的组件码及块之外的其它组件码(及其相关联行及列)及块。
Ci 620d及Cm 630d中的每一者具有t=3个错误的错误校正能力。组件Cm 630d尝试修复2个错误(例如块624d及633d处的2个建议校正)。使用交叉组件Ci 620d的错误检测在块623d、624d及625d处产生建议校正。鉴于Ci 620d在块624d处与Cm 630d相交,Ci 620d及Cm 630d是彼此交叉组件码。Ci 620d尝试修复块624d中的第一错误位641d,而Cm 630d尝试修复块624d中的第二错误位642d,第一错误位641d及第二错误位642d是块624d中的不同位。Cm 630d指示比Ci 620d少一个建议错误。换句话说,第一组建议校正及第二组建议校正不具有任何共同建议校正。因此,应用第三拒绝规则,且Ci 620d及Cm 630d不一致。拒绝Ci620d的所有建议校正(例如,在块623d(对于块624d中的第一错误位641d)及块625d处),而强制及修复(接受)由Cm 630d指示的建议校正(例如,在块624d中的第二错误位642d处及块625d处)。
图7是说明根据各种实施方案的实例硬解码方法700的过程流程图。参考图1到7,硬解码方法700可由控制器110实施的一或多个解码器(例如一或多个HFPC迭代硬解码器)执行。硬解码方法700是HFPC迭代解码方法且包含安全解码,如本文中所描述。硬解码方法700对码字进行操作,所述码字可具有在读取期间添加的错误(例如噪声)。
在一些实例中,在迭代解码的第一迭代中,仅内组件码用于解码。有时,内组件码仅解码很少错误(例如,每BCH组件码t<4),因此每组件码的解码可为高效的。在闪存装置(例如闪存装置100)中,读取性能取决于解码器延时。因此,需要高速解码用于高读取性能。在低延时及当错误数目不太高时,仅使用迭代快速解码的成功解码是可行的,无需安全解码及/或相交解码。另一方面,在其中内解码不成功的情况中,可尝试其它类型的多维解码。
硬解码方法700开始于将尝试次数设置为1。在702,控制器110(例如解码器)配置解码。在一些实例中,配置解码在每次迭代中执行一次。在一些实例中,配置解码包含将安全解码设置为开启或关闭,其中方法700包含响应于安全解码开启的安全解码,反之亦然。
在一些实例中,配置解码包含将错误数目设置为可由每一组件码校正。在一些情况中,每一组件码的错误数目设置为t-1,其比所述组件码的错误校正能力(t)小1。将每一组件码的错误数目设置为t-1最小化在执行BCH校正时错误校正的概率。在其中BCH组件码具有t≤4的解码能力的一些实例中,可应用来自检验子的直接解决方案,从而实现具有高解码吞吐量的高效硬件实施方案。因此,一种简化方法是执行比BCH码校正能力t少多达一个错误的校正。每一组件码具有码谱。例如,定义概率分布P(n,e),其中n(例如0≤n≤t)是在BCH解码之后错误的错误检测的数目,且e是输入错误的数目(例如e>t)。在解码e>t的BCH组件码之后,额外错误可根据以下存在:
Figure BDA0003323071370000171
其中N是组件码的码字长度(包含奇偶校验位)。因此,每组件码限制为m个校正可随着错误校正概率逐渐提高而改变每次迭代。
将错误数目限制为t-1及多维迭代解码可相应地针对M0≥0及M1≥0迭代执行。而M0=0,不发生(t-1)次解码迭代。此配置对于快速解码有效。
在一些实例中,在702配置解码包含强制组件码状态、设置每维度解码的组件码的数目等等。
硬解码方法700中的迭代(例如702到714)尝试解码所有组件码。在704,控制器110(例如解码器)对当前维度的当前组件码执行硬解码错误检测。在706,控制器110(例如解码器)对当前组件码执行硬解码测试。即,当前解码尝试包含测试阶段,其中测试所有组件码用于解码。记录(例如由控制器110存储)对每一组件码的建议校正。
在708,控制器110(例如解码器)确定是否满足t-1条件且强制组件是否未改变。在一些实例中,在一些迭代中不执行块708,且无需针对所述迭代测试t-1条件。响应于确定不满足t-1条件或强制组件被改变(708:否),方法700返回到704,且将当前组件码设置为下一组件码。另一方面,响应于确定满足t-1条件且强制组件未改变(708:是),控制器110(例如解码器)在710更新组件硬解码测试结果。
在712,控制器110(例如解码器)确定是否已解码及测试所有组件码(且记录建议校正)。响应于确定已解码及测试非所有组件码(712:否),方法700返回到704,且将当前组件码设置为下一组件码,直到已解码及测试所有组件码。
响应于确定已解码及测试所有组件码(712:是),控制器110(例如解码器)在714评估测试结果(例如所记录的建议校正)。换句话说,鉴于由所有组件码的所记录建议校正证明的整组组件假设建议来决定实施/强制或拒绝所有组件码的建议校正中的任何者。控制器110使用强接受规则、第一拒绝规则、第二拒绝规则、第三拒绝规则等等来评估测试结果。在一些实例中,控制器110依所述顺序将强接受规则、第一拒绝规则、第二拒绝规则及第三拒绝规则应用于所记录的建议校正。在其它实例中,控制器110依任何其它合适顺序将强接受规则、第一拒绝规则、第二拒绝规则及第三拒绝规则应用于所记录的建议校正。控制器110(例如解码器)可基于规则(例如根据图6A到6D)强制(例如接受及修复)或拒绝建议校正以避免解码错误。
在716,控制器110(例如解码器)根据需要应用相交解码。如果此时解码没有成功,那么可实施额外解码方法。鉴于使用多维码,每个输入位由多个组件码编码。因此,此时使用相交解码(例如复杂性有限的相交解码)可为有用的。在实例中,响应于确定仍存在一些未解算解码器组件且界限距离迭代硬迭代解码没有进一步进展,可在716实施相交解码。
未解算相交位被定义为属于不同组件码的信息位,其等所有未解算(例如使missCorrection=1)。所使用的组件码越多,组件码之间的相交位组越小。在本文中所公开的HFPC码中,鉴于每个组件位由所有其它组件码交叉编码,相交大小通过构造在规则码上最小。HFPC的此类性质创建最小相交大小且实现相交解码的低复杂性列举。如所描述,相交位组长度可基于相同维度上组件码的有效负载大小来改变。在相交解码中,映射位组(通过组件码与非零(未解算)校验子相交来获得)。根据需要来限制相交位组列表大小。可确定用于列举的位数。列举复杂性由
Figure BDA0003323071370000181
界限,其中Nb是每个相交解码同时翻转的位数,且Lb是单个位组相交中的位数。对于在相交位上列举的每个选定相交组(每次翻转另外Nb个位),在选定维度上尝试解码对应组件码。此能够校正单个组件码的t+Nb个错误。如果在解码超过某个阈值(关于单个组件,零阈值)的数个组件码之后missCorrection=0,那么接受Nb个位的反转作为(相交组的)有效解决方案。
在718,控制器110(例如解码器)确定解码是否成功或是否已达到最大迭代次数。响应于确定解码不成功且尚未达到最大迭代次数(718:否),方法700返回到702进行下一迭代。另一方面,响应于确定解码成功或已达到最大迭代次数(718:是),控制器110(例如解码器)在720确定解码是否成功或是否已达到最大尝试次数。响应于确定解码不成功且未达到最大尝试次数(720:否),方法700返回到702进行下一尝试(及下一尝试的第一迭代)。另一方面,响应于确定解码成功或已达到最大尝试次数(720:是),硬解码方法700结束。
图8是说明根据各种实施方案的实例硬解码方法800的过程流程图。参考图1到8,硬解码方法800可由控制器110实施的一或多个解码器(例如一或多个HFPC迭代硬解码器)执行。硬解码方法800是多尝试HFPC迭代解码方法且包含快速解码及安全解码,如本文中所描述。硬解码方法800对码字进行操作,所述码字可具有在读取期间添加的错误(例如噪声)。
在802,由控制器110(例如解码器)启动定时器。为了实施准确性,定时器经配置以测量每一解码配置尝试的时间。在定时器期满时,可终止解码。换句话说,定时器限制解码器复杂性。定时器可结合其它解码参数使用。
在804,控制器110(例如解码器)执行快速解码。在一些实例中,在快速解码中,仅内组件码用于解码。有时,内组件码仅解码很少错误(例如,每BCH组件码t<4),因此每组件码的解码可为高效的。在闪存装置(例如闪存装置100)中,读取性能取决于解码器延时。因此,需要高速解码用于高读取性能。在低延时及当错误数目不太高时,仅使用迭代快速解码的成功解码是可行的,无需安全解码及/或相交解码。另一方面,在其中内解码不成功的情况中,可尝试其它类型的多维解码。
在806,控制器110(例如解码器)确定快速解码是否成功。响应于确定快速解码成功(806:是),解码成功。响应于确定快速解码不成功(806:否),控制器110(例如解码器)在808确定定时器是否已期满。响应于确定定时器已期满(808:是),解码失败。
另一方面,响应于确定定时器未期满(808:否),控制器110(例如解码器)在810配置硬解码。在一些实例中,每次迭代执行一次配置解码。在一些实例中,类似于关于702所描述,配置解码包含将安全解码设置为开启或关闭、将错误数目设置为可由每一组件码校正、强制组件码状态、设置每维度解码的组件码的数目等等中的一或多者。
在812,控制器110(例如解码器)执行硬解码。硬解码可包含如所描述那样迭代执行的图7的702到718。即,响应于确定快速解码尝试已失败,解码器可经配置以应用本文中所描述的安全解码(在810)。812包含在安全模式下迭代执行解码,根据需要使用相交解码作为解决更高错误率或非均匀错误分布的补充工具。
在814,控制器110(例如解码器)确定硬解码是否成功。响应于确定硬解码成功(814:是),解码成功。响应于确定硬解码不成功(814:否),控制器110(例如解码器)在816确定是否已达到最大尝试次数。响应于确定已达到最大尝试次数(816:是),解码失败。另一方面,响应于确定尚未达到最大尝试次数(816:否),方法800返回到808进行下一尝试。对于每一解码尝试,解码开始于原始输入错误分布。
提供以上描述来使所属领域的技术人员能够实践本文中所描述的各个方面。所属领域的技术人员将易于明白对这些方面的各种修改,且本文中所定义的一般原理可应用于其它方面。因此,权利要求书不希望受限于本文中所展示的方面,而是应被给予与书面权利要求书一致的全范围,其中单数元件的指涉不希望意谓“有且仅有一个”(除非特别说明),而是意谓“一或多个”。除非另外特别说明,否则术语“一些”是指一或多个。所属领域的一般技术人员已知或以后会知道的整个以上描述中所描述的各个方面的元件的所有结构及功能等效物通过引用的方式明确并入本文中且希望由权利要求书涵盖。此外,本文中所公开的任何内容不希望公之于众,无论此公开是否在权利要求书中明确叙述。任何权利要求元件不应被解释为构件+功能,除非元件使用短语“用于…的构件”明确叙述。
应理解,所公开的过程中步骤的特定顺序或层次是说明性方法的实例。基于设计偏好,应理解,过程中步骤的特定顺序或层次可重排,同时保持在以上描述的范围内。随附方法权利要求依样本顺序呈现各个步骤的元件,且不意谓受限于所呈现的特定顺序或层次。
提供所公开的实施方案的以上描述来使所属领域的技术人员能够制造或使用所公开的标的物。所属领域的技术人员将易于明白对这些实施方案的各种修改,且可在不背离以上描述的精神或范围的情况下将本文中所定义的一般原理应用于其它实施方案。因此,以上描述不希望受限于本文中所展示的实施方案,而是应被给予与本文中所公开的原理及新颖特征一致的最广范围。
所说明及描述的各个实例仅作为实例供于说明权利要求书的各种特征。然而,关于任何给定实例展示及描述的特征不一定限于相关联实例,而是可与所展示及描述的其它实例一起使用或组合。此外,权利要求书不希望受任何一个实例限制。
以上方法描述及过程流程图仅供为说明性实例且不希望要求或暗示各个实例的步骤必须依所呈现的顺序执行。所属领域的技术人员将了解,上述实例中步骤的顺序可依任何顺序执行。例如“之后”、“接着”、“接下来”等的字词不希望限制步骤的顺序;这些字词仅用于通过方法的描述引导读者。此外,单数权利要求元件的任何指涉(例如,使用冠词“一”或“所述”)不应被解释为将元件限制为单数。
结合本文中所公开的实例描述的各种说明性逻辑块、模块、电路及算法步骤可实施为电子硬件、计算机软件或两者的组合。为了清楚说明硬件与软件的此可互换性,各种说明性组件、块、模块、电路及步骤已在上文大体上根据其功能进行描述。此功能实施为硬件还是软件取决于施加于整个系统的特定应用及设计约束。技术人员可针对每一特定应用依不同方式实施所描述的功能,但此类实施决策不应被解译为引起背离本公开的范围。
用于实施结合本文中所公开的实例描述的各种说明性逻辑、逻辑块、模块及电路的硬件可用经设计以执行本文中所描述的功能的通用处理器、DSP、ASIC、FPGA或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件或其任何组合实施或执行。通用处理器可为微处理器,但在替代例中,处理器可为任何常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心结合的一或多个微处理器或任何其它此配置。替代地,一些步骤或方法可由专针对给定功能的电路系统执行。
在一些示范性实例中,所描述的功能可以硬件、软件、固件或其任何组合实施。如果以软件实施,那么功能可作为一或多个指令或代码存储于非暂时性计算机可读存储媒体或非暂时性处理器可读存储媒体上。本文中所公开的方法或算法的步骤可体现于可驻留于非暂时性计算机可读或处理器可读存储媒体上的处理器可执行软件模块中。非暂时性计算机可读或处理器可读存储媒体可为可由计算机或处理器存取的任何存储媒体。例如但不限于,此类非暂时性计算机可读或处理器可读存储媒体可包含RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置或可用于以指令或数据结构的形式存储期望程序码且可由计算机存取的任何其它媒体。如本文中所使用,磁盘及光盘包含压缩磁盘(CD)、激光盘、光盘、数字多功能光盘(DVD)、软盘及蓝光光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学复制数据。以上的组合也包含于非暂时性计算机可读及处理器可读媒体的范围内。另外,方法或算法的操作可作为代码及/或指令的一个或任何组合或集合驻留于可并入到计算机程序产品中的非暂时性处理器可读存储媒体及/或计算机可读存储媒体上。
提供所公开实例的以上描述来使所属领域的技术人员能够制造或使用本公开。所属领域的技术人员将易于明白对这些实例的各种修改,且可在不背离本公开的精神或范围的情况下将本文中所定义的一般原理应用于一些实例。因此,本公开不希望受限于本文中所展示的实例,而是应被给予与随附权利要求书及本文中所公开的原理及新颖特征一致的最广范围。

Claims (20)

1.一种用于在闪存装置中错误校正的方法,其包括:
通过基于多个组件码解码码字来确定建议校正;
确定基于所述多个组件码中的第一组件码获得的第一组所述建议校正是否与基于所述多个组件码中的第二组件码获得的第二组所述建议校正一致;及
基于所述第一组所述建议校正与所述第二组所述建议校正是否一致来选择接受所述第一组所述建议校正或拒绝所述第一组所述建议校正中的一者。
2.根据权利要求1所述的方法,其中
所述码字对应于具有输入位的输入有效负载;
所述输入位被组织成伪三角矩阵;
所述伪三角矩阵的每一行或列与相邻行或列相差两个或更多个位;且
所述输入位基于基于所述伪三角矩阵将所述输入位中的每一者映射到所述多个组件码中的两者或更多者来使用所述多个组件码编码。
3.根据权利要求2所述的方法,其中
所述伪三角矩阵包括多个块;
所述多个块中的每一者包括所述输入位中的两者或更多者;
所述第一组件码及所述第二组件码编码所述多个块中的相同块。
4.根据权利要求1所述的方法,其中确定所述第一组所述建议校正是否与所述第二组所述建议校正一致包括响应于以下而确定所述第一组所述建议校正与所述第二组所述建议校正一致:
确定所述第一组所述建议校正及所述第二组所述建议校正包括相同数目个建议校正;
确定所述第一组所述建议校正包括建议校正;及
确定所述第二组所述建议校正包括所述相同建议校正。
5.根据权利要求4所述的方法,其进一步包括响应于通过至少一个位(或根据阈值)确定所述第一组所述建议校正与所述第二组所述建议校正一致而选择接受所述第一组所述建议校正及所述第二组所述建议校正。
6.根据权利要求4所述的方法,其中将所述相同两个或更多个位映射到所述第一组件码及所述第二组件码两者。
7.根据权利要求4所述的方法,其中所述相同数目个所述建议校正是所述第一组件码及所述第二组件码的错误校正能力。
8.根据权利要求1所述的方法,其中确定所述第一组所述建议校正是否与所述第二组所述建议校正一致包括响应于以下而确定所述第一组所述建议校正与所述第二组所述建议校正不一致:
确定所述第一组所述建议校正包括对映射到所述第一组件码及所述第二组件码两者的两个或更多个位的建议校正;及
确定所述第二组所述建议校正是针对除映射到所述第一组件码及所述第二组件码两者的所述两个或更多个位之外的位。
9.根据权利要求8所述的方法,所述第一组所述建议校正包括等于所述第一组件码的错误校正能力的建议校正数目。
10.根据权利要求8所述的方法,其进一步包括响应于确定所述第一组所述建议校正与所述第二组所述建议校正不一致而拒绝所述第一组所述建议校正。
11.根据权利要求1所述的方法,其中确定所述第一组所述建议校正是否与所述第二组所述建议校正一致包括响应于以下而确定所述第一组所述建议校正与所述第二组所述建议校正不一致:
确定所述第二组所述建议校正包括对映射到所述第一组件码及所述第二组件码两者的两个或更多个位的建议校正;及
确定所述第一组所述建议校正是针对除映射到所述第一组件码及所述第二组件码两者的所述两个或更多个位之外的位。
12.根据权利要求11所述的方法,其中所述第一组所述建议校正包括等于所述第一组件码的错误校正能力的建议校正数目。
13.根据权利要求11所述的方法,其进一步包括响应于确定所述第一组所述建议校正与所述第二组所述建议校正不一致而拒绝所述第一组所述建议校正。
14.根据权利要求1所述的方法,其中确定所述第一组所述建议校正是否与所述第二组所述建议校正一致包括响应于确定所述第一组所述建议校正及所述第二组所述建议校正不具有任何共同建议校正而确定所述第一组所述建议校正与所述第二组所述建议校正不一致。
15.根据权利要求14所述的方法,其进一步包括响应于确定所述第一组所述建议校正与所述第二组所述建议校正不一致而拒绝所述第二组所述建议校正。
16.根据权利要求14所述的方法,其中
所述第一组所述建议校正包括小于所述第一组件码的错误校正能力的建议校正数目;且
所述第二组所述建议校正包括等于所述第二组件码的错误校正能力的建议校正数目。
17.根据权利要求1所述的方法,其中所述多个组件码是博斯-乔赫里-霍克文黑姆(BCH)组件。
18.一种闪存装置,其包括:
非易失性存储器;及
控制器,其经配置以通过以下来对所述非易失性存储器执行错误校正:
通过基于多个组件码解码码字来确定建议校正;
确定基于所述多个组件码中的第一组件码获得的第一组所述建议校正是否与基于所述多个组件码中的第二组件码获得的第二组所述建议校正一致;及
基于所述第一组所述建议校正与所述第二组所述建议校正是否一致来选择接受所述第一组所述建议校正或拒绝所述第一组所述建议校正中的一者。
19.根据权利要求18所述的闪存装置,其中
所述码字对应于具有输入位的输入有效负载;
所述输入位被组织成伪三角矩阵;
所述伪三角矩阵的每一行或列与相邻行或列相差两个或更多个位;且
所述输入位基于基于所述伪三角矩阵将所述输入位中的每一者映射到所述多个组件码中的两者或更多者来使用所述多个组件码编码。
20.一种非暂时性计算机可读媒体,其存储计算机可读指令,使得所述计算机可读指令在被执行时引起闪存装置的控制器通过以下来执行错误校正:
通过基于多个组件码解码码字来确定建议校正;
确定基于所述多个组件码中的第一组件码获得的第一组所述建议校正是否与基于所述多个组件码中的第二组件码获得的第二组所述建议校正一致;及
基于所述第一组所述建议校正与所述第二组所述建议校正是否一致来选择接受所述第一组所述建议校正或拒绝所述第一组所述建议校正中的一者。
CN202080031759.XA 2019-03-15 2020-03-13 用于错误校正码结构的解码方案 Active CN113785274B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/355,555 US11734107B2 (en) 2019-03-15 2019-03-15 Decoding scheme for error correction code structure
US16/355,555 2019-03-15
PCT/IB2020/052325 WO2020188445A1 (en) 2019-03-15 2020-03-13 Decoding scheme for error correction code structure

Publications (2)

Publication Number Publication Date
CN113785274A true CN113785274A (zh) 2021-12-10
CN113785274B CN113785274B (zh) 2024-03-29

Family

ID=72423685

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080031759.XA Active CN113785274B (zh) 2019-03-15 2020-03-13 用于错误校正码结构的解码方案

Country Status (3)

Country Link
US (1) US11734107B2 (zh)
CN (1) CN113785274B (zh)
WO (1) WO2020188445A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI779610B (zh) * 2021-05-17 2022-10-01 瑞昱半導體股份有限公司 偵測快閃記憶體模組的方法及相關的系統晶片
US20230253985A1 (en) * 2022-01-27 2023-08-10 Kioxia Corporation Efficient decoding schemes for error correcting codes for memory devices

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052812A (en) * 1998-01-07 2000-04-18 Pocketscience, Inc. Messaging communication protocol
US20140351672A1 (en) * 2013-05-24 2014-11-27 Sk Hynix Memory Solutions Inc. Miscorrection detection for error correcting codes using bit reliabilities
US9231623B1 (en) * 2013-09-11 2016-01-05 SK Hynix Inc. Chase decoding for turbo-product codes (TPC) using error intersections
US20170004036A1 (en) * 2015-06-30 2017-01-05 SK Hynix Inc. Flash memory system and operating method thereof
US20170179980A1 (en) * 2015-12-18 2017-06-22 SK Hynix Inc. Techniques for low complexity soft decoder for turbo product codes
US20170194989A1 (en) * 2015-12-30 2017-07-06 SK Hynix Inc. Techniques for miscorrection detection for constituent codewords in product codes
US20170279468A1 (en) * 2016-03-23 2017-09-28 SK Hynix Inc. Soft decoder for generalized product codes
US20180167088A1 (en) * 2016-12-09 2018-06-14 Futurewei Technologies, Inc. Error-Correcting Code Method and System with Hybrid Block Product Codes

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640286A (en) * 1995-05-08 1997-06-17 Western Digital Corporation Disk drive with error code embedded sector identification
US6615387B1 (en) * 1998-09-22 2003-09-02 Seagate Technology Llc Method and apparatus for error detection
JP2001144628A (ja) 1999-11-16 2001-05-25 Hitachi Ltd データ転送装置
US20030192005A1 (en) * 2002-04-05 2003-10-09 Seagate Technology Llc Method and apparatus for error detection
US7010741B2 (en) * 2002-10-29 2006-03-07 Mosaid Technologies Method and circuit for error correction in CAM cells
US7296212B1 (en) * 2002-11-15 2007-11-13 Broadwing Corporation Multi-dimensional irregular array codes and methods for forward error correction, and apparatuses and systems employing such codes and methods
EP1564892B1 (en) * 2004-02-13 2010-12-01 Alcatel Lucent Iterative decoding of two-dimensional block codes
US8411677B1 (en) * 2007-08-21 2013-04-02 Qlogic, Corporation Method and system for processing layered networking protocol packets
US8335977B2 (en) 2007-12-05 2012-12-18 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated BCH codes and/or designation of “first below” cells
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8359518B2 (en) * 2009-10-27 2013-01-22 Altera Canada Co. 2D product code and method for detecting false decoding errors
US8700970B2 (en) * 2010-02-28 2014-04-15 Densbits Technologies Ltd. System and method for multi-dimensional decoding
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
JP5601256B2 (ja) 2011-03-20 2014-10-08 富士通株式会社 メモリコントローラ及び情報処理装置
CN102742164B (zh) * 2012-02-14 2014-04-30 华为技术有限公司 一种译码方法和译码装置
US9053047B2 (en) * 2012-08-27 2015-06-09 Apple Inc. Parameter estimation using partial ECC decoding
US9160373B1 (en) * 2012-09-24 2015-10-13 Marvell International Ltd. Systems and methods for joint decoding of sector and track error correction codes
US8959418B1 (en) * 2012-11-30 2015-02-17 Xilinx, Inc. Forward error correction
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9397706B1 (en) * 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
GB2525430B (en) * 2014-04-25 2016-07-13 Ibm Error-correction encoding and decoding
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9252816B1 (en) * 2014-06-02 2016-02-02 Densbits Technologies Ltd. False error correction detection
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US10063261B1 (en) * 2015-10-13 2018-08-28 Sorenson Ip Holdings Llc Communication endpoints and related methods for forward error correction of packetized data
US10009043B2 (en) 2016-06-30 2018-06-26 Intel Corporation Technologies for providing efficient error correction with half product codes

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052812A (en) * 1998-01-07 2000-04-18 Pocketscience, Inc. Messaging communication protocol
US20140351672A1 (en) * 2013-05-24 2014-11-27 Sk Hynix Memory Solutions Inc. Miscorrection detection for error correcting codes using bit reliabilities
US9231623B1 (en) * 2013-09-11 2016-01-05 SK Hynix Inc. Chase decoding for turbo-product codes (TPC) using error intersections
US20170004036A1 (en) * 2015-06-30 2017-01-05 SK Hynix Inc. Flash memory system and operating method thereof
US20170179980A1 (en) * 2015-12-18 2017-06-22 SK Hynix Inc. Techniques for low complexity soft decoder for turbo product codes
US20170194989A1 (en) * 2015-12-30 2017-07-06 SK Hynix Inc. Techniques for miscorrection detection for constituent codewords in product codes
US20170279468A1 (en) * 2016-03-23 2017-09-28 SK Hynix Inc. Soft decoder for generalized product codes
US20180167088A1 (en) * 2016-12-09 2018-06-14 Futurewei Technologies, Inc. Error-Correcting Code Method and System with Hybrid Block Product Codes

Also Published As

Publication number Publication date
WO2020188445A1 (en) 2020-09-24
CN113785274B (zh) 2024-03-29
US11734107B2 (en) 2023-08-22
US20200293399A1 (en) 2020-09-17

Similar Documents

Publication Publication Date Title
CN106856103B (zh) 用于与非闪存的涡轮乘积码
CN113748414B (zh) 错误校正码结构
US20190121690A1 (en) Pool-level solid state drive error correction
US9021339B2 (en) Data reliability schemes for data storage systems
CN107967186B (zh) 用于控制存储器装置的方法和控制器及存储器系统
US9007854B1 (en) Method and system for optimized soft decoding in a data storage device
US10447301B2 (en) Optimal LDPC bit flip decision
US10333558B2 (en) Decoding device and decoding method
US11082069B1 (en) Decoding scheme for error correction code structure in data storage devices
US20230085730A1 (en) Hard decoding methods in data storage devices
CN113785274B (zh) 用于错误校正码结构的解码方案
JP6957392B2 (ja) メモリシステム
JP2019057752A (ja) メモリシステム
US20180351577A1 (en) Iteration-adaptive decoding for non-binary ldpc codes
JP2021047712A (ja) メモリシステム
JP7066581B2 (ja) メモリシステム
US9396063B2 (en) Storage device and operating method thereof
JP2020046823A (ja) メモリシステム
US11258464B1 (en) Codeword concatenation for correcting errors in data storage devices
US9170881B2 (en) Solid state device coding architecture for chipkill and endurance improvement
US11689219B1 (en) Method and system for error correction in memory devices using irregular error correction code components
US11843393B2 (en) Method and apparatus for decoding with trapped-block management
TW201720064A (zh) 用於渦輪乘積碼的裝置和方法
CN114816831A (zh) 用于数据存储装置的软错误检测及纠正
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드

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