CN108932177A - 具有可变长度分量的广义低密度奇偶校验码 - Google Patents

具有可变长度分量的广义低密度奇偶校验码 Download PDF

Info

Publication number
CN108932177A
CN108932177A CN201711474765.9A CN201711474765A CN108932177A CN 108932177 A CN108932177 A CN 108932177A CN 201711474765 A CN201711474765 A CN 201711474765A CN 108932177 A CN108932177 A CN 108932177A
Authority
CN
China
Prior art keywords
code word
component code
component
error correction
length
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
CN201711474765.9A
Other languages
English (en)
Other versions
CN108932177B (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.)
SK Hynix Inc
Original Assignee
Hynix Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hynix Semiconductor Inc filed Critical Hynix Semiconductor Inc
Publication of CN108932177A publication Critical patent/CN108932177A/zh
Application granted granted Critical
Publication of CN108932177B publication Critical patent/CN108932177B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/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
    • 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
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1174Parity-check or generator matrices built from sub-matrices representing known block codes such as, e.g. Hamming codes, e.g. generalized LDPC codes
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • 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
    • 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/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
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1151Algebraically constructed LDPC codes, e.g. LDPC codes derived from Euclidean geometries [EG-LDPC 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
    • 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
    • G11C2029/0411Online error correction
    • 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
    • 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/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Abstract

本发明描述用于提高错误校正系统的误码率(BER)性能的技术。在示例中,错误校正系统实施广义低密度奇偶校验(GLDPC)编码和解码。为了生成GLDPC码,错误校正系统访问数据块。每个数据块包括一个或多个位。错误校正系统还生成GLPDC码字的第一分量码字。第一分量码字至少编码来自数据块的数据块并且具有第一长度和第一错误校正能力。错误校正系统还生成GLPDC码字的第二分量码字。第二分量码字至少编码该数据块并且具有第二长度和第二错误校正能力。第二长度不同于第一长度。第二错误校正能力不同于第一错误校正能力。

Description

具有可变长度分量的广义低密度奇偶校验码
技术领域
本发明涉及一种具有可变长度分量的广义低密度奇偶校验(GLDPC)码。
背景技术
数据完整性是任何数据存储装置和数据传输的重要特征。为包括NAND闪速存储器装置的各种类型的数据存储装置推荐使用一种强错误校正码(ECC)。在数据传输的进程期间也经常使用ECC。
错误校正码(ECC)是指将冗余数据或奇偶校验数据添加到消息的代码,使得即使在传输进程或存储期间中引入了多个错误时,也可以由接收器恢复消息。通常,ECC可以校正错误直到使代码达到可被使用的能力。
广义低密度奇偶校验(GLDPC)码是ECC的示例。GLDPC码通常提供优异的误码率(BER)性能。然而,难以为这些类型的代码设计编码器。
最大后验概率(MAP)解码器也可以用于解码这些代码。与低密度奇偶校验(LDPC)码和博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码相比,GLDPC上的MAP解码有显著的性能增益。由于MAP解码器具有在解码时生成软信息的能力,因此可以用于硬解码和软解码。
发明内容
描述一种用于提高错误校正系统的误码率(BER)性能的技术。在示例中,错误校正系统实施广义低密度奇偶校验(GLDPC)编码和解码。GLDPC码的构建遵循一组规则。该组规则指定每个数据块应当在至少两个分量码字中被保护。这组规则还指定长度和错误校正能力应当在分量码字之间变化。例如,这组规则指定分量码字中的至少两个应当具有不同的长度,并且较长分量码字的错误校正能力应当大于较短分量码字的错误校正能力。基于该组规则,错误校正系统生成具有分量码字的GLDPC码字,其中该分量码字具有可变的长度和可变的错误校正能力。
在说明中,错误校正系统访问数据块。每个数据块包括一个或多个位。错误校正系统还生成GLPDC码字的第一分量码字。第一分量码字至少编码来自数据块的数据块并且具有第一长度和第一错误校正能力。错误校正系统还生成GLPDC码字的第二分量码字。第二分量码字至少编码该数据块并且具有第二长度和第二错误校正能力。第二长度不同于第一长度。第二错误校正能力不同于第一错误校正能力。
在示例中,GLDPC码字的解码解决卡顿(stuck)错误模式。例如,错误校正系统识别分量码字的解码失败。对于失败的分量码字,系统识别在分量码字之间共享的一个(多个)数据块。这些数据块在随后的失败的分量码字的解码中被擦除。剩余的不常用的数据块在随后的解码中不被擦除。
再次参照以上说明,错误校正系统基于第一分量码字中的第一数量的错误和第一分量码字的第一错误校正能力来确定第一分量码字的解码失败。错误校正系统还基于第二分量码字中的第二数量的错误和第二分量码字的第二错误校正能力来确定第二分量码字的解码失败。基于第一分量码字和第二分量码字的解码失败,错误校正系统确定第一分量码字和第二分量码字具有共有的数据块。错误校正系统基于第一分量码字和第二分量码字共有的数据块来擦除数据块,并且基于数据块的擦除再次解码第一分量码字和第二分量码字。进一步地,错误校正系统确定第二分量码字的第二数据块是与第三分量码字共有的,并且第三分量码字的解码成功。错误校正系统基于第三分量码字的解码成功来避免擦除第二分量码字中的第二数据块。
提到这些说明性示例不是为了限制或限定本公开,而是为了提供示例以帮助对其的理解。在具体实施方式中讨论另外的实施例和示例,并且在具体实施方式中提供进一步的描述。
附图说明
可以通过参照以下附图来理解各个实施例的性质和优点。在附图中,相似的部件或特征可以具有相同的附图标记。进一步地,可以通过用虚线和区分相似部件的第二标记以及附图标记来区分相同类型的各种部件。如果仅第一附图标记被用于说明书中,则描述适用于具有相同第一附图标记的相似部件中的任何一个,而与第二附图标记无关。
图1示出根据本公开的某些实施例的错误校正系统的示例性高级框图。
图2示出根据本公开的某些实施例的用于构建具有分量码字的GLDPC码字的示例性框图,其中该分量码字具有可变的长度和可变的错误校正能力。
图3示出根据本公开的某些实施例的用于构建具有分量码字的GLDPC码字的规则的示例性代表图,其中该分量码字具有可变的长度和可变的错误校正能力。
图4示出根据本公开的某些实施例的用于解决具有分量码字的GLDPC码字的卡顿错误模式的示例性框图,其中该分量码字具有可变的长度和可变的错误校正能力。
图5示出根据本公开的某些实施例的用于编码和解码具有分量码字的GLDPC码字的示例性部件,其中该分量码字具有可变的长度和可变的错误校正能力。
图6示出根据本公开的某些实施例的用于编码和解码具有分量码字的GLDPC码字的示例性流程,其中该分量码字具有可变长度和错误校正能力。
图7示出根据本公开的某些实施例的用于生成具有多个分量码字的GLPDC码字的分量码字的示例性流程,其中该分量码字具有可变的长度和可变的错误校正能力。
图8示出根据本公开的某些实施例的具有多个分量码字的GLPDC码字的示例性流程800,其中该分量码字具有可变的长度和可变的错误校正能力。
图9是能够实现本公开的计算机系统的代表。
具体实施方式
本公开的实施例旨在提高错误校正系统的误码率(BER)性能。在示例中,错误校正系统使用广义低密度奇偶校验(GLDPC)编码和解码。在编码阶段,通过根据一组规则形成分量码字来构建GLDPC码字。该组规则指定每个位应当被保护至少两次(例如,在至少两个分量码字中)。该组规则还指定分量码字的长度和错误校正能力应当变化。根据该组规则,较短长度的分量码字由较低错误校正能力保护,而较长长度的分量码字由较高错误校正能力保护。因此,GLDPC码字包括具有至少一个共有位的至少两个分量码字。该位被保护两次。长度和错误校正能力在两个分量码字之间是不同的。例如,第二分量码字较长,因此其相对于第一分量码字具有较高错误校正能力。长度和错误校正能力的不均匀分布提供性能增益。更具体地,由于分量码字的长度和错误校正能力变化并且由于每个位被保护至少两次,因此构建的GLDPC码字对噪声更有适应力。因此,当解码时,该GLPDC码字相对于诸如其分量码字具有固定长度和固定错误校正能力的GLPDC码字的现有的GLDPC码字可以提供更好的BER性能。
通过利用跨多个分量码字的位的保护可以进一步改善解码。在示例中,当对于这些失败的分量码字中的每一个,错误的数量大于失败的分量码字的错误校正能力时,在分量码字的子集中出现卡顿错误模式。为了解决卡顿错误模式,在失败的分量码字上的位被擦除。例如,解码器识别具有共有位的两个失败的分量码字。在该两个失败的分量码字中的该位被擦除。如果两个失败的分量码字的其它位不是两个分量码字共有的,则不擦除该其它位。然后重复解码。如果MAP解码器正在使用该擦除方案,则MAP解码器在模拟中不显示错误平层。
为了清楚解释起见,结合使用BCH码以构建GLDPC码字的分量码字来描述本公开的实施例。然而,但是实施例不限于此,并且应用于使用诸如汉明码、里德-所罗门(Reed-Solomon,RS)码和里德-穆勒(Reed-Muller,RM)码的其它任何线性码或者任何合适的非线性码。进一步地,结合保护位两次(例如,通过编码两个分量码字中的位)来描述本公开的实施例。然而,实施例不限于此,并且应用于额外的保护维度,诸如位可以被保护三次或更多次(例如,通过编码三个或更多个分量码字中的位)。通常,通过保护至少两个分量码字中的每个信息位并且通过改变分量码字的长度和校正能力来构建GLDPC码字。
图1示出根据本公开的某些实施例的错误校正系统100的示例性高级框图。在示例中,结合数据存储来描述GLDPC码。然而,本发明的实施例不限于此。相反,实施例类似地应用于包括例如数据传输的GLDPC码的其它用途。
GLDPC码是广义的LDPC码。为了更好地理解GLDPC码,首先描述LDPC码。LDPC码是由稀疏奇偶校验矩阵H定义的线性块码,其由0和1组成。术语“稀疏矩阵”在本文中用于指代其中每列和每行中的非零值的数量远小于其维度的矩阵。术语“列权重”在本文中用于指代奇偶校验矩阵H的具体列中的非零值的数量。术语“行权重”在本文中用于指代在奇偶校验矩阵H的具体行中的非零值的数量。通常,如果对应于LDPC码的奇偶校验矩阵中的所有列的列权重是相似的,则该码被称为“规则的”LDPC码。另一方面,如果列权重中的至少一个与其它列权重不同,则LDPC码被称为“非规则的”。通常,非规则的LDPC码提供比规则的LDPC码更好的错误校正能力。
进一步根据构建LDPC码的方式来描述LDPC码。随机计算机搜索构建或代数构建是可能的。随机计算机搜索构建描述具有通过随机基于计算机的过程设计的奇偶校验矩阵的LDPC码。代数构建意味着基于组合方法构建奇偶校验矩阵。准循环LDPC(QC-LDPC)码属于后一种构建方法。QC-LDPC码的一个优点在于它们在编码过程方面实施相对较简单。QC-LDPC码的主要特征在于奇偶校验矩阵由循环子矩阵组成,其可以基于单位矩阵或较小的随机矩阵。置换矢量也可以用来创建循环子矩阵。不管LDPC码的类型,奇偶校验矩阵H都表示在LDPC码的解码中使用的一组奇偶校验等式。当满足奇偶校验等式时,LDPC码字被成功解码。
回到GLDPC,为了构建GLDPC码,可以通过被称为分量(本地)码字的简单线性块码(例如,诸如BCH码)的奇偶校验矩阵来替换LDPC码的每个单个奇偶校验等式。这种类型的代码构建在业界被称为LZ-GLDPC码构建。其它代码构建也是可能的。例如,在被称为B-GLDPC码构建的代码构建中,奇偶校验矩阵H是被划分成W个子矩阵H1、......、HW的稀疏矩阵。H1是通过用码字长度n和维度k的本地码的奇偶校验矩阵来替换单位矩阵而从单位矩阵生成的块对角线矩阵。每个子矩阵Hj通过随机列置换从H1导出。GLDPC码的码率由限定下限,其中K和N表示GLDPC码的维数和码字长度,W是LDPC码的列权重,k/n是本地码的码率(k和n表示分量码字的维数和码字长度)。
因此,GLDPC码字通常包括多个分量码字。典型地比GLDPC码字短得多的分量码字使用诸如例如汉明码、BCH码、里德-所罗门(RS)码和里德-穆勒(RM)码等任何合适的线性代码或任何合适的非线性代码来构建。GLDPC码字通常被设计成使得分量码字中的每一个与至少一个其它分量码字共享一个或多个位。
解码GLDPC码字的一种可能方式是使用各个分量解码器来解码各个分量码字。解码将执行一个或多个解码迭代以试图达到其中分量解码器中的每一个输出有效分量码字的状态。分量码字中的共享位有助于纠正超过各个分量码字的错误校正能力的错误位。
解码方案中的分量解码器可以包括硬解码器或软解码器,其输入和输出分别包括硬判决或软信息。除了硬判决之外,软信息还包括分配给这些硬判决的各个可靠性测量。可靠性测量可以包括对数似然比(LLR),其中符号表示判决(例如,正值对应于“1”判决并且负值对应于“0”判决)并且幅度表示检测器在该判决中的确定或肯定的程度(例如,大幅度表示高可靠性或确定性)。
传统上,对GLDPC硬解码器的输入包括用于码字的位的信道硬判决。传统上,除了硬判决位以外,对GLDPC软解码器的输入还包括分配给这些位的可靠性测量。基础分量解码器中的每一个接收对应于各个分量码字的输入的部分。
在GLDPC硬解码中,硬分量解码器接受信道硬判决并且导出在相同或随后的迭代中由一些分量解码器使用的输出硬判决。在一些变形的硬解码器中,分量解码器的输出与在后续迭代中待被使用的信道硬判决相结合。在GLDPC软解码中,软分量解码器接受信道软信息并且导出在相同或随后的迭代中由一些分量解码器使用的输出软信息。在给定的迭代中,分量软解码器基于信道软输入、预先生成的软输出及其解码结果来更新其输出软信息。
通常,GLDPC软解码器比GLDPC硬解码器具有更好的错误校正能力,但会带来更高的复杂性、延迟和功耗。另外,与硬解码器相比,软解码器不易受到卡顿错误模式的损害。卡顿错误模式与解码状态相关联,其中分量码字中的一个或多个解码失败成有效的分量码字,并且应用额外的解码迭代无法解决失败状态。例如,当多个分量码字共享超过基础分量码字的错误校正能力的数量的错误位时,在硬解码器中会发生卡顿错误模式。
如图1所示,GLDPC编码器110接收包括期望被存储在存储系统120中的数据的信息位。GLDPC编码数据(例如,GLDPC码字)由GLDPC编码器110输出并且被写入存储装置120。
在各个实施例中,存储装置120可以包括诸如(例如,磁)盘驱动器存储装置、闪速存储装置等的各种存储类型或介质。在一些实施例中,该技术被用于收发器中,并且数据通过有线信道和/或无线信道被传输和接收,而不是被写入到存储装置或从存储装置读取。在该情况下,在接收的码字中的错误可以在码字的传输期间被引入。
当存储的数据(例如,由存储数据的应用或用户)请求或以其它方式被期望时,检测器130从存储系统120接收数据。接收的数据可以包括一些噪声或错误。检测器130对接收的数据执行检测并且输出判决和/或可靠性信息。例如,软输出检测器输出可靠性信息和用于每个检测的位的判决。另一方面,硬输出检测器在不提供相应的可靠性信息的情况下输出关于每个位的判决。作为示例,硬输出检测器可以输出特定位是“1”或“0”的判决,而不表示检测器在该判决中的肯定或确定的程度。相反,软输出检测器输出与判决相关联的判决和可靠性信息。通常,可靠性值表示检测器在给定判决中的肯定的程度。
判决和/或可靠性信息被传递到使用判决和可靠性信息来执行GLDPC解码的GLDPC解码器140。软输入解码器利用判决和可靠性信息来解码码字。硬解码器仅利用解码器中的判决值来解码码字。在许多情况下,解码是迭代的,并且GLDPC解码器140包括各自均可以是硬解码器或软解码器的多个分量解码器。例如,当这样的分量码字是BCH码时,BCH解码器可以用于硬解码每个分量码字。另外地或可选地,最大后验概率(MAP)解码器可以用于软解码分量码字中的每一个。由GLDPC解码器140生成的解码位被传递到适当的实体(例如,请求它的用户或应用)。通过适当的编码和解码,信息位与解码位匹配。
在各个实施例中,示出的系统可以使用包括专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,高级RISC机器(ARM)内核)的各种技术来实施。
图2示出根据本公开的某些实施例的用于构建具有分量码字的GLDPC码字的示例性框图200,该分量码字具有可变的长度和可变的错误校正能力。如图所示,GLDPC码字包括多个分量码字230(示为CW1、......、CW7)。如接下来在本文中进一步描述的,每个信息位在两个分量码字230中被保护,并且分量码字230具有可变的长度和错误校正能力。
在一些实施例中,信息位在总共15个数据块的数据块210中被分组,示为D0、......、D14。可以使用不同数量的数据块。每个块Dk包含“j”个信息位,其中“j”是正整数(例如,1、2、3、8、16等)。在GLDPC码字的构建中,每个数据块被保护两次。例如,分量码字CW1和CW2编码数据块D0。
奇偶校验块220也用于GLDPC码字的构建。每个奇偶校验块Dk包含“j”个奇偶校验位,其中“j”是正整数(例如,1、2、3、8、16等)。分量码字的数据块被多个奇偶校验块保护,其中数据块和奇偶校验块使用BCH码(或任何其它线性码或非线性码)来编码。如果使用BCH,则分量码字230可以被称为BCH分量码字。
BCH分量码字在2阶且大小“m”的伽罗瓦域(Galois field)(例如GF(2m))上形成,并且具有长度“n”,其中“n=2m-1”。BCH分量码字包含“k”个数据块和“n-k”个奇偶校验块。BCH分量码字的错误校正能力“t”是“t=(n-k)/m”。
除了保护每个数据块两次之外,在GLDPC码字的构建中,长度“n”在BCH分量码字230之间变化。错误校正能力“t”也在BCH分量码字230之间变化。改变长度“n”和错误校正能力“t”强制使用具体数量的数据块和具体数量的奇偶校验块。
例如,并且如图2所示,对于BCH分量码字CW1,使用大小为“m=4”的伽罗瓦域(24-1=15),并且因此CW1具有长度“n=15”。CW1的错误校正能力是“t=3”。因此,由于“k=n-t×m”(15-3×4=3),所以数据块“k”的数量是3并且奇偶校验块“n-k”的数量是12(15-3=12)。
因此并且如图2所示,数据块D0在BCH分量码字CW1和CW2中被保护;数据块D1在BCH分量码字CW1和CW3中被保护;数据块D2在BCH分量码字CW1和CW4中被保护;数据块D3在BCH分量码字CW2和CW3中被保护;数据块D4在BCH分量码字CW2和CW4中被保护;数据块D5在BCH分量码字CW2和CW5中被保护;数据块D6在BCH分量码字CW3和CW4中被保护;数据块D7在BCH分量码字CW3和CW5中被保护;数据块D8在BCH分量码字CW3和CW6中被保护;数据块D9在BCH分量码字CW4和CW5中被保护;数据块D10在BCH分量码字CW4和CW6中被保护;数据块D11在BCH分量码字CW4和CW7中被保护;数据块D12在BCH分量码字CW5和CW6中被保护;数据块D13在BCH分量码字CW5和CW7中被保护;并且数据块D14在BCH分量码字CW6和CW7中被保护。
进一步地,BCH分量码字CW1具有为15的长度和为3的错误校正能力并且编码3个数据块(D0、D1、D2)和12个奇偶校验块(P0、......、P11);BCH分量码字CW2具有为24的长度和为4的错误校正能力并且编码4个数据块(D0、D3、D4、D5)和20个奇偶校验块(P0、......、P19);BCH分量码字CW3具有为30的长度和为5的错误校正能力并且编码5个数据块(D1、D3、D6、D7、D8)和25个奇偶校验块(P0、......、P24);BCH分量码字CW4具有为42的长度和为6的错误校正能力并且编码6个数据块(D2、D4、D6、D9、D10、D11)和36个奇偶校验块(P0、......、P35);BCH分量码字CW5具有为30的长度和为5的错误校正能力并且编码5个数据块(D5、D7、D9、D12、D13)和25个奇偶校验块(P0、......、P24);BCH分量码字CW6具有为24的长度和为4的错误校正能力并且编码4个数据块(D8、D10、D12、D14)和20个奇偶校验块(P0、......、P19);并且BCH分量码字CW7具有为15的长度和为3的错误校正能力并且编码3个数据块(D11、D13、D14)和12个奇偶校验块(P0、......、P11)。注意的是,为了清楚解释起见,使用相同的奇偶校验符(例如,P0用于CW1和CW2两者),但是实际奇偶校验位不必相同(例如,P0是CW1中的“1”奇偶校验位和CW2中的“0”奇偶校验位)。
虽然图2示出具有各自具有特定的长度和错误校正能力的7个BCH分量码字的GLDPC码字,但是GLDPC码字的其它可能的构建是可能的。例如,根据期望的码率,可以使用不同数量的分量码字和/或每个分量码字的长度和错误校正能力。
图3示出根据本公开的某些实施例的用于构建具有分量码字的GLDPC码字的规则的示例性代表图300,该分量码字具有可变的长度和可变的错误校正能力。通常,规则指定数据块(包括至少一个信息位)应当在至少两个分量码字中被保护。规则还指定长度和错误校正能力应当在分量码字之间变化。为了清楚解释起见,结合图2的BCH分量码字230来描述规则。
在一些实施例中,规则指定长度应当改变,并且分量码字的错误校正能力的改变应该基于该分量码字的长度。例如,分量码字越长,其错误校正能力应当越大。相反,分量码字越短,其错误校正能力应当越小。再次参照图2的BCH分量码字230,BCH分量码字CW1和CW2分别具有为15和24的长度。因此,长度在BCH分量码字CW1和CW2之间变化。进一步地,由于BCH分量码字CW2比BCH分量码字CW1更长(例如,CW2的长度是24并且大于为15的CW1的长度),因此BCH分量码字CW2的错误校正能力大于BCH分量码字CW1的错误校正能力(如图2所示,CW2的错误校正能力是4并且大于为3的CW1的错误校正能力)。
在一些实施例中,当GLDPC码字被构建时,规则附加地或可选地指定长度和错误校正能力。在示例中,数据块按照序列来组织,其中每个数据块对应于序列中的顺序。规则基于对数据块的序列的访问(或者等同地,按照在分量码字的序列中生成的分量码字的顺序)来改变长度和错误校正能力。
如图2所示,信息位按照15个数据块的序列来组织。D0是数据块210D0-D14的序列中的第一数据块,D1是数据块210D0-D14的序列中的第二数据块,并且依此类推。数据块的序列被访问以生成BCH分量码字的序列。再如图2所示,数据块D0,D1,D2被访问以生成BCH分量码字CW1,数据块D0、D3、D4、D5被访问以生成BCH分量码字CW2,并且依此类推。CW1是BCH分量码字230CW1-CW7的序列中的第一分量码字,CW2是BCH分量码字230CW1-CW7的序列中的第二分量码字,并且依此类推。
根据序列中的分量码字的顺序,规则设置分量码字的长度。例如,规则指定长度应当随着生成的分量码字的顺序的增加而初始地增加,之后对于一定数量的生成的分量码字保持不变,并且对于最后剩余数量的生成的分量码字应当减小。规则还指定分量码字的错误校正能力随着分量码字的长度的增加而增大,在分量码字的长度保持不变的情况下保持不变,并且随着分量码字的长度减小而减小,其中长度取决于序列中分量码字的顺序。代表图300示出该类型的规则。当然,规则可以指定其它变形(例如,初始减少和最终增加、钟形曲线变化、线性增加、逐级增加等)
如图3所示,分量码字的长度310和错误校正能力320分别在代表图300的横轴和纵轴上示出。序列的初始分量码字(例如,在分量码字序列中排在首位的分量码字)对应于代表300的原点312。参照图2的BCH分量码字230,初始分量码字是BCH分量码字CW1。初始分量码字具有最短的长度和最小的错误校正能力(例如,图2的BCH分量码字CW1具有为15的最短长度和为3的最小错误校正能力)。
规则指定分量码字的长度基于在序列的初始分量码字与序列的第一中间分量码字之间的分量码字而增加。错误校正能力也随着长度的增加而增加。第一中间分量码字对应于代表300中的点314。参照图2的BCH分量码字230,第一分量码字是BCH分量码字CW4。BCH分量码字CW2和CW3的顺序落在序列中的BCH分量码字CW1和CW4之间。因此,BCH分量码字CW2和CW3的长度和错误校正能力相对于BCH分量码字CW1增加。再次参照图2,BCH分量码字CW2长于BCH分量码字CW1但是短于BCH分量码字CW3。类似地,BCH分量码字CW2的错误校正能力大于BCH分量码字CW1的错误校正能力但是小于BCH分量码字CW3的错误校正能力。
规则还指定分量码字的长度在序列的第一中间分量码字和第二中间码字之间的最大长度值处保持不变。错误校正能力在最大的错误校正能力值处也保持不变。第二中间分量码字对应于代表300中的点316。参考图2的BCH分量码字230,第二中间分量码字是BCH分量码字CW4(但是,随后排列的分量码字可以是第二中间码字)。BCH分量码字CW4的顺序落在序列中的第一中间分量码字和第二中间分量码字之间(与图2的示例相同)。因此,BCH分量码字CW4的长度和错误校正能力保持不变并且相对于剩余的BCH分量码字是最大的。换言之,BCH分量码字CW4较长并且相对于BCH分量码字CW1-CW3和BCH分量码字CW5-CW7具有更好的错误校正能力。
规则指定基于在序列的第二中间分量码字与序列的最后分量码字之间的分量码字,分量码字的长度减小。错误校正能力也随着长度的减小而减小。最后分量码字对应于代表300中的点318。参照图2的BCH分量码字230,最后分量码字是BCH分量码字CW7。BCH分量码字CW5和CW6的顺序落在序列中的BCH分量码字CW4和CW7之间。因此,BCH分量码字CW5和CW6的长度和错误校正能力相对于BCH分量码字CW4减小。再次参照图2,BCH分量码字CW5短于BCH分量码字CW4但是长于BCH分量码字CW6。类似地,BCH分量码字CW5的错误校正能力小于BCH分量码字CW4的错误校正能力但是大于BCH分量码字CW6的错误校正能力。
最后,规则指定初始分量码字和最后分量码字(由点312和318表示)具有相同的长度和相同的错误校正能力。再次参照图2的BCH分量码字230,BCH分量码字CW1和CW7相对于剩余的BCH分量码字CW2-CW6具有最短的长度和最小的错误校正能力(例如,图2的BCH分量码字CW1和CW7中的每一个具有为15的最短长度和为3的最小错误校正能力)。
图4示出根据本公开的某些实施例的用于解决具有分量码字的GLDPC码字的卡顿错误模式的示例性框图400,该分量码字具有可变的长度和可变的错误校正能力。通常,关于分量码字的解码的状态信息被用于解决卡顿错误模式。一旦解决,就可以再次执行至少分量码字的解码。为了清楚解释起见,结合图2的BCH分量码字230来描述解码。
如图所示,分量解码器(例如,BCH解码过程和/或MAP解码过程)被用于解码分量码字中的每一个。分量解码器的输出包括对相应的分量码字的解码是成功还是失败的指示。该输出可以被保持在解码状态410。换言之,解码状态410指示针对每个分量码字的解码的状态(例如,分量码字的解码是成功还是失败)。如果解码是迭代的,则在每次解码迭代时更新状态。例如,在解码迭代结束时,如果特定分量码字的解码失败,则针对特定分量码字的状态被设置成“失败”。否则,状态被设置成“成功”。
当对于这些失败的分量码字中的每一个,错误的数量大于失败的分量码字的错误校正能力时,在分量码字的子集中出现卡顿错误模式。如图4所示,卡顿错误模式包括BCH分量码字CW3、CW4和CW5中的错误(示为这三个分量码字的解码状态410被设置成“失败”)。例如,BCH分量码字CW3具有为5的错误校正能力。如果数据块(或奇偶校验块)是1位,并且如果在BCH分量码字CW3的解码中存在6个错误位,则该解码被卡住。
为了解决卡顿错误模式,识别和擦除失败的分量码字共有的数据块,并且可以再次执行解码。如图4所示,BCH分量码字CW3、CW4和CW5上的共有数据块是数据块D6、D7和D9。更具体地,数据块D6为BCH分量码字CW3和CW4所共有。数据块D7为BCH分量码字CW3和CW5所共有。并且数据块D9为BCH分量码字CW4和CW5所共有。因此,数据块D6、D7和D9被识别和擦除。
属于失败的分量码字但是不被至少两个失败的分量码字所共有的剩余的数据块不被擦除。例如,数据块D1、D3和D8属于失败的分量码字CW3但是不被其它两个失败的分量码字CW4和CW5中的任意一个所共有。因此,数据块D1、D3和D8不被擦除。
擦除取决于分量解码器的类型。在示例中,使用MAP解码器。擦除将数据块D6、D7和D9(例如,对这些数据块中的位)的LLR设置为0。一旦识别的数据块被擦除(例如,相关的LLR被设置为0),就再次执行解码。根据分量解码器的类型,这种额外的解码可以限于失败的分量码字(例如,BCH分量码字CW3-CW5),而对于所有分量码字(例如,对于BCH分量码字CW1-CW7)可以是全局的,并且可以在出现卡顿错误模式的当前解码迭代中出现,或者在下一次解码迭代中出现。
图5示出根据本公开的某些实施例的用于编码和解码具有分量码字的GLDPC码字的示例性部件500,该分量码字具有可变的长度和可变的错误校正能力。部件500包括GLDPC编码器510、NAND信道520、GLDPC MAP解码器530和擦除解码器540。NAND信道520表示将噪声引入到GLDPC码字的数据存储信道。例如,假设x=[x0,x1,...,xN-1]是信息位的向量并且被编码成GLDPC码字。由于NAND信道520的噪声,解码的信息位是可能与x不匹配的向量z=[z0,z1,...,zN-1]。GLDPC编码和解码最小化两个向量z和x之间的差异的数量,其中两个相应的位之间的差异是错误位。GLDPC编码器510、GLDPC MAP解码器530和擦除解码器540表示用于信息位的编码和解码的模块。这些模块中的每一个可以被实施为硬件或在硬件上托管的软件。
如图所示,信息位被输入到GLDPC编码器510。反之,GLDPC编码器510通过编码信息位来生成GLDPC码字。生成的GLDPC码字通过NAND信道520被存储在NAND闪速存储器中。随后,存储的GLDPC码字从NAND闪速存储器被访问。GLDPC MAP解码器530执行MAP解码过程以解码访问的GLDPC码字。由T.Zhang等人在2001年IEEE全球电信会议(IEEE GLOBECOM)学报第2001期第1卷第181至185页中发表的“通用低密度奇偶校验码的高性能、低复杂度解码”中(T.Zhanget al.,in“High-performance,low-complexity decodingof generalizedlow-density parity-check codes,”Proc.IEEE GlobalTelecommunications Conf.2001(IEEE GLOBECOM),vol.1,2001,ages 181-185)、由L.R.Bahlet等人在IEEE信息论汇刊1974年3月第2期第20卷第284至287页中发表的“用于最小化符号错误率的线性码的最佳解码”中(L.R.Bahlet al.,in“Optimal decoding of linearcodes for minimizing symbolerror rate,”IEEE Trans.Inf.Theory,vol.20,no.2,Mar.1974,pages 284–287)以及由A.Ashikhmin等人在IEEE信息论汇刊2003年8月第8期第50卷第1812至1818页中发表的“第一顺序里德-穆勒码和汉明码的简单MAP解码”中(A.Ashikhmin et al.,in“Simple MAPdecoding of first order Reed–Muller and Hamming codes,”IEEE Trans.Inf.Theory,vol.50,no.8,Aug.2003,pages 1812-1818)描述MAP解码过程的示例,其公开通过引用而并入本文。如果分量码字的解码成功,则GLDPC MAP解码器生成输出位504。如果解码失败,则调用擦除解码器540。擦除解码器540识别失败的分量码字和这些失败的分量码字共有的数据块并且擦除这些数据块。与擦除相关的信息(例如,擦除的数据块的标识符、这些数据块的LLR等)被反馈到GLDPC解码器530,以重新解码至少失败的分量码字。通常,GLDPC MAP解码器530和擦除解码器540之间的循环可以重复一定数量的迭代(例如,十次或预定义的其他数量)。利用MAP解码器使用该擦除方案在模拟中不显示错误平层。
图6至图8示出与具有可变长度和错误校正能力的分量码字的GLDPC码字的处理有关的示例性流程。系统被描述为执行示例性流程的特定操作。特别地,系统实施包括GLDPC编码器和GLDPC解码器和/或包括图5的部分或全部部件500的诸如图1的错误校正系统100的错误校正系统。系统可以具有具体的硬件配置来执行包括GLDPC编码器和GLDPC解码器的操作的错误校正系统的操作。可选地或另外地,系统可以包括配置有具体指令的通用硬件。在示例中,系统包括一个或多个处理器和一个或多个存储器。存储器存储计算机可读指令以实现特定于系统的功能。系统的处理器执行的指令会导致系统的功能性的性能。存储在结合基础处理器的存储器中的指令表示用于执行功能的装置。示例性流程中的一些操作是相似的。为了简洁起见,本文不再重复相似之处。进一步地,虽然操作以特定顺序示出,但是操作的其它顺序也是可能的,并且由于对于本领域技术人员是显而易见的,所以其一些操作可以被跳过。
图6示出根据本公开的某些实施例的用于编码和解码具有分量码字的GLDPC码字的示例性流程600,该分量码字具有可变的长度和可变的错误校正能力。如图所示,示例性流程600在系统访问数据块的操作602处开始。例如,数据块被输入到系统。数据块按照序列来组织。每个数据块包括一个或多个信息位。
在操作604处,系统通过编码数据块来生成GLDPC码字的分量码字。分量码字具有可变的长度和可变的错误校正能力。每个数据块在至少两个分量码字中被保护。例如,GLDPC码字的第一分量码字至少编码数据块并且具有第一长度和第一错误校正能力。GLDPC码字的第二分量码字也至少编码该数据块并且具有第二长度和第二错误校正能力。第二长度不同于第一长度,并且第二错误校正能力不同于第一错误校正能力。在示例中,通过对分量码字使用BCH编码来构建GLDPC码字。构建受制于指定每个数据块应当被保护至少两次并且指定长度和错误校正能力应当如何变化的一组规则。
在操作606处,系统存储分量码字。例如,系统将这些码字存储在系统本地的存储器中,或者在系统可访问的网络位置远程存储。
在操作608处,系统解码存储的分量码字。在示例中,系统响应于对数据块的请求而从存储器访问存储的分量码字。系统使用诸如硬解码过程(例如,BCH解码)、软解码过程(例如,MAP解码)或者硬解码过程和软解码过程的组合的GLDPC解码过程。GLDPC解码过程还执行擦除解码,其中擦除两个失败的分量码字所共有的数据块。
在操作610处,系统输出解码的块。例如,在完成GLDPC解码过程时,系统输出解码的位。
图7示出根据本公开的某些实施例的用于生成具有多个分量码字的GLPDC码字的分量码字的示例性流程700,该分量码字具有可变的长度和可变的错误校正能力。为了清楚解释起见,示出结合分量码字的示例性流程700。但是,示例性流程700的操作可以对于GLDPC码字的所有分量码字重复。
示例性流程700在系统访问数据块的操作702处开始。在操作704处,系统确定在序列中待生成的分量码字的顺序。序列对应于GLDPC码字。当完全生成时,GLDPC码字具有多个分量码字。不同的分量码字可以并行或串联生成。但是,序列表示这些分量码字的有序组织。在示例中,系统识别待生成的分量码字应当占据的序列中的位置。该位置对应于分量码字的顺序。
在操作706处,系统基于序列中的分量码字的顺序并且基于规则来确定分量码字的长度“n”和错误校正能力“t”。在示例中,规则指定基于顺序的长度和错误校正能力。例如,规则指定对于初始分量码字,长度在初始长度值(例如,15)处开始,相对于落入初始分量码字和第一中间分量码字之间的分量码字的初始长度值而增加,在第一中间码字和第二中间码字之间长度保持相同,并且减小到对应于序列中的最后分量码字的最终长度值。规则还指定错误校正能力随着长度的增加而增加,当长度保持不变时保持不变,并且随着长度的减小而减小。规则可以被存储在系统的存储器或某个远程网络位置。当然,其它规则是类似可能的。因此,系统访问规则,并基于待被生成的分量码字落在序列中的位置来设置分量码字的长度和错误校正能力。
在操作708处,系统基于数据块、长度和错误校正能力来生成分量码字。在示例中,在二阶和大小“m”的伽罗瓦域(例如,GF(2m))上的BCH编码被用于编码数据块的子集。系统根据长度来计算伽罗瓦域的大小“m”。系统还根据长度“n”、错误校正能力“t”和大小“m”计算奇偶校验块的数量“k”。系统还根据长度“n”和奇偶校验块“k”的数量计算在分量码字中待被编码的数据块的数量“n-k”。系统然后从访问的数据块选择“n-k”个数据块。执行选择,使得选择的数据块也被选择用于至少一个其它分量码字中的编码,使得该数据块为分量码字和至少一个其它分量码字所共用,并且因此被保护至少两次。系统可以将信息保持在其存储器中,其中信息标识每个分量码字和分量码字编码的数据块。该信息可以被组织在列表、表格、映射中和/或数据库结构中。
图8示出根据本公开的某些实施例的具有多个分量码字的GLPDC码字的示例性流程800,该分量码字具有可变的长度和可变的错误校正能力。该GLDPC码字对应于根据图7的示例性流程700编码的GLDPC码字。然而,由于信道噪声,两个GLDPC码字可能不匹配。解码会尝试最小化表示两个GLDPC码字之间的不匹配的错误位的数量。为了清楚解释起见,示出结合三个分量码字的解码。但是,图8的示例性流程800的操作可以对于GLDPC码字的所有分量码字重复。
示例性流程800在系统解码分量码字的操作802处开始。例如,系统从存储位置(例如,从NAND存储器)访问GLDPC码字并且对分量码字中的每一个执行硬解码过程(例如,BCH解码)、软解码过程(例如,MAP解码)或者硬解码过程和软解码过程的组合。
在操作804处,系统确定第一分量码字和第二分量码字的解码失败。在示例中,施加到每个分量码字的解码过程识别解码是否成功。系统在解码状态下维持这样的指示。因此,如果第一分量码字和第二分量码字中的每一个与“失败”状态相关联,则系统识别它们的解码失败。
在操作806处,系统确定第一分量码字和第二分量码字共有的数据块。在示例中,GLDPC码字的构建规定每个数据块被保护至少两次。在LDPC码字的构建期间,系统可能已经保持识别每个分量码字和分量码字编码的数据块的信息。在该示例中并且由于每个数据块被保护至少两次,系统使用信息来标识为第一分量码字和第二分量码字共有的数据块。
在操作808处,系统擦除第一分量码字和第二分量码字共有的数据块。擦除取决于使用的解码过程的类型。例如,对于软解码过程(例如,MAP解码),擦除在解码第一分量码字和第二分量码字中的每一个时将数据块的LLR(或数据块中的信息位的LLR)设置成0。
在操作810处,系统确定第二分量码字和第三分量码字共有的第二数据块。在示例中,系统还使用标识每个分量码字和分量码字编码的数据块的信息来标识第二数据块。
在操作812处,系统确定第三分量码字的解码成功。在示例中,系统还使用解码状态来确定成功。例如,如果第三分量码字具有“成功”状态,则系统识别第三分量码字的解码成功。
在操作814处,系统避免擦除第二分量码字中的第二数据块。在示例中,由于第二数据块在第二分量码字和第三分量码字之间共有并且由于第二分量码字的解码失败而第三分量码字的解码成功,因此系统生成不擦除第二分量码字中的第二数据块的判决。例如,并且参照软解码过程,系统在解码第二分量码字时不将第二数据块的LLR(或第二数据块中的信息位的LLR)改变为0。
在操作816处,系统基于执行和避免的擦除来重新解码第一分量码字和第二分量码字。在示例中,系统在下一次解码迭代中鉴于给定的擦除数据块至少解码第一分量码字和第二分量码字。
图9描述可以根据一个实施例使用的诸如图1的错误校正系统100的系统的一个可能的实施方式。图9仅是对本公开的实施例的说明并且不限制权利要求中所述的本公开的范围。在一个实施例中,系统是通常包括监视器910、计算机920、用户输出装置930、用户输入装置940、通信接口950等的计算机系统900。图1的错误校正系统100实施计算机系统900的一些或全部部件。
如图9所示,计算机920可以包括经由总线子系统990与多个外围装置通信的处理器960。这些外围装置可以包括用户输出装置930、用户输入装置940、通信接口950以及诸如随机存取存储器(RAM)970和磁盘驱动器980的存储子系统。
用户输入装置940包括用于向计算机系统920输入信息的所有可能类型的装置和机制。这些可以包括键盘、小键盘、结合到显示器中的触摸屏、诸如语音识别系统的音频输入装置、麦克风和其它类型的输入装置。在各个实施例中,用户输入装置940通常被实现为计算机鼠标、轨迹球、轨迹板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置940通常允许用户通过点击按钮等的命令来选择出现在监视器910上的对象、图标、文本等。
用户输出装置930包括用于从计算机系统920输出信息的所有可能类型的装置和机制。这些可以包括显示器(例如,监视器910)、诸如音频输出装置的非视觉显示器等。
通信接口950提供与其它通信网络和装置的接口。通信接口950可以用作从其它系统接收数据和向其它系统传输数据的接口。通信接口950的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆,ISDN)、(异步)数字用户线(DSL)单元、火线接口、USB接口等。例如,通信接口950可以联接到计算机网络、火线总线等。在其它实施例中,通信接口950可以物理地集成在计算机920的主板上,并且可以是诸如软DSL的软件过程等。
在各个实施例中,计算机系统900还可以包括使得在诸如HTTP协议、TCP/IP协议、RTP/RTSP协议等的网络上能够通信的软件。在本公开的可选实施例中,也可以使用例如IPX、UDP等的其它通信软件和传输协议。在一些实施例中,计算机920包括来自英特尔(Intel)的一个或多个至强(Xeon)微处理器作为处理器960。进一步地,在一个实施例中,计算机920包括基于UNIX的操作系统。
RAM 970和磁盘驱动器980是被配置成存储诸如本公开的实施例的包括可执行计算机代码、人类可读代码等的数据的有形介质的示例。其它类型的有形介质包括软盘、可移动硬盘、诸如CD-ROM、DVD和条形码的光学存储介质、诸如闪速存储器的半导体存储器、非暂时性只读存储器(ROMS)、电池支持的易失性存储器、网络存储装置等。RAM 970和磁盘驱动器980可以被配置成存储提供本公开的功能性的基本程序和数据结构。
提供本公开的功能性的软件代码模块和指令可以被存储在RAM970和磁盘驱动器980中。这些软件模块可以由处理器960执行。RAM970和磁盘驱动器980还可以提供用于存储根据本公开使用的数据的存储库。
RAM 970和磁盘驱动器980可以包括多个存储器,其包括用于在编程执行期间存储指令和数据的主随机存取存储器(RAM)和其中存储固定的非暂时性指令的只读存储器(ROM)。RAM 970和磁盘驱动器980可以包括为编程和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 970和磁盘驱动器980还可以包括诸如可移动闪速存储器的可移动存储系统。
总线子系统990提供使计算机920的各种部件和子系统按预期彼此通信的机制。虽然总线子系统990被示意性地示出为单个总线,但是总线子系统的可选实施例可以利用多个总线。
图9是能够实现本公开的计算机系统的代表。对于本领域普通技术人员将容易地显而易见的是,许多其它硬件和软件配置适于与本公开一起使用。例如,计算机可以是台式、便携式、机架安装或平板配置。另外,计算机可以是一系列联网计算机。进一步地,考虑使用诸如PentiumTM或ItaniumTM微处理器、来自超微半导体公司(Advanced Micro Devices,Inc.)的OpteronTM或AthlonXPTM微处理器等的其它微处理器。进一步地,可以想到诸如来自微软公司(Microsoft Corporation)的等、来自太阳微系统公司(Sun Microsystems)的Solaris、LINUX、UNIX等的其它类型的操作系统。在其它实施例中,上述技术可以在芯片或辅助处理板上实施。
本公开的各个实施例可以以软件或硬件或两者的组合的形式实施。逻辑可以被存储在计算机可读或机器可读的非暂时性存储介质中,作为适于引导计算机系统的处理器执行本公开的实施例中公开的步骤集的指令的集合。逻辑可以形成适于引导信息处理装置执行在本公开的实施例中公开的步骤集的计算机编程产品的部分。基于本文提供的公开内容和教导,本领域普通技术人员将理解实现本公开的其它方式和/或方法。
本文描述的数据结构和代码可以部分地或完全地存储在计算机可读存储介质和/或硬件模块和/或硬件装置上。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用光盘或数字视频光盘)的磁性存储装置和光学存储装置、或能够存储代码和/或数据的现在已知或以后开发的其它介质。本文描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器和/或现在已知或以后开发的其它硬件模块或设备。
本文描述的方法和进程可以部分地或完全体现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并执行代码和/或数据时,计算机系统执行相关联的方法和进程。方法和进程也可以部分或完全体现在硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行相关联的方法和进程。本文公开的方法和进程可以使用代码、数据和硬件模块或装置的组合来体现。
虽然为了清楚理解的目的已经详细地描述前述实施例,但本公开不限于提供的细节。存在实施本公开的许多可选方法。公开的实施例是说明性的而不是限制性的。

Claims (20)

1.一种生成包括分量码字的广义低密度奇偶校验码字,即GLDPC码字的方法,所述方法包括:
通过系统访问数据块,其中每个数据块包括一个或多个位;
通过所述系统生成所述GLPDC码字的第一分量码字,其中所述第一分量码字至少编码来自所述数据块的数据块并且具有第一长度和第一错误校正能力;以及
通过所述系统生成所述GLPDC码字的第二分量码字,其中所述第二分量码字至少编码所述数据块并且具有第二长度和第二错误校正能力,其中所述第二长度不同于所述第一长度,并且其中所述第二错误校正能力不同于所述第一错误校正能力。
2.根据权利要求1所述的方法,其中基于规则生成所述第一分量码字和所述第二分量码字,其中所述规则指定基于所述分量码字的长度来改变所述分量码字的错误校正能力。
3.根据权利要求2所述的方法,其中所述第二分量码字长于所述第一分量码字,并且所述规则指定基于所述第二长度大于所述第一长度,所述第二错误校正能力大于所述第一错误校正能力。
4.根据权利要求2所述的方法,其中访问所述数据块以生成所述分量码字的序列,其中所述规则指定所述分量码字的长度:
基于在所述序列的初始分量码字与所述序列的第一中间分量码字之间的所述分量码字而增加,
基于在所述序列的第一中间分量码字和所述序列的第二中间分量码字之间的所述分量码字而保持不变,以及
基于在所述序列的第二中间分量码字和所述序列的最后分量码字之间的所述分量码字而减小。
5.根据权利要求4所述的方法,其中所述规则指定所述分量码字的错误校正能力随着所述分量码字的长度的增加而增加,在所述分量码字的长度保持不变的情况下保持不变,并且随着所述分量码字的长度减小而减小。
6.根据权利要求1所述的方法,其中所述分量码字是在二阶伽罗瓦域上构建的博斯-查德胡里-霍昆格姆码字,即BCH码字,其中所述第一分量码字的第一长度和第一错误校正能力分别小于所述第二分量码字的第二长度和第二错误校正能力。
7.根据权利要求1所述的方法,其进一步包括通过所述系统解码所述分量码字,其中所述解码识别:
基于所述第一分量码字中的第一数量的错误并基于所述第一分量码字的第一错误校正能力,所述第一分量码字解码失败;以及
基于所述第二分量码字中的第二数量的错误并基于所述第二分量码字的第二错误校正能力,所述第二分量码字解码失败。
8.根据权利要求7所述的方法,其中所述解码进一步包括:
基于所述第一分量码字和所述第二分量码字的解码失败,确定所述第一分量码字和所述第二分量码字具有共有的数据块;
基于所述第一分量码字和所述第二分量码字共有的数据块来擦除所述数据块;以及
基于所述数据块的擦除再次解码所述第一分量码字和所述第二分量码字。
9.根据权利要求8所述的方法,其中所述解码进一步包括:
确定所述第二分量码字的第二数据块是与第三分量码字共有的;
确定所述第三分量码字的解码成功;以及
基于所述第三分量码字的解码成功来避免擦除所述第二分量码字的第二数据块。
10.一种存储指令的非暂时性计算机存储介质,所述指令与处理包括分量码字的广义低密度奇偶校验码字,即GLDPC码字的系统相关联并且在由所述系统的处理器执行时使得所述系统执行操作,所述操作包括:
访问数据块,其中每个数据块包括一个或多个位;
生成所述GLPDC码字的第一分量码字,其中所述第一分量码字至少编码来自所述数据块的数据块并且具有第一长度和第一错误校正能力;以及
生成所述GLPDC码字的第二分量码字,其中所述第二分量码字至少编码所述数据块并且具有第二长度和第二错误校正能力,其中所述第二长度不同于所述第一长度,并且其中所述第二错误校正能力不同于所述第一错误校正能力。
11.根据权利要求10所述的非暂时性计算机存储介质,其中基于规则生成所述第一分量码字和所述第二分量码字,其中所述规则指定基于所述分量码字的长度来改变所述分量码字的错误校正能力。
12.根据权利要求11所述的非暂时性计算机存储介质,其中所述第二分量码字长于所述第一分量码字,并且所述规则指定基于所述第二长度大于所述第一长度,所述第二错误校正能力大于所述第一错误校正能力。
13.根据权利要求11所述的非暂时性计算机存储介质,其中访问所述数据块以生成所述分量码字的序列,其中所述规则指定所述分量码字的长度:
基于在所述序列的初始分量码字与所述序列的第一中间分量码字之间的分量码字而增加,
基于在所述序列的第一中间分量码字和所述序列的第二中间分量码字之间的所述分量码字而保持不变,以及
基于在所述序列的第二中间分量码字和所述序列的最后分量码字之间的所述分量码字而减小。
14.根据权利要求13所述的非暂时性计算机存储介质,其中所述规则指定所述分量码字的错误校正能力随着所述分量码字的长度的增加而增加,在所述分量码字的长度保持不变的情况下保持不变,并且随着所述分量码字的长度减小而减小。
15.根据权利要求10所述的非暂时性计算机存储介质,其中所述分量码字是在二阶伽罗瓦域上构建的博斯-查德胡里-霍昆格姆码字,即BCH码字,其中所述第一分量码字的第一长度和第一错误校正能力分别小于所述第二分量码字的第二长度和第二错误校正能力。
16.一种系统,其包括:
处理器;以及
存储器,其包括与处理包括分量码字的广义低密度奇偶校验码字,即GLDPC码字相关联的计算机可读指令,所述计算机可读指令在由所述处理器执行时使得所述系统:
访问数据块,其中每个数据块包括一个或多个位;
生成所述GLPDC码字的第一分量码字,其中所述第一分量码字至少编码来自所述数据块的数据块并且具有第一长度和第一错误校正能力;以及
生成所述GLPDC码字的第二分量码字,其中所述第二分量码字至少编码所述数据块并且具有第二长度和第二错误校正能力,其中所述第二长度不同于所述第一长度,并且其中所述第二错误校正能力不同于所述第一错误校正能力。
17.根据权利要求16所述的系统,其中基于规则生成所述第一分量码字和所述第二分量码字,其中所述规则指定基于所述分量码字的长度来改变所述分量码字的错误校正能力。
18.根据权利要求16所述的系统,其中所述计算机可读指令进一步使得所述系统解码所述分量码字,其中所述解码识别:
基于所述第一分量码字中的第一数量的错误并基于所述第一分量码字的第一错误校正能力,所述第一分量码字解码失败;以及
基于所述第二分量码字中的第二数量的错误并基于所述第二分量码字的第二错误校正能力,所述第二分量码字解码失败。
19.根据权利要求18所述的系统,其中所述解码进一步包括:
基于所述第一分量码字和所述第二分量码字的解码失败,确定所述第一分量码字和所述第二分量码字具有共有的数据块;
基于所述第一分量码字和所述第二分量码字共有的数据块来擦除所述数据块;以及
基于所述数据块的擦除再次解码所述第一分量码字和所述第二分量码字。
20.根据权利要求19所述的系统,其中所述解码进一步包括:
确定所述第二分量码字的第二数据块是与第三分量码字共有的;
确定所述第三分量码字的解码成功;以及
基于所述第三分量码字的解码成功来避免擦除所述第二分量码字中的第二数据块。
CN201711474765.9A 2017-05-26 2017-12-29 具有可变长度分量的广义低密度奇偶校验码 Active CN108932177B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/607,234 US10153785B1 (en) 2017-05-26 2017-05-26 Generalized low-density parity-check (GLDPC) code with variable length constituents
US15/607,234 2017-05-26

Publications (2)

Publication Number Publication Date
CN108932177A true CN108932177A (zh) 2018-12-04
CN108932177B CN108932177B (zh) 2021-12-28

Family

ID=64401583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711474765.9A Active CN108932177B (zh) 2017-05-26 2017-12-29 具有可变长度分量的广义低密度奇偶校验码

Country Status (2)

Country Link
US (1) US10153785B1 (zh)
CN (1) CN108932177B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112331244A (zh) * 2019-07-18 2021-02-05 爱思开海力士有限公司 广义低密度奇偶校验码的软输入软输出分量代码解码器
CN113748414A (zh) * 2019-03-15 2021-12-03 铠侠股份有限公司 错误校正码结构

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10404280B2 (en) * 2015-11-19 2019-09-03 Westhold Corporation Error correction using cyclic code-based LDPC codes
KR20200126178A (ko) 2019-04-29 2020-11-06 삼성전자주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
CN113381840B (zh) * 2020-03-10 2022-06-10 华为技术有限公司 一种信息处理方法及装置
US11662941B2 (en) * 2020-10-13 2023-05-30 Western Digital Technologies, Inc. System and method for mitigating effect of erase cells on adjacent cells
EP4233177A4 (en) * 2020-11-16 2023-11-15 Huawei Technologies Co., Ltd. EFFICIENT DECODING OF GLDPC CODES

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101159515A (zh) * 2007-11-22 2008-04-09 普天信息技术研究院有限公司 一种可变长低密度奇偶校验码的编码方法及系统
US20100253555A1 (en) * 2009-04-06 2010-10-07 Hanan Weingarten Encoding method and system, decoding method and system
CN104081358A (zh) * 2011-11-18 2014-10-01 桑迪士克企业知识产权有限责任公司 用于解码具有多个奇偶校验段的码字的系统、方法和设备
US20150106680A1 (en) * 2013-10-14 2015-04-16 Nec Laboratories America, Inc. Multiple component codes based generalized low-density parity-check codes for high-speed optical transport
WO2016099646A1 (en) * 2014-12-18 2016-06-23 Apple Inc. Gldpc soft decoding with hard decision inputs
US20160266968A1 (en) * 2015-03-09 2016-09-15 Kabushiki Kaisha Toshiba Memory controller, storage device and decoding method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386879B2 (en) 2007-08-23 2013-02-26 Nec Laboratories America, Inc. GLDPC encoding with Reed-Muller component codes for optical communications
US8176381B2 (en) * 2008-05-08 2012-05-08 Nec Laboratories America, Inc. Multidimensional turbo product codes and generalized low-density parity-check codes with component reed-solomon codes for optical transmission
US8677227B2 (en) * 2010-08-25 2014-03-18 Royal Institution for the Advancement of Learning / McGill University Method and system for decoding
US10230401B2 (en) * 2015-03-10 2019-03-12 Toshiba Memory Corporation Memory controller for a non-volatile memory, memory system and method
US10402595B2 (en) * 2016-03-11 2019-09-03 Cnex Labs, Inc. Computing system with non-orthogonal data protection mechanism and method of operation thereof

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101159515A (zh) * 2007-11-22 2008-04-09 普天信息技术研究院有限公司 一种可变长低密度奇偶校验码的编码方法及系统
US20100253555A1 (en) * 2009-04-06 2010-10-07 Hanan Weingarten Encoding method and system, decoding method and system
CN104081358A (zh) * 2011-11-18 2014-10-01 桑迪士克企业知识产权有限责任公司 用于解码具有多个奇偶校验段的码字的系统、方法和设备
US20150106680A1 (en) * 2013-10-14 2015-04-16 Nec Laboratories America, Inc. Multiple component codes based generalized low-density parity-check codes for high-speed optical transport
WO2016099646A1 (en) * 2014-12-18 2016-06-23 Apple Inc. Gldpc soft decoding with hard decision inputs
US20160266968A1 (en) * 2015-03-09 2016-09-15 Kabushiki Kaisha Toshiba Memory controller, storage device and decoding method

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
于洋文: "GLDPC码的构造及译码性能研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
杨艺宾: "广义LDPC码技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113748414A (zh) * 2019-03-15 2021-12-03 铠侠股份有限公司 错误校正码结构
CN113748414B (zh) * 2019-03-15 2024-03-15 铠侠股份有限公司 错误校正码结构
CN112331244A (zh) * 2019-07-18 2021-02-05 爱思开海力士有限公司 广义低密度奇偶校验码的软输入软输出分量代码解码器
CN112331244B (zh) * 2019-07-18 2024-03-05 爱思开海力士有限公司 广义低密度奇偶校验码的软输入软输出分量代码解码器

Also Published As

Publication number Publication date
US10153785B1 (en) 2018-12-11
US20180343020A1 (en) 2018-11-29
CN108932177B (zh) 2021-12-28

Similar Documents

Publication Publication Date Title
CN108932177A (zh) 具有可变长度分量的广义低密度奇偶校验码
CN109428605B (zh) 利用校正子解码分量代码的用于g-ldpc码的位翻转解码器
CN108933602B (zh) 用于低密度奇偶校验解码的深度学习
CN106856103B (zh) 用于与非闪存的涡轮乘积码
CN109873645B (zh) 用于多个字线失败的软芯片猎杀恢复
US10445175B2 (en) Controller and operating method thereof
CN108933605A (zh) 低密度奇偶校验(ldpc)解码的提前终止
US10090865B2 (en) Performance optimization in soft decoding of error correcting codes
US10205469B2 (en) Low latency soft decoder architecture for generalized product codes
KR20160090054A (ko) 플래시 메모리 시스템 및 그의 동작 방법
CN109560818A (zh) 用于ldpc码的改进的最小和解码
CN109873646A (zh) 使用级联码的软芯片猎杀恢复
US10090862B2 (en) Hybrid soft decoding algorithm for multiple-dimension TPC codes
CN103514061A (zh) 用于打破陷阱集的装置和方法
CN109586731A (zh) 用于解码纠错码的系统和方法
US10326473B2 (en) Symbol-based coding for NAND flash devices
US10303364B2 (en) Techniques for low-latency chase decoding of turbo product codes with soft information
JP7237674B2 (ja) メモリシステム
US10187086B2 (en) State-based decoding of product codes
KR20200033688A (ko) 에러 정정 회로 및 이의 동작 방법
JP2022124682A (ja) メモリシステム
GB2531783A (en) Method and device for removing error patterns in binary data
US20170161141A1 (en) Method and apparatus for correcting data in multiple ecc blocks of raid memory
US20200089417A1 (en) Memory system
CN113496754A (zh) 电子装置

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