KR102549605B1 - Raid 스토리지 장치의 리커버리 방법 - Google Patents

Raid 스토리지 장치의 리커버리 방법 Download PDF

Info

Publication number
KR102549605B1
KR102549605B1 KR1020160026263A KR20160026263A KR102549605B1 KR 102549605 B1 KR102549605 B1 KR 102549605B1 KR 1020160026263 A KR1020160026263 A KR 1020160026263A KR 20160026263 A KR20160026263 A KR 20160026263A KR 102549605 B1 KR102549605 B1 KR 102549605B1
Authority
KR
South Korea
Prior art keywords
recovery
raid
sub
recovery operation
data
Prior art date
Application number
KR1020160026263A
Other languages
English (en)
Other versions
KR20170104073A (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 KR1020160026263A priority Critical patent/KR102549605B1/ko
Priority to US15/429,486 priority patent/US10467094B2/en
Publication of KR20170104073A publication Critical patent/KR20170104073A/ko
Application granted granted Critical
Publication of KR102549605B1 publication Critical patent/KR102549605B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/0689Disk arrays, e.g. RAID, JBOD
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/85Active fault masking without idle spares
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/103Hybrid, i.e. RAID systems with parity comprising a mix of RAID types
    • 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/0409Online test
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/021Detection or location of defective auxiliary circuits, e.g. defective refresh counters in voltage or current generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • 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/74Masking faults in memories by using spares or by reconfiguring using duplex memories, i.e. using dual copies

Abstract

본 발명의 실시 예에 따른 복수의 불휘발성 메모리 장치들을 포함하는 레이드(RAID) 스토리지 장치의 리커버리 방법은, 상기 복수의 불휘발성 메모리 장치들로부터 정정 불가 에러가 발생한 데이터 청크를 읽어오는 단계, 상기 데이터 청크와 관련된 스트라이프 중에서 상기 데이터 청크를 포함하지 않으며, 패리티를 포함하는 복수의 서브-스트라이프들을 선택하는 단계, 그리고 상기 데이터 청크를 복구하기 위해 읽기 레벨 조정을 포함하는 제 1 리커버리 동작과, 상기 복수의 서브-스트라이프들을 처리하여 상기 데이터 청크가 포함되는 서브-스트라이프를 복구하기 위한 제 2 리커버리 동작을 병행하는 단계를 포함하되, 상기 제 1 리커버리 동작과 상기 제 2 리커버리 동작 중 먼저 완료되는 어느 하나에 따라 상기 병행하는 단계가 종료된다.

Description

RAID 스토리지 장치의 리커버리 방법{RECOVERING METHOD OF RAID STORAGE DEVICE}
본 발명은 반도체 메모리 장치에 관한 것으로, 좀 더 구체적으로는 RAID 스토리지 장치의 리커버리 방법에 관한 것이다.
플래시 메모리 장치는 컴퓨터, 스마트폰, PDA, 디지털 카메라, 캠코더, 보이스 리코더, MP3 플레이어, 휴대용 컴퓨터(Handheld PC)와 같은 정보 기기들의 음성 및 영상 데이터 저장 매체로서 널리 사용되고 있다. 그러나 플래시 메모리에 데이터를 기입하기 위해서는 소거 동작이 반드시 선행되어야 하며, 기입되는 데이터의 단위보다 삭제되는 데이터의 단위가 크다는 특징이 있다. 이러한 특징은 플래시 메모리가 보조기억장치로 사용되는 경우에도 일반 하드디스크용 파일 시스템(File System)을 그대로 활용하는 것을 저해하는 요인이 된다. 더불어, 이러한 특징은 플래시 메모리로의 연속적인(Sequential) 입출력 처리가 비연속적 입출력 처리보다 효율적임을 암시한다.
플래시 메모리 기반의 대용량 스토리지 장치의 예로 솔리드 스테이트 드라이브(Solid State Drive: 이하, SSD)가 대표적이다. SSD의 폭발적인 수요 증가와 함께 그 용도는 다양하게 분화되고 있다. 예를 들면, 서버용 SSD, 클라이언트용 SSD, 데이터 센터용 SSD 등으로 용도가 세분화될 수 있다. SSD의 인터페이스는 이러한 각각의 용도에 따라 최적의 속도와 신뢰성을 제공할 수 있어야 한다. 이러한 요구를 충족하기 위해서 최적의 SSD 인터페이스로 SATA, PCIe, SAS 등이 적용되고 있다.
더불어, 높은 신뢰성을 위해 복수의 스토리지 장치를 포함하는 스토리지 장치가 사용된다. 예로서, RAID(Redundant Array of Independent Disks) 스토리지 시스템은 하나의 데이터를 분할하고, 분할된 "서브-스트라이프(Data Chunk)"들을 복수의 스토리지 장치에 분산하여 저장한다. 복수의 스토리지 장치가 동시에 문제를 야기하는 경우는 거의 발생하지 않기 때문에, 이러한 스토리지 장치는 데이터의 높은 신뢰성을 보장할 수 있다.
본 발명의 목적은 RAID 스토리지 장치에서 정정 불가한 에러(Uncorrectable Error)가 발생하는 경우, 이러한 에러의 복구에 소요되는 시간을 단축하는 리커버리 방법 및 장치를 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 실시 예에 따른 복수의 불휘발성 메모리 장치들을 포함하는 레이드(RAID) 스토리지 장치의 리커버리 방법은, 상기 복수의 불휘발성 메모리 장치들로부터 정정 불가 에러가 발생한 데이터 청크를 읽어오는 단계, 상기 데이터 청크와 관련된 스트라이프 중에서 상기 데이터 청크를 포함하지 않으며, 패리티를 포함하는 복수의 서브-스트라이프들을 선택하는 단계, 그리고 상기 데이터 청크를 복구하기 위해 읽기 레벨 조정을 포함하는 제 1 리커버리 동작과, 상기 복수의 서브-스트라이프들을 처리하여 상기 데이터 청크가 포함되는 서브-스트라이프를 복구하기 위한 제 2 리커버리 동작을 병행하는 단계를 포함하되, 상기 제 1 리커버리 동작과 상기 제 2 리커버리 동작 중 먼저 완료되는 어느 하나에 따라 상기 병행하는 단계가 종료된다.
상기 목적을 달성하기 위한 본 발명에 따른 복수의 불휘발성 메모리 장치들을 포함하는 레이드(RAID) 스토리지 장치의 리커버리 방법은, 상기 복수의 불휘발성 메모리 장치들로부터 정정 불가 에러가 발생한 데이터 청크를 읽어오는 단계, 상기 정정 불가 에러가 발생한 데이터 청크를 복구하기 위한 제 1 리커버리 동작과 제 2 리커버리 동작 각각에 소요되는 시간 또는 실행에 따른 영향을 예측하는 단계, 그리고 상기 예측 결과를 참조하여 제 1 리커버리 동작과 제 2 리커버리 동작 중에서 상기 데이터 청크를 복구하기 위한 어느 하나를 선택하는 단계를 포함하되, 상기 제 1 리커버리 동작은 상기 데이터 청크를 사용하고, 상기 제 2 리커버리 동작은 상기 데이터 청크를 포함하지 않으며, 패리티를 포함하는 복수의 서브-스트라이프들을 사용한다.
이상과 같은 본 발명의 실시 예에 따르면, 정정 불가한 오류가 발생하는 경우에 복구에 소요되는 시간을 최소화할 수 있는 복구 방법이 선택될 수 있다. 그리고 선택된 복구 절차에 따라 정정 불가한 에러에 대해서 높은 데이터 신뢰성을 갖는 RAID 스토리지 장치가 제공될 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 보여주는 블록도이다.
도 2는 도 1의 스토리지 컨트롤러(210)의 구성을 보여주는 블록도이다.
도 3은 본 발명의 RAID 엔진의 동작을 예시적으로 보여주는 블록도이다.
도 4는 본 발명의 플래시 리커버리 및 RAID 리커버리 동작의 대상이 되는 데이터 단위를 예시적으로 보여주는 블록도이다.
도 5는 본 발명의 일 실시 예에 따른 병행 리커버리 동작을 간략히 보여주는 순서도이다
도 6은 도 5의 S140 단계의 일 실시 예를 구체적으로 도시한 순서도이다.
도 7은 본 발명의 다른 실시 예에 따른 병행 리커버리 동작을 보여주는 순서도이다.
도 8은 본 발명의 병행 리커버리 동작을 시간축에 따라 표현한 도면이다.
도 9는 본 발명의 다른 실시 예에 따른 예측 리커버리 동작을 간략히 보여주는 순서도이다.
도 10은 도 9의 S240 단계의 일 실시 예를 보여주는 순서도이다.
도 11은 도 9의 S240 단계의 다른 실시 예를 보여주는 순서도이다.
도 12는 본 발명의 예측 리커버리 동작시 어느 하나의 리커버리 방식을 결정하는 다른 방법을 예시적으로 보여주는 도면이다.
도 13은 본 발명의 스토리지에 포함되는 메모리 블록들 중 제 1 메모리 블록의 예를 보여주는 회로도이다.
도 14는 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다.
도 15는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다.
도 16은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
이하에서는, 플래시 메모리 장치를 사용하는 솔리드 스테이트 드라이브(SSD)가 본 발명의 특징 및 기능을 설명하기 위한 예로서 사용될 것이다. 하지만, 이 기술 분야에 정통한 사람은 여기에 기재된 내용에 따라 본 발명의 다른 이점들 및 성능을 쉽게 이해할 수 있을 것이다. 더불어, 본 발명에서 정정 불가 에러(Un-Correctable Error: 이하, UCE)를 복구하기 위한 기술로서 플래시 리커버리(Flash Recovery:이하, FR)와 RAID 리커버리(RAID Recovery: 이하, RR)가 예시적으로 설명될 것이다. 정정 불가 에러(UCE)는 스토리지 장치에 구비된 에러 정정 엔진(ECC engine)의 정정 능력을 초과하는 에러를 의미한다. 그리고 플래시 리커버리(FR)는 정정 불가 에러(UCE)를 해소하기 위하여 수행되는 플래시 다양한 복구 방식들의 조합을 의미한다. 예를 들면, 플래시 리커버리(FR)에는 읽기 레벨의 조정이나 벨리 서치 등과 같은 데이터 복구 절차들이 포함될 수 있다. RAID 리커버리(RR)는 RAID 스트라이프 내에서 정정 불가 에러(UCE)가 발생하지 않은 데이터를 사용하여 정정 불가 에러(UCE)가 발생한 단위의 데이터를 복구하는 기술이다. 본 발명은 다른 실시 예들을 통해 또한, 구현되거나 적용될 수 있을 것이다. 게다가, 상세한 설명은 본 발명의 범위, 기술적 사상 그리고 다른 목적으로부터 상당히 벗어나지 않고 관점 및 응용에 따라 수정되거나 변경될 수 있다.
도 1은 본 발명의 실시 예에 따른 사용자 장치를 간략히 보여주는 블록도이다. 도 1을 참조하면, 사용자 장치(10)는 호스트(100)와 RAID 스토리지 장치(200)를 포함한다. 호스트(100)는 데이터를 독출하기 위해 RAID 스토리지 장치(200)에 읽기 요청(Read Req.)을 전송할 것이다. 그러면, RAID 스토리지 장치(200)는 요청된 데이터(Data)를 복수의 불휘발성 메모리 장치들(230, 240, 250)로부터 독출하여 전달할 것이다. 여기서, 호스트(100)의 읽기 요청(Read Req.)이 본 발명의 특징을 설명하기 위한 예로서 제시되었다. 하지만, RAID 스토리지 장치(200)의 복수의 불휘발성 메모리 장치들(230, 240, 250)에 대한 읽기는 여기에만 국한되지 않는다. RAID 스토리지 장치(200) 내부적으로 수행될 수 있는 읽기 동작으로는 가비지 컬렉션(Garbage Collection)이나 메타 데이터(Meta Data) 읽기 등이 있다. 더불어, 프리 블록(Free Block)의 수를 확보하기 위한 가비지 컬렉션이나 오픈 타임(Open Time)에서의 메타 데이터의 읽기 등은 호스트(100)의 읽기 요청과 마찬가지로 빠른 응답성이 요구되기도 한다. 따라서, 외부로부터의 명령이나 제어 없이 RAID 스토리지 장치(200) 내부적으로 불휘발성 메모리 장치들(230, 240, 250)에 대한 읽기 동작에서도 본 발명의 리커버리 방식이 적용될 수 있음은 잘 이해될 것이다. 특히, RAID 스토리지 장치(200)는 정정 불가 에러(UCE)가 발생하는 경우에, 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 복구에 소요되는 시간이 짧은 방식을 선택할 수 있다. 또는, RAID 스토리지 장치(200)는 플래시 리커버리(FR)와 RAID 리커버리(RR)를 병렬적으로 수행하고, 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 데이터 복구를 먼저 완료하는 시점에 제반 데이터 복구를 완료할 수 있다.
호스트(100)는 RAID 스토리지 장치(200)에 데이터를 기입하거나, RAID 스토리지 장치(200)에 저장된 데이터를 읽어낸다. 호스트(100)는 RAID 스토리지 장치(200)에 명령어, 어드레스, 그리고 데이터를 제공할 수 있다. 호스트(100)는 RAID 스토리지 장치(200)로부터 명령어나 어드레스를 사용하여 데이터를 요청할 수 있다. 예로서, 호스트(100)는 적어도 하나의 프로세서를 포함할 수 있다. 호스트(100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
RAID 스토리지 장치(200)는 호스트(100)로부터 제공되는 명령어(CMD)에 응답하여 불휘발성 메모리 장치들(230, 240, 250)에 접근하거나, 호스트(100)에 의해서 요청된 다양한 동작을 수행할 수 있다. RAID 스토리지 장치(200)는 특히, 호스트(100)에서 제공되는 명령어 또는 어드레스에 따라 버퍼(220)나 불휘발성 메모리 장치(230, 240, 250)에 저장된 데이터를 읽어낼 수 있다. 그리고 RAID 스토리지 장치(200)는 읽혀진 데이터(Data)를 호스트(100)로 전송할 것이다. RAID 스토리지 장치(200)는, 스토리지 컨트롤러(210), 버퍼(220), 그리고 복수의 불휘발성 메모리 장치(230, 240, 250)를 포함할 수 있다.
스토리지 컨트롤러(210)는 호스트(100)와 RAID 스토리지 장치(200) 사이에서 인터페이싱을 제공한다. 특히, 스토리지 컨트롤러(210)는 읽기 동작 중에 정정 불가 에러(UCE)가 발생하는 경우에 플래시 리커버리(FR)와 RAID 리커버리(RR)를 병렬적으로 수행할 수 있다. 그리고 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 먼저 정정 불가 에러(UCE)를 복구하는 시점에 복구 동작을 완료하고, 복구된 데이터를 호스트(100)로 전송할 수 있다. 또는, 정정 불가 에러(UCE)가 발생하는 경우에 스토리지 컨트롤러(210)는 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 정정 불가 에러(UCE)를 먼저 복구하는 처리 방식을 예측할 수 있다. 그리고 예측된 방식에 의해서 정정 불가 에러(UCE)의 복구 동작을 실시할 수 있다. 상술한 복구 방식을 사용하기 위해 스토리지 컨트롤러(210)는 RAID 엔진(212)과 ECC 엔진(214)을 포함할 수 있다.
RAID 엔진(212)은 쓰기 요청되는 데이터를 복수의 불휘발성 메모리 장치들(230, 240, 250)에 RAID 방식으로 저장하기 위한 스트라이프(Stripe) 단위로 처리한다. 예를 들면, 하나의 스트라이프는 복수의 불휘발성 메모리 장치들(230, 240, 250) 각각에 저장되는 서브-스트라이프들(Sub-stripes)로 분리될 것이다. 서브-스트라이프(Sub-stripe)들 중에는 나머지 서브-스트라이프들을 사용하여 생성한 RAID 패리티(RAID Parity)가 하나 또는 그 이상이 포함될 수 있다. 만일, 하나의 스트라이프에 포함되는 서브-스트라이프들 중 하나 또는 그 이상의 서브-스트라이프에 정정 불가 에러(UCE)가 발생하면, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 수행하여 하나의 스트라이프를 복구할 수 있다.
더불어, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 포함하여 다양한 복구 기능을 동원하여 정정 불가 에러(UCE)를 정정할 수 있다. 예를 들면, 스토리지 컨트롤러(210)는 정정 불가 에러(UCE)가 발생한 서브-스트라이프(Chunk)에 대해 플래시 리커버리(FR)를 적용할 수 있다. 예를 들면, 어느 하나의 불휘발성 메모리 장치에서 발생한 청크에 대해서 다양한 읽기 환경 조정, 벨리 서치(Valley search), ECC 등의 기법들을 포함하는 플래시 리커버리(FR)를 적용할 수 있다.
이상의 본 발명의 실시 예에 따르면, RAID 스토리지 장치(200)는 호스트(100)로부터 읽기 요청된 데이터에 정정 불가 에러(UCE)가 검출되면, 본 발명에 따른 플래시 리커버리(FR)와 RAID 리커버리(RR)를 함께 수행할 수 있다. 그리고 먼저 복구되는 동작에 따라 러커버리 동작을 완료할 수 있다. 또는, RAID 스토리지 장치(200)는 불휘발성 메모리 장치들(230, 240, 250)의 웨어 레벨링 정보(Wear-leveling Information)나 읽기 교란(Read disturbance) 정보 등을 참조하여 복구 방식을 선택할 수 있다. 즉, RAID 스토리지 장치(200)는 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각에 소요되는 시간을 계산할 수 있다. RAID 스토리지 장치(200)는 복구에 소요되는 시간이 짧은 리커버리 방식을 정정 불가 에러(UCE)의 처리 연산에 적용할 수 있을 것이다. 다른 실시 예에서, RAID 스토리지 장치(200)는 불휘발성 메모리 장치들(230, 240, 250) 상태 정보 등을 참조하여 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각에 의한 수명이나 성능에 미치는 영향을 정량적으로 계산할 수 있다. RAID 스토리지 장치(200)는 계산 결과에 따라 이점이 큰 리커버리 방식을 선택할 수 있을 것이다.
도 2는 도 1에 도시된 스토리지 컨트롤러(210)의 구성을 예시적으로 보여주는 블록도이다. 도 2를 참조하면, 본 발명의 스토리지 컨트롤러(210)는 중앙처리장치(211), RAID 엔진(212), 호스트 인터페이스(213), ECC 엔진(214), 버퍼 매니저(215) 및 플래시 인터페이스(217)를 포함한다.
중앙처리장치(211)는 불휘발성 메모리 장치들(230, 240, 250, 도 1 참조)에 대한 읽기/쓰기 동작에 필요한 다양한 제어 정보를 호스트 인터페이스(213) 및 플래시 인터페이스(217)의 레지스터들에 전달한다. 중앙처리장치(211)는 스토리지 컨트롤러(210)의 다양한 제어 동작을 위해 제공되는 펌웨어에 따라 동작할 수 있다. 예를 들면, 중앙처리장치(211)는 불휘발성 메모리 장치들(230, 240, 250)을 관리하기 위한 가비지 컬렉션(Garbage collection)이나, 주소 맵핑, 웨어 레벨링 등을 수행하기 위한 플래시 변환 계층(FTL)을 실행할 수 있다.
중앙처리장치(211)는 특히 본 발명의 실시 예에 따른 리커버리 동작을 수행할 수 있다. 중앙처리장치(211)는 읽기 요청된 데이터에 정정 불가 에러(UCE)가 검출되면, 플래시 리커버리(FR)와 RAID 리커버리(RR)를 병행할 수 있다. 이하에서는 이러한 리커버리 방식을 병행 리커버리(Parallel recovery) 방식이라 칭하기로 한다. 중앙처리장치(211)는 병행 리커버리 동작시에 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 먼저 에러를 복구하는 동작에 응답하여 제반 리커버리 동작을 완료할 수 있다. 또는, 중앙처리장치(211)는 리커버리에 소요되는 시간을 예측하거나, 리커버리의 수행에 따른 손실을 예측하고, 예측 결과에 따라 플래시 리커버리(FR)와 RAID 리커버리(RR) 중 어느 하나를 선택할 수 있을 것이다. 이러한 리커버리 방식을 이하에서는 예측 리커버리(Predictive recovery) 방식이라 칭하기로 한다.
상술한 병행 리커버리나 예측 리커버리 동작을 위해 중앙처리장치(211)에서는 대응하는 리커버리 알고리즘이 실행될 수 있을 것이다. 병행 리커버리나 예측 리커버리를 위한 알고리즘은 RAID 스토리지 장치(200)에 구비되는 롬(ROM, 미도시)이나 불휘발성 메모리 장치들(230, 240, 250)에 저장될 수 있다. 그리고 부팅시에 내부 버퍼(220)에 로드되고, 중앙처리장치(211)에 의해서 실행될 수 있을 것이다.
RAID 엔진(212)은 호스트(100)로부터 제공되는 데이터를 스트라이프 단위로 구분하고, 각각의 스트라이프(Stripe)를 불휘발성 메모리 장치들(230, 240, 250) 각각에 서브-스트라이프 단위로 분배하여 저장한다. RAID 엔진(212)은 스트라이프 단위로 데이터를 생성하기 위해 패리티를 생성할 수 있다. 패리티에 대응하는 서브-스트라이프의 수나 구성 방식은 RAID 타입에 따라 다르게 구성될 수 있음은 잘 이해될 것이다. 각각의 서브-스트라이프는 ECC 디코딩이 가능한 적어도 하나의 서브-스트라이프를 포함할 수 있다.
여기서, 설명될 RAID는 다양한 레벨일 수 있다. 예를 들어, RAID 레벨 0(Striped set without parity or Striping), RAID 레벨 1(Mirrored set without parity or Mirroring), RAID 레벨 2(Hamming code parity),RAID 레벨 3(Striped set with dedicated parity, bit interleaved parity, or byte level parity), RAID 레벨 4(Block level parity), RAID 레벨 5(Striped set with distributed parity or interleave parity), RAID 레벨 6(Striped set with dual distributed parity), RAID 레벨 7, RAID 레벨 10, 및 RAID 레벨 53 중에서 어느 하나 또는 상기 RAID 레벨들 중에서 적어도 2개를 혼합한(merged) RAID 레벨(예컨대, RAID 0+1, RAID 1+0,RAID 5+0, RAID 5+1, 또는 RAID 0+1+5)일 수도 있다.
호스트 인터페이스(213)는 호스트(100)와의 통신을 수행할 수 있다. 예를 들면, 호스트 인터페이스(213)는 호스트(100)와의 통신 채널을 제공한다. 호스트 인터페이스(213)는 호스트(100)와 RAID 스토리지 장치(200)와의 물리적 연결을 제공한다. 즉, 호스트 인터페이스(213)는 호스트(100)의 버스 포맷(Bus format)에 대응하여 RAID 스토리지 장치(200)와의 인터페이싱을 제공한다. 호스트(100)의 버스 포맷은 USB(Universal Serial Bus), SCSI(Small Computer System Interface), PCI express, ATA, PATA(Parallel ATA), SATA(Serial ATA), SAS(Serial Attached SCSI), UFS(Universal Flash Storage) 중 적어도 하나로 구성될 수 있다.
ECC 엔진(214)은 쓰기 요청되는 데이터에 대해서 에러 정정 및 검출을 위한 인코딩을 수행할 수 있다. 그리고 불휘발성 메모리 장치들(230., 240, 250)로부터 읽혀지는 데이터에 포함된 에러를 검출하고, 검출된 에러를 정정할 것이다. 이때, ECC 엔진(214)은 정정 가능한 비트 수의 제한이 존재한다. 이러한 제한을 초과하는 비트 수의 에러가 검출되면, ECC 엔진(214)은 정정 불가 에러(UCE)로 판단할 것이다. 그리고 ECC 엔진(214)은 정정 불가 에러(UCE)의 발생을 중앙처리장치(211)에 알려줄 것이다. 그러면, 중앙처리장치(211)에 의해서 본 발명의 리커버리 동작이 활성화된다.
버퍼 매니저(215)는 버퍼(220, 도 1 참조)의 읽기 및 쓰기 동작들을 제어한다. 예를 들면, 버퍼 매니저(215)는 쓰기 데이터(Write data)나 읽기 데이터(Read data)를 버퍼(220)에 일시 저장한다.
플래시 인터페이스(217)는 불휘발성 메모리 장치(230, 240, 250)와 데이터를 교환한다. 플래시 인터페이스(217)는 내부 버퍼(220)로부터 전달되는 데이터를 각각의 메모리 채널들(CH1, CH2,…, CHn)을 경유하여 불휘발성 메모리 장치(230, 240, 250)에 기입한다. 그리고 메모리 채널을 통하여 제공되는 불휘발성 메모리 장치(230, 240, 250)로부터의 읽기 데이터(Read data)는 플래시 인터페이스(217)에 의해서 취합된다. 취합된 데이터는 이후 버퍼(220)에 저장될 것이다.
이상의 구조를 통해서 스토리지 컨트롤러(210)는 RAID 방식으로 데이터를 복수의 불휘발성 메모리 장치들(230, 240, 250)에 저장할 수 있다. 더불어, 불휘발성 메모리 장치들(230, 240, 250)로부터 독출된 데이터에 정정 불가 에러(UCE)가 검출되면, 스토리지 컨트롤러(210)는 병행 리커버리(Parallel recovery) 또는 예측 리커버리(Predictive recovery)를 수행할 수 있다. 이러한 리커버리 방식을 적용함에 따라 본 발명의 스토리지 컨트롤러(210)는 정정 불가 에러(UCE)의 발생시에 고속으로 데이터의 복구를 수행할 수 있다.
도 3은 본 발명의 RAID 엔진의 동작을 예시적으로 보여주는 블록도이다. 도 3을 참조하면, RAID 엔진(212)은 호스트(100)로부터 쓰기 요청되는 데이터(DATA)를 서브-스트라이프(Sub-stripe)로 분할한다. RAID 엔진(212)은 분할된 서브-스트라이프(Sub-stripe)들을 여러 스토리지에 분산하여 저장할 수 있다. 분할된 서브-스트라이프(Sub-stripe)들 중에서는 하나 이상의 패리티 서브-스트라이프가 포함될 수 있을 것이다. 여기서, 스토리지는 칩(Chip)이나 다이(Die) 등에 대응할 수 있다. 복수의 스토리지에서 동시에 에러가 발생하는 확률은 거의 희박하기 때문에, RAID 엔진(212)에 의해 데이터의 신뢰성을 향상시킬 수 있다.
데이터(DATA)는 호스트(100)와 RAID 스토리지 장치(200) 사이에서 스트라이프(Stripe) 단위로 전송될 수 있다. 호스트(100) 또는 RAID 스토리지 장치(200)의 사용자는 스트라이프의 데이터 크기를 선택할 수 있다. 데이터(DATA)는 하나 이상의 스트라이프들을 포함할 수 있다. 하나의 스트라이프는 복수의 서브-스트라이프를 포함할 수 있다. 나아가, 스트라이프는 서브-스트라이프들의 오류를 검사하기 위해 참조되는 패리티(Parity)를 포함할 수 있다. 서브-스트라이프들 및 패리티는 복수의 불휘발성 메모리 장치들(231, 241, 251, 261)에 분산하여 저장될 수 있다.
이해를 돕기 위해, i개의 스트라이프들이 호스트(100)로부터 RAID 스토리지 장치(200)으로 제공되고, i개의 스트라이프들 각각이 n-1개의 서브-스트라이프들 및 하나의 패리티를 포함하는 것으로 가정하자. 이 가정에 따르면, 하나의 스트라이프에 포함되는 서브-스트라이프들 및 하나의 패리티는 n개의 불휘발성 메모리 장치들(231, 241, 251, 261)에 분산하여 저장될 수 있다.
여기서, 하나의 서브-스트라이프는 불휘발성 메모리 장치들(231, 241, 251, 261)에서 수행되는 읽기 동작의 읽기 단위에 대응하는 데이터 크기를 가질 수 있다. 불휘발성 메모리 장치들(231, 241, 251, 261)에 저장된 데이터는 서브-스트라이프와 동일한 데이터 크기를 갖는 읽기 단위로 읽힐 수 있다.
이러한 RAID 구성이 채용되는 경우, 하나의 스토리지에 저장된 하나의 서브-스트라이프에 오류가 발생하더라도, 그 서브-스트라이프는 패리티를 참조하여 복구될 수 있다. 예로서, 서브-스트라이프들(C1, C2, C3, …)과 패리티(Pc)가 구성하는 스트라이프(Stripe)에 에러가 발생한 경우, 스토리지 컨트롤러(210)는 에러가 발생하지 않은 서브-스트라이프들과 패리티(Pc)를 사용하여 에러가 발생한 서브-스트라이프를 복구할 수 있다. 따라서, RAID 스토리지 장치(200)는 높은 데이터 신뢰성을 보장할 수 있다.
몇몇 실시 예에서, 불휘발성 메모리 장치들(231, 241, 251, 261) 각각이 하나의 칩이나 다이로 구현될 수 있다. 그리고 각각의 칩이나 다이들은 스토리지 컨트롤러(210)에 의해서 독립적으로 접근 가능한 채널들에 연결될 수 있을 것이다.
도 4는 본 발명의 플래시 리커버리 및 RAID 리커버리 동작의 대상이 되는 데이터 단위를 예시적으로 보여주는 블록도이다. 도 4를 참조하면, 하나의 스트라이프에 7개의 서브-스트라이프들(D1, D2, D3, D4, D5, D6, D7)과 패리티(Pd)가 포함되는 경우를 가정하기로 하자. 여기서, 서브-스트라이프들(D1, D2, D3, D4, D5, D6, D7)과 패리티(Pd) 각각은 칩이나 다이(Die) 단위로 분리된 데이터일 수 있다. 그리고 서브-스트라이프(D6)에 정정 불가 에러(UCE)가 존재하는 것으로 가정하기로 하자.
호스트(100)에 의해서 서브-스트라이프(D6)에 해당하는 데이터의 읽기 요청이 발생하면, 스토리지 컨트롤러(210)는 서브-스트라이프(D6)가 저장된 칩이나 다이에 접근할 것이다. 그리고 스토리지 컨트롤러(210)는 서브-스트라이프(D6)에 대한 에러 검출 연산을 수행한다. 에러 검출 연산의 결과 에러가 존재하지 않거나 정정 가능한 에러가 검출되면, 스토리지 컨트롤러(210)는 서브-스트라이프(D6)에 대응하는 데이터 셋을 호스트(100)로 전송할 것이다.
하지만, 가정대로 서브-스트라이프(D6)에 정정 불가 에러(UCE)가 검출되면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)와 RAID 리커버리(RR)를 병행할 수 있다. 그리고 정정 불가 에러(UCE)에 대한 복구 완료 시점이 빠른 어느 하나의 리커버리 동작의 종료 시점에 제반 리커버리 동작을 완료할 수 있다. 또는, 스토리지 컨트롤러(210)는 발생한 정정 불가 에러(UCE)를 복구하기 위한 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각의 소요 시간을 예측할 수 있다. 그리고 예측 결과에 따라 스토리지 컨트롤러(210)는 플래시 리커버리(FR)와 RAID 리커버리(RR) 중 어느 하나를 실행하여 정정 불가 에러(UCE)를 복구할 것이다. 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각의 소요 시간 예측은 후술하는 실시 예에서 좀더 상세히 설명될 것이다.
정정 불가 에러(UCE)를 복구하기 위한 플래시 리커버리(FR) 동작시, 스토리지 컨트롤러(210)는 서브-스트라이프(D6)가 저장된 칩이나 다이에 반복적으로 접근하게 될 것이다. 반면, 정정 불가 에러(UCE)를 복구하기 위한 RAID 리커버리(RR) 동작시, 스토리지 컨트롤러(210)는 서브-스트라이프(D6)를 제외한 다른 서브 스트라이프들(D1, D2, D3, D4, D5, D7)과 패리티(Pd)가 저장된 칩이나 다이 접근하게 될 것이다. 예시적으로 하나의 패리티(Pd)만을 도시하였으나 RAID 레벨에 따라서 2개 이상의 칩이나 다이에 패리티들이 저장될 수 있음은 잘 이해될 것이다.
도 5는 본 발명의 일 실시 예에 따른 병행 리커버리 동작을 간략히 보여주는 순서도이다. 도 5를 참조하면, 정정 불가 에러(UCE)를 복구하기 위해 플래시 리커버리(FR)와 RAID 리커버리(RR)가 병행될 수 있다. 그리고 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 정정 불가 에러(UCE)에 대한 복구 완료가 빠른 어느 하나의 동작의 종료 시점에 제반 리커버리 동작이 종료될 수 있다.
S110 단계에서, RAID 스토리지 장치(200, 도 1 참조)는 호스트(100)로부터 읽기 요청을 수신한다.
S120 단계에서, 스토리지 컨트롤러(210)는 읽기 요청시 제공된 어드레스의 저장 영역에 접근할 것이다. 예를 들면, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치들(230, 240, 250) 중 어느 하나에 접근하여 데이터를 읽을 수 있을 것이다.
S130 단계에서, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 사용하여 읽혀진 데이터의 에러를 검출할 것이다. 만약, 읽혀진 데이터에 에러가 존재하지 않거나 정정 가능한 에러가 검출되는 경우(No 방향), 절차는 S150 단계로 이동할 수 있을 것이다. 정정 가능한 에러가 검출된 경우에는 ECC 엔진(214)에 의해서 에러 정정 연산을 수행한 후에 S150 단계로 이동할 것이다. 반면, 읽혀진 데이터에 정정 불가 에러(UCE)가 검출되면(Yes 방향), 절차는 S140 단계로 이동할 것이다.
S140 단계에서, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)와 RAID 리커버리(RR)를 함께 수행할 수 있다. 그리고 스토리지 컨트롤러(210)는 정정 불가 에러(UCE)에 대한 복구 완료 시점이 빠른 어느 하나의 리커버리 동작의 종료 시점에 제반 리커버리 동작을 완료할 것이다. S140 단계에 대한 구체적인 동작은 후술하는 도 6 내지 도 7에서 상세히 설명하기로 한다.
S150 단계에서, 스토리지 컨트롤러(210)는 복구된 데이터를 호스트(100)로 전송할 것이다.
이상에서는 본 발명의 병행 리커버리 동작이 간략히 설명되었다. 병행 리커버리 동작시 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각을 수행할 수 있는 충분한 리소스가 확보되어야 할 것이다. 예를 들면, 멀티-코어 방식의 중앙처리장치와 충분한 용량의 워킹 메모리가 확보되는 것이 바람직하다.
도 6은 도 5의 S140 단계의 일 실시 예를 구체적으로 도시한 순서도이다. 도 6을 참조하면, S140a 단계에서는 정정 불가 에러(UCE)가 검출되면 플래시 리커버리(FR)를 수행하기 위한 절차들(S141~S145b)과 RAID 리커버리(RR)를 수행하기 위한 절차들(S146~S149b)이 함께 활성화된다. 즉, 플래시 리커버리(FR)를 수행하기 위한 데이터를 선택하는 S141 단계와 RAID 리커버리(RR)를 위한 데이터를 선택하는 S146 단계가 동시에 또는 소정의 시간차를 가지고 활성화될 수 있다.
S141 단계에서, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 수행할 데이터를 선택한다. 예를 들면, 정정 불가 에러(UCE)가 검출된 데이터가 저장된 칩이나 다이의 데이터를 읽어낼 것이다.
S142 단계에서, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 구성하는 복수의 복구 스테이지들 중 어느 하나를 선택할 것이다. 플래시 리커버리(FR)에는 읽기 바이어스나 읽기 전압의 레벨을 조정하는 방식으로 선택된 영역을 재독출하는 스테이지가 포함될 수 있다. 더불어, 복수의 복구 스테이지들에는 최적의 읽기 레벨을 검출하기 위한 벨리 서치(Valley search)나 회귀 분석법(Regression analysis)과 같은 알고리즘을 실행하는 스테이지들이 포함될 수 있을 것이다. 복수의 복구 스테이지들 중에서 어느 하나가 선택되면 절차는 S143 단계로 이동한다.
S143 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)의 완료 여부를 체크한다. 선택된 복구 스테이지를 시작하기 전에, RAID 리커버리(RR)가 완료되었는지 검출하고, 그 검출 여부에 따라 선택된 복구 스테이지가 진행될 것이다. 예를 들면, 스토리지 컨트롤러(210) 내부에 플래시 리커버리(FR) 및 RAID 리커버리(RR) 각각의 완료 여부를 마킹하는 레지스터를 구비할 수 있다. 그리고 이러한 레지스터의 비트값을 모니터링하는 방식으로 RAID 리커버리(RR)의 완료 여부의 체크가 수행될 수 있을 것이다. 만일, RAID 리커버리(RR)가 완료된 것으로 체크되는 경우(Success), 절차는 제반 리커버리 동작을 종료하고 S140 단계를 완료하게 될 것이다. 반면, RAID 리커버리(RR)가 진행중인 것으로 체크되는 경우(Fail), 절차는 S144 단계로 이동한다.
S144 단계에서, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 위한 복수의 복구 스테이지들 중에서 선택된 스테이지를 실시할 것이다. 예를 들면, 읽기 레벨을 조정하는 스테이지가 선택된 경우, 스토리지 컨트롤러(210)는 정정 불가 에러(UCE)가 발생한 칩이나 다이에 반복적으로 접근하여 데이터를 읽어낼 것이다. 그리고 그 결과를 참조하여 최적 읽기 레벨을 결정하고, 결정된 최적 읽기 레벨을 사용하여 정정 불가 에러(UCE)가 발생한 데이터를 재독출하는 방식으로 플래시 리커버리가 진행될 수 있을 것이다.
S145a 단계에서, 스토리지 컨트롤러(210)는 선택된 스테이지의 실행을 통해서 정정 불가 에러(UCE)가 해소되고 플래시 리커버리(FR)가 성공했는지 판단한다. 예를 들면, 최적 읽기 레벨을 사용하여 독출한 데이터에 정정 불가 에러(UCE)가 검출되지 않으면, 플래시 리커버리(FR)가 성공한 것으로 판단할 수 있다. 플래시 리커버리(FR)가 성공한 것으로 판단되면(Yes 방향), 절차는 제반 병행 리커버리 동작을 종료하게 될 것이다. 반면, 플래시 리커버리(FR)가 실패한 것으로 판단되면(No 방향), 절차는 S145b 단계로 이동한다.
S145b 단계에서, 스토리지 컨트롤러(210)는 S142 단계에서 선택된 복구 스테이지가 플래시 리커버리(FR)의 최종 스테이지인지 판단한다. 만일, S142 단계에서 선택된 복구 스테이지가 플래시 리커버리(FR)의 최종 스테이지가 아닌 경우(No 방향), 절차는 새로운 스테이지를 선택하기 위한 S142 단계로 이동한다. 반면, 실행된 플래시 리커버리(FR)의 스테이지가 최종 스테이지인 경우(Yes 방향), 절차는 S145c 단계로 이동한다.
S145c 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)의 제반 동작이 완료되었는지 검출할 것이다. 예를 들면, 플래시 리커버리(FR)에 의해서 정정 불가 에러(UCE)가 복구되지 못한 경우, RAID 리커버리(RR)의 실행 상태를 검출하게 될 것이다. 이때, RAID 리커버리(RR)에 의해서 정정 불가 에러(UCE)가 복구되었거나, RAID 리커버리(RR)에 의해서도 정정 불가 에러(UCE)가 복구되지 못한 상태일 수 있다. 만일, RAID 리커버리(RR)의 동작이 실행중인 경우(No 방향), RAID 리커버리(RR) 동작이 완료될 때까지 대기할 것이다. 하지만, RAID 리커버리(RR)에 의해서 정정 불가 에러(UCE)가 복구되었거나, 복구되지 않고 RAID 리커버리(RR)가 종료된 것이 검출되면(Yes 방향), 제반 병행 리커버리 동작은 종료될 것이다.
S146 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 적용할 서브-스트라이프들을 선택한다. 예를 들면, 스토리지 컨트롤러(210)는 정정 불가 에러(UCE)가 검출된 칩이나 다이의 데이터를 제외한, 나머지 칩이나 다이의 서브-스트라이프들을 읽어낼 것이다.
S147 단계에서, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 사용하여 독출된 서브-스트라이프에 존재하는 에러를 검출하고 정정할 것이다. 이때 독출된 서브-스트라이프에서도 정정 불가 에러(UCE)가 발생하는 경우는 도 7의 실시 예에서 다루기로 한다. 하지만, 정정 가능 에러(Correctable Error)가 존재하는 경우에는, 에러를 정정한 서브-스트라이프를 사용하여 RAID 리커버리(RR)를 진행할 것이다.
S148 단계에서, 스토리지 컨트롤러(210)는 병행되는 플래시 리커버리(FR)에 의해서 정정 불가 에러(UCE)가 복구되었는지 검출한다. 선택된 서브-스트라이프들에 대한 RAID 복구를 시작하기 전에, 병행되는 플래시 리커버리(FR)가 완료되었는지 검출할 것이다. 검출 결과에 따라, 선택된 서브-스트라이프들에 대한 RAID 복구동작이 진행될 것이다. 예를 들면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)의 완료 여부를 마킹하는 레지스터를 참조할 수 있다. 만일, 플래시 리커버리(FR)가 완료된 것으로 체크되는 경우(Success), 절차는 제반 리커버리 동작을 종료하고 S140 단계를 완료하게 될 것이다. 반면, 플래시 리커버리(FR)가 진행중인 것으로 체크되는 경우(Fail), 절차는 S149a 단계로 이동한다.
S149a 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 위한 동작을 수행한다. RAID 리커버리(RR)의 방식은 RAID 레벨에 따라 서로 다르지만, 패리티를 이용하여 정정 불가 에러(UCE)가 발생한 서브-스트라이프의 데이터를 생성할 수 있다.
S149b 단계에서, 스토리지 컨트롤러(210)는 모든 서브-스트라이프들에 대한 RAID 리커버리(RR)이 완료되었는지 판단할 것이다. 만일, 추가적인 서브-스트라이프들에 대한 RAID 리커버리(RR)가 필요한 경우, 절차는 S146 단계로 이동할 것이다. 하지만, 리커버리가 필요한 서브-스트라이프들이 모두 복구되었다면, 제반 병행 리커버리는 종료될 것이다.
이상에서는 서브-스트라이프에서 정정 불가한 에러가 존재하지 않는 경우에 본 발명의 병행 리커버리 동작이 설명되었다. 후술하는 도 7에서는 RAID 리커버리를 수행하는 서브-스트라이프에도 정정 불가한 에러가 발생하는 경우의 병행 리커버리 동작이 설명될 것이다.
도 7은 본 발명의 다른 실시 예에 따른 병행 리커버리 동작을 보여주는 순서도이다. 도 7을 참조하면, 플래시 리커버리(FR) 동작을 설명하는 S141 단계, S142 단계, S143 단계, S144 단계, S145a 단계, S145b 단계, S145c 단계는 도 6의 단계들과 실질적으로 동일하다. 따라서, 이들 단계에 대한 설명은 생략하기로 한다.
S146 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 적용할 서브-스트라이프들을 선택한다. 예를 들면, 스토리지 컨트롤러(210)는 S141 단계에서 선택된 데이터 청크가 포함되지 않은 서브-스트라이프들을 선택할 수 있을 것이다.
S147a 단계에서, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 사용하여 독출된 서브-스트라이프에 존재하는 에러를 검출한다.
S147b 단계에서, 독출된 서브-스트라이프들에 에러가 존재하지 않은 경우(No 방향), 절차는 플래시 리커버리(FR)의 완료 여부를 검출하기 위한 S148 단계로 이동할 것이다. 반면, 독출된 서브-스트라이프들에 에러가 존재하는 경우(Yes 방향), 절차는 검출된 에러를 처리하기 위한 S147c 단계로 이동할 것이다.
S147c 단계에서, 검출된 에러에 대한 정정이 수행된다. 만일, 검출된 에러 비트의 수가 ECC 엔진(214)의 능력으로 정정 가능한 정도라면, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 사용하여 검출된 에러를 정정할 것이다. 하지만, 검출된 에러의 수가 ECC 엔진(214)의 능력으로 정정 불가한 경우라면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 적용하여 검출된 에러를 처리할 것이다. 예를 들면, 스토리지 컨트롤러(210)는 정정 불가 에러가 존재하는 서브-스트라이프에 대해서 읽기 레벨 조정이나 다양한 구동 환경의 조정을 실행하여 복구할 수 있을 것이다.
S148 단계에서, 스토리지 컨트롤러(210)는 병행되는 플래시 리커버리(FR)에 의해서 정정 불가 에러(UCE)가 복구되었는지 검출한다. 선택된 서브-스트라이프들에 대한 RAID 복구를 시작하기 전에, 병행되는 플래시 리커버리(FR)가 완료되었는지 검출할 것이다. 검출 결과에 따라, 선택된 서브-스트라이프들에 대한 RAID 복구동작이 진행될 것이다. 예를 들면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)의 완료 여부를 마킹하는 레지스터를 참조할 수 있다. 만일, 플래시 리커버리(FR)가 완료된 것으로 체크되는 경우(Success), 절차는 제반 리커버리 동작을 종료하고 S140 단계를 완료하게 될 것이다. 반면, 플래시 리커버리(FR)가 진행중인 것으로 체크되는 경우(Fail), 절차는 S149a 단계로 이동한다.
S149a 단계에서, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 위한 동작을 수행한다. RAID 리커버리(RR)의 방식은 RAID 레벨에 따라 서로 다르지만, 패리티(Parity)를 이용하여 정정 불가 에러(UCE)가 발생한 서브-스트라이프의 데이터를 생성할 수 있다.
S149b 단계에서, 스토리지 컨트롤러(210)는 모든 서브-스트라이프들에 대한 RAID 리커버리(RR)이 완료되었는지 판단할 것이다. 만일, 추가적인 서브-스트라이프들에 대한 RAID 리커버리(RR)가 필요한 경우, 절차는 S146 단계로 이동할 것이다. 하지만, 리커버리가 필요한 서브-스트라이프들이 모두 복구되었다면, 제반 병행 리커버리는 종료될 것이다.
이상에서는 RAID 리커버리(RR)를 적용하기 위한 서브-스트라이프에서 에러가 존재하는 경우에 본 발명의 병행 리커버리 동작이 설명되었다.
도 8은 본 발명의 병행 리커버리 동작을 시간축에 따라 표현한 도면이다. 도 8을 참조하면, 읽기 실패 또는 정정 불가 에러(UCE)가 검출되면, 본 발명의 병행 리커버리 동작이 시작된다. 플래시 리커버리(FR)를 위해서는 S11 단계, S12 단계, S13 단계, S14 단계, S15 단계, 그리고 S16 단계가 수행되고, RAID 리커버리(RR)를 위해서는 S21 단계, S22 단계, S23 단계, S24 단계, 그리고 S25 단계가 수행될 것이다.
먼저, 정정 불가 에러(UCE)가 검출되면 S11 단계 및 S21 단계들 각각에서 플래시 리커버리(FR) 또는 RAID 리커버리(RR)를 위한 데이터 선택이 이루어진다. S11 단계에서는 플래시 리커버리를 위해 정정 불가 에러(UCE)가 검출된 데이터 청크(D6)가 선택될 것이다. S21 단계에서는 정정 불가 에러(UCE)가 검출되지 않은 서브-스트라이프들(예를 들면, D1, D2, D3, D4, D5, D7)과 패리티(Pd)가 선택될 것이다. 서브-스트라이프들(예를 들면, D1, D2, D3, D4, D5, D7)과 패리티(Pd)의 선택은 일부만이 순차적으로 선택되는 방식으로도 진행될 수 있음은 잘 이해될 것이다.
S12 단계에서, RAID 리커버리(RR)의 완료 여부가 체크될 수 있다. 만약, RAID 리커버리(RR)가 완료(Success)된 것으로 판단되면, 제반 리커버리 동작은 종료 처리될 것이다. 하지만, RAID 리커버리(RR)가 실패(Fail) 또는 실행 중인 것으로 판단되면, 절차는 플래시 리커버리(FR)의 제 1 스테이지를 실행하기 위한 S13 단계로 이동할 것이다.
S13 단계에서, 플래시 리커버리(FR)의 제 1 스테이지가 진행될 것이다. 그리고 S14 단계에서 플래시 리커버리(FR)의 제 1 스테이지의 성공 여부가 체크된다. 만일, 플래시 리커버리(FR)의 제 1 스테이지에 의해서 정정 불가 에러가 복구된 것으로 판단되면, 제반 리커버리 동작은 종료될 것이다. 하지만, 플래시 리커버리(FR)의 제 1 스테이지가 실패한 것으로 판단되면, 절차는 S15 단계에서 플래시 리커버리(FR)의 제 2 스테이지가 실행될 것이다. 물론, 각각의 시점마다 RAID 리커버리(RR)의 성공 여부를 검출할 수도 있음은 잘 이해될 것이다. 그리고 S16 단계에서 플래시 리커버리(FR)의 제 2 스테이지의 성공 여부가 체크된다. 만일, 플래시 리커버리(FR)의 제 2 스테이지에 의해서 정정 불가 에러가 복구된 것으로 판단되면, 제반 리커버리 동작은 종료될 것이다.
S22 단계를 참조하면, RAID 리커버리(RR)를 위해서 선택된 서브-스트라이프들에 대한 에러 정정이 이루어진다. 이때의 에러 정정에는 정정 불가 에러에 대한 리커버리 동작도 포함됨은 잘 이해될 것이다.
S23 단계에서, 병행되는 플래시 리커버리(FR)에 대한 성공 여부가 체크될 수 있다. 만일, 플래시 리커버리(FR)의 어느 하나의 스테이지에 의해서 정정 불가 에러(UCE)가 복구된 것으로 판단되면, 제반 리커버리 동작은 종료될 것이다. 하지만, 플래시 리커버리(FR)의 어느 하나의 스테이지가 진행 중이거나 실패한 것으로 판단되면, 절차는 S24 단계로 이동할 것이다. 여기서, S23 단계는 S22 단계의 수행 전에도 수행될 수 있다. RAID 리커버리(RR)를 위해 데이터를 읽는 과정에서도 플래시 리커버리(FR)가 완료되었으면, RAID 리커버리(RR)는 중단되어야 한다. 그리고 S22 단계의 읽기 과정과 S24 단계의 연산 과정은 병렬적으로 수행될 수 있을 것이다. 결국, S23 단계의 플래시 리커버리(FR)에 대한 성공 여부의 체크는 모든 동작들 사이에서 수행될 수 있고, S22 단계와 S24 단계는 동시에 수행될 수도 있음은 잘 이해될 것이다.
S24 단계에서, RAID 리커버리를 위한 연산이 수행될 것이다. 예를 들면, 선택된 복수의 서브-스트라이프들에 대한 패리티를 적용하여 정정 불가 에러(UCE)가 발생한 서브-스트라이프의 복구가 가능할 것이다. 이어지는 S25 단계에서, RAID 리커버리에 대한 성공 여부가 판단될 수 있다. 만일, RAID 리커버리 동작에 의해서 정상적으로 정정 불가 에러가 복구된 경우라면, 제반 병행 리커버리 동작은 종료될 것이다.
이상에서 시간 축을 기준으로 본 발명의 병행 리커버리 동작이 예시적으로 설명되었다. 하지만, 다양한 방식으로 본 발명의 병행 리커버리 동작은 변형될 수 있음은 잘 이해될 것이다.
도 9는 본 발명의 다른 실시 예에 따른 예측 리커버리 동작을 간략히 보여주는 순서도이다. 도 9를 참조하면, 정정 불가 에러(UCE)를 복구하기 위해 플래시 리커버리(FR)와 RAID 리커버리(RR) 중 어느 하나가 선택적으로 수행될 수 있다. 선택을 위해 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 정정 불가 에러(UCE)에 대한 복구 시간이 짧은 동작이 예측될 수 있을 것이다.
S210 단계에서, RAID 스토리지 장치(200, 도 1 참조)는 호스트(100)로부터 읽기 요청을 수신한다.
S220 단계에서, 스토리지 컨트롤러(210)는 읽기 요청시 제공된 어드레스의 저장 영역에 접근할 것이다. 예를 들면, 스토리지 컨트롤러(210)는 불휘발성 메모리 장치들(230, 240, 250) 중 어느 하나에 접근하여 데이터를 읽을 수 있을 것이다.
S230 단계에서, 스토리지 컨트롤러(210)는 ECC 엔진(214)을 사용하여 읽혀진 데이터의 에러를 검출할 것이다. 만약, 읽혀진 데이터에 에러가 존재하지 않거나 정정 가능한 에러가 검출되는 경우(No 방향), 절차는 S250 단계로 이동할 수 있을 것이다. 정정 가능한 에러가 검출된 경우에는 ECC 엔진(214)에 의해서 에러 정정 연산을 수행한 후에 S250 단계로 이동할 것이다. 반면, 읽혀진 데이터에 정정 불가 에러(UCE)가 검출되면(Yes 방향), 절차는 S240 단계로 이동할 것이다.
S240 단계에서, 스토리지 컨트롤러(210)는 예측 리커버리 동작을 수행한다. 예측 리커버리 동작은 후술하는 도 10 내지 도 11에서 상세히 설명될 것이다. 먼저, 예측 리커버리를 위해서 스토리지 컨트롤러(210)는 플래시 리커버리(FR)와 RAID 리커버리(RR) 각각에 대해서 정정 불가 에러(UCE)의 복구에 소요되는 시간을 예측할 수 있다. 그리고 스토리지 컨트롤러(210)는 예측된 시간이 짧은 어느 하나의 동작을 선택하여 리커버리를 진행할 것이다. 예측 리커버리 동작에서는 선택된 하나의 리커버리 방식만이 사용된다. 따라서, 선택된 리커버리 동작이 완료되는 시점에 제반 리커버리 동작이 완료될 것이다.
S250 단계에서, 스토리지 컨트롤러(210)는 복구된 데이터를 호스트(100)로 전송할 것이다.
이상에서는 본 발명의 예측 리커버리 동작이 간략히 설명되었다. 예측 리커버리 동작을 사용하는 경우, 상대적으로 적은 리소스를 가지고도 정정 불가 에러(UCE)를 처리할 수 있다.
도 10은 도 9의 S240 단계의 일 실시 예를 보여주는 순서도이다. 도 10을 참조하면, 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 소요 시간이 짧은 어느 하나의 방식이 선택될 수 있다.
S241 단계에서, 스토리지 컨트롤러(210)는 발생한 정정 불가 에러(UCE)에 대한 복구에 소요되는 시간을 추정한다. 예를 들면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 통해서 검출된 정정 불가 에러(UCE)를 복구하는데 소요되는 시간을 추정할 수 있다. 예를 들면, 스토리지 컨트롤러(210)는 검출된 에러 비트의 수나 웨어 레벨링 정보, 읽기 교란(Read disturbance), 데이터 청크의 사이즈 등의 정보를 참조하여 플래시 리커버리(FR)에 소요되는 시간(tFR)을 추정할 수 있을 것이다. 물론, 이전에 수행된 플래시 리커버리(FR) 동작에서 실제로 소요된 시간도 참조될 수 있다.
더불어, 스토리지 컨트롤러(210)는 RAID 리커버리(RR)를 통해서 검출된 정정 불가 에러(UCE)를 복구하는데 소요되는 시간(tRR)을 추정할 수 있다. RAID 리커버리(RR)에 소요되는 시간(tRR)의 추정에는 플래시 리커버리(FR)에 소요되는 시간(tFR)을 추정하기 위한 요소들과 스트라이프의 크기, 패리티 종류 등 다양한 상태 정보가 사용될 수 있을 것이다.
S243 단계에서, 예측된 플래시 리커버리(FR)에 소요되는 시간(tFR)과 RAID 리커버리(RR)에 소요되는 시간(tRR)이 비교될 것이다. 그리고 그 비교 결과에 따라 실제로 수행될 리커버리 방식이 선택될 수 있다. 만약, 플래시 리커버리(FR)에 소요되는 시간(tFR)이 RAID 리커버리(RR)에 소요되는 시간(tRR)보다 짧은 것으로 판단되면(Yes 방향), 절차는 S245 단계로 이동할 것이다. 반면, 플래시 리커버리(FR)에 소요되는 시간(tFR)보다 RAID 리커버리(RR)에 소요되는 시간(tRR)이 긴 경우(No 방향), 절차는 S247 단계로 이동할 것이다.
S245 단계에서, 플래시 리커버리(FR) 동작이 검출된 정정 불가 에러(UCE)를 복구하기 위해 실행될 것이다. 플래시 리커버리(FR)가 완료되면, 제반 예측 리커버리 동작은 종료된다.
S247 단계에서, RAID 리커버리(RR) 동작이 검출된 정정 불가 에러(UCE)를 복구하기 위해 실행될 것이다. RAID 리커버리(RR)가 완료되면, 제반 예측 리커버리 동작은 종료된다.
도 11은 도 9의 S240 단계의 다른 실시 예를 보여주는 순서도이다. 도 11을 참조하면, 플래시 리커버리(FR)와 RAID 리커버리(RR) 중에서 불휘발성 메모리 장치들의 수명과 같은 효과가 참조되어 어느 하나가 선택될 수 있다.
S242 단계에서, 스토리지 컨트롤러(210)는 발생한 정정 불가 에러(UCE)에 대한 복구시 불휘발성 메모리 장치들(230, 240, 250)에 미칠 영향을 추정한다. 예를 들면, 스토리지 컨트롤러(210)는 플래시 리커버리(FR)나 RAID 리커버리(RR)를 통해서 검출된 정정 불가 에러(UCE)를 복구하는 경우에 메모리 셀들의 받게되는 스트레스나 교란 등을 추정할 수 있다. 또는 스토리지 컨트롤러(210)는 플래시 리커버리(FR)를 통해서 단축되는 수명을 추정할 수도 있을 것이다. 이러한 수명이나 성능에 나쁜 영향 또는 효과를 추정하여 리커버리 동작의 선택에 사용할 수 있다.
S244 단계에서, 예측된 플래시 리커버리(FR)의 영향(eFR)과 RAID 리커버리(RR)의 영향(eRR)이 비교될 것이다. 그리고 그 비교 결과에 따라 실제로 수행될 리커버리 방식이 선택될 수 있다. 만약, 플래시 리커버리(FR)에 의해서 받게되는 영향(eFR)이 RAID 리커버리(RR)에 의해서 받게되는 영향(eRR)보다 큰 것으로 판단되면(Yes 방향), 절차는 S246 단계로 이동할 것이다. 반면, 플래시 리커버리(FR)에 의해서 받게되는 영향(eFR)보다 RAID 리커버리(RR)에 의해서 받게되는 영향(eRR)이 크지 않다면(No 방향), 절차는 S248 단계로 이동할 것이다.
S246 단계에서, RAID 리커버리(RR) 동작이 검출된 정정 불가 에러(UCE)를 복구하기 위해 실행될 것이다. RAID 리커버리(RR) 동작이 완료되면, 제반 예측 리커버리 동작은 종료된다.
S248 단계에서, 플래시 리커버리(FR)가 검출된 정정 불가 에러(UCE)를 복구하기 위해 실행될 것이다. 플래시 리커버리(FR)가 완료되면, 제반 예측 리커버리 동작은 종료된다.
도 12는 본 발명의 예측 리커버리 동작시 어느 하나의 리커버리 방식을 결정하는 다른 방법을 예시적으로 보여주는 도면이다. 도 12를 참조하면, 플래시 리커버리(340)와 RAID 리커버리(350)를 선택하기 위해 다양한 정보들이 제공될 수 있다. 예를 들면, 읽기 요청된 데이터의 워크 로드 패턴(310)이나 ECC 청크의 사이즈(320), 리커버리 청크 사이즈(325) 그리고 서브-스트라이프의 사이즈(330) 등의 정보들이 고려될 수 있다. 이러한 다양한 정보를 조합하여 플래시 리커버리(340)와 RAID 리커버리(350)를 선택하기 위해서는 각각의 정보들에 대한 가중치를 적용할 수 있을 것이다. 예를 들면, 상대적으로 작은 크기의 ECC 청크의 사이즈(320)에 대한 처리시에는 플래시 리커버리(340)에 대한 가중치(w3)를 RAID 리커버리(350)에 대한 가중치(w4)보다 큰 값으로 설정할 수 있을 것이다.
상술한 가중치를 적용한 정보들을 이용하여 결정 블록(360)에서 플래시 리커버리(340)와 RAID 리커버리(350) 중에서 어느 하나의 리커버리 방식이 선택될 수 있을 것이다.
도 13은 본 발명의 스토리지에 포함되는 메모리 블록들 중 제 1 메모리 블록의 예를 보여주는 회로도이다. 예시적으로, 도 13을 참조하여 3차원 구조의 제 1 메모리 블록(BLK1)이 설명된다. 그러나, 본 발명의 범위가 이에 한정되는 것은 아니며, 불휘발성 메모리 장치들(230, 240, 250) 각각에 포함된 다른 메모리 블록들 또한 제 1 메모리 블록(BLK1)과 유사한 구조를 가질 수 있다.
도 13을 참조하면, 제 1 메모리 블록(BLK1)은 복수의 셀 스트링들(CS11, CS12, CS21, CS22)을 포함한다. 복수의 셀 스트링들(CS11, CS12, CS21, CS22)은 행 방향(row direction) 및 열 방향(column direction)을 따라 배치되어 행들 및 열들을 형성할 수 있다.
예를 들어, 셀 스트링들(CS11, CS12)은 스트링 선택 라인들(SSL1a, SSL1b)와 연결되어, 제 1 행을 형성할 수 있다. 셀 스트링들(CS21, CS22)은 스트링 선택 라인들(SSL2a, SSL2b)와 연결되어 제 2 행을 형성할 수 있다.
예를 들어, 셀 스트링들(CS11, CS21)은 제 1 비트라인(BL1)과 연결되어 제 1 열을 형성할 수 있다. 셀 스트링들(CS12, CS22)은 제 2 비트라인(BL2)과 연결되어 제 2 열을 형성할 수 있다.
복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 복수의 셀 트랜지스터들을 포함한다. 예를 들어, 복수의 셀 스트링들(CS11, CS12, CS21, CS22) 각각은 스트링 선택된 트랜지스터들(SSTa, SSTb), 복수의 메모리 셀들(MC1~MC8), 접지 선택된 트랜지스터들(GSTa, GSTb), 및 더미 메모리 셀들(DMC1, DMC2)을 포함할 수 있다. 예시적으로, 복수의 셀 스트링들(CS11, CS12, CS21, CS22)에 포함된 복수의 셀 트랜지스터들 각각은 전하 트랩형 플래시(CTF; charge trap flash) 메모리 셀일 수 있다.
복수의 메모리 셀들(MC1~MC8)은 직렬 연결되며, 행 방향 및 열 방향에 의해 형성된 평명과 수직한 방향인 높이 방향(height direction)으로 적층된다. 스트링 선택된 트랜지스터들(SSTa, SSTb)은 직렬 연결되고, 직렬 연결된 스트링 선택된 트랜지스터들(SSTa, SSTb)은 복수의 메모리 셀들(MC1~MC8) 및 비트라인(BL) 사이에 제공된다. 접지 선택된 트랜지스터들(GSTa, GSTb)은 직렬 연결되고, 직렬 연결된 접지 선택된 트랜지스터들(GSTa, GSTb)은 복수의 메모리 셀들(MC1~MC8) 및 공통 소스 라인(CSL) 사이에 제공된다.
예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 접지 선택된 트랜지스터들(GSTa, GSTb) 사이에 제 1 더미 메모리 셀(DMC1)이 제공될 수 있다. 예시적으로, 복수의 메모리 셀들(MC1~MC8) 및 스트링 선택된 트랜지스터들(SSTa, SSTb) 사이에 제 2 더미 메모리 셀(DMC2)이 제공될 수 있다.
셀 스트링들(CS11, CS12, CS21, CS22)의 접지 선택된 트랜지스터들(GSTa, GSTb)은 접지 선택 라인(GSL)에 공통으로 연결될 수 있다. 예시적으로, 동일한 행의 접지 선택된 트랜지스터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 행의 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제1 접지 선택 라인에 연결될 수 있고, 제2 행의 셀 스트링들(CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 2 접지 선택 라인에 연결될 수 있다.
예시적으로, 도면에 도시되지는 않았으나, 기판(미도시)으로부터 동일한 높이에 제공되는 접지 선택된 트랜지터들은 동일한 접지 선택 라인에 연결될 수 있고, 다른 높이에 제공되는 접지 선택된 트랜지스터들은 다른 접지 선택 라인에 연결될 수 있다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 접지 선택된 트랜지스터들(GSTa)은 제 1 접지 선택 라인에 연결되고, 제 2 접지 선택 트랜지스터들(GSTb)은 제 2 접지 선택 라인에 연결될 수 있다.
기판(또는 접지 선택된 트랜지스터(GSTa, GSTb)로부터 동일한 높이의 메모리 셀들은 동일한 워드라인에 공통으로 연결되고, 서로 다른 높이의 메모리 셀들은 서로 다른 워드라인에 연결된다. 예를 들어, 셀 스트링들(CS11, CS12, CS21, CS22)의 제 1 내지 제 8 메모리 셀들(MC8)은 제 1 내지 제 8 워드라인들(WL1~WL8)에 각각 공통으로 연결된다.
동일한 높이의 제 1 스트링 선택된 트랜지스터들(SSTa) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 스트링 선택된 트랜지스터들(SSTa)은 스트링 선택 라인(SSL1a)과 공통으로 연결된다.
마찬가지로, 동일한 높이의 제 2 스트링 선택된 트랜지스터들(SSTb) 중 동일한 행의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인과 연결되고, 다른 행의 스트링 선택된 트랜지스터들은 다른 스트링 선택 라인과 연결된다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL1b)과 공통으로 연결되고, 제 2 행의 셀 스트링들(CS21, CS22)의 제 2 스트링 선택된 트랜지스터들(SSTb)은 스트링 선택 라인(SSL2b)과 공통으로 연결된다.
비록 도면에 도시되지는 않았으나, 동일한 행의 셀 스트링들의 스트링 선택된 트랜지스터들은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 예를 들어, 제 1 행의 셀 스트링들(CS11, CS12)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다. 제 2 행의 셀 스트링들(CS21, CS22)의 제 1 및 제 2 스트링 선택된 트랜지스터들(SSTa, SSTb)은 동일한 스트링 선택 라인에 공통으로 연결될 수 있다.
예시적으로, 동일한 높이의 더미 메모리 셀들은 동일한 더미 워드라인과 연결되고, 다른 높이의 더미 메모리 셀들은 다른 더미 워드라인과 연결된다. 예를 들어, 제 1 더미 메모리 셀들(DMC1)은 제 1 더미 워드라인(DWL1)과 연결되고, 제 2 더미 메모리 셀들(DMC2)은 제 2 더미 워드라인(DWL2)과 연결된다.
제 1 메모리 블록(BLK1)에서, 읽기 및 쓰기는 행 단위로 수행될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b, SSL2a, SSL2b)에 의해 메모리 블록(BLKa)의 하나의 행이 선택될 수 있다. 예를 들어, 스트링 선택 라인들(SSL1a, SSL1b)이 턴-온 전압이 공급되고 스트링 선택 라인들(SSL2a, SSL2b)에 턴-오프 전압이 공급될 때, 제 1 행의 셀 스트링들(CS11, CS12)이 비트 라인들(BL1, BL2)에 연결된다. 스트링 선택 라인들(SSL2a, SSL2b)에 턴-온 전압이 공급되고 스트링 선택 라인들(SSL1a, SSL1B)에 턴-오프 전압이 공급될 때, 제 2 행의 셀 스트링들(CS21, CS22)이 비트 라인들(BL1, BL2)에 연결되어 구동된다. 워드라인을 구동함으로써 구동되는 행의 셀 스트링의 메모리 셀들 중 동일한 높이의 메모리 셀들이 선택된다. 선택된 메모리 셀들에서 읽기 및 쓰기 동작이 수행될 수 있다. 선택된 메모리 셀들은 물리 페이지 단위를 형성할 수 있다.
제 1 메모리 블록(BLK1)에서, 소거는 메모리 블록 단위 또는 서브 블록의 단위로 수행될 수 있다. 메모리 블록 단위로 소거가 수행될 때, 제 1 메모리 블록(BLK1)의 모든 메모리 셀들(MC)이 하나의 소거 요청에 따라 동시에 소거될 수 있다. 서브 블록의 단위로 수행될 때, 제1 메모리 블록(BLK1)의 메모리 셀들(MC) 중 일부는 하나의 소거 요청에 따라 동시에 소거되고, 나머지 일부는 소거 금지될 수 있다. 소거되는 메모리 셀들에 연결된 워드 라인에 저전압(예를 들어, 접지 전압)이 공급되고, 소거 금지된 메모리 셀들에 연결된 워드 라인은 플로팅될 수 있다.
도 13에 도시된 제 1 메모리 블록(BLK1)은 예시적인 것이며, 셀 스트링들의 개수는 증가 또는 감소할 수 있으며, 셀 스트링들의 개수에 따라 셀 스트링들이 구성하는 행들 및 열들의 개수는 증가 또는 감소할 수 있다. 또한, 제 1 메모리 블록(BLK1)의 셀 트랜지스터들(GST, MC, DMC, SST 등)의 개수들는 각각 증가 또는 감소될 수 있으며, 셀 트랜지스터들의 개수들에 따라 제 1 메모리 블록(BLK1)의 높이가 증가 또는 감소할 수 있다. 또한, 셀 트랜지스터들의 개수들에 따라 셀 트랜지스터들과 연결된 라인들(GSL, WL, DWL, SSL 등)의 개수들이 증가 또는 감소될 수 있다.
도 14는 본 발명의 실시 예들에 따른 불휘발성 메모리 시스템이 적용된 메모리 카드 시스템을 보여주는 블록도이다. 도 14를 참조하면, 메모리 카드 시스템(1000)은 메모리 컨트롤러(1100), 불휘발성 메모리(1200), 및 커넥터(1300)를 포함한다.
메모리 컨트롤러(1100)는 불휘발성 메모리(1200)와 연결된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 액세스하도록 구성된다. 예를 들어, 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 배경(background) 동작은 마모도 관리, 가비지 콜렉션 등과 같은 동작들을 포함한다. 예시적으로, 메모리 컨트롤러(1100)는 도 1 및 도 12를 참조하여 설명된 스토리지 컨트롤러(210)와 같이 정정 불가 에러(UCE)가 검출되면 플래시 리커버리(FR)와 RAID 리커버리(RR)를 선택적으로 수행할 수 있을 것이다.
메모리 컨트롤러(1100)는 불휘발성 메모리(1200) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 메모리 컨트롤러(1100)는 불휘발성 메모리(1200)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다. 예시적으로, 메모리 컨트롤러(1100)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 메모리 인터페이스(memory interface), 에러 정정부와 같은 구성 요소들을 포함할 수 있다.
메모리 컨트롤러(1100)는 커넥터(1300)를 통해 외부 장치와 통신할 수 있다. 메모리 컨트롤러(1100)는 특정한 통신 규격에 따라 외부 장치(예를 들어, 호스트)와 통신할 수 있다. 예시적으로, 메모리 컨트롤러(1100)는 USB (Universal Serial Bus), MMC (multimedia card), eMMC(embedded MMC), PCI (peripheral component interconnection), PCI-E (PCI-express), ATA (Advanced Technology Attachment), Serial-ATA, Parallel-ATA, SCSI (small computer small interface), ESDI (enhanced small disk interface), IDE (Integrated Drive Electronics), 파이어와이어(Firewire), UFS(Universal Flash Storage), NVMe (Nonvolatile Memory express) 등과 같은 다양한 통신 규격들 중 적어도 하나를 통해 외부 장치와 통신하도록 구성된다. 예시적으로, 상술된 통신 규격들에 의해 정의된 쓰기 커맨드는 쓰기 데이터의 사이즈 정보를 포함할 수 있다.
불휘발성 메모리(1200)는 EPROM (Electrically Erasable and Programmable ROM), 낸드 플래시 메모리, 노어 플래시 메모리, PRAM (Phase-change RAM), ReRAM (Resistive RAM), FRAM (Ferroelectric RAM), STT-MRAM(Spin-Torque Magnetic RAM) 등과 같은 다양한 불휘발성 메모리 소자들로 구현될 수 있다.
예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 솔리드 스테이트 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 메모리 컨트롤러(1100) 및 불휘발성 메모리(1200)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro, eMMC), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
도 15는 본 발명에 따른 불휘발성 메모리 시스템이 적용된 SSD(Solid State Drive) 시스템을 예시적으로 보여주는 블록도이다. 도 15를 참조하면, SSD 시스템(2000)은 호스트(2100) 및 SSD(2200)를 포함한다. SSD(2200)는 신호 커넥터(2001)를 통해 호스트(2100)와 신호(SIG)를 주고 받고, 전원 커넥터(2002)를 통해 전원(PWR)을 입력받는다. SSD(2200)는 SSD 컨트롤러(2210), 복수의 플래시 메모리들(2221~222n), 보조 전원 장치(2230), 및 버퍼 메모리(2240)를 포함한다.
SSD 컨트롤러(2210)는 호스트(2100)로부터 수신된 신호(SIG)에 응답하여 복수의 플래시 메모리들(2221~222n)을 제어할 수 있다. 예시적으로, SSD 컨트롤러(2210)는 도 1 및 도 12를 참조하여 설명된 리커버리 동작을 수행할 수 있다. SSD 컨트롤러(2210)는 도 1 및 도 12를 참조하여 설명된 스토리지 컨트롤러(210)와 같이 정정 불가 에러(UCE)가 검출되면 플래시 리커버리(FR)와 RAID 리커버리(RR)를 동시에 또는 선택적으로 수행할 수 있을 것이다.
보조 전원 장치(2230)는 전원 커넥터(2002)를 통해 호스트(2100)와 연결된다. 보조 전원 장치(2230)는 호스트(2100)로부터 전원(PWR)을 입력받고, 충전할 수 있다. 보조 전원 장치(2230)는 호스트(2100)로부터의 전원 공급이 원활하지 않을 경우, SSD 시스템(2000)의 전원을 제공할 수 있다. 예시적으로, 보조 전원 장치(2230)는 SSD(2200) 내에 위치할 수도 있고, SSD(2200) 밖에 위치할 수도 있다. 예를 들면, 보조 전원 장치(2230)는 메인 보드에 위치하며, SSD(2200)에 보조 전원을 제공할 수도 있다.
버퍼 메모리(2240)는 SSD(2200)의 버퍼 메모리로 동작한다. 예를 들어, 버퍼 메모리(2240)는 호스트(2100)로부터 수신된 데이터 또는 복수의 플래시 메모리들(2221~222n)로부터 수신된 데이터를 임시 저장하거나, 플래시 메모리들(2221~222n)의 메타 데이터(예를 들어, 매핑 테이블)를 임시 저장할 수 있다. 버퍼 메모리(2240)는 DRAM, SDRAM, DDR SDRAM, LPDDR SDRAM, SRAM 등과 같은 휘발성 메모리 또는 FRAM ReRAM, STT-MRAM, PRAM 등과 같은 불휘발성 메모리들을 포함할 수 있다.
도 16은 본 발명에 따른 불휘발성 메모리 시스템이 적용된 사용자 시스템을 보여주는 블록도이다. 도 16을 참조하면, 사용자 시스템(3000)은 애플리케이션 프로세서(3100), 메모리 모듈(3200), 네트워크 모듈(3300), 스토리지 모듈(3400), 및 사용자 인터페이스(3500)를 포함한다.
애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들, 운영체제(OS; Operating System)를 구동시킬 수 있다. 예시적으로, 애플리케이션 프로세서(3100)는 사용자 시스템(3000)에 포함된 구성 요소들을 제어하는 컨트롤러들, 인터페이스들, 그래픽 엔진 등을 포함할 수 있다. 애플리케이션 프로세서(3100)는 시스템-온-칩(SoC; System-on-Chip)으로 제공될 수 있다.
메모리 모듈(3200)은 사용자 시스템(3000)의 주메모리, 동작 메모리, 버퍼 메모리 또는 캐쉬 메모리로 동작할 수 있다. 메모리 모듈(3200)은 DRAM, SDRAM, DDR SDRAM, DDR2 SDRAM, DDR3 SDRAM, LPDDR SDARM, LPDDR3 SDRAM, LPDDR3 SDRAM 등과 같은 휘발성 랜덤 액세스 메모리 또는 PRAM, ReRAM, MRAM, FRAM 등과 같은 불휘발성 랜덤 액세스 메모리를 포함할 수 있다.
네트워크 모듈(3300)은 외부 장치들과 통신을 수행할 수 있다. 예시적으로, 네트워크 모듈(3300)은 CDMA(Code Division Multiple Access), GSM(Global System for Mobile communication), WCDMA(wideband CDMA), CDMA-2000, TDMA(Time Dvision Multiple Access), LTE(Long Term Evolution), Wimax, WLAN, UWB, 블루투스, WI-DI 등과 같은 무선 통신을 지원할 수 있다. 예시적으로, 네트워크 모듈(3300)은 애플리케이션 프로세서(3100)에 포함될 수 있다.
스토리지 모듈(3400)은 데이터를 저장할 수 있다. 예를 들어, 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 데이터를 저장할 수 있다. 또는 스토리지 모듈(3400)은 스토리지 모듈(3400)에 저장된 데이터를 애플리케이션 프로세서(3100)로 전송할 수 있다. 예시적으로, 스토리지 모듈(3400)은 PRAM(Phase-change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), NAND flash, NOR flash, 3차원 구조의 NAND 플래시 등과 같은 불휘발성 반도체 메모리 소자로 구현될 수 있다.
예시적으로, 스토리지 모듈(3400)은 도 1 및 도 12를 참조하여 설명된 리커버리 동작을 수행할 수 있다. 스토리지 모듈(3400)은 정정 불가 에러(UCE)가 검출되면 플래시 리커버리(FR)와 RAID 리커버리(RR)를 동시에 또는 선택적으로 수행할 수 있을 것이다.
스토리지 모듈(3400)은 애플리케이션 프로세서(3100)와 미리 정해진 인터페이스를 기반으로 통신할 수 있다. 스토리지 모듈(3400)은 애플리케이션 프로세서(3100)로부터 수신한 쓰기 커맨드를 기반으로 가비지 콜렉션의 수행 시간을 조절할 수 있다.
사용자 인터페이스(3500)는 애플리케이션 프로세서(3100)에 데이터 또는 명령어를 입력하거나 또는 외부 장치로 데이터를 출력하는 인터페이스들을 포함할 수 있다. 예시적으로, 사용자 인터페이스(3500)는 키보드, 키패드, 버튼, 터치 패널, 터치 스크린, 터치 패드, 터치 볼, 카메라, 마이크, 자이로스코프 센서, 진동 센서, 압전 소자 등과 같은 사용자 입력 인터페이스들을 포함할 수 있다. 사용자 인터페이스(3500)는 LCD (Liquid Crystal Display), OLED (Organic Light Emitting Diode) 표시 장치, AMOLED (Active Matrix OLED) 표시 장치, LED, 스피커, 모터 등과 같은 사용자 출력 인터페이스들을 포함할 수 있다.
이상에서와 같이 도면과 명세서에서 실시 예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허 청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서 본 발명의 진정한 기술적 보호 범위는 첨부된 특허 청구범위의 기술적 사상에 의해 정해져야 할 것이다.

Claims (10)

  1. 복수의 불휘발성 메모리 장치들을 포함하는 레이드(RAID) 스토리지 장치의 리커버리 방법에 있어서:
    상기 복수의 불휘발성 메모리 장치들로부터 정정 불가 에러가 발생한 데이터 청크를 읽어오는 단계;
    상기 데이터 청크와 관련된 스트라이프 중에서 상기 데이터 청크를 포함하지 않으며, 패리티를 포함하는 복수의 서브-스트라이프들을 선택하는 단계; 그리고
    상기 데이터 청크를 복구하기 위해 읽기 레벨 조정을 포함하는 제 1 리커버리 동작과, 상기 복수의 서브-스트라이프들을 처리하여 상기 데이터 청크가 포함되는 서브-스트라이프를 복구하기 위한 제 2 리커버리 동작을 병행하는 단계를 포함하되,
    상기 제 1 리커버리 동작과 상기 제 2 리커버리 동작 중 먼저 완료되는 어느 하나에 따라 상기 병행하는 단계가 종료되는 리커버리 방법.
  2. 제 1 항에 있어서,
    상기 복수의 불휘발성 메모리 장치들은 칩이나 다이 레벨의 스토리지 장치인 것을 특징으로 하는 리커버리 방법.
  3. 제 1 항에 있어서,
    상기 제 1 리커버리 동작은 상기 데이터 청크를 상기 복수의 불휘발성 메모리 장치들로부터 서로 다른 바이어스 조건에서 반복해서 읽어내는 동작을 포함하는 리커버리 방법.
  4. 제 1 항에 있어서,
    상기 제 2 리커버리 동작은, 상기 복수의 서브-스트라이프들과 상기 패리티를 사용하여 상기 데이터 청크가 포함되는 서브-스트라이프의 논리값을 생성하는 리커버리 방법.
  5. 제 1 항에 있어서,
    상기 제 1 리커버리 동작이 수행되는 중에, 상기 제 2 리커버리 동작의 완료 여부를 검출하는 절차가 적어도 1회 포함되는 리커버리 방법.
  6. 제 5 항에 있어서,
    상기 제 2 리커버리 동작이 수행되는 중에, 상기 제 1 리커버리 동작의 완료 여부를 검출하는 절차가 적어도 1회 포함되는 리커버리 방법.
  7. 제 1 항에 있어서,
    상기 복수의 불휘발성 메모리 장치들 중 적어도 하나는 3차원 메모리 어레이를 포함하는 리커버리 방법.
  8. 복수의 불휘발성 메모리 장치를 포함하는 레이드 스토리지 장치에서 데이터 복구 동작을 수행하는 장치에 있어서,
    명령어를 실행하도록 구성된 스토리지 컨트롤러를 포함하되,
    상기 명령어를 실행할 때에, 상기 스토리지 컨트롤러는:
    상기 복수의 불휘발성 메모리 장치들로부터 정정 불가 에러가 발생한 데이터 청크를 읽고;
    상기 데이터 청크와 관련된 스트라이프 중에서 상기 데이터 청크를 포함하지 않으며, 패리티를 포함하는 복수의 서브-스트라이프들을 선택하고; 그리고
    상기 데이터 청크를 복구하기 위해 읽기 레벨 조정을 포함하는 제 1 리커버리 동작과, 상기 복수의 서브-스프라이트들을 처리하여 상기 데이터 청크가 포함되는 서브-스트라이프를 복구하기 위한 제 2 리커버리 동작을 병행하고,
    상기 제 1 리커버리 동작과 상기 제 2 리커버리 동작 중 먼저 완료되는 어느 하나에 따라 상기 데이터 복구 동작이 완료되는 장치.
  9. 제 8 항에 있어서,
    상기 제 2 리커버리 동작은, 상기 데이터 청크를 상기 복수의 불휘발성 메모리 장치들로부터 서로 다른 바이어스 조건에서 반복해서 읽어내는 동작을 포함하는 장치.
  10. 제 8 항에 있어서,
    상기 제 2 리커버리 동작은, 상기 복수의 서브-스트라이프들과 상기 패리티를 사용하여 상기 데이터 청크가 포함되는 서브-스트라이프의 논리값을 생성하는 장치.
KR1020160026263A 2016-03-04 2016-03-04 Raid 스토리지 장치의 리커버리 방법 KR102549605B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160026263A KR102549605B1 (ko) 2016-03-04 2016-03-04 Raid 스토리지 장치의 리커버리 방법
US15/429,486 US10467094B2 (en) 2016-03-04 2017-02-10 Method and apparatus for performing data recovery in a raid storage

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160026263A KR102549605B1 (ko) 2016-03-04 2016-03-04 Raid 스토리지 장치의 리커버리 방법

Publications (2)

Publication Number Publication Date
KR20170104073A KR20170104073A (ko) 2017-09-14
KR102549605B1 true KR102549605B1 (ko) 2023-06-30

Family

ID=59724282

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160026263A KR102549605B1 (ko) 2016-03-04 2016-03-04 Raid 스토리지 장치의 리커버리 방법

Country Status (2)

Country Link
US (1) US10467094B2 (ko)
KR (1) KR102549605B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10152527B1 (en) 2015-12-28 2018-12-11 EMC IP Holding Company LLC Increment resynchronization in hash-based replication
US10101934B1 (en) 2016-03-24 2018-10-16 Emc Corporation Memory allocation balancing for storage systems
US10324782B1 (en) * 2016-03-24 2019-06-18 Emc Corporation Hiccup management in a storage array
US10705907B1 (en) 2016-03-24 2020-07-07 EMC IP Holding Company LLC Data protection in a heterogeneous random access storage array
US10223008B1 (en) 2016-09-30 2019-03-05 EMC IP Holding Company LLC Storage array sizing for compressed applications
US10152371B1 (en) 2016-09-30 2018-12-11 EMC IP Holding Company LLC End-to-end data protection for distributed storage
US10255172B1 (en) 2016-09-30 2019-04-09 EMC IP Holding Company LLC Controlled testing using code error injection
US10705911B2 (en) * 2017-04-24 2020-07-07 Hewlett Packard Enterprise Development Lp Storing data in a distributed storage system
US10949361B1 (en) * 2017-08-04 2021-03-16 Nimbus Data, Inc. Multiprocessor software-defined solid-state storage drive
CN108712656B (zh) * 2018-06-07 2021-07-20 滨州学院 一种远程视频处理方法及视频服务终端
CN112470121A (zh) 2018-11-05 2021-03-09 惠普发展公司,有限责任合伙企业 经由数据块下载恢复映像
US11714616B2 (en) 2019-06-28 2023-08-01 Microsoft Technology Licensing, Llc Compilation and execution of source code as services
US11537446B2 (en) * 2019-08-14 2022-12-27 Microsoft Technology Licensing, Llc Orchestration and scheduling of services
KR20220023476A (ko) * 2020-08-21 2022-03-02 에스케이하이닉스 주식회사 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719661B1 (en) 2010-11-15 2014-05-06 Vmware, Inc. Transparent and lightweight recovery from hardware memory errors
KR100496872B1 (ko) 2002-12-23 2005-06-22 한국전자통신연구원 다중 레이드제어기 오류 복구 기능을 구비한 분산 공유레이드 시스템 및 그 오류 복구 방법
JP4905161B2 (ja) 2007-01-31 2012-03-28 富士通株式会社 Raid装置及びガロア体を用いたデータ復元装置
KR101226685B1 (ko) 2007-11-08 2013-01-25 삼성전자주식회사 수직형 반도체 소자 및 그 제조 방법.
JP5298393B2 (ja) 2007-11-21 2013-09-25 マーベル ワールド トレード リミテッド 並列リードソロモンraid(rs−raid)アーキテクチャ、デバイス、および方法
US8195978B2 (en) 2008-05-16 2012-06-05 Fusion-IO. Inc. Apparatus, system, and method for detecting and replacing failed data storage
JP4439578B1 (ja) 2008-12-24 2010-03-24 株式会社東芝 不揮発性半導体メモリドライブ装置および不揮発性半導体メモリドライブ装置のデータ管理方法
KR101691092B1 (ko) 2010-08-26 2016-12-30 삼성전자주식회사 불휘발성 메모리 장치, 그것의 동작 방법, 그리고 그것을 포함하는 메모리 시스템
US8553466B2 (en) 2010-03-04 2013-10-08 Samsung Electronics Co., Ltd. Non-volatile memory device, erasing method thereof, and memory system including the same
US9536970B2 (en) 2010-03-26 2017-01-03 Samsung Electronics Co., Ltd. Three-dimensional semiconductor memory devices and methods of fabricating the same
JP2012022422A (ja) 2010-07-13 2012-02-02 Panasonic Corp 半導体記録再生装置
KR101682666B1 (ko) * 2010-08-11 2016-12-07 삼성전자주식회사 비휘발성 메모리 장치, 그것의 채널 부스팅 방법, 그것의 프로그램 방법 및 그것을 포함하는 메모리 시스템
US8707122B1 (en) 2011-02-08 2014-04-22 Pmc-Sierra Us, Inc. Nonvolatile memory controller with two-stage error correction technique for enhanced reliability
KR101778782B1 (ko) * 2011-04-08 2017-09-27 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20130032077A (ko) * 2011-09-22 2013-04-01 에스케이하이닉스 주식회사 설정 데이터 저장회로, 이를 포함하는 비휘발성 메모리 장치 및 메모리 시스템
KR101417827B1 (ko) 2011-10-24 2014-07-11 한양대학교 산학협력단 에러 정정 코드의 저장을 위한 플래시 메모리 제어장치 및 방법
KR101566467B1 (ko) 2011-11-02 2015-11-05 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 데이터 복원을 용이하게 하기 위한 트리플 패리티 인코딩
JP2013125513A (ja) 2011-12-16 2013-06-24 Samsung Electronics Co Ltd 不揮発性半導体記憶装置及びその管理方法
JP2013131192A (ja) * 2011-12-22 2013-07-04 Fujitsu Ltd ストレージ装置及びストレージ装置の制御方法
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
KR101826051B1 (ko) * 2012-02-27 2018-02-07 삼성전자주식회사 비휘발성 메모리 장치의 제어 방법 및 비휘발성 메모리 시스템
KR20130111821A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
US9081708B2 (en) * 2012-11-16 2015-07-14 Freescale Semiconductor, Inc. Dynamic read scheme for high reliability high performance flash memory
US9298549B2 (en) * 2013-12-11 2016-03-29 International Business Machines Corporation Read buffer architecture supporting integrated XOR-reconstructed and read-retry for non-volatile random access memory (NVRAM) systems
KR102190241B1 (ko) * 2014-07-31 2020-12-14 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 불휘발성 메모리 시스템
US9436553B2 (en) * 2014-08-04 2016-09-06 Microsoft Technology Licensing, Llc Recovering usability of cloud based service from system failure
KR102572357B1 (ko) * 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem

Also Published As

Publication number Publication date
KR20170104073A (ko) 2017-09-14
US20170255515A1 (en) 2017-09-07
US10467094B2 (en) 2019-11-05

Similar Documents

Publication Publication Date Title
KR102549605B1 (ko) Raid 스토리지 장치의 리커버리 방법
US10282252B2 (en) RAID storage device and method of management thereof
CN107870740B (zh) 用于控制存储器的设备和方法
JP5585919B2 (ja) 電源遮断管理
KR20190123502A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
CN111400200A (zh) 控制器及其操作方法
KR20200011831A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR102564774B1 (ko) 메모리 시스템 혹은 데이터 처리 시스템의 동작을 진단하는 장치 혹은 진단을 통해 신뢰성을 확보하는 방법
KR102639696B1 (ko) 메모리 시스템, 컨트롤러 및 그 동작방법
US10776027B2 (en) Storage device and method of operating the same
KR20190128794A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
US10672434B2 (en) Storage device and method of operating the same
KR20190115310A (ko) 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180014994A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20180130140A (ko) 데이터 처리 시스템 및 데이터 처리 방법
CN111798910A (zh) 存储装置及其操作方法
KR20190128392A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190118030A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20200001310A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20200006379A (ko) 컨트롤러 및 그것의 동작방법
KR20180076425A (ko) 컨트롤러 및 컨트롤러의 동작 방법
KR20200015247A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190133331A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
KR20190102790A (ko) 컨트롤러 및 그 동작 방법과, 이를 포함하는 메모리 시스템
CN111796962A (zh) 存储装置以及存储装置的操作方法

Legal Events

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