CN116743188A - 存储系统和控制存储系统的方法 - Google Patents

存储系统和控制存储系统的方法 Download PDF

Info

Publication number
CN116743188A
CN116743188A CN202310201014.9A CN202310201014A CN116743188A CN 116743188 A CN116743188 A CN 116743188A CN 202310201014 A CN202310201014 A CN 202310201014A CN 116743188 A CN116743188 A CN 116743188A
Authority
CN
China
Prior art keywords
bch
syndromes
syndrome
decoding
codeword
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.)
Pending
Application number
CN202310201014.9A
Other languages
English (en)
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.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
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 Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN116743188A publication Critical patent/CN116743188A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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/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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • 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/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
    • 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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
    • 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/2945Coding, 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 at least three error correction 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/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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/356Unequal error protection [UEP]
    • 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
    • G11B2020/1836Error detection or correction; Testing, e.g. of drop-outs by adding special lists or symbols to the coded information using a Reed Solomon [RS] 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
    • 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

Abstract

公开了存储系统和控制存储系统的方法。用于对通用级联码(GCC)码字进行解码的装置包括:缓冲器;以及至少一个处理器,被配置为:获得GCC码字;基于多个帧计算多个内部校验子;基于所述多个帧来计算多个增量校验子组;基于所述多个增量校验子组确定多个外部校验子;将所述多个内部校验子和所述多个外部校验子存储在缓冲器中;基于存储在缓冲器中的所述多个内部校验子对所述多个帧执行内部解码;基于内部解码的结果更新存储在缓冲器中的至少一个外部校验子;基于更新的至少一个外部校验子对所述多个帧执行外部解码;以及基于内部解码的结果和外部解码的结果,获得与GCC码字对应的解码信息位。

Description

存储系统和控制存储系统的方法
本申请要求于2022年3月9日提交的第17/690,124号美国专利申请的权益,所述美国专利申请的公开通过引用全部包含于此。
技术领域
与实施例一致的设备和方法涉及用于执行纠错编码的处理,更具体地,涉及用于对通用级联码进行解码的处理。
背景技术
数据存储装置可使用纠错码(ECC)来纠正可能发生在存储器中的数据损坏。一些类型的ECC编码(例如,使用通用级联码(GCC)编码方案的ECC编码)可能涉及会降低解码阶段中的吞吐量的资源密集型运算(诸如,校验子(syndrome,又称为伴随式)计算)。
因此,为了提高吞吐量,需要减少解码阶段中的校验子计算负担的GCC解码处理。
发明内容
根据实施例,一种存储系统包括:存储装置,被配置为存储多个通用级联码(GCC)码字;缓冲器;以及至少一个处理器,被配置为实现输入处理模块、解码器模块和输出处理模块,其中,输入处理模块被配置为:从存储装置获得GCC码字,其中,所述多个GCC码字中的GCC码字包括根据超博斯-乔赫里-霍克文黑姆(SBCH)编码方案布置的多个帧;基于所述多个帧来计算多个博斯-乔赫里-霍克文黑姆(BCH)校验子;基于所述多个帧来计算多个增量校验子组;基于所述多个增量校验子组来确定多个里德-所罗门(RS)校验子;以及将所述多个BCH校验子和所述多个RS校验子存储在缓冲器中,其中,解码器模块被配置为:从缓冲器获得所述多个BCH校验子和所述多个RS校验子;基于所述多个BCH校验子对所述多个帧执行BCH解码;以及基于所述多个RS校验子和BCH解码的结果对所述多个帧执行RS解码,其中,输出处理模块被配置为:基于RS解码的结果和BCH解码的结果来获得与GCC码字对应的解码信息位。
根据实施例,一种用于对通用级联码(GCC)码字进行解码的装置包括:缓冲器;以及至少一个处理器,被配置为:获得GCC码字,其中,GCC码字包括根据内部编码方案编码并被布置为多个行的多个帧,并且与所述多个行对应的多个列中的每个列根据外部编码方案被编码;基于所述多个帧计算多个内部校验子,其中,所述多个内部校验子对应于内部编码方案;基于所述多个帧来计算多个增量校验子组;基于所述多个增量校验子组确定多个外部校验子,其中,所述多个外部校验子对应于外部编码方案;将所述多个内部校验子和所述多个外部校验子存储在缓冲器中;基于存储在缓冲器中的所述多个内部校验子,根据内部编码方案对所述多个帧执行内部解码;基于内部解码的结果更新存储在缓冲器中的所述多个外部校验子中的至少一个外部校验子;以及基于更新的至少一个外部校验子,根据外部编码方案对所述多个帧执行外部解码;以及基于内部解码的结果和外部解码的结果,获得与GCC码字对应的解码信息位。
根据实施例,一种控制存储系统的方法通过至少一个处理器执行,并且所述方法包括:通过由所述至少一个处理器实现的输入处理模块,从存储装置获得通用级联码(GCC)码字,其中,GCC码字包括根据超博斯-乔赫里-霍克文黑姆(SBCH)编码方案布置的多个帧;通过输入处理模块,基于所述多个帧来计算多个博斯-乔赫里-霍克文黑姆(BCH)校验子;通过输入处理模块,基于所述多个帧来计算多个增量校验子组;通过输入处理模块,基于所述多个增量校验子组来确定多个里德-所罗门(RS)校验子;以及通过输入处理模块,将所述多个BCH校验子和所述多个RS校验子存储在缓冲器中;通过由所述至少一个处理器实现的解码器模块,从缓冲器获得所述多个BCH校验子和所述多个RS校验子;通过解码器模块,基于所述多个BCH校验子对所述多个帧执行BCH解码;通过解码器模块,基于所述多个RS校验子和BCH解码的结果对所述多个帧执行RS解码;以及通过由所述至少一个处理器实现的输出处理模块,基于RS解码的结果和BCH解码的结果,获得与GCC码字对应的解码信息位。
附图说明
图1是根据实施例的存储器系统的框图。
图2是根据实施例的示例GCC码字的示图。
图3示出根据实施例的现有技术BCH解码流程的BCH解码流水线的示例。
图4示出根据实施例的BCH解码流程的BCH解码流水线的示例。
图5A是根据实施例的解码器的框图。
图5B是根据实施例的输入模块的示例的框图。
图5C是根据实施例的解码器模块的示例的框图。
图5D是根据实施例的BCH模块的框图。
图5E是根据实施例的RS模块的框图。
图6A至图6C是根据实施例的控制存储系统的处理的流程图。
图7是根据实施例的包括存储器系统的计算机系统的框图。
图8是示出根据实施例的存储卡的框图。
图9是根据实施例的包括存储器系统的网络系统的框图。
具体实施方式
图1是根据本公开的实施例的存储器系统1000的框图。参照图1,存储器系统1000可包括存储器控制器100和存储器装置110,存储器装置110可以是非易失性存储器装置。
存储器装置110可以是但不限于闪存装置、NAND闪存装置、相变RAM(PRAM)、铁电RAM(FRAM)、磁性RAM(MRAM)等。根据实施例,存储器装置110可包括多个NAND闪存装置。存储器装置110可具有平面结构或者三维(3D)存储器单元结构,3D存储器单元结构具有堆叠的存储器单元。
存储器装置110可包括存储器单元阵列115、X解码器120、电压生成器114、寄存器113、输入/输出(I/O)缓冲器117、页缓冲器116和控制逻辑112,其中的每个可被实现为一个或多个电路。存储器装置110还可包括I/O垫111。
存储器单元阵列115可包括多条字线和多条位线。存储器单元阵列115的每个存储器单元可被实现为非易失性存储器单元。例如,存储器单元阵列115的每个存储器单元可具有例如浮置栅极或电荷存储层(诸如,电荷捕获层)。
存储器单元阵列115可包括多个块和多个页。每个块可包括多个页。例如,第一块118可包括第一多个页1至N,而第二块119可包括第二多个页1至N,其中,N是大于1的整数。页可以是编程操作和读取操作的单位,块可以是擦除操作的单位。
控制逻辑112可控制存储器装置110的总体操作。当从存储器控制器100接收到命令CMD时,控制逻辑112可对命令CMD进行解释,并且根据解释的命令CMD控制存储器装置110执行操作(例如,编程操作、读取操作、读取重试操作或擦除操作)。
X解码器120可由控制逻辑112控制,并且根据行地址驱动存储器单元阵列115中的多条字线中的至少一条字线。
电压生成器114可由控制逻辑112控制,以生成编程操作、读取操作或擦除操作所需的一个或多个电压,并将生成的电压提供给由X解码器120选择的一个或多个行。
页缓冲器116可由控制逻辑112控制,并且根据操作模式(例如,读取操作或编程操作)作为感测放大器或写入驱动器进行操作。
I/O垫111和I/O缓冲器117可用作外部装置(例如,存储器控制器100或主机)与存储器装置110之间交换的数据DATA的I/O路径。
存储器控制器100可包括处理器101、只读存储器(ROM)103、随机存取存储器(RAM)102、编码器104、解码器105、存储器接口106和总线107。存储器控制器100的元件101至106可通过总线107彼此电连接。
处理器101可控制包括存储器控制器100的存储器系统1000的总体操作。处理器101可包括通过生成控制信号来控制其它元件的电路。当电力被供应给存储器系统1000时,处理器101可在RAM 102上驱动用于操作存储器系统1000的固件(例如,存储在ROM 103中),从而控制存储器系统1000的总体操作。根据实施例,处理器101还可发出用于控制存储器控制器100的其它元件(包括例如ROM 103、RAM 102、编码器104、解码器105、存储器接口106和总线107中的一些或全部)的操作的指令。根据实施例,在此被描述为由存储器控制器100执行的任何操作可由处理器101执行,或者在处理器101的控制下执行。根据实施例,在此被描述为由存储器控制器100执行的任何操作可由处理器101执行,或者在处理器101的控制下执行,处理器101执行与该操作对应并包括在程序代码中(例如,存储在ROM 103中)的指令。
存储器系统1000的驱动固件码可被存储在ROM 103中,然而实施例不限于此。固件码还可存储在存储器装置110的一部分中。因此,处理器101的控制或干预不仅可包括处理器101的直接控制,还可包括作为由处理器101驱动的软件的固件的干预。
可包括用作缓冲器的存储器的RAM 102可存储:从主机或处理器101输入的初始命令、数据和各种变量,或者从存储器装置110输出的数据。RAM102可存储输入到存储器装置110数据、各种参数和变量以及从存储器装置110输出的数据、各种参数和变量。
存储器接口106可用作存储器控制器100与存储器装置110之间的接口。存储器接口106连接到存储器装置110的I/O垫111,并且可与I/O垫111交换数据。此外,存储器接口106可创建适合于存储器装置110的命令,并且将创建的命令提供给存储器装置110的I/O垫111。存储器接口106提供将被存储器装置110执行的命令和存储器装置110的地址ADD。
根据实施例,解码器105可以是被配置为按上述方式对数据进行解码的纠错码(ECC)解码器,编码器104可以是被配置为按上述方式对数据进行编码的ECC编码器。根据实施例,解码器105和编码器104可按上述方式执行错误位纠正。编码器104可通过在数据被提供给存储器装置110之前对数据执行纠错编码来生成添加有一个或多个奇偶校验位和/或冗余位的数据。一个或多个奇偶校验位和/或冗余位可被存储在存储器装置110中。
解码器105可对输出数据执行纠错解码,基于纠错解码的结果确定纠错解码是否成功,并基于确定的结果输出指令信号。读取的数据可被发送到解码器105,并且解码器105可使用一个或多个奇偶校验位和/或冗余位来纠正数据的错误位。当错误位的数量超过可被纠正的错误位的限制时,解码器105可根据更高级别的数据组织进行解码,更高级别的数据组织的示例在下面被描述。
在实施例中,编码器104和解码器105可使用通用级联码(GCC,或称为广义级联码)来执行纠错,通用级联码的示例在下面被描述。
实施例可涉及一种将编码方案(例如,博斯-乔赫里-霍克文黑姆(BCH)编码方案)的纠正能力从t0个错误扩展到ti=t0+Δti个错误的编码方案,其中,“i”是阶段索引,t0是编码方案的数据帧的可靠性位的初始纠错能力,并且Δti是纠正能力相对于t0的变化。
例如,在BCH编码方案中,在解码器(例如,解码器105)接收的字(即,一系列数据位)可被表示为y=c+e,其中,c是码字,e是错误序列,cεC,n=2m-1,C是具有t0个错误的纠正能力的基本BCH码,n是码字c的码长,并且m是正整数。
解码器可基于如下所述的错误序列的校验子来对码字进行解码。因为 可根据等式(1)被计算为/>
为了将纠错能力扩展到ti=t0+Δti,解码器应该具有通过下面的等式(2)表示的扩展错误校验子其中,/>是校验矩阵,/>是扩展校验矩阵:
解码器可根据下面的等式(3)计算接收的字y的校验子
因此,如果解码器具有边信息(side information)则解码器可评估由下面的等式(4)定义的扩展错误校验子:
该边信息可被称为码字c的增量校验子并且可根据下面的等式(5)表示:
其中,0≤j<2m-2。
实施例可应用于被称为超博斯-乔赫里-霍克文黑姆(SBCH)的BCH的变型。SBCH是包括若干短二进制博斯-乔赫里-霍克文黑姆(BCH)码和非二进制里德-所罗门(RS)码的多级代数码。与需要在变量和校验节点之间迭代地交换大量软信息的低密度奇偶校验(LDPC)码的消息传递解码算法相反,SBCH码的解码算法是使用针对短分量BCH码和RS码的标准代数解码模式而完全代数的。因此,SBCH解码器的功耗可显著小于相应的LDPC解码器的功耗。
根据实施例,SBCH码字可被表示为矩阵,其中每行是长度为n的BCH码字,并且至少一列是具有等于行数的长度的RS码字。例如,对于由BCH码字c表示的给定行,增量校验子可包括RS码字的至少一个RS校验子。
图2是根据实施例的示例GCC码字200的示图。可对应于例如解码器105的GCC解码器可接收利用帧解码器进行解码的帧。在线性GCC编码方案中,例如在上面讨论的SBCH编码方案中,帧码是线性码。例如,在上面讨论的SBCH编码方案中,帧码可以是上面讨论的可为线性的BCH码。
在实施例中,GCC码的帧可包括可变数量的奇偶校验位。例如,如图2所示,帧202可包括基本奇偶校验位和GCC奇偶校验位。作为示例,帧可对应于码字c,基本奇偶校验位可以是用于BCH编码方案的奇偶校验位并且可用于计算基本校验子GCC奇偶校验位可以是用于RS编码方案的奇偶校验位并且可用于计算增量校验子/>GCC解码器的解码能力可与可用的奇偶校验位的数量相关。在实施例中,BCH编码可用作内部编码方案,并且RS编码可用作外部编码方案。
在对具有基本奇偶校验位的帧(例如,阶段0,具有例如t0位的纠正能力)进行解码之后,一些帧可能成功,而一些帧可能失败。在实施例中,可通过对RS码字204进行解码来获得附加奇偶校验位,并且在下一阶段(例如,阶段1),可利用附加信息来对帧进行解码,这可使得更多帧被纠正。因此,在下一阶段(例如,阶段2),可对另一RS码字204进行解码,以此类推,直到所有帧被纠正为止。
图3示出现有技术的BCH解码流程的BCH解码流水线300的示例。如图3中所示,读取第一帧F1,并计算基本校验子。在实施例中,基本校验子可被称为例如BCH校验子、t0校验子、行校验子或通道行(channel row)校验子。然后,在时间302,使用伯利坎普-梅西(Berlekamp-Massey,BM)算法来寻找与第一帧F1对应的错误定位多项式(error locatorpolynomial,ELP),并且在时间304,使用钱氏搜索(Chien search,CS)算法来寻找第一帧F1中的翻转位,并纠正第一帧F1。然后,对纠正的第一帧F1计算增量校验子,并将增量校验子存储在例如表中。随后对第二帧F2和第三帧F3执行相同的过程。
用于RS码字的相应的RS解码流程包括从表读取增量校验子的列以计算RS校验子(RSS),以及基于失败的BCH帧来计算初始错误定位多项式(ELP)。然后,计算错误求值多项式(error evaluator polynomial,EEP)并执行错误检测。如果检测到错误,则执行BM、CS、ELP和EEP更新,并且使用Forney算法来纠正与检测到的错误对应的增量校验子。在解码处理期间,可维护具有所有帧的所有增量校验子的表,或者可例如在每个阶段针对所有帧重新计算具有所有帧的所有增量校验子的表。
如图3中可见,直到时间302之后才计算第二帧F2的基本校验子,并且直到第二帧F2的基本校验子被计算之后的时间306之后才对第二帧F2执行BM算法。结果,在BCH解码流水线300中可能发生瓶颈。此外,(例如,在与解码器相关联的缓冲器中)用于保存校验子的表的存储器空间的大小会大。
图4示出根据实施例的BCH解码流程的BCH解码流水线400的示例。在实施例中,在BCH解码流水线400开始之前执行输入阶段。在输入阶段期间,计算每个帧的所有基本校验子和所有增量校验子。然后,对于每个增量校验子,确定并累加增量校验子对每个RS码字的RSS的贡献。然后将基本校验子和RSS存储在例如缓冲器中。结果,在BCH解码流水线400开始时的时间402,基本校验子已被计算。例如,在输入阶段计算基本校验子和初始增量校验子,并且可在RS解码被执行之后从RS解码接收更高的校验子。
因此,在时间402,可使用BM算法来寻找与第一帧F1对应的ELP,并且在时间404,可使用CS算法来寻找ELP的根,以便定位第一帧F1中的翻转位。此外,在时间404,可将BM算法应用于第二帧F2,而不需要附加时间来计算第二帧F2的基本校验子。随后,在时间406,可使用CS算法来寻找第二帧F2的ELP的根,以便定位第二帧F2中的翻转位,以此类推。如果检测到翻转位,那么仅基于翻转位计算更高的校验子(例如,增量校验子),随后更新相应的RSS。因此,在实施例中,增量校验子计算不紧接着CS算法,并且CS算法计算可被优化。
在用于RS码字的相应的RS解码流程中,RSS在RS解码流程开始时准备就绪,并且ELP通过解码处理被维持。因此,RS解码流程可从EEP计算和错误检测开始,然后如果检测到错误,则执行BM、CS、ELP和EEP更新,并且使用Forney算法来纠正与检测到的错误对应的增量校验子。纠正的增量校验子的纠正值可用作下一级(例如,下一解码阶段)的增量校验子。
结果,根据对应于图4的实施例的GCC解码流程可不包括上面关于图3讨论的校验子计算阶段。这可提高解码流程的吞吐量。此外,在具有少量错误的帧中,也可优化CS阶段。此外,因为可使用较小的校验子缓冲器(例如,仅存储具有错误的帧的增量校验子),所以可降低校验子缓冲器的门计数(gate-count)。结果,可减小用于解码的存储器空间的大小。
图5A至图5E是根据实施例的解码器5000和包括在解码器5000中的元件的框图。图5A是根据实施例的解码器5000的框图。在实施例中,解码器5000可包括输入处理模块5100、解码器模块5200(其可以是例如解码器核)、输出处理模块5300和输入缓冲器5400。在实施例中,解码器5000可对应于上面讨论的解码器中的任何解码器(例如,解码器105)。在实施例中,解码器5000可执行三个流水线阶段(例如,以便支持吞吐量要求)。
第一阶段可以是例如输入阶段,并且可对应于输入处理模块5100。在输入阶段期间,接收的码字(其可包括例如码字和与码字的接收对应的噪声)可被存储在缓冲器中(例如,包括在输入缓冲器5400中的缓冲器)。此外,可对输入执行初始计算(例如,上面讨论的校验子计算),并且可将计算的结果(例如,校验子)提供给解码器模块5200。
第二阶段可以是例如解码阶段,并且可对应于解码器模块5200。在解码阶段期间,可将在输入阶段中计算的校验子提供给解码器模块5200,并且解码器模块5200可确定错误(诸如,输入码字中的翻转位),并且可将与这些错误对应的信息(例如,翻转位的索引)提供给输出处理模块5300。
第三阶段可以是例如后解码阶段,并且可对应于输出处理模块5300。在后解码阶段期间,输出处理模块可通过基于解码阶段的结果翻转输入码字中的位来生成解码的码字(其可以是例如与输入码字对应的纠正的码字),并且可输出纠正的码字。
图5B是根据实施例的输入处理模块5100的示例的框图。在实施例中,输入处理模块5100可包括输入电路5120、通道校验子计算器5101、增量校验子计算器5102至5113、通道校验子缓冲器5150、RSS更新模块5130和RSS缓冲器5160。尽管通道校验子缓冲器5150和RSS缓冲器5160在图5B中被示为单独的元件,但是实施例不限于此。例如,在实施例中,通道校验子缓冲器5150和RSS缓冲器5160可被组合为一个元件,或者可包括在其它元件(例如,输入缓冲器5400)中。图5B示出BCH编码的t0为1且存在12个附加校验子的示例,然而实施例不限于此。
在输入阶段期间,可由输入电路5120接收输入码字。在实施例中,输入电路5120可包括输入仿真逻辑,并且可与用于提供输入码字的其它元件接口连接。然后可由通道校验子计算器5101处理输入码字以确定通道校验子S1,并由增量校验子计算器5102至5113处理输入码字以确定附加校验子S2至S13。在实施例中,通道校验子S1可被称为例如行校验子或通道行校验子,并且可对应于当前行或帧的基本校验子。在实施例中,附加校验子S2至S13可对应于当前行或帧的增量校验子。在实施例中,可根据输入速率使用霍纳规则HW(每周期16位)来完成校验子计算。
在实施例中,通道校验子S1可被存储在通道校验子缓冲器5150中,通道校验子缓冲器5150可被称为例如行校验子缓冲器或通道行校验子缓冲器。在实施例中,通道校验子缓冲器5150可被分配在输入缓冲器5400中。
在实施例中,附加校验子S2至S13可被提供给RSS更新模块5130以更新可被存储在例如RSS缓冲器5160中的RS校验子。图5B示出包括与附加校验子S2至S13对应的12列的示例RSS 5140,然而实施例不限于此。在实施例中,附加校验子S2至S13可仅用于更新和维护RSS,并且可不被用于稍后的解码阶段。因此,附加校验子S2至S13可不存储在缓冲器(诸如,通道校验子缓冲器5150或RSS缓冲器5160)中。
在实施例中,帧的基本校验子(例如,通道校验子S1)和RSS(例如,RSS 5140)可被传递给解码器模块5200。在实施例中,例如,与上面讨论的任何奇偶校验位(诸如,基本奇偶校验位和GCC奇偶校验位)对应的奇偶校验位也可被提供给解码器模块5200。在实施例中,输入码字、校验子S1至S13、RSS 5140、奇偶校验位或任何其它信息中的任一者也可被提供给输入缓冲器5400。
在输入阶段期间,计算包括例如通道校验子S1和附加校验子S2至S13的所有校验子可能有若干好处。例如,可根据输入速率来设置计算速率,这可允许使用更小或更低复杂度的硬件。此外,这可去除或减少在解码器模块5200中计算帧映射的需要。此外,在输入阶段中的计算所有校验子可通过从解码阶段节省该延迟来提高吞吐量效率。此外,在实施例中,用于输入阶段中的这些计算的硬件中的一些或全部可在其它阶段中或在其它时间被重新用于其它计算(例如,循环冗余校验计算)。
图5C是根据实施例的解码器模块5200的示例的框图。在实施例中,解码器模块5200可包括SBCH控制模块5210、BCH模块5220和RS模块5230。
在实施例中,SBCH控制模块5210可例如通过管理各种信号以便激活和管理BCH模块5220和RS模块5230来负责进行SBCH流程并维护公共变量。例如,SBCH控制模块5210可提供BCH开始信号(其可在适当时激活BCH模块5220),并且可向BCH模块5220提供诸如失败帧信号、误纠正(miscorrected,MC)帧信号、通道行校验子S1和更新的增量校验子DS的信息,以管理BCH模块5220的操作。此外,SBCH控制模块5210可从BCH模块5220接收指示BCH操作完成的BCH完成信号,并且可接收指示BCH操作的结果的信息(诸如,翻转位索引或失败帧信号)。SBCH控制模块5210可包括可跟踪失败帧的失败帧模块5212以及可跟踪MC帧的MC帧模块5213。此外,SBCH控制模块5210可包括可存储例如翻转位列表5214的列表控制模块5215,列表控制模块5215可用于跟踪翻转位作为SBCH解码的结果。
作为另一示例,SBCH控制模块可提供RS开始信号(其可在适当时激活RS模块5230),并且可向RS模块5230提供诸如RSS的信息以管理RS模块5230的操作。此外,SBCH控制模块5210可从RS模块5230接收指示RS操作完成的RS完成信号,并且可接收指示RS操作的结果的信息(诸如,MC帧信号或用于纠正增量校验子的值的一个或多个纠正值)。SBCH控制模块5210可包括可用于跟踪纠正的增量校验子的增量校验子数据库5211。
BCH模块5220可负责扫描失败帧,并且激活具有正确输入的BCH解码器。RS模块5230(其可以是例如RS解码处理的顶级块)可负责维护RSS和ELP,并且基于来自SBCH控制模块5210的请求适当地激活RS解码器。
在解码器阶段期间,通道行校验子S1和RSS(其可包括例如CRC信息)可由解码器模块5200接收。在实施例中,解码器模块5200还可接收例如奇偶校验位(诸如,上面讨论的基本奇偶校验位和GCC奇偶校验位)。
如图5A至图5E中所示,t0=1,但是实施例不限于此。在一些实施例中,这可表示在阶段0解码中,可利用解码器逻辑(例如,下面更详细讨论的Synd2idx逻辑5224)对所有帧进行解码。在实施例中,解码器逻辑可以以每帧1个周期对帧进行处理。如果从解码器逻辑返回的索引在预定范围内,则这可指示帧的解码已经成功。然而,实施例不限于此,并且在实施例中,阶段0解码可由例如BCH解码器模块5221执行。
如果在解码处理期间位被翻转,则可将指示翻转位的索引的翻转位索引存储在例如翻转位列表5214中,并且可更新相应的RSS列(例如,包括CRC信息)。在实施例中,阶段0翻转可被写入静态索引向量,该静态索引向量可被存储在例如可由列表控制模块5215管理的翻转位列表5214中。如果不是所有帧都通过,则RS模块5230可对第一阶段RSS校验子RSS1执行RS解码,并且可存储纠正的增量校验子。例如,可将指示纠正的增量校验子的纠正值提供给增量校验子数据库5211并例如通过按顺序写入增量校验子向量而被存储。
在实施例中,可检测MC帧。例如,通过RS解码发现的错误可表示纠正的BCH帧实际上是不正确的。当MC帧被检测到时,RS模块5230可例如通过向列表控制模块5215提供MC帧信号来使该帧的翻转无效,可计算无效对相应的增量校验子的影响并相应地更新增量校验子数据库5211,并且可消除MC帧对RSS的影响。在实施例中,该消除可包括例如XOR运算。
在阶段1解码,BCH解码器模块5221可用于多达f1帧。对于每个帧,可翻转多达t1个位。作为示例,在t0=1的实施例中,t1可等于2。在实施例中,可将第一翻转位写入静态索引向量,并且可将第二翻转位写入动态分配。然后,RSS可取决于在2个位上计算的增量校验子。
如果并非所有帧都通过阶段1解码,则RS模块5230可对第二阶段RSS校验子RSS2执行RS解码,并且可将纠正的增量校验子与阶段1纠正的增量校验子一起写入增量校验子向量。如果检测到MC帧,则我们使该帧的翻转无效,计算该无效对增量校验子的影响,并消除MC帧对RSS的影响。
可用BCH解码和RS解码迭代来重复该处理,直到所有帧都正确,并且所有RS校验子等于0。
图5D是根据实施例的BCH模块5220的框图。在实施例中,BCH模块5220可包括增量校验子更新模块(DS更新模块)5225、BCH解码器模块5221和Synd2idx逻辑5224。
在实施例中,BCH模块5220可管理与帧解码相关的任务。例如,BCH模块5220可管理将要解码的帧(其可仅是例如失败帧),可根据解码阶段和失败帧激活BCH解码器模块5221,可例如使用BCH解码器模块5221和Synd2idx逻辑5224中的一个来执行帧的BCH解码,并且基于确定的翻转位或接收到已经检测到MC帧的指示,例如使用增量校验子更新模块5225来执行增量校验子计算。在实施例中,BCH模块5220可使用Synd2idx逻辑5224在阶段0执行BCH解码,并且可在更高阶段使用BCH解码器模块5221,然而实施例不限于此。
当BCH模块5220例如使用来自SBCH控制模块5210的BCH开始信号接收“开始”脉冲时,从SBCH控制模块5210接收的失败帧信号(其可包括例如指示失败帧的失败帧向量)可被认为有效。基于失败帧信号,BCH模块5220可扫描失败帧向量以获取发送到例如BCH解码器模块5221的失败帧。t的值(即,纠错的数量)可由SBCH控制模块5210根据解码阶段和例如期望的操作模式来设置,并且可被提供给BCH模块5220。BCH解码器模块5221可执行BCH解码并且可输出t个索引以进行翻转(除非BCH解码器处理失败),并且可使用增量校验子更新模块5225计算增量校验子,并且例如使用增量校验子信号DS将增量校验子提供给RSS控制模块5232,以便更新适当的RSS。
在实施例中,Synd2idx逻辑5224可包括(例如在单个纠错(t=1)的情况下)可用于执行BCH解码的表,以增大吞吐量。
在实施例中,BCH解码器模块5221可包括两个算法块(例如,可执行如上所述的BM算法的BM模块5222和可执行如上所述的CS算法的CS模块5223)。在实施例中,可在同一周期从CS模块5223输出若干索引,但是若干索引可由增量校验子更新模块逐一处理。由BCH解码器模块5221使用的BCH校验子(其可以是例如通道校验子S1)可从SBCH控制模块5210接收,并且可表示噪声校验子。
在两种情况下,可针对翻转位计算增量校验子。例如,当确定BCH解码正确,并且例如通过BCH解码器模块5221基于CS模块5223的输出而检测到翻转位时,可计算增量校验子。作为另一示例,当MC帧被恢复,并且可通过RS解码检测到的MC帧的翻转位从翻转位列表5214被无效且它们对RSS计算的贡献被消除时,可计算增量校验子。
在实施例中,可使用表(其可以是例如查找表(LUT),并且可被称为例如表idx2synd或2个“表”结果的乘法)来计算每个翻转位的增量校验子。作为示例,可使用表来计算第一校验子S1。校验子S3可从S3=S1×S2=S1×S1^2得到。为了减小面积,下一个校验子可以是S5=S1×S1^4。校验子S7可能不能从两个“表结果”得到,因此可针对S7定义表。可基于所需的时序(例如,1个周期)来选择表或递归计算。在实施例中,可允许在表之后的单个乘法器,并且平方运算可以是可忽略的。
在实施例中,BCH解码器模块5221可向RS模块5230提供帧信号。在实施例中,这些帧信号可包括指示关于由BCH解码器模块5221解码的帧的信息的信号(包括指示帧索引的信号、指示帧完成的信号或指示帧已经通过或被成功解码的信号)。
图5E是根据实施例的RS模块5230的框图。在实施例中,RS模块5230可包括ELP控制模块5231、RSS控制模块5232和RS解码器模块5233。
在实施例中,ELP控制模块5231可负责维护和更新ELPi,ELPi可以是初始ELP。可通过根单项式的相乘来计算初始ELP。对于可例如由BCH模块5220扫描和解码的每个失败帧j,ELP可乘以单项式(1+αj x)。在实施例中,该操作的硬件实现可包括用于αj的复用器、f1个伽罗瓦域乘法器和m×f1个异或门。在实施例中,为了面积优化,由于该硬件在不同时间操作,因此该硬件可在RS解码中与EEP模块5234共享。
在实施例中,RSS控制模块5232可负责维护和更新RSS(例如,针对当前解码阶段的RSS)。
在解码处理开始时,RSS控制模块5232可加载例如由输入缓冲器5400、RSS缓冲器5160或SBCH控制模块5210提供的通道RSS值。对于每个成功解码的帧,例如使用增量校验子信号DS而从BCH模块5220提供的增量校验子值可用于更新RSS。对于误纠正帧,SBCH控制模块5210可从翻转位列表删除帧的翻转索引,并且BCH模块5220可例如使用增量校验子信号DS重新发送所计算的增量校验子。RSS更新类似于成功的情况。在RS解码成功的情况下,相关列将变为零。
在实施例中,RS解码器模块5233可在RSS和ELP已被计算时开始。EEP模块5234可使用RSS和ELP来确定EEP并检测错误。如上所述,如果EEP模块检测到错误,则分别由BM更新模块5235、CS更新模块5236和EEP/ELP更新模块5237执行BM、CS、ELP和EEP更新。然后,Forney模块5238使用Forney算法来纠正与检测到的错误对应的增量校验子,并识别MC帧。
图6A是根据实施例的控制存储系统的处理6100的流程图。在一些实施方式中,图6A的一个或多个处理块可通过存储器系统1000或在此描述的任何其它元件(例如,解码器105、解码器5000或者包括在解码器105或解码器5000中的任何元件)执行。
如图6A中所示,在操作S6110,处理6100可包括通过由至少一个处理器实现的输入处理模块从存储装置获得GCC码字,其中,GCC码字可包括根据SBCH编码方案布置的多个帧。在实施例中,输入处理模块可对应于输入处理模块5100,并且存储装置可对应于存储器系统1000或存储器装置110。
如图6A中进一步所示,在操作S6120,处理6100可包括通过输入处理模块基于多个帧计算多个BCH校验子。
如图6A中进一步所示,在操作S6130,处理6100可包括通过输入处理模块基于多个帧来计算多个增量校验子组(a plurality of sets of delta syndromes,或称为,多组增量校验子)。
如图6A中进一步所示,在操作S6140,处理6100可包括通过输入处理模块基于多个增量校验子组确定多个里德-所罗门(RS)校验子。
如图6A中进一步所示,在操作S6150,处理6100可包括通过输入处理模块将多个BCH校验子和多个RS校验子存储在缓冲器中。在实施例中,缓冲器可对应于输入缓冲器5400、通道校验子缓冲器5150或RSS缓冲器5160或其任何组合。
如图6A中进一步所示,在操作S6160,处理6100可包括通过由至少一个处理器实现的解码器模块从缓冲器获得多个BCH校验子和多个RS校验子。在实施例中,解码器模块可对应于解码器模块5200。
如图6A中进一步所示,在操作S6170,处理6100可包括通过解码器模块基于多个BCH校验子对多个帧执行BCH解码。
如图6A中进一步所示,在操作S6180,处理6100可包括通过解码器模块基于多个RS校验子和BCH解码的结果对多个帧执行RS解码。
如图6A中进一步所示,在操作S6190,处理6100可包括:通过由至少一个处理器实现的输出处理模块基于RS解码的结果和BCH解码的结果来获得与GCC码字对应的解码信息位。在实施例中,输出处理器模块可对应于输出处理模块5300。
在实施例中,根据SBCH编码,GCC码字可包括多个行和多个列,多个行中的每个行可包括BCH码字,并且多个列中的至少一列可包括RS码字。
在实施例中,可基于多个帧之中的帧来计算多个BCH校验子之中的BCH校验子,并且可基于所述帧来计算多个增量校验子组之中的增量校验子组。
图6B是根据实施例的控制存储系统的处理6200的流程图。在一些实施方式中,图6B的一个或多个处理块可通过存储器系统1000或在此描述的任何其它元件(例如,解码器105、解码器5000或者包括在解码器105或解码器5000中的任何元件)执行。
在实施例中,处理6200的一个或多个处理块可在处理6100的处理块之后执行。
如图6B中所示,在操作6210,处理6200可包括基于BCH校验子指示与帧对应的BCH码字中的错误,通过BCH解码器基于BCH校验子确定BCH码字的BCH错误定位多项式(ELP)。在实施例中,BCH解码器可对应于BCH模块5220。
如图6B中进一步所示,在操作6220,处理6200可包括通过BCH解码器计算BCH ELP的解。
如图6B中进一步所示,在操作6230,处理6200可包括基于BCH ELP的解指示帧中的翻转位的位置,通过BCH解码器基于翻转位的位置重新计算包括在增量校验子组中的增量校验子。
如图6B中进一步所示,在操作6240,处理6200可包括基于BCH ELP的解指示帧中的翻转位的位置,通过BCH解码器模块将翻转位的索引添加到存储在缓冲器中的翻转位列表。在实施例中,翻转位列表可对应于翻转位列表5214。
在实施例中,可使用伯利坎普-梅西算法确定BCH ELP,并且可使用钱氏搜索算法计算BCH ELP的解。
图6C是根据实施例的控制存储系统的处理6300的流程图。在一些实施方式中,图6C的一个或多个处理块可通过存储器系统1000或在此描述的任何其它元件(例如,解码器105、解码器5000或者包括在解码器105或解码器5000中的任何元件)执行。
在实施例中,处理6300的一个或多个处理块可在处理6200的处理块之后执行。
如图6C中所示,在操作6310,处理6300可包括基于从BCH解码器模块接收到重新计算的增量校验子,通过RS解码器模块基于重新计算的增量校验子来更新多个RS校验子中的RS校验子。
如图6C中进一步所示,在操作6320,处理6300可包括基于更新的RS校验子指示多个RS码字中的RS码字中的错误,通过RS解码器模块基于更新的RS校验子确定RS码字的RS错误求值多项式(EEP)。在实施例中,RS解码器模块可对应于RS模块5230。
如图6C中进一步所示,在操作6330,处理6300可包括通过RS解码器模块计算RSEEP的解。
如图6C中进一步所示,在操作6340,处理6300可包括基于RS EEP的解指示RS码字中的误纠正位的位置,通过RS解码器模块基于误纠正位的位置纠正重新计算的增量校验子,并且基于纠正的重新计算的增量校验子纠正多个RS校验子。
如图6C中进一步所示,在操作6350,处理6300可包括:基于RS EEP的解指示误纠正位的位置,通过RS解码器模块从翻转位列表删除误纠正位的索引。
在实施例中,可使用Forney算法来纠正重新计算的增量校验子。
在实施例中,可基于GCC码字和翻转位列表来获得解码信息位。例如,基于BCH解码的结果指示多个帧中的所有帧是正确的并且RS解码的结果指示多个RS码字中的所有RS码字是正确的,输出处理模块可基于GCC码字和翻转位列表来获得解码信息位。
尽管图6A至图6C示出处理6100至处理6300的示例块,但在一些实现方式中,处理6100至处理6300可包括与图6A至图6C中描绘的那些块相比附加的块、更少的块、不同的块、或不同地布置的块。附加地或可选地,处理6100至处理6300的框中的两个或更多个可以以任何顺序布置或组合,或被并行执行。
图7是根据实施例的包括存储器系统的计算机系统7000的框图。计算机系统7000(诸如,移动装置、台式计算机和服务器)可采用根据实施例的存储器系统7400。
计算机系统7000可包括与总线7500电连接的中央处理器(CPU)7100、RAM 7200、用户接口7300和存储器系统7400。上述主机可包括计算机系统7000中的中央处理器7100、RAM7200和用户接口7300。中央处理器7100可控制整个计算机系统7000,并且可执行与经由用户接口7300输入的用户命令对应的计算。RAM 7200可用作中央处理器7100的数据存储器,中央处理器7100可向存储器系统7400写入数据或从存储器系统7400读取数据。
如在上述示例实施例中一样,存储器系统7400可包括存储器控制器7410和存储器装置7420。存储器控制器7410可包括编码器和解码器,存储器装置7420可包括包含多个存储单元的单元阵列。
根据实施例,存储器控制器7410可由上面参照图1讨论的存储器控制器100来实现,并且存储器装置7420可由上面参照图1讨论的存储器装置110来实现。
图8是示出根据实施例的存储卡8000的框图。根据上面参照图1讨论的示例实施例的存储器系统1000可以是存储卡8000。例如,存储卡8000可包括嵌入式多媒体卡(eMMC)或安全数字(SD)卡。如图8中所示,存储卡8000可包括存储器控制器8100、非易失性存储器8200和端口区域8300。存储器控制器8100可由上面参照图1讨论的处理器101来实现,并且图8中示出的非易失性存储器8200可由上面参照图1讨论的存储器装置110来实现。
存储器控制器8100可包括编码器和解码器。编码器和解码器可执行根据实施例的编码方法和解码方法。在实施例中,解码器可对应于例如解码器105、解码器5000或者包括在解码器105或解码器5000中的任何元件。存储器控制器8100可遵循预设的协议经由端口区域8300与外部主机通信。协议可以是eMMC协议、SD协议、SATA协议、SAS协议或USB协议。非易失性存储器8200可包括即使被供应到非易失性存储器8200的电力被阻断的情况下也保持存储在非易失性存储器8200中的数据的存储器单元。例如,非易失性存储器8200可包括闪存、磁性随机存取存储器(MRAM)、电阻式RAM(RRAM)、铁电RAM(FRAM)或相变存储器(PCM)。
根据实施例,存储器控制器8100和非易失性存储器8200可分别由上面参照图1讨论的存储器控制器100和存储器装置110来实现。
图9是根据实施例的包括存储器系统的网络系统9000的框图。如图9中所示,网络系统9000可包括服务器系统9100以及通过网络9200连接的多个终端9300(例如,终端1)、9400(例如,终端2)和9500(例如,终端n)。服务器系统9100可包括服务器9110和SSD 9120,服务器9110用于处理从连接到网络9200的多个终端9300、9400和9500接收的请求,SSD9120用于存储与从终端9300、9400和9500接收的请求对应的数据。这里,SSD 9120可以是根据实施例的存储器系统。
根据实施例,SSD 9120可由上面参照图1讨论的存储器系统1000来实现。
如本领域中传统的那样,在附图中以功能块、单元和/或模块的形式描述和示出实施例。本领域技术人员将理解,这些块、单元和/或模块由可使用基于半导体的制造技术或其它制造技术形成的电子(或光学)电路(诸如,逻辑电路、分立组件、微处理器、硬连线电路、存储器元件、布线连接等)物理地实现。在块、单元和/或模块由微处理器或类似物实现的情况下,它们可使用软件(例如,微代码)来编程以执行在此讨论的各种功能,并且可以可选地由固件和/或软件驱动。可选地,每个块、单元和/或模块可由专用硬件实现,或者实现为用于执行一些功能的专用硬件和用于执行其它功能的处理器(例如,一个或多个编程的微处理器和相关联的电路)的组合。此外,在不脱离本范围的情况下,实施例的每个块、单元和/或模块可物理地分离成两个或更多个交互和离散的块、单元和/或模块。此外,在不脱离本范围的情况下,实施例的块、单元和/或模块可物理地组合成更复杂的块、单元和/或模块。
上述方法的各种操作可由能够执行操作的任何合适的装置(诸如,各种硬件和/或软件组件、电路和/或模块)来执行。
软件可包括用于实现逻辑功能的可执行指令的有序列表,并且可被实现在任何“处理器可读介质”中,以供指令执行系统、设备或装置(诸如,单核处理器或多核处理器或者包含处理器的系统)使用,或与指令执行系统、设备或装置(诸如,单核处理器或多核处理器或者包含处理器的系统)结合使用。
结合在此公开的实施例描述的方法或算法和功能的框或步骤可直接以硬件、以由处理器执行的软件模块、或以两者的组合实现。如果以软件实现,则功能可作为一个或多个指令或代码存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质传输。软件模块可存在于随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD ROM、或本领域中已知的任何其它形式的存储介质中。
前述内容是对实施例的说明,而不应被解释为对实施例进行限制。尽管已经描述了一些实施例,但是本领域技术人员将容易理解,在实质上不脱离本范围的情况下,可在实施例中进行许多修改。

Claims (20)

1.一种存储系统,包括:
存储装置,被配置为存储多个通用级联码码字;
缓冲器;以及
至少一个处理器,被配置为实现输入处理模块、解码器模块和输出处理模块,
其中,输入处理模块被配置为:
从存储装置获得通用级联码码字,其中,所述多个通用级联码码字中的通用级联码码字包括根据超博斯-乔赫里-霍克文黑姆SBCH编码方案布置的多个帧;
基于所述多个帧来计算多个博斯-乔赫里-霍克文黑姆BCH校验子;
基于所述多个帧来计算多个增量校验子组;
基于所述多个增量校验子组来确定多个里德-所罗门RS校验子;以及
将所述多个BCH校验子和所述多个RS校验子存储在缓冲器中,其中,解码器模块被配置为:
从缓冲器获得所述多个BCH校验子和所述多个RS校验子;
基于所述多个BCH校验子对所述多个帧执行BCH解码;以及
基于所述多个RS校验子和BCH解码的结果对所述多个帧执行RS解码,并且
其中,输出处理模块被配置为:基于RS解码的结果和BCH解码的结果来获得与通用级联码码字对应的解码信息位。
2.根据权利要求1所述的存储系统,其中,根据SBCH编码,通用级联码码字包括多个行和多个列,
其中,所述多个行中的每个行包括BCH码字,并且
其中,所述多个列中的至少一个列包括RS码字。
3.根据权利要求1所述的存储系统,其中,所述多个BCH校验子之中的BCH校验子基于所述多个帧之中的帧被计算,并且
其中,所述多个增量校验子组中的增量校验子组基于所述帧被计算。
4.根据权利要求3所述的存储系统,其中,解码器模块还包括BCH解码器模块,BCH解码器模块被配置为执行BCH解码,并且
其中,基于BCH校验子指示与所述帧对应的BCH码字中的错误,BCH解码器模块被配置为:
基于BCH校验子来确定BCH码字的BCH错误定位多项式ELP;
计算BCH ELP的解;以及
基于BCH ELP的解指示所述帧中的翻转位的位置,基于翻转位的位置重新计算包括在所述增量校验子组中的增量校验子。
5.根据权利要求4所述的存储系统,其中,BCH ELP使用伯利坎普-梅西算法被确定,并且
其中,使用钱氏搜索算法计算BCH ELP的解。
6.根据权利要求4所述的存储系统,其中,解码器模块还包括RS解码器模块,RS解码器模块被配置为执行RS解码,
其中,基于从BCH解码器模块接收到重新计算的增量校验子,RS解码器模块被配置为基于重新计算的增量校验子来更新所述多个RS校验子中的RS校验子,并且
其中,基于更新的RS校验子指示所述多个RS码字中的RS码字中的错误,RS解码器模块被配置为:
基于更新的RS校验子来确定RS码字的RS错误求值多项式EEP;
计算RS EEP的解;以及
基于RS EEP的解指示RS码字中的误纠正位的位置,基于误纠正位的位置纠正重新计算的增量校验子,并且基于纠正的重新计算的增量校验子纠正所述多个RS校验子。
7.根据权利要求6所述的存储系统,其中,重新计算的增量校验子使用Forney算法被纠正。
8.根据权利要求6所述的存储系统,其中,基于BCH ELP的解指示所述帧中的翻转位的位置,BCH解码器模块还被配置为将翻转位的索引添加到存储在缓冲器中的翻转位列表,并且
其中,基于RS EEP的解指示误纠正位的位置,RS解码器模块还被配置为从翻转位列表删除误纠正位的索引。
9.根据权利要求8所述的存储系统,其中,基于BCH解码的结果指示所述多个帧中的所有帧是正确的且RS解码的结果指示所述多个RS码字中的所有RS码字是正确的,输出处理模块还被配置为基于通用级联码码字和翻转位列表来获得解码信息位。
10.一种用于对通用级联码码字进行解码的装置,所述装置包括:
缓冲器;以及
至少一个处理器,被配置为:
获得通用级联码码字,其中,通用级联码码字包括根据内部编码方案编码并被布置为多个行的多个帧,并且与所述多个行对应的多个列中的至少一个列根据外部编码方案被编码;
基于所述多个帧计算多个内部校验子,其中,所述多个内部校验子对应于内部编码方案;
基于所述多个帧来计算多个增量校验子组;
基于所述多个增量校验子组确定多个外部校验子,其中,所述多个外部校验子对应于外部编码方案;
将所述多个内部校验子和所述多个外部校验子存储在缓冲器中;
基于存储在缓冲器中的所述多个内部校验子,根据内部编码方案对所述多个帧执行内部解码;
基于内部解码的结果更新存储在缓冲器中的所述多个外部校验子中的至少一个外部校验子;以及
基于更新的至少一个外部校验子,根据外部编码方案对所述多个帧执行外部解码;以及
基于内部解码的结果和外部解码的结果,获得与通用级联码码字对应的解码信息位。
11.根据权利要求10所述的装置,其中,内部编码方案是博斯-乔赫里-霍克文黑姆BCH编码方案,所述多个内部校验子包括多个BCH校验子,并且内部解码包括BCH解码,
其中,外部编码方案是里德-所罗门RS编码方案,所述多个外部校验子包括多个RS校验子,并且外部解码包括RS解码,并且
其中,通用级联码码字根据超博斯-乔赫里-霍克文黑姆SBCH编码方案被编码。
12.根据权利要求11所述的装置,其中,所述多个BCH校验子之中的BCH校验子基于所述多个帧之中的帧被计算,并且
其中,所述多个增量校验子组中的增量校验子组基于所述帧被计算。
13.根据权利要求12所述的装置,其中,基于BCH校验子指示与所述帧对应的BCH码字中的错误,所述至少一个处理器还被配置为:
基于所述BCH校验子来确定BCH码字的BCH错误定位多项式ELP;
计算BCH ELP的解;以及
基于BCH ELP的解指示所述帧中的翻转位的位置,基于翻转位的位置重新计算包括在所述增量校验子组中的增量校验子。
14.根据权利要求13所述的装置,其中,基于重新计算的增量校验子,所述至少一个处理器还被配置为:
基于重新计算的增量校验子来更新所述多个RS校验子中的RS校验子;以及
基于更新的RS校验子指示所述多个RS码字中的RS码字中的错误:
基于更新的RS校验子来确定RS码字的RS错误求值多项式EEP;
计算RS EEP的解;以及
基于RS EEP的解指示RS码字中的误纠正位的位置,基于误纠正位的位置纠正重新计算的增量校验子,并且基于纠正的重新计算的增量校验子纠正所述多个RS校验子。
15.一种控制存储系统的方法,所述方法通过至少一个处理器执行并且包括:
通过由所述至少一个处理器实现的输入处理模块,从存储装置获得通用级联码码字,其中,通用级联码码字包括根据超博斯-乔赫里-霍克文黑姆SBCH编码方案布置的多个帧;
通过输入处理模块,基于所述多个帧来计算多个博斯-乔赫里-霍克文黑姆BCH校验子;
通过输入处理模块,基于所述多个帧来计算多个增量校验子组;
通过输入处理模块,基于所述多个增量校验子组来确定多个里德-所罗门RS校验子;以及
通过输入处理模块,将所述多个BCH校验子和所述多个RS校验子存储在缓冲器中;
通过由所述至少一个处理器实现的解码器模块,从缓冲器获得所述多个BCH校验子和所述多个RS校验子;
通过解码器模块,基于所述多个BCH校验子对所述多个帧执行BCH解码;
通过解码器模块,基于所述多个RS校验子和BCH解码的结果对所述多个帧执行RS解码;以及
通过由所述至少一个处理器实现的输出处理模块,基于RS解码的结果和BCH解码的结果,获得与通用级联码码字对应的解码信息位。
16.根据权利要求15所述的方法,其中,根据SBCH编码,通用级联码码字包括多个行和多个列,
其中,所述多个行中的每个行包括BCH码字,并且
其中,所述多个列中的至少一个列包括RS码字。
17.根据权利要求15所述的方法,其中,基于所述多个帧之中的帧计算所述多个BCH校验子之中的BCH校验子,并且
其中,基于所述帧来计算所述多个增量校验子组中的增量校验子组。
18.根据权利要求17所述的方法,其中,解码器模块还包括BCH解码器模块,并且
其中,基于BCH校验子指示与所述帧对应的BCH码字中的错误,所述方法还包括:
通过BCH解码器,基于BCH校验子来确定BCH码字的BCH错误定位多项式ELP;
通过BCH解码器,计算BCH ELP的解;以及
基于BCH ELP的解指示所述帧中的翻转位的位置,通过BCH解码器基于翻转位的位置重新计算包括在所述增量校验子组中的增量校验子。
19.根据权利要求17所述的方法,其中,使用伯利坎普-梅西算法确定BCH ELP,并且
其中,使用钱氏搜索算法计算BCH ELP的解。
20.根据权利要求18所述的方法,其中,解码器模块还包括RS解码器模块,
其中,基于从BCH解码器模块接收到重新计算的增量校验子,所述方法还包括基于重新计算的增量校验子来更新所述多个RS校验子中的RS校验子,并且
其中,基于更新的RS校验子指示所述多个RS码字中的RS码字中的错误,所述方法还包括:
通过RS解码器模块基于更新的RS校验子来确定RS码字的RS错误求值多项式EEP;
通过RS解码器模块计算RS EEP的解;以及
基于RS EEP的解指示RS码字中的误纠正位的位置,通过RS解码器模块基于误纠正位的位置纠正重新计算的增量校验子,并且基于纠正的重新计算的增量校验子纠正所述多个RS校验子。
CN202310201014.9A 2022-03-09 2023-03-02 存储系统和控制存储系统的方法 Pending CN116743188A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/690,124 US11689216B1 (en) 2022-03-09 2022-03-09 Low gate-count generalized concatenated code (GCC) by online calculation of syndromes instead of buffer
US17/690,124 2022-03-09

Publications (1)

Publication Number Publication Date
CN116743188A true CN116743188A (zh) 2023-09-12

Family

ID=86899036

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310201014.9A Pending CN116743188A (zh) 2022-03-09 2023-03-02 存储系统和控制存储系统的方法

Country Status (3)

Country Link
US (1) US11689216B1 (zh)
KR (1) KR20230132697A (zh)
CN (1) CN116743188A (zh)

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5996105A (en) * 1997-11-14 1999-11-30 Cirrus Logic, Inc. ECC system employing a data buffer for storing codeword data and a syndrome buffer for storing error syndromes
US6363511B1 (en) * 1998-03-31 2002-03-26 Stmicroelectronics N.V. Device and method for decoding data streams from storage media
US6192499B1 (en) * 1998-05-29 2001-02-20 Adaptec, Inc. Device and method for extending error correction beyond one sector time
US6738942B1 (en) * 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
US7600177B2 (en) * 2005-02-08 2009-10-06 Lsi Corporation Delta syndrome based iterative Reed-Solomon product code decoder
US7624330B2 (en) * 2005-12-12 2009-11-24 Lsi Corporation Unified memory architecture for recording applications

Also Published As

Publication number Publication date
KR20230132697A (ko) 2023-09-18
US11689216B1 (en) 2023-06-27

Similar Documents

Publication Publication Date Title
US11405058B2 (en) Stopping criteria for layered iterative error correction
US9792176B2 (en) Method and apparatus for encoding and decoding data in memory system
US9673840B2 (en) Turbo product codes for NAND flash
US10484008B2 (en) Memory system with on-the-fly error detection and termination and operating method thereof
KR102643457B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102275717B1 (ko) 플래시 메모리 시스템 및 그의 동작 방법
US10574272B2 (en) Memory system
KR102556479B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
KR102606829B1 (ko) Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법
JP2020155861A (ja) メモリシステム
KR20210001927A (ko) 국부성을 사용한 일반화된 연접 에러 정정 코딩 방법
US10396825B2 (en) Memory controller, semiconductor memory system and operating method thereof
JP2020046823A (ja) メモリシステム
US11062758B2 (en) Memory system to process multiple word line failures with limited storage and method of operating such memory system
CN116743188A (zh) 存储系统和控制存储系统的方法
US10528496B2 (en) Controller and operating method thereof
US10177793B2 (en) Error correction code (ECC) operations in memory
US11770133B1 (en) Exact ber reporting in the presence of CRC termination
US11115055B2 (en) Method and apparatus for encoding and decoding data in memory system
US11973515B2 (en) Hybrid precision MS decoder to reduce gate-count for long codes
CN117631962A (zh) 存储器控制器及快闪存储器的存取方法
CN117632574A (zh) 存储器控制器及解码管线的数据控制方法
KR20210100357A (ko) Ldpc 디코더, ldpc 디코더의 동작 방법 및 반도체 메모리 시스템

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication