CN109818626A - 解码低密度奇偶校验码的方法、解码器及存储器系统 - Google Patents
解码低密度奇偶校验码的方法、解码器及存储器系统 Download PDFInfo
- Publication number
- CN109818626A CN109818626A CN201811397209.0A CN201811397209A CN109818626A CN 109818626 A CN109818626 A CN 109818626A CN 201811397209 A CN201811397209 A CN 201811397209A CN 109818626 A CN109818626 A CN 109818626A
- Authority
- CN
- China
- Prior art keywords
- block
- target sub
- reliability
- decoding
- sub
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1068—Adding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1128—Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2948—Iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/615—Use of computational or mathematical techniques
- H03M13/616—Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Computing Systems (AREA)
- Error Detection And Correction (AREA)
Abstract
本公开提供了解码低密度奇偶校验码的方法、解码器及存储器系统。一种解码低密度奇偶校验(LDPC)码的方法,包括:将LDPC码的奇偶校验矩阵划分为多个子块。该方法还包括:对于多次解码迭代中的每一个,在解码调度中执行多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于多次解码迭代中的当前解码迭代,基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性,并基于每个目标子块的可靠性来调整解码调度。
Description
相关申请的交叉引用
本申请要求2017年11月22日提交给韩国知识产权局(KIPO)的韩国专利申请No.10-2017-0156549的优先权,其公开内容通过引用方式全部合并于此。
技术领域
与示例实施例一致的方法和装置总体而言涉及一种半导体集成电路,更具体地,涉及一种解码低密度奇偶校验(LDPC)码的方法、解码器和执行该方法的系统。
背景技术
错误校正码(ECC)或错误检查和校正是数字通信和数据存储系统中用于稳健信息传输的重要因素。低密度奇偶校验(LDPC)是最有希望的逼近香农极限的错误校正码之一,并且已经在如下的许多工业标准中考虑过,例如WLAN(802.11n)、WiMAX(802.16e)、DVB-S2、CMMB、10GBaseT(802.3an)、存储器系统等。通常利用迭代处理循环对LDPC码进行解码,以在中等复杂度的情况下获得最佳的解码性能。这种迭代处理循环被称为解码迭代。随着解码迭代的次数增加,解码吞吐量降低,并且解码延迟增加。大量计算器可以包括在LDPC解码器中以实现高的解码数据率,这导致芯片面积大,功耗高。随着无线和便携式计算装置的需求不断增长以及降低封装成本的需求不断增加,LDPC解码器的低功率芯片实现变得至关重要。
发明内容
根据示例实施例,一种解码低密度奇偶校验(LDPC)码的方法包括将LDPC码的奇偶校验矩阵划分为多个子块。该方法还包括:对于多次解码迭代中的每一次:在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代;基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及基于每个目标子块的可靠性来调整解码调度。
根据示例实施例,一种低密度奇偶校验(LDPC)解码器,其将LDPC码的奇偶校验矩阵划分为多个子块,并对多次解码迭代中的每一个执行解码操作,所述低密度奇偶校验解码器包括:变量节点处理器和校验节点处理器,其配置为在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代。LDPC解码器还包括:可靠性估计器,其配置为基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及更新管理器,其配置为基于每个目标子块的可靠性来调整所述解码调度。
根据示例实施例,一种存储器系统包括:存储器设备,其包括多个存储器单元;存储器控制器,其配置为控制所述存储器设备的操作;以及低密度奇偶校验(LDPC)解码器,其配置为:将从多个存储器单元读取的LDPC码的奇偶校验矩阵划分为多个子块;以及对多次解码迭代中的每一个执行解码操作。LDPC解码器包括:变量节点处理器和校验节点处理器,其配置为在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代。LDPC解码器还包括可靠性估计器,其配置为基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及更新管理器,其配置为基于每个目标子块的可靠性来调整所述解码调度。
附图说明
图1是示出根据示例实施例的低密度奇偶校验(LDPC)码的方法的流程图。
图2是示出根据示例实施例的LDPC解码器的框图。
图3A、图3B和图3C是用于描述用于LDPC码解码的奇偶校验矩阵(PCM)的示图。
图4A、图4B、图4C、图4D和图4E是示出根据示例实施例的划分PCM的方法的示图。
图5A和图5B是用于描述用于LDPC码解码的调度表的示图。
图6是示出根据示例实施例的解码LDPC码的方法的流程图。
图7是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。
图8是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。
图9A、图9B、图9C、图9D、图9E和图9F是示出通过图7和图8的方法更新调度表的示例序列的示图。
图10是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。
图11A、图11B、图11C、图11D和图11E是示出通过图10的方法更新调度表的示例序列的示图。
图12是示出根据示例实施例的确定参考可靠性的方法的示图。
图13是示出根据示例实施例的存储器系统的框图。
图14是示出包括在图13的存储器系统中的错误校正码(ECC)解码器的示例实施例的框图。
图15A和图15B是用于描述根据示例实施例的解码时间的减少的示图。
图16是示出根据示例实施例的计算系统的框图。
具体实施方式
各示例实施例可以提供一种解码LDPC码的方法以用于有效的错误检查和校正。
各示例实施例可以提供一种LDPC解码器以用于有效的错误检查和校正。
各示例实施例可以提供一种包括LDPC解码器的存储器系统以用于有效的错误检查和校正。
根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果自适应地调整解码调度,来减少解码时间和功耗。
图1是示出根据示例实施例的低密度奇偶校验(LDPC)码的方法的流程图。
参照图1,将LDPC码的奇偶校验矩阵(parity check matrix)划分为多个子块(S10)。下面将参考图3A至图4E描述奇偶校验矩阵和奇偶校验矩阵的划分。
关于多次解码迭代中的每个,执行多个子块中的各目标子块中的每个的节点操作,其中基于与当前解码迭代相对应的解码调度来确定目标子块(S20)。对数似然比(LLR)可以表示LDPC解码消息,并且由节点操作改变解码消息。因此,LDPC解码操作或节点操作可以被称为更新操作。可以通过本领域技术人员公知的各种方案来执行节点操作。
基于节点操作的结果来估计各目标子块中的每个的可靠性(S30)。在一些示例实施例中,如下面将参考图7所述,可以使用目标子块的解码消息的LLR来估计目标子块的可靠性。在其他示例实施例中,如下面将参考图8所述,可以使用目标子块的错误比特数作为节点操作的结果来估计目标子块的可靠性。
基于可靠性来调整与下一解码迭代对应的解码调度(S40)。根据示例实施例,可以执行解码调度的调整,使得当估计目标子块的可靠性大于当前解码迭代中的参考可靠性时,在下一个解码操作中省略目标子块的节点操作。
通过LDPC解码过程期间的重复的解码迭代,从信道接收到的各值会聚在码字上。随着解码迭代的重复,错误比特数逐渐减少,并且随着解码迭代的重复进行,可能发生无比特错误的子块。更新无比特错误或少量比特错误的子块不会对解码结果的改善造成影响,这导致解码时间和功耗的增加。
根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果自适应地调整解码调度,来减少解码时间和功耗。
图2是示出根据示例实施例的LDPC解码器的框图。
参考图2,LDPC解码器1000可以包括变量节点处理器100(VNP)、校验节点处理器200(CNP)、可靠性估计器300(RBEST)和更新管理器400(UDMNG)。
LDPC解码器1000将LDPC码的奇偶校验矩阵划分为多个子块,并且针对多次解码迭代重复地执行解码操作。
变量节点处理器100和校验节点处理器200对多个子块中的各目标子块中的每个执行节点操作。基于与当前解码迭代相对应的解码调度来确定目标子块。可靠性估计器300基于节点操作的结果来估计各目标子块中的每个的可靠性。更新管理器400基于可靠性来调整与下一解码迭代相对应的解码调度。
可靠性估计器300可以将节点操作的结果与至少一个参考值进行比较,并且基于比较结果生成具有可靠性的值的可靠性信号RB。可以基于在处理器100和200之间传送的消息MSG来获得节点操作的结果。更新管理器400可以基于可靠性信号RB来调整解码调度。在一些示例实施例中,可靠性信号RB可以具有第一值VL1和第二值VL2中的一个。在这种情况下,第一值VL1可以表示可靠性相对较高,第二值VL2可以表示可靠性相对较低。在其他示例实施例中,可靠性信号RB可以具有三个值或更多个值中的一个,例如,第一值VL1、第二值VL2和第三值VL3中的一个。在这种情况下,可以使用可靠性信号RB的三个值或更多个值,将可靠性划分为三个范围或更多个范围。
在一些示例实施例中,更新管理器400可以包括调度表SCHTB410。调度表410可以表示每个子块与相应的解码迭代之间的映射关系,在所述相应解码迭代中执行每个子块的节点操作。更新管理器400可以基于可靠性来更新调度表410的映射关系以用于后续的解码迭代。更新管理器400可以参考调度表的映射关系来生成控制信号UPCON以控制处理器100和200的节点操作。
可靠性估计器300和更新管理器400可以实现为硬件、软件或硬件和软件的组合。可靠性估计器300和更新管理器400的至少一部分可以实现为计算机程序产品,该计算机程序产品实施在其中具有计算机可读程序代码的一个或多个计算机可读介质中。
图3A、图3B和图3C是用于描述用于LDPC码解码的奇偶校验矩阵(PCM)的示图。
LDPC码具有接近信道容量的错误校正能力,并且广泛用于通信系统、通信标准、存储器控制器等中。LDPC码是线性块码,其可以被定义为奇偶校验矩阵(PCM)。这里,代码的定义可以是信息与奇偶性之间的关系。
具有码字长度n和信息长度k的LDPC码可以由大小为(n-k)*n的PCM表示。由于码字长度较长,因此LDPC码具有更高的校正能力。例如,存储器控制器可以使用长于1KB的码字。长码字的PCM的大小非常大,并且难以存储大尺寸的PCM。
为了解决这些问题,可以将PCM划分为多个子块,并且可以通过每个子矩阵的信息(例如,每个子矩阵的位置、每个子矩阵的形状等)来定义PCM。这样定义的LDPC码可以被称为准循环LDPC(QC-LDPC)码。例如,假设码字长度是1055比特,信息长度是422(=1055-633)。如果子矩阵的大小是211,则五个子矩阵可以布置在每行(1055/211=5)中,并且三个子矩阵可以布置在每列(633/211=3)中,如图3A所示。可以通过单位矩阵的循环移位来获得每个子矩阵。如图3B所示,使用移位器数量的子矩阵,PCM可以被简化为3*5矩阵。换句话说,与633*1055矩阵的表示相比较,可以简单地表示PCM。QC-LDPC码可以有效地应用于各种系统。
图3C示出了Tanner图的示例。Tanner图包括变量节点、检查节点和连接各变量节点和各检查节点的边。变量节点与码字比特相关,并且检查节点与奇偶校验约束相关。PCM的分量“1”对应于Tanner图的边。连接到每个节点的边的数量被定义为节点的度数。
图4A、图4B、图4C、图4D和图4E是示出根据示例实施例的划分PCM的方法的示图。
作为非限制性示例,在图4A至图4E中示出了24个子矩阵SM11至SM18、SM21至SM28和SM31至SM38。由虚线框表示的每个矩形表示图4A至图4E中的每个子块。
参照图4A至图4E,划分后的子块中的每个可以包括至少一个子矩阵行、至少一个子矩阵列和/或至少一个子矩阵。
图4A示出了子矩阵以一列为单位被划分为八个子块SB1至SB8的情况,图4B示出了子矩阵以两列为单位被划分为四个子块SB1至SB4的情况。基于这种划分的解码可以被称为逐列解码。图4C示出了子矩阵以一行为单位被划分为三个子块SB1至SB3的情况,并且基于这种划分的解码可以被称为逐行解码。图4D和图4E示出了每个子块包括一个或多个子矩阵的其他示例的情况。
QC-LDPC码将诸如子矩阵大小、子矩阵形状等的结构约束应用于PCM,以促进LDPC解码的实现和管理。LDPC解码器被设计为在每个时钟周期中处理一个或多个子矩阵。此外,LDPC解码器可以被设计为以如图4A至图4E所示的子块为单位同时处理子矩阵,以提高数据输入输出和计算的效率。可以定义待更新的子块的顺序,其可以被称为LDPC码的解码调度。
在下文中,基于逐列解码来描述示例实施例,并且将理解,相同的示例实施例可以应用于逐行解码。
图5A和图5B是用于描述用于LDPC码解码的调度表的示图。
如图5A所示,图3B中的PCM(S3x5)可以以一列子矩阵为单位被划分为第一子块SB1至第五子块SB5。用于这种划分的解码调度可以由图5B的调度表SCHTB表示。
调度表SCHTB表示每个子块与对应的解码迭代之间的映射关系,在所述解码迭代中执行每个子块的节点操作。换句话说,每个重置迭代次数NITR被分配给每个子块编号NSB。在图5B的示例解码调度的情况下,第一子块SB1、第三子块SB3和第五子块SB5对应于第K次解码迭代(即,在当前解码迭代中)中的各目标子块,其中K是自然数。换句话说,在第K次解码迭代中,针对第一子块SB1、第三子块SB3和第五子块SB5执行节点操作。关于第二子块SB2,在第K次解码迭代中省略节点操作,但是在第(K+1)次解码迭代中执行节点操作。关于第四子块SB4,在第K次解码迭代和第(K+1)次解码迭代中省略节点操作,但是在第(K+2)次解码迭代中执行节点操作。使用表示这种解码调度的调度表SCHTB,可以执行自适应调度,如下所述。
图6是示出根据示例实施例的解码LDPC码的方法的流程图。
参见图6,当前迭代次数NITR_P被重置为初始值(例如,“1”)(S111),并且当前子块编号NSB被重置为初始值(例如,“1”)(S112)。将当前迭代次数NITR_P与被映射至当前子块编号NSB的重置迭代次数NITR进行比较(S113)。
在当前迭代次数NITR_P等于重置迭代次数NITR(S113:是)时,执行当前子块的节点操作(S114),估计当前子块的可靠性(S115),并且基于估计的可靠性来更新被映射到当前子块编号NSB的重置迭代次数NITR(S116)。在当前迭代次数NITR_P与重置迭代次数NITR不同(S113:否)时,省略了当前子块的节点操作和解码调度调整。
此后,在当前子块编号NSB不同于最大子块编号MXA(S117:否)时,将当前子块编号NSB增加1(S118),针对下一个子块重复上述序列(例如,S113至S117)。
在当前子块编号NSB等于最大子块编号MXA(S117:是)时,确定解码是否成功(S119)。当解码成功(S119:是)时,提供校正后的数据CD(S120),并且解码处理结束。
当解码未成功(S119:否)时,将当前迭代次数NITR_P与最大迭代次数MXB进行比较(S121)。在当前迭代次数NITR_P不同于最大迭代次数MXB(S121:否)时,将当前迭代次数NITR_P增加1(S122)并且针对下一次解码迭代重复上述序列(例如,S112至S121)。直到最后的解码迭代为止解码都未成功(S121:是)的情况下,激活错误信号ERR(S123),并且解码处理结束。
在下文中,将参考图7到图11E描述包括在图6中的可靠性估计和解码调度调整。
图7是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。图7示出了在第K次解码迭代(即,NITR_P=K)中的节点操作之后,目标子块的可靠性估计和解码调度调整的示例。可以在执行目标子块的节点操作之后,基于目标子块的解码消息来计算目标子块的码字比特的后验概率(posteriori probabilities),并且可以基于后验概率来估计可靠性。
参照图7,当前码字比特编号(present codeword bit number)“i”被重置为初始值(例如,“1”)(S211)。计算当前码字比特的后验概率APPi(S212),并且将后验概率APPi与参考值PTH进行比较(S213)。例如,图2中的变量节点处理器100可以使用信道输入和从校验节点处理器200传送来的消息MSG来计算后验概率APPi,并且可靠性估计器300可以通过比较所提供的后验概率APPi和参考值PTH来确定可靠性信号RB的值。
当后验概率APPi小于参考值PTH(S213:是)时,可靠性信号RB的值被确定为第一值VL1(S216)。当后验概率APPi大于或等于参考值PTH(S213:否)时,将当前码字比特编号“i”与最大码字比特编号MXC进行比较(S214)。在当前码字比特编号“i”不同于最大码字比特编号MXC(S214:否)时,当前码字比特编号“i”增加1(S215),并且针对下一个码字比特重复上述序列(例如,S212至S214)。在当前码字比特编号“i”等于最大码字比特编号MXC(S214:是)时,可靠性信号RB的值被确定为第二值VL2(S217)。
结果,当后验概率APPi(i=1至MXC)中的任何一个或任何组合小于参考值PTH时,估计可靠性小于参考可靠性,并且可靠性被确定为第一个值VL1。相反,当所有后验概率APPi(i=1至MXC)都大于或等于参考值PTH时,估计可靠性大于参考可靠性,并且可靠性被确定为第二值VL2。
图2中的更新管理器400可以基于可靠性信号RB的值来调整解码调度。如上所述,更新管理器400可以包括调度表SCHTB,并且更新管理器400可以通过改变被映射到调度表SCHTB中的子块编号NSB的重置迭代次数NITR来调整解码调度。
当可靠性信号RB的值是第一值VL1(S311:是)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+1(S312),以便可以在下一次解码迭代(即,第(K+1)次解码迭代)中执行相应子块的节点操作。相反,当可靠性信号RB的值是第二值VL2(S311:否)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+2(S313),以便可以在第(K+1)次解码迭代中省略相应子块的节点操作,但是在第(K+2)次解码迭代中执行相应子块的节点操作。
图8是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。图8示出了在第K次解码迭代(即,NITR_P=K)中的节点操作之后,目标子块的可靠性估计和解码调度调整的示例。可以在执行目标子块的节点操作之后,计算目标子块的错误比特数,并且可以基于错误比特数来估计可靠性。
参照图8,计算在第K次解码迭代之后(即,在当前解码迭代(NITR_P=K)之后)的目标子块的错误比特数NEB(S411),并且将错误比特数NEB与参考值NTH进行比较(S412)。例如,可以由出错检查器(syndrome checker)2854执行错误比特数NEB的计算,如下面参考图14所述,可靠性估计器300可以通过将所提供的错误比特数NEB和参考值NTH进行比较来确定可靠性信号RB的值。
当错误比特数NEB大于参考值NTH(S412:是)时,可靠性信号RB的值被确定为第一值VL1(S413)。当错误比特数NEB小于或等于参考值NTH(S412:否)时,可靠性信号RB的值被确定为第二值VL2(S414)。
结果,当目标子块的错误比特数大于参考值NTH时,估计可靠性小于参考可靠性,并且可靠性被确定为第一值VL1。相反,当目标子块的错误比特数小于或等于参考值NTH时,估计可靠性大于参考可靠性,并且可靠性被确定为第二值VL2。
图2中的更新管理器400可以基于可靠性信号RB的值来调整解码调度。如上所述,更新管理器400可以包括调度表SCHTB,并且更新管理器400可以通过改变被映射到调度表SCHTB中的子块编号NSB的重置迭代次数NITR来调整解码调度。
当可靠性信号RB的值是第一值VL1(S511:是)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+1(S512),以便可以在下一次解码迭代(即,第(K+1)次解码迭代)中执行相应子块的节点操作。相反,当可靠性信号RB的值是第二值VL2(S511:否)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+2(S513),以便可以在第(K+1)次解码迭代中省略相应子块的节点操作,但是在第(K+2)次解码迭代中执行相应子块的节点操作。
图9A、图9B、图9C、图9D、图9E和图9F是示出通过图7和图8的方法更新调度表的示例序列的示图。
图9A到图9F示出了关于两个连续解码迭代(即,第K次解码迭代(NITR_P=K)和第(K+1)次解码迭代(NITR_P=K+1))的解码调度调整。在每幅图中,示出了调度表SCHTB的调整之前的状态SCHTB(之前)和调整之后的状态SCHTB(之后)。
参见图9A和图9B,第二子块SB2和第四子块SB4对应于第k次解码迭代中的各目标子块,因为第二子块SB2和第子块SB4的重置迭代次数NITR等于作为K的当前迭代次数NITR_P。在第二子块SB2的情况下,因为可靠性信号RB的值是第二值VL2,所以估计可靠性相对高,并且将重置迭代次数NITR设置为K+2。在第四子块SB4的情况下,因为可靠性信号RB的值是第一值VL1,所以估计可靠性相对低,并且将重置迭代次数NITR设置为K+1。结果,可以在第(K+1)次解码迭代中省略可靠性高的第二子块SB2的节点操作,但是在第(K+2)次解码迭代中执行可靠性高的第二子块SB2的节点操作。相反,可以在第(K+1)次解码迭代中执行可靠性低的第四子块SB4的节点操作。
参见图9C到图9F,第一子块SB1、第三子块SB3、第四子块SB4和第五子块SB5对应于第(k+1)次解码迭代中的各目标子块,因为第一子块SB1、第三子块SB3、第四子块SB4和第五子块SB5的重置迭代次数NITR等于作为K+1的当前迭代次数NITR_P。在第一子块SB1和第三子块SB3的情况下,因为可靠性信号RB的值是第二值VL2,所以估计可靠性相对高,并且将重置迭代次数NITR设置为K+3。在第四子块SB4和第五子块SB5的情况下,因为可靠性信号RB的值是第一值VL1,所以估计可靠性相对低,并且将重置迭代次数NITR设置为K+2。结果,可以在第(K+2)次解码迭代中省略可靠性高的第一子块SB1和第三子块SB3的节点操作,但是在第(K+3)次解码迭代中执行可靠性高的第一子块SB1和第三子块SB3的节点操作。相反,可以在第(K+2)次解码迭代中执行可靠性低的第四子块SB4和第五子块SB5的节点操作。
如参照图7至图9F所描述的那样,对于第K次解码迭代中的每个目标子块,可以将节点操作的结果与参考值进行比较。可以估计可靠性,使得当基于比较结果估计可靠性小于参考可靠性时,将可靠性确定为第一值,并且当基于比较结果估计可靠性大于参考可靠性时,将可靠性确定为第二值。当目标子块的可靠性是第一值时,可以调整解码调度,使得在第(K+1)次解码迭代中执行目标子块的节点操作。当目标子块的可靠性是第二值时,可以调整解码调度,使得不在第(K+1)次解码迭代中执行目标子块的节点操作,而是在第(K+2)解码迭代中执行目标子块的节点操作。
结果,在当前解码迭代中,当估计目标子块的可靠性大于参考可靠性时,可以在下一个解码操作中省略目标子块的节点操作。这样,根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果来自适应地调整解码调度,从而减少解码时间和功耗。
图10是示出根据示例实施例的可靠性估计和解码调度调整的方法的流程图。图10示出了在第K次解码迭代(即,NITR_P=K)中的节点操作之后,目标子块的可靠性估计和解码调度调整的示例。可以在执行目标子块的节点操作之后,计算目标子块的错误比特数,并且可以基于错误比特数来估计可靠性。
参照图10,计算在第K次解码迭代(即,当前解码迭代(NITR_P=K))之后的目标子块的错误比特数NEB(S611),并且将错误比特数NEB与第一参考值NTH1和第二参考值NTH2进行比较(S612,S613)。例如,错误比特数NEB的计算可以由出错检查器2854执行,如下面参考图14所述,并且可靠性估计器300可以通过比较所提供的错误比特数NEB和参考值NTH来确定可靠性信号RB的值。
当错误比特数NEB大于第一参考值NTH1(S612:是)时,可靠性信号RB的值被确定为第一值VL1(S614)。当错误比特数NEB小于或等于第一参考值NTH1(S612:否)并且大于第二参考值NTH2(S613:是)时,可靠性信号RB的值被确定为第二值VL2(S615)。当错误比特数NEB小于或等于第一参考值NTH1(S612:否)并且小于或等于第二参考值NTH2(S613:否)时,可靠性信号RB的值被确定为第三值VL3(S616)。
结果,当目标子块的错误比特数大于第一参考值NTH1时,估计可靠性小于第一参考可靠性,并且可靠性被确定为第一值VL1。当目标子块的错误比特数小于或等于第一参考值NTH1并且大于第二参考值NTH2时,估计可靠性小于第一参考可靠性并且大于第二参考可靠性,并且可靠性被确定为第二值VL1。当目标子块的错误比特数小于或等于第二参考值NTH2时,估计可靠性大于第二参考可靠性,并且可靠性被确定为第三值VL3。这里,第一参考值NTH1大于第二参考值NTH2,并且第一参考可靠性小于第二参考可靠性。
图2中的更新管理器400可以基于可靠性信号RB的值来调整解码调度。如上所述,更新管理器400可以包括调度表SCHTB,并且更新管理器400可以通过改变被映射至调度表SCHTB中的子块编号NSB的重置迭代次数NITR来调整解码调度。
当可靠性信号RB的值是第一值VL1(S711:是)时,更新管理器400可以将被映射至相应子块的重置迭代次数NITR从K改变为K+1(S713),以便可以在下一次解码迭代(即,第(K+1)次解码迭代)中执行相应子块的节点操作。当可靠性信号RB的值是第二值VL2(S712:是)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+2(S714),以便可以在第(K+1)次解码迭代中省略相应子块的节点操作,但是在第(K+2)次解码迭代中执行相应子块的节点操作。当可靠性信号RB的值是第三值VL3(S712:否)时,更新管理器400可以将被映射到相应子块的重置迭代次数NITR从K改变为K+3(S715),以便可以在第(K+1)次解码迭代和第(K+2)次解码迭代中省略相应子块的节点操作,但是在第(K+3)次解码迭代中执行相应子块的节点操作。
图11A、图11B、图11C、图11D和图11E是示出通过图10的方法来更新调度表的示例序列的示图。
图11A至图11E示出了针对两个连续的解码迭代(即,第K次解码迭代(NITR_P=K)和第(K+1)次解码迭代(NITR_P=K+1))的解码调度调整。在每幅图中,示出了调度表SCHTB的调整之前的状态SCHTB(之前)和调整之后的状态SCHTB(之后)。
参见图11A、图11B和图11C,第一子块SB1、第二子块SB2和第四子块SB4对应于第k次解码迭代中的各目标子块,因为第一子块SB1、第二子块SB2和第四子块SB4的重置迭代次数NITR等于作为K的当前迭代次数NITR_P。在第一子块SB1的情况下,因为可靠性信号RB的值是第一值VL1,所以估计可靠性相对较低,并且重置迭代次数NITR被设置为K+1。在第二子块SB2的情况下,因为可靠性信号RB的值是第三值VL3,所以估计可靠性相对高,并且重置迭代次数NITR被设置为K+3。在第四子块SB4的情况下,因为可靠性信号RB的值是第二值VL2,所以估计可靠性相对高,并且重置迭代次数NITR被设置为K+2。结果,可以在第(K+1)次解码迭代和第(K+2)次解码迭代中省略可靠性高的第二子块SB2的节点操作,但是在第(K+3)次解码迭代中执行中可靠性高的第二子块SB2的节点操作。可以在第(K+1)次解码迭代中省略可靠性居中的第四子块SB4的节点操作,但是在第(K+2)次解码迭代中执行可靠性居中的第四子块SB4的节点操作。可以在第(K+1)次解码迭代中执行可靠性低的第一子块SB1的节点操作。
参见图11D到图11E中,第一子块SB1和第三子块SB3对应于第(k+1)次解码迭代中的各目标子块,因为第一子块SB1和第三子块SB3的重置迭代次数NITR与作为K+1的当前迭代次数NITR_P相等。在第一子块SB1的情况下,因为可靠性信号RB的值是第一值VL1,所以估计可靠性低,并且重置迭代次数NITR被设置为K+2。在第三子块SB3的情况下,因为可靠性信号RB的值是第三值VL3,所以估计可靠性高,并且重置迭代次数NITR被设置为K+4。结果,可以在第(K+2)次解码迭代中执行可靠性低的第一子块SB1的节点操作。相反,可以在第(K+2)次解码迭代和第(K+3)次解码迭代中省略可靠性高的第三子块SB3的节点操作,但是在第(K+4)次解码迭代中执行可靠性高的第三子块SB3的节点操作。
参考图10到图11E,对于第K次解码迭代中每个目标子块,可以将节点操作的结果与两个参考值进行比较,并且可以将可靠性估计为三个范围中的一个。可以估计可靠性,使得当可靠性被估计处于低范围时,将可靠性确定为第一值,当可靠性被估计为处于居中范围时,将可靠性确定为第二值,以及当可靠性被估计为处于高范围时,将可靠性确定为第三值。当目标子块的可靠性是第一值时,可以调整解码调度,使得在第(K+1)次解码迭代中执行目标子块的节点操作。当目标子块的可靠性是第二值时,可以调整解码调度,使得在第(K+1)次解码迭代中不执行目标子块的节点操作,而是在第(K+2)次解码迭代中执行目标子块的节点操作。当目标子块的可靠性是第三值时,可以调整解码调度,使得在第(K+1)次解码迭代和第(K+2)次解码迭代中不执行目标子块的节点操作,而是在第(K+3)次解码迭代中执行目标子块的节点操作。
虽然参考图10至11E描述了使用两个参考值将可靠性估计为三个范围中的一个的示例实施例,但是可以使用三个或更多个参考值将可靠性估计为四个或更多个范围中的一个。
结果,在当前解码迭代中估计目标子块的可靠性相对较高时,可以在至少一个后续解码操作中省略目标子块的节点操作。这样,根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果自适应地调整解码调度,来减少解码时间和功耗。
图12是示出根据示例实施例的确定参考可靠性的方法的示图。
在图12中,横轴表示解码迭代次数,纵轴表示可靠性。TH1至TH4分别是与第一次解码迭代至第四次解码迭代相对应的参考可靠性。如图12所示,随着解码迭代重复,参考可靠性可以增加。随着解码迭代重复,可靠性更高的子块的数量可以增加。因此,可以将参考可靠性设置为根据解码迭代次数而改变,并且可以进一步增强自适应调度的效率。虽然图12示出了参考可靠性根据解码迭代次数而线性增加,但是示例实施例不限于此。
图13是示出根据示例实施例的存储器系统的框图。
参照图13,半导体存储器系统2000可以包括存储器设备2100和存储器控制器2200。在一些示例实施例中,存储器设备2100可以包括非易失性存储器设备(例如,闪存设备)。在这种情况下,存储器设备2100可以通过调整存储器单元的阈值电压来存储数据。
存储器控制器2200连接到主机和存储器设备2100.存储器控制器2200被配置为响应于来自主机的请求访问存储器设备2100。例如,存储器控制器2200被配置为控制存储器设备2100的读取操作、写入操作、擦除操作和后台操作,以提供存储器设备2100和主机之间的接口。存储器控制器2200向存储器设备2100提供命令CMD和地址ADD,以与存储器设备2100交换读取数据RD和写入数据WD。
存储器控制器2200包括错误校正码(ECC)引擎2300,并且ECC引擎2300包括ECC编码器(ECCENC)2400和ECC解码器(ECCDEC)2500。
如果从主机接收到数据,则可以由ECC编码器2400对接收到的数据进行编码。ECC编码器2400可以使用奇偶校验矩阵对接收到的数据执行LDPC编码。编码后的数据作为写入数据被提供给存储器设备2100并存储在其中。写入数据可以包括用于解码的奇偶校验位。
在接收到来自主机的读取请求时,存储器控制器读出存储器设备2100中存储的数据作为读取数据。读取数据可以包括由于各种原因引起的错误。例如,错误可能由于存储器设备2100中的异常写入操作、异常读取操作和/或数据丢失引起.ECC解码器2500可以使用奇偶校验矩阵对读取数据执行LDPC解码以去除读取数据中的错误。LDPC解码中使用的奇偶校验矩阵与LDPC编码中使用的奇偶校验矩阵相同。可以提供LDPC解码的结果作为校正后的数据。
图14是说明包括在图13的存储器系统中的错误校正码(ECC)解码器的示例实施例的框图。
参考图14,ECC解码器2500可以包括读取数据管理器(RDMNG)2600、对数似然比映射器(LLRMP)2700和解码器2800。
读取数据管理器2600接收并存储从存储器设备2100读取的读取数据RD。读取数据RD可包括第一读取数据RD1和第二读取数据RD2。
当进行硬判决时,读取数据管理器2600接收使用正常读取电压从存储器设备2100读取的数据,并将接收到的数据存储为第一读取数据RD1。在硬判决或软判决期间,可以将存储的第一读取数据RD1提供给LLR映射器2700。
当进行软判决时,读取数据管理器2600接收使用部分读取电压从存储器设备2100读取的数据,并将接收到的数据存储为第二读取数据RD2。部分读取电压意味着接近正常读取电压但具有与正常读取电压不同的电压电平的电压。当进行软判决时,读取数据管理器2600将第二读数据RD2提供给LLR映射器2700。
LLR映射器2700被配置为将LLR值映射到所提供的读取数据RD1和RD2。在一些示例实施例中,LLR映射器2700可以包括存储有在硬判决期间待映射的LLR值的硬判决LLR寄存器和存储有在软判决期间待映射的LLR值的软判决LLR寄存器。
在硬判决期间,LLR映射器2700从读取数据管理器2600接收第一读取数据RD1。LLR映射器2700根据第一读取数据RD1的每个比特值,将第一读取数据RD1与相应的LLR值相映射。在软判决期间,LLR映射器2700从读取数据管理器2600接收第二读数据RD2。LLR映射器2700根据第二读数据RD2的每个比特值,将第二读数据RD2与相应的LLR值相映射。在硬判决或软判决期间,由LLR映射器2700执行的映射结果作为LLR数据而被输出到解码器2800。
解码器2800对接收到的LLR数据执行LDPC解码。在硬判决和软判决期间,可以使用相同的方法和设备对各个LLR数据进行LDPC解码。在LDPC解码期间,解码器2800根据奇偶校验矩阵更新校验节点和变量节点。解码器2800根据更新的结果(例如,后验概率)执行临时解码,并计算临时解码数据和奇偶校验矩阵,以根据计算结果来确定是否正确执行了解码。
例如,如果利用奇偶校验矩阵的计算结果是零矩阵,则确定正确地执行了解码。如果不是零矩阵,则确定未正确执行解码。如果正确执行了解码,则解码器2800输出解码后的数据作为校正后的数据CD。如果未正确执行解码(即,未校正读取数据RD的所有错误),则解码器2800重新更新各校验节点和各变量节点。
迭代地执行各校验节点和各变量节点的上述更新和临时解码。校验节点和变量节点的更新和临时解码可以构成单个解码循环,即,解码迭代。
当在解码器2800中进行硬判决并且基于硬判决的奇偶校验失败时,解码器2800将失败消息发送到读取数据管理器2600。读取数据管理器2600响应失败消息来将用于软判决的读取请求发送至图13中的存储器控制器2200。可替换地,当在解码器2800中进行硬判决并且基于硬判决的奇偶校验失败时,解码器2800直接将失败消息发送到存储器控制器2200。存储器控制器2200可以响应于失败消息或读取请求来准备用于软判决的读取操作。
解码器2800可以包括变量节点处理器(VNP)2810、第一交换网络(SWN1)2820、校验节点处理器(CNP)2830、第二交换网络(SWN2)2840和控制器2850。控制器2850可以包括可靠性估计器(RBEST)2851、更新管理器(UDMNG)2852、校正数据管理器(CDMNG)2853和出错检查器(SC)2854。
在LDPC解码期间,奇偶校验矩阵中的非零元素意味着相应的变量节点和相应的校验节点彼此连接。通过根据变量节点和校验节点的连接发送的数据来执行解码。
变量节点处理器2810存储从读取数据管理器2600提供的LLR数据,并且将存储的LLR数据作为变量节点消息VCMSG通过第一交换网络2820提供给校验节点处理器2830。
校验节点处理器2830参考所提供的变量节点消息VCMSG来比较关于每个校验节点的各变量节点的值,以提供校验节点消息CVMSG。将校验节点消息CVMSG通过第二交换网络2840提供给变量节点处理器2810。
变量节点处理器2810参考接收到的校验节点消息CVMSG来更新各变量节点和各校验节点的值。变量节点处理器2810根据变量节点和校验节点的更新后的值来执行解码。将解码结果作为解码数据提供给校正数据管理器2853。
校正数据管理器2853存储在变量节点处理器2810中执行的解码结果,并且根据出错检查器2854的解码是否成功执行来将校正后的数据CD或读取错误消息ERR输出到外部设备。
出错检查器2854根据存储在校正数据管理器2853中的解码数据来确定是否成功执行了解码。例如,出错检查器2854将解码数据乘以奇偶校验矩阵的转置矩阵,并根据乘法的结果是否是零矩阵来确定解码是否成功执行(或者是否所有错误都被校正了)。出错检查器2854向校正数据管理器2853提供确定结果。
可靠性估计器2851基于当前解码迭代中的节点操作的结果来估计每个目标子块的可靠性。更新管理器基于可靠性来调整与下一解码迭代对应的解码调度。可以通过基于调整后的解码调度来控制变量节点处理器2810、第一交换网络2820、校验节点处理器2830和第二交换网络2840的操作,从而执行根据示例实施例的自适应调度。
图15A和图15B是用于描述根据示例实施例的解码时间的减少的示图。图15A示出了顺序调度,图15B示出了根据示例实施例的自适应调度。
图15A和图15B示出了与第一次解码迭代NITR_P=1至第四次解码迭代NITR_P=4相对应的调度表的映射关系。如上所述,NSB是子块编号,NITR是被映射到每个子块编号的重置迭代次数。重置迭代次数NITR指示针对相应的子块必须执行节点操作的解码迭代次数。虚线圆圈表示与重置迭代次数NITR与当前迭代次数NITR_P相同的情况相对应的上述目标子块。
如上所述,通过LDPC解码过程期间的重复的解码迭代,从信道接收到的值会聚在码字上。随着解码迭代重复,错误比特数逐渐减少,并且随着解码迭代的重复进行,可能发生无比特错误的子块。更新无比特错误或少量比特错误的子块不会影响解码结果的改善,这导致解码时间和功耗的增加。
根据示例实施例,可以基于每次解码迭代中的估计的可靠性来省略一些子块的解码或节点操作。可以初始化重置迭代次数NITR,使得所有子块可以是第一次解码迭代中的各目标子块。在图15A的顺序调度的情况下,在四次解码迭代期间执行二十个子块处理。相反,在图15B的自适应调度的情况下,在四次解码迭代期间仅执行十四个子块处理。
这样,根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果自适应地调整解码调度,来减少解码时间和功耗。
图16是示出根据示例实施例的计算系统的框图。
参照图16,计算系统4000包括处理器4100、输入/输出集线器(IOH)4200、输入/输出控制器集线器(ICH)4300、至少一个存储器4400和显卡4500。
处理器4100可以执行各种计算功能,诸如执行用于执行计算或任务的软件。例如,处理器4100可以是微处理器、中央处理单元(CPU)、数字信号处理器等。处理器4100可以包括用于控制存储器4400的操作的存储器控制器4110。存储器4400可以包括存储从存储器控制器4110提供的数据的多个存储器设备。ECC解码器(ECC)4450可以是LDPC解码器,以基于根据如上所述的示例实施例的自适应调度来执行LDPC解码。在一些示例实施例中,如图16所示,ECC解码器可以包括在存储器4400中。在这种情况下,ECC解码器4450可以嵌入在存储器4400中的缓冲器芯片和/或存储器芯片中。在其他示例实施例中,ECC解码器4450可以包括在存储器控制器4110中。
输入/输出集线器4200可以管理处理器4100和诸如显卡4500之类的设备之间的数据传输。显卡4500可以控制用于显示图像的显示设备。输入/输出控制器集线器4300可以执行数据缓冲和接口仲裁,以有效地操作各种系统接口。图16中的组件可以耦合各种接口,例如加速图形端口(AGP)接口、外围组件接口(PCI)、外围组件接口快速(PCIe)、通用串行总线(USB)端口、串行高级技术附件(SATA)端口、低引脚数(LPC)总线、串行外设接口(SPI)、通用输入/输出(GPIO)等。
如上所述,根据示例实施例的解码LDPC码的方法、LDPC解码器和包括LDPC解码器的存储器系统可以通过基于节点操作的结果自适应地调整解码调度,来减少解码时间和功耗。
示例实施例可以应用于解码LDPC码的任何设备和系统。例如,示例实施例可以应用于诸如移动电话、智能电话、个人数字助理(PDA)、便携式多媒体播放器(PMP)、数码相机、便携式摄像机、个人计算机(PC)、服务器计算机、工作站、笔记本电脑、数字电视、机顶盒、便携式游戏机、导航系统之类的系统。
如在本发明构思的领域中传统的那样,描述了示例实施例,并且在附图中以功能块、单元和/或模块示出示例实施例。本领域技术人员将理解,这些块、单元和/或模块通过电子(或光学)电路物理地实现,例如通过逻辑电路、分立组件、微处理器、硬连线电路、存储元件、布线连接等物理地实现,其可以使用基于半导体的制造技术或其他制造技术形成。在由微处理器或类似物实现的块、单元和/或模块的情况下,可以使用软件(例如,微代码)对它们进行编程以执行本文所讨论的各种功能,并且可以可选地由固件和/或软件驱动。可替换地,每个块、单元和/或模块可以由专用硬件实现,或者作为执行某些功能的专用硬件和执行其他功能的处理器(例如,一个或多个编程微处理器和相关电路)的组合。此外,在不脱离本发明构思的范围的情况下,示例实施例的每个块、单元和/或模块可以在物理上分成两个或更多个交互和离散的块、单元和/或模块。此外,在不脱离本发明构思的范围的情况下,示例实施例的块、单元和/或模块可以物理地组合成更复杂的块、单元和/或模块。
上述方法的各种操作可以由能够执行操作的任何合适的装置执行,例如各种硬件和/或软件组件、电路和/或模块。
该软件可以包括用于实现逻辑功能的可执行指令的有序列表,并且可以在任何“处理器可读介质”中实施以供指令执行系统、装置或设备(例如,单核处理器或多核处理器或包含处理器的系统)使用或与其结合使用。
结合本文公开的示例实施例描述的方法或算法和功能的框或步骤可直接实施为硬件、由处理器执行的软件模块或两者的组合。如果以软件实施,则可将功能作为一个或多个指令或代码存储在有形的非暂时性计算机可读介质上或通过有形的非暂时性计算机可读介质传输。软件模块可以驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、寄存器、硬盘、可移动磁盘、CD ROM中、或本领域已知的任何其他形式的存储介质。
前述内容是对示例实施例的说明,而不应解释为对其进行限制。尽管已经描述了一些示例实施例,但是本领域技术人员将容易理解,在不实质上脱离本发明构思的情况下,可以在示例实施例中进行许多修改。
Claims (20)
1.一种解码低密度奇偶校验码的方法,该方法包括:
将所述低密度奇偶校验码的奇偶校验矩阵划分为多个子块;以及
对于多次解码迭代中的每一次:
在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代;
基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及
基于每个目标子块的可靠性来调整解码调度。
2.如权利要求1所述的方法,其中,所述调整解码调度包括:当在当前解码迭代中估计所述多个目标子块中的一个目标子块的可靠性大于参考值时,在所述当前解码迭代之后的下一解码迭代中省略所述一个目标子块的节点操作。
3.如权利要求1所述的方法,其中,基于每个目标子块的解码消息的对数似然比或每个目标子块的错误比特数来估计每个目标子块的可靠性,作为每个目标子块的节点操作的结果。
4.如权利要求1所述的方法,其中,估计所述可靠性包括:
将每个目标子块的节点操作的结果与参考值进行比较;以及
基于比较结果来确定每个目标子块的可靠性。
5.如权利要求1所述的方法,其中,调整解码调度包括:
当在第K次解码迭代中估计所述多个目标子块中的一个目标子块的可靠性小于参考值时,其中K是自然数,调整解码调度,使得在第(K+1)次解码迭代中执行所述一个目标子块的节点操作;以及
当在第K次解码迭代中估计所述一个目标子块的可靠性大于参考值时,调整解码调度,使得在第(K+1)次解码迭代中不执行所述一个目标子块的节点操作。
6.如权利要求1所述的方法,其中,估计所述可靠性包括:
在第K次解码迭代中将所述多个目标子块中的一个目标子块的节点操作的结果与参考值进行比较,其中K是自然数;
当估计所述一个目标子块的节点操作的结果小于所述参考值时,将所述一个目标子块的可靠性确定为第一值;以及
当估计所述一个目标子块的节点操作的结果大于所述参考值时,将所述一个目标子块的可靠性确定为第二值。
7.如权利要求6所述的方法,其中,调整所述解码调度包括:
当所述一个目标子块的可靠性是所述第一值时,调整所述解码调度,使得在第(K+1)次解码迭代中执行所述一个目标子块的节点操作;以及
当所述一个目标子块的可靠性是所述第二值时,调整所述解码调度,使得在第(K+1)次解码迭代中不执行所述一个目标子块的节点操作,而是在第(K+2)次解码迭代中执行所述一个目标子块的节点操作。
8.如权利要求1所述的方法,其中,估计所述可靠性包括:
在第K次解码迭代中将所述多个目标子块中的一个目标子块的节点操作的结果与第一参考值和第二参考值中的每一个进行比较,其中K是自然数;
当估计所述一个目标子块的节点操作的结果小于所述第一参考值时,将所述一个目标子块的可靠性确定为第一可靠性值;
当估计所述一个目标子块的节点操作的结果小于所述第二参考值且大于所述第一参考值时,将所述一个目标子块的可靠性确定为第二可靠性值;以及
当估计所述一个目标子块的节点操作的结果大于第二参考值时,将所述一个目标子块的可靠性确定为第三可靠性值。
9.如权利要求8所述的方法,其中,调整所述解码调度包括:
当所述一个目标子块的可靠性是所述第一可靠性值时,调整所述解码调度,使得在第(K+1)次解码迭代中执行所述一个目标子块的节点操作;
当所述一个目标子块的可靠性是所述第二可靠性值时,调整所述解码调度,使得在第(K+1)次解码迭代中不执行所述一个目标子块的节点操作,而是在第(K+2)次解码迭代中执行所述一个目标子块的节点操作;以及
当所述一个目标子块的可靠性是所述第三可靠性值时,调整所述解码调度,使得在第(K+1)次解码迭代和第(K+2)次解码迭代中不执行所述一个目标子块的节点操作,而是在第(K+3)次解码迭代中执行所述一个目标子块的节点操作。
10.如权利要求1所述的方法,其中,执行所述节点操作包括:确定每个目标子块的解码消息,以及
其中,估计所述可靠性包括:
基于每个目标子块的解码消息来确定每个目标子块的码字比特的后验概率;
将每个目标子块的后验概率与参考值进行比较;以及
基于比较结果来确定每个目标子块的可靠性。
11.如权利要求10所述的方法,其中,确定所述可靠性包括:
当所述多个目标子块中的一个目标子块的后验概率中的任何一个或任意组合小于所述参考值时,将所述一个目标子块的可靠性确定为比阈值小的第一值;以及
当所述多个目标子块中的一个目标子块的所有后验概率都大于所述参考值时,将所述一个目标子块的可靠性确定为比所述阈值大的第二值。
12.如权利要求1所述的方法,其中,估计所述可靠性包括:
基于正在执行的每个目标子块的节点操作来确定每个目标子块的错误比特数;
将每个目标子块的错误比特数与参考值进行比较;以及
基于比较结果来确定每个目标子块的可靠性。
13.如权利要求12所述的方法,其中,确定所述可靠性包括:
当所述多个目标子块中的一个目标子块的错误比特数大于所述参考值时,将所述一个目标子块的可靠性确定为比阈值小的第一值;以及
当所述多个目标子块中的一个目标子块的错误比特数小于所述参考值时,将所述一个目标子块的可靠性确定为比所述阈值大的第二值。
14.如权利要求1所述的方法,其中,调整所述解码调度包括:
提供调度表,所述调度表指示所述多个子块中的每个子块与相应解码迭代直接的映射关系,其中在所述相应解码迭代中执行所述多个子块中的对应子块的节点操作;以及
基于每个目标子块的可靠性来更新用于后续解码迭代的映射关系。
15.如权利要求14所述的方法,其中,更新所述映射关系包括:
当在第K次解码迭代中估计所述多个目标子块中的一个目标子块的可靠性小于参考值时,其中K是自然数,将所述一个目标子块映射到第(K+1)次解码迭代;以及
当在所述第K次解码迭代中估计所述一个目标子块的可靠性大于所述参考值时,将所述一个目标子块映射到所述第(K+1)次解码迭代之后的第(K+2)次解码迭代。
16.一种低密度奇偶校验解码器,其将低密度奇偶校验码的奇偶校验矩阵划分为多个子块,并对多次解码迭代中的每一个执行解码操作,所述低密度奇偶校验解码器包括:
变量节点处理器和校验节点处理器,其配置为在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代;
可靠性估计器,其配置为基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及
更新管理器,其配置为基于每个目标子块的可靠性来调整所述解码调度。
17.如权利要求16所述的低密度奇偶校验解码器,其中,所述更新管理器包括:调度表,所述调度表指示所述多个子块中的每个子块与相应解码迭代之间的映射关系,其中在所述相应解码迭代中执行所述多个子块中的对应子块的节点操作,并且
其中,所述更新管理器还配置为基于每个目标子块的可靠性来更新用于后续解码迭代的映射关系。
18.如权利要求16所述的低密度奇偶校验解码器,其中,所述更新管理器还配置为:当在当前解码迭代中估计所述多个目标子块中的一个目标子块的可靠性大于参考值时,在所述当前解码迭代之后的下一解码迭代中省略所述一个目标子块的节点操作。
19.如权利要求16所述的低密度奇偶校验解码器,其中,所述可靠性估计器还配置为:
将每个目标子块的节点操作的结果与参考值进行比较;以及
基于比较结果来生成具有每个目标子块的可靠性的可靠性信号。
20.一种存储器系统,包括:
存储器设备,其包括多个存储器单元;
存储器控制器,其配置为控制所述存储器设备的操作;以及
低密度奇偶校验解码器,其配置为:
将从所述存储器单元读取的低密度奇偶校验码的奇偶校验矩阵划分为多个子块;以及
对多次解码迭代中的每一个执行解码操作,
其中,所述低密度奇偶校验解码器包括:
变量节点处理器和校验节点处理器,其配置为在解码调度中执行所述多个子块中的多个目标子块中的每个目标子块的节点操作,所述多个目标子块对应于所述多次解码迭代中的当前解码迭代;
可靠性估计器,其配置为基于每个目标子块的节点操作的结果来估计每个目标子块的可靠性;以及
更新管理器,其配置为基于每个目标子块的可靠性来调整所述解码调度。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170156549A KR102543059B1 (ko) | 2017-11-22 | 2017-11-22 | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 |
KR10-2017-0156549 | 2017-11-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109818626A true CN109818626A (zh) | 2019-05-28 |
CN109818626B CN109818626B (zh) | 2023-08-29 |
Family
ID=66534653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811397209.0A Active CN109818626B (zh) | 2017-11-22 | 2018-11-22 | 解码低密度奇偶校验码的方法、解码器及存储器系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10623019B2 (zh) |
KR (1) | KR102543059B1 (zh) |
CN (1) | CN109818626B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223599A (zh) * | 2020-02-06 | 2021-08-06 | 爱思开海力士有限公司 | Ldpc解码器、ldpc解码器的操作方法以及半导体存储器系统 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111064475A (zh) * | 2018-10-16 | 2020-04-24 | 华为技术有限公司 | 基于低密度奇偶校验码的译码方法及装置 |
KR102643457B1 (ko) * | 2018-11-19 | 2024-03-06 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
CN111917420B (zh) * | 2020-08-25 | 2023-07-04 | 广东省新一代通信与网络创新研究院 | 一种ldpc自适应译码方法及ldpc自适应译码器 |
US11444638B2 (en) | 2020-09-17 | 2022-09-13 | SK Hynix Inc. | Quality-based dynamic scheduling LDPC decoder |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574650A (zh) * | 2003-05-26 | 2005-02-02 | 三星电子株式会社 | 在通信系统中解码低密度奇偶校验码的装置和方法 |
CN101106380A (zh) * | 2006-07-13 | 2008-01-16 | 华为技术有限公司 | 一种ldpc码的迭代译码方法及装置 |
CN101534166A (zh) * | 2008-03-10 | 2009-09-16 | 上海明波通信技术有限公司 | 准循环低密度奇偶校验码解码器及解码方法 |
US20100037121A1 (en) * | 2008-08-05 | 2010-02-11 | The Hong Kong University Of Science And Technology | Low power layered decoding for low density parity check decoders |
CN102460977A (zh) * | 2009-05-27 | 2012-05-16 | 诺沃尔赛特有限公司 | 具有迭代调度的ldpc码迭代解码 |
CN102611459A (zh) * | 2011-01-19 | 2012-07-25 | Jvc建伍株式会社 | 解码装置以及解码方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6848069B1 (en) * | 1999-08-10 | 2005-01-25 | Intel Corporation | Iterative decoding process |
US7559008B1 (en) * | 2005-10-03 | 2009-07-07 | Maxtor Corporation | Nested LDPC encoders and decoder |
US20080052594A1 (en) | 2006-07-28 | 2008-02-28 | Yedidia Jonathan S | Method and system for replica group-shuffled iterative decoding of quasi-cyclic low-density parity check codes |
US7802163B2 (en) | 2006-07-31 | 2010-09-21 | Agere Systems Inc. | Systems and methods for code based error reduction |
JP4930512B2 (ja) * | 2006-09-29 | 2012-05-16 | 富士通株式会社 | 無線通信システム、送信装置および受信装置 |
US8418023B2 (en) | 2007-05-01 | 2013-04-09 | The Texas A&M University System | Low density parity check decoder for irregular LDPC codes |
US8219878B1 (en) | 2007-12-03 | 2012-07-10 | Marvell International Ltd. | Post-processing decoder of LDPC codes for improved error floors |
US8413029B2 (en) | 2009-01-16 | 2013-04-02 | Lsi Corporation | Error correction capability adjustment of LDPC codes for storage device testing |
US9331717B2 (en) * | 2009-02-27 | 2016-05-03 | Blackberry Limited | Forward error correction decoding avoidance based on predicted code block reliability |
TWI415396B (zh) | 2009-11-23 | 2013-11-11 | Nat Univ Tsing Hua | 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法 |
EP2742429A4 (en) | 2011-08-09 | 2015-03-25 | Lsi Corp | I / O DEVICE AND INTERACTION WITH DATA PROCESSING HOST |
US8683309B2 (en) * | 2011-10-28 | 2014-03-25 | Lsi Corporation | Systems and methods for ambiguity based decode algorithm modification |
US9160369B1 (en) * | 2013-03-01 | 2015-10-13 | Proton Digital Systems, Inc. | Method for iterative error correction with designed error floor performance |
TWI619353B (zh) | 2013-07-03 | 2018-03-21 | Lsi公司 | 在低密度奇偶性校驗(ldpc)解碼器中之對數相似比(llr)抑制 |
-
2017
- 2017-11-22 KR KR1020170156549A patent/KR102543059B1/ko active IP Right Grant
-
2018
- 2018-06-29 US US16/024,017 patent/US10623019B2/en active Active
- 2018-11-22 CN CN201811397209.0A patent/CN109818626B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1574650A (zh) * | 2003-05-26 | 2005-02-02 | 三星电子株式会社 | 在通信系统中解码低密度奇偶校验码的装置和方法 |
CN101106380A (zh) * | 2006-07-13 | 2008-01-16 | 华为技术有限公司 | 一种ldpc码的迭代译码方法及装置 |
CN101534166A (zh) * | 2008-03-10 | 2009-09-16 | 上海明波通信技术有限公司 | 准循环低密度奇偶校验码解码器及解码方法 |
US20100037121A1 (en) * | 2008-08-05 | 2010-02-11 | The Hong Kong University Of Science And Technology | Low power layered decoding for low density parity check decoders |
CN102460977A (zh) * | 2009-05-27 | 2012-05-16 | 诺沃尔赛特有限公司 | 具有迭代调度的ldpc码迭代解码 |
CN102611459A (zh) * | 2011-01-19 | 2012-07-25 | Jvc建伍株式会社 | 解码装置以及解码方法 |
Non-Patent Citations (1)
Title |
---|
赵耀: "低功耗的LDPC解码器设计" * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223599A (zh) * | 2020-02-06 | 2021-08-06 | 爱思开海力士有限公司 | Ldpc解码器、ldpc解码器的操作方法以及半导体存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
KR102543059B1 (ko) | 2023-06-14 |
US10623019B2 (en) | 2020-04-14 |
US20190158116A1 (en) | 2019-05-23 |
KR20190059028A (ko) | 2019-05-30 |
CN109818626B (zh) | 2023-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109818626A (zh) | 解码低密度奇偶校验码的方法、解码器及存储器系统 | |
CN109783270B (zh) | 用于解码纠错码的系统和方法 | |
US8448050B2 (en) | Memory system and control method for the same | |
US10298261B2 (en) | Reduced complexity non-binary LDPC decoding algorithm | |
KR101854954B1 (ko) | 치환 소행렬의 합을 사용하는 체크섬 | |
US20180219561A1 (en) | Device, system and method of implementing product error correction codes for fast encoding and decoding | |
US8990661B1 (en) | Layer specific attenuation factor LDPC decoder | |
US10534665B2 (en) | Decoding method, memory storage device and memory control circuit unit | |
US20140223255A1 (en) | Decoder having early decoding termination detection | |
US10484008B2 (en) | Memory system with on-the-fly error detection and termination and operating method thereof | |
US9973213B2 (en) | Decoding method, and memory storage apparatus and memory control circuit unit using the same | |
CN109586731B (zh) | 用于解码纠错码的系统和方法 | |
US20200059243A1 (en) | Systems and methods for decoding error correcting codes | |
US8751895B2 (en) | Semiconductor memory device and decoding method | |
KR20100081551A (ko) | 디코딩 방법 및 그 방법을 이용하는 메모리 시스템 장치 | |
WO2013006564A2 (en) | Apparatus, system, and method for generating and decoding a longer linear block codeword using a shorter block length | |
US9853661B2 (en) | On-the-fly evaluation of the number of errors corrected in iterative ECC decoding | |
US20170134049A1 (en) | Decoding method, memory storage device and memory control circuit unit | |
US10200063B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
US20190089384A1 (en) | Memory system | |
JP2019125910A (ja) | メモリシステム | |
US10128869B2 (en) | Efficient convergence in iterative decoding | |
US20180351577A1 (en) | Iteration-adaptive decoding for non-binary ldpc codes | |
US20180175885A1 (en) | Hybrid LDPC-SEC/SECDED Decoding | |
KR20200124054A (ko) | 오류 정정 디코더 및 이를 포함하는 메모리 시스템 |
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 |