CN112039532A - 错误校正解码器及具有错误校正解码器的存储器系统 - Google Patents

错误校正解码器及具有错误校正解码器的存储器系统 Download PDF

Info

Publication number
CN112039532A
CN112039532A CN201911283888.3A CN201911283888A CN112039532A CN 112039532 A CN112039532 A CN 112039532A CN 201911283888 A CN201911283888 A CN 201911283888A CN 112039532 A CN112039532 A CN 112039532A
Authority
CN
China
Prior art keywords
value
symbol
variable node
error correction
function value
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.)
Withdrawn
Application number
CN201911283888.3A
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.)
SK Hynix Inc
Original Assignee
SK Hynix 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 SK Hynix Inc filed Critical SK Hynix Inc
Publication of CN112039532A publication Critical patent/CN112039532A/zh
Withdrawn legal-status Critical Current

Links

Images

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/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/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary 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/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/1128Judging correct decoding and iterative stopping criteria other than syndrome check and upper limit for decoding iterations
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • 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
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • 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
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/43Majority logic or threshold decoding

Landscapes

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

Abstract

本公开提供一种基于使用NB‑LDPC码的迭代解码方案的错误校正解码器和具有该错误校正解码器的存储器系统。错误校正解码器可包括:符号生成器,用于将初始符号分配给变量节点;可靠性值管理器,用于在当前迭代中,设置和更新变量节点的候选符号的可靠性值;翻转函数值计算器,用于在当前迭代中,通过从与目标候选符号的经更新可靠性值相关的另一函数值中减去与除该目标候选符号之外的剩余候选符号的经更新可靠性值相关的函数值来计算翻转函数值;以及符号校正器,用于在当前迭代中,当翻转函数值等于或大于的第一阈值时,将硬判决值改变为目标候选符号。

Description

错误校正解码器及具有错误校正解码器的存储器系统
相关申请的交叉引用
本专利文件要求于2019年6月4日提交的申请号为10-2019-0066227的韩国专利申请的优先权和权益,其通过引用整体并入本文。
技术领域
本公开的各个实施例总体涉及一种使用例如非二进制低密度奇偶校验(NB-LDPC)码的解码方案的错误校正解码器,以及具有错误校正解码器的存储器系统。
背景技术
存储器系统可包括被配置成临时或永久存储数据的存储介质。在诸如写入、读取、传送或处理的各种操作的任意操作期间,可能发生数据错误或数据损坏。
为了确保数据的可靠性,存储器系统可使用错误校正技术,诸如错误校正编码和错误校正解码。
发明内容
本公开的各个实施例涉及一种使用NB-LDPC码的错误校正解码器和具有该错误校正解码器的存储器系统。本公开提供了在执行使用NB-LDPC码的错误校正解码时提高的错误校正能力,以及具有错误校正解码器的存储器系统。
本公开的实施例可提供一种错误校正解码器。错误校正解码器可包括:符号生成器,被配置成形成初始符号并将初始符号分配给变量节点;可靠性值管理器,被配置成在当前迭代开始时基于初始符号来设置对应于变量节点的候选符号的可靠性值,并且基于变量节点在当前迭代中接收的校验到变量(C2V)消息来更新候选符号的可靠性值;翻转函数值计算器,被配置成通过在当前迭代中从第一函数值减去第二函数值来计算翻转函数值,第一函数值与目标候选符号的经更新可靠性值相关,并且第二函数值与除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关;以及符号校正器,被配置成在当前迭代中将翻转函数值与第一阈值进行比较,并且在确定翻转函数值等于或大于第一阈值时,将变量节点的硬判决值改变为目标候选符号。
本公开的实施例可提供一种存储器系统。存储器系统可包括存储器装置和与该存储器装置通信的存储器控制器,并且包括错误校正解码器,该错误校正解码器被配置成基于从存储器装置接收的读取向量使用非二进制低密度奇偶校验(NB-LDPC)码来执行错误校正解码。错误校正解码器可包括:符号生成器,被配置成通过对读取向量中包括的读取值进行分组来形成初始符号,并且将该初始符号分配给变量节点;可靠性值管理器,被配置成在当前迭代开始时基于初始符号来设置对应于变量节点的候选符号的可靠性值,并且基于变量节点在当前迭代中接收的校验到变量(C2V)消息来更新候选符号的可靠性值;翻转函数值计算器,被配置成通过在当前迭代中从第一函数值减去第二函数值来计算翻转函数值,第一函数值与目标候选符号的经更新可靠性值相关,并且第二函数值与来自候选符号中的除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关;以及符号校正器,被配置成在当前迭代中将翻转函数值与第一阈值进行比较,并且在确定翻转函数值等于或大于第一阈值时,将变量节点的硬判决值改变为目标候选符号。
附图说明
图1是示出基于本公开的一些实施方案的错误校正电路的示图。
图2是示出奇偶校验矩阵的示例示图。
图3是图2所示的奇偶校验矩阵被表示为坦纳(Tanner)图的示图。
图4是用于说明使用图2所示的奇偶校验矩阵计算的校正子向量的示例示图。
图5是示出用于说明读取值的示例示图。
图6是示出基于本公开的一些实施方案的符号配置进程的示例示图。
图7是说明基于本公开的一些实施方案的阈值的示例示图。
图8是示出基于本公开的一些实施方案的设置可靠性值的进程的示例示图。
图9至图15是示出基于本公开的一些实施方案的修改硬判决值的进程的示例示图。
图16至图19是示出基于本公开的一些实施方案的操作错误校正解码器的方法的流程图。
图20是示出基于本公开的一些实施方案的存储器系统的示图。
图21是示出基于本公开的一些实施方案的存储器装置的示图。
图22是示出存储块的示例示图。
图23和图24是示出包括图20的存储器控制器的存储器系统的其它实施例的示图。
具体实施方式
本文公开的具体结构或功能描述仅是说明性的,以用于描述实施例的目的。本公开可以各种形式实施,并且不能被解释为限于本文阐述的实施例。
因为即使在码的长度增加时,低密度奇偶校验(LDPC)码也可提高错误校正性能而不增加每位的计算复杂度,所以使用LDPC码的错误校正方案被广泛用于存储器系统、通信系统等中的错误校正。
在实施关于重复迭代的LDPC码时,存在一些考量。例如,当LDPC码中发生错误时,在错误校正解码成功之前,可能需要大量的迭代,这导致低效率并可能导致解码失败。本公开提供了用于解决与迭代相关联的低效率并提高错误校正能力的技术。
图1是示出根据本公开的实施例的错误校正电路的示图。
参照图1,错误校正电路10可包括错误校正编码器100和错误校正解码器200。
错误校正编码器100接收待执行错误校正编码的原始消息,并且可使用所接收的原始消息和错误校正码(ECC)的生成器矩阵或者使用所接收的原始消息和错误校正码的奇偶校验矩阵来执行错误校正编码。错误校正编码器100可向通道输出作为执行错误校正编码的结果而生成的码字。当错误校正电路10被应用在存储器系统中时,码字可被存储在存储器装置中包括的多个存储器单元(例如,形成单个页面的存储器单元)中。
错误校正编码器100可以是非二进制低密度奇偶校验(NB-LDPC)编码器,其使用LDPC码,特别是使用NB-LDPC码作为错误校正码,但本公开的实施例不限于此。
错误校正解码器200可从通道接收对应于码字的读取向量,并且可对所接收的读取向量执行错误校正解码。
错误校正解码器200可使用采用迭代解码方案的各种算法中的任意一种来执行错误校正解码。错误校正解码器200可使用被称为置信传播算法(BPA)的消息传递算法(MPA)来执行错误校正解码。作为消息传递算法,可使用位翻转算法、符号翻转算法、最小和算法、和积算法等。在下文中,在使用符号翻转算法的假设下描述本公开的实施例,但本公开的实施例不限于此。
错误校正解码器200可在执行的迭代次数达到预设最大迭代次数(I)之前执行错误校正解码。此处,最大迭代次数(I)可以是自然数。当在迭代次数达到最大迭代次数(I)之前生成满足错误校正码的奇偶校验矩阵的约束的有效码字时,错误校正解码器200可输出所生成的有效码字作为经解码码字。当在迭代次数达到最大迭代次数(I)之前未生成满足错误校正码的奇偶校验矩阵的约束的有效码字时,错误校正解码器200可输出指示错误校正解码已失败的失败信号。
错误校正解码器200可以是使用例如NB-LDPC码的LDPC码作为错误校正码的NB-LDPC解码器,但本公开的实施例不限于此。
错误校正解码器200可包括符号生成器210、节点处理器220和校正子校验器230。
符号生成器210可从通道接收对应于码字的读取向量。符号生成器210可通过对读取向量中包括的读取值进行分组来配置待分配给变量节点的初始符号,并且将该初始符号提供到节点处理器220。例如,当读取向量包括14个读取值时,符号生成器210可形成七个初始符号,每个初始符号具有两个读取值。读取向量中包括的读取值中的每一个可以是“0”或“1”。
节点处理器220可基于从符号生成器210接收的初始符号,使用消息传递算法来执行错误校正解码。当基于消息传递算法执行错误校正解码时,可通过变量节点和校验节点之间的消息交换来生成收敛到码字的结果。消息可包括从变量节点传送到校验节点的变量到校验(V2C)消息和从校验节点传送到变量节点的校验到变量(C2V)消息。
节点处理器220可在迭代次数达到最大迭代次数(I)之前执行至少一次迭代。节点处理器220可生成对应于第i迭代的硬判决向量,并且可将所生成的硬判决向量提供到校正子校验器230。此处,“i”是等于或小于最大迭代次数(I)的自然数。硬判决向量可包括变量节点的硬判决值。可基于可靠性值或不可靠性值中的至少一个来修改被提供到校正子校验器230的硬判决值中的至少一个,这将在后面描述。
节点处理器220可包括变量节点更新模块222、校验节点更新模块224和边缘增益处理器226。
在下文中,描述了节点处理器220基于洪流方案进行操作的示例,但本公开的实施例不限于此。例如,节点处理器220可基于列分层方案或行分层方案来操作。
变量节点更新模块222可使用在执行第一迭代之前从符号生成器210接收的初始符号来初始化变量节点。也就是说,变量节点更新模块222可将初始符号中的每一个分配给变量节点中的每一个作为变量节点的硬判决值。
在第一迭代中,变量节点更新模块222可生成V2C消息,以便将变量节点的硬判决值传送到校验节点,并且可将所生成的V2C消息传送到校验节点更新模块224。变量节点更新模块222可基于从校验节点更新模块224接收的C2V消息来更新变量节点中的每一个的硬判决值。
在除第一迭代之外的每次迭代中,变量节点更新模块222可基于从校验节点更新模块224接收的C2V消息来生成V2C消息,并且将所生成的V2C消息传送到校验节点更新模块224。而且,变量节点更新模块222可基于从校验节点更新模块224接收的C2V消息来更新变量节点的硬判决值。
在每次迭代中,校验节点更新模块224可基于从变量节点更新模块222接收的V2C消息来更新校验节点的值。而且,校验节点更新模块224可基于从变量节点更新模块222接收的V2C消息来生成C2V消息,并且将所生成的C2V消息传送到变量节点更新模块222。
对于在变量节点更新模块222和校验节点更新模块224之间交换的消息,可执行边缘增益处理或反向边缘增益处理。边缘增益处理器226可对变量节点更新模块222中生成的V2C消息执行边缘增益处理,并且将执行边缘增益处理的V2C消息传送到校验节点更新模块224。边缘增益处理器226可对校验节点更新模块224中生成的C2V消息执行反向边缘增益处理,并且将执行反向边缘增益处理的C2V消息传送到变量节点更新模块222。边缘增益可从奇偶校验矩阵获得,并且可被称为边缘系数或边缘权重。
变量节点更新模块222可包括可靠性值管理器222A、翻转函数值计算器222B、符号校正器222C和阈值管理器222D。
可靠性值管理器222A可管理与变量节点中的每一个相对应的候选符号的可靠性值。候选符号的可靠性值可变为用于确定是否修改变量节点的硬判决值的标准。
当开始每次迭代时,可靠性值管理器222A可针对变量节点中的每一个设置候选符号的可靠性值。候选符号是可被选择作为变量节点的硬判决值的符号,并且可包括伽罗瓦域GF(q)中包括的所有符号。
可靠性值管理器222A可根据分配给变量节点的初始符号、迭代次数或未满足校验节点(UCN)的数量中的至少一个来设置候选符号的可靠性值。
在实施例中,可靠性值管理器222A可根据对应于变量节点的候选符号与分配给变量节点的初始符号之间的汉明距离(hamming distance)来设置候选符号的可靠性值。当从初始符号到候选符号的汉明距离彼此不同时,可靠性值管理器222A可将候选符号的可靠性值设置为彼此不同。随着从初始符号到候选符号的汉明距离越小,可靠性值管理器222A可将候选符号的可靠性值设置为越大的值。
例如,如果使用GF(4),则对应于变量节点的候选符号可以是“00”、“01”、“10”和“11”。此处,“00”、“01”、“10”和“11”是GF(4)符号0、1、α和α2的二进制表示。如果分配给变量节点的初始符号为“01”,则可将距初始符号“01”具有最小汉明距离(0)的候选符号“01”的可靠性值设置为3,将距初始符号“01”具有第二最小汉明距离(1)的候选符号“00”和“11”中的每一个的可靠性值设置为1,并且将距初始符号“01”具有最大汉明距离(2)的候选符号“10”的可靠性设置为0。
在实施例中,可靠性值管理器222A可根据迭代次数来设置候选符号的可靠性值。可靠性值管理器222A可将至少一个候选符号的可靠性值设置为比先前迭代中更小的值。在实施例中,可靠性值管理器222A可将至少一个候选符号的可靠性值设置为比先前迭代中更大的值。
在实施例中,可靠性值管理器222A可根据迭代次数以及候选符号中的每一个和初始符号之间的汉明距离来设置候选符号的可靠性值。随着迭代次数增加,可靠性值管理器222A可将距初始符号具有较小汉明距离的候选符号的可靠性值设置为较低值。在实施例中,随着迭代次数增加,可靠性值管理器222A可将距初始符号具有较小汉明距离的候选符号的可靠性值设置为较高值。
例如,假设使用GF(4),并且分配给变量节点的初始符号为“01”。而且,假设在第i迭代中,将候选符号“01”的可靠性值设置为3,将候选符号“00”和“11”中的每一个的可靠性值设置为1,并且将候选符号“10”的可靠性值设置为0。在这种情况下,可在第(i+1)迭代中,将距初始符号“01”具有最小汉明距离的候选符号“01”的可靠性值设置为2。可将剩余候选符号“00”、“10”和“11”中的每一个的可靠性值设置为与第i迭代中相同的值,或者可设置为比第i迭代中更大的值。
在实施例中,可靠性值管理器222A可根据UCN的数量来设置候选符号的可靠性值。由于在第i迭代中联接到变量节点的UCN的数量更大,可靠性值管理器222A可在第(i+1)迭代中将对应于变量节点的至少一个候选符号的可靠性值设置为比第i迭代中更小的值。在实施例中,由于在第i迭代中联接到变量节点的UCN的数量更大,可靠性值管理器222A可在第(i+1)迭代中将对应于变量节点的至少一个候选符号的可靠性值设置为比第i迭代中更大的值。
在实施例中,可靠性值管理器222A可根据UCN的数量和汉明距离来设置候选符号的可靠性值。例如,由于在第i迭代中联接到变量节点的UCN的数量更大,可靠性值管理器222A可在第(i+1)迭代中将距初始符号具有更小汉明距离的候选符号的可靠性值设置为比第i迭代中更小的值。在实施例中,由于在第i迭代中联接到变量节点的UCN的数量更大,可靠性值管理器222A可在第(i+1)迭代中将距初始符号具有更小汉明距离的候选符号的可靠性值设置为比第i迭代中更大的值。
例如,假设使用GF(4),并且分配给变量节点的初始符号为“01”。而且,假设在第i迭代中,将候选符号“01”的可靠性值设置为3,将候选符号“00”和“11”中的每一个的可靠性值设置为1,并且将候选符号“10”的可靠性值设置为0。在这种情况下,当在第i迭代中联接到变量节点的UCN的数量为20时,可在第(i+1)迭代中将距初始符号“01”具有最小汉明距离的候选符号“01”的可靠性值设置为2,并且当在第i迭代中联接到变量节点的UCN的数量为30时,可在第(i+1)迭代中将候选符号“01”的可靠性值设置为1。可将剩余候选符号“00”、“10”和“11”中的每一个的可靠性值设置为与第i迭代中相同的值,或者可设置为比第i迭代中更大的值。
可靠性值管理器222A可在每次迭代中基于由变量节点接收的C2V消息来更新候选符号的可靠性值。例如,可靠性值管理器222A可将候选符号的可靠性值增加代表候选符号的C2V消息的数量。例如,当接收到代表候选符号“10”的一个C2V消息时,可靠性值管理器222A可将候选符号“10”的可靠性值增加1,并且当接收到代表候选符号“10”的两个C2V消息时,可将候选符号“10”的可靠性值增加2。
在每次迭代中,可靠性值管理器222A可将变量节点中的每一个的候选符号的经更新可靠性值提供到翻转函数值计算器222B。
在每次迭代中,翻转函数值计算器222B可从可靠性值管理器222A接收变量节点中的每一个的候选符号的经更新可靠性值,并且基于所接收的经更新可靠性值来计算对应于变量节点中的每一个的翻转函数值。
翻转函数值计算器222B可计算第一函数值和第二函数值,并且通过从第一函数值中减去第二函数值来计算翻转函数值。此处,第一函数值可以是与候选符号之中的目标候选符号的经更新可靠性值相关的值,并且第二函数值可以是与除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关的值。
翻转函数值计算器222B可在候选符号之中选择目标候选符号,以便计算第一函数值和第二函数值。可针对变量节点中的每一个来选择目标候选符号。
在实施例中,翻转函数值计算器222B可在候选符号的经更新可靠性值之中选择对应于最大值的候选符号作为目标候选符号。翻转函数值计算器222B可将所有候选符号的经更新可靠性值相互比较,以便选择目标候选符号。
在实施例中,翻转函数值计算器222B可在候选符号的经更新可靠性值中排除与变量节点的硬判决值相同的候选符号的经更新可靠性值之后的剩余经更新可靠性值之中选择对应于最大值的候选符号作为目标候选符号。翻转函数值计算器222B可将除与变量节点的硬判决值相同的候选符号之外的剩余候选符号的经更新可靠性值相互比较,以便选择目标候选符号。在这种情况下,如果经更新可靠性值以联赛(tournament)的方式相互比较,则与上述实施例相比,比较的次数可减少1。
当选择了目标候选符号时,翻转函数值计算器222B可基于预设方法来计算第一函数值和第二函数值。可针对变量节点中的每一个来计算第一函数值和第二函数值。
在实施例中,第一函数值可以是目标候选符号的经更新可靠性值。
在实施例中,第一函数值可以是应用了缩放因子或缩放偏移中的至少一个的目标候选符号的经更新可靠性值。缩放因子可以是目标候选符号的经更新可靠性值所乘以的值,缩放偏移可以是与目标候选符号的经更新可靠性值相加的值。缩放因子和缩放偏移可以是常量或变量。可基于变量节点的等级或迭代次数中的至少一个来设置缩放因子或缩放偏移中的至少一个。例如,随着变量节点的等级更大或者随着迭代次数的增加,可将缩放因子或缩放偏移中的至少一个设置得更大。
在实施例中,第二函数值可以是候选符号的经更新可靠性值之中的第二最大值。
在实施例中,第二函数值可以是通过将从候选符号的经更新可靠性值中排除最大值之后的剩余经更新可靠性值中的至少两个相加而计算的值。例如,第二函数值可以是通过将候选符号的经更新可靠性值之中的第二最大值和第三最大值相加而计算的值。例如,第二函数值可以是通过将从候选符号的经更新可靠性值中排除最大值之后的剩余所有值相加而计算的值。
在实施例中,第二函数值可以是与变量节点的硬判决值相同的候选符号的经更新可靠性值。
当计算第一函数值和第二函数值时,翻转函数值计算器222B可通过从第一函数值中减去第二函数值来计算翻转函数值。翻转函数值计算器222B可将所计算的翻转函数值提供到符号校正器222C。可针对变量节点中的每一个来计算并提供翻转函数值。此处,翻转函数值计算器222B可进一步向符号校正器222C提供关于目标候选符号的信息。
符号校正器222C可基于从翻转函数值计算器222B接收的翻转函数值来修改或保持变量节点的硬判决值。
符号校正器222C可通过将翻转函数值和变量节点中的每一个的第一阈值进行比较来确定翻转函数值是否等于或大于第一阈值。第一阈值可以是正数。当翻转函数值等于或大于第一阈值时,这可指示目标候选符号是对变量节点的更准确的估计。因此,当翻转函数值等于或大于第一阈值时,符号校正器222C可将变量节点的硬判决值改变为目标候选符号。在一些实施方案中,符号校正器222C可将变量节点的不可靠性值设置为初始值,这将在后面描述。当翻转函数值小于第一阈值时,符号校正器222C可不改变变量节点的硬判决值。
在实施例中,当对应于变量节点的翻转函数值不是正数时,符号校正器222C可跳过对第一阈值进行比较。
在对应于变量节点的翻转函数值不是正数的实施例中,符号校正器222C可通过将翻转函数值的绝对值和第一阈值进行比较来确定翻转函数值的绝对值是否等于或大于第一阈值。例如,当第一函数值与除与变量节点的硬判决值相同的候选符号的经更新可靠性值之外的剩余经更新可靠性值之中的最大值相关时,并且当第二函数值与和变量节点的硬判决值相同的候选符号的经更新可靠性值相关时,如果翻转函数值不是正数并且其绝对值等于或大于第一阈值,则这可指示变量节点的硬判决值为更准确的估计。因此,符号校正器222C不改变变量节点的硬判决值,并且可将变量节点的不可靠性值设置为初始值,这将在后面描述。
同时,为了确保因翻转函数值小于第一阈值而未执行符号校正的变量节点的可靠性,可使用附加信息。在本公开的实施例中,该信息被称为变量节点的不可靠性值。
符号校正器222C可管理各个变量节点的不可靠性值。当第一迭代开始时,符号校正器222C可将各个变量节点的不可靠性值设置为初始值。例如,当第一迭代开始时,符号校正器222C可将各个变量节点的不可靠性值设置为相同的初始值,例如0。符号校正器222C可根据迭代中针对变量节点计算的翻转函数值是否等于或大于预定阈值来更新变量节点的不可靠性值。
为了代表不可靠性值,可向变量节点中的每一个分配一个位或两个位或更多个位,并且在下文中描述两种相应的情况。
首先,描述分配一个位以代表不可靠性值的情况。
针对翻转函数值小于第一阈值的变量节点中的每一个,符号校正器222C可确定翻转函数值是否等于或大于第二阈值,该第二阈值小于第一阈值。第二阈值可以是正数。当对应于变量节点的翻转函数值等于或大于第二阈值且小于第一阈值时,符号校正器222C可检查相应变量节点的不可靠性值是否从初始值改变。例如,符号校正器222C可检查被分配用于代表不可靠性值的位是否从初始值0改变为1。
当翻转函数值等于或大于第二阈值且小于第一阈值的变量节点中的不可靠性值未改变时,符号校正器222C可改变相应变量节点的不可靠性值。例如,符号校正器222C可将相应变量节点的不可靠性值从初始值0改变为1。不可靠性值可被认为代表变量节点的当前硬判决值是错误的可能性。
当在翻转函数值等于或大于第二阈值且小于第一阈值的变量节点中,不可靠性值从初始值改变时,符号校正器222C可改变相应变量节点的硬判决值。例如,符号校正器222C可将不可靠性值从初始值改变的变量节点的硬判决值改变为对应于当前迭代的目标候选符号。在实施例中,当基于不可靠性值改变变量节点的硬判决值时,符号校正器222C可将相应变量节点的不可靠性值设置为初始值。在实施例中,即使基于不可靠性值改变变量节点的硬判决值,符号校正器222C也可不改变相应变量节点的不可靠性值。其原因在于,当翻转函数值等于或大于第二阈值且小于第一阈值时,与翻转函数值等于或大于第一阈值时相比,目标候选符号可能是变量节点的较欠准确的估计。因此,在这种情况下,可不改变变量节点的不可靠性值,以便稍后容易地改变该变量节点的硬判决值。
接下来,描述分配两个或更多个位以代表不可靠性值的情况。
在实施例中,针对翻转函数值小于第一阈值的变量节点中的每一个,符号校正器222C可确定翻转函数值是否等于或大于第二阈值,该第二阈值小于第一阈值。当对应于变量节点的翻转函数值等于或大于第二阈值且小于第一阈值时,符号校正器222C可更新相应变量节点的不可靠性值。例如,符号校正器222C可将变量节点的不可靠性值增加预设值。例如,符号校正器222C可将变量节点的不可靠性值增加1或增加翻转函数值。
在实施例中,针对翻转函数值小于第一阈值的变量节点中的每一个,符号校正器222C可确定翻转函数值是否等于或大于第四至第n阈值,第四至第n阈值小于第一阈值(其中n是等于或大于5的自然数)。例如,当使用第四阈值和小于第四阈值的第五阈值时,当翻转函数值等于或大于第四阈值时,符号校正器222C可将变量节点的不可靠性值增加第一预设值,并且当翻转函数值等于或大于第五阈值且小于第四阈值时,可将变量节点的不可靠性值增加第二预设值。此处,第一预设值可大于第二预设值。
当变量节点的不可靠性值被更新时,符号校正器222C可确定经更新不可靠性值是否等于或大于第三阈值。第三阈值可以是正数。当经更新不可靠性值等于或大于第三阈值时,符号校正器222C可将变量节点的硬判决值改变为对应于当前迭代的目标候选符号。基于与上述示例中相同的原理,当基于不可靠性值来改变变量节点的硬判决值时,符号校正器222C可以或可以不将变量节点的不可靠性值设置为初始值。
符号校正器222C可在每次迭代中向校正子校验器230提供变量节点的硬判决值。提供到校正子校验器230的变量节点的硬判决值中的至少一个可以是基于可靠性值或不可靠性值修改的值。
阈值管理器222D可设置阈值(例如,第一至第n阈值),这些阈值为用于确定是否修改变量节点值的标准。阈值可仅在第一迭代中设置,或者可在至少一次后续迭代中另外设置。阈值管理器222D可根据变量节点的等级、迭代次数或对应于先前迭代的UCN数量中的至少一个来设置阈值。
例如,阈值管理器222D可随着变量节点的等级越大而将第一至第n阈值中的至少一个设置得越大,并且可随着变量节点的等级越小而将第一至第n阈值中的至少一个设置得越小。
例如,随着迭代次数的增加,阈值管理器222D可将第一至第n阈值中的至少一个设置得更大。在实施例中,阈值管理器222D可随着迭代次数的增加而将第一至第n阈值中的至少一个设置得更小。
例如,随着对应于先前迭代的UCN的数量更大,阈值管理器222D可将第一至第n个阈值中的至少一个设置得更大。在实施例中,随着对应于先前迭代的UCN的数量更大,阈值管理器222D可将第一至第n个阈值中的至少一个设置得更小。
校正子校验器230可响应于第i迭代,对从节点处理器220接收的硬判决值(硬判决向量)执行校正子校验。例如,可通过校验通过等式(1)计算的校正子向量Si的所有条目是否为0来执行校正子校验。
Figure BDA0002317484040000151
此处,Si表示对应于第i迭代的校正子向量,H表示错误校正码的奇偶校验矩阵,并且
Figure BDA0002317484040000152
表示对应于第i迭代的硬判决向量Ci的转置。此处,假设硬判决向量Ci为行向量。
当校正子向量Si的所有条目为0时,这指示校正子校验已通过,并且当校正子向量Si的所有条目之中存在不为0的条目时,这指示校正子校验已失败。
当校正子校验通过时,校正子校验器230可输出从节点处理器220接收的硬判决向量作为经解码码字。
当校正子校验失败时,校正子校验器230可向节点处理器220提供关于对应于校正子向量Si的未满足校验节点(UCN)的数量的信息。此处,UCN可对应于校正子向量Si的条目之中不为0的条目。
当在迭代次数达到最大迭代次数(I)之前,校正子校验未通过时,校正子校验器230可输出失败信号,指示错误校正解码已失败。
图2是示出奇偶校验矩阵的示例示图。
图2示出定义(n,k)码的奇偶校验矩阵H的示例。可由大小为(n-k)×n的奇偶校验矩阵来定义(n,k)码。奇偶校验矩阵的条目中的每一个可被表示为伽罗瓦域中包括的元素。
伽罗瓦域GF(q)是具有q个元素的有限域,并且伽罗瓦域GF(q)的元素可被表示为{0,α01,…,αq-2}。当奇偶校验矩阵中包括的非零条目α0、α1、……、αq-2的数量远小于零的数量时,(n,k)码可被称为(n,k)LDPC码。此处,n和k可以是自然数。
二进制LDPC码可具有作为其条目的GF(2)的元素,并且非二进制(NB)LDPC码可具有作为其条目的GF(q)的元素(其中q>2)。图2示出NB-LDPC码的奇偶校验矩阵的示例,其具有GF(4)的元素作为其条目。
图3是其中图2所示的奇偶校验矩阵被表示为Tanner图的示图。
(n,k)码可被表示为作为二分图表达的Tanner图。可使用校验节点、变量节点和边缘来代表Tanner图。校验节点对应于奇偶校验矩阵的行,变量节点对应于奇偶校验矩阵的列。边缘中的每一个将一个校验节点联接到一个变量节点,并且对应于奇偶校验矩阵的非零条目。
如图3所示,图2所示的(n,k)码的奇偶校验矩阵可被表示为包括(n-k)个校验节点CN1至CNn-k和n个变量节点VN1至VNn的Tanner图。将校验节点CN1至CNn-k联接到变量节点VN1至VNn的实线和虚线代表边缘。
根据消息传递算法,可通过图3所示的Tanner图上的校验节点CN1至CNn-k和变量节点VN1至VNn之间的消息交换来执行迭代解码。变量节点可使用从联接到该变量节点的校验节点接收的C2V消息来执行错误校正,并且校验节点可使用从联接到该校验节点的变量节点接收的V2C消息来执行奇偶校验。如果对联接到任意一个校验节点的所有变量节点的硬判决值执行异或(XOR)运算的结果仅包括0,则该校验节点可被认为是满足。相反,如果对联接到任意一个校验节点的所有变量节点的硬判决值执行XOR运算的结果包括非0的元素,则该校验节点可被认为是未满足,并且可被称为UCN。此处,执行XOR运算的变量节点的硬判决值可以是执行边缘增益处理的值。
图4是用于说明使用图2所示的奇偶校验矩阵计算的校正子向量的示例示图。
如上所述,可基于奇偶校验矩阵H和对应于第i迭代的硬判决向量Ci的转置
Figure BDA0002317484040000171
来生成校正子向量Si。校正子向量Si的条目Si1、Si2、……、Sin-k对应于图3所示Tanner图上的校验节点CN1至CNn-k
当校正子向量Si的所有条目Si1、Si2、……、Sin-k为0时,这指示在第i迭代中校正子校验已通过。这表示在第i迭代中成功地执行了错误校正解码。因此,针对当前读取向量的迭代解码终止,并且对应于第i迭代的硬判决向量Ci可输出作为解码的码字。
如果校正子向量Si的条目Si1、Si2、……、Sin-k中的至少一个不为0,这指示在第i迭代中校正子校验已失败。这表示在第i迭代中错误校正解码已失败,并且如果迭代次数未达到最大迭代次数(I),则可执行下一迭代。如果迭代次数达到最大迭代次数(I),则对当前读取向量的迭代解码可终止。
图5是用于说明读取值的示例示图。
图5示出存储器单元的阈值电压Vth的分布,存储器单元中的每一个具有第一状态S1和第二状态S2之中的任意一个状态。
为了获取对应于单个码字的单个读取向量,可将一个读取电压Vr1施加到存储一个码字的多个存储器单元(例如,单个页面的存储器单元)。因此,可针对每个存储器单元获取一个读取值。单个读取向量可包括对应于多个存储器单元的读取值。
例如,当第一读取电压Vr1被施加到多个存储器单元时,阈值电压低于第一读取电压Vr1的存储器单元的读取值可被代表为“1”,阈值电压高于第一读取电压Vr1的存储器单元的读取值可被代表为“0”。
图6是示出根据本公开的实施例的配置符号的进程的示例示图。
在参照图6描述的实施例中,假设从通道接收的读取向量包括14个读取值。
错误校正解码器可通过将读取向量中包括的读取值分组为具有预设数量的读取值的符号来形成多个符号。例如,当使用GF(4)时,错误校正解码器可通过将两个读取值分组来形成单个符号。因为读取向量包括14个读取值,所以错误校正解码器可形成总共7个符号。错误校正解码器可将相应的符号分别分配给变量节点VN1至VN7
在下文中,假设二进制表示“00”对应于GF(4)表示“0”,二进制表示“01”对应于GF(4)表示“1”,二进制表示“10”对应于GF(4)表示“α”,并且二进制表示“11”对应于GF(4)表示“α2”。
图7是用于说明根据本公开的实施例的阈值的示例示图。
如上所述,对于变量节点中的每一个,可基于是否使用不可靠性值以及如果使用时向不可靠性值分配了多少个位来设置一个或多个阈值。
在仅使用可靠性值而没有不可靠性值的情况下,针对变量节点中的每一个设置第一阈值。
在可靠性值和不可靠性值被一起使用并且向变量节点中的每一个分配一个位以代表不可靠性值的情况下,针对变量节点中的每一个设置第一阈值和第二阈值。
在可靠性值和不可靠性值被一起使用并且向变量节点中的每一个分配两个或更多个位以代表不可靠性值的情况下,针对变量节点中的每一个设置第一至第n阈值。
同时,如上所述,可基于变量节点的等级、迭代次数或对应于先前迭代的UCN的数量中的至少一个来设置阈值中的至少一个。
图7示出根据变量节点的等级设置第一至第三阈值的示例。参照图7,可确认针对具有较高等级(32)的变量节点VN1和VN3设置较高的阈值,并且针对具有较低等级(26)的变量节点VN2和VNn设置较低的阈值。
图8是示出根据本公开的实施例的设置可靠性值的进程的示例示图。
为便于描述,图8仅示出Tanner图上的一些变量节点和一些校验节点。为便于描述,在参照图8的实施例中仅描述了两个变量节点VN1和VN2,但相同的描述也可应用于剩余的变量节点VN3至VNn
在参照图8描述的实施例中,假设使用GF(4),将初始符号“1”分配给变量节点VN1,将初始符号“0”分配给变量节点VN2,将初始符号“α”分配给变量节点VN3,并且将初始符号“α2”分配给变量节点VNn
如上所述,可基于候选符号中的每一个与初始符号之间的汉明距离、迭代次数或对应于先前迭代的UCN的数量中的至少一个来设置候选符号的可靠性值。
图8示出基于候选符号中的每一个和初始符号之间的汉明距离来设置候选符号的可靠性值的示例。
在变量节点VN1的情况下,因为候选符号“1”距初始符号“1”的汉明距离是作为最小汉明距离的0,所以可将该候选符号“1”的可靠性值设置为最大值3,因为候选符号“0”和“α2”距初始符号“1”的汉明距离是作为第二最小汉明距离的1,所以可将该候选符号“0”和“α2”中的每一个的可靠性值设置为第二最大值1,并且因为候选符号“α”距初始符号“1”的汉明距离是作为最大汉明距离的2,所以可将该候选符号“α”的可靠性值设置为最小值0。
在变量节点VN2的情况下,因为候选符号“0”距初始符号“0”的汉明距离是作为最小汉明距离的0,所以可将该候选符号“0”的可靠性值设置为最大值3,因为候选符号“1”和“α”距初始符号“0”的汉明距离是作为第二最小汉明距离的1,所以可将该候选符号“1”和“α”中的每一个的可靠性值设置为第二最大值1,并且因为候选符号“α2”距初始符号“0”的汉明距离是作为最大汉明距离的2,所以可将该候选符号“α2”的可靠性值设置为最小值0。
图9是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
在每次迭代中,可根据针对变量节点VN1至VNn中的每一个输入的C2V消息来更新对应于变量节点VN1至VNn中的每一个的候选符号的可靠性值。例如,预定候选符号的可靠性值可基于代表预定候选符号的所接收的C2V消息的数量而增加。例如,当接收到代表候选符号“α”的一个C2V消息时,该候选符号“α”的可靠性值可增加1,并且当接收到代表候选符号“α”的两个C2V消息时,该候选符号“α”的可靠性值可增加2。
在参照图9描述的实施例中,假设在参照图8描述的设置进程之后,变量节点VN1接收代表候选符号“0”的六个C2V消息、代表候选符号“1”的两个C2V消息、代表候选符号“α”的22个C2V消息以及代表候选符号“α2”的两个C2V消息。而且,假设变量节点VN2接收代表候选符号“0”的九个C2V消息、代表候选符号“1”的七个C2V消息、代表候选符号“α”的五个C2V消息以及代表候选符号“α2”的五个C2V消息。
因此,变量节点VN1的候选符号“0”的可靠性值可从1更新到7,变量节点VN1的候选符号“1”的可靠性值可从3更新到5,变量节点VN1的候选符号“α”的可靠性值可从0更新到22,并且变量节点VN1的候选符号“α2”的可靠性值可从1更新到3。
而且,变量节点VN2的候选符号“0”的可靠性值可从3更新到12,变量节点VN2的候选符号“1”的可靠性值可从1更新到8,变量节点VN2的候选符号“α”的可靠性值可从1更新到6,并且变量节点VN2的候选符号“α2”的可靠性值可从0更新到5。
在更新可靠性值之后,可针对变量节点中的每一个计算翻转函数值。如上所述,可通过从第一函数值中减去第二函数值来计算翻转函数值,第一函数值与目标候选符号的经更新可靠性值相关,第二函数值与除该目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关。
在参照图9描述的实施例中,假设目标候选符号是对应于经更新可靠性值之中的最大值的候选符号。而且,假设第一函数值是目标候选符号的经更新可靠性值,其是候选符号的经更新可靠性值之中的最大值。而且,假设第二函数值为经更新可靠性值之中的第二最大值。
在图9的示例中,对于变量节点VN1,候选符号的经更新可靠性值之中的最大值为22,第二大值为7。因此,第一函数值变为22,并且第二函数值变为7。因此,通过从第一函数值(22)中减去第二函数值(7)来计算的翻转函数值变为15。当翻转函数值等于或大于第一阈值时,变量节点VN1的硬判决值可被改变为目标候选符号。因为对应于变量节点VN1的第一阈值为7,翻转函数值为15,所以该变量节点VN1的硬判决值可被改变为目标候选符号,即“α”。
在图9的示例中,对于变量节点VN2,候选符号的经更新可靠性值之中的最大值为12,第二大值为8。即,第一函数值变为12,并且第二函数值变为8。因此,通过从第一函数值(12)中减去第二函数值(8)来计算的翻转函数值变为4。当翻转函数值小于第一阈值时,可保持变量节点VN2的硬判决值。因为对应于变量节点VN2的第一阈值为6,翻转函数值为4,所以变量节点VN2的硬判决值可被保持而没有任何变化。
图10是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
在说明参照图10描述的实施例时,将省略已参照图9说明的描述。
在参照图10描述的实施例中,假设在参照图8描述的设置进程之后,根据由变量节点VN1和VN2接收的C2V消息来更新变量节点VN1和VN2的候选符号的可靠性值。假设变量节点VN1和VN2的候选符号的可靠性值以参照图9描述的相同方式来更新。
在参照图10描述的实施例中,目标候选符号是经更新可靠性值在候选符号的经更新可靠性值之中是最大的候选符号,并且假设第一函数值是目标候选符号的经更新可靠性值。
在参照图10描述的实施例中,假设第二函数值是与当前硬判决值相同的候选符号的经更新可靠性值。
在图10的示例中,对于变量节点VN1,候选符号的经更新可靠性值之中的最大值为22,并且与变量节点VN1的硬判决值相同的候选符号“1”的经更新可靠性值为5。因此,第一函数值变为22,并且第二函数值变为5。因此,通过从第一函数值(22)中减去第二函数值(5)来计算的翻转函数值变为17。当翻转函数值等于或大于第一阈值时,变量节点VN1的硬判决值可被改变为目标候选符号。因为对应于变量节点VN1的第一阈值为7,翻转函数值为17,所以该变量节点VN1的硬判决值可被改变为目标候选符号,即“α”。
在图10的示例中,对于变量节点VN2,候选符号的经更新可靠性值之中的最大值是对应于候选符号“0”的12。因此,具有最大经更新可靠性值的候选符号与当前硬判决值相同。在这种情况下,不计算翻转函数值,并且变量节点VN2的硬判决值可被保持而没有任何变化。
图11是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
在说明参照图11描述的实施例时,将省略已参照图9说明的描述。
在参照图11描述的实施例中,假设在参照图8描述的设置进程之后,根据由变量节点VN1和VN2接收的C2V消息来更新变量节点VN1和VN2的候选符号的可靠性值。假设变量节点VN1和VN2的候选符号的可靠性值以与参照图9描述的相同方式来更新。
在参照图11描述的实施例中,目标候选符号是与当前硬判决值不同并且其经更新可靠性值在剩余经更新可靠性值之中是最大的候选符号。因此,目标候选符号具有除与当前硬判决值相同的候选符号之外的候选符号的经更新可靠性值之中的最大的经更新可靠性值。假设第一函数值是目标候选符号的经更新可靠性值。
在参照图11描述的实施例中,假设第二函数值是与当前硬判决值相同的候选符号的经更新可靠性值。
在图11的示例中,对于变量节点VN1,因为当前硬判决值为1,所以将与当前硬判决值相同的候选符号“1”排除在目标候选符号之外。最大经更新可靠性值为22,并且相应候选符号为“α”(与当前硬判决值1不同)。因此,“α”变为目标候选符号,并且第一函数值变为22。与当前硬判决值相同的候选符号“1”的经更新可靠性值为5。因此,第二函数值变为5。因此,通过从第一函数值(22)中减去第二函数值(5)来计算的翻转函数值变为17。当翻转函数值等于或大于第一阈值时,变量节点VN1的硬判决值可被改变为目标候选符号。因为对应于变量节点VN1的第一阈值为7,翻转函数值为17,所以变量节点VN1的硬判决值可被改变为目标候选符号,即“α”。
在图11的示例中,对于变量节点VN2,因为当前硬判决值为“0”,所以将与当前硬判决值相同的候选符号“0”排除在目标候选符号之外。最大的经更新可靠性值为12,但相应候选符号为与当前硬判决值0相同的“0”。在除与当前硬判决值相同的候选符号“0”的经更新可靠性值之外的剩余经更新可靠性值之中,最大值为8。与当前硬判决值相同的候选符号“0”的经更新可靠性值为12。因此,通过从第一函数值(8)中减去第二函数值(12)来计算的翻转函数值变为-4。在参照图11描述的实施例中,当翻转函数值不是正数时,这可表示当前硬判决值为可靠的估计。因此,在这种情况下,跳过将翻转函数值与第一阈值进行比较,并且可保持变量节点VN2的硬判决值。
图12是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
在参照图12描述的实施例中,另外使用了变量节点的不可靠性值,并且假设针对变量节点中的每一个分配一个位以代表不可靠性值。而且,假设不可靠性值被最初设置为初始值0。
在说明参照图12描述的实施例时,将省略已参照图9说明的描述。
在参照图12描述的实施例中,假设在参照图8描述的设置进程之后,基于由变量节点VN1和VN2接收的C2V消息来更新变量节点VN1和VN2的候选符号的可靠性值。假设变量节点VN1和VN2的候选符号的可靠性值以与参照图9描述的相同方式来更新。
在参照图12描述的实施例中,目标候选符号是候选符号的经更新可靠性值之中经更新可靠性值最大的候选符号,并且假设第一函数值是目标候选符号的经更新可靠性值。
在参照图12描述的实施例中,假设第二函数值是经更新可靠性值之中的第二最大值。
对于变量节点VN1,可基于与参照图9描述的相同的原理来执行符号校正。
在图12的示例中,对于变量节点VN2,候选符号的经更新可靠性值之中的最大值为12,第二大值为8。因此,第一函数值变为12,并且第二函数值变为8。因此,通过从第一函数值(12)中减去第二函数值(8)来计算的翻转函数值变为4。当翻转函数值等于或大于第二阈值且小于第一阈值时,并且当变量节点VN2的不可靠性值未从初始值改变时,可改变变量节点VN2的不可靠性值。对于变量节点VN2,第一阈值为6,第二阈值为4,翻转函数值为4,并且变量节点VN2的不可靠性值未从初始值0改变。因此,可将变量节点VN2的不可靠性值改变为1。而且,可保持变量节点VN2的硬判决值。
图13是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
图13示出以下示例:在如参照图12所述执行符号校正并设置不可靠性值之后,在设置可靠性值并保持不可靠性值的后续迭代中接收到C2V消息。
在参照图13描述的实施例中,可基于与上述实施例中相似或相同的原理来更新候选符号的可靠性值,并且将省略对其的详细描述。
在参照图13描述的实施例中,目标候选符号是其经更新可靠性值是经更新可靠性值之中的最大值的候选符号,并且假设第一函数值是目标候选符号的经更新可靠性值。
在参照图13描述的实施例中,假设第二函数值是经更新可靠性值之中的第二大值。
对于变量节点VN1,可基于与参照图9描述的相似或相同的原理来修改硬判决值。
在图13的示例中,对于变量节点VN2,候选符号的经更新可靠性值之中的最大值为13,第二大值为8。因此,第一函数值变为13,并且第二函数值变为8。因此,通过从第一函数值(13)中减去第二函数值(8)来计算的翻转函数值变为5。当翻转函数值等于或大于第二阈值且小于第一阈值时,并且当变量节点VN2的不可靠性值从初始值改变时,变量节点VN2的硬判决值可被改变为目标候选符号。对于变量节点VN2,第一阈值为6,第二阈值为4,翻转函数值为4,并且变量节点VN2的不可靠性值从初始值改变。因此,变量节点VN2的硬判决值可被改变为目标候选符号“α”。图13示出以下示例:在基于不可靠性值修改变量节点VN2的硬判决值之后,变量节点VN2的不可靠性值从1改变为0。在一些实施例中,即使基于不可靠性值修改了变量节点VN2的硬判决值,变量节点VN2的不可靠性值也不会改变。
图14是示出根据本公开的实施例的修改硬判决值的进程的示例示图。
在说明参照图14描述的实施例时,假设向变量节点中的每一个分配两个或更多个位,以便代表不可靠性值。而且,假设不可靠性值被最初设置为初始值0。
在参照图14描述的实施例中,假设在参照图8描述的设置进程之后,基于由变量节点VN1和VN2接收的C2V消息来更新变量节点VN1和VN2的候选符号的可靠性值。在参照图14描述的实施例中,可基于与上述实施例中相似或相同的原理来更新候选符号的可靠性值,并且将省略对其的详细描述。
在参照图14描述的实施例中,目标候选符号是其经更新可靠性值是经更新可靠性值之中的最大的候选符号,并且假设第一函数值是目标候选符号的经更新可靠性值。而且,假设第二函数值为经更新可靠性值之中的第二大值。
在图14的示例中,对于变量节点VN1,基于与上述实施例中相同的原理通过从第一函数值(17)中减去第二函数值(12)来计算的翻转函数值变为5。当翻转函数值等于或大于第二阈值且小于第一阈值时,可根据预设值来更新变量节点VN1的不可靠性值。图14示出变量节点VN1的不可靠性值增加作为翻转函数值的5的示例。同时,当经更新不可靠性值小于第三阈值时,可保持变量节点VN1的硬判决值。因为经更新不可靠性值(5)小于第三阈值(20),所以可保持变量节点VN1的硬判决值。
对于变量节点VN2,可基于相同的原理来更新不可靠性值。
图15是示出根据本公开的实施例的修改符号的进程的示例示图。
在参照图15描述的实施例中,因为在如参照图14描述的不可靠性值被更新之后执行另外的迭代,所以假设变量节点VN1和变量节点VN2的不可靠性值分别被更新为15和9。
假设基于由变量节点VN1和VN2接收的C2V消息来更新对应于变量节点VN1和VN2的候选符号的可靠性值。在参照图15描述的实施例中,可基于与上述实施例中相似或相同的原理来更新候选符号的可靠性值,并且将省略对其的详细描述。
在参照图15描述的实施例中,目标候选符号是其经更新可靠性值是经更新可靠性值之中的最大的候选符号,并且假设第一函数值是目标候选符号的经更新可靠性值。而且,假设第二函数值为经更新可靠性值之中的第二最大值。
在图15的示例中,对于变量节点VN1,基于与上述实施例中相似或相同的原理通过从第一函数值(18)中减去第二函数值(12)来计算的翻转函数值变为6。当翻转函数值等于或大于第二阈值且小于第一阈值时,变量节点VN1的不可靠性值可增加预设值。图15示出变量节点VN1的不可靠性值增加作为翻转函数值的6的示例。当经更新不可靠性值等于或大于第三阈值时,可修改变量节点VN1的硬判决值。因为经更新不可靠性值(21)等于或大于第三阈值(20),所以变量节点VN1的硬判决值可被改变为目标候选符号,即“0”。图15示出在基于不可靠性值修改变量节点VN1的硬判决值之后,变量节点VN1的不可靠性值从21改变为0的示例。在实施例中,即使基于不可靠性值修改了变量节点VN1的硬判决值,如上所述,变量节点VN1的不可靠性值也可不被改变为初始值0。
因为变量节点VN2的翻转函数值为2且小于第二阈值(4),所以可保持变量节点VN2的硬判决值和不可靠性值两者。
图16是示出根据本公开的实施例的操作错误校正解码器的方法的流程图。
根据实施例,可跳过图16所示的至少一个步骤,并且可改变执行这些步骤的顺序。例如,可跳过步骤1607,并且可在步骤1605之前执行步骤1607。
在步骤1601,错误校正解码器可接收对应于码字的读取向量。
在步骤1603,错误校正解码器可通过对读取向量中包括的读取值进行分组来形成符号,并且可将所形成的符号分别分配给变量节点。
在步骤1605至1611,可执行第i迭代。
在步骤1605,错误校正解码器可设置与变量节点中的每一个相对应的候选符号的可靠性值。对于变量节点中的每一个,错误校正解码器可设置候选符号的可靠性值,该可靠性值可基于分配给变量节点的初始符号而被选择为该变量节点的硬判决值。在实施例中,错误校正解码器可根据距初始符号的汉明距离、迭代次数或对应于先前迭代的UCN的数量中的至少一个来设置候选符号的可靠性值。当执行第一迭代时,可将变量节点中的每一个的不可靠性值设置为初始值。
在步骤1607,错误校正解码器可设置或改变阈值,这些阈值是用于确定是否修改变量节点的硬判决值的标准。在第一迭代中,错误校正解码器可根据变量节点的等级来设置阈值。在第一迭代之后的迭代中,错误校正解码器可根据迭代次数或对应于先前迭代的UCN的数量中的至少一个来改变阈值。
在步骤1609,错误校正解码器可更新候选符号的可靠性值。例如,错误校正解码器可针对变量节点中的每一个,根据由该变量节点接收的C2V消息来更新候选符号的可靠性值。
在步骤1611,错误校正解码器可修改或保持变量节点的硬判决值。将参照图17至图19详细描述步骤1611。
在步骤1613,错误校正解码器可使用在步骤1611修改或保持的硬判决向量,即硬判决值,来执行校正子校验。如果校正子校验已通过(在“是”的情况下),则可执行步骤1615,如果未通过(在“否”的情况下),则可执行步骤1621。
在步骤1615,错误校正解码器可输出硬判决向量作为经解码码字。
同时,在步骤1621,错误校正解码器可检查执行的迭代次数是否达到最大迭代次数(I)。如果执行的迭代次数达到最大迭代次数(I)(在“是”的情况下),则执行步骤1623,由此可输出指示错误校正解码已失败的失败信号。如果执行的迭代次数未达到最大迭代次数(I)(在“否”的情况下),则可在通过步骤1631之后执行第(i+1)迭代。
图17是示出根据本公开的实施例的操作错误校正解码器的方法的流程图。
可针对变量节点中的每一个来执行图17所示的步骤1701至1709。
当不使用不可靠性值时,可执行图17所示的步骤1701至1709。
在步骤1701,错误校正解码器可计算与目标候选符号的经更新可靠性值相关的第一函数值。
在步骤1703,错误校正解码器可计算与除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关第二函数值。
在步骤1705,错误校正解码器可计算翻转函数值。翻转函数值可以是通过从第一函数值中减去第二函数值而计算的值。
在步骤1707,错误校正解码器可确定翻转函数值是否等于或大于第一阈值。如果翻转函数值等于或大于第一阈值(在“是”的情况下),则可执行步骤1709,如果不是,则可执行步骤1613。
在步骤1709,错误校正解码器可将变量节点的硬判决值改变为目标候选符号。
根据实施例,错误校正解码器可在步骤1705检查翻转函数值是否是正数,并且当翻转函数值不是正数时可跳过步骤1707和步骤1709。
图18是示出根据本公开的实施例的操作错误校正解码器的方法的流程图。
可针对变量节点中的每一个来执行图18所示的步骤1801至1821。
当分配了一个位以代表不可靠性值时,可执行图18所示的步骤1801至1821。
在步骤1801,错误校正解码器可计算与目标候选符号的经更新可靠性值相关的第一函数值。
在步骤1803,错误校正解码器可计算与除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关第二函数值。
在步骤1805,错误校正解码器可计算翻转函数值。翻转函数值可以是通过从第一函数值中减去第二函数值而计算的值。
在步骤1807,错误校正解码器可确定翻转函数值是否等于或大于第一阈值。如果翻转函数值等于或大于第一阈值(在“是”的情况下),则可执行步骤1809,如果不是,则可执行步骤1811。
在步骤1809,错误校正解码器可将变量节点的硬判决值改变为目标候选符号。此处,错误校正解码器在变量节点中检查不可靠性值是否从初始值改变,并且当变量节点的不可靠性值改变时,可将不可靠性值设置为初始值。
在步骤1811,错误校正解码器可确定翻转函数值是否等于或大于第二阈值,该第二阈值小于第一阈值。如果翻转函数值等于或大于第二阈值(在“是”的情况下),则可执行步骤1813,如果不是,则可执行步骤1613。
在步骤1813,错误校正解码器可确定变量节点的不可靠性值是否从初始值改变。如果变量节点的不可靠性值被改变(在“是”的情况下),则可执行步骤1815,如果未改变(在“否”的情况下),则可执行步骤1821。
在步骤1815,错误校正解码器可将变量节点的硬判决值改变为目标候选符号。在实施例中,错误校正解码器在将变量节点的硬判决值改变为目标候选符号之后,可将变量节点的不可靠性值设置为初始值。在实施例中,错误校正解码器在将变量节点的硬判决值改变为目标候选符号之后,可不将变量节点的不可靠性值设置为初始值。其原因在于,当翻转函数值等于或大于第二阈值且小于第一阈值时,与翻转函数值等于或大于第一阈值时相比,目标候选符号是变量节点的较欠准确的估计。因此,在这种情况下,可不将变量节点的不可靠性值设置为初始值,以便稍后容易地修改变量节点的硬判决值。
在步骤1821,错误校正解码器可改变变量节点的不可靠性值。
同时,根据实施例,错误校正解码器可在步骤1805检查翻转函数值是否是正数,并且当翻转函数值不是正数时,可通过将翻转函数值的绝对值和第一阈值进行比较来确定翻转函数值的绝对值是否等于或大于第一阈值。例如,当第一函数值与除与变量节点的硬判决值相同的、候选符号的经更新可靠性值之外的剩余经更新可靠性值之中的最大值相关时,并且当第二函数值与和变量节点的硬判决值相同的、候选符号的经更新可靠性值相关时,如果翻转函数值不是正数并且其绝对值等于或大于第一阈值,则这可表示变量节点的硬判决值是较准确的估计。因此,在这种情况下,可跳过步骤1807至1821,并且错误校正解码器可不修改变量节点的硬判决值。此处,错误校正解码器可检查变量节点的不可靠性值是否从初始值改变,并且如果变量节点的不可靠性值从初始值改变,则可将该变量节点的不可靠性值设置为初始值。
图19是示出根据本公开的实施例的操作错误校正解码器的方法的流程图。
可针对变量节点中的每一个来执行图19所示的步骤1901至1917。
当分配了两个或更多个位以代表不可靠性值时,可执行图19所示的步骤1901至1917。
在步骤1901,错误校正解码器可计算与目标候选符号的经更新可靠性值相关的第一函数值。
在步骤1903,错误校正解码器可计算与除目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关第二函数值。
在步骤1905,错误校正解码器可计算翻转函数值。翻转函数值可以是通过从第一函数值中减去第二函数值而计算的值。
在步骤1907,错误校正解码器可确定翻转函数值是否等于或大于第一阈值。如果翻转函数值等于或大于第一阈值(在“是”的情况下),则可执行步骤1909,如果不是,则可执行步骤1911。
在步骤1909,错误校正解码器可将变量节点的硬判决值改变为目标候选符号。在实施例中,错误校正解码器可在变量节点中检查不可靠性值是否从初始值改变,并且当在变量节点中,不可靠性值从初始值改变时,可将变量节点的不可靠性值设置为初始值。
在步骤1911,错误校正解码器可确定翻转函数值是否等于或大于第二阈值,该第二阈值小于第一阈值。如果翻转函数值等于或大于第二阈值(在“是”的情况下),则可执行步骤1913,如果不是,则可执行步骤1613。
在步骤1913,错误校正解码器可更新变量节点的不可靠性值。例如,错误校正解码器可将变量节点的不可靠性值增加预设值。
在步骤1915,错误校正解码器可确定经更新不可靠性值是否等于或大于第三阈值。如果经更新不可靠性值等于或大于第三阈值(在“是”的情况下),则可执行步骤1917,如果不是(在“否”的情况下),则可执行步骤1613。
在步骤1917,错误校正解码器可将变量节点的硬判决值改变为目标候选符号。在实施例中,错误校正解码器在将变量节点的硬判决值改变为目标候选符号之后,可将变量节点的不可靠性值设置为初始值。在实施例中,如图18的步骤1815所述,错误校正解码器在将变量节点的硬判决值改变为目标候选符号之后,可不将变量节点的不可靠性值设置为初始值。
同时,根据实施例,错误校正解码器可在步骤1905检查翻转函数值是否是正数,并且当翻转函数值不是正数时,可通过将翻转函数值的绝对值和第一阈值进行比较来确定翻转函数值的绝对值是否等于或大于第一阈值。当翻转函数值的绝对值等于或大于第一阈值时,可基于与参照图18描述的相同原理跳过步骤1907至1917,并且错误校正解码器可不修改变量节点的硬判决值。此处,错误校正解码器可检查变量节点的不可靠性值是否从初始值改变,并且如果变量节点的不可靠性值从初始值改变,则可将该变量节点的不可靠性值设置为初始值。
图20是示出根据本公开的实施例的存储器系统的示图。
参照图20,存储器系统2000可包括存储数据的存储器装置2200和响应于从主机1000接收的请求控制存储器装置2200的存储器控制器2100。
主机1000可以是将数据存储在存储器系统2000中或从存储器系统2000中检索数据的装置或系统。例如,主机1000可包括计算机、便携式数字装置、平板电脑、数码相机、数字音频播放器、电视机、无线通信装置或移动电话中的至少一个,但本公开的实施例不限于此。
存储器控制器2100可控制存储器系统2000的全部操作。存储器控制器2100可响应于从主机1000接收的请求而执行各种操作。例如,存储器控制器2100可对存储器装置2200执行编程操作、读取操作、擦除操作等。在编程操作期间,存储器控制器2100可将编程命令、地址、码字等传送到存储器装置2200。在读取操作期间,存储器控制器2100可将读取命令、地址等传送到存储器装置2200,并且可从存储器装置2200接收对应于码字的读取数据。在擦除操作期间,存储器控制器2100可将擦除命令和地址等传送到存储器装置2200。
存储器控制器2100可包括主机接口2110、中央处理单元(CPU)2120、存储器接口2130、缓冲存储器2140、错误校正电路2150及内部存储器2160。可由CPU 2120控制主机接口2110、存储器接口2130、缓冲存储器2140、错误校正电路2150和内部存储器2160。
主机接口2110可将从主机1000接收的编程请求、读取请求和擦除请求传送到CPU2120。在编程操作期间,主机接口2110可从主机1000接收对应于编程请求的原始数据,并且可将所接收的原始数据存储在缓冲存储器2140中。在读取操作期间,主机接口2110可将缓冲存储器2140中存储的经解码码字传送到主机1000。主机接口2110可使用各种接口协议来与主机1000通信。例如,主机接口2110可使用诸如以下的接口协议中的至少一种来与主机1000通信:高速非易失性存储器(NVMe)、高速外围组件互连(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、通用串行总线(USB)、多媒体卡(MMC)、增强型小型磁盘接口(ESDI)、电子集成驱动器(IDE)、移动工业处理器接口(MIPI)、通用闪存(UFS)、小型计算机系统接口(SCSI)或串列SCSI(SAS),但本公开的实施例不限于此。
CPU 2120可执行各种类型的计算(操作)或生成命令和地址,以便控制存储器装置2200。例如,响应于通过主机接口2110接收的请求,CPU 2120可生成编程操作、读取操作和擦除操作所需的各种命令和地址。
当通过主机接口2110接收到编程请求时,CPU 2120可控制错误校正电路2150,从而对缓冲存储器2140中存储的原始数据执行错误校正编码。当从错误校正电路2150接收到已生成码字的通知时,CPU 2120可生成编程命令和地址,并且可控制存储器接口2130,使得将所生成的编程命令和地址以及缓冲存储器2140中存储的码字传送到存储器装置2200。
当通过主机接口2110接收到读取请求时,CPU可生成读取命令和地址,并且可控制存储器接口2130,使得将所生成的读取命令和地址传送到存储器装置2200。当从存储器接口2130接收到已接收到读取数据的通知时,CPU 2120可控制错误校正电路2150,使得对缓冲存储器2140中存储的读取数据执行错误校正解码。当从错误校正电路2150接收到已生成经解码码字的通知时,CPU 2120可控制主机接口2110,使得将缓冲存储器2140中存储的经解码码字传送到主机1000。
存储器接口2130可使用各种接口协议与存储器装置2200通信。
在编程操作期间,存储器接口2130可将从CPU 2120接收的编程命令和地址以及缓冲存储器2140中存储的码字传送到存储器装置2200。
在读取操作期间,存储器接口2130可将从CPU 2120接收的读取命令和地址传送到存储器装置2200。在读取操作期间,存储器接口2130可将从存储器装置2200接收的读取数据存储在缓冲存储器2140中,并且可通知CPU 2120已接收到读取数据。
在存储器控制器2100控制存储器装置2200时,缓冲存储器2140可临时存储数据。
在编程操作期间,缓冲存储器2140可存储通过主机接口2110从主机1000接收的原始数据,并将所存储的原始数据传送到错误校正电路2150。在编程操作期间,缓冲存储器2140可存储从错误校正电路2150接收的码字,并且可将所存储的码字提供到存储器接口2130。
在读取操作期间,缓冲存储器2140可存储通过存储器接口2130从存储器装置2200接收的读取数据,并且将所存储的读取数据提供到错误校正电路2150。在读取操作期间,缓冲存储器2140可存储从错误校正电路2150接收的经解码码字,并且可将所存储的经解码码字提供到主机接口2110。
错误校正电路2150可对原始数据执行错误校正编码,并且可对读取数据执行错误校正解码。错误校正电路2150可具有预定水平的错误校正能力。例如,当读取数据中存在不超过错误校正能力的错误位的数量时,错误校正电路2150可检测并校正读取数据中包括的错误。错误校正编码器2150可以是使用低密度奇偶校验(LDPC)码,特别是非二进制LDPC(NB-LDPC)码作为错误校正码的错误校正电路,但本公开的实施例不限于此。
错误校正电路2150可包括错误校正编码器2152和错误校正解码器2154。
错误校正编码器2152可通过对缓冲存储器2140中存储的原始数据执行错误校正编码来生成码字。错误校正编码器2152可将所生成的码字存储到缓冲存储器2140中,并且可通知CPU 2120已生成码字。错误校正编码器2152的基本配置和操作可与上面参照图1描述的错误校正编码器100的基本配置和操作相同。
错误校正解码器2154可通过对缓冲存储器2140中存储的读取数据执行错误校正解码来生成经解码码字。错误校正解码器2154可将经解码码字存储在缓冲存储器2140中,并且可通知CPU 2120已生成经解码码字。当读取数据中包括的错误无法校正时,错误校正解码器2154可通知CPU 2120错误校正解码已失败。错误校正解码器2154的基本配置和操作可与上面参照图1描述的错误校正解码器200的基本配置和操作相同。也就是说,图20所示的符号生成器2154a、节点处理器2154b和校正子校验器2154c可分别执行与图1所示的符号生成器210、节点处理器220和校正子校验器230相同的操作。
内部存储器2160可用作存储存储器控制器2100的操作所需的各种类型信息的存储装置。内部存储器2160可存储多个表。在实施例中,内部存储器2160可存储将逻辑地址映射到物理地址的地址映射表。
存储器装置2200可在存储器控制器2100的控制下执行编程操作、读取操作、擦除操作等。存储器装置2200可被实施为当电源中断时丢失所存储数据的易失性存储器装置,或者被实施为即使当电源中断时也保留所存储数据的非易失性存储器装置。
存储器装置2200可从存储器控制器2100接收编程命令、地址和码字,并且可响应于所接收的编程命令和地址来存储码字。
存储器装置2200可响应于从存储器控制器2100接收的读取命令和地址来对码字执行读取操作,并且可将读取数据提供到存储器控制器2100。
图21是示出根据本公开的实施例的存储器装置的示图。图21所示的存储器装置可应用于图20所示的存储器系统。
存储器装置2200可包括控制逻辑2210、外围电路2220和存储器单元阵列2240。外围电路2220可包括电压生成器2222、行解码器2224、输入/输出电路2226、列解码器2228、页面缓冲器组2232和电流感测电路2234。
控制逻辑2210可在图20的存储器控制器2100的控制下控制外围电路2220。
控制逻辑2210可响应于通过输入/输出电路2226从存储器控制器2100接收的命令CMD和地址ADD来控制外围电路2220。例如,控制逻辑2210可响应于命令CMD和地址ADD而输出操作信号OP_CMD、行地址RADD、列地址CADD、页面缓冲器控制信号PBSIGNALS、允许位VRY_BIT<#>。控制逻辑2210可响应于从电流感测电路2234接收的通过信号PASS或失败信号FAIL来确定验证操作是已通过还是已失败。
外围电路2220可执行将数据存储在存储器单元阵列2240中的编程操作、输出存储在存储器单元阵列2240中的数据的读取操作以及擦除存储在存储器单元阵列2240中的数据的擦除操作。
电压生成器2222可响应于从控制逻辑2210接收的操作信号OP_CMD而生成用于编程操作、读取操作和擦除操作的各种操作电压Vop。例如,电压生成器2222可向行解码器2224传送编程电压、验证电压、通过电压、读取电压、擦除电压、导通电压等。
行解码器2224可响应于从控制逻辑2210接收的行地址RADD,将操作电压Vop传送到与从存储器单元阵列2240中包括的存储块之中选择的存储块联接的局部线LL。局部线LL可包括局部字线、局部漏极选择线和局部源极选择线。另外,局部线LL可包括联接到存储块的各种线,诸如源极线。
输入/输出电路2226可将通过输入/输出(IO)线从存储器控制器接收的命令CMD和地址ADD传送到控制逻辑2210,或者可与列解码器2228交换数据。
列解码器2228可响应于从控制逻辑2210接收的列地址CADD,在输入/输出电路2226和页面缓冲器组2232之间传送数据。例如,列解码器2228可通过数据线DL与页面缓冲器PB1至PBm交换数据,或者可通过列线CL与输入/输出电路2226交换数据。
页面缓冲器组2232可联接到位线BL1至BLm,位线BL1至BLm共同联接到存储块BLK1至BLKi。页面缓冲器组2232可包括分别联接到位线BL1至BLm的多个页面缓冲器PB1至PBm。例如,一个页面缓冲器可联接到相应位线。页面缓冲器PB1至PBm可响应于从控制逻辑2210接收的页面缓冲器控制信号PBSIGNALS进行操作。例如,在编程操作期间,页面缓冲器PB1至PBm可临时存储从存储器控制器接收的编程数据,并且可基于编程数据来控制待施加到位线BL1至BLm的电压。而且,在读取操作期间,页面缓冲器PB1至PBm可临时存储通过位线BL1至BLm接收的数据,或者可感测位线BL1至BLm的电压或电流。
在读取操作或验证操作期间,电流感测电路2234可响应于从控制逻辑2210接收的使能位VRY_BIT<#>而生成参考电流,并且可将通过参考电流生成的参考电压与从页面缓冲器组2232接收的感测电压VPB进行比较,然后输出通过信号PASS或失败信号FAIL。
存储器单元阵列2240可包括存储数据的多个存储块BLK1至BLKi。在存储块BLK1至BLKi中,可存储用户数据和存储器装置2200的操作所需的各种类型的信息。存储块BLK1至BLKi可各自被实施为二维(2D)结构或三维(3D)结构,并且可等同地配置。
图22是示出存储块的示例示图。
存储器单元阵列可包括多个存储块,并且为便于描述,在图22中示出了多个存储块中的任意一个存储块BLKi。
在第一选择线和第二选择线之间彼此平行布置的多个字线可联接到存储块BLKi。此处,第一选择线可以是源极选择线SSL,第二选择线可以是漏极选择线DSL。详细地,存储块BLKi可包括联接在位线BL1至BLm与源极线SL之间的多个串ST。位线BL1至BLm可分别联接到串ST,并且源极线SL可共同联接到串ST。可对串ST进行等同的配置,因此将通过示例的方式详细描述联接到第一位线BL1的串ST。
串ST可包括彼此串联联接在源极线SL和第一位线BL1之间的源极选择晶体管SST、多个存储器单元F1至F16以及漏极选择晶体管DST。单个串ST可包括至少一个源极选择晶体管SST和至少一个漏极选择晶体管DST,并且在串ST中可包括比附图所示的存储器单元F1至F16更多的存储器单元。
源极选择晶体管SST的源极可联接到源极线SL,并且漏极选择晶体管DST的漏极可联接到第一位线BL1。存储器单元F1至F16可串联联接在源极选择晶体管SST和漏极选择晶体管DST之间。不同串ST中包括的源极选择晶体管SST的栅极可联接到源极选择线SSL,不同串ST中包括的漏极选择晶体管DST的栅极可联接到漏极选择线DSL,并且存储器单元F1至F16的栅极可分别联接到多个字线WL1至WL16。不同串ST中包括的存储器单元之中、联接到相同字线的一组存储器单元可被称为“物理页面:PPG”。因此,存储块BLKi可包括与字线WL1至WL16的数量相同数量的物理页面PPG。
一个存储器单元可存储一位数据。该单元被称为单层单元(SLC)。此处,一个物理页面PPG可存储对应于一个逻辑页面LPG的数据。对应于一个逻辑页面LPG的数据可包括与包括在一个物理页面PPG中的单元的数量相同数量的数据位。例如,当两位或更多位数据存储在一个存储器单元中时,一个物理页面PPG可存储对应于两个或更多个逻辑页面LPG的数据。例如,在以MLC类型驱动的存储器装置中,对应于两个逻辑页面的数据可存储在一个物理页面PPG中。在以TLC类型驱动的存储器装置中,对应于三个逻辑页面的数据可存储在一个物理页面PPG中。
图23是示出包括图20的存储器控制器的存储器系统的实施例的示图。
参照图23,存储器系统30000可被实施为蜂窝电话、智能电话、平板电脑、个人计算机(PC)、个人数字助理(PDA)或无线通信装置。存储器系统30000可包括存储器装置2200和能够控制存储器装置2200的操作的存储器控制器2100。
存储器控制器2100可在处理器3100的控制下控制存储器装置2200的数据访问操作,例如编程操作、擦除操作或读取操作。
编程在存储器装置2200中的数据可在存储器控制器2100的控制下通过显示器3200输出。
无线电收发器3300可通过天线ANT发送和接收无线电信号。例如,无线电收发器3300可将通过天线ANT接收的无线电信号改变为可由处理器3100处理的信号。因此,处理器3100可处理从无线电收发器3300输出的信号,并将经处理的信号传送到存储器控制器2100或显示器3200。存储器控制器2100可将由处理器3100处理的信号传送到存储器装置2200。此外,无线电收发器3300可将从处理器3100输出的信号改变为无线电信号,并且通过天线ANT将改变后的无线电信号输出到外部装置。输入装置3400可用于输入用于控制处理器3100的操作的控制信号或待由处理器3100处理的数据。输入装置3400可被实施为诸如触摸板或计算机鼠标的定点装置、小键盘或键盘。处理器3100可控制显示器3200的操作,使得从存储器控制器2100输出的数据、从无线电收发器3300输出的数据或从输入装置3400输出的数据通过显示器3200输出。
在实施例中,能够控制存储器装置2200的操作的存储器控制器2100可被实施为处理器3100的一部分,或实施为与处理器3100分开设置的芯片。
图24是示出包括图20的存储器控制器的存储器系统的实施例的示图。
参照图24,存储器系统70000可被实现在存储卡或智能卡中。存储器系统70000可包括存储器装置2200、存储器控制器2100和卡接口7100。
控制器2100可控制存储器装置2200和卡接口7100之间的数据交换。在实施例中,卡接口7100可以是安全数字(SD)卡接口或多媒体卡(MMC)接口,但不限于此。
卡接口7100可根据主机60000的协议来接口连接主机60000和存储器控制器2100之间的数据交换。在实施例中,卡接口7100可支持通用串行总线(USB)协议和芯片间(IC)-USB协议。此处,卡接口7100可指代能够支持由主机60000使用的协议的硬件、安装在硬件中的软件或者信号传送方法。
当存储器系统70000连接到诸如PC、平板电脑、数码相机、数字音频播放器、蜂窝电话、控制台视频游戏硬件或数字机顶盒的主机60000的主机接口6200时,主机接口6200可在微处理器6100的控制下通过卡接口7100和存储器控制器2100来执行与存储器装置2200的数据通信。
根据本公开,可提高使用NB-LDPC码的错误校正解码器和具有该错误校正解码器的存储器系统的错误校正能力。

Claims (20)

1.一种错误校正解码器,包括:
符号生成器,形成初始符号并将所述初始符号分配给变量节点;
可靠性值管理器,在当前迭代开始时基于所述初始符号来设置对应于所述变量节点的候选符号的可靠性值,并且基于所述当前迭代中所述变量节点接收的校验到变量消息,即C2V消息来更新所述候选符号的可靠性值;
翻转函数值计算器,通过在所述当前迭代中从第一函数值减去第二函数值来计算翻转函数值,所述第一函数值与目标候选符号的经更新可靠性值相关,并且所述第二函数值与除所述目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关;以及
符号校正器,在所述当前迭代中将所述翻转函数值与第一阈值进行比较,并且在确定所述翻转函数值等于或大于所述第一阈值时,将所述变量节点的硬判决值改变为所述目标候选符号。
2.根据权利要求1所述的错误校正解码器,其中所述翻转函数值计算器在所述候选符号之中选择所述目标候选符号,所述目标候选符号具有所述候选符号的经更新可靠性值之中的最大的经更新可靠性值。
3.根据权利要求2所述的错误校正解码器,其中:
所述第一函数值是所述候选符号的经更新可靠性值之中的最大值,或者是应用了缩放因子或缩放偏移中的至少一个的最大值,并且
所述第二函数值是所述候选符号的经更新可靠性值之中的第二大值,或者是通过将所述剩余候选符号中的至少两个的所述经更新可靠性值相加而获得的值。
4.根据权利要求2所述的错误校正解码器,其中:
所述第一函数值是所述候选符号的经更新可靠性值之中的最大值,或者是应用了缩放因子或缩放偏移中的至少一个的最大值,并且
所述第二函数值是与所述变量节点的硬判决值相同的候选符号的经更新可靠性值。
5.根据权利要求1所述的错误校正解码器,其中所述翻转函数值计算器在所述候选符号之中选择所述目标候选符号,所述目标候选符号具有在除与所述变量节点的硬判决值相同的候选符号的经更新可靠性值之外的剩余经更新可靠性值之中的最大的经更新可靠性值。
6.根据权利要求5所述的错误校正解码器,其中所述翻转函数值计算器基于除与所述变量节点的硬判决值相同的候选符号之外的剩余候选符号的经更新可靠性值之间的比较来选择所述目标候选符号。
7.根据权利要求5所述的错误校正解码器,其中:
所述第一函数值是所述剩余经更新可靠性值之中的最大值或者是应用了缩放因子或缩放偏移中的至少一个的最大值,并且
所述第二函数值是与所述变量节点的硬判决值相同的所述候选符号的经更新可靠性值。
8.根据权利要求7所述的错误校正解码器,其中所述符号校正器在确定所述翻转函数值不是正数时跳过对所述翻转函数值与所述第一阈值的比较。
9.根据权利要求1所述的错误校正解码器,其中所述可靠性值管理器将所述候选符号的可靠性值设置为彼此不同,所述候选符号具有彼此不同的汉明距离。
10.根据权利要求1所述的错误校正解码器,其中所述可靠性值管理器基于所述当前迭代的迭代次数来设置所述候选符号的可靠性值。
11.根据权利要求1所述的错误校正解码器,其中所述可靠性值管理器基于与在当前迭代之前执行的先前迭代相对应的未满足校验节点,即UCN的数量来设置所述候选符号的可靠性值。
12.根据权利要求1所述的错误校正解码器,进一步包括:
阈值管理器,基于变量节点的等级、迭代次数或与在当前迭代之前执行的先前迭代相对应的未满足校验节点,即UCN的数量中的至少一个来设置所述第一阈值。
13.根据权利要求1所述的错误校正解码器,其中所述符号校正器:
在确定所述翻转函数值等于或大于第二阈值且小于所述第一阈值时,检查所述变量节点的不可靠性值是否从初始值改变,所述第二阈值小于所述第一阈值,
在作为所述检查的结果确定所述不可靠性值未从所述初始值改变时,更新所述不可靠性值,并且
在作为所述检查的结果确定所述不可靠性值从所述初始值改变时,将所述变量节点的硬判决值改变为所述目标候选符号。
14.根据权利要求13所述的错误校正解码器,其中在确定所述翻转函数值等于或大于所述第二阈值且小于所述第一阈值并且所述不可靠性值从所述初始值改变时,所述符号校正器将所述变量节点的硬判决值改变为所述目标候选符号,并且保持所改变的不可靠性值。
15.根据权利要求13所述的错误校正解码器,其中在所述当前迭代之后进行的后续迭代中,在确定所述翻转函数值等于或大于所述第一阈值时,所述符号校正器将所述变量节点的硬判决值改变为所述目标候选符号,并且将所述不可靠性值设置为所述初始值。
16.根据权利要求13所述的错误校正解码器,其中在所述当前迭代之后进行的后续迭代中,在确定所述翻转函数值为负数并且所述翻转函数值的绝对值等于或大于所述第一阈值时,所述符号校正器保持所述变量节点的硬判决值,并且将所述不可靠性值设置为所述初始值。
17.根据权利要求1所述的错误校正解码器,其中所述符号校正器:
在确定所述翻转函数值等于或大于第二阈值且小于所述第一阈值时,将所述变量节点的不可靠性值增加预设值,所述第二阈值小于所述第一阈值,并且
在确定经增加的不可靠性值等于或大于第三阈值时,将所述变量节点的硬判决值改变为所述目标候选符号。
18.根据权利要求1所述的错误校正解码器,其中所述符号校正器:
在确定所述翻转函数值等于或大于第二阈值且小于所述第一阈值时,将所述变量节点的不可靠性值增加第一预设值,所述第二阈值小于所述第一阈值,
在确定所述翻转函数值等于或大于第三阈值且小于所述第二阈值时,将所述不可靠性值增加第二预设值,所述第二预设值小于所述第一预设值,所述第三阈值小于所述第二阈值,并且
在确定经增加的不可靠性值等于或大于第四阈值时,将所述变量节点的硬判决值改变为所述目标候选符号。
19.一种存储器系统,包括:
存储器装置;以及
存储器控制器,与所述存储器装置通信,并且包括错误校正解码器,所述错误校正解码器基于从所述存储器装置接收的读取向量使用非二进制低密度奇偶校验码,即NB-LDPC码来执行错误校正解码,
其中所述错误校正解码器包括:
符号生成器,通过将所述读取向量中包括的读取值进行分组来形成初始符号,并且将所述初始符号分配给变量节点;
可靠性值管理器,在当前迭代开始时基于所述初始符号来设置对应于所述变量节点的候选符号的可靠性值,并且基于所述当前迭代中所述变量节点接收的校验到变量消息,即C2V消息来更新所述候选符号的可靠性值;
翻转函数值计算器,通过在所述当前迭代中从第一函数值减去第二函数值来计算翻转函数值,所述第一函数值与目标候选符号的经更新可靠性值相关,并且所述第二函数值与除所述目标候选符号之外的剩余候选符号的经更新可靠性值中的一个或多个相关;以及
符号校正器,在所述当前迭代中将所述翻转函数值与第一阈值进行比较,并且在确定所述翻转函数值等于或大于所述第一阈值时,将所述变量节点的硬判决值改变为所述目标候选符号。
20.根据权利要求19所述的存储器系统,其中所述翻转函数值计算器在所述候选符号之中选择所述目标候选符号,所述目标候选符号具有在所述候选符号的经更新可靠性值之中或者在除与所述变量节点的硬判决值相同的候选符号的经更新可靠性值之外的剩余经更新可靠性值之中的最大的经更新可靠性值。
CN201911283888.3A 2019-06-04 2019-12-13 错误校正解码器及具有错误校正解码器的存储器系统 Withdrawn CN112039532A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190066227A KR102714845B1 (ko) 2019-06-04 2019-06-04 오류 정정 디코더 및 이를 포함하는 메모리 시스템
KR10-2019-0066227 2019-06-04

Publications (1)

Publication Number Publication Date
CN112039532A true CN112039532A (zh) 2020-12-04

Family

ID=73576696

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911283888.3A Withdrawn CN112039532A (zh) 2019-06-04 2019-12-13 错误校正解码器及具有错误校正解码器的存储器系统

Country Status (3)

Country Link
US (1) US11031952B2 (zh)
KR (1) KR102714845B1 (zh)
CN (1) CN112039532A (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210092391A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로 및 반도체 메모리 장치
US11636285B2 (en) 2020-09-09 2023-04-25 Micron Technology, Inc. Memory including examples of calculating hamming distances for neural network and data center applications
US11586380B2 (en) 2020-09-09 2023-02-21 Micron Technology, Inc. Memory systems including examples of calculating hamming distances for neural network and data center applications
US11609853B2 (en) * 2020-09-09 2023-03-21 Micron Technology, Inc. Memory controllers including examples of calculating hamming distances for neural network and data center applications
US11381253B1 (en) 2021-02-05 2022-07-05 SK Hynix Inc. Decoding codeword based on higher order information
KR102635444B1 (ko) * 2021-08-24 2024-02-07 한양대학교 산학협력단 비이진 저밀도 패리티 검사 코드 디코더, 그것의 동작방법 및 메모리 시스템
US20240223213A1 (en) * 2022-12-28 2024-07-04 SK Hynix NAND Product Solutions Corp. (dbaSolidigm) Systems and methods for operating low-density parity-check bit-flipping decoder

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160087653A1 (en) * 2014-07-28 2016-03-24 Lsi Corporation Decoder With Targeted Symbol Flipping Recovery Of Miscorrected Codewords
EP3419179B1 (en) * 2017-06-19 2022-11-02 Universite De Bretagne Sud Hybrid architectures for check node processing of extended min-sum (ems) decoding of non-binary ldpc codes
WO2019068053A1 (en) * 2017-09-29 2019-04-04 Cohere Technologies, Inc. ERROR CORRECTION WITHOUT RETURN CIRCUIT USING LOW DENSITY NON-BINARY PARITY CHECK CODES
TWI646783B (zh) * 2018-04-10 2019-01-01 大陸商深圳大心電子科技有限公司 解碼方法及儲存控制器
KR20200019046A (ko) 2018-08-13 2020-02-21 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법

Also Published As

Publication number Publication date
US11031952B2 (en) 2021-06-08
KR102714845B1 (ko) 2024-10-10
KR20200139571A (ko) 2020-12-14
US20200389186A1 (en) 2020-12-10

Similar Documents

Publication Publication Date Title
US11031952B2 (en) Error correction decoder and memory system having the same
US11050438B2 (en) Memory controller
CN110673979B (zh) 存储器控制器及其操作方法
US11115064B2 (en) Error correction decoder and memory system having the same
CN110415753B (zh) 错误校正电路及操作该错误校正电路的方法
US11309916B2 (en) Error correction circuit and memory controller having the same
US11128315B2 (en) Error correction decoder
US10193569B2 (en) Decoding method, memory storage device and memory control circuit unit
US11239865B2 (en) Error correction circuit and operating method thereof
CN110830046B (zh) 纠错电路及其操作方法
US10931308B2 (en) Error correction circuit and method of operating the same
CN113223599B (zh) Ldpc解码器、ldpc解码器的操作方法以及半导体存储器系统
US11055164B2 (en) Error correction decoder and memory controller having the same

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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20201204