CN103221928B - 用于固态驱动器的擦除次数减少的高级数据编码 - Google Patents

用于固态驱动器的擦除次数减少的高级数据编码 Download PDF

Info

Publication number
CN103221928B
CN103221928B CN201080069822.5A CN201080069822A CN103221928B CN 103221928 B CN103221928 B CN 103221928B CN 201080069822 A CN201080069822 A CN 201080069822A CN 103221928 B CN103221928 B CN 103221928B
Authority
CN
China
Prior art keywords
state
message
piece
mapping ruler
code word
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.)
Expired - Fee Related
Application number
CN201080069822.5A
Other languages
English (en)
Other versions
CN103221928A (zh
Inventor
马旭东
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.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development 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 Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of CN103221928A publication Critical patent/CN103221928A/zh
Application granted granted Critical
Publication of CN103221928B publication Critical patent/CN103221928B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1157Low-density generator matrices [LDGM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B11/00Recording on or reproducing from the same record carrier wherein for these two operations the methods are covered by different main groups of groups G11B3/00 - G11B7/00 or by different subgroups of group G11B9/00; Record carriers therefor
    • G11B11/08Recording on or reproducing from the same record carrier wherein for these two operations the methods are covered by different main groups of groups G11B3/00 - G11B7/00 or by different subgroups of group G11B9/00; Record carriers therefor using recording by electric charge or by variation of electric resistance or capacitance
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C14/00Digital stores characterised by arrangements of cells having volatile and non-volatile storage properties for back-up when the power is down
    • 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/11Error 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/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/1171Parity-check or generator matrices with non-binary elements, e.g. for non-binary LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/001Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used
    • H03M7/005Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits characterised by the elements used using semiconductor devices

Abstract

本文总体描述了用于对消息进行编码的技术。本文总体描述了用于将编码的消息进行解码的技术。该消息可根据映射规则来编码和/或解码。该映射规则能够使多个消息连续地写入固态驱动器中的同一块,而没有擦除操作。

Description

用于固态驱动器的擦除次数减少的高级数据编码
背景技术
除非另外指出,本部分所描述的材料不是本申请权利要求的现有技术,而且不允许通过并入本部分而作为现有技术。
固态驱动器的新近被擦除的块中的每个单元可开始于最高电压状态。传统上,对该块的每个连续的写操作可降低该单元的电压状态,但是无法提高该单元的电压状态。为提高该单元的电压状态,可在块中的单元被修改回最高电压状态的块上执行擦除操作。然而,固态驱动器在驱动器使用寿命期内仅可处理有限数量的擦除操作,因此在预期可能有频繁擦除操作的实现方式中,降低了固态驱动器的可用性。
发明内容
本公开总体描述了一些用于对消息进行编码的方法。根据一些示例性方法,一个块可在固态磁盘中选择。该块可配置为第一状态。对应于该块的映射规则、约束和消息可被接收。映射至该消息的一个或多个码字可根据该映射规则来识别。码字中的可用码字可根据应用于配置为第一状态的块的约束来识别。将所述可用码字写入至所述固态驱动器中的所述块的写操作可以被执行,从而将所述块从第一状态转换至第二状态。
本公开总体描述了一些计算机存储介质。一些示例性计算机存储介质可包括存储其上的计算机可执行指令,用于一些方法,所述一些方法在计算机执行操作时使计算机适用于对消息进行编码。根据一些示例性方法,该计算机可配置以执行一个或多个如下操作。该计算机可从固态驱动器中的块读取可用码字。该计算机可检索对应于该块的映射规则。该计算机可根据该映射规则识别映射至该码字的消息。
本公开总体描述了一些被配置以对消息进行编码的计算机系统。一些示例性计算机系统可配置以包括处理器、耦接至该处理器的存储器,以及编码单元。该编码单元可适用于根据所述存储器在所述处理器中执行操作,并且当由所述处理器执行时,使所述计算机系统通过以下步骤对消息进行编码。该计算机系统可选择在固态驱动器中的块。该块可配置为第一状态。该计算机系统可接收对应于该块的第一映射规则、约束和第一消息。该计算机系统可根据该第一映射规则识别映射至该第一消息的一个或多个第一码字。该计算机系统可根据应用于配置为第一状态的块的约束来识别第一码字中的第一可用码字。该计算机系统可执行将所述第一可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第一状态转换至第二状态。该计算机系统可接收对应于该块的第二映射规则和第二消息。该计算机系统可根据该第二映射规则识别映射至该第二消息的一个或多个第二码字。该计算机系统可根据应用于被配置为所述第二状态的块的所述约束,识别所述第二码字中的第二可用码字。该计算机系统可执行将所述第二可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第二状态转换至第三状态。
以上发明内容仅仅是说明性的,并非意图任何方式的限制。除上述说明性方面、实施方式和特征之外,进一步的方面、实施方式和特征将通过参考附图和如下详细描述而变得显而易见。
附图说明
本公开以上和其它特征从如下的描述和随附的权利要求并结合附图而更全面地显而易见。应当理解,这些附图仅仅描述了根据本公开的某些实施方式,因此不能被考虑为限制其范围,本公开将通过使用附图并结合附加特性和细节来描述,其中:
图1为说明用于对消息进行编码的示例性操作环境的功能性框图;
图2A为说明用于对消息进行编码的示例性过程的流程图;
图2B为说明用于将编码的消息进行解码的示例性过程的流程图;
图3A-3C示出了作为映射规则输入的矩阵的说明性示例;
图4A-4C示出了可写入固态驱动器的消息的说明性示例;
图5A-5C示出了适用于满足根据矩阵和消息的映射规则的码字的说明性示例;
图6A为说明用于对消息进行编码的示例性操作环境的功能性框图;
图6B为说明用于将码字进行解码的示例性操作环境的功能性框图;
图7为说明示例性计算系统的框图;以及
图8A-8C为说明根据所展示的至少某些实施方式而设置的计算机程序产品的示意图。
具体实施方式
在如下的详细描述中,参考形成其中一部分的附图。在附图中,相似符号典型地标识相似元件,除非上下文另外指出。在详细描述、附图和权利要求中描述的说明性实施例并非意在限制。也可利用其它实施方式,并且可作出其它改变,而不偏离本文所呈现主题的精神和范围。容易理解,本公开在此总体描述的和图中所说明的方面可被排列、替换、合并、分离和设计为各种各样的不同的配置,其全部被明确地考虑在内。
总体上,本公开特别涉及配置以对消息进行编码的技术。在多个实施方式中,新的信息可写入先前所写的块,而不在该块上执行擦除操作。在一个说明性实现方式中,用户可能希望将第一消息写入新近擦除的块。第一映射规则可适用于将第一消息映射至一个或多个码字的第一集合。控制器可从该码字的第一集合识别满足约束的第一可用码字,如下翻(down-flipping)约束和低电压电平成本约束。该控制器可将第一可用码字写入该块,而不是将第一消息写入该块。当第一可用码字从该块被读取时,控制器还可将第一可用码字通过第一映射规则解码回第一消息。
当第一消息作废时,用户可能希望将第二消息写入该块。第二映射规则可适用于将第二消息映射至一个或多个码字的第二集合。控制器可从码字的第二集合识别满足该约束的第二可用码字。不同于传统实现方式,控制器可将第二可用码字写入该块,而不在块上执行擦除操作。当该第二可用码字从该块被读取时,控制器还可将第二可用码字通过第二映射规则解码回第二消息。
现参见图1,根据本文呈现的至少某些实施方式,功能性框图说明了用于对消息进行编码的示例性操作环境100。操作环境100可包括连接到固态驱动器104的计算机102。计算机102可包括控制器106。控制器106可配置以从固态驱动器104读写消息。此处所用的消息可指代能够从固态驱动器104读或写的任意合适的数据集。
固态驱动器104可包括多个块,包括第一块108A、第二块108B和第N块108N。块108A-108N可共同表示为块108。每个块108可包括多个单元。例如,第一块108A可包括第一单元110A、第二单元110B和第N单元110N。单元110A-110N可共同表示为单元110。每个单元110可配置以采用多个状态,如电压电平。在某些实施方式中,每个单元110可配置以存储两个电压电平:高电压电平和低电压电平。在其它某些实施例中,每个单元110可配置以存储两个以上的电压电平。每个电压电平可表示比特值。例如,在两个状态的实现方式中,高电压电平可表示二进制值1,而低电压电平可表示二进制值0。在某些实施例中,电压电平可对应于实数值,表示块中单元的电压电平的比率。例如,码字可为0.92、0.83、0.7510333和0.63。在这种情况下,第一单元的电压电平可设置为0.92v,第二单元的电压电平可设置为0.83v,第三单元的电压电平可设置为0.7510333v,第四单元的电压电平可设置为0.63v,其中v可表示预定的电压电平。
控制器106可包括多个映射规则,包括第一映射规则112A、第二映射规则112B和第N映射规则112N。映射规则112A-112N可共同表示为映射规则112。控制器106可配置以应用合适的映射规则112,以将消息编码为一个或多个对应码字。控制器106还可配置以应用合适的映射规则112,以将码字解码为对应消息。例如,第一消息114A可通过第一映射规则112A映射至一个或多个码字的第一集合116A。第二消息114B可通过第二映射规则112B映射至一个或多个码字的第二集合116B。第N消息114N可映射至一个或多个码字的第N集合116N。消息114A-114N可共同表示为消息114。码字集合116A-116N可共同表示为码字116。
控制器106进一步可配置以从码字116中识别满足约束的可用码字,如下翻约束和低电压电平成本约束。例如,第一码字集合116A可包括满足该约束的第一可用码字118A。第二码字集合116B可包括满足该约束的第二可用码字118B。第N码字集合116N可包括满足该约束的第N可用码字118N。可用码字118A-118N可共同表示为可用码字118。下翻约束可指定写操作可保持或降低单元110的电压电平,但不可增加单元110的电压电平。可用码字118可使控制器106能够将多个消息在擦除操作之间写入固态驱动器104的块108中。
现参见图2A,根据本文描述的至少某些实施方式,流程图说明了用于对消息进行编码的示例性过程200。过程200A可包括多种操作、功能或动作,如一个或多个框202-216所示。过程200A可开始于框202(接收指令),其中控制器106可配置以接收指令以将消息(如消息114之一)写入固态驱动器104。该消息可包括能够存储于固态驱动器104的任意合适的数据集。在某些实施方式中,该消息可为二进制值的列向量。计算机(如服务器计算机102)可提供指令至控制器106。框202之后可为框204。
在框204(选择固态驱动器中的块),控制器106可配置以从固态驱动器104选择块,如块108之一。该块可根据任意合适的策略来选择。在一个示例中,该块可根据预定序列来选择。在另一个示例中,该块可根据预定模式来选择。在又一个示例中,该块可随机或伪随机地选择。框204之后可为框206。
在框206(检索映射规则),控制器106可配置以检索映射规则,如映射规则112之一。该映射规则可基于所选块的状态来选择。在某些实施方式中,所选块的每一轮信息记录可对应于不同的映射规则112(如,N个映射规则可对应于N轮信息记录)。在其它的某些实施方式中,所选块中的每轮信息记录可对应于一个或多个映射规则112(如单个映射规则对应于N轮信息记录)。每轮信息记录可表示没有擦除操作的连续写操作。例如,当所选块在第一轮信息记录期间刚刚被擦除时,第一映射规则112A可被选择。在所选块在第二轮信息记录期间被写入一次后,第二映射规则112B可被选择。在所选块在第N轮信息记录期间被写入N-1次后,第N映射规则112N可被选择。
在某些实施方式中,每个映射规则112可定义矩阵H,适用于满足如下检验子编码(syndromecoding)方程式:其中表示码字,表示消息,“mod”表示取模运算。在某些实施方式中,每个映射规则112可定义不同的矩阵。例如,第一映射规则112A可利用第一矩阵,第二映射规则112B可利用第二矩阵,第N映射规则112N可利用第N矩阵。在其它某些实施方式中,映射规则112可共享一个或多个矩阵。码字可表示二进制串。对于任意给定的消息,一个或多个码字可满足该检验子编码方程式。
在某些实施方式中,单个映射规则112可对应于基于错误校正的映射规则。该基于错误校正的映射规则可利用多种低密度奇偶校验码和低密度生成矩阵码的编码和解码过程。该基于错误校正的映射规则还可利用联合低密度奇偶校验码和低密度生成矩阵码的编码和解码过程。单个映射规则112可用于多轮信息记录。单个映射规则112可对应于多个码字。在这种情况下,可用码字可根据低电压电平成本约束从多个码字中选择。框206之后可为框208。
在框208(识别一个或多个码字),控制器106可配置以识别映射至该消息的一个或多个码字。该码字可表示消息的编码。在某些实施方式中,控制器106可通过应用前述检验子编码方程式来确定码字。框208之后可为框210。
在框210(确定是否存在可用码字),控制器106可配置以确定所识别的码字是否包含满足关于所选块的约束的可用码字。在某些实施方式中,该约束可为低电压电平成本约束。该低电压电平成本约束可指定写操作最小化该块中总电压电平的降低。即,该低电压电平成本约束可对应于写操作前原先的总电压电平与写操作后当前总电压电平之间的最小差值。在其它的某些实施方式中,该约束可为下翻约束。该下翻约束可指定该写操作保持或降低所选块中单元的电压电平。
例如,所选块可配置为[1,1,0,0]。即该所选块可包括四个单元。第一和第二单元可配置为高电压电平,表示二进制值1。第三和第四单元可配置为低电压电平,表示二进制值0。对应于给定消息的某些识别的码字可包括[1,0,1,0]t、[1,1,1,1]t和[1,0,0,0]t。上标t可表示转置。在本示例中,第一码字[1,0,1,0]t可不满足下翻约束,因为所选块中的第三单元正处于低电压电平,并且无法“上翻”至高电压电平以存储第一码字。类似地,第二码字[1,1,1,1]t可不满足下翻约束,因为所选块中的第三和第四单元正处于低电压电平,并且无法“上翻”至高电压电平以存储第二码字。与该第一码字和第二码字形成对比,第三码字[1,0,0,0]t可满足下翻约束,因为所选块中的每个单元或维持或降低其电压电平,以存储第三码字。
如果控制器106确定可用码字不存在于所识别的码字中,则框210之后可为框216。如果控制器106确定可用码字存在于所识别的码字中,则框210之后可为框212。
在框212(选择可用码字),控制器106可配置以选择满足该约束的可用码字。在先前的示例中,控制器106可选择第三码字[1,0,0,0]t,因为该第三码字满足关于所选块当前配置[1,1,0,0]的下翻约束。
在某些实施方式中,控制器106可配置以在需要时将可用码字反转,以满足低电压电平成本约束。该低电压电平成本约束可指定该可用码字应当降低尽可能少的单元的电压电平。例如,所选块可配置为[1,1,1,1]。对应于给定消息的可用码字可为[1,0,0,0]t。如果控制器106将可用码字按原样写入所选块,则所选块的四个单元中,三个单元的电压电平可以被降低。
在这种情况下,控制器106可配置以将可用码字从[1,0,0,0]t反转为[0,1,1,1]t。通过这种方式,当控制器106将反转的可用码字写入所选块时,所选块四个单元中只有一个单元的电压电平可以被降低。当控制器106从所选块中读取反转的可用码字时,控制器106可配置以将反转的可用码字反转回解码之前的可用码字。框212之后可为框214。
在框214(写入可用码字),控制器106可配置以将所选可用码字写入固态驱动器104中的所选块。通过将所选可用码字写入固态驱动器104中的所选块,控制器106可将所选块从一种状态转换成另一种状态。在先前的示例中,所选块最初可配置为[1,1,0,0]。如果控制器106将第三码字[1,0,0,0]t写入所选块,则控制器106将所选块从当前配置[1,1,0,0]转换为新的配置[1,0,0,0]。在框214之后,过程200A可重复(例如周期性地、连续地,或在需要时)或终止。
在框216(执行错误恢复过程),当控制器106在框210中确定不存在可用码字时,控制器106可配置为执行错误恢复过程。在错误恢复过程的某些实施方式中,控制器106可配置以在所选块上执行擦除操作。通过在所选块上执行擦除操作,控制器106可将所选块中的每个单元配置回最高电压电平。在错误恢复过程的其它某些实施方式中,控制器106可选择固态驱动器104中的其它块。当控制器106执行错误恢复过程时,框216之后可为框206。
现参见图2B,根据本文描述的至少某些实施方式,流程图说明了用于将编码的消息进行解码的示例性过程200。过程200B可包括多种操作、功能或动作,如一个或多个框222-226所示。过程200B可开始于框222(读取码字),其中控制器106可配置以从块(如块108之一)中读取码字。框222之后可为框224。
在框224(检索当前映射规则),控制器106可配置以检索与所读取块相关的当前映射规则。如前所述,与所读取块相关的当前映射规则可取决于块的当前状态。在某些实施方式中,与所读取块相关的当前映射规则可对应于当前轮的信息记录。框224之后可为框226。
在框226(识别消息),控制器106可配置以识别与根据当前映射规则的检索的码字对应的消息。在框226之后,过程200B可重复(例如周期性地、连续地,或在需要时)或终止。
现参见图3A-3C、4A-4C以及5A-5C,根据本文呈现的至少某些实施方式,以某些示例的方式示出了说明性的映射规则实现方式。在图3A-3C、4A-4C以及5A-5C所示的示例中,说明性的映射规则可对应于前述检验子编码方程式:图3A-3C示出了矩阵的某些说明性示例H1、H2、H3,作为映射规则的输入。图4A-4C示出了可写入固态驱动器104的消息的某些说明性示例图5A-5C示出了码字的某些说明性示例适用于分别满足根据矩阵H1、H2、H3和消息的映射规则。
图3A示出了可用于第一轮信息记录的第一矩阵302。图4A示出了第一消息402。图5A示出了码字502。在说明性示例中,控制器106可接收指令,以将第一消息402写入块,例如固态驱动器104中的第一块108A。在第一轮信息记录之前,第一块108A可作为新近擦除的块开始。例如,第一块108A中的每个单元110可配置为最高电压电平,表示二进制值1。在第一轮信息记录之前,第一块108A可配置为[1,1,1,1]。
在接收来自控制器106的指令以将第一消息402写入第一块108A时,控制器106可检索对应于方程式的第一映射规则。控制器106可配置以识别满足该方程式的码字的值。在本示例中,单个码字502可满足在给定的第一矩阵302和第一消息402下的方程式。由于该第一块108A刚被擦除,所以包括码字502的任意二进制串可满足下翻约束。因此,控制器106可配置以执行写操作,以将码字502记录于第一块108A。根据该写操作,第一块108A可从当前配置[1,1,1,1]转换至新的配置[1,1,0,0]。
当控制器106接收指令以读取第一块108A时,控制器106可从第一块108读取编码的消息[1,1,0,0]。在从第一块108读取编码的消息[1,1,0,0]之后,控制器106可检索当前映射规则。在这种情况下,当前规则可为对应于方程式的第一映射规则。控制器106可根据第一映射规则将编码的消息[1,1,0,0]解码回第一消息402。
图3B示出了可用于第二轮信息记录的第二矩阵304。图4B示出了第二消息404。图5B示出了多个码字504-510。在说明性示例中,第一消息402可能作废,而控制器106可接收后续指令,以将第二消息404写入第一块108A。作为第一轮信息记录的结果,第一块108A在第二轮信息记录之前可配置为[1,1,0,0]。
在接收到来自控制器106的指令以将第二消息404写入第一块108A时,控制器106可检索对应于方程式的第二映射规则。控制器106可配置以识别满足该方程式的码字的值。在本示例中,多个码字504-510可满足在给定的第二矩阵304和第二消息404下的方程式。然而,码字504、506、510可能不会满足在给定的第一块108A的当前配置下的下翻约束。即,码字504、506、510的每一个可能不恰当地增加了至少一个单元110的电压电平。码字508可满足该下翻约束。因此,控制器106可配置以执行写操作,以在第一块108A上记录码字508。根据该写操作,第一块108A可从当前配置[1,1,0,0]转换至新的配置[1,0,0,0]。
当控制器106接收指令以读取第一块108A时,控制器106可从第一块108读取编码的消息[1,0,0,0]。在从第一块108读取编码的消息[1,1,0,0]之后,控制器106可检索当前映射规则。在这种情况下,当前映射规则可为对应于方程式的第二映射规则。控制器106可根据第二映射规则将编码的消息[1,0,0,0]解码回第二消息404。
图3C示出了可用于第三轮信息记录的第三矩阵306。图4C示出了第三消息406。图5B示出了多个码字512-526。在说明性示例中,第二消息404可能作废,而控制器106可接收后续指令,以将第三消息406写入第一块108A。作为第二轮信息记录的结果,第一块108A在第三轮信息记录之前可配置为[1,0,0,0]。
在接收到来自控制器106的指令以将第三消息406写入第一块108A时,控制器106可检索对应于方程式的第三规则。控制器106可配置以识别满足该方程式的码字的值。在本示例中,多个码字512-526可满足在给定的第三矩阵306和第三消息406下的方程式。然而,码字512-518和522-526可能不会满足在给定的第一块108A的当前配置下的下翻约束。即,码字512-518和522-526的每一个可能不恰当地增加了至少一个单元110的电压电平。码字520可满足该下翻约束。因此,控制器106可配置以执行写操作,以在第一块108A上记录码字508。根据该写操作,第一块108A可保持[1,0,0,0]的配置。
当控制器106接收指令以读取第一块108A时,控制器106可从第一块108读取编码的消息[1,0,0,0]。在从第一块108读取编码的消息[1,1,0,0]之后,控制器106可检索当前映射规则。在这种情况下,当前映射规则可为对应于方程式的第三映射规则。控制器106可根据第三映射规则将编码的消息[1,0,0,0]解码回第三消息406。
现参见图6A,根据本文描述的至少某些实施方式,功能性框图说明了用于对消息进行编码的示例性操作环境600A。操作环境600A可包括在4阶伽罗瓦域(“GF(4)”)602上低密度奇偶校验(“LDPC”)码602、稀疏映射模块604、GF(4)上低密度生成矩阵(“LDGM”)码606、映射模块608和码字生成模块610。
LDPC码602可将消息612编码为一个或多个LDPC码字614。该LDPC码字614可表示为有限域GF(4)中的符号串。LDPC码602可由矩阵方程式来定义。由LDPC码602所编码的码字可为满足上述矩阵方程式的向量其中H可为固定稀疏矩阵,和H的元素可为GF(4)中的符号,而乘法和加法可为GF(4)中的有限域乘法和加法。
稀疏映射模块604可将LDPC码602所编码的每一个LDPC码字614映射到稀疏二进制串616。该稀疏二进制串616可为0和1的串,其中0多于1。例如,稀疏映射模块604可将有限域GF(4)的四个符号分别映射到稀疏比特串1000、0100、0010和0001。稀疏映射模块604可将GF(4)中的符号串映射为一连串对应每个单独符号的稀疏串。
LDGM码606可基于稀疏二进制串616和固态驱动器中的块的当前状态620来生成一个或多个LDGM码字618。每个LDGM码字618可表示为GF(4)符号串。LDGM码606可由矩阵方程式所定义。LDGM码606所编码的LDGM码字可为向量其中可为满足上述矩阵方程式的两个向量,G可为固定稀疏矩阵,元素G、可为有限域GF(4)中的符号,而乘法和加法可为GF(4)中的有限域乘法。如果多于一个LDGM码字618被生成,则可根据低电压电平成本约束来选择可用LDGM码字618。
映射模块608可将LDGM码字618映射至整数串,实现为状态自适应串622。每个整数可对应于比特值,其中每个值对应于不同的电压电平。例如,如果固态驱动器中的每个单元可配置为四个电压之一,则整数0,1,2,3可分别对应于第一、第二、第三、第四电压电平。码字生成模块610可通过将状态自适应串622和稀疏二进制串616相加而生成码字624。
以下描述用于将消息编码的示例性过程流。LDPC码602可接收消息612。LDPC码602可将消息612编码为LDPC码字614。稀疏映射模块604可将LDPC码字614映射于包含25%的1和75%的0的稀疏二进制串616。LDGM码606可监测固态驱动器中的块的当前状态(即配置)620,并基于稀疏二进制串616和当前状态620生成LDGM码字618。映射模块608可将LDGM码字618映射至状态自适应串622。由码字生成模块610生成的作为结果的码字624可以是以4为模的,等于稀疏二进制串616和状态自适应串622之和。
现参见图6B,根据本文描述的至少某些实施方式,功能性框图说明了用于将码字进行解码的示例性操作环境600B。操作环境600B可包括4阶伽罗瓦域(“GF(4)”)602上低密度奇偶校验(“LDPC”)码602、稀疏映射模块604、GF(4)上低密度生成矩阵(“LDGM”)码606、映射模块608和码字生成模块610,如以上结合图6A所述。操作环境600B可进一步包括消息解码模块626。
以下描述了用于解码码字的示例性过程流。LDGM码606和/或映射模块608可从固态驱动器的块中检索码字624。由于码字624可以4为模,等于稀疏二进制串616和状态自适应串622之和,因此码字624可作为状态自适应串622被噪声破坏的版本,其中25%的符号被翻转。映射模块608和LDGM码606可利用多种错误校正技术来分别恢复状态自适应串622和LDGM码字618。消息解码模块626可从LDGM码字618中减去状态自适应串622,以获得稀疏二进制串616。稀疏映射模块604随后可将稀疏二进制串616映射至LDPC码字614。LDPC码602可从LDPC码字614中获得消息612。
图7为示出一种用于能够实现本文描述的至少某些实施方式的示例性计算系统的说明性计算机硬件体系结构的计算机体系结构图。图7包括计算机700,该计算机700包括处理器710、存储器720和一个或多个驱动器730。计算机700可实现为传统计算机系统、嵌入式控制计算机、膝上型电脑,或服务器计算机、移动设备、机顶盒、电话亭、车载信息系统、移动电话、定制机或其它硬件平台。
驱动器730及其相关计算机存储介质为计算机700提供了计算机可读指令、数据结构、程序模块和其它数据的存储。驱动器730可包括操作系统740、应用程序750、程序模块760和数据库780。程序模块760可包括控制器106。该控制器106可适用于执行用于编码消息的过程200A和/或用于将编码的消息进行解码的过程200B,如先前结合图2A-2B更详细地描述。计算机700进一步包括用户输入设备790,用户由此可输入命令和数据。输入设备可包括电子数字转换器、麦克风、键盘和指点设备,通常称为鼠标、跟踪球或触摸板。其它输入设备可包括游戏操纵杆、游戏板、圆盘式卫星电视天线、扫描仪等。
通过耦接至系统总线的用户输入接口,以上和其它输入设备可耦接至处理器710,还可通过其它接口和总线结构来耦接,如并行端口、游戏端口或通用串行总线(“USB”)。计算机如计算机700还可包括其它外围输出设备,如扬声器,其可通过输出外围接口794等来耦接。
计算机700可利用与一个或多个计算机的逻辑连接而操作于网络环境,如耦接至网络接口796的远程计算机。该远程计算机可为个人计算机、服务器、路由器、网络PC、对等设备或其它通用网络节点,并可包括相对于计算机700的上述多个或全部元件。网络环境普遍存在于办公室、企业广域网(“WAN”)、局域网(“LAN”)、内部互联网和因特网。
当应用在LAN或WLAN网络环境时,计算机700可通过网络接口796或适配器耦接至LAN。当应用在WAN网络环境时,计算机700典型地包括调制解调器或用于在WAN(如互联网或网络708)中建立通信的其它装置。WAN可包括互联网、所示的网络708、其它多种网络或其任意组合。应当理解,还可使用在计算机之间建立通信链路、环形网络、网格、总线、云或网络的其它机制。
根据某些实施方式,计算机700可耦接至网络环境。计算机700可包括物理计算机可读存储介质或媒体的一个或多个示例,其与驱动器730或其它存储设备相关联。系统总线可使处理器710能够将编码和/或数据读取至该计算机可读存储介质或从中读取。该介质可表示一种装置,该装置的形式为利用任意合适的技术实现的存储元件,包括但不限于半导体、磁性材料、光学介质、电存储、电化学存储或其它任何存储技术。该介质可表示与存储器720相关联的元件,无论具体为RAM、ROM、闪存、还是其它类型的易失性或非易失性存储器技术。该介质还可表示辅助存储,无论实现为存储驱动器730还是其它。硬盘驱动实现方式可具体为固态或可包括存储磁性编码信息的旋转式介质。
存储介质可包括一个或多个程序模块760。程序模块760可包括软件指令,其当载入处理器710并执行时,将通用计算系统转换为专用计算系统。如本描述全文所详述,程序模块760可提供多种工具或技术,计算机700由此可利用本文所讨论的组件、逻辑流和/或数据结构来参与全部系统或操作环境。
处理器710可由任意数量的晶体管或其它电路元件来构造,其单独或共同地呈现任意数量的状态。更特别地,处理器710可操作为状态机或有限状态机。这种机器可通过加载程序模块760包含的可执行指令而转换为第二种机器或专用机器。这些计算机可执行指令可通过指定处理器710如何在状态之间转变而转换处理器710,由此将组成处理器710的晶体管或其它电路元件从第一种机器转换至第二种机器。每个机器的状态还可通过接收来自一个或多个用户输入设备790、网络接口796、其它外围设备、其它接口或一个或多个用户或其它施动者的输入来转换。每个机器还可转换状态,或各种输出设备的各种物理特性,如打印机、扬声器、视频显示器或其它。
将程序模块760编码还可转换存储介质的物理结构。该物理结构的特定转换在本描述的不同实现方式中可取决于多种因素。所述因素的示例包括但不限于:用于实现该存储介质的技术,无论该存储介质具体为主存储或辅助存储等。例如,如果该存储介质实现为基于半导体的存储器,则当软件被编码在程序模块760中时,程序模块760可转换该半导体存储器720的物理状态。例如,该软件可转换组成该半导体存储器720的晶体管、电容或其它分离的电路元件的状态。
作为另一示例,该存储介质可利用磁性或光学技术来实现,如驱动器730。在这种实现方式中,当软件被编码在程序模块760中时,程序模块760可转换磁性或光学介质的物理状态。这些转换可包括改变给定磁性介质中特定位置的磁性特性。这些转换还可包括改变给定光学介质中的特定位置的物理特征或特性,以改变这些位置的光学特性。应当理解,可以对物理介质做出其它各种转变,而不偏离本描述的范围和精神。
现参见图8A-8C,示意图说明了计算机程序产品800的部分视图,该计算机程序产品800包括根据本文呈现的至少某些实施方式设置的用于在计算设备上执行计算机过程的计算机程序。示例性计算机程序产品800的说明性实施方式利用信号承载介质802来提供,可包括804A中的至少一个指令和/或804B中的至少一个指令。图8B所示的指令804A可包括:用于选择固态驱动器中的块的一个或多个指令,该块配置为第一状态;用于接收对应于该块的映射规则的一个或多个指令;用于接收约束的一个或多个指令;用于接收消息的一个或多个指令;用于根据该映射规则识别映射至该消息的一个或多个码字的一个或多个指令;用于根据应用于被配置为第一状态的块的约束来识别在码字当中的可用码字的一个或多个指令;或用于执行可用码字至固态驱动器中的块的写操作从而将该块从第一状态转换至第二状态的一个或多个指令。
图8C所示的指令804B可包括:用于从固态驱动器中的块读取可用码字的一个或多个指令;用于检索对应于该块的映射规则的一个或多个指令;或用于根据该映射规则识别映射至该码字的消息的一个或多个指令。该一个或多个指令例如可为计算机可执行和/或逻辑实现的指令。在某些实施方式中,一个或多个计算机程序产品800的信号承载介质802包括计算机可读介质806、可记录介质808和/或通信介质810。
尽管本文描述的主题以结合计算机系统中操作系统和应用程序的执行来执行的程序模块的一般文本来呈现,但本领域技术人员将会理解,其它实现方式可结合其它类型的程序模块来执行。通常,程序模块包括例程、程序、组件、数据结构和执行特定任务或实现特定抽象数据类型的其它类型的结构。此外,本领域技术人员将会理解,本文描述的主题可利用其它计算机系统配置来实现,包括手持设备、多核处理器系统、基于微处理器的或可编程的消费电子、小型计算机、大型计算机等。
本公开不限于以本申请所描述的特定实施方式形式,其意图仅仅是多种方面的说明。本领域技术人员显而易见的是,可做出多种修改和变型,而不偏离其精神和范围。本公开范围内除所列举之外,在本公开的范围内的功能上等同的方法和装置也将从在前的描述中对本领域技术人员显而易见。所述修改和变型意在属于所附权利要求书的范围内。本公开仅由所附各项权利要求所限定,以及与所述权利要求书享有权利等同的全部范围。应当理解,本公开不限于特定方法、反应物、化合物成分或生物学系统,显然其可进行变化。还应理解,本文使用的术语仅用于描述特定实施方式的目的,并非意图限制。
关于基本上任意复数和/或单数的术语的使用,本领域技术人员可在适合上下文和/或应用时从复数转变成单数和/或从单数转变成复数。为清晰起见,多个单/复数互换可在本文中明确提出。
本领域技术人员将会理解,通常本文所用术语,尤其在所附权利要求中(例如所附权利要求的主体)通常意指“开放式”术语(例如术语“包括”应理解为“包括但不限于”,术语“具有”应理解为“至少具有”,术语“包括”应理解为“包括但不限于”等)。本领域技术人员将会进一步理解,如果是意指所引入权利要求书面陈述的特定数量,则这种意图将在权利要求中明确陈述,而且在没有出现该陈述时,不表示这种意图。例如,为帮助理解,如下所附权利要求可包含介绍性短语“至少一个”和“一个或多个”来引入权利要求书面陈述。然而,该短语的使用不应被解释为利用不定冠词“一个(a或an)”来暗示该权利要求书面陈述将包含这种引入的权利要求陈述的任意特定权利要求限制于仅包含一个该陈述的实施方式,即使当同一权利要求包括介绍性短语“一个或多个”或“至少一个”和不定冠词如“一个”(如“一个”应理解为表示“至少一个”或“一个或多个”)。对于用于引入权利要求书面陈述的定冠词,同样适用。此外,即使所引入权利要求书面陈述的特定数量被明确陈述,本领域技术人员仍将理解,这种陈述应理解为表示至少为所陈述的数量(如,没有其它修饰的单纯陈述“两个陈述”表示至少两个陈述,或两个或更多个陈述)。而且,在应用类似于“A、B和C等的至少一个”惯用语的实例中,通常该句法意指本领域技术人员能够理解该惯用语的含义(如,“一种具有A、B和C中至少一个的系统”可包括但不限于,仅A、仅B、仅C、A与B两者、A与C两者、B与C两者和/或A、B与C三者的系统,等等)。在应用类似于“A、B或C等的至少一个”惯用语的实例中,通常该句法意指本领域技术人员能够理解该惯用语的含义(如,“一种具有A、B或C中至少一个的系统”可包括但不限于,仅A、仅B、仅C、A与B两者、A与C两者、B与C两者和/或A、B与C三者的系统,等等)。本领域技术人员将进一步理解,呈现出两个或更多个可选项的任何分离的单词和/或短语,无论在描述、权利要求书还是在附图中,实质上应理解为考虑了包括其中一项、两项之一或同时两项的可能性。例如,短语“A或B”将理解为可能包括“A”或“B”或“A和B”。
此外,当本公开的特征和方面描述为马库什组合的形式时,本领域技术人员将会理解,本公开因此还可描述为该马库什组合中任意单个成员或成员子组的形式。
如本领域技术人员所理解,本文公开的全部范围还包括任何及全部可能的子范围及其子范围的组合,用于任何及全部目的,例如以提供手写描述的形式。所列出的任何范围容易理解为充分地描述和实现了被划分为至少相等的两部分、三个部分、四个部分、五个部分、十个部分等的相同范围。作为非限制性示例,本文讨论的每个范围可容易地划分为前三分之一、中间三分之一和后三分之一等。如本领域技术人员所理解,所有语言如“达到”、“至少”、“大于”“小于”等,包括所陈述的数量,并指代上述随后可划分成子范围的范围。最后,如本领域技术人员所理解,范围包括每个单独的成员。因此例如,具有1-3个元素的组指代具有1个、2个或3个元素的组。类似地,具有1-5个元素的组指代具有1个、2个、3个、4个或5个元素的组,等等。
尽管多个方面和实施方式已在本文公开,但其它的方面和实施方式将对本领域技术人员显而易见。本文公开的多个方面和实施方式目的在于说明,而非意图限制,其真正的范围和精神由随附权利要求来指示。

Claims (24)

1.一种用于对消息进行编码的方法,该方法包括以下步骤:
选择在固态驱动器中的块,所述块被配置为第一状态;
接收对应于所述块的映射规则;
接收应用于被配置为所述第一状态的所述块的约束;
接收所述消息;
根据所述映射规则识别映射至所述消息的一个或多个码字;
根据应用于被配置为所述第一状态的所述块的所述约束,识别所述码字中的可用码字;以及
执行将所述可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第一状态转换至第二状态。
2.根据权利要求1的方法,其中,根据所述映射规则识别映射至所述消息的一个或多个码字的步骤包括根据基于检验子编码的映射规则识别映射至所述消息的码字。
3.根据权利要求1的方法,其中,根据所述映射规则识别映射至所述消息的一个或多个码字的步骤包括根据基于错误校正的映射规则识别映射至所述消息的码字。
4.根据权利要求1的方法,其中,所述约束包括下翻约束;并且其中,根据应用于被配置为所述第一状态的所述块的所述约束识别所述码字中的可用码字的步骤包括识别可写入处于所述第一状态的所述块并满足所述下翻约束的可用码字。
5.根据权利要求4的方法,其中,所述下翻约束指定所述写操作保持或降低所述块中的单元的电压电平;并且其中,多个比特值中的每一个比特值对应于所述电压电平之一。
6.根据权利要求4的方法,其中,单元中的较高电压电平表示较高的比特值;并且其中,所述单元中的较低电压电平表示较低的比特值。
7.根据权利要求1的方法,其中,所述码字包括实数,所述实数表示所述块中的单元的电压电平的比率;并且其中,多个比特值中的每一个比特值对应于所述电压电平的所述比率之一。
8.根据权利要求1的方法,其中,所述约束包括低电压电平成本约束;并且其中,所述低电压电平成本约束指定所述写操作最小化所述块中的总电压电平的降低;并且其中,多个比特值中的每一个比特值对应于所述电压电平之一。
9.根据权利要求1的方法,该方法进一步包括以下步骤:
接收对应于所述块的第二映射规则;
接收第二消息;
根据所述第二映射规则识别映射至所述第二消息的一个或多个第二码字;
根据应用于被配置为所述第二状态的块的所述约束,识别所述第二码字中的第二可用码字;以及
执行将所述第二可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第二状态转换至第三状态。
10.根据权利要求1的方法,该方法进一步包括以下步骤:
接收第二消息;
根据所述映射规则识别映射至所述第二消息的一个或多个第二码字;
根据应用于被配置为所述第二状态的块的所述约束,识别所述第二码字中的第二可用码字;以及
执行将所述第二可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第二状态转换至第三状态。
11.根据权利要求1的方法,该方法进一步包括以下步骤:
从所述固态驱动器中的所述块读取所述可用码字;
检索对应于所述块的所述映射规则;以及
根据所述映射规则识别映射至所述码字的所述消息。
12.根据权利要求11的方法,其中,根据所述映射规则识别映射至所述码字的所述消息的步骤包括根据基于检验子编码的映射规则识别所述消息。
13.根据权利要求12的方法,其中,所述基于检验子编码的映射规则包括矩阵。
14.根据权利要求1的方法,其中,执行将所述可用码字写入至所述固态驱动器中的所述块的写操作的步骤包括:
确定所述可用码字是否包括比第二比特值更多的第一比特值;
响应于确定所述可用码字包括比第二比特值更多的第一比特值,反转所述可用码字的比特值以生成反转的可用码字;
在反转所述可用码字的比特值以生成所述反转的可用码字后,执行将所述反转的可用码字写入所述固态驱动器中的所述块的写操作;
响应于确定所述可用码字不包括比第二比特值更多的第一比特值,执行将所述可用码字写入所述固态驱动器中的所述块的写操作。
15.一种用于对消息进行编码的方法,该方法包括以下步骤:
从固态驱动器中的块读取可用码字;
检索所述块的状态;
从多个映射规则中检索与所述块的所述状态对应的映射规则;以及
根据所述映射规则识别映射至所述码字的所述消息。
16.根据权利要求15的方法,其中,根据所述映射规则识别映射至所述码字的所述消息的步骤包括根据基于检验子编码的映射规则识别映射至所述码字的所述消息。
17.根据权利要求15的方法,其中,根据所述映射规则识别映射至所述码字的所述消息的步骤包括根据基于错误校正的映射规则识别映射至所述码字的所述消息。
18.根据权利要求15的方法,所述方法进一步包括以下步骤:
选择在所述固态驱动器中的所述块,所述块被配置为第一状态;
接收对应于所述块的所述映射规则;
接收应用于被配置为所述第一状态的所述块的约束;
接收所述消息;
根据所述映射规则识别映射至所述消息的一个或多个码字;
根据应用于被配置为所述第一状态的所述块的所述约束,识别所述码字中的所述可用码字;以及
执行将所述可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第一状态转换至第二状态。
19.一种计算机系统,该计算机系统包括:
处理器;
耦接至所述处理器的存储器;
固态驱动器;以及
编码单元,其来自所述存储器在所述处理器中执行,并且当由所述处理器执行时,使所述计算机系统通过以下步骤对消息进行编码:
选择在所述固态驱动器中的块,所述块被配置为第一状态;
接收对应于所述块的第一映射规则;
接收应用于被配置为所述第一状态的所述块的约束;
接收第一消息;
根据所述第一映射规则识别映射至所述第一消息的一个或多个第一码字;
根据应用于被配置为所述第一状态的所述块的所述约束,识别所述第一码字中的第一可用码字;
执行将所述第一可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第一状态转换至第二状态;
接收对应于所述块的第二映射规则;
接收第二消息;
根据所述第二映射规则识别映射至所述第二消息的一个或多个第二码字;
根据应用于被配置为所述第二状态的块的所述约束,识别所述第二码字中的第二可用码字;以及
执行将所述第二可用码字写入至所述固态驱动器中的所述块的写操作,从而将所述块从所述第二状态转换至第三状态。
20.根据权利要求19的计算机系统,其中,所述第一状态包括在所述块上执行擦除操作之后的擦除的状态。
21.根据权利要求19的计算机系统,其中,所述编码单元来自所述存储器在所述处理器中执行,并且当由所述处理器执行时,使所述计算机系统进一步通过以下步骤对消息进行编码:
接收第三消息;
接收第三映射规则;
根据所述第三映射规则识别映射至所述第三消息的一个或多个第三码字;
根据所述约束确定所述第三码字是否包括第三可用码字;以及
响应于根据所述约束确定所述第三码字包括所述第三可用码字,执行将所述第三可用码字写入所述固态驱动器中的所述块的写操作,从而将所述块从所述第三状态转换至第四状态。
22.根据权利要求21的计算机系统,其中,响应于根据所述约束确定所述第三码字不包括所述第三可用码字,执行错误恢复过程。
23.根据权利要求22的计算机系统,其中,执行错误恢复过程包括选择所述固态驱动器中的另一块。
24.根据权利要求22的计算机系统,其中,执行错误恢复过程包括对所述固态驱动器中的所述块执行擦除操作,从而将所述块从所述第三状态转换至所述第一状态。
CN201080069822.5A 2010-10-29 2010-10-29 用于固态驱动器的擦除次数减少的高级数据编码 Expired - Fee Related CN103221928B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/054634 WO2012057777A1 (en) 2010-10-29 2010-10-29 Advanced data encoding with reduced erasure count for solid state drives

Publications (2)

Publication Number Publication Date
CN103221928A CN103221928A (zh) 2013-07-24
CN103221928B true CN103221928B (zh) 2016-01-20

Family

ID=45994244

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080069822.5A Expired - Fee Related CN103221928B (zh) 2010-10-29 2010-10-29 用于固态驱动器的擦除次数减少的高级数据编码

Country Status (6)

Country Link
US (1) US8423867B2 (zh)
EP (1) EP2633414A4 (zh)
JP (1) JP5468184B2 (zh)
KR (1) KR101326011B1 (zh)
CN (1) CN103221928B (zh)
WO (1) WO2012057777A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014109756A1 (en) 2013-01-11 2014-07-17 Empire Technology Development Llc Page allocation for flash memories
KR101742462B1 (ko) 2013-02-27 2017-06-01 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 메모리 디바이스들을 위한 선형 프로그래밍 기반 디코딩
US9859925B2 (en) 2013-12-13 2018-01-02 Empire Technology Development Llc Low-complexity flash memory data-encoding techniques using simplified belief propagation
US9734129B2 (en) 2014-04-22 2017-08-15 Sandisk Technologies Llc Low complexity partial parallel architectures for Fourier transform and inverse Fourier transform over subfields of a finite field
US9432055B2 (en) 2014-06-26 2016-08-30 Sandisk Technologies Llc Encoder for quasi-cyclic low-density parity-check codes over subfields using fourier transform
US9444493B2 (en) * 2014-06-26 2016-09-13 Sandisk Technologies Llc Encoder with transform architecture for LDPC codes over subfields using message mapping
KR102415645B1 (ko) 2017-03-29 2022-07-04 삼성전자주식회사 멀티미디어 서비스 콘텐트 제공 장치 및 방법
JP2020071888A (ja) * 2018-10-29 2020-05-07 キオクシア株式会社 記憶装置及び記憶方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742934A (en) * 1995-09-13 1998-04-21 Mitsubishi Denki Kabushiki Kaisha Flash solid state disk card with selective use of an address conversion table depending on logical and physical sector numbers
US6492918B1 (en) * 1999-09-30 2002-12-10 Stmicroelectronics, Inc. Code word having data bits and code bits and method for encoding data
US6933864B1 (en) * 2002-11-07 2005-08-23 Maxtor Corporation Encoding method using code constraint violation pointers
CN101676882A (zh) * 2008-09-16 2010-03-24 美光科技公司 存储器装置的内嵌映射信息

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2291991A (en) 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5673224A (en) 1996-02-23 1997-09-30 Micron Quantum Devices, Inc. Segmented non-volatile memory array with multiple sources with improved word line control circuitry
WO2001080249A1 (fr) * 2000-04-19 2001-10-25 Fujitsu Limited Procede de commande d'ecriture/de lecture de donnees, et dispositif de stockage
JP3893902B2 (ja) * 2001-05-28 2007-03-14 セイコーエプソン株式会社 画像形成装置および該装置における情報更新方法
US6973613B2 (en) * 2002-06-28 2005-12-06 Sun Microsystems, Inc. Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure
US7065607B2 (en) * 2002-06-28 2006-06-20 Microsoft Corporation System and method for implementing a counter
US8412879B2 (en) 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP4372134B2 (ja) * 2006-09-29 2009-11-25 株式会社日立製作所 データ比較機能を有するストレージシステム
TWI332611B (en) 2007-05-24 2010-11-01 Realtek Semiconductor Corp Method for writing data in flash memory and error correction coding/decoding method thereof
JP4785819B2 (ja) * 2007-11-07 2011-10-05 株式会社コナミデジタルエンタテインメント 記憶装置、記憶方法、ならびに、プログラム
JP2009135854A (ja) * 2007-12-03 2009-06-18 Fujitsu Ltd メモリアクセス制御装置、制御方法及びプログラム
US7907070B2 (en) * 2008-09-12 2011-03-15 Sharp Laboratories Of America, Inc. Systems and methods for providing unequal error protection using embedded coding
US8732388B2 (en) 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
US7864085B2 (en) 2009-02-05 2011-01-04 Lsi Corporation Data compression method and apparatus
US8161355B2 (en) * 2009-02-11 2012-04-17 Mosys, Inc. Automatic refresh for improving data retention and endurance characteristics of an embedded non-volatile memory in a standard CMOS logic process

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742934A (en) * 1995-09-13 1998-04-21 Mitsubishi Denki Kabushiki Kaisha Flash solid state disk card with selective use of an address conversion table depending on logical and physical sector numbers
US6492918B1 (en) * 1999-09-30 2002-12-10 Stmicroelectronics, Inc. Code word having data bits and code bits and method for encoding data
US6933864B1 (en) * 2002-11-07 2005-08-23 Maxtor Corporation Encoding method using code constraint violation pointers
CN101676882A (zh) * 2008-09-16 2010-03-24 美光科技公司 存储器装置的内嵌映射信息

Also Published As

Publication number Publication date
KR101326011B1 (ko) 2013-11-07
US8423867B2 (en) 2013-04-16
WO2012057777A1 (en) 2012-05-03
KR20130077895A (ko) 2013-07-09
JP2013541111A (ja) 2013-11-07
CN103221928A (zh) 2013-07-24
EP2633414A4 (en) 2014-03-26
EP2633414A1 (en) 2013-09-04
JP5468184B2 (ja) 2014-04-09
US20120110418A1 (en) 2012-05-03

Similar Documents

Publication Publication Date Title
CN103221928B (zh) 用于固态驱动器的擦除次数减少的高级数据编码
CN100581064C (zh) 低密度奇偶校验码解码装置和方法
US8683274B1 (en) Error correction coding for varying signal-to-noise ratio channels
US8930798B2 (en) Data encoding in solid state storage devices
US8996972B1 (en) Low-density parity-check decoder
US8782496B2 (en) Memory controller, semiconductor memory apparatus and decoding method
US8788922B2 (en) Error correction codes for incremental redundancy
US9385754B2 (en) Controller, information processing system, method of controlling controller, and program
US8612667B2 (en) Method for performing data pattern management regarding data accessed by a controller of a flash memory, and associated memory device and controller thereof
US20110029835A1 (en) Systems and Methods for Quasi-Cyclic LDPC Code Production and Decoding
JP2013524609A5 (zh)
Kuijper et al. Erasure codes with simplex locality
US8566665B2 (en) Systems and methods for error correction using low density parity check codes using multiple layer check equations
JP2008508776A (ja) 低密度パリティ検査コードを用いた符号化及び復号化方法
CN100433561C (zh) 转换用于低密度奇偶校验编码的奇偶校验矩阵的方法
US20160329910A1 (en) Non-binary ldpc decoder using binary subgroup processing
KR20130118162A (ko) Ldpc 부호 복호기 및 복호 방법
CN105164646A (zh) 具有早期解码终止检测的解码器
WO2010053152A1 (ja) 復号装置、この復号装置を有するデータ通信装置およびデータ記憶装置
US8443250B2 (en) Systems and methods for error correction using irregular low density parity check codes
CN106708649B (zh) 解码方法、存储器储存装置及存储器控制电路单元
US20160248447A1 (en) Scheme to avoid miscorrection for turbo product codes
US9619317B1 (en) Decoder having early decoding termination detection
US9906241B2 (en) Apparatus and method for turbo product codes
CN101796731B (zh) 在存储系统中更新卷积编码数据

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160120

Termination date: 20181029