KR102385138B1 - 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 - Google Patents

정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 Download PDF

Info

Publication number
KR102385138B1
KR102385138B1 KR1020150141760A KR20150141760A KR102385138B1 KR 102385138 B1 KR102385138 B1 KR 102385138B1 KR 1020150141760 A KR1020150141760 A KR 1020150141760A KR 20150141760 A KR20150141760 A KR 20150141760A KR 102385138 B1 KR102385138 B1 KR 102385138B1
Authority
KR
South Korea
Prior art keywords
ecc
data
uncorrectable
unit data
error
Prior art date
Application number
KR1020150141760A
Other languages
English (en)
Other versions
KR20170042433A (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 KR1020150141760A priority Critical patent/KR102385138B1/ko
Priority to US15/288,227 priority patent/US10108494B2/en
Publication of KR20170042433A publication Critical patent/KR20170042433A/ko
Application granted granted Critical
Publication of KR102385138B1 publication Critical patent/KR102385138B1/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
    • 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/1092Rebuilding, e.g. when physically replacing a failing 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

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

Abstract

본 발명은 RAID 스토리지 시스템의 데이터 입출력을 관리하는 RAID 컨트롤러를 제공한다. RAID 컨트롤러 장치는 ECC 결과 관리기, 정정 불가 오류 카운터, 및 복구 연산기를 포함한다. 스토리지들에 분산하여 저장된 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크가 읽힌 경우, ECC 결과 관리기는 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 나타내는 ECC 결과 지시자들의 정보를 관리한다. 정정 불가 오류 카운터는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터에 대응하는 ECC 결과 지시자들 중에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출한다. 산출된 개수가 기준값을 초과하지 않는 경우, 복구 연산기는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구한다.

Description

정정 불가능한 ECC 오류를 갖는 데이터를 복구하도록 구성되는 RAID 컨트롤러 장치 및 스토리지 장치 {RAID CONTROLLER DEVICE AND STORAGE DEVICE CONFIGURED TO RECOVER DATA HAVING UNCORRECTABLE ECC ERROR}
본 발명은 데이터 관리에 관한 것으로, 좀 더 구체적으로는 오류를 갖는 데이터를 복구하기 위한 구성 및 방법에 관한 것이다.
근래 다양한 유형의 전자 장치들이 이용되고 있다. 스토리지 장치는 전자 장치들 중 하나이다. 스토리지 장치는 데이터를 저장하거나, 저장된 데이터를 사용자에게 제공한다.
몇몇 경우, 스토리지 장치에 저장된 데이터에 오류가 발생할 수 있다. 예로서, 데이터를 저장하기 위한 동작 동안 오류가 발생하거나 스토리지 장치의 특성이 열화되는 경우, 스토리지 장치의 읽기/쓰기 동작에서 오류가 발생할 수 있다. 오류를 갖는 데이터는 전자 장치의 오동작을 야기하거나, 사용자에게 잘못된 서비스를 제공한다. 따라서, 데이터의 오류를 방지하기 위한 여러 방안들이 제안되어 왔다.
많은 스토리지 장치는 데이터의 오류를 정정하기 위해 오류 정정 스킴(Scheme)을 채용한다. 예로서, 데이터가 저장될 때, 스토리지 장치는 ECC(Error Correction Code) 회로를 이용하여 오류 정정 코드를 생성한다. 데이터가 읽힐 때, 스토리지 장치는 오류 정정 코드를 참조하여 데이터의 오류를 정정한다.
그러나, ECC 회로의 정정 능력을 벗어나는 "정정 불가능한(Uncorrectable)" 오류가 발생할 수 있다. 정정 불가능한 오류가 발생하는 경우, 스토리지 장치는 읽기 실패 응답을 출력한다. 정정 불가능한 오류의 양이 증가하는 경우, 복수의 스토리지 장치를 포함하는 스토리지 시스템은 올바른 데이터를 보장하지 못할 수 있다.
몇몇 경우, 데이터의 신뢰성을 향상시키기 위해, 복수의 스토리지 장치를 포함하는 스토리지 시스템이 이용된다. 예로서, RAID(Redundant Array of Inexpensive Disks) 스토리지 시스템은 하나의 데이터를 분할하고, 분할된 "데이터 청크(Data Chunk)"들을 복수의 스토리지 장치에 분산하여 저장한다. 복수의 스토리지 장치가 동시에 문제를 야기하는 경우는 거의 발생하지 않기 때문에, 이러한 스토리지 시스템은 데이터의 높은 신뢰성을 보장할 수 있다.
본 발명은 RAID 구성을 채용한 스토리지 장치 또는 스토리지 시스템에서 정정 불가능한 오류를 포함하는 데이터 청크를 복구하기 위한 구성 및 방법을 제공할 수 있다.
본 발명의 일 실시 예에 따른 RAID 컨트롤러 장치는 하나 이상의 스토리지 장치들을 포함하는 RAID 스토리지 시스템의 데이터 입출력을 관리할 수 있다. 본 발명의 일 실시 예에 따른 RAID 컨트롤러 장치는 ECC 결과 관리기, 정정 불가 오류 카운터, 및 복구 연산기를 포함할 수 있다. ECC 결과 관리기는, 스토리지 장치들에 분산하여 저장되고 각각이 복수의 ECC 단위 데이터를 포함하는 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 데이터 청크가 읽힌 경우, 복수의 데이터 청크에 포함되는 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 각각 나타내는 ECC 결과 지시자들의 정보를 관리할 수 있다. 정정 불가 오류 카운터는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터에 대응하는 ECC 결과 지시자들 중에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 복구 연산기는, 위 산출된 개수가 기준값을 초과하지 않는 경우, 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 일 실시 예에서, 복수의 데이터 청크 중에서 하나의 데이터 청크가 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 경우, 복구 연산기가 위 하나의 데이터 청크에 포함되고 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 복구할 수 있다. 복수의 데이터 청크 중에서 둘 이상의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, 읽기 실패 응답이 출력될 수 있다.
본 발명의 일 실시 예에서, 위 산출된 개수가 기준값을 초과하지 않는 경우, 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 데이터 청크들의 개수와 무관하게, 복구 연산기는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 일 실시 예에서, 위 산출된 개수가 기준값을 초과하는 경우, 읽기 실패 응답이 출력될 수 있다.
본 발명의 일 실시 예에서, 위 산출된 개수가 기준값을 초과하는 경우, 복구 연산기는 신뢰성 정보, 읽기에 성공한 ECC 단위 데이터, 및 대응하는 순번을 갖는 패리티에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다. 신뢰성 정보는 복수의 데이터 청크의 데이터 값들의 일부 또는 전부를 스토리지 장치들로부터 다시 읽음으로써 획득될 수 있다.
본 발명의 일 실시 예에서, 신뢰성 정보는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터만을 스토리지 장치들로부터 다시 읽음으로써 획득될 수 있다.
본 발명의 일 실시 예에서, 복수의 데이터 청크의 데이터 값들의 일부 또는 전부는 신뢰성 정보가 획득되도록 변경된 읽기 전압을 이용하여 다시 읽힐 수 있다.
본 발명의 일 실시 예에서, 위 산출된 개수가 기준값을 초과하는 경우, 신뢰성 정보에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터 중에서 낮은 신뢰성을 갖는 ECC 단위 데이터의 값이 다시 읽힌 값들로 설정될 수 있다. 복구 연산기는 읽기에 성공한 ECC 단위 데이터, 대응하는 순번을 갖는 패리티, 및 설정된 데이터 값들을 갖는 ECC 단위 데이터에 기초하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 일 실시 예에서, 복수의 데이터 청크 각각의 데이터 크기는 복수의 ECC 단위 데이터 각각의 데이터 크기보다 클 수 있다.
본 발명의 일 실시 예에서, 복수의 데이터 청크 각각의 데이터 크기는 스토리지 장치들에서 수행되는 읽기 동작의 읽기 단위의 데이터 크기에 대응할 수 있다.
본 발명의 다른 실시 예에 따른 스토리지 장치는 복수의 불휘발성 메모리 장치 및 장치 컨트롤러를 포함할 수 있다. 복수의 불휘발성 메모리 장치 각각은 복수의 ECC 단위 데이터를 포함하는 복수의 데이터 청크를, 분산하여 저장할 수 있다. 장치 컨트롤러는 복수의 불휘발성 메모리 장치의 데이터 입출력을 관리할 수 있고, ECC 회로 및 RAID 컨트롤러를 포함할 수 있다. ECC 회로는 복수의 불휘발성 메모리 장치로부터 읽힌 복수의 데이터 청크 각각에 대해 ECC 단위로 ECC 디코딩 연산을 수행하고, ECC 결과를 출력할 수 있다. RAID 컨트롤러는 ECC 결과에 기초하여 복수의 데이터 청크에 포함되는 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 각각 나타내는 ECC 결과 지시자들의 정보를 관리하고, ECC 결과 지시자들을 참조하여 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 다른 실시 예에서, 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크가 읽힌 경우, RAID 컨트롤러는 ECC 회로로부터 복수의 데이터 청크 전부의 ECC 결과들을 제공받을 수 있다.
본 발명의 다른 실시 예에서, 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크가 읽히고 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 개수가 기준값을 초과하지 않는 경우, RAID 컨트롤러는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 다른 실시 예에서, RAID 컨트롤러에 의해 수행되는 복구 동작은 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터와 동일한 순번을 갖는 ECC 단위 데이터, 및 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터와 동일한 순번을 갖는 패리티만 이용하여 수행될 수 있다.
본 발명의 다른 실시 예에서, 장치 컨트롤러는 복수의 데이터 청크 중 제 1 데이터 청크에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하기 위해 참조된 ECC 결과 지시자들을 저장하도록 구성되는 버퍼 메모리를 더 포함할 수 있다. RAID 컨트롤러는 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 제 2 데이터 청크가 복구되도록, 위 저장된 ECC 결과 지시자들을 참조할 수 있다.
본 발명의 실시 예에 따르면, 정정 불가능한 오류를 포함하는 데이터 청크가 복원될 수 있다. 따라서, RAID 스토리지 시스템 또는 스토리지 장치가 데이터의 높은 신뢰성을 보장할 수 있다. 나아가, 본 발명의 실시 예에 따른 RAID 스토리지 컨트롤러는 데이터 청크를 복원하기 위해 추가의 패리티(Parity)를 필요로 하지 않을 수 있다. 따라서, RAID 스토리지 시스템 또는 스토리지 장치의 오버헤드(Overhead)가 크게 증가하지 않을 수 있다.
도 1은 본 발명의 실시 예에 따른 RAID 스토리지 시스템을 포함하는 전자 시스템을 보여주는 블록도이다.
도 2는 도 1의 RAID 스토리지 시스템에서 데이터를 저장하는 방식을 설명하기 위한 개념도이다.
도 3은 도 1의 RAID 스토리지 시스템에서 데이터를 처리하는 방식을 설명하기 위한 개념도이다.
도 4는 도 1의 RAID 스토리지 시스템의 복구 능력과 오류들의 개수 사이의 관계를 설명하기 위한 개념도이다.
도 5는 도 1의 RAID 스토리지 시스템에서 처리되는 데이터 청크의 구성을 설명하기 위한 개념도이다.
도 6은 본 발명의 실시 예에 따른 RAID 컨트롤러를 보여주는 블록도이다.
도 7은 도 6의 RAID 컨트롤러에서 처리되는 스트라이프(Stripe), 데이터 청크, 및 ECC 단위 데이터의 예시를 설명하기 위한 개념도이다.
도 8은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다.
도 9는 본 발명의 일 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다.
도 10은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 다른 과정을 설명하기 위한 개념도이다.
도 11은 본 발명의 다른 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다.
도 12는 도 11의 과정을 이용하여 도 10의 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다.
도 13은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 또 다른 과정을 설명하기 위한 개념도이다.
도 14는 본 발명의 또 다른 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다.
도 15는 도 14의 과정에서 신뢰성 정보를 생성하기 위해 다시 읽기 동작을 수행하는 과정을 설명하기 위한 개념도이다.
도 16은 도 14 및 도 15의 과정들을 이용하여 도 13의 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다.
도 17은 도 6의 RAID 컨트롤러에서 ECC 결과 지시자들을 관리하는 과정을 설명하기 위한 개념도이다.
도 18은 본 발명의 실시 예에 따른 RAID 컨트롤러 및 복수의 스토리지 장치를 포함하는 RAID 스토리지 시스템을 보여주는 블록도이다.
도 19는 본 발명의 실시 예에 따른 RAID 컨트롤러를 포함하는 스토리지 장치를 보여주는 블록도이다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
본 명세서에서 사용되는 용어들은 본 발명이 속하는 기술 분야의 통상의 기술자들이 일반적으로 이해하는 의미를 갖는다. 보편적으로 사용되는 용어들은 본 명세서의 맥락에 따라 일관적인 의미로 해석되어야 한다. 또한, 본 명세서에서 사용되는 용어들은, 그 의미가 명확히 정의된 경우가 아니라면, 지나치게 이상적이거나 형식적인 의미로 해석되지 않아야 한다. 이하 첨부된 도면을 통하여 본 발명의 실시 예가 설명된다.
도 1은 본 발명의 실시 예에 따른 RAID(Redundant Array of Inexpensive Disks) 스토리지 시스템을 포함하는 전자 시스템을 보여주는 블록도이다. 전자 시스템(1000)은 호스트(Host; 1100) 및 RAID 스토리지 시스템(1200)을 포함할 수 있다.
호스트(1100)는 RAID 스토리지 시스템(1200)으로 커맨드(CMD)를 제공할 수 있다. 호스트(1100)는 RAID 스토리지 시스템(1200)과 데이터(DAT)를 교환할 수 있다. 호스트(1100)는 RAID 스토리지 시스템(1200)으로부터 커맨드(CMD)에 대응하는 응답(RSP)을 제공받을 수 있다.
예로서, 데이터(DAT)가 쓰기 데이터를 포함하는 경우, 호스트(1100)는 쓰기 커맨드를 포함하는 커맨드(CMD) 및 쓰기 데이터를 포함하는 데이터(DAT)를 RAID 스토리지 시스템(1200)으로 제공할 수 있다. 예로서, 데이터(DAT)가 읽기 데이터를 포함하는 경우, 호스트(1100)는 읽기 커맨드를 포함하는 커맨드(CMD)를 RAID 스토리지 시스템(1200)으로 제공할 수 있고, 읽기 데이터를 포함하는 데이터(DAT)를 RAID 스토리지 시스템(1200)으로부터 제공받을 수 있다. 이에 따라, 호스트(1100)는 사용자에게 스토리지 서비스를 제공할 수 있다.
예로서, 호스트(1100)는 하나 이상의 프로세서 코어들을 포함하도록 구현될 수 있다. 예로서, 호스트(1100)는 범용 프로세서, 전용 프로세서, 또는 어플리케이션 프로세서(Application Processor)를 포함할 수 있다. 호스트(1100)는 프로세서 그 자체이거나, 프로세서를 포함하는 전자 장치 또는 시스템일 수 있다.
RAID 스토리지 시스템(1200)은 RAID 컨트롤러(1210) 및 하나 이상의 스토리지 장치들(1230)을 포함할 수 있다. RAID 컨트롤러(1210)는 RAID 스토리지 시스템(1200)의 데이터 입출력을 관리할 수 있다. RAID 컨트롤러(1210)의 제어에 따라, 스토리지 장치들(1230)에 저장된 데이터(DAT)가 호스트(1100)로 출력되거나, 호스트(1100)로부터 제공된 데이터(DAT)가 스토리지 장치들(1230)에 저장될 수 있다.
스토리지 장치들(1230)은 하나 이상의 불휘발성 메모리들 및 장치 컨트롤러를 포함할 수 있다. 불휘발성 메모리들 각각은 호스트(1100)로부터 제공된 데이터(DAT)를 저장하기 위한 메모리 영역을 포함할 수 있다. 예로서, 불휘발성 메모리들 각각이 낸드 플래시 메모리(NAND-type Flash Memory)를 포함하는 경우, 불휘발성 메모리들 각각은 복수의 워드 라인 및 복수의 비트 라인을 따라 형성되는 메모리 셀 어레이를 포함할 수 있다.
그러나, 위 예는 본 발명을 한정하기 위한 것은 아니다. 불휘발성 메모리들 각각은 PRAM(Phase-change Random Access Memory), MRAM(Magneto-resistive RAM), ReRAM(Resistive RAM), FRAM(Ferro-electric RAM) 등과 같은 다양한 불휘발성 메모리들 중 하나 이상을 포함할 수 있다. 불휘발성 메모리들 각각의 구성은 다양하게 변경 또는 수정될 수 있다.
스토리지 장치들(1230)의 장치 컨트롤러는 스토리지 장치들(1230)의 전반적인 동작들을 제어할 수 있다. 장치 컨트롤러는 불휘발성 메모리들을 제어할 수 있다. 장치 컨트롤러는 RAID 컨트롤러(1210)와 통신할 수 있다. 장치 컨트롤러의 제어에 따라, 불휘발성 메모리들에 저장된 데이터가 RAID 컨트롤러(1210)를 통해 호스트(1100)로 제공되거나, 호스트(1100)의 데이터가 RAID 컨트롤러(1210)를 통해 불휘발성 메모리들에 저장될 수 있다.
몇몇 실시 예에서, 전자 시스템(1000)은 하나의 전자 장치로 구현될 수 있다. 예로서, 전자 시스템(1000)은 가전 기기, 컴퓨터, 노트북, 태블릿, 스마트폰, 웨어러블(Wearable) 장치 등과 같은 다양한 전자 장치 중 하나일 수 있다. 몇몇 다른 실시 예에서, 전자 시스템(1000)의 구성 요소들은 서로 별개로 구현될 수 있다. 예로서, 호스트(1100)는 단독의 컴퓨팅 장치로 구현될 수 있고, RAID 스토리지 시스템(1200)은 호스트(1100)와 별개의 스토리지 장치로 구현될 수 있다. 본 발명의 실시 예들은 다양하게 변경 또는 수정될 수 있다.
몇몇 실시 예에서, RAID 컨트롤러(1210)는 스토리지 장치들(1230)과 별개로 제공될 수 있다. 몇몇 다른 실시 예에서, RAID 컨트롤러(1210)는 스토리지 장치들(1230)의 내부에 포함될 수 있고, RAID 스토리지 시스템(1200)이 하나의 스토리지 장치로 구현될 수 있다. 이러한 실시 예들은 도 18 및 도 19를 참조하여 설명될 것이다.
도 2는 도 1의 RAID 스토리지 시스템에서 데이터를 저장하는 방식을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1이 도 2와 함께 참조될 것이다.
본 발명의 실시 예에서, RAID 스토리지 시스템(1200)은 하나의 데이터를 분할하고 분할된 "데이터 청크(Data Chunk)"들을 여러 스토리지에 분산하여 저장하기 위한 RAID 구성을 채용할 수 있다. 복수의 스토리지가 동시에 문제를 야기하는 경우는 거의 발생하지 않기 때문에, RAID 스토리지 시스템(1200)은 데이터의 신뢰성을 향상시킬 수 있다.
RAID 구성은 RAID 0, RAID 4, RAID 5, RAID 6 등과 같이 다양한 방식으로 설계될 수 있다. 본 발명의 이해를 돕기 위해, 이하의 설명들에서, RAID 스토리지 시스템(1200)이 RAID 4 방식으로 동작하는 것으로 가정될 것이다. 그러나, 본 발명이 속하는 기술 분야의 통상의 기술자는 이하의 설명들이 다른 방식의 RAID 구성에도 적용될 수 있음을 이해할 수 있을 것이다.
데이터(DAT)는 호스트(1100)와 RAID 스토리지 시스템(1200) 사이에서 "스트라이프(Stripe)" 단위로 전송될 수 있다. 호스트(1100) 또는 RAID 스토리지 시스템(1200)의 사용자는 스트라이프의 데이터 크기를 선택할 수 있다. 데이터(DAT)는 하나 이상의 스트라이프들을 포함할 수 있다.
하나의 스트라이프는 복수의 데이터 청크를 포함할 수 있다. 나아가, 스트라이프는 데이터 청크들의 오류를 검사하기 위해 참조되는 패리티(Parity)를 포함할 수 있다. 데이터 청크들 및 패리티는 복수의 스토리지에 분산하여 저장될 수 있다.
이해를 돕기 위해, i개의 스트라이프들이 호스트(1100)로부터 RAID 스토리지 시스템(1200)으로 제공되고, i개의 스트라이프들 각각이 n개의 데이터 청크들 및 하나의 패리티를 포함하는 것으로 가정될 것이다. 이 가정에 따르면, 하나의 스트라이프에 포함되는 n개의 데이터 청크들 및 하나의 패리티는 (n+1)개의 스토리지들(1231, 1232, 1233, 1234)에 분산하여 저장될 수 있다.
예로서, 제 1 스토리지(1231)는 i개의 스트라이프들의 첫 번째 데이터 청크들(DC[1][1] 내지 DC[i][1])을 저장할 수 있다. 제 2 스토리지(1232)는 i개의 스트라이프들의 두 번째 데이터 청크들(DC[1][2] 내지 DC[i][2])을 저장할 수 있다. 제 n 스토리지(1233)는 i개의 스트라이프들의 n번째 데이터 청크들(DC[1][n] 내지 DC[i][n])을 저장할 수 있다. 나아가, 제 (n+1) 스토리지(1234)는 i개의 스트라이프들의 패리티들(P[1] 내지 P[i])을 저장할 수 있다.
여기서, 하나의 데이터 청크는 스토리지(1231, 1232, 1233 또는 1234)에서 수행되는 읽기 동작의 읽기 단위에 대응하는 데이터 크기를 가질 수 있다. 스토리지들(1231, 1232, 1233, 1234)에 저장된 데이터는 데이터 청크와 동일한 데이터 크기를 갖는 읽기 단위로 읽힐 수 있다.
이러한 RAID 구성이 채용되는 경우, 하나의 스토리지에 저장된 하나의 데이터 청크에 오류가 발생하더라도, 그 데이터 청크는 패리티를 참조하여 복구될 수 있다. 예로서, 제 1 스트라이프의 제 1 데이터 청크(DC[1][1])에 오류가 발생한 경우, RAID 컨트롤러(1210)는 제 1 스트라이프의 패리티(P[1]) 및 제 2 내지 제 n 데이터 청크들(D[1][2] 내지 D[1][n])에 기초하여 제 1 데이터 청크(DC[1][1])를 복구할 수 있다. 따라서, RAID 스토리지 시스템(1200)은 데이터의 높은 신뢰성을 보장할 수 있다.
몇몇 실시 예에서, 스토리지들(1231, 1232, 1233, 1234) 각각이 하나의 스토리지 장치로 구현될 수 있다. 이러한 실시 예에 따르면, RAID 스토리지 시스템(1200)의 하나 이상의 스토리지 장치들(1230)은 복수의 스토리지 장치를 포함하도록 구현될 수 있다. 몇몇 다른 실시 예에서, 스토리지들(1231, 1232, 1233, 1234)은 하나의 스토리지 장치에 포함되는 독립적인 불휘발성 메모리들일 수 있다. 이러한 실시 예에 따르면, RAID 스토리지 시스템(1200)의 하나 이상의 스토리지 장치들(1230)은 하나의 스토리지 장치를 포함하도록 구현될 수 있다.
도 3은 도 1의 RAID 스토리지 시스템에서 데이터를 처리하는 방식을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 2가 도 3과 함께 참조될 것이다.
몇몇 실시 예에서, RAID 컨트롤러(1210)는 패리티 생성기/검사기(1211)를 포함할 수 있다. 패리티 생성기/검사기(1211)는 데이터 청크들과 함께 저장될 패리티를 생성할 수 있다. 나아가, 패리티 생성기/검사기(1211)는 패리티를 참조하여 데이터 청크들의 오류를 검사할 수 있다.
몇몇 실시 예에서, 하나 이상의 스토리지 장치들(1230)은 하나 이상의 ECC(Error Correction Code) 회로들(1235)을 포함할 수 있다. 데이터 청크들 및 패리티가 스토리지 장치들(1230)에 저장될 때, ECC 회로들(1235)은 오류 정정 코드를 생성할 수 있다(ECC 인코딩). 데이터 청크들 및 패리티가 스토리지 장치들(1230)로부터 읽힐 때, ECC 회로들(1235)은 오류 정정 코드를 참조하여 ECC 오류를 정정할 수 있다(ECC 디코딩).
예로서, 도 3을 참조하면, "케이스 A"는 제 1 스트라이프에 포함되는 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])을 스토리지 장치들(1230)에 저장하는 경우를 보여준다. RAID 컨트롤러(1210)가 호스트(1100)로부터 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])을 제공받은 후, 패리티 생성기/검사기(1211)는 제 1 스트라이프에 대응하는 패리티(P[1])를 생성할 수 있다. 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n]) 및 패리티(P[1])를 포함하는 제 1 스트라이프는 스토리지 장치들(1230)에 저장될 수 있다.
나아가, "케이스 B"는 제 1 스트라이프의 데이터 청크들을 읽고 오류를 갖는 데이터 청크를 복구하는 경우를 보여준다. 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])이 스토리지 장치들(1230)의 메모리 영역으로부터 읽힌 후, ECC 회로들(1235)은 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])의 오류를 검사하고 정정할 수 있다. 예로서, ECC 회로들(1235)은 ECC 오류를 검사하고 정정하기 위해 RS 코드(Reed-Solomon Code), 해밍 코드(Hamming Code), BCH 코드(Bose-Chaudhuri-Hocquenghem Code), 및/또는 LDPC 코드(Low Density Parity Check Code)에 기초하여 ECC 연산을 수행할 수 있다.
몇몇 경우, 특정 데이터 청크를 저장한 스토리지에 장애가 발생함에 따라, 그 데이터 청크가 올바르게 읽히지 못할 수 있다. 이 경우, ECC 회로들(1235)의 정정 능력을 벗어나는 오류가 발생할 수 있고, ECC 회로들(1235)은 몇몇 데이터 청크의 오류를 정정하지 못할 수 있다. 정정되지 않는 오류를 갖는 데이터 청크는 "정정 불가능한(Uncorrectable)" ECC 오류를 갖는 것으로 이해될 수 있다. 정정 불가능한 ECC 오류를 갖는 데이터가 읽힌 경우, 스토리지 장치들(1230)은 읽기 실패(Read Fail) 응답을 출력할 수 있다.
그러나, 읽기 실패 응답이 출력되더라도, RAID 스토리지 시스템(1200)은 패리티를 참조하여 정정 불가능한 ECC 오류를 갖는 데이터 청크를 복구할 수 있다. 예로서, 제 2 데이터 청크(DC[1][2])가 정정 불가능한 ECC 오류를 갖는 경우, RAID 컨트롤러(1210)는 제 1 데이터 청크(DC[1][1]), 제 3 내지 제 n 데이터 청크들(DC[1][3] 내지 DC[1][n]), 및 패리티(P[1])에 기초하여 제 2 데이터 청크(DC[1][2])를 복구할 수 있다.
예로서, 패리티(P[1])가 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])에 대해 배타적 논리합(Exclusive OR, 이하 XOR) 연산을 수행함으로써 얻어진 경우, 제 2 데이터 청크(DC[1][2])는 제 1 데이터 청크(DC[1][1]), 제 3 내지 제 n 데이터 청크들(DC[1][3] 내지 DC[1][n]), 및 패리티(P[1])에 대해 XOR 연산을 수행함으로써 복구될 수 있다.
RAID 컨트롤러(1210)의 동작에 따라, RAID 스토리지 시스템(1200)은 제 1 내지 제 n 데이터 청크들(DC[1][1] 내지 DC[1][n])을 포함하는 제 1 스트라이프를 호스트(1100)로 출력할 수 있다. 따라서, RAID 스토리지 시스템(1200)은 데이터의 높은 신뢰성을 보장할 수 있다.
도 4는 도 1의 RAID 스토리지 시스템의 복구 능력과 오류들의 개수 사이의 관계를 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 2가 도 4와 함께 참조될 것이다.
도 3을 참조하여 설명된 것과 같이, RAID 스토리지 시스템(1200)은 패리티를 참조하여, 정정 불가능한 ECC 오류를 갖는 데이터 청크를 복구할 수 있다. 다만, 하나의 패리티가 이용되는 경우, RAID 컨트롤러(1210)는 하나의 데이터 청크만을 복구할 수 있다. 하나의 패리티를 이용하는 RAID 컨트롤러(1210)는 둘 이상의 데이터 청크들을 복구하지 못할 수 있다.
예로서, 제 1 및 제 2 데이터 청크들(DC[1][1], DC[1][2])이 정정 불가능한 ECC 오류를 갖는 경우, 하나의 패리티를 이용하는 RAID 컨트롤러(1210)는 이 두 개의 데이터 청크들(DC[1][1], DC[1][2])을 복구하지 못할 수 있다. 복구가 불가능한 경우, RAID 컨트롤러(1210)는 호스트(1100)로 읽기 실패 응답을 출력할 수 있다.
두 개의 데이터 청크들(DC[1][1], DC[1][2])을 복구하기 위해, 둘 이상의 패리티들이 이용되거나 더 높은 정정 능력을 갖는 ECC 회로가 채용될 수 있다. 그러나, 이 경우, RAID 스토리지 시스템(1200)의 설계를 변경할 필요가 있고, RAID 스토리지 시스템(1200)의 오버헤드(Overhead)가 증가할 수 있다.
반면, 본 발명의 실시 예들은 추가의 패리티 없이 RAID 스토리지 시스템(1200)의 오버헤드를 크게 증가시키지 않도록 구성될 수 있다. 본 발명의 실시 예에 따른 RAID 컨트롤러(1210)는 ECC 회로의 ECC 연산에 의해 얻어진 ECC 결과에 기초하여, 정정 불가능한 ECC 오류를 갖는 데이터 청크를 복구할 수 있다. 따라서, RAID 스토리지 시스템(1200)은 더욱 높은 신뢰성을 보장할 수 있다.
도 5는 도 1의 RAID 스토리지 시스템에서 처리되는 데이터 청크의 구성을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1이 도 5와 함께 참조될 것이다.
예로서, 하나 이상의 스토리지 장치들(1230)에 포함되는 스토리지 장치는 특성에 따라 두 가지 유형들 중 하나로 분류될 수 있다. 제 1 유형의 스토리지 장치에서, ECC 연산을 수행하기 위한 데이터 크기를 갖는 ECC 단위는 읽기 동작을 수행하기 위한 데이터 크기를 갖는 읽기 단위보다 클 수 있다. 반면, 제 2 유형의 스토리지 장치에서, ECC 단위는 읽기 단위보다 작을 수 있다.
예로서, 제 1 유형의 스토리지 장치는 HDD(Hard Disk Drive)를 포함할 수 있다. HDD에서, 읽기 동작은 섹터(Sector) 단위로 수행될 수 있다. 하나의 섹터는 상당히 작은 데이터 크기를 가질 수 있다. 따라서, ECC 단위는 읽기 단위(즉, 섹터 단위)보다 큰 데이터 크기를 가질 수 있다.
예로서, 제 2 유형의 스토리지 장치는 SSD(Solid State Drive)를 포함할 수 있다. SSD에서, 읽기 동작은 페이지(Page) 단위 또는 멀티-페이지(Multi-page) 단위로 수행될 수 있다. 읽기 동작의 성능을 향상시키기 위해, 하나의 페이지는 상대적으로 큰 데이터 크기를 가질 수 있다. 이에 따라, 읽기 단위(즉, 페이지 단위)는 ECC 단위보다 큰 데이터 크기를 가질 수 있다.
도 2를 참조하여 설명된 것과 같이, RAID 스토리지 시스템(1200)에서, 하나의 데이터 청크는 읽기 단위에 대응하는 데이터 크기를 가질 수 있다. 따라서, 제 2 유형의 스토리지 장치에서, 하나의 데이터 청크는 복수의 ECC 단위 데이터(EU)를 포함할 수 있다. ECC 단위 데이터(EU)는 ECC 연산을 수행하기 위한 ECC 단위의 데이터 크기를 갖는 데이터일 수 있다.
본 발명의 실시 예들은 제 2 유형의 스토리지 장치(예컨대, SSD)에서 채용될 수 있다. 다만, 본 발명의 실시 예들은 SSD에 한정되지 않고, 복수의 ECC 단위 데이터(EU)를 포함하고 정정 불가능한 ECC 오류를 갖는 데이터 청크를 복구하기 위해 제 2 유형의 모든 스토리지 장치들에서 채용될 수 있다.
도 6은 본 발명의 실시 예에 따른 RAID 컨트롤러를 보여주는 블록도이다. RAID 컨트롤러(100)는 컨트롤러(110), 버퍼 메모리(120), ECC 결과 관리기(130), 정정 불가 오류 카운터(150), 및 복구 연산기(170)를 포함할 수 있다. 예로서, 도 1의 RAID 컨트롤러(1210)는 도 6의 RAID 컨트롤러(100)를 포함할 수 있다. 이해를 돕기 위해, 도 1이 도 6과 함께 참조될 것이다.
컨트롤러(110)는 RAID 컨트롤러(100)의 동작에 이용되는 다양한 산술 연산 및/또는 논리 연산을 처리할 수 있다. 이를 위해, 컨트롤러(110)는 하나 이상의 프로세서 코어들을 포함할 수 있다. 예로서, 컨트롤러(110)는 FPGA(Field Programmable Gate Array), ASICs(Application Specific Integrated Chips) 등과 같은 전용 논리 회로를 포함할 수 있다.
버퍼 메모리(120)는 RAID 컨트롤러(100)의 동작에 이용되는 데이터를 저장할 수 있다. 예로서, 버퍼 메모리(120)는 컨트롤러(110)에 의해 처리된 또는 처리될 데이터를 저장할 수 있다. 예로서, 버퍼 메모리(120)는 SRAM(Static RAM), DRAM(Dynamic RAM), SDRAM(Synchronous DRAM) 등과 같은 휘발성 메모리, 및/또는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
ECC 결과 관리기(130)는 "ECC 결과 지시자(Indicator)"들의 정보를 관리할 수 있다. ECC 결과 지시자들은 하나 이상의 스토리지 장치들(1230)에 분산하여 저장된 복수의 데이터 청크에 포함되는 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 각각 나타낼 수 있다. ECC 결과 지시자는 도 7을 참조하여 좀 더 상세히 설명될 것이다.
하나 이상의 ECC 회로들(1235)은 스토리지 장치들(1230)로부터 읽힌 복수의 데이터 청크에 대해(좀 더 구체적으로는, 복수의 데이터 청크 각각에 포함되는 복수의 ECC 단위 데이터에 대해) ECC 연산(좀 더 구체적으로는, ECC 디코딩 연산)을 수행할 수 있다. 이에 따라, ECC 회로들(1235)은 ECC 단위 데이터에 ECC 오류가 있는지 여부를 검사할 수 있고, ECC 오류를 정정할 수 있다. 몇몇 ECC 단위 데이터는 정정 불가능한 ECC 오류를 가질 수 있다.
ECC 회로들(1235)은 ECC 디코딩 연산의 결과들을 출력할 수 있다. RAID 컨트롤러(100)는 ECC 회로들(1235)로부터 출력된 결과들을 제공받을 수 있다. 예로서, 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 데이터 청크가 읽힌 경우, RAID 컨트롤러(100)는 ECC 디코딩 연산의 결과들에 기초하여 ECC 결과 지시자들을 생성할 수 있다.
몇몇 실시 예에서, 컨트롤러(110)는 ECC 회로들(1235)로부터 출력된 결과들에 기초하여 ECC 결과 지시자들을 생성할 수 있다. 나아가, ECC 결과 관리기(130)는 컨트롤러(110)에 의해 생성된 ECC 결과 지시자들을 저장하기 위해 메모리 영역을 포함할 수 있다. 몇몇 다른 실시 예에서, ECC 결과 관리기(130)는 스스로 ECC 결과 지시자들을 생성하고 저장하기 위해, 하드웨어 회로로 구현되거나 소프트웨어의 명령어 코드(Instruction Code)를 실행하도록 구성될 수 있다.
몇몇 실시 예에서, ECC 결과 관리기(130)의 기능들의 일부 또는 전부는 컨트롤러(110)에 포함될 수 있다. 몇몇 실시 예에서, ECC 결과 관리기(130)는 버퍼 메모리(120)를 메모리 영역으로서 공유할 수 있다.
도 5를 참조하여 설명된 것과 같이, 본 발명의 실시 예에서, 하나의 데이터 청크는 복수의 ECC 단위 데이터를 포함할 수 있다. 따라서, 하나의 데이터 청크에 관하여, 복수의 ECC 단위 데이터에 각각 대응하는 복수의 ECC 결과 지시자가 생성될 수 있다. ECC 결과 지시자들 중 몇몇은 정정 불가능한 ECC 오류를 나타낼 수 있고, 다른 ECC 결과 지시자들은 ECC 단위 데이터에 ECC 오류가 없거나 ECC 오류가 정정되었음을 나타낼 수 있다.
정정 불가 오류 카운터(150)는 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 본 발명의 실시 예에서, 정정 불가 오류 카운터(150)는 하나의 스트라이프에 포함되는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터에 대응하는 ECC 결과 지시자들 중에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. ECC 단위 데이터의 순번 및 정정 불가 오류 카운터(150)의 동작은 도 8을 참조하여 좀 더 상세히 설명될 것이다.
몇몇 실시 예에서, 정정 불가 오류 카운터(150)는 논리합 게이트, 가산기, 또는 이들과 유사한 논리 회로를 포함하는 하드웨어 회로로 구현될 수 있다. 몇몇 다른 실시 예에서, 정정 불가 오류 카운터(150)는 정정 불가능한 ECC 오류들의 개수를 산출하기 위해 소프트웨어의 명령어 코드를 실행하도록 구성될 수 있다. 몇몇 실시 예에서, 정정 불가 오류 카운터(150)의 기능들의 일부 또는 전부는 컨트롤러(110)에 포함될 수 있다.
복구 연산기(170)는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다. 예로서, 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수가 기준값을 초과하지 않는 경우, 복구 연산기(170)는 읽기에 성공한 ECC 단위 데이터 및 패리티에 기초하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다.
본 발명의 실시 예에서, 복구 연산기(170)는 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다. 복구 연산기(170)의 동작 및 ECC 단위 데이터의 복구는 도 8을 참조하여 좀 더 상세히 설명될 것이다.
몇몇 실시 예에서, 복구 연산기(170)는 XOR 게이트 또는 이와 유사한 논리 회로를 포함하는 하드웨어 회로로 구현될 수 있다. 몇몇 다른 실시 예에서, 복구 연산기(170)는 ECC 단위 데이터를 복구하기 위해 소프트웨어의 명령어 코드를 실행하도록 구성될 수 있다. 몇몇 실시 예에서, 복구 연산기(170)의 기능들의 일부 또는 전부는 컨트롤러(110)에 포함될 수 있다.
본 발명의 실시 예에서, 정정 불가 오류 카운터(150)의 산출 동작 및 복구 연산기(170)의 복구 동작은 "ECC 단위 데이터의 순번"에 따라 수행될 수 있다. 읽기 단위의 데이터 크기(즉, 데이터 청크의 데이터 크기)가 ECC 단위보다 큰 경우, RAID 컨트롤러(100)는 패리티를 참조하여 "ECC 단위"로 복구 동작을 수행할 수 있다. RAID 컨트롤러(100)는 복구된 ECC 단위 데이터를 포함하는 스트라이프를 호스트(1100)로 출력할 수 있다.
도 7은 도 6의 RAID 컨트롤러에서 처리되는 스트라이프, 데이터 청크, 및 ECC 단위 데이터의 예시를 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 7과 함께 참조될 것이다.
도 2를 참조하여 설명된 것과 같이, 데이터는 호스트(1100)와 RAID 스토리지 시스템(1200) 사이에서 스트라이프 단위로 전송될 수 있다. 본 발명의 실시 예의 이해를 돕기 위해, 하나의 스트라이프에 관한 예시가 설명될 것이다.
하나의 스트라이프는 하나 이상의 스토리지 장치들(1230)에 분산하여 저장되는 복수의 데이터 청크 및 패리티를 포함할 수 있다. 예로서, 스트라이프는 네 개의 데이터 청크들(DC[1] 내지 DC[4]) 및 하나의 패리티(P)를 포함할 수 있다. 데이터 청크들(DC[1] 내지 DC[4]) 및 패리티(P)는 스토리지 장치들(1230)에 분산하여 저장될 수 있다.
하나의 데이터 청크는 스토리지 장치들(1230)에서 수행되는 읽기 동작의 읽기 단위에 대응하는 데이터 크기를 가질 수 있다. 본 발명의 실시 예에서, 읽기 단위는 ECC 연산을 수행하기 위한 데이터 크기의 ECC 단위보다 클 수 있다. 따라서, 하나의 데이터 청크는 각각이 ECC 단위의 데이터 크기를 갖는 복수의 ECC 단위 데이터를 포함할 수 있다.
예로서, 제 1 데이터 청크(DC[1])는 제 1 내지 제 4 ECC 단위 데이터(EU[1][1] 내지 EU[1][4])를 포함할 수 있다. 제 2 내지 제 4 데이터 청크들(DC[2] 내지 DC[4]) 각각 역시 네 개의 ECC 단위 데이터를 포함할 수 있고, 설명의 편의를 위해 제 2 내지 제 4 데이터 청크들(DC[2] 내지 DC[4])에 관한 중복되는 설명들은 생략될 것이다.
패리티(P)는 데이터 청크들(DC[1] 내지 DC[4])에 대응하도록 생성될 수 있다. 따라서, 패리티(P) 역시 네 개의 ECC 단위 데이터(EU[5][1] 내지 EU[5][4])를 포함할 수 있다. 예로서, 패리티(P)의 제 1 ECC 단위 데이터(EU[5][1])는 데이터 청크들(DC[1] 내지 DC[4])의 제 1 ECC 단위 데이터(EU[1][1], EU[2][1], EU[3][1], EU[4][1])에 대응하도록 생성될 수 있다. 설명의 편의를 위해, 패리티(P)의 제 2 내지 제 4 ECC 단위 데이터(EU[5][2] 내지 EU[5][4])에 관한 중복되는 설명들은 생략될 것이다.
위에서 설명된 것과 같이, 하나의 데이터 청크가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, 그 데이터 청크는 패리티(P)를 참조하여 복구될 수 있다. 본 발명의 실시 예에서, 데이터 청크의 복구는 ECC 단위로 수행될 수 있다. 예로서, 제 1 데이터 청크(DC[1])의 제 1 ECC 단위 데이터(EU[1][1])가 정정 불가능한 ECC 오류를 갖는 경우, 제 1 ECC 단위 데이터(EU[1][1])는 제 2 내지 제 4 데이터 청크들(DC[2] 내지 DC[4])의 제 1 ECC 단위 데이터(EU[2][1], EU[3][1], EU[4][1]) 및 패리티(P)의 제 1 ECC 단위 데이터(EU[5][1])에 기초하여 복구될 수 있다. 이러한 복구 동작은 도 8을 참조하여 좀 더 상세히 설명될 것이다.
예로서, 하나 이상의 ECC 회로들(1235)은 스토리지 장치들(1230)로부터 읽힌 데이터 청크들(DC[1] 내지 DC[4])에 포함되는 ECC 단위 데이터(EU[1][1] 내지 EU[4][4])에 대해 ECC 디코딩 연산을 수행할 수 있다. 이에 따라, ECC 회로들(1235)은 ECC 단위 데이터(EU[1][1] 내지 EU[4][4]) 각각에 ECC 오류가 있는지 여부를 검사할 수 있고, ECC 오류를 정정할 수 있다. 몇몇 ECC 단위 데이터는 정정 불가능한 ECC 오류를 가질 수 있다.
예로서, 제 1 데이터 청크(DC[1])의 제 1 ECC 단위 데이터(EU[1][1]), 제 3 ECC 단위 데이터(EU[1][3]), 및 제 4 ECC 단위 데이터(EU[1][4])는 ECC 오류를 갖지 않거나 ECC 오류가 성공적으로 정정되었을 수 있다(도 7에서, "S"로 나타냄). 반면, 제 1 데이터 청크(DC[1])의 제 2 ECC 단위 데이터(EU[1][2])는 정정 불가능한 ECC 오류를 가질 수 있다(도 7에서, "E"로 나타냄).
도 6을 참조하여 설명된 것과 같이, ECC 결과 관리기(130)는 ECC 결과 지시자들의 정보를 관리할 수 있다. 예로서, ECC 결과 관리기(130)는 ECC 회로들(1235)의 ECC 디코딩 연산의 결과에 기초하여, ECC 결과 지시자들의 정보를 관리할 수 있다.
예로서, 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자는 "1"의 값을 가질 수 있고, ECC 오류가 없거나 ECC 오류가 정정되었음을 나타내는 ECC 결과 지시자는 "0"의 값을 가질 수 있다. 다만, 본 발명은 이 예에 의해 한정되지 않는다. ECC 결과 지시자의 값은 정정 불가능한 ECC 오류를 식별하기 위해 다양하게 변경 또는 수정될 수 있다. 예로서, ECC 결과 지시자는 문자 또는 여러 숫자의 값을 갖도록 구성될 수 있다. 다만, 설명의 편의를 위해, ECC 결과 지시자는 "1" 또는 "0"의 값을 갖는 것으로 설명될 것이다.
ECC 결과 지시자들은 컨트롤러(110) 또는 ECC 결과 관리기(130)에 의해 생성된 후 ECC 결과 관리기(130) 또는 버퍼 메모리(120)에 저장될 수 있다. 예로서, ECC 결과 관리기(130) 또는 버퍼 메모리(120)는 제 1 데이터 청크(DC[1])에 관하여 벡터 "(0, 1, 0, 0)"의 값을 갖는 ECC 결과 지시자들을 저장할 수 있다.
이러한 방식에 따라, ECC 결과 관리기(130)는 데이터 청크들(DC[1] 내지 DC[4])에 포함되는 ECC 단위 데이터(EU[1][1] 내지 EU[4][4])에 각각 대응하는 ECC 결과 지시자들을 관리할 수 있다. 이 ECC 결과 지시자들은 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하기 위해 참조될 수 있다.
이상에서, 하나의 스트라이프가 네 개의 데이터 청크들(DC[1] 내지 DC[4]) 및 하나의 패리티(P)를 포함하고 하나의 데이터 청크(및 패리티(P))가 네 개의 ECC 단위 데이터를 포함하는 것으로 설명되었다. 그러나, 도 7은 본 발명의 이해를 돕기 위해 제공된 것이고, 본 발명을 한정하기 위한 것은 아니다. 데이터 청크들의 개수, 패리티들의 개수, ECC 단위 데이터의 개수는 다양하게 변경 또는 수정될 수 있다.
도 8은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 6 및 도 7이 도 8과 함께 참조될 것이다.
데이터 청크들(DC[1] 내지 DC[4])에 대해 수행된 ECC 디코딩 연산의 결과들 및 대응하는 ECC 결과 지시자들의 예시가 도 8에 나타나 있다. 예로서, 도 8에서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])가 정정 불가능한 ECC 오류를 가질 수 있다. 반면, 다른 ECC 단위 데이터는 ECC 오류를 갖지 않거나 ECC 오류가 성공적으로 정정되었을 수 있다(즉, 다른 ECC 단위 데이터는 성공적으로 읽혔을 수 있다). 패리티(P)는 ECC 오류를 갖지 않을 수 있다.
도 8의 예에서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])에 대응하는 ECC 결과 지시자는 "1"의 값을 가질 수 있다. 반면, 다른 ECC 단위 데이터에 대응하는 ECC 결과 지시자들은 "0"의 값을 가질 수 있다. ECC 결과 관리기(130)는 이 ECC 결과 지시자들의 값들을 관리할 수 있다.
예로서, 하나의 데이터 청크(및 패리티(P))는 네 개의 ECC 단위 데이터를 포함할 수 있다. 데이터 청크들(DC[1] 내지 DC[4]) 및 패리티(P)는 동일한 개수의 ECC 단위 데이터를 포함할 수 있다.
패리티(P)의 ECC 단위 데이터는 데이터 청크들(DC[1] 내지 DC[4]) 각각에서 "동일한 순번"을 갖는 ECC 단위 데이터에 대응하도록 생성될 수 있다. 예로서, 데이터 청크들(DC[1] 내지 DC[4])의 제 1 ECC 단위 데이터(EU[1][1], EU[2][1], EU[3][1], EU[4][1])는 첫 번째 순번을 가질 수 있다. 패리티(P)의 제 1 ECC 단위 데이터(EU[5][1])는 첫 번째 순번을 갖는 제 1 ECC 단위 데이터(EU[1][1], EU[2][1], EU[3][1], EU[4][1])에 대응하도록 생성될 수 있다. 설명의 편의를 위해, 두 번째 순번 내지 네 번째 순번에 관한 중복되는 설명들은 생략될 것이다.
정정 불가 오류 카운터(150)는 각 순번에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 예로서, 첫 번째 순번의 ECC 결과 지시자들은 모두 "0"의 값을 갖기 때문에, 정정 불가 오류 카운터(150)는 첫 번째 순번에 관하여 "0"의 값을 산출할 수 있다. 그러나, 두 번째 순번의 ECC 결과 지시자들 중 하나의 ECC 결과 지시자(즉, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])에 대응하는 ECC 결과 지시자)가 "1"의 값을 갖기 때문에, 정정 불가 오류 카운터(150)는 두 번째 순번에 관하여 "1"의 값을 산출할 수 있다. 이러한 방식으로, 정정 불가 오류 카운터(150)는 세 번째 순번 및 네 번째 순번에 관하여 "0"의 값을 산출할 수 있다.
복구 연산기(170)는 각 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다. 좀 더 구체적으로, 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값을 초과하지 않는 경우, 복구 연산기(170)가 복구 동작을 수행할 수 있다. 기준값은 RAID 컨트롤러(100)의 복구 능력을 고려하여 선택될 수 있다. 예로서, 하나의 패리티(P)가 이용되는 경우 "하나"의 데이터 청크가 복구될 수 있기 때문에(도 3 및 도 4 참조), 기준값은 "1"로 선택될 수 있다.
첫 번째 순번, 세 번째 순번, 및 네 번째 순번에서, 정정 불가능한 ECC 오류가 없는 것으로 이해될 수 있다. 따라서, 복구 연산기(170)는 첫 번째 순번, 세 번째 순번, 및 네 번째 순번에 관한 복구 동작을 수행하지 않을 수 있다. 반면, 두 번째 순번에서, 한 개의 정정 불가능한 ECC 오류가 발생한 것으로 이해될 수 있다. 두 번째 순번에서, 정정 불가능한 ECC 오류의 개수가 기준값 "1"을 초과하지 않기 때문에, 복구 연산기(170)는 두 번째 순번에 관한 복구 동작을 수행할 수 있다.
복구 연산기(170)는 정정 불가능한 ECC 오류를 갖는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구할 수 있다. 좀 더 구체적으로, 복구 연산기(170)는 데이터 청크들(DC[1] 내지 DC[4]) 각각에서 두 번째 순번을 갖는 ECC 단위 데이터(EU[1][2], EU[2][2], EU[3][2], EU[4][2]) 중에서 읽기에 성공한 ECC 단위 데이터(EU[1][2], EU[3][2], EU[4][2]), 및 두 번째 순번을 갖는 패리티(P)의 제 2 ECC 단위 데이터(EU[5][2])에 기초하여, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구할 수 있다.
예로서, 패리티(P)가 데이터 청크들(DC[1] 내지 DC[4])에 대해 XOR 연산을 수행함으로써 얻어진 경우, 복구 연산기(170)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구하기 위해, 읽기에 성공한 ECC 단위 데이터(EU[1][2], EU[3][2], EU[4][2]) 및 패리티(P)의 제 2 ECC 단위 데이터(EU[5][2])에 대해 XOR 연산을 수행할 수 있다.
복구 연산기(170)의 복구 동작은 각 순번에서 ECC 단위로 수행될 수 있다. 본 발명의 실시 예에서, 이러한 복구 동작은 읽기 단위의 데이터 크기가 ECC 단위의 데이터 크기보다 크기 때문에 가능할 수 있다.
복구 동작을 수행하기 위해, 버퍼 메모리(120)가 이용될 수 있다. 몇몇 실시 예에서, 버퍼 메모리(120)는 복구 동작 동안, 데이터 청크들(DC[1] 내지 DC[4]) 및 패리티(P) 모두를 저장하는 대신, 두 번째 순번을 갖는 ECC 단위 데이터(EU[1][2], EU[2][2], EU[3][2], EU[4][2], EU[5][2])만을 저장할 수 있다. 버퍼 메모리(120)는 복구 동작에 이용되지 않는 ECC 단위 데이터를 저장하지 않을 수 있다. 복구 동작은 두 번째 순번을 갖는 ECC 단위 데이터(EU[1][2], EU[2][2], EU[3][2], EU[4][2], EU[5][2])만 이용하여 수행될 수 있다. 이에 따라, 버퍼 메모리(120)의 이용 효율 및 동작 속도가 향상될 수 있다.
도 9는 본 발명의 일 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 9와 함께 참조될 것이다. 나아가, 도 9의 과정은 도 8의 예에 기초하여 설명될 것이다.
S110 동작에서, 하나의 데이터 청크(예컨대, 제 1 데이터 청크(DC[1]))가 하나 이상의 스토리지 장치들(1230)로부터 읽힐 수 있다. S115 동작에서, 하나 이상의 ECC 회로들(1235)은 제 1 데이터 청크(DC[1])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다. 제 1 데이터 청크(DC[1])가 성공적으로 읽힌 경우, S120 동작에서, 다음 데이터 청크(예컨대, 제 2 데이터 청크(DC[2]))가 스토리지 장치들(1230)로부터 읽힐 수 있다.
다시 S115 동작에서, ECC 회로들(1235)은 제 2 데이터 청크(DC[2])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다. 예로서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])가 정정 불가능한 ECC 오류를 가질 수 있다. 따라서, S125 동작에서, ECC 결과 관리기(130)는 제 2 데이터 청크(DC[2])에 포함되는 ECC 단위 데이터(EU[2][1] 내지 EU[2][4])에 대응하는 ECC 결과 지시자들을 준비할 수 있다.
S130 동작에서, 다음 데이터 청크(예컨대, 제 3 데이터 청크(DC[3]))가 스토리지 장치들(1230)로부터 읽힐 수 있다. S135 동작에서, ECC 회로들(1235)은 제 3 데이터 청크(DC[3])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다.
도 8의 예와 달리 제 3 데이터 청크(DC[3])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, S140 동작에서, RAID 컨트롤러(100)가 읽기 실패 응답을 출력할 수 있다. 도 9의 실시 예에서, 둘 이상의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, 읽기 실패 응답이 출력될 수 있다.
반면, 도 8의 예와 같이 제 3 데이터 청크(DC[3])가 성공적으로 읽힌 경우, S145 동작에서, 컨트롤러(110)는 모든 데이터 청크가 읽혔는지 여부를 판별할 수 있다. 그러나, 아직 모든 데이터 청크가 읽히지 않았고, 제 4 데이터 청크(DC[4])에 대해 S130, S135, 및 S145 동작들이 반복하여 수행될 수 있다.
제 4 데이터 청크(DC[4])를 포함하여 모든 데이터 청크가 읽힌 후, S150 동작에서, 정정 불가 오류 카운터(150)는 각 순번에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 도 9의 실시 예에서, 둘 이상의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우 읽기 실패 응답이 출력될 수 있기 때문에(S140), S150 동작에서 정정 불가 오류 카운터(150)에 의해 산출된 개수는 기준값을 초과하지 않을 수 있다.
따라서, S155 동작에서, 복구 연산기(170)는 각 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터(예컨대, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2]))를 복구할 수 있다. 도 9의 실시 예에서, 하나의 데이터 청크만이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, 복구 연산기(170)는 그 ECC 단위 데이터를 복구할 수 있다. 이를 위해, 복구 연산기(170)는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 순번에 관하여 복구 동작을 수행할 수 있다.
하나의 데이터 청크가 정정 불가능한 ECC 오류를 갖는 복수의 ECC 단위 데이터를 포함하는 경우에도, 도 9의 실시 예가 적용될 수 있다. 예로서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2]) 및 제 3 ECC 단위 데이터(EU[2][3])가 정정 불가능한 ECC 오류를 갖는 경우, 복구 연산기(170)는 두 번째 순번 및 세 번째 순번에 관하여 복구 동작을 수행할 수 있다.
도 9의 실시 예는 하나의 데이터 청크의 정정 불가능한 ECC 오류를 복구하도록 구성될 수 있다. 따라서, 도 9의 실시 예는 상대적으로 쉽게 구현될 수 있고, 효율적으로 관리될 수 있다.
도 10은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 다른 과정을 설명하기 위한 개념도이다. 도 8의 예와 달리, 도 10의 예는 두 개의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우를 보여준다.
도 10의 예에서, ECC 결과 관리기(130)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])에 관하여 "1"의 값을 갖는 ECC 결과 지시자를 관리할 수 있다. ECC 결과 관리기(130)는 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3])에 관하여 "1"의 값을 갖는 ECC 결과 지시자를 관리할 수 있다. 반면, 다른 ECC 결과 지시자들은 "0"의 값을 가질 수 있다. 이 예에서, 정정 불가 오류 카운터(150)는 두 번째 순번 및 세 번째 순번에 관하여 "1"의 값을 산출할 수 있다.
그러나, 도 9의 과정이 도 10의 예에 적용되는 경우, 도 9의 S140 동작에서 읽기 실패 응답이 출력될 수 있다. 이는 도 9의 실시 예가 하나의 데이터 청크의 정정 불가능한 ECC 오류를 복구하도록 구성되는 반면, 도 10의 예에서는 두 개의 데이터 청크들(DC[2], DC[3])이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하기 때문이다. 도 11을 참조하여, 도 10의 예에 나타낸 정정 불가능한 ECC 오류를 복구하기 위한 실시 예가 설명될 것이다.
도 11은 본 발명의 다른 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 11과 함께 참조될 것이다. 나아가, 도 11의 과정은 도 10의 예에 기초하여 설명될 것이다.
S210 동작에서, 하나의 데이터 청크(예컨대, 제 1 데이터 청크(DC[1]))가 하나 이상의 스토리지 장치들(1230)로부터 읽힐 수 있다. S215 동작에서, 하나 이상의 ECC 회로들(1235)은 제 1 데이터 청크(DC[1])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다.
제 1 데이터 청크(DC[1])가 성공적으로 읽힌 경우, S225 동작에서, 컨트롤러(110)는 모든 데이터 청크가 읽혔는지 여부를 판별할 수 있다. 그러나, 아직 모든 데이터 청크가 읽히지 않았고, S230 동작에서, 다음 데이터 청크(예컨대, 제 2 데이터 청크(DC[2]))가 스토리지 장치들(1230)로부터 읽힐 수 있다.
다시 S215 동작에서, ECC 회로들(1235)은 제 2 데이터 청크(DC[2])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다. 예로서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])가 정정 불가능한 ECC 오류를 가질 수 있다. 따라서, S220 동작에서, ECC 결과 관리기(130)는 제 2 데이터 청크(DC[2])에 포함되는 ECC 단위 데이터(EU[2][1] 내지 EU[2][4])에 대응하는 ECC 결과 지시자들을 준비할 수 있다.
이러한 방식으로, 제 3 데이터 청크(DC[3])에 대해 S225, S230, S215, 및 S220 동작들이 반복될 수 있다. 나아가, 제 4 데이터 청크(DC[4])에 대해 S225, S230, 및 S215 동작들이 반복될 수 있다. 설명의 편의를 위해, 제 3 데이터 청크(DC[3]) 및 제 4 데이터 청크(DC[4])에 관한 중복되는 설명들은 생략될 것이다.
일 실시 예에서, 읽기에 성공한 데이터 청크(예컨대, 제 1 데이터 청크(DC[1]) 또는 제 4 데이터 청크(DC[4]))에 대해 S220 동작이 수행되지 않을 수 있다. 반면, 다른 실시 예에서, 읽기에 성공한 데이터 청크에 대해 S220 동작이 수행될 수 있다. 이러한 실시 예에서, 읽기에 성공한 데이터 청크에 대응하는 ECC 결과 지시자들은 "0"의 값을 갖도록 생성될 수 있다.
모든 데이터 청크가 읽힌 후, S235 동작에서, 정정 불가 오류 카운터(150)는 각 순번에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 도 10의 예에서, 정정 불가 오류 카운터(150)는 두 번째 순번 및 세 번째 순번에 관하여 "1"의 값을 산출할 수 있다. 반면, 정정 불가 오류 카운터(150)는 첫 번째 순번 및 네 번째 순번에 관하여 "0"의 값을 산출할 수 있다.
S240 동작에서, 복구 연산기(170) 또는 컨트롤러(110)는 S235 동작에서 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값 "1"을 초과하지 않는지 여부를 판별할 수 있다. 몇몇 경우, 도 10의 예와 달리, 특정 순번에서 발생한 정정 불가능한 ECC 오류의 개수가 기준값을 초과할 수 있다. 이러한 경우, S245 동작에서, RAID 컨트롤러(100)는 읽기 실패 응답을 출력할 수 있다.
반면, 도 10의 예에서, 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값을 초과하지 않을 수 있다. 따라서, S250 동작에서, 복구 연산기(170)는 각 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터(예컨대, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2]), 및 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3]))를 복구할 수 있다.
S250 동작에서, 복구 연산기(170)는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 순번에 관하여 복구 동작을 수행할 수 있다. 도 10의 예에서, 복구 연산기(170)는 두 번째 순번 및 세 번째 순번에 관하여 복구 동작을 수행할 수 있다. 복구 동작은 도 12를 참조하여 더 상세히 설명될 것이다.
도 11의 실시 예는 둘 이상의 데이터 청크들의 정정 불가능한 ECC 오류를 복구하도록 구성될 수 있다. 따라서, 도 11의 실시 예에 따라 동작하는 RAID 컨트롤러(100)는 좀 더 높은 복구 능력을 가질 수 있다.
도 12는 도 11의 과정을 이용하여 도 10의 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 10이 도 12와 함께 참조될 것이다.
예로서, 정정 불가 오류 카운터(150)는 두 번째 순번 및 세 번째 순번에 관하여 "1"의 값을 산출할 수 있다. 이에 따라, 복구 연산기(170)는 두 번째 순번 및 세 번째 순번에 관하여 복구 동작을 수행할 수 있다.
두 번째 순번에서, 복구 연산기(170)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구할 수 있다. 좀 더 구체적으로, 복구 연산기(170)는 두 번째 순번에서 읽기에 성공한 ECC 단위 데이터(EU[1][2], EU[3][2], EU[4][2]), 및 패리티(P)의 제 2 ECC 단위 데이터(EU[5][2])에 기초하여, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구할 수 있다. 예로서, 복구 연산기(170)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구하기 위해, ECC 단위 데이터(EU[1][2], EU[3][2], EU[4][2]) 및 패리티(P)의 제 2 ECC 단위 데이터(EU[5][2])에 대해 XOR 연산을 수행할 수 있다.
세 번째 순번에서, 복구 연산기(170)는 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3])를 복구할 수 있다. 좀 더 구체적으로, 복구 연산기(170)는 세 번째 순번에서 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[2][3], EU[4][3]), 및 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3])에 기초하여, 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3])를 복구할 수 있다. 예로서, 복구 연산기(170)는 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3])를 복구하기 위해, ECC 단위 데이터(EU[1][3], EU[2][3], EU[4][3]) 및 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3])에 대해 XOR 연산을 수행할 수 있다.
이러한 방식으로, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크들의 개수와 무관하게, 둘 이상의 데이터 청크들이 복구될 수 있다. 그러나, 특정 순번에서 발생한 정정 불가능한 ECC 오류의 개수가 기준값을 초과하는 경우, 읽기 실패 응답이 출력될 수 있다(도 11의 S245 동작). 따라서, 복구 동작을 수행하기 위해, 복수의 데이터 청크 각각에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 순번들이 중첩되지 않을 필요가 있다.
도 13은 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 또 다른 과정을 설명하기 위한 개념도이다. 도 8의 예와 달리, 도 13의 예는 두 개의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우를 보여준다. 나아가, 도 10의 예와 달리, 도 13의 예는 정정 불가능한 ECC 오류를 갖는 몇몇 ECC 단위 데이터의 순번이 중첩되는 경우를 보여준다.
도 13의 예에서, ECC 결과 관리기(130)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2]) 및 제 3 ECC 단위 데이터(EU[2][3])에 관하여 "1"의 값을 갖는 ECC 결과 지시자를 관리할 수 있다. ECC 결과 관리기(130)는 제 3 데이터 청크(DC[3])의 제 3 ECC 단위 데이터(EU[3][3])에 관하여 "1"의 값을 갖는 ECC 결과 지시자를 관리할 수 있다. 반면, 다른 ECC 결과 지시자들은 "0"의 값을 가질 수 있다.
이 예에서, 정정 불가 오류 카운터(150)는 두 번째 순번에 관하여 "1"의 값을 산출할 수 있다. 나아가, 정정 불가 오류 카운터(150)는 세 번째 순번에 관하여 "2"의 값을 산출할 수 있다.
그러나, 도 11의 과정이 도 13의 예에 적용되는 경우, 도 11의 S245 동작에서 읽기 실패 응답이 출력될 수 있다. 이는 도 11의 실시 예가 특정 순번에서 발생한 정정 불가능한 ECC 오류의 개수가 기준값을 초과하지 않는 경우에 복구 동작이 수행되도록 구성되는 반면, 도 13의 예에서는 기준값 "1"보다 많은 정정 불가능한 ECC 오류가 세 번째 순번에서 발생했기 때문이다. 도 14를 참조하여, 도 13의 예에 나타낸 정정 불가능한 ECC 오류를 복구하기 위한 실시 예가 설명될 것이다.
도 14는 본 발명의 또 다른 실시 예에 따라 도 6의 RAID 컨트롤러에서 정정 불가능한 오류를 복구하는 과정을 설명하는 흐름도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 14와 함께 참조될 것이다. 나아가, 도 14의 과정은 도 13의 예에 기초하여 설명될 것이다.
S310 동작에서, 하나의 데이터 청크(예컨대, 제 1 데이터 청크(DC[1]))가 하나 이상의 스토리지 장치들(1230)로부터 읽힐 수 있다. S315 동작에서, 하나 이상의 ECC 회로들(1235)은 제 1 데이터 청크(DC[1])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다.
제 1 데이터 청크(DC[1])가 성공적으로 읽힌 경우, S325 동작에서, 컨트롤러(110)는 모든 데이터 청크가 읽혔는지 여부를 판별할 수 있다. 그러나, 아직 모든 데이터 청크가 읽히지 않았고, S330 동작에서, 다음 데이터 청크(예컨대, 제 2 데이터 청크(DC[2]))가 스토리지 장치들(1230)로부터 읽힐 수 있다.
다시 S315 동작에서, ECC 회로들(1235)은 제 2 데이터 청크(DC[2])가 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는지 여부를 검사할 수 있다. 예로서, 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2]) 및 제 3 ECC 단위 데이터(EU[2][3])가 정정 불가능한 ECC 오류를 가질 수 있다. 따라서, S320 동작에서, ECC 결과 관리기(130)는 제 2 데이터 청크(DC[2])에 포함되는 ECC 단위 데이터(EU[2][1] 내지 EU[2][4])에 대응하는 ECC 결과 지시자들을 준비할 수 있다.
이러한 방식으로, 제 3 데이터 청크(DC[3])에 대해 S325, S330, S315, 및 S320 동작들이 반복될 수 있다. 나아가, 제 4 데이터 청크(DC[4])에 대해 S325, S330, 및 S315 동작들이 반복될 수 있다. 설명의 편의를 위해, 제 3 데이터 청크(DC[3]) 및 제 4 데이터 청크(DC[4])에 관한 중복되는 설명들은 생략될 것이다.
모든 데이터 청크가 읽힌 후, S335 동작에서, 정정 불가 오류 카운터(150)는 각 순번에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출할 수 있다. 도 13의 예에서, 정정 불가 오류 카운터(150)는 두 번째 순번에 관하여 "1"의 값을 산출할 수 있고, 세 번째 순번에 관하여 "2"의 값을 산출할 수 있다. 반면, 정정 불가 오류 카운터(150)는 첫 번째 순번 및 네 번째 순번에 관하여 "0"의 값을 산출할 수 있다.
S340 동작에서, 복구 연산기(170) 또는 컨트롤러(110)는 S335 동작에서 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값 "1"을 초과하지 않는지 여부를 판별할 수 있다. 두 번째 순번에서, 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값을 초과하지 않을 수 있다. 따라서, S345 동작에서, 복구 연산기(170)는 제 2 데이터 청크(DC[2])의 제 2 ECC 단위 데이터(EU[2][2])를 복구하기 위해, 두 번째 순번에 관하여 복구 동작을 수행할 수 있다.
반면, 세 번째 순번에서, 정정 불가 오류 카운터(150)에 의해 산출된 개수가 기준값을 초과할 수 있다. 예로서, 하나의 패리티가 이용되는 경우, 정정 불가능한 ECC 오류를 갖는 두 개의 ECC 단위 데이터를 복구하는 것은 어려울 수 있다. 이 예에서, 복구 연산기(170)는 두 개의 ECC 단위 데이터를 동시에 복구하지 못할 수 있다.
특정 순번(즉, 세 번째 순번)에서 기준값보다 많은 정정 불가능한 ECC 오류를 복구하기 위해, S350 및 S355 동작들이 수행될 수 있다. S350 동작에서, 컨트롤러(110) 또는 복구 연산기(170)는 세 번째 순번에 관하여 복구 동작을 수행하기 위해 "신뢰성 정보"를 획득할 수 있다. 신뢰성 정보는 복수의 데이터 청크의 데이터 값들의 일부 또는 전부를 스토리지 장치들(1230)로부터 다시 읽음으로써 획득될 수 있다. 예로서, 신뢰성 정보는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터만을 스토리지 장치들(1230)로부터 다시 읽음으로써 획득될 수 있다. 신뢰성 정보의 획득은 도 15를 참조하여 설명될 것이다.
신뢰성 정보가 획득되는 경우, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 데이터 값이 추정될 수 있다. 이에 따라, S355 동작에서, 복구 연산기(170)는 신뢰성 정보, 세 번째 순번에서 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[2][3]), 및 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3])에 기초하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구할 수 있다. 이러한 복구 동작은 도 16을 참조하여 설명될 것이다.
일 실시 예에서, 두 번째 순번에 관한 복구 동작은 S345 동작에 따라 수행될 수 있고, 세 번째 순번에 관한 복구 동작은 S350 및 S355 동작들에 따라 수행될 수 있다. 그러나, 다른 실시 예에서, 특정 순번(즉, 세 번째 순번)에서 기준값보다 많은 정정 불가능한 ECC 오류가 발생한 경우, 모든 순번에 관하여 S350 및 S355 동작들에 따른 복구 동작이 수행될 수 있다.
도 15는 도 14의 과정에서 신뢰성 정보를 생성하기 위해 다시 읽기 동작을 수행하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 15와 함께 참조될 것이다. 나아가, 도 15의 과정은 도 13의 예 및 도 14의 과정에 기초하여 설명될 것이다.
도 13의 예와 같이 세 번째 순번에서 기준값보다 많은 정정 불가능한 ECC 오류가 발생한 경우, RAID 컨트롤러(100)는 세 번째 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터(EU[2][3], EU[3][3])를 다시 읽기 위한 요청을 하나 이상의 스토리지 장치들(1230)로 전송할 수 있다(동작 ①). 이 요청에 응답하여, 스토리지 장치들(1230)은 다시 읽기 동작을 수행할 수 있다(동작 ②).
위에서 설명된 것과 같이, 예로서, 스토리지 장치들(1230) 각각은 SSD로 구현될 수 있다. SSD는 복수의 메모리 셀을 포함하는 하나 이상의 메모리 장치들을 포함할 수 있다. 메모리 셀에 저장된 데이터 값은 특정 읽기 전압을 이용하여 읽힐 수 있다.
RAID 컨트롤러(100)로부터 요청을 수신하기 전에, 스토리지 장치들(1230)은 초기 읽기 전압을 이용하여 ECC 단위 데이터(EU[2][3], EU[3][3])를 읽었을 수 있다. 그러나, 메모리 셀의 전압 산포 특성이 변경됨에 따라, 초기 읽기 전압은 데이터 값을 읽기에 적절하지 않게 되었을 수 있다. 이러한 이유 때문에, ECC 단위 데이터(EU[2][3], EU[3][3])가 정정 불가능한 ECC 오류를 가지게 되었을 수 있다.
따라서, 스토리지 장치들(1230)은 변경된 읽기 전압을 이용하여 ECC 단위 데이터(EU[2][3], EU[3][3])를 다시 읽을 수 있다. 예로서, 변경된 읽기 전압은 초기 읽기 전압보다 낮은 전압 값을 갖는 제 1 변경된 읽기 전압, 및/또는 초기 읽기 전압보다 높은 전압 값을 갖는 제 2 변경된 읽기 전압을 포함할 수 있다. 스토리지 장치들(1230)은 메모리 셀의 전압 산포 특성의 변경을 고려하여, 적절한 전압 값을 갖는 변경된 읽기 전압을 선택할 수 있다.
스토리지 장치들(1230)은 변경된 읽기 전압을 이용하여 다시 읽힌 ECC 단위 데이터(EU[2][3]', EU[3][3]')를 RAID 컨트롤러(100)로 전송할 수 있다(동작 ③). RAID 컨트롤러(100)는 다시 읽힌 ECC 단위 데이터(EU[2][3]', EU[3][3]')에 기초하여 신뢰성 정보(RINF)를 획득할 수 있다(동작 ④).
예로서, RAID 컨트롤러(100)는 다시 읽힌 ECC 단위 데이터(EU[2][3]', EU[3][3]'), 세 번째 순번에서 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[2][3]), 및 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3]) 사이의 관계를 고려하여, 신뢰성 정보(RINF)를 획득할 수 있다. 예로서, 신뢰성 정보(RINF)는 다시 읽힌 ECC 단위 데이터(EU[2][3]', EU[3][3]')의 신뢰성에 관한 정보를 포함할 수 있다.
예로서, 신뢰성 정보(RINF)는 세 번째 순번에서 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[2][3]), 및 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3])와의 일관성(Consistency)을 고려하여 결정될 수 있다. 예로서, 다시 읽힌 제 3 ECC 단위 데이터(EU[3][3]')보다 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')가 다른 데이터 및 패리티와 더 높은 일관성을 보이는 경우, 신뢰성 정보(RINF)는 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')가 다시 읽힌 제 3 ECC 단위 데이터(EU[3][3]')보다 더 높은 신뢰성을 가짐을 나타낼 수 있다.
하나 이상의 ECC 회로들(1235)은 ECC 단위 데이터의 ECC 오류가 정정 불가능한지 아닌지에 관하여 "경판정 정보(Hard Decision Information)"를 출력할 수 있다. 반면, 신뢰성 정보(RINF)는 ECC 단위 데이터의 신뢰성 및 ECC 오류의 가능성에 관한 "연판정 정보(Soft Decision Information)"에 대응할 수 있다. 예로서, 신뢰성 정보(RINF)를 획득하기 위해, LDPC 코드, 터보 코드(Turbo Code) 등과 같은 오류 정정 스킴이 채용될 수 있다.
도 16은 도 14 및 도 15의 과정들을 이용하여 도 13의 정정 불가능한 오류를 복구하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 16과 함께 참조될 것이다. 도 16의 과정은 도 15의 과정에서 신뢰성 정보(RINF)를 획득한 후에 수행될 수 있다.
도 15를 참조하여 설명된 것과 같이, 예로서, 신뢰성 정보(RINF)는 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')가 다시 읽힌 제 3 ECC 단위 데이터(EU[3][3]')보다 더 높은 신뢰성을 가짐을 나타낼 수 있다. 이는 최초에 읽힌 제 2 ECC 단위 데이터(EU[2][3])가 최초에 읽힌 제 3 ECC 단위 데이터(EU[3][3])보다 더 낮은 신뢰성을 가짐을 의미할 수 있다.
위 예에서, 컨트롤러(110) 또는 복구 연산기(170)는 낮은 신뢰성을 갖는 제 2 ECC 단위 데이터(EU[2][3])의 데이터 값을 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')의 데이터 값으로 설정할 수 있다. 이에 따라, 세 번째 순번에서, 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')가 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[4][3])와 함께 복구 연산기(170)로 제공될 수 있다.
복구 연산기(170)는 읽기에 성공한 ECC 단위 데이터(EU[1][3], EU[4][3]), 패리티(P)의 제 3 ECC 단위 데이터(EU[5][3]), 및 다시 읽힌 제 2 ECC 단위 데이터(EU[2][3]')에 기초하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터(EU[3][3])를 복구할 수 있다. 두 번째 순번에 관한 복구 동작은 도 12의 예와 유사하게 수행될 수 있다.
요약하면, 도 14의 실시 예에 따르면, 정정 불가능한 ECC 오류를 갖는 일부 ECC 단위 데이터가 신뢰성 정보에 기초하여 높은 신뢰성을 갖도록 가공될 수 있다. 나아가, 정정 불가능한 ECC 오류를 갖는 다른 ECC 단위 데이터는 가공된 ECC 단위 데이터를 이용하여 복구될 수 있다.
도 14의 실시 예는 둘 이상의 데이터 청크들의 정정 불가능한 ECC 오류를 복구하도록 구성될 수 있다. 나아가, 도 14의 실시 예는 추가의 패리티 없이 경판정 정보 및 연판정 정보를 이용하여, 복구 능력을 벗어나는 정정 불가능한 ECC 오류를 복구하도록 구성될 수 있다. 따라서, 도 14의 실시 예에 따라 동작하는 RAID 컨트롤러(100)는 좀 더 높은 복구 능력을 가질 수 있고, RAID 컨트롤러(100)의 오버헤드가 크게 증가하지 않을 수 있다.
도 17은 도 6의 RAID 컨트롤러에서 ECC 결과 지시자들을 관리하는 과정을 설명하기 위한 개념도이다. 이해를 돕기 위해, 도 1 및 도 6이 도 17과 함께 참조될 것이다.
위에서 설명된 것과 같이, 하나의 데이터 청크는 하나 이상의 스토리지 장치들(1230)에서 수행되는 읽기 동작의 읽기 단위에 대응할 수 있다. 따라서, 정정 불가능한 ECC 오류를 검사하고 ECC 단위 데이터를 복구하기 위한, 도 7 내지 도 16을 참조하여 설명된 과정들은 복수의 데이터 청크 각각에 대해 수행될 수 있다.
예로서, 제 1 데이터 청크(DC[1])를 위해 ECC 결과 지시자들이 생성될 수 있다. 이 ECC 결과 지시자들은 버퍼 메모리(120) 또는 ECC 결과 관리기(130)에 저장될 수 있다. 제 1 데이터 청크(DC[1])에 관한 읽기 동작 및 복구 동작이 종료된 후, 저장된 ECC 결과 지시자들은 소거될 수 있다.
이후, 제 2 데이터 청크(DC[2])를 위해 ECC 결과 지시자들이 생성될 수 있다. 그러나, 제 2 데이터 청크(DC[2])를 위한 ECC 결과 지시자들은 제 1 데이터 청크(DC[1])를 위한 ECC 결과 지시자들과 실질적으로 동일할 수 있다. 따라서, 제 1 데이터 청크(DC[1])를 위한 ECC 결과 지시자들을 소거한 후 제 2 데이터 청크(DC[2])를 위한 ECC 결과 지시자들을 생성하는 것은 비효율적일 수 있다.
따라서, 몇몇 실시 예에서, 하나의 스트라이프에 포함되는 복수의 데이터 청크 모두에 관한 읽기 동작 및 복구 동작이 완료될 때까지, 한번 생성된 ECC 결과 지시자들은 버퍼 메모리(120) 또는 ECC 결과 관리기(130)에서 유지될 수 있다. 예로서, 버퍼 메모리(120) 또는 ECC 결과 관리기(130)는 제 1 데이터 청크(DC[1])에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하기 위해 참조된 ECC 결과 지시자들을 계속 저장할 수 있다. RAID 컨트롤러(100)는 제 2 데이터 청크(DC[2])에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하기 위해, 버퍼 메모리(120) 또는 ECC 결과 관리기(130)에 미리 저장된 ECC 결과 지시자들을 참조할 수 있다. 이 실시 예에 따르면, 복구 동작의 속도 및 효율이 향상될 수 있다.
도 18은 본 발명의 실시 예에 따른 RAID 컨트롤러 및 복수의 스토리지 장치를 포함하는 RAID 스토리지 시스템을 보여주는 블록도이다.
일 실시 예에서, RAID 스토리지 시스템(2000)은 복수의 스토리지 장치(2100a, 2100b, 2100c)를 포함할 수 있다. 복수의 스토리지 장치(2100a, 2100b, 2100c)는 하나의 스트라이프에 포함되는 복수의 데이터 청크 및 패리티를 분산하여 저장할 수 있다.
복수의 스토리지 장치(2100a, 2100b, 2100c)는 각각 장치 컨트롤러들(2110a, 2110b, 2110c)을 포함할 수 있다. 장치 컨트롤러들(2110a, 2110b, 2110c)은 복수의 스토리지 장치(2100a, 2100b, 2100c)의 전반적인 동작들을 제어할 수 있다. 예로서, 장치 컨트롤러들(2110a, 2110b, 2110c)은 각각 ECC 회로들(2111a, 2111b, 2111c)을 포함할 수 있다. ECC 회로들(2111a, 2111b, 2111c)은 저장된 데이터 청크에 포함되는 복수의 ECC 단위 데이터에 대해 ECC 디코딩 연산을 수행할 수 있다.
복수의 스토리지 장치(2100a, 2100b, 2100c)는 각각 불휘발성 메모리들(2120a, 2120b, 2120c)을 포함할 수 있다. 불휘발성 메모리들(2120a, 2120b, 2120c)은 데이터 청크를 저장하도록 구성되는 메모리 영역을 포함할 수 있다. 불휘발성 메모리들(2120a, 2120b, 2120c)은 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
몇몇 실시 예에서, RAID 스토리지 시스템(2000)은 중앙 컨트롤러(2300)를 더 포함할 수 있다. 중앙 컨트롤러(2300)는 장치 컨트롤러들(2110a, 2110b, 2110c)의 동작들을 관리할 수 있다. 예로서, 중앙 컨트롤러(2300)는 장치 컨트롤러들(2110a, 2110b, 2110c)을 통한 데이터 입출력 및 데이터 청크의 분배를 관리할 수 있다.
도 18에 나타낸 것과 같이, 중앙 컨트롤러(2300)는 독립된 회로 또는 장치로 구현될 수 있다. 또는, 중앙 컨트롤러(2300)의 기능들의 일부 또는 전부는 장치 컨트롤러들(2110a, 2110b, 2110c)에 포함되거나, RAID 컨트롤러(2500)에 포함될 수 있다.
RAID 스토리지 시스템(2000)은 RAID 컨트롤러(2500)를 포함할 수 있다. RAID 컨트롤러(2500)는 도 6의 RAID 컨트롤러(100)를 포함할 수 있다. RAID 컨트롤러(2500)는 도 7 내지 도 17을 참조하여 설명된 실시 예들에 따라 동작할 수 있다.
예로서, RAID 컨트롤러(2500)는 ECC 회로들(2111a, 2111b, 2111c)로부터 제공받은 ECC 디코딩 연산의 결과들에 기초하여, ECC 결과 지시자들의 정보를 관리할 수 있다. RAID 컨트롤러(2500)는 ECC 결과 지시자들을 참조하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크를 복구할 수 있다. RAID 컨트롤러(2500)는 복구된 데이터 청크를 포함하는 스트라이프를 호스트로 제공할 수 있다. 설명의 편의를 위해, 본 발명의 실시 예들에 관한 중복되는 설명들은 생략될 것이다.
도 18에 나타낸 것과 같이, RAID 컨트롤러(2500)는 독립된 회로 또는 장치로 구현될 수 있다. 또는, RAID 컨트롤러(2500)의 기능들의 일부 또는 전부는 중앙 컨트롤러(2300)에 포함되거나, 장치 컨트롤러들(2110a, 2110b, 2110c)로 분산될 수 있다.
RAID 컨트롤러(2500)는 복수의 스토리지 장치(2100a, 2100b, 2100c)의 개수에 따라 멀티 채널을 지원할 수 있다. 몇몇 실시 예에서, RAID 컨트롤러(2500)는 복수의 스토리지 장치(2100a, 2100b, 2100c)의 개수만큼 별개의 회로들 또는 장치들로 구현될 수 있다. 몇몇 다른 실시 예에서, ECC 회로들(2110a, 2110b, 2110c)은 하나의 회로 또는 장치로 구현되어, 하나의 RAID 컨트롤러(2500)에 대응하도록 구성될 수 있다.
위에서 설명된 것과 같이, RAID 컨트롤러(2500)는 여러 메모리 영역을 포함할 수 있다. 그러나, 몇몇 실시 예에서, RAID 컨트롤러(2500)는 호스트 및/또는 복수의 스토리지 장치(2100a, 2100b, 2100c)의 메모리 영역을 공유할 수 있다. 본 발명의 실시 예는 다양하게 변경 또는 수정될 수 있다.
도 19는 본 발명의 실시 예에 따른 RAID 컨트롤러를 포함하는 스토리지 장치를 보여주는 블록도이다.
일 실시 예에서, 도 1의 RAID 스토리지 시스템(1200)은 하나의 스토리지 장치(3000)로 구현될 수 있다. 스토리지 장치(3000)는 복수의 불휘발성 메모리 장치(3100)를 포함할 수 있다. 복수의 불휘발성 메모리 장치(3100)는 하나의 스트라이프에 포함되는 복수의 데이터 청크 및 패리티를 분산하여 저장할 수 있다. 복수의 불휘발성 메모리 장치(3100)는 플래시 메모리, PRAM, MRAM, ReRAM, FRAM 등과 같은 불휘발성 메모리를 포함할 수 있다.
스토리지 장치(3000)는 장치 컨트롤러(3300)를 포함할 수 있다. 장치 컨트롤러(3300)는 스토리지 장치(3000)의 전반적인 동작들을 제어할 수 있다. 예로서, 장치 컨트롤러(3300)는 하나 이상의 ECC 회로들(3310)을 포함할 수 있다. ECC 회로들(3310)은 저장된 데이터 청크에 포함되는 복수의 ECC 단위 데이터에 대해 ECC 디코딩 연산을 수행할 수 있다.
장치 컨트롤러(3300)는 RAID 컨트롤러(3330)를 포함할 수 있다. RAID 컨트롤러(3330)는 도 6의 RAID 컨트롤러(100)를 포함할 수 있다. RAID 컨트롤러(3330)는 도 7 내지 도 17을 참조하여 설명된 실시 예들에 따라 동작할 수 있다.
예로서, RAID 컨트롤러(3330)는 ECC 회로들(3310)로부터 제공받은 ECC 디코딩 연산의 결과들에 기초하여, ECC 결과 지시자들의 정보를 관리할 수 있다. RAID 컨트롤러(3330)는 ECC 결과 지시자들을 참조하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크를 복구할 수 있다. RAID 컨트롤러(3330)는 복구된 데이터 청크를 포함하는 스트라이프를 호스트로 제공할 수 있다. 설명의 편의를 위해, 본 발명의 실시 예들에 관한 중복되는 설명들은 생략될 것이다.
도 19에 나타낸 것과 같이, RAID 컨트롤러(3330)는 장치 컨트롤러(3300)에 포함될 수 있다. 또는, RAID 컨트롤러(3330)는 장치 컨트롤러(3300)와 별개로 구성되거나, 스토리지 장치(3000)와 별개로 구성될 수 있다.
RAID 컨트롤러(3330)는 복수의 불휘발성 메모리 장치(3100)의 개수에 따라 멀티 채널을 지원할 수 있다. 몇몇 실시 예에서, RAID 컨트롤러(3330)는 복수의 불휘발성 메모리 장치(3100)의 개수만큼 별개의 회로들로 구현될 수 있다. 몇몇 다른 실시 예에서, ECC 회로들(3310)은 RAID 컨트롤러(3330)에 의해 지원되는 채널들의 개수만큼 또는 복수의 불휘발성 메모리 장치(3100)의 개수만큼 별개의 회로들로 구현될 수 있다.
위에서 설명된 것과 같이, RAID 컨트롤러(3330)는 여러 메모리 영역을 포함할 수 있다. 그러나, 몇몇 실시 예에서, RAID 컨트롤러(3330)는 호스트, 장치 컨트롤러(3300), 및/또는 스토리지 장치(3000)의 메모리 영역을 공유할 수 있다. 본 발명의 실시 예는 다양하게 변경 또는 수정될 수 있다.
본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 다양한 종류의 반도체 패키지를 이용하여 실장될 수 있다. 예로서, 본 발명의 실시 예에 따른 회로들, 칩들, 및 장치들은 PoP(Package on Package), BGAs(Ball Grid Arrays), CSPs(Chip Scale Packages), PLCC(Plastic Leaded Chip Carrier), PDIP(Plastic Dual In-line Package), Die in Waffle Pack, Die in Wafer Form, COB(Chip On Board), CERDIP(Ceramic Dual In-line Package), MQFP(Metric Quad Flat Pack), TQFP(Thin Quad Flat Pack), SOIC(Small Outline Integrated Circuit), SSOP(Shrink Small Outline Package), TSOP(Thin Small Outline Package), SIP(System In Package), MCP(Multi Chip Package), WFP(Wafer-level Fabricated Package), WSP(Wafer-Level Processed Stack Package) 등의 패키지를 이용하여 실장될 수 있다.
각각의 개념도에 나타낸 구성은 단지 개념적인 관점에서 이해되어야 한다. 본 발명의 이해를 돕기 위해, 개념도에 나타낸 구성 요소 각각의 형태, 구조, 크기 등은 과장 또는 축소되어 표현되었다. 실제로 구현되는 구성은 각각의 개념도에 나타낸 것과 다른 물리적 형상을 가질 수 있다. 각각의 개념도는 구성 요소의 물리적 형상을 한정하기 위한 것이 아니다.
각각의 블록도에 나타낸 장치 구성은 발명의 이해를 돕기 위한 것이다. 각각의 블록은 기능에 따라 더 작은 단위의 블록들로 형성될 수 있다. 또는, 복수의 블록들은 기능에 따라 더 큰 단위의 블록을 형성할 수 있다. 즉, 본 발명의 기술 사상은 블록도에 도시된 구성에 의해 한정되지 않는다.
이상에서 본 발명에 대한 실시 예를 중심으로 본 발명이 설명되었다. 다만, 본 발명이 속하는 기술 분야의 특성상, 본 발명이 이루고자 하는 목적은 본 발명의 요지를 포함하면서도 위 실시 예들과 다른 형태로 달성될 수 있다. 따라서, 위 실시 예들은 한정적인 것이 아니라 설명적인 측면에서 이해되어야 한다. 즉, 본 발명의 요지를 포함하면서 본 발명과 같은 목적을 달성할 수 있는 기술 사상은 본 발명의 기술 사상에 포함되는 것으로 해석되어야 한다.
따라서, 본 발명의 본질적인 특성을 벗어나지 않는 범위 내에서 수정 또는 변형된 기술 사상은 본 발명이 청구하는 보호 범위에 포함되는 것이다. 또한, 본 발명의 보호 범위는 위 실시 예들로 한정되는 것이 아니다.
100 : RAID 컨트롤러 110 : 컨트롤러
120 : 버퍼 메모리 130 : ECC 결과 관리기
150 : 정정 불가 오류 카운터 170 : 복구 연산기
1000 : 전자 시스템 1100 : 호스트
1200 : RAID 스토리지 시스템 1210 : RAID 컨트롤러
1211 : 패리티 생성기/검사기 1230 : 스토리지 장치들
1231, 1232, 1233, 1234 : 스토리지
1235 : ECC 회로들
2000 : RAID 스토리지 시스템
2100a, 2100b, 2100c : 스토리지 장치
2110a, 2110b, 2110c : 장치 컨트롤러
2111a, 2111b, 2111c : ECC 회로
2120a, 2120b, 2120c : 불휘발성 메모리
2300 : 중앙 컨트롤러 2500 : RAID 컨트롤러
3000 : 스토리지 장치 3100 : 불휘발성 메모리 장치들
3300 : 장치 컨트롤러 3310 : ECC 회로
3330 : RAID 컨트롤러

Claims (10)

  1. 하나 이상의 스토리지 장치들을 포함하는 RAID 스토리지 시스템의 데이터 입출력을 관리하도록 구성되는 RAID 컨트롤러 장치에 있어서,
    상기 스토리지 장치들에 분산하여 저장되고 각각이 복수의 ECC 단위 데이터를 포함하는 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 데이터 청크가 읽힌 경우, 상기 복수의 데이터 청크에 포함되는 상기 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 각각 나타내는 ECC 결과 지시자들의 정보를 관리하도록 구성되는 ECC 결과 관리기;
    상기 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터에 대응하는 ECC 결과 지시자들 중에서 정정 불가능한 ECC 오류를 나타내는 ECC 결과 지시자들의 개수를 산출하도록 구성되는 정정 불가 오류 카운터; 및
    상기 산출된 개수가 기준값을 초과하지 않는 경우, 상기 복수의 데이터 청크 각각에서 동일한 순번을 갖는 상기 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 상기 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하도록 구성되는 복구 연산기를 포함하는 RAID 컨트롤러 장치.
  2. 제 1 항에 있어서,
    상기 복수의 데이터 청크 중에서 하나의 데이터 청크가 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 경우, 상기 복구 연산기가 상기 하나의 데이터 청크에 포함되고 정정 불가능한 ECC 오류를 갖는 상기 하나 이상의 ECC 단위 데이터를 복구하도록 구성되고,
    상기 복수의 데이터 청크 중에서 둘 이상의 데이터 청크들이 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 경우, 읽기 실패 응답이 출력되는 RAID 컨트롤러 장치.
  3. 제 1 항에 있어서,
    상기 산출된 개수가 상기 기준값을 초과하지 않는 경우, 상기 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 하나 이상의 ECC 단위 데이터를 포함하는 데이터 청크들의 개수와 무관하게, 상기 복구 연산기는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하도록 구성되는 RAID 컨트롤러 장치.
  4. 제 3 항에 있어서,
    상기 산출된 개수가 상기 기준값을 초과하는 경우, 읽기 실패 응답이 출력되는 RAID 컨트롤러 장치.
  5. 제 3 항에 있어서,
    상기 산출된 개수가 상기 기준값을 초과하는 경우, 상기 복구 연산기는 신뢰성 정보, 읽기에 성공한 상기 ECC 단위 데이터, 및 상기 대응하는 순번을 갖는 상기 패리티에 기초하여, 상기 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 상기 ECC 단위 데이터를 복구하도록 더 구성되고,
    상기 신뢰성 정보는 상기 복수의 데이터 청크의 데이터 값들의 일부 또는 전부를 상기 스토리지 장치들로부터 다시 읽음으로써 획득되는 RAID 컨트롤러 장치.
  6. 제 5 항에 있어서,
    상기 신뢰성 정보는 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터만을 상기 스토리지 장치들로부터 다시 읽음으로써 획득되는 RAID 컨트롤러 장치.
  7. 제 5 항에 있어서,
    상기 복수의 데이터 청크의 상기 데이터 값들의 일부 또는 전부는 상기 신뢰성 정보가 획득되도록 변경된 읽기 전압을 이용하여 다시 읽히는 RAID 컨트롤러 장치.
  8. 제 5 항에 있어서,
    상기 산출된 개수가 상기 기준값을 초과하는 경우, 상기 신뢰성 정보에 기초하여, 상기 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 상기 ECC 단위 데이터 중에서 낮은 신뢰성을 갖는 ECC 단위 데이터의 값이 상기 복수의 데이터 청크의 상기 데이터 값들의 일부 또는 전부를 상기 스토리지 장치들로부터 다시 읽음으로써 획득되는 값들로 설정되고,
    상기 복구 연산기는 읽기에 성공한 상기 ECC 단위 데이터, 상기 대응하는 순번을 갖는 상기 패리티, 및 상기 설정된 데이터 값들을 갖는 상기 ECC 단위 데이터에 기초하여, 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하도록 구성되는 RAID 컨트롤러 장치.
  9. 제 1 항에 있어서,
    상기 복수의 데이터 청크 각각의 데이터 크기는 상기 복수의 ECC 단위 데이터 각각의 데이터 크기보다 큰 RAID 컨트롤러 장치.
  10. 각각이 복수의 ECC 단위 데이터를 포함하는 복수의 데이터 청크를, 분산하여 저장하도록 구성되는 복수의 불휘발성 메모리 장치; 및
    상기 복수의 불휘발성 메모리 장치의 데이터 입출력을 관리하도록 구성되는 장치 컨트롤러를 포함하되,
    상기 장치 컨트롤러는:
    상기 복수의 불휘발성 메모리 장치로부터 읽힌 상기 복수의 데이터 청크 각각에 대해 ECC 단위로 ECC 디코딩 연산을 수행하고, ECC 결과를 출력하도록 구성되는 ECC 회로; 및
    상기 ECC 결과에 기초하여 상기 복수의 데이터 청크에 포함되는 상기 복수의 ECC 단위 데이터가 정정 불가능한 ECC 오류를 갖는지 여부를 각각 나타내는 ECC 결과 지시자들의 정보를 관리하고, 상기 ECC 결과 지시자들을 참조하여 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하도록 구성되는 RAID 컨트롤러를 포함하되,
    상기 복수의 데이터 청크 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 포함하는 데이터 청크가 읽히고 상기 복수의 데이터 청크 각각에서 동일한 순번을 갖는 ECC 단위 데이터 중에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터의 개수가 기준값을 초과하지 않는 경우, 상기 RAID 컨트롤러는 상기 복수의 데이터 청크 각각에서 동일한 순번을 갖는 상기 ECC 단위 데이터 중에서 읽기에 성공한 ECC 단위 데이터 및 대응하는 순번을 갖는 패리티에 기초하여, 상기 대응하는 순번에서 정정 불가능한 ECC 오류를 갖는 ECC 단위 데이터를 복구하도록 구성되는 스토리지 장치.
KR1020150141760A 2015-10-08 2015-10-08 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치 KR102385138B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150141760A KR102385138B1 (ko) 2015-10-08 2015-10-08 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
US15/288,227 US10108494B2 (en) 2015-10-08 2016-10-07 RAID controller device and storage device configured to recover data having uncorrectable ECC error

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150141760A KR102385138B1 (ko) 2015-10-08 2015-10-08 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치

Publications (2)

Publication Number Publication Date
KR20170042433A KR20170042433A (ko) 2017-04-19
KR102385138B1 true KR102385138B1 (ko) 2022-04-12

Family

ID=58706112

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150141760A KR102385138B1 (ko) 2015-10-08 2015-10-08 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치

Country Status (2)

Country Link
US (1) US10108494B2 (ko)
KR (1) KR102385138B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346246B2 (en) * 2015-11-30 2019-07-09 International Business Machines Corporation Recovering data copies in a dispersed storage network
US10614906B2 (en) * 2016-09-21 2020-04-07 Samsung Electronics Co., Ltd. Semiconductor memory devices, memory systems and methods of operating semiconductor memory devices
KR102479483B1 (ko) 2017-10-19 2022-12-21 에스케이하이닉스 주식회사 메모리 시스템 및 이의 동작 방법
KR20190073132A (ko) 2017-12-18 2019-06-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11157356B2 (en) * 2018-03-05 2021-10-26 Samsung Electronics Co., Ltd. System and method for supporting data protection across FPGA SSDs
KR20200028255A (ko) * 2018-09-06 2020-03-16 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
KR20220068831A (ko) 2020-11-19 2022-05-26 에스케이하이닉스 주식회사 컨트롤러 및 그 동작 방법
KR20230064279A (ko) 2021-11-03 2023-05-10 에스케이하이닉스 주식회사 메모리 시스템에서 데이터를 복구하는 장치 및 방법
US20230214119A1 (en) * 2021-12-30 2023-07-06 Micron Technology, Inc. Data stripe protection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287956A1 (en) 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage
US20140189421A1 (en) * 2010-12-01 2014-07-03 Lsi Corporation Non-Volatile Memory Program Failure Recovery Via Redundant Arrays

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7302603B2 (en) 2003-11-20 2007-11-27 International Business Machines Corporation Host-initiated data reconstruction for improved RAID read operations
US8046629B1 (en) 2006-07-24 2011-10-25 Marvell World Trade Ltd. File server for redundant array of independent disks (RAID) system
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
WO2009072103A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory apparatus and methods using a plurality of decoding stages including optional use of concatenated bch codes and/or designation of 'first below' cells
US8307258B2 (en) 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
KR101216735B1 (ko) 2010-09-03 2012-12-28 서울대학교산학협력단 프로덕트 부호의 복호 방법 및 장치
US9086983B2 (en) * 2011-05-31 2015-07-21 Micron Technology, Inc. Apparatus and methods for providing data integrity
US8832524B2 (en) 2011-09-22 2014-09-09 Violin Memory, Inc. System and method for correcting errors in data using a compound code
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US8856431B2 (en) * 2012-08-02 2014-10-07 Lsi Corporation Mixed granularity higher-level redundancy for non-volatile memory
US9021339B2 (en) * 2012-11-29 2015-04-28 Western Digital Technologies, Inc. Data reliability schemes for data storage systems

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090287956A1 (en) 2008-05-16 2009-11-19 David Flynn Apparatus, system, and method for detecting and replacing failed data storage
US20140189421A1 (en) * 2010-12-01 2014-07-03 Lsi Corporation Non-Volatile Memory Program Failure Recovery Via Redundant Arrays

Also Published As

Publication number Publication date
US20170102996A1 (en) 2017-04-13
US10108494B2 (en) 2018-10-23
KR20170042433A (ko) 2017-04-19

Similar Documents

Publication Publication Date Title
KR102385138B1 (ko) 정정 불가능한 ecc 오류를 갖는 데이터를 복구하도록 구성되는 raid 컨트롤러 장치 및 스토리지 장치
US11405058B2 (en) Stopping criteria for layered iterative error correction
US9021339B2 (en) Data reliability schemes for data storage systems
US10346268B2 (en) Efficient data recovery for write path errors
CN106856103B (zh) 用于与非闪存的涡轮乘积码
KR101650130B1 (ko) 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 카피-백 방법
US10061641B2 (en) Memory controller, storage device including the same and data encoding and decoding methods thereof
US20170177259A1 (en) Techniques to Use Open Bit Line Information for a Memory System
US9471421B2 (en) Data accessing method, memory storage device and memory controlling circuit unit
US10326479B2 (en) Apparatuses and methods for layer-by-layer error correction
US20140245097A1 (en) Codewords that span pages of memory
CN109669800B (zh) 用于写入路径错误的高效数据恢复
US10698765B2 (en) Techniques to recover data in a network storage system
US9507658B2 (en) Data reading method, memory storage device and memory controlling circuit unit
WO2013089715A1 (en) Storage of codeword portions
US9286156B2 (en) Data storage device and method for processing error correction code thereof
CN105575439B (zh) 一种存储单元失效纠错的方法及存储器
US10922025B2 (en) Nonvolatile memory bad row management
KR20170067656A (ko) Nand 플래시용 터보 프로덕트 코드

Legal Events

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