KR101441228B1 - 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 - Google Patents
고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 Download PDFInfo
- Publication number
- KR101441228B1 KR101441228B1 KR1020127034380A KR20127034380A KR101441228B1 KR 101441228 B1 KR101441228 B1 KR 101441228B1 KR 1020127034380 A KR1020127034380 A KR 1020127034380A KR 20127034380 A KR20127034380 A KR 20127034380A KR 101441228 B1 KR101441228 B1 KR 101441228B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- ecc
- compressed
- memory modules
- data block
- Prior art date
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
- 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
- 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/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)에 의해 보호되는 섹터 0(162), 섹터 1(164), 섹터 2(166) 및 섹터 3(168)을 가지고 있다. 도 1c는 종래 기술 NAND 플래시 메모리 페이지(190)에 저장된 코드 워드들의 블록도(180)를 예시하고 있다. 종래 기술 NAND 플래시 메모리 페이지(190)는 ECC 0-3 체크 바이트들(193, 195, 197, 및 199)에 의해 각각 보호되는 4개의 코드 워드들(CW) 1-4(192, 194, 196 및 198)를 가지고 있다.
본 발명의 실시예들의 특징들 및 장점들은 본 발명의 대상의 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1a는 종래 기술 NAND 플래시 메모리 페이지에 저장된 데이터의 블록도를 예시하고 있다.
도 1b는 종래 기술 NAND 플래시 메모리 페이지에 저장된 데이터의 블록도를 예시하고 있다.
도 1c는 종래 기술 NAND 플래시 메모리 페이지에 저장된 코드워드들의 블록도를 예시하고 있다.
도 2는 본 발명의 하나의 실시예에 따른 고체-상태 드라이브의 블록도를 예시하고 있다.
도 3a는 본 발명의 하나의 실시예에 따른 컨트롤러의 블록도를 예시하고 있다.
도 3b는 본 발명의 하나의 실시예에 따른 컨트롤러의 블록도를 예시하고 있다.
도 4는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도를 예시하고 있다.
도 5는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도를 예시하고 있다.
도 6은 본 발명의 하나의 실시예에 따른 압축된 섹터 및 주지된 데이터 패드의 블록도를 예시하고 있다.
도 7은 본 발명의 하나의 실시예에 따른 2개의 NAND 플래시 메모리 페이지들의 블록도를 예시하고 있다.
도 8은 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리 페이지의 블록도를 예시하고 있다.
도 9는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리 페이지의 블록도를 예시하고 있다.
도 10은 본 발명의 하나의 실시예에 따라 여기에 개시된 방법들을 구현하는 시스템을 예시하고 있다.
도 1a는 종래 기술 NAND 플래시 메모리 페이지에 저장된 데이터의 블록도를 예시하고 있다.
도 1b는 종래 기술 NAND 플래시 메모리 페이지에 저장된 데이터의 블록도를 예시하고 있다.
도 1c는 종래 기술 NAND 플래시 메모리 페이지에 저장된 코드워드들의 블록도를 예시하고 있다.
도 2는 본 발명의 하나의 실시예에 따른 고체-상태 드라이브의 블록도를 예시하고 있다.
도 3a는 본 발명의 하나의 실시예에 따른 컨트롤러의 블록도를 예시하고 있다.
도 3b는 본 발명의 하나의 실시예에 따른 컨트롤러의 블록도를 예시하고 있다.
도 4는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도를 예시하고 있다.
도 5는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도를 예시하고 있다.
도 6은 본 발명의 하나의 실시예에 따른 압축된 섹터 및 주지된 데이터 패드의 블록도를 예시하고 있다.
도 7은 본 발명의 하나의 실시예에 따른 2개의 NAND 플래시 메모리 페이지들의 블록도를 예시하고 있다.
도 8은 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리 페이지의 블록도를 예시하고 있다.
도 9는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리 페이지의 블록도를 예시하고 있다.
도 10은 본 발명의 하나의 실시예에 따라 여기에 개시된 방법들을 구현하는 시스템을 예시하고 있다.
여기에 기재된 본 발명의 실시예들은 첨부된 도면들에서 제한으로서가 아니라 예로서 예시되어 있다. 예시의 단순성 및 명료성을 위해, 도면들에 예시된 구성요소들은 반드시 축적대로 그려질 필요는 없다. 예를 들면, 일부 구성요소들의 치수들은 명료성을 위해 다른 구성요소들에 비해 과장될 수 있다. 또한, 적절한 것으로 간주되는 경우에, 참조번호들은 도면들에서 대응하거나 유사한 구성요소들을 나타내도록 반복되었다. 명세서에서 본 발명의 "하나의 실시예"또는 "실시예"에 대한 참조는 그 실시예와 관련하여 설명된 특정 특징, 구조 또는 특성이 본 발명의 적어도 하나의 실시예에 포함된다는 것을 의미한다. 그러므로, 명세서 전체에 걸쳐 다양한 장소들에서 구문 "하나의 실시예에서"의 출현은 모두 반드시 동일한 실시예를 참조하고 있는 것은 아니다.
에러 정정(correcting 또는 correction) 코드(ECC)는 판독되거나 송신되고 있는 데이터가 필요한 경우에 에러들에 대해 체크되어 정정될 수 있게 한다. ECC 체크 바이트들은 데이터의 검출 및 정정을 허용하는 ECC 알고리즘에 기초하여 계산되는 비트들의 시퀀스이다. 코드 워드는 본 발명의 하나의 실시예에서 페이로드 데이터 및 ECC 체크 바이트들의 조합을 지칭한다. 데이터의 데이터 청크(chunk)는 각 연산에 대해 판독되거나 기록되는 데이터의 블록 또는 파티션이다.
본 발명의 실시예들은 고체-상태 드라이브(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), 메모리 모듈 0(240), 메모리 모듈 1(242), 메모리 모듈 2(244), 및 메모리 모듈 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-3(240, 242, 244 및 246)에 저장된 데이터의 에러 정정 코드(ECC)의 세기를 동적으로 조정하거나 선택하는 로직을 구비하고 있다. 컨트롤러(230)는 본 발명의 하나의 실시예에서, 또한 메모리 모듈들 0-3(240, 242, 244, 및 246)에 저장될 데이터 블록을 압축하고 메모리 모듈들 0-3(240, 242, 244 및 246)에 저장될 데이터 블록이 임계치 아래로 압축되어 있는지 여부를 결정하는 로직을 구비하고 있다.
본 발명의 하나의 실시예에서, 메모리 모듈들 0-3(240, 242, 244 및 246)은 NAND 플래시 메모리들 등을 포함하고 이들로 제한되지 않는다. 도 2에 도시된 메모리 모듈들의 개수는 제한하는 것을 의미하는 것이 아니고, 본 발명의 다른 실시예들에서 4개보다 더 많거나 적은 메모리 모듈들이 있을 수 있다. 본 발명의 하나의 실시예에서, 컨트롤러(230), 호스트 인터페이스 모듈(210) 및 버퍼(220)는 단일 집적된 회로(ASIC)에 통합된다.
도 3a는 본 발명의 하나의 실시예에 따른 컨트롤러(230)의 블록도(300)를 예시하고 있다. 예시의 명백함을 위해, 도 3a는 도 2를 참조하여 설명된다. 본 발명의 하나의 실시예에서, 컨트롤러(230)는 미처리 데이터(305)로부터의 입력 및 압축 엔진(310)으로부터의 입력을 가지는 멀티플렉서(320)를 가지고 있다. 데이터 선택기(325)는 미처리 데이터(305)와 압축 엔진(310) 사이의 선택 신호를 멀티플렉서(320)에게 제공한다. 멀티플렉서(320)의 출력은 암호화/스크램블링 모듈(330)과 결합되고, 암호화/스크램블링 모듈(330)의 출력은 메모리 컨트롤러(340)와 결합된다. 메모리 컨트롤러는 본 발명의 하나의 실시예에서 메모리 모듈들 0-3(240, 242, 244 및 246)과 결합된다.
본 발명의 하나의 실시예에서, 압축 엔진(310)은 호스트 인터페이스 모듈(210) 및/또는 버퍼(220)로부터 나오는 미처리 데이터(305)를 압축할 수 있다. 미처리 데이터(305)가 도달함에 따라, 압축 엔진(310)은 미처리 데이터(305)의 각 블록을 압축한다. 미처리 데이터(305)의 블록이 특정 임계치 아래로 압축가능한 것으로 결정되는 경우에, 압축 엔진(310)은 압축 엔진(310)으로부터의 입력을 선택하여 특정 임계치 아래로 압축가능한 것으로 결정된 미처리 데이터(305)의 압축된 블록을 수신하라는 신호를 멀티플렉서(320)에 전송하도록 데이터 선택기(325)에게 통지한다.
미처리 데이터(305)의 블록이 특정 임계치 아래로 압축가능하지 않은 것으로 결정되는 경우에, 압축 엔진(310)은 미처리 데이터(305)로부터의 입력을 선택하라는 신호를 멀티플렉서(320)에 전송하도록 데이터 선택기(325)에게 통지한다. 본 발명의 하나의 실시예에서, 컨트롤러(230)는, 달성가능한 압축의 양이 임계치를 초과하는 경우에만, 미처리 데이터(305)가 압축된 형태 또는 포맷으로 저장될 수 있게 한다.
미처리 데이터(305)의 블록의 크기는 512 바이트들, 1 킬로바이트들, 및 압축에 적합한 임의의 다른 적합한 크기로 설정되지만, 이들로 제한되지 않는다. 임계치는 압축된 데이터 블록의 크기, 압축된 데이터 블록의 크기에 대한 데이터 블록의 크기의 압축 비율, 및 압축의 임의의 다른 적합한 표시자로 설정되지만, 이들로 제한되지 않는다. 본 발명의 하나의 실시예에서, 데이터 선택기(325) 및 압축 엔진(310)은 단일 모듈로 함께 결합된다. 압축 엔진(310)은 본 발명의 하나의 실시예에서 무손실형 데이터 압축 알고리즘을 이용하는 하드웨어 기반 압축 엔진이다. 이것은 미처리 데이터(305)로부터의 원래의 데이터가 압축해제 페이즈 동안에 압축된 데이터로부터 재구성될 수 있게 한다. 무손실형 데이터 압축 알고리즘은 LZ77, LZ78, LZSS, LZW 및 그 변동들을 포함하지만 이들로 제한되지 않는 무손실형 데이터 압축 알고리즘들의 렘펠-지브(LZ) 클래스, 및 현재 주지되어 있거나 장래에 발견될 임의의 다른 적합한 범용 무손실형 데이터 압축 알고리즘들을 포함하지만, 이들로 제한되지 않는다.
암호화/스크램블링 모듈(330)은 멀티플렉서(320)로부터의 출력을 암호화 및/또는 스크램블링하고, 암호화되고/되거나 스크램블링된 출력을 메모리 컨트롤러(340)에 전송한다. 본 발명의 하나의 실시예에서, 메모리 컨트롤러(340)는 암호화되고/되거나 스크램블링된 출력을 메모리 모듈들 0-3(240, 242, 244 및 246)에 기록한다. 본 발명의 또 하나의 실시예에서, 메모리 컨트롤러(340)는 미처리 데이터의 압축된 블록들을 선택적으로 그룹화하고 연속적인 메모리 페이지로서 메모리 모듈들 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로 설정되고, 데이터 블록이 압축되지 않았다면 로직 제로로 설정된다. 본 기술분야의 통상의 기술자라면, 본 발명의 작용들에 영향을 미치지 않고서 데이터 블록들의 압축 상태를 추적하는 다른 방법들이 이용될 수 있다는 것을 쉽게 이해할 것이다.
도 3b는 본 발명의 하나의 실시예에 따른 컨트롤러(230)의 블록도(360)를 예시하고 있다. 예시의 명백함을 위해, 도 3b는 도 2 및 3a를 참조하여 설명된다. 본 발명의 하나의 실시예에서, 컨트롤러(230)는 메모리 모듈들 0-3(240, 242, 244 및 246)으로부터 데이터를 수신하는 메모리 컨트롤러(340)를 구비하고 있다. 메모리 컨트롤러(340)는 수신된 데이터를 암호해제/디스크램블링 모듈(370)에게 전송한다.
암호해제/디스크램블링 모듈(370)은 메모리 컨트롤러(340)로부터 수신된 데이터를 암호해제하고/하거나 디스크램블링하고 암호해제되고/되거나 디스크램블링된 데이터를 압축해제 엔진(380) 및 멀티플렉서(390)에게 전송한다. 압축해제 엔진(380)은 본 발명의 하나의 실시예에서 압축 엔진(310)과 동일한 무손실형 데이터 압축해제 알고리즘을 이용한다.
데이터 선택기(385)는 수신된 데이터와 연관된 토큰(384)을 판독하여, 수신된 데이터가 압축되었는지 여부를 결정한다. 수신된 데이터와 연관된 토큰은 수신된 데이터가 압축되었다는 것을 나타내는 경우에, 데이터 선택기(385)는 압축해제 엔진(380)에게 수신된 데이터를 압축해제하라는 신호를 전송하고, 멀티플렉서(390)에게 호스트 인터페이스 모듈(210) 및/또는 버퍼(220)에 전송될 데이터로서 압축해제 엔진(380)으로부터의 출력을 선택하라는 신호를 전송한다.
수신된 데이터와 연관된 토큰(384)이 수신된 데이터가 압축되지 않았다고 나타내는 경우에, 데이터 선택기(385)는 수신된 데이터를 압축해제하라는 신호를 압축해제 엔진(380)에게 전송하지 않고, 멀티플렉서(390)에게 호스트 인터페이스 모듈(210) 및/또는 버퍼(220)에 전송될 데이터로서 암호해제/디스크램블링 모듈(370)로부터의 출력을 선택하라는 신호를 전송한다. 본 발명의 하나의 실시예에서, 데이터 선택기(385) 및 멀티플렉서(390)는 압축해제 엔진(380) 내에 통합된다. 도 3a 및 3b에 예시된 컨트롤러(230)의 구성은 제한하는 것으로 의미하는 것이 아니고, 본 발명의 작용들에 영향을 미치지 않고서 컨트롤러(230)의 구성의 다른 변동이 수행될 수 있다.
도 4는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도(400)를 예시하고 있다. 예시의 명백함을 위해, 도 4는 도 1a 및 3a를 참조하여 설명된다. 본 발명의 하나의 실시예에서, 컨트롤러(230)는 호스트로부터 메모리 모듈들 0-3(240, 242, 244 및 246)에 저장될 미처리 데이터(305)로서 섹터들 0-7(112, 114, 116, 118, 122, 124, 126 및 128)을 수신한다. 본 발명의 하나의 실시예에서, 압축 엔진(310)은 하나의 단일 데이터 블록으로서 4개의 데이터 섹터들을 판독하고, 즉, 섹터들 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(412)으로서 압축된 섹터들 0-3(112, 114, 116 및 118)을 NAND 플래시 메모리에 기록한다. 메모리 컨트롤러(340)는 ECC 알고리즘을 이용하여 압축된 섹터들 0-3(412)의 ECC 체크 바이트들을 계산하고, NAND 플래시 메모리에서 계산된 ECC 체크 바이트들을 ECC 0 체크 바이트들(420)로서 기록한다. ECC 알고리즘은 해밍(Hamming) 알고리즘, 리드-솔로몬(Reed-Solomon) 알고리즘, 보스-차우드허리-호킹검(BCH) 알고리즘, 저 밀도 패리티 체크(LDPC) 코드들, 등을 포함하지만 이들로 제한되지 않는다.
압축된 섹터들 4-7(422) 및 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)의 성능을 증가시키는데 이용될 수 있다. 본 발명의 하나의 실시예에서, 압축된 섹터들 0-3(412) 및 섹터들 4-7(422)을 기록하는데 더 적은 전력을 요구하고, SSD(202)의 메모리 대역폭이 증가됨에 따라, SSD(202)의 성능이 증가된다. 뿐만 아니라, 압축된 섹터들 0-3(412) 및 섹터들 4-7(422)을 저장하는데 더 적은 메모리 영역이 요구되므로, SSD(202)의 기록 증폭 즉, 데이터 블록을 기록하는 여분 기록 동작들이 감소됨에 따라, SSD(202)의 성능이 증가된다. 뿐만 아니라, 더 큰 셔플(shuffle) 영역이 가용하게 되고 SSD(202)는 메모리 모듈들 0-3(240, 242, 244 및 246)에 계속해서 기록할 수 있도록 하기 위해 데이터를 이동시켜 셔플 영역을 생성할 필요가 없기 때문에 SSD(202)의 성능이 또한 증가된다.
도 5는 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리에 저장된 압축된 데이터의 블록도(500)를 예시하고 있다. 본 발명의 하나의 실시예에서, 메모리 컨트롤러(340)는 ECC 알고리즘을 이용하여 양쪽 압축된 섹터들 0-3(512) 및 섹터들 4-7(522) 모두의 ECC 체크 바이트들을 계산하고, NAND 플래시 메모리에서 계산된 ECC 체크 바이트들을 ECC 체크 바이트들(530)로서 기록한다. 여분 스페어 영역(540)은 NAND 플래시 메모리에서 절감된 메모리 영역을 예시하고 있다. 본 발명의 하나의 실시예에서, 메모리 컨트롤러(340)는 여분 스페어 영역(540)에 다른 압축되거나 압축되지 않는 섹터들을 기록한다.
도 6은 본 발명의 하나의 실시예에 따라 압축된 섹터들 0-3(612) 및 주지된 데이터 패드(622)의 블록도(600)를 예시하고 있다. 예시의 명백함을 위해, 도 6은 도 1b 및 3a를 참조하여 설명된다. 종래기술 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)을 생성한다. 본 발명의 하나의 실시예에서, 여분 스페어 영역(620)은 주지된 데이터 패드(622)로 채워진다. 예를 들면, 본 발명의 하나의 실시예에서, 주지된 데이터 패드(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의 세기를 동적으로 조정한다. 메모리 모듈 내의 로케이션은 메모리 모듈의 워드 라인들, 및 메모리 모듈의 임의의 다른 형태의 메모리 할당 또는 분포를 포함하지만, 이들로 제한되지 않는다.
예를 들면, 본 발명의 하나의 실시예에서, 워드 라인과 연관된 BER은 메모리 모듈의 워드 라인의 차수에 따라 증가할 수 있고, 즉 더 높은 차수의 워드 라인은 더 낮은 차수의 워드 라인보다 최악 BER을 가질 수 있다. 본 발명의 하나의 실시예에서, SSD(202)는 데이터 또는 코드 워드가 저장될 임의의 메모리 로케이션의 BER 특성들에 기초하여 임의의 데이터 또는 코드 워드의 ECC 세기를 능동적으로 매칭한다. 본 발명의 하나의 실시예에서, SSD(202)는 더 높은 차수 워드 라인들에 저장되는 데이터에 대해 더 강한 ECC를, 및 더 낮은 차수 워드 라인들에 저장되는 데이터에 대해 더 약한 ECC를 이용한다. 이와 같이, 본 발명의 하나의 실시예에서, SSD(202)는 BER의 최악의 시나리오에 대해 적합한 ECC의 통상의 세기를 이용할 필요가 없고, SSD(202)의 신뢰성을 증가시키도록 유연한 ECC 선택 스킴을 이용할 수 있다.
본 발명의 또 하나의 실시예에서, 메모리 모듈들 0-3(240, 242, 244 및 266)의 임의의 물리적 대역 또는 영역 상에 수행되는 소거 동작들의 개수는 SSD(202)에 의해 추적된다. 본 발명의 하나의 실시예에서, SSD(202)는 데이터 또는 코드워드가 저장되어야 될 특정 메모리 로케이션의 소거 카운트에 기초하여 임의의 데이터 또는 코드워드의 ECC 세기를 능동적으로 매칭시킨다. 예를 들면, 본 발명의 하나의 실시예에서, SSD(202)는 더 높은 소거 카운트를 가지고 있는 메모리 로케이션에 저장될 데이터에 대해 더 강한 ECC 세기를 이용하고, 더 낮은 소거 카운트를 가지고 있는 메모리 로케이션에 저장될 데이터에 대해 더 약한 ECC 세기를 이용한다. 본 기술분야의 통상의 기술자라면, 데이터의 ECC의 요구되는 세기를 결정하는데 다른 인자들이 이용될 수 있고 이들 다른 인자들은 본 발명의 작용들에 영향을 미치지 않고서 이용될 수 있다는 것을 쉽게 이해할 것이다.
도 7은 본 발명의 하나의 실시예에 따라 2개의 NAND 플래시 메모리 페이지들(710 및 760)의 블록도(700)를 예시하고 있다. 예시의 명료함을 위해, 도 7은 도 1b를 참조하여 설명된다. NAND 플래시 메모리 페이지들(710 및 760)은 종래기술 NAND 플래시 메모리 페이지(160)의 섹터들 0-3(112, 114, 116 및 118)을 압축함으로써 형성된 압축된 데이터 섹터들 0-3의 2개의 상이한 실시예들을 예시하고 있다. NAND 플래시 메모리 페이지(710)는 압축된 데이터 섹터들 0-3이 2개의 코드워드들, 즉 압축된 섹터들 0-3(코드워드 1, 712) 및 압축된 섹터들 0-3(코드워드 2, 722)으로 파티셔닝되어 있는 것을 예시하고 있다.
코드워드 1(712) 및 코드워드 2(722)는 본 발명의 하나의 실시예에서 ECC 0 체크 바이트들(720) 및 ECC 1 체크 바이트들(730)을 각각 가지고 있다. 종래기술 NAND 플래시 메모리 페이지(160)와 비교할 때, NAND 플래시 메모리 페이지(710)는 본 발명의 하나의 실시예에서 더 강한 ECC 세기를 가지고 있다. 이것은, 종래기술 NAND 플래시 메모리 페이지(160)의 ECC 체크 바이트들(170)이 더 큰 개수의 비트들을 가지고 있는 미압축된 섹터들 0 내지 3(162, 164, 166 및 170)을 보호하고 있기 때문이다. NAND 플래시 메모리 페이지(710)의 ECC 0 체크 바이트들(720) 및 ECC 1 체크 바이트들(730)의 각각은 더 작은 개수의 비트들을 가지고 있는 압축된 데이터 섹터들 0-3의 코드워드를 보호하고 있다.
NAND 플래시 메모리 페이지(760)는 압축된 데이터 섹터들 0-3이 4개의 코드워드들, 즉 압축된 섹터들 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 0-3 체크 바이트들(780, 782, 784, 및 786)의 각각이 더 작은 데이터 청크를 보호하고 있으므로, 더 강한 ECC 세기를 가지고 있다.
본 발명의 하나의 실시예에서, NAND 플래시 메모리 페이지들(710 및 760)은, 압축된 데이터의 파티션들 또는 분할들의 개수를 조정함으로써, 즉 코드워드들의 개수를 조정함으로써, SSD(202)가 메모리 모듈들 0-3(240, 242, 244 및 246)에 저장된 데이터의 에러 정정 코드(ECC)의 세기를 동적으로 조정하거나 선택하는 방법을 예시하고 있다. 예를 들면, 본 발명의 하나의 실시예에서, 더 강한 ECC 세기가 요구된다면, 더 높은 압축 비율을 달성할 수 있는 압축 알고리즘이 압축으로부터 발생하는 여분 스페어 영역를 증가시키도록 선택될 수 있다. 여분 스페어 영역은 압축된 데이터의 유효 ECC 세기를 증가시키는 더 높은 개수의 코드워드들 및 ECC 체크 바이트들을 수용한다.
도 8은 본 발명의 하나의 실시예에 따른 NAND 플래시 메모리 페이지(810)의 블록도(800)를 예시하고 있다. 예시의 명료함을 위해, 도 8은 도 1b를 참조하여 설명된다. 본 발명의 하나의 실시예에서, 종래기술 NAND 플래시 메모리 페이지(160)의 미압축된 섹터들 0 내지 3(162, 164, 166 및 170)은 압축되고 2개의 코드 워드들, 즉 압축된 섹터들 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)를 예시하고 있다. 예시의 명료함을 위해, 도 9는 도 1c를 참조하여 설명된다. 본 발명의 하나의 실시예에서, 배타적 논리합(XOR) 연산이 코드워드 1(192), 코드워드 2(194), 및 코드워드 3(196)에 대해 수행되어, XOR 코드워드(920)를 획득한다. XOR 코드워드는 NAND 플래시 메모리 페이지(910)에서 코드워드 4(198) 대신에 저장된다. XOR 코드 워드(920)의 ECC가 계산되고, 계산된 ECC는 ECC 3 체크 바이트들(926)로서 추가된다.
본 발명의 하나의 실시예에서, XOR 보호를 가지는 NAND 플래시 메모리 페이지(910)는 NAND 플래시 메모리 페이지(910)의 단일 판독 동작이 수정불가능한 ECC 에러로부터 복원될 수 있게 한다. SSD(202)가 코드워드들 1-3(192, 194 및 196) 중 하나에서 치명적이거나 복원불가능한 에러를 경험하는 경우에, SSD(202)는 XOR 코드워드(920)를 이용하여, 본 발명의 하나의 실시예에서, 치명적 에러를 가지는 코드워드를 재생할 수 있다. SSD(202)는 본 발명의 하나의 실시예에서, 단일 NAND 플래시 메모리 페이지(910), 즉 인트라-페이지 XOR 보호를 판독함으로써, 코드워드의 치명적 에러로부터 복원될 수 있다.
XOR 코드워드(920)에 의해 대체될 최종 코드워드 4(198)의 선택은 제한적인 것으로 의미하는 것은 아니다. 본 발명의 다른 실시예들에서, XOR 코드 워드에 의해 대체되도록 상이한 코드워드가 선택된다. 예를 들면, 본 발명의 하나의 실시예에서, 코드워드 2(194)는 코드워드 1(192), 코드워드 3(196), 및 코드워드 4(198)의 XOR 연산으로부터 얻어진 XOR 코드워드에 의해 대체되도록 선택된다. 본 발명의 하나의 실시예에서, 종래기술 NAND 플래시 메모리 페이지(160)의 미압축된 섹터들 0 내지 3(162, 164, 166 및 170)의 압축이 하나 이상의 코드워드들의 크기를 수용할 수 있는 여분 스페어 영역을 얻는 경우에, NAND 페이지(910)의 XOR 보호가 수행된다.
여기에 설명된 기술들은 SSD(202)가 그 성능을 증가시킬 수 있게 하고, 압축을 통해 얻어진 여분 스페어 영역은 NAND 영역의 임의의 연관된 비용을 초래하지 않는다. 본 발명의 하나의 실시예예서, 임계치 기반 압축 기술은 임의의 주어진 블록의 상태를 추적하는데 필요한 입도(granularity)를 감소시킴으로써 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), 램버스 다이나믹 랜덤 액세스 메모리(RDRAM), 및/또는 임의의 다른 타입의 랜덤 액세스 메모리 디바이스를 포함하지만 이들로 제한되지 않는다. 비휘발성 메모리(1034)는 NAND 플래시 메모리, 위상 변경 메모리(PCM), 판독전용 메모리(ROM), 전기적으로 소거가능하고 프로그램가능한 판독전용 메모리(EEPROM), 또는 임의의 다른 타입의 비휘발성 메모리 디바이스를 포함하지만 이들로 제한되지 않는다.
메모리(1030)는 프로세서(1010)에 의해 실행될 정보 및 명령들을 저장한다. 메모리(1030)는 또한 프로세서(1010)가 명령들을 실행하고 있는 동안에 임시 변수들 또는 다른 중간 정보를 저장할 수 있다. 칩셋(1020)은 점대점(PtP) 인터페이스들(1017 및 1022)을 통해 프로세서(1010)와 접속한다. 칩셋(1020)은 프로세서(1010)가 시스템(1000)의 다른 모듈들에 접속할 수 있게 한다. 본 발명의 하나의 실시예에서, 인터페이스들(1017 및 1022)은 인텔® 퀵패스 인터커넥트(QPI) 등과 같은 PtP 통신 프로토콜에 따라 동작한다. 칩셋(1020)은 액정 디스플레이(LCD), 음극선관(CRT) 디스플레이, 또는 임의의 다른 형태의 시각 표시 디바이스를 포함하지만 이들로 제한되지 않는 표시 디바이스(1040)에 접속한다.
뿐만 아니라, 칩셋(1020)은 다양한 모듈들(1074, 1060, 1062, 1064 및 1066)을 상호접속하는 하나 이상의 버스들(1050 및 1055)에 접속한다. 버스들(1050 및 1055)은 버스 속도 또는 통신 프로토콜에 미스매치가 있는 경우에, 버스 브리지(1072)를 통해 함께 상호접속될 수 있다. 칩셋(1020)은 비휘발성 메모리(1060), SSD(202), 키보드/마우스(1064), 및 네트워크 인터페이스(1066)와 결합되지만, 이들로 제한되지 않는다. 칩셋은 또한 하드 디스크 드라이브, 범용직렬버스 플래시 메모리 드라이브, 또는 임의의 다른 형태의 컴퓨터 데이터 저장 매체를 포함하지만 이들로 제한되지 않는 대용량 저장 디바이스를 포함할 수 있다.
네트워크 인터페이스(1066)는 이더넷 인터페이스, 범용 직렬 버스(USB) 인터페이스, 주변 컴포넌트 인터커넥트(PCI) 익스프레스 인터페이스, 무선 인터페이스 및/또는 임의의 다른 적합한 타입의 인터페이스를 포함하지만 이들로 제한되지 않는 임의의 타입의 공지된 네트워크 인터페이스 표준을 이용하여 구현된다. 무선 인터페이스는 IEEE 802.11 표준 및 그 관련 패밀리, 홈 플러그 AV(HPAV), 울트라 와이드 대역(UWB), 블루투스, WiMax, 또는 임의의 형태의 무선 통신 프로토콜에 따라 동작하지만 이들로 제한되지 않는다.
도 10에 도시된 모듈들은 시스템(1000) 내에서 분리된 블록들로서 도시되어 있지만, 이들 블록들의 일부에 의해 수행되는 기능들은 단일 반도체 회로 내에 통합되거나, 2개 이상의 분리된 집적 회로들을 이용하여 구현될 수 있다. 예를 들면, 캐시 메모리(1016)가 프로세서(1010) 내의 분리된 블록으로서 도시되어 있지만, 캐시 메모리(1016)는 프로세서 코어(1012)에 각각 통합될 수 있다. 시스템(1000)은 본 발명의 또 하나의 실시예에서 하나보다 많은 프로세서/처리 코어를 포함할 수 있다.
여기에 개시된 방법들은 하드웨어, 소프트웨어, 펌웨어, 또는 임의의 다른 그 조합으로 구현될 수 있다. 개시된 본 발명의 대상의 실시예들의 예들이 설명되어 있지만, 본 기술분야의 통상의 기술자라면, 개시된 본 발명의 대상을 구현하는 다수의 다른 방법들이 대안적으로 이용될 수 있다는 것을 쉽게 이해할 것이다. 상기 설명에서, 개시된 본 발명의 대상의 다양한 양태들이 설명되었다. 설명의 목적상, 특정 숫자들, 시스템들 및 구성들은 본 발명의 대상의 철저한 이해를 제공하기 위해 제시되었다. 그러나, 본 개시의 잇점을 가지는 본 기술분야의 숙련자에게는, 본 발명의 대상이 특정 세부사항들없이도 실시될 수 있다는 것은 자명하다. 다른 예들에서, 개시된 본 발명의 대상을 모호하지 않게 하도록, 공지된 특징들, 컴포넌트들 또는 모듈들이 생략되고, 단순화되며, 결합되거나 분할되었다.
여기에 이용된 용어 "동작가능한"은, 디바이스 또는 시스템이 전력-오프된 상태인 경우에 디바이스, 시스템, 프로토콜 등이 그 원하는 기능에 대해 동작할 수 있거나 동작하도록 적응된다는 것을 의미한다. 개시된 본 발명의 대상의 다양한 실시예들은 하드웨어, 펌웨어, 소프트웨어, 또는 그 조합으로 구현될 수 있고, 명령들, 함수들, 절차들, 데이터 구조들, 로직, 어플리케이션 프로그램들, 설계 표현들, 또는 설계의 시뮬레이션, 에뮬레이션, 및 제조를 위한 포맷들과 같은 프로그램 코드를 참조하여 또는 그와 함께 기술될 수 있고, 이는 머신에 의해 액세스되는 경우에, 결과적으로 머신이 태스크들을 수행하고, 추상적인 데이터 타입 또는 로우-레벨 하드웨어 컨텍스트를 정의하거나, 결과를 생성하는 것으로 나타난다.
도면들에 도시된 기술들은 범용 컴퓨터들 또는 컴퓨팅 디바이스들과 같은 하나 이상의 컴퓨팅 디바이스들 상에 저장되고 실행되는 코드 및 데이터를 이용하여 구현될 수 있다. 그러한 컴퓨팅 디바이스들은 머신 판독가능한 저장 매체(예를 들면, 자기 디스크들, 광 디스크들, 랜덤 액세스 메모리, 판독 전용 메모리, 플래시 메모리 디바이스들, 위상-변경 메모리) 및 머신 판독가능한 통신 매체(예를 들면, 전기적, 광학적, 음향적 또는 다른 형태의 전파된 신호들 - 예를 들면 캐리어 파들, 적외선 신호들, 디지털 신호들, 등)와 같은 머신-판독가능한 매체를 이용하여 코드 및 데이터를 저장하고 통신한다(내부적으로, 그리고 네트워크를 통해 다른 컴퓨팅 디바이스들과).
개시된 본 발명의 대상이 예시적 실시예들을 참조하여 설명되었지만, 본 설명은 제한적 의미로 해석될 것은 아니다. 개시된 본 발명의 대상과 관련된 본 기술분야의 숙련자들에게 명백한, 본 발명의 대상의 다른 실시예들뿐만 아니라 예시적 실시예들의 다양한 변형들이 개시된 본 발명의 대상의 범주 내에 드는 것으로 간주된다.
Claims (27)
- 데이터 블록을 압축하고,
상기 데이터 블록이 임계치 아래로 압축되어 있는지 여부를 결정하며 - 상기 임계치는 상기 압축된 데이터 블록의 크기, 및 상기 압축된 데이터 블록의 크기에 대한 상기 데이터 블록의 크기의 비율 중 적어도 하나에 기초함 -,
상기 데이터 블록이 상기 임계치 아래로 압축되어 있다는 상기 결정에 응답하여, 상기 압축된 데이터 블록을 하나 이상의 메모리 모듈에 기록하는 로직
을 포함하는 장치. - 제1항에 있어서, 상기 로직은 추가적으로, 상기 데이터 블록이 상기 임계치 아래로 압축되어 있지 않다는 결정에 응답하여 상기 데이터 블록을 압축없이 하나 이상의 메모리 모듈에 기록하는 장치.
- 삭제
- 제1항에 있어서, 상기 로직은 추가적으로, 상기 데이터 블록의 에러 정정 코드(ECC)의 세기를 동적으로 조정하는 장치.
- 제4항에 있어서, 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 로직은 상기 데이터 블록을 저장할 하나 이상의 메모리 모듈 내의 로케이션과 연관된 비트 에러 레이트(BER), 및 상기 데이터 블록을 저장할 물리적 영역의 소거 카운트 중 적어도 하나에 기초하여 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 장치.
- 제4항에 있어서, 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 로직은
주지된 데이터 패드를 상기 압축된 데이터 블록에 첨부하고 - 상기 주지된 데이터 패드 및 상기 압축된 데이터 블록의 결합된 크기는 상기 데이터 블록의 크기와 일치(match)함 -,
상기 압축된 데이터 블록 및 상기 주지된 데이터 패드의 ECC 체크 바이트들을 결정하며,
상기 결정된 ECC 체크 바이트들을 상기 압축된 데이터 블록 및 상기 주지된 데이터 패드에 첨부하는 장치. - 제4항에 있어서,
상기 압축된 데이터 블록은 복수의 코드워드를 포함하고, 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 로직은,
상기 복수의 코드워드 각각에 대해 복수의 ECC 체크 바이트의 개별적인 ECC 체크 바이트를 결정하고,
상기 결정된 개별적인 ECC 체크 바이트들을 상기 복수의 코드워드 각각에 첨부하는 장치. - 제4항에 있어서,
상기 압축된 데이터 블록은 복수의 코드워드를 포함하고, 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 로직은,
복수의 주지된 데이터 패드의 개별적인 데이터 패드를 상기 복수의 코드워드 각각에 첨부하고,
상기 복수의 코드워드 각각, 및 상기 복수의 주지된 데이터 패드의 각각의 개별적인 데이터 패드에 대해 복수의 ECC 체크 바이트의 개별적인 ECC 체크 바이트를 결정하며,
상기 결정된 개별적인 ECC 체크 바이트들을 각각의 코드워드 및 각각의 개별적인 주지된 데이터 패드에 첨부하는 장치. - 제4항에 있어서,
상기 압축된 데이터 블록은 복수의 코드워드를 포함하고, 상기 데이터 블록의 ECC의 세기를 동적으로 조정하는 로직은,
상기 복수의 코드워드 중 하나를 선택하고,
상기 선택된 코드워드를 제외한 모든 코드워드에 대해 배타적 논리합(XOR) 연산을 수행하여 XOR 코드워드를 획득하며,
상기 선택된 코드워드를 상기 XOR 코드워드로 대체하는 장치. - 제1항에 있어서, 상기 장치는 NAND 플래시 메모리 고체-상태 드라이브(SSD) 컨트롤러인 장치.
- 제1항에 있어서, 상기 장치는 적어도 부분적으로는 개방형 NAND 플래시 인터페이스(ONFI) 프로토콜에 따르는 장치.
- 하나 이상의 메모리 모듈; 및
상기 하나 이상의 메모리 모듈에 결합되는 컨트롤러
를 포함하고,
상기 컨트롤러는,
상기 하나 이상의 메모리 모듈에 저장될 데이터의 에러 정정 코드(ECC)의 세기를 동적으로 조정하고,
상기 데이터를 압축하며,
상기 데이터가 임계치 아래로 압축되어 있는지 여부를 결정하고 - 상기 임계치는 상기 압축된 데이터의 크기, 및 상기 압축된 데이터의 크기에 대한 상기 데이터의 크기의 압축 비율 중 적어도 하나에 기초함 -,
상기 데이터 블록이 상기 임계치 아래로 압축되어 있다는 결정에 응답하여 상기 압축된 데이터 블록을 상기 하나 이상의 메모리 모듈에 기록하는, 장치. - 제12항에 있어서, 상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 컨트롤러는 상기 데이터를 저장할 상기 하나 이상의 메모리 모듈 내의 로케이션과 연관된 비트 에러 레이트(BER), 및 상기 데이터를 저장할 상기 하나 이상의 메모리 모듈의 물리적 대역의 소거 카운트 중 적어도 하나에 기초하여 상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 장치.
- 제12항에 있어서,
상기 데이터는 상기 하나 이상의 메모리 모듈의 메모리 페이지에 저장될 하나 이상의 데이터 청크로 파티셔닝되고, 상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 컨트롤러는,
상기 하나 이상의 데이터 청크 중 하나를 선택하고,
상기 선택된 데이터 청크들을 제외한 모든 데이터 청크들에 대해 배타적 논리합(XOR) 연산을 수행하여 XOR 데이터 청크를 획득하며,
상기 선택된 데이터 청크를 상기 하나 이상의 메모리 모듈의 상기 메모리 페이지에 저장될 XOR 데이터 청크로 대체하는 장치. - 제14항에 있어서, 각각의 데이터 청크는 무손실형 압축된 데이터를 포함하는 장치.
- 삭제
- 제12항에 있어서, 상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 컨트롤러는,
주지된 데이터 패드를 상기 압축된 데이터에 추가하고,
상기 압축된 데이터 및 상기 주지된 데이터 패드의 ECC 체크 바이트들을 결정하며,
상기 결정된 ECC 체크 바이트들을 상기 압축된 데이터 및 상기 주지된 데이터 패드에 추가하는 장치. - 제12항에 있어서, 상기 압축된 데이터는 하나 이상의 데이터 청크로 파티셔닝되고, 상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 컨트롤러는,
상기 하나 이상의 데이터 청크 각각에 대해 하나 이상의 ECC 체크 바이트의 개별적인 ECC 체크 바이트를 결정하고,
상기 결정된 개별적인 ECC 체크 바이트들을 상기 하나 이상의 데이터 청크 각각에 추가하는 장치. - 제12항에 있어서,
상기 압축된 데이터는 하나 이상의 데이터 청크로 파티셔닝되고,
상기 하나 이상의 메모리 모듈에 저장될 데이터의 ECC의 세기를 동적으로 조정하는 컨트롤러는,
하나 이상의 주지된 데이터 패드의 개별적인 주지된 데이터 패드를 상기 하나 이상의 데이터 청크 각각에게 추가하고,
상기 하나 이상의 데이터 청크 각각, 및 상기 하나 이상의 주지된 데이터 패드의 각각의 개별적인 주지된 데이터 패드에 대해 하나 이상의 ECC 체크 바이트의 개별적인 ECC 체크 바이트를 결정하며,
상기 결정된 개별적인 ECC 체크 바이트들을 각각의 데이터 청크 및 상기 개별적인 주지된 데이터 패드에 추가하는 장치. - 제12항에 있어서, 상기 장치는 NAND 플래시 메모리 고체-상태 드라이브(SSD)인 장치.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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 |
---|---|
KR20130025415A KR20130025415A (ko) | 2013-03-11 |
KR101441228B1 true KR101441228B1 (ko) | 2014-09-17 |
Family
ID=45353773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020127034380A KR101441228B1 (ko) | 2010-06-29 | 2011-06-28 | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 |
Country Status (5)
Country | Link |
---|---|
US (3) | US8533550B2 (ko) |
EP (1) | EP2588961B1 (ko) |
KR (1) | KR101441228B1 (ko) |
CN (1) | CN102934093B (ko) |
WO (1) | WO2012006106A2 (ko) |
Families Citing this family (117)
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 |
US8356137B2 (en) * | 2010-02-26 | 2013-01-15 | Apple Inc. | Data storage scheme for non-volatile memories based on data priority |
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 |
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 |
CN103329103B (zh) * | 2010-10-27 | 2017-04-05 | 希捷科技有限公司 | 使用用于基于闪存的数据存储的自适应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 | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
CN103620690A (zh) * | 2011-04-29 | 2014-03-05 | Lsi公司 | 加密传输固态盘控制器 |
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 |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting 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 |
KR20130027253A (ko) * | 2011-09-07 | 2013-03-15 | 삼성전자주식회사 | 데이터의 압축 방법 |
US20150058524A1 (en) * | 2012-01-04 | 2015-02-26 | Kenneth C. Creta | Bimodal functionality between coherent link and memory expansion |
KR101862341B1 (ko) * | 2012-01-09 | 2018-05-30 | 삼성전자주식회사 | 데이터 압축 기능을 갖는 데이터 저장 장치 |
JP5687639B2 (ja) * | 2012-02-08 | 2015-03-18 | 株式会社東芝 | コントローラ、データ記憶装置及びプログラム |
KR101668934B1 (ko) * | 2012-03-12 | 2016-10-28 | 인텔 코포레이션 | 분배된 코드워드 부분들 |
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 |
WO2014170984A1 (ja) | 2013-04-18 | 2014-10-23 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
CN103677658A (zh) * | 2013-07-19 | 2014-03-26 | 记忆科技(深圳)有限公司 | 固态硬盘控制器及固态硬盘的数据处理方法 |
JP6007332B2 (ja) | 2013-07-31 | 2016-10-12 | 株式会社日立製作所 | ストレージシステム及びデータライト方法 |
WO2015029230A1 (ja) * | 2013-08-30 | 2015-03-05 | 株式会社日立製作所 | 記憶装置及びデータ制御方法 |
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 | 群联电子股份有限公司 | 数据存取方法、存储器控制电路单元及存储器储存装置 |
CN106415502B (zh) * | 2014-12-12 | 2019-07-12 | 华为技术有限公司 | 数据存储的方法和装置 |
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 |
CA3028821C (en) * | 2016-06-24 | 2023-01-24 | Huawei Technologies Co., Ltd. | Data processing method, storage apparatus, solid state disk, and storage system |
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 |
US11144452B2 (en) | 2020-02-05 | 2021-10-12 | Micron Technology, Inc. | Temperature-based data storage processing |
US11243711B2 (en) | 2020-02-05 | 2022-02-08 | Micron Technology, Inc. | Controlling firmware storage density based on temperature detection |
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 (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030090528A (ko) * | 2002-05-20 | 2003-11-28 | 후지쯔 가부시끼가이샤 | 데이터 압축 프로그램, 데이터 압축 방법, 및 데이터 압축장치 |
KR20040104713A (ko) * | 2002-05-09 | 2004-12-10 | 인텔 코오퍼레이션 | 집적 그래픽 장치를 위한 전력 관리 |
KR20050027270A (ko) * | 2002-08-06 | 2005-03-18 | 인터내셔널 비지네스 머신즈 코포레이션 | 압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 |
JP2010518523A (ja) * | 2007-03-08 | 2010-05-27 | インテル・コーポレーション | 動的ecc符号化率調節方法、装置、およびシステム |
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 |
US6961890B2 (en) * | 2001-08-16 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | Dynamic variable-length error correction code |
US7117421B1 (en) * | 2002-05-31 | 2006-10-03 | Nvidia Corporation | Transparent error correction code memory system and method |
KR101150576B1 (ko) * | 2002-07-29 | 2012-06-08 | 콸콤 인코포레이티드 | 디지털 이미지 인코딩 |
US8412879B2 (en) * | 2002-10-28 | 2013-04-02 | Sandisk Technologies Inc. | Hybrid implementation for error correction codes within a non-volatile memory system |
US7188227B2 (en) * | 2003-09-30 | 2007-03-06 | International Business Machines Corporation | Adaptive memory compression |
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 | 弾球遊技機 |
JP2008508632A (ja) * | 2004-08-02 | 2008-03-21 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | データ記憶及び再生装置 |
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 |
US8635194B2 (en) * | 2006-10-19 | 2014-01-21 | Oracle International Corporation | System and method for data compression |
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 |
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 |
WO2011159805A2 (en) * | 2010-06-15 | 2011-12-22 | 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 WO PCT/US2011/042222 patent/WO2012006106A2/en active Application Filing
- 2011-06-28 EP EP11804143.3A patent/EP2588961B1/en active Active
- 2011-06-28 KR KR1020127034380A patent/KR101441228B1/ko not_active IP Right Cessation
- 2011-06-28 CN CN201180027606.9A patent/CN102934093B/zh 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 |
---|---|---|---|---|
KR20040104713A (ko) * | 2002-05-09 | 2004-12-10 | 인텔 코오퍼레이션 | 집적 그래픽 장치를 위한 전력 관리 |
KR20030090528A (ko) * | 2002-05-20 | 2003-11-28 | 후지쯔 가부시끼가이샤 | 데이터 압축 프로그램, 데이터 압축 방법, 및 데이터 압축장치 |
KR20050027270A (ko) * | 2002-08-06 | 2005-03-18 | 인터내셔널 비지네스 머신즈 코포레이션 | 압축률에 기반한 압축 메인 메모리 사용을 위한 시스템 및방법 |
JP2010518523A (ja) * | 2007-03-08 | 2010-05-27 | インテル・コーポレーション | 動的ecc符号化率調節方法、装置、およびシステム |
Also Published As
Publication number | Publication date |
---|---|
WO2012006106A3 (en) | 2012-04-05 |
US8924816B2 (en) | 2014-12-30 |
KR20130025415A (ko) | 2013-03-11 |
US9317362B2 (en) | 2016-04-19 |
US20130326313A1 (en) | 2013-12-05 |
EP2588961A2 (en) | 2013-05-08 |
CN102934093B (zh) | 2015-11-25 |
EP2588961A4 (en) | 2014-09-03 |
CN102934093A (zh) | 2013-02-13 |
US20110320915A1 (en) | 2011-12-29 |
US8533550B2 (en) | 2013-09-10 |
WO2012006106A2 (en) | 2012-01-12 |
US20140337689A1 (en) | 2014-11-13 |
EP2588961B1 (en) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101441228B1 (ko) | 고체-상태 드라이브의 성능 및/또는 신뢰성을 개선하는 방법 및 시스템 | |
US9898209B2 (en) | Framework for balancing robustness and latency during collection of statistics from soft reads | |
US9495244B2 (en) | Dynamic per-decoder control of log likelihood ratio and decoding parameters | |
KR101351754B1 (ko) | 메모리 제어기들에 있어서의 데이터 무결성 및 방법들 | |
KR102081980B1 (ko) | 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법 | |
TWI459396B (zh) | 資料寫入與讀取方法、記憶體控制器與記憶體儲存裝置 | |
US9626517B2 (en) | Non-deterministic encryption | |
US9250995B2 (en) | Protection of data in memory | |
CN111352765B (zh) | 控制器及存储器系统 | |
US20200004628A1 (en) | Error correction decoding augmented with error tracking | |
KR20220021186A (ko) | 데이터 처리 시스템 내 데이터를 공유하는 장치 및 방법 | |
WO2014144043A1 (en) | Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error | |
JP6491482B2 (ja) | 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置 | |
JP2017504920A (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
CN110383698B (zh) | 数据访问方法及闪存设备 | |
US20170371741A1 (en) | Technologies for providing file-based resiliency | |
CN114613420A (zh) | 编码控制方法、存储器存储装置及存储器控制电路单元 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |