CN104067233B - 用于多分层错误校正的系统、方法和设备 - Google Patents

用于多分层错误校正的系统、方法和设备 Download PDF

Info

Publication number
CN104067233B
CN104067233B CN201280067580.5A CN201280067580A CN104067233B CN 104067233 B CN104067233 B CN 104067233B CN 201280067580 A CN201280067580 A CN 201280067580A CN 104067233 B CN104067233 B CN 104067233B
Authority
CN
China
Prior art keywords
data
decoder
code
word
decoding
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201280067580.5A
Other languages
English (en)
Other versions
CN104067233A (zh
Inventor
J.E.弗拉耶
A.K.奥尔布里科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Technologies LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SanDisk Technologies LLC filed Critical SanDisk Technologies LLC
Publication of CN104067233A publication Critical patent/CN104067233A/zh
Application granted granted Critical
Publication of CN104067233B publication Critical patent/CN104067233B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2903Methods and arrangements specifically for encoding, e.g. parallel encoding of a plurality of constituent codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error

Abstract

错误控制编码系统从数据字产生码字,其中得到的码字包括数据字以及使用该数据字产生的三个或更多的奇偶校验段。该系统包括第一编码器以将数据字编码在两个或更多第一数据段中以便产生两个或更多第一奇偶校验段,其中所述两个或更多第一数据段的每个包括该数据字的相应的连续部分。该系统包括第二编码器以将该数据字编码在一个或多个第二数据段中以便产生对应的一个或多个第二奇偶校验段,其中该一个或多个第二数据段的每个包括该数据字的相应的连续部分,并且该一个或多个第二数据段的每个还包括在多个所述两个或更多第一数据段中所包括的数据的连续部分。此外,该系统包括控制器,配置为将该数据字的所述两个或更多第一数据段提供给所述第一编码器用于编码,并且将该数据字的所述一个或多个第二数据段提供给所述第二编码器用于编码。

Description

用于多分层错误校正的系统、方法和设备
技术领域
本公开涉及在存储器系统中使用错误控制码,具体地,涉及不依赖于交织的数据的并行链接(concatenated)编码。
背景技术
诸如闪存设备的非易失性存储器已经支持消费电子的增加的便携性,并且已经在适合于云计算和大量存储的相对低功率企业存储系统中使用。在这些区域中的一直存在的几乎持续提升的需求经常伴随着改进数据存储容量的需求。更大存储容量的需求又加剧了对更大存储密度的需求,使得可以维持以及优选地降低诸如功耗和外形尺寸的规格。这样,正存在着增加非易失性存储器的存储密度的压力以便进一步改进这些设备的有用的属性。但是,增加存储密度的缺点是,存储的数据愈加易出现存储和/或读取错误。
已经使用错误控制编码来限制存储器系统中的错误的增加的可能性。一个错误控制编码选择称为链接编码。链接编码是特别有前途的,因为产生的码字可以被交织地解码,这又可以改进系统的错误校正能力。链接编码方案通常包括由交织器(interleaver)分离的两个数据编码器。交织器打乱(shuffle)数据使得两个编码器按彼此不同的顺序接收数据。相反,解码采用由去交织器分离的两个解码器,该去交织器颠倒编码侧交织器的打乱。打乱和颠倒打乱通过去集群(de-cluster)已集群的错误而帮助均一化(normalize)错误的分布。均一化的错误分布通常是所希望的,因为均一化的分布使能够使用较低复杂度的编码和/或解码处理。
但是,源自于当前对于交织的依赖的各种挑战剥夺了对于链接码的利用。例如,实现交织器和去交织器所需的复杂的电路通常是功率强度大的并且在单片实现方式占据了实质上大的裸片区域。此外,采用交织的数字存储系统的架构通常被设计为容纳多位符号交织。对于闪存设备,多位符号交织通常利用跨过多个端口的比特宽信道。如果这些端口由独立的控制器控制,则将这些端口同步的复杂性变为对系统实施的限制。另外,当码字的一部分相对容易校正时,交织的使用限制了将校正的信息从一个解码器前馈(feedforward)到另一解码器。先前难达到的的前馈校正的信息的能力将改进校正具有非均匀错误分布的码字的能力。因此,即使链接编码可能能够提供改进的错误校正能力,但是依赖于交织的链接码的使用由于这些以及其他物理限制也是不太希望的。
发明内容
在所附权利要求的范围内的系统、方法和设备的各种实现方式每个具有几个方面,其单独一个方面不单独负责在此所述的期望的属性。不限制权利要求的范围,描述了一些突出的特征。在考虑到此讨论之后,特别是在阅读了题为“具体实施方式”的部分之后,将理解如何使用各个实施方式的特征来使能:(i)无交织器的并行链接编码和解码;(ii)使用错误估计模块来选择使用两个或更多解码器中的哪个来开始并行链接解码处理;以及(iii)将在特定存储器位置处的位错误的概率与错误校正码的错误校正能力匹配。
一些实施方式包括使能够使用并行链接码编码和解码数据的系统、方法和/或设备,该并行链接码不使用交织或者去交织(即无交织)。具体地,这样的实现方式采用对由两个或更多独立的并且并行的编码器编码的数据的联合(joint)迭代解码,该两个或更多独立的并且并行的编码器将数据编码在数据的重叠的段中。使能联合迭代解码处理以将校正的信息从一个解码器前馈到另一解码器以改进校正具有非均匀错误分布的码字的能力。
一些实现方式包括被使能以基于码字中的错误数量的估计选择使用两个或更多解码器之一来开始并行链接解码处理的系统、方法和/或设备。在一些实现方式中,错误控制解码系统包括错误估计模块和控制器。该错误估计模块估计码字中的错误的数量。该控制器基于由该错误估计模块提供的错误估计来选择使用第一解码器和第二解码器中的哪个来开始解码该码字。
一些实现方式包括被使能以将特定存储器位置处的位错误的概率匹配到错误校正码的错误校正能力和特性。在一些实现方式中,错误控制系统包括错误追踪模块和码适配模块。错误追踪模块产生被转换为特征化存储介质的错误密度位置简档(profile)的错误位值统计。该码适配模块基于该错误密度位置简档产生对于(由编码器使用的)可调整产生器矩阵和(由解码器使用的)可调整奇偶校验矩阵的调整。在一些实现方式中,从产生表示存储介质经过该存储介质的意图的寿命周期或者该存储介质的寿命周期的定义的部分的存储介质的错误位值统计的设备(例如产品线)特征化处理产生错误密度位置简档。使用该错误密度位置简档来产生错误控制码产生器矩阵和互补的奇偶校验矩阵,该奇偶校验矩阵将在特定存储器(即存储介质)位置处的位错误概率匹配到由该产生器矩阵和该互补奇偶校验矩阵定义的错误校正码的错误校正能力和特性。
附图说明
为了可以更详细地理解本公开,通过参考各个实施方式的特征可以进行更具体的描述,这些实施方式中的一些在附图中例示。但是,附图仅仅例示本公开的更突出的特征,因此不被认为是限制性的,因为该描述可以允许其他有效特征。
图1是数据存储环境的示意图。
图2A是包括两个组分(constituent)解码器的并行链接码编码器的实现方式的示意图。
图2B是由图2A中的组分解码器中的第一个组分解码器从数据字的三个分别的数据段产生的三个奇偶校验段的图。
图2C是由图2A中的组分解码器中的第二个组分解码器从数据字的两个分别的数据段产生的两个其他的奇偶校验段的图。
图3A是并行链接码编码器的实现方式的示意图。
图3B是由图3A的编码器产生的码字的图。
图4是并行链接码解码器的实现方式的示意图。
图5是并行链接码解码器的实现方式的示意图。
图6是并行链接码解码的方法的实现方式的流程图表示。
图7是并行链接码解码器的另一实现方式的示意图。
图8是并行链接码解码器的另一实现方式的示意图。
图9是示出由在此给出的并行链接编码方案使能的各种性能范围和决定点的图。
图10是并行链接码解码的方法的实现方式的流程图表示。
图11是适应性错误控制编码系统的实现方式的示意图。
图12是对于不规则低密度奇偶校验(LDPC)码的奇偶校验矩阵的实现方式的示意图。
图13是利用已经被匹配到存储介质的错误密度位置简档的错误控制码的错误控制编码系统的实现方式的示意图。
根据一般实践,附图中所示的各种特征可以不按比例绘出。因而,为了清楚,各个特征的尺寸可以任意扩大或减小。另外,某些图可能没有绘出给定系统、方法或设备的所有组件。最后,使用类似的参考标记来表示说明书和附图通篇的类似特征。
具体实施方式
在此所述的各种实施方式包括系统、方法和/或设备,其可以增强用于改进在诸如闪存的存储介质中存储和读取数据的可靠性的错误控制码的性能。
一些实施方式包括使能使用并行链接码来编码和解码数据的系统、方法和/或设备,该并行链接码不适用交织或去交织(即无交织的)。具体地,这样的实施方式采用对通过两个或更多独立且并行的编码器编码的数据的联合迭代解码。使能联合迭代解码处理以将校正的信息从一个解码器前馈到另一解码器以改进校正具有非均匀错误分布的码字的能力。在一些实施方式中,通过由两个或更多并行编码器产生的码字的结构促进前馈校正的信息的能力。更具体地,在一些实施方式中,错误控制编码系统可操作以产生码字,该码字包括数据字和使用该数据字产生的三个或更多奇偶校验段。第一编码器将该数据字编码为两个或更多第一数据段以产生两个或更多第一奇偶校验段。该两个或更多第一数据段的每个包括该数据字的各自的连续部分。第二编码器将该数据字编码为一个或多个第二数据段以产生对应的一个或多个第二奇偶校验段。该一个或多个第二数据段的每个包括该数据字的各自的连续部分。该一个或多个第二数据段的每个还包括横跨该第一数据段中的两个或更多的数据的连续部分。在一些实现方式中,控制器将该数据字的两个或更多第一数据段提供给第一编码器用于编码,并且将该相同数据字的一个或多个第二数据段提供给第二编码器用于编码。
一些实施方式包括被使能以基于码字中的错误数量的估计来选择使用两个或更多解码器中的一个来开始并行链接解码处理的系统、方法和/或设备。在一些实现方式中,错误控制解码系统包括错误估计模块和控制器。该错误估计模块估计码字中的错误的数量。该控制器基于该错误估计模块提供的错误估计来选择使用第一解码器和第二解码器中的哪个来开始对该码字解码。
一些实现方式包括被使能以将特定存储器位置出的位错误的概率与错误校正码的错误校正能力和特性匹配的系统、方法和/或设备。在一些实现方式中,错误控制系统包括错误跟踪模块和码适配模块。该错误跟踪模块产生错误位置统计,该错误位置统计被转换为表示存储介质的特征的错误密度位置简档。在一些实现方式中,该码适配模块基于错误密度位置简档产生对于(由编码器使用的)可调整的产生器矩阵和对于(由解码其使用的)可调整的奇偶校验矩阵的调整。更具体地,与具体存储器位置相关联的错误概率通过各自的矩阵被合并到错误控制码中以更改码字是否可校正的概率。具体地,一些错误控制码特征在于其是不规则的,因为一些校验位比其他校验位更多地与数据位相互连接。当校验位更多地与可变位(即数据或消息位)相互连接时,该校验位通常将更经常地标记(flag)错误。更少相互连接的校验位趋向于比更多相互连接的校验位收敛得更快,使得来自更少相互连接的校验位的信息辅助更多相互连接的校验位的解码。在一些实现方式中,不规则的错误控制码的这些和其他特性被用于选择性地将存储介质的物理性能特性映射到校验位的相互连接性。例如,在一些实现方式中,具有更高的位错误概率的存储器位置被映射到码的更多地相互连接的校验位以允许在低缺陷环境中的快速错误检测。在一些实现方式中,具有更高的位错误概率的存储器位置被映射到码的更少相互连接的校验位以使能在高缺陷环境中的相对更快的解码器收敛。
在一些实现方式中,从设备(例如生产线)特征化处理产生错误密度简档,该设备特征化处理产生存储介质的表示经过该存储介质的意图的寿命周期或者该存储介质的寿命周期的定义的部分的存储介质的错误位值统计。该错误密度位置简档用于产生错误控制码产生器矩阵和互补(complementary)奇偶校验矩阵,该互补奇偶校验矩阵将在特定存储器(即存储介质)位置处的位错误的概率匹配到由该产生器矩阵和该互补奇偶校验矩阵定义的错误校正码的错误校正能力和特性。换句话说,使用错误密度位置简档产生对应于该错误密度位置简档的错误控制码产生器矩阵和互补奇偶校验矩阵。因此,在这样的实施方式中,具有明显不同的错误密度位置简档的两个存储介质将具有不同的错误控制码产生器矩阵和不同的互补奇偶校验矩阵。
一些实施方式包括利用不依赖于交织来均一化错误分布的并行链接码结构的系统、方法和/或设备。在此给出的并行链接编码和解码系统包括独立地将数据字编码为数据段的两个或更多个各自的集合的两个或更多编码器。来自一个集合的数据段包括横跨另一集合中的两个或更多个连续的数据段的数据。一些实施方式适合于相对高的位错误率(BER)条件,并且利用相对低复杂性的硬件、相对短的码字和与其他错误校正方法类似的奇偶校验开销。一些实施方式改进了在错误发生在非均匀分布中或者类似于泊松(Poisson)分布的分布中—在此情况下平均BER近似等于BER的方差(variance)—的情况下的错误校正性能。
一些实现方式包括具有基于码字中的错误数量的估计来选择使用两个或更多解码器中的哪个来开始并行链接解码处理的能力的解码系统。在一些实施方式中,错误估计模块包括解码侧编码器以促进错误估计的产生。
一些实施方式包括错误控制系统,该错误控制系统具有将在特定存储器位置处的位错误的概率匹配到错误校正码的错误校正能力并且随后基于存储介质的物理性质的劣化和/或波动而调整数据的编码的能力。
在此描述了许多细节以便提供对在附图中例示的示例实现方式的透彻理解。但是,可以没有这些特定细节中的许多而实践本发明。并且,在详尽的细节中没有描述公知的方法、组件和电路以便不会不必要地模糊在此所述的实施方式的更突出的方面。
图1是数据存储环境即数据存储环境100的实现的图。尽管例示了某些具体特征,但是本领域技术人员将从本公开认识到,为了简短没有例示各种其他特征以便不混淆在此公开的示例实现方式的更相关的方面。为此,作为非限制的例子,数据存储环境100包括数据处理系统110、存储控制器120和存储介质130(例如闪存器件)。
数据处理系统110通过数据连接101耦接到存储器控制器120。本领域技术人员从本公开将认识到,在各种实现方式中,数据处理系统110包括存储器控制器120作为组件。通常,数据处理系统110包括任何适当的计算机设备,比如计算机、膝上型计算机、平板计算机、上网本、因特网信息站(internetkiosk)、个人数字助理、移动电话、智能电话、游戏设备、计算机服务器或任何其他计算设备。在一些实现方式中,数据处理系统110包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户界面组件,比如键盘、触摸屏、鼠标、跟踪板、数字相机和/或任意数量的补充(supplemental)设备以添加功能。
存储介质130通过数据连接130耦接到存储器控制器120。本领域技术人员从本公开将认识到,在各种实现方式中,存储器控制器120和存储介质130被包括在相同的设备中作为其构成组件。存储介质130包括任意数量(即一个或多个)的存储器设备,非限制性地包括非易失性半导体存储器设备,比如闪存。例如,闪存设备可以被配置用于适合于诸如云计算的应用的企业存储。另外和/或替换地,闪存设备还可以配置用于相对更小规模的应用,比如个人闪存盘或者用于个人计算机、膝上型计算机和平板计算机的硬盘替换。在一些实现方式中,存储介质130包括一个或多个闪存设备。在一些实现方式中,存储介质130包括NAND型闪存和NOR型闪存的至少一个。
存储介质通常被划分为多个可寻址的并且单独可选的块,比如可选部分131。在一些实现方式中,对于闪存,单独可选块是闪存设备中的最小可擦除单位。换句话说,每个块包含可以同时被擦除的最少数量的存储器单元。每块通常还被划分为多个页,其中每页通常是块中的最小单独可访问的子块的最小单位的实例。但是,在一些实现方式中(例如在某些类型的闪存中),单独可访问的数据的最小单位是扇区,扇区是一页的子集。也就是说,每页包含多个扇区,并且每个扇区是用于将数据写到闪存设备或者从闪存设备读取数据的单独可访问的数据的最小单位。
仅仅为了方便标记,数据的块包括多个页,页又包括多个扇区。例如,在一些实现方式中,一块包括64页、128页、256页或另一适当数量的页。块、页和扇区的相应大小通常是设计选择或者末端用户选择的问题,并且通常跨越企业和消费者设备的广阔范围而不同。但是,仅仅是举例而非限制,在一些企业应用中,扇区包括从256字节到544字节任意的字节。该范围可以向上或向下延伸,和/或取决于特定应用而收缩或扩展。此外,块通常被分组为多个区带(zone),有时也称为块区带。每个块区带可以被独立管理达某种程度,这使能够并行操作并简化数据存储管理。
在一些实现方式中,存储器控制器120包括管理模块121、输入缓冲器123、输出缓冲器124、错误控制模块125和存储介质接口(I/O)128。本领域技术人员从本公开将认识到,存储器控制器120包括为了简短而没有例示的各种另外的特征,以便不模糊在此公开的示例实现方式的更相关的特征,并且特征的不同布置是可能的。
输入和输出缓冲器123、124提供通过数据连接101到数据处理系统110的接口。类似地,存储介质I/O128提供通过数据连接103到存储介质130的接口。在一些实现方式中,存储介质I/O128包括读和写电路,这包括能够向存储介质130提供读比较信号值的电路。
在一些实现方式中,管理模块121包括处理器122。但是,本领域技术人员从本公开将认识到,在一些实现方式中,处理器122由在存储器控制器120的功能内的以及在某些情况下超出存储器控制器120的功能的一个或多个组件共享。管理模块121耦接到输入和输出缓冲器123、124、错误控制模块125和存储介质I/O128以便协调这些组件的操作。
错误控制模块125耦接在存储介质I/O128以及输入和输出缓冲器123、124之间。在一些实现方式中,提供错误控制模块125以限制不经意地引入到数据中的不可校正的错误的数量。为此,错误控制模块125包括编码器126和解码器127。编码器126对数据编码以产生码字,该码字随后被存储在存储介质130中。当从存储介质130读取编码的数据时,解码器127应用解码处理以恢复数据,并且校正在错误控制码的错误校正能力内的错误。本领域技术人员从本公开将认识到,各种错误控制码具有不同的错误检测和校正能力,并且由于超出了本公开的范围的原因,对各种应用选择特定码。这样,为了简短没有提供各种类型的错误控制码的详尽评述。此外,本领域技术人员将认识到,每种类型或系列的错误控制码可以具有对于该类型或系列的错误控制码特定的编码和解码算法。另一方面,在多种不同类型或系列的错误控制码的解码中至少可以某种程度上利用诸如Viterbi算法的一些算法。因此,再次地,为了简短,再次没有提供本领域技术人员通常可获得以及已知的各种类型的编码和解码算法的详尽描述。
在写操作期间,输入缓冲器123从数据处理系统110接收要存储在存储介质130中的数据。使得输入缓冲器123中的数据可用于编码器126,编码器126将该数据编码以产生码字。使得码字可用于存储介质I/O128,存储介质I/O128以取决于所利用的存储介质的类型的方式将该码字传送到存储介质130。在对于相同数据的读操作期间,存储介质I/O128访问存储介质130的包括相应的码字的部分以读取该码字并将该码字提供给解码器127。当解码器127解码成功时,得到的解码的数据被提供给输出缓冲器124,在该输出缓冲器124处,使得解码的数据可用于数据处理系统110。在一些实现方式中,当解码不成功时,存储器控制器120使用不同的解码或错误校正再次从存储介质读取该码字,如以下更详细讨论的。
利用链接的码字的错误控制编码特别有前途,因为产生的码字可以被迭代地解码。在一些实现方式中,迭代解码改进了系统的错误校正能力,并且降低了用于从存储介质成功地恢复正确的数据的读取操作的数量。但是,如上所述,源自于当前对于交织的依赖性的各种挑战削减了对链接的码字的利用。因此即使链接的码字能够提供改进的错误校正能力,但是依赖于交织的链接码的使用由于这些以及其他物理限制也是不太希望的。
相对照,在此所述的系统、方法和设备的各种实现方式采用并行链接的码字,它们不使用交织或者去交织。具体地,这样的实现方式采用对由两个或更多独立并且并行的编码器编码的数据的联合迭代解码。联合迭代解码自由地从一个解码器向另一解码器前馈校正信息以改进校正具有非均匀错误分布的码字的能力。在一些实现方式中,通过有两个或更多并行编码器产生的码字的结构来促进前馈校正的信息的能力。
作为例子,图2A是包括两个构成编码器的并行链接码编码器125的实现方式的示意图。尽管例示了某些具体特征,但是本领域技术人员从本公开将认识到,为了简短没有例示各种其他特征,以便不模糊在此公开的示例实现方式的更相关的方面。为此,作为非限制性的例子,编码器125包括多块缓冲器210、复用器(MUX)211、数据字缓冲器212、控制器220和第一以及第二(错误控制码)编码器221、223。
提供多块缓冲器210以从数据处理系统等接收多个数据字或者数据字的块用于编码。控制器220耦接到多块缓冲器210、MUX211、数据字缓冲器212和第一以及第二编码器221、223的每个以便协调编码器125的操作。更具体地,连接控制器220以向多块缓冲器210提供控制信号以将数据字指针前移到用于编码的下一数据字。连接控制器220以向MUX211提供使得MUX211能够将数据字从多块缓冲器210传递到数据字缓冲器212的控制信号。连接控制器220以向数据字缓冲器212提供将其中包括的数据标记为有效的控制信号。在一些实现方式中,控制器220将来自数据字缓冲器212的数据字的两个或更多第一数据段提供给第一编码器221用于编码。控制器220还将来自数据字缓冲器212的数据字的一个或多个第二数据段提供给第二编码器223用于编码。该一个或多个第二数据段的每个还包括横跨第一数据段中的两个或更多的数据的连续部分。在一些实现方式中,连接控制器220以为第一编码器221提供使得第一编码器221能够从数据字缓冲器212接收或选择两个或更多第一数据段的控制信号。还连接控制器220以为第二编码器223提供使得第二编码器223能够从数据字缓冲器223接收或选择一个或多个第二数据段的控制信号。该一个或多个第二数据段的每个还包括横跨该第一数据段中的两个或更多的数据的连续部分。
在一些实现方式中,控制器220是可操作以将码字写到存储介质中的存储器控制器的一部分。在一些实现方式中,存储器控制器是闪存控制器。在一些实现方式中,存储器控制器包括可操作以将码字写到存储介质中的存储介质接口。
第一编码器221从数据字的两个或更多第一数据段产生两个或更多第一奇偶校验段。该两个或更多第一数据段的每个包括数据字的相应的连续部分。例如,如图2B所示,数据字200被划分为三个连续数据段201、202、203。每个段由第一编码器221独立于其他段而编码以产生三个相应的奇偶校验段201a、202a、203a之一。在一些实现方式中,数据字被划分为更少或更多数量的时间段,因而由第一编码器221产生更少或更多数量的相应的奇偶校验段。在一些实现方式中,第一编码器221包括Bose Chaudhuri Hocquenghem(BCH)码编码器。
同时或者另外,第二编码器223从相同数据字的一个或多个第二数据段产生一个或多个第二奇偶校验段。一个或多个第二数据段的每个包括该数据字的相应的连续部分。该一个或多个第二数据的每个还包括横跨第一数据段的两个或更多的数据的连续部分。例如,如图2C所示,相同的数据字200被划分为连续的数据段204、205,并且每个段由第二编码器223独立于其他段而编码以产生两个相应的奇偶校验段204a、205a之一。此外,参考图2B和2C,两个连续的数据段204、205的每个包括横跨由第一编码器221编码的三个数据段201、202、203中的至少两个的数据。在一些实现方式中,数据字被划分为更少或更多数量的数据段,因而由第二编码器223产生更少或更多数量的相应奇偶校验段。在一些实现方式中,第二编码器223包括低密度奇偶校验(LDPC)码编码器。
如以下更详细描述的,在由第一和第二编码器221、223编码的数据段中的重叠的布置使得相应对的解码器能够共享成功的解码结果。在一些实现方式中,校正的信息从一个组分解码器传递到另一个以便改进校正非均匀错误分布的能力。例如,三个第一数据段201、202、203中的一个中的错误可以独立于其他错误而被解码。当一个段201、202、203对于第一解码器而言比另一个更容易校正时,从该段校正的数据可以被发送到第二解码器用于在使用相应的奇偶校验段204a、205a解码两个第二数据段204、205时使用。从第一解码器传递的校正的位改进了两个第二数据段204、205的至少一个将被成功校正以及又将把校正的数据提供回到第一解码器以辅助对还未被校正的剩余的数据段的解码的可能性。
图3A是并行链接码编码器125a的另一实现方式的示意图。图3B是编码器125a产生的码字300的示意图示。图3A中所示的编码器125a类似于图2A中所示的编码器125并且从该编码器125适配。再次,尽管例示了某些具体特征,但是本领域技术人员将从本公开认识到,为了简短没有例示其他特征以便不模糊在此公开的实现方式的更相关的方面。
编码器125a包括多块缓冲器310、BCH编码器321、LDPC编码器323、控制器320和可选的2D-XOR编码器325,该2D-XOR编码器325操作为多块故障保护(failsafe)编码器。BCH编码器321和LDPC编码器323被并行布置以独立地对相同的数据字操作。
在操作中,BCH编码器321和LDPC编码器323对数据字的相同的两个或更多段并行操作。也就是说,对于由编码器125a产生的每个码字300,BCH编码器321和LDPC编码器323每个从多块缓冲器310接收相同数据字的两个或更多段。多块缓冲器310具有包括数据字的大集合的数据的容量。因而,BCH编码器321和LDPC编码器323被配置为接收对于产生的每个码字300的两个数据段301、302。这两个数据段301、302是单个数据字的部分,并且一起包括该数据字的全部。BCH编码器321产生分别对于数据段301、302的相应的BCH奇偶校验集303和304。LDPC编码器323对于数据字整体(即两个数据段301、302一起)的一个LDPC奇偶校验集305。在一些实现方式中,在所示的例子中LDPC编码器323不考虑段轮廓(delineation)。这样,LDPC编码器323接收数据字作为整体而不涉及由BCH编码器321使用的段轮廓。进一步参考图1,在操作中,通过存储介质I/O接口128的操作将产生的每个码字存储在存储介质130中。
在一些实现方式中,2D-XOR编码器325将数据字的集合一起编码,使得该数据字的集合包括由第一编码器(即BCH编码器321)和第二编码器(即LDPC编码器323)编码的数据字。
图4是可操作以提供图2A的编码器125的互惠(reciprocal)功能的并行链接码解码器127的示意图。尽管例示了某些具体特征,但是本领域技术人员将从本公开认识到,为了简短没有例示各种其他特征,以便不模糊在此公开的示例实现方式的更相关的方面。为此,作为非限制性例子,解码器127包括码字缓冲器410、控制器420、验证模块422、软信息产生模块424、数据字缓冲器426和第一以及第二解码器421、423。
提供码字缓冲器410以接收从存储介质读取的码字。进一步参考图1,在一些实现方式中,通过存储介质I/O128从存储介质130读取码字。在一些实现方式中,其中在通信系统(例如无线网络)中使用解码器,码字被包括在接收的消息中。本领域技术人员将认识到,从哪里接收码字或者码字的组取决于在其中实现错误控制系统的系统的类型。为了简短,没有提供用于错误控制的应用的穷尽列表。
控制器420耦接到验证模块422、软信息产生模块424以及第一和第二解码器421、423的每个以便协调解码器127的操作。连接控制器420以从验证模块422接收验证指示符并且作为响应向验证模块422和软信息产生模块424产生控制信号。依次地,连接软信息产生模块424以从验证模块422接收控制信号。控制器420还可操作以当在第一解码器421的解码结果中检测到第一相应解码缺陷(flaw)时将来自第一解码器421的部分解码结果传递到第二解码器423。类似地,控制器420可操作以当在第二解码器423的解码结果中检测到第二相应解码缺陷时将来自第二解码器423的部分解码结果传递到第一解码器421。
在一些实现方式中,控制器420是可操作以从存储介质读取码字的存储器控制器的一部分。在一些实现方式中,存储器控制器420是闪存控制器。在一些实现方式中,存储器控制器420包括可操作以从存储介质读取码字的存储介质接口。
在一些实现方式中,验证模块422评估第一解码器421和第二解码器423的解码结果,并当在第一解码器421和第二解码器423的至少一个的解码结果中检测到一个或多个解码缺陷时用信号通知控制器420。在一些实现方式中,验证模块422评估由第一解码器421和第二解码器423之一产生的解码结果,并且当在解码结果中检测到解码缺陷时用信号通知控制器420。
还耦接软信息产生模块424以从第一和第二解码器421、423的至少一个接收解码信息并向第一和第二解码器421、423的至少一个提供软信息。更通常地,软信息产生模块将第一解码器的解码结果转换为软信息,该软信息包括部分解码结果的至少一部分。在一些实现方式中,软信息包括与码字相关联的条件概率(即转变概率)和与码字相关联的对数似然比(LLR)的至少一个。在一些实现方式中,第一解码器可操作以在来自第二解码器的部分解码结果可用时利用该部分解码结果。在一些实现方式中,来自第二解码器的部分解码结果包括由第二解码器产生的软信息。
如本领域技术人员将了解的,对于许多错误控制码,经常可以通过使用软信息来改进解码处理。硬信息解码通常意味着关于数据值(例如数据位或者码位)是特定符号字母表中的一个符号还是另一个而做出确凿的决定。例如,在二进制系统中,特定数据值可以是“0”或“1”,即使从存储位置读取的原始电模拟值不表明表示该数据值的电值足以确定地决定该数据值是“0”或“1”。换句话说,对于特定数据值的硬决定是基于与从存储介质读取的模拟电值对应的最可能的符号,并且存在替换决定的概率被硬决定处理忽略。通常,硬决定是基于从模拟读取值到定义符号的电水平的欧几里得距离。相对照,在存储器系统的上下文中,软信息的使用是基于考虑到从存储介质读取了什么而存在不同的结果的概率。
还连接控制器420以为第一解码器420提供控制信号,该控制信号使得第一解码器420能够从码字缓冲器410选择两个或更多第一数据段以及相应的两个或更多第一奇偶校验段。类似地,还连接控制器420以为第二控制器423提供控制信号,该控制信号使得第二解码器423能够从码字缓冲器410选择一个或多个第二数据段以及相应的两个或更多第二奇偶校验段。例如,参考图2B,在一个实现方式中,码字包括被划分为三个数据段201、202、203和相应的奇偶校验段201a、202a、203a的数据字200。另外,参考图2C,相同的码字还包括与数据字200的段204、205对应的奇偶校验段204a、205a。
更一般地,控制器将两个或更多第一数据段以及两个或更多奇偶校验段提供给第一解码器用于解码,并将来自数据字的一个或多个第二数据段提供给第二解码器用于解码。在一些实现方式中,该控制器进一步可操作以当该两个或更多第一数据段中的至少一个未被成功解码并且该两个或更多第一数据段的至少另一个被成功解码时将来自第一解码器的与每个成功解码的第一数据段相关联的解码的数据提供给第二解码器。
第一解码器421独立地解码三个第一数据段201、202、203和相应的奇偶校验段201a、202a、203a。更一般地,第一解码器通过利用在码字中包括的两个或更多第一奇偶校验段以及在该码字中包括的该码字的两个或更多第一数据段来解码该码字。该两个或更多第一奇偶校验段的每个与该两个或更多第一数据段中的相应一个相关联。该两个或更多第一数据段的每个包括该数据字的相应连续部分。在一些实现方式中,第一解码器可操作以提供对于两个或更多第一数据段的每个的解码的数据,该两个或更多第一数据段独立于未能成功解码其他的两个或更多第一数据段的任意一个而被成功地解码。
参考图2B和图4,第一解码器421独立于数据段202、203以及奇偶校验段202a、203a等等而解码数据段201和奇偶校验段201a的组合。如果一个段可以被校正(例如因为其具有比起奇偶校验段的错误校正能力更少的错误,或者在段内的错误的分布不超过其奇偶校验段的错误校正能力),则从该特定段校正的数据可以被发送到第二解码器423,而不管其他段是否可以被校正。此前馈机制改进了两个第二数据段204、205的至少一个将被第二解码器423完全校正的可能性。
类似地,第二解码器423独立地解码两个第二数据段204、205以及相应的奇偶校验段204a、205a的每个,使得从这两个数据段之一校正的信息可以被发送到第一解码器421。更一般地,第二解码器通过利用相同的码字中包括的一个或多个第二奇偶校验段以及该码字中的数据字的一个或多个第二数据段来解码该码字。一个或多个第二奇偶校验段的每个与一个或多个第二数据段的相应一个相关联。一个或多个第二数据段的每个包括在多个的该两个或更多第一数据段中包括的数据的连续部分。
在一些实现方式中,在来自第一解码器421的部分解码结果可用时,第二解码器423利用该部分解码结果。在一些实现方式中,此前馈机制改进了第一解码器421将能够完全校正剩余的未校正的数据段中的至少一个的可能性。该处理在第一解码器421和第二解码器423之间重复,直到数据完全被校正或者基于固定数量的重复确定错误不可校正。
图5是可操作以提供图3A的编码器125a的互惠功能的并行链接码解码器127a的实现方式的图。图5所示的解码器127a类似于图4所示的解码器127并且从该解码器127适配。再次,尽管例示了某些具体特征,但是本领域技术人员将从本公开认识到,为了简短没有例示各种其他特征以便不模糊在此公开的实现方式的更相关的方面。为此,解码器127a包括输入多块缓冲器510、数据选择块511(例如MUX)、BCH解码器521、LDPC解码器523、解码验证模块522、输出多块缓冲器550和可选的多块故障保护解码器560。
在此所述的实现方式是反转链接的形式,其中BCH解码器521和LDPC解码器523能够相互传递校正的信息。但是,不像使用交织器(并因此需要去交织器)的其他反转链接方案,内部码和外部码之间的传统区别并不对在此所述的解码方案带来限制。随后,BCH解码器521或者LDPC解码器523可以用于开始解码处理。被选择开始解码处理的解码器(例如BCH解码器521)可以取决于限制具体信道容量的奇偶校验和/或性能的系统要求而基于数据的硬决定或者软决定。基于每个解码器的结果,信息流由控制器(例如控制器520)控制或者是应用消息传递处理的嵌入逻辑。在一些实现方式中,消息传递处理控制被包括在解码验证模块525中。
例如,在一些实现方式中,使用BCH解码器521或者另一类似的低复杂度多项式解码器来开始解码处理。BCH解码器521的输出用于操纵解码处理的接下来的步骤。更具体地,BCH解码器521接收对于特定段501的BCH数据和奇偶校验位,并且来自BCH解码器521的解码结果用于操纵解码器127a的操作。如果BCH解码器521产生完全校正的数据,则提取的数据503直接被输出到缓冲器(例如输出缓冲器550)或者控制器。如果BCH解码器521失败,则以对数似然比(LLR)形式的信息被传递到LDPC解码器523,其还接收对于被LDPC编码在一起的至少两个段的LDPC数据和奇偶校验位502。
以LLR504形式的软信息由软信息产生模块524使用由BCH解码器521产生的解码结果而产生。在一些实现方式中,被成功解码的段的LLR504还被传递回到LDPC解码器523,LLR504指示与该数据一起的段是正确的。在这些实现方式中,LDPC解码器523使用成功解码的段的LLR504来降低其余的解码处理的复杂度。
在当前的例子中,因为LDPC码字由两个或更多BCH数据段组成,如果BCH段中的一个或多个不可由BCH解码器521校正,则LDPC解码器523被启用并操作以校正该LDPC码字。另外,因为LDPC解码是概率性的,LDPC解码器523的输出表示逐位判决(solution)。在一些实现方式中,逐位判决(即数据505)被前馈到BCH解码器521以再一次解码或者当数据505被确认为正确时作为提取的数据506被输出到缓冲器550或控制器。如果BCH解码器521再次未能解码一个或多个段,则重复处理。在一些实现方式中,在阈值数量的存在通过或者指示失败的选项。
在一些实现方式中,使用CRC(循环冗余检验)解码器来校验丢失的校正并选择性地将数据引导到缓冲器550、控制器520或BCH解码器521之一。取决于CRC码的粒度(即码进行操作的最小消息长度),可以建立数据流和存储介质的点对点和端对端校验。在一些实现方式中,相应的CRC值被插入到每个数据段201、202和203中(见图2B),并且在所附数据的整个传输和存储期间可以保留。CRC值可以由解码验证模块522在解码处理期间的任意时间点校验以校验丢失的校正以及伴随重试或其他处理而重新开始的算法,以便如果可以标识错误的数据段则使用控制器520或BCH解码器521增强原始信息的质量。如果CRC解码器检测到错误,则数据被发送回到BCH解码器然后如果被校正则返回。在一些实现方式中,如果未被校正,则该数据被发送到另外的外部码解码器,比如2-D XOR解码器或者其他多块故障保护错误控制解码器560。得到的校正后的数据然后由控制器520返回到BCH解码器521或者LDPC解码器523,这取决于估计的剩余错误的数量。在此正向和反向操纵的处理中,码字被求解直到所有解码器(例如BCH解码器521和LDPC解码器523两者)指示通过条件。在一些实现方式中,除非其他解码器不能校正数据,否则不涉及多块故障保护解码器560。
在一些企业存储实现方式中,向存储设备以及从存储设备的传输包括CRC码的利用。例如,在一些实现方式中,CRC码提供被附到图3B中所示的数据流300并与数据段和奇偶校验位一起存储在媒体中的校验值。进一步参考图5,一些实现方式中,CRC码被认为是由多块故障保护模块560评估为操纵用于重新校验错误的数据以防止最终的丢失校正的外部码。
在一些实现方式中,包括故障保护外部码(例如在图5中的由多块故障保护解码器560评估的外部码)通过提供对于可能不能由BCH解码器521和LDPC解码器523的组合校正的错误的至少一些的错误校正而使能够实现较低错误水平(floor)。例如,在一些实现方式中,如果内部码(例如BCH和LDPC)达到1E-6的错误水平,其中奇偶校验位总数据的小于5%,则使用2-D XOR编码器,1E-20的错误水平是可能的。在一些实现方式中,取决于在存储介质中发生的非线性数据缺陷的数量,解码器可以被定制为实现宽范围的错误水平。在一些实现方式中,错误水平的较低边界由在存储介质中发生的非线性数据缺陷的数量而限制。非线性缺陷通常发生在由于随机事件而存在严重的缺陷集群时。例如,在NAND闪存设备中由于引起严重的数据丢失的一些类型的设备恶化而遭遇非线性缺陷。非线性缺陷可以被建模为错误分布的混合物,这些错误分布是存储器设备的预期的恶化的非典型者。例如,在NAND闪存设备中,当在编程和擦除循环的不确定的时段之后两条字线段路时发生非线性缺陷,导致几千字节的数据错误。存在形成这些缺陷分布的一些因素,比如操作温度、编程之间的时间、操作的模式和使用历史。对存储系统从在一些错误分布的尾部存在的非线性缺陷和其他缺陷恢复的能力的限制它呈现值了在存储系统中可以实现的实际的不可校正位错误率(UBER)。
在一些实现方式中,多块故障保护解码器560可操作以解码一组码字,其中该组码字至少包括由BCH解码器521(即第一解码器)和LDPC解码器523(即第二解码器)解码的码字的数据字。
图6是适合于与图5的解码器127a一起使用的并行链接解码的方法600的实现方式的流程图表示。如由块6-1所表示的,该方法600包括选择解码器以开始解码处理。如由块6-2所表示的,该方法600包括确定选择了哪个解码器。如果选择了BCH解码器(来自块6-2的“BCH”路径),则如由块6-3表示的,该方法600包括选择对于数据字的第一数据段的BCH数据和奇偶校验位。另一方面,如果选择了LDPC解码器(例如来自块6-2的“LDPC”路径),则如由块6-16所表示的,该方法600包括选择对于数据字的多个数据段的LDPC数据和奇偶校验位(例如将选择两个数据段用于图5的解码器127a)。
返回块6-3,在选择了第一段的BCH数据和奇偶校验位之后,如由块6-4所表示的,该方法包括对该第一段的BCH数据和奇偶校验位进行BCH解码。如由块6-5所表示的,该方法600包括确定解码是否提供了对于第一段的正确数据。如果该数据正确(来自块6-5的“是”路径),则如由块6-6所表示的,该方法600包括将正确的数据写到输出缓冲器和/或在前进到由块6-7表示的方法600的部分之前输出该数据。另一方面,如果该数据不正确(来自块6-5的“否”路径),则如由块6-7所表示的,该方法600包括选择对于第二段的BCH数据和奇偶校验位,该第二段将是与所选择的第一段一起被LDPC编码的段。
如由块6-8所表示的,方法600包括对第二段的BCH数据和奇偶校验位进行BCH解码。如由块6-9所表示的,方法600包括确定该解码处理是否提供了对于第二段的正确的数据。如果该数据正确(来自块6-9的“是”路径),则如由块6-13所表示的,该方法600包括将正确的数据写到输出缓冲器或者在前进到如由块6-14表示的方法600的部分之前输出该数据。如由块6-14所表示的,该方法600包括确定该解码是否提供了对于第一和第二段的正确的数据。如果对于这两段的数据正确(来自块6-14的“是”路径),则如由块6-15所表示的,该方法600包括选择下一码字用于解码。另一方面,如果对于至少一个段的数据不正确(来自块6-14的“否”路径),则如由块6-12所表示的,该方法600包括将LLR信息传递到LDPC解码器用于所选的第一和第二段。
返回到块6-9,另一方面,如果对于第二段的解码的数据不正确(来自块6-9的“否”路径),则如由块6-10所表示的,方法600包括确定是否进一步迭代解码处理。在一些实现方式中,进一步重复的决定是基于多个因素,包括但不限于先前重复的数量、数据讹误/错误的范围和进一步重复可用的时间。
如果准许进一步重复(来自块6-10的“是”路径),则如由块6-12所表示的,方法600包括将LLR信息传递到LDPC解码器用于所选的第一和第二段。另一方面,如果不准许进一步的重复(来自块6-10的“否”路径),则如由块6-11所表示的,方法600包括提供解码处理的至少此部分已经失败的指示。
返回到块6-16,在选择多个段的LDPC数据和奇偶校验位之后,如由块6-17所表示的,方法600包括解码该LDPC数据和奇偶校验位。如由块6-18所表示的,方法600包括确定该解码是否提供了对于第二段的正确的数据。如果数据正确(来自块6-18的“是”路径),则如由块6-13所表示的,方法600包括将正确的数据写到输出缓冲器或者输出该数据。另一方面,如果该数据不正确(来自块6-18的“否”路径),则如由块6-19所表示的,方法600包括确定是否进一步迭代解码处理。
如果准许进一步的重复(来自块6-19的“是”路径),则如由块6-20所表示的,方法600包括将LLR信息传递到BCH解码器用于所选的第一和第二段。另一方面,如果不准许进一步的重复(来自块6-20的“否”路径),则如由块6-11所表示的,方法600包括提供该解码的至少此部分已经失败的指示。
图7是并行链接码解码器727的另一实现方式的示意图。图7所示的解码器727类似于图4所示的解码器127并且从该解码器127来适配。其每个共同的元件包括共同的参考标记,并且为了简短在此仅描述了图4和图7之间的差别。与解码器127比较,解码器727包括用于基于码字中的错误的数量的估计而选择使用两个解码器421、423中的哪个来开始并行链接解码处理(即开始解码码字)的另外的组件或逻辑。
为此,解码器727包括耦接在码字缓冲器410和控制器420之间的错误估计模块730。更具体地,错误估计模块730连接到码字缓冲器410以接收该码字的至少一部分。例如,进一步参考图2A-2C,在一些实现方式中,错误估计模块730耦接到码字缓冲器410以接收数据字200的数据段204、205和相应的奇偶校验段204a、205a。在一些实现方式中,错误估计模块730耦接到码字缓冲器410以接收数据值200的数据段201、202、203以及相应的奇偶校验段201a、202a、203a。
在一些实现方式中,错误估计模块730包括编码器731和比较器732。在一些实现方式中,编码器731产生与第二解码器423的相同类型的码,并且从该码字中的一个或多个第二数据段产生一个或多个第三奇偶校验段。依次地,比较器732通过评估该一个或多个第二奇偶校验段和由该编码器731产生的一个或多个第三奇偶校验段来估计该码字的数据字中的错误的数量。在一些实现方式中,错误估计模块730还包括用于选择使用第一解码器421和第二解码器423中的哪个来开始解码码字(即开始用其来解码该码字)的决定模块,其中该选择至少基于估计的错误的数量。为此,在一些实现方式中,由比较器732比较编码器731产生的一个或多个奇偶校验段与接收的码字的部分的一个或多个奇偶校验段。例如,进一步参考图2A-2C,从存储介质读取的奇偶校验段204A、205a与由编码器731使用从存储介质读取的数据段204、205产生的奇偶校验段相比较。
控制器420基于由错误估计模块730提供的码字中的错误数量的估计来选择使用第一解码器421和第二解码器423中的哪个来开始解码该码字。在一些实现方式中,当估计的错误数量满足阈值时,控制器420选择第一解码器421来开始解码码字缓冲器410中的码字。可替换地,当估计的错误数量不满足阈值时,控制器420选择第二解码器423来开始解码该码字。在一些实现方式中,如以下参考图8和图9详细描述的,该阈值对应于将导致第一解码器421在被首先选择时将失败的错误数量。在一些实现方式中,该与之对应于将导致第一解码器421在被首先选择时将失败特定百分比的时间的错误数量。在一些实现方式中,该与之对应于可以成功被第一解码器421校正的错误的数量。
在一些实现方式中,当估计的错误数量满足第一阈值时(例如当估计的错误数量大于第一阈值时),控制器420选择第二解码器423以使用软决定解码来开始解码码字。在一些实现方式中,当估计的错误数量满足第二阈值时(例如当估计的错误数量大于诸如图9所示的ETH的第二阈值但是小于第一阈值时),控制器420选择第二解码器423以使用硬决定解码来开始解码该码字。
在一些实现方式中,当估计的错误数量满足第二阈值时(例如当估计的错误数量小于第二阈值时,该第二阈值小于上述的第一阈值),控制器420选择第一解码器421以使用硬决定解码开始解码该码字。
在一些实现方式中,控制器420可操作以选择编码器731来评估由第一解码器421和第二解码器423之一产生的解码结果。在一些实现方式中,控制器420可操作以当估计的错误数量满足阈值时(例如当估计的错误数量超过第三阈值时,该第三阈值大于该第一和第二阈值)选择第三解码器(未示出)用于解码,其中该第三解码器可操作以与多个其他的码字组合地解码该码字。在一些实现方式中,控制器420可操作以当估计的错误数量满足第一、第二和第三阈值中的相应一个时选择第一、第二和第三解码器。以下参考图9说明解码器选择的这样的阈值的例子。
图8是并行链接码错误控制解码器127b的另一实现方式的示意图。图8所示的解码器127b类似于图5所示的解码器127a并且从该解码器127a来适配。因而,两者共同的元件共享共同的参考标记,并且为了简短在此仅描述解码器127a、127b之间的差别。为此,解码器127b包括LDPC校验编码器810,其用于确定优选BCH解码器521还是LDPC解码器523来开始解码处理。换句话说,LDPC校验编码器810用于操纵码字到BCH解码器521或LDPC解码器523来开始解码处理。在一些实现方式中,LDPC校验编码器810配置为通过评估码字的一个或多个LDPC奇偶校验段以及由LDPC校验编码器810产生的一个或多个奇偶校验段来估计位错误的数量。此外,尽管在图8的解码器127b中采用LDPC校验编码器,但是本领域技术人员将从本公开认识到,在一些实现方式中,可以以类似的方式使用BCH校验编码器。更一般地,使用的校验编码器的类型取决于在用于产生码字的相应编码器中使用的一个或多个错误控制码的相应类型。
在一些实现方式中,如以下参考图9所述的,将错误的数量与一个或多个阈值比较以确定优选BCH解码器521和LDPC解码器523中的哪个来开始解码该码字。
更一般地,一些实现方式包括基于码字和/或码字组中的估计的错误数量而单独可选择的硬解码器和软解码器。例如,在一些实现方式中,在硬LDPC解码器、软LDPC解码器和BCH解码器之间的解码期间的信息流由码字中的估计的错误数量来支配。在一些实现方式中,消息传递处理操纵数据试图通过尝试解决较容易校正的错误而首先利用较不复杂的解码,然后使用数据字的先前校正的部分和其余错误的本质所要求的更加复杂的解码而聚焦于更难的位错误。例如,一个策略是首先校正单独的位错误,然后集中于更复杂的位错误集群。是用从较容易校正的位获取的信息(即校正的数据段),可以恢复取回的具有集群的缺陷的数据。另外,此信息可以被传递回到之前的解码器或者接下来的解码器。相同的算法应用于由BCH解码器操作的LDPC解码器的段,该BCH解码器使用码字的奇偶校验位。换句话说,在尝试用BCH解码器解码数据段之前,由LDPC解码器输出的与用于BCH解码器的数据段重叠的校正的数据可以替换数据段的重叠的部分。这样,并行链接解码和以下讨论的LDPC H-矩阵的重整的组合可以按均一化随机和突发错误的方式而容纳存储介质BER特性。
在此所述的并行链接编码和解码处理的实现方式在多种情况下并且特别是在(存储介质或者通信信道中的)错误分布是非均匀的情况下是有用的。在固态设备中,错误分布通常是非均匀的,并且位错误发生在具有多个对数线性分支(leg)的对数线性比率处,如以下参考图9所述。数学上,准备描述为具有长或粗尾部的泊松分布。这暗示着平均错误率近似等于方差(variance)。
图9是示出由图8所示的解码器127b的一些实现方式使用的各种性能范围和决定点的图900。具体地,图900示出了对于解码器127b的测试实现方式的码字解码失败的对数概率相对码字中的位错误的数量的例子。另外,已经注释图900以示出基于解码复杂度和成功的可能性而进行特定类型的解码的区域。
例如,当位错误的数量相对低时,比如在中等复杂度区域921中,优选相对低或中等复杂的解码方案。在一些实现方式中,存在朝向选择较低复杂度解码的偏向(bias),因为较低复杂度解码通常更快并且通常使用比较高复杂度解码更少得电力。并且通常存在可以用低复杂度解码处理校正小数量的位错误的期望。继续参考图8,在一些实现方式中,BCH解码器521比LDPC解码器更不复杂,并且在一些实现方式中,BCH解码器521被认为是低或中等复杂的解码器。在一些实现方式中,如果由LDPC校验编码器810产生的码字中的估计的错误的数量低于位错误阈值ETH,则BCH解码可以以低到中等复杂度有效地处理码字的解码,如由范围920所示。在一些实现方式中,在ETH以下,期望BCH解码器521在大于90%的时间产生正确的结果,其中ETH是在1.2E-2的范围内的BER。这样,当估计的错误数量在ETH以下时,控制器520选择BCH解码器521开始解码处理。在一些实现方式中,如果错误的数量接近于阈值ETH或者甚至刚刚超过阈值ETH,在此情况下BCH解码更可能失败,则控制器520可以仍然选择BCH解码器521开始解码处理。但是,如果位错误的数量实质上超过了错误阈值ETH,则假设性能落入更高复杂度区域953中。
在较高复杂度区域953中,BCH解码器521在首先被选择时则高度可能失败。因此用BCH解码器521开始解码处理可能仅仅是浪费电力并且对解码处理添加了不必要的延迟。因而,控制器520选择更有力并且计算上更复杂的错误控制码解码器、比如LDPC解码器523或者故障保护解码器560来开始解码处理。在一些实现方式中,较高复杂度区域953被划分为两个或更多范围。例如,如图9所示,较高复杂度区域953被划分为LDPC范围950和故障保护范围960。在一些实现方式中,LDPC范围950和故障保护范围960之间的阈值是近似为5.0E-2的BER。在故障保护范围960中,LDPC解码器523比在较低错误范围中更可能失败。因此在一些实现方式中,使用诸如2-DXOR校正方案(或者另一多块故障保护错误控制方案)的故障保护解码器来实现较低错误水平。
在一些实现方式中,LDPC范围950被划分为硬LDPC子范围950和软LDPC子范围952。子范围951、952是基于解码复杂度和在可能时朝向使用较低复杂度解码的偏向。硬LDPC子范围951包括BER性能,该BER性能可能不能由BCH解码可靠地实现,但是不需要软LDPC解码的复杂度。因而,如果估计的错误数量落在硬LDPC子范围951内,则控制器520选择LDPC解码器523来使用硬决定解码开始解码处理。如果估计的错误数量落在软LDPC子范围952内,则控制器520选择LDPC解码器523来使用软决定解码开始解码处理。在一些实现方式中,硬LDPC子范围951在1.2E-2和3.0E-2之间延伸,并且软LDPC子范围952在3.0E-2和5.0E-2之间延伸(即达到故障保护范围960)。
进一步参考图8,在一些实现方式中,LDPC校验编码器810还可以用于评估LDPC解码器523的输出。例如,当LDPC解码器523未能产生校正的数据时,可以使用LDPC校验编码器810来产生关于剩余错误的信息。在一些实现方式中,关于错误的信息用于操纵BCH解码器521和LDPC解码器523之间的信息流或者宣告码字包括不可解决的错误。
图10是并行链接码解码的方法1000的实现方式的流程图表示。图10所示的流程图类似于图6所示的流程图并且从该流程图适配。这样,两者共同的预案将向共同的参考标记,并且为了简短在此仅描述了两个流程图之间的差别。如由块10-1所表示的,方法1000包括选择多个段的LDPC数据和奇偶校验位(例如将选择两个段用于图8的解码器127b)。如由块10-2所表示的,方法1000包括使用LDPC校验编码器来估计码字中的位错误的数量。如由块10-3所表示的,方法1000包括确定错误估计是否在错误阈值(例如图9中的ETH)以下。
如果估计的错误数量在错误阈值ETH以下(来自块10-3的“BCH”路径),则方法1000从块6-3继续,如以上参考图6所述。另一方面,如果估计的错误数量不在错误阈值ETH以下(来自块10-3的“LDPC”路径),则方法1000从块6-16继续,如以上参考图6所述。
另外,如上所述,使用各种实现方式来使得在特定存储器位置处的位错误的概率能够匹配于错误校正码的错误校正能力和特性。更具体地,在一些实现方式中,错误控制系统包括错误追踪模块和码适配模块。错误追踪模块产生错误位置统计。码适配模块基于错误位值统计产生对于(由编码器使用的)可调整的产生器矩阵和(由解码器使用的)可调整的奇偶校验矩阵的调整。换句话说,与具体存储器位置相关联的错误概率可以被合并到错误控制码中以更改码字是否可校正的概率。
为此,在一些实现方式中,使用不规则错误控制码,因为校验位中的一些比其他位更加与数据位相互联系。例如,在一些实现方式中,LDPC编码器和解码器利用不规则码。LDPC码通常特征化为能力接近,这意味着存在以合理的复杂度校正在对于较不对称存储器的信道的非常接近香农限制的噪声条件下的错误的LDPC码。因而,能力接近LDPC错误校正花费的时间与码块长度相关地线性变化。另外,本领域技术人员将认识到,LDPC码是可以使用偶图G来设计的线性码的系列,在该偶图中一列节点包括消息节点n,另一列包括校验节点k。图G如下产生块长度n和至少n-k的维度的线性码。码字的n坐标与n个消息节点相关联。码字是使得对于所有校验节点在消息节点之间的相邻位置的和是零的那些向量(c1,…,cn)。
上述图表示可以被转换为如下的奇偶校验矩阵。矩阵H(即奇偶校验矩阵)被定义为二进制kxn矩阵,其中当且仅当在该图G中第i校验节点连接到第j消息节点时,每个项(i,j)是1(或者更一般地是预定值)。同等地,对于二进制数据,矩阵H的列表示可变位(即数据位或消息位),并且矩阵H的行表示校验位。给出矩阵H的定义,由图G定义的LDPC码是向量的集合c=(c1,…,cn),使得H·cΤ=0。但是,本领域技术人员还将认识到,不是每个二进制线性码都可以由稀疏偶图(sparse bipartite graph)表示。稀疏性适用于矩阵的序列,并且如果k乘以n的乘积趋向于是无穷大并且在kxn矩阵的序列中的非零元素的数量小于k乘以n的乘积,则kxc矩阵的序列被称为c-稀疏的。即,图G中的连接(校验位和可变位之间)随着矩阵的维度粗略地线性而不是二次地(或指数地)缩放。具有作为稀疏偶图的表示的二进制线性码可以是LDPC码、turbo码、重复(repeat)累积码或者喷泉码(fountain code)之一。满足这些条件的LDPC奇偶校验矩阵1200的例子示意性地例示在图12中。如以下更详细描述的,奇偶校验矩阵1200是不规则矩阵(即,矩阵1200的一些行具有比其他行更多的具有非零值的元素)。
不像规则的LDPC解码器,不规则的LDPC解码器基于一些校验位比其他位更加与可变位相互联系的原理而工作。如果校验位是更加相互联系的,则该校验位将通常更经常地标记错误。更少相互联系的校验位趋向于比更加相互联系的校验位收敛得更快。随后,来自更少相互联系的校验位的信息帮助更加相互联系的校验位的解码。在一些实现方式中,不规则码的这些和其他特性被用于将存储介质的物理特性选择性地映射到校验位的互联性。例如,在一些实现方式中,具有更高的位错误概率的存储器位置被映射到码的更加相互联系的校验位。替换地,在一些实现方式中,具有更高的位错误概率的存储器位置被映射到码的更少相互联系的校验位。
H-矩阵设计采用不规则LDPC解码器的较高信道容量能力来校正更多具有类似量的奇偶校验开销的位。概念类似于以上给出的消息传递方案,但是在此使得概率性LDPC解码器能够使用贝叶斯概率而工作。也就是说,关于信道的先验错误概率可以被合并到解码器中以便更改LDPC码字的段如果被发送回到BCH解码器将是更可校正还是更不可校正的概率。
在一些实现方式中,当将错误概率建模为位失败的函数时,H-矩阵映射的实际效果改变了尾部的量值,如图9所示。可以更改分布的尾部的特性,允许LDPC码字的一些段比其他段更容易校正。因此,当来自LDPC解码器的输出被发送到BCH解码器时,更可能BCH解码器可以校正经过重复仍然错误的一些段。这使得并行链接解码器能够以收敛于有效的码字更有效地工作,使得在解码器之间的消息传递更可能收敛于正确的数据字。
图11是适应性编解码器(编码器-解码器)1100的实现方式的示意图。在一些实现方式中,适应性编解码器1100可操作以确定在特定存储器位置处的位错误的概率并将该位错误的概率匹配到不规则LDPC码的错误校正能力和特性。为此,作为非限制性例子,适应性编解码器1100包括控制器1110、LDPC编码器1123、LDPC解码器1124、第一MUX1115、第二MUX1117、存储介质I/O1128、调整模块1143和错误追踪模块1141。
存储介质1130通过数据连接903耦接到存储介质I/O1128。在一些实现方式中,存储介质1130包括任意数量的存储器设备,包括但不限于非易失性半导体存储器设备,比如闪存。例如,闪存设备可以配置用于适合于诸如云计算的应用的企业存储。可替换地,闪存设备还可以配置用于相对较小规模的应用,比如个人快闪驱动器或者用于个人、膝上型或平板计算机的硬盘替换。如上所述,存储介质经常被划分为多个可寻址的并且可单独选择的块,比如可选部分1131。在一些实现方式中,存储介质I/O1128包括能够将诸如电压的读比较信号值施加到耦接于存储介质1130的部分的信号线的读和写电路。
第一MUX1115提供与数据处理系统(等)的接口,从该数据处理系统接收数据1000用于编码并存储在存储介质1130中。第二MUX1117(有时称为解复用器)将LDPC编码器1123选择性地耦接到错误位值追踪模块1141和存储介质I/O1128之一。控制器1110耦接到第一和第二MUX1115、1117以及调整模块1143、错误位值追踪模块1141和存储介质I/O1128中的一个或多个以便协调这些组件的操作。
耦接存储介质I/O1128以将从存储介质1130读取的数据和奇偶校验位1002提供给LDPC解码器1124。耦接LDPC解码器1124以将该数据和奇偶校验位1002提供给错误位值追踪模块1141。耦接错误位值追踪模块1141以将映射数据提供给调整模块1143。耦接调整模块1143以为LDPC编码器1123提供对由LDPC编码器使用来编码数据的LDPC产生器矩阵的调整或者基于映射数据提供新的LDPC产生器矩阵。还耦接调整模块1143以为LDPC解码器1124提供对由LDPC解码器1124使用来解码的LDPC奇偶校验矩阵的调整或者基于映射数据提供新的LDPC-奇偶校验矩阵。
在写操作期间,第一MUX1115接收要存储在存储介质1130中的数据1000。第一MUX1115将数据1000传递到LDPC编码器1123,LDPC编码器1123使用可调整的产生器矩阵来编码数据1000以产生码字(例如数据和奇偶校验位1001)。使得该码字可用于存储介质I/O1128,存储介质I/O1128以依赖于所使用的存储介质的类型的方式将该码字传送到存储介质1130。在读取操作期间,对于相同的数据,存储介质I/O1128访问存储介质1130的部分已读取存储的码字(即数据和奇偶校验位1002)。本领域技术人员将认识到,被存储介质I/O1128写到存储介质1130中的码字可能由于错误而不同于由存储介质1130存储的码字。换句话说,数据和奇偶校验位1001可能与数据和奇偶校验位1002不匹配。因而,读取的数据和奇偶校验位1002被提供给LDPC解码器1124以使用可调整的奇偶校验矩阵来解码。如下所述,LDPC解码器1123将读取的数据和奇偶校验位1002传递到错误位值追踪模块1141。LDPC解码器1124尝试解码读取的数据和奇偶校验位1002以便校正该数据中的错误。当解码成功时,校正后的数据1006被传输到请求设备或者系统(例如数据处理系统)。
在接连的写和读操作期间,如下累积错误位置数据。LDPC解码器1124将未校正的读取数据1004传输到第一MUX1115。第一MUX1115基于由控制器1110提供的控制信号将未校正的读取数据1004传送到LDPC编码器1123。LDPC编码器使用未校正的读取数据1004来产生校验字(check-word)(即数据’+奇偶校验位”)1005,其包括未校正的读取数据1004以及从未校正的读取数据1004新生成的奇偶校验位。校验字1005被传输到错误位值追踪模块1141,该错误位值追踪模块1141将校验字1005与读取的数据和奇偶校验位1002比较以确定未校正的读取数据1004中的错误的数量。然后将错误与从其读取该数据的存储器位置相关联以创建和/或更新映射信息和/或错误位置统计。在一些实现方式中,在接连的写和读循环期间映射信息和/或错误位置统计持续地被更新以便产生统计上有意义的结果。
然后映射信息被传输到调整模块1143。依次地,调整模块1143产生对于(由编码器1123使用的)可调整的产生器矩阵以及(由解码器1124使用的)可调整的奇偶校验矩阵的调整。在一些实现方式中,可调整的奇偶校验矩阵是不规则的,如上所述。在一些实现方式中,一个或多个有错误倾向的存储位置被映射到满足互联的阈值数量的可调整奇偶校验矩阵的校验位,其中这些有错误倾向的位置已经产生了满足阈值错误特征的错误。在一些实现方式中,阈值错误特征是最小值和最大值之一。在一些实现方式中,一个或多个没有错误倾向的存储位置被映射到满足互联的阈值数量的可调整奇偶校验矩阵的校验位,其中没有错误倾向的位置已经产生满足阈值错误特征的错误。
如图12所示,在一些实现方式中,H-矩阵1200至少包含子矩阵1201(子矩阵A)、1202(子矩阵Z)和1203(子矩阵B)。图12示出要调整H-矩阵的哪些部分以将错误位置信息映射到码。H-矩阵1200中的列表示可变位(即数据位或消息位)并且1200的行表示校验位。具体地,通过添加1’来调整列和行的加权以更改可变位和校验位之间(即数据和奇偶校验位之间)的连接复杂度。通过向矩阵添加更多的1’而增加可变校验位连接的数量。在一些实现方式中,可变校验位连接的总体数量的增加降低了相关联的数据(即可变)位和/或校验位位置的解码确定性。因而,在一些实现方式中,具有较高的位错误概率的存储器位置被映射到码的更少互联的校验位以使能够实现在高缺陷环境下的相对更快的解码器收敛。
换句话说,在上述的实现方式中(例如用于在高缺陷环境下使用的实现方式中),可以称为“低连接”校验位的校验位的子集平均比剩余的校验位连接到更少的存储器位置,包括具有较高的位错误概率(例如比存储介质的存储器位置的平均错误概率更高的位错误概率)的存储器位置,其可以被称为“高错误概率存储器位置”,而剩余校验位连接到比低连接存储器位置更多的存储器位置,并且平均还连接到比低连接校验位更少的高错误概率存储器位置。在一些实现方式中,高错误概率存储器位置达到了剩余的存储器位置所不满足的预定错误概率标准。在一些实现方式中,低连接校验位每个具有少于预定数量的连接,并且其他的校验位平均具有多于预定数量的连接。此外,在一些实现方式中,连接的阈值数量与高缺陷环境下的解码器的收敛速度值相关联。
在一些实现方式中(例如用于在高缺陷环境下使用的实现方式中),低连接校验位与存储介质中的存储介质块的初始和结尾字线上的存储位置相关联。换句话说,高错误概率存储器位置包括在存储介质块的开头和结尾处的字线上的位置。在一些实现方式中,低连接校验位与位于距离存储介质的感测放大器最远处的存储位置集。换句话说,高错误概率存储器位置包括距离存储介质的感测放大器最远的位置。
在一些实现方式中(例如用于在低缺陷环境下使用的实现方式中),在可变位和校验位之间具有更少的总体连接得到在低缺陷环境下的改进的性能,因为解码器通常将收敛得更快。发生更快的解码器收敛,因为更可靠的信息被迅速传递到更易受错误影响的那些可变位。具体可变位的此更快并且更可靠的解码器收敛使得消息能够随着解码器在可变位和校验位之间重复而更有效地被解码。因而,在一些实现方式中,具有较高的位错误概率的存储器位置被映射到码的更多互联的校验位以允许在低缺陷环境下的迅速错误检测。
换句话说,在上述的用于在低缺陷环境下使用的实现方式中,可以称为“高连接”校验位的校验位的子集连接到比剩余的校验位平均更多的存储器位置,包括具有较高的位错误概率(例如,比存储介质的存储器位置的平均位错误概率更高的位错误概率)的存储器位置,这可以称为“高错误概率存储器位置”,而剩余的校验位连接到比高连接存储器位置更少的存储器位置,并且平均还连接到比高连接校验位更少的高错误概率存储器位置。在一些实现方式中,高错误概率存储器位置达到了剩余的存储器位置所不满足的预定错误概率标准。在一些实现方式中,高连接校验位每个具有多于预定数量的连接,并且其他的校验位平均具有少于预定数量的连接。此外,在一些实现方式中,连接的阈值数量与低缺陷环境下的解码器的收敛速度值相关联。
在一些实现方式中(例如用于在低缺陷环境下使用的实现方式中),高连接校验位与存储介质中的存储介质块的初始和结尾字线上的存储位置相关联。换句话说,高错误概率存储器位置包括在存储介质块的开头和结尾处的字线上的位置。在一些实现方式中,高连接校验位与位于距离存储介质的感测放大器最远处的存储位置集。换句话说,高错误概率存储器位置包括距离存储介质的感测放大器最远的位置。
这样,根据错误位置信息调整H-矩阵的处理包括尝试将具体存储器位置处的存储介质错误的概率映射到LDPC解码器的能力以发现那些错误。
在一些实现方式中,在存储介质的上部和下部页中发现的缺陷之间存在差别。此不均匀的行为被映射到图12所示的H-矩阵1200的项。
图13是利用与存储介质的错误密度位置简档对应的(例如已经与之匹配的)错误控制码的错误控制编码系统、下文称为存储介质匹配的编解码器1300的实现方式的示意图。在一些实现方式中,存储介质匹配的编解码器1300可操作以使用错误控制码产生器矩阵编码将被写到存储介质1330的数据,该错误控制码产生器矩阵将在存储介质1330的特定存储器位置处的位错误概率匹配到由该产生器矩阵所定义的错误校正码的错误校正能力和特性。相反,存储介质匹配的编解码器1300还可操作以使用与该产生器矩阵互补的错误控制码奇偶校验矩阵解码从存储介质1330读取的数据和奇偶校验位,因此还依赖于在特定存储器位置处的位错误概率和错误校正码的错误校正能力和特性之间的匹配。
为此,作为非限制性的例子,存储介质匹配的编解码器1300包括控制器1310、LDPC编码器1323、LDPC解码器1324、写缓冲器1313、读缓冲器1314和存储介质I/O1328。LDPC编码器1323包括并且利用存储介质匹配的产生器矩阵1323a,并且LDPC解码器1324包括并利用与该产生器矩阵1323a互补的(并因此与之对应的)存储介质匹配的奇偶校验矩阵1324a。本领域技术人员将从本公开认识到,产生器矩阵1323a和奇偶校验矩阵1324a可以单独地和/或相组合地用于定义LDPC错误控制码的表示。此外,使用具有不同的错误密度位置简档的相应存储介质的系统1300的不同实例使用彼此不同的产生器矩阵1323a和彼此不同的奇偶校验矩阵1324a。
存储介质1330通过数据连接903耦接到存储介质I/O1328。在一些实现方式中,存储介质1330包括任意数量的存储器设备,包括但不限于非易失性半导体存储器设备,比如闪存。例如,闪存设备可以被配置用于适合于诸如云计算的应用的企业存储。可替换地,闪存设备还可以配置用于相对小规模的应用,比如个人闪存驱动或者用于个人计算机、膝上型计算机和平板计算机的硬盘替换。如上所述,存储介质通常被划分为多个可寻址的并且单独可选择的块和/或区域,比如可选部分1331。在一些实现方式中,存储介质I/O1328包括能够将诸如电压的读比较信号值施加到耦接于存储介质1330的部分的信号线的读和写电路。
在写操作期间,写缓冲器1313接收要存储在存储介质1330中的数据。数据块1301从写缓冲器1313传递到LDPC编码器1323。LDPC编码器1323使用存储介质匹配的产生器矩阵1323a编码数据块1301以产生码字(即数据和奇偶校验位1302)。存储介质I/O1328以取决于所利用的存储介质的类型的方式将码字写到存储介质1330。在读操作期间,对于相同的数据,存储介质I/O1328访问存储介质1330的相同部分以读取存储的码字(即数据和奇偶校验位1303)。本领域技术人员将认识到,由存储介质I/O1328写到存储介质1330的码字由于错误可能不同于由存储介质1330存储的和/或从存储介质1330读取的码字。换句话说,数据和奇偶校验位1302可能不匹配于数据和奇偶校验位1303。因而,读取的数据和奇偶校验位1303被提供给LDPC解码器1224以使用存储介质匹配的奇偶校验矩阵1324a来解码。当解码成功时,校正后的数据1304经由读缓冲器1314传输到请求设备或系统(例如数据处理系统)。
还将理解,尽管在此可以使用术语“第一”、“第二”等等以描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于彼此区分元件。例如,第一接触可以表述为第二接触,并且类似地,第二接触可以表述为第一接触,这改变了本描述的含义,只要所有“第一接触”的出现都一致地被重新命名并且所有第二接触的出现都一致地被重新命名。第一接触和第二接触两者都是接触,但是它们不是相同的接触。
在此使用的术语仅仅是为了描述特定实施例的目的,并且不意图限制权利要求。如在实施例的说明书以及所附权利要求书中所使用的,单数形式“一”、“一个”和“该”意图也包括复数形式,除非上下文明确指示不是这样。还将理解,在此使用的术语“和/或”指代并包括相关联的列出项中的一个或多个的任意一个以及所有可能的组合。还将理解,属于“包括”和/或“包含”当用在本说明书中时指定所述特征、整体、步骤、操作、元素和/或组件的存在,但是不排除一个或多个其他特征、整体、步骤、操作、元素、组件和/或其组的存在或添加。
如在此使用的,取决于上下文,术语“如果”可以解释为意味着“当……时”或者“在……后”或者“响应于确定”或“根据确定”或“响应于检测到”所述的条件先例为真。类似地,取决于上下文,短语“如果确定[所述条件先例为真]”或“如果[所述条件先例为真]”或者“当[所述条件先例为真]时”可以解释为意味着“在确定[所述条件先例为真]”或者“响应于确定[所述条件先例为真]”或者“根据确定[所述条件先例为真]”或者“在检测到[所述条件先例为真]后”或者“响应于检测到[所述条件先例为真]”。
为了说明的目的已经参考具体实施例描述了以上描述。但是,以上所例示的讨论不意图穷尽或将本发明限制到所公开的精确形式。考虑到以上教导,许多修改和变化是可能的。选择和描述实施例以便最佳地说明本发明的原理及其实际应用,由此使得本领域技术人员能够利用适合于意图的特定用途的各种修改最佳地利用本发明和各种实施例。

Claims (29)

1.一种错误控制编码系统,能够操作以从数据字产生码字,其中得到的码字包括数据字以及使用该数据字产生的三个或更多的奇偶校验段,该系统包括:
第一编码器,配置为编码所述数据字的两个或更多第一数据段以便产生两个或更多对应的第一奇偶校验段,其中所述两个或更多第一数据段的每个包括该数据字的相应的连续部分;
第二编码器,配置为编码所述数据字的一个或多个第二数据段以便产生一个或多个对应的第二奇偶校验段,其中该一个或多个第二数据段的每个包括位于该数据字的所述第一数据段的两个或更多中的所述数据字的相应的连续部分;以及
控制器,配置为将该数据字的相应数据段并行地提供给所述第一编码器和所述第二编码器,所述数据字的相应数据段包括提供给所述第一编码器用于编码的该数据字的所述两个或更多第一数据段以及提供给所述第二编码器用于编码的该数据字的所述一个或多个第二数据段。
2.如权利要求1所述的编码系统,其中所述第一编码器包括BoseChaudhuri Hocquenghem(BCH)码编码器。
3.如权利要求1所述的编码系统,其中所述第二编码器包括低密度奇偶校验(LDPC)码编码器。
4.如权利要求1所述的编码系统,其中所述第一编码器配置为编码在两个数据段中的所述数据字,该两个数据段一起包括该数据字的所有。
5.如权利要求1所述的编码系统,其中该第二编码器配置为将该数据字作为整体而编码。
6.如权利要求1所述的编码系统,还包括存储器控制器的部分,其能够操作以将该码字写到存储介质中。
7.如权利要求6所述的编码系统,其中该存储器控制器是闪存控制器。
8.如权利要求6所述的编码系统,其中该存储器控制器包括存储介质接口,其能够操作以将该码字写到存储介质中。
9.如权利要求1-8的任意一项所述的编码系统,还包括第三编码器,配置为编码多个数据字,其中所述多个数据字包括由该第一编码器和该第二编码器编码的数据字。
10.如权利要求9所述的编码系统,还包括缓冲器,其具有存储在所述多个数据字中包括的能够由该第三编码器编码的数据的容量。
11.一种错误控制解码系统,能够操作以解码包括数据字以及三个或更多奇偶校验段的码字,该系统包括:
第一解码器,配置为通过利用在该码字中包括的两个或更多第一奇偶校验段以及在该码字中包括的数据字的两个或更多第一数据段来解码该码字,其中:
所述两个或更多第一奇偶校验段的每个与所述两个或更多第一数据段中的相应一个相关联,以及
所述两个或更多第一数据段的每个包括所述数据字的相应的连续部分;
第二解码器,配置为通过利用在所述码字中包括的一个或多个第二奇偶校验段以及在所述码字中的数据字的一个或多个第二数据段来解码该码字,其中:
所述一个或多个第二奇偶校验段的每个与所述一个或多个第二数据段的相应一个相关联,
所述一个或多个第二数据段的每个包括在多个所述两个或更多第一数据段中所包括的数据的连续部分,以及
当来自第一解码器的部分解码结果可用时,所述第二解码器利用该部分解码结果;以及
控制器,配置为将所述两个或更多第一数据段和所述两个或更多第一奇偶校验段提供给所述第一解码器用于解码,并将来自所述数据字的所述一个或多个第二数据段以及所述一个或多个第二奇偶校验段提供给所述第二解码器用于解码,
其中所述第一解码器配置为根据所述第二解码器的解码结果包含解码缺陷的确定而利用来自所述第二解码器的部分解码结果。
12.如权利要求11所述的解码系统,其中所述第一解码器配置为对于所述两个或更多第一数据段的被成功解码的每个第一数据段提供解码数据,这独立于未能成功解码其他的两个或更多第一数据段的任意一个。
13.如权利要求11和12的任意一项所述的解码系统,其中所述控制器还配置为当所述两个或更多第一数据段的至少一个未被成功解码时,将与两个或更多第一数据段的被成功解码的每个第一数据段相关联的、来自所述第一解码器的解码数据提供给所述第二解码器。
14.如权利要求11和12的任意一项所述的解码系统,还包括软信息产生模块,配置为将由该第一解码器产生的解码结果转换为软信息,该软信息包括所述解码结果的至少一部分。
15.如权利要求14所述的解码系统,其中该软信息包括以下的至少一个:与该码字相关联的条件概率、以及与该码字相关联的对数似然比。
16.如权利要求11所述的解码系统,其中该第一解码器配置为当来自该第二解码器的部分解码结果可用时利用该部分解码结果。
17.如权利要求16所述的解码系统,其中来自该第二解码器的该部分解码结果包括由该第二解码器产生的软信息。
18.如权利要求11所述的解码系统,还包括:
解码验证模块,配置为评估该第一解码器和该第二解码器的解码结果,并且当在该第一解码器和该第二解码器的至少一个的解码结果中检测到一个或多个解码缺陷时用信号通知该控制器,以及
其中所述解码缺陷是第二相应解码缺陷,并且该控制器还配置为:
当在该第一解码器的解码结果中检测到第一相应解码缺陷时,将来自第一解码器的部分解码结果传递到第二解码器。
19.如权利要求11所述的解码系统,还包括:
其中所述解码缺陷是第二相应解码缺陷;
解码验证模块,配置为评估由该第一解码器和该第二解码器之一产生的解码结果,并且当在解码结果中检测到相应解码缺陷时用信号通知该控制器,其中所述相应解码缺陷是第二相应解码缺陷或者在所述第一解码器的解码结果中的第一相应解码缺陷,以及
其中该控制器还配置为:
当在该第一解码器的解码结果中检测到解码缺陷时,将来自第一解码器的部分解码结果传递到第二解码器,以及
当在该第二解码器的解码结果中检测到解码缺陷时,将来自第二解码器的部分解码结果传递到第一解码器。
20.如权利要求11所述的解码系统,还包括:
存储介质接口,能够操作以从存储介质读取码字;以及
缓冲器,用于存储从该存储介质读取的码字。
21.如权利要求20所述的解码系统,其中该存储介质是闪存。
22.如权利要求11所述的解码系统,还包括第三解码器,配置为解码多个码字,其中所述多个码字至少包括由该第一解码器和该第二解码器解码的码字的数据字。
23.如权利要求11所述的解码系统,其中该第一解码器包括BoseChaudhuri Hocquenghem(BCH)码解码器。
24.如权利要求11所述的解码系统,其中所述第二解码器包括低密度奇偶校验(LDPC)码解码器。
25.如权利要求11所述的解码系统,包括存储器控制器的部分。
26.如权利要求11所述的解码系统,还能够操作以选择第一解码器或第二解码器之一来开始解码该码字。
27.如权利要求11所述的解码系统,还包括错误估计模块,其包括:
编码器,对应于第二解码器,配置为从该码字中的一个或多个第二数据段产生一个或多个第三奇偶校验段;
比较器模块,配置为通过评估所述一个或多个第二奇偶校验段和所述一个或多个第三奇偶校验段来估计所述码字的数据字中的错误的数量;以及
决定模块,配置为选择用第一解码器和第二解码器中的哪个来开始解码所述码字,其中该选择至少基于估计的错误的数量。
28.一种错误控制编码系统,能够操作以从数据字产生码字,其中得到的码字包括数据字以及使用该数据字产生的四个或更多的奇偶校验段,该系统包括:
第一编码器,编码所述数据字的两个或更多第一数据段以便产生两个或更多对应的第一奇偶校验段,其中所述两个或更多第一数据段的每个包括该数据字的相应的连续部分;
第二编码器,编码所述数据字的两个或更多第二数据段以便产生两个或更多对应的第二奇偶校验段,其中该两个或更多第二数据段的每个包括位于该数据字的所述第一数据段的两个或更多中的所述数据字的相应的连续部分;以及
控制器,配置为将该数据字的所述两个或更多第一数据段提供给所述第一编码器用于编码,并且将该数据字的所述两个或更多第二数据段提供给所述第二编码器用于编码。
29.如权利要求28所述的错误控制编码系统,其中该第一编码器配置为编码在三个或更多第一数据段中的所述数据字以便产生三个或更多第一奇偶校验段,并且所述第二编码器配置为编码在两个或更多第二数据段中的所述数据字以便产生两个或更多第二奇偶校验段。
CN201280067580.5A 2011-11-18 2012-11-19 用于多分层错误校正的系统、方法和设备 Active CN104067233B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161561804P 2011-11-18 2011-11-18
US61/561,804 2011-11-18
US13/679,963 2012-11-16
US13/679,963 US9048876B2 (en) 2011-11-18 2012-11-16 Systems, methods and devices for multi-tiered error correction
PCT/US2012/065914 WO2013075125A2 (en) 2011-11-18 2012-11-19 Systems, methods, and devices for multi-tiered error correction

Publications (2)

Publication Number Publication Date
CN104067233A CN104067233A (zh) 2014-09-24
CN104067233B true CN104067233B (zh) 2016-12-14

Family

ID=47470115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280067580.5A Active CN104067233B (zh) 2011-11-18 2012-11-19 用于多分层错误校正的系统、方法和设备

Country Status (4)

Country Link
US (1) US9048876B2 (zh)
EP (1) EP2780810B1 (zh)
CN (1) CN104067233B (zh)
WO (1) WO2013075125A2 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9898361B2 (en) 2011-01-04 2018-02-20 Seagate Technology Llc Multi-tier detection and decoding in flash memories
US8812939B2 (en) * 2011-01-28 2014-08-19 Marvell World Trade Ltd. Soft decoding systems and methods for flash based memory systems
US8751906B2 (en) * 2011-06-13 2014-06-10 Marvell World Trade Ltd. Systems and methods for operating on a storage device using a life-cycle dependent coding scheme
US8826096B2 (en) * 2011-12-29 2014-09-02 Korea Advanced Institute Of Science And Technology Method of decoding LDPC code for producing several different decoders using parity-check matrix of LDPC code and LDPC code system including the same
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
KR102004928B1 (ko) * 2012-12-04 2019-07-29 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20140310534A1 (en) * 2013-04-15 2014-10-16 Apple Inc. Data scrambling in memory devices using combined sequences
US9467170B2 (en) * 2013-05-17 2016-10-11 Marvell World Trade Ltd. NAND flash memory systems with efficient soft information interface
JP2015038796A (ja) * 2013-08-19 2015-02-26 株式会社東芝 メモリシステムおよび制御方法
KR102110767B1 (ko) * 2013-12-24 2020-06-09 삼성전자 주식회사 메모리 컨트롤러 구동방법 및 메모리 컨트롤러
TWI528732B (zh) 2013-12-30 2016-04-01 衡宇科技股份有限公司 具有ldpc碼及bch碼之解碼器及其解碼方法
US9733847B2 (en) 2014-06-02 2017-08-15 Micron Technology, Inc. Systems and methods for transmitting packets in a scalable memory system protocol
US9984768B2 (en) 2014-10-20 2018-05-29 Sandisk Technologies Llc Distributing storage of ECC code words
DE102015104841A1 (de) * 2015-03-30 2016-10-06 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
US10223197B2 (en) * 2015-08-06 2019-03-05 Nxp B.V. Integrated circuit device and method for applying error correction to SRAM memory
US20170070243A1 (en) * 2015-09-08 2017-03-09 Storart Technology Co.,Ltd. Early termination method with re-encoding scheme for decoding of error correction code
US9886342B2 (en) * 2015-10-28 2018-02-06 Sandisk Technologies Llc Storage device operations based on bit error rate (BER) estimate
US10180874B2 (en) 2015-10-28 2019-01-15 Western Digital Technologies, Inc. Storage device operations based on bit error rate (BER) estimate
US9978462B2 (en) 2015-10-29 2018-05-22 Sandisk Technologies Llc Partial soft bit read
DE102016104012A1 (de) * 2016-03-04 2017-09-07 Infineon Technologies Ag Verarbeitung eines Datenworts
US10177785B2 (en) * 2016-08-23 2019-01-08 Western Digital Technologies, Inc. Error detecting code with partial update
US11050758B2 (en) 2016-08-23 2021-06-29 Reavire, Inc. Controlling access to a computer network using measured device location
US11269480B2 (en) 2016-08-23 2022-03-08 Reavire, Inc. Controlling objects using virtual rays
WO2018067963A1 (en) 2016-10-06 2018-04-12 Gullicksen Brothers, LLC Locating devices based on antenna coordinates
CN110651431A (zh) * 2017-03-24 2020-01-03 瑞典爱立信有限公司 用于3gpp nr的crc码长度的自适应
US10530396B2 (en) * 2017-11-20 2020-01-07 International Business Machines Corporation Dynamically adjustable cyclic redundancy code types
US10541782B2 (en) 2017-11-20 2020-01-21 International Business Machines Corporation Use of a cyclic redundancy code multiple-input shift register to provide early warning and fail detection
US10530523B2 (en) 2017-11-20 2020-01-07 International Business Machines Corporation Dynamically adjustable cyclic redundancy code rates
US10419035B2 (en) * 2017-11-20 2019-09-17 International Business Machines Corporation Use of multiple cyclic redundancy codes for optimized fail isolation
KR102629457B1 (ko) * 2018-10-24 2024-01-26 삼성전자주식회사 반도체 메모리 장치, 제어 장치, 및 메모리 시스템
TWI782341B (zh) * 2018-11-14 2022-11-01 慧榮科技股份有限公司 快閃記憶體控制器及其中的編碼電路
TWI712268B (zh) * 2018-11-14 2020-12-01 慧榮科技股份有限公司 快閃記憶體控制器及其中的編碼電路與解碼電路
KR20200079134A (ko) 2018-12-24 2020-07-02 에스케이하이닉스 주식회사 컨트롤러 및 이를 포함하는 메모리 시스템
US11204839B2 (en) * 2020-02-20 2021-12-21 SK Hynix Inc. Memory system with low-latency read recovery and method of operating the memory system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1841334A (zh) * 2005-03-31 2006-10-04 富士通株式会社 存储控制电路及存储控制电路中的地址错误检验方法
CN101501784A (zh) * 2006-08-07 2009-08-05 马维尔国际贸易有限公司 用于利用乘积码来纠正非易失性存储器中的错误的系统和方法
CN101584121A (zh) * 2007-01-16 2009-11-18 皇家飞利浦电子股份有限公司 用于对数据比特或码元进行交织的系统、装置和方法
CN101763903A (zh) * 2008-12-22 2010-06-30 财团法人工业技术研究院 快闪存储器控制器、其纠错码控制器及其方法和系统
CN101785189A (zh) * 2007-08-30 2010-07-21 松下电器产业株式会社 编码装置和解码装置
CN101983489A (zh) * 2008-03-31 2011-03-02 马维尔国际贸易有限公司 对传输块的多码块进行选择性组合和译码的方法和装置

Family Cites Families (187)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4916652A (en) 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures
US5657332A (en) 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5416915A (en) 1992-12-11 1995-05-16 International Business Machines Corporation Method and system for minimizing seek affinity and enhancing write sensitivity in a DASD array
US5537555A (en) 1993-03-22 1996-07-16 Compaq Computer Corporation Fully pipelined and highly concurrent memory controller
US5519847A (en) 1993-06-30 1996-05-21 Intel Corporation Method of pipelining sequential writes in a flash memory
US5708849A (en) 1994-01-26 1998-01-13 Intel Corporation Implementing scatter/gather operations in a direct memory access device on a personal computer
GB9419246D0 (en) 1994-09-23 1994-11-09 Cambridge Consultants Data processing circuits and interfaces
US5666114A (en) 1994-11-22 1997-09-09 International Business Machines Corporation Method and means for managing linear mapped address spaces storing compressed data at the storage subsystem control unit or device level
US5530705A (en) 1995-02-08 1996-06-25 International Business Machines Corporation Soft error recovery system and method
KR100404650B1 (ko) 1995-06-14 2004-02-11 히다치초엘에스아이 엔지니어링가부시키가이샤 반도체메모리,메모리디바이스및메모리카드
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6134148A (en) 1997-09-30 2000-10-17 Hitachi, Ltd. Semiconductor integrated circuit and data processing system
US5943692A (en) 1997-04-30 1999-08-24 International Business Machines Corporation Mobile client computer system with flash memory management utilizing a virtual address map and variable length data
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
JPH11126497A (ja) 1997-10-22 1999-05-11 Oki Electric Ind Co Ltd 不揮発性半導体記憶装置
US6018304A (en) * 1997-12-18 2000-01-25 Texas Instruments Incorporated Method and apparatus for high-rate n/n+1 low-complexity modulation codes with adjustable codeword length and error control capability
US6070074A (en) * 1998-04-24 2000-05-30 Trw Inc. Method for enhancing the performance of a regenerative satellite communications system
US6138261A (en) * 1998-04-29 2000-10-24 Trw Inc. Concatenated coding system for satellite communications
US6182264B1 (en) 1998-05-22 2001-01-30 Vlsi Technology, Inc. Smart dynamic selection of error correction methods for DECT based data services
US7111293B1 (en) 1998-06-03 2006-09-19 Ants Software, Inc. Method for increased concurrency in a computer system
US6192092B1 (en) * 1998-06-15 2001-02-20 Intel Corp. Method and apparatus for clock skew compensation
US6505305B1 (en) 1998-07-16 2003-01-07 Compaq Information Technologies Group, L.P. Fail-over of multiple memory blocks in multiple memory modules in computer system
US6314501B1 (en) 1998-07-23 2001-11-06 Unisys Corporation Computer system and method for operating multiple operating systems in different partitions of the computer system and for allowing the different partitions to communicate with one another through shared memory
US6295592B1 (en) 1998-07-31 2001-09-25 Micron Technology, Inc. Method of processing memory requests in a pipelined memory controller
US6438661B1 (en) 1999-03-03 2002-08-20 International Business Machines Corporation Method, system, and program for managing meta data in a storage system and rebuilding lost meta data in cache
US6449625B1 (en) 1999-04-20 2002-09-10 Lucent Technologies Inc. Use of a two-way stack approach to optimize flash memory management for embedded database systems
US6564271B2 (en) 1999-06-09 2003-05-13 Qlogic Corporation Method and apparatus for automatically transferring I/O blocks between a host system and a host adapter
US20050114587A1 (en) 2003-11-22 2005-05-26 Super Talent Electronics Inc. ExpressCard with On-Card Flash Memory with Shared Flash-Control Bus but Separate Ready Lines
US20080282128A1 (en) 1999-08-04 2008-11-13 Super Talent Electronics, Inc. Method of Error Correction Code on Solid State Disk to Gain Data Security and Higher Performance
US7318117B2 (en) 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
US6484224B1 (en) 1999-11-29 2002-11-19 Cisco Technology Inc. Multi-interface symmetric multiprocessor
DE19961138C2 (de) 1999-12-17 2001-11-22 Siemens Ag Multiport-RAM-Speichervorrichtung
US8037234B2 (en) 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US7082056B2 (en) 2004-03-12 2006-07-25 Super Talent Electronics, Inc. Flash memory device and architecture with multi level cells
US20020152305A1 (en) 2000-03-03 2002-10-17 Jackson Gregory J. Systems and methods for resource utilization analysis in information management environments
US6516437B1 (en) 2000-03-07 2003-02-04 General Electric Company Turbo decoder control for use with a programmable interleaver, variable block length, and multiple code rates
US6615307B1 (en) 2000-05-10 2003-09-02 Micron Technology, Inc. Flash with consistent latency for read operations
US20030188045A1 (en) 2000-04-13 2003-10-02 Jacobson Michael B. System and method for distributing storage controller tasks
US6678788B1 (en) 2000-05-26 2004-01-13 Emc Corporation Data type and topological data categorization and ordering for a mass storage system
US6442076B1 (en) 2000-06-30 2002-08-27 Micron Technology, Inc. Flash memory with multiple status reading capability
US6980985B1 (en) 2000-08-30 2005-12-27 At&T Corp. Distributed evalulation of directory queries using a topology cache
US6738870B2 (en) 2000-12-22 2004-05-18 International Business Machines Corporation High speed remote storage controller
US20020156973A1 (en) 2001-01-29 2002-10-24 Ulrich Thomas R. Enhanced disk array
US7017107B2 (en) 2001-04-30 2006-03-21 Sun Microsystems, Inc. Storage array employing scrubbing operations at the disk-controller level
US6938253B2 (en) 2001-05-02 2005-08-30 Portalplayer, Inc. Multiprocessor communication system and method
US6757768B1 (en) 2001-05-17 2004-06-29 Cisco Technology, Inc. Apparatus and technique for maintaining order among requests issued over an external bus of an intermediate network node
US7068603B2 (en) 2001-07-06 2006-06-27 Juniper Networks, Inc. Cross-bar switch
US6836815B1 (en) 2001-07-11 2004-12-28 Pasternak Solutions Llc Layered crossbar for interconnection of multiple processors and shared memories
JP4569055B2 (ja) 2001-08-06 2010-10-27 ソニー株式会社 信号処理装置及び信号処理方法
TW539946B (en) 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
JP4437519B2 (ja) 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US7028213B2 (en) 2001-09-28 2006-04-11 Hewlett-Packard Development Company, L.P. Error indication in a raid memory system
US7032123B2 (en) 2001-10-19 2006-04-18 Sun Microsystems, Inc. Error recovery
JP3663377B2 (ja) 2001-10-23 2005-06-22 インターナショナル・ビジネス・マシーンズ・コーポレーション データ記憶装置、読み出しデータの処理装置および読み出しデータの処理方法
US7380085B2 (en) 2001-11-14 2008-05-27 Intel Corporation Memory adapted to provide dedicated and or shared memory to multiple processors and method therefor
US6798696B2 (en) 2001-12-04 2004-09-28 Renesas Technology Corp. Method of controlling the operation of non-volatile semiconductor memory chips
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US6836808B2 (en) 2002-02-25 2004-12-28 International Business Machines Corporation Pipelined packet processing
KR100476888B1 (ko) 2002-04-04 2005-03-17 삼성전자주식회사 온도보상기능을 가진 멀티비트 플래쉬메모리
JP4079684B2 (ja) 2002-05-08 2008-04-23 株式会社日立製作所 ヒープメモリ管理方法およびそれを用いた計算機システム
US6895464B2 (en) 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7051155B2 (en) 2002-08-05 2006-05-23 Sun Microsystems, Inc. Method and system for striping data to accommodate integrity metadata
US6978343B1 (en) 2002-08-05 2005-12-20 Netlogic Microsystems, Inc. Error-correcting content addressable memory
US20040153902A1 (en) 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
US7043505B1 (en) 2003-01-28 2006-05-09 Unisys Corporation Method variation for collecting stability data from proprietary systems
US7162678B2 (en) 2003-03-14 2007-01-09 Quantum Corporation Extended error correction codes
KR100543447B1 (ko) 2003-04-03 2006-01-23 삼성전자주식회사 에러정정기능을 가진 플래쉬메모리장치
US7527466B2 (en) 2003-04-03 2009-05-05 Simmons Robert J Building-erection structural member transporter
WO2004099985A1 (ja) 2003-05-09 2004-11-18 Fujitsu Limited 実行環境の危険予測/回避方法,システム,プログラムおよびその記録媒体
US7877647B2 (en) 2003-05-23 2011-01-25 Hewlett-Packard Development Company, L.P. Correcting a target address in parallel with determining whether the target address was received in error
CA2523548C (en) 2003-05-23 2014-02-04 Washington University Intelligent data processing system and method using fpga devices
US7685254B2 (en) 2003-06-10 2010-03-23 Pandya Ashish A Runtime adaptable search processor
US7100002B2 (en) 2003-09-16 2006-08-29 Denali Software, Inc. Port independent data transaction interface for multi-port devices
US7054968B2 (en) 2003-09-16 2006-05-30 Denali Software, Inc. Method and apparatus for multi-port memory controller
US7523157B2 (en) 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7401174B2 (en) 2003-12-16 2008-07-15 Matsushita Electric Industrial Co., Ltd. File system defragmentation and data processing method and apparatus for an information recording medium
US7376887B2 (en) 2003-12-22 2008-05-20 International Business Machines Corporation Method for fast ECC memory testing by software including ECC check byte
US7328377B1 (en) 2004-01-27 2008-02-05 Altera Corporation Error correction for programmable logic integrated circuits
JP4477365B2 (ja) 2004-01-29 2010-06-09 株式会社日立製作所 複数インタフェースを有する記憶装置、および、その記憶装置の制御方法
US7389465B2 (en) 2004-01-30 2008-06-17 Micron Technology, Inc. Error detection and correction scheme for a memory device
US7350044B2 (en) 2004-01-30 2008-03-25 Micron Technology, Inc. Data move method and apparatus
US20080147964A1 (en) 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
US7020017B2 (en) 2004-04-06 2006-03-28 Sandisk Corporation Variable programming of non-volatile memory
EP1870814B1 (en) 2006-06-19 2014-08-13 Texas Instruments France Method and apparatus for secure demand paging for processor devices
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US20050273560A1 (en) 2004-06-03 2005-12-08 Hulbert Jared E Method and apparatus to avoid incoherency between a cache memory and flash memory
US7334179B2 (en) 2004-06-04 2008-02-19 Broadcom Corporation Method and system for detecting and correcting errors while accessing memory devices in microprocessor systems
US7159069B2 (en) 2004-06-23 2007-01-02 Atmel Corporation Simultaneous external read operation during internal programming in a flash memory device
EP1797645B1 (en) 2004-08-30 2018-08-01 Google LLC Systems and methods for providing nonvolatile memory management in wireless phones
US20060156177A1 (en) 2004-12-29 2006-07-13 Sailesh Kottapalli Method and apparatus for recovering from soft errors in register files
US7657696B2 (en) 2005-02-25 2010-02-02 Lsi Corporation Method to detect NAND-flash parameters by hardware automatically
US7707232B2 (en) 2005-05-13 2010-04-27 Microsoft Corporation Implementation for collecting unmanaged memory
US7934049B2 (en) 2005-09-14 2011-04-26 Sandisk Corporation Methods used in a secure yet flexible system architecture for secure devices with flash mass storage memory
KR100705220B1 (ko) 2005-09-15 2007-04-06 주식회사 하이닉스반도체 프로그램 속도를 증가시키기 위한 플래시 메모리 장치의소거 및 프로그램 방법
EP1934745A2 (en) 2005-09-27 2008-06-25 Nxp B.V. Error detection / correction circuit as well as corresponding method
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
KR100715147B1 (ko) 2005-10-06 2007-05-10 삼성전자주식회사 전류소모를 감소시키는 내부전원전압 발생회로를 가지는멀티칩 반도체 메모리 장치
US20070083697A1 (en) 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US8223553B2 (en) 2005-10-12 2012-07-17 Macronix International Co., Ltd. Systems and methods for programming a memory device
US8006161B2 (en) 2005-10-26 2011-08-23 Samsung Electronics Co., Ltd Apparatus and method for receiving signal in a communication system using a low density parity check code
KR100966043B1 (ko) 2005-10-31 2010-06-25 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 신호 송수신 장치 및 방법
US7500062B2 (en) 2005-11-17 2009-03-03 International Business Machines Corporation Fast path memory read request processing in a multi-level memory architecture
WO2007058617A1 (en) 2005-11-17 2007-05-24 Chee Keng Chang A controller for non-volatile memories, and methods of operating the memory controller
US7546515B2 (en) 2005-12-27 2009-06-09 Sandisk Corporation Method of storing downloadable firmware on bulk media
US7562283B2 (en) 2005-12-27 2009-07-14 D.S.P. Group Ltd. Systems and methods for error correction using binary coded hexidecimal or hamming decoding
US7349264B2 (en) 2005-12-28 2008-03-25 Sandisk Corporation Alternate sensing techniques for non-volatile memories
US7742339B2 (en) 2006-01-10 2010-06-22 Saifun Semiconductors Ltd. Rd algorithm improvement for NROM technology
KR100725410B1 (ko) 2006-01-20 2007-06-07 삼성전자주식회사 전원 상태에 따라 비휘발성 메모리의 블록 회수를 수행하는장치 및 그 방법
US20070234143A1 (en) 2006-01-25 2007-10-04 Samsung Electronics Co., Ltd. Semiconductor memory devices and methods of testing for failed bits of semiconductor memory devices
JP4859471B2 (ja) 2006-02-02 2012-01-25 株式会社日立製作所 ストレージシステム及びストレージコントローラ
US7870326B2 (en) 2006-07-28 2011-01-11 Samsung Electronics Co., Ltd. Multiprocessor system and method thereof
US7681106B2 (en) 2006-03-29 2010-03-16 Freescale Semiconductor, Inc. Error correction device and methods thereof
JP4863749B2 (ja) 2006-03-29 2012-01-25 株式会社日立製作所 フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
US20070245061A1 (en) 2006-04-13 2007-10-18 Intel Corporation Multiplexing a parallel bus interface and a flash memory interface
US7685494B1 (en) 2006-05-08 2010-03-23 Marvell International, Ltd. Error correction coding for varying signal-to-noise ratio channels
US7707481B2 (en) 2006-05-16 2010-04-27 Pitney Bowes Inc. System and method for efficient uncorrectable error detection in flash memory
US20070300130A1 (en) 2006-05-17 2007-12-27 Sandisk Corporation Method of Error Correction Coding for Multiple-Sector Pages in Flash Memory Devices
US7606084B2 (en) 2006-06-19 2009-10-20 Sandisk Corporation Programming differently sized margins and sensing with compensations at select states for improved read operations in non-volatile memory
JP4842719B2 (ja) 2006-06-28 2011-12-21 株式会社日立製作所 ストレージシステム及びそのデータ保護方法
US7774684B2 (en) 2006-06-30 2010-08-10 Intel Corporation Reliability, availability, and serviceability in a memory device
JP2008047273A (ja) 2006-07-20 2008-02-28 Toshiba Corp 半導体記憶装置およびその制御方法
US7831895B2 (en) 2006-07-25 2010-11-09 Communications Coding Corporation Universal error control coding system for digital communication and data storage systems
TW200813724A (en) 2006-07-28 2008-03-16 Samsung Electronics Co Ltd Multipath accessible semiconductor memory device with host interface between processors
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
TW200816651A (en) 2006-09-25 2008-04-01 Sunplus Technology Co Ltd Decoding method and system of real-time wireless channel estimation
US7886204B2 (en) 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US8171380B2 (en) 2006-10-10 2012-05-01 Marvell World Trade Ltd. Adaptive systems and methods for storing and retrieving data to and from memory cells
JP2008117195A (ja) 2006-11-06 2008-05-22 Hitachi Ltd 半導体記憶装置
TWI307100B (en) 2006-11-07 2009-03-01 Macronix Int Co Ltd Memory and method for reading error checking thereof
KR100808664B1 (ko) 2006-12-08 2008-03-07 한국전자통신연구원 패리티 검사행렬 저장 방법 및 이를 이용한 블록 저밀도패리티 검사 부호화 방법 및 장치
KR100881669B1 (ko) 2006-12-18 2009-02-06 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
KR100842680B1 (ko) 2007-01-08 2008-07-01 삼성전자주식회사 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
US7603490B2 (en) 2007-01-10 2009-10-13 International Business Machines Corporation Barrier and interrupt mechanism for high latency and out of order DMA device
KR100855587B1 (ko) 2007-01-17 2008-09-01 삼성전자주식회사 메일박스 영역을 가지는 멀티 패스 액세스블 반도체 메모리장치 및 그에 따른 메일박스 액세스 제어방법
US7596643B2 (en) 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US7913022B1 (en) 2007-02-14 2011-03-22 Xilinx, Inc. Port interface modules (PIMs) in a multi-port memory controller (MPMC)
KR100918707B1 (ko) 2007-03-12 2009-09-23 삼성전자주식회사 플래시 메모리를 기반으로 한 메모리 시스템
JP4897524B2 (ja) 2007-03-15 2012-03-14 株式会社日立製作所 ストレージシステム及びストレージシステムのライト性能低下防止方法
KR100907218B1 (ko) 2007-03-28 2009-07-10 삼성전자주식회사 읽기 레벨 제어 장치 및 그 방법
WO2008121553A1 (en) 2007-03-29 2008-10-09 Sandisk Corporation Non-volatile storage with decoding of data using reliability metrics based on multiple reads
WO2008121577A1 (en) 2007-03-31 2008-10-09 Sandisk Corporation Soft bit data transmission for error correction control in non-volatile memory
US8032724B1 (en) 2007-04-04 2011-10-04 Marvell International Ltd. Demand-driven opportunistic garbage collection in memory components
US7996642B1 (en) 2007-04-25 2011-08-09 Marvell International Ltd. Digital locked loop on channel tagged memory requests for memory optimization
US8151171B2 (en) 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
US8073648B2 (en) 2007-05-14 2011-12-06 Sandisk Il Ltd. Measuring threshold voltage distribution in memory using an aggregate characteristic
KR100891005B1 (ko) 2007-06-28 2009-03-31 삼성전자주식회사 고온 스트레스로 인한 읽기 마진의 감소를 보상하기 위한플래시 메모리 장치 및 그것의 읽기 전압 조정 방법
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US8095851B2 (en) 2007-09-06 2012-01-10 Siliconsystems, Inc. Storage subsystem capable of adjusting ECC settings based on monitored conditions
CN101842850B (zh) 2007-10-31 2013-08-21 艾格瑞系统有限公司 多级闪存的系统性纠错
US8429492B2 (en) 2007-11-30 2013-04-23 Marvell World Trade Ltd. Error correcting code predication system and method
US8762620B2 (en) 2007-12-27 2014-06-24 Sandisk Enterprise Ip Llc Multiprocessor storage controller
JP4533968B2 (ja) 2007-12-28 2010-09-01 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
US20090172335A1 (en) 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8159874B2 (en) 2008-01-22 2012-04-17 Micron Technology, Inc. Cell operation monitoring
US8271515B2 (en) 2008-01-29 2012-09-18 Cadence Design Systems, Inc. System and method for providing copyback data integrity in a non-volatile memory system
JP4617405B2 (ja) 2008-02-05 2011-01-26 富士通株式会社 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
JP4672743B2 (ja) 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8185706B2 (en) 2008-04-30 2012-05-22 Apple Inc. Copyback optimization for memory system
KR101412974B1 (ko) 2008-05-28 2014-06-30 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
KR101412690B1 (ko) 2008-05-28 2014-06-27 삼성전자주식회사 메모리 장치 및 메모리 프로그래밍 방법
US8959280B2 (en) 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8627169B2 (en) 2008-06-20 2014-01-07 Cadence Design Systems, Inc. Method and apparatus for dynamically configurable multi level error correction
US8130552B2 (en) 2008-09-11 2012-03-06 Sandisk Technologies Inc. Multi-pass programming for memory with reduced data storage requirement
KR101484556B1 (ko) 2008-10-28 2015-01-20 삼성전자주식회사 독출 보상 회로
KR20100058166A (ko) 2008-11-24 2010-06-03 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 메모리 시스템
US9128699B2 (en) 2008-12-22 2015-09-08 Intel Corporation Method and system for queuing transfers of multiple non-contiguous address ranges with a single command
US8645749B2 (en) 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
KR20100090439A (ko) 2009-02-06 2010-08-16 주식회사 하이닉스반도체 불휘발성 메모리 장치의 독출 방법 및 이를 구현하는 불휘발성 메모리 장치
KR20100093885A (ko) 2009-02-17 2010-08-26 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US20100281207A1 (en) 2009-04-30 2010-11-04 Miller Steven C Flash-based data archive storage system
KR101575248B1 (ko) 2009-04-30 2015-12-07 삼성전자주식회사 메모리 컨트롤러 및 그것을 포함하는 메모리 시스템
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
US7941696B2 (en) 2009-08-11 2011-05-10 Texas Memory Systems, Inc. Flash-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
US8464106B2 (en) 2009-08-24 2013-06-11 Ocz Technology Group, Inc. Computer system with backup function and method therefor
JP5197544B2 (ja) 2009-10-05 2013-05-15 株式会社東芝 メモリシステム
US8312349B2 (en) 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
CN101699406B (zh) 2009-11-12 2011-12-14 威盛电子股份有限公司 数据储存系统与方法
US8130553B2 (en) 2009-12-02 2012-03-06 Seagate Technology Llc Systems and methods for low wear operation of solid state memory
US8213255B2 (en) 2010-02-19 2012-07-03 Sandisk Technologies Inc. Non-volatile storage with temperature compensation based on neighbor state information
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
US8737136B2 (en) 2010-07-09 2014-05-27 Stec, Inc. Apparatus and method for determining a read level of a memory cell based on cycle information
US8738846B2 (en) 2010-10-15 2014-05-27 Arkologic Limited File system-aware solid-state storage management system
EP2633409A4 (en) 2010-10-27 2014-07-23 Lsi Corp ADAPTIVE ECC TECHNIQUES FOR FLASH MEMORY AND BASED ON DATA STORAGE
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1841334A (zh) * 2005-03-31 2006-10-04 富士通株式会社 存储控制电路及存储控制电路中的地址错误检验方法
CN101501784A (zh) * 2006-08-07 2009-08-05 马维尔国际贸易有限公司 用于利用乘积码来纠正非易失性存储器中的错误的系统和方法
CN101584121A (zh) * 2007-01-16 2009-11-18 皇家飞利浦电子股份有限公司 用于对数据比特或码元进行交织的系统、装置和方法
CN101785189A (zh) * 2007-08-30 2010-07-21 松下电器产业株式会社 编码装置和解码装置
CN101983489A (zh) * 2008-03-31 2011-03-02 马维尔国际贸易有限公司 对传输块的多码块进行选择性组合和译码的方法和装置
CN101763903A (zh) * 2008-12-22 2010-06-30 财团法人工业技术研究院 快闪存储器控制器、其纠错码控制器及其方法和系统

Also Published As

Publication number Publication date
US20130145229A1 (en) 2013-06-06
EP2780810A2 (en) 2014-09-24
EP2780810B1 (en) 2017-04-19
CN104067233A (zh) 2014-09-24
US9048876B2 (en) 2015-06-02
WO2013075125A2 (en) 2013-05-23
WO2013075125A3 (en) 2013-07-11

Similar Documents

Publication Publication Date Title
CN104067233B (zh) 用于多分层错误校正的系统、方法和设备
CN104246706B (zh) 使用存储器特定奇偶校验矩阵的数据编码器和解码器
CN104081358B (zh) 用于解码具有多个奇偶校验段的码字的系统、方法和设备
KR101645906B1 (ko) 계층적 반복 에러 교정을 위한 종료 기준
US9454414B2 (en) System and method for accumulating soft information in LDPC decoding
US8984376B1 (en) System and method for avoiding error mechanisms in layered iterative decoding
TWI353521B (en) Soft-input soft-output decoder for nonvolatile mem
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
EP2946386B1 (en) Determining soft data using a classification code
US7996748B2 (en) ECC for single 4-bits symbol correction of 32 symbols words with 22 maximum row weight matrix
CN106856103A (zh) 用于与非闪存的涡轮乘积码
CN104572334B (zh) 解码方法、存储器存储装置与存储器控制电路单元
US11184026B2 (en) Super-HPC error correction code
Kim et al. Quasi-primitive block-wise concatenated BCH codes with collaborative decoding for NAND flash memories
Kim et al. Serial quasi-primitive BC-BCH codes for NAND flash memories
Kim et al. Hamming product code with iterative process for NAND flash memory controller
US20230176947A1 (en) Memory matched low density parity check coding schemes
Li et al. A Novel LDPC Construction Scheme for NAND Flash Memory
EP1724687B1 (en) ECC for single 4-bits symbol correction of 32 symbols words based on a matrix having a maximum row weight of 21
JP2021048525A (ja) メモリシステム
Chang Joint Decoding of Content-Replicated Codes on AWGNC for Flash Memory
EP1724686B1 (en) ECC for single 4-bits symbol correction of 32 symbols words based on a matrix having a maximum row weight matrix of 22

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20160516

Address after: texas

Applicant after: Sandisk Corp.

Address before: American California

Applicant before: Sandisk Enterprise Intellectual Property Co., Ltd.

CB02 Change of applicant information

Address after: texas

Applicant after: DELPHI INT OPERATIONS LUX SRL

Address before: texas

Applicant before: Sandisk Corp.

COR Change of bibliographic data
C14 Grant of patent or utility model
GR01 Patent grant