CN102934093A - 用于改进固态驱动器的性能和/或可靠性的方法和系统 - Google Patents
用于改进固态驱动器的性能和/或可靠性的方法和系统 Download PDFInfo
- Publication number
- CN102934093A CN102934093A CN2011800276069A CN201180027606A CN102934093A CN 102934093 A CN102934093 A CN 102934093A CN 2011800276069 A CN2011800276069 A CN 2011800276069A CN 201180027606 A CN201180027606 A CN 201180027606A CN 102934093 A CN102934093 A CN 102934093A
- Authority
- CN
- China
- Prior art keywords
- data
- ecc
- compressed
- code word
- data block
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- 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/1044—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 with specific ECC/EDC distribution
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/11—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
- H03M13/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1148—Structural properties of the code parity-check or generator matrix
- H03M13/116—Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
- H03M13/1162—Array based LDPC codes, e.g. array 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
- 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/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/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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon 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/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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] 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/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/13—Linear codes
- H03M13/19—Single 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(ECC 0)校验字节120所保护的扇区0 112、扇区1 114、扇区2 116、以及扇区3 118。类似地,ECC 1校验字节130保护现有技术NAND闪存页110的扇区4 122、扇区5 124、扇区6 126、和扇区7 128。
取决于每个扇区中的差错的严重性,ECC 0校验字节120和ECC 1校验字节130可便于对扇区中的差错的检测,并且允许对扇区中差错的数据恢复。图1B例示了存储在现有技术NAND闪存页160中的数据的框图150。现有技术NAND闪存页160具有由ECC校验字节170所保护的扇区0162、扇区1164、扇区2166、以及扇区3168。图1C例示了存储在现有技术NAND闪存页190中的码字的框图180。现有技术NAND闪存页190具有分别由ECC 0-3校验字节193、195、197和199所保护的四个码字(CW)1-4、192、194、196和198。
附图简述
本发明的特征和优点根据本主题的以下详细描述将变得显而易见,其中:
图1A例示了存储在现有技术NAND闪存页中的数据的框图;
图1B例示了存储在现有技术NAND闪存页中的数据的框图;
图1C例示了存储在现有技术NAND闪存页中的码字的框图;
图2例示了根据本发明的一个实施例的固态驱动器的框图;
图2例示了根据本发明的一个实施例的控制器的框图;
图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例示了根据本发明的一个实施例的SSD 202的框图200。SSD 102具有与主机接口模块210、缓冲器220、存储器模块0240、存储器模块1 242、存储器模块2 224、以及存储器模块3 246相耦合的控制器230。
在本发明的一个实施例中,主机接口模块210提供用于与主机设备或系统连接的接口。主机接口模块210根据通信协议来操作,这些通信协议包括但不限于串行高级技术附件(SATA)修订版1.x、SATA修订版2.x、SATA修订版3.x、以及任何其他类型的通信协议。
在本发明的一个实施例中,缓冲器220向SSD 202提供临时存储。缓冲器220包括但不限于:同步动态随机访问存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)、静态RAM(SRAM)、和/或任何其他类型的随机存取存储器设备。在本发明的一个实施例中,缓冲器220被集成在控制器230内。
在本发明的一个实施例中,控制器230具有用于动态地调节或选择被存储在存储器模块0-3240、242、244和246中的数据的纠错码(ECC)的强度的逻辑。在本发明的一个实施例中,控制器230还具有用于压缩要被存储在存储器模块0-3 240、242、244和246中的数据块以及确定要存储在存储器模块0-3240、242、244和246中的数据块是否被压缩到低于一阈值的逻辑。
在本发明的一个实施例中,存储器模块0-3 240、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-3 240、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-3 240、242、244和246作为连续存储器页。存储器页的大小被设置为,但不限于,4千字节或任何其他合适的大小。在本发明的另一实施例中,存储器控制器340将经压缩的原始数据块写回到缓冲器220,并在随后发出写入命令或操作以将经压缩的原始数据块从缓冲器220直接写入存储器模块0-3 240、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-3 240、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-7 112、114、116、118、122、124、126和128作为来自主机的要被存储在存储器模块0-3 240、242、244和246中的原始数据305。在本发明的一个实施例中,压缩引擎310读取四个数据扇区作为单个数据块,即,扇区0-3 112、114、116和118被读取作为单个数据块,而扇区4-7 122、124、126和128被读取作为另一单个数据块。
压缩引擎310对由扇区0-3 112、114、116和118所构成的数据块进行压缩,并确定该数据块是否被压缩到低于一阈值。假定由扇区0-3 112、114、116和118所构成的数据块被压缩到低于阈值,则数据选择器325向多路复用器320发送信号以选择经压缩的扇区0-3 112、114、116和118作为多路复用器320的输入。
在本发明的一个实施例中,经压缩的扇区0-3 112、114、116和118按需由加密/加扰模块330来加密和/或加扰,并且存储器控制器340将经经压缩的扇区0-3 112、114、116和118写入到NAND闪存作为经压缩的扇区0-3 412。存储器控制器340使用ECC算法来计算经压缩的扇区0-3 412的ECC校验字节,并将计算出的ECC校验字节作为ECC 0校验字节420写入到NAND闪存中。ECC算法包括但不限于Hamming算法、Reed-Solomon算法、Bose-Chaudhuri-Hocquenghem(BCH)算法、低密度奇偶校验(LDPC)码等。
经压缩的扇区4-7422和ECC 1校验字节430以与经压缩的扇区0-3 412和ECC 0校验字节420类似的方式来生成,并且在本文中无需进行描述。相关领域普通技术人员将容易理解经压缩的扇区4-7 422和ECC 1校验字节430是如何生成的。
通过压缩扇区0-3 112、114、116和118以及扇区4-7 122、124、126和128,需要较少的存储器空间,并且额外节约区域432例示了NAND闪存中节省的存储器区域。在本发明的一个实施例中,额外节约区域432可被用来提升SSD 202的性能。在本发明的一个实施例中,SSD 202的性能得以提升,因为其需要较少的功率来写入经压缩的扇区0-3 412和扇区4-7422,并且SSD 202的存储器带宽得以增加。另外,SSD 202的性能得以提升,因为由于需要更少的存储器区域来存储经压缩的扇区0-3 412和扇区4-7422,SSD 202的写入放大(write amplification)被减小,写入放大即写入数据块的额外写入操作。另外,SSD 202的性能也得以提升,因为更大的混洗(shuffle)区变得可用且SSD202无需四处移动数据来创建混洗区以便能继续写入存储器模块0-3 240、242、244和246。
图5例示了根据本发明的一个实施例的存储在NAND闪存中的经压缩数据的框图500。在本发明的一个实施例中,存储器控制器340使用ECC算法来计算经压缩的扇区0-3 512和扇区4-7 522两者的ECC校验字节,并将计算出的ECC校验字节作为ECC校验字节530写入到NAND闪存中。额外节约区域540例示了在NAND闪存中节省的存储器区域。在本发明的一个实施例中,存储器控制器340将其他经压缩或未经压缩的扇区写入额外节约区域540中。
图6例示了根据本发明的一个实施例的经压缩扇区0-3 612和已知数据暂记区622的框图600。
出于清楚例示起见,参照图1B和3A来讨论图6。在本发明的一个实施例中,现有技术NAND闪存页160的扇区0-3 162、164、166和168被压缩并被存储为经压缩的扇区0-3 612。未经压缩的扇区0-3 610的大小例示了存储现有技术NAND闪存页160的扇区0-3 162、164、166和168所需的大小。
当现有技术NAND闪存页160的扇区0-3 162、164、166和168被压缩时,其创建额外节约区域620。在本发明的一个实施例中,用已知数据暂记区622填满额外节约区域620。例如,在本发明的一个实施例中,已知数据暂记区622具有信息和/或数据的重复序列或模式。在本发明的一个实施例中,已知数据暂记区622是重复序列1011b。相关领域普通技术人员将容易理解,其他数据序列也可被用作已知数据暂记区,而不影响本发明的施行。
存储器控制器340计算经压缩的扇区0-3 612和已知数据暂记区622的ECC,并添加计算出的ECC校验字节作为ECC校验字节630。在本发明的一个实施例中,通过将已知数据暂记区622追加或添加到经压缩的扇区0-3 612,ECC校验字节630的强度大于现有技术NAND闪存页160的ECC 0校验字节170的强度。这是因为ECC校验字节630有效地保护经压缩的扇区0-3 612的较小的有效载荷大小,并且已知数据暂记区622允许通过检查来修复差错,并且因此ECC校验字节630得以加强。
在本发明的一个实施例中,SSD 202通过调节已知数据暂记区622的大小来动态地调节或选择被存储在存储器模块0-3 240、242、244和246中的数据的纠错码(ECC)的强度。已知数据暂记区622的大小是可变的,并且取决于所达成的扇区0-3 162、164、166和168的压缩率。在本发明的一个实施例中,SSD 202基于与将存储数据块的存储器模块中的位置相关联的比特差错率(BER)来动态地调节数据块的ECC的强度。存储器模块中的位置包括但不限于:存储器模块中的字线(word line)以及存储器模块中的任何其他形式的存储器分配或分布。
例如,在本发明的一个实施例中,与字线相关联的BER可能随着存储器模块的字线的数量级而增加,即,与较低数量级的字线相比,较高数量级的字线可具有最差BER。在本发明的一个实施例中,SSD 202基于其中将存储数据或码字的任何存储器位置的BER特性来主动地匹配任何数据或码字的ECC强度。在本发明的一个实施例中,SSD 202将更强的ECC用于被存储在更高数量级字线中的数据,而将减弱的ECC用于被存储在较低数量级字线中的数据。由此,在本发明的一个实施例中,SSD 202无需使用适用于最差BER情形的公共ECC强度,并且可使用灵活ECC选择方案来增大SSD 202的可靠性。
在本发明的另一实施例中,对存储器模块0-3 240、242、244和246的任何物理带或区域所执行的擦除操作的数目由SSD 202来跟踪。在本发明的一个实施例中,SSD 202基于对其中将存储数据或码字的特定存储器位置的擦除计数来主动地匹配任何数据或码字的ECC强度。例如,在本发明的一个实施例中,SSD 202对将被存储在具有较高擦除计数的存储器位置中的数据使用较强ECC强度,而对将被存储在具有较低擦除计数的存储器位置中的数据使用较弱ECC强度。相关领域普通技术人员将容易理解,其他因素可用来确定数据的所需ECC强度,并且可使用这些其他因素而不影响本发明的施行。
图7例示了根据本发明的一个实施例的两个NAND闪存页710和760的框图700。出于清楚例示起见,参照图1B来讨论图7。NAND闪存页710和760例示了通过压缩现有技术NAND闪存页160的扇区0-3 112、114、116和118所形成的经压缩的数据扇区0-3的两个不同实施例。NAND闪存页710例示了经压缩的数据扇区0-3被划分为两个码字,即,经压缩的扇区0-3(码字1)712和经压缩的扇区0-3(码字2)722。
在本发明的一个实施例中,码字1712和码字2722分别具有ECC 0校验字节720以及ECC 1校验字节730。在本发明的一个实施例中,与现有技术NAND闪存页160相比,NAND闪存页710具有更强的ECC强度。这时因为现有技术NAND闪存页160的ECC校验字节170保护具有更大比特数目的未经压缩的扇区0至3162、164、166和170。NAND闪存页710的ECC 0校验字节720和ECC 1校验字节730中的每一个保护具有较小比特数目的未经压缩的数据扇区0-3的码字。
NAND闪存页760例示了经压缩的数据扇区0-3被划分为四个码字,即,经压缩的扇区0-3(码字1)772、经压缩的扇区0-3(码字2)774、经压缩的扇区0-3(码字3)776和经压缩的扇区0-3(码字4)778。在本发明的一个实施例中,码字1-4 772、774、776和778分别具有ECC 0-3校验字节780、782、784和786。在本发明的一个实施例中,与现有技术NAND闪存页160相比,NAND闪存页760具有更强的ECC强度,因为ECC 0-3校验字节780、782、784和786中的每一个保护较小的数据组块。
在本发明的一个实施例中,NAND闪存页710和760例示了SSD 202如何通过调节经压缩的数据的分区或区划的数目(即,调节码字的数目)来动态地调节或选择被存储在存储器模块0-3 240、242、244和246中的数据的纠错码(ECC)的强度。例如,在本发明的一个实施例中,如果需要更强的ECC强度,则可选择达成较高压缩率的压缩算法来增加因压缩而产生的额外节约区域。额外节约区域容纳更大数目的码字和ECC校验字节,这增加了经压缩数据的有效ECC强度。
图8例示了根据本发明的一个实施例的NAND闪存页810的框图800。出于清楚例示起见,参照图1B来讨论图8。在本发明的一个实施例中,现有技术NAND闪存页160的未经压缩的扇区0至3 162、164、166和170被压缩并被划分成两个码字,即,经压缩的扇区0-3(码字1)812和经压缩的扇区0-3(码字2)822。
在本发明的一个实施例中,向码字812和822中的每一个分别追加已知数据暂记区814和824。在本发明的一个实施例中,已知数据暂记区814和824具有相同的已知或预设数据。在本发明的其他实施例中,已知数据暂记区814和824具有不同的已知或预设数据。计算码字812和已知数据暂记区814的ECC并添加计算出的ECC作为ECC 0校验字节820。类似地,计算码字822和已知数据暂记区824的ECC并添加计算出的ECC作为ECC 1校验字节830。
NAND闪存页810例示了SSD 202如何通过调节经压缩的数据的分区的数目来动态地调节或选择被存储在存储器模块0-3 240、242、244和246中的数据的纠错码(ECC)的强度。在图8中例示的扇区的数目和已知数据暂记区的数目并不意味着进行限制,并且扇区和已知数据暂记区的数目的其他配置也可被使用,而不影响本发明的施行。
图9例示了根据本发明的一个实施例的NAND闪存页910的框图910。出于清楚例示起见,参照图1C来讨论图9。在本发明的一个实施例中,对码字1 192、码字2 194、和码字3 196执行异或(XOR)操作以获得XOR码字920。XOR码字被存储在NAND闪存页910中的码字4 198的位置中。计算XOR码字920的ECC并添加计算出的ECC作为ECC 3校验字节926。
在本发明的一个实施例中,带有XOR保护的NAND闪存存储器页910允许对NAND闪存页910的单个读取操作,以从不可校正的EEC差错恢复。在本发明的一个实施例中,当SSD 202在码字1-3 192、194和196的一个中遭受到致命的或不可恢复的差错时,SSD 202可使用XOR码字920来重新生成具有致命差错的码字。在本发明的一个实施例中,SSD 202可通过读取单个NAND闪存页910来从码字中的致命差错恢复,即,页内XOR保护。
选择最后码字4198以被替换为XOR码字920并不意味着进行限制。在本发明的其他实施例中,选择不同的码字以被替换为XOR码字。例如,在本发明的一个实施例中,选择码字2194以被替换为XOR码字,该XOR码字是从对码字1192、码字3196和码字4198进行XOR操作而得到的。在本发明的一个实施例中,NAND页910中的XOR保护是在对现有技术NAND闪存页160的未经压缩的扇区0至3 162、164、166和170的压缩获得可容纳一个或多个码字的大小的额外节约区域时执行的。
本文中描述的技术允许SSD 202提升性能,并且通过压缩获得的额外节约区域不引发任何相关联的NAND区域成本。在本发明的一个实施例中,基于阈值的压缩技术通过减小跟踪任何给定块的状态所需的粒度来简化SSD 202的簿记(book keeping)功能。
图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、SSD 202、键盘/鼠标1064和网络接口1066耦合。芯片组还可包括大容量存储设备,该大容量存储设备包括但不限于硬盘驱动器、通用串行闪存驱动器、或任何其他形式的计算机数据存储介质。
网络接口1066是通过使用任何类型的公知网络接口标准来实现的,这些标准包括但不限于:以太网接口、通用串行(USB)接口、外围组件互连(PCI)快速接口、无线接口和/或任何其他合适类型的接口。无线接口根据IEEE802.11标准及其相关系列、家庭插座AV(HomePlug AV:HPAV)、超宽带(UWB)、蓝牙、WiMax或任何其他形式的无线通信协议来操作,但不限于此。
虽然图10中所示的模块被描绘为系统1000内的分开的块,但是这些块中的一些块所执行的功能可被集成在单个半导体电路内,或者可使用两个或更多个分开的集成电路来实现。例如,尽管高速缓存存储器1016被描绘为处理器1010内的分开的块,但是高速缓存存储器1016各自可被集成到处理器核1012中。在本发明的另一实施例中,系统1000可包括一个以上的处理器/处理核。
本文中公开的方法可用硬件、软件、固件或其任何其他组合来实现。尽管描述了所公开的主题的实施例的示例,但是相关领域技术人员将容易理解,可替代地使用许多实现所公开的主题的方法。在之前的描述中,已描述了所公开的主题的各个方面。为了解释的目的,阐述了特定数量、材料和配置,以便提供对本主题的全面理解。然而,受益于本公开的相关领域技术人员显而易见的是本主题可在没有特定细节的情况下实现。在其他实例中,众所周知的特征、组件或模块为省去、简化、组合、或分割以免使本发明晦涩。
文本中所用的术语“可操作”意味着设备、系统、协议等在设备或系统处于掉电状态下能操作或适于操作其所需功能。所公开的主题的各个实施例可以以硬件、固件、软件、或其组合的方式来实现,并且可通过参考或结合诸如指令、功能、过程、数据结构、逻辑、应用程序、仿真的设计表示或格式、模拟、和设计制造之类的程序代码来描述,这些代码在被机器访问时导致机器执行任务、定义抽象数据类型或低层硬件上下文、或产生结果。
附图中所示的技术可以是通过使用存储在诸如通用计算机或计算设备上并在其上执行的代码和数据来实现的。此类计算设备通过使用机器可读存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和机器可读通信介质(例如,电、光、声或其它形式的传播信号,诸如载波、红外信号、数字信号等)来存储和传达(内部地以及通过网络与其他计算设备)代码和数据。
尽管已经参考所示实施例描述所公开的主题,但不打算以限制的含义解释本说明书。对所公开主题相关领域中的技术人员显而易见的所示实施例的各种修改以及本主题的其它实施例被认为落在所公开的主题的范围内。
Claims (27)
1.一种装置,包括:
用于以下操作的逻辑:
压缩数据块;
确定所述数据块被压缩到低于一阈值;以及
响应于确定所述数据块被压缩到低于所述阈值,将所述经压缩的数据块写入一个或多个存储器模块中。
2.如权利要求1所述的装置,其特征在于,所述逻辑还用于响应于确定所述数据块并没有被压缩到低于所述阈值,在没有压缩的情况下将所述数据块写入到一个或多个存储器模块中。
3.如权利要求1所述的装置,其特征在于,所述阈值是基于所述经压缩的数据块的大小、以及所述数据块的大小与所述经压缩的数据块的大小的比率中的至少一个。
4.如权利要求1所述的装置,其特征在于,所述逻辑还用于动态地调节所述数据块的纠错码(ECC)的强度。
5.如权利要求4所述的装置,其特征在于,所述用于动态地调节数据块的ECC的强度的逻辑用于基于与所述一个或多个存储器模块中用来存储所述数据块的位置相关联的比特差错率(BER)以及用来存储所述数据块的物理区域的擦除计数中的至少一个来动态地调节所述数据块的所述ECC的所述强度。
6.如权利要求4所述的装置,其特征在于,所述用于动态地调节数据块的ECC的强度的逻辑用于:
将已知数据暂记区追加到所述经压缩的数据块,其中所述已知数据暂记区和所述经压缩的数据块的经组合的大小匹配于所述数据块的大小;
确定所述经压缩的数据块和所述已知数据暂记区的ECC校验字节;以及
将所确定的ECC校验字节追加到所述经压缩的数据块和所述已知数据暂记区。
7.如权利要求4所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的ECC的强度的逻辑用于:
为所述多个码字中的每一个确定多个ECC校验字节中相应的一个;以及
将所确定的相应的一个ECC校验字节追加到所述多个码字中的每一个。
8.如权利要求4所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的ECC的强度的逻辑用于:
将所述已知数据暂记区中相应的一个追加到所述多个码字中的每一个;
为所述多个码字中的每一个以及所述多个已知数据暂记区中相应每一个确定多个ECC校验字节中相应的一个;以及
将所确定的相应的一个ECC校验字节追加到每一个码字以及相应每一个已知数据暂记区。
9.如权利要求4所述的装置,其特征在于,所述经压缩的数据块包括多个码字并且其中所述用于动态地调节数据块的ECC的强度的逻辑用于:
选择所述多个码字中的一个;
对除所选码字之外的所有码字执行异或(XOR)操作以获得XOR码字;以及
用所述XOR码字来代替所选码字。
10.如权利要求1所述的装置,其特征在于,所述装置是NAND闪存固态驱动器(SSD)控制器。
11.如权利要求1所述的装置,其特征在于,所述装置至少部分地符合开放NAND闪速接口(ONFI)协议。
12.一种装置,包括:
一个或多个存储器模块;以及
耦合至所述一个或多个存储器控制器的控制器,用于动态地调节要存储在所述一个或多个存储器模块中的数据的纠错码(ECC)的强度。
13.如权利要求12所述的装置,其特征在于,所述用于动态地调节要存储在所述一个或多个存储器模块中的数据的ECC的强度的控制器用于基于与所述一个或多个存储器模块中用来存储所述数据的位置相关联的比特差错率(BER)以及用来存储所述数据的物理带的擦除计数中的至少一个来动态地调节要存储在所述一个或多个存储器模块中的数据的所述ECC的强度。
14.如权利要求12所述的装置,其特征在于,所述数据被划分成将被存储在所述一个或多个存储器模块的存储器页中的一个或多个数据组块,并且其中所述用于动态地调节要存储在所述一个或多个存储器模块中的数据的ECC的强度的控制器用于:
选择所述一个或多个数据组块中的一个;
对除所选数据组块之外的所有数据组块执行异或(XOR)操作以获得XOR数据组块;以及
用所述XOR数据组块来代替所选数据组块以存储在所述一个或多个存储器模块的所述存储器页中。
15.如权利要求14所述的装置,其特征在于,每个数据组块包括经无损压缩的数据。
16.如权利要求12所述的装置,其特征在于,所述控制器还用于:
压缩所述数据;
确定所述数据是否被压缩到低于一阈值;以及
响应于确定所述数据块被压缩到低于所述阈值,将所述经压缩的数据块写入一个或多个存储器模块中,其中所述阈值是基于所述经压缩的数据块的大小、以及所述数据的大小与所述经压缩的数据的大小的比率中的至少一个。
17.如权利要求16所述的装置,其特征在于,所述用于动态地调节要存储在一个或多个存储器模块中的数据的ECC的强度的控制器用于:将已知数据暂记区添加到所述经压缩的数据;
确定所述经压缩的数据和所述已知数据暂记区的ECC校验字节;以及
将所确定的ECC校验字节追加到所述经压缩的数据和所述已知数据暂记区。
18.如权利要求16所述的装置,其特征在于,所述经压缩的数据将被划分成一个或多个数据组块,并且其中所述用于动态地调节要存储在一个或多个存储器模块中的数据的ECC的强度的控制器用于:
为所述一个或多个数据组块中的每一个确定一个或多个ECC校验字节中相应的一个;以及
将所确定的相应的一个ECC校验字节添加到所述一个或多个数据组块中的每一个。
19.如权利要求16所述的装置,其特征在于,所述经压缩的数据将被划分成一个或多个数据组块,并且其中所述用于动态地调节要存储在一个或多个存储器模块中的数据的ECC的强度的控制器用于:
将所述已知数据暂记区中相应的一个追加到所述一个或多个数据组块中的每一个;
为所述一个或多个数据组块中的每一个以及所述一个或多个已知数据暂记区中相应每一个确定一个或多个ECC校验字节中相应的一个;以及
将所确定的相应的一个ECC校验字节添加到每一个数据组块以及相应一个已知数据暂记区。
20.如权利要求12所述的装置,其特征在于,所述装置是NAND闪存固态驱动器(SSD)。
21.一种方法,包括:
选择要存储在存储器模块的存储器页中的多个码字中的一个;
对除所选码字之外的所有码字执行异或(XOR)操作以获得XOR码字;以及
用所述XOR码字来代替所选码字以存储在所述存储器模块的所述存储器页中。
22.如权利要求21所述的方法,其特征在于,所选码字是要存储在所述存储器模块的所述存储器页中的最后码字。
23.如权利要求21所述的方法,其特征在于,进一步包括:
基于与所述存储器模块中用来存储所述数据的位置相关联的比特差错率(BER)以及所述存储器模块中用来存储所述数据的物理带的擦除计数中的至少一个来动态地调节要存储在所述存储器模块中的所述多个码字的纠错码(ECC)的强度。
24.如权利要求21所述的方法,其特征在于,动态地调节要存储在存储器模块中的多个码字的ECC的强度包括:压缩每一个码字;以及
确定每个码字是否被压缩到低于一阈值,其中所述阈值是基于所述经压缩的码字的大小、以及每个码字的大小与每个经压缩的数据的大小的比率中的至少一个。
25.如权利要求24所述的方法,其特征在于,动态地调节要存储在存储器模块中的多个码字的ECC的强度包括:确定每一个经压缩的码字的相应的ECC校验字节;以及
将所确定的相应的ECC校验字节添加到每个经压缩的码字。
26.如权利要求24所述的方法,其特征在于,动态地调节要存储在存储器模块中的多个码字的ECC的强度包括:将多个已知数据暂记区中相应的一个添加到每个经压缩的码字;
为每个经压缩的码字和所述相应的一个已知数据暂记区确定多个ECC校验字节中相应的一个;以及
将所确定的相应的一个ECC校验字节添加到每一个经压缩的码字以及相应每一个已知数据暂记区。
27.如权利要求26所述的方法,其特征在于,每一个已知数据暂记区和每一个经压缩的码字的经组合的大小匹配于每一个码字的大小。
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 true CN102934093A (zh) | 2013-02-13 |
CN102934093B 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) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677658A (zh) * | 2013-07-19 | 2014-03-26 | 记忆科技(深圳)有限公司 | 固态硬盘控制器及固态硬盘的数据处理方法 |
CN104881370A (zh) * | 2015-05-11 | 2015-09-02 | 中国人民解放军国防科学技术大学 | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 |
CN105653391A (zh) * | 2014-11-13 | 2016-06-08 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元及存储器储存装置 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
WO2017219364A1 (zh) * | 2016-06-24 | 2017-12-28 | 华为技术有限公司 | 处理数据的方法、存储装置、固态硬盘和存储系统 |
CN110147200A (zh) * | 2018-02-13 | 2019-08-20 | 矽创电子股份有限公司 | 闪存的控制器及控制方法 |
TWI673958B (zh) * | 2018-08-30 | 2019-10-01 | 英屬開曼群島商捷鼎創新股份有限公司 | 基於抽樣猜測之資料壓縮方法 |
CN110383698A (zh) * | 2016-12-28 | 2019-10-25 | 华为技术有限公司 | 数据访问方法及闪存设备 |
US10572340B2 (en) | 2014-12-29 | 2020-02-25 | Huawei Technologies Co., Ltd. | Solid state disk storage device and method for accessing data in solid state disk storage device |
CN115019870A (zh) * | 2022-05-18 | 2022-09-06 | 上海颖存半导体科技有限公司 | Nand Flash页面数据纠错方法及系统 |
CN116343890A (zh) * | 2023-05-31 | 2023-06-27 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
Families Citing this family (106)
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 |
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 |
US10162700B2 (en) | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
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 |
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 |
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 |
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 |
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 |
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 |
TWI836610B (zh) | 2022-09-19 | 2024-03-21 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法與相關的快閃記憶體控制器及記憶裝置 |
Citations (4)
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 |
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
US7188227B2 (en) * | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
Family Cites Families (31)
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 |
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 |
-
2010
- 2010-06-29 US US12/825,858 patent/US8533550B2/en active Active
-
2011
- 2011-06-28 CN CN201180027606.9A patent/CN102934093B/zh active Active
- 2011-06-28 KR KR1020127034380A patent/KR101441228B1/ko not_active IP Right Cessation
- 2011-06-28 WO PCT/US2011/042222 patent/WO2012006106A2/en active Application Filing
- 2011-06-28 EP EP11804143.3A patent/EP2588961B1/en active Active
-
2013
- 2013-08-09 US US13/963,930 patent/US8924816B2/en active Active
-
2014
- 2014-07-23 US US14/339,407 patent/US9317362B2/en active Active
Patent Citations (4)
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 |
US20060047916A1 (en) * | 2004-08-31 | 2006-03-02 | Zhiwei Ying | Compressing data in a cache memory |
Non-Patent Citations (1)
Title |
---|
WANGYUAN ZHANG等: "Exploring Phase Change Memory and 3D Die-Stacking for Power/Thermal Friendly, Fast and Durable Memory Architectures", 《INTERNATIONAL CONFERENCE ON PARALLEL ARCHITECTURES AND COMPILATION TECHNIQUES》, 16 September 2009 (2009-09-16), pages 101 - 112, XP031530918 * |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677658A (zh) * | 2013-07-19 | 2014-03-26 | 记忆科技(深圳)有限公司 | 固态硬盘控制器及固态硬盘的数据处理方法 |
CN105653391A (zh) * | 2014-11-13 | 2016-06-08 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元及存储器储存装置 |
CN105653391B (zh) * | 2014-11-13 | 2018-11-02 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元及存储器储存装置 |
CN106415502B (zh) * | 2014-12-12 | 2019-07-12 | 华为技术有限公司 | 数据存储的方法和装置 |
WO2016090621A1 (zh) * | 2014-12-12 | 2016-06-16 | 华为技术有限公司 | 数据存储的方法和装置 |
CN106415502A (zh) * | 2014-12-12 | 2017-02-15 | 华为技术有限公司 | 数据存储的方法和装置 |
US10572340B2 (en) | 2014-12-29 | 2020-02-25 | Huawei Technologies Co., Ltd. | Solid state disk storage device and method for accessing data in solid state disk storage device |
CN104881370A (zh) * | 2015-05-11 | 2015-09-02 | 中国人民解放军国防科学技术大学 | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 |
CN104881370B (zh) * | 2015-05-11 | 2018-01-12 | 中国人民解放军国防科学技术大学 | 协同使用纠删码和纠错码的可靠闪存存储系统构建方法 |
CN109690681A (zh) * | 2016-06-24 | 2019-04-26 | 华为技术有限公司 | 处理数据的方法、存储装置、固态硬盘和存储系统 |
WO2017219364A1 (zh) * | 2016-06-24 | 2017-12-28 | 华为技术有限公司 | 处理数据的方法、存储装置、固态硬盘和存储系统 |
US10628060B2 (en) | 2016-06-24 | 2020-04-21 | Huawei Technologies Co., Ltd. | Smart storage management based on dynamic logic capacity for the storage |
CN110383698A (zh) * | 2016-12-28 | 2019-10-25 | 华为技术有限公司 | 数据访问方法及闪存设备 |
CN110383698B (zh) * | 2016-12-28 | 2022-02-11 | 华为技术有限公司 | 数据访问方法及闪存设备 |
CN110147200A (zh) * | 2018-02-13 | 2019-08-20 | 矽创电子股份有限公司 | 闪存的控制器及控制方法 |
TWI673958B (zh) * | 2018-08-30 | 2019-10-01 | 英屬開曼群島商捷鼎創新股份有限公司 | 基於抽樣猜測之資料壓縮方法 |
CN115019870A (zh) * | 2022-05-18 | 2022-09-06 | 上海颖存半导体科技有限公司 | Nand Flash页面数据纠错方法及系统 |
CN116343890A (zh) * | 2023-05-31 | 2023-06-27 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
CN116343890B (zh) * | 2023-05-31 | 2023-07-25 | 深圳大普微电子科技有限公司 | 纠错单元管理方法、存储控制芯片及闪存设备 |
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 |
CN102934093B (zh) | 2015-11-25 |
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 |
US20110320915A1 (en) | 2011-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102934093B (zh) | 用于改进固态驱动器的性能和/或可靠性的方法和系统 | |
US10998923B2 (en) | Stopping criteria for layered iterative error correction | |
US9495244B2 (en) | Dynamic per-decoder control of log likelihood ratio and decoding parameters | |
KR101759658B1 (ko) | 메모리 장치 및 메모리 시스템 | |
US9673840B2 (en) | Turbo product codes for NAND flash | |
KR101730497B1 (ko) | 에러 정정 성능 신장 방법 및 이를 이용한 저장 장치 | |
US9626517B2 (en) | Non-deterministic encryption | |
US8407562B2 (en) | Systems and methods for compressing data in non-volatile semiconductor memory drives | |
KR101625273B1 (ko) | 더 짧은 블록 길이를 이용하여 더 긴 선형 블록 코드워드를 생성 및 디코딩하기 위한 장치, 시스템 및 방법 | |
US20160062831A1 (en) | Error correction code for unidirectional memory | |
CN111352765B (zh) | 控制器及存储器系统 | |
TW201434051A (zh) | 在記憶體控制器中之資料完整性及方法 | |
KR20090019819A (ko) | 시행착오에 의한 에러 보정 디코딩 | |
US10691534B2 (en) | Data encoding method, data decoding method and storage controller | |
US9231615B2 (en) | Method to shorten hash chains in Lempel-Ziv compression of data with repetitive symbols | |
CN104303155A (zh) | 用于组合错误译码与调制方案的设备及方法 | |
WO2014144043A1 (en) | Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error | |
KR102426047B1 (ko) | 폴라 부호 복호화 장치 및 방법 | |
US20160283325A1 (en) | Errors and erasures decoding from multiple memory devices | |
KR20210015087A (ko) | 오류 정정 회로, 이를 포함하는 메모리 컨트롤러 및 메모리 시스템 | |
CN108170554B (zh) | 一种nand的数据编码方法和装置 | |
CN111406282A (zh) | 一种用于存储设备的存储器控制电路 | |
WO2018067238A1 (en) | Computing system with shift expandable coding mechanism and method of operation thereof |
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 |