KR20170092333A - Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 - Google Patents

Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 Download PDF

Info

Publication number
KR20170092333A
KR20170092333A KR1020160013549A KR20160013549A KR20170092333A KR 20170092333 A KR20170092333 A KR 20170092333A KR 1020160013549 A KR1020160013549 A KR 1020160013549A KR 20160013549 A KR20160013549 A KR 20160013549A KR 20170092333 A KR20170092333 A KR 20170092333A
Authority
KR
South Korea
Prior art keywords
data
data block
controller
stripe
ecc
Prior art date
Application number
KR1020160013549A
Other languages
English (en)
Other versions
KR102572357B1 (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 KR1020160013549A priority Critical patent/KR102572357B1/ko
Priority to US15/379,868 priority patent/US10275311B2/en
Priority to CN201611195390.8A priority patent/CN107037982B/zh
Publication of KR20170092333A publication Critical patent/KR20170092333A/ko
Application granted granted Critical
Publication of KR102572357B1 publication Critical patent/KR102572357B1/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/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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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
    • 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/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

데이터 저장 장치가 게시되다. 상기 데이터 저장 장치는 RAID-6을 정의하는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체와, 상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하는 컨트롤러를 포함한다.

Description

RAID-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템{RAID-6 DATA STORAGE DEVICE AND DATA PROCESSING SYSTEM HAVING THE SAME}
본 발명의 개념에 따른 실시 예는 RAID-6 데이터 저장 장치에 관한 것으로, 특히 논리적 컬럼 단위로 데이터를 효율적으로 복구할 수 있는 RAID-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템에 관한 것이다.
컴퓨터 스토리지에서, RAID(redundant array of inexpensive/independent disk)는 데이터 중복성(data redundancy) 및/또는 성능 향상의 목적으로 멀티플 물리적 디스크 드라이브 컴포넌트들(multiple physical disk drive components)을 하나의 논리 유닛(single logical unit)으로 결합하는 데이터 스토리지 시각화 기술 (data storage virtualization technology)이다.
데이터는 중복성과 성능의 요구에 따라 RAID 레벨들로 불리는 여러 가지 방식들 중에서 하나를 이용하여 물리적인 디스크 드라이브 컴포넌트들로 분산된다.
표준 RAID 레벨들은 RAID 0부터 RAID 6을 포함한다. RAID 6은 이중 분산 패리티(double distributed parity)를 갖는 블록-레벨 스트라이핑(block-level striping)으로 구성된다. 이중 패리티는 최대 2개의 결함 드라이브들에 대한 결함 허용(fault tolerance)을 제공한다.
데이터 저장 장치들을 포함하는 RAID 6 데이터 시스템에서 리드 동작이 수행되는 동안, 상기 RAID 6 데이터 시스템의 ECC 디코더는 상기 데이터 저장 장치들 중에서 어느 하나로부터 리드된 데이터에 대한 ECC 디코딩을 수행한다. 상기 ECC 디코딩에서 정정 불가능한 에러(uncorrectable error)가 발생할 때, 상기 데이터 저장 장치에 포함된 RAID 컨트롤러는 상기 데이터 저장 장치들 중에서 나머지 데이터 저장 장치들로부터 데이터를 리드하고 리드된 데이터를 이용하여 상기 정정 불가능한 에러를 복구한다. 이러한 에러 복구에는 많은 시간이 소요되므로, 효율적으로 에러 복구 방법이 필요하다.
본 발명이 이루고자 하는 기술적인 과제는 데이터 복구율을 높이고 효율적으로 결함 있는(failed) 데이터를 복구할 수 있는 RAID-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템을 제공하는 것이다.
본 발명의 실시 예에 따른 데이터 저장 장치는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체와, 상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 중에서 상기 제1컬럼에 논리적으로 배열된 제1그룹 데이터 블록들 각각을 리드하는 컨트롤러를 포함한다. 상기 데이터 블록들을 포함하는 상기 스트라이프 세트는 RAID-6에 적합하게 상기 저장 매체에 저장된다.
상기 저장 매체는 복수의 불휘발성 메모리 장치들을 포함하고, 상기 스트라이프 세트는 데이터 스트라이프들, P-패리티 스트라이프, 및 Q-패리티 스트라이프를 포함하고, 상기 데이터 스트라이프들 각각, 상기 P-패리티 스트라이프, 및 상기 Q-패리티 스트라이프 각각은 상기 복수의 불휘발성 메모리 장치들 각각에 저장된다. 상기 복수의 불휘발성 메모리 장치들 각각은 서로 다른 웨이(way)에 포함된다.
상기 복수의 불휘발성 메모리 장치들 각각은 플래시 메모리 장치이고, 상기 플래시 메모리 장치는 3차원 메모리 셀 어레이를 포함하고, 상기 3차원 메모리 셀 어레이는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 전하 트랩 레이어를 포함한다.
상기 제1그룹 데이터 블록들은 상기 데이터 스트라이프들 중에서 상기 제1데이터 블록을 포함하는 제1데이터 스트라이프를 제외한 나머지 제2데이터 스트라이프들 각각에 포함된 제2데이터 블록과, 상기 P-패리트 스트라이프에 포함된 제1P-데이터 블록과, 상기 Q-패리티 스트라이프에 포함된 제1Q-데이터 블록을 포함한다. 상기 컨트롤러는 상기 제1P-데이터 블록을 가장 먼저 리드하고 디코드한다.
실시 예들에 따라, 상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록을 리드하여 디코드하고, 상기 제1P-데이터 블록에서 리드 실패가 발생하지 않을 때, 상기 컨트롤러는 디코드된 제1P-데이터 블록과 디코드된 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송한다.
실시 예들에 따라, 상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록과 상기 제1Q-데이터 블록을 리드하여 디코드하고, 상기 제1P-데이터 블록에서 리드 실패가 발생할 때, 상기 컨트롤러는 디코드된 제2데이터 블록들과 상기 제2데이터 블록들에 해당하는 갈루아 필드의 심벌들을 이용하여 상기 제1Q-데이터 블록에 해당하는 제2Q-데이터 블록을 생성하고, 상기 제1데이터 블록에 해당하는 상기 갈루아 필드의 심벌, 상기 제1Q-데이터 블록, 및 상기 제2Q-데이터 블록을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송한다.
실시 예들에 따라, 상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록과 상기 제1Q-데이터 블록을 리드하여 디코드하고, 상기 제1P-데이터 블록과 상기 제1Q-데이터 블록 모두에서 리드 실패가 발생하지 않고 제2데이터 블록들 중에서 제3데이터 블록에서 리드 실패가 발생할 때, 상기 컨트롤러는 디코드된 제2데이터 블록들 중에서 디코드된 제3데이터 블록을 포함하지 않는 디코드된 제4데이터 블록들을 이용하여 상기 제1P-데이터 블록에 해당하는 제2P-데이터 블록을 생성하고, 디코드된 제4데이터 블록들과 상기 제4데이터 블록들에 해당하는 갈루아 필드의 심벌들을 이용하여 상기 제1Q-데이터 블록에 해당하는 제2Q-데이터 블록을 생성하고, 상기 제1데이터 블록에 해당하는 상기 갈루아 필드의 제1심벌, 상기 제3데이터 블록에 해당하는 상기 갈루아 필드의 제2심벌, 상기 제1P-데이터 블록, 상기 제2P-데이터 블록, 상기 제1Q-데이터 블록, 및 상기 제2Q-데이터 블록을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송하고, 상기 복구된 제1데이터 블록, 상기 제1P-데이터 블록, 및 상기 제2P-데이터 블록을 이용하여 상기 제3데이터 블록을 복구하고, 복구된 제3데이터 블록을 호스트로 전송한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 RAID-6을 정의하는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체와, 상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하는 컨트롤러를 포함한다.
상기 컨트롤러는 상기 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고 복구된 제1데이터 블록을 호스트로 전송한다. 상기 컨트롤러는 상기 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고 복구된 제1데이터 블록을 상기 저장 매체에 저장한다.
상기 저장 매체는 복수의 불휘발성 메모리 장치들을 포함하고, 상기 스트라이프 세트는 데이터 스트라이프들, P-패리티 스트라이프, 및 Q-패리티 스트라이프를 포함하고, 상기 데이터 스트라이프들 각각, 상기 P-패리티 스트라이프, 및 상기 Q-패리티 스트라이프 각각은 상기 복수의 불휘발성 메모리 장치들 각각에 저장된다.
상기 제2데이터 블록들은 상기 P-패리트 스트라이프에 포함된 P-데이터 블록과 상기 Q-패리티 스트라이프에 포함된 Q-데이터 블록을 포함하고, 상기 컨트롤러는 상기 P-데이터 블록을 가장 먼저 리드한다. 상기 컨트롤러는 상기 P-데이터 블록을 디코드하고, 디코드 결과에 따라 Q-데이터 블록의 리드 여부를 결정한다.
본 발명의 실시 예에 따른 데이터 처리 시스템은 데이터 저장 장치와, 상기 데이터 저장 장치에 연결된 호스트를 포함한다. 상기 데이터 저장 장치는 RAID-6을 정의하는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체와, 상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하고, 상기 제2데이터 블록들을 이용하여 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 상기 호스트로 전송하는 컨트롤러를 포함한다.
본 발명의 실시 예에 따른 RAID-6 구성을 갖는 데이터 저장 장치는 리드 동작 동안 저장 매체에 저장된 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하고, 상기 제2데이터 블록들을 이용하여 제1데이터 블록을 복구할 수 있다.
따라서 상기 제1데이터 블록에서 리드 실패가 발생할 때, 저장 매체로부터 리드되는 데이터의 양은 상당히 감소하는 효과가 있다. 이에 따라 데이터 저장 장치는 빠른 시간 내에 데이터를 효율적으로 복구할 수 있는 효과가 있다.
상기 데이터 저장 장치는 상기 제1컬럼에서 포함된 제2데이터 블록들 중에서 리드 실패가 발생한 블록의 개수에 따라 다양한 복구 방법들 중에서 가장 효율적인 복구 방법을 선택하고, 선택된 복구 방법을 이용하여 리드 실패가 발생한 하나 또는 2개의 데이터 블록들을 복구할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도이다.
도 2는 본 발명의 실시 예에 따른 RAID-6 스트라이프 세트의 구성을 나타낸다.
도 3은 도 1에 도시된 플래시 메모리 컨트롤로의 블록도이다.
도 4a는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패에 대한 제1복구 모드에 대한 개념도이다.
도 4b는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 Q-패리티 스트라이프에 대한 리드 실패에 대한 제1복구 모드에 대한 개념도이다.
도 5는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 P-패리티 스트라이프에 대한 리드 실패에 대한 제2복구 모드에 대한 개념도이다.
도 6은 본 발명의 실시 예에 따른 두 개의 데이터 스트라이프들 각각에 대한 리드 실패에 대한 제3복구 모드에 대한 개념도이다.
도 7은 본 발명의 실시 예에 따른 스트라이프 세트의 저장 실시 예를 나타낸다.
도 8은 본 발명의 실시 예에 따른 스트라이프 세트의 저장 실시 예를 나타낸다.
도 9와 도 10은 도 1에 도시된 데이터 저장 장치의 동작을 설명하는 플로우 차트이다.
도 11은 도 1에 도시된 데이터 저장 장치의 동작을 설명하는 플로우 차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
본 명세서에서 데이터 블록(data block)은 디코딩(예컨대, ECC(error correction code) 디코딩)을 수행하기 위한 최소 단위를 의미하고, ECC 섹터라고 불릴 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 처리 시스템의 블록도이다. 도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(200)와, 인터페이스(110)를 통해 호스트(200)와 신호들을 주고받을 수 있는 데이터 저장 장치(300)를 포함할 수 있다.
데이터 처리 시스템(100)은 메모리 시스템을 의미할 수 있다. 데이터 처리 시스템(100)은 PC(personal computer), 워크스테이션(workstation), 데이터 센터, 인터넷 데이터 센터(internet data center(IDC)), DAS(direct attached storage), SAN(storage area network), NAS(network attached storage) 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 데이터 처리 시스템(100)은 스마트 카 또는 자동차 시스템(automotive system)일 수 있다.
실시 예들에 따라, 상기 모바일 컴퓨팅 장치는 랩탑 컴퓨터, 스마트폰, 태블릿 PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷 (internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치 또는 드론으로 구현될 수 있다.
인터페이스(110)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)) 인터페이스, PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface) 인터페이스, 또는 멀티미디어 카드(multimedia card(MMC))인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다. 실시 예들에 따라, 인터페이스(110)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(200)는 인터페이스(110)를 통해 데이터 저장 장치(300)의 데이터 처리 동작(예컨대, 라이트 동작 또는 리드 동작)을 제어할 수 있다. 호스트(200)는 호스트 컨트롤러를 의미할 수 있다.
실시 예들에 따라, 호스트(200)는 집적 회로(integrated circuit(IC)), 마더보드(motherboard), 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서 (application processor(AP)), 모바일(mobile) AP, 웹 서버(web server), 데이터 서버, 데이터베이스 서버, 또는 엔진 제어 유닛(engine control unit(ECU))로 구현될 수 있으나 이에 한정되는 것은 아니다.
데이터 저장 장치(300)는 컨트롤러(310), DRAM 장치(360), 및 저장 매체 (400)를 포함할 수 있다. 예컨대, 데이터 저장 장치(300)는 RAID-6 구성을 갖는 데이터 저장 장치일 수 있다.
데이터 저장 장치(300)는 플래시 메모리-기반 데이터 저장 장치로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, 데이터 저장 장치(300)는 솔리드 스테이트 드라이브(solid-state drive or solid-state disk(SSD)), 임베디드 SSD (embedded SSD(eSSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)) 또는 매니지드(managed) NAND로 구현될 수 있으나 이에 한정되는 것은 아니다. 플래시 메모리-기반 메모리 장치는 NAND-타입 플래시 메모리 장치 또는 NOR-타입 플래시 메모리 장치로 구현될 수 있다. 예컨대, 데이터 저장 장치(300)는 데이터베이스를 의밀할 수도 있다.
실시 예들에 따라, 데이터 저장 장치(300)는 하드 디스크 드라이브(hard disk drive(HDD)), PRAM(phase change RAM) 장치, MRAM(magnetoresistive RAM) 장치, STT-MRAM(spin-transfer torque MRAM) 장치, FRAM(ferroelectric RAM) 장치 또는 RRAM(resistive RAM) 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
컨트롤러(310)는 호스트(200), DRAM 장치(360), 및 저장 매체(400) 사이에서 주고받는 신호들의 전송(또는 처리)을 제어할 수 있다. 실시 예들에 따라, 컨트롤러(310)는 IC 또는 SoC로 구현될 수 있고 SSD 컨트롤러 또는 RAID-6 컨트롤러로 불릴 수 있다.
컨트롤러(310)는 전송 매체(315), CPU(central processing unit; 320), 내부 메모리 장치(325), ROM(read only memory; 330), 호스트 인터페이스(335), 버퍼 컨트롤러(340), DMA(direct memory access) 컨트롤러(345), 및 저장 매체 컨트롤러 (350)를 포함할 수 있다.
전송 매체(315)는 전송 라인들 또는 버스로 구현될 수 있다. 전송 매체(315)가 상기 버스일 때, 상기 버스는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus), ACE(AXI Coherency Extensions), 또는 이들의 결합으로 구현될 수 있으나 이에 한정되는 것은 아니다.
CPU(320)는 컨트롤러(310)를 전반적으로 제어할 수 있다. CPU(320)는, 전송 매체(315)를 통해, 내부 메모리 장치(325), ROM(330), 호스트 인터페이스(335), 버퍼 컨트롤러(340), DMA 컨트롤러(345), 및/또는 저장 매체 컨트롤러(350)를 제어할 수 있다. 예컨대, CPU(330)는 하나 또는 그 이상의 코어들을 포함할 수 있다.
내부 메모리 장치(325)는 CPU(330)에 의해 실행될 수 있는 ROM 코드 또는 FTL(flash translation layer) 코드를 저장할 수 있다. 예컨대, 데이터 저장 장치 (300)가 부트(boot)될 때, 상기 ROM 코드는 ROM(330)으로부터 내부 메모리 장치 (325)로 로드(load)될 수 있고, 상기 FTL 코드는 저장 매체(400)로부터 내부 메모리 장치(325)로 로드될 수 있다.
실시 예들에 따라, 내부 메모리 장치(325)는 RAM(random access memory), DRAM(dynamic RAM), SRAM(static RAM), 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory(TCM))로 구현될 수 있으나 이에 한정되는 것은 아니다.
ROM(330)은 상기 ROM 코드를 저장할 수 있다. 상기 ROM 코드를 실행하는 CPU (320)는 호스트 인터페이스(335), 저장 매체 컨트롤러(350), 및 DRAM 장치(360)를 초기화할 수 있다. 상기 ROM 코드를 실행하는 CPU(320)는 컨트롤러(310)의 펌웨어를 저장 매체(400)로부터 DRAM 장치(360)로 로드하고, DRAM 장치(360)로 로드된 상기 펌웨어를 내부 메모리 장치(325)로 로드하고, 내부 메모리 장치(325)로 로드된 상기 펌웨어를 실행할 수 있다.
호스트 인터페이스(335)는 호스트(200)로 전송될 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다. 또한, 호스트 인터페이스(335)는 호스트(200)로부터 전송된 신호들을 수신하고, 수신된 신호들의 포맷을 변경하고, 변경된 포맷을 갖는 신호들을 CPU(320) 및/또는 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예에 따라, 호스트 인터페이스 (320)는 신호들을 송수신할 수 있는 송수신기를 포함할 수 있다.
호스트 인터페이스(335)의 구조와 동작은 인터페이스(110)의 구조와 동작에 적합하게 구현될 수 있다. 예컨대, 호스트 인터페이스(335)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼 컨트롤러(340)는, CPU(320)의 제어 또는 CPU(320)에서 실행되는 펌웨어의 제어에 따라, DRAM 장치(360)에 데이터를 라이트하거나 DRAM 장치(360)로부터 데이터를 리드할 수 있다. 버퍼 컨트롤러(340)는 DRAM 장치(360)에 대한 라이트 동작과 리드 동작을 제어할 수 있는 컨트롤러 또는 버퍼 매니저(buffer manager)로 불릴 수 있다.
DMA 컨트롤러(345)는 버퍼 컨트롤러(340)로부터 출력된 데이터를 저장 매체 컨트롤러(350)로 전송하거나 저장 매체 컨트롤러(350)로부터 출력된 데이터를 버퍼 컨트롤러(340)로 전송할 수 있다.
저장 매체 컨트롤러(350)는, CPU(320) 또는 CPU(320)에서 실행되는 펌웨어의 제어에 따라, 복수의 채널들(CH1~CH2) 중에서 해당 채널을 통해 저장 매체(400)에 대한 데이터 처리 동작(예컨대, 라이트 동작 또는 리드 동작)을 제어할 수 있다.
실시 예들에 따라, 저장 매체 컨트롤러(350)는 SATA 인터페이스, SATAe 인터페이스, SAS 인터페이스, PCIe 인터페이스, NVMe 인터페이스, AHCI 인터페이스, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스로 구현될 수 있으나 이에 한정되는 것은 아니다.
저장 매체 컨트롤러(350)는 에러 정정 코드(error correction code(ECC)) 인코더 및 디코더를 포함할 수 있다. 상기 EEC 인코더/디코더는 저장 매체(400)에 저장될 ECC 섹터를 생성할 수 있다. 상기 ECC 섹터는 데이터와 ECC 패리티를 포함한다. 상기 ECC 섹터는 컨트롤러(310)에서 수행되는 ECC 디코딩의 단위이다. 상기 EEC 인코더/디코더는 저장 매체(400)로부터 출력된 ECC 섹터에 포함된 에러를 정정할 수 있다. 실시 예에 따라, 상기 EEC 인코더/디코더는 ECC 엔진을 의미할 수 있다.
DRAM 장치(360)는, 버퍼 컨트롤러(340)의 제어에 따라, 호스트 인터페이스 (335)로부터 출력된 데이터 또는 DMA 컨트롤러(345)로부터 출력된 데이터를 수신하여 저장하거나 데이터를 버퍼 컨트롤러(340)로 전송할 수 있다. 실시 예들에 따라, DRAM 장치(360)는 휘발성 메모리 장치의 일 실시 예이다.
DRAM 장치(360)는 저장 매체(400)에 대한 논리 어드레스-물리 어드레스 변환을 위한 매핑(mapping) 테이블을 저장하는 제1영역과, 캐시(cache)의 기능을 수행할 수 있는 제2영역을 포함할 수 있으나 이에 한정되는 것은 아니다. 예컨대, CPU(320)에 의해 실행되는 FTL 코드는 상기 제1영역에 저장된 매핑 테이블을 이용하여 논리 어드레스-물리 어드레스 변환을 수행할 수 있다.
실시 예들에 따라, 컨트롤러(310)와 DRAM 장치(360) 각각이 서로 다른 반도체 칩(chip)으로 구현될 때, 컨트롤러(310)와 DRAM 장치(360)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package (MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다. 예컨대, DRAM 장치(360)를 포함하는 제1반도체 칩은 컨트롤러(310)를 포함하는 제2반도체 칩의 위(above)에 스택 볼들(stack balls)을 통해 적층(stack)될 수 있다.
저장 매체(400)는 불휘발성 메모리 장치들(410-1~410-8, 및 420-1~420-8)을 포함할 수 있다. 불휘발성 메모리 장치들(410-1~410-8)은 제1채널(CH1)에 접속될 수 있고, 불휘발성 메모리 장치들(420-1~420-8)은 제2채널(CH2)에 접속될 수 있다.
본 명세서에서 채널은 독립적인 데이터 패스(data path)를 의미할 수 있다. 상기 데이터 패스는 데이터 및/또는 제어 신호들을 전송할 수 있는 전송 라인들을 포함할 수 있다. 웨이(way)는 하나의 채널을 공유하는 하나 또는 그 이상의 불휘발성 메모리 장치들의 그룹을 의미할 수 있다. 따라서, 하나의 채널에는 복수의 웨이들이 접속될 수 있다. 예컨대, 각 채널(CH1과 CH2)에는 8개의 웨이들(WAY0~WAY7)이 접속될 수 있다.
복수의 불휘발성 메모리 장치들(410-1~410-8, 및 420-1~420-8, 집합적으로 NAND) 각각은 플래시 메모리 장치로 구현되고, 상기 플래시 메모리 장치는 메모리 셀 어레이를 포함할 수 있다. 상기 메모리 셀 어레이는 복수의 메모리 셀들을 포함할 수 있다. 상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 상기 복수의 메모리 셀들 각각은 2차원 메모리 셀 또는 3차원 메모리 셀로 구현될 수 있다.
3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브 영역(active region)을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 동작에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다. 모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다. 3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
도 2는 본 발명의 실시 예에 따른 RAID-6 스트라이프 세트의 구성을 나타낸다. 도 1과 도 2를 참조하면, RAID-6 스트라이프 세트(strip set)는 저장 매체 (400)에 저장될 수 있다. 도 2에 도시된 RAID-6 스트라이프 세트는 개념적으로 논리적으로 도시된 것이다.
하나의 RAID-6 스트라이프 세트는 N-개의 데이터 스트라이프들(D0~DN-1)과 2개의 패리티 스트라이프들(DN과 DN+1)을 포함할 수 있다. 각각의 스트라이프(D0~DN+1)은 서로 다른 웨이(또는 서로 다른 반도체 칩)에 포함(또는 저장)되고, 각각의 스트라이프(D0~DN+1)은 복수의 ECC 섹터들(예컨대, L-개의 섹터들)을 포함할 수 있다.
ECC 섹터는 데이터(DATA)와 ECC 패리티(ECC PARITY)를 포함할 수 있다. 상기 ECC 섹터는 컨트롤러(310)에서 수행되는 ECC 디코딩의 단위를 의미할 수 있다. 여기서, N은 0 이상의 정수를 의미하고, L은 0 이상의 정수를 의미할 수 있다.
데이터 저장 장치(300)는 스트라이프 세트에 포함된 모든 데이터 블록들(또는 ECC 섹터들)을 저장하는 저장 매체(400)와, 저장 매체(400)에 연결된 컨트롤러 (310)를 포함할 수 있다. 컨트롤러(310)는, 리드 동작 동안, 저장 매체(400)에 저장된 모든 데이터 블록들 중에서 특정한 컬럼(column)에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패(read failure)가 발생할 때 상기 데이터 블록들 중에서 상기 특정한 컬럼에 논리적으로 배열된 데이터 블록들 각각을 리드할 수 있다.
도 2를 참조하여 설명한 바와 같이, 데이터 블록들을 포함하는 스트라이프 세트는 RAID-6에 적합하게 저장 매체(400)에 논리적으로 또는 물리적으로 저장될 수 있다.
저장 매체(400)는 복수의 불휘발성 메모리 장치들(410-1~410-8, 및 420-1~420-8)을 포함하고, 스트라이프 세트는 데이터 스트라이프들(D0~DN -1), P-패리티 스트라이프(DN), 및 Q-패리티 스트라이프(DN+1)를 포함한다. 도 7에 예시적으로 도시된 바와 같이, 데이터 스트라이프들(D0~DN-1) 각각, P-패리티 스트라이프(DN), 및 Q-패리티 스트라이프(DN +1) 각각은 복수의 불휘발성 메모리 장치들(410-1~410-8, 및 420-1~420-8) 각각에 저장될 수 있다. 복수의 불휘발성 메모리 장치들(410-1~410-8, 및 420-1~420-8) 각각은 서로 다른 웨이(Way0~Way7)에 포함될 수 있다.
패리티 스트라이트들(DN과 DN +1) 각각은 N-개의 데이터 스트라이프들(D0~DN -1) 각각에 대한 확장 리드-솔로몬 인코딩(extended Reed-Solomon encoding)의 수행 결과로서 생성될 수 있다.
P-패리티 스트라이프(P=DN)의 j-번째 ECC 섹터와 Q-패리티 스트라이프 (Q=DN+1)의 j-번째 ECC 섹터는 수학식 1에 의해 계산될 수 있다. j는 0≤1≤(L-1) 이고, N은 3 이상의 자연수이고, L은 4 이상의 자연수라고 가정한다.
[수학식 1]
Figure pat00001
g0, g1, g2, …gN -2, 및 gN -1은 갈로아 필드(Galois field) GF(2q)의 q-비트의 심벌(symbol)로 gkk값 또는 역순으로 gkN -1-k의 값을 가질 수 있다.
Figure pat00002
는 비트-단위(bit-wise) XOR 연산자이고,
Figure pat00003
는 GF(2q) 곱셈 연산을 ECC 섹터 단위로 확장한 연산자이다.
컬럼마다 포함된 ECC 섹터들에 대해 수학식 1을 적용하면 P-패리티 스트라이프(P=DN)을 위한 L-개의 ECC 섹터들(P[0]~P[L-1])이 계산되고, 계산된 L-개의 ECC 섹터들(P[0]~P[L-1])을 연접하면 L-개의 ECC 섹터들(P[0]~P[L-1])을 포함하는 P-패리티 스트라이프(P=DN)이 계산될 수 있다.
컬럼마다 포함된 ECC 섹터들에 대해 수학식 1을 적용하면 Q-패리티 스트라이프(Q=DN+1)을 위한 L-개의 ECC 섹터들(Q[0]~Q[L-1])이 계산되고, 계산된 L-개의 ECC 섹터들(Q[0]~Q[L-1])을 연접하면 L-개의 ECC 섹터들(Q[0]~Q[L-1])을 포함하는 Q-패리티 스트라이프(Q=DN+1)이 계산될 수 있다.
수학식 1에서 gkN -1-k의 값을 가질 때, 수학식 1은 수학식 2로 변경된다.
[수학식2]
Figure pat00004
도 3은 도 1에 도시된 플래시 메모리 컨트롤로의 블록도이다. 도 1과 도 3을 참조하면, 저장 매체 컨트롤러(350)는 플래시 메모리 컨트롤러라고 가정한다.
플래시 메모리 컨트롤러(350)는 ECC 인코더/디코더(355)와 RAID-6 엔진(357)을 포함할 수 있다. ECC 인코더/디코더(355)는, 라이트 동작을 위해, 인코드된 ECC 섹터, 인코드된 P-패리티 ECC 섹터, 및 인코드된 Q-패리티 ECC 섹터를 생성할 수 있다. ECC 인코더/디코더(355)는, 리드 동작을 위해, 인코드된 ECC 섹터, 인코드된 P-패리티 ECC 섹터, 및 인코드된 Q-패리티 ECC 섹터를 디코딩할 수 있다.
RAID-6 엔진(357)은 수학식 1을 이용하여 P-패리티 ECC 섹터, 및 Q-패리티 ECC 섹터를 생성할 수 있다.
도 4a는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패에 대한 제1복구 모드에 대한 개념도이다.
도 2와 도 4a를 참조하면, 제1컬럼(COL1)에 논리적으로(logically) 배열된 ECC 섹터(D2[0])에 대해 ECC 디코딩이 수행되었으나, ECC 섹터(D2[0])에 정정 불가능한 에러가 존재하면 ECC 섹터(D2[0])에 대해 리드 실패(read failure)가 발생한다. ECC 섹터(D2[0])에 대해 리드 실패가 발생한 경우, 컨트롤러(310)는 제1복구 모드(MODE0)를 이용하여 ECC 섹터(D2[0])를 복구할 수 있다. 즉, 하나의 ECC 섹터 (D2[0])가 리드 실패되고, 리드 실패된 ECC 섹터(D2[0])가 데이터 스트라이프(D2)에 포함될 때, 컨트롤러(310)는 제1복구 모드(MODE0)를 이용하여 하나의 ECC 섹터 (D2[0])를 복구할 수 있다.
도 4b는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 Q-패리티 스트라이프에 대한 리드 실패에 대한 제1복구 모드에 대한 개념도이다.
도 2와 도 4b를 참조하면, 제2컬럼(COL2)에 논리적으로 배열된 두 개의 ECC 섹터들(D2[1]과 Q[1]) 각각에 대해 ECC 디코딩이 수행되었으나, 두 개의 ECC 섹터들 (D2[1]과 Q[1]) 각각에 정정 불가능한 에러가 존재함에 따라 두 개의 ECC 섹터들 (D2[1]과 Q[1]) 각각에 대해 리드 실패가 발생한 경우, 컨트롤러(310)는 제1복구 모드(MODE0)를 이용하여 두 개의 ECC 섹터들(D2[1]과 Q[1]) 각각을 복구할 수 있다.
즉, 두 개의 ECC 섹터들(D2[1]과 Q[1]) 각각이 리드 페일되고, 두 개의 ECC 섹터들(D2[1]과 Q[1]) 중에서 어느 하나(D2[1])가 데이터 스트라이프(D2)에 포함되고, 두 개의 ECC 섹터들(D2[1]과 Q[1]) 중에서 다른 하나(Q[1])가 Q-패리티 스트라이프(DN+1)에 포함될 때, 컨트롤러(310)는 제1복구 모드(MODE0)를 이용하여 ECC 섹터(D2[1])를 복구한 후 ECC 섹터(Q[1])를 복구할 수 있다.
도 5는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 P-패리티 스트라이프에 대한 리드 실패에 대한 제2복구 모드에 대한 개념도이다.
도 2와 도 5를 참조하면, 제3컬럼(COL3)에 논리적으로 배열된 두 개의 ECC 섹터들(D1[2]과 P[2]) 각각에 대해 ECC 디코딩이 수행되었으나, 두 개의 ECC 섹터들(D1[2]과 P[2]) 각각에 정정 불가능한 에러가 존재함에 따라 두 개의 ECC 섹터들 (D1[2]과 P[2]) 각각에 대해 리드 실패가 발생한 경우, 컨트롤러(310)는 제2복구 모드(MODE1)를 이용하여 두 개의 ECC 섹터들(D1[2]과 P[2]) 각각을 복구할 수 있다.
즉, 두 개의 ECC 섹터들(D1[2]과 P[2]) 각각이 리드 페일되고, 두 개의 ECC 섹터들(D1[2]과 P[2]) 중에서 어느 하나(D1[2])가 데이터 스트라이프(D1)에 포함되고, 두 개의 ECC 섹터들(D1[2]과 P[2]) 중에서 다른 하나(P[2])가 P-패리티 스트라이프(DN)에 포함될 때, 컨트롤러(310)는 제2복구 모드(MODE1)를 이용하여 ECC 섹터 (D1[2])를 복구한 후 ECC 섹터(P[2])를 복구할 수 있다.
도 6은 본 발명의 실시 예에 따른 두 개의 데이터 스트라이프들 각각에 대한 실패에 대한 제3복구 모드에 대한 개념도이다.
도 2와 도 6을 참조하면, 제4컬럼(COL4)에 논리적으로 배열된 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각에 대해 ECC 디코딩이 수행되었으나, 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각에 정정 불가능한 에러가 존재하여 두 개의 ECC 섹터들 (D1[3]과 D2[3]) 각각에 대해 리드 실패가 발생한 경우, 컨트롤러(310)는 제3복구 모드(MODE2)를 이용하여 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각을 복구할 수 있다.
즉, 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각이 리드 페일되고, 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각이 데이터 스트라이프들(D1과 D2)에 포함될 때, 컨트롤러 (310)는 제3복구 모드(MODE2)를 이용하여 두 개의 ECC 섹터들(D1[3]과 D2[3]) 각각을 복구한 후 ECC 섹터들(P[3]과 Q[3]) 각각을 복구할 수 있다.
도 7은 본 발명의 실시 예에 따른 스트라이프 세트의 저장 실시 예를 나타낸다. 도 1과 도 7을 참조하면, 각 스트라이프(D0~DN+1)은 각 웨이(Way0~Way7)에 포함된 각 불휘발성 메모리 장치(410-1~410-8, 및 420-1~420-8)에 저장될 수 있다.
도 8은 본 발명의 실시 예에 따른 스트라이프 세트의 저장 실시 예를 나타낸다. 도 1과 도 8을 참조하면, 제1데이터 스트라이프(D0)에 포함된 각 ECC 섹터 (D0[0]~D0[L-1])는 각 웨이(Way0~Way7)에 포함된 각 불휘발성 메모리 장치(410-1~410-8, 및 420-1~420-8)에 저장될 수 있다. 또한, Q-패리티 스트라이프(DN+1)에 포함된 각 ECC 섹터(Q[0]~Q[L-1])는 각 웨이(Way0~Way7)에 포함된 각 불휘발성 메모리 장치(410-1~410-8, 및 420-1~420-8)에 저장될 수 있다.
도 9와 도 10은 도 1에 도시된 데이터 저장 장치의 동작을 설명하는 플로우 차트이다. 하나의 데이터 스트라이프에 대한 리드 실패에 대한 제1복구 모드를 수행하는 컨트롤러(310)의 동작은 도 1, 도 2, 도 4a, 도 9, 및 도 10을 참조하여 상세히 설명된다.
제3데이터 스트라이프(D2)의 제1컬럼(COL1)에 논리적으로 포함된 ECC 섹터 (Di[j]=D2[0]=Dk[j])에 대해서만 리드 페일이 발생한다고 가정한다. 이때, i(0≤i≤(N-1))는 2이고, k(0≤k≤(N-1))는 2이고, j(0≤j≤(L-1))는 0이라고 가정한다. 컨트롤러(310)는 제1복구 모드(MODE0)를 수행할 수 있다.
ECC 섹터(D2[0])에 대해 리드 페일이 발생하면(S110), 컨트롤러(310)는 디폴트 복구 모드, 예컨대 제1복구 모드(MODE0)의 수행을 잠정적으로 결정할 수 있다 (S112). 여기서, c=0은 제1복구 모드(MODE0)를 의미한다.
컨트롤러(310)는 P-패리티 스트라이프(DN)에 포함되고 제1컬럼(COL1)에 논리적으로 배치된 ECC 섹터(P[j]=P[0]), 예컨대 P-데이터 블록 또는 P-ECC 섹터를 저장 매체(400)로부터 리드할 수 있다. 플래시 메모리 컨트롤러(350)의 ECC 인코더/디코더(355)는 ECC 섹터(P[0])를 디코드하고, 디코드된 ECC 섹터(P[0])를 DMA 컨트롤러(345)에 저장할 수 있다. 실시 예들에 따라, 디코드된 ECC 섹터(P[0])는 버퍼 컨트롤러(340)의 제어에 따라 DRAM 장치(360)에 저장될 수 있다.
본 명세서에서는 설명의 편의를 위해 저장 매체(400)에 저장된 인코드된 ECC 섹터의 기호와 디코드된 ECC 섹터의 기호를 동일하게 사용한다. 예컨대, 인코드된 ECC 섹터(D2[0])와 디코드된 ECC 섹터(D2[0])는 동일한 기호(D2[0])를 사용한다. 예컨대, 인코드된 ECC 섹터(D2[0])는 데이터와 ECC 패리티를 포함할 수 있으나 디코드된 ECC 섹터(D2[0])는 데이터만을 포함할 수 있다.
ECC 인코더/디코더(355)는 디코드된 ECC 섹터(P[0])에 정정 불가능한 에러가 포함되어 있는지를 판단할 수 있다(S116). 디코드된 ECC 섹터(P[0])에 정정 불가능한 에러가 포함되어 있지 않으므로, 디코드된 ECC 섹터(P[0])에 대한 리드 페일은 발생하지 않는다(S116의 NO).
컨트롤러(310)는 제1컬럼(COL1)에 논리적으로 배치된 제1데이터 스트라이프 (D0)에 배치된 ECC 섹터(D0[0])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S120). 즉, D0[0]가 D2[0]이 아니므로(S122의 NO), 컨트롤러(310)는 제1컬럼(COL1)에 배치되고 제1데이터 스트라이프(D0)에 포함된 ECC 섹터(D0[0])를 저장 매체(400)로부터 리드할 수 있다(S124). ECC 인코더/디코더(355)는 ECC 섹터(D0[0])를 디코드하고, 디코드된 ECC 섹터(D0[0])를 DMA 컨트롤러(345)에 저장할 수 있다. 실시 예들에 따라, 디코드된 ECC 섹터(D0[0])는 버퍼 컨트롤러(340)의 제어에 따라 DRAM 장치(360)에 저장될 수 있다.
실시 예들에 따라, DMA 컨트롤러(345)는 DMA 컨트롤러(345)에 저장된 디코드된 ECC 섹터(P[0])와 DMA 컨트롤러(345)에 저장된 디코드된 ECC 섹터(D0[0])를 비트-단위로 XOR 연산하고, XOR 연산 결과를 제1목적지(destination) 데이터로서 DMA 컨트롤러(345)에 저장할 수 있다. 이 경우, DMA 컨트롤러(345)는 디코드된 ECC 섹터(P[0]), 디코드된 ECC 섹터(D0[0]), 및 제1목적지 데이터를 저장할 수 있는 레지스터를 포함할 수 있다.
실시 예들에 따라, DMA 컨트롤러(345)는 DRAM 장치(360)에 저장된 디코드된 ECC 섹터(P[0])와 DRAM 장치(360)에 저장된 디코드된 ECC 섹터(D0[0])를 리드하고, 이들을 비트-단위로 XOR 연산하고, XOR 연산 결과를 제1목적지 데이터로서 DRAM 장치(360)에 저장할 수 있다.
ECC 섹터(D0[0])에 대한 리드 페일이 발생하지 않으므로(S126의 NO), 컨트롤러(310)는 제1컬럼(COL1)에 배치된 제2데이터 스트라이프(D1)에 배치된 ECC 섹터 (D1[0])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122).
즉, D1[0]가 D2[0]이 아니므로(S122의 NO), 컨트롤러(310)는 제1컬럼(COL1)에 배치되고 제2데이터 스트라이프(D1)에 포함된 ECC 섹터(D1[0])를 저장 매체(400)로부터 리드할 수 있다(S124). ECC 인코더/디코더(355)는 ECC 섹터(D1[0])를 디코드하고, 디코드된 ECC 섹터(D1[0])를 DMA 컨트롤러(345)에 저장할 수 있다. 실시 예들에 따라, 디코드된 ECC 섹터(D1[0])는 버퍼 컨트롤러(340)의 제어에 따라 DRAM 장치 (360)에 저장될 수 있다.
실시 예들에 따라, DMA 컨트롤러(345)는 DMA 컨트롤러(345)에 저장된 제1목적 데이터와 DMA 컨트롤러(345)에 저장된 디코드된 ECC 섹터(D1[0])를 비트-단위로 XOR 연산하고, XOR 연산 결과를 제2목적 데이터로서 DMA 컨트롤러(345)의 레지스터에 저장할 수 있다.
실시 예들에 따라, DMA 컨트롤러(345)는 DRAM 장치(360)에 저장된 제1목적 데이터와 DRAM 장치(360)에 저장된 디코드된 ECC 섹터(D1[0])를 리드하고, 이들을 비트-단위로 XOR 연산하고, XOR 연산 결과를 제2목적 데이터로서 DRAM 장치(360)에 저장할 수 있다.
ECC 섹터(D1[0])에 대한 리드 페일이 발생하지 않으므로(S126의 NO), 컨트롤러(310)는 제1컬럼(COL1)에 배치된 ECC 섹터(D2[0])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122). 즉, D2[0]가 D2[0]이므로(S122의 YES), 컨트롤러(310)는 D2[0]가 DN -1[0]인지를 판단할 수 있다(S122의 YES). 즉, 컨트롤러(310)는 현재 리드된 ECC 섹터(D2[0])가 데이터 스트라이프들(D0~DN-1) 중에서 마지막 데이터 스트라이프(DN - 1)의 첫 번째 ECC 섹터인지를 판단할 수 있다(S132).
컨트롤러(310)는 ECC 섹터(D3[0])부터 ECC 섹터(DN - 1[0])에 대해 단계들 (S122~S132)을 수행할 수 있다. 데이터 스트라이프들의 마지막 데이터 스트라이프 (DN-1)의 첫 번째 ECC 섹터(DN - 1[0])에 대해 단계(S126)가 수행된 후, 컨트롤러(310)는 현재 복구 모드가 제1복구 모드(MODE0)인지를 판단할 수 있다. 상기 현재 복구 모드가 제1복구 모드 (MODE0)이므로, 컨트롤러(310)는 RAID-6 제1복구 모드(MODE0)를 수행할 수 있다 (S142).
컨트롤러(310)는 수학식 3을 통해 ECC 섹터(D2[0])를 복구할 수 있다.
[수학식 3]
Figure pat00005
상술한 바와 같이, 제3데이터 스트라이프(D2)의 첫 번째 ECC 섹터(D2[0])에서 리드 페일이 발생하면, 컨트롤러(310)는 ECC 섹터(D2[0])를 복구하기 위해 스트라이프 세트 전체를 리드하지 않고 ECC 섹터(D2[0])를 포함하는 제1컬럼(COL1)에 포함된 ECC 섹터들(P[0], D0[0], D1[0], 및 D3[0]~DN -1[0]) 만을 리드하여 ECC 섹터 (D2[0])를 복구할 수 있다. 따라서, 스트라이프 세트 전체를 저장 매체로부터 종래의 컨트롤러로 전송하는 종해의 데이터 저장 장치와 비교할 때, 저장 매체(400)로부터 컨트롤러(310)로 전송되는 데이터의 양은 감소하는 효과가 있다.
도 4b는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 Q-패리티 스트라이프에 대한 리드 실패에 대한 제1복구 모드에 대한 개념도이다.
하나의 데이터 스트라이프(D2)에 대한 리드 실패와 Q-패리티 스트라이프 (DN+1)에 대한 리드 실패에 대한 제1복구 모드를 수행하는 컨트롤러(310)의 동작은 도 1, 도 2, 도 4b, 도 9, 및 도 10을 참조하여 상세히 설명된다.
제3데이터 스트라이프(D2)의 두 번째 ECC 섹터(D2[1])에서 리드 페일이 발생한다고 가정한다.
도 10의 단계(S134)에서 컨트롤러(310)는 현재 복구 모드가 제1복구 모드 (MODE0)인지를 판단하므로, 상기 현재 복구 모드가 제1복구 모드(MODE0)일 때(S134의 YES), 컨트롤러(310)는 Q-패리티 스트라이프(DN + 1)의 두 번째 ECC 섹터(Q[1])를 리드하지 않고 제2컬럼(COL2)에 포함된 ECC 섹터들(P[1], D0[1], D1[1], 및 D3[1]~DN -1[1])을 이용하여 ECC 섹터(D2[1])를 복구한다.
도 5는 본 발명의 실시 예에 따른 하나의 데이터 스트라이프에 대한 리드 실패와 P-패리티 스트라이프에 대한 리드 실패에 대한 제2복구 모드에 대한 개념도이다.
하나의 데이터 스트라이프에 대한 리드 실패와 P-패리티 스트라이프에 대한 리드 실패에 대한 제2복구 모드(MODE1)를 수행하는 컨트롤러(310)의 동작은 도 1, 도 2, 도 5, 도 9, 및 도 10을 참조하여 상세히 설명된다.
제2데이터 스트라이프(D1)의 제3컬럼(COL3)에 포함된 ECC 섹터 (Di[j]=D1[2]=Dk[j])와 P-패리티 스트라이프(DN)의 제3컬럼(COL3)에 포함된 ECC 섹터 (P[2])에서 리드 페일이 발생한다고 가정한다. 이때, i는 1이고, k는 1이고, j는 2이라고 가정한다. 컨트롤러(310)는 제2복구 모드(MODE1)를 수행할 수 있다.
ECC 섹터(D1[2])에 대해 리드 페일이 발생하면(S110), 컨트롤러(310)는 제1복구 모드(MODE0)의 수행을 잠정적으로 결정할 수 있다(S112). 여기서, c=0은 제1복구 모드(MODE0)를 의미한다.
컨트롤러(310)는 P-패리티 스트라이프(DN)에 포함되고 제3컬럼(COL3)에 배치된 ECC 섹터(P[j]=P[2])를 저장 매체(400)로부터 리드할 수 있다(S114). ECC 인코더/디코더(355)는 ECC 섹터(P[2])를 디코드하고, 디코드된 ECC 섹터(P[2])를 DMA 컨트롤러(345)에 저장할 수 있다. 실시 예들에 따라, 디코드된 ECC 섹터(P[2])는 버퍼 컨트롤러(340)의 제어에 따라 DRAM 장치(360)에 저장될 수 있다.
ECC 인코더/디코더(355)는 디코드된 ECC 섹터(P[2])에 정정 불가능한 에러가 포함되어 있는지를 판단할 수 있다(S116). 디코드된 ECC 섹터(P[2])에 정정 불가능한 에러가 포함되어 있으므로, 디코드된 ECC 섹터(P[2])에 대한 리드 페일이 발생한다(S116의 YES). 컨트롤러(310)는 제2복구 모드(MODE1)의 실행됨을 결정한다 (S118). 따라서, c는 1로 변경된다(S118).
컨트롤러(310)는 제3컬럼(COL3)의 첫 번째 로우에 배치된 ECC 섹터 (D0[2])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S120). 즉, D0[2]가 D1[2]이 아니므로(S122의 NO), 컨트롤러(310)는 ECC 섹터(D0[2])를 저장 매체(400)로부터 리드할 수 있다(S124). ECC 인코더/디코더(355)는 ECC 섹터(D0[2])를 디코드하고, 디코드된 ECC 섹터(D0[2])는 DMA 컨트롤러(345) 또는 DRAM 장치(360)에 저장될 수 있다.
ECC 섹터(D0[2])에 대한 리드 페일이 발생하지 않으므로(S126의 NO), 컨트롤러(310)는 제3컬럼(COL3)에 배치된 ECC 섹터(D1[2])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122). D1[2]가 D1[2]이 이므로(S122의 YES), 컨트롤러(310)는 단계(S132)를 수행한다.
D1[2]가 DN -1[2]가 아니므로, 컨트롤러(310)는 ECC 섹터(D2[2])를 저장 매체 (400)로부터 리드할 수 있다(S124). ECC 인코더/디코더(355)는 ECC 섹터(D2[2])를 디코드하고, 디코드된 ECC 섹터(D2[2])는 DMA 컨트롤러(345) 또는 DRAM 장치(360)에 저장될 수 있다.
ECC 섹터(D2[2])에 대한 리드 페일이 발생하지 않으므로(S126의 NO), 컨트롤러(310)는 ECC 섹터(D3[2])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122).
컨트롤러(310)는 ECC 섹터(D3[2])부터 ECC 섹터(DN -1[2]) 각각에 대해 단계들 (S122~S132)을 수행할 수 있다. 데이터 스트라이프들의 마지막 데이터 스트라이프(DN - 1)의 세 번째 ECC 섹터(DN - 1[2])에 대해 단계(S126)가 수행된 후, 컨트롤러(310)는 현재 복구 모드가 제1복구 모드(MODE0)인지를 판단할 수 있다(S134). 상기 현재 복구 모드가 제2복구 모드(MODE1)이므로(S134의 NO), 컨트롤러(310)는 Q-패리티 스트라이프 (DN+1)의 세 번째 ECC 섹터(Q[2])를 저장 매체(400)로부터 읽어 온다(S136).
컨트롤러(310)는 세 번째 ECC 섹터(Q[2])에 대해 리드 페일이 발생하는지를 판단한다(S140). 세 번째 ECC 섹터(Q[2])에 대해 리드 페일이 발생하지 않으므로 (S140의 NO), 컨트롤러(310)는 현재 복구 모드가 제2복구 모드(MODE1)인지를 판단한다(S144). 단계(S118)에서 c=1이므로, 상기 현재 복구 모드는 제2복구 모드 (MODE1)이다(S144의 YES). 따라서, 컨트롤러(310)는 제2복구 모드(MODE1)를 수행할 수 있다(S146).
컨트롤러(310)는 수학식 4를 통해 ECC 섹터(D1[2])를 복구할 수 있다. 제2복구 모드(MODE1)에서 Q-패리티 스트라이프(DN+1)의 세 번째 ECC 섹터(Q[2])는 정정 불가능한 에러를 포함하지 않으므로 컨트롤러(310)는 수학식 4를 통해 ECC 섹터(D1[2])를 복구할 수 있다.
[수학식 4]
Figure pat00006
상술한 바와 같이, 제2데이터 스트라이프(D2)의 세 번째 ECC 섹터(D1[2])와 P-패리트 스트라이프(DN)의 세 번째 ECC 섹터(P[2]) 각각에서 리드 페일이 발생하면, 컨트롤러(310)는 ECC 섹터(D1[2])를 복구하기 위해 수학식 4를 이용하여 ECC 섹터 (Q'[2])를 계산하고, 계산된 ECC 섹터(Q'[2])와 디코드된 ECC 섹터(Q[2])를 이용하여 ECC 섹터(D1[2])를 복구할 수 있다. 컨트롤러(310)는 복구된 ECC 섹터(D1[2])를 DRAM 장치(360)에 저장하고 복구된 ECC 섹터(D1[2])를 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다.
실시 예들에 따라 컨트롤러(310)는 복구된 ECC 섹터(D1[2])를 이용하여 ECC 섹터들(P[2]와 Q[2]) 각각을 수학식 1에 따라 생성하고, 복구된 ECC 섹터(D1[2])와 ECC 섹터들(P[2]와 Q[2])을 저장 매체(400)에 라이트할 수 있다.
ECC 섹터(D1[2])와 ECC 섹터(P[2]) 각각에서 리드 페일이 발생하더라도, 컨트롤러(310)는 스트라이프 세트 전체를 리드하지 않고 ECC 섹터(D1[2])를 포함하는 제3컬럼(COL2)에 포함된 ECC 섹터들(P[2], D2[2]~DN -1[0], 및 Q[2]) 만을 리드하여 ECC 섹터(D1[2])를 복구할 수 있다. 따라서, 스트라이프 세트 전체를 저장 매체로부터 종래의 컨트롤러로 전송하는 종해의 데이터 저장 장치와 비교할 때, 저장 매체(400)로부터 컨트롤러(310)로 전송되는 데이터의 양은 감소하는 효과가 있다.
도 6은 본 발명의 실시 예에 따른 두 개의 데이터 스트라이프들 각각에 대한 리드 실패에 대한 제3복구 모드에 대한 개념도이다.
두 개의 데이터 스트라이프들 각각에 대한 리드 실패에 대한 제3복구 모드 (MODE2)를 수행하는 컨트롤러(310)의 동작은 도 1, 도 2, 도 6, 도 9, 및 도 10을 참조하여 상세히 설명된다.
제2데이터 스트라이프(D1)의 제4컬럼(COL4)에 포함된 ECC 섹터 (Di[j]=D1[3]=Dk[j])와 제3데이터 스트라이프(D2)의 제4컬럼(COL4)에 포함된 ECC 섹터(Di[j]=D2[3]=Dm[j]) 각각에서 리드 페일이 발생한다고 가정한다. 이때, i는 1이고, k는 1이고, j는 3라고 가정한다. 컨트롤러(310)는 제3복구 모드(MODE2)를 수행할 수 있다.
ECC 섹터(D1[3])에 대해 리드 페일이 발생하면(S110), 컨트롤러(310)는 제1복구 모드(MODE0)의 수행을 잠정적으로 결정할 수 있다(S112). 여기서, c=0은 제1복구 모드(MODE0)를 의미한다.
컨트롤러(310)는 P-패리티 스트라이프(DN)에 포함되고 제4컬럼(COL4)에 배치된 ECC 섹터(P[j]=P[3])를 저장 매체(400)로부터 리드할 수 있다(S114). ECC 인코더/디코더(355)는 ECC 섹터(P[3])를 디코드하고, 디코드된 ECC 섹터(P[3])는 DMA 컨트롤러(345) 또는 DRAM 장치(360)에 저장될 수 있다.
ECC 인코더/디코더(355)는 디코드된 ECC 섹터(P[3])에 정정 불가능한 에러가 포함되어 있는지를 판단할 수 있다(S116). 디코드된 ECC 섹터(P[3])에 정정 불가능한 에러가 포함되어 있지 않으므로, 디코드된 ECC 섹터(P[3])에 대한 리드 페일은 발생하지 않는다(S116의 NO).
컨트롤러(310)는 제4컬럼(COL4)에 포함된 첫 번째 로우에 배치된 ECC 섹터 (D0[3])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S120). 즉, D0[3]가 D1[3]이 아니므로(S122의 NO), 컨트롤러(310)는 ECC 섹터(D0[3])를 저장 매체(400)로부터 리드할 수 있다(S124). ECC 인코더/디코더(355)는 ECC 섹터(D0[3])를 디코드하고, 디코드된 ECC 섹터(D0[3])는 DMA 컨트롤러(345) 또는 DRAM 장치(360)에 저장될 수 있다.
ECC 섹터(D0[3])에 대한 리드 페일이 발생하지 않으므로(S126의 NO), 컨트롤러(310)는 제4컬럼(COL4)에 포함된 두 번째 로우에 배치된 ECC 섹터(D1[3])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122). D1[3]가 D1[3]이 이므로(S122의 YES), 컨트롤러(310)는 단계(S132)를 수행한다.
컨트롤러(310)는 제4컬럼(COL4)에 포함된 세 번째 로우에 배치된 ECC 섹터 (D2[3])를 저장 매체(400)로부터 리드하기 위한 동작을 수행할 수 있다(S122). D2[3]가 D1[3]이 아니므로(S122의 YES), 컨트롤러(310)는 단계(S124)를 수행한다.
컨트롤러(310)는 저장 매체(400)로부터 ECC 섹터(D2[3])를 읽어온다(S124). 그러나, ECC 섹터(D2[3])가 정정 불가능한 에러를 포함하고 있으므로, ECC 섹터 (D2[3])에 대한 리드 페일이 발생한다(S126의 YES). 컨트롤러(310)는 단계(S128)를 수행한다. 단계(S128)의 수행 결과, c는 2이므로, c는 2보다 크지 않다(S130의 N0). 따라서, 컨트롤러(310)는 ECC 섹터(D2[3])가 데이터 스트라이프들 중에서 마지막 스트라이프(DN-1)에 포함된 ECC 섹터(DN-1[3])인지를 판단한다(S132).
ECC 섹터(D2[3])가 ECC 섹터(DN - 1[3])가 아니므로(S132의 N0), 컨트롤러(310)는 ECC 섹터(D2[4])를 저장 매체(400)로부터 리드할 수 있다(S122와 S124). ECC 인코더/디코더(355)는 ECC 섹터(D2[4])를 디코드하고, 디코드된 ECC 섹터(D2[4])는 DMA 컨트롤러(345) 또는 DRAM 장치(360)에 저장될 수 있다.
컨트롤러(310)는 ECC 섹터(D2[3])부터 ECC 섹터(DN -1[3]) 각각에 대해 단계들 (S122~S132)을 수행할 수 있다. 데이터 스트라이프들의 마지막 데이터 스트라이프 (DN-1)의 네 번째 ECC 섹터(DN - 1[3])에 대해 단계(S126)가 수행된 후, 컨트롤러(310)는 현재 복구 모드가 제1복구 모드(MODE0)인지를 판단할 수 있다(S134). 상기 현재 복구 모드가 제3복구 모드(MODE2)이므로(S134의 NO), 컨트롤러(310)는 Q-패리티 스트라이프(DN+1)의 네 번째 ECC 섹터(Q[3])를 저장 매체(400)로부터 읽어 온다 (S136).
컨트롤러(310)는 네 번째 ECC 섹터(Q[3])에 대해 리드 페일이 발생하는지를 판단한다(S140). 네 번째 ECC 섹터(Q[3])에 대해 리드 페일이 발생하지 않으므로 (S140의 NO), 컨트롤러(310)는 현재 복구 모드가 제2복구 모드(MODE1)인지를 판단한다(S144). 단계(S128)에서 c는 2로 설정되었으므로, 상기 현재 복구 모드는 제3복구 모드(MODE2)이다(S144의 NO). 따라서, 컨트롤러(310)는 제3복구 모드(MODE2)를 수행할 수 있다(S148).
컨트롤러(310)는 수학식 5를 통해 ECC 섹터들(D1[3]과 D2[3]) 각각을 복구할 수 있다. 제3복구 모드(MODE2)에서 P-패리티 스트라이프(DN)의 네 번째 ECC 섹터 (P[3])와 Q-패리티 스트라이프(DN+1)의 네 번째 ECC 섹터(Q[3]) 모두는 리드 페일되지 않았으므로 컨트롤러(310)는 수학식 5를 통해 ECC 섹터들(D1[3]과 D2[3]) 각각을 복구할 수 있다.
[수학식 5]
Figure pat00007
상술한 바와 같이, 제2데이터 스트라이프(D2)의 세 번째 ECC 섹터(D1[2])와 P-패리트 스트라이프(DN)의 세 번째 ECC 섹터(P[2]) 각각에서 리드 페일이 발생하면, 컨트롤러(310)는 ECC 섹터(D1[2])를 복구하기 위해 수학식 4를 이용하여 ECC 섹터(Q'[2])를 계산하고, 계산된 ECC 섹터(Q'[2])와 디코드된 ECC 섹터(Q[2])를 이용하여 ECC 섹터(D1[2])를 복구할 수 있다. 컨트롤러(310)는 복구된 ECC 섹터 (D1[2])를 DRAM 장치(360)에 저장하고 복구된 ECC 섹터(D1[2])를 인터페이스(110)를 통해 호스트(200)로 전송할 수 있다.
실시 예들에 따라 컨트롤러(310)는 복구된 ECC 섹터(D1[2])를 이용하여 ECC 섹터들(P[2]와 Q[2]) 각각을 수학식 1에 따라 생성하고, 복구된 ECC 섹터(D1[2])와 ECC 섹터들(P[2]와 Q[2])을 저장 매체(400)에 라이트할 수 있다.
ECC 섹터(D1[2])와 ECC 섹터(P[2]) 각각에서 리드 페일이 발생하더라도, 컨트롤러(310)는 스트라이프 세트 전체를 리드하지 않고 ECC 섹터(D1[2])를 포함하는 제3컬럼(COL3)에 포함된 ECC 섹터들(P[2], D2[2]~DN -1[0], 및 Q[2]) 만을 리드하여 ECC 섹터(D1[2])를 복구할 수 있다. 따라서, 스트라이프 세트 전체를 저장 매체로부터 종래의 컨트롤러로 전송하는 종해의 데이터 저장 장치와 비교할 때, 저장 매체(400)로부터 컨트롤러(310)로 전송되는 데이터의 양은 감소하는 효과가 있다.
도 11은 도 1에 도시된 데이터 저장 장치의 동작을 설명하는 플로우 차트이다. 도 1부터 도 11을 참조하면, 컨트롤러(310)는 데이터 스트라이프들 중에서 하나 또는 2개의 데이터 스트라이프들에 포함된 하나 또는 두 개의 ECC 섹터들을 복구할 수 있다(S210).
도 1부터 도 10을 참조하여 설명된 각 복구 모드 (MODE0~MODE2)는 하나 또는 2개의 ECC 섹터들을 복구하는 것을 가정한 것이다. 따라서, P-패리티 스트라이프 및/또는 Q-패리티 스트라이프에 포함된 ECC 섹터(들)에 대한 복구는 데이터 스트라이프들 모두가 복구된 후, 수학식 1을 이용하여 복구할 수 있다(S220).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 데이터 처리 시스템
200: 호스트
300: 데이터 저장 장치
310: 컨트롤러
320: CPU
325: SRAM
330: ROM
335:호스트 인터페이스
340: 버퍼 매니저
345: DMA 컨트롤러
350: 저장 매체 컨트롤러 또는 플래시 메모리 컨트롤러
360: DRAM 장치
400: 저장 매체
NAND: 불휘발성 메모리 장치

Claims (20)

  1. 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체; 및
    상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 중에서 상기 제1컬럼에 논리적으로 배열된 제1그룹 데이터 블록들 각각을 리드하는 컨트롤러를 포함하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 데이터 블록들을 포함하는 상기 스트라이프 세트는 RAID-6에 적합하게 상기 저장 매체에 저장되는 데이터 저장 장치.
  3. 제2항에 있어서,
    상기 저장 매체는 복수의 불휘발성 메모리 장치들을 포함하고,
    상기 스트라이프 세트는 데이터 스트라이프들, P-패리티 스트라이프, 및 Q-패리티 스트라이프를 포함하고,
    상기 데이터 스트라이프들 각각, 상기 P-패리티 스트라이프, 및 상기 Q-패리티 스트라이프 각각은 상기 복수의 불휘발성 메모리 장치들 각각에 저장되는 데이터 저장 장치.
  4. 제3항에 있어서,
    상기 복수의 불휘발성 메모리 장치들 각각은 서로 다른 웨이(way)에 포함되는 데이터 저장 장치.
  5. 제3항에 있어서,
    상기 복수의 불휘발성 메모리 장치들 각각은 플래시 메모리 장치이고,
    상기 플래시 메모리 장치는 3차원 메모리 셀 어레이를 포함하고, 상기 3차원메모리 셀 어레이는 복수의 메모리 셀들을 포함하고, 상기 복수의 메모리 셀들 각각은 전하 트랩 레이어를 포함하는 데이터 저장 장치.
  6. 제2항에 있어서, 상기 제1그룹 데이터 블록들은,
    상기 데이터 스트라이프들 중에서 상기 제1데이터 블록을 포함하는 제1데이터 스트라이프를 제외한 나머지 제2데이터 스트라이프들 각각에 포함된 제2데이터 블록;
    상기 P-패리트 스트라이프에 포함된 제1P-데이터 블록; 및
    상기 Q-패리티 스트라이프에 포함된 제1Q-데이터 블록을 포함하는 데이터 저장 장치.
  7. 제6항에 있어서,
    상기 컨트롤러는 상기 제1P-데이터 블록을 가장 먼저 리드하여 디코드하는 데이터 저장 장치.
  8. 제7항에 있어서,
    상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록을 리드하여 디코드하고,
    상기 제1P-데이터 블록에서 리드 실패가 발생하지 않을 때, 상기 컨트롤러는 디코드된 제1P-데이터 블록과 디코드된 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송하는 데이터 저장 장치.
  9. 제7항에 있어서,
    상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록과 상기 제1Q-데이터 블록을 리드하여 디코드하고,
    상기 제1P-데이터 블록에서 리드 실패가 발생할 때, 상기 컨트롤러는 디코드된 제2데이터 블록들과 상기 제2데이터 블록들에 해당하는 갈루아 필드의 심벌들을 이용하여 상기 제1Q-데이터 블록에 해당하는 제2Q-데이터 블록을 생성하고, 상기 제1데이터 블록에 해당하는 상기 갈루아 필드의 심벌, 상기 제1Q-데이터 블록, 및 상기 제2Q-데이터 블록을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송하는 데이터 저장 장치.
  10. 제7항에 있어서,
    상기 컨트롤러는 상기 제2데이터 스트라이프들 각각에 포함된 상기 제2데이터 블록과 상기 제1Q-데이터 블록을 리드하여 디코드하고,
    상기 제1P-데이터 블록과 상기 제1Q-데이터 블록 모두에서 리드 실패가 발생하지 않고 제2데이터 블록들 중에서 제3데이터 블록에서 리드 실패가 발생할 때,
    상기 컨트롤러는,
    디코드된 제2데이터 블록들 중에서 디코드된 제3데이터 블록을 포함하지 않는 디코드된 제4데이터 블록들을 이용하여 상기 제1P-데이터 블록에 해당하는 제2P-데이터 블록을 생성하고,
    디코드된 제4데이터 블록들과 상기 제4데이터 블록들에 해당하는 갈루아 필드의 심벌들을 이용하여 상기 제1Q-데이터 블록에 해당하는 제2Q-데이터 블록을 생성하고,
    상기 제1데이터 블록에 해당하는 상기 갈루아 필드의 제1심벌, 상기 제3데이터 블록에 해당하는 상기 갈루아 필드의 제2심벌, 상기 제1P-데이터 블록, 상기 제2P-데이터 블록, 상기 제1Q-데이터 블록, 및 상기 제2Q-데이터 블록을 이용하여 상기 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 호스트로 전송하고,
    상기 복구된 제1데이터 블록, 상기 제1P-데이터 블록, 및 상기 제2P-데이터 블록을 이용하여 상기 제3데이터 블록을 복구하고, 복구된 제3데이터 블록을 호스트로 전송하는 데이터 저장 장치.
  11. RAID-6을 정의하는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체; 및
    상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하는 컨트롤러를 포함하는 데이터 저장 장치.
  12. 제11항에 있어서,
    상기 컨트롤러는 상기 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고 복구된 제1데이터 블록을 호스트로 전송하는 데이터 저장 장치.
  13. 제11항에 있어서,
    상기 컨트롤러는 상기 제2데이터 블록들을 이용하여 상기 제1데이터 블록을 복구하고 복구된 제1데이터 블록을 상기 저장 매체에 저장하는 데이터 저장 장치.
  14. 제11항에 있어서,
    상기 저장 매체는 복수의 불휘발성 메모리 장치들을 포함하고,
    상기 스트라이프 세트는 데이터 스트라이프들, P-패리티 스트라이프, 및 Q-패리티 스트라이프를 포함하고,
    상기 데이터 스트라이프들 각각, 상기 P-패리티 스트라이프, 및 상기 Q-패리티 스트라이프 각각은 상기 복수의 불휘발성 메모리 장치들 각각에 저장되는 데이터 저장 장치.
  15. 제14항에 있어서,
    상기 제2데이터 블록들은 상기 P-패리트 스트라이프에 포함된 P-데이터 블록과 상기 Q-패리티 스트라이프에 포함된 Q-데이터 블록을 포함하고,
    상기 컨트롤러는 상기 P-데이터 블록을 가장 먼저 리드하는 데이터 저장 장치.
  16. 제15항에 있어서,
    상기 컨트롤러는 상기 P-데이터 블록을 디코드하고, 디코드 결과에 따라 Q-데이터 블록의 리드 여부를 결정하는 데이터 저장 장치.
  17. 데이터 저장 장치; 및
    상기 데이터 저장 장치에 연결된 호스트를 포함하고,
    상기 데이터 저장 장치는,
    RAID-6을 정의하는 스트라이프 세트에 포함된 데이터 블록들을 저장하는 저장 매체; 및
    상기 저장 매체에 연결되고, 리드 동작 동안 상기 데이터 블록들 중에서 제1컬럼에 논리적으로 배열된 제1데이터 블록을 디코드하고, 상기 제1데이터 블록에서 리드 실패가 발생할 때 상기 데이터 블록들 모두를 리드하지 않고 상기 데이터 블록들 중에서 상기 제1데이터 블록을 제외한 상기 제1컬럼에 논리적으로 배열된 제2데이터 블록들을 리드하고, 상기 제2데이터 블록들을 이용하여 제1데이터 블록을 복구하고, 복구된 제1데이터 블록을 상기 호스트로 전송하는 컨트롤러를 포함하는 데이터 처리 시스템.
  18. 제17항에 있어서,
    상기 저장 매체는 복수의 불휘발성 메모리 장치들을 포함하고,
    상기 스트라이프 세트는 데이터 스트라이프들, P-패리티 스트라이프, 및 Q-패리티 스트라이프를 포함하고,
    상기 데이터 스트라이프들 각각, 상기 P-패리티 스트라이프, 및 상기 Q-패리티 스트라이프 각각은 상기 복수의 불휘발성 메모리 장치들 각각에 저장되는 데이터 처리 시스템.
  19. 제18항에 있어서,
    상기 제2데이터 블록들은 상기 P-패리트 스트라이프에 포함된 P-데이터 블록과 상기 Q-패리티 스트라이프에 포함된 Q-데이터 블록을 포함하고,
    상기 컨트롤러는 상기 P-데이터 블록을 가장 먼저 리드하는 데이터 처리 시스템.
  20. 제19항에 있어서,
    상기 컨트롤러는 상기 P-데이터 블록을 디코드하고, 디코드 결과에 따라 Q-데이터 블록의 리드 여부를 결정하는 데이터 처리 시스템.
KR1020160013549A 2016-02-03 2016-02-03 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템 KR102572357B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020160013549A KR102572357B1 (ko) 2016-02-03 2016-02-03 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US15/379,868 US10275311B2 (en) 2016-02-03 2016-12-15 Raid-6 data storage device and data processing system including the same
CN201611195390.8A CN107037982B (zh) 2016-02-03 2016-12-22 Raid-6数据存储装置以及包括其的数据处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160013549A KR102572357B1 (ko) 2016-02-03 2016-02-03 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템

Publications (2)

Publication Number Publication Date
KR20170092333A true KR20170092333A (ko) 2017-08-11
KR102572357B1 KR102572357B1 (ko) 2023-08-29

Family

ID=59386765

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160013549A KR102572357B1 (ko) 2016-02-03 2016-02-03 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템

Country Status (3)

Country Link
US (1) US10275311B2 (ko)
KR (1) KR102572357B1 (ko)
CN (1) CN107037982B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509700B2 (en) * 2015-11-10 2019-12-17 Hitachi, Ltd. Storage system and storage management method
KR102549605B1 (ko) * 2016-03-04 2023-06-30 삼성전자주식회사 Raid 스토리지 장치의 리커버리 방법
KR20200015999A (ko) * 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 예측 오류 정정 장치, 이의 동작 방법 및 이를 이용하는 메모리 시스템
US11656775B2 (en) 2018-08-07 2023-05-23 Marvell Asia Pte, Ltd. Virtualizing isolation areas of solid-state storage media
US11074013B2 (en) * 2018-08-07 2021-07-27 Marvell Asia Pte, Ltd. Apparatus and methods for providing quality of service over a virtual interface for solid-state storage
US11010314B2 (en) 2018-10-30 2021-05-18 Marvell Asia Pte. Ltd. Artificial intelligence-enabled management of storage media access
US11481118B2 (en) 2019-01-11 2022-10-25 Marvell Asia Pte, Ltd. Storage media programming with adaptive write buffer release
US11442809B1 (en) * 2019-07-17 2022-09-13 Marvell Asia Pte, Ltd. Double-parity raid enabling recovery of two failed data units
KR20220120967A (ko) * 2021-02-24 2022-08-31 삼성전자주식회사 스토리지 컨트롤러, 그 동작방법
US20220291861A1 (en) * 2021-03-12 2022-09-15 Kioxia Corporation Data exchange between host and storage device using compute functions
CN113296999B (zh) * 2021-05-20 2022-11-11 山东云海国创云计算装备产业创新中心有限公司 一种raid6编码方法及编码电路

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005293119A (ja) * 2004-03-31 2005-10-20 Toshiba Solutions Corp ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム
KR20120074612A (ko) * 2010-12-28 2012-07-06 한양대학교 산학협력단 소모 전력에 기반한 데이터 기록 방법 및 장치
KR20150044738A (ko) * 2013-10-17 2015-04-27 삼성전자주식회사 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
KR20150134934A (ko) * 2014-05-23 2015-12-02 에스케이하이닉스 주식회사 3차원 불휘발성 메모리 장치와, 이를 포함하는 반도체 시스템과, 그 제조방법
JP2015535120A (ja) * 2012-11-15 2015-12-07 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. 多次元raid再構築および障害回避のための方法およびシステム

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240453A (ja) 1997-02-28 1998-09-11 Nec Corp ディスクアレイ装置
US6891690B2 (en) 2002-11-20 2005-05-10 International Business Machines Corporation On-drive integrated sector format raid error correction code system and method
US7698625B2 (en) 2003-08-26 2010-04-13 Adaptec, Inc. System for improving parity generation and rebuild performance
US7406621B2 (en) 2004-04-02 2008-07-29 Seagate Technology Llc Dual redundant data storage format and method
JP4935367B2 (ja) 2007-01-19 2012-05-23 富士通株式会社 Raid装置及びガロア体の積演算処理方法
WO2011040928A1 (en) * 2009-10-02 2011-04-07 Intel Corporation Method and appratus for managing a random array of independent disks (raid)
US8365041B2 (en) 2010-03-17 2013-01-29 Sandisk Enterprise Ip Llc MLC self-raid flash data protection scheme
WO2012012369A2 (en) * 2010-07-19 2012-01-26 Arizona Board Of Regents For And On Behalf Of Arizona State University Fast parallel test of sram arrays
KR101201582B1 (ko) * 2010-09-06 2012-11-14 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 동작 방법
CN102033716B (zh) * 2010-12-01 2012-08-22 北京同有飞骥科技股份有限公司 一种双磁盘容错的节能型磁盘阵列的构建方法
CN102023820B (zh) * 2010-12-01 2012-08-22 北京同有飞骥科技股份有限公司 一种双磁盘容错垂直型分组并行访问磁盘阵列的构建方法
CN102023819B (zh) * 2010-12-01 2012-08-22 北京同有飞骥科技股份有限公司 一种双磁盘容错水平型分组并行访问磁盘阵列的构建方法
KR101801147B1 (ko) 2011-08-30 2017-11-27 삼성전자주식회사 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US9026729B1 (en) * 2011-11-15 2015-05-05 Emc Corporation Data recovery after triple disk failure
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
KR101445025B1 (ko) 2012-02-09 2014-09-26 서울시립대학교 산학협력단 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US8327185B1 (en) 2012-03-23 2012-12-04 DSSD, Inc. Method and system for multi-dimensional raid
US9047187B2 (en) * 2012-06-28 2015-06-02 Intel Corporation Defect management in memory systems
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US9218890B2 (en) * 2013-06-03 2015-12-22 Sandisk Technologies Inc. Adaptive operation of three dimensional memory
CN105302677A (zh) * 2014-07-29 2016-02-03 株式会社东芝 信息处理装置和信息处理方法
KR20160035836A (ko) * 2014-09-24 2016-04-01 에스케이하이닉스 주식회사 전자 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005293119A (ja) * 2004-03-31 2005-10-20 Toshiba Solutions Corp ディスクアレイ制御装置、同装置に適用されるデータ欠損検出時の処理方法及びプログラム
KR20120074612A (ko) * 2010-12-28 2012-07-06 한양대학교 산학협력단 소모 전력에 기반한 데이터 기록 방법 및 장치
JP2015535120A (ja) * 2012-11-15 2015-12-07 ディ・エス・エス・ディ・インコーポレイテッドDssd, Inc. 多次元raid再構築および障害回避のための方法およびシステム
KR20150044738A (ko) * 2013-10-17 2015-04-27 삼성전자주식회사 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
KR20150134934A (ko) * 2014-05-23 2015-12-02 에스케이하이닉스 주식회사 3차원 불휘발성 메모리 장치와, 이를 포함하는 반도체 시스템과, 그 제조방법

Also Published As

Publication number Publication date
US10275311B2 (en) 2019-04-30
CN107037982B (zh) 2021-06-08
CN107037982A (zh) 2017-08-11
KR102572357B1 (ko) 2023-08-29
US20170220410A1 (en) 2017-08-03

Similar Documents

Publication Publication Date Title
KR102572357B1 (ko) Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US11182078B2 (en) Method of accessing a data storage device using a multi-access command
US10019174B2 (en) Read operation delay
US9984771B2 (en) Multi-level raid-type encoding with random correction capability
US9798620B2 (en) Systems and methods for non-blocking solid-state memory
US7984325B2 (en) Storage control device, data recovery device, and storage system
US9292382B2 (en) Codewords that span pages of memory
US8397023B2 (en) System and method for handling IO to drives in a memory constrained environment
US8694865B2 (en) Data storage device configured to reduce buffer traffic and related method of operation
US8250403B2 (en) Solid state disk device and related data storing and reading methods
US20170242752A1 (en) Data storage device for increasing lifetime and raid system including the same
US20150143027A1 (en) Solid state drive with raid functions
US20090113235A1 (en) Raid with redundant parity
US11340986B1 (en) Host-assisted storage device error correction
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
JP6491482B2 (ja) 複数のフラッシュ面にわたってコード語をインターリーブするための方法および/または装置
US20170345456A1 (en) Programmable error-correcting code for a host device
KR102347291B1 (ko) Ssd에서의 결함 보호를 위한 메모리 다이 레이아웃
US20150143024A1 (en) Redundant array of independent modules
US8392654B2 (en) Raid level migration for spanned arrays
JP5908106B2 (ja) 妥当性マスクを記憶する装置および方法ならびに操作装置
US11972155B2 (en) System and apparatus for redundant array of independent disks striping against programming failures
US11138065B1 (en) Storage system and method for fast low-density parity check (LDPC) encoding
US20240232009A1 (en) Systems and methods of distributed parity calculation offloading
US20240004762A1 (en) Method of recovering data in storage device using network and storage device performing the same

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant