CN111200440A - Ldpc解码器、半导体存储器系统及其操作方法 - Google Patents
Ldpc解码器、半导体存储器系统及其操作方法 Download PDFInfo
- Publication number
- CN111200440A CN111200440A CN201911060829.XA CN201911060829A CN111200440A CN 111200440 A CN111200440 A CN 111200440A CN 201911060829 A CN201911060829 A CN 201911060829A CN 111200440 A CN111200440 A CN 111200440A
- Authority
- CN
- China
- Prior art keywords
- value
- sub
- syndrome
- variable node
- threshold
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1108—Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3404—Convergence or correction of memory cell threshold voltages; Repair or recovery of overerased or overprogrammed cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1105—Decoding
- H03M13/1131—Scheduling of bit node or check node processing
- H03M13/114—Shuffled, staggered, layered or turbo decoding schedules
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1575—Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3707—Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Probability & Statistics with Applications (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Algebra (AREA)
- Pure & Applied Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Error Detection And Correction (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明涉及一种半导体存储器系统,该半导体存储器系统包括:半导体存储器装置,存储码字;以及低密度奇偶校验(LDPC)解码器,基于奇偶校验矩阵对码字进行解码,以生成解码的码字,其中LDPC解码器包括:选择器,选择共享奇偶校验矩阵的相同层索引的一个或多个子矩阵,并基于阈值和连接到选择的变量节点的不满足检查节点(UCN)的数量,选择与所选择的一个或多个子矩阵中包括的列相对应的变量节点;变量节点更新器,更新与奇偶校验矩阵中包括的所有列相对应的变量节点的判定值;校验子检查器,确定对码字的解码是否已经成功地执行;以及检查节点更新器,更新备份校验子、阈值和处理单元的大小。
Description
相关申请的交叉引用
本申请要求于2018年11月19日提交的申请号为10-2018-0142690的韩国专利申请的优先权,其全部内容通过引用并入本文用于所有目的。
技术领域
本公开的示例性实施例总体涉及一种半导体存储器系统,更具体地,涉及一种半导体存储器系统中的错误校正。
背景技术
通常,半导体存储器装置分为易失性存储器装置(例如,动态随机存取存储器(DRAM)和静态RAM(SRAM))和非易失性存储器装置(例如,只读存储器(ROM)、掩模ROM(MROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电EPROM(EEPROM)、铁电RAM(FRAM)、相变RAM(PRAM)、磁性RAM(MRAM)、电阻式RAM(RRAM)和存闪速存储器)。
易失性存储器装置在电源中断时会丢存储在其中的数据,而非易失性存储器装置即使在供电中断时仍会保留其中的数据。闪速存储器装置由于其高编程速度、低功耗和大数据存储容量而被广泛用作计算机系统中的存储介质。
发明内容
本公开的实施例涉及一种可以快速且准确地对存储在存储器单元中的数据进行解码的存储器控制器、半导体存储器系统及其操作方法。
根据本公开的实施例,一种半导体存储器系统包括:半导体存储器装置,存储包括多个子矩阵的码字;以及低密度奇偶校验(LDPC)解码器,基于奇偶校验矩阵对码字进行解码,以生成解码后的码字,其中LDPC解码器包括:选择器,选择共享奇偶校验矩阵的相同层索引的多个子矩阵中的一个或多个子矩阵,并基于阈值和连接到所选择的变量节点的不满足检查节点(UCN)的数量,选择与所选择的一个或多个子矩阵中包括的列相对应的变量节点;变量节点更新器,通过反转所选择的变量节点的判定值来更新与奇偶校验矩阵中包括的所有列相对应的变量节点的判定值,其中反转判定值包括将零值翻转为一值或将一值翻转为零值;校验子检查器,通过将变量节点的更新的判定值乘以奇偶校验矩阵来确定对码字的解码是否已经成功地执行;以及检查节点更新器,在确定已经执行了Im次子迭代操作后,更新备份校验子、阈值和处理单元的大小,其中处理单元的大小为P×Im,其中Im是最大子迭代计数,其中P是可以并行执行LDPC解码操作的变量节点的数量,并且其中子迭代操作包括:选择一个或多个子矩阵;更新变量节点的判定值;并且确定对码字的解码是否已经成功地执行。
根据本公开的另一实施例,提供一种用于操作半导体存储器系统的方法,该半导体存储器系统存储包括多个子矩阵的码字,该方法包括:选择共享奇偶校验矩阵的相同层索引的多个子矩阵中的一个或多个子矩阵,并基于阈值和连接到所选择的变量节点的不满足检查节点(UCN)的数量,选择与所选择的一个或多个子矩阵中包括的列相对应的变量节点;通过反转所选择的变量节点的判定值来更新与奇偶校验矩阵中包括的所有列相对应的变量节点的判定值,其中反转判定值包括将零值翻转为一值或将一值翻转为零值;通过将变量节点的更新的判定值乘以奇偶校验矩阵来确定对码字的解码是否已经成功地执行;并且在确定已经执行了Im次子迭代操作后,更新备份校验子、阈值和处理单元的大小,其中处理单元的大小为P×Im,其中Im是最大子迭代计数,其中P是可以并行执行LDPC解码操作的变量节点的数量,并且其中子迭代操作包括:选择一个或多个子矩阵;更新判定值;并且确定对码字的解码是否已经成功地执行。
附图说明
图1是示意性地示出了3位多层单元(3位MLC)非易失性存储器装置的编程和擦除状态的示例阈值电压分布。
图2是示意性地示出了由于3位MLC非易失性存储器装置的特性劣化而导致的编程和擦除状态的示例阈值电压分布。
图3是示意性地示出根据本公开的实施例的半导体存储器系统的示例的框图。
图4A是示出图3所示的示例半导体存储器系统的框图。
图4B是示出图4A所示的示例存储块的电路图。
图5是示出图4A所示的存储器控制器的示例操作的流程图。
图6A是示出由坦纳(Tanner)图表示的LDPC解码的示例的示意图。
图6B是示出示例性LDPC码的示意图。
图6C是示出根据LDPC解码的示例性校验子检查进程的示意图。
图7A是示出如图5所示的示例软判定读取操作的示意图。
图7B是示出如图5所示的另一示例软判定读取操作的示意图。
图8示出了根据本公开的实施例的示例奇偶校验矩阵800。
图9是描述根据垂直重排调度方案的示例位翻转算法的流程图。
图10是示出图3和图4A所示的示例性低密度奇偶校验(LDPC)解码器133的详细框图。
图11是示出变量节点更新单元1050的示例结构的框图。
图12是示出校验子检查单元1052的示例结构的框图。
图13是示出检查节点更新单元1054的示例结构的框图。
图14是描述根据本公开的实施例的在半导体系统10中执行的LDPC解码操作的示例的流程图。
图15是示出根据本公开的实施例的LDPC解码器133的示例性操作仿真结果的图。
具体实施方式
在非易失性存储器装置(例如,闪速存储器装置)中,每个存储器单元的数据状态取决于存储器单元可以编程的位数。每个单元存储1位数据的存储器单元称为单位单元或单层单元(SLC)。每个单元存储多位数据(例如2位或更多位数据)的存储器单元称为多位单元、多层单元(MLC)或多状态单元。MLC对于高度集成是有利的。然而,随着在每个存储器单元中编程的位数的增加,可靠性降低并且读取失败率增加。
例如,当在存储器单元中对k个位进行编程时,在存储器单元中形成2k个阈值电压中的一个。由于存储器单元的电特性之间的微小差异,针对相同数据编程的存储器单元的阈值电压形成阈值电压分布。阈值电压分布分别对应于表示k位信息的2k个数据值。
然而,可用于阈值电压分布的电压窗口是有限的。因此,随着值k增大,阈值电压分布之间的距离减小并且相邻的阈值电压分布彼此重叠。由于相邻的阈值电压分布彼此重叠,因此读取数据可能会导致数个或数十个位错误。
图1示出了3位多层单元(3位MLC)非易失性存储器装置的编程和擦除状态的示例阈值电压分布。
图2示出了由于3位MLC非易失性存储器装置的特性劣化而导致的编程和擦除状态的示例阈值电压分布。
在MLC非易失性存储器装置中,例如在能够在单个存储器单元中存储k位数据的MLC闪速存储器装置中,存储器单元可以具有2k个阈值电压分布中的一个。例如,3位MLC具有8个阈值电压分布中的一个。
由于存储器单元之间的特性差异,针对相同数据编程的存储器单元的阈值电压形成阈值电压分布。在如图1所示的3位MLC非易失性存储器装置中,阈值电压分布与包括7个编程状态“P1”至“P7”和擦除状态“E”的数据状态相对应地形成。
图1示出了其中阈值电压分布不重叠并且由读取电压裕量分开的理想情况。参照图2的闪速存储器示例,当在浮置栅极或隧道氧化层上捕获的电子随时间放电时,存储器单元可能经历电荷损失。当隧道氧化层由于迭代编程和擦除操作而劣化时,这种电荷损失可能会加速。电荷损失导致存储器单元的阈值电压降低。例如,如图2所示,阈值电压分布可能由于电荷损失而向左移动。
此外,编程干扰、擦除干扰和/或反向图案依赖也导致阈值电压的增加。随着存储器单元的特性劣化,如图2所示,相邻的阈值电压分布可能重叠。
一旦相邻的阈值电压分布重叠,当将特定的读取电压施加到所选择的字线时,读取的数据可能会包含大量错误。例如,当根据施加到所选择的字线的读取电压Vread3的存储器单元的感测状态为开时,确定存储器单元具有第二编程状态“P2”。当根据施加到选择的字线的读取电压Vread3的存储器单元的感测状态为关时,确定存储器单元具有第三编程状态“P3”。然而,当相邻的阈值电压分布重叠时,可能会错误地将实际上具有第三编程状态“P3”的存储器单元确定为具有第二编程状态“P2”。因此,当相邻的阈值电压分布如图2所示重叠时,读取的数据可能包括大量的错误。
本公开的实施例有利地提供了用于改善读取半导体存储器装置的存储器单元中的数据的方法和装置。
在整个公开中,相同的附图标记在本公开的各个附图和实施例中表示相同的部件。
图3是示意性地示出根据本公开的实施例的示例性半导体存储器系统10的框图。
图4A是示出图3所示的示例性半导体存储器系统10的框图。
图4B是图4A所示的示例性存储块211的电路图。
图5是示出半导体存储器系统10中包括的存储器控制器100的操作的示例的流程图。
参照图3至图5所示的示例性实施例,半导体存储器系统10可以包括半导体存储器装置200和存储器控制器100。
在一些实施例中,半导体存储器装置200可以在存储器控制器100的控制下执行擦除、编程和读取操作中的一个或多个。半导体存储器装置200可以通过输入/输出线接收命令(CMD)、地址(ADDR)和数据(DATA)。半导体存储器装置200可以通过电源线接收电力(PWR),以及通过控制线接收控制信号(CTRL)。控制信号可以包括命令锁存使能(CLE)信号、地址锁存使能(ALE)信号、芯片使能(CE)信号、写入使能(WE)信号、读取使能(RE)信号等。
在一些实施例中,存储器控制器100可以控制半导体存储器装置200的全部操作。存储器控制器100可以包括用于校正错误位的LDPC单元130。LDPC单元130可以包括LDPC编码器131和LDPC解码器133。
LDPC编码器131可以对待被编程到半导体存储器装置200中的数据执行编码操作,并且输出包括附加奇偶校验位的数据。奇偶校验位可存储在半导体存储器装置200中。
LDPC解码器133可以对从半导体存储器装置200读取的数据执行错误校正解码。LDPC解码器133可以确定错误校正解码是否成功,并且可以基于确定结果输出指令信号。LDPC解码器133可以使用由LDPC编码操作生成的奇偶校验位来校正数据的错误位。
在一些实施例中,当错误位的数量超过LDPC单元130的错误校正能力时,LDPC单元130可以不校正错误位。在这种情况下,LDPC单元130可以生成错误校正失败信号。
在一些实施例中,LDPC单元130可以包括用于错误校正的一个或多个电路、系统或装置。LDPC码可以是二进制LDPC码或非二进制LDPC码。
根据当前公开的实施例,LDPC单元130可以使用硬判定读取数据、软判定读取数据或硬判定和软判定读取数据的组合来执行错误位校正操作。
在一些实施例中,存储器控制器100和半导体存储器装置200可以集成在单个半导体器装置中。例如,存储器控制器100和半导体存储器装置200可以集成在诸如固态驱动器(SSD)的单个半导体装置中。固态驱动器可以包括用于将数据存储在半导体存储器中的存储装置。例如,当在SSD中使用半导体存储器系统10时,可以提高联接到半导体存储器系统10的主机(未示出)的操作速度。
在一些实施例中,存储器控制器100和半导体存储器装置200可以集成在诸如存储卡的单个半导体器装置中。例如,存储器控制器100和半导体存储器装置200可以集成在单个半导体装置中以配置诸如以下的存储卡:个人计算机存储卡国际协会(PCMCIA)的PC卡、紧凑式闪存(CF)卡、智能媒体(SM)卡、记忆棒、多媒体卡(MMC)、缩小尺寸的多媒体卡(RS-MMC)、微型尺寸版本的MMC(MMC微型)、安全数字(SD)卡、迷你安全数字(迷你SD)卡、微型安全数字(微型SD)卡、高容量安全数字(SDHC)和通用闪存(UFS)。
对于另一示例,半导体存储器系统10可以被设置为包括诸如以下的电子装置中的各种元件之一:计算机、超移动PC(UMPC)、工作站、上网本、个人数字助理(PDA)、便携式计算机、网络平板PC、无线电话、移动电话、智能电话、电子书阅读器、便携式多媒体播放器(PMP)、便携式游戏装置、导航装置、黑盒、数码相机、数字多媒体广播(DMB)播放器、三维电视、智能电视、数字音频记录器、数字音频播放器、数字图片记录器、数字图片播放器、数字视频记录器、数字视频播放器、数据中心的存储装置、能够在无线环境下接收和发送信息的装置、家用网络的电子装置之一、计算机网络的电子装置之一、远程信息处理网络的电子装置之一、射频识别(RFID)装置或计算系统的元件装置。
参照图4A,存储器控制器100可以包括存储单元110、CPU 120、LDPC单元130、主机接口140、存储器接口150和系统总线160。存储单元110可以用作CPU 120的工作存储器。
主机接口140可以通过诸如以下的各种接口协议中的一种或多种与主机通信:通用串行总线(USB)、多媒体卡(MMC)、高速外围组件互连(PCI-E)、小型计算机系统接口(SCSI)、串列SCSI(SAS)、串行高级技术附件(SATA)、并行高级技术附件(PATA)、增强型小型磁盘接口(ESDI)和电子集成驱动器(IDE)。
LDPC单元130可以检测并校正从半导体存储器装置200读取的数据中包括的错误。存储器接口150可与半导体存储器装置200接口连接。在一些实施例中,LDPC编码器131和LDPC解码器133可以被实施为不同且独立的组件。在其它实施例中,并且如图4A所示,LDPC单元130可以包括LDPC编码器131和LDPC解码器133两者。CPU 120可以执行各种控制操作。
根据本公开的示例性实施例,在编程操作期间,LDPC单元130可以对待被编程到半导体存储器装置200的原始数据执行LDPC编码操作。在这种情况下,在读取操作期间,LDPC单元130可以对存储在半导体存储器装置200中的LDPC编码数据或码字执行LDPC解码。
LDPC单元130可以通过对存储在半导体存储器装置200中的LDPC编码数据或码字执行LDPC解码操作来恢复原始数据,该原始数据是在编程操作期间LDPC单元130的LDPC编码操作之前的数据。
如稍后参照图5所讨论的,对存储在半导体存储器装置200中的数据的读取操作可以包括步骤S511的硬判定读取操作和步骤S531的软判定读取操作。在硬判定读取操作期间,可以根据硬判定读取电压VHD从半导体存储器装置200读取数据。在软判定读取操作期间,可以根据软判定读取电压VSD从半导体存储器装置200读取数据,该软判定读取电压VSD具有与硬判定读取电压VHD不同的电压。例如,可以对存储器单元执行根据软判定读取电压VSD的附加读取操作,该存储器单元根据硬判定读取电压VHD被读取。
LDPC单元130可以将存储在半导体存储器装置200中并通过硬判定读取操作读取的LDPC编码数据或码字解码回原始数据。
在一些实施例中,软判定读取操作是生成对数似然比(LLR)的操作,其根据软判定读取电压VSD而不是仅仅对存储在半导体存储器装置200中的数据的读取操作,提供通过硬判定读取操作读取的硬判定读取数据的可靠性。
LDPC单元130可以使用LLR执行LDPC解码操作。LDPC单元130可以使用LLR检测并校正从半导体存储器装置200读取的LDPC编码数据或码字的错误。
半导体存储器装置200可以包括存储器单元阵列210、控制电路220、电压供给单元230、电压传输单元240、读取/写入电路250和列选择单元260。
存储器单元阵列210可以包括多个存储块211。用户数据可以存储在存储块211中。
参照图4B,存储块211可以包括分别联接到位线BL0至BLm-1的多个单元串221。每个列的单元串221可包括一个或多个漏极选择晶体管(DST)以及一个或多个源极选择晶体管(SST)。多个存储器单元或存储器单元晶体管可以串联地联接在选择晶体管DST和SST之间。存器储单元MC0至MCn-1中的每一个可以包括存储每个单元中的多个位的数据信息的多层单元(MLC)。单元串221可分别电联接到对应的位线BL0至BLm-1。
图4B中的示例示出了包括NAND型闪速存储器单元的存储块211。然而,半导体存储器装置200的存储块211不限于NAND型闪速存储器,也可以包括NOR型闪速存储器、组合了两种或更多种类型的存储器单元的混合型闪速存储器、以及其中控制器嵌入在存储器芯片内部的One-NAND闪速存储器。半导体装置的操作特性可以应用于其中电荷存储层由绝缘层形成的电荷撷取(CTF),以及其中电荷存储层由导电浮栅形成的闪速存储器装置。
返回参照图4A,控制电路220可以控制与半导体存储器装置200的编程、擦除和读取操作有关的全部操作。
电压供给单元230可以根据操作模式将例如编程电压、读取电压和通过电压的字线电压提供到各个字线,并且可以提供待提供到例如在其中形成存储器单元的阱区的组块(bulk)的电压。可以在控制电路220的控制下执行电压供给电路230的电压生成操作。
电压供给单元230可以生成用于生成多个读取数据的多个可变读取电压。
电压传输单元240可以选择存储块211中的一个或存储器单元阵列210的扇区,并且可以在控制电路220的控制下选择所选择的存储块的字线中的一个。电压传输单元240可以在控制电路220的控制下将从电压供给单元230生成的字线电压提供到选择的字线或未选择的字线。
读取/写入电路250可以由控制电路220控制,并且可以根据操作模式用作读出放大器或写入驱动器。例如,在验证/正常读取操作期间,读取/写入电路250可以用作用于从存储器单元阵列210读取数据的读出放大器。在正常读取操作期间,列选择单元260可以基于列地址信息将从读取/写入电路250读取的数据输出到外部,例如输出到存储器控制器100。另一方面,在验证读取操作期间,所读取的数据可以被提供到半导体存储器装置200中包括的通过/失败验证电路(图4A中未示出),并且可以用于确定存储器单元的编程操作是否成功。
在编程操作期间,读取/写入电路250可用作用于根据待存储在存储器单元阵列210中的数据驱动位线的写入驱动器。在编程操作期间,读取/写入电路250可以从缓冲器(未示出)接收待写入存储器单元阵列210中的数据,并且可以根据输入的数据驱动位线。为此,读取/写入电路250可以包括分别对应于列(或位线)或列对(或位线对)的多个页面缓冲器(PB)251。页面缓冲器251中的每一个可以包括多个锁存器。
参照图4A和图5,存储器控制器100的操作可以包括硬判定解码步骤S510,并且可以另外包括软判定解码步骤S530。根据本公开的一些实施例,可以基于执行读取操作的次数和软读取数据的精度信息来重复执行步骤S530的软判定解码步骤。硬判定和软判定解码步骤S510和S530的目标数据或存储在半导体存储器装置200中的数据可以是由LDPC单元130进行LDPC编码的LDPC编码数据或码字。
例如,硬判定解码步骤S510可以是硬判定LDPC解码步骤。例如,其可以包括预定长度的硬判定读取数据,该数据根据硬判定读取电压VHD从存储块211的存储器单元读取。硬判定解码步骤S510可以包括步骤S511至S515。
例如,软判定解码步骤S530可以是硬判定读取数据的软判定LDPC解码的步骤。在示例中,这包括当硬判定解码步骤S510的硬判定LDPC解码最终失败时,根据硬判定读取电压VHD周围的软判定读取电压VSD形成软判定读取数据。软判定解码步骤S530可以包括步骤S531至S535。
如上所述,在硬判定读取步骤的步骤S511中,可以根据硬判定读取电压VHD从半导体存储器装置200读取硬判定读取数据。存储器控制器100可以将读取命令和地址提供到半导体存储器装置200。半导体存储器装置200可以响应于读取命令和地址,根据硬判定读取电压VHD从中读取硬判定读取数据。读取的硬判定读取数据可以被提供到存储器控制器100。
在步骤S513中,可以执行作为硬判定解码的硬判定LDPC解码。LDPC单元130可以通过使用错误校正码对根据硬判定读取电压VHD从半导体存储器装置200读取的硬判定读取数据执行硬判定LDPC解码。
在步骤S515中,可以确定硬判定LDPC解码是成功还是失败。例如,在步骤S515中,可以确定是否校正了在步骤S513中对其执行了硬判定LDPC解码的硬判定读取数据的错误。例如,存储器控制器100可以通过使用硬判定读取数据和奇偶校验矩阵来确定硬判定读取数据的错误是否被校正。例如,当硬判定LDPC解码的硬判定数据与奇偶校验矩阵的乘积为零向量(“0”)时,硬判定LDPC解码的硬判定数据可以被确定为正确的数据。相反,当硬判定LDPC解码的硬判定数据与奇偶校验矩阵的乘积不是零向量(“0”)时,硬判定LDPC解码的硬判定数据可以被确定为不正确的数据。
当作为步骤S515的结果确定硬判定读取数据已被校正时,在步骤S520中确定根据步骤S511的硬判定读取电压VHD的读取操作是成功的,并且存储器控制器100的操作可以结束。在步骤S513中对其执行了硬判定LDPC解码的硬判定读取数据是经错误校正的数据,并且可以在外部提供或在存储器控制器100中使用。
在一些实施例中,并且当作为步骤S515的结果确定硬判定读取数据不正确时,可以执行软判定解码步骤S530。
如上所述,在软判定读取步骤的步骤S531中,可以根据软判定读取电压VSD从半导体存储器装置200读取软判定读取数据。例如,可以对存储器单元执行根据软判定读取电压VSD的附加读取操作,其中根据硬判定读取电压VHD对该存储器单元执行了硬判定解码步骤S510。软判定读取电压VSD可以不同于硬判定读取电压VHD。
在步骤S533中,可以执行作为软判定解码的软判定LDPC解码。可以基于包括被对其执行硬判定LDPC解码的硬判定读取数据的软判定读取数据以及根据软判定读取电压VSD从存储器单元读取的数据,来执行软判定LDPC解码。硬判定读取电压VHD和软判定读取电压VSD可以不同。
例如,半导体存储器装置200的存储器单元MC0至MCn-1中的每一个可以属于包括7个编程状态P1至P7和1个擦除状态E的阈值电压分布中的一个。
硬判定读取电压VHD可以具有在多个状态(E和P1至P7)中的两个相邻状态之间的电压。每个软判定读取电压VSD可以具有在多个状态(E和P1至P7)的两个相邻状态之间的电压,该软判定读取电压不同于硬判定读取电压VHD。
根据硬判定读取电压VHD从存储器单元MC0至MCn-1读取的硬判定读取数据和根据软判定读取电压VSD从其读取的软判定读取数据可以具有不同的值。例如,存储器单元MC0至MCn-1中的一个可以是具有高于或低于正常逻辑状态的阈值电压分布的阈值电压的“尾单元”(或“尾存储器单元”)。在示例中,“尾单元”是比平均擦除得更快的存储器单元。根据硬判定读取电压VHD从尾存储器单元读取的硬判定读取数据和根据软判定读取电压VSD从其读取的软判定读取数据可以具有不同的值。当执行根据软判定读取电压VSD的附加读取操作以及根据硬判定读取电压VHD的读取操作时,可以获得关于存储器单元MC0至MCn-1的阈值电压的附加信息(例如,关于尾存储器单元的附加信息)或提供通过硬判定读取操作读取的硬判定读取数据的可靠性的对数似然比(LLR)。
当获得附加信息时,似然比的概率(其指示存储器单元MC0至MCn-1的数据是属于第一状态(即“1”)还是属于第二状态(即“0”))可增大。因此,可以提高LDPC解码的可靠性。存储器控制器100可以基于根据硬判定读取电压VHD和软判定读取电压VSD读取的软判定读取数据来执行软判定LDPC解码。将参照图7A和图7B公开硬判定读取电压VHD和软判定读取电压VSD之间的关系。
在步骤S535中,可以确定软判定LDPC解码是成功还是失败。例如,可以确定在步骤S533中对其执行软判定LDPC解码的软判定读取数据的错误是否被校正。例如,存储器控制器100可以通过使用软判定读取数据和奇偶校验矩阵来确定软判定读取数据的错误是否被校正。例如,当软判定LDPC解码的软判定数据和奇偶校验矩阵的乘积是零向量(“0”)时,可以将软判定LDPC解码的软判定数据确定为正确的数据。相反,当软判定LDPC解码的软判定数据和奇偶校验矩阵的乘积不是零向量(“0”)(例如,包含至少一个“1”位)时,软判定LDPC解码后的软判定数据可以被确定为不正确的数据。
在一些实施例中,在硬判定解码步骤S510期间计算奇偶校验矩阵和硬判定读取数据的乘积的过程可以与在软判定解码步骤S530期间计算奇偶校验矩阵和软判定读取数据的乘积的过程相同。
当作为步骤S535的确定结果确定软判定读取数据被校正时,可以在步骤S520中确定根据步骤S531的软判定读取电压VSD的读取操作是成功的并且存储器控制器100的操作可以结束。在步骤S533中对其执行了软判定LDPC解码的软判定读取数据是错误校正数据,并且可以在外部提供或在存储器控制器100中使用。
当作为步骤S535的确定结果确定软判定读取数据未被校正时,可以在步骤S540中确定存储器控制器100对存储器单元MC0至MCn-1的读取操作最终失败并且存储器控制器100的操作可以结束。
图6A是示出由Tanner图表示的LDPC解码的示例的示意图。
图6B是示出示例性LDPC码的示意图。
图6C是示出根据LDPC解码的校验子检查进程的示例的示意图。
错误校正码(ECC)通常在存储系统中使用。存储装置中发生的各种物理现象导致噪声效应,从而损坏所存储的信息。错误校正编码方案可以用于保护所存储的信息免受所产生的错误的影响。这是通过在将信息存储在存储器装置中之前对信息进行编码来完成的。编码进程通过向信息添加冗余将信息位序列转换为码字。然后可以使用该冗余以便通过解码进程从可能损坏的码字中恢复信息。
在迭代编码方案中,代码(或ECC)被构造为几个简单的组成代码的串接并且通过在接收简单组成码的解码器之间交换信息基于迭代解码算法进行解码。通常,可以使用描述组成码之间的互连的二部图或Tanner图来定义代码。在这种情况下,解码可以被看作是遍历图边缘的迭代消息。
迭代码可以包括低密度奇偶校验(LDPC)码。LDPC码是由稀疏奇偶校验矩阵H定义的线性二进制码。
LDPC码(二进制或非二进制)通常具有奇偶校验矩阵,其中每行和每列中的非零元素的数量非常少,并且其结构可以由图6A所示的Tanner图来限定。如其中所示,Tanner图包括检查节点610、变量节点620和将检查节点610连接到变量节点620的边缘615。在检查节点处理之后从检查节点610传递到变量节点620的值成为检查节点消息615A,在变量节点处理之后从变量节点620传递到检查节点610的值成为变量节点消息615B。
在示例中,通过基于“和积”算法的迭代解码来执行LDPC码的解码进程。在另一示例中,可以基于诸如“最小和”算法的次优消息传递算法提供一种解码方法,该算法是和积算法的简化版本。
例如,参照图6B,LDPC码的Tanner图包括代表LDPC码的奇偶校验等式的5个检查节点610、代表代码符号的10个变量节点620、以及代表检查节点610和变量节点620之间的关系的边缘615。边缘615将每个检查节点610连接到与包括在由检查节点610表示的奇偶校验等式中的代码符号相对应的变量节点620。图6B示出了常规LDPC码的示例,其中联接到每个检查节点610的变量节点620的数量固定为4,并且联接到每个变量节点620的检查节点610的数量固定为2。变量节点620的初始值可以是硬判定读取数据和软判定读取数据中的一个。
图6C示出了与Tanner图相对应的奇偶校验矩阵H。奇偶校验矩阵H类似于奇偶校验等式的图形表示。奇偶校验矩阵H在每一列和每一行中具有相同的数字1。例如,奇偶校验矩阵H的每一列具有对应于每个变量节点620和检查节点610之间的连接的两个1,并且每一行具有对应于每个检查节点610和变量节点620之间的连接的四个1。
通过在Tanner图中的变量节点620和检查节点610之间迭代地交换在每个节点中生成和更新的消息来执行对LDPC码进行解码的进程。在这种情况下,每个节点基于和积算法或其它类似算法更新消息。
例如,对硬判定读取数据的LDPC解码可以包括多个迭代,每个迭代包括检查节点的更新、变量节点的更新以及在变量节点的初始更新之后的校验子检查。在单次迭代之后,并且如果校验子检查的结果满足预定条件,则LDPC解码可以结束。当校验子检查的结果不满足预定条件时,可以执行附加的单次迭代。附加迭代可以包括检查节点更新、变量节点更新和校验子检查。迭代次数可以限制为最大迭代计数。当在迭代次数已经达到最大迭代计数之后,校验子检查的结果不满足预定条件时,可以确定在LDPC解码中对码字的LDPC解码失败。
参照图6C,校验子检查识别奇偶校验矩阵H和通过变量节点的更新获得的矢量“v”的乘积结果“Hv t”是否满足预定条件。当乘积结果“Hv t”是零矢量时,乘积结果“Hv t”满足预定条件。
图6C示出了校验子检查进程的示例。图6C示出了非零向量“01000”作为乘积结果“Hv t”,因此,图6C示出了校验子检查不满足预定条件,并且应当执行另一单次迭代。
将非零向量“01000”作为乘积结果“Hv t”,则非零向量元素或不满足零向量条件的元素的数量为1。在描述中,在单次迭代中不满足乘积结果“Hv t”的校验子检查的零向量条件的元素被定义为不满足校验子检查(USC)。因此,图6C示出了校验子检查的结果,其中USC的数量是1。
图7A和图7B是分别示出图5所示的软判定读取操作特别是2位和3位软判定读取操作的不同示例的示意图。
参照图7A所示的示例,在参照图5描述的步骤S510的硬判定解码操作期间,当硬判定读取电压VHD施加到半导体存储器装置200时,根据存储器单元的导通/截止状态,硬判定读取数据2-1可以具有值“1”和“0”中的一个。
在步骤S530的软判定解码操作期间,可以通过在此将具有与硬判定读取电压VHD不同的电压的软判定读取电压VSD1、VSD2施加到存储器单元的软判定读取操作来产生LLR。
参照图7A,在2位软判定读取操作的情况下,当多个软判定读取电压VSD1和VSD2之中的第一软判定读取电压VSD1被施加到存储器单元时,根据存储器单元是导通还是截止,第一软判定读取数据值2-2可以具有在1和0之中的一个值。类似地,基于多个软判定读取电压VSD1和VSD2之中的第二软判定读取电压VSD2,第二软判定读取数据值2-3可以具有在1和0之中的一个值。
例如,LDPC单元130可以通过对第一和第二软判定读取值2-2和2-3的XNOR运算生成软判定读取数据2-4或LLR。LLR 2-4可以示出硬判定读取数据2-1的可靠性。
例如,软判定读取数据2-4的值“1”可以示出硬判定读取数据2-1的第一和第二状态(逻辑值“1”和“0”)的“强”概率。另一方面,软判定读取数据2-4的值“0”可以示出硬判定读取数据2-1的第一和第二状态的“弱”概率。
参照图7B所示的示例,在参照图5描述的步骤S510的硬判定解码操作期间,当硬判定读取电压VHD施加到半导体存储器装置200时,根据存储器单元的导通/截止状态,硬判定读取数据3-1可以具有值“1”和“0”中的一个。
在步骤S530的软判定解码操作期间,可以通过在此将具有与硬判定读取电压VHD不同的电压的软判定读取电压VSD1至VSD6施加到存储器单元的软判定读取操作来生成LLR。
参照图7B,在3位软判定读取操作的情况下,当多个软判定读取电压VSD1至VSD6之中的第一和第二软判定读取电压VSD1和VSD2被施加到存储器单元时,可以如上所述参照图7A来生成第一和第二软判定读取数据值,然后可以对第一和第二软判定读取数据值执行异或非(XNOR)操作以生成第一软判定数据3-2。
以类似的方式,在3位软判定读取操作期间,当将具有与第一和第二软判定读取电压VSD1和VSD2不同的电压的第三至第六软判定读取电压VSD3至VSD6施加到存储器单元时,可以根据存储器单元的导通/截止状态来生成第三至第六软判定读取值,其类似于参照图7A描述的2位软判定读取操作。LDPC单元130可以将第二软判定读取数据3-3(“10101”)或用于通过XNOR运算生成LLR的数据生成第三至第六软判定读取值。LLR 3-3(“10101”)可以向第一软判定读取数据3-2提供加权值。
例如,第二软判定读取数据3-3的值“1”可以示出第一软判定读取数据3-2的第一状态的“非常强”概率(逻辑值“1”)。另一方面,第二软判定读取数据3-3的值“0”可以示出第一软判定读取数据3-2的第一状态的“强”概率。
以类似的方式,第二软判定读取数据3-3的值“1”可以示出第一软判定读取数据3-2的第二状态的“非常弱”概率(逻辑值“0”)。另一方面,第二软判定读取数据3-3的值“0”可以示出第一软判定读取数据3-2的第二状态的“弱”概率。LLR 3-3可以为硬判定读取数据3-1提供更好的可靠性,这类似于参照图7A描述的2位软判定读取操作。
图8是示出根据本公开的实施例的奇偶校验矩阵800的示例的示图。
奇偶校验矩阵800可以包括M*N个子矩阵802,并且每个子矩阵802可以是零矩阵或大小为Q*Q的循环移位恒等矩阵。限定二进制LDPC码的奇偶校验矩阵800的每个条目为0或1。
如以上参照图6A所述,LDPC码的结构可以由Tanner图限定,该Tanner图包括检查节点、变量节点以及连接检查节点和变量节点的边缘。
形成Tanner图的检查节点和变量节点可以分别对应于奇偶校验矩阵800的行和列。因此,奇偶校验矩阵800的行数和奇偶校验矩阵800的列数可以分别对应于形成Tanner图的检查节点的数量和变量节点的数量。当奇偶校验矩阵800的条目为1时,可以通过Tanner图上的边缘来连接与条目所位于的行和列相对应的检查节点和变量节点。
位翻转算法可以是解码算法,其包括基于阈值T以及基于从通道提供的硬判定值R生成的反转函数Ei,在反转变量节点的判定值C(例如,将“1”改变为“0”,反之亦然)时,从半导体存储器装置200读取变量节点和备份校验子Sp的判定值C。
LDPC单元130可以在垂直重排调度(VSS)方案中根据位翻转算法执行LDPC解码操作。根据垂直重排调度方案,LDPC单元130可以在形成奇偶校验矩阵800的多个子矩阵802中选择共享相同层(或层索引)的子矩阵804,并执行选择与形成所选择的子矩阵的列相对应的变量节点的变量节点的选择操作。LDPC单元130可以将变量节点消息从所选择的变量节点提供给连接到所选择的变量节点的检查节点。LDPC单元130可以基于针对设置有变量节点消息的检查节点的所提供的变量节点消息来执行检查节点更新操作。执行检查节点更新操作的检查节点可以将检查节点消息提供给连接到检查节点的变量节点。LDPC单元130可以基于所提供的检查节点消息,对设置有检查节点消息的变量节点执行变量节点更新操作。LDPC单元130可以通过重复执行变量节点选择操作、检查节点更新操作和变量节点更新操作,以垂直重排调度方法来执行LDPC解码操作,直到成功地执行LDPC解码操作为止。
图9是描述根据垂直重排调度方案的示例性位翻转算法的流程图。
在步骤S902中,LDPC单元130可以执行初始化操作。LDPC单元130可以将变量节点的判定值C初始化为从通道提供的硬判定值R。此外,LDPC单元130可以将处理的子矩阵的数量Np初始化为0。
在步骤S904中,LDPC单元130可以基于初始化的变量节点的判定值C来计算校验子S。LDPC单元130可以通过将奇偶校验矩阵H乘以初始化的变量节点的判定值C来计算校验子S。当包括在所计算的校验子S中的所有条目的值为0时,LDPC单元130可以终止LDPC解码操作并输出经初始化的变量节点的判定值C。
在步骤S906中,当包括在所计算的校验子S中的条目之中的至少一个条目具有值1时,LDPC单元130可以将经计算的校验子S单独存储为备份校验子Sp。在示例中,备份校验子是在随后的更新步骤或操作之前的先前计算的校验子。
在步骤S908中,LDPC单元130可以基于在步骤S906中存储的备份校验子Sp来计算阈值T。另外,LDPC单元130可以将与备份校验子Sp中的值为1的条目相对应的检查节点检测为不满足检查节点(UCN)。不满足检查节点可以是在如参照图6A所描述的Tanner图上的检查节点之中分别与检查节点连接的变量节点之中具有判定值为1的变量节点的数量是奇数的检查节点。LDPC单元130可以获得针对每个变量节点分别与变量节点连接的检查节点之中、与所检测到的不满足检查节点UCN相对应的检查节点的数量。如稍后所述,LDPC单元130可以基于分别连接到变量节点的不满足检查节点UCN来获得每个变量节点的反转函数值Ei。LDPC单元130可以将所选择的变量节点的反转函数值Ei与所计算的阈值T进行比较,并且将反转函数值Ei大于阈值T的变量节点的判定值C反转。
在步骤S910中,LDPC单元130可以执行子迭代单元,该子迭代单元包括变量节点选择步骤(或操作)S912、反转函数生成步骤(或操作)S914、位翻转操作/步骤S916、校验子检查步骤S918、多个处理的子矩阵Np更新步骤S920以及最大迭代计数校验步骤S922,直到(a)成功地执行LDPC解码操作,或(b)确定未成功地执行LDPC解码操作但是子迭代单元已达到最大迭代计数IM。
在步骤S912中,LDPC单元130可以从奇偶校验矩阵800中选择最大达到基本处理单元P(在本文中也称为基本处理单元P)的大小的变量节点。基本处理单元P的大小可以是可以并行执行LPDC解码操作的变量节点的数量P。如上所述,由于奇偶校验矩阵800的列分别与变量节点相对应,因此LDPC单元130能够通过在奇偶校验矩阵800的列之中选择与达到基本处理单元P的大小的列数,来选择达到基本处理单元P的大小的变量节点。基本处理单元P的大小可以根据LDPC单元130中包括的变量节点单元的数量而不同。基本处理单元P的大小可以是通过将形成子矩阵802的列的数量Q乘以有理数z而获得的整数z〃Q。
LDPC单元130可以获得当前子矩阵索引ic,并且当随后的子迭代单元激活时,从除了由当前子迭代单元选择的变量节点之外的其余变量节点中选择变量节点。LDPC单元130可以根据等式1所示的取模运算来获得当前子矩阵索引ic。
等式1
ic=Npmod N
LDPC单元130可以对奇偶校验矩阵H的单位行中包括的处理的子矩阵的数量Np和子矩阵的数量N执行取模运算,以获得当前子矩阵索引ic。LDPC单元130可以通过将处理的子矩阵的数量Np除以奇偶校验矩阵H的单位行中包括的子矩阵的数量N来获得余数,以执行取模运算。
LDPC单元130可以根据等式2(例如,得到其中所示的P索引)并且基于所计算的当前子矩阵索引ic、形成子矩阵802的列数Q和基本处理单元P来计算达到基本处理单元P的大小的索引i。索引i可以分别对应于奇偶校验矩阵800的列。
等式2
i={ic*Q,ic*Q+1…,ic*Q+P-1}
LDPC单元130可以通过将形成子矩阵802的列数Q乘以当前的子矩阵索引ic并将其表示为第一索引来获得第一值,并且通过在第一索引上加上1并将其表示为第二索引来获得一个值。LDPC单元130可以通过基于基本处理单元P的大小将1顺序地加到第一索引来顺序地获得后续索引。LDPC单元130可以通过将基本处理单元P的大小与第一索引相加,然后从相加结果中减去1,并将其表示为最后索引来获得一个值。LDPC单元130可以通过选择与索引i相对应的奇偶校验矩阵800的列来选择与基本处理单元P的大小一样多的变量节点Vi。
例如,当基本处理单元P被初始化为值0时,LDPC单元130可以执行取模运算以获得当前子矩阵索引ic的值作为“0”。LDPC单元130可以执行取模运算以获取0至P-1作为索引i,并且LDPC单元130可以通过选择与索引i相对应的奇偶校验矩阵800的列来选择达到与基本奇偶校验矩阵800的列对应的基本处理单元P的大小的变量节点Vi。
在步骤S914中,LDPC单元130可以基于备份校验子Sp、所选择的变量节点Vi的判定值Ci和所选择的变量节点Vi的硬判定值Ri来计算所选择的变量节点Ei的反转函数值。
在步骤S916中,LDPC单元130可以基于在步骤S908中所计算的阈值T和在步骤S914中所计算的反转函数值Ei,执行反转所选择的变量节点Vi的判定值Ci的位翻转操作。LDPC单元130可以基于所选择的变量节点Vi的所反转的判定值Vi来更新与形成奇偶校验矩阵800的所有列相对应的所有变量节点的判定值C。
在步骤S918中,LDPC单元130可以通过将奇偶校验矩阵H乘以在步骤S916中更新的变量节点的判定值C来计算校验子S。当形成所计算的校验子S的所有条目的值为0时(在步骤S918为“是”),LDPC单元130可以终止LDPC解码操作并输出变量节点的更新的判定值C。
在步骤S920中,当所计算的校验子S中包括的条目之中的一个或多个条目具有值1(在步骤S918为“否”)时,LDPC单元130可以基于等式3来更新处理的子矩阵的数量Np。
等式3
Np←Np+z
LDPC单元130可以将处理的子矩阵的数量Np更新为通过将有理数z加上处理的子矩阵的数量Np而获得的值,其中该有理数为基本处理单元P的大小除以每个子矩阵Q中包括的变量节点的数量。
在步骤S922中,LDPC单元130可以检查直到当前时刻为止执行解码操作的次数,即解码迭代计数,是否已经达到最大迭代计数IM。在示例中,当处理的子矩阵的数量Np达到通过将最大迭代计数IM乘以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值时(在步骤S922处为“是”),LDPC单元130可以确定LDPC解码操作已经失败并且输出解码失败信号。在另一示例中,当处理的子矩阵的数量Np达到通过将最大迭代计数IM乘以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值时(在步骤S922处为“否”),LDPC单元130可以在步骤S924中将子迭代索引k增加“1”。
在步骤S924中,当子迭代索引k达到最大子迭代计数Im时,LDPC单元130可以返回到步骤S906以更新备份校验子Sp和阈值T。如果子迭代索引k尚未达到最大子迭代计数Im,则LDPC单元130可以迭代地执行步骤S910的操作。
在闪速存储器的情况下,可能必须在预定时间内处理大量数据,以满足制造商确定的规格所要求的读取操作性能。因此,闪速存储器可能需要具有高吞吐量的LDPC解码器133。为了具有高吞吐量,LDPC解码器133可能需要在极大限制的最大迭代计数IM下具有改进的错误校正性能的LDPC解码算法。
在常规的位翻转算法的情况下,LDPC单元130可以通过将形成奇偶校验矩阵H的所有行的数量Q*N除以基本处理单元P的大小来获得值,将该值确定为最大子迭代计数Im,并执行LDPC解码操作。因此,LDPC单元130可以对与形成奇偶校验矩阵H的所有行相对应的所有变量节点重复执行子迭代操作(步骤S910),直到最大子迭代计数Im,然后更新备份校验子Sp和阈值T。
由于现有的位翻转算法在LDPC解码操作期间仅更新备份校验子Sp和阈值T几次,因此存在极大限制最大迭代计数IM下的收敛性能明显低于不限制最大迭代计数IM下的收敛性能的问题。
根据本公开的实施例的LDPC解码算法可以在执行用于对与所有行相对应的所有变量节点执行LDPC解码操作的一个迭代单元的同时,增加备份校验子Sp和阈值T更新的次数,其中,所有行通过减少与现有实施方案相比的最大子迭代计数Im来形成奇偶校验矩阵H。根据本公开的一些实施例,LDPC单元130能够在执行一个迭代单元的同时更频繁地更新备份校验子Sp和阈值T。因此,在基于最新更新信息被约束(或被限制)最大迭代计数IM的情况下,可以提高LDPC单元130的错误校正性能。在其它实施例中,基于每次要开始新的一个迭代单元的操作时的动态地改变最大子迭代计数Im,LDPC解码算法甚至可以具有更好的错误校正性能。
图10是示出图3和图4A所示的示例性LDPC解码器133的详细框图。
如以上参照图3所述,LDPC编码器131可以在半导体存储器装置200中存储通过对待编程到半导体存储器装置200中的数据执行错误校正编码操作而形成的码字。LDPC解码器133可以对从半导体存储器装置200读取的数据执行错误校正解码操作以恢复原始数据。
LDPC解码器133可以包括奇偶校验矩阵管理单元(或奇偶校验矩阵管理器)1002、通道消息管理单元(或通道消息管理器)1004、变量节点选择单元(或变量节点选择器)1056、变量节点更新单元(或变量节点更新器)1050、校验子检查单元(或校验子检查器)1052和检查节点更新单元(或检查节点更新器)1054。
奇偶校验矩阵管理单元1002可以存储关于奇偶校验矩阵H的信息。如以上参照图8所述,根据本公开的一些实施例,奇偶校验矩阵H可以包括M*N个子矩阵802,并且子矩阵802中的每一个可以是零矩阵或Q*Q循环移位的单位矩阵。奇偶校验矩阵H的每一行和每一列可以对应于Tanner图上的检查节点和变量节点,并且当变量节点和检查节点通过边缘连接时,位于奇偶校验矩阵H的每一行和每一列中的条目的值可以为1。奇偶校验矩阵管理单元1002可以向校验子检查单元1052提供关于所存储的奇偶校验矩阵H的信息。
通道消息管理单元1004可以基于从半导体存储器装置200读取的码字来获得针对变量节点的硬判定值R。如以上参照图5所述,半导体存储器装置200能够以硬判定电压VHD读取存储在存储器单元中的数据(例如,码字)。通道消息管理单元1004可以能够基于读取的码字来获得硬判定值R。通道消息管理单元1004可以向变量节点更新单元1050提供关于硬判定值R的信息。
变量节点选择单元1056可以选择与基本处理单元P一样多的变量节点。变量节点选择单元1056可以从奇偶校验矩阵H中选择达到与基本处理单元P的大小一样的列,并且选择与所选择的列相对应的变量节点。变量节点选择单元1056可以基于等式1获得当前子矩阵索引ic。变量节点选择单元1056可以对奇偶校验矩阵H的单位行中包括的处理的子矩阵的数量Np和子矩阵的数量N执行取模运算,以获得当前子矩阵索引。变量节点选择单元1056可以检测与通过将所获得的当前子矩阵索引ic乘以形成奇偶校验矩阵H的列之中的形成子矩阵802的列的数量Q而获得的值相对应的列。变量节点选择单元1056可以将检测到的列作为最小顺序的列,然后以升序顺序地选择达到基本处理单元P的大小的列。变量节点选择单元1056可以通过选择形成奇偶校验矩阵H的列来选择与所选择的列相对应的变量节点。
例如,变量节点选择单元1056可以检测与第一值(或第一索引)相对应的列,该第一值(或第一索引)通过将当前子矩阵索引ic乘以在形成奇偶校验矩阵H的列之中的形成子矩阵802的列的数量Q,并将与所检测到的列对应的变量节点确定为第一选择变量节点而获得。变量节点选择单元1056可以在形成奇偶校验矩阵H的列之中检测与通过对第一值顺序地加“1”而获得的第二及后续值(或第二及后续索引)相对应的列,并且以升序获得与所检测到的列相对应的变量节点。变量节点选择单元1056可以通过将基本处理单元P的大小与第一值相加来获得最后值以产生相加结果,然后从相加结果中减去1,从形成奇偶校验矩阵H的列中检测与最后值相对应的列,将与所检测到的列相对应的变量节点检测为最后变量节点。以这种方式,变量节点选择单元1056能够选择与基本处理单元P的大小一样多的变量节点。变量节点选择单元1056可以向变量节点更新单元1050提供关于所选择的变量节点Vi的信息。
变量节点更新单元1050可以基于所提供的硬判定值R来初始化变量节点的判定值C。而且,变量节点更新单元1050可以基于关于所选择的变量节点Vi的信息来反转所选择的变量节点Vi的判定值Ci。变量节点更新单元1050可以基于所反转的选择的变量节点Vi的判定值Ci来更新与形成奇偶校验矩阵H的所有列相对应的变量节点的判定值C。变量节点更新单元1050可以计算所选择的变量节点Vi的反转函数值Ei,并且通过将针对每个所选择的变量节点Vi计算的反转函数值Ei与阈值T进行比较来反转所选择的变量节点Vi的判定值C。稍后将参照图11描述用于计算反转函数值Ei和反转所选择的变量节点Vi的判定值C的示例性结构。变量节点更新单元1050可以向校验子检查单元1052提供关于更新的变量节点的判定值C的信息。
校验子检查单元1052可以基于关于所提供的变量节点的判定值C的信息来确定对码字执行的解码操作是否成功。当形成通过将变量节点的判定值C乘以奇偶校验矩阵H而获得的校验子S的所有条目的值为0时,校验子检查单元1052可以判定码字被成功地解码并且输出变量节点的判定值C。当形成通过将变量节点的判定值C乘以奇偶校验矩阵H而获得的校验子S的条目之中的至少一个条目的值为1时,校验子检查单元1052可以判定码字未成功地解码。
校验子检查单元1052可以如上所述参考等式3来更新处理的子矩阵的数量Np。校验子检查单元1052可以基于处理的子矩阵的更新的数量Np,检查子迭代计数和迭代计数是否分别达到最大子迭代计数Im和最大迭代计数IM。如果子迭代计数尚未达到最大子迭代计数Im,则校验子检查单元1052可以向变量节点选择单元1056提供子迭代信号SIG_SUB,使得可以通过重复子迭代单元的操作来更新达到处理单元Pc的大小的变量节点,其中子迭代单元的操作包括变量节点选择操作、变量节点更新操作和校验子检查操作。可以重复这些操作,直到最大子迭代计数Im。当子迭代计数达到最大子迭代计数Im时,校验子检查单元1052可以向检查节点更新单元1054提供触发信号SIG_TRIG、校验子S和处理的子矩阵的数量Np。
校验子检查单元1052可以检查处理的子矩阵的数量Np是否达到通过将奇偶校验矩阵H的单位行中包括的子矩阵的数量N乘以最大迭代计数IM而获得的值。当处理的子矩阵的数量Np达到通过将奇偶校验矩阵H的单位行中包括的子矩阵的数量N乘以最大迭代计数IM而获得的值时,校验子检查单元1052可以终止LDPC解码操作并确定码字是不可校正的。
检查节点更新单元1054可以基于所提供的触发信号SIG_TRIG来更新备份校验子Sp、处理单元Pc和阈值T。检查节点更新单元1054可以更新备份校验子Sp,使得形成备份校验子Sp的条目具有与形成所提供的校验子S的条目相同的值。形成备份校验子Sp的条目之中具有值1的条目的数量可以等于在更新备份校验子Sp时存在的不满足检查节点UCN的数量。
检查节点更新单元1054可以基于更新的备份校验子Sp来更新处理单元Pc(或处理单元Pc的大小)。处理单元Pc可以是通过将基本处理单元P乘以最大子迭代计数Im而获得的值,并且检查节点更新单元1054可以在每当与处理单元Pc一样多的变量节点被更新时更新备份校验子Sp、阈值T和最大子迭代计数Im。检查节点更新单元1054可以通过将更新的处理单元Pc除以基本处理单元P来获得更新的最大子迭代计数Im。
检查节点更新单元1054可以基于上面提供的更新的备份校验子Sp、处理单元Pc和处理的子矩阵的数量Np来更新阈值。稍后将参照图13描述用于更新处理单元Pc和阈值T的详细结构的示例。检查节点更新单元1054可以向变量节点更新单元1050提供关于更新的阈值T和备份校验子Sp的信息,并且向校验子检查单元1052提供关于最大子迭代计数Im的信息。
图11是示出变量节点更新单元1050的示例结构的框图。
变量节点更新单元1050可以包括反转函数评估元件(或反转函数评估器)1104、位翻转元件1106和变量节点判定值管理元件(或变量节点判定值管理器)1108。
反转函数评估元件1104可以基于关于所提供的备份校验子Sp,所选择的变量节点Vi和硬判定值Ri的信息来计算所选择的变量节点Vi的反转函数值Ei。根据本公开的一些实施例,反转函数评估元件1104可以计算所选择的变量节点Vi的反转函数值Ei,如等式4所示。
等式4
反转函数评估元件1104可以通过对先前备份校验子S’p以及与所选择的变量节点Vi相对应的奇偶校验矩阵H的列中包括的条目执行内积运算来获得第一值,通过对所选择的变量节点的判定值Ci和所选择的变量节点的硬判定值Ri执行XOR运算来获得第二值,然后对第一值和第二值求和,从而计算所选择的变量节点Vi的反转函数值Ei。先前备份校验子S’p可以表示存储在先前迭代单元中的备份校验子Sp,并且通过对先前备份校验子S’p和与所选择的变量节点Vi相对应的奇偶校验矩阵H的列中包括的条目进行内积运算而获得的第一值可以表示连接到所选择的变量节点Vi的不满足检查节点UCN的数量。反转函数评估元件1104可以向位翻转元件1106提供关于所计算的反转函数值Ei的信息。
位翻转元件1106可以基于所提供的阈值T和所选择的变量节点Vi的反转函数值Ei,对所选择的变量节点Vi执行位翻转操作。根据本公开的一些实施例,位翻转元件1106可以通过反转具有大于阈值T的反转函数值Ei的变量节点Vi的判定值Ci来执行位翻转操作。
等式5
位翻转元件1106可以通过对1和其反转函数值Ei等于或大于阈值T的变量节点的判定值Ci执行XOR运算,来对所选择的变量节点Vi执行位翻转操作。位翻转元件1106可以为反转函数值Ei小于阈值T的变量节点的判定值Ci保持现有的判定值。
根据本公开的另一实施例,位翻转元件1106可以不仅考虑反转函数值Ei而且还考虑状态变量Wi来执行位翻转操作。位翻转元件1106可以将对其的位翻转操作未执行预定的迭代计数的变量节点之中的反转函数值Ei等于或大于预定阈值的变量节点的状态变量Wi设置为1。位翻转元件1106可以其反转函数值Ei小于阈值T的变量节点Vi之中的状态变量Wi为1的变量节点的判定值Ci,如等式6所示。
等式6
位翻转元件1106可以通过对1和其反转函数值Ei大于或等于阈值T的变量节点的判定值Ci执行XOR运算,来对变量节点执行位翻转操作。位翻转元件1106可以对具有小于阈值T且大于或等于T-1的反转函数值Ei并且具有为1的状态变量Wi的变量节点执行位翻转操作。针对具有小于阈值T且大于或等于T-1的反转函数值Ei并且具有为0的状态变量Wi的变量节点,位翻转元件1106可以保持现有判定值,并且可以通过对1和状态变量Wi执行XOR运算而将状态变量Wi更新为1。针对具有小于阈值T并且小于T-1的反转函数值Ei的变量节点,位翻转元件1106可以保持现有的判定值。位翻转元件1106可以向变量节点判定值管理元件1108提供关于所选择的变量节点Vi的所反转的判定值Ci的信息。
根据本公开的实施例,位翻转元件1106可以通过在其反转函数值Ei小于阈值T的变量节点之中检测具有发生错误的可能性高的变量节点并执行位翻转操作而具有提高的错误校正能力。
变量节点判定值管理元件1108可以基于关于所选择的变量节点Vi的判定值的信息来更新与形成奇偶校验矩阵H的所有列相对应的所有变量节点的判定值C。变量节点判定值管理元件1108可以向校验子检查单元1052提供关于更新的变量节点的判定值C的信息。
根据本公开的实施例,当变量节点的更新的判定值C与更新操作之前的变量节点的判定值C不同时,变量节点判定值管理元件1108可以将非更新标志NF设置为0。根据本公开的另一实施例,当状态变量Wi从值“0”更新为值“1”时,即使反转函数Ei小于阈值T,并且因此没有对变量节点的判定值C执行位翻转操作,变量节点判定值管理元件1108也可以将非更新标志NF设置为0。非更新标志NF的初始值可以是1。变量节点判定值管理元件1108可以在每当对与奇偶校验矩阵H的列相对应的所有变量节点执行LDPC解码操作的一个迭代单元时,检查非更新标志NF的值。当非更新标志NF的值为1时,变量节点判定值管理元件1108可以终止LDPC解码操作。
根据本公开的实施例,在执行变量节点更新操作之后,为1的非更新标志NF的值可以指示根据更新操作未改变的变量节点的判定值。因此,节点判定值管理元件1108可以终止LDPC解码操作。
图12是示出校验子检查单元1052的示例结构的框图。
校验子检查单元1052可以包括校验子计算元件(或校验子计算器)1202、处理的子矩阵管理元件(或处理的子矩阵管理器)1204、以及迭代计数检查元件(或迭代计数检查器)1206。
校验子计算元件1202可以基于提供的关于奇偶校验矩阵H的信息和如等式7所示的变量节点的判定值C来计算校验子S。
等式7
S=H·C
通过将由M*Q行和N*Q列组成的奇偶校验矩阵H乘以由N*Q行和一列组成的变量节点的判定值C,校验子计算元件1202可以计算由M*Q行和一列组成校验子S。校验子计算元件1202可以通过基于所计算的校验子S获得校验子绝对值|S|来检查形成校验子S的所有条目是否具有值0。校验子绝对值可基于等式8计算。
等式8
|S|=∑iSi
校验子计算元件1202可以通过将形成校验子S的所有条目Si相加来计算校验子绝对值|S|。当校验子绝对值|S|的值为0时,校验子计算元件1202可以确定码字被成功解码并且输出变量节点的判定值C。当校验子绝对值|S|不为0时,校验子计算元件1202可以向检查节点更新单元1054提供关于校验子S的信息,并且向处理的子矩阵管理元件1204提供失败信号SIG_FAIL。
处理的子矩阵管理元件1204可以基于提供的失败信号SIG_FAIL来更新处理的变量节点的数量Np。如以上参考等式3所描述的,处理的子矩阵管理元件1204可通过将有理数z加到处理的子矩阵的数量Np来更新处理的矩阵的数量Np,其中该有理数z是基本处理单元P的大小除以每个子矩阵Q中包括的变量节点的数量。换言之,每当变量节点选择单元1056选择达到P的变量节点Vi时,其中P是基本处理单元的大小,处理的子矩阵管理元件1204可以增加处理的变量节点的数量Np,并且变量节点更新单元1050更新选择的变量节点Vi的判定值Ci。处理的子矩阵管理元件1204可以将关于处理的变量节点的更新数量Np的信息提供给迭代计数检查单元1206和检查节点更新单元1054。
迭代计数检查元件1206可以基于提供的关于处理的子矩阵的数量Np的信息来检查当前迭代计数是否已经达到最大迭代计数IM。当处理的子矩阵的数量Np达到通过将最大迭代计数IM乘以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值时,迭代计数检查元件1206可以终止LDPC解码,并且输出解码失败。如果处理的子矩阵的数量Np尚未达到通过将最大迭代计数IM乘以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值,则迭代计数检查元件1206可以将子迭代索引k增加1。
在一些实施例中,迭代计数检查元件1206可以检查子迭代索引k是否已经达到最大子迭代计数Im。如果子迭代索引k尚未达到最大子迭代计数Im,则迭代计数检查元件1206可以向变量节点选择单元1056提供子迭代信号SIG_SUB,并且通过重复一个子迭代单元的操作达到最大子迭代计数将变量节点更新达到处理单元的大小,其中一个子迭代单元的操作包括变量节点选择操作、变量节点更新操作和校验子检查操作。当子迭代索引k达到最大子迭代计数Im时,迭代计数检查元件1206可以向检查节点更新单元1054提供触发信号SIG_TRIG以更新备份校验子Sp、处理单元Pc和阈值T。
根据本公开的一些实施例,最大子迭代计数Im可以是通过将处理单元Pc除以基本处理单元P而获得的值(例如,处理单元的大小除以基本处理单元的大小Pc/P)。因此,处理单元Pc的大小越小,迭代计数检查元件1206可以越频繁地执行控制以更新备份校验子Sp、处理单元Pc和阈值T,从而提高错误校正性能。
图13是示出检查节点更新单元1054的示例结构的框图。
检查节点更新单元1054可以包括校验子备份元件(或校验子备份)1302、处理单元管理元件(或处理单元管理器)1304和阈值管理元件(或阈值管理器)1306。
校验子备份元件1302可以基于提供的关于校验子S的信息来更新备份校验子Sp。校验子备份元件1302可以更新备份校验子Sp,使得形成备份校验子Sp的条目具有与形成校验子S的条目相同的值。形成备份校验子Sp的条目中具有值1的条目的数量可以等于在更新备份校验子Sp时存在的不满足检查节点UCN的数量。校验子备份元件1302可以将关于备份校验子Sp的信息提供给处理单元管理元件1304和阈值管理元件1306。
处理单元管理单元1304可以获得确定何时更新阈值T和备份校验子Sp的处理单元Pc。如以上参照图9所述,基本处理单元P可以是能够并行执行LPDC解码操作的变量节点的数量。处理单元Pc可以是通过将基本处理单元P乘以最大子迭代计数Im而获得的值,并且每当通过迭代地执行一个子迭代单元的操作来更新变量节点的判定值C时,处理单元管理单元1304可以更新处理单元Pc,直到达到先前处理单元Pc’的大小,其中一个子迭代单元的操作包括变量节点选择操作、位翻转操作和校验子检查操作。处理单元管理元件1304可以通过将处理单元Pc除以基本处理单元P来获得一个值,并将所获得的值确定为最大子迭代计数Im。
处理单元管理元件1304可以基于提供的关于处理的变量节点和备份校验子Sp的数量Np的信息来更新处理单元Pc。先前处理单元Pc’指示先前子迭代单元中的处理单元Pc。根据本公开的实施例,处理单元管理元件1304可以基于等式9中所示的处理的变量节点的数量Np的范围来更新处理单元Pc。
等式9
当处理的变量节点的数量Np小于奇偶校验矩阵H的单位行中包括的子矩阵的数量N的两倍时,处理单元管理元件1304可以将处理单元Pc确定为形成奇偶校验矩阵H的所有变量节点的数量n。
如上所述,形成奇偶校验矩阵H的所有变量节点的数量n可以与通过将形成奇偶校验矩阵H的单位行的子矩阵的数量N乘以与形成子矩阵802的列相对应的变量节点的数量Q而获得的值相同。如果处理的变量节点的数量Np等于或大于奇偶校验矩阵H的单位行中包括的子矩阵的数量Np的两倍,则处理单元管理元件1304可以将处理单元Pc确定为通过将形成子矩阵802的变量节点的数量Q加倍而获得的值。处理单元管理元件1304可以向阈值管理元件1306提供关于更新的处理单元Pc的信息。
根据本公开的实施例,如果处理的变量节点的数量Np具有较小的值,则处理单元管理元件1304可以增加处理单元Pc的大小。相反,如果处理的变量节点的数量Np具有较大的值,则处理单元管理元件1304可以减小处理单元Pc的大小。例如,处理单元管理元件1304可以减少在LDPC解码操作的初始阶段更新备份校验子Sp和阈值T的次数,并且当处理的变量节点的数量Np达到预定阈值时,处理单元管理元件1304可以通过增加备份校验子Sp和阈值T被更新次数来提高错误校正性能。
阈值管理元件1306可以基于提供的关于处理单元Pc的信息、处理的变量节点Np的数量以及备份校验子Sp来更新阈值T。根据本公开的实施例,阈值管理元件1306可以基于备份校验子绝对值|Sp|获得阈值T。可以按等式10所示计算备份校验子绝对值|Sp|。
等式10
|Sp|=∑iSpi
阈值管理元件1306可以通过将形成备份校验子Sp的条目Spi的所有值相加来获得备份校验子绝对值|Sp|。备份校验子绝对值|Sp|可以等于不满足检查节点UCN的数量。阈值管理元件1306可以基于将备份校验子绝对值|Sp|与多个阈值进行比较来确定阈值T,如等式11所示。
等式11
阈值管理元件1306可以基于关于奇偶校验矩阵H的信息来获得最大变量节点度λmax。最大变量节点度λmax可以是连接到变量节点的检查节点的数量,该检查节点(a)从与奇偶校验矩阵H的列相对应的变量节点之中选择,并且(b)连接到最大数量的检查节点。阈值管理元件1306可以针对每一列测量包括在奇偶校验矩阵H的每一列中的条目之中具有值1的条目的数量,并且将包括最大值为1的条目的列中值为1的条目的数量确定为最大变量节点度λmax。
根据本公开的实施例,并且如等式11所示,当备份校验子绝对值|Sp|小于第一阈值T1时,阈值管理元件1306可以将比最大变量节点度λmax小3的值确定为阈值T。当备份校验子绝对值|Sp|大于或等于第一阈值T1并且小于第二阈值T2时,阈值管理元件1306可以将比最大变量节点度λmax小2的值确定为阈值T。当备份校验子绝对值|Sp|大于或等于第二阈值T2并且小于第三阈值T3时,阈值管理元件1306可以将比最大变量节点度λmax小1的值确定为阈值T。当备份校验子绝对值|Sp|大于或等于第三阈值T3时,阈值管理元件1306可以将最大变量节点度λmax确定为阈值T。
根据本公开的实施例,当不满足检查节点UCN的数量(以及等效地,备份校验子绝对值|Sp|)较大时,阈值管理元件1306可以增大阈值T的大小,并且当备份校验子绝对值|Sp|变小时,阈值管理元件1306可以减小阈值T的大小。基于当前变量节点的判定值C与成功解码的判定值之间的差,阈值管理元件1306可以通过对较少数量的变量节点执行位翻转操作来提高错误校正性能。
图14是描述根据本公开的实施例的在半导体系统10中执行的示例LDPC解码操作的流程图。
在步骤S1302中,LDPC解码器133可以执行初始化操作。通道消息管理单元1004可以基于从半导体存储器装置200读取的码字来获得针对变量节点的硬判定值R,并且向变量节点更新单元1050提供硬判定值R。变量节点更新单元1050可以利用提供的硬判定值R来初始化变量节点的判定值。而且,处理单元管理元件1304可以利用基本处理单元P的大小来初始化处理单元Pc的大小。如以上参照图9所述,基本处理单元P的大小可以等于能够并行执行LPDC解码操作的变量节点的数量。此外,处理的子矩阵管理元件1204可以将处理的子矩阵的数量Np初始化为0,并且变量节点判定值管理元件1108可以将非更新标志NF初始化为1。
在步骤S1304中,校验子计算元件1202可以基于在步骤S1302中变量节点的初始化的判定值C和奇偶校验矩阵H来计算校验子S。校验子计算元件1202可以通过将奇偶校验矩阵H乘以变量节点的初始化的判定值C来计算校验子S,如等式7。当计算的校验子S中包括的所有条目的值为0时(在步骤S1304处为“是”),校验子计算元件1202可以终止LDPC解码操作并输出变量节点的初始化的判定值C。
在步骤S1306中,当计算的校验子S中包括的条目之中的一个或多个条目具有值1时(在步骤S1304处为“否”),处理的子矩阵管理元件1204可以确定是否对与奇偶校验矩阵H的一列相对应的所有变量节点执行LDPC解码操作的一次迭代。根据本公开的实施例,当通过将通过将处理的子矩阵的数量Np除以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值输入到高斯符号而从高斯符号获得的第一结果值输出,大于通过将通过将处理的子矩阵的数量Np与处理单元Pc之间的差除以奇偶校验矩阵H的单位行中包括的子矩阵的数量N而获得的值输入到高斯符号而从高斯符号输出的第二结果值时,处理的子矩阵管理元件1204可以确定执行了一个迭代单元。
在步骤S1306中,当处理的子矩阵管理元件1204确定执行了一个迭代单元时(在步骤S1306处为“是”),处理的子矩阵管理元件1204可以检查非更新标志NF是否具有值1。例如,当在步骤S1324中更新的变量节点的判定值C与更新操作之前的变量节点的判定值C不同时,处理的子矩阵管理元件1204可以将非更新标志NF设置为0。当非更新标志NF的值是1时(在步骤S1308处为“是”),处理的子矩阵管理元件1204可以终止LDPC解码操作。
根据本公开的实施例,如果即使在执行了步骤S1324中的变量节点的更新操作之后非更新标志NF的值为1,则这可以指示在更新操作之后变量节点的判定值C没有改变。因此,处理的子矩阵管理元件1204可以终止LDPC解码操作。如果非更新标志NF的值为0(在步骤S1308处为“否”),则处理的子矩阵管理元件1204可以在步骤S1310中将非更新标志NF的值更新为1。
在步骤S1312中,校验子备份元件1302可以将在步骤S1304中计算的校验子S作为备份校验子Sp单独地存储。例如,在基于备份校验子Sp而不是针对每个子迭代更新的校验子S执行一次迭代的同时,反转函数评估元件1104可以计算选择的变量节点Vi的反转函数值Ei。而且,如上所述,备份校验子Sp可以指示不满足检查节点UCN的数量。
在步骤S1314中,处理单元管理元件1304可以基于备份校验子Sp、处理的变量节点的数量Np和先前的处理单元Pc来获得处理单元Pc。处理单元管理元件1304可以通过将处理单元Pc除以基本处理单元P并将所获得的值确定为最大子迭代计数Im来获得一个值。
根据本公开的实施例,处理单元管理元件1304可以基于处理的变量节点的数量Np来确定处理单元Pc,如等式7所示。当处理的变量节点的数量Np小于奇偶校验矩阵H的单位行中包括的子矩阵的数量N的两倍时,处理单元管理元件1304可以将处理单元Pc确定为形成奇偶校验矩阵H的所有变量节点的数量n。如上所述,形成奇偶校验矩阵H的所有变量节点的数量n可以与通过将形成奇偶校验矩阵H的单位行的子矩阵的数量N乘以形成子矩阵802的变量节点的数量Q而获得的值相同。当处理的变量节点的数量Np等于或大于奇偶校验矩阵H的单位行中包括的子矩阵的数量N的两倍时,处理单元管理元件1304可以通过将形成子矩阵802的变量节点的数量Q加倍来获得值,并将所获得的值确定为处理单元Pc。
在步骤S1316中,阈值管理元件1306可以基于处理单元Pc、处理的变量节点的数量Np和备份校验子Sp来获得阈值T。根据本公开的实施例,阈值管理元件1306可以基于备份校验子绝对值|Sp|来确定阈值T,如等式11所示。当备份校验子绝对值|Sp|小于第一阈值T1时,阈值管理元件1306可以将比最大变量节点度λmax小3的值确定为阈值T。如上所述,最大变量节点度λmax可以是连接到与奇偶校验矩阵H的列相对应的变量节点之中、连接到最大数量的检查节点的变量节点的检查节点的数量。当备份校验子绝对值|Sp|等于或大于第一阈值T1并且小于第二阈值T2时,阈值管理元件1306可以将比最大变量节点度λmax小2的值确定为阈值T。当备份校验子绝对值|Sp|等于或大于第二阈值T2并且小于第三阈值T3时,阈值管理元件1306可以将比最大变量节点度λmax小1的值确定为阈值T。当备份校验子绝对值|Sp|等于或大于第三阈值T3时,阈值管理元件1306可以将最大变量节点度λmax确定为阈值T。
在步骤S1318中,LPDC解码器133可执行包括步骤S1320的变量节点选择操作、步骤S1322的反转函数生成操作、步骤S1324的位翻转操作、步骤S1326的校验子检查操作、步骤S1328的更新处理的子矩阵的数量Np的操作以及步骤S1330的最大迭代计数的操作的子迭代单元。在步骤S1328中,子迭代计数k的初始值可以具有值0。
在步骤S1320中,变量节点选择单元1056可以基于基本处理单元P来选择与奇偶校验矩阵H的列相对应的变量节点。变量节点选择单元1056可以基于等式1获得当前子矩阵索引ic。变量节点选择单元1056可以通过对奇偶校验矩阵H的单位行中包括的处理的子矩阵的数量Np和子矩阵的数量N执行取模运算来获得当前子矩阵索引ic。
变量节点选择单元1056可通过将当前子矩阵索引ic乘以形成子矩阵802的列数Q来获得值,并将所获得的值确定为选择的变量节点的第一索引,并以升序顺序地计算后续索引。变量节点选择单元1056可以通过将形成子矩阵802的列数Q乘以当前子矩阵索引ic来获得第一值,通过将基本处理单元P添加到第一值来获得第二值以产生将相加结果并从相加结果中减去1,将所获得的第二值确定为最后一个索引,并选择与基本处理单元P一样多的变量节点。
在步骤S1322中,反转函数估计元件1104可以基于备份校验子Sp、选择的变量节点的判定值Ci和所选择的变量节点Vi的硬判定值Ri来计算选择的变量节点Vi的反转函数值Ei。根据本公开的实施例,反转函数评估元件1104可以计算选择的变量节点Vi的反转函数值Ei,如以上等式4所示。反转函数评估元件1104可以通过对先前备份校验子S’p以及与选择的变量节点Vi相对应的奇偶校验矩阵H的列中包括的条目执行内积运算来获得第一值,通过对选择的变量节点的判定值Ci和选择的变量节点的硬判定值Ri执行XOR运算来获得第二值,然后将第一值和第二值相加从而计算选择的变量节点Vi的反转函数值Ei。
在步骤S1324中,位翻转元件1106可以基于选择变量节点Vi的阈值T和反转函数值Ei来执行位翻转操作。根据本公开的实施例,位翻转元件1106可以通过反转具有大于阈值T的反转函数值Ei的变量节点Vi的判定值Ci来执行位翻转操作,如等式5所示。在另一示例中,位翻转元件1106可以通过对1和具有等于或大于阈值T的反转函数值Ei的变量节点的判定值Ci执行XOR运算,来对变量节点执行位翻转操作。在又一示例中,位翻转元件1106可以为具有小于阈值T的反转函数值Ei的变量节点的判定值Ci保持现有的判定值。
根据本公开的另一实施例,位翻转元件1106可以不仅考虑反转函数值Ei而且还考虑状态变量Wi来执行位翻转操作,如等式6所示。位翻转元件1106可以将针对预定数量的迭代单元未执行位翻转操作的变量节点之中的反转函数值Ei等于或大于预定阈值的变量节点的状态变量Wi设置为1。位翻转元件1106可以反转具有小于阈值T的反转函数值Ei的变量节点之中的状态变量Wi为1的变量节点的判定值Ci,如等式12所示。
位翻转元件1106可以通过对1和其反转函数值Ei大于或等于阈值T的变量节点的判定值Ci进行XOR运算,来对变量节点执行位翻转操作。位翻转元件1106可以对具有小于阈值T且大于或等于T-1的反转函数值Ei并且具有为1的状态变量Wi的变量节点执行位翻转操作。针对具有小于阈值T且大于或等于T-1的反转函数值Ei并且具有为0的状态变量Wi的变量节点,位翻转元件1106可以保持变量现有的判定值,并且可以通过对1和状态变量Wi执行XOR运算而将状态变量Wi更新为1。针对具有小于阈值T并且小于T-1的反转函数值Ei的变量节点,位翻转元件1106可以保持现有的判定值。
在步骤S1324中,变量节点判定值管理元件1108可以基于选择的变量节点Vi的反转的判定值Ci来更新所有变量节点的判定值C。变量节点判定值管理元件1108可以向校验子检查单元1052提供关于所有变量节点的更新的判定值C的信息。
根据本公开的实施例,当变量节点的更新的判定值C与更新操作之前的变量节点的判定值C不同时,变量节点判定值管理元件1108可以将非更新标志NF设置为0。在步骤S1306中,针对每一个迭代单元检查非更新标志NF的值,并且当非更新标志NF的值是1时,变量节点判定值管理元件1108可以终止LDPC解码操作。根据本公开的实施例,当非更新标志NF的值为1时,即使在执行了变量节点更新操作之后,也可能表示在更新操作之后变量节点的判定值没有改变。因此,位翻转元件1106可以终止LDPC解码操作。
在步骤S1326中,校验子计算元件1202可以通过将奇偶校验矩阵H乘以更新的变量节点的判定值C来更新校验子S,如等式7所示。校验子计算元件1202可以通过计算校验子绝对值|S|来确定校验子S的所有条目是否具有值0,如等式8所示。当校验子绝对值|S|等于0时(在步骤S1326处为“是”),校验子计算元件1202可以确定解码操作成功并且输出变量节点的更新的判定值C。
在步骤S1328中,当校验子绝对值|S|不为0时(在步骤S1326处为“否”),处理单元管理元件1304可以基于以上等式9来更新处理的子矩阵的数量Np。处理单元管理元件1304可以将处理的子矩阵的数量Np更新为通过将有理数z添加到处理的子矩阵的数量Np而获得的值,其中该有理数z是基本处理单元P的大小除以每个子矩阵Q中包括的变量节点的数量。处理单元管理元件1304可以向迭代计数检查元件1206提供关于处理的子矩阵的数量Np的信息。
在步骤S1330中,基于处理的子矩阵的数量Np来检查当前迭代计数是否已经达到最大迭代计数IM。如果处理的子矩阵的数量Np已经达到通过将最大迭代计数IM乘以奇偶校验矩阵800的单位行中包括的子矩阵的列数N而获得的值(在步骤S1330处为“是”),则迭代计数检查元件1206可以确定当前迭代计数已经达到最大迭代计数IM,终止LDPC解码操作,并输出解码失败。然而,如果处理的子矩阵的数量Np尚未达到通过将最大迭代计数IM乘以奇偶校验矩阵800的单位行中包括的子矩阵的列数N而获得的值(在步骤S1330处为“否”),则迭代计数检查元件1206可以在步骤S1332中将子迭代索引k增加1。
在步骤S1332中,迭代计数检查元件1206可以检查子迭代索引k是否已经达到最大子迭代计数Im。如果子迭代索引k已经达到最大子迭代计数Im,则迭代计数检查元素1206可以返回到步骤S1306以更新备份校验子Sp、处理单元Pc和阈值T。根据本公开的实施例,最大子迭代计数Im可以是通过将处理单元Pc除以基本处理单元P而获得的值。因此,随着处理单元Pc的大小变小,迭代计数检查元件1206可以执行控制以更频繁地更新更新备份校验子Sp、处理单元Pc和阈值T,以提高错误校正性能。
图15是示出根据本公开的实施例的LDPC解码器133的示例性操作仿真结果的图。
图示出了基于根据现有实施方案的具有最大迭代计数为7的LDPC解码器DecoderBF7以及根据本公开的具有最大迭代计数为7的LDPC解码器DecoderProposed_BF7的原始位错误率(RBER)的块错误率(CER)。具有最大迭代计数为7的LDPC解码器DecoderProposed_BF7具有比根据现有技术的具有最大迭代计数为7的LDPC解码器DecoderBF7更低的块错误率(CER)。因此,在最大迭代计数相同的情况下,与LDPC解码器DecoderBF7的错误校正性能相比,LDPC解码器DecoderProposed_BF7具有改进的错误校正性能。
根据本公开的实施例,可以快速且准确地对存储在半导体存储器装置的存储器单元中的数据进行解码。
虽然已经参考本公开的某些示例性实施例示出并描述了本公开,但是本领域技术人员将理解的是,在不脱离由所附权利要求及其等同物限定的本公开的精神和范围的情况下,可以在形式和细节上进行各种改变。因此,本公开的范围不应限于上述的示例性实施例,而是应当由所附权利要求及其等同方案确定。
在上述实施例中,可选择性地执行所有步骤或者可省略部分步骤。在每个实施例中,不一定按照所描述的顺序执行,并且可重新布置步骤。在本说明书和附图中公开的实施例仅是为了便于理解本公开的示例;而本公开不限于此。也就是说,对于本领域技术人员显而易见的是,可基于本公开的技术范围进行各种修改。
同时,已经在附图和说明书中描述了本公开的示例性实施例。尽管本文使用了特定术语,但这些术语仅用于解释本公开的实施例。因此,本公开不限于上述实施例,在本公开的精神和范围内可以进行许多变化。对于本领域技术人员显而易见的是,除了本文公开的实施例之外,还可以基于本公开的范围进行各种修改。
Claims (24)
1.一种半导体存储器系统,包括:
半导体存储器装置,存储包括多个子矩阵的码字;以及
低密度奇偶校验解码器,即LDPC解码器,基于奇偶校验矩阵对所述码字进行解码,以生成解码的码字,
其中所述LDPC解码器包括:
选择器,选择共享所述奇偶校验矩阵的相同层索引的所述多个子矩阵中的一个或多个子矩阵,并基于阈值和连接到选择的变量节点的不满足检查节点即UCN的数量,选择与所选择的一个或多个子矩阵中包括的列相对应的变量节点;
变量节点更新器,通过反转所选择的变量节点的判定值来更新与所述奇偶校验矩阵中包括的所有列相对应的变量节点的判定值,其中反转判定值包括将零值翻转为一值或将一值翻转为零值;
校验子检查器,通过将所述变量节点的更新的判定值乘以所述奇偶校验矩阵来确定是否已经成功执行了对所述码字的解码;以及
检查节点更新器,在确定已经执行了Im次子迭代操作后,更新备份校验子、阈值和处理单元的大小,
其中所述处理单元的大小为P×Im,
其中Im是最大子迭代计数,
其中P是能够并行执行LDPC解码操作的所述变量节点的数量,并且
其中所述子迭代操作包括:选择一个或多个子矩阵;更新所述变量节点的判定值;并且确定是否成功执行了对所述码字的解码。
2.根据权利要求1所述的半导体存储器系统,其中,对与形成所述奇偶校验矩阵的所有列相对应的变量节点执行所述子迭代操作作为一次迭代操作,并且其中所述LDPC解码器执行IM次所述一次迭代操作或直到所述码字被成功解码为止,并且其中IM是最大迭代计数。
3.根据权利要求1所述的半导体存储器系统,其中所述LDPC解码器进一步包括:
奇偶校验矩阵管理器,存储关于所述奇偶校验矩阵的信息;以及
通道消息管理器,基于所述码字生成硬判定值。
4.根据权利要求1所述的半导体存储器系统,其中所述变量节点更新器包括:
反转函数评估器,基于所述备份校验子和所选择的变量节点的硬判定值来生成反转函数;
位翻转元件,基于所述反转函数和所述阈值,反转所选择的变量节点的判定值;以及
变量节点判定值管理器,基于所述变量节点的反转的判定值,更新与形成所述奇偶校验矩阵的所有列相对应的所述变量节点的判定值。
5.根据权利要求2所述的半导体存储器系统,其中所述校验子检查单元包括:
校验子计算器,通过将所述奇偶校验矩阵乘以所述变量节点的判定值并确定所述解码操作是否成功执行来计算校验子;
处理的子矩阵管理器,通过将先前处理的子矩阵的数量和作为能够并行执行LDPC解码操作的所述变量节点的数量(P)的有理数(z)相加,除以每个所述子矩阵中包括的所述变量节点的数量,来更新处理的变量节点的数量;以及
迭代计数器,在确定(a)已执行Im次所述子迭代操作,并且(b)已执行IM次所述一次迭代操作时更新所述备份校验子、所述阈值和所述处理单元的大小,从而终止所述解码操作。
6.根据权利要求1所述的半导体存储器系统,其中所述检查节点更新单元包括:
校验子备份元件,在确定已经执行了Im次所述子迭代操作后更新备份校验子;
处理单元管理器,基于更新的备份校验子来更新所述处理单元的大小;以及
阈值管理器,基于所述更新的备份校验子、所述奇偶校验矩阵、所述处理单元的更新的大小和处理的变量节点的数量来更新所述阈值,使得所述阈值与所述备份校验子的绝对值成比例。
7.根据权利要求1所述的半导体存储器系统,其中所述变量节点更新单元通过使用所述奇偶校验矩阵的单位行中包括的所述子矩阵的数量对处理的子矩阵的数量执行取模运算来获得当前子矩阵索引。
8.根据权利要求4所述的半导体存储器系统,其中所述反转函数评估元件通过使以下相加来生成所述反转函数:
连接到所选择的变量节点的不满足检查节点的数量,以及
通过对所选择的变量节点的判定值和硬判定值执行XOR运算而获得的值。
9.根据权利要求4所述的半导体存储器系统,其中所述位翻转元件在确定所选择的变量节点的反转函数大于或等于所述阈值时反转所述判定值。
10.根据权利要求4所述的半导体存储器系统,其中所述位翻转元件在确定所选择的变量节点的反转函数小于所述阈值、所选择的变量节点的反转函数与所述阈值之差小于预定阈值并且反转所述判定值尚未执行预定迭代计数时反转所述判定值。
11.根据权利要求4所述的半导体存储器系统,其中所述变量节点判定值管理器在确定所述变量节点的更新的判定值等于在执行所述更新之前的所述变量节点的判定值时,基于非更新标志来终止所述解码操作。
12.根据权利要求6所述的半导体存储器系统,其中所述处理单元管理器在确定处理的变量节点的数量等于预定阈值时减小Im。
13.一种操作半导体存储器系统的方法,所述半导体存储器系统存储包括多个子矩阵的码字,所述方法包括:
选择共享奇偶校验矩阵的相同层索引的所述多个子矩阵中的一个或多个子矩阵,并且基于阈值和连接到选择的变量节点的不满足检查节点,即UCN的数量,选择与所选择的一个或多个子矩阵中包括的列相对应的变量节点;
通过反转所选择的变量节点的判定值来更新与所述奇偶校验矩阵中包括的所有列相对应的变量节点的判定值,其中反转判定值包括将零值翻转为一值或将一值翻转为零值;
通过将所述变量节点的更新的判定值乘以所述奇偶校验矩阵来确定对所述码字的解码是否已经成功地执行;并且
在确定已经执行了Im次子迭代操作后,更新备份校验子、所述阈值和处理单元的大小,
其中所述处理单元的大小为P×Im,
其中Im是最大子迭代计数,
其中P是能够并行执行LDPC解码操作的所述变量节点的数量,并且
其中所述子迭代操作包括:选择所述一个或多个子矩阵;更新所述判定值;并且确定对所述码字的解码是否已经成功地执行。
14.根据权利要求13所述的方法,其中对与形成所述奇偶校验矩阵的所有列相对应的变量节点执行所述子迭代操作作为一次迭代操作,并且其中执行IM次所述一次迭代操作或直到所述码字被成功解码为止,其中IM是最大迭代计数。
15.根据权利要求13所述的方法,进一步包括:
存储关于所述奇偶校验矩阵的信息;并且
基于所述码字生成硬判定值。
16.根据权利要求13所述的方法,其中更新所述判定值包括:
基于所述备份校验子和所选择的变量节点的硬判定值来生成反转函数;
基于所述反转函数和所述阈值,反转所选择的变量节点的判定值;并且
基于所述变量节点的反转的判定值,更新与形成所述奇偶校验矩阵的所有列相对应的所述变量节点的判定值。
17.根据权利要求14所述的方法,其中确定所述码字是否被成功解码的所述校验子检查操作包括:
通过将所述奇偶校验矩阵乘以所述变量节点的判定值并确定所述解码操作是否成功执行来计算校验子;
通过将先前处理的子矩阵的数量和作为能够并行执行LDPC解码操作的所述变量节点的数量(P)的有理数(z)相加,除以每个所述子矩阵中包括的所述变量节点的数量,来更新处理的变量节点的数量;并且
在确定(a)已执行Im次所述子迭代操作,并且(b)执行IM次所述一次迭代操作时更新所述备份校验子、所述阈值和所述处理单元的大小,从而终止所述解码操作。
18.根据权利要求13所述的方法,其中更新所述备份校验子、所述阈值和所述处理单元的大小包括:
在确定已经执行了Im次所述子迭代操作后更新备份校验子;
基于更新的备份校验子来更新所述处理单元的大小;并且
基于所述更新的备份校验子、所述奇偶校验矩阵、所述处理单元的更新的大小和处理的变量节点的数量来更新所述阈值,使得所述阈值与所述备份校验子的绝对值成比例。
19.根据权利要求13所述的方法,其中选择共享所述奇偶校验矩阵的相同层索引的所述子矩阵包括:
通过使用所述奇偶校验矩阵的单位行中包括的所述子矩阵的数量对处理的子矩阵的数量执行取模运算来获得当前子矩阵索引。
20.根据权利要求16所述的方法,其中生成所述反转函数包括使以下相加:
连接到所选择的变量节点的不满足检查节点的数量,以及
通过对所选择的变量节点的判定值和硬判定值执行XOR运算而获得的值。
21.根据权利要求16所述的方法,其中,基于所选择的变量节点的反转函数等于或大于所述阈值反转所述判定值。
22.根据权利要求16所述的方法,其中,基于所选择的变量节点的反转函数小于所述阈值、所选择的变量节点的反转函数与所述阈值之差小于预定阈值、并且反转所述判定值尚未执行预定迭代计数来反转所述判定值。
23.根据权利要求16所述的方法,其中所述变量节点的判定值的更新包括:
在执行所述更新操作之前,基于非更新标志和确定所述变量节点更新的判定值等于所述变量节点的判定值来终止所述解码操作。
24.根据权利要求18所述的方法,其中所述处理单元的大小的更新包括:
基于确定处理的变量节点的数量等于预定阈值来减小Im。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020180142690A KR102643457B1 (ko) | 2018-11-19 | 2018-11-19 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
KR10-2018-0142690 | 2018-11-19 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111200440A true CN111200440A (zh) | 2020-05-26 |
CN111200440B CN111200440B (zh) | 2023-04-07 |
Family
ID=70726808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911060829.XA Active CN111200440B (zh) | 2018-11-19 | 2019-11-01 | Ldpc解码器、半导体存储器系统及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11005499B2 (zh) |
KR (1) | KR102643457B1 (zh) |
CN (1) | CN111200440B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223583A (zh) * | 2021-05-14 | 2021-08-06 | 深圳市硅格半导体有限公司 | NAND Flash坏块内数据重读的方法、电子设备及存储介质 |
CN114911740A (zh) * | 2022-06-02 | 2022-08-16 | 中国长城科技集团股份有限公司 | PCIe拆分方法、装置、电子设备及可读存储介质 |
TWI838242B (zh) * | 2023-04-14 | 2024-04-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其讀取電壓的搜尋方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10944429B1 (en) * | 2020-01-02 | 2021-03-09 | Silicon Motion, Inc. | Data accessing method using data protection with aid of parity check matrix having partial sequential information, and associated apparatus |
CN111917420B (zh) * | 2020-08-25 | 2023-07-04 | 广东省新一代通信与网络创新研究院 | 一种ldpc自适应译码方法及ldpc自适应译码器 |
CN111935176B (zh) * | 2020-09-18 | 2020-12-29 | 南京赛宁信息技术有限公司 | 网络安全ctf竞赛的防作弊系统与方法 |
US11456757B2 (en) | 2020-12-16 | 2022-09-27 | SK Hynix Inc. | Oscillation detection and mitigation in bit-flipping decoders |
US11621727B2 (en) * | 2021-06-04 | 2023-04-04 | SK Hynix Inc. | Decoding systems and methods for local reinforcement |
US11929762B2 (en) | 2021-11-24 | 2024-03-12 | Samsung Electronics Co., Ltd. | Low density parity check decoder and storage device |
TWI818490B (zh) * | 2022-03-29 | 2023-10-11 | 睿寬智能科技有限公司 | 低密度奇偶校驗碼的重組式解碼法與裝置 |
TWI829252B (zh) * | 2022-07-20 | 2024-01-11 | 慧榮科技股份有限公司 | 低密度奇偶校檢碼的解碼方法及電腦程式產品及裝置 |
TWI836558B (zh) * | 2022-08-18 | 2024-03-21 | 慧榮科技股份有限公司 | 記憶體控制器及解碼管線之資料控制方法 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050204271A1 (en) * | 2003-12-03 | 2005-09-15 | Infineon Technologies Ag | Method for decoding a low-density parity check (LDPC) codeword |
EP1643653A1 (en) * | 2004-09-29 | 2006-04-05 | Lucent Technologies Inc. | Iterative decoding of low-density parity-check (LDPC) codes |
CN1783729A (zh) * | 2004-11-23 | 2006-06-07 | 三星电子株式会社 | 用联合节点处理来解码低密度奇偶校验码的方法和设备 |
US20100287440A1 (en) * | 2009-05-07 | 2010-11-11 | Ramot At Tel Aviv University Ltd. | Matrix structure for block encoding |
US20110029756A1 (en) * | 2009-07-28 | 2011-02-03 | Eric Biscondi | Method and System for Decoding Low Density Parity Check Codes |
US20110320902A1 (en) * | 2010-06-29 | 2011-12-29 | Lsi Corporation | Conditional skip-layer decoding |
US20120005551A1 (en) * | 2010-06-30 | 2012-01-05 | Lsi Corporation | Breaking trapping sets using targeted bit adjustment |
US20120185744A1 (en) * | 2011-01-14 | 2012-07-19 | Nedeljko Varnica | Ldpc multi-decoder architectures |
US8347195B1 (en) * | 2009-01-22 | 2013-01-01 | Marvell International Ltd. | Systems and methods for near-codeword detection and correction on the fly |
US20140068367A1 (en) * | 2012-09-04 | 2014-03-06 | Lsi Corporation | LDPC Decoder Trapping Set Identification |
CN103916134A (zh) * | 2014-03-24 | 2014-07-09 | 清华大学 | 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器 |
US8966339B1 (en) * | 2012-12-18 | 2015-02-24 | Western Digital Technologies, Inc. | Decoder supporting multiple code rates and code lengths for data storage systems |
US20150082126A1 (en) * | 2013-09-19 | 2015-03-19 | Fusion-Io, Inc. | Scoring variable nodes for low density parity check code decoding |
US20160274971A1 (en) * | 2015-03-20 | 2016-09-22 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
US20170149446A1 (en) * | 2015-11-24 | 2017-05-25 | Texas Instruments Incorporated | Ldpc post-processor architecture and method for low error floor conditions |
US20180026658A1 (en) * | 2016-07-21 | 2018-01-25 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
US20180067802A1 (en) * | 2016-09-07 | 2018-03-08 | SK Hynix Inc. | Controller and operating method thereof |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2307960B1 (en) * | 2009-04-21 | 2018-01-10 | Avago Technologies General IP (Singapore) Pte. Ltd. | Error-floor mitigation of codes using write verification |
KR101296773B1 (ko) | 2011-10-07 | 2013-08-14 | 한국전기연구원 | Ldpc 부호 복호화 장치 및 방법 |
KR102556479B1 (ko) * | 2015-03-20 | 2023-07-17 | 에스케이하이닉스 주식회사 | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
US10110249B2 (en) | 2016-08-23 | 2018-10-23 | Sandisk Technologies Llc | Column-layered message-passing LDPC decoder |
KR102543059B1 (ko) * | 2017-11-22 | 2023-06-14 | 삼성전자주식회사 | 저밀도 패리티 체크 코드의 디코딩 방법, 이를 수행하는 디코더 및 시스템 |
KR102582326B1 (ko) * | 2018-09-20 | 2023-09-26 | 에스케이하이닉스 주식회사 | 에러 정정 회로 및 이의 동작 방법 |
-
2018
- 2018-11-19 KR KR1020180142690A patent/KR102643457B1/ko active IP Right Grant
-
2019
- 2019-10-22 US US16/660,214 patent/US11005499B2/en active Active
- 2019-11-01 CN CN201911060829.XA patent/CN111200440B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050204271A1 (en) * | 2003-12-03 | 2005-09-15 | Infineon Technologies Ag | Method for decoding a low-density parity check (LDPC) codeword |
EP1643653A1 (en) * | 2004-09-29 | 2006-04-05 | Lucent Technologies Inc. | Iterative decoding of low-density parity-check (LDPC) codes |
CN1783729A (zh) * | 2004-11-23 | 2006-06-07 | 三星电子株式会社 | 用联合节点处理来解码低密度奇偶校验码的方法和设备 |
US8347195B1 (en) * | 2009-01-22 | 2013-01-01 | Marvell International Ltd. | Systems and methods for near-codeword detection and correction on the fly |
US20100287440A1 (en) * | 2009-05-07 | 2010-11-11 | Ramot At Tel Aviv University Ltd. | Matrix structure for block encoding |
US20110029756A1 (en) * | 2009-07-28 | 2011-02-03 | Eric Biscondi | Method and System for Decoding Low Density Parity Check Codes |
US20110320902A1 (en) * | 2010-06-29 | 2011-12-29 | Lsi Corporation | Conditional skip-layer decoding |
US20120005551A1 (en) * | 2010-06-30 | 2012-01-05 | Lsi Corporation | Breaking trapping sets using targeted bit adjustment |
US20120185744A1 (en) * | 2011-01-14 | 2012-07-19 | Nedeljko Varnica | Ldpc multi-decoder architectures |
US20140068367A1 (en) * | 2012-09-04 | 2014-03-06 | Lsi Corporation | LDPC Decoder Trapping Set Identification |
US8966339B1 (en) * | 2012-12-18 | 2015-02-24 | Western Digital Technologies, Inc. | Decoder supporting multiple code rates and code lengths for data storage systems |
US20150082126A1 (en) * | 2013-09-19 | 2015-03-19 | Fusion-Io, Inc. | Scoring variable nodes for low density parity check code decoding |
CN103916134A (zh) * | 2014-03-24 | 2014-07-09 | 清华大学 | 低密度奇偶校验码的混叠译码方法及多核协同混叠译码器 |
US20160274971A1 (en) * | 2015-03-20 | 2016-09-22 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
US20170149446A1 (en) * | 2015-11-24 | 2017-05-25 | Texas Instruments Incorporated | Ldpc post-processor architecture and method for low error floor conditions |
US20180026658A1 (en) * | 2016-07-21 | 2018-01-25 | SK Hynix Inc. | Ldpc decoder, semiconductor memory system and operating method thereof |
US20180067802A1 (en) * | 2016-09-07 | 2018-03-08 | SK Hynix Inc. | Controller and operating method thereof |
Non-Patent Citations (2)
Title |
---|
ZHIMIN YANG等: "Cross-Layer Iterative Decoding of Irregular LDPC Codes using Cyclic Redundancy Check Codes" * |
王鹏: "低密度奇偶校验码应用于存储系统的关键技术研究" * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113223583A (zh) * | 2021-05-14 | 2021-08-06 | 深圳市硅格半导体有限公司 | NAND Flash坏块内数据重读的方法、电子设备及存储介质 |
CN113223583B (zh) * | 2021-05-14 | 2024-05-17 | 深圳市硅格半导体有限公司 | NAND Flash坏块内数据重读的方法、电子设备及存储介质 |
CN114911740A (zh) * | 2022-06-02 | 2022-08-16 | 中国长城科技集团股份有限公司 | PCIe拆分方法、装置、电子设备及可读存储介质 |
TWI838242B (zh) * | 2023-04-14 | 2024-04-01 | 慧榮科技股份有限公司 | 資料儲存裝置及其讀取電壓的搜尋方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111200440B (zh) | 2023-04-07 |
US20200162108A1 (en) | 2020-05-21 |
KR102643457B1 (ko) | 2024-03-06 |
US11005499B2 (en) | 2021-05-11 |
KR20200058106A (ko) | 2020-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111200440B (zh) | Ldpc解码器、半导体存储器系统及其操作方法 | |
US9977713B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
US10103749B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
US10879935B2 (en) | LDPC decoder, semiconductor memory system, and operating method thereof | |
US10445175B2 (en) | Controller and operating method thereof | |
KR102556479B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US10200063B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
CN110853690B (zh) | 解码器、解码器的操作方法和包括该解码器的存储器系统 | |
US10997021B2 (en) | LDPC decoder, semiconductor memory system and operating method thereof | |
US11139832B1 (en) | LDPC decoder and operating method thereof | |
CN110673979A (zh) | 存储器控制器及其操作方法 | |
US11387845B2 (en) | LDPC decoder, operating method of LDPC decoder, and semiconductor memory system | |
KR20200098964A (ko) | 컨트롤러 및 그것의 동작 방법 | |
CN115701588A (zh) | 控制器及其操作方法 | |
US10528496B2 (en) | Controller and operating method thereof | |
KR102530269B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 |
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 |