CN109873646B - 使用级联码的软芯片猎杀恢复 - Google Patents
使用级联码的软芯片猎杀恢复 Download PDFInfo
- Publication number
- CN109873646B CN109873646B CN201811394212.7A CN201811394212A CN109873646B CN 109873646 B CN109873646 B CN 109873646B CN 201811394212 A CN201811394212 A CN 201811394212A CN 109873646 B CN109873646 B CN 109873646B
- Authority
- CN
- China
- Prior art keywords
- data bits
- word line
- decoding
- decoder
- bits
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- 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
-
- 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
-
- 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/253—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with concatenated 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/25—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM]
- H03M13/255—Error detection or forward error correction by signal space coding, i.e. adding redundancy in the signal constellation, e.g. Trellis Coded Modulation [TCM] with Low Density Parity Check [LDPC] 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/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/2906—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 using block 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/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/2906—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 using block codes
- H03M13/2927—Decoding strategies
-
- 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/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- 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
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C8/00—Arrangements for selecting an address in a digital store
- G11C8/10—Decoders
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)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
Abstract
本发明涉及一种根据使多个失败字线能够恢复的芯片猎杀方案的存储器读取和写入的技术。在示例中,当将数据写入至存储器的超级块时,超级块的字线存储“D+P”个奇偶校验位,该“D+P”个奇偶校验位保护长度为“2D+P”的码字的“D”个数据位。超级块的其他字线存储每个长度为“D+P”的码字(例如,“D”个数据位和“P”个奇偶校验位)。如果长度为“D+P”的这些码字中的任何一个的解码失败,则使用“D+P”个奇偶校验位来再次解码失败的字线。
Description
相关申请的交叉引用
本申请要求于2017年11月21日提交的申请号为62/589,471,题目为“使用级联码的软芯片猎杀(chip-kill)恢复”的美国临时申请的优先权,该临时申请被转让给本受让人并且其全部内容通过引用明确并入本文。
背景技术
数据的完整性是任何数据存储装置和数据传输的重要特征。强错误校正码(ECC)被推荐用于包括NAND闪速存储器装置的各种类型的数据存储装置。ECC也经常用于数据传输进程中。
错误校正码(ECC)是指向消息中添加冗余数据或奇偶校验数据的代码,使得即使在传输进程期间或存储期间中引入了多个错误时,接收器也能够恢复该消息。通常,ECC可以校正错误直到达到所使用代码的能力。低密度奇偶校验码(LDPC)是ECC的一个示例。
在诸如NAND闪速存储器装置的数据存储装置中,数据可以被写入至数据存储装置的字线和位线并且从数据存储装置的字线和位线读取。字线和位线失败在NAND中很常见。在现有系统中,有各种技术可以处理这些失败。通常,使用诸如LDPC解码器的解码器来解码数据位。如果解码失败,则使用芯片猎杀奇偶校验。芯片猎杀是指一种防止存储器失败的ECC计算机存储器技术。芯片猎杀奇偶校验依赖于存储数据位的XOR,并且在LDPC解码器失败时,使用经XOR运算的数据位来推导出失败的码。
然而,在这些系统中,解码失败可能是由超出LDPC解码器的错误校正能力的大量错误引起的。在这些情况下,芯片猎杀奇偶校验可能不允许恢复失败的位。因此,芯片猎杀可能无法提供期望的保护。
发明内容
描述了一种根据使多个失败字线能够恢复的芯片猎杀方案的存储器读取和写入的技术。在示例中,计算机系统通过对来自超级块的字线的数据位至少执行一次或多次XOR运算来生成“D”个中间数据位。这些字线包括第一字线和第二字线。该超级块包括第一存储器管芯的第一块和第二存储器管芯的第二块。第一块包含第一字线。第二块包含第二字线。第一字线和第二字线的每一个存储“D”个数据位和保护“D”数据位的“P”个奇偶校验位。“D”和“P”中的每一个都是大于或等于1的正整数。计算机系统生成“K”个奇偶校验位,其保护“D”个中间数据位。“K”等于“D”和“P”的和。计算机系统将“K”个奇偶校验位存储在超级块的除这些字线之外的附加字线中。此外,计算机系统基于使用附加字线中存储的“K”个奇偶校验位的解码程序从超级块中输出经解码的数据位。
附图说明
通过参考下面的附图,可以实现对各种实施例的性质和优点的了解。在附图中,相似的组件或特性可以具有相同的附图标记。此外,通过在附图标记之后跟随以破折号和在相似组件之中加以区分的第二标记可以区分相同类型的各种组件。如果在说明书中只使用第一附图标记,则该描述适用于任何一个具有相同第一附图标记的相似组件,而与第二附图标记无关。
图1示出了根据本公开的某些实施例的错误校正系统的示例高级框图。
图2示出了根据本公开的某些实施例的包括主机和存储装置的计算机系统的示例。
图3示出了根据本公开的某些实施例的将数据写入至存储装置的超级块的示例。
图4示出了根据本公开的某些实施例的从存储装置的超级块读取数据的示例。
图5示出了根据本公开的某些实施例的将数据写入至存储装置的超级块和从存储装置的超级块读取数据的示例流程。
图6示出了根据本公开的某些实施例的当字线是唯一失败字线时用于恢复来自超级块的该字线的示例流程。
图7示出了根据本公开的某些实施例的用于恢复来自超级块的多个失败字线的示例流程。
图8示出了根据本公开的某些实施例的解码多个失败的字线的示例。
图9示出了根据本公开的某些实施例的可以使用的系统的一种潜在实施方式。
具体实施方式
本公开的实施例涉及改进计算机系统的存储器读取。在示例中,数据被写入计算机系统的存储装置,诸如NAND闪速存储器装置。基于存储在存储器中的字线和位线中的位的解码,从存储器中读取数据。在由计算机系统的解码器(例如,LDPC解码器)对数据进行解码过程中,可以较早地检测到字线失败和位线失败并且进一步避免使用失败的字线和位线。与现有的芯片猎杀奇偶校验不同,基于存储的数据位而生成附加ECC码并且将该ECC码的奇偶校验位存储在存储器中。因为该ECC码的码率相对较低,因此该ECC码具有高得多的错误校正能力。存储的奇偶校验位用于解码失败字线和失败位线并恢复数据。因此,可以解码多个具有超出解码器的错误校正能力的失败的失败字线和失败位线,从而相对于现有的芯片猎杀奇偶校验提高了存储器读取。
在实施例中,存储装置的超级块包括横跨超级块的多个块分布的“N”个字线,其中“N”是大于1的正整数。数据被写入到超级块的“N-1”个字线中。写入数据包括使用LDPC编码器或一些其他ECC编码器对数据进行编码。让“D”和“P”分别表示存储在“N-1”个字线的每一个中的LDPC码字(或者,如果适用的话,根据ECC编码器生成的任何其他ECC码字)的数据长度和奇偶校验长度。这些LDPC码字的每个的长度是“D+P”以及其码率是“D/(D+P)”。“N-1”个字线中的数据部分被进行XOR运算(XOR’ed)以生成“D”个中间数据位DXOR。通过使用“D+P”个奇偶校验位保护“D”个中间数据位DXOR,来生成不同的LDPC码字(或任何其他ECC码字)。该码字的长度为“2D+P”并且其码率为“D/(2D+P)”。“D+P”个奇偶校验位被存储在超级块的最后字线中。相比之下,现有的芯片猎杀奇偶校验相当于“N-1”个字线的XOR并且码率为“D/(D+P)”。因为不同的码字有更高的码率(例如,相比于“D/(D+P)”的“D/(2D+P)”),该码字实际上是一种改进的芯片猎杀奇偶校验,可以用来更成功地解码失败字线,从而提高存储器读取。
为了清楚地解释,结合LDPC码字描述了本公开的实施例。然而,实施例同样适用于其他类型的ECC码字。特别是,可以通过实施等效的ECC编码器和解码器来使用ECC码字的目标类型。同样为了清楚地解释,结合失败字线描述了本公开的实施例。然而,实施例同样适用于失败位线,因此可以生成不同的ECC码字(例如,具有较长的长度),并将其奇偶校验位存储和使用在失败位线的解码中。
图1示出了根据本公开的某些实施例的错误校正系统100的示例高级框图。在示例中,结合数据存储来描述LDPC码。然而,本公开的实施例不限于此。相反,实施例同样适用于LDPC码的其他用途,包括例如数据传输。
LDPC码是由稀疏奇偶校验矩阵H定义的线性分组码,其由0和1组成。本文使用的术语“稀疏矩阵”是指每列和每行中的非零值的数量远小于其维度的矩阵。本文使用的术语“列权重”是指奇偶校验矩阵H具体列中的非零值的数量。本文使用的术语“行权重”是指奇偶校验矩阵H的具体行中的非零值的数量。通常,如果对应于LDPC码的奇偶校验矩阵中的所有列的列权重相似,则该码被称为“规则”LDPC码。另一方面,如果列权重中的至少一个与其他列权重不同,则LDPC码被称为“非规则”LDPC码。通常,非规则LDPC码的错误校正能力比规则LDPC码的错误校正能力更好。
本公开还根据LDPC码的构造方法描述了LDPC码。可以是随机计算机搜索构造或代数构造。随机计算机搜索构造描述了一种具有由随机的基于计算机的程序设计的奇偶校验矩阵的LDPC码。代数构造表示奇偶校验矩阵基于组合方法而构造。准循环LDPC(QC-LDPC)码属于后一种构造方法。QC-LDPC码的一个优点是它们在编码程序方面能相对容易地实施。QC-LDPC码的主要特征是奇偶校验矩阵由循环子矩阵组成,循环子矩阵可以基于单位矩阵或者较小的随机矩阵。还可以使用置换向量来创建循环子矩阵。
如图所示,LDPC编码器110接收信息位,该信息位包括期望被存储在存储系统120中的数据。经LDPC编码的数据通过LDPC编码器110输出并写入至存储系统120。
在各个实施例中,存储系统120可以包括各种存储类型或介质,诸如(例如,磁性的)磁盘驱动器存储,闪存等等。在一些实施例中,这些技术被使用在收发器中,而不是被写入存储系统或从存储系统读取,通过有线和/或无线信道来传输和接收数据。在这种情况下,在传输码字期间,错误可能被引入至接收的码字中。
当(例如,由存储数据的应用程序或用户)请求或以其它方式期望所存储的数据时,检测器130从存储系统120接收数据。接收到的数据可能包括一些噪声或错误。检测器130对接收到的数据执行检测,并输出判定和/或可靠性信息。例如,软输出检测器针对每一个被检测的位输出可靠性信息和判定。另一方面,硬输出检测器输出对每个位的判定,而不提供对应的可靠性信息。作为示例,硬输出检测器可输出特定位是“1”或“0”的判定,而不指示硬输出检测器对该判定的确信或确定程度。相反,软输出检测器输出判定和与判定相关的可靠性信息。通常,可靠性值表示探测器对于给定判定的确定程度。在一个示例中,软输出检测器输出对数似然比(LLR),其中正负号(sign)指示判定(例如,正值对应于“1”判定和负值对应于“0”判定),并且量值指示检测器表示对该判定的确信或确定程度(例如,较大的量值表示较高的可靠性或确定性)。
判定和/或可靠性信息被传递给LDPC解码器140,LDPC解码器140使用判定和可靠性信息来执行LDPC解码。软输入解码器利用判定和可靠性信息二者对码字进行解码。硬解码器仅利用解码器中的判定值对码字进行解码。由LDPC解码器140生成的解码位被传递至适当的实体(例如,请求信息位的用户或应用程序)。通过恰当的编码和解码,信息位与解码位匹配。
在各个实施例中,可使用包括如下的各种技术来实施所示出的系统:应用型专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或通用处理器(例如,高级RISC机器(ARM)内核)。
LDPC码通常用二分图表示。一组节点、变量或位节点对应于码字的元素,以及另一组节点(例如,校验节点)对应于码字满足的一组奇偶校验约束。通常,边缘连接被随机选择。如果图中避免编解码信息单元长度的循环,则LDPC码的错误校正能力提高。在(r,c)规则码中,n个变量节点(V1,V2,……,Vn)中的每一个具有与r个校验节点的连接,并且m个校验节点(C1,C2,……,Cm)中的每一个都具有与c个位节点的连接。在非规则LDPC码中,校验节点度是不统一的。类似地,变量节点度是不统一的。在QC-LDPC码中,奇偶校验矩阵H的结构为p×p矩阵块,因此块中的位仅参与块中的一个校验方程,并且块中的每个校验方程仅涉及到块中的一个位。在QC-LDPC码中,码字循环移位p而产生另一个码字。此处,p是方矩阵的大小,方矩阵是零矩阵或者是循环矩阵。这是循环码的概述,在循环码中码字循环移位1而产生另一个码字。p×p矩阵的块可以是大小为p×p的循环移位的单位矩阵。
通常,消息传递算法被用于对LDPC码进行解码。在本技术领域中存在消息传递算法的几种变型,诸如最小和(MS)算法、和积算法(SPA)等。消息传递使用变量节点和校验节点的网络。由奇偶校验矩阵的值来描述变量节点与校验节点之间的连接关系并且变量节点与校验节点之间的连接关系对应于校验矩阵的值。
在实施例中,可以执行硬判定消息传递算法。在第一步骤,变量节点中的每一个向连接到变量节点的一个或多个校验节点发送消息。在该情况下,消息是每个变量节点都认为是其正确值的值。
在第二步骤,校验节点中的每一个计算响应,以通过使用之前从变量节点接收到的信息将响应发送到与校验节点连接的变量节点。这个步骤可以称为校验节点更新(CNU)。响应消息对应于一个值,其中校验节点基于从与该校验节点连接的其他变量节点接收的信息认为该变量节点应当具有该值。使用奇偶校验方程来计算该响应,其中该方程使得连接到特定校验节点的所有变量节点的值的总和为0(模2)。
此时,如果所有校验节点的所有方程均被满足,则解码算法声明已找到正确的码字并终止解码。如果没有找到正确的码字,则使用变量节点从校验节点接收到的消息,利用来自变量节点的另一更新继续迭代,以使用多数决定原则来判定变量节点的位置处的位应当是0还是1。然后,变量节点将此硬判定消息发送至连接到它们的校验节点。迭代继续进行,直到找到正确的码字,根据码字(例如,经解码的码字)的校验子来执行一定数量的迭代,或者在没有找到正确码字的情况下执行最大数量的迭代。需要注意的是,软判定解码器类似地进行工作,但是,在校验节点和变量节点之间传递的每一个消息还包括每一个位的可靠性。
在另一个示例中,可以执行软消息传递算法。在本示例中,L(qij)表示由变量节点vi向校验节点cj发送的消息;L(rji)表示由校验节点cj向变量节点vi发送的消息;L(ci)表示针对每个变量vi的初始LLR值。针对每个L(qij)的变量节点处理可以通过以下步骤进行:
(1)从存储器中读出L(ci)和L(rji)。
(3)计算每个L(Qi-sum)-L(rij)。
(4)输出L(Qi-sum)并写回至存储器。
(5)如果这不是存储器的最后一列,则进行步骤1并且将i增加1。
(6)计算奇偶校验总和(例如,校验子),如果它们都等于零、迭代次数达到阈值并且奇偶校验总和大于另一个阈值、或者迭代次数等于最大限制值,则停止;否则,执行校验节点处理。
可以如下执行针对每个L(rji)的校验节点处理:
(1)从存储器中读取一行qij。
(2)如下计算L(Rj-sum):
αij=sign(L(qij)),βij=|L(qij)|,
(3)计算针对校验节点的单独的
(4)将L(rji)写回至存储器。
(5)如果这不是存储器的最后一行,则进行第一步骤并且将j增加1。
图2示出了根据本公开的某些实施例的包括主机210和存储装置220的计算机系统的示例。主机210执行I/O操作212,I/O操作212包括将数据写入至存储装置220以及从存储装置220读取数据。在示例中,写入数据包括利用一个或多个LDPC编码器(图2中未示出)对数据进行编码以生成存储在存储装置220中的LDPC码字。读取数据包括利用一个或多个LDPC解码器(图2中未示出)对LDPC码字进行解码以从存储装置220输出解码的数据。编码和解码(例如,LDPC编码器和LDPC解码器)是ECC系统的一部分,ECC系统可以被实施在主机210和存储装置220之间。
在示例中,存储装置220包括一定数量的存储器管芯222(这个数量在图2中被示出为“L”)。进而,每个存储器管芯222包括一定数量的块224(这个数量在图2中被示出为“M”),每一个块包含一定数量的字线226(这个数量在图2中被示出为“i”)。形成超级块228并且每个超级块228包含来自每个管芯222的块224。
如图所示,超级块“0”包括横跨不同管芯222的块“0”。管芯“0”中且属于超级块“0”的块“0”包括字线“0”至字线“i-1”。因此,超级块“0”包含“N”个字线,这被示出为字线“0”至字线“N-1”。
每个字线被配置为存储一定数量的数据位,诸如16千字节的数据。在每个超级块内,字线“0”至字线“N-2”存储与由主机210写入的数据相对应的LDPC码字(例如,信息位)。字线“N-1”(例如,最后字线)存储根据本公开实施例的芯片猎杀奇偶校验数据位。虽然示出了最后字线,但是芯片猎杀奇偶校验数据位可以被替代存储在超级块的任何其他字线中。通常,超级块包括字线和附加字线(例如,字线“0”至字线“N-2”和字线“N-1”)。字线存储与信息位相对应的LDPC码字。附加字线存储芯片猎杀奇偶校验位。
图3示出了根据本公开的某些实施例的将数据写入至存储装置的超级块310(诸如,写入至图2的存储装置220的超级块“0”)的示例。超级块310被示出在图3的左侧。用于生成芯片猎杀奇偶校验的程序350被示出在图3的右侧。
如图所示,超级块310包括多个字线,该多个字线存储基于信息位而生成的LDPC码字。在图3中,这些字线被标记为320(0)至320(N-2)。LDPC码字中的每个包括与信息位的部分相对应的“D”个数据位322以及保护“D”个数据位的“P”个奇偶校验位324。“D”和“P”中的每一个是大于或等于1的正整数。因此,每个LDPC码字的长度为“D+P”并且可以由第一LDPC编码器生成。
超级块310还包括存储“D+P”个奇偶校验位PXOR 332的附加字线330(示为字线“N-1”)。在示例中,PXOR 332具有长度“D+P”并且是一组奇偶校验位,其中该奇偶校验位对应于根据程序350生成的芯片猎杀奇偶校验。
为了生成PXOR 332,程序350包括多个步骤。在程序350的第一步骤中,将一个或多个XOR运算应用于超级块310的字线的数据部分(而不是奇偶校验部分)(例如,存储在字线320(0)至320(N-2)中的“D”数据位被进行XOR运算)。横跨字线320(0)至320(N-2)的“D”个数据位的XOR是“D”个中间数据位DXOR 354。DXOR 354具有长度“D”并且是一组数据位,其中该数据位对应于横跨超级块310的字线的“D”个数据位的XOR。
在程序350的第二步骤中,生成较低码率的LDPC码字356。该码字356可以由与第一LDPC编码器不同的第二LDPC编码器生成。具体地,利用形成较低码率的LDPC码字356的“D+P”个奇偶校验位PXOR 332来保护“D”个中间数据位DXOR 354。因此,较低码率的LDPC码字356的长度为“2D+P”并且码率为“D/(2D+P)”(而存储在字线中的LDPC码字具有较短的长度“D+P”和较高的码率“D/(D+P)”)。
在示例中,一旦生成较低码率的LDPC码字356,“D+P”个奇偶校验位PXOR 332就被存储在超级块310的附加字线330中。“D”个中间数据位DXOR 354不需要被存储,并且在解码期间根据需要可以在运行中再次生成。
图4示出了根据本公开的某些实施例的从超级块310读取数据的示例。读取数据包括由第一LDPC解码器410(示出为较低错误校正能力LDPC解码器)解码数据,并且根据需要使用第二LDPC解码器420(示出为较高错误校正能力LDPC解码器)来恢复失败。
在示例中,第一LDPC解码器410对存储在超级块310的字线320(0)至320(N-2)中的LDPC码字进行解码。因此,该第一LDPC解码器410的错误校正能力与这些码字的码率“D/(D+P)”相关联。第二LDPC解码器420基于存储在超级块310的字线“N-1”330中的“D+P”个奇偶校验位PXOR 332,对较低码率的LDPC码字356进行解码。在这种情况下,通过对字线320(0)至320(N-2)的数据部分进行XOR运算,来在运行中生成“D”个中间数据位DXOR 354,并且LDPC解码器420对DXOR 354和PXOR 332执行解码。因此,第二LDPC解码器420的错误校正能力与较低码率LDPC码字356的码率“D/(2D+P)”相关联,因此高于第一LDPC解码器410的错误校正能力。
如图所示,第一LDPC解码器410对存储在字线320(0)至320(N-2)中的LDPC码字进行解码。如果检测到一个或多个解码失败412,则使用第二LDPC解码器420来恢复失败。否则,由第一LDPC解码器410解码的位414被从超级块310输出。
例如,当字线中(例如,存储在字线中的LDPC码字的解码位中)的错误位的数量大于第一LDPC解码器410的错误校正能力时,检测到解码失败。该字线可以被声明为失败字线。可以从第一LDPC解码器410输出错误位的数量,并且错误位的数量对应于例如未满足的校验节点的数量。
如果检测到一个或多个失败字线,则第二LDPC解码器420解码较低码率的LDPC码字356并输出“D”个解码中间数据位D’XOR422。解码的D’XOR 422(例如,硬位)或与可从第二LDPC解码器420获得的解码的D’XOR 422相关的软信息被提供给第一解码器410,以重新尝试对失败字线的解码。可以迭代地重复该过程,直到恢复所有失败字线或者直到达到最大迭代次数。
因此,如果在由较低错误校正能力LDPC解码器进行的软解码中,在超级块中存在“T”个码字失败,则可以使用较高错误校正能力LDPC解码器来更新软信息。从较低错误校正能力LDPC解码器输出“T”个码字失败,其中“T1”个码字具有收敛解码,并且“T2”个码字具有发散解码,其中“T=T1+T2”,“T1≤T”且“T2≤T”。收敛解码通常具有一定数量的未满足的校验节点,该数量基于软消息更新而减少,而发散解码通常具有一定数量的未满足的校验节点,该数量基于软消息更新而增加。在构造XOR奇偶校验信息时,避免了来自发散码字的软信息并且使用了信道信息。通过利用该信息,在XOR数据中的错误数量显著减少。较高错误校正能力LDPC解码器是强解码器并且它可以容易地校正这些错误并适当地更新位的软信息。该信息可以进一步用于校正失败码字中的位。可以迭代地执行该解码,直到成功恢复数据。
图5示出了根据本公开的某些实施例的将数据写入至存储装置的超级块和从存储装置的超级块读取数据的示例流程500。计算机系统被描述为执行示例流程500的特定操作。该计算机系统包括存储装置和LDPC系统,但是可以类似地使用任何其他ECC系统。LDPC系统可以具有特定硬件,该特定硬件被配置以执行示例流程500中示出的操作。可选地或附加地,LDPC系统可以包括配置有特定指令的通用硬件。例如,计算机系统包括一个或多个处理器和一个或多个存储器,其中该一个或多个存储器包括数据存储装置。存储器存储计算机可读指令以实现LDPC系统特有的功能。当由计算机系统的处理器运行指令时,这导致操作的执行。存储在存储器中的指令与底层处理器结合代表用于执行操作的器件。尽管以特定的顺序示出了操作,但是对于本领域技术人员来说显而易见的是,操作的其他布置是可能的,并且可以跳过一些操作。
为了清楚地解释,使用超级块的第一字线和第二字线来示出示例流程500,其中这两个字线存储编码信息位的LDPC码字。然而,超级块可以包含存储这种LDPC码字的更多数量的字线。此外,超级块包含存储“D+P”个奇偶校验位PXOR的附加字线。
如图所示,示例流程500以操作502开始,在操作502中计算机系统通过对来自超级块的字线的数据位至少执行一次或多次XOR运算,来生成“D”个中间数据位DXOR。在示例中,DXOR是来自这些字线的数据位的XOR。字线存储编码信息位的LDPC码字并且包括第一字线和第二字线。该超级块包括存储装置的第一存储器管芯上的第一块和存储装置的第二存储器管芯上的第二块。第一块包括第一字线。第二块包括第二字线。第一字线和第二字线中的每个被配置为存储“D”个数据位和保护“D”个数据位的“P”个奇偶校验位,使得字线存储LDPC码字中的一个。“D”和“P”中的每一个都是大于或等于1的正整数。
在操作504中,计算机系统生成“K”个奇偶校验位PXOR,其保护“D”个中间数据位DXOR,其中“K”等于“D”和“P”之和。在示例中,LDPC编码器生成编码“D”个中间数据位DXOR的较低码率的LDPC码字。该码字的奇偶校验位是“K”奇偶校验位PXOR。
在操作506中,计算机系统将“K”个奇偶校验位PXOR存储在超级块的附加字线中而不是字线中。在示例中,该附加字线是超级块的最后字线(或某其他字线),在附加字线中没有存储LDPC码字编码信息位。
在操作508中,计算机系统基于使用存储在附加字线中的“K”个奇偶校验位的解码程序,从超级块输出解码的数据位。如图所示,操作508可以包括多个子操作510-518。
在子操作510中,计算机系统利用第一解码器解码超级块的字线。在示例中,第一解码器是与码率“D/(D+P)”相关联的较低错误校正能力LDPC解码器。每个字线(例如,该字线中存储的LDPC码字)被输入到该LDPC解码器。输出解码的字线。
在子操作512中,计算机系统确定一定数量的失败字线。在示例中,每个解码的字线与一定数量的错误相关联。例如,第一解码器还输出每个解码字线的一定数量的未满足的校验节点。如果该数量超过第一解码器的错误校正能力,则相应的解码字线是失败字线。计算机系统追踪这种失败字线的数量。
在子操作514中,计算机系统确定失败字线的数量是1、大于1还是0。在确定该数量是1时,在操作514之后执行操作516。在确定该数量大于1时,在操作514之后替代地执行操作518。在确定该数量为0时,所有字线的解码成功并输出解码的位。
在子操作516中,计算机系统执行不依赖于其他字线的软信息的第一解码程序。在该子操作中,仅存在一个失败字线。假设该字线是第一字线以示出该解码程序。通过确定第一字线中的错误位的数量大于阈值(例如,大于第一解码器的错误校正能力),第一字线被检测为失败字线。基于错误位的数量大于阈值,计算机系统利用第二解码器来解码第一字线。第二解码器比第一解码器具有更高的错误校正能力。例如,该第二解码器具有较高错误校正能力LDPC解码器(其中“较高”和“较低”用于指代两个解码器的相对错误校正能力)。第二解码器输出“D”个解码中间数据位D’XOR,然后被用于重新解码第一字线。该重新解码不涉及其他字线的软信息,而是包括XOR运算。结合图6进一步示出该第一解码程序的示例。
为了输出“D”个解码中间数据位D’XOR,计算机系统通过至少重新执行一次或多次XOR运算来再次生成“D”个中间数据位DXOR。“D”个中间数据位DXOR和已存储的“K”个奇偶校验位形成低码率的LDPC码字。该码字被输入到第二解码器。第二解码器输出“D”个解码中间数据位D’XOR。
在子操作518中,计算机系统执行第二解码程序,该第二解码程序依赖于一个或多个其他失败字线的软信息。在该子操作中,存在多个失败字线。假设该多个字线包括第一字线和第二字线以示出该解码程序。此处,第二解码器还用于输出“D”个解码中间数据位D’XOR。关于“D”个解码中间数据位D’XOR的软信息或硬信息被提供给第一解码器。为解码第一字线(其是失败字线),还向第一解码器提供关于第二字线(其也是失败字线)的软信息以及可选地关于其他失败字线的软信息。另外,擦除关于第一字线的现有软信息(例如,第一字线的LLR被设置为零)。然后,基于关于“D”个解码中间数据位D’XOR的信息(硬或软)和关于一个或多个其他失败字线的软信息,第一解码器对第一字线进行解码。对于第二字线可以执行相同的操作,其中第二字线的解码擦除第二字线的软信息并且代替地使用关于第一字线的软信息。结合图7和图8进一步示出该第一解码程序的示例。
图6示出了根据本公开的某些实施例的当字线是唯一失败字线时用于恢复来自超级块的字线的示例流程600。在示例流程600中,出于说明性目的,将上文结合示例流程500描述的第一字线用作失败字线。
示例流程600从操作602开始,操作602中计算机系统利用第一解码器对第一字线进行解码。在操作604中,计算机系统确定利用第一解码器对第一字线的解码失败。在示例中,当错误位的数量超过第一解码器的错误校正能力时,计算机系统声明第一字线的解码失败。另外,在完成对超级块的剩余字线的解码时,计算机系统确定该第一字线是唯一失败字线。
在操作606中,计算机系统基于存储在超级块的附加字线中的“K”个奇偶校验位,利用第二解码器对“D”个中间数据位进行解码,以生成“D”个解码中间位D’XOR。
在操作608中,计算机系统通过对超级块的字线的子集至少执行一次或多次XOR运算来生成第二“D”个中间数据位D”XOR,其中超级块的字线的子集不包括第一字线。在示例中,超级块包括“N”个字线。字线“0”至“N-2”存储编码信息位的LDPC码字。字线“N-1”存储“K”奇偶校验位。在该示例中,第一字线对应于字线“0”(或字线“1”至“N-2”中的任何一个;“字线”0“用于说明性目的)。横跨字线“1”至“N-2”的数据位被进行XOR运算,以生成“D”个中间数据位D”XOR。换句话说,从存储LDPC码字的字线中移除第一字线以创建字线的子集,并且“D”个中间数据位D”XOR是该子集中的数据部分的XOR。
在操作610中,基于“D”个解码中间数据位D’XOR和第二“D”个中间数据位D”XOR,计算机系统对第一字线的“D”个数据位进行解码。在示例中,计算机系统对D’XOR和D”XOR进行XOR运算。因此,第一字线的“D”个数据位是D’XOR和D”XOR的XOR并作为第一字线的解码位输出。
图7示出了根据本公开的某些实施例的用于恢复来自超级块的多个失败字线的示例流程700。在示例流程700中,出于说明性目的,将上文结合示例流程500描述的第一字线和第二字线用作失败字线。
示例流程700从操作702开始,在操作702中计算机系统在第一迭代中利用第一解码器对第一字线和第二字线进行解码。在操作704中,计算机系统确定利用第一解码器对第一字线和第二字线的解码失败。在示例中,当经解码字线中的每个的错误位大于阈值(例如,超过第一解码器的错误校正能力)时,确定这些字线中的每一个的解码已失败。
在操作706中,计算机系统基于存储在超级块的附加字线中的“K”个奇偶校验位,利用第二解码器对“D”个中间数据位进行解码,以生成“D”个解码中间位D’XOR。
在操作708中,计算机系统在第二迭代(例如,第一迭代之后的迭代)中,基于与第二字线相关联的软信息和与“D”个解码中间数据位D’XOR相关联的信息,利用第一解码器来对第一字线进行解码。在示例中,在第一迭代中,从第一解码器输出与第二字线相关联的软信息。与“D”个解码中间数据位相关联的信息可从第二解码器获得并且可以是“D”个解码中间数据位D’XOR的对数似然比(LLR)和/或硬信息。另外,该操作包括擦除软信息(例如,将LLR设置为零),其中该软信息与第一字线相关联并且是第一迭代中的第一解码器的另一输出。
因此,在第二迭代中,第一解码器擦除关于第一字线的、可从先前迭代获得的软信息,具有关于第二字线的、可从先前迭代获得的软信息,并且具有关于D’XOR的信息。然后,第二解码器在第二迭代中再次解码第一码字。如果在该解码之后,解码的第一字线中的错误数量增加(例如,未满足的校验节点的相应数量增加),则第一字线的解码已经发散。在这种情况下,擦除关于第一字线的、可从第二迭代中获得的软信息,并且关于第一字线的、可从先前迭代中获得的软信息可被再次使用在例如第二迭代中的对第二字线的解码。另一方面,如果在该解码之后,解码的第二字线中的错误数量减少,则第一字线的解码已经收敛。在这种情况下,保留关于第一字线的、可从第二迭代获得的软信息并将其用于例如第二迭代中的第二字线的解码。
在操作710中,在第二迭代中并且在第二迭代中解码第一字线之后,计算机系统基于与第一字线相关联的软信息和与“D”个解码中间数据位D’XOR相关联的信息,利用第一解码器来对第二字线进行解码。与第一字线相关联的软信息是第二迭代中的来自第一解码器的另一输出,并且如上所述取决于第一字线的解码是收敛还是发散。因此,在第二迭代中,第一解码器擦除关于第二字线的、可从先前迭代获得的软信息,具有关于第一字线的软信息(取决于第一字线的解码收敛还是发散),并且具有关于D’XOR的信息。然后,第二解码器在第二迭代中重新解码第二码字。此处,还取决于该重新解码是收敛还是发散,从而将保留关于第二字线的、可从先前迭代(例如,第一迭代)获得的软信息(例如,在发散的情况下)还是将保留关于第二字线的、可从当前迭代(例如,第二迭代)中获得的软信息(例如,在收敛的情况下)。
在示例中,迭代地重复操作708-710,直到成功解码两个字线或者直到达到最大迭代次数。
图8示出了根据本公开的某些实施例的解码多个失败字线的示例。更具体地,图8提供了使用图7的操作708-710的迭代解码的形象图(visualization)。
如图所示,可以使用校验节点更新(CNU),校验节点更新使用诸如MS或SPA算法的消息传递算法。每个失败字线(示为字线820(1)、820(2)至820(T))对应于被连接的变量节点。“D”个解码中间数据位D’XOR 830也对应于变量节点。这些变量节点连接到校验节点810。
为了利用第一解码器(例如,较低错误校正能力解码器)来解码第一失败字线820(1),将消息更新840从校验节点810传递到第一解码器。基于消息传递算法生成该消息更新840。具体地,从与剩余的失败字线820(2)至820(T)和D’XOR 830相对应的剩余变量节点的每个向校验节点810提供消息。每个消息都包括与相应变量节点相关的软或硬信息。这样,消息822(2)包括关于第二字线820(2)的软信息或硬信息。类似地,消息822(T)包括关于最后失败字线820(T)的软信息或硬信息。消息832包括关于D’XOR 830的软信息或硬信息。消息传递算法用于基于消息822(2)至822(T)和消息832而生成消息更新840。
当解码第一失败字线820(1)时,第一解码器使用消息更新840。另外,可以擦除关于第一字线820(1)的现有软或硬信息。可选地,现有信息和消息更新840中的每个可以被加权并且结合第一失败字线820(1)的解码使用。
图9示出了根据本公开的某些实施例的可使用的系统的一种潜在实施方式。图9仅仅是对本公开的实施例的说明并且不限制权利要求中所述的本公开的范围。在一项实施例中,该系统是计算机系统900,其通常包括显示屏910,计算机920,用户输出装置930,用户输入装置940,通信接口950等。
如图9所示,计算机920可以包括处理器960,处理器960经由总线子系统990与多个外围装置通信。这些外围装置可以包括用户输出装置930,用户输入装置940,通信接口950和诸如随机存取存储器(RAM)970和磁盘驱动器980的存储子系统。
用户输入装置930包括用于向计算机系统920输入信息的所有可能类型的装置和机制。这些可以包括键盘,小键盘,结合到显示器中的触摸屏,诸如语音识别系统、麦克风的音频输入装置和其他类型的输入装置。在各个实施例中,用户输入装置930通常实现为计算机鼠标,轨迹球,触控板,操纵杆,无线遥控器,绘图板,语音命令系统,眼动追踪系统等。用户输入装置930通常允许用户通过诸如点击按钮等的命令来选择出现在显示屏910上的对象,图标,文本等。
用户输出装置940包括用于从计算机920输出信息的所有可能类型的装置和机制。这些可以包括显示器(例如,显示屏910),诸如音频输出装置的非可视显示器等。
通信接口950提供与其他通信网络和装置的接口。通信接口950可以用作从其他系统接收数据和向其他系统传输数据的接口。通信接口950的实施例通常包括以太网卡,调制解调器(电话、卫星、电缆、ISDN),(异步)数字用户线(DSL)单元,火线接口,USB接口等。例如,通信接口950可以联接到计算机网络,火线总线等。在其他实施例中,通信接口950可以物理地集成在计算机920的主板上,并且可以是软件程序,诸如软DSL等。
在各个实施例中,计算机系统900还可以包括能够通过诸如HTTP协议、TCP/IP协议、RTP/RTSP协议等的网络进行通信的软件。在本公开的可选实施例中,还可以使用其他通信软件和传输协议,例如IPX,UDP等。在一些实施例中,计算机920包括来自Intel的一个或多个Xeon微处理器作为处理器960。此外,在一项实施例中,计算机920包括基于UNIX的操作系统。
RAM 970和磁盘驱动器980是被配置为存储诸如本公开的实施例的、包括可执行计算机代码,人类可读代码等的数据的有形介质的示例。其他类型的有形介质包括软盘,可移动硬盘,诸如CD-ROM、DVD和条形码的光学存储介质,诸如闪速存储器、非瞬态只读存储器(ROM)、带备份电池的易失性存储器的半导体存储器,网络化存储装置等。RAM 970和磁盘驱动器980可以被配置为存储提供本公开的功能的基本程序和数据构造。
提供本公开的功能的软件码模块和指令可以存储在RAM 970和磁盘驱动器980中。这些软件模块可以由处理器960运行。RAM 970和磁盘驱动器980还可以提供用于存储根据本公开使用的数据的存储库。
RAM 970和磁盘驱动器980可以包括多个存储器,包括用于在程序运行期间存储指令和数据的主随机存取存储器(RAM)和存储固定的非瞬态指令的只读存储器(ROM)。RAM970和磁盘驱动器980可以包括文件存储子系统,其为程序和数据文件提供持久(非易失性)存储。RAM 970和磁盘驱动器980还可以包括诸如可移动闪速存储器的可移动存储系统。
总线子系统990提供用于使计算机920的各个部件和子系统按预期彼此通信的机制。尽管总线子系统990被示意性地示为单个总线,但总线子系统的替代实施例可以利用多个总线。
图9是能够实现本公开的计算机系统的代表。对于本领域普通技术人员来说显而易见的是,许多其他硬件和软件配置适合用于本公开。例如,计算机可以是台式,便携式,机架式或平板式配置。另外,计算机可以是一系列网络化计算机。此外,考虑使用其他微处理器,例如PentiumTM或ItaniumTM微处理器,来自超威半导体公司的OpteronTM或AthlonXPTM微处理器;等等。此外,考虑其他类型的操作系统,例如微软公司的等,太阳微系统公司的Solaris、LINUX、UNIX等。在其他实施例中,上述技术可以在芯片或辅助处理板上实施。
本公开的各个实施例可以软件或硬件中的逻辑的形式或两者的组合来实施。该逻辑可作为一组指令存储在计算机可读或机器可读的非瞬态存储介质中,该组指令适于引导计算机系统的处理器执行本公开的实施例中公开的一组步骤。该逻辑可以形成计算机程序产品的一部分,该计算机程序产品适于引导信息处理装置执行本公开的实施例中公开的一组步骤。基于本文提供的公开和教导,本领域普通技术人员将理解实施本公开的其他方式和/或方法。
这里描述的数据结构和代码可以部分地或完全地存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括,但不限于易失性存储器,非易失性存储器,诸如磁盘驱动器、磁带、CD(光盘)、DVD(数字通用光盘或数字视频光盘)的磁性和光学存储装置,或者现在已知或以后开发的能够存储代码和/或数据的其他介质。这里描述的硬件模块或设备包括,但不限于应用型专用集成电路(ASIC),现场可编程门阵列(FPGA),专用或共享处理器和/或现在已知或以后开发的其他硬件模块或装置。
本文描述的方法和进程可以部分或完全实现为存储在计算机可读存储介质或装置中的码和/或数据,从而当计算机系统读取并执行码和/或数据时,计算机系统执行相关联的方法和进程。所述方法和进程还可以部分或完全实现在硬件模块或装置中,使得当激活硬件模块或装置时,它们执行相关联的方法和进程。可以使用代码,数据和硬件模块或设备的组合来实现本文公开的方法和进程。
尽管为了清楚理解的目的已经详细描述了前述实施例,但是本公开不限于所提供的细节。存在实施本公开的许多替代方法。所公开的实施例是说明性的而非限制性的。
Claims (20)
1.一种在计算机系统上实施的方法,以用于从存储器的超级块输出数据,所述方法包括:
通过对来自超级块的字线的数据位至少执行一次或多次XOR运算来生成“D”个中间数据位,其中:
所述字线包括第一字线和第二字线,
所述超级块包括第一存储器管芯上的第一块和第二存储器管芯上的第二块,
所述第一块包括所述第一字线以及所述第二块包括所述第二字线,并且
所述第一字线和所述第二字线中的每个存储“D”个数据位和“P”个奇偶校验位,
生成保护所述“D”个中间数据位的“K”个奇偶校验位,其中“K”等于“D”和“P”之和;
将所述“K”个奇偶校验位存储在所述超级块的、除所述字线之外的附加字线中;并且
基于使用存储在所述附加字线中的“K”个奇偶校验位的解码程序,从所述超级块输出经解码的数据位。
2.根据权利要求1所述的方法,其中所述从所述超级块输出经解码的数据位包括:
利用第一解码器解码所述字线;
确定所述第一字线中的错误位的数量大于阈值;并且
基于所述错误位的数量大于所述阈值,利用第二解码器解码所述第一字线,其中相比于所述第一解码器,所述第二解码器与较高错误校正能力相关。
3.根据权利要求2所述的方法,其中所述字线的每个中的“D”个数据位和“P”个奇偶校验位形成与D/(D+P)码率相关的错误校正码,其中所述“D”个中间数据位和所述“K”个奇偶校验位形成与D/(2D+P)码率相关联的不同错误校正码,并且其中所述第二解码器的所述较高错误校正能力是基于D/(2D+P)码率的。
4.根据权利要求1所述的方法,其中所述从所述超级块输出经解码的数据位包括:
确定一定数量的失败字线;
确定所述数量等于1还是大于1;并且
在确定所述数量等于1时,执行不依赖于其他字线的软信息的第一解码程序,
在确定所述数量大于1时,执行依赖于一个或多个其他失败字线的软信息的第二解码程序。
5.根据权利要求1所述的方法,其中所述从所述超级块输出经解码的数据位包括:
基于在所述第一字线的解码中的一定数量的错误位,确定对所述第一字线的解码失败;
通过至少再次执行一次或多次XOR运算,来再次生成所述“D”个中间数据位;并且
基于所述“D”个中间数据位的解码再次解码所述第一字线,其中所述“D”个中间数据位的解码是基于所述“K”个奇偶校验位的。
6.根据权利要求1所述的方法,其中所述从所述超级块输出经解码的数据位包括:
利用第一解码器解码所述第一字线;
确定利用所述第一解码器对所述第一字线的解码失败;
基于存储在所述超级块的附加字线中的所述“K”个奇偶校验位,利用第二解码器解码所述“D”个中间数据位;
通过对所述超级块的字线的子集至少执行一次或多次XOR运算来生成第二“D”个中间数据位,其中所述子集不包括所述第一字线;并且
基于“D”个解码中间数据位和所述第二“D”个中间数据位解码所述第一字线的所述“D”个数据位。
7.根据权利要求1所述的方法,其中所述从所述超级块输出经解码的数据位包括:
在第一迭代中,利用第一解码器解码所述第一字线和所述第二字线;
确定利用所述第一解码器对所述第一字线和所述第二字线的解码失败;
基于存储在所述超级块的附加字线中的所述“K”个奇偶校验位,利用第二解码器解码所述“D”个中间数据位;并且
在第二迭代中,基于与所述第二字线相关联的软信息和与“D”个解码中间数据位相关联的信息,利用所述第一解码器解码所述第一字线,其中在所述第一迭代中从所述第一解码器输出与所述第二字线相关联的软信息,并且其中可从所述第二解码器获得与所述“D”个解码中间数据位相关联的信息。
8.根据权利要求7所述的方法,其中在第二迭代中解码所述第一字线包括:擦除与所述第一字线相关联的并且是所述第一迭代中所述第一解码器的另一输出的软信息。
9.根据权利要求7所述的方法,其中所述从所述超级块输出经解码的数据位进一步包括:
在所述第二迭代中并且在所述第二迭代中的对所述第一字线的解码之后,基于与所述第一字线相关联的软信息和与所述“D”个解码中间数据位相关联的信息,利用所述第一解码器来对所述第二字线进行解码,其中与所述第一字线相关联的软信息是所述第二迭代中从所述第一解码器的另一输出。
10.根据权利要求7所述的方法,其中与所述“D”个解码中间数据位相关联的信息包括所述“D”个解码中间数据位的对数似然比。
11.根据权利要求7所述的方法,其中与所述“D”个解码中间数据位相关联的信息包括所述“D”个解码中间数据位的硬信息。
12.一种计算机系统,包括
一个或多个处理器;以及
一个或多个存储器,所述一个或多个存储器与所述一个或多个处理器通信地联接并且存储指令,在由所述一个或多个处理器运行所述指令时使所述计算机系统至少:
通过对来自超级块的字线的数据位至少执行一次或多次XOR运算来生成“D”个中间数据位,其中:
所述字线包括第一字线和第二字线,
所述超级块包括第一存储器管芯上的第一块和第二存储器管芯上的第二块,
所述第一块包括所述第一字线以及所述第二块包括所述第二字线,并且
所述第一字线和所述第二字线中的每个存储“D”个数据位和“P”个奇偶校验位;
生成保护“D”个中间数据位的“K”个奇偶校验位,其中“K”等于“D”和“P”之和;
将所述“K”个奇偶校验位存储在所述超级块的、除所述字线之外的附加字线中;并且
基于使用存储在所述附加字线中的所述“K”个奇偶校验位的解码程序,从所述超级块输出经解码的数据位。
13.根据权利要求12所述的计算机系统,其中所述从所述超级块输出经解码的数据位包括:
确定一定数量的失败字线;
确定所述数量等于1还是大于1;并且
在确定所述数量等于1时,执行不依赖于其他字线的软信息的第一解码程序,
在确定所述数量大于1时,执行依赖于一个或多个其他失败字线的软信息的第二解码程序。
14.根据权利要求12所述的计算机系统,其中所述从所述超级块输出经解码的数据位包括:
基于在所述第一字线的解码中的一定数量的错误位,确定对所述第一字线的解码失败;
通过至少再次执行一次或多次XOR运算,来再次生成所述“D”中间数据位;并且
基于所述“D”个中间数据位的解码再次解码所述第一字线,其中所述“D”个中间数据位的解码是基于所述“K”个奇偶校验位的。
15.根据权利要求12所述的计算机系统,其中所述从所述超级块输出经解码的数据位包括:
利用第一解码器解码所述第一字线;
确定利用所述第一解码器对所述第一字线的解码失败;
基于存储在所述超级块的附加字线中的所述“K”个奇偶校验位,利用第二解码器解码所述“D”个中间数据位;
通过对所述超级块的字线的子集至少执行一次或多次XOR运算来生成第二“D”个中间数据位,其中所述子集不包括所述第一字线;并且
基于“D”个解码中间数据位和所述第二“D”个中间数据位解码所述第一字线的所述“D”个数据位。
16.一种或多种非瞬态计算机存储介质,所述非瞬态计算机存储介质包括指令,当在计算机系统上运行该指令时,所述计算机系统执行以下操作:
通过对来自超级块的字线的数据位执行至少一次或多次XOR运算来生成“D”个中间数据位,其中:
所述字线包括第一字线和第二字线,
所述超级块包括第一存储器管芯上的第一块和第二存储器管芯上的第二块,
所述第一块包括所述第一字线以及所述第二块包括所述第二字线,并且
所述第一字线和所述第二字线中的每个存储“D”个数据位和“P”个奇偶校验位;
生成保护所述“D”个中间数据位的“K”个奇偶校验位,其中“K”等于“D”和“P”之和;
将所述“K”个奇偶校验位存储在所述超级块的、除所述字线之外的附加字线中;并且
基于使用存储在所述附加字线中的所述“K”个奇偶校验位的解码程序,从所述超级块输出经解码的数据位。
17.根据权利要求16所述的一种或多种非瞬态计算机存储介质,其中所述从所述超级块输出经解码的数据位包括:
在第一迭代中,利用第一解码器解码所述第一字线和所述第二字线;
确定利用所述第一解码器对所述第一字线和所述第二字线的解码失败;
基于存储在所述超级块的附加字线中的所述“K”个奇偶校验位,利用第二解码器解码所述“D”个中间数据位;并且
在第二迭代中,基于与所述第二字线相关联的软信息和与“D”个解码中间数据位相关联的信息,利用所述第一解码器解码所述第一字线,其中在所述第一迭代中从所述第一解码器输出与所述第二字线相关联的软信息,并且其中可从所述第二解码器获得与所述“D”个解码中间数据位相关联的信息。
18.根据权利要求17所述的一种或多种非瞬态计算机存储介质,其中在第二迭代中解码所述第一字线包括:擦除与所述第一字线相关联的并且是所述第一迭代中所述第一解码器的另一输出的软信息。
19.根据权利要求17所述的一种或多种非瞬态计算机存储介质,其中所述从所述超级块输出经解码的数据位进一步包括:
在所述第二迭代中并且在所述第二迭代中的对所述第一字线的解码之后,基于与所述第一字线相关联的软信息和与所述“D”个解码中间数据位相关联的信息,利用所述第一解码器来对所述第二字线进行解码,其中与所述第一字线相关联的软信息是所述第二迭代中从所述第一解码器的另一输出。
20.根据权利要求17所述的一种或多种非瞬态计算机存储介质,其中与所述“D”个解码中间数据位相关联的信息包括所述“D”个解码中间数据位的对数似然比。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762589471P | 2017-11-21 | 2017-11-21 | |
US62/589,471 | 2017-11-21 | ||
US16/151,064 | 2018-10-03 | ||
US16/151,064 US10817373B2 (en) | 2017-11-21 | 2018-10-03 | Soft chip-kill recovery using concatenated codes |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109873646A CN109873646A (zh) | 2019-06-11 |
CN109873646B true CN109873646B (zh) | 2023-04-07 |
Family
ID=66532356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811394212.7A Active CN109873646B (zh) | 2017-11-21 | 2018-11-21 | 使用级联码的软芯片猎杀恢复 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10817373B2 (zh) |
CN (1) | CN109873646B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018119700A1 (zh) * | 2016-12-27 | 2018-07-05 | 华为技术有限公司 | 一种数据传输方法、发送设备和接收设备 |
US10691540B2 (en) | 2017-11-21 | 2020-06-23 | SK Hynix Inc. | Soft chip-kill recovery for multiple wordlines failure |
US10963337B2 (en) | 2018-01-08 | 2021-03-30 | SK Hynix Inc. | Memory system with super chip-kill recovery and method of operating such memory system |
KR20210074425A (ko) * | 2019-12-11 | 2021-06-22 | 삼성전자주식회사 | 에러를 정정하는 스토리지 컨트롤러, 이를 포함하는 스토리지 장치, 및 이의 동작 방법 |
KR20220081610A (ko) * | 2020-12-09 | 2022-06-16 | 에스케이하이닉스 주식회사 | 컨트롤러 및 상기 컨트롤러를 포함하는 메모리 시스템 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104247273A (zh) * | 2012-03-28 | 2014-12-24 | 英特尔公司 | 使用边信道重构码字 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100322542B1 (ko) * | 1999-08-11 | 2002-03-18 | 윤종용 | 파이프 라인상의 고속동작을 구현하는 ecc 회로를 구비하는동기식 반도체 메모리장치 및 이 동기식 반도체 메모리장치의 에러 체크 및 정정방법 |
US7471569B2 (en) * | 2005-06-15 | 2008-12-30 | Infineon Technologies Ag | Memory having parity error correction |
JP4853650B2 (ja) * | 2007-01-25 | 2012-01-11 | ラピスセミコンダクタ株式会社 | 不揮発性半導体記憶装置及びそのアクセス評価方法。 |
US8341506B2 (en) | 2007-03-30 | 2012-12-25 | HGST Netherlands B.V. | Techniques for correcting errors using iterative decoding |
US8161355B2 (en) * | 2009-02-11 | 2012-04-17 | Mosys, Inc. | Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process |
US8751729B2 (en) * | 2010-12-23 | 2014-06-10 | Samsung Electronics Co., Ltd. | Flash memory device and memory system including the same |
US8874994B2 (en) * | 2011-07-22 | 2014-10-28 | Sandisk Technologies Inc. | Systems and methods of storing data |
US8726104B2 (en) * | 2011-07-28 | 2014-05-13 | Sandisk Technologies Inc. | Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages |
US8811085B2 (en) * | 2012-11-09 | 2014-08-19 | Sandisk Technologies Inc. | On-device data analytics using NAND flash based intelligent memory |
US10372529B2 (en) | 2015-04-20 | 2019-08-06 | Sandisk Technologies Llc | Iterative soft information correction and decoding |
US10147500B2 (en) * | 2015-05-22 | 2018-12-04 | SK Hynix Inc. | Hybrid read disturb count management |
US10297333B2 (en) * | 2016-04-08 | 2019-05-21 | Steven McConnell | Drying system and method |
US10691540B2 (en) * | 2017-11-21 | 2020-06-23 | SK Hynix Inc. | Soft chip-kill recovery for multiple wordlines failure |
-
2018
- 2018-10-03 US US16/151,064 patent/US10817373B2/en active Active
- 2018-11-21 CN CN201811394212.7A patent/CN109873646B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104247273A (zh) * | 2012-03-28 | 2014-12-24 | 英特尔公司 | 使用边信道重构码字 |
Also Published As
Publication number | Publication date |
---|---|
US20190155686A1 (en) | 2019-05-23 |
US10817373B2 (en) | 2020-10-27 |
CN109873646A (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109428605B (zh) | 利用校正子解码分量代码的用于g-ldpc码的位翻转解码器 | |
CN109873646B (zh) | 使用级联码的软芯片猎杀恢复 | |
US10491243B2 (en) | Deep learning for low-density parity-check (LDPC) decoding | |
CN108933605B (zh) | 低密度奇偶校验(ldpc)解码的提前终止 | |
CN109873645B (zh) | 用于多个字线失败的软芯片猎杀恢复 | |
US9866241B2 (en) | Techniques for adaptive LDPC decoding | |
US10523245B2 (en) | Soft decoder for generalized product codes | |
US10218388B2 (en) | Techniques for low complexity soft decoder for turbo product codes | |
CN108932177B (zh) | 具有可变长度分量的广义低密度奇偶校验码 | |
US10439649B2 (en) | Data dependency mitigation in decoder architecture for generalized product codes for flash storage | |
US10680647B2 (en) | Min-sum decoding for LDPC codes | |
US10090865B2 (en) | Performance optimization in soft decoding of error correcting codes | |
US10484020B2 (en) | System and method for parallel decoding of codewords sharing common data | |
US10389383B2 (en) | Low-complexity LDPC encoder | |
US11108407B1 (en) | Performance of a bit flipping (BF) decoder of an error correction system | |
US10498366B2 (en) | Data dependency mitigation in parallel decoders for flash storage | |
US10090862B2 (en) | Hybrid soft decoding algorithm for multiple-dimension TPC codes | |
US11381253B1 (en) | Decoding codeword based on higher order information | |
US10303364B2 (en) | Techniques for low-latency chase decoding of turbo product codes with soft information | |
US10326473B2 (en) | Symbol-based coding for NAND flash devices | |
US11128314B2 (en) | Error characteristic estimation for NAND flash | |
US20170194989A1 (en) | Techniques for miscorrection detection for constituent codewords in product codes | |
CN116582135A (zh) | 通过识别不可靠校验节点提高bf解码器的错误平层性能 |
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 |