CN111726121B - 错误校正解码器和具有该错误校正解码器的存储器系统 - Google Patents

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

Info

Publication number
CN111726121B
CN111726121B CN201911024891.3A CN201911024891A CN111726121B CN 111726121 B CN111726121 B CN 111726121B CN 201911024891 A CN201911024891 A CN 201911024891A CN 111726121 B CN111726121 B CN 111726121B
Authority
CN
China
Prior art keywords
value
roll
over function
function value
error correction
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.)
Active
Application number
CN201911024891.3A
Other languages
English (en)
Other versions
CN111726121A (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
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 CN111726121A publication Critical patent/CN111726121A/zh
Application granted granted Critical
Publication of CN111726121B publication Critical patent/CN111726121B/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • H03M13/3753Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding using iteration stopping criteria
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • GPHYSICS
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/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/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • 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/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/45Soft decoding, i.e. using symbol reliability information
    • H03M13/458Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
    • 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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing

Landscapes

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

Abstract

本申请公开一种错误校正解码器和具有该错误校正解码器的存储器系统。错误校正解码器可以包括:存储器,被配置为存储变量节点的硬判定值;翻转函数值生成器,被配置为在第i迭代中基于与变量节点对应的不满足检查节点(UCN)的数量生成第一值,并且生成翻转函数值作为(i)第一值和偏移值之间的差或(ii)设置值,其中i是非负整数;以及比较器,被配置为基于将翻转函数值与翻转阈值进行比较在第i迭代中输出指示是否翻转存储器中的变量节点的硬判定值的第一信号。

Description

错误校正解码器和具有该错误校正解码器的存储器系统
相关申请的交叉引用
本申请要求于2019年3月19日提交的申请号为10-2019-0031293的韩国专利申请的优先权和权益,该韩国专利申请的公开内容通过引用全部并入本文用于所有目的。
技术领域
本公开的各个实施例总体涉及一种存储器存储装置,更具体地,涉及一种错误校正解码器和具有该错误校正解码器的存储器系统。
背景技术
存储器系统可以包括临时或永久存储数据的存储介质。在存储器系统中,可能由于相邻存储器单元之间的干扰或在写入、读取、传输或处理期间发生数据损坏而引起错误。
为了确保数据的可靠性,可以将诸如错误校正编码和错误校正解码的错误校正技术应用于存储器系统。这样的错误校正技术可以以硬件或软件的形式实施。
发明内容
本公开的各个实施例涉及一种对可以改善硬件复杂度的错误校正解码器以及具有该错误校正解码器的存储器系统。
本公开的各个实施例涉及一种可以减少功耗的错误校正解码器以及具有该错误校正解码器的存储器系统。
本公开的实施例可以提供一种错误校正解码器,用于使用迭代解码方案来执行错误校正解码,以提高错误校正解码器性能。该错误校正解码器可以包括:存储器,被配置为存储变量节点的硬判定值;翻转函数值生成器,被配置为在第i迭代中基于与变量节点相对应的不满足检查节点(UCN)的数量生成第一值,并且生成翻转函数值作为(i)第一值和偏移值之间的差或(ii)设置值,其中i是非负整数;以及比较器,被配置为基于将翻转函数值与翻转阈值进行比较在第i迭代中输出指示是否翻转存储器中的变量节点的硬判定值的第一信号。
在一些实施例中,翻转函数值生成器被配置为:生成UCN的数量作为第一值,并且其中根据其度大于2(q-1)-1且小于或等于2q-1的变量节点,偏移值被设置为使得能够生成具有最大2(q-p)-1的值的翻转函数值,其中q是等于或大于2的自然数,p是小于q的自然数。
翻转函数值生成器可以包括:模计算器,被配置为通过执行与存储在存储器中的变量节点对应的通道值和变量节点的硬判定值之间的模-2运算来生成第二值;以及算术计算器,被配置为通过将第二值与UCN的数量相加来生成第一值,其中根据其度大于2(q-1)-2且小于或等于2q-2的变量节点,偏移值被设置为使得能够生成具有最大2(q-p)-1的值的翻转函数值,其中q是等于或大于2的自然数,p是小于q的自然数。
本公开的实施例可以提供一种错误校正解码器,用于使用迭代解码方案来执行错误校正解码,以提高错误校正解码器性能。。错误校正解码器可以包括:存储器,被配置为存储变量节点的硬判定值;翻转函数生成器,被配置为在第i迭代中基于与变量节点相对应的不满足检查节点(UCN)的数量和与变量节点相对应的满足检查节点(SCN)的数量之间的差来生成第一值,并且通过基于第一值与参考值的比较来选择性地更新第一值来生成翻转函数值;以及比较器,被配置为基于翻转函数值和翻转阈值之间的比较在第i迭代中输出指示是否翻转存储器中的变量节点的硬判定值的第一信号。
在实施例中,翻转函数值生成器被配置为生成通过从UCN的数量中减去SCN的数量而获得的值作为第一值,并且其中根据其度大于2(q-1)-1并且小于或等于2q-1的变量节点,翻转函数值被生成为具有等于或大于参考值并且小于或等于2q-1的值,其中q为等于或大于2的自然数。
在实施例中,翻转函数值生成器可以包括:模计算器,被配置为通过执行与存储在存储器中的变量节点对应的通道值和变量节点的硬判定值之间的模-2运算来生成第二值;以及算术计算器,被配置为在确定第二值为1时,通过将通过从UCN的数量中减去SCN的数量而获得的值加1来生成第一值,并且在确定第二值为0时,通过将通过从UCN的数量中减去SCN的数量而获得的值加上-1来生成第一值,其中根据其度大于2(q-1)-2且小于或等于2q-2的变量节点,翻转函数值被生成为具有等于或大于参考值并且小于或等于2q-1的值,其中q是等于或大于2的自然数。
本公开的实施例可以提供一种存储器系统。存储器系统可以包括存储器装置;以及存储器控制器,包括处理器,该处理器被配置为从存储器装置接收读取值,并且基于根据所接收的读取值的迭代解码方案来执行错误校正解码,其中处理器包括:存储器,被配置为存储变量节点的硬判定值;翻转函数值生成器,被配置为在第i迭代中基于与变量节点相对应的不满足检查节点(UCN)的数量和与变量节点相对应的满足检查节点(SCN)的数量之间的差来生成第一值,并且通过基于第一值与参考值的比较来选择性地更新第一值来生成翻转函数值;以及比较器,被配置为基于翻转函数值和翻转阈值之间的比较在第i迭代中输出指示是否翻转存储器中的变量节点的硬判定值的信号。
附图说明
图1是示出根据本公开的实施例的错误校正电路的示图。
图2是示出奇偶校验矩阵的示例图。
图3是将图2的奇偶校验矩阵图示为坦纳(Tanner)图的示图。
图4是示出使用图2的奇偶校验矩阵计算校验子向量的示例图。
图5是示出读取值的示例的示图。
图6是示出根据本公开的实施例的变量节点的示例的示图。
图7是示出根据本公开的实施例的示例翻转函数值的运算的示图。
图8是示出根据本公开的实施例的另一示例翻转函数值的运算的示图。
图9是示出根据本公开的实施例的变量节点的另一示例的示图。
图10是示出根据本公开的实施例的示例翻转函数值和偏移值的运算的示图。
图11是示出根据本公开的实施例的示例翻转函数值和参考值的运算的示图。
图12是示出根据本公开的实施例的变量节点的又一示例的示图。
图13是示出根据本公开的实施例的又一示例翻转函数值的运算的示图。
图14是示出根据本公开的实施例的又一示例翻转函数值的运算的示图。
图15是示出根据本公开的实施例的变量节点的又一示例的示图。
图16是示出根据本公开的实施例的另一示例翻转函数值和偏移值的运算的示图。
图17是示出根据本公开的实施例的另一示例翻转函数值和参考值的运算的示图。
图18是示出根据本公开的实施例的存储器系统的示图。
图19是示出根据本公开的实施例的存储器装置的示图。
图20是示出存储块的示例图。
图21和图22是示出包括图18的存储器控制器的存储器系统的实施例的示图。
具体实施方式
在本文中使用部分标题是为了易于理解,而不将实施例和技术限于相应的部分。这样,一个部分的实施例可以与其它部分的实施例组合。
图1是示出根据本公开的实施例的错误校正电路的示例的示图。
参照图1,错误校正电路10可以包括错误校正编码器100和错误校正解码器200。
错误校正编码器100可以接收旨在被编码的原始消息,并且可以使用接收到的原始消息和错误校正码(ECC)的生成器矩阵来执行错误校正编码。在一些实施例中,错误校正编码器100还可以使用接收到的原始消息和错误校正码的奇偶校验矩阵来执行错误校正编码。
错误校正编码器100输出由于执行错误校正编码而生成的码字,然后通过通道发送该码字。该通道可以指的是例如通过其传送信息的有线或无线介质或在其中存储信息的存储介质。例如,当错误校正电路10应用于存储器系统时,该通道可以指在错误校正电路10和存储器装置之间传送和接收数据的接口,或者存储器装置本身。码字可以存储在存储器装置中包括的多个存储器单元(例如,构成单个页面的存储器单元)中。
在一些实施例中,错误校正编码器100可以使用低密度奇偶校验(LDPC)码作为错误校正码,但是本公开的实施例不限于此。
在一些实施例中,错误校正解码器200可以使用实现迭代解码方案的各种算法来执行错误校正解码。例如,错误校正解码器200可以使用也称为“置信传播算法(BPA)”的消息传递算法(MPA)来执行错误校正解码。例如,错误校正解码器200可以使用和积算法、最小和算法或位翻转算法来执行错误校正解码。在下文中,在本公开的实施例的描述中,假设错误校正解码器200使用消息传递算法之一的位翻转算法。
在一些实施例中,错误校正解码器200可以通过执行不超过在位翻转算法中指定的最大迭代次数I的情况下的迭代来执行错误校正解码。当在最大迭代次数I内生成满足错误校正码(ECC)的奇偶校验矩阵的约束的有效码字时,错误校正解码器200可以输出所生成的有效码字作为解码码字。当在最大迭代次数I内未生成满足错误校正码的奇偶校验矩阵的约束的有效码字时,错误校正解码器200可以输出指示错误校正解码已经失败的失败信号。
在一些实施例中,错误校正解码器200可以使用低密度奇偶校验(LDPC)码作为错误校正码,但是本公开的实施例不限于此。
在一些实施例中,错误校正解码器200可以包括映射器210、节点处理器220、校验子检查器230和解码控制器240。
映射器210可以从通道接收读取值。读取值可以对应于单个码字。例如,作为对存储有码字的单个页面执行读取操作的结果,可以接收与单个码字相对应的读取值;读取值可以是“0”或“1”。
映射器210可以将从通道接收的读取值存储在第一缓冲器212中,并且可以将存储在第一缓冲器212中的读取值提供到节点处理器220。在下文中,将存储在第一缓冲器212中的读取值称为“通道值”。
映射器210可以在每个初始化步骤和每次迭代中将存储在第一缓冲器212中的通道值提供到节点处理器220。通道值可以为“0”或“1”。
节点处理器220可以基于从映射器210接收的通道值,在位翻转算法中指定的最大迭代次数I内执行错误校正解码。如上所述,位翻转算法是消息传递算法中的一个。
这种消息传递算法使得能够经由在变量节点和检查节点之间执行的消息交换来生成收敛在码字上的结果。消息可以包括从变量节点发送到检查节点的变量节点到检查节点(V2C)消息和从检查节点发送到变量节点的检查节点到变量节点(C2V)消息。包括传递从变量节点到检查节点的V2C消息、传递从检查节点到变量节点的C2V消息以及根据消息传递来更新各个节点的值的过程可以称为“单次迭代”。当将位翻转算法用作消息传递算法时,每条消息都可以指示值“1”或“0”。
在一些实施例中,节点处理器220可以包括变量节点更新模块222和检查节点更新模块224。
变量节点更新模块222可以在初始化步骤(例如,在执行第一迭代之前)使用从映射器210接收的通道值来初始化变量节点。即,在初始化步骤,变量节点更新模块222可以将通道值一个接一个地分配到各个变量节点。
变量节点更新模块222可以生成在第一迭代中发送到检查节点更新模块224的V2C消息,使得分配到各个变量节点的通道值被传送到联接到相应变量节点的检查节点。
变量节点更新模块222可以基于从检查节点更新模块224接收到的C2V消息来生成V2C消息,并且将除了第一迭代之外的迭代中生成的V2C消息发送到检查节点更新模块224。
变量节点更新模块222可以响应于在特定迭代中从检查节点更新模块224接收到的C2V消息来更新变量节点的各个硬判定值。
检查节点更新模块224可以响应于在特定迭代中从变量节点更新模块222接收的V2C消息来更新检查节点的值。
检查节点更新模块224可以基于从变量节点更新模块222接收的V2C消息来生成C2V消息,并且在特定的迭代中将所生成的C2V消息发送到变量节点更新模块222。
每条C2V消息可以指示与之相对应的检查节点是否已经满足对奇偶校验矩阵的约束。例如,C2V消息可以具有值“0”或“1”,其中值“0”指示与C2V消息相对应的检查节点已经满足对奇偶校验矩阵的约束,并且值“1”指示对应于C2V消息的检查节点尚不满足对奇偶校验矩阵的约束。已发送值为“1”的C2V消息的检查节点称为“不满足检查节点(UCN)”,而已发送值为“0”的C2V消息的检查节点称为“满足检查节点(SCN)”。
节点处理器220可以在最大迭代次数I内执行迭代,并且可以将与第i迭代相对应的变量节点的硬判定值(以下称为“硬判定向量Ci”)提供到校验子检查器230。在示例中,I是自然数,并且i是小于或等于I的自然数。硬判定向量可以是行向量或列向量。在下文中,硬判定向量被假定为行向量。
当在最大迭代次数I内生成满足错误校正码的奇偶校验矩阵的约束的有效码字时,校验子检查器230可以将所生成的有效码字输出为解码码字。例如,校验子检查器230可以将根据第i迭代从节点处理器220接收的硬判定向量Ci存储在第二缓冲器232中,并且可以对接收到的硬判定向量Ci执行校验子检查。例如,可以通过检查使用以下等式(1)计算出的校验子向量Si的所有符号是否为“0”来执行校验子检查。
这里,Si表示与第i迭代相对应的校验子向量,H表示错误校正码的奇偶校验矩阵,并且表示与第i迭代相对应的硬判定向量Ci的转置。
校验子向量Si的所有符号均为“0”的情况表示校验子检查已通过。这意味着在第i迭代中已经成功地执行了错误校正解码,并且因此校验子检查器230可以将存储在第二缓冲器232中的硬判定向量Ci作为解码码字输出。
另一方面,校验子向量Si的符号中的任意一个为“1”的情况表示校验子检查失败。这意味着错误校正解码在第i迭代中失败。因此,在当前迭代落入最大迭代次数I之内时,节点处理器220可以执行下一迭代(例如,第(i+1)迭代)。
与校验子向量Si的符号中的“1”相对应的检查节点被称为“不满足检查节点(UCN)”,并且与校验子向量Si的符号中的“0”相对应的检查节点被称为“满足检查节点(SCN)”。
解码控制器240可以控制映射器210或节点处理器220中的至少一个,从而可以执行错误校正解码。例如,当从校验子检查器230接收到与第i迭代相对应的校验子检查已经失败的通知时,解码控制器240可以控制映射器210,以便将存储在第一缓冲器212中的通道值提供到节点处理器220,并且可以控制节点处理器220,以便执行第(i+1)迭代。
在一些实施例中,错误校正电路10可以进一步包括后处理器,该后处理器被配置为支持错误校正解码器200,使得错误校正解码器200可以生成有效码字。后处理器可以支持错误校正解码器200,以便修改用于错误校正解码的各种类型的参数,并使用修改后的参数来执行错误校正解码。
图2示出了奇偶校验矩阵的示例,该奇偶校验矩阵描述了码字的组件必须满足的线性关系。其可以用于确定特定向量是否为码字,并且还可以用在解码算法中。
可以使用大小为(n-k)×n的奇偶校验矩阵来定义(n,k)码。这里,k表示原始消息的长度,n-k表示奇偶校验位的数量。奇偶校验矩阵的每个条目可以是零条目或非零条目。当奇偶校验矩阵中包括的非零条目的数量远小于零条目的数量时,(n,k)码可以被称为“(n,k)LDPC码”。这里,n和k可以是自然数。作为示例,图2示出了(7,4)码的奇偶校验矩阵H。
其中每个条目被实施为子矩阵的矩阵可以被称为“基矩阵”。基矩阵的每个条目可以是具有z×z大小的子矩阵。这里,z可以是大于或等于2的整数。例如,在二进制LDPC码的基矩阵中,“0”可以指示对应条目是零矩阵(大小为z×z),而“1”可以指示对应条目不是零矩阵。例如,在二进制准循环(QC)-LDPC码的基矩阵中,“1”可以表示对应条目是循环矩阵。循环矩阵是通过将单位矩阵循环移位预定移位值而获得的矩阵。在示例中,任何一个循环矩阵可以具有与基矩阵中的另一循环矩阵不同的移位值。
图3示出了与图2的奇偶校验矩阵相对应的Tanner图。
(n,k)码可以由作为等效二部图的表达的Tanner图来表示,并且由n-k个检查节点、n个变量节点和边缘来表示。检查节点对应于奇偶校验矩阵的行,并且变量节点对应于奇偶校验矩阵的列。每个边缘将一个检查节点连接到一个变量节点,并在奇偶校验矩阵中指示非零(例如“1”)条目。
图2所示的(7,4)码的奇偶校验矩阵可以由图3所示的Tanner图表示,其包括三个检查节点CN1至CN3和七个变量节点VN1至VN7。将检查节点CN1至CN3与变量节点VN1至VN7连接的实线表示边缘。
可以基于Tanner图上的消息传递算法,通过在检查节点CN1到CN3与变量节点VN1到VN7之间交换消息来执行迭代解码。例如,可以通过在每次迭代中在检查节点CN1至CN3与变量节点VN1至VN7之间传送消息来执行迭代解码。
变量节点可以使用从与其联接的检查节点接收的C2V消息来执行错误校正。变量节点可以生成待发送到与其联接的检查节点的V2C消息,并且可以分别将所生成的V2C消息发送到相应的检查节点。
检查节点可以使用从与其联接的变量节点接收的V2C消息来执行奇偶校验。检查节点可以生成将被发送到与其联接的变量节点的C2V消息,并且可以将所生成的C2V消息分别发送至对应的变量节点。
图4是示出使用图2的奇偶校验矩阵计算校验子向量的示例图。
如其中所示,可以将校验子向量Si生成为奇偶校验矩阵H和对应于第i迭代的硬判定向量Ci的转置向量Ci T的乘积。包括在硬判定向量Ci中的符号Ci1、Ci2、Ci3、……、Ci7中的每一个表示与第i迭代相对应的变量节点的硬判定值。校验子向量Si的符号Si1、Si2和Si3分别对应于图3的Tanner图中的检查节点CN1、CN2和CN3
校验子向量Si的所有符号Si1、Si2和Si3为“0”表示校验子检查已通过。这意味着,在相应的迭代中,错误校正解码已成功执行。因此,可以终止对相应码字的迭代解码,并且可以输出与第i迭代相对应的硬判定向量Ci作为解码码字。
相反,当校验子向量Si的符号Si1、Si2或Si3中的至少一个为“1”时,表示校验子检查失败。这意味着,在相应的迭代中,错误校正解码尚未成功。因此,如果当前迭代尚未超过最大迭代次数I,则可以执行下一迭代。
图5是示出读取值的示例的示图。
如图5所示,存储器单元的阈值电压分布Vth具有第一状态S1和第二状态S2。
为了获取与单个码字相对应的读取值,可以向存储单个码字的多个存储器单元(例如,构成单个页面的存储器单元)施加单个读取电压Vr。因此,可以获取每个存储器单元的单个读取值。
例如,当将读取电压Vr施加到多个存储器单元时,具有低于读取电压Vr的阈值电压的存储器单元的读取值可以显示为“1”,而具有高于读取电压Vr的阈值电压的存储器单元的读取值可以显示为“0”。
图6是示出根据本公开的实施例的变量节点的示例的示图。
在示例中,图6中的变量节点600可以是图1中所示的变量节点更新模块222的多个变量节点中的一个。在一些实施例中,图1中的变量节点更新模块222中的所有变量节点可以具有与图6的变量节点600相同的配置,并且执行相同的操作。
如图6所示,变量节点600可以包括第一存储装置(或存储器)610、翻转函数值生成器620、比较器630和第二存储装置640。
第一存储装置610可以将在初始化步骤从映射器210接收的通道值存储为变量节点600的硬判定值。第一存储装置610可以保持所存储的硬判定值而不改变,或者可以根据在每次迭代中从比较器630接收的信号来翻转所存储的硬判定值并存储所翻转的硬判定值。在每次迭代中,可以将存储在第一存储装置610中的硬判定值提供给校验子校验器230或联接到变量节点600的检查节点中的至少一个。
翻转函数值生成器620可以生成翻转函数值(FFV),并且在每次迭代中将所生成的翻转函数值提供到比较器630。例如,翻转函数值生成器620可以基于从连接到变量节点600的检查节点接收到的C2V消息来生成翻转函数值。
在每次迭代中,比较器630可以基于从翻转函数值生成器620接收的翻转函数值和从第二存储装置640接收的翻转阈值Fth,确定是否翻转存储在第一存储装置610中的硬判定值。在示例中,当翻转函数值等于或大于翻转阈值Fth时,比较器630可以确定翻转存储在第一存储装置610中的硬判定值。在这种情况下,比较器630可以生成指示翻转硬判定值的信号并且将所生成的信号输出到第一存储装置610。在另一示例中,当翻转函数值小于翻转阈值Fth时,比较器630可以确定不翻转存储在第一存储装置610中的硬判定值。在这种情况下,比较器630可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置610。
本公开的第一实施例
在一些实施例中,假定变量节点600的度(维度、degree)D满足2(q-1)-1<D≤2q-1。这里,q可以是大于或等于2的整数。
例如,翻转函数值生成器620可以通过将由从联接到变量节点600的检查节点接收的C2V消息指示的所有值相加来生成翻转函数值。C2V消息的数量(表示为C)可以等于变量节点600的度D,并且每个C2V消息的值可以为“0”或“1”。在该示例中,翻转函数值是在[0,D]范围内的整数值。这里,翻转函数值指示联接至变量节点600的UCN的数量(#UCN)。
当变量节点600的度D满足2(q-1)-1<D≤2q-1时,翻转函数值是在[0,2q-1]范围内的整数值,为了表示翻转函数值需要q位。因此,为了将翻转函数值从翻转函数值生成器620输出到比较器630,需要q条输出线。
可以从翻转函数值的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以具有在[0,2q-1]范围内的整数值,最多需要q位来表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置640输出到比较器630,最多需要q条输出线。
在本实施例中,比较器630可需要q个输入端口以用于接收翻转函数值,以及最多q个输入端口以用于接收翻转阈值Fth。
本公开的第二实施例
在一些实施例中,假定变量节点600的度D满足2(q-1)-1<D≤2q-1。这里,q可以是大于或等于2的整数。
翻转函数值生成器620可以将联接到变量节点600的UCN的数量(#UCN)与联接到变量节点600的SCN的数量(#SCN)之间的差作为翻转函数值(FFV)。在示例中,翻转函数值生成器620可以使用以下等式(2)来生成翻转函数值:
FFV=#UCN-#SCN (2)
例如,翻转函数值生成器620可以通过将由C2V消息指示的值之中的所有“0”值转换为“-1”,然后将由C2V消息指示的值相加来生成翻转函数值。当UCN的数量(#UCN)为D时,SCN的数量(#SCN)可以为0,而当UCN的数量(#UCN)为0时,SCN的数量(#SCN)为D,并且因此,翻转函数值是[-D,D]范围内的整数。
当变量节点600的度D满足2(q-1)-1<D≤2q-1时,翻转函数值是在[-(2q-1),2q-1]范围内的整数,为了表示翻转函数值需要q+1位。因此,为了将翻转函数值FFV从翻转函数值生成器620输出到比较器630,可能需要q+1条输出线。
可以从翻转函数值的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以是在[-(2q-1),2q-1]范围内的整数。这意味着最多需要q+1位以便表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置640输出到比较器630,可能最多需要q+1条输出线。
在本实施例中,比较器630可需要q+1个输入端口以用于接收翻转函数值,以及最多q+1个输入端口以用于接收翻转阈值Fth。
图7是示出根据本公开的一些实施例的示例翻转函数值的运算的示图。
在一些实施例中,当变量节点600的度为D时,翻转函数值是在[0,D]范围内的整数。例如,当变量节点600的度D是7时,翻转函数值是在[0,7]范围内的整数。又例如,当变量节点600的度D是4时,翻转函数值是在[0,4]范围内的整数值。
当变量节点600的度D满足2(q-1)-1<D≤2q-1时,翻转函数值FFV是在[0,2q-1]范围内的整数。这意味着需要q位以便表示翻转函数值FFV。例如,当q为3时,翻转函数值是[0,7]范围内的整数。因此,当q为3时,可能需要3位以表示翻转函数值FFV。
图8是示出根据本公开的实施例的另一示例翻转函数值的运算的示图。
在本实施例中,当变量节点600的度为D时,翻转函数值FFV是在[-D,D]范围内的整数。例如,当变量节点600的度D为7时,翻转函数值是在[-7,7]范围内的整数。又例如,当变量节点600的度D是4时,翻转函数值是在[-4,4]范围内的整数。
当变量节点600的度D满足2(q-1)-1<D≤2q-1时,翻转函数值FFV是在[-(2q-1),2q-1]范围内的整数,为了表示翻转函数值需要q+1位。例如,当q为3时,翻转函数值是[-7,7]范围内的整数。因此,当q为3时,可能需要4位以表示翻转函数值。
图9是示出根据本公开的实施例的变量节点的另一示例的示图。
在示例中,图9中的变量节点900可以是图1中所示的变量节点更新模块222的多个变量节点中的一个。在一些实施例中,包括在图1中的变量节点更新模块222中的所有变量节点可以具有与图9的变量节点900相同的配置,并且执行相同的操作。
如图9所示,变量节点900可以包括第一存储装置(或存储器)910、翻转函数值生成器920、比较器930和第二存储装置940。
第一存储装置910可以将在初始化步骤从映射器210接收的通道值存储为变量节点900的硬判定值。
第一存储装置910可以响应于在每次迭代中从比较器930接收的信号来更新所存储的硬判定值。在示例中,更新硬判定值可以包括:保持所存储的硬判定值而不改变,或者翻转并存储所存储的硬判定值。硬判定值的翻转可以指将值“0”改变为“1”或将值“1”改变为“0”。例如,当从比较器930接收到指示待翻转硬判定值的信号时,第一存储装置910可以翻转并存储所存储的硬判定值。对于另一示例,当从比较器930接收到指示不翻转硬判定值的信号时,第一存储装置910可以保持所存储的硬判定值而不改变。可以将所更新的硬判定值提供到校验子检查器230,以执行校验子检查。
变量节点900可以生成V2C消息,并且在每次迭代中将所生成的V2C消息发送到联接到变量节点900的检查节点。这可能意味着,在每次迭代中,将存储在第一存储装置910中的硬判定值传送到联接到变量节点900的检查节点。例如,当将值“1”作为变量节点900的硬判定值存储在第一存储装置910中时,值“1”可以被传送到联接到变量节点900的所有检查节点。例如,当将值“0”作为变量节点900的硬判定值存储在第一存储装置910中时,值“0”可以被传送到联接到变量节点900的所有检查节点。
第一存储装置(或存储器)910可以被实施为易失性存储器。例如,第一存储装置910可以被实现为静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM),但是本公开的实施例不限于此。
翻转函数值生成器920可以生成翻转函数值,并且在每次迭代中将所生成的翻转函数值FFV提供到比较器930。在一些实施例中,翻转函数值生成器920可以包括算术计算器924和第三存储装置926。算术计算器924可以被实施为组合逻辑电路,但是本公开的实施例不限于此。
在稍后将描述的另一实施例中,翻转函数值生成器920可以基于从联接到变量节点900的检查节点接收到的C2V消息和存储在第三存储装置926中的偏移值来生成翻转函数值FFV。
在稍后将描述的又一实施例中,翻转函数值生成器920可以基于从联接到变量节点900的检查节点接收的C2V消息和存储在第三存储装置926中的参考值来生成翻转函数值。
比较器930可以基于从翻转函数值生成器920接收的翻转函数值和每次迭代中的翻转阈值Fth来确定是否翻转存储在第一存储装置910中的硬判定值。例如,当翻转函数值等于或大于翻转阈值Fth时,比较器930可以确定翻转存储在第一存储装置910中的硬判定值。在这种情况下,比较器930可以生成指示翻转硬判定值的信号并且将所生成的信号输出到第一存储装置910。又例如,当翻转函数值FFV小于翻转阈值Fth时,比较器930可以确定不翻转存储在第一存储装置910中的硬判定值。在这种情况下,比较器930可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置910。
在一些实施例中,当翻转函数值指示设置值(例如,值“0”或参考值)时,比较器930可以跳过与翻转阈值Fth的比较。因此,与第一和第二实施例(例如,比较器630)相比,可以减少比较器930的计算负荷和功耗。在这种情况下,比较器930可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置910。设置值可以作为固定值存储在比较器930中。
第二存储装置940可以存储翻转阈值Fth。在每次迭代中,第二存储装置940可以将翻转阈值Fth提供到比较器930。第二存储装置940可以被实施为寄存器,但是本公开的实施例不限于此。
本公开的第三实施例
在一些实施例中,算术计算器924可以通过将由从联接到变量节点900的检查节点接收的C2V消息指示的所有值相加来生成第一值。接收的C2V消息的数量可以等于变量节点900的度D,并且C2V消息中的每一个的值可以为“0”或“1”。因此,第一值是在[0,D]范围内的整数。这里,第一值可以指示联接到变量节点900的UCN的数量(#UCN)。
算术计算器924可以通过将偏移值应用于联接到变量节点900的UCN的数量(#UCN)来生成翻转函数值。例如,算术计算器924可以使用以下等式(3)来生成翻转函数值FFV:
FFV=#UCN-偏移值(其中,#UCN≥偏移值)
FFV=0(其中,#UCN<偏移值) (3)
等式(3)示出,当UCN的数量(#UCN)等于或大于偏移值时,将通过从UCN的数量(#UCN)中减去偏移值而获得的值设置为翻转函数值FFV,并且当UCN的数量(#UCN)小于偏移值时,将值“0”设置为翻转函数值FFV。
偏移值可以是根据变量节点900的程度D而预设(或预定)的值。
在实施例中,当变量节点900的度D满足2(q-1)-1<D≤2q-1时,可以预设偏移值,使得翻转函数值FFV由少于q位表示。例如,可以预设偏移值,使得在翻转函数值FFV可以具有的值之中,最大值小于或等于2(q-p)-1。这意味着翻转函数值是在[0,2(q-p)-1]范围内的整数。这也意味着可以预设偏移值,使得翻转函数值FFV由(q-p)位表示。
在示例中,q可以是大于或等于2的整数,并且应用于变量节点更新模块222中包括的多个变量节点中的至少一个的q的值可以不同于应用于其余变量节点的q的值。这类似于第四、第七和第八实施例中的框架。
在示例中,p可以是小于预设的q的自然数。例如,偏移值可以被预设为使得当p为1时,翻转函数值FFV由q-1位表示,并且可以被预设为使得当p为2时,翻转函数值FFV由q-2位表示。例如,可以将偏移值设置为小于D的自然数中的任意一个,以满足以下等式(4):
D-偏移值<2(q-p) (4)
当翻转函数值FFV是在[0,2(q-p)-1]范围内的整数时,为了表示翻转函数值FFV,可能需要(q-p)位。因此,为了将翻转函数值FFV从翻转函数值生成器920输出到比较器930,可能需要(q-p)条输出线。
与先前描述的第一实施例相比,用于输出翻转函数值FFV的输出线的数量可以减少p。
可以从翻转函数值FFV可以具有的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以是在[0,2(q-p)-1]的范围内的整数,最多需要(q-p)位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置940输出到比较器930,可能最多需要(q-p)条输出线。
在本实施例中,与前述第一实施例相比,用于输出翻转阈值Fth的输出线的数量减少了至少p条。
在本实施例中,比较器930可需要q-p个输入端口以用于接收翻转函数值FFV,以及最多q-p个输入端口以用于接收翻转阈值Fth。因此,与第一实施例(例如,比较器630)相比,可以减小比较器930的大小、硬件复杂度和计算负荷。
本公开的第四实施例
在一些实施例中,算术计算器924可以生成联接到变量节点900的UCN的数量(#UCN)和联接到变量节点900的SCN的数量(#SCN)之间的差作为第二值。例如,算术计算器924可以使用以下等式(5)来生成第二值:
第二值=#UCN-#SCN (5)
换言之,算术计算器924可以通过将由C2V消息指示的值之中的所有“0”值改变为“-1”,然后将由C2V消息指示的值相加来生成第二值。当UCN的数量(#UCN)为D时,SCN的数量(#SCN)为0,而当UCN的数量(#UCN)为0时,SCN的数量(#SCN)为D,因此,第二个值是[-D,D]范围内的整数。
算术计算器924可以基于第二值和参考值来生成翻转函数值。例如,算术计算器924可以使用以下等式(6)来生成翻转函数值FFV:
FFV=第二值(其中,第二值≥参考值)
FFV=参考值(其中,第二值<参考值)(6)
等式(6)示出,当第二值等于或大于参考值时,第二值被设置为翻转函数值FFV,而当第二值小于参考值时,参考值被设置为翻转函数值FFV。
参考值可以是[-D,D]范围内的整数,并且可以是例如“0”。下面的示例假定参考值为“0”。
在一些实施例中,当变量节点900的度D满足2(q-1)-1<D≤2q-1时,翻转函数值是在[0,2q-1]范围内的整数,需要q位以表示翻转函数值FFV。因此,为了将翻转函数值FFV从翻转函数值生成器920输出到比较器930,可能需要q条输出线。
在本实施例中,与第二实施例相比,用于输出翻转函数值FFV的输出线的数量可以减少1。
可以从翻转函数值FFV的范围中选择翻转阈值Fth。因此,翻转阈值Fth是在[0,2q-1]范围内的整数,最多需要q位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置940输出到比较器930,可能最多需要q条输出线。
在本实施例中,与第二实施例相比,用于输出翻转阈值Fth的输出线的数量可以减少至少1。
在本实施例中,比较器930可以仅需要q个输入端口以用于接收翻转函数值FFV,以及最多q个输入端口以用于接收翻转阈值Fth。因此,与第二实施例相比,可以减小比较器930的大小、硬件复杂度和计算负荷。
图10是示出根据本公开的实施例的示例翻转函数值和偏移值的运算的示图。
在本实施例中,可以根据变量节点900的度D来设置偏移值。例如,当变量节点900的度D满足2(q-1)-1<D≤2q-1时,随着变量节点900的度D越高,偏移值可以被设置为越大的值,而随着变量节点900的度D越低,偏移值可以被设置为越小的值。参照图10,可以看出,当q是4、3或2时,随着变量节点的度D越高,偏移值被设置成越大的值。
当变量节点900的度满足2(q-1)-1<D≤2q-1时,可以将偏移值设置为使得在翻转函数值FFV可以具有的值之中,最大值小于或等于2(q-p)-1。这意味着可以设置偏移值,使得翻转函数值FFV由(q-p)位表示。在此,p可以是小于q的自然数。
当变量节点900的度满足2(q-1)-1<D≤2q-1时,翻转函数值FFV是在[0,2(q-p)-1]范围内的整数。这意味着需要(q-p)位以表示翻转函数值FFV。例如,当p为1且q为3时,翻转函数值FFV是在[0,3]范围内的整数。在这种情况下,可能需要2位以表示翻转函数值FFV。又例如,当p为2且q为3时,翻转函数值FFV是在[0,1]范围内的整数。在这种情况下,可能需要1位以表示翻转函数值FFV。
根据本实施例,与上面参照图7描述的第一实施例相比,为了表示翻转函数值FFV所需的位的数量减少了p。
图11是示出根据本公开的实施例的示例翻转函数值和参考值的运算的示图。
在本实施例中,当变量节点的度为D时,可以从[-D,D]的范围中选择参考值,并且在图11中示出以参考值为“0”的情况作为示例。
当变量节点900的度为D时,翻转函数值FFV是在[0,D]范围内的整数。例如,当变量节点900的度为7时,翻转函数值FFV是在[0,7]范围内的整数。又例如,当变量节点900的度为4时,翻转函数值FFV是在[0,4]范围内的整数。
当变量节点900的度D满足2(q-1)-1<D≤2q-1时,翻转函数值FFV是在[0,2(q-1)]范围内的整数,需要q位以表示翻转函数值FFV。例如,当q为3时,翻转函数值FFV是在[0,7]范围内的整数。因此,当q为3时,可能需要3位以表示翻转函数值FFV。
根据本实施例,与上面参照图8描述的第二实施例相比,为了表示翻转函数值FFV所需的位的数量可以减少1。
图12是示出根据本公开的实施例的变量节点的另一示例的示图。
在示例中,图12中的变量节点1200可以是图1中所示的变量节点更新模块222的多个变量节点中的一个。在一些实施例中,图1中的变量节点更新模块222中的所有变量节点可以具有与图12的变量节点1200相同的配置,并且执行相同的操作。
如图12所示,变量节点1200可以包括第一存储装置1210、翻转函数值生成器1220、比较器1230和第二存储装置1240。
第一存储装置(或存储器)1210可以将在初始化步骤从映射器210接收的通道值存储为变量节点1200的硬判定值。第一存储装置1210可以保持所存储的硬判定值而不改变,或者可以根据在每次迭代中从比较器1230接收的信号来翻转所存储的硬判定值并存储所翻转的硬判定值。在每次迭代中,可以将存储在第一存储装置1210中的硬判定值提供到校验子校验器230或联接到变量节点1200的检查节点中的至少一个。
翻转函数值生成器1220可以生成翻转函数值FFV,并且在每次迭代中将所生成的翻转函数值FFV提供到比较器1230。在一些实施例中,翻转函数值生成器1220可以包括模计算器1222和算术计算器1224。
模计算器1222可以在从映射器210接收的通道值和从第一存储装置1210接收的硬判定值之间执行模-2运算,并且可以将模-2运算的结果提供到算术计算器1224。
算术计算器1224可以基于从联接到变量节点1200的检查节点接收的C2V消息和从模-2计算器1222接收的模-2运算的结果来生成翻转函数值FFV。
在每次迭代中,比较器1230可以基于从翻转函数值生成器1220接收的翻转函数值FFV和从第二存储装置1240接收的翻转阈值Fth,确定是否翻转存储在第一存储装置1210中的硬判定值。例如,当翻转函数值FFV等于或大于翻转阈值Fth时,比较器1230可以确定翻转存储在第一存储装置1210中的硬判定值。在这种情况下,比较器1230可以生成指示翻转硬判定值的信号并且将所生成的信号输出到第一存储装置1210。例如,当翻转函数值FFV小于翻转阈值Fth时,比较器1230可以确定不翻转存储在第一存储装置1210中的硬判定值。在这种情况下,比较器1230可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置1210。
本公开的第五实施例
在本实施例中,假定变量节点1200的度D满足2(q-1)-2<D≤2q-2。在示例中,q可以是大于或等于2的整数。
算术计算器1224可以在每次迭代中通过将从模-2计算器1222接收的模-2运算的结果与从联接到变量节点1200的检查节点接收的C2V消息指示的所有值相加,来生成翻转函数值FFV。C2V消息的数量等于变量节点1200的度D,并且C2V消息的每个值和模-2运算的结果可以指示值“0”或“1”。因此,翻转函数值是[0,D+1]范围内的整数。
当变量节点1200的度D满足2(q-1)-2<D≤2q-2时,翻转函数值是在[0,2q-1]范围内的整数,需要q位以表示翻转函数值FFV。因此,为了将翻转函数值FFV从翻转函数值生成器1220输出到比较器1230,可能需要q条输出线。
可以从翻转函数值的范围中选择翻转阈值Fth。因此,翻转阈值是在[0,2q-1]范围内的整数。这意味着最多需要q位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置1240输出到比较器1230,可能最多需要q条输出线。
在本实施例中,比较器1230可需要q个输入端口以用于接收翻转函数值FFV,以及最多q个输入端口以用于接收翻转阈值Fth。
本公开的第六实施例
在本实施例中,假定变量节点1200的度D满足2(q-1)-2<D≤2q-2。在示例中,q可以是大于或等于2的整数。
算术计算器1224可以生成联接到变量节点1200的UCN的数量(#UCN)和联接到变量节点1200的SCN的数量(#SCN)之间的差作为第三值。例如,算术计算器1224可以使用以下等式(7)来生成第三值:
第三值=#UCN-#SCN (7)
换言之,算术计算器1224可以通过将由C2V消息指示的值之中的所有“0”值改变为“-1”,然后将由C2V消息指示的值相加来生成第三值。当UCN的数量(#UCN)为D时,SCN的数量(#SCN)为0,而当UCN的数量(#UCN)为0时,SCN的数量(#SCN)为D,因此第三值可以是[-D,D]范围内的整数。
算术计算器1224可以通过将从模-2计算器1222接收的模-2运算的结果MOD2result应用于第三值来生成翻转函数值FFV。例如,算术计算器1224可以使用以下等式(8)来生成翻转函数值FFV:
FFV=第三值+MOD2result(其中,MOD2result=1)
FFV=第三值-1(其中,MOD2result=0) (8)
等式(8)示出,当模-2运算的结果为“1”时,将通过将第三值加“1”获得的值设置为翻转函数值FFV,并且当模-2运算的结果为“0”时,,将通过从第三值减去“1”获得的值设置为翻转函数值FFV。因此,翻转函数值FFV是在[-(D+1),D+1]范围内的整数。
当变量节点1200的度D满足2(q-1)-2<D≤2q-2时,翻转函数值FFV是在[-(2q-1),2q-1]范围内的整数,需要q+1位以表示翻转函数值FFV。因此,为了将翻转函数值FFV从翻转函数值生成器1220输出到比较器1230,可能需要q+1条输出线。
可以从翻转函数值FFV的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以是在[-(2q-1),2q-1]范围内的整数,最多需要q位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置1240输出到比较器1230,可能最多需要q+1条输出线。
在本实施例中,比较器1230可需要q+1个输入端口以用于接收翻转函数值FFV,以及q+1个输入端口以用于接收翻转阈值Fth。
图13是示出根据本公开的实施例的示例翻转函数值的运算的示图。
在本实施例中,当变量节点1200的度为D时,翻转函数值FFV是在[0,D+1]范围内的整数。例如,当变量节点1200的度为6时,翻转函数值FFV是在[0,7]范围内的整数。又例如,当变量节点1200的度为3时,翻转函数值FFV是在[0,4]范围内的整数。
当变量节点1200的度D满足2(q-1)-2<D≤2q-2时,翻转函数值FFV是在[0,2q-1]范围内的整数,需要q位以表示翻转函数值FFV。例如,当q为3时,翻转函数值FFV是在[0,7]范围内的整数。因此,当q为3时,可能需要3位以表示翻转函数值FFV。
图14是示出根据本公开的实施例的示例翻转函数值的运算的示图。
在本实施例中,当变量节点1200的度为D时,翻转函数值FFV可以是在[-(D+1),(D+1)]范围内的整数。在示例中,当变量节点1200的度D为6时,翻转函数值是在[-7,7]范围内的整数。在另一示例中,当变量节点1200的度D为3时,翻转函数值是在[-4,4]范围内的整数。
当变量节点1200的度D满足2(q-1)-2<D≤2q-2时,翻转函数值FFV是在[-(2q-1),2q-1]范围内的整数,需要q+1位以表示翻转函数值。例如,当q为3时,翻转函数值是[-7,7]范围内的整数。因此,当q为3时,可能需要4位以表示翻转函数值。
图15是示出根据本公开的实施例的示例变量节点的示图。
在示例中,图15中的变量节点1500可以是图1中所示的变量节点更新模块222的多个变量节点中的一个。在一些实施例中,图1中的变量节点更新模块222中的所有变量节点可以具有与图15的变量节点1500相同的配置,并且执行相同的操作。
如图15所示,变量节点1500可以包括第一存储装置1510、翻转函数值生成器1520、比较器1530和第二存储装置1540。
第一存储装置1510可以将在初始化步骤从映射器210接收的通道值存储为变量节点1500的硬判定值。
第一存储装置1510可以基于在每次迭代中从比较器1530接收的信号来更新存储的硬判定值。更新硬判定值可以指保持所存储的硬判定值而不改变,或者翻转并存储所存储的硬判定值。翻转硬判定值可以指将值“0”改变为“1”或将值“1”改变为“0”。例如,当从比较器1530接收到指示翻转硬判定值的信号时,第一存储装置1510可以翻转并存储所存储的硬判定值。对于另一示例,当从比较器1530接收到指示不翻转硬判定值的信号时,第一存储装置1510可以保持所存储的硬判定值而不改变。可以将所更新的硬判定值提供到校验子检查器230,以执行校验子检查。
变量节点1500可以生成V2C消息,并且在每次迭代中将所生成的V2C消息发送到联接到变量节点1500的检查节点。在每次迭代中,将存储在第一存储装置1510中的硬判定值传送到联接到变量节点1500的检查节点。例如,当将值“1”作为变量节点1500的硬判定值存储在第一存储装置1510中时,值“1”可以被传送到联接到变量节点1500的所有检查节点。又例如,当将值“0”作为变量节点1500的硬判定值存储在第一存储装置1510中时,值“0”可以被传送到联接到变量节点1500的所有检查节点。
第一存储装置(或存储器)1510可以被实施为易失性存储器。例如,第一存储装置1510可以被实现为静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM),但是本公开的实施例不限于此。
翻转函数值生成器1520可以生成翻转函数值FFV,并且在每次迭代中将所生成的翻转函数值FFV提供到比较器1530。在一些实施例中,翻转函数值生成器1520可以包括模计算器1522、算术计算器1524和第三存储装置1526。算术计算器1524可以被实施为组合逻辑电路,但是本公开的实施例不限于此。
模计算器1522可以在从映射器210接收的通道值和从第一存储装置1510接收的硬判定值之间执行模-2运算,并且可以将模-2运算的结果提供到算术计算器1524。模-2运算的结果可能是“0”或“1”。例如,当从映射器210接收的通道值和从第一存储装置1510接收的硬判定值彼此相等时,模-2运算的结果可以是“0”,而当从映射器210接收的通道值和从第一存储装置1510接收的硬判定值彼此不相等时,模-2运算的结果可以是“1”。
在一些实施例中,算术计算器1524可以基于从模计算器1522接收的模-2运算的结果、从联接到变量节点1500的检查节点接收的C2V消息以及存储在第三存储装置1526中的偏移值来生成翻转函数值FFV。
在一些实施例中,算术计算器1524可以基于从模计算器1522接收的模-2运算的结果、从联接到变量节点1500的检查节点接收的C2V消息以及存储在第三存储装置1526中的参考值来生成翻转函数值FFV。
比较器1530可以基于从翻转函数值生成器1520接收的翻转函数值FFV和翻转阈值Fth来确定是否翻转存储在第一存储装置1510中的硬判定值。例如,当翻转函数值FFV等于或大于翻转阈值Fth时,比较器1530可以确定翻转存储在第一存储装置1510中的硬判定值。在这种情况下,比较器1530可以生成指示翻转硬判定值的信号并且将所生成的信号输出到第一存储装置1510。又例如,当翻转函数值FFV小于翻转阈值Fth时,比较器1530可以确定不翻转存储在第一存储装置1510中的硬判定值。在这种情况下,比较器1530可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置1510。
根据实施例中,当翻转函数值FFV指示设置值(例如,值“0”或参考值)时,比较器1530可以跳过与翻转阈值Fth的比较。因此,与第五和第六实施例相比,可以减少比较器1530的计算负荷和功耗。在这种情况下,比较器1530可以生成指示不翻转硬判定值的信号并且将所生成的信号输出到第一存储装置1510。设置值可以作为固定值存储在比较器1530中。
第二存储装置1540可以存储翻转阈值Fth。在每次迭代中,第二存储装置1540可以将翻转阈值Fth提供到比较器1530。第二存储装置1540可以被实施为寄存器,但是本公开的实施例不限于此。
本公开的第七实施例
在一些实施例中,算术计算器1524可以在每次迭代中通过将从模计算器1522接收的模-2运算的结果MOD2result与从联接到变量节点1500的检查节点接收的C2V消息指示的所有值相加来生成第四值。例如,算术计算器1524可以使用以下等式(9)来生成第四值:
第四值=MOD2result+#UCN (9)
C2V消息的数量等于变量节点1500的度D,并且C2V消息的每个值和模-2运算的结果MOD2result可以指示值“0”或“1”。因此,第四值可以是在[0,D+1]范围内的整数。
在本实施例中,算术计算器1524还可通过对UCN的数量(#UCN)或模-2运算的结果MOD2result中的至少一个应用权重来计算第四值。例如,算术计算器1524可以使用以下等式(10)来生成第四值。在等式(10)中,α和β可以是不同的正实数。
第四值=[(α×MOD2result)+(β×#UCN)] (10)
算术计算器1524可以通过将偏移值应用于第四值来生成翻转函数值FFV。例如,算术计算器1524可以使用以下等式(11)来生成翻转函数值FFV:
FFV=第四值-偏移值(其中,第四值≥偏移值) (11)
FFV=0(其中,第四值<偏移值)
等式(11)示出,当第四值等于或大于偏移值时,将通过从第四值减去偏移值而获得的值设置为翻转函数值FFV,而当第四值小于偏移值时,将“0”设置为翻转函数值FFV。
在一些实施例中,偏移值可以是根据变量节点1500的度D而预设(或预定)的值。
在一些实施例中,当变量节点1500的度D满足2(q-1)-2<D≤2q-2时,可以预设偏移值,使得翻转函数值FFV由少于q个位表示。这里,q可以是大于或等于2的整数。例如,可以预设偏移值,使得在翻转函数值FFV可以具有的值之中,最大值小于或等于2(q-p)-1。这导致翻转函数值是在[0,2(q-p)-1]范围内的整数,并且翻转函数值由q-p位表示。
在示例中,p可以是预设(或预定)的自然数。例如,偏移值可以被预设为使得当p为1时,翻转函数值FFV由q-1位表示,并且可以被预设为使得当p为2时,翻转函数值FFV由q-2位表示。例如,可以将偏移值设置为小于D满足以下等式(12)的自然数中的任何一个:
D-偏移值<2(q-p) (12)
当翻转函数值是在[0,2(q-p)-1]范围内的整数时,为了表示翻转函数值,可能需要q-p位。因此,为了将翻转函数值从翻转函数值生成器1520输出到比较器1530,可能需要q-p条输出线。
因此,根据本实施例,与第五实施例相比,用于输出翻转函数值FFV的输出线的数量可以减少p。
在一些实施例中,可以从翻转函数值的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以是在[0,2(q-p)-1]的范围内的整数,需要最多(q-p)位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置1540输出到比较器1530,可能需要最多q-p条输出线。
在本实施例中,与第五实施例相比,用于输出翻转阈值Fth的输出线的数量可以减少至少p。
在本实施例中,比较器1530可需要q-p个输入端口以用于接收翻转函数值FFV,以及最多q-p个输入端口以用于接收翻转阈值Fth。因此,与第五实施例相比,可以减小比较器1530的大小、硬件复杂度和计算负荷。
本公开的第八实施例
在一些实施例中,算术计算器1524可以生成联接到变量节点1500的UCN的数量(#UCN)和联接到变量节点1500的SCN的数量(#SCN)之间的差作为第五值。例如,算术计算器1524可以使用以下等式(13)来生成第五值:
第五值=#UCN-#SCN (13)
换言之,算术计算器1524可以通过将由C2V消息指示的值之中的所有“0”值改变为“-1”,然后将由C2V消息指示的值相加来生成第五值。当UCN的数量(#UCN)为D时,SCN的数量(#SCN)为0,而当UCN的数量(#UCN)为0时,SCN的数量(#SCN)为D,因此第五值可以是[-D,D]范围内的整数。
在一些实施例中,算术计算器1524可以通过将从模计算器1522接收的模-2运算的结果MOD2result应用于第五值来生成第六值。例如,算术计算器1524可以使用以下等式(14)来生成第六值:
第六值=第五值+1(其中,MOD2result=1)
第六值=第五值-1(其中,MOD2result=0) (14)
等式(14)显示,当模-2运算的结果为“1”时,通过将第五个值加“1”来生成第六值,而当模-2运算的结果为“0”时,通过从第五值中减去“1”来生成第六值。因此,第六值可以是在[-(D+1),D+1]范围内的整数。
在本实施例中,算术计算器1524还可以通过对UCN的数量(#UCN)、SCN的数量(#SCN)或模-2运算的结果MOD2result中的至少一个应用权重来计算第六值。例如,算术计算器1524可以使用以下等式(15)来生成第六值。在等式(15)中,α、β和γ可以是不同的正实数。
第六值=[(α×#UCN)-(β×#SCN)+γ(其中,MODresult=1)]
第六值=[(α×#UCN)-(β×#SCN)-γ(其中,MODresult=0)] (15)
算术计算器1524可以基于第六值和参考值来生成翻转函数值。例如,算术计算器1524可以使用以下等式(16)来生成翻转函数值FFV:
FFV=第六值(其中,第六值≥参考值)
FFV=0(其中,第六值<参考值) (16)
等式(16)示出,当第六值等于或大于参考值时,第六值被设置为翻转函数值FFV,而当第六值小于参考值时,将“0”设置为翻转函数值FFV。
整数参考值可以从[-(D+1),D+1]的范围中选择,并且可以是例如“0”。在下文中,将在参考值为“0”的假设下进行描述。
在实施例中,当变量节点1500的度D满足2(q-1)-2<D≤2q-2时,翻转函数值是在[0,2q-1]范围内的整数。在示例中,q可以是大于或等于2的整数。这意味着需要q位以表示翻转函数值FFV。因此,为了将翻转函数值FFV从翻转函数值生成器1520输出到比较器1530,可能需要q条输出线。
因此,在本实施例中,与第六实施例相比,用于输出翻转函数值FFV的输出线的数量可以减少1。
可以从翻转函数值FFV的范围中选择翻转阈值Fth。因此,翻转阈值Fth可以是在[0,2q-1]范围内的整数,需要最多q位以表示翻转阈值Fth。因此,为了将翻转阈值Fth从第二存储装置1540输出到比较器1530,可能需要最多q条输出线。
在本实施例中,与第六实施例相比,用于输出翻转阈值Fth的输出线的数量可以减少至少1。
在本实施例中,比较器1530可需要q个输入端口以用于接收翻转函数值FFV,以及最多q个输入端口以用于接收翻转阈值Fth。因此,与第六实施例相比,可以减小比较器1530的大小、硬件复杂度和计算负荷。
在本实施例中,算术计算器1524还可以使用以下等式(17)来生成第六值:
第六值=第五值+2(其中,MOD2result=1)
第六值=第五值(其中,MOD2result=0) (17)
基于等式(17),当为度D满足2(q-1)-2<D≤2q-2的变量节点1500计算第六值时,基于等式(16)计算的翻转函数值FFV可以是在[0,2q]范围内的整数。当使用等式(16)和(17)计算翻转函数值FFV时,可能会发生以下情况:为了表示翻转函数值FFV需要q+1位(例如,变量节点1500的度为2q-2并且没有SCN联接到变量节点1500以及模-2运算MOD2result的结果为“1”的情况)。然而,即使在这种情况下,也可以在比较器1530中跳过将表示设置值(例如,参考值)的翻转函数值FFV与翻转阈值Fth进行比较的操作,因此比较器1530的计算负荷和功耗可以减小。
图16是示出根据本公开的实施例的示例翻转函数值和偏移值的运算的示图。
在本实施例中,可以根据变量节点1500的度D来设置偏移值。例如,当变量节点1500的度D满足2(q-1)-2<D≤2q-2时,随着变量节点1500的度D越高,偏移值可以被设置为越大的值,而当变量节点1500的度D越低时,可以将偏移值设置为越小的值。如图16所示,当q是4、3或2时,随着变量节点的度D越高,偏移值被设置为越大的值。
当变量节点1500的度满足2(q-1)-2<D≤2q-2时,偏移值可以被设置为使得在翻转函数值FFV可以具有的值之中,最大值小于或等于2(q-p)-1。这意味着可以偏移值可以被预设为使得翻转函数值FFV由q-p位表示。这里,p可以是小于q的自然数。
在一些实施例中,当变量节点1500的度D满足2(q-1)-2<D≤2q-2时,翻转函数值是在[0,2(q-p)-1]范围内的整数,需要(q-p)位以表示翻转函数值FFV。例如,当p为1且q为3时,翻转函数值FFV是在[0,3]范围内的整数。在这种情况下,可能需要2位以表示翻转函数值FFV。又例如,当p为2且q为3时,翻转函数值是在[0,1]范围内的整数。在这种情况下,可能需要1位以表示翻转函数值FFV。
在本实施例中,与上面参照图13描述的第五实施例相比,为了表示翻转函数值FFV所需的位的数量可以减少p。
图17是示出根据本公开的实施例的示例翻转函数值和参考值的运算的示图。
在本实施例中,当变量节点的度为D时,可以从[-D,D]的范围中选择整数参考值,并且在图17中示出参考值为“0”的情况作为示例。
当变量节点1500的度为D时,翻转函数值FFV可以是在[0,D+1]范围内的整数。例如,当变量节点1500的度为6时,翻转函数值FFV可以是在[0,7]范围内的整数。又例如,当变量节点1500的度D为3时,翻转函数值是在[0,4]范围内的整数。
当变量节点1500的度D满足2(q-1)-2<D≤2q-2时,翻转函数值FFV可以是在[0,2(q -1)]范围内的整数,需要q位以表示翻转功能值FFV。例如,当q为3时,翻转函数值FFV是在[0,7]范围内的整数。因此,当q为3时,可能需要3位以表示翻转函数值。
在本实施例中,与上面参照图14描述的第六实施例相比,为了表示翻转函数值FFV所需的位的数量可以减少1。
图18是示出根据本公开的实施例的存储器系统的示图。
如图18所示,存储器系统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。主机接口2110、存储器接口2130、缓冲存储器2140、错误校正电路2150和内部存储器2160可以由CPU 2120控制。
主机接口2110可以将从主机1000接收的编程请求、读取请求和擦除请求传送到CPU 2120。在编程操作期间,主机接口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。例如,CPU 2120可以响应于从主机接口2110接收到的请求而生成编程操作、读取操作和擦除操作所需的各种命令和地址。
当从主机接口2110接收到编程请求时,CPU 2120可以控制错误校正电路2150,以便对存储在缓冲存储器2140中的原始数据执行错误校正编码。当从错误校正电路2150接收到已经生成码字的通知时,CPU2120可以控制存储器接口2130,以便将存储在缓冲存储器2140中的编程命令、地址和码字传送到存储器装置2200。
当从主机接口2110接收到读取请求时,CPU 2120可以控制存储器接口2130,使得读取命令和地址被传送到存储器装置2200。当从存储器接口2130接收到已经接收到读取数据的通知时,CPU 2120可以控制错误校正电路2150,以便对存储在缓冲存储器2140中的读取数据执行错误校正解码。当从错误校正电路2150接收到已生成解码码字的通知时,CPU2120可以控制主机接口2110,以便将存储在缓冲存储器2140中的解码码字传送到主机1000。
存储器接口2130可以使用各种接口协议与存储器装置2200通信。
在编程操作期间,存储器接口2130可以将编程命令和从CPU 2120接收的地址以及存储在缓冲存储器2140中的码字传送到存储器装置2200。
在读取操作期间,存储器接口2130可以将从CPU 2120接收的读取命令和地址传送到存储器装置2200。在读取操作期间,存储器接口2130可以将从存储器装置2200接收到的读取数据存储在缓冲存储器2140中,并且可以通知CPU 2120已接收到读取数据。
缓冲存储器2140可以在存储器控制器2100控制存储器装置2200的同时临时存储数据。
在编程操作期间,缓冲存储器2140可以存储从主机接口2110接收的原始数据,并且将所存储的原始数据传送到错误校正电路2150。在编程操作期间,缓冲存储器2140可以存储从错误校正电路2150接收的码字,并且可以将所存储的码字传送到存储器接口2130。
在读取操作期间,缓冲存储器2140可以存储从存储器装置2200接收的读取数据,并将所存储的读取数据传送到错误校正电路2150。在读取操作期间,缓冲存储器2140可以存储从错误校正电路2150接收的解码码字,并且可以将所存储的解码码字传送到主机接口2110。
错误校正电路2150可以对原始数据执行错误校正编码,并且可以对读取数据执行错误校正解码。错误校正电路2150可以具有预定水平的错误校正能力。例如,当在读取数据中存在不超过错误校正能力的多个错误位时,错误校正电路2150可以检测并校正包括在读取数据中的错误。可以将不超过错误校正电路2150的错误校正能力的最大错误位数量视为最大允许错误位数量。错误校正电路2150可以是使用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的基本配置和操作相同。
内部存储器2160可以用作存储存储器控制器2100的操作所需的各种类型的信息的存储装置。内部存储器2160可以存储多个表。例如,内部存储器2160可以存储其中逻辑地址被映射到物理地址的地址映射表。
存储器装置2200可以在存储器控制器2100的控制下执行编程操作、读取操作、擦除操作等。存储器装置2200可以实施为当电源中断中断时其中存储的数据丢失的易失性存储器装置,或者即使在电源中断时其中存储的数据也被保留的非易失性存储器装置。
存储器装置2200可以从存储器控制器2100接收编程命令、地址和码字,并且可以响应于编程命令和地址来存储码字。可以响应于编程命令和地址,将码字存储在从存储器装置2200中包括的多个存储块之中选择的存储块中。存储块可以被分类为其中存储了用户数据的用户块和其中存储了存储器系统2000的内部操作所需的数据的元块。每个码字可以存储在用户块中包括的存储器单元(例如,构成单个页面的存储器单元)中。
存储器装置2200可以响应于读取命令和从存储器控制器2100接收的地址来执行读取操作,并且可以将读取数据提供到存储器控制器2100。
图19是示出根据本公开的实施例的存储器装置的示图。图19所示的存储器装置可以应用于图18所示的存储器系统。
存储器装置2200可包括控制逻辑2210、外围电路2220和存储器单元阵列2240。外围电路2220可以包括电压生成电路2222、行解码器2224、输入/输出电路2226、列解码器2228、页面缓冲器组2232和电流感测电路2234。
控制逻辑2210可以在图18所示的存储器控制器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传送到局部线LL,局部线LL联接到从包括在存储器单元阵列2240中的存储块之中选择的存储块。局部线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)结构,并且可以被等同地配置。
图20是示出存储块的示例图。
存储器单元阵列可以包括多个存储块,并且为了描述的方便,在
图20中示出了多个存储块中的任意一个存储块BLKi。
在第一选择线和第二选择线之间彼此并行布置的多条字线可以联接到存储块BLKi。这里,第一选择线可以是源极选择线SSL,第二选择线可以是漏极选择线DSL。详细地,存储块BLKi可以包括联接在位线BL1至BLm与源极线SL之间的多个串ST。位线BL1至BLm可以分别联接到串ST,并且源极线SL可以共同联接到串ST。串ST可以被均等地配置,因此,将通过示例的方式详细描述联接到第一位线BL1的串ST。
串ST可以包括源极选择晶体管SST、多个存储器单元F1至F16和漏极选择晶体管DST,其在源极线SL和第一位线BL1之间彼此串联联接。单个串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中。
图21是示出包括图18的存储器控制器的存储器系统的实施例的示图。
参照图21,存储器系统30000可以被实施为蜂窝电话、智能电话、平板个人计算机(PC)、个人数字助理(PDA)或无线通信装置中。存储器系统30000可以包括存储器装置2200和能够控制存储器装置2200的操作的存储器控制器2100。
存储器控制器2100可以在处理器3100的控制下控制存储器装置2200的操作,例如编程操作、擦除操作或读取操作。
在存储器装置2200中编程的数据可以在存储器控制器2100的控制下通过显示器3200输出。
无线电收发器3300可以通过天线ANT发送和接收无线电信号。例如,无线电收发器3300可以将通过天线接收的无线电信号改变为可以由处理器3100处理的信号。因此,处理器3100可以处理从无线电收发器3300输出的信号,并且可以将处理后的信号传送到存储器控制器2100或显示器3200中。存储器控制器2100可以将由处理器3100处理的信号传送到存储器装置2200。此外,无线电收发器3300可以将从处理器3100输出的信号改变为无线电信号,并且通过天线将所改变的无线电信号输出到外部装置。输入装置3400可用于输入用于控制处理器3100的操作的控制信号或待由处理器3100处理的数据。输入装置3400可以被实施为诸如触摸板或计算机鼠标的定点装置、小键盘或者键盘。处理器3100可以控制显示器3200的操作,使得可以通过显示器3200输出从存储器控制器2100输出的数据、从无线电收发器3300输出的数据或从输入装置3400输出的数据。
在实施例中,能够控制存储器装置2200的操作的存储器控制器2100可以实施为处理器3100的一部分或实施为与处理器3100分开提供的芯片。
图22是示出包括图18的存储器控制器的存储器系统的实施例的示图。
参照图22,存储器系统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和存储器控制器1200与存储器装置2200进行数据通信。
根据本公开,可以改善错误校正解码器和具有错误校正解码器的存储器系统的硬件复杂度。
根据本公开,可以减少错误校正解码器和具有错误校正解码器的存储器系统的功耗。
虽然已经参考本公开的某些示例性实施例示出并描述了本公开,但是本领域技术人员将理解的是,在不脱离由所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本公开的范围不应限于上述的示例性实施例,而是应当由所附权利要求及其等同方案确定。
在上述实施例中,可选择性地执行所有步骤或者可省略部分步骤。在每个实施例中,步骤不一定按照所描述的顺序执行,并且可重新布置。在本说明书和附图中公开的实施例仅是为了便于理解本公开的示例;本公开不限于此。也就是说,对于本领域技术人员显而易见的是,可基于本公开的技术范围进行各种修改。
同时,已经在附图和说明书中描述了本公开的示例性实施例。尽管本文使用了特定术语,但这些术语仅用于解释本公开的实施例。因此,本公开不限于上述实施例,在本公开的精神和范围内可以进行许多变化。对于本领域技术人员显而易见的是,除了本文公开的实施例之外,还可以基于本公开的技术范围进行各种修改。

Claims (19)

1.一种错误校正解码器,使用迭代解码方案,所述错误校正解码器包括:
存储器,存储变量节点的硬判定值;
翻转函数值生成器,在第i迭代中基于与所述变量节点相对应的不满足检查节点即UCN的数量生成第一值,并且生成翻转函数值作为(i)所述第一值和偏移值之间的差或(ii)设置值,其中i是非负整数;以及
比较器,基于将所述翻转函数值与翻转阈值进行比较在所述第i迭代中输出指示是否翻转所述存储器中的变量节点的硬判定值的第一信号,
其中所述翻转函数值生成器:
在确定所述第一值等于或大于所述偏移值时,生成通过从所述第一值减去所述偏移值而获得的值作为所述翻转函数值,以及
在确定所述第一值小于所述偏移值时,生成所述设置值作为所述翻转函数值,
其中所述偏移值被设置为使得根据度大于2(q-1)-1且小于或等于2q-1的所述变量节点,能够生成具有最大2(q-p)-1的值的翻转函数值,其中q是等于或大于2的自然数,p是小于q的自然数,
其中所述设置值为值“0”或参考值。
2.根据权利要求1所述的错误校正解码器,其中基于所述偏移值的翻转函数值的输出值的第一范围小于不使用所述偏移值的所述翻转函数值的输出值的第二范围。
3.根据权利要求1所述的错误校正解码器,其中所述偏移值的值小于所述变量节点的度。
4.根据权利要求1所述的错误校正解码器,其中:
所述比较器进一步在确定所述翻转函数值等于或大于所述翻转阈值时,输出指示翻转所述存储器中的变量节点的硬判定值的第二信号,并且
所述存储器进一步在从所述比较器接收到所述第二信号时翻转所述变量节点的硬判定值并存储翻转的硬判定值。
5.根据权利要求4所述的错误校正解码器,进一步包括:
校验子检查器,使用翻转的硬判定值执行与所述第i迭代相对应的校验子检查,并且在确定所述校验子检查已通过时输出包括翻转的硬判定值的解码码字。
6.根据权利要求1所述的错误校正解码器,其中:
所述翻转函数值生成器生成UCN的数量作为第一值。
7.根据权利要求6所述的错误校正解码器,其中所述翻转函数值由q-p位表示并且通过q-p条输出线从所述翻转函数值生成器传送到所述比较器。
8.根据权利要求1所述的错误校正解码器,其中所述翻转函数值生成器包括:
模计算器,通过执行与存储在所述存储器中的变量节点对应的通道值和所述变量节点的硬判定值之间的模-2运算来生成第二值;以及
算术计算器,通过将所述第二值与所述UCN的数量相加来生成所述第一值,
其中根据度大于2(q-1)-2且小于或等于2q-2的所述变量节点,将所述偏移值设置为使得能够生成具有最大2(q-p)-1的值的翻转函数值,其中q是等于或大于2的自然数,p是小于q的自然数。
9.根据权利要求8所述的错误校正解码器,其中所述翻转函数值由q-p位表示并且通过q-p条输出线从所述翻转函数值生成器传送到所述比较器。
10.一种错误校正解码器,使用迭代解码方案,所述错误校正解码器包括:
存储器,存储变量节点的硬判定值;
翻转函数值生成器,在第i迭代中基于与所述变量节点相对应的不满足检查节点即UCN的数量和与所述变量节点相对应的满足检查节点即SCN的数量之间的差来生成第一值,并且通过基于所述第一值与参考值的比较选择性地更新所述第一值来生成翻转函数值;以及
比较器,基于将所述翻转函数值与翻转阈值进行比较在所述第i迭代中输出指示是否翻转所述存储器中的变量节点的硬判定值的第一信号。
11.根据权利要求10所述的错误校正解码器,其中所述翻转函数值生成器:
在确定所述第一值等于或大于所述参考值时,生成所述第一值作为所述翻转函数值,以及
在确定所述第一值小于所述参考值时,生成所述参考值作为所述翻转函数值。
12.根据权利要求10所述的错误校正解码器,其中:
所述比较器进一步在确定所述翻转函数值等于或大于所述翻转阈值时,输出指示翻转所述存储器中的变量节点的硬判定值的第二信号,并且
所述存储器进一步在从所述比较器接收到所述第二信号时翻转所述变量节点的硬判定值并存储翻转的硬判定值。
13.根据权利要求12所述的错误校正解码器,进一步包括:
校验子检查器,使用翻转的硬判定值执行与所述第i迭代相对应的校验子检查,并且在确定所述校验子检查已通过时输出包括翻转的硬判定值的解码码字。
14.根据权利要求10所述的错误校正解码器,其中:
所述翻转函数值生成器生成通过从所述UCN的数量中减去所述SCN的数量而获得的值作为所述第一值,并且
其中根据度大于2(q-1)-1并且小于或等于2q-1的所述变量节点,所述翻转函数值被生成为具有等于或大于所述参考值并且小于或等于2q-1的值,其中q为等于或大于2的自然数。
15.根据权利要求14所述的错误校正解码器,其中所述翻转函数值由q位表示并且通过q条输出线从所述翻转函数值生成器传送到所述比较器。
16.根据权利要求10所述的错误校正解码器,其中所述翻转函数值生成器进一步包括:
模计算器,通过执行与存储在所述存储器中的变量节点对应的通道值和所述变量节点的硬判定值之间的模-2运算来生成第二值;以及
算术计算器,在确定所述第二值为1时,通过将通过从所述UCN的数量中减去所述SCN的数量而获得的值加1来生成所述第一值,并且在确定所述第二值为0时,通过将通过从所述UCN的数量中减去所述SCN的数量而获得的值加上-1来生成所述第一值,
其中根据度大于2(q-1)-2且小于或等于2q-2的所述变量节点,将所述翻转函数值生成为具有等于或大于所述参考值并且小于或等于2q-1的值,其中q为等于或大于2的自然数。
17.根据权利要求16所述的错误校正解码器,其中所述翻转函数值由q位表示并且通过q条输出线从所述翻转函数值生成器传送到所述比较器。
18.一种存储器系统,包括:
存储器装置;以及
存储器控制器,包括处理器,所述处理器从所述存储器装置接收读取值并且基于根据所接收的读取值的迭代解码方案来执行错误校正解码,
其中所述处理器包括:
存储器,存储变量节点的硬判定值;
翻转函数值生成器,在第i迭代中基于与所述变量节点相对应的不满足检查节点即UCN的数量和与所述变量节点相对应的满足检查节点即SCN的数量之间的差来生成第一值,并且通过基于所述第一值与参考值的比较选择性地更新所述第一值来生成翻转函数值;以及
比较器,在所述第i迭代中基于所述翻转函数值和翻转阈值之间的比较输出指示是否翻转所述存储器中的变量节点的硬判定值的信号。
19.根据权利要求18所述的存储器系统,其中:
所述翻转函数值生成器生成通过从所述UCN的数量中减去所述SCN的数量而获得的值作为所述第一值,并且
其中根据度大于2(q-1)-1并且小于或等于2q-1的所述变量节点,所述翻转函数值被生成为具有等于或大于所述参考值并且小于或等于2q-1的值,其中q为等于或大于2的自然数。
CN201911024891.3A 2019-03-19 2019-10-25 错误校正解码器和具有该错误校正解码器的存储器系统 Active CN111726121B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020190031293A KR102588969B1 (ko) 2019-03-19 2019-03-19 오류 정정 디코더 및 이를 포함하는 메모리 시스템
KR10-2019-0031293 2019-03-19

Publications (2)

Publication Number Publication Date
CN111726121A CN111726121A (zh) 2020-09-29
CN111726121B true CN111726121B (zh) 2024-04-09

Family

ID=72514628

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911024891.3A Active CN111726121B (zh) 2019-03-19 2019-10-25 错误校正解码器和具有该错误校正解码器的存储器系统

Country Status (3)

Country Link
US (1) US11115064B2 (zh)
KR (1) KR102588969B1 (zh)
CN (1) CN111726121B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210092391A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 반도체 메모리 장치의 에러 정정 회로 및 반도체 메모리 장치
US11722151B2 (en) * 2021-08-09 2023-08-08 Micron Technology, Inc. Bit flipping decoder based on soft information
US11777522B1 (en) 2022-03-28 2023-10-03 Micron Technology, Inc. Bit flipping decoder with dynamic bit flipping criteria
TWI831333B (zh) * 2022-08-18 2024-02-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079639A (zh) * 2006-02-02 2007-11-28 三星电子株式会社 基于节点存储器的低密度奇偶校验解码装置和方法
CN108073467A (zh) * 2016-11-08 2018-05-25 爱思开海力士有限公司 具有硬信道信息的位翻转ldpc解码算法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266493B1 (en) * 2008-01-09 2012-09-11 L-3 Communications, Corp. Low-density parity check decoding using combined check node and variable node
US8464129B2 (en) * 2008-08-15 2013-06-11 Lsi Corporation ROM list-decoding of near codewords
KR101718543B1 (ko) * 2010-11-17 2017-03-22 한국과학기술원 개선된 비트 반전 알고리즘 기반의 저밀도 패리티 검사 부호를 위한 복호 방법, 장치 및 이를 위한 기록 매체
WO2014126750A1 (en) * 2013-02-14 2014-08-21 Marvell World Trade Ltd. Bit flipping decoding with reliability inputs for ldpc codes
US9184767B2 (en) * 2013-09-19 2015-11-10 SanDisk Technologies, Inc. Scoring variable nodes for low density parity check code decoding
CN104518801A (zh) * 2013-09-29 2015-04-15 Lsi公司 非二进制的分层低密度奇偶校验解码器
US10200064B1 (en) * 2014-03-18 2019-02-05 Marvell International Ltd. Systems and method for bit-flipping decoders with partial-column processing, ordering and scheduling
US9378765B2 (en) * 2014-04-03 2016-06-28 Seagate Technology Llc Systems and methods for differential message scaling in a decoding process
US20160087653A1 (en) * 2014-07-28 2016-03-24 Lsi Corporation Decoder With Targeted Symbol Flipping Recovery Of Miscorrected Codewords
US10312946B2 (en) * 2017-02-06 2019-06-04 Mitsubishi Electric Research Laboratories, Inc. Soft-output decoding of codewords encoded with polar code
US10511326B2 (en) * 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10951232B2 (en) * 2018-11-26 2021-03-16 Micron Technology, Inc. Error correction bit flipping scheme
TWI697907B (zh) * 2020-01-14 2020-07-01 慧榮科技股份有限公司 記憶體控制器及快閃記憶體的存取方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101079639A (zh) * 2006-02-02 2007-11-28 三星电子株式会社 基于节点存储器的低密度奇偶校验解码装置和方法
CN108073467A (zh) * 2016-11-08 2018-05-25 爱思开海力士有限公司 具有硬信道信息的位翻转ldpc解码算法

Also Published As

Publication number Publication date
CN111726121A (zh) 2020-09-29
US20200304155A1 (en) 2020-09-24
US11115064B2 (en) 2021-09-07
KR102588969B1 (ko) 2023-10-16
KR20200111509A (ko) 2020-09-29

Similar Documents

Publication Publication Date Title
CN111726121B (zh) 错误校正解码器和具有该错误校正解码器的存储器系统
US11050438B2 (en) Memory controller
CN110673979B (zh) 存储器控制器及其操作方法
US11031952B2 (en) Error correction decoder and memory system having the same
US11128315B2 (en) Error correction decoder
US11309916B2 (en) Error correction circuit and memory controller having the same
CN110415753B (zh) 错误校正电路及操作该错误校正电路的方法
US20170134049A1 (en) Decoding method, memory storage device and memory control circuit unit
KR102582326B1 (ko) 에러 정정 회로 및 이의 동작 방법
US11804857B2 (en) Electronic device
CN111049530A (zh) 纠错电路及其操作方法
KR20200098964A (ko) 컨트롤러 및 그것의 동작 방법
CN110830046B (zh) 纠错电路及其操作方法
US20200341829A1 (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
GR01 Patent grant
GR01 Patent grant