CN102934093B - 用于改进固态驱动器的性能和/或可靠性的方法和系统 - Google Patents

用于改进固态驱动器的性能和/或可靠性的方法和系统 Download PDF

Info

Publication number
CN102934093B
CN102934093B CN201180027606.9A CN201180027606A CN102934093B CN 102934093 B CN102934093 B CN 102934093B CN 201180027606 A CN201180027606 A CN 201180027606A CN 102934093 B CN102934093 B CN 102934093B
Authority
CN
China
Prior art keywords
data block
ecc
data
code word
compressed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180027606.9A
Other languages
English (en)
Other versions
CN102934093A (zh
Inventor
J·B·卡安
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102934093A publication Critical patent/CN102934093A/zh
Application granted granted Critical
Publication of CN102934093B publication Critical patent/CN102934093B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding 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
    • 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/0608Saving storage space on storage systems
    • 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/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • 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]
    • 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/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • H03M13/1162Array based LDPC codes, e.g. array codes
    • 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/35Unequal 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/353Adaptation to the channel
    • 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
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • 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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种用于改进固态驱动器(SSD)的性能和/或可靠性的方法和系统。在本发明的一个实施例中,SSD具有压缩要存储在SSD中的数据块的逻辑。如果低于阈值地压缩数据块是不可能的,则SSD在没有进行任何压缩的情况下存储数据块。如果低于阈值地压缩数据块是可能的,则SSD压缩数据块并将经压缩的数据存储在SSD中。在本发明的一个实施例中,SSD具有用于动态地调节或选择被存储在SSD中的数据的纠错码的强度的逻辑。在本发明的另一实施例中,SSD具有用于提供对页中的数据的页内XOR保护的逻辑。

Description

用于改进固态驱动器的性能和/或可靠性的方法和系统
技术领域
本发明涉及固态驱动器,尤其但并不排他地涉及用于改进固态驱动器的性能和/或可靠性的方法和系统。
背景技术
差错保护机制常常被用于确保固态驱动器中存储的数据的完整性。图1A例示了存储在现有技术NAND闪存页110中的数据的框图100。现有技术NAND闪存页110具有由纠错码0(ECC0)校验字节120所保护的扇区0112、扇区1114、扇区2116、以及扇区3118。类似地,ECC1校验字节130保护现有技术NAND闪存页110的扇区4122、扇区5124、扇区6126、和扇区7128。
取决于每个扇区中的差错的严重性,ECC0校验字节120和ECC1校验字节130可便于对扇区中的差错的检测,并且允许对扇区中差错的数据恢复。图1B例示了存储在现有技术NAND闪存页160中的数据的框图150。现有技术NAND闪存页160具有由ECC校验字节170所保护的扇区0162、扇区1164、扇区2166、以及扇区3168。图1C例示了存储在现有技术NAND闪存页190中的码字的框图180。现有技术NAND闪存页190具有分别由ECC0-3校验字节193、195、197和199所保护的四个码字(CW)1-4、192、194、196和198。
发明内容
本发明描述了一种用于改进固态驱动器的性能和/或可靠性的装置。该装置包括用于以下操作的逻辑:压缩数据块;确定所述数据块被压缩到低于一阈值;以及响应于确定所述数据块被压缩到低于所述阈值,将所述经压缩的数据块写入一个或多个存储器模块中,其中用已知数据暂记区填满通过压缩创建的额外节约区域,并且其中通过调节所述已知数据暂记区的大小来动态地调节所述数据块的纠错码(ECC)的强度。所述逻辑还用于响应于确定所述数据块并没有被压缩到低于所述阈值,在没有压缩的情况下将所述数据块写入到一个或多个存储器模块中。所述阈值是基于所述经压缩的数据块的大小、以及所述数据块的大小与所述经压缩的数据块的大小的比率中的至少一个。所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于基于与所述一个或多个存储器模块中用来存储所述数据块的位置相关联的比特差错率(BER)以及用来存储所述数据块的物理区域的擦除计数中的至少一个来动态地调节所述数据块的所述纠错码(ECC)的所述强度。
所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:将已知数据暂记区追加到所述经压缩的数据块,其中所述已知数据暂记区和所述经压缩的数据块的经组合的大小匹配于所述数据块的大小;确定所述经压缩的数据块和所述已知数据暂记区的纠错码(ECC)校验字节;以及将所确定的纠错码(ECC)校验字节追加到所述经压缩的数据块和所述已知数据暂记区。
所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:为所述多个码字中的每一个确定多个纠错码(ECC)校验字节中相应的一个;以及将所确定的相应的一个纠错码(ECC)校验字节追加到所述多个码字中的每一个。
所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:将已知数据暂记区中相应的一个追加到所述多个码字中的每一个;为所述多个码字中的每一个以及所述多个已知数据暂记区中相应每一个确定多个纠错码(ECC)校验字节中相应的一个;以及将所确定的相应的一个纠错码(ECC)校验字节追加到每一个码字以及相应每一个已知数据暂记区。
所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:选择所述多个码字中的一个;对除所选码字之外的所有码字执行异或(XOR)操作以获得异或(XOR)码字;以及用所述异或(XOR)码字来代替所选码字。
所述装置是NAND闪存固态驱动器(SSD)控制器。所述装置至少部分地符合开放NAND闪速接口(ONFI)协议。
附图说明
本发明的特征和优点根据本主题的以下详细描述将变得显而易见,其中:
图1A例示了存储在现有技术NAND闪存页中的数据的框图;
图1B例示了存储在现有技术NAND闪存页中的数据的框图;
图1C例示了存储在现有技术NAND闪存页中的码字的框图;
图2例示了根据本发明的一个实施例的固态驱动器的框图;
图3A例示了根据本发明的一个实施例的控制器的框图;
图3B例示了根据本发明的一个实施例的控制器的框图;
图4例示了根据本发明的一个实施例的存储在NAND闪存中的经压缩数据的框图;
图5例示了根据本发明的一个实施例的存储在NAND闪存中的经压缩数据的框图;
图6例示了根据本发明的一个实施例的经压缩扇区和已知数据暂记区的框图;
图7例示了根据本发明的一个实施例的两个NAND闪存页的框图;
图8例示了根据本发明的一个实施例的NAND闪存页的框图;
图9例示了根据本发明的一个实施例的NAND闪存页的框图;以及
图10例示了根据本发明的一个实施例的用于实现本文中公开的方法的系统。
具体实施方式
本文中所描述的本发明的实施例通过示例而非限制地在附图中示出。为说明的简单和清楚起见,在附图中示出的元件不一定按比例绘制。例如,为清楚起见,某些元件的尺寸可能相对于其它元件被放大。更进一步地,在认为适当时,附图标记在附图中被重复以指示相应或相似要素。在本说明书中对本发明的“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。在本说明书各处出现的短语“在一个实施例中”并不一定均指代同一实施例。
纠错或校正码(ECC)允许检查正被读取或传送的数据的差错并在有需要的情况下对其进行校正。ECC校验字节是基于允许检测和校正数据的ECC算法所计算的比特序列。在本发明的一个实施例中,码字指的是有效载荷数据和ECC校验字节的组合。数据的数据组块是在每一次操作中被读取或写入的数据块或部分。
本发明的实施例提供了用于改进固态驱动器(SSD)的性能和/或可靠性的方法和系统。在本发明的一个实施例中,SSD具有用于压缩将被存储在SSD中的数据块以及确定将被存储在SSD中的数据块是否被压缩到低于一阈值之下的逻辑。如果无法将数据块压缩到低于阈值之下,则SSD在没有进行任何压缩的情况下存储数据块。如果能将数据块压缩到低于阈值,则SSD在SSD中存储经压缩的数据块。
在本发明的一个实施例中,SSD的性能关联于为管理SSD而预留的超额存储器量,并且通过压缩数据块而得到的额外空间被用来改进SSD的性能。在本发明的一个实施例中,超额存储器量和/或通过压缩数据块而得到的额外空间不被报告并且不能为SSD的用户所用。在本发明的一个实施例中,SSD使用但不限于NAND闪存模块以及任何其他形式的存储器存储介质。在本发明的一个实施例中,SSD至少部分地符合开放NAND闪速接口(ONFI)协议。
在本发明的一个实施例中,SSD具有用于动态地调节或选择被存储在SSD中的数据的纠错码(ECC)的强度的逻辑。在本发明的一个实施例中,SSD通过压缩数据并追加或添加已知数据暂记区来调节数据的ECC的强度。确定或计算经压缩的数据和已知数据暂记区的ECC,并且除经压缩的数据和已知数据暂记区之外,还存储ECC校验字节。已知数据暂记区具有被预设或预定的数据或信息序列,以便于对经压缩的数据中的差错的恢复。
在本发明的另一实施例中,数据被划分或分割成数个码字或数据组块。在本发明的一个实施例中,SSD选择码字中的一个并对除所选码字之外的所有码字执行异或(XOR)操作,以获得XOR码字。SSD用XOR码字替代所选码字。在方面的一个实施例中,SSD将XOR码字和其他码字存储在单个存储器页中。这允许在单个存储器页里的任何一个码字中存在差错的情况下执行页内恢复。
图2例示了根据本发明的一个实施例的SSD202的框图200。SSD102具有与主机接口模块210、缓冲器220、存储器模块0240、存储器模块1242、存储器模块2224、以及存储器模块3246相耦合的控制器230。
在本发明的一个实施例中,主机接口模块210提供用于与主机设备或系统连接的接口。主机接口模块210根据通信协议来操作,这些通信协议包括但不限于串行高级技术附件(SATA)修订版1.x、SATA修订版2.x、SATA修订版3.x、以及任何其他类型的通信协议。
在本发明的一个实施例中,缓冲器220向SSD202提供临时存储。缓冲器220包括但不限于:同步动态随机访问存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)、静态RAM(SRAM)、和/或任何其他类型的随机存取存储器设备。在本发明的一个实施例中,缓冲器220被集成在控制器230内。
在本发明的一个实施例中,控制器230具有用于动态地调节或选择被存储在存储器模块0-3240、242、244和246中的数据的纠错码(ECC)的强度的逻辑。在本发明的一个实施例中,控制器230还具有用于压缩要被存储在存储器模块0-3240、242、244和246中的数据块以及确定要存储在存储器模块0-3240、242、244和246中的数据块是否被压缩到低于一阈值的逻辑。
在本发明的一个实施例中,存储器模块0-3240、242、244和246包括但不限于NAND闪存等。图2中示出的存储器模块的数目并不意味着进行限制,并且在发明的其他实施例中,可以多于或少于四个存储器模块。在本发明的实施例中,控制器230、主机接口模块210和缓冲器220被集成到单个集成电路(ASIC)。
图3A例示了根据本发明的一个实施例的控制器230的框图300。出于清楚例示起见,参照图2讨论图3A。在本发明的一个实施例中,控制器230具有多路复用器320,该多路复用器具有来自原始数据305的输入以及来自压缩引擎310的输入。数据选择器325将原始数据305与压缩引擎310之间的选择信号提供给多路复用器320。多路复用器320的输出与加密/加扰模块330相耦合,而加密/加扰模块330的输出与存储器控制器340相耦合。在本发明的一个实施例中,存储器控制器与存储器模块0-3240、242、244和246相耦合。
在本发明的一个实施例中,压缩引擎310能够压缩来自主机接口模块210和/或缓冲器220的原始数据305。当原始数据305到达时,压缩引擎310压缩每个原始数据块305。当原始数据块305被确定为是可压缩到低于特定阈值时,压缩引擎310通知数据选择器325向多路复用器320发送信号以选择来自压缩引擎310的输入,以接收被确定为可压缩到低于特定阈值的经压缩的原始数据块305。
当原始数据块305被确定为不能被压缩到低于特定阈值时,压缩引擎310通知数据选择器325向多路复用器320发送信号选择来自原始数据305的输入。在本发明的一个实施例中,仅当可达成的压缩量超过阈值时,控制器230才允许原始数据305以经压缩的形式或格式来存储。
原始数据块305的大小被设置为,但不限于,512字节、1千字节、以及任何其他适于压缩的合适的大小。阈值被设置为,但不限于,经压缩的数据块的大小、数据块的大小与经压缩的数据块的大小的压缩比、以及任何其他合适的压缩指标。在本发明的一个实施例中,数据选择器325和压缩引擎310一起被组合到单个模块中。在本发明的一个实施例中,压缩引擎310是使用无损数据压缩算法的基于硬件的压缩引擎。这允许在解压阶段期间从经压缩的数据重构源自原始数据305的最初数据。无损数据压缩算法包括但不限于:Lempel-Ziv(LZ)类无损数据压缩算法——其包括但不限于LZ77、LZ78,、LZSS、LZW及其变体,以及任何其他现有已知或在将来发现的合适的通用无损数据压缩算法。
加密/加扰模块330对来自多路复用器320的输出进行加密和/或加扰,并将经加密和/或经加扰的输出发送到存储器控制器340。在本发明的一个实施例中,存储器控制器340将经加密和/或经加扰的输出写入到存储器模块0-3、240、242、244和246。在本发明的另一实施例中,存储器控制器240可任选地编组经压缩的原始数据块,并将其写入到存储器模块0-3240、242、244和246作为连续存储器页。存储器页的大小被设置为,但不限于,4千字节或任何其他合适的大小。在本发明的另一实施例中,存储器控制器340将经压缩的原始数据块写回到缓冲器220,并在随后发出写入命令或操作以将经压缩的原始数据块从缓冲器220直接写入存储器模块0-3240、242、244和246。
在本发明的一个实施例中,存储器控制器340保持对被写入到存储器模块0-3、240、242、244和246的每个数据块的压缩状态的跟踪。存储器控制器340通过设置与特定数据块相关联的令牌以指示此特定数据块是否已被压缩来保持对此特定数据块的压缩状态的跟踪。令牌包括但不限于一个或多个比特。在本发明的一个实施例中,令牌具有32比特,这些比特被用来确定特定数据块被压缩还是未被压缩。
例如,在本发明的一个实施例中,存储器控制器340对于被写入存储器模块0-3、240、242、244和246中的每个数据块,将比特写入令牌中。令牌中与每个数据块相关联的比特在数据块已被压缩的情况下被设置为逻辑1,而在数据块尚未被压缩的情况下被设置为逻辑0。相关领域普通技术人员将容易理解,可使用其他跟踪数据块的压缩状态的方法,而不影响本发明的施行。
图3B例示了根据本发明的一个实施例的控制器230的框图360。出于清楚例示起见,参照图2和3A来讨论图3B。在本发明的一个实施例中,控制器230具有从存储器模块0-3240、242、244和246接收数据的存储器控制器340。存储器控制器340将接收到的数据发送到解密/解扰模块370。
解密/解扰模块370对从存储器控制器340接收到的数据进行解密和/或解扰,并将经解密和/或经解扰的数据发送到解压缩引擎380和多路复用器390。在本发明的一个实施例中,解压缩引擎380使用与压缩引擎310相同的无损数据压缩算法。
数据选择器385读取与接收到的数据相关联的令牌384,以确定接收到的数据是否已被压缩。如果与接收到的数据相关联的令牌指示接收到的数据已被压缩,则数据选择器385向解压缩引擎380发送信号以对接收到的数据进行解压缩,并向多路复用器390发送信号以选择来自解压引擎380的输出作为要发送到主机接口模块210和/或缓冲器220的数据。
如果与接收到的数据相关联的令牌指示接收到的数据还未被压缩,则数据选择器385向解压缩引擎370发送信号以对接收到的数据进行解压缩,并向多路复用器390发送信号以选择来自解密/解扰引擎370的输出作为要发送到主机接口模块210和/或缓冲器220的数据。在本发明的一个实施例中,数据选择器385和多路复用器390被集成到解压缩引擎380。图3A和3B中例示的控制器230的配置并不意味着进行限制,并且控制器230的配置的其他变形也可用,而不影响本发明的施行。
图4例示了根据本发明的一个实施例的存储在NAND闪存中的经压缩数据的框图400。出于清楚例示起见,参照图1和3A来讨论图4。在本发明的一个实施例中,控制器230接收扇区0-7112、114、116、118、122、124、126和128作为来自主机的要被存储在存储器模块0-3240、242、244和246中的原始数据305。在本发明的一个实施例中,压缩引擎310读取四个数据扇区作为单个数据块,即,扇区0-3112、114、116和118被读取作为单个数据块,而扇区4-7122、124、126和128被读取作为另一单个数据块。
压缩引擎310对由扇区0-3112、114、116和118所构成的数据块进行压缩,并确定该数据块是否被压缩到低于一阈值。假定由扇区0-3112、114、116和118所构成的数据块被压缩到低于阈值,则数据选择器325向多路复用器320发送信号以选择经压缩的扇区0-3112、114、116和118作为多路复用器320的输入。
在本发明的一个实施例中,经压缩的扇区0-3112、114、116和118按需由加密/加扰模块330来加密和/或加扰,并且存储器控制器340将经经压缩的扇区0-3112、114、116和118写入到NAND闪存作为经压缩的扇区0-3412。存储器控制器340使用ECC算法来计算经压缩的扇区0-3412的ECC校验字节,并将计算出的ECC校验字节作为ECC0校验字节420写入到NAND闪存中。ECC算法包括但不限于Hamming算法、Reed-Solomon算法、Bose-Chaudhuri-Hocquenghem(BCH)算法、低密度奇偶校验(LDPC)码等。
经压缩的扇区4-7422和ECC1校验字节430以与经压缩的扇区0-3412和ECC0校验字节420类似的方式来生成,并且在本文中无需进行描述。相关领域普通技术人员将容易理解经压缩的扇区4-7422和ECC1校验字节430是如何生成的。
通过压缩扇区0-3112、114、116和118以及扇区4-7122、124、126和128,需要较少的存储器空间,并且额外节约区域432例示了NAND闪存中节省的存储器区域。在本发明的一个实施例中,额外节约区域432可被用来提升SSD202的性能。在本发明的一个实施例中,SSD202的性能得以提升,因为其需要较少的功率来写入经压缩的扇区0-3412和扇区4-7422,并且SSD202的存储器带宽得以增加。另外,SSD202的性能得以提升,因为由于需要更少的存储器区域来存储经压缩的扇区0-3412和扇区4-7422,SSD202的写入放大(writeamplification)被减小,写入放大即写入数据块的额外写入操作。另外,SSD202的性能也得以提升,因为更大的混洗(shuffle)区变得可用且SSD202无需四处移动数据来创建混洗区以便能继续写入存储器模块0-3240、242、244和246。
图5例示了根据本发明的一个实施例的存储在NAND闪存中的经压缩数据的框图500。在本发明的一个实施例中,存储器控制器340使用ECC算法来计算经压缩的扇区0-3512和扇区4-7522两者的ECC校验字节,并将计算出的ECC校验字节作为ECC校验字节530写入到NAND闪存中。额外节约区域540例示了在NAND闪存中节省的存储器区域。在本发明的一个实施例中,存储器控制器340将其他经压缩或未经压缩的扇区写入额外节约区域540中。
图6例示了根据本发明的一个实施例的经压缩扇区0-3612和已知数据暂记区622的框图600。
出于清楚例示起见,参照图1B和3A来讨论图6。在本发明的一个实施例中,现有技术NAND闪存页160的扇区0-3162、164、166和168被压缩并被存储为经压缩的扇区0-3612。未经压缩的扇区0-3610的大小例示了存储现有技术NAND闪存页160的扇区0-3162、164、166和168所需的大小。
当现有技术NAND闪存页160的扇区0-3162、164、166和168被压缩时,其创建额外节约区域620。在本发明的一个实施例中,用已知数据暂记区622填满额外节约区域620。例如,在本发明的一个实施例中,已知数据暂记区622具有信息和/或数据的重复序列或模式。在本发明的一个实施例中,已知数据暂记区622是重复序列1011b。相关领域普通技术人员将容易理解,其他数据序列也可被用作已知数据暂记区,而不影响本发明的施行。
存储器控制器340计算经压缩的扇区0-3612和已知数据暂记区622的ECC,并添加计算出的ECC校验字节作为ECC校验字节630。在本发明的一个实施例中,通过将已知数据暂记区622追加或添加到经压缩的扇区0-3612,ECC校验字节630的强度大于现有技术NAND闪存页160的ECC0校验字节170的强度。这是因为ECC校验字节630有效地保护经压缩的扇区0-3612的较小的有效载荷大小,并且已知数据暂记区622允许通过检查来修复差错,并且因此ECC校验字节630得以加强。
在本发明的一个实施例中,SSD202通过调节已知数据暂记区622的大小来动态地调节或选择被存储在存储器模块0-3240、242、244和246中的数据的纠错码(ECC)的强度。已知数据暂记区622的大小是可变的,并且取决于所达成的扇区0-3162、164、166和168的压缩率。在本发明的一个实施例中,SSD202基于与将存储数据块的存储器模块中的位置相关联的比特差错率(BER)来动态地调节数据块的ECC的强度。存储器模块中的位置包括但不限于:存储器模块中的字线(wordline)以及存储器模块中的任何其他形式的存储器分配或分布。
例如,在本发明的一个实施例中,与字线相关联的BER可能随着存储器模块的字线的数量级而增加,即,与较低数量级的字线相比,较高数量级的字线可具有最差BER。在本发明的一个实施例中,SSD202基于其中将存储数据或码字的任何存储器位置的BER特性来主动地匹配任何数据或码字的ECC强度。在本发明的一个实施例中,SSD202将更强的ECC用于被存储在更高数量级字线中的数据,而将减弱的ECC用于被存储在较低数量级字线中的数据。由此,在本发明的一个实施例中,SSD202无需使用适用于最差BER情形的公共ECC强度,并且可使用灵活ECC选择方案来增大SSD202的可靠性。
在本发明的另一实施例中,对存储器模块0-3240、242、244和246的任何物理带或区域所执行的擦除操作的数目由SSD202来跟踪。在本发明的一个实施例中,SSD202基于对其中将存储数据或码字的特定存储器位置的擦除计数来主动地匹配任何数据或码字的ECC强度。例如,在本发明的一个实施例中,SSD202对将被存储在具有较高擦除计数的存储器位置中的数据使用较强ECC强度,而对将被存储在具有较低擦除计数的存储器位置中的数据使用较弱ECC强度。相关领域普通技术人员将容易理解,其他因素可用来确定数据的所需ECC强度,并且可使用这些其他因素而不影响本发明的施行。
图7例示了根据本发明的一个实施例的两个NAND闪存页710和760的框图700。出于清楚例示起见,参照图1B来讨论图7。NAND闪存页710和760例示了通过压缩现有技术NAND闪存页160的扇区0-3112、114、116和118所形成的经压缩的数据扇区0-3的两个不同实施例。NAND闪存页710例示了经压缩的数据扇区0-3被划分为两个码字,即,经压缩的扇区0-3(码字1)712和经压缩的扇区0-3(码字2)722。
在本发明的一个实施例中,码字1712和码字2722分别具有ECC0校验字节720以及ECC1校验字节730。在本发明的一个实施例中,与现有技术NAND闪存页160相比,NAND闪存页710具有更强的ECC强度。这时因为现有技术NAND闪存页160的ECC校验字节170保护具有更大比特数目的未经压缩的扇区0至3162、164、166和170。NAND闪存页710的ECC0校验字节720和ECC1校验字节730中的每一个保护具有较小比特数目的未经压缩的数据扇区0-3的码字。
NAND闪存页760例示了经压缩的数据扇区0-3被划分为四个码字,即,经压缩的扇区0-3(码字1)772、经压缩的扇区0-3(码字2)774、经压缩的扇区0-3(码字3)776和经压缩的扇区0-3(码字4)778。在本发明的一个实施例中,码字1-4772、774、776和778分别具有ECC0-3校验字节780、782、784和786。在本发明的一个实施例中,与现有技术NAND闪存页160相比,NAND闪存页760具有更强的ECC强度,因为ECC0-3校验字节780、782、784和786中的每一个保护较小的数据组块。
在本发明的一个实施例中,NAND闪存页710和760例示了SSD202如何通过调节经压缩的数据的分区或区划的数目(即,调节码字的数目)来动态地调节或选择被存储在存储器模块0-3240、242、244和246中的数据的纠错码(ECC)的强度。例如,在本发明的一个实施例中,如果需要更强的ECC强度,则可选择达成较高压缩率的压缩算法来增加因压缩而产生的额外节约区域。额外节约区域容纳更大数目的码字和ECC校验字节,这增加了经压缩数据的有效ECC强度。
图8例示了根据本发明的一个实施例的NAND闪存页810的框图800。出于清楚例示起见,参照图1B来讨论图8。在本发明的一个实施例中,现有技术NAND闪存页160的未经压缩的扇区0至3162、164、166和170被压缩并被划分成两个码字,即,经压缩的扇区0-3(码字1)812和经压缩的扇区0-3(码字2)822。
在本发明的一个实施例中,向码字812和822中的每一个分别追加已知数据暂记区814和824。在本发明的一个实施例中,已知数据暂记区814和824具有相同的已知或预设数据。在本发明的其他实施例中,已知数据暂记区814和824具有不同的已知或预设数据。计算码字812和已知数据暂记区814的ECC并添加计算出的ECC作为ECC0校验字节820。类似地,计算码字822和已知数据暂记区824的ECC并添加计算出的ECC作为ECC1校验字节830。
NAND闪存页810例示了SSD202如何通过调节经压缩的数据的分区的数目来动态地调节或选择被存储在存储器模块0-3240、242、244和246中的数据的纠错码(ECC)的强度。在图8中例示的扇区的数目和已知数据暂记区的数目并不意味着进行限制,并且扇区和已知数据暂记区的数目的其他配置也可被使用,而不影响本发明的施行。
图9例示了根据本发明的一个实施例的NAND闪存页910的框图910。出于清楚例示起见,参照图1C来讨论图9。在本发明的一个实施例中,对码字1192、码字2194、和码字3196执行异或(XOR)操作以获得XOR码字920。XOR码字被存储在NAND闪存页910中的码字4198的位置中。计算XOR码字920的ECC并添加计算出的ECC作为ECC3校验字节926。
在本发明的一个实施例中,带有XOR保护的NAND闪存存储器页910允许对NAND闪存页910的单个读取操作,以从不可校正的EEC差错恢复。在本发明的一个实施例中,当SSD202在码字1-3192、194和196的一个中遭受到致命的或不可恢复的差错时,SSD202可使用XOR码字920来重新生成具有致命差错的码字。在本发明的一个实施例中,SSD202可通过读取单个NAND闪存页910来从码字中的致命差错恢复,即,页内XOR保护。
选择最后码字4198以被替换为XOR码字920并不意味着进行限制。在本发明的其他实施例中,选择不同的码字以被替换为XOR码字。例如,在本发明的一个实施例中,选择码字2194以被替换为XOR码字,该XOR码字是从对码字1192、码字3196和码字4198进行XOR操作而得到的。在本发明的一个实施例中,NAND页910中的XOR保护是在对现有技术NAND闪存页160的未经压缩的扇区0至3162、164、166和170的压缩获得可容纳一个或多个码字的大小的额外节约区域时执行的。
本文中描述的技术允许SSD202提升性能,并且通过压缩获得的额外节约区域不引发任何相关联的NAND区域成本。在本发明的一个实施例中,基于阈值的压缩技术通过减小跟踪任何给定块的状态所需的粒度来简化SSD202的簿记(bookkeeping)功能。
图10例示了根据本发明的一个实施例的用于实现本文中公开的方法的系统1000。系统1000包括但不限于:桌面计算机、膝上型计算机、上网本、笔记本计算机、个人数字助理(PDA)、服务器、工作站、蜂窝电话、移动计算设备、因特网设备或任何其他类型的计算设备。在另一实施例中,用于实现本文中公开的方法的系统1000可以是片上系统式(SOC)系统。
处理器1010具有用于执行系统1000的指令的处理核1012。处理核1012包括但不限于:用于取得指令的预取逻辑、用于解码指令的解码逻辑、用于执行指令的执行逻辑等。处理器1010具有用于高速缓存系统1000的指令和/或数据的高速缓存存储器1016。在本发明的另一实施例中,高速缓存存储器1016包括但不限于级1、级2和级3高速缓存存储器、或者处理器1010内的任何其他配置的高速缓存存储器。
存储器控制中枢(MCH)1014执行使得处理器1010能访问包括易失性存储器1032和/或非易失性存储器1034的存储器1030并与之进行通信。易失性存储器1032包括但不限于:同步动态随机访问存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)、和/或任何其他类型的随机存取存储器设备。非易失性存储器1034包括但不限于:NAND闪存、相变存储器(PCM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、或任何其他类型的非易失性存储器设备。
存储器1030存储将由处理器1010执行的信息和指令。存储器1030还可在处理器1010执行指令的同时存储临时变量或其他中间信息。芯片组1020经由点对点(PtP)接口1017和1022与处理器1010连接。芯片组1020使得处理器1010能连接至系统1000中的其他模块。在本发明的一个实施例中,接口1017和1022根据诸如快通互连(QPI)等PtP通信协议进行操作。芯片组1020连接至显示设备1040,该显示设备包括但不限于:液晶显示器(LCD)、阴极射线管(CRT)显示器、或任何其他形式的视觉显示设备。
另外,芯片组1020连接至一条或多条总线1050和1055,这些总线互联各个模块1074、1060、1062、1064和1066。如果总线速度或通信协议中存在失配,则总线1050和1055可经由总线桥1072互联在一起。芯片组1020与(但不限于)非易失性存储器1060、SSD202、键盘/鼠标1064和网络接口1066耦合。芯片组还可包括大容量存储设备,该大容量存储设备包括但不限于硬盘驱动器、通用串行闪存驱动器、或任何其他形式的计算机数据存储介质。
网络接口1066是通过使用任何类型的公知网络接口标准来实现的,这些标准包括但不限于:以太网接口、通用串行(USB)接口、外围组件互连(PCI)快速接口、无线接口和/或任何其他合适类型的接口。无线接口根据IEEE802.11标准及其相关系列、家庭插座AV(HomePlugAV:HPAV)、超宽带(UWB)、蓝牙、WiMax或任何其他形式的无线通信协议来操作,但不限于此。
虽然图10中所示的模块被描绘为系统1000内的分开的块,但是这些块中的一些块所执行的功能可被集成在单个半导体电路内,或者可使用两个或更多个分开的集成电路来实现。例如,尽管高速缓存存储器1016被描绘为处理器1010内的分开的块,但是高速缓存存储器1016各自可被集成到处理器核1012中。在本发明的另一实施例中,系统1000可包括一个以上的处理器/处理核。
本文中公开的方法可用硬件、软件、固件或其任何其他组合来实现。尽管描述了所公开的主题的实施例的示例,但是相关领域技术人员将容易理解,可替代地使用许多实现所公开的主题的方法。在之前的描述中,已描述了所公开的主题的各个方面。为了解释的目的,阐述了特定数量、材料和配置,以便提供对本主题的全面理解。然而,受益于本公开的相关领域技术人员显而易见的是本主题可在没有特定细节的情况下实现。在其他实例中,众所周知的特征、组件或模块为省去、简化、组合、或分割以免使本发明晦涩。
文本中所用的术语“可操作”意味着设备、系统、协议等在设备或系统处于掉电状态下能操作或适于操作其所需功能。所公开的主题的各个实施例可以以硬件、固件、软件、或其组合的方式来实现,并且可通过参考或结合诸如指令、功能、过程、数据结构、逻辑、应用程序、仿真的设计表示或格式、模拟、和设计制造之类的程序代码来描述,这些代码在被机器访问时导致机器执行任务、定义抽象数据类型或低层硬件上下文、或产生结果。
附图中所示的技术可以是通过使用存储在诸如通用计算机或计算设备上并在其上执行的代码和数据来实现的。此类计算设备通过使用机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和机器可读通信介质(例如,电、光、声或其它形式的传播信号,诸如载波、红外信号、数字信号等)来存储和传达(内部地以及通过网络与其他计算设备)代码和数据。
尽管已经参考所示实施例描述所公开的主题,但不打算以限制的含义解释本说明书。对所公开主题相关领域中的技术人员显而易见的所示实施例的各种修改以及本主题的其它实施例被认为落在所公开的主题的范围内。

Claims (10)

1.一种用于改进固态驱动器的性能和/或可靠性的装置,包括:
用于以下操作的逻辑:
压缩数据块;
确定所述数据块被压缩到低于一阈值;以及
响应于确定所述数据块被压缩到低于所述阈值,将所述经压缩的数据块写入一个或多个存储器模块中,
其中用已知数据暂记区填满通过压缩创建的额外节约区域,并且其中通过调节所述已知数据暂记区的大小来动态地调节所述数据块的纠错码(ECC)的强度。
2.如权利要求1所述的装置,其特征在于,所述逻辑还用于响应于确定所述数据块并没有被压缩到低于所述阈值,在没有压缩的情况下将所述数据块写入到一个或多个存储器模块中。
3.如权利要求1所述的装置,其特征在于,所述阈值是基于所述经压缩的数据块的大小、以及所述数据块的大小与所述经压缩的数据块的大小的比率中的至少一个。
4.如权利要求1所述的装置,其特征在于,所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于基于与所述一个或多个存储器模块中用来存储所述数据块的位置相关联的比特差错率(BER)以及用来存储所述数据块的物理区域的擦除计数中的至少一个来动态地调节所述数据块的所述纠错码(ECC)的所述强度。
5.如权利要求1所述的装置,其特征在于,所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:
将已知数据暂记区追加到所述经压缩的数据块,其中所述已知数据暂记区和所述经压缩的数据块的经组合的大小匹配于所述数据块的大小;
确定所述经压缩的数据块和所述已知数据暂记区的纠错码(ECC)校验字节;以及
将所确定的纠错码(ECC)校验字节追加到所述经压缩的数据块和所述已知数据暂记区。
6.如权利要求1所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:
为所述多个码字中的每一个确定多个纠错码(ECC)校验字节中相应的一个;以及
将所确定的相应的一个纠错码(ECC)校验字节追加到所述多个码字中的每一个。
7.如权利要求1所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:
将已知数据暂记区中相应的一个追加到所述多个码字中的每一个;
为所述多个码字中的每一个以及所述多个已知数据暂记区中相应每一个确定多个纠错码(ECC)校验字节中相应的一个;以及
将所确定的相应的一个纠错码(ECC)校验字节追加到每一个码字以及相应每一个已知数据暂记区。
8.如权利要求1所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的纠错码(ECC)的强度的逻辑用于:
选择所述多个码字中的一个;
对除所选码字之外的所有码字执行异或(XOR)操作以获得异或(XOR)码字;以及
用所述异或(XOR)码字来代替所选码字。
9.如权利要求1所述的装置,其特征在于,所述装置是NAND闪存固态驱动器(SSD)控制器。
10.如权利要求1所述的装置,其特征在于,所述装置至少部分地符合开放NAND闪速接口(ONFI)协议。
CN201180027606.9A 2010-06-29 2011-06-28 用于改进固态驱动器的性能和/或可靠性的方法和系统 Active CN102934093B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/825,858 2010-06-29
US12/825,858 US8533550B2 (en) 2010-06-29 2010-06-29 Method and system to improve the performance and/or reliability of a solid-state drive
PCT/US2011/042222 WO2012006106A2 (en) 2010-06-29 2011-06-28 Method and system to improve the performance and/or reliability of a solid-state drive

Publications (2)

Publication Number Publication Date
CN102934093A CN102934093A (zh) 2013-02-13
CN102934093B true CN102934093B (zh) 2015-11-25

Family

ID=45353773

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180027606.9A Active CN102934093B (zh) 2010-06-29 2011-06-28 用于改进固态驱动器的性能和/或可靠性的方法和系统

Country Status (5)

Country Link
US (3) US8533550B2 (zh)
EP (1) EP2588961B1 (zh)
KR (1) KR101441228B1 (zh)
CN (1) CN102934093B (zh)
WO (1) WO2012006106A2 (zh)

Families Citing this family (117)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288712A1 (en) * 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8438455B2 (en) * 2008-12-31 2013-05-07 Intel Corporation Error correction in a solid state disk
US20130047056A1 (en) * 2009-05-05 2013-02-21 Lite-On It Corporation Flash memory device with rectifiable redundancy and method of controlling the same
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8327226B2 (en) * 2010-02-03 2012-12-04 Seagate Technology Llc Adjustable error correction code length in an electrical storage device
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
US8356137B2 (en) * 2010-02-26 2013-01-15 Apple Inc. Data storage scheme for non-volatile memories based on data priority
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive
TWI455144B (zh) * 2010-07-22 2014-10-01 Silicon Motion Inc 使用於快閃記憶體的控制方法與控制器
US8458568B2 (en) * 2010-09-24 2013-06-04 International Business Machines Corporation Systems and methods for memory devices
KR101606718B1 (ko) * 2010-10-27 2016-03-28 엘에스아이 코포레이션 플래시 메모리 기반 데이터 저장을 위한 적응적 ecc 기술들
TWI474329B (zh) * 2010-11-15 2015-02-21 Silicon Motion Inc 提昇錯誤更正能力之方法以及記憶裝置及控制器
JP2012113343A (ja) * 2010-11-19 2012-06-14 Toshiba Corp 記憶装置
TWI459396B (zh) * 2010-12-30 2014-11-01 Phison Electronics Corp 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
TWI459197B (zh) * 2011-04-21 2014-11-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP2014513484A (ja) * 2011-04-29 2014-05-29 エルエスアイ コーポレーション 暗号化トランスポート・ソリッドステート・ディスク・コントローラ
US8725933B2 (en) * 2011-07-01 2014-05-13 Intel Corporation Method to detect uncompressible data in mass storage device
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
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
US8713357B1 (en) 2011-09-06 2014-04-29 Western Digital Technologies, Inc. Systems and methods for detailed error reporting in data storage systems
KR20130027253A (ko) * 2011-09-07 2013-03-15 삼성전자주식회사 데이터의 압축 방법
EP2801032B1 (en) * 2012-01-04 2020-01-01 Intel Corporation Bimodal functionality between coherent link and memory expansion
KR101862341B1 (ko) * 2012-01-09 2018-05-30 삼성전자주식회사 데이터 압축 기능을 갖는 데이터 저장 장치
JP5687639B2 (ja) * 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
US20140122973A1 (en) * 2012-03-12 2014-05-01 Ravi H. Motwani Distributed codeword portions
US9053008B1 (en) 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
KR101991437B1 (ko) * 2012-08-30 2019-06-20 에스케이하이닉스 주식회사 반도체 메모리 장치 및 그의 동작방법
CN102915767B (zh) * 2012-09-04 2013-12-25 邹粤林 利用数据可压缩性提高固态硬盘响应速度的方法、装置及系统
JP2014052899A (ja) * 2012-09-07 2014-03-20 Toshiba Corp メモリシステムとその制御方法
US20140089561A1 (en) * 2012-09-26 2014-03-27 Kiran Pangal Techniques Associated with Protecting System Critical Data Written to Non-Volatile Memory
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
KR102081980B1 (ko) * 2012-10-08 2020-02-27 삼성전자 주식회사 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
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
CN102929740A (zh) * 2012-10-25 2013-02-13 北京星网锐捷网络技术有限公司 检测存储设备坏块的方法和装置
US9098400B2 (en) 2012-10-31 2015-08-04 International Business Machines Corporation Dynamic tuning of internal parameters for solid-state disk based on workload access patterns
US20140229655A1 (en) * 2013-02-08 2014-08-14 Seagate Technology Llc Storing Error Correction Code (ECC) Data In a Multi-Tier Memory Structure
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9088303B2 (en) 2013-02-28 2015-07-21 Micron Technology, Inc. Codewords that span pages of memory
US9122399B2 (en) 2013-04-18 2015-09-01 Hitachi, Ltd. Storage system and storage control method
CN103677658A (zh) * 2013-07-19 2014-03-26 记忆科技(深圳)有限公司 固态硬盘控制器及固态硬盘的数据处理方法
US10146435B2 (en) 2013-07-31 2018-12-04 Hitachi, Ltd. Storage system and data write method
JPWO2015029230A1 (ja) * 2013-08-30 2017-03-02 株式会社日立製作所 記憶装置及びデータ制御方法
US20150067436A1 (en) * 2013-09-03 2015-03-05 Sandisk Technologies Inc. Nonvolatile Memory System Compression
US9548762B2 (en) * 2013-10-07 2017-01-17 Agency For Science, Technology And Research Normalization factor adaptation for LDPC decoding for hard disk drive systems
US9323609B2 (en) * 2013-11-15 2016-04-26 Intel Corporation Data storage and variable length error correction information
KR102078853B1 (ko) * 2013-11-27 2020-02-18 삼성전자 주식회사 메모리 시스템, 호스트 시스템 및 메모리 시스템에서의 라이트 동작 수행 방법
US10067829B2 (en) 2013-12-13 2018-09-04 Intel Corporation Managing redundancy information in a non-volatile memory
US9262268B2 (en) * 2013-12-20 2016-02-16 Seagate Technology Llc Method to distribute user data and error correction data over different page types by leveraging error rate variations
US9336401B2 (en) * 2014-01-20 2016-05-10 International Business Machines Corporation Implementing enhanced security with storing data in DRAMs
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
US9804961B2 (en) 2014-03-21 2017-10-31 Aupera Technologies, Inc. Flash memory file system and method using different types of storage media
US9606870B1 (en) 2014-03-31 2017-03-28 EMC IP Holding Company LLC Data reduction techniques in a flash-based key/value cluster storage
TWI540582B (zh) * 2014-07-10 2016-07-01 群聯電子股份有限公司 資料管理方法、記憶體控制電路單元以及記憶體儲存裝置
US9720821B2 (en) * 2014-09-17 2017-08-01 Storart Technology Co. Ltd. Adaptive compression data storing method for non-volatile memories and system using the same
TWI506634B (zh) * 2014-11-06 2015-11-01 Phison Electronics Corp 資料存取方法、記憶體控制電路單元及記憶體儲存裝置
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
CN105653391B (zh) * 2014-11-13 2018-11-02 群联电子股份有限公司 数据存取方法、存储器控制电路单元及存储器储存装置
WO2016090621A1 (zh) * 2014-12-12 2016-06-16 华为技术有限公司 数据存储的方法和装置
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
CN105808151B (zh) 2014-12-29 2019-09-27 华为技术有限公司 固态硬盘存储设备和固态硬盘存储设备的数据存取方法
US9710324B2 (en) 2015-02-03 2017-07-18 Qualcomm Incorporated Dual in-line memory modules (DIMMs) supporting storage of a data indicator(s) in an error correcting code (ECC) storage unit dedicated to storing an ECC
US9959067B2 (en) * 2015-02-04 2018-05-01 Sandisk Technologies Llc Memory block allocation by block health
US10275310B2 (en) 2015-03-09 2019-04-30 Western Digital Technologies, Inc. Updating exclusive-or parity data
CN104881370B (zh) * 2015-05-11 2018-01-12 中国人民解放军国防科学技术大学 协同使用纠删码和纠错码的可靠闪存存储系统构建方法
US9552384B2 (en) 2015-06-19 2017-01-24 HGST Netherlands B.V. Apparatus and method for single pass entropy detection on data transfer
US10152389B2 (en) 2015-06-19 2018-12-11 Western Digital Technologies, Inc. Apparatus and method for inline compression and deduplication
US9678911B2 (en) 2015-11-12 2017-06-13 Aupera Technologies, Inc. System for distributed computing and storage
US10133625B2 (en) 2015-08-11 2018-11-20 Western Digital Technologies, Inc. Storing parity data separate from protected data
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
CN105280239B (zh) * 2015-10-22 2016-09-07 湖南国科微电子股份有限公司 一种动态实现固态硬盘ecc校验码的方法和装置
US9792224B2 (en) 2015-10-23 2017-10-17 Intel Corporation Reducing latency by persisting data relationships in relation to corresponding data in persistent memory
US10083720B2 (en) 2015-11-06 2018-09-25 Aupera Technologies, Inc. Method and system for video data stream storage
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10223198B2 (en) 2016-02-18 2019-03-05 Micron Technology, Inc. Error rate reduction
US9971523B2 (en) * 2016-03-10 2018-05-15 Toshiba Memory Corporation Memory controller with data compression and padding features, method of controlling nonvolatile memory and memory system
US10587526B2 (en) * 2016-05-30 2020-03-10 Walmart Apollo, Llc Federated scheme for coordinating throttled network data transfer in a multi-host scenario
JP6725120B2 (ja) * 2016-06-24 2020-07-15 ホアウェイ・テクノロジーズ・カンパニー・リミテッド データ処理方法、記憶装置、ソリッドステートディスク及び記憶システム
US10013200B1 (en) * 2016-06-29 2018-07-03 EMC IP Holding Company LLC Early compression prediction in a storage system with granular block sizes
KR102525061B1 (ko) * 2016-07-19 2023-04-21 에스케이하이닉스 주식회사 입력 데이터를 압축하여 저장하는 데이터 저장 장치
US10095424B2 (en) 2016-08-04 2018-10-09 Intel Corporation Apparatus and method for programming non-volatile memory using a multi-cell storage cell group
US10043573B2 (en) 2016-08-04 2018-08-07 Intel Corporation Apparatus and method for endurance friendly programming using lower voltage thresholds
US10236917B2 (en) * 2016-09-15 2019-03-19 Qualcomm Incorporated Providing memory bandwidth compression in chipkill-correct memory architectures
US10083742B2 (en) 2016-09-26 2018-09-25 Intel Corporation Method and apparatus for programming non-volatile memory using a multi-cell storage cell group to provide error location information for retention errors
CN108076124B (zh) * 2016-11-10 2020-05-26 中国科学院声学研究所 一种面向高速http网络采集数据的压缩方法
US10268538B2 (en) * 2016-11-28 2019-04-23 Alibaba Group Holding Limited Efficient and enhanced distributed storage clusters
WO2018119741A1 (zh) * 2016-12-28 2018-07-05 华为技术有限公司 数据访问方法及闪存设备
US10338841B2 (en) 2017-06-27 2019-07-02 Western Digital Technologies, Inc. Block management for data streams
US10644727B2 (en) * 2018-01-11 2020-05-05 Western Digital Technologies, Inc. Code rate switching mechanism for flash memory
CN110147200A (zh) * 2018-02-13 2019-08-20 矽创电子股份有限公司 闪存的控制器及控制方法
US20190286365A1 (en) * 2018-03-14 2019-09-19 Q-Silicon Technologies Corp. Flash memory controller and method for controlling flash memory
US11099995B2 (en) 2018-03-28 2021-08-24 Intel Corporation Techniques for prefetching data to a first level of memory of a hierarchical arrangement of memory
TWI673958B (zh) * 2018-08-30 2019-10-01 英屬開曼群島商捷鼎創新股份有限公司 基於抽樣猜測之資料壓縮方法
US10762979B2 (en) 2018-10-29 2020-09-01 International Business Machines Corporation Data retention in storage drives
US10824506B1 (en) * 2018-12-10 2020-11-03 Amazon Technologies, Inc. Memory controller with parallel error checking and decompression
US11150844B2 (en) 2019-02-21 2021-10-19 Micron Technology, Inc. Reflow endurance improvements in triple-level cell NAND flash
US10908996B2 (en) 2019-02-22 2021-02-02 Intel Corporation Distribution of a codeword across individual storage units to reduce the bit error rate
US11599644B2 (en) 2019-05-17 2023-03-07 Walmart Apollo, Llc Blocking insecure code with locking
CN112053735B (zh) 2019-06-05 2023-03-28 建兴储存科技(广州)有限公司 固态存储装置的重复数据处理方法
CN112099725A (zh) * 2019-06-17 2020-12-18 华为技术有限公司 一种数据处理方法、装置及计算机可读存储介质
CN110868222B (zh) * 2019-11-29 2023-12-15 中国人民解放军战略支援部队信息工程大学 Lzss压缩数据误码检测方法及装置
US11307804B2 (en) 2019-12-16 2022-04-19 Samsung Electronics Co., Ltd. Enhanced SSD reliability
US12009842B2 (en) * 2019-12-20 2024-06-11 Intel Corporation Error correcting code circuitry compatible with multi-width interfaces
US11243711B2 (en) 2020-02-05 2022-02-08 Micron Technology, Inc. Controlling firmware storage density based on temperature detection
US11144452B2 (en) 2020-02-05 2021-10-12 Micron Technology, Inc. Temperature-based data storage processing
US11599414B2 (en) * 2021-03-29 2023-03-07 Micron Technology, Inc. Compression-based data operations in a memory device
US11853607B2 (en) 2021-12-22 2023-12-26 Western Digital Technologies, Inc. Optimizing flash memory utilization for NVMe KV pair storage
US11817883B2 (en) 2021-12-27 2023-11-14 Western Digital Technologies, Inc. Variable length ECC code according to value length in NVMe key value pair devices
US11733876B2 (en) 2022-01-05 2023-08-22 Western Digital Technologies, Inc. Content aware decoding in KV devices
CN115562902A (zh) * 2022-01-11 2023-01-03 荣耀终端有限公司 一种存储区域的编码方法、装置及相关设备
US20230317195A1 (en) * 2022-04-04 2023-10-05 Micron Technology, Inc. Error Correction in a Memory Device having an Error Correction Code of a Predetermined Code Rate
CN115019870A (zh) * 2022-05-18 2022-09-06 上海颖存半导体科技有限公司 Nand Flash页面数据纠错方法及系统
TWI836610B (zh) 2022-09-19 2024-03-21 慧榮科技股份有限公司 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置
CN116343890B (zh) * 2023-05-31 2023-07-25 深圳大普微电子科技有限公司 纠错单元管理方法、存储控制芯片及闪存设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1499532A (zh) * 2002-10-28 2004-05-26 非易失性存储器系统内纠错码的混合实现
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4546342A (en) * 1983-12-14 1985-10-08 Digital Recording Research Limited Partnership Data compression method and apparatus
US5001418A (en) * 1989-12-06 1991-03-19 Posse Kenneth E Method for compressing data-vectors for a circuit board testing machine
US5247638A (en) * 1990-06-18 1993-09-21 Storage Technology Corporation Apparatus for compressing data in a dynamically mapped virtual data storage subsystem
US6324621B2 (en) * 1998-06-10 2001-11-27 International Business Machines Corporation Data caching with a partially compressed cache
US6583887B1 (en) * 1999-02-26 2003-06-24 Hewlett-Packard Development Company, L.P. Method and apparatus for data compression
FR2806177B1 (fr) * 2000-03-13 2003-10-03 Mitsubishi Electric Inf Tech Procede de transmission numerique de type a codage correcteur d'erreurs
GB0103245D0 (en) * 2001-02-09 2001-03-28 Radioscape Ltd Method of inserting additional data into a compressed signal
US7149909B2 (en) 2002-05-09 2006-12-12 Intel Corporation Power management for an integrated graphics device
JP3857611B2 (ja) * 2002-05-20 2006-12-13 富士通株式会社 データ圧縮プログラム、データ圧縮方法、およびデータ圧縮装置
US7117421B1 (en) * 2002-05-31 2006-10-03 Nvidia Corporation Transparent error correction code memory system and method
CN100504915C (zh) * 2002-07-29 2009-06-24 高通股份有限公司 数字图像编码
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US7559004B1 (en) * 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
JP2006026228A (ja) 2004-07-20 2006-02-02 Samii Kk 弾球遊技機
US8402325B2 (en) * 2004-08-02 2013-03-19 St-Ericsson Sa Data storage and replay apparatus
US7243191B2 (en) 2004-08-31 2007-07-10 Intel Corporation Compressing data in a cache memory
JP2006262288A (ja) * 2005-03-18 2006-09-28 Nec Corp 映像データの配信サーバおよび映像データ配信方法
US7688835B2 (en) * 2006-03-15 2010-03-30 Motorola, Inc. Dynamic wireless backhaul
US20070291571A1 (en) * 2006-06-08 2007-12-20 Intel Corporation Increasing the battery life of a mobile computing system in a reduced power state through memory compression
US7886034B1 (en) * 2006-09-27 2011-02-08 Symantec Corporation Adaptive liveness management for robust and efficient peer-to-peer storage
US8300563B2 (en) * 2006-09-29 2012-10-30 Intel Corporation Aggregated transmission in WLAN systems with FEC MPDUs
US7920700B2 (en) * 2006-10-19 2011-04-05 Oracle International Corporation System and method for data encryption
US9465823B2 (en) * 2006-10-19 2016-10-11 Oracle International Corporation System and method for data de-duplication
US8635194B2 (en) * 2006-10-19 2014-01-21 Oracle International Corporation System and method for data compression
US8122323B2 (en) * 2007-03-08 2012-02-21 Intel Corporation Method, apparatus, and system for dynamic ECC code rate adjustment
US20090125790A1 (en) * 2007-11-13 2009-05-14 Mcm Portfolio Llc Method and Apparatus of Automatically Selecting Error Correction Algorithms by a NAND Flash Controller
KR101457561B1 (ko) * 2008-01-29 2014-11-03 삼성전자주식회사 데이터 전송 방법 및 장치와 작업 수행 방법 및 장치
US8341501B2 (en) * 2009-04-30 2012-12-25 International Business Machines Corporation Adaptive endurance coding of non-volatile memories
US8706272B2 (en) * 2009-08-14 2014-04-22 Apple Inc. Adaptive encoding and compression of audio broadcast data
US20110252289A1 (en) * 2010-04-08 2011-10-13 Seagate Technology Llc Adjusting storage device parameters based on reliability sensing
US8892980B2 (en) * 2010-06-15 2014-11-18 Fusion-Io, Inc. Apparatus, system, and method for providing error correction
US8533550B2 (en) 2010-06-29 2013-09-10 Intel Corporation Method and system to improve the performance and/or reliability of a solid-state drive

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6961890B2 (en) * 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
CN1499532A (zh) * 2002-10-28 2004-05-26 非易失性存储器系统内纠错码的混合实现
US7188227B2 (en) * 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Exploring Phase Change Memory and 3D Die-Stacking for Power/Thermal Friendly, Fast and Durable Memory Architectures;Wangyuan Zhang等;《International Conference on Parallel Architectures and Compilation Techniques》;20090916;第101-112页 *

Also Published As

Publication number Publication date
KR20130025415A (ko) 2013-03-11
EP2588961B1 (en) 2015-09-30
US9317362B2 (en) 2016-04-19
US20140337689A1 (en) 2014-11-13
US8924816B2 (en) 2014-12-30
US20130326313A1 (en) 2013-12-05
WO2012006106A2 (en) 2012-01-12
EP2588961A2 (en) 2013-05-08
US8533550B2 (en) 2013-09-10
EP2588961A4 (en) 2014-09-03
WO2012006106A3 (en) 2012-04-05
KR101441228B1 (ko) 2014-09-17
CN102934093A (zh) 2013-02-13
US20110320915A1 (en) 2011-12-29

Similar Documents

Publication Publication Date Title
CN102934093B (zh) 用于改进固态驱动器的性能和/或可靠性的方法和系统
US9673840B2 (en) Turbo product codes for NAND flash
JP5698260B2 (ja) メモリ装置における制御データの誤り訂正システムおよび方法
US8307261B2 (en) Non-volatile memory management method
KR101759658B1 (ko) 메모리 장치 및 메모리 시스템
KR101625273B1 (ko) 더 짧은 블록 길이를 이용하여 더 긴 선형 블록 코드워드를 생성 및 디코딩하기 위한 장치, 시스템 및 방법
US9798622B2 (en) Apparatus and method for increasing resilience to raw bit error rate
CN104115126A (zh) 使用代数码的多阶段ecc编码
US20160062831A1 (en) Error correction code for unidirectional memory
CN102110481A (zh) 具有ecc电路的半导体存储系统及其控制方法
US20120102295A1 (en) Data compression and encoding in a memory system
US20160239666A1 (en) Non-deterministic encryption
CN110032331B (zh) 用于通过绕过编码和解码来提高备份效率的方法和系统
JP6975047B2 (ja) ライトワンスメモリコードのエラー訂正コード管理
KR102666852B1 (ko) 컨트롤러, 반도체 메모리 시스템 및 그의 동작 방법
US20160283325A1 (en) Errors and erasures decoding from multiple memory devices
US9876511B2 (en) Memory system and memory control method
US10079612B1 (en) Distributed erasure coding pool deployed in hyperscale infrastructure
US20200264951A1 (en) Memory system and method of controlling non-volatile memory
CN108170554B (zh) 一种nand的数据编码方法和装置
US9906241B2 (en) Apparatus and method for turbo product codes
KR102696725B1 (ko) Nand 플래시용 터보 프로덕트 코드
CN111406282A (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