CN110797074A - 用于nand闪速存储装置的动态邻区和位线辅助校正 - Google Patents
用于nand闪速存储装置的动态邻区和位线辅助校正 Download PDFInfo
- Publication number
- CN110797074A CN110797074A CN201910712318.5A CN201910712318A CN110797074A CN 110797074 A CN110797074 A CN 110797074A CN 201910712318 A CN201910712318 A CN 201910712318A CN 110797074 A CN110797074 A CN 110797074A
- Authority
- CN
- China
- Prior art keywords
- memory cells
- memory
- weight coefficients
- decoding
- successful
- 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
-
- 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
- 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
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- 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/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/29—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
- H03M13/2957—Turbo codes and decoding
- H03M13/296—Particular turbo code structure
- H03M13/2963—Turbo-block codes, i.e. turbo codes based on block codes, e.g. turbo decoding of product codes
-
- 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/3723—Decoding 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
-
- 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/45—Soft decoding, i.e. using symbol reliability information
- H03M13/458—Soft decoding, i.e. using symbol reliability information by updating bit probabilities or hard decisions in an iterative fashion for convergence to a final decoding result
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/11—Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
- G06F17/12—Simultaneous equations, e.g. systems of linear equations
-
- 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/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/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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明提供一种存储系统。该存储系统包括以阵列布置的存储器单元;以及存储器控制器,联接至存储器单元以用于控制存储器单元的操作。存储器控制器被配置成响应于来自主机的读取命令执行读取操作,使用存储在存储器控制器中的现有LLR(对数似然比)值对来自读取操作的数据执行第一软解码,并且使用考虑来自相邻存储器单元的影响的来自相邻存储器单元的LLR值和现有权重系数来更新现有LLR值。存储器控制器还被配置成使用更新后的LLR值执行第二软解码。如果第二软解码成功,则存储器控制器执行权重系数的递归更新以反映来自相邻存储器单元的更新后的影响,并且将更新后的权重系数存储在存储器控制器中以用于进一步解码。
Description
相关申请的交叉引用
本申请要求于2018年8月2日提交的申请号为62/713,958,标题为“用于NAND闪速存储装置的运行中邻区和位线辅助校正”的临时申请的优先权,该临时申请已转让给本受让人,并且该临时申请通过引用而明确地整体并入本文。
本申请还涉及到于2016年1月3日提交的申请号为15/173,446,标题为“用于Turbo乘积码的低复杂度软解码器的技术”的美国专利申请,现在其美国专利号为10,218,388,该申请被转让给本受让人,并且该申请通过引用而明确地整体并入本文。本申请还涉及到于2017年7月19日提交的申请号为15/654,492,标题为“低复杂度LDPC编码器”的美国专利申请,该申请已转让给本受让人,并且该申请通过引用而明确地整体并入本文。
技术领域
本发明总体涉及用于存储装置的系统和方法,并且具体地涉及提高非易失性存储器装置的性能。
背景技术
固态存储器广泛应用于包括例如消费性电子装置(例如,蜂窝电话、照相机,计算机等)的各种电子系统和企业计算系统(例如,硬盘驱动器、随机存取存储器(RAM)等)中。固态存储器由于延迟、吞吐量、抗冲击性、封装和其它考虑因素而比机械或其它存储器存储技术更为普及。在这些非易失性存储器装置之中,NAND闪速存储器装置由于高集成度的低制造成本而受欢迎。
在NAND存储器中,在目标单元和相邻单元之间存在耦合电容。根据待编程至单元中的数据,当电压阈值增加时,电场可以影响相邻单元并且可以导致不同的读取单元电压。此外,在一些3D存储器中,在不同层的相邻单元之间可能发生电荷泄漏。在那种情况下,相邻单元的影响可以导致目标单元的阈值电压的负偏移。
发明内容
用于消除相邻字线对未被例如LDPC解码器的解码器成功解码的字线的影响的一些传统方案具有诸如需要待存储在硬件中的查找表(LUT)的缺点,这可能导致较大的SoC区域。
在本发明的一些实施例中,提供了用于消除相邻字线的影响以及位线干扰的方法。一些实施例还包括运行中训练和消除字线和位线干扰。这些方法具有能够根据NAND数据中存在的干扰而调整的能力。
在一些实施例中,提供线性模型用于对位线和字线干扰进行建模。假设耦合系数是编程擦除周期(PE)、读取干扰(RD)和保持时间(Ret)的函数。耦合系数可以在驱动器的整个寿命期间改变,并且可以根据经成功解码的数据进行调整。估计耦合系数可以基于最小均方误差(MMSE)估计器,并且此外可以基于Ret、PEC和RD求出最佳耦合系数。
根据本发明的一些实施例,非易失性数据存储装置包括:存储器单元,以具有行和列的二维阵列布置,每行与字线相关联并且每列与位线相关联;以及存储器控制器,联接至存储器单元以控制存储器单元的操作。存储器控制器被配置成响应于来自主机的读取命令执行读取操作。存储器控制器对来自读取操作的数据执行硬解码,并且确定硬解码是否成功,其中没有未校正的错误。如果硬解码成功,则存储器控制器确定读取操作成功并且将数据提交至主机。另一方面,如果硬解码不成功,则存储器控制器使用存储在存储器控制器中的现有LLR(对数似然比)值来执行第一软解码,并且确定第一软解码是否成功,其中没有未校正的错误。如果第一软解码成功,则存储器控制器确定读取操作成功并且将数据提交至主机。如果第一软解码不成功,则存储器控制器使用考虑来自相邻存储器单元的影响的来自相邻存储器单元的LLR值和现有权重系数来更新LLR值。存储器控制器使用更新后的LLR值执行第二软解码,并且确定第二软解码是否成功,其中没有未校正的错误。如果第二软解码不成功,则存储器控制器确定读取操作已经失败。如果第二软解码成功,则存储器控制器确定解码成功,并且将经解码的数据提交至主机。此外,存储器控制器对权重系数执行递归更新以反映来自相邻存储器单元的更新的影响。存储器控制器还将更新后的权重系数存储在存储器控制器中以用于进一步解码。
其中:
其中N,K,i和j是整数,上标T表示向量或矩阵的转置。
在一些实施例中,初始现有权重系数通过使用训练数据离线求出以下等式的解来确定,
其中:
其中更新等式给定为,
在一些实施例中,存储器控制器进一步被配置成使用编程擦除周期(PEC)、读取干扰(RD)和保持时间(RET)的函数来估计权重系数,并且利用该权重系数对数据施加邻区辅助以及位线干扰校正。
在一些实施例中,存储器控制器进一步被配置成在软解码成功之后在运行中使用递归更新后的权重系数执行软解码。
根据本发明的一些实施例,非易失性数据存储装置包括:存储器单元,以具有行和列的阵列布置,每行与字线相关联并且每列与位线相关联;以及存储器控制器,联接至存储器单元以控制存储器单元的操作。存储器控制器被配置成响应于来自主机的读取命令执行读取操作,并且使用存储在存储器控制器中的现有LLR(对数似然比)值对来自读取操作的数据执行第一软解码。如果第一软解码不成功,则存储器控制器使用考虑来自相邻存储器单元的影响的来自相邻存储器单元的LLR值和现有权重系数来更新现有LLR值。存储器控制器使用更新后的LLR值执行第二软解码。如果第二软解码成功,则存储器控制器确定解码成功,并且将经解码的数据提交至主机。存储器控制器进一步对权重系数执行递归更新以更新来自相邻存储器单元的影响,并且将更新后的权重系数存储在存储器控制器中以用于进一步解码。
根据本发明的一些实施例,提供了一种控制存储系统的方法。存储系统包括:以具有行和列的阵列布置的存储器单元,每行与字线相关联并且每列与位线相关联;以及存储器控制器,联接至存储器单元以控制存储器单元的操作。该方法包括响应于来自主机的读取命令执行读取操作,以及使用存储在存储器控制器中的现有LLR(对数似然比)值对来自读取操作的数据执行第一软解码。该方法还包括使用考虑来自相邻存储器单元的影响的来自相邻存储器单元的LLR值和现有权重系数来更新LLR值,以及使用更新后的LLR值执行第二软解码。如果第二软解码成功,则确定解码成功,并且该方法包括将数据提交至主机,对权重系数执行递归更新以更新来自相邻存储器单元的影响,以及将更新后的权重系数存储在存储器控制器中以用于进一步解码。
参照下面的详细描述和附图提供本发明的各种另外的实施例,特征和优点。
附图说明
图1A是示出根据本公开的某些实施例的示例TPC错误校正系统的高级框图;
图1B是示出根据本公开的某些实施例的示例LDPC错误校正系统的高级框图;
图2是示出根据本公开的某些实施例的示例BCH解码器200的简化框图;
图3是示出根据本公开的某些实施例的示例TPC软解码器的简化框图;
图4是根据本公开的某些实施例的存储器装置的简化框图;
图5是示出根据本公开的某些实施例的存储器阵列的简化示意图;
图6是示出根据本公开的某些实施例的3D非易失性存储器装置中的3D NAND存储器阵列的简化示意图;
图7是示出根据本公开的某些实施例的非易失性存储器装置中的存储器阵列的一部分的简化示意图;
图8是示出根据本公开的某些实施例的存储器装置的操作方法的简化流程图;
图9是示出根据本公开的某些实施例的邻区权重系数的递归更新方法的简化流程图;
图10是示出根据本公开的某些实施例的固态存储系统的简化框图;以及
图11是示出可用于实施根据本公开的各个实施例的设备的简化框图。
具体实施方式
错误校正码经常用于通信,以及用于诸如CD、DVD、硬盘和随机存取存储器(RAM)、闪速存储器等介质中的可靠存储。错误校正码可以包括turbo乘积码(TPC)、低密度奇偶校验(LDPC)码、博斯-查德胡里-霍昆格姆(Bose-Chaudhri-Hocquenghem,BCH)码,里德-所罗门(Reed Solomon)码等。
Turbo乘积码(TPC)可以具有两个或更多个维度。每个维度可以对应于本文被称为分量码的一类错误校正码。作为示例,二维TPC码字可以包括与其第一维度相对应的多个错误校正码字(以下称为行码字),以及与其第二维度相对应的多个错误校正码字(以下称为列码字)。行码字和/或列码字中的每一个可以包括BCH码、里德-所罗门码等。
通常,TPC解码是不同维度错误校正码字之间的迭代解码。作为示例,如果BCH码用作TPC码的每个维度的分量码,则TPC解码器对TPC码的多个行码字和多个列码字执行BCH解码。在一个实施例中,公开了用于TPC码的低复杂度软解码器架构。在一个实施例中,本文提供的软解码架构可以用于通过使用一些NAND读取操作生成软信息来解码从NAND存储器获得的信息。
图1A是示出根据本公开的某些实施例的示例TPC错误校正系统的高级框图。在所示的示例中,TPC编码器110接收包括期望存储在存储系统120中或在通信通道中传输的数据的信息位。经TPC编码的数据由TPC编码器110输出并且写入到存储系统120。在各个实施例中,存储系统120可包括各种存储装置类型或介质,诸如(例如,磁性)磁盘驱动器存储装置,闪速存储装置等。在一些实施例中,本文描述的技术被使用在收发器中,而不是被写入到存储装置或从存储装置读取,数据通过有线和/或无线通道被传输并接收。在这种情况下,可以在传输码字期间引入所接收的码字中的错误。
当(例如,通过存储数据的应用或用户)请求或以其它方式期望存储的数据时,检测器130从存储系统接收数据。接收的数据可能包括一些噪声或错误。检测器130对接收的数据执行检测,并且输出与码字中的一个或多个位对应的判决和/或可靠性信息。例如,软输出检测器输出每个检测位的可靠性信息和判决。另一方面,硬输出检测器输出对每个位的判决而无需提供相应可靠性信息。作为示例,硬输出检测器可以输出特定位为“1”或“0”的判决,而不指示检测器在该判决中有多确定或肯定。相反,软输出检测器输出与判决相关的判决和可靠性信息。通常,可靠性值表示检测器在给定判决中有多确定。在一个示例中,软输出检测器输出对数似然比(LLR),其中符号指示判决(例如,正值对应于“1”判决而负值对应于“0”判决)并且大小指示检测器在该判决中有多确定或肯定(例如,大数值表示高可靠性或确定性)。
判决和/或可靠性信息被传递到TPC解码器140,该TPC解码器140使用判决和/或可靠性信息执行TPC解码。软输入解码器利用判决和可靠性信息二者来解码码字。硬解码器仅利用解码器中的判决值来解码码字。在解码之后,由TPC解码器140生成的解码位被传递到适当的实体(例如,请求它的用户或应用)。通过适当的编码和解码,信息位与解码位匹配。
图1B是示出根据本公开的某些实施例的示例LDPC错误校正系统的高级框图。如图1B所示,错误校正系统150的LDPC编码器160可以接收包括期望被存储在存储系统170中的数据的信息位。经LDPC编码的数据可以由LDPC编码器160生成,并且可以写入到存储系统170。编码可以使用编码器优化的奇偶校验矩阵H'162。
在各个实施例中,与图1A中的存储系统120相似的存储系统170可以包括各种存储装置类型或介质。可能在数据存储或通道中出现错误。例如,错误可能由例如单元与单元的干扰和/或耦合引起。当(例如,通过存储数据的应用或用户)请求或以其它方式期望存储的数据时,检测器180从存储系统170接收数据。接收的数据可能包括一些噪声或错误。检测器180可以包括软输出检测器和硬输出检测器,并且可以对接收的数据执行检测并且输出判决和/或可靠性信息。
判决和/或可靠性信息可以被传递到LDPC解码器190,LDPC解码器190可以使用判决和/或可靠性信息来执行LDPC解码。软LDPC解码器可以利用判决和可靠性信息二者来解码码字。硬LDPC解码器可以仅利用来自检测器的判决值来解码码字。由LDPC解码器190生成的解码位可以被传递到适当的实体(例如,请求它的用户或应用)。解码可以利用奇偶校验矩阵H 192,该奇偶校验矩阵H 192可以通过设计针对LDPC解码器190被优化。通过适当的编码和解码,经解码的位将与信息位匹配。在一些实施方式中,奇偶校验矩阵H 192可以与编码器优化的奇偶校验矩阵H'162相同。在一些实施方式中,可以从奇偶校验矩阵H 192修改编码器优化的奇偶校验矩阵H'162。在一些实施方式中,可以从编码器优化的奇偶校验矩阵H'162修改奇偶校验矩阵H192。
LDPC解码的进一步细节可以在于2017年7月19日提交的申请号为15/654,492,标题为“低复杂度LDPC编码器”的美国专利申请中找到,该申请转让给本受让人,并且该申请通过引用而明确地整体并入本文。
在以下描述中,作为示例,将具有BCH码的Turbo乘积码(TPC)作为分量码进行描述。然而,理解的是,在不脱离本公开的教导的情况下,本文描述的技术适用于任何类别的代码,例如LDPC码。
图2是示出根据本公开的某些实施例的示例BCH解码器200的简化框图。如图所示,解码器接收BCH码字并且开始迭代解码进程。对于每次迭代,BCH解码器200对接收的码字执行校验子计算(步骤210)、确定错误位置多项式(步骤220)、并且执行Chien搜索或相似过程以确定错误位置多项式的根(步骤230)。错误位置多项式的根提供码字中的错误所在位置的指示。
在校正错误之后,在步骤240中,解码器检查解码进程是否已产生正确的码字。如果是,则解码器输出经解码的位。如果不是,则解码器可以生成位翻转模式,基于模式而翻转码字的一个或多个位并且计算新码字的校验子值。解码进程可以继续直到求出正确的码字和/或达到预定最大迭代次数。
在BCH解码中,通常在接收每个码字之后计算校验子值。在一个实施例中,校验子值可以基于先前的校验子值和校正的数据而被更新。因此,校验子计算过程可以仅在解码进程开始时执行。可以基于先前的校验子值在后续迭代中更新对应于每个码字的校验子。
给定自然数m和t,长度为n=2m-1的t-错误校正二进制BCH码可以定义为:c(x)∈GF(2)[x]:degc(x)≤n-1,c(α)=c(α2)=c(α3)=…=c(α2t)=0其中α∈GF(2m)是原始元素。换言之,它是所有次数最多为n-1的二元多项式的集合,使得当它们被视为关于GF(2m)的多项式时,它们必须具有α、α2、α2、......、α2t作为它们的根。
如果c(x)是传输的码字,则e(x)是误差多项式,并且R(x)=c(x)+e(x)是接收的码字,然后给定α、α2、α2、......、α2t是c(x)的根,初始分量校验子可以被计算为:
对于i=0,1,...,2t-1,si=r(αi+1)=e(αi+1)。
错误位置多项式生成器使用校验子S0、S1、S2t-1来生成错误位置多项式Λ(x),其定义为:
本领域中存在几种用于求出位置多项式的方法。例如,Berlekamp-Massey算法,Peterson算法等。错误位置多项式的根(即上面等式中的j0,j1,jv)表示错误的位置,因此求出错误位置多项式的根对应于找到相应码字中错误的位置。
通常使用Chien搜索求出错误位置多项式的根。对于二进制符号,一旦已经识别出错误位置,校正仅涉及在每个识别的错误位置处翻转该位。对于非二进制符号,需要例如使用Fomey算法计算误差数值,以求出待进行校正的数值。
图3是示出根据本公开的某些实施例的示例TPC软解码器的简化框图。在该示例中,使用基于校验子更新的解码器。然而,通常可以在不脱离本公开的教导的情况下使用用于任何类码的任何其它类型的软解码器。
如图所示,解码器300包括LLR存储块310、校验子修改块320和325,关键等式求解器(KES)块330和533、Chien搜索块340和345,错误校正避免(MAT)块350、校验子存储器385、校验子数据更新(SDU)块390、通用位翻转(GBF)块370、最低可靠位(LRB)选择块380和数据区块存储器395。应当注意的是,可以在不脱离本公开的教导的情况下消除和/或修改图3中所示的块中的任何一个。
在一个实施例中,LRB选择块380基于从码字中的位接收的LLR值来选择L个最低可靠位。例如,LRB选择块可以从30个接收位中选择10个最低可靠位。GBF块370可以在L个位之中选择S个位(S=1、...、L)来翻转。在一个示例中,GBF块370可以生成可存储在翻转模式缓冲器360中的个翻转模式。作为示例,如果L=5,S=3,则GBF块370选择10个模式。
在图3中所示的示例TPC软解码器中,两个BCH解码器并行运行。第一BCH解码器包括校验子修改块320、KES块330和Chien搜索块340。第二BCH解码器包括校验子修改块325、KES块335和Chien搜索块345。因此,GBF块370每次生成两个翻转模式。应当注意的是,可以在不脱离本公开的教导的情况下,在TPC软解码器中使用任何数量的串行和/或并行BCH解码器。在P个并行解码器的情况下,GBF块每次可以生成P个翻转模式。在不脱离本公开的教导的情况下,P个翻转模式可以全部彼此不同,或者它们中的一些可以是相似的。
KES块330接收基于翻转模式修改的更新后的校验子值,并且求出错误位置多项式。然后Chien搜索340被应用以求出错误位置多项式的根并且生成解码模式。
在一个实施例中,MAT块350用于通过将翻转和解码模式与LLR值进行比较来降低误校正的可能性。如果MAT块350检测到误校正,则声明解码模式是错误的。如果MAT块没有检测到误校正(例如,MAT条件通过),则数据和校验子值将根据翻转和解码模式而被更新。在一个实施例中,更新后的数据值可以被写入在数据区块存储器395中,并且更新后的校验子值可以被写入在校验子存储器385中。图6中示出与TPC软解码器对应的示例解码流程图。
硬解码和软解码的进一步细节可以在于2016年1月3日提交的申请号为15/173,446,标题为“用于TURBO乘积码的低复杂度软解码器的技术”的美国专利申请中找到,现在其美国专利号为10,218,388。该专利转让给本受让人,并且该专利通过引用而明确地整体并入本文。
图4是根据本公开的某些实施例的存储器装置的简化框图。如图4所示,闪速存储器装置400可以是图4中的错误校正系统400中的存储系统420的示例。闪速存储器装置400包括具有多个非易失性存储器单元的存储器单元阵列410。在一些实施例中,存储器单元布置在多个存储块中。每个存储块可以包括多个非易失性存储器单元,每个存储块与相应地址相关联。存储器装置400还包括解码器420,例如行解码器。在示例中,解码器420接收具有地址ADDR 430的用于存储器操作的命令,例如具有读取地址的读取命令。地址430可以是逻辑地址。在实施例中,诸如读取命令、写入命令或编程命令以及擦除命令等的存储器操作针对一组存储器单元,例如页面或扇区,或块。如上所述,块可以包括多个页面。读取命令或编程命令通常针对页面,并且擦除命令可以针对块。根据实施例,页面或扇区可以是0.5千字节到4千字节,或不同的大小。根据实施例,页面或扇区可以包括联接至相同字线的存储器单元。在这种情况下,解码器420基于用于选择存储器页面的关于ADDR 430的信息选择字线(WL)440,该存储器页面可以是联接至选择的字线的一行存储器单元。因此,页面和字线可互换使用。
感测放大器块450通过位线452联接至存储器单元阵列410。缓冲块460联接至感测放大器块450并且将输出数据提供至外部装置。在读取操作中,感测放大器块450感测存储在存储器单元阵列410的每个存储器单元中的数据,并且将数据提供至缓冲块460。在写入操作或编程操作中,缓冲块460将待写入或编程的数据提交至存储器阵列410。
在存储器读取操作期间,读出由字线选择的非易失性存储器单元中的电荷。存储器单元的单元阈值电压可以根据存储器单元中存储的电荷而变化。高于单元阈值电压的读取电压可用于确定存储在存储器单元中的数据。在一些实施例中,非易失性存储器单元中的每一个可以是多层存储器单元,并且多个阈值电压用于确定由位模式表示的存储器单元的数据状态。在这些情况下,提供读取阈值478的阈值控制电路470可用于控制阈值电压。
图5是示出存储器阵列的简化示意图。图4是根据本公开的某些实施例的存储器装置的简化框图。如图2所示,存储器阵列200包括以具有行和列的二维阵列布置的存储器单元。每行存储器单元与字线(WL),例如WL0、WL1、WL2、WL3、......、WLN等相关联。每列存储器单元与位线(BL),例如BL1、BL2、BL3、...、BLM等相关联。在一些实施例中,与每个位线相关联的存储器单元可以包括多个数据位和从数据位导出的奇偶校验位。例如,与位线BL1相关联的存储器单元可以具有存储在与字线WLN联接的存储器单元中的奇偶校验位。
图6是示出根据本公开的某些实施例的3D非易失性存储器装置中的3D NAND存储器阵列的简化示意图。存储器阵列600包括在多个存储器层(在该示例中,三个存储器层,L1,L2和L3)中以串(STR)布置的多个存储器单元(MC)。存储层中的每一个包括多个通道线(CL),该多个通道线(CL)分别通过多个通道线(CL)的第一端联接至多个位线(BL)并且通过多个通道线(CL)的第二端联接至公共源极线(CSL)。存储器阵列600还包括联接至串选择晶体管(SST1-SST3)的多个串选择线(SSL1-SSL4)。此外,存储器层中的每一个还具有多个字线(WL1至WLn)和接地选择线(GSL)。多个串选择线(SSL)、多个字线(WL)和接地选择线(GSL)与多个通道线交叉。多个通道线中的每一个限定存储器串(STR),并且存储器串具有分别与多个串选择线(SSL)联接的串选择晶体管(SST)。公共接地线GSL可以接地以关断公共接地晶体管GST。
字线WL1至WLn可以连接以分别控制沿列方向布置的存储器单元的栅极。位线BL1至BL3可以分别连接至串选择晶体管的第一端。具有在行方向上与各个字线WL1至WLn联接的控制栅电极的多个存储器单元可以构成逻辑页面,其中可以通过存储器单元的存储容量来确定逻辑页面的数量。
在一些3D非易失性存储器中,存储器阵列600中的存储器单元可以将电荷存储在电荷俘获层中。在这些示例中,联接至相同位线的多个存储器单元可以堆叠在一列装置结构中。在这种装置结构中,可能在存储数据的长保存时间内发生上部单元和下部单元之间的电荷泄漏。3D非易失性存储器的进一步细节可以在专利号为9,754,673,标题为“利用时变擦除信号初始化和驱动3D非易失性存储器装置的方法”的美国专利中找到,该美国专利的内容通过引用而整体并入本文。
图7是示出根据本公开的某些实施例的非易失性存储器装置中的存储器阵列的部分700的简化示意图。图7示出在字线N和位线K处的被指定为单元(N,K)并且也被称为牺牲单元的目标单元705,该目标单元被相邻字线和位线的邻近或相邻单元包围。例如,单元701处于字线N-1和位线K-1处并且被指定为单元(N-1,K-1)、单元702处于字线N-1和位线K处并且被指定为单元(N-1,K)、单元703处于字线N-1和位线K+1处并且被指定为单元(N-1,K+1)、单元704处于字线N和位线K-1处并且被指定为单元(N,K-1)、单元706处于字线N和位线K+1处并且被指定为单元(N,K+1)、单元707处于字线N+1和位线K-1处并且被指定为单元(N+1,K-1),单元708处于字线N+1和位线K处并且被指定为单元(N+1,K),单元709处于字线N+1和位线K+1处并且被指定为单元(N+1,K+1)。在NAND存储器中,目标单元和相邻单元之间存在耦合电容。根据待编程到单元中的数据,目标单元的电场发生变化。该电场可以反映为电压阈值增加并且可以产生不同读取单元电压。此外,在一些3D存储器中,诸如结合图6所述的具有电荷俘获层的存储器,在不同层的相邻单元之间可能发生电荷泄漏。在那种情况下,相邻单元的影响可以产生目标单元的阈值电压的负偏移。
在本公开的实施例中,目标单元中来自相邻单元的干扰或影响使用每个存储器单元的对数似然比(LLR)的值来建模。参照图7中的相邻存储器单元,在NAND数据中观察到的干扰的线性模型可以表示为目标存储器单元(N,K)附近的存储器单元的LLR值的权重和,如下:
作为示例,在等式(1)的模型中,如果以下约束条件成立,则不存在干扰,
如果相邻字线存在干扰但不存在来自位线的干扰,则以下约束条件成立,
如果位线存在干扰但不存在来自相邻字线的干扰,则以下约束条件成立,
(1)中的模型是通用的,并且可以处理来自位线和字线方向的干扰。如果针对估计LLR值给定L个点,则等式(1)可以被重写为,
其中,
··········
等式(2)的闭合形式解可以被给定为:
(3)中的解可以从训练数据离线确定。的量化值可用于硬件实施。难以对用于运行中权重系数更新的硬件执行矩阵的直接求逆。例如,在4K字节页面读取操作中,获得32K位的数据,并且在直接矩阵求逆中将涉及32K×32K的矩阵。计算复杂度可以随块大小呈指数增长。难以在运行中对用于更新的硬件执行任何更新。
作为示例,离线训练可以包括将具有已知数量的二进制1和0的已知位模式写入到存储器阵列,并且利用不同参考电压多次读取存储器阵列中的单元。根据从读取获得的单元电压,可以确定LLR值,并且可以例如通过如上所述的矩阵求逆来计算相邻单元的LLR之间的权重系数。
在一些实施例中,MMSE递归更新想法可用于运行中更新。更新等式被给定为,
在本公开的实施例中,可以通过从来自相邻单元的LLR的值中求出最佳权重系数或耦合系数来更新目标单元的LLR的值来考虑来自相邻单元的干扰。然后,更新后的LLR值可以用于解码以获得更准确的结果。图8是示出根据本公开的某些实施例的非易失性数据存储装置的读取操作的简化流程图800,并且图9是示出根据本公开的某些实施例的用于递归更新邻区权重系数的方法的简化流程图。作为示例,使用NAND闪速存储器来描述优化根据实施例的非易失性存储装置中使用的优化LLR的方法。然而,应理解的是,这些方法可用于其它非易失性存储器装置中,诸如相变随机存取存储器(PRAM)、电阻随机存取存储器(RRAM)、磁性随机存取存储器(MRAM)或铁电随机存取记忆(FRAM)等。
图8是示出根据本公开的某些实施例的非易失性数据存储装置的操作的简化流程图。非易失性数据存储装置包括存储器单元,以具有行和列的二维阵列布置,每行与字线相关联并且每列与位线相关联,以及存储器控制器,联接至存储器单元以用于控制存储器单元的操作。结合图4至图6和图10描述存储器装置的示例。
在图8中,在810中,存储器控制器被配置成响应于来自主机的读取命令执行读取操作。在820中,存储器控制器对来自读取操作的数据执行硬解码,并且在822中,存储器控制器确定硬解码是否成功。当没有发现错误或者所有错误都是可校正的,即没有未校正的错误时,认为解码是成功的。如果硬解码成功,则在825中,存储器控制器确定读取操作成功(880)并且将数据提交至主机。另一方面,如果硬解码不成功(827),则在830中,存储器控制器使用存储在存储器控制器中的现有LLR(对数似然比)值执行第一软解码。在832中,存储器控制器确定第一软解码是否成功,其中没有未校正的错误。如果第一软解码成功(835),则存储器控制器确定读取操作成功(880)并且将数据提交至主机。
如果第一软解码不成功(837),则在840中,存储器控制器使用来自相邻存储器单元的LLR值和考虑来自相邻存储器单元的影响的现有权重系数来更新LLR值。在上述非易失性数据存储装置的一些实施例中,在字线N和位线K处的存储器单元的估计LLR值可以在以下线性等式中被表示为在目标存储器单元附近的存储器单元的LLR值的权重和:
其中:
其中N,K,i和j是整数,上标T表示向量或矩阵的转置。
在一些实施例中,初始现有权重系数通过离线使用训练数据求出以下等式的解来确定,
其中:
在850中,存储器控制器使用更新后的LLR值执行第二软解码,并且在852中,确定第二软解码是否成功,其中没有未校正的错误。如果第二软解码不成功,则在860中,存储器控制器确定读取操作已经失败。如果第二软解码成功,则在855中,存储器控制器确定解码成功,并且将经解码的数据提交至主机。
此外,如果第二软解码成功,则在870中,存储器控制器执行权重系数的递归更新以反映相邻存储器单元的更新的影响。在一些实施例中,权重系数的递归更新包括在最小均方误差(MMSE)估计器中递归地求出最优以最小化和之间的差值,公式化为如下等式:
其中更新等式被给定为,
存储器控制器还可以将递归更新后的权重系数存储在存储器控制器中以用于进一步解码。在890中,操作结束,其中通过系统读入的数据已经成功或者失败。
在一些实施例中,权重系数的递归更新包括利用成功的读取操作在运行中更新权重系数。
在一些实施例中,存储器控制器进一步被配置成使用编程擦除周期(PEC)、读取干扰(RD)和保持时间(RET)的函数来估计权重系数,并且利用该权重系数对数据施加邻区辅助以及位线干扰校正。
根据本公开的一些实施例,解码方法可以包括:当解码失败时从与目标字线相邻的字线读取数据,使用编程擦除周期(PEC)、读取干扰(RD)和保持时间(RET)的函数来估计耦合系数,并且利用该耦合系数对数据施加邻区辅助以及位线干扰校正。该方法还可以包括解码校正后的数据,并且当解码成功时利用经解码数据应用递归更新以更新耦合系数。
在一些实施例中,存储器控制器进一步被配置成在成功的软解码之后在运行中使用递归更新后的权重系数执行软解码
其中更新等式被给定为,
其中是第(i+1)个瞬间的更新后的权重系数,其中i是整数,μ是自适应系数,可以试探性地选择该自适应系数的值以优化MMSE更新等式的收敛。
在930中,该方法比较和并且在940中,该方法确定和之间的差值。在950中,如果差值大于阈值“th”,则该方法重复上述进程。在960中,如果差值小于阈值“th”,则该方法确定是更新后的权重系数。在970中,该方法包括将更新后的权重系数存储在存储器控制器中。在以上描述中,可以选择阈值“th”以缩短收敛时间或取决于期望的精度。
图10是示出根据本公开的某些实施例的固态存储系统的简化框图。如图所示,固态存储系统1000可以包括固态存储装置1050和存储控制器1060。例如,固态存储装置1050可以包括如图1所示的闪速存储器装置100。存储控制器1060,也称为存储器控制器,是执行本文描述的技术的系统的一个示例。在一些实施例中,存储控制器1060可以在诸如ASIC或FPGA的半导体装置上实施。一些功能也可以在固件中实施。
控制器1004可以包括用于执行上述控制功能的一个或多个处理器1006和存储器1008。存储控制器1060还可以包括查找表1010,该查找表1010可以包括用于劣化块的表和用于坏块的表等。寄存器1014可以用于存储用于控制功能的数据,诸如用于劣化块计数的阈值等。
控制器1004可以通过存储接口1002联接至固态存储装置1050。错误校正解码器1012(例如,LDPC解码器或BCH解码器)可以对读取数据执行错误校正解码并且将校正后的数据发送到控制器1004。控制器1004可以为垃圾收集器1016识别具有读取失败的页面,垃圾收集器1016对那些页面执行校正处理(例如,通过将有或没有错误校正解码的数据复制到新位置)。
图11是示出可用于实施根据本公开的各个实施例的设备的简化框图。图11仅仅是说明结合本公开的实施例,并不限制权利要求中所述的本发明的范围。本领域普通技术人员将认识到其它变型、修改和替代方案。在一个实施例中,计算机系统1100通常包括监视器1110、计算机1120、用户输出装置1130、用户输入装置1140、通信接口1150等。
如图11所示,计算机1120可以包括通过总线子系统1190与多个外围装置备通信的处理器1160。这些外围装置可以包括用户输出装置1130、用户输入装置1140、通信接口1150和诸如随机存取存储器(RAM)1170的存储子系统和磁盘驱动器1180。作为示例,磁盘驱动器可以包括利用诸如图1所示的具有上述特征的存储器装置100的非易失性存储器装置实施的固态硬盘(SSD)。
用户输入装置1140包括用于向计算机系统1120输入信息的所有可能类型的装置和机构。这些装置和机构可以包括键盘,小键盘,结合到显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置,和其它类型的输入装置。在各个实施例中,用户输入装置1140通常实现为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置1140通常允许用户通过诸如点击按钮等的命令来选择出现在监视器1110上的对象、图标、文本等。
用户输出装置1130包括用于从计算机1120输出信息的所有可能类型的装置和机构。这些装置和机构可以包括显示器(例如,监视器1110),诸如音频输出装置的非可视显示器等。
通信接口1150提供到其它通信网络和装置的接口。通信接口1150可以用作用于从其它系统接收数据和向其它系统传输数据的接口。通信接口1150的实施例通常包括以太网卡,调制解调器(电话、卫星、电缆、ISDN),(异步)数字用户线(DSL)单元,火线接口,USB接口等。例如,通信接口1150可以联接至计算机网络、火线总线等。在其它实施例中,通信接口1150可以物理地集成在计算机1120的主板上,并且可以是软件程序,诸如软DSL等。
在各个实施例中,计算机系统1100还可以包括能够通过诸如HTTP、TCP/IP、RTP/RTSP协议等的网络进行通信的软件。在本发明的可选实施例中,还可以使用其它通信软件和传输协议,例如IPX,UDP等。在一些实施例中,计算机1120包括来自Intel的一个或多个Xeon微处理器作为处理器1160。此外,在一个实施例中,计算机1120包括基于UNIX的操作系统。
RAM 1170和磁盘驱动器1180是有形介质的示例,该有形介质被配置成存储诸如本发明的实施例的包括可运行计算机代码,人类可读代码等的数据。其它类型的有形介质包括软盘、可移动硬盘,光学存储介质(诸如CD-ROM、DVD和条形码),半导体存储器(诸如闪速存储器),非暂时性只读存储器(ROMS),电池支持的易失性存储器,网络存储装置等。RAM1170和磁盘驱动器1180可以被配置成存储提供本发明的功能的基本编程和数据结构。
提供本发明的功能的软件代码模块和指令可以存储在RAM 1170和磁盘驱动器1180中。这些软件模块可以由处理器1160运行。RAM1170和磁盘驱动器1180也可以提供用于存储根据本发明使用的数据的存储库。
RAM 1170和磁盘驱动器1180可以包括多个存储器,该多个存储器包括用于在编程运行期间存储指令和数据的主随机存取存储器(RAM)和存储固定的非暂时指令的只读存储器(ROM)。RAM 1170和磁盘驱动器1180可以包括为程序和数据文件提供持久(非易失性)存储的文件存储子系统。RAM 1170和磁盘驱动器1180还可以包括诸如可移动闪速存储器的可移动存储系统。
总线子系统1190提供用于使计算机1120的各种组件和子系统按预期彼此通信的机构。虽然总线子系统1190示意性地示为单个总线,但总线子系统的可选实施例可以使用多个总线。总线系统1190可以是可使用本公开的PCIe PHY实施例实施的高速PCI总线。
图11是能够实现本发明的计算机系统的代表。对于本领域普通技术人员来说显而易见的是,许多其它硬件和软件配置适用于本发明。例如,计算机可以是台式、便携式、机架式或平板式配置。另外,计算机可以是一系列联网计算机。此外,考虑使用其它微处理器,诸如PentiumTM或ItaniumTM微处理器;美国先进微电子器件公司的OpteronTM或AthlonXPTM微处理器等。此外,考虑其它类型的操作系统,诸如来自微软公司的等,来自太阳微系统公司的Solaris,LINUX,UNIX等。在其它实施例中,上述技术可以在芯片或辅助处理板上实施。
本发明的各个实施例可以以软件或硬件的逻辑形式或两者的组合而实施。该逻辑可以存储在计算机可读或机器可读的非暂时性存储介质中,作为适于指示计算机系统的处理器执行本发明的实施例中公开的一组步骤的一组指令。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适于指示信息处理装置执行本发明的实施例中公开的一组步骤。基于本文提供的公开和教导,本领域普通技术人员将理解实施本发明的其它方式和/或方法。
本文描述的数据结构和代码可以部分或完全存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器,非易失性存储器,磁性和光学存储装置,诸如磁盘驱动器,磁带,CD(光盘),DVD(数字通用盘或数字视频盘)或现在已知或以后开发的能够存储代码和/或数据的其它介质。本文描述的硬件模块或设备包括但不限于专用集成电路(ASIC)、现场可编程门阵列(FPGA)、专用或共享处理器,和/或现在已知或以后开发的其它硬件模块或设备。
本文描述的方法和进程可以部分或完全实现为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并运行代码和/或数据时,计算机系统执行相关联的方法和进程。所述方法和进程还可以部分或完全实现在硬件模块或设备中,使得当硬件模块或设备被激活时,它们执行相关联的方法和进程。本文公开的方法和进程可以使用代码、数据和硬件模块或设备的组合而实现。
本文公开的实施例不限于本文描述的具体实施例的范围。对于本领域普通技术人员而言,除了本文描述的实施例之外,本发明的实施例的各种修改根据前面的描述和附图将是显而易见的。此外,虽然已经在特定环境中针对特定目的的特定实施方式的场景下描述了本发明的一些实施例,但是本领域普通技术人员将认识到其应用不限于此并且为了任何数量的目的,本发明的实施例可以有利地在任何数量的环境中实施。
Claims (20)
1.一种非易失性数据存储装置,包括:
存储器单元,以具有行和列的二维阵列布置,每行与字线相关联并且每列与位线相关联;
存储器控制器,联接至所述存储器单元以控制所述存储器单元的操作;
其中所述存储器控制器:
响应于来自主机的读取命令执行读取操作;
对来自所述读取操作的数据执行硬解码;
确定所述硬解码是否成功,其中没有未校正的错误;
如果所述硬解码成功,则确定所述读取操作成功并且将所述数据提交至所述主机;
如果所述硬解码不成功,则使用存储在所述存储器控制器中的现有对数似然比LLR值来执行第一软解码;
确定所述第一软解码是否成功,其中没有未校正的错误;
如果所述第一软解码成功,则确定所述读取操作成功并且将所述数据提交至所述主机;
如果所述第一软解码不成功,则:
使用考虑来自相邻存储器单元的影响的来自所述相邻存储器单元的LLR值和现有权重系数来更新现有LLR值;
使用更新后的LLR值执行第二软解码,
确定所述第二软解码是否成功,其中没有未校正的错误;
如果所述第二软解码不成功,则确定所述读取操作已经失败;
如果所述第二软解码成功,则:
确定所述解码成功;
将经解码的数据提交至所述主机;
执行权重系数的递归更新以反映来自相邻存储器单元的更新后的影响;以及
将递归更新后的权重系数存储在所述存储器控制器中以用于进一步解码。
6.根据权利要求1所述的非易失性数据存储装置,其中所述存储器控制器进一步使用编程/擦除周期PEC、读取干扰RD和保持时间RET的函数来估计权重系数,并且利用所述权重系数对所述数据施加邻区辅助以及位线干扰校正。
7.根据权利要求1所述的非易失性数据存储装置,其中所述存储器控制器进一步在软解码成功之后在运行中使用所述递归更新后的权重系数执行软解码。
8.一种非易失性数据存储装置,包括:
存储器单元,以具有行和列的阵列布置,每行与字线相关联并且每列与位线相关联;
存储器控制器,联接至所述存储器单元以控制所述存储器单元的操作;
其中所述存储器控制器:
响应于来自主机的读取命令执行读取操作;
使用存储在所述存储器控制器中的现有LLR值,即对数似然比值,对来自所述读取操作的数据执行第一软解码;
如果所述第一软解码不成功,则:
使用考虑来自相邻存储器单元的影响的来自所述相邻存储器单元的LLR值和现有权重系数来更新现有LLR值;
使用更新后的LLR值执行第二软解码;
如果所述第二软解码成功,则:
确定所述解码成功;
将经解码的数据提交至所述主机;
执行权重系数的递归更新以反映来自相邻存储器单元的更新后的影响;并且
将递归更新后的权重系数存储在所述存储器控制器中以用于进一步解码。
14.根据权利要求8所述的非易失性数据存储装置,其中所述存储器控制器进一步使用编程/擦除周期PEC、读取干扰RD和保持时间RET的函数来估计权重系数,并且利用所述权重系数对所述数据施加邻区辅助以及位线干扰校正。
15.根据权利要求8所述的非易失性数据存储装置,其中所述存储器控制器进一步在软解码成功之后在运行中使用所述递归更新后的权重系数执行软解码。
16.一种操作存储系统的方法,所述存储系统包括以阵列布置的存储器单元,以及存储器控制器,联接至所述存储器单元以控制所述存储器单元的操作,所述方法包括:
响应于来自主机的读取命令执行读取操作;
使用存储在所述存储器控制器中的现有LLR值,即对数似然比值,对来自所述读取操作的数据执行第一软解码;
使用考虑来自相邻存储器单元的影响的来自所述相邻存储器单元的LLR值和现有权重系数来更新现有LLR值;
使用更新后的LLR值执行第二软解码;
如果所述第二软解码成功,则:
确定所述解码成功;
将经解码的数据提交至所述主机;
执行权重系数的递归更新以反映来自相邻存储器单元的更新后的影响;以及
将更新后的权重系数存储在所述存储器控制器中以用于进一步解码。
20.根据权利要求16所述的方法,进一步包括在软解码成功之后在运行中使用递归更新后的权重系数执行软解码。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862713958P | 2018-08-02 | 2018-08-02 | |
US62/713,958 | 2018-08-02 | ||
US16/421,204 US10877840B2 (en) | 2018-08-02 | 2019-05-23 | Dynamic neighbor and bitline assisted correction for NAND flash storage |
US16/421,204 | 2019-05-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110797074A true CN110797074A (zh) | 2020-02-14 |
CN110797074B CN110797074B (zh) | 2023-04-28 |
Family
ID=69228662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910712318.5A Active CN110797074B (zh) | 2018-08-02 | 2019-08-02 | 用于nand闪速存储装置的动态邻区和位线辅助校正 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10877840B2 (zh) |
CN (1) | CN110797074B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110797075A (zh) * | 2018-08-02 | 2020-02-14 | 爱思开海力士有限公司 | 具有可重新配置的邻区辅助llr校正的nand闪速存储器 |
CN111798902A (zh) * | 2020-06-28 | 2020-10-20 | 山东华芯半导体有限公司 | 一种获得电荷俘获型3d nand闪存软信息的方法 |
CN112242157A (zh) * | 2020-09-30 | 2021-01-19 | 杭州海康存储科技有限公司 | 数据读电压的确定方法、参数确定方法、装置及设备 |
CN112669893A (zh) * | 2020-12-30 | 2021-04-16 | 杭州海康存储科技有限公司 | 确定待使用读电压的方法、系统、装置及设备 |
CN113496752A (zh) * | 2020-04-07 | 2021-10-12 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11663079B2 (en) * | 2021-02-07 | 2023-05-30 | Micron Technology, Inc. | Data recovery using a combination of error correction schemes |
US11398835B1 (en) * | 2021-08-05 | 2022-07-26 | Micron Technology, Inc. | Managing defective bitline locations in a bit flipping decoder |
US11722151B2 (en) | 2021-08-09 | 2023-08-08 | Micron Technology, Inc. | Bit flipping decoder based on soft information |
US11630590B1 (en) * | 2022-01-11 | 2023-04-18 | Silicon Motion, Inc. | Method and apparatus for performing access control of memory device with aid of aggressor bit information |
US11777522B1 (en) | 2022-03-28 | 2023-10-03 | Micron Technology, Inc. | Bit flipping decoder with dynamic bit flipping criteria |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1893282A (zh) * | 2005-07-07 | 2007-01-10 | 高维度有限公司 | 一跨序列排序涡轮码系统和其操作方法 |
CN101218644A (zh) * | 2005-08-31 | 2008-07-09 | 三星电子株式会社 | 软解码方法和设备、纠错方法和设备以及软输出方法和设备 |
US20100199149A1 (en) * | 2007-12-05 | 2010-08-05 | Hanan Weingarten | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of "first below" cells |
CN101847447A (zh) * | 2009-03-27 | 2010-09-29 | 联发科技股份有限公司 | 存储控制器、存储控制方法及数据存取系统 |
US8990665B1 (en) * | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US9270296B1 (en) * | 2013-11-13 | 2016-02-23 | Western Digital Technologies, Inc. | Method and system for soft decoding through single read |
CN105957553A (zh) * | 2015-03-09 | 2016-09-21 | 爱思开海力士有限公司 | 控制器、半导体存储系统及其操作方法 |
US20160276039A1 (en) * | 2015-03-16 | 2016-09-22 | Sk Hynix Memory Solutions Inc. | Memory controller and operating method thereof |
CN107436820A (zh) * | 2016-05-27 | 2017-12-05 | 大心电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
CN108073466A (zh) * | 2016-11-16 | 2018-05-25 | 爱思开海力士有限公司 | 用于减少数据访问延迟的介质质量感知ecc解码方法选择 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9117529B2 (en) * | 2011-12-23 | 2015-08-25 | Hgst Technologies Santa Ana, Inc. | Inter-cell interference algorithms for soft decoding of LDPC codes |
US9252817B2 (en) * | 2014-01-10 | 2016-02-02 | SanDisk Technologies, Inc. | Dynamic log-likelihood ratio mapping for error correcting code decoding |
US9916906B2 (en) * | 2014-02-27 | 2018-03-13 | Seagate Technology Llc | Periodically updating a log likelihood ratio (LLR) table in a flash memory controller |
US9690697B2 (en) | 2014-07-10 | 2017-06-27 | Kabushiki Kaisha Toshiba | Memory controller, storage device and memory control method |
US10218388B2 (en) * | 2015-12-18 | 2019-02-26 | SK Hynix Inc. | Techniques for low complexity soft decoder for turbo product codes |
US10389383B2 (en) * | 2017-07-19 | 2019-08-20 | SK Hynix Inc. | Low-complexity LDPC encoder |
US10997017B2 (en) | 2018-05-03 | 2021-05-04 | SK Hynix Inc. | Neighbor assisted correction error recovery for memory system and method thereof |
-
2019
- 2019-05-23 US US16/421,204 patent/US10877840B2/en active Active
- 2019-08-02 CN CN201910712318.5A patent/CN110797074B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1893282A (zh) * | 2005-07-07 | 2007-01-10 | 高维度有限公司 | 一跨序列排序涡轮码系统和其操作方法 |
CN101218644A (zh) * | 2005-08-31 | 2008-07-09 | 三星电子株式会社 | 软解码方法和设备、纠错方法和设备以及软输出方法和设备 |
US20100199149A1 (en) * | 2007-12-05 | 2010-08-05 | Hanan Weingarten | Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of "first below" cells |
CN101847447A (zh) * | 2009-03-27 | 2010-09-29 | 联发科技股份有限公司 | 存储控制器、存储控制方法及数据存取系统 |
US8990665B1 (en) * | 2011-04-06 | 2015-03-24 | Densbits Technologies Ltd. | System, method and computer program product for joint search of a read threshold and soft decoding |
US9270296B1 (en) * | 2013-11-13 | 2016-02-23 | Western Digital Technologies, Inc. | Method and system for soft decoding through single read |
CN105957553A (zh) * | 2015-03-09 | 2016-09-21 | 爱思开海力士有限公司 | 控制器、半导体存储系统及其操作方法 |
US20160276039A1 (en) * | 2015-03-16 | 2016-09-22 | Sk Hynix Memory Solutions Inc. | Memory controller and operating method thereof |
CN106169308A (zh) * | 2015-03-16 | 2016-11-30 | 爱思开海力士有限公司 | 存储器控制器及其操作方法 |
CN107436820A (zh) * | 2016-05-27 | 2017-12-05 | 大心电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
CN108073466A (zh) * | 2016-11-16 | 2018-05-25 | 爱思开海力士有限公司 | 用于减少数据访问延迟的介质质量感知ecc解码方法选择 |
Non-Patent Citations (1)
Title |
---|
陆宇峰: ""一种降低Turbo码系统延时的方法"" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110797075A (zh) * | 2018-08-02 | 2020-02-14 | 爱思开海力士有限公司 | 具有可重新配置的邻区辅助llr校正的nand闪速存储器 |
CN110797075B (zh) * | 2018-08-02 | 2023-08-25 | 爱思开海力士有限公司 | 具有可重新配置的邻区辅助llr校正的nand闪速存储器 |
CN113496752A (zh) * | 2020-04-07 | 2021-10-12 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
CN113496752B (zh) * | 2020-04-07 | 2023-08-29 | 群联电子股份有限公司 | 解码方法、存储器存储装置及存储器控制电路单元 |
CN111798902A (zh) * | 2020-06-28 | 2020-10-20 | 山东华芯半导体有限公司 | 一种获得电荷俘获型3d nand闪存软信息的方法 |
CN112242157A (zh) * | 2020-09-30 | 2021-01-19 | 杭州海康存储科技有限公司 | 数据读电压的确定方法、参数确定方法、装置及设备 |
CN112242157B (zh) * | 2020-09-30 | 2022-08-09 | 杭州海康存储科技有限公司 | 数据读电压的确定方法、参数确定方法、装置及设备 |
CN112669893A (zh) * | 2020-12-30 | 2021-04-16 | 杭州海康存储科技有限公司 | 确定待使用读电压的方法、系统、装置及设备 |
CN112669893B (zh) * | 2020-12-30 | 2022-08-16 | 杭州海康存储科技有限公司 | 确定待使用读电压的方法、系统、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110797074B (zh) | 2023-04-28 |
US10877840B2 (en) | 2020-12-29 |
US20200042384A1 (en) | 2020-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110797074B (zh) | 用于nand闪速存储装置的动态邻区和位线辅助校正 | |
US11005499B2 (en) | LDPC decoder, semiconductor memory system, and operating method thereof | |
US10484008B2 (en) | Memory system with on-the-fly error detection and termination and operating method thereof | |
CN110797075B (zh) | 具有可重新配置的邻区辅助llr校正的nand闪速存储器 | |
CN112783685A (zh) | 快速收敛的低密度奇偶校验码的位翻转解码器 | |
KR102631407B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
KR102556479B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US10200063B2 (en) | Memory controller, semiconductor memory system and operating method thereof | |
US20190089384A1 (en) | Memory system | |
US20220068401A1 (en) | Efficient read-threshold calculation method for parametric pv-level modeling | |
US11025281B2 (en) | Memory system | |
US10326473B2 (en) | Symbol-based coding for NAND flash devices | |
JP7237674B2 (ja) | メモリシステム | |
CN112860474A (zh) | 快速收敛的低密度奇偶校验码的软位翻转解码器 | |
CN112133359B (zh) | Nand闪存的错误特性估计 | |
CN111049530A (zh) | 纠错电路及其操作方法 | |
US11387845B2 (en) | LDPC decoder, operating method of LDPC decoder, and semiconductor memory system | |
TWI837354B (zh) | 廣義低密度同位檢查碼的軟輸入軟輸出組件碼解碼器 | |
KR102530269B1 (ko) | Ldpc 디코더, 반도체 메모리 시스템 및 그것의 동작 방법 | |
US11967970B2 (en) | Bit-flipping decoder and decoding method for irregular codes | |
Haratsch | Media management for high density NAND flash memories | |
US11881871B1 (en) | On-the-fly scaling factor change for irregular LDPC codes | |
CN116954984A (zh) | Crc终止时的准确ber报告 | |
KR20190132877A (ko) | 컨트롤러 및 그것의 동작 방법 | |
CN116743188A (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 |