KR20170015757A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents
데이터 저장 장치 및 그것의 동작 방법 Download PDFInfo
- Publication number
- KR20170015757A KR20170015757A KR1020150108642A KR20150108642A KR20170015757A KR 20170015757 A KR20170015757 A KR 20170015757A KR 1020150108642 A KR1020150108642 A KR 1020150108642A KR 20150108642 A KR20150108642 A KR 20150108642A KR 20170015757 A KR20170015757 A KR 20170015757A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- super block
- chunks
- controller
- parity
- Prior art date
Links
Images
Classifications
-
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- 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/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID 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
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/44—Indication or identification of errors, e.g. for repair
- G11C29/4401—Indication or identification of errors, e.g. for repair for self repair
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/70—Masking faults in memories by using spares or by reconfiguring
- G11C29/78—Masking faults in memories by using spares or by reconfiguring using programmable devices
- G11C29/785—Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
- G11C29/789—Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes using non-volatile cells or latches
-
- 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
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1072—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online error correction
-
- 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/1105—Decoding
- H03M13/1111—Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
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)
- Computer Security & Cryptography (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Microelectronics & Electronic Packaging (AREA)
Abstract
데이터 저장 장치는 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들 및 각각이 상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 복수의 슈퍼 블록들 별로 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함한다.
Description
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 에러 비트를 정정할 수 있는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는, 적은 용량을 차지하는 패리티 데이터를 통해 보다 향상된 데이터 신뢰성을 보장하는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들 및 각각이 상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 복수의 슈퍼 블록들 별로 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 각각이 복수의 블록들 및 패리티 영역을 포함하는 복수의 불휘발성 메모리 장치들 및 상기 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하고, 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 페리티 영역에 저장하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 복수의 불휘발성 메모리 장치들을 포함하는 데이터 저장 장치의 동작 방법은, 상기 복수의 불휘발성 메모리 장치들 각각에 포함된 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하는 단계 및 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 패리티 영역에 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 적은 용량을 차지하는 패리티 데이터를 통해 보다 향상된 데이터 신뢰성을 보장할 수 있다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치를 도시한 블록도,
도2는 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도3은 도1의 데이터 저장 장치가 도2의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도4는 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도5 및 도6은 도1의 데이터 저장 장치가 도4의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도7은 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도8 및 도9는 도1의 데이터 저장 장치가 도7의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도10은 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도11 및 도12는 도1의 데이터 저장 장치가 도10의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도13은 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도14는 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도15a 내지 도15d는 도1의 컨트롤러가 슈퍼 블록 패리티 데이터를 생성하는 방법을 설명하기 위한 도면,
도16은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도17은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도18은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 도시하는 블록도,
도19는 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
도2는 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도3은 도1의 데이터 저장 장치가 도2의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도4는 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도5 및 도6은 도1의 데이터 저장 장치가 도4의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도7은 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도8 및 도9는 도1의 데이터 저장 장치가 도7의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도10은 도1의 불휘발성 메모리 장치들의 실시 예들에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면,
도11 및 도12는 도1의 데이터 저장 장치가 도10의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도13은 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도14는 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면,
도15a 내지 도15d는 도1의 컨트롤러가 슈퍼 블록 패리티 데이터를 생성하는 방법을 설명하기 위한 도면,
도16은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도17은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작 방법을 설명하기 위한 순서도,
도18은 본 발명의 실시 예에 따른 솔리드 스테이트 드라이브를 도시하는 블록도,
도19는 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도1은 본 발명의 실시 예에 따른 데이터 저장 장치(10)를 도시한 블록도이다.
데이터 저장 장치(10)는 컨트롤러(100) 및 저장 매체(200)를 포함할 수 있다.
데이터 저장 장치(10)는 PCMCIA(Personal Computer Memory Card International Association) 카드, CF(Compact Flash) 카드, 스마트 미디어 카드, 메모리 스틱, 다양한 멀티 미디어 카드(MMC, eMMC, RS-MMC, MMC-micro), SD(Secure Digital) 카드(SD, Mini-SD, Micro-SD), UFS(Universal Flash Storage) 또는 SSD(Solid State Drive) 등으로 구성될 수 있다.
컨트롤러(100)는 데이터 저장 장치(10)의 제반 동작을 제어할 수 있다. 컨트롤러(100)는 외부 장치로부터 전송된 라이트 요청에 응답하여 저장 매체(200)에 데이터를 저장하고, 외부 장치로부터 전송된 리드 요청에 응답하여 저장 매체(200)에 저장된 데이터를 리드하여 외부 장치로 출력할 수 있다. 컨트롤러(100)는 데이터를 저장/리드하기 위해서, 저장 매체(200)에 포함된 불휘발성 메모리 장치들(210, 211)을 인터리빙 방식에 따라 액세스할 수 있다.
컨트롤러(100)는 불휘발성 메모리 장치들(210, 211) 각각에 포함된 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하고, 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 저장 매체(200)에 포함된 패리티 영역에 저장할 수 있다.
실시 예에 따라, 컨트롤러(100)는 슈퍼 블록에서 복수의 데이터 청크들 각각이 저장될 타겟 영역의 속성에 따라, 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 복수의 데이터 그룹들 각각에 대해 슈퍼 블록 패리티 데이터를 생성할 수 있다. 컨트롤러(100)는 불휘발성 메모리 장치들(210, 211)에 걸쳐 형성된 복수의 슈퍼 블록들 별로 대응하는 슈퍼 블록 패리티 데이터를 생성할 수 있다. 컨트롤러(100)는 슈퍼 블록 단위로 슈퍼 패리티 데이터를 생성하기 때문에, 후술될 바와 같이, 슈퍼 블록보다 작은 메모리 영역 단위, 예를 들어, 슈퍼 블록에서 동일한 페이지 오프셋을 가지는 페이지들을 포함하는 스트라이프 단위로 패리티 데이터를 생성하는 경우에 비하여 더 적은 패리티 영역을 필요로 할 수 있다. 따라서, 공간 활용 효율이 향상될 수 있다.
실시 예에 따라, 컨트롤러(100)는 슈퍼 블록에 저장된 복수의 데이터 청크들 중 제1 데이터 그룹으로 분류된 데이터 청크를 리드할 때 리드된 데이터 청크에 에러 비트가 발생된 것으로 판단되면, 데이터 청크를 제외한 제1 데이터 그룹으로 분류된 모든 데이터 청크들 및 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 저장 매체(200)로부터 리드할 수 있다. 실시 예에 따라, 컨트롤러(100)는 데이터 청크에 발생된 에러 비트가 ECC 유닛(미도시)의 ECC 알고리즘에 의해 정정될 수 없는 것으로 판단되면, 데이터 청크를 제외한 제1 데이터 그룹으로 분류된 모든 데이터 청크들 및 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 슈퍼 블록으로부터 리드할 수 있다. 그리고, 컨트롤러(100)는 리드된 데이터 청크들 및 리드된 슈퍼 블록 패리티 데이터에 근거하여, 에러 비트를 정정할 수 있다. 즉, 컨트롤러(100)는 슈퍼 블록 패리티 데이터를 통해서, 장기 사용으로 인한 불휘발성 메모리 장치들(210, 211)의 열화에 의해 데이터 청크를 리드할 때 발생될 수 있는 에러 비트를 정정할 수 있다. 따라서, 데이터 신뢰성이 향상될 수 있다.
실시 예에 따라, 컨트롤러(100)는 슈퍼 블록에 포함된 복수의 페이지들 중에 동일한 페이지 오프셋을 가진 페이지들을 포함하는 스트라이프에 복수의 데이터 청크들을 저장하고, 복수의 데이터 청크들에 대해 생성된 스트라이프 패리티 데이터를 저장 매체(200)에 포함된 패리티 영역에 저장할 수 있다.
저장 매체(200)는 불휘발성 메모리 장치들(210, 211)을 포함할 수 있다.
불휘발성 메모리 장치는 낸드 플래시(NAND Flash) 또는 노어 플래시(NOR Flash)와 같은 플래시 메모리 장치, FeRAM(Ferroelectrics Random Access Memory), PCRAM(Phase-Change Random Access Memory), MRAM(Magnetic Random Access Memory) 또는 ReRAM(Resistive Random Access Memory) 등을 포함할 수 있다.
불휘발성 메모리 장치들(210, 211) 각각은 컨트롤러(100)의 제어에 따라 컨트롤러(100)로부터 전송된 데이터 청크를 저장하고, 저장된 데이터 청크를 리드하여 컨트롤러(100)로 전송할 수 있다.
도1은 저장 매체(200)가 2개의 불휘발성 메모리 장치들(210, 211)을 포함하는 것으로 도시하나, 저장 매체(200)에 포함되는 불휘발성 메모리 장치들의 개수는 이에 한정되지 않는다.
도2는 도1의 불휘발성 메모리 장치들(210, 211)의 실시 예들(210_0, 211_0)에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면이다.
불휘발성 메모리 장치들(210_0, 211_0) 각각은 복수의 블록들을 포함할 수 있다. 예를 들어, 불휘발성 메모리 장치(210_0)는 블록들(BK0_0, BK0_1)을 포함할 수 있다. 불휘발성 메모리 장치들(210_0, 211_0) 각각에서, 블록들 각각은 일정한 블록 오프셋을 가질 수 있다. 예를 들어, 불휘발성 메모리 장치(210_0)에서, 블록(BK0_0)의 블록 오프셋은 "0"이고, 블록(BK0_1)의 블록 오프셋은 "1"일 수 있다.
블록들 각각은 복수의 페이지들을 포함할 수 있다. 예를 들어, 블록(BK0_0)은 페이지들(P0_0~P0_3)을 포함할 수 있다. 블록들 각각에서, 페이지들 각각은 일정한 페이지 오프셋을 가질 수 있다. 예를 들어, 블록(BK0_0)에서, 페이지(P0_0)의 페이지 오프셋은 "0"이고, 페이지(P0_1)의 페이지 오프셋은 "1"이고, 페이지(P0_2)의 페이지 오프셋은 "2"이고, 페이지(P0_3)의 페이지 오프셋은 "3"일 수 있다. 본 발명에서, 데이터 청크는 페이지에 저장되는 데이터의 단위로 정의될 수 있다. 각각의 데이터 청크들은 서로 다른 페이지들에 저장될 수 있다.
페이지들 각각은 대응하는 워드라인이 활성화됨으로써 액세스될 수 있다. 워드라인에 연결된 메모리 셀이 메모리 셀 당 1비트가 저장되는 SLC(Single Level Cell)로 구성될 때, 하나의 페이지가 하나의 워드라인에 대응할 수 있다. 예를 들어, 블록(BK0_0)에서, 페이지(P0_0)는 워드라인 오프셋(WLO)이 "0"인 워드라인에 대응될 수 있고, 페이지(P0_1)는 워드라인 오프셋(WLO)이 "1"인 워드라인에 대응될 수 있고, 페이지(P0_2)는 워드라인 오프셋(WLO)이 "2"인 워드라인에 대응될 수 있고, 페이지(P0_3)는 워드라인 오프셋(WLO)이 "3"인 워드라인에 대응될 수 있다. 하나의 블록에서, 워드라인들 각각은 배치된 순서에 따라 워드라인 오프셋(WLO)을 가질 수 있지만, 본 발명의 실시 예는 이에 제한되지 않는다.
슈퍼 블록들(SB0_0, SB0_1)은 불휘발성 메모리 장치들(210_0, 211_0)에 걸쳐 형성될 수 있다. 슈퍼 블록들(SB0_0, SB0_1) 각각은 불휘발성 메모리 장치들(210_0, 211_0)에서 동일한 블록 오프셋을 가진 블록들을 포함할 수 있다. 예를 들어, 슈퍼 블록(SB0_0)은 불휘발성 메모리 장치들(210_0, 211_0) 각각에서 블록 오프셋 "0"을 가진 블록들(BK0_0, BK1_0)을 포함할 수 있다. 슈퍼 블록(SB0_1)은 불휘발성 메모리 장치들(210_0, 211_0) 각각에서 블록 오프셋 "1"을 가진 블록들(BK0_1, BK1_1)을 포함할 수 있다.
도2에 도시된 바와 같은 메모리 구조에서, 페이지들 각각은 서로 구별되는 속성을 가질 수 있다. 페이지의 속성은, 예를 들어, 블록 오프셋, 페이지 오프셋, 워드라인 오프셋을 포함할 수 있다. 예를 들어, 페이지(P0_0)는, 페이지(P0_0)가 포함된 블록(BK0_0)의 블록 오프셋 "0", 페이지 오프셋 "0', 페이지(P0_0)에 대응하는 워드라인의 워드라인 오프셋 "0"을 속성으로 가질 수 있다. 후술될 바와 같이, 페이지의 속성은 어떤 슈퍼 블록(예를 들어, SB0_0)에 저장될 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하기 위한 기준이 될 수 있다.
실시 예에 따라, 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하기 위해, 상기 상술된 블록 오프셋, 페이지 오프셋 및 워드라인 오프셋이 아닌 다른 기준들이 참조될 수도 있다.
도2에 도시된 블록들의 개수, 워드라인들의 개수 및 페이지들의 개수는 모두 예시적인 것이고, 본 발명의 실시 예는 이제 제한되지 않는다.
도3은 도1의 데이터 저장 장치(10)가 도2의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도3은, 예를 들어, 도2의 슈퍼 블록(SB0_0)에 저장될 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 도시한다.
컨트롤러(100)는 슈퍼 블록(SB0_0)에서 데이터 청크가 저장될 페이지에 대응하는 워드라인 오프셋에 따라, 데이터 청크를 데이터 그룹들(A1, A2)로 분류할 수 있다. 컨트롤러(100)는 블록들(BK0_0, BK1_0) 각각에서, 하나의 워드라인만큼 서로 이격된 워드라인들에 대응하는 페이지들에 저장될 데이터 청크들을 동일한 데이터 그룹으로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 블록들(BK0_0, BK1_0) 각각에서, 짝수(이하에서, 0은 짝수로 정의됨) 워드라인 오프셋을 가진 워드라인들, 즉, 짝수 워드라인들에 대응하는 페이지들(P0_0, P0_2, P1_0, P1_2)에 저장될 데이터 청크들을 데이터 그룹(A1)으로 분류하고, 홀수 워드라인 오프셋을 가진 워드라인들, 즉, 홀수 워드라인들에 대응하는 페이지들(P0_1, P0_3, P1_1, P1_3)에 저장될 데이터 청크들을 데이터 그룹(A2)으로 분류할 수 있다. 아래 [표1]은 슈퍼 블록(SB0_0)에서, 데이터 청크가 저장될 페이지에 대응하는 워드라인 오프셋에 따라, 데이터 청크들이 데이터 그룹들(A1, A2)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(A1, A2)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 생성할 수 있다. 예를 들어, 컨트롤러(100)는 데이터 그룹(A1)으로 분류된 데이터 청크들에 대해 슈퍼 블록 패리티 데이터(PT_A1)을 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB0_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
실시 예에 따라, 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)가 저장되는 패리티 영역은 저장 매체(200) 내에서 슈퍼 블록(SB0_0)과 분리된 영역일 수 있다. 실시 예에 따라, 패리티 영역은 불휘발성 메모리 장치들(210_0, 211_0)이 아닌 저장 매체(200)의 다른 불휘발성 메모리 장치(미도시)에 포함될 수 있다. 실시 예에 따라, 패리티 영역은 슈퍼 블록(SB0_0) 내에 포함될 수 있다. 실시 예에 따라, 패리티 영역은 슈퍼 블록(SB0_0)에서 마지막으로 라이트되는 페이지들(P0_3, P1_3)일 수 있다. 이러한 경우, 슈퍼 블록 패리티 데이터(PT_A1)는 페이지들(P0_0, P0_2, P1_0, P1_2)에 저장될 데이터 청크들에 대해 생성될 수 있고, 슈퍼 블록 패리티 데이터(PT_A2)은 페이지들(P0_1, P1_1)에 저장될 데이터 청크들에 대해 생성될 수 있다.
슈퍼 블록(SB0_0)에 데이터 청크들이 저장된 이후에, 예를 들어, 페이지(P0_0)에 저장된 데이터 청크에 에러 비트가 발생하는 경우 불휘발성 메모리 장치의 구조적 특성에 기인하여 페이지(P0_1)에 저장된 데이터 청크에도 에러 비트가 발생할 가능성이 높을 수 있다. 즉, 서로 인접한 워드라인들에 대응하는 페이지들(P0_0, P0_1)에 저장된 데이터 청크들은 서로 영향을 미침으로써 에러 비트를 동시에 각각 포함할 수 있다. 그러나, 도3에 도시된 바와 같이, 각각의 데이터 그룹들(A1, A2)에 대한 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)가 존재하는 경우, 페이지(P0_0)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(A1)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_A1)를 사용하여 정정될 수 있고, 페이지(P0_1)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(A2)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_A2)를 사용하여 정정될 수 있다.
정리하면, 서로 인접한 워드라인들에 대응하는 페이지들 간에 발생하는 에러 비트가 정정되기 위해서는, 서로 인접한 워드라인들에 대응하는 페이지들에 저장될 데이터 청크들이 동일한 데이터 그룹으로 분류되지 않아야 할 것이다. 실시 예에 따라, 컨트롤러(100)는 블록들 각각에서, 서로 인접한 워드라인들에 대응하는 페이지들에 저장될 데이터 청크들이 동일한 데이터 그룹으로 분류되지 않도록 데이터 청크들을 복수의 데이터 그룹들로 분류할 수 있다. 실시 예에 따라, 컨트롤러(100)는 블록들 각각에서 적어도 하나의 워드라인만큼 서로 이격된 워드라인들에 대응하는 데이터 청크들을 동일한 데이터 그룹으로 분류할 수 있다. 예를 들어, 컨트롤러(100)가 메모리 블록에서 "k"(단, k는 자연수)개의 워드라인들만큼 서로 이격된 워드라인들에 대응하는 데이터 청크들을 동일한 데이터 그룹으로 분류하는 경우, 컨트롤러(100)는 하나의 슈퍼 블록에 저장될 데이터 청크들을 "k+1"개의 데이터 그룹들로 분류할 수 있고, 데이터 그룹들에 각각 대응하는 "k+1"개의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도4는 도1의 불휘발성 메모리 장치들(210, 211)의 실시 예들(210_1, 211_1)에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면이다.
불휘발성 메모리 장치들(210_1, 211_1)은 메모리 셀이 메모리 셀 당 2비트가 저장되는 MLC(Multi Level Cell)로 구성된다는 점을 제외하면, 도2의 불휘발성 메모리 장치들(210_0, 211_0)과 실질적으로 유사하게 구성될 수 있다.
도4를 참조하면, 메모리 셀이 MLC로 구성될 때, 두개의 페이지들이 하나의 워드라인에 대응할 수 있다. 예를 들어, 블록(BK2_0)에서, 페이지들(LP2_0, MP2_1)은 워드라인 오프셋(WLO)이 "0"인 워드라인에 대응될 수 있고, 페이지들(LP2_2, MP2_3)은 워드라인 오프셋(WLO)이 "1"인 워드라인에 대응될 수 있고, 페이지들(LP2_4, MP2_5)은 워드라인 오프셋(WLO)이 "2"인 워드라인에 대응될 수 있고, 페이지들(LP2_6, MP2_7)은 워드라인 오프셋(WLO)이 "3"인 워드라인에 대응될 수 있다.
하나의 워드라인에 함께 대응하는 페이지들은 대응하는 메모리 셀에 저장된 비트들 중 어떤 비트가 저장되는지에 따라 서로 다른 페이지 타입, 예를 들어, LSB(Least Significant Bit) 페이지 또는 MSB(Most Significant Bit) 페이지로 구분될 수 있다. 구체적으로, LSB 데이터가 저장되는 페이지는 LSB 페이지이고, MSB 데이터가 저장되는 페이지는 MSB 페이지일 수 있다. 어떤 워드라인에 함께 대응하는 두 개의 페이지들 중 짝수 페이지 오프셋을 가지는 페이지는 LSB 페이지이고, 홀수 페이지 오프셋을 가지는 페이지는 MSB 페이지일 수 있다. 예를 들어, 블록(BK2_0)에서, 페이지(LP2_0)는 LSB 페이지이고, 페이지(MP2_1)는 MSB 페이지일 수 있다.
실시 예에 따라, 메모리 셀 당 3비트 이상의 데이터가 저장될 수 있다. 메모리 셀 당 복수의 비트들, 예를 들어, "n"개의 비트들이 저장되는 경우 "n"개의 서로 다른 페이지 타입들이 존재할 수 있다.
도5 및 도6은 도1의 데이터 저장 장치가 도4의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도5는, 예를 들어, 도4의 슈퍼 블록(SB1_0)에 저장될 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터(PT_B1, PT_B2)를 도시하고, 도6은 슈퍼 블록 패리티 데이터(PT_C1~PT_C4)를 도시한다.
도5를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB1_0)에서 데이터 청크가 저장될 페이지에 대응하는 페이지 타입에 따라, 데이터 청크를 데이터 그룹들(B1, B2)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 블록(BK2_0)에서, LSB 페이지들(LP2_0, LP2_2, LP2_4, LP2_6)에 저장될 데이터 청크들을 데이터 그룹(B1)으로 분류하고, MSB 페이지들(MP2_1, MP2_3, MP2_5, MP2_7)에 저장될 데이터 청크들을 데이터 그룹(B2)으로 분류할 수 있다. 컨트롤러(100)는 블록(BK3_0)에 대해서도, 블록(BK2_0)에서와 동일한 방법으로 데이터 청크들을 데이터 그룹들(B1, B2)로 분류할 수 있다. 아래 [표2.1]은 슈퍼 블록(SB1_0)에서, 데이터 청크가 저장될 페이지의 페이지 타입에 따라, 데이터 청크들이 데이터 그룹들(B1, B2)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(B1, B2)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_B1, PT_B2)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB1_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_B1, PT_B2)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
슈퍼 블록(SB1_0)에 데이터 청크들이 저장된 이후에, 예를 들어, 페이지(LP2_0)에 저장된 데이터 청크에 에러 비트가 발생하는 경우 불휘발성 메모리 장치의 구조적 특성에 기인하여 페이지(MP2_1)에 저장된 데이터 청크에도 에러 비트가 발생할 가능성이 높을 수 있다. 즉, 서로 동일한 워드라인에 대응하는 페이지들(LP2_0, MP2_1)에 저장된 데이터 청크들은 서로 영향을 미침으로써 에러 비트를 동시에 각각 포함할 수 있다. 그러나, 도5에 도시된 바와 같이, 데이터 그룹들(B1, B2) 각각에 대한 슈퍼 블록 패리티 데이터(PT_B1, PT_B2)가 존재하는 경우, 페이지(LP2_0)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(B1)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_B1)를 사용하여 정정될 수 있고, 페이지(MP2_1)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(B2)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_B2)를 사용하여 정정될 수 있다.
실시 예에 따라, 메모리 셀 당 "m"개의 비트들이 저장되고 "m"개의 페이지 타입들이 존재하는 경우, 컨트롤러(100)는 데이터 청크들을 "m"개의 페이지 타입들에 따라 "m"개의 데이터 그룹들로 분류하고, "m"개의 데이터 그룹들에 각각 대응하는 "m"개의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도6을 참조하면, 컨트롤러(100)는 슈퍼 블록(SB1_0)에서 데이터 청크가 저장될 페이지에 대응하는 워드라인 오프셋 및 페이지 타입에 따라, 데이터 청크를 데이터 그룹들(C1~C4)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 블록(BK2_0)에서, 짝수 워드라인 오프셋에 대응하고 LSB 페이지인 페이지들(LP2_0, LP2_4)에 저장될 데이터 청크들을 데이터 그룹(C1)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 블록(BK2_0)에서, 짝수 워드라인 오프셋에 대응하고 MSB 페이지인 페이지들(MP2_1, MP2_5)에 저장될 데이터 청크들을 데이터 그룹(C2)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 블록(BK2_0)에서, 홀수 워드라인 오프셋에 대응하고 LSB 페이지인 페이지들(LP2_2, LP2_6)에 저장될 데이터 청크들을 데이터 그룹(C3)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 블록(BK2_0)에서, 홀수 워드라인 오프셋에 대응하고 MSB 페이지인 페이지들(MP2_3, MP2_7)에 저장될 데이터 청크들을 데이터 그룹(C4)으로 분류할 수 있다. 컨트롤러(100)는 블록(BK3_0)에 대해서도, 블록(BK2_0)에서와 동일한 방법으로 데이터 청크를 데이터 그룹들(C1~C4)로 분류할 수 있다. 아래 [표2.2]은 슈퍼 블록(SB1_0)에서, 데이터 청크가 저장될 페이지의 워드라인 오프셋 및 페이지 타입에 따라, 데이터 청크들이 데이터 그룹들(C1~C4)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(C1~C4)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_C1~PT_C4)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB1_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_C1~PT_C4)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
도6에 도시된 바와 같이, 데이터 그룹들(C1~C4) 각각에 대한 슈퍼 블록 패리티 데이터(PT_C1~PT_C4)가 존재하는 경우, 서로 인접한 워드라인들에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들 및 서로 동일한 워드라인에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들이 정정 가능할 것이다.
실시 예에 따라, 컨트롤러(100)는, 도3을 참조하여 설명된 바와 같이, 슈퍼 블록(SB1_0)에서 데이터 청크가 저장될 페이지에 대응하는 워드라인 오프셋에 따라, 데이터 청크를 복수의 데이터 그룹들로 분류하고, 복수의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도7은 도1의 불휘발성 메모리 장치들(210, 211)의 실시 예들(210_2, 211_2)에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면이다.
불휘발성 메모리 장치들(210_2, 211_2) 각각은 2개의 플래인들을 포함할 수 있다. 예를 들어, 불휘발성 메모리 장치(210_2)는 플래인들(PLN4_0, PLN4_1)을 포함할 수 있다. 불휘발성 메모리 장치들(210_2, 211_2) 각각에서, 플래인들 각각은 일정한 플래인 오프셋을 가질 수 있다. 예를 들어, 불휘발성 메모리 장치(210_2)에서, 플래인(PLN4_0)의 플래인 오프셋은 "0"이고, 플래인(PLN4_1)의 플래인 오프셋은 "1"일 수 있다.
플래인들 각각은 복수의 블록들을 포함할 수 있다. 예를 들어, 플래인(PLN4_0)은 블록들(BK40_0, BK40_1)을 포함할 수 있다. 플래인들(PLN4_0, PLN4_1, PLN5_0, PLN5_1) 각각에서, 블록들 각각은 일정한 블록 오프셋을 가질 수 있다. 블록들 각각의 상세한 구성은 도2를 참조하여 설명된 블록(BK0_0)의 구성과 실질적으로 동일할 수 있다.
슈퍼 블록들(SB2_0, SB2_1) 각각은 불휘발성 메모리 장치들(210_2, 211_2)에서 동일한 블록 오프셋을 가진 블록들을 포함할 수 있다. 예를 들어, 슈퍼 블록(SB2_0)은 불휘발성 메모리 장치(210_2)의 플래인들(PLN4_0, PLN4_1) 각각에서 블록 오프셋 "0"을 가진 블록들(BK40_0, BK41_0)을 포함하고, 불휘발성 메모리 장치(211_2)의 플래인들(PLN5_0, PLN5_1) 각각에서 블록 오프셋 "0"을 가진 블록들(BK50_0, BK51_0)을 포함할 수 있다.
실시 예에 따라, 불휘발성 메모리 장치들(210_2, 211_2) 각각은 3개 이상의 플래인들을 포함할 수 있다.
도8 및 도9는 도1의 데이터 저장 장치가 도7의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도8은, 예를 들어, 도7의 슈퍼 블록(SB2_0)에 저장될 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터(PT_D1, PT_D2)를 도시하고, 도9는 슈퍼 블록 패리티 데이터(PT_E1~PT_E4)를 도시한다.
도8을 참조하면, 컨트롤러(100)는 슈퍼 블록(SB2_0)에서 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋에 따라, 데이터 청크를 데이터 그룹들(D1, D2)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 불휘발성 메모리 장치(210_2)에서, 플래인 오프셋 "0"에 대응하는 페이지들(P40_0~P40_3)에 저장될 데이터 청크들을 데이터 그룹(D1)으로 분류하고, 플래인 오프셋 "1"에 대응하는 페이지들(P41_0~P41_3)에 저장될 데이터 청크들을 데이터 그룹(D2)으로 분류할 수 있다. 컨트롤러(100)는 불휘발성 메모리 장치(211_2)에 대해서도, 불휘발성 메모리 장치(210_2)에서와 동일한 방법으로 데이터 청크들을 데이터 그룹들(D1, D2)로 분류할 수 있다. 아래 [표3.1]은 슈퍼 블록(SB2_0)에서, 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋에 따라, 데이터 청크들이 데이터 그룹들(D1, D2)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(D1, D2)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_D1, PT_D2)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB2_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_D1, PT_D2)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
슈퍼 블록(SB2_0)에 데이터 청크들이 저장된 이후에, 예를 들어, 페이지(P40_0)에 저장된 데이터 청크에 에러 비트가 발생하는 경우 불휘발성 메모리 장치의 구조적 특성에 기인하여 페이지(P41_0)에 저장된 데이터 청크에도 에러 비트가 발생할 가능성이 높을 수 있다. 즉, 각각의 플래인들(PLN4_0, PLN4_1)에서 서로 동일한 워드라인 오프셋에 대응하는 페이지들(P40_0, P41_0)에 저장된 데이터 청크들은 에러 비트들을 동시에 각각 포함할 수 있다. 그러나, 도8에 도시된 바와 같이, 데이터 그룹들(D1, D2) 각각에 대한 슈퍼 블록 패리티 데이터(PT_D1, PT_D2)가 존재하는 경우, 페이지(P40_0)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(D1)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_D1)를 사용하여 정정될 수 있고, 페이지(P41_0)에 저장된 데이터 청크에 발생된 에러 비트는 데이터 그룹(D2)에 포함된 나머지 데이터 청크들과 슈퍼 블록 패리티 데이터(PT_D2)를 사용하여 정정될 수 있다.
실시 예에 따라, 불휘발성 메모리 장치가 "n"개의 플래인들을 포함하는 경우, 컨트롤러(100)는 데이터 청크들을 플래인 오프셋에 따라 "n"개의 데이터 그룹들로 분류하고, "n"개의 데이터 그룹들에 각각 대응하는 "n"개의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도9를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB2_0)에서 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋 및 워드라인 오프셋에 따라, 데이터 청크를 데이터 그룹들(E1~E4)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 불휘발성 메모리 장치(210_2)에서, 플래인 오프셋 "0"에 대응하고 짝수 워드라인 오프셋에 대응하는 페이지들(P40_0, P40_2)에 저장될 데이터 청크들을 데이터 그룹(E1)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_2)에서, 플래인 오프셋 "0"에 대응하고 홀수 워드라인 오프셋에 대응하는 페이지들(P40_1, P40_3)에 저장될 데이터 청크들을 데이터 그룹(E2)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_2)에서, 플래인 오프셋 "1"에 대응하고 짝수 워드라인 오프셋에 대응하는 페이지들(P41_0, P41_2)에 저장될 데이터 청크들을 데이터 그룹(E3)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_2)에서, 플래인 오프셋 "1"에 대응하고 홀수 워드라인 오프셋에 대응하는 페이지들(P41_1, P41_3)에 저장될 데이터 청크들을 데이터 그룹(E4)으로 분류할 수 있다. 컨트롤러(100)는 불휘발성 메모리 장치(211_2)에 대해서도, 불휘발성 메모리 장치(210_2)에서와 동일한 방법으로 데이터 청크를 데이터 그룹들(E1~E4)로 분류할 수 있다. 아래 [표3.2]는 슈퍼 블록(SB2_0)에서, 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋 및 워드라인 오프셋에 따라, 데이터 청크들이 데이터 그룹들(E1~E4)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(E1~E4)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_E1~PT_E4)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB2_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_E1~PT_E4)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
도6에 도시된 바와 같이, 데이터 그룹들(E1~E4) 각각에 대한 슈퍼 블록 패리티 데이터(PT_E1~PT_E4)가 존재하는 경우, 서로 동일한 워드라인 오프셋에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들 및 서로 인접한 워드라인들에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들이 정정 가능할 것이다.
실시 예에 따라, 컨트롤러(100)는, 도3을 참조하여 설명된 바와 같이, 슈퍼 블록(SB2_0)에서 데이터 청크가 저장될 페이지의 워드라인 오프셋에 따라, 데이터 청크를 복수의 데이터 그룹들로 분류하고, 복수의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도10은 도1의 불휘발성 메모리 장치들(210, 211)의 실시 예들(210_3, 211_3)에 포함된 메모리 영역들의 구조를 상세하게 도시한 도면이다.
불휘발성 메모리 장치들(210_3, 211_3)은 메모리 셀이 MLC로 구성된다는 점을 제외하면, 도7의 불휘발성 메모리 장치들(210_2, 211_2)과 실질적으로 유사하게 구성될 수 있다.
슈퍼 블록들(SB3_0, SB3_1) 각각은 불휘발성 메모리 장치들(210_3, 211_3)에서 동일한 블록 오프셋을 가진 블록들을 포함할 수 있다.
도11 및 도12는 도1의 데이터 저장 장치가 도10의 메모리 구조에서 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도11은, 예를 들어, 도10의 슈퍼 블록(SB3_0)에 저장될 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터(PT_F1~PT_F3)를 도시하고, 도12는 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)를 도시한다.
도11을 참조하면, 컨트롤러(100)는 슈퍼 블록(SB3_0)에서 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋 및 페이지 타입에 따라, 데이터 청크를 데이터 그룹들(F1~F4)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 불휘발성 메모리 장치(210_3)에서, 플래인 오프셋 "0"에 대응하고 LSB 페이지인 페이지들(LP60_0, LP60_2, LP60_4, LP60_6)에 저장될 데이터 청크들을 데이터 그룹(F1)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_3)에서, 플래인 오프셋 "0"에 대응하고 MSB 페이지인 페이지들(MP60_1, MP60_3, MP60_5, MP60_7)에 저장될 데이터 청크들을 데이터 그룹(F2)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_3)에서, 플래인 오프셋 "1"에 대응하고 LSB 페이지인 페이지들(LP61_0, LP61_2, LP61_4, LP61_6)에 저장될 데이터 청크들을 데이터 그룹(F3)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 불휘발성 메모리 장치(210_3)에서, 플래인 오프셋 "1"에 대응하고 MSB 페이지인 페이지들(MP61_1, MP61_3, MP61_5, MP61_7)에 저장될 데이터 청크들을 데이터 그룹(F4)으로 분류할 수 있다. 컨트롤러(100)는 불휘발성 메모리 장치(211_3)에 대해서도, 동일한 방법으로 데이터 청크를 데이터 그룹들(F1~F4)로 분류할 수 있다. 아래 [표4.1]은 슈퍼 블록(SB3_0)에서, 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋 및 페이지 타입에 따라, 데이터 청크들이 데이터 그룹들(F1~F4)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(F1~F4)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_F1~PT_F4)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB3_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_F1~PT_F4)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
도6에 도시된 바와 같이, 데이터 그룹들(F1~F4) 각각에 대한 슈퍼 블록 패리티 데이터(PT_F1~PT_F4)가 존재하는 경우, 서로 동일한 워드라인 오프셋에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들 및 서로 동일한 워드라인에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들이 정정 가능할 것이다.
도12를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB3_0)에서 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋, 워드라인 오프셋 및 페이지 타입에 따라, 데이터 청크를 데이터 그룹들(G1~G8)로 분류할 수 있다. 예를 들어, 컨트롤러(100)는 불휘발성 메모리 장치(210_3)에서, 플래인 오프셋 "0"에 대응하고, 짝수 워드라인 오프셋에 대응하고, LSB 페이지인 페이지들(LP60_0, LP60_4)에 저장될 데이터 청크들을 데이터 그룹(G1)으로 분류할 수 있다. 아래 [표4.2]는 슈퍼 블록(SB3_0)에서, 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋, 워드라인 오프셋 및 페이지 타입에 따라, 데이터 청크들이 데이터 그룹들(G1~G8)로 분류되는 기준을 간략하게 도시한다.
컨트롤러(100)는 데이터 그룹들(G1~G8)에 각각 대응하는 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)를 생성할 수 있다. 컨트롤러(100)는 데이터 청크들을 슈퍼 블록(SB3_0)에 저장하고, 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)를 저장 매체(200) 내의 소정의 패리티 영역에 저장할 수 있다.
도12에 도시된 바와 같이, 데이터 그룹들(G1~G8) 각각에 대한 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)가 존재하는 경우, 서로 동일한 워드라인 오프셋에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들 및 서로 인접한 워드라인들에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들 및 서로 동일한 워드라인에 대응하는 페이지들 각각에서 동시에 발생하는 에러 비트들이 정정 가능할 것이다.
실시 예에 따라, 컨트롤러(100)는, 슈퍼 블록(SB3_0)에서 데이터 청크가 저장될 페이지에 대응하는 플래인 오프셋, 워드라인 오프셋 및 페이지 타입 중 적어도 하나에 따라, 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 복수의 슈퍼 블록 패리티 데이터를 생성할 수 있다.
도13은 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도13은, 예를 들어, 도2의 슈퍼 블록(SB0_0)에 저장될 데이터 청크들에 대해 생성된 스트라이프 패리티 데이터(STP0~STP3) 및 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 도시한다.
스트라이프들(ST0_0~ST0_3) 각각은 슈퍼 블록(SB0_0)에서 동일한 페이지 오프셋을 가지는 페이지들을 포함할 수 있다. 예를 들어, 스트라이프(ST0_0)는 슈퍼 블록(SB0_0)에서 페이지 오프셋 "0"을 가지는 페이지들(P0_0, P1_0)을 포함할 수 있다. 컨트롤러(100)는 슈퍼 블록(SB0_0)에 데이터 청크들을 저장할 때, 예를 들어, 스트라이프 단위로 스트라이프(ST0_0)부터 순차적으로 데이터 청크들을 저장할 수 있다.
컨트롤러(100)는 스트라이프들(ST0_0~ST0_3) 각각에 저장될 데이터 청크들에 대해 스트라이프 패리티 데이터(STP0~STP3)를 생성할 수 있다. 스트라이프 패리티 데이터(STP0~STP3)는 스트라이프들(ST0_0~ST0_3) 별로 생성될 수 있다. 예를 들어, 컨트롤러(100)는 스트라이프(ST0_0)에 저장될 데이터 청크들에 대해 스트라이프 패리티 데이터(STP0)를 생성할 수 있다. 컨트롤러(100)는 스트라이프(ST0_0)에 데이터 청크들을 저장하고, 스트라이프 패리티 데이터(STP0)를 소정의 패리티 영역에 저장할 수 있다.
스트라이프 패리티 데이터도 슈퍼 블록 패리티 데이터와 마찬가지로 데이터 청크에 발생된 에러 비트를 정정하기 위해서 사용될 수 있다. 컨트롤러(100)는, 예를 들어, 페이지(P0_0)에 저장된 데이터 청크에 에러 비트가 발생된 것으로 판단하는 경우, 스트라이프(ST0_0)에 포함된 페이지들(P0_0, P1_0)에 저장된 데이터 청크들 및 스트라이프(ST0_0)에 대응하는 스트라이프 패리티 데이터(STP0)를 저장 매체(200)로부터 리드하고, 리드된 데이터 청크들 및 리드된 스트라이프 패리티 데이터(STP0)에 근거하여 에러 비트를 정정할 수 있다.
실시 예에 따라, 컨트롤러(100)는 슈퍼 블록(SB0_0)에 저장될 데이터 청크들 대신에 스트라이프 패리티 데이터(STP0~STP3)를 이용하여 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 생성할 수 있다. 즉, 컨트롤러(100)는 동일한 데이터 그룹에 포함되는 데이터 청크들에 대해 생성된 복수의 스트라이프 패리티 데이터를 논리 연산함으로써, 해당 데이터 그룹에 대한 슈퍼 블록 패리티 데이터를 생성할 수 있다. 예를 들어, 컨트롤러(100)는 데이터 그룹(A1)에 포함되는 데이터 청크들에 대해 생성된 스트라이프 패리티 데이터(STP0, STP2)를 논리 연산함으로써, 데이터 그룹(A1)에 대한 슈퍼 블록 패리티 데이터(PT_A1)를 생성할 수 있다.
실시 예에 따라, 각각의 스트라이프들(ST0_0~ST0_3)에 대해 스트라이프 패리티 데이터(STP0~STP3)가 순차적으로 생성될 때, 최근에 라이트된 소정 개수의 스트라이프들에 대한 스트라이프 패리티 데이터만 유지될 수 있다. 각각의 스트라이프들(ST0_0~ST0_3)에 대한 모든 스트라이프 패리티 데이터(STP0~STP3)를 계속 관리하는 것은 부담이 될 수 있기 때문이다. 따라서, 후속 라이트 동작에 의해 영향을 받아 에러 비트가 발생할 염려가 있는 최근에 라이트된 일부 스트라이프들에 대한 스트라이프 패리티 데이터만 컨트롤러(100)나 저장 매체(200)의 패리티 영역에 유지될 수 있다.
본 발명의 실시 예에 따르면, 슈퍼 블록 패리티 데이터는 스트라이프 패리티 데이터보다 작은 크기를 가지므로, 보다 적은 패리티 영역이 요구될 수 있다. 따라서, 관리 상 부담이 줄어들 수 있고, 공간 활용 효율은 증가될 수 있다. 또한, 스트라이프 패리티 데이터를 유지하지 않더라도, 슈퍼 블록 패리티 데이터를 사용하여 저장 매체(200)에 저장된 데이터 청크에 발생된 에러 비트가 정정될 수 있으므로 데이터 신뢰성이 향상될 수 있다.
도14는 도1의 데이터 저장 장치가 스트라이프 패리티 데이터 및 슈퍼 블록 패리티 데이터를 생성하는 방법을 예시적으로 설명하기 위한 도면이다. 도14는, 예를 들어, 도10의 슈퍼 블록(SB3_0)에 저장될 데이터 청크들에 대해 생성된 스트라이프 패리티 데이터(SPT00~SPT71) 및 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)를 도시한다.
도14를 참조하면, 슈퍼 블록(SB3_0)은 스트라이프들(ST1_0~ST1_7)을 포함할 수 있다. 컨트롤러(100)는 스트라이프들(ST1_0~ST1_7) 각각에 대해 두 개의 스트라이프 패리티 데이터를 생성할 수 있다. 컨트롤러(100)는 어떤 스트라이프에 포함된 데이터 청크들에 대응하는 플래인 오프셋에 따라, 해당 스트라이프에 저장될 데이터 청크들을 분류하고, 스트라이프 패리티 데이터를 생성할 수 있다. 예를 들어, 컨트롤러(100)는 스트라이프(ST1_0)에서 플래인 오프셋 "0"에 대응하는 페이지들(LP60_0, LP70_0)에 저장될 데이터 청크들에 대해 스트라이프 패리티 데이터(STP00)를 생성하고, 플래인 오프셋 "1"에 대응하는 페이지들(LP61_0, LP71_0)에 저장될 데이터 청크들에 대해 스트라이프 패리티 데이터(STP01)를 생성할 수 있다. 이와 같은 경우, 스트라이프(ST1_0)에 대해 스트라이프 패리티 데이터(STP00, STP01)가 존재하는 경우, 서로 동일한 워드라인 오프셋에 대응하는 페이지들(예를 들어, P60_0, P61_0)에 저장된 데이터 청크들 각각에서 동시에 발생하는 에러 비트들이 정정 가능할 것이다.
실시 예에 따라, 컨트롤러(100)는 슈퍼 블록(SB3_0)에 저장될 데이터 청크들 대신에 스트라이프 패리티 데이터(STP00~STP71)를 이용하여 슈퍼 블록 패리티 데이터(PT_G1~PT_G8)를 생성할 수 있다. 예를 들어, 컨트롤러(100)는 데이터 그룹(G1)에 포함되는 데이터 청크들에 대해 생성된 스트라이프 패리티 데이터(STP00, STP40)를 논리 연산함으로써, 데이터 그룹(G1)에 대한 슈퍼 블록 패리티 데이터(PT_G1)를 생성할 수 있다.
도15a 내지 도15d는 도1의 컨트롤러(100)가 슈퍼 블록 패리티 데이터를 생성하는 방법을 설명하기 위한 도면이다. 도15a 내지 도15d에서 컨트롤러(100)는, 예를 들어, 도3을 참조하여 설명된 바와 같이, 슈퍼 블록(SB0_0)에서 데이터 청크가 저장될 페이지에 대응하는 워드라인 오프셋(WLO)에 따라 데이터 청크들을 데이터 그룹들(A1, A2)로 분류하여 슈퍼 블록 패리티 데이터(PT_A1, PT_A2)를 생성할 수 있다.
우선, 컨트롤러(100)는 데이터 그룹(A1)에 대한 슈퍼 블록 패리티 데이터(PT_A1)를 생성하기 위해서 데이터 그룹(A1)에 포함되는 데이터 청크들에 대해 논리 연산, 예를 들어, 배타적 논리합 연산을 수행한 결과를 저장하기 위한 저장부(111)를 포함할 수 있다. 또한, 컨트롤러(100)는 데이터 그룹(A2)에 대한 슈퍼 블록 패리티 데이터(PT_A2)를 생성하기 위해서 데이터 그룹(A2)에 포함되는 데이터 청크들에 대해 논리 연산, 예를 들어, 배타적 논리합 연산을 수행한 결과를 저장하기 위한 저장부(112)를 포함할 수 있다.
실시 예에 따라, 생성되는 슈퍼 블록 패리티 데이터의 개수에 따라 컨트롤러(100)에 포함되는 저장부들의 개수는 달라질 수 있다.
도15a를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB0_0)에 저장될 데이터 청크(D0)를 저장될 페이지에 대응하는 워드라인 오프셋(WLO)에 따라 데이터 그룹(A1)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 데이터 청크(D0)를 저장부(111)에 저장할 수 있다. 컨트롤러(100)는 데이터 청크(D0)를 슈퍼 블록(SB0_0)에 저장할 수 있다.
도15b를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB0_0)에 저장될 데이터 청크(D1)를 저장될 페이지에 대응하는 워드라인 오프셋(WLO)에 따라 데이터 그룹(A1)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 데이터 청크(D0)와 데이터 청크(D1)에 대해 논리 연산을 하고 연산 결과를 저장부(111)에 저장할 수 있다. 컨트롤러(100)는 데이터 청크(D1)를 슈퍼 블록(SB0_0)에 저장할 수 있다.
도15c를 참조하면, 컨트롤러(100)는 슈퍼 블록(SB0_0)에 저장될 데이터 청크(D2)를 저장될 페이지에 대응하는 워드라인 오프셋(WLO)에 따라 데이터 그룹(A2)으로 분류할 수 있다. 그리고, 컨트롤러(100)는 데이터 청크(D2)를 저장부(112)에 저장할 수 있다. 컨트롤러(100)는 데이터 청크(D2)를 슈퍼 블록(SB0_0)에 저장할 수 있다.
도15d를 참조하면, 컨트롤러(100)는 데이터 청크들(D3~D7)을 데이터 그룹들(A1, A2)로 분류하고, 분류에 따라 논리 연산을 하고 연산 결과를 저장부들(111, 112)에 저장할 수 있다. 컨트롤러(100)는 슈퍼 블록(SB0_0)에 데이터 청크를 저장할 수 있는 빈 페이지가 더 이상 없는 경우, 저장부들(111, 112)에 저장된 논리 연산 결과들을 슈퍼 블록 패리티 데이터들(PT_A1, PT_A2)로서 저장 매체(200)의 소정의 패리티 영역에 저장할 수 있다.
미도시되었지만, 컨트롤러(100)는 스트라이프 패리티 데이터도 도15a 내지 도15d를 참조하여 설명된 방법과 실질적으로 동일하게 생성할 수 있다. 컨트롤러(100)는 스트라이프 패리티 데이터에 대응하는 저장부들을 더 포함할 수 있다.
도16은 본 발명의 실시 예에 따른 데이터 저장 장치(10)의 동작 방법을 설명하기 위한 순서도이다. 도16을 참조하면, 데이터 저장 장치(10)가 슈퍼 블록 패리티 데이터를 생성하는 방법이 도시된다.
S110 단계에서, 컨트롤러(100)는 저장 매체(200)의 불휘발성 메모리 장치들(210, 211)에 걸쳐 형성된 슈퍼 블록에서 복수의 데이터 청크들 각각이 저장될 타겟 영역의 속성에 따라, 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류할 수 있다. 타겟 영역의 속성은 플래인 오프셋, 워드라인 오프셋, 페이지 오프셋 및 페이지 타입 중 적어도 하나일 수 있다.
S120 단계에서, 컨트롤러(100)는 복수의 데이터 그룹들 각각에 대해 슈퍼 블록 패리티 데이터를 생성할 수 있다. 컨트롤러는 동일한 데이터 그룹으로 분류된 데이터 청크들을 논리 연산함으로써 대응하는 슈퍼 블록 패리티 데이터를 생성할 수 있다.
S130 단계에서, 컨트롤러(100)는 슈퍼 블록에 복수의 데이터 청크들을 저장할 수 있다. 컨트롤러는 슈퍼 블록 패리티 데이터를 생성하기 위한 논리 연산이 수행된 데이터 청크를 슈퍼 블록에 저장할 수 있다.
S140 단계에서, 컨트롤러(100)는 저장 매체(200)의 패리티 영역에 슈퍼 블록 패리티 데이터를 저장할 수 있다.
도17은 본 발명의 실시 예에 따른 데이터 저장 장치(10)의 동작 방법을 설명하기 위한 순서도이다. 도17을 참조하면, 데이터 저장 장치(10)가 슈퍼 블록 패리티 데이터를 이용하여 에러 비트를 정정하는 방법이 도시된다.
S210 단계에서, 컨트롤러(100)는 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지할 수 있다. 예를 들어, 컨트롤러는 저장 매체(200)에 저장된 데이터 청크를 리드하였을 때 데이터 청크에 에러 비트가 발생했음을 감지할 수 있다.
S220 단계에서, 컨트롤러(100)는 저장 매체(200)로부터 제1 데이터 그룹으로 분류된 데이터 청크들 및 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 리드할 수 있다. 컨트롤러는 저장 매체(200)로부터 제1 데이터 그룹에서 이미 리드되어 에러 비트가 발생한 데이터 청크를 제외한 나머지 데이터 청크들을 리드할 수 있다.
S230 단계에서, 컨트롤러(100)는 리드된 제1 데이터 그룹 및 리드된 슈퍼 블록 패리티 데이터에 근거하여, 에러 비트를 정정할 수 있다.
도18은 본 발명의 실시 예에 따른 SSD(1000)를 도시하는 블록도이다.
SSD(1000)는 SSD 컨트롤러(1100)와 저장 매체(1200)를 포함할 수 있다.
SSD 컨트롤러(1100)는 호스트 장치(1500)와 저장 매체(1200) 사이의 데이터 교환을 제어할 수 있다. SSD 컨트롤러(1100)는 도1의 컨트롤러(100)와 실질적으로 유사하게 동작할 수 있다. SSD 컨트롤러(1100)는 프로세서(1110), 램(1120), 롬(1130), ECC부(1140), 호스트 인터페이스부(1150) 및 스토리지 인터페이스부(1160)를 포함할 수 있다.
프로세서(1110)는 SSD 컨트롤러(1100)의 제반 동작을 제어할 수 있다. 프로세서(1110)는 호스트 장치(1500)의 요청에 따라 저장 매체(1200)에 데이터를 저장하고, 저장 매체(1200)로부터 저장된 데이터를 리드할 수 있다. 프로세서(1110)는 저장 매체(1200)를 효율적으로 관리하기 위해서, 머지 동작 및 웨어 레벨링 동작 등과 같은 SSD(1000)의 내부 동작을 제어할 수 있다.
램(1120)은 프로세서(1110)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 램(1120)은 호스트 인터페이스부(1150)로부터 전송된 데이터를 저장 매체(1200)에 전달하기 전에 임시 저장할 수 있고. 저장 매체(1200)로부터 전송된 데이터를 호스트 장치(1500)로 전달하기 전에 임시 저장할 수 있다. 램(1120)은 도1에 도시된 메모리(112)와 같이, 저장 매체(1200)에 저장될 데이터 청크에 대해 생성된 중간 패리티 데이터를 보관할 수 있다.
롬(1130)은 프로세서(1110)에 의해 리드되는 프로그램 코드를 저장할 수 있다. 프로그램 코드는 프로세서(1110)가 SSD 컨트롤러(1100)의 내부 유닛들을 제어하기 위해서 프로세서(1110)에 의해 처리되는 명령들을 포함할 수 있다.
ECC부(1140)는 저장 매체(1200)에 저장될 데이터를 인코딩하고, 저장 매체(1200)로부터 리드된 데이터를 디코딩할 수 있다. ECC부(1140)는 ECC 알고리즘에 따라 데이터에 발생된 에러를 검출하고 정정할 수 있다. ECC부(1140)는 도1에 도시된 인코더(114)와 같이, 램(1120)으로부터 로드된 중간 패리티 데이터를 사용하여, 불연속적으로 전송되는 복수의 데이터 청크들을 인코딩 단위로서 함께 인코딩할 수 있다.
호스트 인터페이스부(1150)는 호스트 장치(1500)와 요청 및 데이터 등을 교환할 수 있다.
스토리지 인터페이스부(1160)는 저장 매체(1200)로 제어 신호 및 데이터를 전송할 수 있다. 스토리지 인터페이스부(1160)는 저장 매체(1200)로부터 데이터를 전송받을 수 있다. 스토리지 인터페이스부(1160)는 저장 매체(1200)와 복수의 채널들(CH0~CHn)을 통해 연결될 수 있다.
저장 매체(1200)는 복수의 불휘발성 메모리 장치들(NVM0~NVMn)을 포함할 수 있다. 복수의 불휘발성 메모리 장치들(NVM0~NVMn) 각각은 도1에 도시된 불휘발성 메모리 장치들(210, 211)와 같이, SSD 컨트롤러(1100)의 제어에 따라 데이터 청크 및 슈퍼 블록 패리티 데이터를 저장할 수 있다.
도19는 본 발명의 실시 예에 따른 데이터 저장 장치(100)가 적용된 데이터 처리 시스템(2000)을 도시하는 블록도이다.
데이터 처리 시스템(2000)은 컴퓨터, 랩탑, 넷북, 스마트폰, 디지털 TV, 디지털 카메라, 네비게이션 등을 포함할 수 있다. 데이터 처리 시스템(2000)은 메인 프로세서(2100), 메인 메모리 장치(2200), 기억 장치(2300) 및 입출력 장치(2400)를 포함할 수 있다. 데이터 처리 시스템(2000)의 내부 유닛들은 시스템 버스(2500)를 통해서 데이터 및 제어 신호 등을 주고받을 수 있다.
메인 프로세서(2100)는 데이터 처리 시스템(2000)의 제반 동작을 제어할 수 있다. 메인 프로세서(2100)는, 예를 들어, 마이크로프로세서와 같은 중앙 처리 장치일 수 있다. 메인 프로세서(2100)는 운영 체제, 애플리케이션 및 장치 드라이버 등의 소프트웨어들을 메인 메모리 장치(2200) 상에서 수행할 수 있다.
메인 메모리 장치(2200)는 메인 프로세서(2100)에 의해 사용되는 프로그램 및 프로그램 데이터를 저장할 수 있다. 메인 메모리 장치(2200)는 기억 장치(2300) 및 입출력 장치(2400)로 전송될 데이터를 임시 저장할 수 있다.
기억 장치(2300)는 메모리 컨트롤러(2310) 및 저장 매체(2320)를 포함할 수 있다. 기억 장치(2300)는 도1의 데이터 저장 장치(10)와 실질적으로 동일하게 구성되고 동작할 수 있다.
입출력 장치(2400)는 사용자로부터 데이터 처리 시스템(2000)을 제어하기 위한 명령을 입력받거나 처리된 결과를 사용자에게 제공하는 등 사용자와 정보를 교환할 수 있는 키보드, 스캐너, 터치스크린 및 마우스 등을 포함할 수 있다.
실시 예에 따라, 데이터 처리 시스템(2000)은 LAN(Local Area Network), WAN(Wide Area Network) 및 무선 네트워크 등의 네트워크(2600)를 통해 적어도 하나의 서버(2700)와 통신할 수 있다. 데이터 처리 시스템(2000)은 네트워크(2600)에 접속하기 위해서 네트워크 인터페이스부(미도시)를 포함할 수 있다.
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
10: 데이터 저장 장치
100: 컨트롤러
200: 저장 매체
210, 211: 불휘발성 메모리 장치
100: 컨트롤러
200: 저장 매체
210, 211: 불휘발성 메모리 장치
Claims (20)
- 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들; 및
각각이 상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 복수의 슈퍼 블록들 별로 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함하는 데이터 저장 장치. - 제1항에 있어서,
상기 컨트롤러는, 상기 복수의 슈퍼 블록들 각각에 대해, 동일한 슈퍼 블록에 저장될 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하고,
상기 복수의 데이터 청크들 각각은 상기 동일한 슈퍼 블록에서 저장될 타겟 영역의 속성에 따라 상기 복수의 데이터 그룹들 중 어느 하나로 분류되는 데이터 저장 장치. - 제2항에 있어서,
상기 속성은, 상기 타겟 영역에 대응하는 플래인 오프셋, 워드라인 오프셋, 페이지 오프셋 및 페이지 타입 중 적어도 하나를 포함하는 데이터 저장 장치. - 제2항에 있어서,
상기 컨트롤러는 상기 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지한 경우, 상기 제1 데이터 그룹으로 분류된 데이터 청크들 및 상기 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터에 근거하여, 상기 에러 비트를 정정하는 데이터 저장 장치. - 각각이 복수의 블록들 및 패리티 영역을 포함하는 복수의 불휘발성 메모리 장치들; 및
상기 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하고, 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 페리티 영역에 저장하도록 구성된 컨트롤러를 포함하는 데이터 저장 장치. - 제5항에 있어서,
상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역의 속성에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치. - 제6항에 있어서,
상기 컨트롤러는, 상기 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지한 경우, 상기 제1 데이터 그룹으로 분류된 데이터 청크들 및 상기 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 복수의 불휘발성 메모리 장치들로부터 리드하고, 리드된 데이터 청크들 및 리드된 슈퍼 블록 패리티 데이터에 근거하여, 상기 에러 비트를 정정하는 데이터 저장 장치. - 제5항에 있어서,
상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 플래인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치. - 제5항에 있어서,
상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 워드라인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치. - 제5항에 있어서,
상기 컨트롤러는, 상기 복수의 블록들 각각에서 서로 인접한 워드라인들에 대응하는 데이터 청크들 및 서로 동일한 워드라인에 대응하는 데이터 청크들은 동일한 그룹으로 분류되지 않도록, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치. - 제5항에 있어서,
상기 슈퍼 블록은 페이지 오프셋에 따라 형성된 복수의 스트라이프들을 포함하고,
상기 컨트롤러는 상기 복수의 스트라이프들 각각에 대응하는 스트라이프 패리티 데이터를 생성하는 데이터 저장 장치. - 제11항에 있어서,
상기 컨트롤러는 상기 스트라이프 패리티 데이터를 논리 연산함으로써 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치. - 복수의 불휘발성 메모리 장치들을 포함하는 데이터 저장 장치의 동작 방법에 있어서,
상기 복수의 불휘발성 메모리 장치들 각각에 포함된 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하는 단계; 및
상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 패리티 영역에 저장하는 단계를 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역의 속성에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하는 단계; 및
상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제14항에 있어서,
상기 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지하는 단계;
상기 제1 데이터 그룹으로 분류된 데이터 청크들 및 상기 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 복수의 불휘발성 메모리 장치들로부터 리드하는 단계; 및
리드된 데이터 청크들 및 리드된 슈퍼 블록 패리티 데이터에 근거하여, 상기 에러 비트를 정정하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 플래인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하는 단계; 및
상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 워드라인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하는 단계; 및
상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 복수의 블록들 각각에서 서로 인접한 워드라인들에 대응하는 데이터 청크들 및 서로 동일한 워드라인에 대응하는 데이터 청크들은 동일한 그룹으로 분류되지 않도록, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하는 단계; 및
상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제13항에 있어서,
상기 슈퍼 블록에서 페이지 오프셋에 따라 형성된 복수의 스트라이프들 각각에 대응하는 스트라이프 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법. - 제19항에 있어서,
상기 스트라이프 패리티 데이터를 논리 연산함으로써 상기 슈퍼 블록 패리티 데이터를 생성하는 단계를 더 포함하는 데이터 저장 장치의 동작 방법.
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150108642A KR102372825B1 (ko) | 2015-07-31 | 2015-07-31 | 데이터 저장 장치 및 그것의 동작 방법 |
US14/979,965 US10127997B2 (en) | 2015-07-31 | 2015-12-28 | Data storage device comprising super block parity data based on page type of word line or plane |
TW105104518A TWI717335B (zh) | 2015-07-31 | 2016-02-16 | 資料儲存元件 |
CN201610118031.6A CN106409344B (zh) | 2015-07-31 | 2016-03-02 | 数据储存设备及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150108642A KR102372825B1 (ko) | 2015-07-31 | 2015-07-31 | 데이터 저장 장치 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170015757A true KR20170015757A (ko) | 2017-02-09 |
KR102372825B1 KR102372825B1 (ko) | 2022-03-14 |
Family
ID=57883561
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150108642A KR102372825B1 (ko) | 2015-07-31 | 2015-07-31 | 데이터 저장 장치 및 그것의 동작 방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10127997B2 (ko) |
KR (1) | KR102372825B1 (ko) |
CN (1) | CN106409344B (ko) |
TW (1) | TWI717335B (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200032921A (ko) * | 2018-09-19 | 2020-03-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20220059903A (ko) * | 2020-11-03 | 2022-05-10 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | Qlc 데이터 프로그래밍 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391296B (zh) * | 2016-04-27 | 2020-11-06 | 慧荣科技股份有限公司 | 存取闪存模块的方法及相关的闪存控制器与记忆装置 |
US10110255B2 (en) | 2016-04-27 | 2018-10-23 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10019314B2 (en) | 2016-04-27 | 2018-07-10 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN107391026B (zh) | 2016-04-27 | 2020-06-02 | 慧荣科技股份有限公司 | 闪存装置及闪存存储管理方法 |
US9910772B2 (en) | 2016-04-27 | 2018-03-06 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
US10025662B2 (en) | 2016-04-27 | 2018-07-17 | Silicon Motion Inc. | Flash memory apparatus and storage management method for flash memory |
CN111679787B (zh) | 2016-04-27 | 2023-07-18 | 慧荣科技股份有限公司 | 闪存装置、闪存控制器及闪存存储管理方法 |
US10289487B2 (en) | 2016-04-27 | 2019-05-14 | Silicon Motion Inc. | Method for accessing flash memory module and associated flash memory controller and memory device |
US10705911B2 (en) * | 2017-04-24 | 2020-07-07 | Hewlett Packard Enterprise Development Lp | Storing data in a distributed storage system |
KR20190000662A (ko) * | 2017-06-23 | 2019-01-03 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
US10691540B2 (en) | 2017-11-21 | 2020-06-23 | SK Hynix Inc. | Soft chip-kill recovery for multiple wordlines failure |
US10372355B2 (en) | 2017-12-29 | 2019-08-06 | Micron Technology, Inc. | Managing partial superblocks in a NAND device |
KR20210028335A (ko) * | 2019-09-04 | 2021-03-12 | 에스케이하이닉스 주식회사 | 메모리 시스템, 메모리 컨트롤러 및 동작 방법 |
US11321173B2 (en) | 2019-12-31 | 2022-05-03 | Micron Technology, Inc. | Managing storage of multiple plane parity data in a memory sub-system |
US11442808B2 (en) | 2020-03-12 | 2022-09-13 | Kioxia Corporation | Memory system |
JP2022023584A (ja) | 2020-07-27 | 2022-02-08 | キオクシア株式会社 | メモリシステム及び制御方法 |
CN113168866A (zh) * | 2021-03-05 | 2021-07-23 | 长江存储科技有限责任公司 | 用于独立磁盘冗余阵列条带化以防止编程故障的方法及其装置 |
CN115329399B (zh) * | 2022-10-13 | 2023-01-31 | 江苏华存电子科技有限公司 | 基于nand的垂直水平raid4数据保护管理方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120185738A1 (en) * | 2011-01-13 | 2012-07-19 | Micron Technology, Inc. | Determining location of error detection data |
US20130039129A1 (en) * | 2011-08-12 | 2013-02-14 | Micron Technology, Inc. | Memory devices and configuration methods for a memory device |
KR20130097995A (ko) * | 2012-02-27 | 2013-09-04 | 삼성전자주식회사 | 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 |
US8572311B1 (en) * | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US20150019933A1 (en) * | 2013-07-11 | 2015-01-15 | Kabushiki Kaisha Toshiba | Memory controller, storage device, and memory control method |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499337A (en) * | 1991-09-27 | 1996-03-12 | Emc Corporation | Storage device array architecture with solid-state redundancy unit |
US6351838B1 (en) * | 1999-03-12 | 2002-02-26 | Aurora Communications, Inc | Multidimensional parity protection system |
US6862692B2 (en) * | 2001-01-29 | 2005-03-01 | Adaptec, Inc. | Dynamic redistribution of parity groups |
US6993701B2 (en) * | 2001-12-28 | 2006-01-31 | Network Appliance, Inc. | Row-diagonal parity technique for enabling efficient recovery from double failures in a storage array |
US7400549B2 (en) * | 2005-04-28 | 2008-07-15 | Micron Technology, Inc. | Memory block reallocation in a flash memory device |
US8285919B2 (en) * | 2008-05-27 | 2012-10-09 | Initio Corporation | SSD with improved bad block management |
US8984241B2 (en) * | 2010-07-07 | 2015-03-17 | Nexenta Systems, Inc. | Heterogeneous redundant storage array |
US8589730B2 (en) * | 2010-08-31 | 2013-11-19 | Apple Inc. | Handling errors during device bootup from a non-volatile memory |
CN103383610A (zh) * | 2012-05-02 | 2013-11-06 | 北京通世舟数字科技有限责任公司 | 一种液晶屏多点触摸方法 |
US9355024B2 (en) * | 2012-10-10 | 2016-05-31 | Apple Inc. | Systems and methods for nonvolatile memory performance throttling |
US9396062B1 (en) * | 2014-04-04 | 2016-07-19 | Seagate Technology Llc | Group based codes for multi-dimensional recording (MDR) |
CN104461926A (zh) * | 2014-11-27 | 2015-03-25 | 记忆科技(深圳)有限公司 | 一种基于二维raid的固态硬盘数据保护方法 |
US10162700B2 (en) * | 2014-12-23 | 2018-12-25 | International Business Machines Corporation | Workload-adaptive data packing algorithm |
US9489260B1 (en) * | 2015-05-26 | 2016-11-08 | Seagate Technology Llc | Flexible super block sizing for failed sector recovery |
-
2015
- 2015-07-31 KR KR1020150108642A patent/KR102372825B1/ko active IP Right Grant
- 2015-12-28 US US14/979,965 patent/US10127997B2/en active Active
-
2016
- 2016-02-16 TW TW105104518A patent/TWI717335B/zh active
- 2016-03-02 CN CN201610118031.6A patent/CN106409344B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8572311B1 (en) * | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
US20120185738A1 (en) * | 2011-01-13 | 2012-07-19 | Micron Technology, Inc. | Determining location of error detection data |
US20130039129A1 (en) * | 2011-08-12 | 2013-02-14 | Micron Technology, Inc. | Memory devices and configuration methods for a memory device |
KR20130097995A (ko) * | 2012-02-27 | 2013-09-04 | 삼성전자주식회사 | 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템 |
US20150019933A1 (en) * | 2013-07-11 | 2015-01-15 | Kabushiki Kaisha Toshiba | Memory controller, storage device, and memory control method |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20200032921A (ko) * | 2018-09-19 | 2020-03-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작방법 |
KR20220059903A (ko) * | 2020-11-03 | 2022-05-10 | 웨스턴 디지털 테크놀로지스, 인코포레이티드 | Qlc 데이터 프로그래밍 |
US11568938B2 (en) | 2020-11-03 | 2023-01-31 | Western Digital Technologies, Inc. | QLC data programming |
Also Published As
Publication number | Publication date |
---|---|
US20170031751A1 (en) | 2017-02-02 |
US10127997B2 (en) | 2018-11-13 |
TW201705002A (zh) | 2017-02-01 |
CN106409344B (zh) | 2021-03-02 |
TWI717335B (zh) | 2021-02-01 |
KR102372825B1 (ko) | 2022-03-14 |
CN106409344A (zh) | 2017-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102372825B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11586679B2 (en) | Proactive corrective actions in memory based on a probabilistic data structure | |
US11054991B2 (en) | Data storage system scale-out with local address remapping | |
US10303599B2 (en) | Memory system executing garbage collection | |
US9817749B2 (en) | Apparatus and method of offloading processing from a data storage device to a host device | |
US9043517B1 (en) | Multipass programming in buffers implemented in non-volatile data storage systems | |
US9678827B2 (en) | Access counts for performing data inspection operations in data storage device | |
US10347349B2 (en) | Method and device for fail-safe erase of flash memory | |
KR20150041004A (ko) | 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시 | |
KR20210000877A (ko) | 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법 | |
CN108027764B (zh) | 可转换的叶的存储器映射 | |
US10223022B2 (en) | System and method for implementing super word line zones in a memory device | |
US11487609B2 (en) | Separating parity data from host data in a memory sub-system | |
KR20160074025A (ko) | 데이터 저장 장치의 동작 방법 | |
KR20210038096A (ko) | 메모리 시스템, 데이터 시스템 및 그 동작방법 | |
US11810627B2 (en) | Selective read disturb sampling | |
KR20210079611A (ko) | 메모리 시스템의 입출력 성능을 향상시키는 장치 및 방법 | |
WO2017058302A1 (en) | Reduction of write-amplification in object store | |
KR20170009554A (ko) | 테스트 시스템 및 테스트 방법 | |
KR20170086840A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20210012641A (ko) | 메모리 시스템, 데이터 시스템 및 그 동작방법 | |
CN112230843A (zh) | 限制热-冷交换磨损均衡 | |
KR20210045114A (ko) | 메모리 블록을 효율적으로 관리할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법 | |
CN113126906B (zh) | 用于元数据指示的方法和系统 | |
CN111124290A (zh) | 应用于闪存存储装置的冗余方法及闪存存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |