KR102372825B1 - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102372825B1
KR102372825B1 KR1020150108642A KR20150108642A KR102372825B1 KR 102372825 B1 KR102372825 B1 KR 102372825B1 KR 1020150108642 A KR1020150108642 A KR 1020150108642A KR 20150108642 A KR20150108642 A KR 20150108642A KR 102372825 B1 KR102372825 B1 KR 102372825B1
Authority
KR
South Korea
Prior art keywords
data
super block
stored
chunks
controller
Prior art date
Application number
KR1020150108642A
Other languages
English (en)
Other versions
KR20170015757A (ko
Inventor
백승걸
김승환
한종희
구덕회
손익준
Original Assignee
에스케이하이닉스 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스케이하이닉스 주식회사 filed Critical 에스케이하이닉스 주식회사
Priority to KR1020150108642A priority Critical patent/KR102372825B1/ko
Priority to US14/979,965 priority patent/US10127997B2/en
Priority to TW105104518A priority patent/TWI717335B/zh
Priority to CN201610118031.6A priority patent/CN106409344B/zh
Publication of KR20170015757A publication Critical patent/KR20170015757A/ko
Application granted granted Critical
Publication of KR102372825B1 publication Critical patent/KR102372825B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/785Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
    • G11C29/789Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes using non-volatile cells or latches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms

Abstract

데이터 저장 장치는 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들 및 각각이 상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 복수의 슈퍼 블록들 별로 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함한다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 데이터 저장 장치에 관한 것으로, 더욱 상세하게는 에러 비트를 정정할 수 있는 데이터 저장 장치에 관한 것이다.
데이터 저장 장치는 외부 장치의 라이트 요청에 응답하여, 외부 장치로부터 제공된 데이터를 저장하도록 구성될 수 있다. 또한, 데이터 저장 장치는 외부 장치의 리드 요청에 응답하여, 저장된 데이터를 외부 장치로 제공하도록 구성될 수 있다. 외부 장치는 데이터를 처리할 수 있는 전자 장치로서, 컴퓨터, 디지털 카메라 또는 휴대폰 등을 포함할 수 있다. 데이터 저장 장치는 외부 장치에 내장되어 동작하거나, 분리 가능한 형태로 제작되어 외부 장치에 연결됨으로써 동작할 수 있다.
본 발명의 실시 예는, 적은 용량을 차지하는 패리티 데이터를 통해 보다 향상된 데이터 신뢰성을 보장하는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들 및 각각이 상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 복수의 슈퍼 블록들 별로 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치는, 각각이 복수의 블록들 및 패리티 영역을 포함하는 복수의 불휘발성 메모리 장치들 및 상기 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하고, 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 페리티 영역에 저장하도록 구성된 컨트롤러를 포함할 수 있다.
본 발명의 실시 예에 따른 복수의 불휘발성 메모리 장치들을 포함하는 데이터 저장 장치의 동작 방법은, 상기 복수의 불휘발성 메모리 장치들 각각에 포함된 복수의 블록들 중에 동일한 블록 오프셋을 가진 블록들을 포함하는 슈퍼 블록에 복수의 데이터 청크들을 저장하는 단계 및 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 패리티 영역에 저장하는 단계를 포함할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치 및 그것의 동작 방법은 적은 용량을 차지하는 패리티 데이터를 통해 보다 향상된 데이터 신뢰성을 보장할 수 있다.
도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는 본 발명의 실시 예에 따른 데이터 저장 장치가 적용된 데이터 처리 시스템을 도시하는 블록도이다.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.
도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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00001
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00002
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00003
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00004
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00005
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00006
컨트롤러(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)로 분류되는 기준을 간략하게 도시한다.
Figure 112015074579833-pat00007
컨트롤러(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: 불휘발성 메모리 장치

Claims (23)

  1. 각각이 복수의 블록들을 포함하는 복수의 불휘발성 메모리 장치들; 및
    상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 슈퍼 블록에 저장될 복수의 데이터 청크들에 대해 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함하되,
    상기 복수의 데이터 청크들 중 제1 데이터 청크 및 제2 데이터 청크는 상기 슈퍼 블록에 포함된 제1 블록의 서로 다른 워드라인들에 대응하는 페이지들에 저장되는 데이터 저장 장치.
  2. ◈청구항 2은(는) 설정등록료 납부시 포기되었습니다.◈
    제1항에 있어서,
    상기 컨트롤러는, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하고,
    상기 복수의 데이터 청크들 각각은 상기 슈퍼 블록에서 저장될 타겟 영역의 속성에 따라 상기 복수의 데이터 그룹들 중 어느 하나로 분류되는 데이터 저장 장치.
  3. ◈청구항 3은(는) 설정등록료 납부시 포기되었습니다.◈
    제2항에 있어서,
    상기 속성은, 상기 타겟 영역에 대응하는 플래인 오프셋, 워드라인 오프셋, 페이지 오프셋 및 페이지 타입 중 적어도 하나를 포함하는 데이터 저장 장치.
  4. ◈청구항 4은(는) 설정등록료 납부시 포기되었습니다.◈
    제2항에 있어서,
    상기 컨트롤러는 상기 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지한 경우, 상기 제1 데이터 그룹으로 분류된 데이터 청크들 및 상기 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터에 근거하여, 상기 에러 비트를 정정하는 데이터 저장 장치.
  5. 각각이 복수의 블록들 및 패리티 영역을 포함하는 복수의 불휘발성 메모리 장치들; 및
    상기 복수의 불휘발성 메모리 장치들에 걸쳐 있는 슈퍼 블록에 복수의 데이터 청크들을 저장하고, 상기 복수의 데이터 청크들에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 패리티 영역에 저장하도록 구성된 컨트롤러를 포함하되,
    상기 복수의 데이터 청크들 중 제1 데이터 청크 및 제2 데이터 청크는 상기 슈퍼 블록에 포함된 제1 블록의 서로 다른 워드라인들에 대응하는 페이지들에 저장되는 데이터 저장 장치.
  6. ◈청구항 6은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역의 속성에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  7. ◈청구항 7은(는) 설정등록료 납부시 포기되었습니다.◈
    제6항에 있어서,
    상기 컨트롤러는, 상기 복수의 데이터 그룹들 중 제1 데이터 그룹으로 분류된 데이터 청크에 에러 비트가 발생했음을 감지한 경우, 상기 제1 데이터 그룹으로 분류된 데이터 청크들 및 상기 제1 데이터 그룹에 대해 생성된 슈퍼 블록 패리티 데이터를 상기 복수의 불휘발성 메모리 장치들로부터 리드하고, 리드된 데이터 청크들 및 리드된 슈퍼 블록 패리티 데이터에 근거하여, 상기 에러 비트를 정정하는 데이터 저장 장치.
  8. ◈청구항 8은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 플래인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  9. ◈청구항 9은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 컨트롤러는, 상기 슈퍼 블록에서 상기 복수의 데이터 청크들 각각이 저장될 타겟 영역에 대응하는 워드라인 오프셋 및 페이지 타입에 따라, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  10. ◈청구항 10은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 컨트롤러는, 상기 복수의 블록들 각각에서 서로 인접한 워드라인들에 대응하는 데이터 청크들 및 서로 동일한 워드라인에 대응하는 데이터 청크들은 동일한 그룹으로 분류되지 않도록, 상기 복수의 데이터 청크들을 복수의 데이터 그룹들로 분류하고, 상기 복수의 데이터 그룹들 각각에 대해 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  11. ◈청구항 11은(는) 설정등록료 납부시 포기되었습니다.◈
    제5항에 있어서,
    상기 슈퍼 블록은 페이지 오프셋에 따라 형성된 복수의 스트라이프들을 포함하고,
    상기 컨트롤러는 상기 복수의 스트라이프들 각각에 대응하는 스트라이프 패리티 데이터를 생성하는 데이터 저장 장치.
  12. ◈청구항 12은(는) 설정등록료 납부시 포기되었습니다.◈
    제11항에 있어서,
    상기 컨트롤러는 상기 스트라이프 패리티 데이터를 논리 연산함으로써 상기 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 복수의 블록들을 포함하되, 상기 복수의 블록들은 복수의 워드라인들을 통해 액세스되는 복수의 페이지들을 포함하고, 상기 복수의 워드라인들 각각은 적어도 최하위비트(LSB) 페이지 및 최상위비트(MSB) 페이지에 대응하는, 복수의 불휘발성 메모리 장치; 및
    상기 복수의 페이지들에 복수의 데이터 청크들을 저장하고, 상기 복수의 워드라인들 중 짝수 워드라인들에 대응하는 LSB 페이지들에 저장된 데이터 청크들에 대해 제1 슈퍼 블록 패리티 데이터를 생성하고, 상기 짝수 워드라인들에 대응하는 MSB 페이지들에 저장된 데이터 청크들에 대해 제2 슈퍼 블록 패리티 데이터를 생성하고, 상기 복수의 워드라인들 중 홀수 워드라인들에 대응하는 LSB 페이지들에 저장된 데이터 청크들에 대해 제3 슈퍼 블록 패리티 데이터를 생성하고, 상기 홀수 워드라인들에 대응하는 MSB 페이지들에 저장된 데이터 청크들에 대해 제4 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 복수의 페이지들의 서로 다른 속성들에 각각 대응하는 메모리들을 포함하고, 상기 속성들 중 데이터 청크가 저장되는 페이지의 속성을 상기 데이터 청크의 속성으로 결정하고, 상기 데이터 청크의 상기 속성에 대응하는 메모리에 이전에 저장되어 있던 슈퍼 블록 패리티 데이터 및 상기 데이터 청크에 근거하여 새로운 슈퍼 블록 패리티 데이터를 생성하고 상기 메모리에 상기 새로운 슈퍼 블록 패리티 데이터를 저장함으로써 상기 데이터 청크에 대한 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  22. 복수의 블록들을 포함하되, 상기 복수의 블록들은 복수의 워드라인들을 통해 액세스되는 복수의 페이지들을 포함하고, 상기 복수의 워드라인들 각각은 적어도 최하위비트(LSB) 페이지 및 최상위비트(MSB) 페이지에 대응하고, 각각이 상기 복수의 블록들 중 제1 블록을 포함하는 제1 플래인 및 상기 복수의 블록들 중 제2 블록을 포함하는 제2 플래인을 포함하는, 복수의 불휘발성 메모리 장치; 및
    상기 복수의 페이지들에 복수의 데이터 청크들을 저장하고, 제1 플래인들의 LSB 페이지들에 저장된 데이터 청크들에 대해 제1 슈퍼 블록 패리티 데이터를 생성하고, 상기 제1 플래인들의 MSB 페이지들에 저장된 데이터 청크들에 대해 제2 슈퍼 블록 패리티 데이터를 생성하고, 제2 플래인들의 LSB 페이지들에 저장된 데이터 청크들에 대해 제3 슈퍼 블록 패리티 데이터를 생성하고, 상기 제2 플래인들의 MSB 페이지들에 저장된 데이터 청크들에 대해 제4 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 복수의 페이지들의 서로 다른 속성들에 각각 대응하는 메모리들을 포함하고, 상기 속성들 중 데이터 청크가 저장되는 페이지의 속성을 상기 데이터 청크의 속성으로 결정하고, 상기 데이터 청크의 상기 속성에 대응하는 메모리에 이전에 저장되어 있던 슈퍼 블록 패리티 데이터 및 상기 데이터 청크에 근거하여 새로운 슈퍼 블록 패리티 데이터를 생성하고 상기 메모리에 상기 새로운 슈퍼 블록 패리티 데이터를 저장함으로써 상기 데이터 청크에 대한 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
  23. 복수의 블록들을 포함하되, 상기 복수의 블록들은 복수의 워드라인들을 통해 액세스되는 복수의 페이지들을 포함하고, 각각이 상기 복수의 블록들 중 제1 블록을 포함하는 제1 플래인 및 상기 복수의 블록들 중 제2 블록을 포함하는 제2 플래인을 포함하는, 복수의 불휘발성 메모리 장치; 및
    상기 복수의 페이지들에 복수의 데이터 청크들을 저장하고, 제1 플래인들의 짝수 워드라인들에 대응하는 페이지들에 저장된 데이터 청크들에 대해 제1 슈퍼 블록 패리티 데이터를 생성하고, 상기 제1 플래인들의 홀수 워드라인들에 대응하는 페이지들에 저장된 데이터 청크들에 대해 제2 슈퍼 블록 패리티 데이터를 생성하고, 제2 플래인들의 짝수 워드라인들에 대응하는 페이지들에 저장된 데이터 청크들에 대해 제3 슈퍼 블록 패리티 데이터를 생성하고, 상기 제2 플래인들의 홀수 워드라인들에 대응하는 페이지들에 저장된 데이터 청크들에 대해 제4 슈퍼 블록 패리티 데이터를 생성하도록 구성된 컨트롤러를 포함하되,
    상기 컨트롤러는 상기 복수의 페이지들의 서로 다른 속성들에 각각 대응하는 메모리들을 포함하고, 상기 속성들 중 데이터 청크가 저장되는 페이지의 속성을 상기 데이터 청크의 속성으로 결정하고, 상기 데이터 청크의 상기 속성에 대응하는 메모리에 이전에 저장되어 있던 슈퍼 블록 패리티 데이터 및 상기 데이터 청크에 근거하여 새로운 슈퍼 블록 패리티 데이터를 생성하고 상기 메모리에 상기 새로운 슈퍼 블록 패리티 데이터를 저장함으로써 상기 데이터 청크에 대한 슈퍼 블록 패리티 데이터를 생성하는 데이터 저장 장치.
KR1020150108642A 2015-07-31 2015-07-31 데이터 저장 장치 및 그것의 동작 방법 KR102372825B1 (ko)

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 KR20170015757A (ko) 2017-02-09
KR102372825B1 true 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)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107391296B (zh) * 2016-04-27 2020-11-06 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
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
US9910772B2 (en) 2016-04-27 2018-03-06 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
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
CN107391026B (zh) 2016-04-27 2020-06-02 慧荣科技股份有限公司 闪存装置及闪存存储管理方法
US10025662B2 (en) 2016-04-27 2018-07-17 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
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
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
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 キオクシア株式会社 メモリシステム及び制御方法
US11568938B2 (en) 2020-11-03 2023-01-31 Western Digital Technologies, Inc. QLC data programming
CN115329399B (zh) * 2022-10-13 2023-01-31 江苏华存电子科技有限公司 基于nand的垂直水平raid4数据保护管理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
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
US20150019933A1 (en) 2013-07-11 2015-01-15 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method

Family Cites Families (16)

* Cited by examiner, † Cited by third party
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
US8677203B1 (en) * 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
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
KR101826051B1 (ko) * 2012-02-27 2018-02-07 삼성전자주식회사 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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
US20150019933A1 (en) 2013-07-11 2015-01-15 Kabushiki Kaisha Toshiba Memory controller, storage device, and memory control method

Also Published As

Publication number Publication date
CN106409344B (zh) 2021-03-02
US20170031751A1 (en) 2017-02-02
CN106409344A (zh) 2017-02-15
KR20170015757A (ko) 2017-02-09
TW201705002A (zh) 2017-02-01
US10127997B2 (en) 2018-11-13
TWI717335B (zh) 2021-02-01

Similar Documents

Publication Publication Date Title
KR102372825B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11586679B2 (en) Proactive corrective actions in memory based on a probabilistic data structure
US9817749B2 (en) Apparatus and method of offloading processing from a data storage device to a host device
US10347349B2 (en) Method and device for fail-safe erase of flash memory
US9898363B2 (en) Data storage device and operating method thereof
US10268540B2 (en) Data storage device and operating method thereof
CN108027764B (zh) 可转换的叶的存储器映射
US20210407612A1 (en) Two-Layer Code with Low Parity Cost for Memory Sub-Systems
US11487609B2 (en) Separating parity data from host data in a memory sub-system
US10133645B2 (en) Data recovery in three dimensional non-volatile memory array after word line short
US10133764B2 (en) Reduction of write amplification in object store
KR20170086840A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN113010098A (zh) 用于提高存储器系统的输入/输出吞吐量的设备和方法
KR20170093370A (ko) 데이터 저장 장치
US11360885B2 (en) Wear leveling based on sub-group write counts in a memory sub-system
US11934264B2 (en) ECC parity biasing for Key-Value data storage devices
US20170017417A1 (en) Data storage device and operating method thereof
KR20220005832A (ko) 메타 데이터 관리를 위한 메모리 시스템 및 메모리 시스템의 동작방법
CN112328508A (zh) 多层存储器中的层交错
KR20170009554A (ko) 테스트 시스템 및 테스트 방법
US11789861B2 (en) Wear leveling based on sub-group write counts in a memory sub-system
US10747661B2 (en) Data storage device and operating method thereof
CN117435519A (zh) 用于减少块转移损失的缓冲器分配

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right