CN104871249B - 数据存储系统的自适应错误纠正码 - Google Patents
数据存储系统的自适应错误纠正码 Download PDFInfo
- Publication number
- CN104871249B CN104871249B CN201380067610.7A CN201380067610A CN104871249B CN 104871249 B CN104871249 B CN 104871249B CN 201380067610 A CN201380067610 A CN 201380067610A CN 104871249 B CN104871249 B CN 104871249B
- Authority
- CN
- China
- Prior art keywords
- data
- code word
- word length
- memory array
- page
- 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
Classifications
-
- 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/1072—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 multilevel memories
-
- 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/1048—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 arrangements adapted for a specific error detection or correction feature
-
- 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
-
- 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
-
- 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/35—Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
- H03M13/353—Adaptation to the channel
-
- 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/61—Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
- H03M13/618—Shortening and extension of 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/63—Joint error correction and other techniques
- H03M13/635—Error control coding in combination with rate matching
- H03M13/6356—Error control coding in combination with rate matching by repetition or insertion of dummy data, i.e. rate reduction
-
- 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/65—Purpose and implementation aspects
- H03M13/6508—Flexibility, adaptability, parametrability and configurability of the implementation
- H03M13/6516—Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
Abstract
本发明公开了一种被配置为自适应地编码数据的数据存储系统,在一个实施例中,数据存储系统控制器确定非易失性存储器阵列的共同的存储器页大小,例如,E页大小。基于所述共同的存储器页大小,所述控制器从多个预定义的低密度奇偶校验(LDPC)码字长中选择LDPC码字长。所述控制器基于所选择的LDPC码字长来确定用于对写入到所述存储器阵列的数据或从所述存储器阵列读取的数据进行编码的LDPC编码参数。通过使用所述多个预定义的LDPC码字长,所述数据存储系统能够支持多个非易失性存储器页格式,包括这样的存储器页格式:其中所述共同的存储器页大小不等于所述多个预定义的LDPC码字长中的任何LDPC码字长。从而能够获得数据编码的灵活性和高效性。
Description
技术领域
本公开涉及计算机系统的诸如固态硬盘等的数据存储系统。更具体地,本公开涉及数据存储系统的自适应错误纠正码。
背景技术
非易失性存储器阵列常常具有有限的耐久性。存储器阵列的耐久性通常视使用模式和磨损而定。另外,耐久性取决于非易失性存储器阵列的特定类型。例如,与具有单层单元(SLC)NAND介质的存储器阵列相比,具有多层单元(MLC)NAND介质的存储器阵列通常具有较低的耐久性。为了保护存储到存储器阵列的用户数据免于可能由减少的耐久性而导致的讹误,能够确定奇偶校验数据并且将奇偶校验数据与用户数据一起存储以便于错误检测和/或错误纠正。
附图说明
现在参考下面的附图对实施本发明的各种特征的系统和方法进行描述,其中:
图1示出了根据本发明的一个实施例的自适应地编码数据的存储系统。
图2是示出了根据本发明的一个实施例的确定用于编码数据的编码参数的过程的流程图。
图3是示出了根据本发明的一个实施例的低密度奇偶校验(LDPC)编码参数与LDPC码字长之间关系的表。
图4A-4C是示出了根据本发明的一个实施例的已填充用户数据和奇偶校验数据的图。
图5是示出了根据本发明的一个实施例的自适应码缩短的过程的流程图。
图6是示出了根据本发明的一个实施例的调整码率的过程的流程图。
具体实施方式
尽管描述了某些实施例,但是这些实施例仅以示例的方式给出,而不是要限制保护范围。实际上,本文所描述的新颖方法和系统可以以多种其他形式来实施。而且,可以进行本文所描述的方法和系统的形式上的各种省略、替换和改变,而不会脱离保护范围。
在一些实施例中,本公开中所使用的“编码”数据指的是编码数据的过程和/或解码数据的过程。
概述
诸如固态硬盘等的存储系统通常包括与非易失性存储器阵列耦合的一个或多个控制器。通常,这些控制器由一方设计/制造而非易失性存储器阵列由另一方设计/制造。另外,来自不同制造商的存储器阵列往往具有不同的内部格式,包括不同的存储器页格式,其中每个存储器页格式对应于多个存储器页大小中的一个。而且,由于成本和多种其他竞争原因,存储系统制造商通常使用来自不同的制造商的存储器阵列。例如,存储系统制造商可能在当前生产周期中使用一种品牌的存储器阵列,而在下一个生产周期中使用另一种品牌的存储器阵列。此外,对于标价在不同的水平的不同的存储系统型号可以使用不同的存储器阵列。
因此,常见的设计方法是:令存储系统包括一个或多个控制器,所述一个或多个控制器具有多个专用的硬件、固件和/或软件以用于对从来自不同制造商的存储器阵列读取的数据或写入到来自不同制造商的存储器阵列的数据进行编码/解码,而实际使用的这些硬件、固件和/或软件的子集取决于在装配时或在最终设计阶段与(多个)控制器配对的实际存储器阵列。结果是,存储系统可能包括多个控制器或额外的、不使用的硬件、固件和/或软件以支持未包括在最终装配的存储系统中的一个或多个存储器阵列的多个存储器页格式。
替代地,为减少包括在存储系统中的硬件、固件和/或软件的数量,能够将存储系统和控制器构建为仅支持一个特定的、已知的、具有已知的存储器页大小的存储器页格式,而不支持其他存储器页格式。然而,这样的方法限制了存储系统和控制器对其他类型的存储器阵列的可用性,并且可能需要构建多个不同的存储系统和控制器以支持多个存储器阵列类型。另外,在一些实例中,在设计/构建存储系统和控制器时,可能不知道存储器阵列的存储器页格式。因此,期望有针对多个已知或未知的存储器存储格式自适应地编码数据的改善的系统和方法。
在本发明的一些实施例中,存储系统包括控制器和非易失性存储器阵列,非易失性存储器阵列具有多个存储器页,多个存储器页具有共同的存储器页大小。控制器确定非易失性存储器阵列的共同的存储器页大小,并且基于该共同的存储器页大小从多个预定义的码字长中选择码字长,例如低密度奇偶校验(LDPC)码字长。通过选择性地使用适当的码字长(从多个预定义的码字长中选择)和对应的编码参数,控制器使用至少一些共同的硬件、固件和/或软件来支持多个已知的或未知的存储器页格式。因而,控制器能够选择性地调节其操作,所以控制器能够与不同制造商所制造的不同格式的存储器阵列配对。
在一些实施例中,随着部分地由于存储器阵列的使用而引起存储器页、块或非易失性存储器阵列的管芯老化和/或逐渐耗尽,存储设备的控制器调整用于编码用户数据的编码参数。调整编码参数的机制使控制器能够支持随着时间推移每单元数据的附加奇偶校验,从而随着存储器阵列的质量(例如,数据保持能力)降低而改善错误纠正或错误检测能力。此外,调整编码参数的机制便于平衡由每单元数据的附加奇偶校验所引起的解码时间与由附加奇偶校验数据所引起的错误纠正或错误检测益处。另外,控制器能够存储针对存储器页、块或存储器阵列的管芯所调整的编码参数,以准许不同的码率或奇偶校验率适于不同的存储器页、块或管芯。
系统概述
图1示出了根据本发明的一个实施例的自适应地编码数据的存储系统120。如所示出的,存储系统120(例如,混合硬盘、固态硬盘等)包括控制器130和非易失性存储器阵列140,非易失性存储器阵列140包括一个或多个存储块,标识为块“A”142一直到块“N”。每个块包括多个闪存页(F页)。例如,图1中的块A 142包括多个F页,标识为F页A 153、F页B一直到F页N。在一些实施例中,每个“F页”是在非易失性存储器阵列140中能够在单个操作中或作为单元来编程的存储单元的最小组。此外,每个F页包括多个错误纠正码页(E页)。在所示出的实施例中,每个F页包括被示出为四个方框的四个E页,包括E页144。其他实施例可以采用以不同方式定义的F页或E页,或者每个F页可以包括多于或少于四个E页。
控制器130可以从主机系统110中的存储接口模块112(例如,设备驱动)接收数据和/或存储访问命令。由存储接口112所传送的存储访问命令能够包括由主机系统110所发布的写入命令和读取命令。命令能够指定存储系统120中的逻辑块地址,并且控制器130能够在非易失性存储器阵列140中执行所接收的命令。在混合硬盘中,除了非易失性存储器阵列140外,数据还可以存储在磁介质存储部件(图1中未示出)中。
存储系统120能够存储从主机系统110接收的数据,以使得存储系统120能够充当主机系统110的存储装置。为了便于该功能,控制器130能够实施逻辑接口。逻辑接口能够以其中能够存储数据的一组逻辑地址(例如,连续地址)的形式向主机系统110呈现存储系统存储器。在内部,控制器130能够将逻辑地址映射到非易失性存储器阵列140和/或其他(多个)存储器模块中的多种物理存储器地址。
控制器130包括编码器模块132。在一个实施例中,编码器模块132确定编码参数以用于对从非易失性存储器阵列140中的存储器页(例如,E页)读取的数据(例如,用户数据)或写入到存储器页的数据进行解码/编码。编码参数能够用于:对从非易失性存储器阵列140读取的用户数据进行解码,对存储到非易失性存储器阵列140的用户数据进行编码,以及诸如错误检测或错误纠正等的其他用途。编码参数能够包括LDPC编码参数,例如,G或H编码矩阵的列权值、G或H编码矩阵的行权值、P矩阵大小(例如,其中P矩阵是G或H编码矩阵的子矩阵)等。此外,编码器模块132能够确定针对未填充或已填充的用户数据的奇偶校验数据,也能够对具有对应的奇偶校验数据和填充数据的用户数据进行解码。另外,编码器模块132能够通过调整编码参数来对用于编码数据的码率或奇偶校验率进行调节。控制器130和/或编码器模块132还能够包括内部存储器(未示出),其可以属于一个或多个适当的存储器类型。
非易失性存储器阵列140能够使用NAND闪速存储器设备来实施。能够替代地使用其他类型的固态存储器设备,例如,闪速集成电路的阵列、硫系RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双向统一存储器(OUM)、阻变RAM(RRAM)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻RAM(MRAM)、其他分立的NVM(非易失性存储器)芯片或其任意组合。在一个实施例中,尽管可以使用单层单元(SLC)存储器设备或SLC设备和多层单元(MLC)设备的组合,但非易失性存储器阵列140优选地包括具有能够存储多于单个位信息的多层单元的MLC设备。在一个实施例中,存储系统120能够包括诸如一个或多个磁存储器模块等其他存储器模块。存储系统120还能够包括诸如磁存储等其他类型的存储介质。
自适应数据编码
图2是示出了根据本发明的一个实施例的确定用于编码数据的编码参数的流程图。过程200能够由控制器130和/或编码器模块132来执行。有利地,过程200能够使控制器130和/或编码器模块132能够使用多个码字长来支持多个非易失性存储器页格式。
在方框205,过程200确定诸如非易失性存储器阵列140等非易失性存储器阵列的存储器页大小。例如,存储器页大小能够由存储器阵列厂商来提供或基于其他已知存储器大小来计算。例如,存储器页大小可以与非易失性存储器阵列的E页大小相对应,而过程200能够通过查询厂商提供的存储器阵列的F页大小并将F页的大小除以诸如4或8等对于非易失性存储器阵列适当的常数,来计算E页大小。在其他实施例中,存储器页大小能够与F页大小相对应。
在方框210,过程200从多种码字长中选择等于或超过存储器页大小的码字长。例如,存储器页大小能够是2164字节或八位位组,多个预定义的码字长能够包括2176字节和2304字节的长度。在一个实施例中,过程200从多个预定义的LDPC码字长中选择等于或大于存储器页大小的具有最小大小或数据字节数的LDPC码字长。例如,过程200能够选择2176字节的码字长,该码字长超过2164字节的存储器页大小并且具有多个预定义LDPC码字长中的最小大小。
在框215,过程200至少部分地基于所选择的码字长来确定编码参数。在对从非易失性存储器阵列读取的数据或写入到非易失性存储器阵列的数据进行编码时能够使用编码参数,并且编码参数使过程200能够管理数据的码率(例如,每数据单元的总数据的用户数据量,其中总数据包括用户数据和奇偶校验数据)。在一个实施例中,针对LDPC码字长的编码参数包括列权值、P矩阵大小和行权值,并且进一步包括码率、用户数据量和奇偶校验数据量中的至少一个。
在方框220,过程200存储编码参数。例如,过程200能够在非易失性存储器阵列140中和/或在存储系统120的一个或多个其他存储介质中存储编码参数。过程200能够在控制器130和/或编码器模块132的内部存储器中存储编码参数。所存储的编码参数能够便于使用不同的编码参数来编码非易失性存储器140中不同的页、块或其他划分和/或细分,以及便于随着非易失性存储器阵列的部分老化和/或逐渐耗尽来随着时间推移跟踪和调整编码参数。
图3是示出了根据本发明的一个实施例的LDPC编码参数和LDPC码字长之间关系的表300。表300能够标明由诸如控制器130和/或编码器模块132等控制器所支持的LDPC码子长和LDPC编码参数。表300能够存储在非易失性存储器阵列140、存储系统120中的一个或多个其他存储介质和/或控制器130和/或编码器模块132的内部存储器中。表300包括两个码长列,指示两种支持的LDPC码字长。一种LDPC码字长等于2176字节(2048+128·1字节),而另一种LDPC码字长等于2304字节(2048+128·2字节)。已经发现,约2K字节的多种码率能够提供复杂性和性能之间的最佳折衷。
对于每个码长,包括列权值、P矩阵大小和行权值的LDPC编码参数可以是多样的,以使得能够对采用不同设计的码率(例如,不同的每数据单元的总数据的用户数据量,其中总数据包括用户数据和奇偶校验数据)的数据进行编码,如表300中所列出的那样。例如,如果LDPC码字长等于2176字节,则适用的LDPC编码参数可以是在圈C1、C2、C3或C4处的LDPC编码参数集合的其中之一。在一个实例中,能够选择圈C3处的LDPC编码参数,其对应列权值为4、P矩阵大小为512和行权值为34,并且还对应码率为0.882(对于2176字节的总码长,有1920字节的用户数据)。此外,在一个实施例中,可以被定义为2048+128xΔ的码长,能够被基于选择Δ为1或2等来进行调整。如所示出的那样,对Δ的值的选择也影响码率。例如,在圈C1,选择Δ为1使得码率为0.941,并且如果列权值、P矩阵大小和行权值保持不变,选择Δ为2使得码率为0.944。如将进一步解释的那样,能够使用多种预定义码率来适应不同页大小的存储器阵列。例如,如所示出的,两种码长2176字节和2304字节能够适应2176字节和2304字节的页大小。应当注意的是,在实践中预定义的码长的数量可以大大高于二,以适应多种页大小。
支持表300中的LDPC编码参数的控制器能够有利地为非易失性存储器阵列选择一个码长,并且调整LDPC编码参数来以不同码率对数据进行编码。例如,当E页大小为2176字节的存储器阵列相对较新(例如,轻度使用)和/或经历或展现了很少的编码错误时,可以选择在圈C1处的LDPC编码参数来编码数据。在圈C1处的LDPC编码参数对应列权值为4、P矩阵大小为256和行权值为68,以及还对应码率为0.941。在圈C1处,能够使用总共128字节的奇偶校验来编码2048字节的数据。随着存储器页、块或存储器阵列的管芯老化和/或逐渐耗尽,能够选择在圈C2、C3和C4处的LDPC编码参数作为代替来编码数据。因此,响应于非易失性存储器阵列质量的改变(例如,质量的损失),控制器能够逐渐增加每单元数据的奇偶校验量,从0.941的码率分别到在圈C2、C3和C4处的0.926、0.882和0.853的码率。
自适应码缩短
整个自适应码缩短中,本发明的一些实施例能够适应具有与预定义码长不完全匹配的页大小的存储器阵列。图4A-4C是示出了根据本发明的一个实施例的在自适应码缩短中所使用的已填充用户数据和奇偶校验数据的图。特别地,图4A-4C示出了可以怎样使用缩短来调整码字长以匹配非易失性存储器阵列的存储器页大小。有利地,缩短使控制器130和/或编码器模块132能够支持其中存储器页大小不等于多个预定义的码字长中的任何码字长的存储器页格式。例如,如果控制器130和/或编码器模块132支持等于2176和2304字节的预定义的LDPC码字长,则能够使用缩短以使得控制器130和/或编码器模块132还支持2164字节的存储器页大小。此外,缩短能够准许控制器130和/或编码器模块132自适应地编码数据以使其匹配非易失性存储器阵列格式,而不牺牲大的位错误率性能。
在一个实施例中,缩短包括三个操作。第一,将填充数据加到将要被编码的用户数据上。在一个实施例中的填充数据的大小是预定义码长与存储器页大小之差。第二,基于填充数据和用户数据产生奇偶校验数据。第三,将合计达存储器页大小的用户数据和奇偶校验数据存储在存储器页中。填充数据不被存储,但是在解码时(例如,稍后当用户数据和奇偶校验数据被从存储器页读出时)将被附加到用户数据上。
图4A示出了数据单元400a中的填充数据410和用户数据420。用户数据420对应于数据单元400a的用户数据量,而填充数据410对应于便于码缩短的填充数据。填充数据410能够包括全零、全一等的数据组或任何已知的或预定义的数据模式。继续先前段中的示例,如果非易失性存储器阵列的存储器页大小为2164字节,那么控制器130和/或编码器模块132能够从诸如表300中所示出的那些多种预定义码长中选择大小等于或大于2164字节的最短的LDPC码字长。在该示例中,选择2176字节的码长。控制器130和/或编码器模块132能够确定:填充数据410应该包括长度等于码字长(2176)与非易失性存储器阵列的存储器页大小(2164)之差的数据组,即2176–2164=12字节的填充数据。取决于数据单元400a的LDPC编码参数,控制器130和/或编码器模块132还能够确定:为用户数据420保留的字节量和用于确定和/或生成奇偶校验数据的适当的G编码矩阵。
图4B示出了根据一个实施例的一个示例性编码过程。实际上,用户数据420被“填充”,以使得组合在一起的用户数据和填充数据满足所选择的预定义字长中为用户数据保留的字节量。然后为数据单元400b中组合在一起的填充数据410和用户数据420生成奇偶校验430。继续先前段的示例,能够使用适当的G编码矩阵来确定LDPC奇偶校验数据以用于奇偶校验430。注意,如上文所描述的,2176字节在填充数据410、用户数据420和奇偶校验数据430中的实际分配可以变化。下表示出了一些可能的配置(所有大小单位为字节):
存储器页大小2164字节
存储器页大小2164字节
图4C示出了数据单元400c,其具有数据单元400b的用户数据420和奇偶校验430,移除了填充数据410。能够将用户数据420和奇偶校验430写入到非易失性存储器阵列140的存储器页,并随后从非易失性存储器阵列140的存储器页读取用户数据420和奇偶校验430。如上表所示,用户数据420和奇偶校验数据430的量可以等于非易失性存储器阵列的存储器页大小,并且填充数据不被写入到页中。当该页稍后被读出时,作为解码的一部分,填充数据被附加回从该页读取的用户数据。照这样,能够以在编码效率上很小的损失为代价使用多个预定义码字长中的一个来执行针对任意页大小的编码。
图5是示出了根据本发明的一个实施例的自适应码缩短的过程500的流程图。过程500可以由控制器130和/或编码器模块132来执行。有利地,过程500可以使控制器130和/或编码器模块132能够支持这样的存储器页大小:其不等于控制器130和/或编码器模块132所支持的多个预定义码字长中的任意码字长。过程500能够用于构建和管理图4A-4C中所描述的数据单元400a、400b和400c。
在方框505,过程500接收用户数据。用户数据能够连同将用户数据写入到非易失性存储器阵列(例如,非易失性存储器阵列140)的写入命令一起,从存储接口模块112接收。
在方框510,过程500用填充数据来对用户数据进行填充。填充数据能够包括全零、全一的数据组或者已知的或预定义的数据模式。另外,在方框510,过程500还能够将用户数据分成大小等于每数据单元的用户数据量的单元,这取决于对应的编码参数。例如,如果非易失性存储器阵列具有等于2164字节的存储器页大小并且LDPC编码参数对应图3中圈C3处的参数,那么能够将用户数据分成大小等于1908字节的单元。
在方框515,过程500使用编码参数确定用于已填充用户数据的奇偶校验数据。继续先前段的示例,如果LDPC编码参数对应圈C3处的参数,那么能够选择并使用适当的G编码矩阵来确定用于已填充用户数据的LDPC奇偶校验数据。
在方框520,过程500输出用户数据和奇偶校验数据。例如,过程500能够输出用户数据和奇偶校验数据以使其存储到非易失性存储器阵列140中的F页143中的E页144。能够注意到的是,参照方框510和方框515所描述的填充可以被表征为“虚拟填充”,这是因为填充数据自身可以不被写入到存储器页。
码率调整
图6是示出了根据本发明的一个实施例的调整码率的过程600的流程图。过程600能够由控制器130和/或编码器模块132来执行。有利地,过程600可以使控制器130和/或编码器模块132能够随着存储器页、块或非易失性存储器阵列的其他划分逐渐耗尽和/或经历质量降低,来调整存储器页、块或其他划分的码率(例如,每单元数据的奇偶校验的量)。
在方框605,过程600读取存储在存储器页中的用户数据和奇偶校验数据。例如,过程600能够响应于来自主机系统110的读取命令而执行对F页143的读取。
在方框610,当使用奇偶校验数据和编码参数来解码用户数据时,过程600检测到若干位错误。例如,当使用所存储的奇偶校验数据和对应于存储器页的LDPC编码参数来解码用户数据时,过程600能够确定若干检测到的位错误。
在方框615,过程600对位错误的数量是否超过位错误阈值进行确定。位错误阈值能够取决于用于将数据编码到存储器页的编码参数或者基于编码参数而变化。例如,针对图3中圈C1处的LDPC编码参数的位错误阈值可以低于针对圈C2处的LDPC编码参数的位错误阈值。如果过程600确定位错误的数量不超过位错误阈值,那么过程600终止。另一方面,如果过程600确定位错误的数量超过位错误阈值,那么过程600进行到方框620。
在方框620,过程600检查是否能够调整编码参数以减少码率。换言之,过程600能够确定是否可以使用更多奇偶校验数据来进行编码。在一个实施例中,过程600能够确定是否可以调整LDPC编码参数同时保持LDPC码字长不变。例如,如果当前使用图3中圈C3处的LDPC编码参数来编码E页144,那么能够将LDPC编码参数调整为圈C4处的参数。替代地,如果当前使用圈C4处的LDPC编码参数来编码E页144并且表300包含唯一可用的LDPC编码参数,那么参数不可以被进一步调整为更低码率。如果过程600确定不可以调整编码参数以减小码率,那么过程600终止。另一方面,如果过程600确定能够调整编码参数以减小码率,那么过程600进行到方框625。在一个实施例中,可以在块一级上管理码率的改变,其中块中的页被同时转换到新码率。在使用MLC存储器的一个实施例中,在确定了不能使用进一步减少的码率时,页(或页构成的块)可以被配置为在仅较低页模式下操作,而不是终止过程600。
在方框625,过程600调整编码参数并存储所调整的编码参数以减少下一次写入操作的码率。过程600能够将所调整的编码参数存储在非易失性存储器阵列140中、存储系统120的其他存储器模块中和/或控制器130和/或编码器模块132的内部存储器中。过程600能够存储关于用于编码数据的码率或LDPC编码参数的指示,以便于管理存储器页、块或非易失性存储器阵列的其他级别的划分上的LDPC编码参数。此外,所调整的编码参数能够用于对与随后从主机系统110接收到的写入命令相关联的用户数据进行编码。
其他变化
本领域技术人员将会意识到,在一些实施例中能够使用其他方法和途径。例如,本文所披露的编码技术能够应用到除LDPC码之外的码,诸如像Turbo码等其他迭代码。另外,尽管图3中表300所披露的编码参数和其他值示出了一组编码参数和码字长之间关系的示例,但其他的或附加的编码关系也能够被使用。表300能够包括值小于4和大于5(例如,3或6)的列权值、值小于256位或大于512位(例如,128或1024)的P矩阵大小、小于1或大于2(例如,-1、0、3或4)的Δ值、对应的粒度不同于128字节(例如,64字节)的Δ值以及具有小于或大于2048(例如,2176)的值的基码长。此外,在每个数据单元中奇偶校验数据量能够被设置为不同的值,或者取决于存储介质的质量而变化。另外,能够采用除位错误之外的或不同于位错误的质量测度来确定是否调整用于编码数据的编码参数。而且,可以取决于实施例而移除上文所描述的特定步骤以及可以加入其它步骤。因此,旨在仅参照所附权利要求来定义本公开的范围。
尽管已经描述了某些实施例,但这些实施例只是以示例的方式给出,而并不是要限制保护范围。实际上,可以以多种其他形式实施本文所描述的新颖方法和系统。另外,可以进行本文所描述的方法和系统的形式上的各种省略、替换和改变,而不脱离本保护的精神。所附权利要求及其等价物旨在涵盖这样的将落入本保护的范围和精神的形式或变型。例如,能够将本文所披露的系统和方法应用到硬盘驱动器、混合硬盘等。另外,可以额外地或可替代地使用其他形式的存储(例如,DRAM或SRAM、电池备用易失性DRAM或SRAM设备、EPROM、EEPROM存储器等等)。作为另一个示例,可以将在附图中示出的各种部件实施为处理器上的软件和/或固件、ASIC/FPGA或专用硬件。同样,上文所披露的特定实施例的特征和属性可以以不同的方式组合以形成另外的实施例,其全部落入本公开的范围内。尽管本公开提供了某些优选的实施例和应用,但对本领域技术人员显而易见的是,其他实施例,包括没有提供本文所阐述的全部特征和优点的实施例,也在本公开的范围内。因此,旨在仅参考所附权利要求来定义本公开的范围。
Claims (13)
1.一种固态存储系统,包括:
非易失性存储器阵列,所述非易失性存储器阵列包括多个存储器页,每个存储器页具有共同的存储器页大小;以及
控制器,所述控制器被配置为:
确定所述非易失性存储器阵列的所述共同的存储器页大小;
从多个预定义的低密度奇偶校验码字长即LDPC码字长中选择LDPC码字长,所述LDPC码字长的大小等于或大于所述非易失性存储器阵列的所述共同的存储器页大小;以及
至少部分地基于所述LDPC码字长来确定LDPC编码参数以用于对写入到所述非易失性存储器阵列的一个或多个存储器页的数据或从所述一个或多个存储器页中读取的数据进行编码,
其中,所述控制器被配置为使用所述多个预定义的LDPC码字长来支持多个非易失性存储器页大小,并且被配置为支持这样的存储器页大小:其中所述共同的存储器页大小不等于所述多个预定义的LDPC码字长中的任何LDPC码字长。
2.根据权利要求1所述的固态存储系统,其中,所述LDPC编码参数包括P矩阵大小、列权值和行权值,并且进一步包括码率、用户数据量和奇偶校验数据量的至少其中之一。
3.根据权利要求1所述的固态存储系统,其中,所述控制器被配置为选择具有等于或大于所述非易失性存储器阵列的所述共同的存储器页大小的最小大小的LDPC码字长。
4.根据权利要求1所述的固态存储系统,其中,所述存储器页包括错误纠正码页即E页。
5.根据权利要求1所述的固态存储系统,其中所述控制器进一步被配置为:
采用所述LDPC编码参数来确定针对已填充用户数据的奇偶校验数据,所述已填充用户数据包括用户数据和填充数据;以及
将所述用户数据和所述奇偶校验数据存储在所述非易失性存储器阵列的存储器页中。
6.根据权利要求5所述的固态存储系统,其中,所述已填充用户数据的所述填充数据的量至少部分地取决于所述LDPC码字长与所述非易失性存储器阵列的所述共同的存储器页大小之差。
7.一种在包括控制器的数据存储系统中编码数据的方法,所述方法包括:
确定非易失性存储器阵列的共同的存储器页大小,所述非易失性存储器阵列包括多个存储器页,每个存储器页具有所述共同的存储器页大小;
从多个预定义的低密度奇偶校验码字长即多个预定义的LDPC码字长中选择LDPC码字长,所述LDPC码字长的大小等于或大于所述非易失性存储器阵列的所述共同的存储器页大小;以及
至少部分地基于所述LDPC码字长来确定LDPC编码参数以用于对写入到所述非易失性存储器阵列的一个或多个存储器页的数据或从所述一个或多个存储器页中读取的数据进行编码,由此所述方法使得能够支持使用多个预定义的码字长来针对多个非易失性存储器页大小进行编码以及支持针对这样的存储器页大小进行编码:其中所述共同的存储器页大小不等于所述多个预定义的LDPC码字长中的任何LDPC码字长。
8.根据权利要求7所述的方法,其中,所述LDPC编码参数包括P矩阵大小、列权值和行权值,并且进一步包括码率、用户数据量和奇偶校验数据量的至少其中之一。
9.根据权利要求7所述的方法,其中,所述选择LDPC码字长包括选择具有等于或大于所述非易失性存储器阵列的所述共同的存储器页大小的最小大小的所述LDPC码字长。
10.根据权利要求7所述的方法,其中,所述存储器页包括错误纠正码页即E页。
11.根据权利要求7所述的方法,进一步包括:
采用所述LDPC编码参数来确定针对已填充用户数据的奇偶校验数据,所述已填充用户数据包括用户数据和填充数据;以及
将所述用户数据和所述奇偶校验数据存储在所述非易失性存储器阵列的存储器页中。
12.根据权利要求11所述的方法,其中,所述已填充用户数据的所述填充数据的量至少部分地取决于所述LDPC码字长与所述非易失性存储器阵列的所述共同的存储器页大小之差。
13.一种固态存储系统,包括:
非易失性存储器阵列,所述非易失性存储器阵列包括多个存储器页,每个存储器页具有共同的存储器页大小;以及
控制器,所述控制器被配置为:
确定所述非易失性存储器阵列的所述共同的存储器页大小;
从多个预定义的码字长中选择码字长,所述码字长的大小等于或
大于所述非易失性存储器阵列的所述共同的存储器页大小;以及
至少部分地基于所述码字长来确定编码参数以用于对写入到所述非易失性存储器阵列的一个或多个存储器页的数据或从所述一个或多个存储器页中读取的数据进行编码,
其中,所述控制器被配置为使用所述多个预定义的码字长来支持多个非易失性存储器页大小,并且被配置为支持这样的存储器页大小:
其中所述共同的存储器页大小不等于所述多个预定义的码字长中的任何码字长。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/659,099 US8972826B2 (en) | 2012-10-24 | 2012-10-24 | Adaptive error correction codes for data storage systems |
US13/659,099 | 2012-10-24 | ||
PCT/US2013/061249 WO2014065967A1 (en) | 2012-10-24 | 2013-09-23 | Adaptive error correction codes for data storage systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104871249A CN104871249A (zh) | 2015-08-26 |
CN104871249B true CN104871249B (zh) | 2018-09-07 |
Family
ID=50486506
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380067610.7A Active CN104871249B (zh) | 2012-10-24 | 2013-09-23 | 数据存储系统的自适应错误纠正码 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8972826B2 (zh) |
EP (1) | EP2912667A4 (zh) |
JP (1) | JP6129328B2 (zh) |
KR (1) | KR101927575B1 (zh) |
CN (1) | CN104871249B (zh) |
HK (1) | HK1214401A1 (zh) |
WO (1) | WO2014065967A1 (zh) |
Families Citing this family (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US9317717B2 (en) | 2012-12-28 | 2016-04-19 | Open Invention Network, Llc | Separate cryptographic keys for protecting different operations on data |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8959284B1 (en) | 2010-06-28 | 2015-02-17 | Western Digital Technologies, Inc. | Disk drive steering write data to write cache based on workload |
US9058280B1 (en) | 2010-08-13 | 2015-06-16 | Western Digital Technologies, Inc. | Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
US9069475B1 (en) | 2010-10-26 | 2015-06-30 | Western Digital Technologies, Inc. | Hybrid drive selectively spinning up disk when powered on |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US9361044B2 (en) | 2011-03-28 | 2016-06-07 | Western Digital Technologies, Inc. | Power-safe data management system |
US8898373B1 (en) | 2011-06-29 | 2014-11-25 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US9195530B1 (en) | 2011-09-06 | 2015-11-24 | Western Digital Technologies, Inc. | Systems and methods for improved data management in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US9268701B1 (en) | 2011-11-21 | 2016-02-23 | Western Digital Technologies, Inc. | Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability |
US8977804B1 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Varying data redundancy in storage systems |
US8959416B1 (en) | 2011-12-16 | 2015-02-17 | Western Digital Technologies, Inc. | Memory defect management using signature identification |
US9348741B1 (en) | 2011-12-19 | 2016-05-24 | Western Digital Technologies, Inc. | Systems and methods for handling write data access requests in data storage devices |
US9053008B1 (en) | 2012-03-26 | 2015-06-09 | Western Digital Technologies, Inc. | Systems and methods for providing inline parameter service in data storage devices |
US8984247B1 (en) | 2012-05-10 | 2015-03-17 | Western Digital Technologies, Inc. | Storing and reconstructing mapping table data in a data storage system |
US8966205B1 (en) | 2012-05-10 | 2015-02-24 | Western Digital Technologies, Inc. | System data management using garbage collection and hybrid self mapping |
US9977612B1 (en) | 2012-05-11 | 2018-05-22 | Western Digital Technologies, Inc. | System data management using garbage collection and logs |
US9170932B1 (en) | 2012-05-22 | 2015-10-27 | Western Digital Technologies, Inc. | System data storage mechanism providing coherency and segmented data loading |
US8954653B1 (en) | 2012-06-26 | 2015-02-10 | Western Digital Technologies, Inc. | Mechanisms for efficient management of system data in data storage systems |
US8924832B1 (en) | 2012-06-26 | 2014-12-30 | Western Digital Technologies, Inc. | Efficient error handling mechanisms in data storage systems |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US9507523B1 (en) | 2012-10-12 | 2016-11-29 | Western Digital Technologies, Inc. | Methods, devices and systems for variable size logical page management in a solid state drive |
US9489296B1 (en) | 2012-10-17 | 2016-11-08 | Western Digital Technologies, Inc. | Methods, devices and systems for hardware-based garbage collection in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US9032271B2 (en) | 2012-12-07 | 2015-05-12 | Western Digital Technologies, Inc. | System and method for lower page data recovery in a solid state drive |
US9619317B1 (en) | 2012-12-18 | 2017-04-11 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US8966339B1 (en) | 2012-12-18 | 2015-02-24 | Western Digital Technologies, Inc. | Decoder supporting multiple code rates and code lengths for data storage systems |
US9122625B1 (en) | 2012-12-18 | 2015-09-01 | Western Digital Technologies, Inc. | Error correcting code encoder supporting multiple code rates and throughput speeds for data storage systems |
US9214963B1 (en) | 2012-12-21 | 2015-12-15 | Western Digital Technologies, Inc. | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system |
US8954655B2 (en) | 2013-01-14 | 2015-02-10 | Western Digital Technologies, Inc. | Systems and methods of configuring a mode of operation in a solid-state memory |
US8972655B2 (en) | 2013-01-21 | 2015-03-03 | Western Digital Technolgies, Inc. | Initialization of a storage device |
US9274966B1 (en) | 2013-02-20 | 2016-03-01 | Western Digital Technologies, Inc. | Dynamically throttling host commands to disk drives |
US9454474B2 (en) | 2013-03-05 | 2016-09-27 | Western Digital Technologies, Inc. | Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive |
US9641378B1 (en) | 2013-03-12 | 2017-05-02 | Western Digital Technologies, Inc. | Adjustment of compression ratios for data storage |
US8924824B1 (en) | 2013-03-12 | 2014-12-30 | Western Digital Technologies, Inc. | Soft-decision input generation for data storage systems |
US9280472B1 (en) | 2013-03-13 | 2016-03-08 | Western Digital Technologies, Inc. | Caching data in a high performance zone of a data storage system |
US8990668B2 (en) | 2013-03-14 | 2015-03-24 | Western Digital Technologies, Inc. | Decoding data stored in solid-state memory |
US9059742B1 (en) | 2013-03-15 | 2015-06-16 | Western Digital Technologies, Inc. | System and method for dynamic scaling of LDPC decoder in a solid state drive |
US9218279B2 (en) | 2013-03-15 | 2015-12-22 | Western Digital Technologies, Inc. | Atomic write command support in a solid state drive |
US9335950B2 (en) | 2013-03-15 | 2016-05-10 | Western Digital Technologies, Inc. | Multiple stream compression and formatting of data for data storage systems |
US9448738B2 (en) | 2013-03-15 | 2016-09-20 | Western Digital Technologies, Inc. | Compression and formatting of data for data storage systems |
US9013920B2 (en) | 2013-04-03 | 2015-04-21 | Western Digital Technologies, Inc. | Systems and methods of write precompensation to extend life of a solid-state memory |
US9123686B2 (en) | 2013-04-12 | 2015-09-01 | Western Digital Technologies, Inc. | Thermal management for solid-state drive |
US9338927B2 (en) | 2013-05-02 | 2016-05-10 | Western Digital Technologies, Inc. | Thermal interface material pad and method of forming the same |
US9195293B1 (en) | 2013-05-03 | 2015-11-24 | Western Digital Technologies, Inc. | User controlled data storage device power and performance settings |
US9081700B2 (en) | 2013-05-16 | 2015-07-14 | Western Digital Technologies, Inc. | High performance read-modify-write system providing line-rate merging of dataframe segments in hardware |
US9632926B1 (en) | 2013-05-16 | 2017-04-25 | Western Digital Technologies, Inc. | Memory unit assignment and selection for internal memory operations in data storage systems |
US9170938B1 (en) | 2013-05-17 | 2015-10-27 | Western Digital Technologies, Inc. | Method and system for atomically writing scattered information in a solid state storage device |
US9280200B1 (en) | 2013-05-20 | 2016-03-08 | Western Digital Technologies, Inc. | Automatic peak current throttle of tiered storage elements |
US9740248B2 (en) | 2013-06-07 | 2017-08-22 | Western Digital Technologies, Inc. | Component placement within a solid state drive |
US9274978B2 (en) | 2013-06-10 | 2016-03-01 | Western Digital Technologies, Inc. | Migration of encrypted data for data storage systems |
US9436630B2 (en) | 2013-06-11 | 2016-09-06 | Western Digital Technologies, Inc. | Using dual phys to support multiple PCIe link widths |
US9830257B1 (en) | 2013-06-12 | 2017-11-28 | Western Digital Technologies, Inc. | Fast saving of data during power interruption in data storage systems |
US9665501B1 (en) | 2013-06-18 | 2017-05-30 | Western Digital Technologies, Inc. | Self-encrypting data storage device supporting object-level encryption |
US9304560B2 (en) | 2013-06-19 | 2016-04-05 | Western Digital Technologies, Inc. | Backup power for reducing host current transients |
US9208101B2 (en) | 2013-06-26 | 2015-12-08 | Western Digital Technologies, Inc. | Virtual NAND capacity extension in a hybrid drive |
US9583153B1 (en) | 2013-06-28 | 2017-02-28 | Western Digital Technologies, Inc. | Memory card placement within a solid state drive |
US9042197B2 (en) | 2013-07-23 | 2015-05-26 | Western Digital Technologies, Inc. | Power fail protection and recovery using low power states in a data storage device/system |
US9070379B2 (en) | 2013-08-28 | 2015-06-30 | Western Digital Technologies, Inc. | Data migration for data storage device |
US9442668B1 (en) | 2013-08-29 | 2016-09-13 | Western Digital Technologies, Inc. | Adaptive power management control with performance feedback |
US9263136B1 (en) | 2013-09-04 | 2016-02-16 | Western Digital Technologies, Inc. | Data retention flags in solid-state drives |
US9304709B2 (en) | 2013-09-06 | 2016-04-05 | Western Digital Technologies, Inc. | High performance system providing selective merging of dataframe segments in hardware |
US10444998B1 (en) | 2013-10-24 | 2019-10-15 | Western Digital Technologies, Inc. | Data storage device providing data maintenance services |
US9330143B2 (en) | 2013-10-24 | 2016-05-03 | Western Digital Technologies, Inc. | Data storage device supporting accelerated database operations |
US9007841B1 (en) | 2013-10-24 | 2015-04-14 | Western Digital Technologies, Inc. | Programming scheme for improved voltage distribution in solid-state memory |
US9323467B2 (en) | 2013-10-29 | 2016-04-26 | Western Digital Technologies, Inc. | Data storage device startup |
US9286176B1 (en) | 2013-11-08 | 2016-03-15 | Western Digital Technologies, Inc. | Selective skipping of blocks in an SSD |
US9270296B1 (en) | 2013-11-13 | 2016-02-23 | Western Digital Technologies, Inc. | Method and system for soft decoding through single read |
US9529710B1 (en) | 2013-12-06 | 2016-12-27 | Western Digital Technologies, Inc. | Interleaved channels in a solid-state drive |
US9007854B1 (en) | 2013-12-09 | 2015-04-14 | Western Digital Technologies, Inc. | Method and system for optimized soft decoding in a data storage device |
US10140067B1 (en) | 2013-12-19 | 2018-11-27 | Western Digital Technologies, Inc. | Data management for data storage device with multiple types of non-volatile memory media |
US9036283B1 (en) | 2014-01-22 | 2015-05-19 | Western Digital Technologies, Inc. | Data storage device with selective write to a first storage media or a second storage media |
US9337864B1 (en) | 2014-01-29 | 2016-05-10 | Western Digital Technologies, Inc. | Non-binary LDPC decoder using binary subgroup processing |
US9250994B1 (en) | 2014-02-05 | 2016-02-02 | Western Digital Technologies, Inc. | Non-binary low-density parity check (LDPC) decoding using trellis maximization |
US9384088B1 (en) | 2014-02-24 | 2016-07-05 | Western Digital Technologies, Inc. | Double writing map table entries in a data storage system to guard against silent corruption |
US9354955B1 (en) | 2014-03-19 | 2016-05-31 | Western Digital Technologies, Inc. | Partial garbage collection for fast error handling and optimized garbage collection for the invisible band |
US9268487B2 (en) | 2014-03-24 | 2016-02-23 | Western Digital Technologies, Inc. | Method and apparatus for restricting writes to solid state memory when an end-of life condition is reached |
US9348520B2 (en) | 2014-03-24 | 2016-05-24 | Western Digital Technologies, Inc. | Lifetime extension of non-volatile semiconductor memory for data storage device |
US9448742B2 (en) | 2014-03-27 | 2016-09-20 | Western Digital Technologies, Inc. | Communication between a host and a secondary storage device |
US9564212B2 (en) | 2014-05-06 | 2017-02-07 | Western Digital Technologies, Inc. | Solid-state memory corruption mitigation |
US9690696B1 (en) | 2014-05-14 | 2017-06-27 | Western Digital Technologies, Inc. | Lifetime extension of memory for data storage system |
US9472222B2 (en) | 2014-05-16 | 2016-10-18 | Western Digital Technologies, Inc. | Vibration mitigation for a data storage device |
TWI550615B (zh) * | 2014-08-28 | 2016-09-21 | 群聯電子股份有限公司 | 資料存取方法、記憶體儲存裝置及記憶體控制電路單元 |
US9275741B1 (en) | 2014-09-10 | 2016-03-01 | Western Digital Technologies, Inc. | Temperature compensation management in solid-state memory |
US9418699B1 (en) | 2014-10-09 | 2016-08-16 | Western Digital Technologies, Inc. | Management of sequentially written data |
US9405356B1 (en) | 2014-10-21 | 2016-08-02 | Western Digital Technologies, Inc. | Temperature compensation in data storage device |
US9823859B2 (en) | 2014-11-06 | 2017-11-21 | Western Digital Technologies, Inc. | Mechanical shock mitigation for data storage |
CN105811996B (zh) | 2014-12-30 | 2019-12-06 | 华为技术有限公司 | 一种基于准循环ldpc的数据处理方法及系统 |
US9857995B1 (en) | 2015-03-09 | 2018-01-02 | Western Digital Technologies, Inc. | Data storage device and method providing non-volatile memory buffer for real-time primary non-volatile memory protection |
DE102015111729B4 (de) * | 2015-07-20 | 2017-03-30 | Infineon Technologies Ag | Verfahren und decoder zum bestimmen eines fehlervektors für ein datenwort gemäss einem reed-muller-code |
US9785563B1 (en) | 2015-08-13 | 2017-10-10 | Western Digital Technologies, Inc. | Read command processing for data storage system based on previous writes |
JP6542076B2 (ja) * | 2015-08-28 | 2019-07-10 | 東芝メモリ株式会社 | メモリシステム |
US9668337B2 (en) | 2015-09-08 | 2017-05-30 | Western Digital Technologies, Inc. | Temperature management in data storage devices |
US9727261B2 (en) | 2015-09-24 | 2017-08-08 | Western Digital Technologies, Inc. | Weighted programming patterns in solid-state data storage systems |
US9836232B1 (en) | 2015-09-30 | 2017-12-05 | Western Digital Technologies, Inc. | Data storage device and method for using secondary non-volatile memory for temporary metadata storage |
US10013174B2 (en) | 2015-09-30 | 2018-07-03 | Western Digital Technologies, Inc. | Mapping system selection for data storage device |
US9620226B1 (en) | 2015-10-30 | 2017-04-11 | Western Digital Technologies, Inc. | Data retention charge loss and read disturb compensation in solid-state data storage systems |
US10063257B1 (en) | 2015-11-03 | 2018-08-28 | Western Digital Technologies, Inc. | Data storage device encoding and interleaving codewords to improve trellis sequence detection |
US10056920B1 (en) | 2015-11-03 | 2018-08-21 | Western Digital Technologies, Inc. | Data storage device encoding and interleaving codewords to improve trellis sequence detection |
US9761273B1 (en) | 2015-11-03 | 2017-09-12 | Western Digital Technologies, Inc. | Data storage device encoding and interleaving codewords to improve trellis sequence detection |
KR102435181B1 (ko) | 2015-11-16 | 2022-08-23 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10126981B1 (en) | 2015-12-14 | 2018-11-13 | Western Digital Technologies, Inc. | Tiered storage using storage class memory |
US10223198B2 (en) * | 2016-02-18 | 2019-03-05 | Micron Technology, Inc. | Error rate reduction |
CN107168816B (zh) * | 2016-03-07 | 2021-03-23 | 北京忆恒创源科技有限公司 | Ecc帧长调整方法及其装置 |
US9904594B2 (en) | 2016-04-15 | 2018-02-27 | Micron Technology, Inc. | Monitoring error correction operations performed in memory |
US10387303B2 (en) | 2016-08-16 | 2019-08-20 | Western Digital Technologies, Inc. | Non-volatile storage system with compute engine to accelerate big data applications |
US10061691B2 (en) * | 2016-09-08 | 2018-08-28 | Toshiba Memory Corporation | Write data optimization methods for non-volatile semiconductor memory devices |
JP6725375B2 (ja) | 2016-09-14 | 2020-07-15 | キオクシア株式会社 | メモリシステムおよび方法 |
US10459644B2 (en) | 2016-10-28 | 2019-10-29 | Western Digital Techologies, Inc. | Non-volatile storage system with integrated compute engine and optimized use of local fast memory |
US10574270B1 (en) * | 2016-11-09 | 2020-02-25 | Seagate Technology Llc | Sector management in drives having multiple modulation coding |
US10565123B2 (en) | 2017-04-10 | 2020-02-18 | Western Digital Technologies, Inc. | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module |
RU2659025C1 (ru) * | 2017-06-14 | 2018-06-26 | Общество с ограниченной ответственностью "ЛЭНДИГРАД" | Способы кодирования и декодирования информации |
TWI659359B (zh) | 2018-04-27 | 2019-05-11 | 慧榮科技股份有限公司 | 控制儲存裝置之方法 |
US10897273B2 (en) | 2018-06-27 | 2021-01-19 | Western Digital Technologies, Inc. | System-level error correction coding allocation based on device population data integrity sharing |
US10802908B2 (en) | 2018-07-31 | 2020-10-13 | Western Digital Technologies, Inc. | Data dependent allocation of error correction resources |
US10956071B2 (en) | 2018-10-01 | 2021-03-23 | Western Digital Technologies, Inc. | Container key value store for data storage devices |
US10769062B2 (en) | 2018-10-01 | 2020-09-08 | Western Digital Technologies, Inc. | Fine granularity translation layer for data storage devices |
US10740231B2 (en) | 2018-11-20 | 2020-08-11 | Western Digital Technologies, Inc. | Data access in data storage device including storage class memory |
US11016905B1 (en) | 2019-11-13 | 2021-05-25 | Western Digital Technologies, Inc. | Storage class memory access |
US11249921B2 (en) | 2020-05-06 | 2022-02-15 | Western Digital Technologies, Inc. | Page modification encoding and caching |
CN112256473A (zh) * | 2020-10-30 | 2021-01-22 | 浪潮云信息技术股份公司 | 一种分布式存储系统自适应纠错方法 |
CN116662063B (zh) * | 2023-05-10 | 2024-02-23 | 珠海妙存科技有限公司 | 一种闪存的纠错配置方法、纠错方法、系统、设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950586A (zh) * | 2009-03-27 | 2011-01-19 | 联发科技股份有限公司 | 存储控制器及控制数据读取的方法 |
CN102005250A (zh) * | 2010-10-27 | 2011-04-06 | 记忆科技(深圳)有限公司 | 准循环低密度奇偶校验码译码器及译码方法 |
Family Cites Families (174)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499337A (en) | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
US5621660A (en) | 1995-04-18 | 1997-04-15 | Sun Microsystems, Inc. | Software-based encoder for a software-implemented end-to-end scalable video delivery system |
US6011868A (en) | 1997-04-04 | 2000-01-04 | Hewlett-Packard Company | Bitstream quality analyzer |
US6418549B1 (en) * | 1998-10-30 | 2002-07-09 | Merunetworks, Inc. | Data transmission using arithmetic coding based continuous error detection |
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 |
US20050160218A1 (en) * | 2004-01-20 | 2005-07-21 | Sun-Teck See | Highly integrated mass storage device with an intelligent flash controller |
US8266367B2 (en) | 2003-12-02 | 2012-09-11 | Super Talent Electronics, Inc. | Multi-level striping and truncation channel-equalization for flash-memory system |
US7072417B1 (en) | 2000-06-28 | 2006-07-04 | Marvell International Ltd. | LDPC encoder and method thereof |
US6934904B2 (en) | 2001-04-30 | 2005-08-23 | Sun Microsystems, Inc. | Data integrity error handling in a redundant storage array |
US6895547B2 (en) | 2001-07-11 | 2005-05-17 | International Business Machines Corporation | Method and apparatus for low density parity check encoding of data |
US7149846B2 (en) | 2002-04-17 | 2006-12-12 | Lsi Logic Corporation | RAID protected external secondary memory |
US7702986B2 (en) | 2002-11-18 | 2010-04-20 | Qualcomm Incorporated | Rate-compatible LDPC codes |
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
JP4256198B2 (ja) * | 2003-04-22 | 2009-04-22 | 株式会社東芝 | データ記憶システム |
US20090193184A1 (en) | 2003-12-02 | 2009-07-30 | Super Talent Electronics Inc. | Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System |
US7395495B2 (en) | 2004-01-12 | 2008-07-01 | Intel Corporation | Method and apparatus for decoding forward error correction codes |
US7260763B2 (en) | 2004-03-11 | 2007-08-21 | Nortel Networks Limited | Algebraic low-density parity check code design for variable block sizes and code rates |
JP3875693B2 (ja) | 2004-03-24 | 2007-01-31 | 株式会社東芝 | Lpc符号を用いた符号化ビットのマッピング方法及び送信装置 |
RU2341894C2 (ru) | 2004-04-28 | 2008-12-20 | Самсунг Электроникс Ко., Лтд. | Устройство и способ для кодирования/декодирования кода разреженного контроля четности с переменной длиной блока |
US7346832B2 (en) | 2004-07-21 | 2008-03-18 | Qualcomm Incorporated | LDPC encoding methods and apparatus |
US7395490B2 (en) | 2004-07-21 | 2008-07-01 | Qualcomm Incorporated | LDPC decoding methods and apparatus |
US7203897B2 (en) | 2004-08-12 | 2007-04-10 | Motorola, Inc. | Method and apparatus for encoding and decoding data |
JP4519902B2 (ja) | 2004-08-16 | 2010-08-04 | サムスン エレクトロニクス カンパニー リミテッド | 可変ブロック長を有するブロック低密度パリティ検査符号の符号化/復号化装置及び方法 |
US8131926B2 (en) | 2004-10-20 | 2012-03-06 | Seagate Technology, Llc | Generic storage container for allocating multiple data formats |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
KR100641052B1 (ko) | 2004-12-08 | 2006-11-02 | 한국전자통신연구원 | Ldpc 부호기 및 복호기, 및 ldpc 부호화 방법 및복호화 방법 |
US7500172B2 (en) | 2005-02-26 | 2009-03-03 | Broadcom Corporation | AMP (accelerated message passing) decoder adapted for LDPC (low density parity check) codes |
US7657816B2 (en) | 2005-07-13 | 2010-02-02 | Leanics Corporation | Low-complexity hybrid LDPC code encoder |
KR100732628B1 (ko) | 2005-07-28 | 2007-06-27 | 삼성전자주식회사 | 멀티-비트 데이터 및 싱글-비트 데이터를 저장하는 플래시메모리 장치 |
US7129862B1 (en) | 2005-07-29 | 2006-10-31 | Texas Instruments Incorporated | Decoding bit streams encoded according to variable length codes |
KR100809616B1 (ko) | 2005-10-19 | 2008-03-05 | 삼성전자주식회사 | 가변 블록 길이를 가지는 블록 저밀도 패리티 검사 부호부호화/복호 장치 및 방법 |
US20070124648A1 (en) | 2005-10-31 | 2007-05-31 | Ajay Dholakia | Data protection method |
US7797611B2 (en) | 2005-11-14 | 2010-09-14 | International Business Machines Corporation | Creating an error correction coding scheme and reducing data loss |
US7631246B2 (en) | 2006-01-09 | 2009-12-08 | Broadcom Corporation | LDPC (low density parity check) code size adjustment by shortening and puncturing |
US7774689B2 (en) * | 2006-03-17 | 2010-08-10 | Industrial Technology Research Institute | Encoding and decoding methods and systems |
JP4863749B2 (ja) | 2006-03-29 | 2012-01-25 | 株式会社日立製作所 | フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US8239735B2 (en) * | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
US7809994B2 (en) | 2006-05-17 | 2010-10-05 | Sandisk Corporation | Error correction coding for multiple-sector pages in flash memory devices |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US7739576B2 (en) | 2006-08-31 | 2010-06-15 | Micron Technology, Inc. | Variable strength ECC |
JP4932427B2 (ja) | 2006-10-20 | 2012-05-16 | 株式会社日立製作所 | 記憶装置及び記憶方法 |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8019940B2 (en) | 2006-12-06 | 2011-09-13 | Fusion-Io, Inc. | Apparatus, system, and method for a front-end, distributed raid |
US8090980B2 (en) | 2006-12-08 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for providing data redundancy in a plurality of storage devices |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7660911B2 (en) | 2006-12-20 | 2010-02-09 | Smart Modular Technologies, Inc. | Block-based data striping to flash memory |
US7913149B2 (en) | 2006-12-20 | 2011-03-22 | Lsi Corporation | Low complexity LDPC encoding algorithm |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7900118B2 (en) | 2007-02-12 | 2011-03-01 | Phison Electronics Corp. | Flash memory system and method for controlling the same |
US8359522B2 (en) | 2007-05-01 | 2013-01-22 | Texas A&M University System | Low density parity check decoder for regular LDPC codes |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8181089B1 (en) | 2007-08-24 | 2012-05-15 | Datadirect Networks, Inc. | Method for auto-correction of errors in a solid-state memory system |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8261152B2 (en) | 2007-09-10 | 2012-09-04 | Samsung Electronics Co., Ltd. | Apparatus and method for channel encoding/decoding in communication system using variable-length LDPC codes |
US8312341B1 (en) * | 2007-12-05 | 2012-11-13 | Marvell International Ltd. | Interleaved error correction coding for channels with non-uniform SNRs |
US8751755B2 (en) | 2007-12-27 | 2014-06-10 | Sandisk Enterprise Ip Llc | Mass storage controller volatile memory containing metadata related to flash memory storage |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
KR101398212B1 (ko) | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
KR101398200B1 (ko) | 2008-03-18 | 2014-05-26 | 삼성전자주식회사 | 메모리 장치 및 인코딩/디코딩 방법 |
US8180954B2 (en) | 2008-04-15 | 2012-05-15 | SMART Storage Systems, Inc. | Flash management using logical page size |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
WO2009143375A2 (en) | 2008-05-21 | 2009-11-26 | The Regents Of The University Of Calfornia | Lower-complexity layered belief propagation deconding ldpc codes |
US8276028B2 (en) * | 2008-05-23 | 2012-09-25 | Intel Corporation | Using error information from nearby locations to recover uncorrectable data in non-volatile memory |
US20100125695A1 (en) | 2008-11-15 | 2010-05-20 | Nanostar Corporation | Non-volatile memory storage system |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
KR101391362B1 (ko) | 2008-07-23 | 2014-05-07 | 삼성전자주식회사 | 읽기 전압 레벨이 설정가능한 플래시 메모리 시스템 및읽기 전압 레벨의 설정방법 |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US20100049914A1 (en) | 2008-08-20 | 2010-02-25 | Goodwin Paul M | RAID Enhanced solid state drive |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8281214B2 (en) | 2008-10-17 | 2012-10-02 | Lsi Corporation | Programmable quasi-cyclic low-density parity check (QC LDPC) encoder for read channel |
US8161345B2 (en) | 2008-10-29 | 2012-04-17 | Agere Systems Inc. | LDPC decoders using fixed and adjustable permutators |
US9356623B2 (en) | 2008-11-26 | 2016-05-31 | Avago Technologies General Ip (Singapore) Pte. Ltd. | LDPC decoder variable node units having fewer adder stages |
KR101059673B1 (ko) | 2008-12-26 | 2011-08-25 | 서울대학교산학협력단 | 신뢰도 또는 저장 용량을 동적으로 조절하는 저장 장치 및 그 방법 |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
KR100929371B1 (ko) | 2009-03-18 | 2009-12-02 | 한국과학기술원 | 페이지-디퍼런셜을 이용하여 dbms에 독립적인 방법으로 플래시 메모리에 데이터를 저장하는 방법 |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8327224B2 (en) | 2009-04-16 | 2012-12-04 | Micron Technology, Inc. | Data recovery in a solid state storage system |
US8578256B2 (en) | 2009-04-22 | 2013-11-05 | Agere Systems Llc | Low-latency decoder |
US8341501B2 (en) * | 2009-04-30 | 2012-12-25 | International Business Machines Corporation | Adaptive endurance coding of non-volatile memories |
US7898859B2 (en) | 2009-06-15 | 2011-03-01 | Micron Technology, Inc. | Use of emerging non-volatile memory elements with flash memory |
US8255620B2 (en) * | 2009-08-11 | 2012-08-28 | Texas Memory Systems, Inc. | Secure Flash-based memory system with fast wipe feature |
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 |
US7856528B1 (en) | 2009-08-11 | 2010-12-21 | Texas Memory Systems, Inc. | Method and apparatus for protecting data using variable size page stripes in a FLASH-based storage system |
US8402217B2 (en) | 2009-09-15 | 2013-03-19 | Marvell International Ltd. | Implementing RAID in solid state memory |
US8683302B2 (en) | 2009-09-25 | 2014-03-25 | Panasonic Corporation | Coding device, decoding device, coding method, decoding method, and communication system |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
JP2011086333A (ja) | 2009-10-14 | 2011-04-28 | Sony Corp | データ変調装置および方法、並びにプログラム、記録媒体 |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
TWI415396B (zh) | 2009-11-23 | 2013-11-11 | Nat Univ Tsing Hua | 適用於根據里德-索羅門碼建立之低密度同位檢查碼的解碼器及解碼方法 |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8443167B1 (en) | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
KR101623119B1 (ko) | 2010-02-01 | 2016-05-20 | 삼성전자주식회사 | 솔리드 스테이트 드라이브의 에러 제어 방법 |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
JP4940322B2 (ja) | 2010-03-16 | 2012-05-30 | 株式会社東芝 | 半導体メモリ映像蓄積再生装置及びデータ書込み/読出し方法 |
US9098430B2 (en) | 2010-03-22 | 2015-08-04 | Conversant Intellectual Property Management Inc. | Composite semiconductor memory device with error correction |
US8726126B2 (en) | 2010-03-23 | 2014-05-13 | Apple Inc. | Non-regular parity distribution detection via metadata tag |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US9544090B2 (en) | 2010-03-31 | 2017-01-10 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Hard input low density parity check decoder |
US8527840B2 (en) * | 2010-04-06 | 2013-09-03 | Densbits Technologies Ltd. | System and method for restoring damaged data programmed on a flash device |
WO2011126578A1 (en) | 2010-04-09 | 2011-10-13 | Link_A_Media Devices Corporation | Implementation of ldpc selective decoding scheduling |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8762813B2 (en) * | 2010-05-17 | 2014-06-24 | Skymedi Corporation | Configurable coding system and method of multiple ECCS |
US8489979B2 (en) | 2010-05-28 | 2013-07-16 | Seagate Technology Llc | Methods and devices to reduce outer code failure rate variability |
US8799747B2 (en) | 2010-06-03 | 2014-08-05 | Seagate Technology Llc | Data hardening to compensate for loss of data retention characteristics in a non-volatile memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8458568B2 (en) * | 2010-09-24 | 2013-06-04 | International Business Machines Corporation | Systems and methods for memory devices |
US8463991B2 (en) | 2010-09-28 | 2013-06-11 | Pure Storage Inc. | Intra-device data protection in a raid array |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US20120084507A1 (en) | 2010-10-01 | 2012-04-05 | John Colgrove | Multi-level protection with intra-device protection in a raid array based storage system |
US9348696B2 (en) | 2010-10-01 | 2016-05-24 | Pure Storage, Inc. | Distributed multi-level protection in a raid array based storage system |
WO2012058328A1 (en) | 2010-10-27 | 2012-05-03 | Sandforce, Inc. | Adaptive ecc techniques for flash memory based data storage |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
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 |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8626989B2 (en) * | 2011-02-02 | 2014-01-07 | Micron Technology, Inc. | Control arrangements and methods for accessing block oriented nonvolatile memory |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8806112B2 (en) * | 2011-07-14 | 2014-08-12 | Lsi Corporation | Meta data handling within a flash media controller |
US20130031301A1 (en) * | 2011-07-29 | 2013-01-31 | Stec, Inc. | Backend organization of stored data |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8339919B1 (en) | 2011-12-14 | 2012-12-25 | Western Digital Technologies, Inc. | Disk drive margining read channel by biasing log-likelihood ratios of a nonbinary iterative decoder |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8996957B1 (en) * | 2012-05-22 | 2015-03-31 | Pmc-Sierra, Inc. | Systems and methods for initializing regions of a flash drive having diverse error correction coding (ECC) schemes |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US8898548B1 (en) * | 2012-08-24 | 2014-11-25 | Western Digital Technologies, Inc. | Methods, data storage devices and systems having variable size ECC page size |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
-
2012
- 2012-10-24 US US13/659,099 patent/US8972826B2/en active Active
-
2013
- 2013-09-23 CN CN201380067610.7A patent/CN104871249B/zh active Active
- 2013-09-23 WO PCT/US2013/061249 patent/WO2014065967A1/en active Application Filing
- 2013-09-23 JP JP2015539605A patent/JP6129328B2/ja not_active Expired - Fee Related
- 2013-09-23 EP EP13849261.6A patent/EP2912667A4/en not_active Withdrawn
- 2013-09-23 KR KR1020157013404A patent/KR101927575B1/ko active IP Right Grant
-
2014
- 2014-12-15 US US14/570,820 patent/US10216574B2/en active Active
-
2016
- 2016-02-25 HK HK16102167.5A patent/HK1214401A1/zh unknown
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101950586A (zh) * | 2009-03-27 | 2011-01-19 | 联发科技股份有限公司 | 存储控制器及控制数据读取的方法 |
CN102005250A (zh) * | 2010-10-27 | 2011-04-06 | 记忆科技(深圳)有限公司 | 准循环低密度奇偶校验码译码器及译码方法 |
Non-Patent Citations (1)
Title |
---|
An Improved Variable Length Coding Scheme Using Structured LDPC Codes;Ming Jiang等;《International Conference On Wireless Communications and Signal Processing》;20101021;第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
KR101927575B1 (ko) | 2018-12-10 |
US10216574B2 (en) | 2019-02-26 |
EP2912667A1 (en) | 2015-09-02 |
CN104871249A (zh) | 2015-08-26 |
JP2015534409A (ja) | 2015-11-26 |
WO2014065967A1 (en) | 2014-05-01 |
JP6129328B2 (ja) | 2017-05-17 |
US8972826B2 (en) | 2015-03-03 |
US20140115427A1 (en) | 2014-04-24 |
KR20150082334A (ko) | 2015-07-15 |
HK1214401A1 (zh) | 2016-07-22 |
US20150100854A1 (en) | 2015-04-09 |
EP2912667A4 (en) | 2016-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104871249B (zh) | 数据存储系统的自适应错误纠正码 | |
CN101183565B (zh) | 存储介质中数据校验方法 | |
CN107665723A (zh) | 用于非易失性存储器的非二进制编码 | |
US8656263B2 (en) | Trellis-coded modulation in a multi-level cell flash memory device | |
US9465552B2 (en) | Selection of redundant storage configuration based on available memory space | |
US9214963B1 (en) | Method and system for monitoring data channel to enable use of dynamically adjustable LDPC coding parameters in a data storage system | |
US10965324B2 (en) | Memory controller, memory system, and memory control method | |
CN105302659B (zh) | 固态器件中的多纠错码代码字尺寸 | |
CN102394114B (zh) | 具有自适应纠错能力的bch码纠错方法 | |
US11397640B2 (en) | Extended error correction in storage device | |
JP2013524609A5 (zh) | ||
JP2013524609A (ja) | ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス | |
WO2022103925A1 (en) | Cache management based on memory device over-provisioning | |
US11817883B2 (en) | Variable length ECC code according to value length in NVMe key value pair devices | |
CN108268338A (zh) | 逐渐缩减大小的可变节点存储器 | |
CN107305510A (zh) | 数据处理方法、存储器存储装置及存储器控制电路单元 | |
CN112562772B (zh) | 自适应低密度奇偶校验硬解码器 | |
CN105632554B (zh) | 存储装置的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 1214401 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1214401 Country of ref document: HK |