CN110673979B - 存储器控制器及其操作方法 - Google Patents

存储器控制器及其操作方法 Download PDF

Info

Publication number
CN110673979B
CN110673979B CN201910049608.6A CN201910049608A CN110673979B CN 110673979 B CN110673979 B CN 110673979B CN 201910049608 A CN201910049608 A CN 201910049608A CN 110673979 B CN110673979 B CN 110673979B
Authority
CN
China
Prior art keywords
variable node
messages
target variable
sign
node
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
CN201910049608.6A
Other languages
English (en)
Other versions
CN110673979A (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 CN110673979A publication Critical patent/CN110673979A/zh
Application granted granted Critical
Publication of CN110673979B publication Critical patent/CN110673979B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2918Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes with error correction codes in three or more dimensions, e.g. 3-dimensional product code where the bits are arranged in a cube
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3723Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using means or methods for the initialisation of the decoder
    • 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/63Joint error correction and other techniques
    • H03M13/6325Error control coding in combination with demodulation

Landscapes

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

Abstract

本发明涉及一种使用迭代解码方案来执行错误校正解码的存储器控制器,该存储器控制器包括:变量节点更新模块,用于将初始LLR值分配到变量节点,并且在第i迭代中,使用初始LLR值和对应于变量节点的校验到变量(C2V)消息来更新变量节点的值;校正子校验器,用于使用在第i迭代中更新的变量节点的值来执行校正子校验;以及反转确定器,用于在对应于第i迭代的校正子校验失败时,基于对应于目标变量节点的C2V消息的符号的比率,确定是否反转目标变量节点的初始LLR值的符号。

Description

存储器控制器及其操作方法
相关申请的交叉引用
本专利文件要求于2018年7月3日提交的申请号为10-2018-0077313的韩国专利申请的优先权和权益,该韩国专利申请的全部内容通过引用并入本文。
技术领域
本专利文件中公开的技术和实施方案总体涉及一种存储器控制器及其操作方法,且更特别地,涉及存储器装置中的错误校正解码。
背景技术
存储器系统可包括将存储器装置上的数据临时或持久地存储在其中的存储介质。为了控制可能由于相邻存储器单元之间的干扰或在写入、读取、传输或处理期间出现的任何数据损坏而出现的数据错误,存储器系统可使用诸如错误校正编码和解码的错误校正技术来确保数据的可靠性。错误校正技术可以硬件和/或软件的形式来实施。例如,用于错误校正的电路可使用错误校正码在存储器系统中执行错误校正编码和解码。
低密度奇偶校验(LDPC)码具有超越其它常规错误校正码技术的性能,并且已被广泛用于通信和其它系统。利用其迭代解码方案,LDPC编码可随代码长度的增加来提高错误校正性能,而不增加每位的计算复杂度。然而,在许多情况下,LDPC码的性能会受到影响,其中硬错误可能导致产生成功解码所需的计算周期或迭代的数量方面的低效,并且甚至在某些情况下,不能产生适当的解码。
发明内容
本专利文件中公开的技术可在实施例中实施,以提供一种存储器控制器和该存储器控制器的操作方法。除了其它特征和优点之外,该存储器控制器能够防止由于硬错误而导致的错误校正解码的性能劣化。
根据本公开的一个方面,提供了一种存储器控制器,用于使用迭代解码方案来执行错误校正解码,该存储器控制器包括:映射器,被配置成将从信道接收的读取值转换为初始对数似然比(LLR)值;变量节点更新模块,被配置成将初始LLR值分配到多个变量节点,并且在第i迭代中,使用初始LLR值和对应于变量节点的校验到变量(C2V)消息来更新变量节点的值,其中i是小于预定最大迭代数量的自然数;校验节点更新模块,被配置成在第i迭代中,使用对应于校验节点的变量到校验(V2C)消息来生成待传送到变量节点的C2V消息;校正子校验器,被配置成使用在第i迭代中更新的变量节点的值来执行校正子校验;以及反转确定器,被配置成在校正子校验器确定对应于第i迭代的校正子校验失败时,基于对应于目标变量节点的C2V消息的符号的比率,确定是否反转目标变量节点的初始LLR值的符号。
根据本公开的另一方面,提供了一种由存储器控制器使用迭代解码方案执行错误校正解码的方法,该方法包括:将从信道接收的读取值转换为初始LLR值;将初始LLR值分别分配到多个变量节点;在第i迭代中,使用对应于校验节点的V2C消息输入来生成待传送到变量节点的C2V消息;在第i(i为自然数)迭代中,使用初始LLR值和对应于变量节点的C2V消息来更新变量节点的值;使用在第i迭代中更新的变量节点的值来执行校正子校验;并且当对应于第i迭代的校正子校验失败时,基于对应于目标变量节点的C2V消息的符号的比率,确定是否反转目标变量节点的初始LLR值的符号。
根据本公开的另一方面,提供了一种存储器设备,其的每个存储器单元存储多于一位的数据,该存储器设备包括处理器和包括处理器可执行代码的存储器,其中在处理器执行处理器可执行代码时,处理器配置低密度奇偶校验(LDPC)解码器以使用消息传递迭代解码来进行操作,LDPC解码器包括多个变量节点和多个校验节点,LDPC解码器被配置成生成消息并在变量节点和校验节点之间传递消息,并且更新变量节点和校验节点,以实现解码操作的多重迭代,以从目标变量节点生成解码位。其中在处理器执行处理器可执行代码时,LDPC解码器将初始值分配到目标变量节点;当接收到从相邻校验节点发送到目标变量节点的消息时,确定对应于目标变量节点的目标存储器单元是否具有硬错误;在确定目标存储器单元具有硬错误时,反转目标变量节点的初始值的符号;并且一起使用符号反转的初始值和从相邻校验节点发送到目标变量节点的消息,以产生发送到相邻校验节点的新消息。
附图说明
现在将参照附图在下文中更全面地描述示例性实施例;然而,示例性实施例可以不同的形式来实施,并且不应被解释为限于在此阐述的实施例。
在附图中,为了说明清楚,可放大尺寸。将理解的是,当元件被称为在两个元件“之间”时,其可以是这两个元件之间的唯一元件,或者也可存在一个或多个中间元件。
图1是示出基于所公开技术的实施例的错误校正电路的示例的示图。
图2示出了奇偶校验矩阵的示例。
图3是使用Tanner图示出的图2所示的奇偶校验矩阵的示例的示图。
图4是示出使用图2所示的奇偶校验矩阵来计算的校正子向量的示例的示图。
图5是示出在软判决解码中使用g个读取值来生成初始值的进程的示例的示图。
图6是示出查找表的示例的示图。
图7是示出关于出现硬错误的存储器单元的初始值分配的示例的示图。
图8是示出校正硬错误的进程的示例的示图。
图9示出了如何将坏信息从具有硬错误的变量节点提供到校验节点。
图10是示出通过反转目标变量节点的初始值的符号来生成V2C消息的进程的示例的示图。
图11是示出通过反转目标变量节点的初始值的符号来生成V2C消息的进程的示例的示图。
图12是示出基于所公开技术的实施例的存储器系统的示例的示图。
图13是示出基于所公开技术的实施例的存储器控制器的操作方法的示例的流程图。
图14是示出基于所公开技术的实施例的存储器控制器的操作方法的示例的流程图。
图15是示出基于所公开技术的实施例的存储器装置的示例的示图。
图16是示出存储块的示例的示图。
图17是示出基于所公开技术的一些实施例来实现的三维配置的存储块的示例的示图。
图18是示出基于所公开技术的一些实施例来实现的三维配置的存储块的另一示例的示图。
图19至图22是示出包括图12所示的存储器控制器的存储器系统的其它示例的示图。
具体实施方式
图1是示出基于所公开技术的实施例的错误校正电路的示例的示图。
错误校正电路10可使用采用迭代解码方案的各种算法来执行错误校正解码。例如,错误校正电路10可使用也被称为置信传播算法(BPA)的消息传递算法(MPA)来执行错误校正解码。
在使用迭代解码算法的实施方案中,错误校正电路10可执行根据迭代解码方案指定的最大迭代数量(迭代的最大数量)以内的错误校正解码。当在最大迭代数量以内生成满足错误校正码(ECC)的奇偶校验矩阵的约束的有效码字时,错误校正电路10可输出所生成的有效码字作为解码的码字。相反,当错误校正电路10无法正确解码时,错误校正电路10可声明解码失败。例如,当在最大迭代数量以内未生成满足ECC的奇偶校验矩阵的约束的有效码字时,错误校正电路10可输出“失败”信号,指示错误校正解码失败。在实施方案中,错误校正电路10可使用低密度奇偶校验(LDPC)码作为ECC。在所公开技术的一些实施方案中,奇偶校验矩阵的约束可包括必须满足以声明解码成功的某个等式。
错误校正电路10可包括映射器110、错误校正解码器120、校正子校验器130和解码控制器140。
映射器110可从信道接收读取值。读取值是从存储器装置读取的值;例如,在对存储器单元的单个读取操作可以二进制存储方案产生零或一的二进制值。此处,获得读取值的信道可表示在其上传送信息的有线或无线介质或在其中存储信息的存储介质。在所公开技术的一些实施方案中,信道可指示在错误校正电路10与存储器装置之间承载数据的接口,或指示存储器装置自身。读取值可对应于码字,该码字是在错误校正编码期间通过将奇偶校验位添加到原始消息来生成的。例如,映射器110可从存储器装置接收对应于一个码字的读取值。读取值中的每一个可以是“0”或“1”。当使用硬判决解码时,一组读取值可对应于一个码字。一组读取值可被称为一个读取向量。当使用软判决解码时,多组读取值可对应于一个码字。也就是说,当使用软判决解码时,多个读取向量可对应于一个码字。
映射器110可使用读取值来生成量化的读取值。例如,映射器110可使用g个读取向量来生成(g+1)电平量化读取向量。包括在(g+1)电平量化读取向量中的每一个读取值可以是(g+1)电平量化读取值。(g+1)电平量化读取值可以是由g个位配置的读取模式(例如,位序列)。例如,2-电平量化读取值可以是“1”或“0”。此处,例如,2-电平量化读取值中的一个可以是“1”,并且2-电平量化读取值中的另一个可以是“0”。作为另一示例,3-电平量化读取值可以是“11”、“10”、“01”或“00”。例如,3-电平量化读取值中的一个可以是“11”,3-电平量化读取值中的另一个可以是“00”,并且3-电平量化读取值中剩余的可以是“10”或“01”。
当使用软判决解码(即,g为2或更大)时,映射器110可通过组合对应于g个读取电压的读取向量来生成(g+1)电平量化读取向量。例如,当使用两个读取电压(例如,第一读取电压和第二读取电压)时,映射器110可通过将对应于第一读取电压的读取向量和对应于第二读取电压的读取向量进行组合来生成3-电平量化读取向量。为此,映射器110可包括第一缓冲器112。当使用g个读取电压时,第一缓冲器112可接收和存储分别对应于g个读取电压的读取向量。映射器110可通过将存储在第一缓冲器112中的对应于g个读取电压的读取向量进行组合来生成(g+1)电平量化读取向量。
当使用硬判决解码(例如,g是1)时,映射器110可确定一个读取向量本身是2-电平量化读取向量。
映射器110可根据迭代解码方案将(g+1)电平量化读取向量(被量化为g+1个电平的读取向量)转换为用于错误校正解码的初始向量,并且可将该初始向量提供给错误校正解码器120和解码控制器140。初始向量可包括多个初始值。也就是说,映射器110可将(g+1)电平量化读取值中的每一个转换为初始值。例如,初始值可以是对数似然比(LLR)值。
如上所述,错误校正解码器120可基于从映射器110接收的初始向量执行最大迭代数量以内的错误校正解码。错误校正解码器120可使用采用迭代解码方案的各种算法来执行错误校正解码。例如,错误校正解码器120可使用MPA来执行错误校正解码。作为示例而非限制,可使用和积算法或最小和算法作为MPA。
在MPA的示例性实施方案中,概率向量形式的消息在图中的节点之间传递,其中,算法的迭代可被视为通过图的消息。MPA可通过变量节点和校验节点之间的消息交换的迭代来生成收敛到读取值的正确估计的输出。该消息可包括从变量节点传输到校验节点的变量到校验(V2C)消息和从校验节点传输到变量节点的校验到变量(C2V)消息。包括将V2C消息从变量节点传输到校验节点的进程、将C2V消息从校验节点传输到变量节点的进程以及通过相应进程来更新各个节点的值的进程的进程组合可被称为一次迭代。
错误校正解码器120可包括变量节点更新模块122和校验节点更新模块124。
在执行第一迭代之前,变量节点更新模块122可使用从映射器110接收的初始向量(例如,LLR值)来初始化变量节点。例如,变量节点更新模块122可将包括在初始向量中的初始值分配到各个变量节点。在第一迭代中,变量节点更新模块122可生成V2C消息并将其传输到校验节点更新模块124,使得变量节点中的每一个的初始值被传送到连接到对应变量节点的校验节点。在每一次迭代中,变量节点更新模块122可基于从校验节点更新模块124接收的C2V消息来更新变量节点的值。在除第一迭代之外的每一次迭代中,变量节点更新模块122可基于从校验节点更新模块124接收的C2V消息来生成V2C消息,并且将生成的V2C消息传输到校验节点更新模块124。
在每一次迭代中,校验节点更新模块124可基于从变量节点更新模块122接收的V2C消息来更新校验节点的值。在每一次迭代中,校验节点更新模块124可基于从变量节点更新模块122接收的V2C消息来生成C2V消息,并且将所生成的C2V消息传输到变量节点更新模块122。
初始值和消息可被称为软信息。软信息可包括由整数或实数表示的值。在示例性实施方案中,软信息可以是对数似然比(LLR)值。软信息可包括概率的估计或表示属于码字的每一个标记的估计为“0”或“1”以及每一个估计的置信度值(概率或似然性)的一些等效信息。例如,软信息可包括符号位和大小位。符号位可表示对应标记的估计。例如,表示负值的符号位可指示对应标记更可能为“1”,并且表示正值的符号位使得对应标记不太可能为“1”。相反地,表示正值的符号位可指示对应标记更可能为“0”,并且表示负值的符号位使得对应标记不太可能为“0”。大小位可表示关于符号位的置信度值(概率或似然性)。例如,当大小位的值增加时,关于符号位的置信度值(概率或似然性)可增加。
错误校正解码器120可执行最大迭代数量I以内的迭代,并且向校正子校验器130提供执行第i迭代所得到的变量节点的值(在下文中,称为变量节点向量Ci)。此处,I为自然数,并且i是小于或等于I的自然数。虽然变量节点向量可以是行向量或列向量,但在下面的示例中假设变量节点向量为行向量。
当在最大迭代数量I以内生成满足ECC的奇偶校验矩阵的约束的有效码字时,校正子校验器130可输出有效码字作为解码的码字。
例如,校正子校验器130可在第二缓冲器132中存储在第i迭代之后从错误校正解码器120接收的变量节点向量Ci,并且对接收的变量节点向量Ci执行校正子校验。在示例性实施方案中,可通过检查校正子向量Si的所有标记是否为“0”来执行校正子校验。校正子向量Si可表示为:
Figure BDA0001950307400000081
其中Si是对应于第i迭代的校正子向量,H是ECC的奇偶校验矩阵,并且
Figure BDA0001950307400000082
是对应于第i迭代的变量节点向量Ci的转置。
当校正子向量Si的所有标记都为“0”时,确定校正子向量已通过校正子校验。这表示在第i迭代中成功地执行了错误校正解码。因此,校正子校验器130可输出存储在第二缓冲器132中的变量节点向量作为有效码字,即解码的码字。
另一方面,当校正子向量Si具有校正子向量Si的标记之中的非零标记时,确定校正子校验失败。这表示在第i迭代中错误校正解码失败。因此,只要尚未达到最大迭代数量I,错误校正解码器120就可执行第(i+1)迭代。与校正子向量Si的标记之中的非零标记相对应的校验节点可被称为未满足校验节点(UCN)。当对应于第i迭代的校正子校验失败时,校正子校验器130可向错误校正解码器120和解码控制器140中的至少一个通知第i迭代失败。
当在最大迭代数量I以内未生成满足ECC的奇偶校验矩阵的约束的有效码字时,校正子校验器130可输出“失败”信号,指示错误校正解码失败。
当对应于第i迭代的校正子校验失败时,解码控制器140可调整变量节点之中的特定变量节点的初始值。此处,在所公开技术的一些实施例中,调整初始值可包括将初始值的符号从负符号反转为正符号,或者从正符号反转为负符号,同时保持初始值的大小。解码控制器140可控制错误校正解码器120使用调整后的初始值来执行下一迭代。待调整初始值的特定变量节点可被称为目标变量节点。
解码控制器140可包括目标变量节点选择器142、反转确定器144和符号反转器146。
目标变量节点选择器142可从映射器110接收分配到变量节点的初始向量。目标变量节点选择器142可基于接收的初始向量来确定至少一个目标变量节点。在所公开技术的实施例中,目标变量节点选择器142可确定与包括在初始向量中的初始值之中具有设定大小的初始值相对应的变量节点作为目标变量节点。在一个示例中,假设使用8-电平量化读取值生成初始向量,并且包括在初始向量中的初始值中的每一个具有多个LLR值(例如,-4、-3、-2、-1、+1、+2、+3、+4)之中的任意一个LLR值。在一些实施方案中,可将设定大小设置为具有可能被分配到已出现硬错误的存储器单元的初始值的大小。在所公开技术的一些实施例中,设定大小可以是待分配到变量节点的初始值之中的最大值。在LLR值可具有-4、-3、-2、-1、+1、+2、+3、+4中的一个的示例性实施方案中,设定大小可以为“4”。在这种情况下,目标变量节点选择器142可将对应于LLR值-4和+4的变量节点确定为目标变量节点。然后,目标变量节点选择器142可向反转确定器144提供与所确定的目标变量节点相关的信息。
当校正子校验器130向反转确定器144通知对应于第i迭代的校正子校验失败时,反转确定器144可确定是否将调整目标变量节点的初始值。例如,当对应于第i迭代的校正子校验失败时,反转确定器144可确定是否反转目标变量节点的初始值的符号,例如,从+4反转到-4。
当校正子校验器130向反转确定器144通知对应于第i迭代的校正子校验失败时,反转确定器144可请求错误校正解码器120传输在第i迭代中输入的对应于目标变量节点的C2V消息,并且可从错误校正解码器120接收对应于目标变量节点的C2V消息。
在一些实施例中,反转确定器144可基于对应于目标变量节点的C2V消息的符号的比率来确定是否反转目标变量节点的初始值的符号。例如,在目标变量节点的初始值的符号是第一类型的符号(例如,负符号)的情况下,当对应于目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量小于具有第二类型的符号(例如,正符号)的C2V消息的数量时,反转确定器144可确定将目标变量节点的初始值的符号从第一类型反转成第二类型。也就是说,当对应于目标变量节点的C2V消息的符号的比率指示C2V消息的符号的一半以上不同于目标变量节点的初始值的符号时,反转确定器144可确定反转目标变量节点的初始值的符号。为此,反转确定器144可包括消息数量计算器144a。消息数量计算器144a可计算在对应于目标变量节点的C2V消息之中具有与目标变量节点的初始值的符号相同的符号的C2V消息的数量和具有不同符号(即,不同于目标变量节点的初始值的符号)的C2V消息的数量。
当具有与目标变量节点的初始值的符号相同的符号的C2V消息的数量等于具有不同符号的C2V消息的数量时,反转确定器144可基于对应于目标变量节点的C2V消息的大小来确定是否反转目标变量节点的初始值的符号。例如,在目标变量节点的初始值的符号是第一类型的符号(例如,负符号)并且在对应于目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量等于具有第二类型的符号(例如,正符号)的C2V消息的数量的情况下,当具有第一类型的符号的C2V消息的大小的总和小于具有第二类型的符号的C2V消息的大小的总和时,反转确定器144可确定反转目标变量节点的初始值的符号。为此,反转确定器144可包括求和计算器144b。求和计算器144b可计算对应于目标变量节点的C2V消息之中具有与目标变量节点的初始值的符号相同的符号的C2V消息的大小的总和,以及具有不同符号(不同于目标变量节点的初始值的符号)的C2V消息的大小的总和。
当确定将反转目标变量节点的初始值的符号时,反转确定器144可向符号反转器146提供通知。因此,符号反转器146可反转目标变量节点的初始值的符号。
因此,在下一次迭代中,变量节点更新模块122可使用具有反转的符号的初始值来生成待传送到连接到目标变量节点的校验节点的V2C消息并将其输出。如上所述,映射器110、校正子校验器130和解码控制器140可在错误校正解码器120的外部实施。然而,在所公开技术的一些其它实施例中,映射器110、校正子校验器130和解码控制器140中的至少一个可在错误校正解码器120中实施。
图2示出了对应于(n,k)码的奇偶校验矩阵H的示例。(n,k)码可被定义为大小为(n-k)×n的奇偶校验矩阵。为便于描述,将附图标记An-k,n分配到n-k行和n列的条目。也就是说,附图标记An-k,n表示n-k行和n列的条目。奇偶校验矩阵的每一个条目可表示为“0”或“1”。当与包括在奇偶校验矩阵中的0的数量相比,包括在奇偶校验矩阵中的1的数量相对非常小时,(n,k)码可被称为(n,k)LDPC码。此处,n和k可以是自然数。
其中每一个条目配置有子矩阵的矩阵可被称为基础矩阵。基础矩阵的每一个条目可以是大小为m×m的子矩阵。此处,m是等于或大于2的整数。例如,在基础矩阵中,“0”可表示对应的条目是零矩阵,“1”可表示对应的条目不是零矩阵。例如,当基础矩阵用于准循环(QC)-LDPC码时,“1”可表示对应条目是循环矩阵。循环矩阵可以是通过将单位矩阵循环移位预定移位值而获得的矩阵。任意一个循环矩阵可具有与另一循环矩阵的移位值不同的移位值。
图3是使用Tanner图示出的图2所示的奇偶校验矩阵的示例的示图。
可使用Tanner图来表示(n,k)码,Tanner图是等效二分图并包括两种类型的节点。可使用n-k个校验节点、n个变量节点和边沿来表示Tanner图。校验节点对应于奇偶校验矩阵的行,变量节点对应于奇偶校验矩阵的列。每一个边沿将一个校验节点连接到一个变量节点,并且代表在奇偶校验矩阵中被表示为“1”的条目。
如图3所示,可使用包括n-k个校验节点CN1至CNn-k和n个变量节点VN1至VNn的Tanner图来表示定义图2所示的(n,k)码的奇偶校验矩阵。在该Tanner图中,连接校验节点CN1至CNn-k和变量节点VN1至VNn的实线和虚线表示边沿。
可根据图3所示的Tanner图上的校验节点CN1至CNn-k与变量节点VN1至VNn之间的迭代消息传递算法(MPA)来执行迭代解码。也就是说,可通过针对每次迭代在校验节点CN1至CNn-k与变量节点VN1至VNn之间传送消息来执行迭代解码。
变量节点可使用从与该变量节点连接的校验节点接收的C2V消息来执行错误校正。变量节点可生成待传输到与该变量节点连接的校验节点的V2C消息,并且可将所生成的V2C消息中的每一个传输到对应的校验节点。
校验节点可使用从与该校验节点连接的变量节点接收的V2C消息来执行奇偶校验。包括在V2C消息中的符号位可用于奇偶校验。校验节点可生成待传输到与该校验节点连接的变量节点的C2V消息,并且可将所生成的C2V消息中的每一个传输到对应的变量节点。
图4是示出使用图2所示的奇偶校验矩阵来计算的校正子向量的示例的示图。
如上所述,可基于奇偶校验矩阵H和对应于第i迭代的转置
Figure BDA0001950307400000131
生成校正子向量Si。变量节点向量Ci的标记Ci1、Ci2、Ci3、……、Ci7表示对应于第i迭代的变量节点的值。校正子向量Si的标记Si1、Si2、……、和Sin-k分别对应于图3所示Tanner图上的校验节点CN1至CNn-k
当校正子向量Si的所有标记Si1、Si2、……和Sin-k为零(“0”)时,确定校正子向量Si已通过校正子校验。这表示对应迭代中的错误校正解码成功。因此,可结束对对应码字的迭代解码,并且可输出对应于第i迭代的变量节点向量Ci作为解码的码字。
当校正子向量Si的所有标记Si1、Si2、……和Sin-k之中的至少一个标记非零时,确定校正子校验失败。这表示对应迭代中的错误校正解码未成功。因此,当迭代解码未达到最大迭代数量时,可执行下一次迭代。此处,对应于非零标记的校验节点可被称为未满足校验节点或UCN。
图5是示出在软判决解码中使用g个读取值来生成初始值的进程的示例的示图。
在图5中,示出了每一个都具有第一状态S1和第二状态S2的存储器单元的阈值电压Vth分布。对于n位多层单元NAND闪速存储器,每一个单元的阈值电压可被编程为2n个可能值。在理想的多层单元NAND闪速存储器中,每一个值对应于非重叠阈值电压窗口(图5中未示出)。在图5中,纵轴指示具有在横轴上表示的特定阈值电压的存储器单元的数量。被编程为相同值的存储器单元使它们的阈值电压落入相同的窗口中,但它们精确的阈值电压可能不同。随着编程/擦除周期增加,不同编程状态的相邻阈值电压分布之间的裕度减小,并且最后这些分布开始重叠。因此,具有落入相邻分布的重叠范围内的阈值电压的存储器单元可在被编程为除原始目标值之外的值时被读取,从而导致读取错误。在大多数情况下,可通过使用错误校正码(ECC)来管理这种读取错误。
为了在使用量化电平g+1时获得对应于一个码字的g个读取向量,可将g个读取电压中的每一个顺序地施加到多个存储器单元。例如,当使用量化电平2时可施加一个读取电压,并且当使用量化电平3时可顺序地施加两个读取电压。类似地,如图5所示,当使用量化电平8时,可将七个读取电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7顺序地施加到每一个存储器单元。这表示,当使用量化电平g+1时,将g个读取电压施加到每一个存储器单元,使得对于每一个存储器单元可获得g个读取值。
当将g个读取电压中的一个施加到多个存储器单元时,具有低于所施加的读取电压的阈值电压的存储器单元的读取值可被表示为“1”,并且具有高于所施加的读取电压的阈值电压的存储器单元的读取值可被表示为“0”。
错误校正电路可通过将分别对应于g个读取电压的读取值进行组合来生成量化为g+1个电平的读取值,这将在本文件中稍后进行说明。例如,当如图5所示使用七个读取电压Vr1、Vr2、Vr3、Vr4、Vr5、Vr6和Vr7时,错误校正电路可通过将分别对应于七个读取电压的读取值进行组合来生成量化为八个电平的读取值。
错误校正电路可将量化为g+1个电平的读取值转换或映射到初始值(例如,LLR值)。可参考预定的查找表来执行到初始值的转换或映射。
图6是示出查找表的示例的示图。
参照图6,查找表可定义分别对应于多个量化电平的LLR值。
错误校正电路可关于查找表将量化为g+1个量化电平的(g+1)电平量化读取值中的每一个转换为对应于量化电平g+1的g+1个LLR值中的任意一个。
例如,当使用量化电平2时,错误校正电路可将2-电平量化读取值中的一个转换为值LLR1,并且将2-电平量化读取值中的另一个转换为值LLR2。例如,可将2-电平量化读取值中的“1”转换为作为值LLR1的“-4”,并且将2-电平量化读取值中的“0”转换为作为值LLR2的“+4”。
图7是示出关于出现硬错误的存储器单元的初始值分配的示例的示图。
如上面参照图5所讨论的,相邻阈值电压分布可以重叠,并且在大多数情况下可通过使用ECC来对具有落入相邻分布的重叠范围内的阈值电压的存储器单元进行校正。然而,在一些情况下,在图7中,预期被编程到第一状态S1的存储器单元由于导致存储器单元处于状态S3的诸如硬错误的一个或多个错误产生机理而被编程到第三状态S3,该第三状态S3具有比第二状态S2更高的阈值电压。
在这种情况下,初始值“+4”可以被分配到对应于与硬错误相关联的存储器单元的变量节点,该存储器单元本应被编程到第一状态S1,但是被错误地编程到了第三状态S3。也就是说,具有负符号的初始值本应该已被分配到对应于与硬错误相关联的存储器单元的变量节点。而是,具有正符号的初始值由于硬错误而被分配到变量节点。这种错误的初始值的分配可能对错误校正解码的性能具有负面影响。例如,这种错误的初始值分配可能妨碍收敛到有效的码字。即使被错误地分配了初始值的变量节点的值可通过迭代解码进程来校正,在对应的变量节点中生成的V2C消息将向连接到对应的变量节点的校验节点提供坏信息,并且在对应的校验节点中生成的C2V消息将向连接到对应的校验节点的其它变量节点提供坏信息。
基于所公开技术的实施例实施的错误校正解码可通过反转对应于错误存储器单元的变量节点的符号来校正被硬错误破坏的读取值,从而提高错误校正解码的性能。
图8是示出校正硬错误的进程的示例的示图。
在图8中,为便于描述,示出了多个变量节点之中的一个目标变量节点VN1以及连接到该目标变量节点VN1的四个校验节点CN1、CN2、CN3和CN4。假设目标变量节点VN1是对应于出现硬错误的存储器单元的变量节点。
在参照图8描述的实施例中,假设目标变量节点VN1的初始值为+4。如果正符号表示值0,则目标变量节点VN1的值将为“0”。
随后,假设在第i迭代中从校验节点CN1、CN2、CN3和CN4接收的C2V消息的值分别为+2、-4、-1和-2。可使用最小和算法来简化节点更新。因此,在图8所示的情况下,可通过将目标变量节点VN1的初始值和对应于目标变量节点VN1的所接收的C2V消息的值求和来确定目标变量节点VN1的后验概率(APP),并且可根据目标变量节点VN1的APP的符号来确定目标变量节点VN1的值。例如,目标变量节点VN1的APP按如下获得:(+4)+(+2)+(-4)+(-1)+(-2)=-1,其中目标变量节点VN1的初始值为+4,从校验节点CN1、CN2、CN3和CN4接收的C2V消息的值分别为+2、-4、-1和-2。在APP的负符号表示值1的实施方案中,可将目标变量节点VN1的值更新为“1”。
可基于目标变量节点VN1的初始值和从校验节点CN1、CN2、CN3和CN4接收的C2V消息来校正目标变量节点VN1的值。然而,目标变量节点VN1的某个错误的初始值(例如,大小相等但符号相反的值)未被校正,并会影响其它变量节点的错误校正性能。此外,即使目标变量节点VN1的该值(例如,大小相等但符号相反的值)被校正,目标变量节点VN1的错误初始值也可能通过向与具有正确初始值的变量节点相邻的校验节点提供“坏”信息而影响对具有正确初始值的变量节点的错误校正性能。换言之,可基于从校验节点CN1、CN2、CN3和CN4接收到的C2V消息,对与已出现硬错误的存储器单元相对应的位执行错误校正,但是从错误初始值导出的与具有正确初始值的变量节点相邻的校验节点的更新可能会影响对具有正确初始值的变量节点的错误校正性能。
图9示出了如何将坏信息从具有硬错误的变量节点提供到校验节点。
在图9中,在如参照图8所述校正了硬错误之后,在第(i+1)迭代中将V2C消息从目标变量节点VN1传输到校验节点CN1、CN2、CN3和CN4
当使用最小和算法时,可通过对从其它校验节点接收的C2V消息的值和目标变量节点VN1的初始值进行求和来确定待传输到多个校验节点之中的某个校验节点的V2C消息的值。例如,在第(i+1)迭代中从目标变量节点VN1传输到校验节点CN1的V2C消息的值可被确定为通过将在第i迭代中从校验节点CN2、CN3和CN4接收的C2V消息的值和目标变量节点VN1的初始值进行求和而获得的为“-3”值。例如,从目标变量节点VN1传输到校验节点CN1的V2C消息的值按如下获得:(+4)+(-4)+(-1)+(-2)=-3。类似地,可以这种方式计算待传输到其它校验节点CN2、CN3和CN4的V2C消息的值。
参照图9,可以看出的是,虽然目标变量节点VN1的值被校正为“1”,但从目标变量节点VN1传输到校验节点CN2和CN4的V2C消息具有正符号而非负符号。虽然校正了硬错误,但目标变量节点VN1向校验节点CN2和CN4提供坏信息。
图10是示出通过反转目标变量节点的初始值的符号来生成V2C消息的进程的示例的示图。
与参照图8描述的实施例类似,在参照图10描述的情况下,假设目标变量节点VN1的初始值为+4,并且在第i迭代中从校验节点CN1、CN2、CN3和CN4传输到目标变量节点VN1的C2V消息的值分别为+2、-4、-1和-2。
在所公开技术的实施例中,错误校正电路可反转目标变量节点VN1的初始值的符号,并且可基于输入到目标变量节点VN1的C2V消息的符号的比率来决定是否反转目标变量节点VN1的初始值的符号。例如,如图10所示,假设目标变量节点VN1的初始值具有正符号。在发送来更新目标变量节点VN1的全部C2V消息之中,当具有负符号的C2V消息的数量大于具有正符号的C2V消息的数量时,错误校正电路可将目标变量节点VN1的初始值的符号改变为负符号。参照图10,三个C2V消息具有负符号,一个C2V消息具有正符号。因此,基于所公开技术的实施例实施的错误校正电路将目标变量节点VN1的初始值的符号反转为负符号。
在将目标变量节点VN1的初始值的符号反转之后,在第(i+1)迭代中可使用符号反转的初始值来计算V2C消息。例如,可根据通过对符号反转的初始值和在第i迭代中从校验节点CN2、CN3和CN4接收的C2V消息的值进行求和而获得的值来计算在第(i+1)迭代中传输到校验节点CN1的V2C消息。当分配到变量节点的初始值的最大大小为“4”时,待传输到校验节点CN1的V2C消息的大小不能超过“4”。例如,即使从目标变量节点VN1传输到校验节点CN1的V2C消息的值为“-11”,其中(-4)+(-4)+(-1)+(-2)=-11,传输到校验节点CN1的V2C消息可能由于大小限制而被调整到-4。这可应用于计算所有的V2C消息和所有的C2V消息。
从图10中可以看出的是,当目标变量节点VN1的值被校正为“1”时,传输到连接到目标变量节点VN1的校验节点CN1、CN2、CN3和CN4的所有V2C消息都具有负符号。目标变量节点VN1不仅校正其硬错误,还向所有校验节点CN1、CN2、CN3和CN4提供正确的信息。
图11是示出通过反转目标变量节点的初始值的符号来生成V2C消息的进程的示例的示图。
在这种情况下,假设目标变量节点VN1的初始值为+4,并且在第i迭代中从校验节点CN1、CN2、CN3和CN4传输到目标变量节点VN1的C2V消息的值分别为+2、+1、-1和-3。
如上所述,基于所公开技术的实施例实施的错误校正电路可反转目标变量节点VN1的初始值的符号,并且可基于发送到目标变量节点VN1的C2V消息的符号的比率来决定是否反转目标变量节点VN1的初始值的符号。当发送到目标变量节点VN1的C2V消息之中具有正符号的C2V消息的数量等于发送到目标变量节点VN1的C2V消息之中具有负符号的C2V消息的数量时,校正电路可基于C2V消息的大小总和来决定是否反转目标变量节点VN1的初始值的符号。例如,如图11所示,假设目标变量节点VN1的初始值具有正符号。在发送到目标变量节点VN1的全部C2V消息之中,当具有负符号的C2V消息的大小的总和大于具有正符号的C2V消息的大小的总和时,错误校正电路可将目标变量节点VN1的初始值的符号改变为负符号。参照图11,具有正符号的C2V消息的大小的总和为“3”(2+1=3),具有负符号的C2V消息的大小的总和为“4”(1+3=4)。因此,基于所公开技术的实施例实施的错误校正电路将目标变量节点VN1的初始值的符号反转为负符号。
当反转了目标变量节点VN1的初始值的符号时,在第(i+1)迭代中可使用符号反转的初始值来计算V2C消息。例如,可通过对符号反转的初始值和在第i迭代中从校验节点CN2、CN3和CN4接收的C2V消息的值进行求和来计算在第(i+1)迭代中传输到校验节点CN1的V2C消息。与参照图10描述的情况类似,当待分配到变量节点的初始值的最大大小为“4”时,待传输到校验节点CN1的V2C消息的大小不能超过“4”。例如,即使从目标变量节点VN1传输到校验节点CN1的V2C消息的值为“-7”,其中(-4)+(+1)+(-1)+(-3)=-7,但对应的V2C消息可能由于大小限制而被调整到-4。
从图11中可以看出的是,当目标变量节点VN1的值被校正为“1”时,传输到连接到目标变量节点VN1的校验节点CN1、CN2、CN3和CN4的所有V2C消息都具有负符号。目标变量节点VN1不仅校正其硬错误,还向所有校验节点CN1、CN2、CN3和CN4提供正确的信息。
图12是示出基于所公开技术的实施例的存储器系统的示例的示图。
参照图12,存储器系统2000可包括用于存储数据的存储器装置2200和用于在主机1000的控制下控制存储器装置2200的存储器控制器2100。
主机1000可使用诸如以下的接口协议与存储器系统2000进行通信:高速外围组件互连(PCI-E)、高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)或串列SCSI(SAS)。主机1000与存储器系统2000之间的接口协议不限于上述示例,并且可使用诸如通用串行总线(USB)、多媒体卡(MMC)、增强型小型磁盘接口(ESDI)和电子集成驱动器(IDE)的接口。主机1000可以是包括一个或多个计算机处理器的装置或系统,该计算机处理器进行操作以从存储器系统2000检索数字信息或数据,或者将数字信息或数据存储或写入存储器系统2000中。在各种应用中,主机1000可以是包括诸如以下的各种形式:个人电脑(PC)、便携式数字装置、平板PC、数码相机、数字音频播放器、数字多媒体播放器、电视、无线通信装置、蜂窝电话、控制台视频游戏硬件或数字机顶盒。
存储器控制器2100可控制存储器系统2000的全部操作,并且控制主机1000与存储器装置2200之间的数据交换。
存储器控制器2100可包括主机接口2110、中央处理单元(CPU)2120、存储器接口2130、缓冲存储器2140、错误校正电路2150及内部存储器2160。可由CPU 2120控制主机接口2110、存储器接口2130、缓冲存储器2140、错误校正电路2150和内部存储器2160。
主机接口2110可使用通信协议来与主机1000交换数据。
CPU 2120可执行各种计算或生成命令和地址,以便控制存储器装置2200。例如,CPU 2120可生成编程操作、读取操作、擦除操作、数据压缩操作和回拷贝(copy-back)操作等必须的各种命令。
存储器接口2130可使用通信协议与存储器装置2200通信。
当存储器控制器2100正控制存储器装置2200时,缓冲存储器2140可临时存储数据。例如,从主机1000接收的数据可被临时存储在缓冲存储器2140中,直到编程操作完成。而且,在读取操作中从存储器装置2200读取的数据可被临时存储在缓冲存储器2140中。
错误校正电路2150可在编程操作或读取操作中执行用于错误校正的编码和解码。
错误校正电路2150可对从存储器装置2200接收的读取数据(读取值)执行错误校正解码。当在用于错误校正的迭代解码进程中检测到错误时,错误校正电路2150可例如使用奇偶校验矩阵来校正错误。例如,错误校正电路2150可基于奇偶校验矩阵来计算对应于读取数据的校正子,并且基于计算出的校正子来确定读取数据中是否包括错误。当包括在读取数据中的错误可校正时,错误校正电路2150可校正错误,并输出错误校正数据。当包括在读取数据中的错误不可校正时,错误校正电路2150可向CPU 2120报告解码失败。
错误校正电路2150可包括映射器2150a、错误校正解码器2150b、校正子校验器2150c和解码控制器2150d。错误校正电路2150可具有与参照图1描述的错误校正电路10相同的配置,并且可执行与错误校正电路10相同的操作。也就是说,图12所示的映射器2150a、错误校正解码器2150b、校正子检验器2150c和解码控制器2150d具有的配置可分别对应于图1所示的映射器110、错误校正解码器120、校正子检验器130和解码控制器140的配置。图12所示的映射器2150a、错误校正解码器2150b、校正子检验器2150c和解码控制器2150d可执行分别与图1所示的映射器110、错误校正解码器120、校正子检验器130和解码控制器140的操作对应的操作。在所公开技术的一些实施例中,映射器2150a、校正子校验器2150c和解码控制器2150d中的至少一个可在错误校正解码器2150b的内部实施。在所公开技术的一些实施例中,存储器控制器2100可进一步包括一个或多个存储器(图12中未示出),存储器可存储错误校正电路2150使用的诸如查找表和代码表的表。
内部存储器2160可用作存储操作存储器控制器2100所需的各种信息的存储单元。内部存储器2160可存储多个表。例如,内部存储器2160可存储用于将逻辑地址映射到物理地址的映射表。
存储器装置2200可在存储器控制器2100的控制下执行诸如编程操作、读取操作、擦除操作、数据压缩操作和回拷贝操作的操作。存储器装置2200可被配置成易失性存储器装置,在易失性存储器装置中存储的数据在电源中断或断开时消失,或者可被配置成非易失性存储器装置,在非易失性存储器装置中,即使在电源中断或断开时也保留所存储的数据。
图13是示出基于所公开技术的实施例的存储器控制器的操作方法的示例的流程图。
在步骤1301中,存储器控制器可接收对应于码字的读取向量。例如,读取向量可包括分别对应于多个存储器单元的读取值。
在步骤1303中,存储器控制器可将初始值分配到变量节点。当接收到对应于一个码字的g个读取向量时,存储器控制器可使用g个读取向量来生成被量化为g+1个电平的(g+1)电平量化读取向量。存储器控制器可将(g+1)电平量化读取向量转换为初始向量。例如,初始向量可包括分别对应于多个变量节点的初始值。每一个初始值可以是LLR值。
在步骤1305中,存储器控制器可使用迭代解码技术来执行第i迭代。在第i迭代中,交换V2C消息和C2V消息,因此,可更新变量节点和校验节点。
在步骤1307中,存储器控制器可执行对应于第i迭代的校正子校验。例如,存储器控制器可检查在第i迭代中校正子向量是否通过校正子校验。当校正子校验成功时,在步骤1309中,存储器控制器可输出第i迭代中的变量节点向量作为解码的码字。当校正子校验失败时,可执行步骤1311。
在步骤1311中,存储器控制器可检查是否已执行了对应于最大迭代数量的迭代。当已执行了对应于最大迭代数量的迭代时,在步骤1313中,存储器控制器可输出“失败”信号,指示错误校正解码失败。当尚未执行对应于最大迭代数量的迭代时,可执行步骤1321。
在步骤1321中,存储器控制器可基于在第i迭代中传输到目标变量节点的C2V消息来校正目标变量节点的初始值。对目标变量节点的初始值的这种校正可以是指如上所述的反转目标变量节点的初始值的符号。
随后,在步骤1323之后执行的步骤1305中,存储器控制器可执行第(i+1)迭代。
图14是示出基于所公开技术的实施例的存储器控制器的操作方法的示例的流程图。
图14所示的步骤可对应于图13所示的步骤1321。
在步骤1321a中,存储器控制器可确定目标变量节点。在所公开技术的一些实施例中,如果变量节点的初始值具有设定大小,则存储器控制器可将变量节点确定为目标变量节点。设定大小可以是分配到变量节点的初始值之中的最大值。在参照图14描述的实施例中,假设目标变量节点的初始值具有第一类型的符号。第一类型的符号可以是负符号或正符号。在所公开技术的一些实施例中,可在图13的步骤1305之前执行步骤1321a。
在步骤1321b中,存储器控制器可计算在第i迭代中从校验节点传输到目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量(图14中的“计数1”)和具有第二类型的符号的C2V消息的数量(图14中的“计数2”)。
在步骤1321c和1321e中,存储器控制器可将计数1的数量与计数2的数量进行比较。
当具有第一类型的符号的C2V消息的数量(计数1的数量)小于具有第二类型的符号的C2V消息的数量(计数2的数量)时,在步骤1321d中,存储器控制器可反转目标变量节点的初始值。也就是说,存储器控制器可将目标变量节点的初始值的符号从第一类型反转为第二类型。
当具有第一类型的符号的C2V消息的数量(计数1的数量)等于具有第二类型的符号的C2V消息的数量(计数2的数量)时,在步骤1321f中,存储器控制器可计算具有第一类型的符号的C2V消息的大小的总和(总和1)和具有第二类型的符号的C2V消息的总和(总和2)。
在步骤1321g中,存储器控制器可将总和1与总和2进行比较。
当具有第一类型的符号的C2V消息的大小的总和(总和1)小于具有第二类型的符号的C2V消息的大小的总和(总和2)时,在步骤1321d中,存储器控制器可反转目标变量节点的初始值的符号。
图15是示出基于所公开技术的实施例的存储器装置的示例的示图。图15所示的存储器装置可应用于图12所示的存储器系统。
存储器装置2200可包括控制逻辑2210、外围电路2220和存储器单元阵列2240。外围电路2220可包括电压生成电路2222、行解码器2224、输入/输出电路2226、列解码器2228、页面缓冲器组2232和电流感测电路2234。
控制逻辑2210可在图12所示的存储器控制器2100的控制下控制外围电路2220。
控制逻辑2210可响应于通过输入/输出电路2226从存储器控制器2100接收的命令CMD和地址ADD来控制外围电路2220。例如,控制逻辑2210可响应于命令CMD和地址ADD,输出操作信号OP_CMD、行地址RADD、页面缓冲器控制信号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将从存储器控制器2100接收的命令CMD和地址ADD传送到控制逻辑2210,或者与列解码器2228交换数据DATA。
列解码器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可临时存储从存储器控制器2100接收的编程数据,并且可根据编程数据来调整施加到位线BL1至BLm的电压。而且,在读取操作中,页面缓冲器PB1至PBm可临时存储通过位线BL1至BLm接收的数据,或者可感测位线BL1至BLm的电压或电流。
在读取操作或验证操作中,电流感测电路2234可响应于从控制逻辑2210接收的允许位VRY_BIT<#>而生成参考电流,并且可通过将从页面缓冲器组2232接收的感测电压VPB与由参考电流产生的参考电压进行比较来输出通过信号PASS或失败信号FAIL。
存储器单元阵列2240可包括存储数据的多个存储块BLK1至BLKi。执行存储器装置2200的操作所需的用户数据和各种信息可被存储在存储块BLK1至BLKi中。存储块BLK1至BLKi可以二维结构或三维结构来实施,并且可被配置成彼此相同。
图16是示出存储块的示例的示图。
存储器单元阵列可包括多个存储块。为便于描述,在图16中仅示出了多个存储块中的一个BLKi。
参照图16,在存储块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。虽然图16示出了每一个串ST仅包括十六个存储器单元F1至F16,但所公开的技术不限于此,因此每一个串可包括多于十六个存储器单元。
源极选择晶体管SST的源极可连接到源极线SL,漏极选择晶体管DST的漏极可连接到第一位线BL1。存储器单元F1至F16可串联连接在源极选择晶体管SST和漏极选择晶体管DST之间。包括在不同串ST中的源极选择晶体管SST的栅极可连接到源极选择线SSL,包括在不同串ST中的漏极选择晶体管DST的栅极可连接到漏极选择线DSL,包括在不同串ST中的存储器单元F1至F16的栅极可连接到多个字线WL1至WL16。包括在不同串ST中的存储器单元之中连接到相同字线的一组存储器单元可以是物理页面PPG。因此,在存储块BLKi中,物理页面PPG的数量可对应于字线WL1至WL16的数量。
在实施方案中,存储器单元可存储一位的数据。这种一位存储器单元可被称为单层单元(SLC)。在SLC的情况下,每一个物理页面PPG可仅被映射到一个逻辑页面(LPG)。可替换地,一个存储器单元可存储两位或更多位的数据。例如,可存储两位的数据的存储器单元可被称为多层单元(MLC)。在该MLC类型中,两个逻辑页面(LPG)可被映射到一个物理页面PPG,因此两位的数据被存储在每一个物理页面PPG中。在三层单元(TLC)类型中,三个逻辑页面(LPG)被映射到一个物理页面PPG,并且三位的数据可被存储在每一个物理页面PPG中。存储器单元可存储多于三个位。例如,四层单元可每单元存储四个位。
图17是示出基于所公开技术的一些实施例来实施的三维配置的存储块的示例的示图。
参照图17,存储器单元阵列2240可包括多个存储块BLK1至BLKi。将作为示例描述第一存储块BLK1。第一存储块BLK1可包括多个串ST11至ST1m和ST21至ST2m。在实施例中,多个串ST11至ST1m和ST21至ST2m中的每一个可形成为“U”形。在第一存储块BLK1中,可在行方向(X方向)上布置m个串。在图17中,示出了在列方向(Y方向)上布置两个串。在实施方案中,其它布置是可能的。例如,可在列方向(Y方向)上布置三个或更多个串。
在图17所示的示例中,多个串ST11至ST1m和ST21至ST2m中的每一个可包括至少一个源极选择晶体管SST、第一至第n存储器单元MC1至MCn、管道晶体管PT以及至少一个漏极选择晶体管DST。
源极选择晶体管SST和漏极选择晶体管DST以及存储器单元MC1至MCn可具有彼此相似的结构。例如,源极和漏极选择晶体管SST和DST以及存储器单元MC1至MCn中的每一个可包括沟道层、隧穿绝缘层、电荷撷取层和阻挡绝缘层。例如,可在每一个串中提供用于提供沟道层的柱(pillar)。例如,可在每一个串中设置用于提供沟道层、隧穿绝缘层、电荷撷取层和阻挡绝缘层中的至少一个的柱。
每一个串的源极选择晶体管SST可连接在源极线SL与存储器单元MC1至MCp之间。
在公开技术的实施例中,布置在相同行中的串的源极选择晶体管可连接到在行方向上延伸的源极选择线,并且布置在不同行中的串的源极选择晶体管可连接到不同的源极选择线。在图17中,第一行中的串ST11至ST1m的源极选择晶体管可连接到第一源极选择线SSL1。第二行中的串ST21至ST2m的源极选择晶体管可连接到第二源极选择线SSL2。
在所公开技术的另一实施例中,串ST11至ST1m和ST21至ST2m的源极选择晶体管可共同连接到一个源极选择线。
在图17的示例中,每一个串的第一至第n存储器单元MC1至MCn可连接在源极选择晶体管SST和漏极选择晶体管DST之间。
此处,第一至第n存储器单元MC1至MCn可被划分成第一至第p存储器单元MC1至MCp与第(p+1)至第n存储器单元MCp+1至MCn。第一至第p存储器单元MC1至MCp可在垂直方向(Z方向)上顺序地布置,并且彼此串联连接在源极选择晶体管SST和管道晶体管PT之间。第(p+1)至第n存储器单元MCp+1至MCn可在垂直方向(Z方向)上顺序地布置,并且可彼此串联连接在管道晶体管PT和漏极选择晶体管DST之间。第一至第p存储器单元MC1至MCp和第(p+1)至第n存储器单元MCp+1至MCn可通过管道晶体管PT而彼此连接。每一个串的第一至第n存储器单元MC1至MCn的栅极可分别连接到第一至第n字线WL1至WLn。
在公开技术的一些实施例中,第一至第n存储器单元MC1至MCn中的至少一个可用作虚设存储器单元。当设置虚设存储器单元时,可稳定地控制相应串的电压或电流。每一个串的管道晶体管PT的栅极可连接到管线PL。
每一个串的漏极选择晶体管DST可连接到位线和存储器单元MCp+1至MCn。布置在行方向上的串可连接到在行方向上延伸的漏极选择线。第一行中的串ST11至ST1m的漏极选择晶体管可连接到第一漏极选择线DSL1。第二行中的串ST21至ST2m的漏极选择晶体管可连接到第二漏极选择线DSL2。
布置在列方向上的串可连接到在列方向上延伸的位线。在图17中,第一列中的串ST11和ST21可连接到第一位线BL1。第m列的串ST1m和ST2m可联接到第m位线BLm。
布置在行方向上的串之中连接到相同字线的存储器单元可构成一个页面。例如,第一行中的串ST11至ST1m之中的、连接到第一字线WL1的存储器单元可构成一个页面。第二行中的串ST21至ST2m之中的、连接到第一字线WL1的存储器单元可构成另一页面。当选择了漏极选择线DSL1和DSL2中的任意一个时,可选择布置在一个行方向上的串。当选择字线WL1至WLn中的任意一个时,可选择所选择的串之中的一个页面。
图18是示出基于所公开技术的一些实施例来实施的三维配置的存储块的另一示例的示图。
参照图18,存储器单元阵列2240可包括多个存储块BLK1至BLKi。将作为示例描述第一存储块BLK1。第一存储块BLK1可包括多个串ST11'至ST1m'和ST21'至ST2m'。多个串ST11'至ST1m'和ST21'至ST2m'中的每一个可沿垂直方向(Z方向)延伸。在第一存储块BLK1中,可在行方向(X方向)上布置m'个串。虽然图18示出了在列方向(Y方向)上布置两个串,但这是为便于描述,并且可在列方向(Y方向)上布置三个或更多个串。
多个串ST11'至ST1m'和ST21'至ST2m'中的每一个可包括至少一个源极选择晶体管SST、第一至第n存储器单元MC1至MCn以及至少一个漏极选择晶体管DST。
每一个串的源极选择晶体管SST可连接在源极线SL与存储器单元MC1至MCn之间。布置在相同行中的串的源极选择晶体管可连接到相同的源极选择线。布置在第一行中的串ST11'至ST1m'的源极选择晶体管可连接到第一源极选择线SSL1。布置在第二行中的串ST21'至ST2m'的源极选择晶体管可连接到第二源极选择线SSL2。在另一实施例中,串ST11'至ST1m'和ST21'至ST2m'的源极选择晶体管可共同连接到一个源极选择线。
每一个串中的第一至第n存储器单元MC1至MCn可彼此串联连接在源极选择晶体管SST和漏极选择晶体管DST之间。第一至第n存储器单元MC1至MCn的栅极可分别连接到第一至第n字线WL1至WLn。
在实施例中,第一至第n存储器单元MC1至MCn中的至少一个可用作不存储数据的虚设存储器单元,并且提供电路操作以促进或提高存储数据的存储器单元的操作或性能。在提供虚设存储器单元的所示示例中,可稳定地控制对应串的电压或电流。因此,可提高存储在第一存储块BLK1中的数据的可靠性。
每一个串的漏极选择晶体管DST可连接在位线和存储器单元MC1至MCn之间。布置在行方向上的串的漏极选择晶体管DST可连接到在行方向上延伸的漏极选择线。第一行中的串ST11'至ST1m'的漏极选择晶体管DST可连接到第一漏极选择线DSL1。第二行中的串ST21'至ST2m'的漏极选择晶体管DST可连接到第二漏极选择线DSL2。
也就是说,除了从每一个串中排除管道晶体管PT以外,图18的第一存储块BLK1可具有与图17的第一存储块BLK1相同的电路。
图19是示出图12所示的包括存储器控制器的存储器系统的另一示例的示图。
参照图19,存储器系统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处理的数据的装置,并且可被实施为诸如触摸板或计算机鼠标的定点装置、小键盘或键盘。处理器3100可控制显示器3200的操作,使得从存储器控制器2100输出的数据、从无线电收发器3300输出的数据或从输入装置3400输出的数据可以通过显示器3200输出。
在一些实施例中,能够控制存储器装置2200的操作的存储器控制器2100可被实施为处理器3100的一部分,或者被实施为与处理器3100分开的芯片。
图20是示出图12所示的包括存储器控制器的存储器系统的另一示例的示图。
参照图20,存储器系统40000可被实施成个人计算机(PC)、平板PC、上网本、电子阅读器、个人数字助理(PDA)、便携式多媒体播放器(PMP)、MP3播放器或MP4播放器。
存储器系统40000可包括存储器装置2200和能够控制存储器装置2200的数据处理操作的存储器控制器2100。
处理器4100可根据通过输入装置4200输入的数据通过显示器4300输出存储在存储器装置2200中的数据。例如,输入装置4200可被实施为诸如触摸板或计算机鼠标的定点装置、小键盘或键盘。
处理器4100可控制存储器系统40000的全部操作,并且控制存储器控制器2100的操作。在一些实施例中,能够控制存储器装置2200的操作的存储器控制器2100可被实施为处理器4100的一部分,或者被实施为与处理器4100分开的芯片。
图21是示出图12所示的包括存储器控制器的存储器系统的另一示例的示图。
参照图21,存储器系统50000可被实施为图像处理装置,例如数码相机、附设有数码相机的移动终端、附设有数码相机的智能电话、或附设有数码相机的平板PC。
存储器系统50000可包括存储器装置2200和存储器控制器2100,存储器控制器2100能够控制存储器装置2200的数据处理操作,例如编程操作、擦除操作或读取操作。
存储器系统50000的图像传感器5200可将光学图像转换成数字信号,并且转换的数字信号可被传输到处理器5100或存储器控制器2100。在处理器5100的控制下,转换的数字信号可通过显示器5300输出,或通过存储器控制器2100存储在存储器装置2200中。另外,在处理器5100或存储器控制器2100的控制下,存储在存储器装置2200中的数据可通过显示器5300输出。
在一些实施例中,能够控制存储器装置2200的操作的存储器控制器2100可被实施为处理器5100的一部分,或者被实施为与处理器5100分开的芯片。
图22是示出图12所示的包括存储器控制器的存储器系统的另一示例的示图。
参照图22,存储器系统70000可被实施为存储卡或智能卡。存储器系统70000可包括存储器装置2200、存储器控制器2100和卡接口7100。
存储器控制器2100可控制存储器装置2200和卡接口7100之间的数据交换。在一些实施例中,卡接口7100可以是安全数字(SD)卡接口或多媒体卡(MMC)接口,但本公开不限于此。
卡接口7100可根据主机60000的协议来接口连接主机60000和存储器控制器2100以进行数据交换。在一些实施例中,卡接口7100可支持通用串行总线(USB)协议和芯片间(IC)-USB协议。卡接口7100可表示能够支持由主机60000使用的协议的硬件、嵌入在硬件中的软件或信号传输方案。
当存储器系统70000连接到诸如PC、平板PC、数码相机、数字音频播放器、蜂窝电话、控制台视频游戏硬件或数字机顶盒的主机60000的主机接口6200时,主机接口6200可在微处理器(μP)6100的控制下通过卡接口7100和存储器控制器2100与存储器装置2200进行数据通信。
在所公开技术的一些实施例中,每个存储器单元存储多于一位的数据的存储器设备包括处理器和存储器,该存储器包括处理器可执行代码。在处理器执行处理器可执行代码时,处理器配置低密度奇偶校验(LDPC)解码器以使用消息传递迭代解码来进行操作。LDPC解码器包括多个变量节点和多个校验节点。LDPC解码器被配置成生成消息并在变量节点和校验节点之间传递消息,并且更新变量节点和校验节点,以实现解码操作的多重迭代,以从目标变量节点生成解码位。在处理器执行处理器可执行代码时,LDPC解码器将初始值分配到目标变量节点;当接收到从相邻校验节点发送到目标变量节点的消息时,确定对应于目标变量节点的目标存储器单元是否具有硬错误;在确定目标存储器单元具有硬错误时,反转目标变量节点的初始值的符号;并且一起使用符号反转的初始值与从相邻校验节点发送到目标变量节点的消息,以产生发送到相邻校验节点的新消息。
确定对应于目标变量节点的目标存储器单元具有硬错误包括:确定从校验节点传递的消息中多于一半的消息具有与目标变量节点的初始值相反的符号。确定对应于目标变量节点的目标存储器单元具有硬错误包括:确定具有与目标变量节点的初始值相反的符号的消息的大小的总和大于具有与目标变量节点的初始值相同的符号的消息的大小的总和,其中从校验节点传递的消息中的一半具有与目标变量节点的初始值相同的符号,并且从校验节点传递的消息中的另一半具有与目标变量节点的初始值相反的符号。
通过实施本公开中公开的技术,通过防止目标变量节点的错误初始值影响其它变量节点的错误校正性能,即使当出现硬错误时,也可提高错误校正解码的性能。数据错误校正性能是确定系统性能的关键因素中的一个,因此这种硬错误也会影响诸如计算机系统和移动系统的电子系统的性能,上述的移动系统配置为诸如NAND闪速存储器和基于固态磁盘驱动器(SSD)的闪速存储器的存储装置。因此,通过实施本公开中公开的技术,可通过提高数据错误校正性能来提高电子系统的性能。
虽然本专利文件包括许多细节,但这些细节不应被解释为对任何发明或可能要求保护的内容的范围加以限制,而应该被解释为针对特定发明的特定实施例的特征的描述。在本专利文件中在单独的实施例的上下文中描述的某些特征也可在单个实施例的组合实施。相反地,在单个实施例的上下文中描述的各个特征也可在多个实施例中单独或以任何适当的子组合来实施。此外,虽然特征可在上文中被描述为以某些组合起作用,甚至最初要求这样保护,但在某些情况下,来自所要求保护的组合的一个或多个特征可从该组合中删除,并且要求保护的组合可指向子组合或子组合的变体。
仅描述了几个实施方案和示例,并且可基于本专利文件中描述和说明的内容来作出其它实施方案、改进和变化。

Claims (18)

1.一种基于迭代解码来执行错误校正解码的存储器控制器,所述存储器控制器包括:
映射器,将从信道接收的读取值转换为初始对数似然比值,即初始LLR值;
变量节点更新模块,将所述初始LLR值分配到多个变量节点,并且在第i次迭代中,使用所述初始LLR值和对应于所述变量节点的校验到变量消息即C2V消息来更新所述变量节点的值,其中i是小于预定最大迭代数量的自然数;
校验节点更新模块,在所述第i次迭代中,使用对应于校验节点的变量到校验消息即V2C消息来生成待传送到所述变量节点的C2V消息;
校正子校验器,使用在所述第i次迭代中更新的所述变量节点的值来执行校正子校验;以及
反转确定器,在所述校正子校验器确定对应于所述第i次迭代的校正子校验失败时,基于对应于目标变量节点的C2V消息的符号的比率,确定是否反转所述目标变量节点的初始LLR值的符号,
其中所述映射器,所述变量节点更新模块,所述校验节点更新模块,所述校正子校验器和所述反转确定器中的至少一个使用一个或多个硬件处理器来实现,
其中,所述反转确定器:
将对应于所述目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量与对应于所述目标变量节点的C2V消息之中具有第二类型的符号的C2V消息的数量进行比较;以及
根据对应于所述目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量与对应于所述目标变量节点的C2V消息之中具有第二类型的符号的C2V消息的数量的比较结果,确定是否反转所述目标变量节点的初始LLR值的符号。
2.根据权利要求1所述的存储器控制器,包括:消息数量计算器,计算对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的数量和对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的数量。
3.根据权利要求2所述的存储器控制器,其中所述反转确定器在确定对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的数量小于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的数量时,提供反转所述目标变量节点的初始LLR值的符号的指示。
4.根据权利要求2所述的存储器控制器,进一步包括:求和计算器,计算对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的大小的总和以及对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的大小的总和,
其中在确定对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的数量等于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的数量时,所述反转确定器基于对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的大小的总和以及对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的大小的总和,提供反转所述目标变量节点的初始LLR值的符号的指示。
5.根据权利要求4所述的存储器控制器,其中所述反转确定器在确定对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的大小的总和小于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的大小的总和时,提供反转所述目标变量节点的初始LLR值的符号的指示。
6.根据权利要求1所述的存储器控制器,包括:符号反转器,其连接到所述反转确定器,并且在从所述反转确定器接收到反转所述目标变量节点的初始LLR值的符号的指示时,反转所述目标变量节点的初始LLR值的符号以产生符号反转的初始LLR值。
7.根据权利要求6所述的存储器控制器,其中所述变量节点更新模块使用所述符号反转的初始LLR值来生成待传送到连接至所述目标变量节点的校验节点的所述V2C消息。
8.根据权利要求1所述的存储器控制器,进一步包括:目标变量节点确定器,将所述多个变量节点之中与具有设定大小的初始LLR值相对应的变量节点确定为所述目标变量节点。
9.一种由存储器控制器基于迭代解码来执行错误校正解码的方法,所述方法包括:
将从信道接收的读取值转换为初始对数似然比值,即初始LLR值;
将所述初始LLR值分别分配到多个变量节点;
在第i次迭代中,使用对应于校验节点的变量到校验消息即V2C消息来生成待传送到所述变量节点的校验到变量消息即C2V消息;
在所述第i次迭代中,使用所述初始LLR值和对应于所述变量节点的C2V消息来更新所述变量节点的值,其中i是小于预定最大迭代数量的自然数;
使用在所述第i次迭代中更新的所述变量节点的值来执行校正子校验;并且
当对应于所述第i次迭代的所述校正子校验失败时,基于对应于目标变量节点的C2V消息的符号的比率,确定是否反转所述目标变量节点的初始LLR值的符号,
其中,确定是否反转所述目标变量节点的所述初始LLR值的符号包括:
将对应于所述目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量与对应于所述目标变量节点的C2V消息之中具有第二类型的符号的C2V消息的数量进行比较;以及
根据对应于所述目标变量节点的C2V消息之中具有第一类型的符号的C2V消息的数量与对应于所述目标变量节点的C2V消息之中具有第二类型的符号的C2V消息的数量的比较结果,确定是否反转所述目标变量节点的初始LLR值的符号。
10.根据权利要求9所述的方法,其中确定是否反转所述目标变量节点的初始LLR值的符号包括:当对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的数量小于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的数量时,确定反转所述目标变量节点的初始LLR值的符号。
11.根据权利要求10所述的方法,其中确定是否反转所述目标变量节点的初始LLR值的符号包括:当对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的数量等于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的数量时,基于对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的大小的总和以及对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的大小的总和来确定是否反转所述目标变量节点的初始LLR值的符号。
12.根据权利要求11所述的方法,其中确定是否反转所述目标变量节点的初始LLR值的符号包括:当对应于所述目标变量节点的C2V消息之中具有所述第一类型的符号的C2V消息的大小的总和小于对应于所述目标变量节点的C2V消息之中具有所述第二类型的符号的C2V消息的大小的总和时,确定反转所述目标变量节点的初始LLR值的符号。
13.根据权利要求9所述的方法,进一步包括:当确定将反转所述目标变量节点的初始LLR值的符号时,反转所述目标变量节点的初始LLR值的符号以产生符号反转的初始LLR值。
14.根据权利要求13所述的方法,进一步包括:使用所述符号反转的初始LLR值来生成待传送到连接至所述目标变量节点的校验节点的V2C消息。
15.根据权利要求9所述的方法,进一步包括:将所述多个变量节点之中与具有设定大小的初始LLR值相对应的变量节点确定为所述目标变量节点。
16.一种存储器设备,所述存储器设备的每个存储器单元存储多于一位的数据,包括:
处理器和包括处理器可执行代码的存储器,其中在所述处理器执行所述处理器可执行代码时,所述处理器配置低密度奇偶校验解码器即LDPC解码器以使用迭代解码来进行操作,所述LDPC解码器包括多个变量节点和多个校验节点,所述LDPC解码器生成消息并在所述变量节点和所述校验节点之间传递所述消息,并且更新所述变量节点和所述校验节点,以实现解码操作的多重迭代,以从目标变量节点生成解码位,其中在所述处理器执行所述处理器可执行代码时,所述LDPC解码器:
将初始值分配到所述目标变量节点;
当接收到从相邻校验节点发送到所述目标变量节点的消息时,确定对应于所述目标变量节点的目标存储器单元是否具有错误;
在确定所述目标存储器单元具有所述错误时,反转所述目标变量节点的初始值的符号;并且
使用符号反转的初始值和从所述相邻校验节点发送到所述目标变量节点的消息,以产生发送到所述相邻校验节点的新消息,
其中,确定对应于所述目标变量节点的所述目标存储器单元是否具有所述错误包括:
将在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相同符号的消息的数量与在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相反符号的消息的数量进行比较;以及
根据在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相同符号的消息的数量与在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相反符号的消息的数量的比较结果,确定对应于所述目标变量节点的所述目标存储器单元是否具有所述错误。
17.根据权利要求16所述的存储器设备,其中确定对应于所述目标变量节点的目标存储器单元具有所述错误包括:确定从所述校验节点传递的所述消息中的多于一半的消息具有与所述目标变量节点的初始值相反的符号。
18.根据权利要求16所述的存储器设备,其中确定对应于所述目标变量节点的目标存储器单元具有所述错误包括:确定在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相反的符号的消息的大小的总和大于在从所述相邻校验节点发送到所述目标变量节点的消息之中具有与所述目标变量节点的初始值相同的符号的消息的大小的总和,其中在从所述相邻校验节点发送到所述目标变量节点的消息之中的一半消息具有与所述目标变量节点的初始值相同的符号,并且在从所述相邻校验节点发送到所述目标变量节点的消息之中的另一半消息具有与所述目标变量节点的初始值相反的符号。
CN201910049608.6A 2018-07-03 2019-01-18 存储器控制器及其操作方法 Active CN110673979B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020180077313A KR20200004195A (ko) 2018-07-03 2018-07-03 메모리 컨트롤러 및 이의 동작 방법
KR10-2018-0077313 2018-07-03

Publications (2)

Publication Number Publication Date
CN110673979A CN110673979A (zh) 2020-01-10
CN110673979B true CN110673979B (zh) 2023-05-12

Family

ID=69065691

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910049608.6A Active CN110673979B (zh) 2018-07-03 2019-01-18 存储器控制器及其操作方法

Country Status (3)

Country Link
US (1) US10804939B2 (zh)
KR (1) KR20200004195A (zh)
CN (1) CN110673979B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018164297A1 (ko) * 2017-03-09 2018-09-13 엘지전자 주식회사 Ldpc 코드의 계층적 복호화 방법 및 이를 위한 장치
KR102582326B1 (ko) * 2018-09-20 2023-09-26 에스케이하이닉스 주식회사 에러 정정 회로 및 이의 동작 방법
US11599773B2 (en) 2018-12-27 2023-03-07 Micron Technology, Inc. Neural networks and systems for decoding encoded data
US11973513B2 (en) 2021-04-27 2024-04-30 Micron Technology, Inc. Decoders and systems for decoding encoded data using neural networks
US11563449B2 (en) 2021-04-27 2023-01-24 Micron Technology, Inc. Systems for error reduction of encoded data using neural networks
US11755408B2 (en) 2021-10-07 2023-09-12 Micron Technology, Inc. Systems for estimating bit error rate (BER) of encoded data using neural networks

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63244935A (ja) * 1987-03-16 1988-10-12 サイセラ コーポレーシヨン 誤り検出訂正方法とシステム
US7827461B1 (en) * 2006-09-18 2010-11-02 Marvell International Ltd. Low-density parity-check decoder apparatus
CN106128510A (zh) * 2015-05-07 2016-11-16 爱思开海力士有限公司 控制器、半导体存储系统及其操作方法
CN107179961A (zh) * 2016-03-11 2017-09-19 西部数据科技股份有限公司 存储系统中错误校正编码数据的冗余
CN107799148A (zh) * 2016-09-05 2018-03-13 爱思开海力士有限公司 存储器系统及用于操作该存储器系统的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100891782B1 (ko) 2002-06-11 2009-04-07 삼성전자주식회사 고속 데이터 전송 시스템에서 순방향 오류 정정 장치 및방법
US8219878B1 (en) 2007-12-03 2012-07-10 Marvell International Ltd. Post-processing decoder of LDPC codes for improved error floors
US8930788B2 (en) * 2012-09-04 2015-01-06 Lsi Corporation LDPC decoder with fractional unsatisfied check quality metric
CN103384975B (zh) * 2013-01-14 2016-06-08 华为技术有限公司 译码方法和装置
US9459956B2 (en) * 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
KR102626162B1 (ko) * 2016-06-14 2024-01-18 삼성전자주식회사 연산 복잡도를 감소시킬 수 있는 디코더의 동작 방법과 이를 포함하는 데이터 저장 장치의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63244935A (ja) * 1987-03-16 1988-10-12 サイセラ コーポレーシヨン 誤り検出訂正方法とシステム
US7827461B1 (en) * 2006-09-18 2010-11-02 Marvell International Ltd. Low-density parity-check decoder apparatus
CN106128510A (zh) * 2015-05-07 2016-11-16 爱思开海力士有限公司 控制器、半导体存储系统及其操作方法
CN107179961A (zh) * 2016-03-11 2017-09-19 西部数据科技股份有限公司 存储系统中错误校正编码数据的冗余
CN107799148A (zh) * 2016-09-05 2018-03-13 爱思开海力士有限公司 存储器系统及用于操作该存储器系统的方法

Also Published As

Publication number Publication date
US20200014408A1 (en) 2020-01-09
CN110673979A (zh) 2020-01-10
KR20200004195A (ko) 2020-01-13
US10804939B2 (en) 2020-10-13

Similar Documents

Publication Publication Date Title
CN110673979B (zh) 存储器控制器及其操作方法
US11050438B2 (en) Memory controller
US11031952B2 (en) Error correction decoder and memory system having the same
US11309916B2 (en) Error correction circuit and memory controller having the same
US11128315B2 (en) Error correction decoder
CN110415753B (zh) 错误校正电路及操作该错误校正电路的方法
CN111726121B (zh) 错误校正解码器和具有该错误校正解码器的存储器系统
US11239865B2 (en) Error correction circuit and operating method thereof
CN110830046B (zh) 纠错电路及其操作方法
US10931308B2 (en) Error correction circuit and method of operating the same
US11055164B2 (en) Error correction decoder and memory controller having the same
CN113496754A (zh) 电子装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant