KR102177421B1 - 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 - Google Patents

데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 Download PDF

Info

Publication number
KR102177421B1
KR102177421B1 KR1020140139123A KR20140139123A KR102177421B1 KR 102177421 B1 KR102177421 B1 KR 102177421B1 KR 1020140139123 A KR1020140139123 A KR 1020140139123A KR 20140139123 A KR20140139123 A KR 20140139123A KR 102177421 B1 KR102177421 B1 KR 102177421B1
Authority
KR
South Korea
Prior art keywords
raid
memory
data
controller
signal
Prior art date
Application number
KR1020140139123A
Other languages
English (en)
Other versions
KR20160044289A (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 KR1020140139123A priority Critical patent/KR102177421B1/ko
Priority to US14/800,614 priority patent/US9812224B2/en
Publication of KR20160044289A publication Critical patent/KR20160044289A/ko
Application granted granted Critical
Publication of KR102177421B1 publication Critical patent/KR102177421B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

데이터 저장 시스템, 데이터 저장 장치 및 RAID 컨트롤러가 제공된다. 데이터 저장 시스템은, 제1 내지 제m 페이지를 포함하는 비휘발성 메모리와, 상기 제1 내지 제m 페이지에 데이터를 프로그램하는 메모리 컨트롤러를 포함하는 메모리 장치, 및 상기 메모리 장치의 RAID 동작 여부를 결정하는 RAID 동작 신호를 포함하는 RAID 설정 신호를 생성하고, 상기 메모리 컨트롤러에 상기 데이터와 상기 RAID 설정 신호를 전달하는 RAID 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 상기 RAID 동작 신호가 활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 페이지에 프로그램하고, 상기 RAID 패러티를 상기 제m 페이지에 프로그램하고, 상기 RAID 동작 신호가 비활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 페이지에 프로그램한다.

Description

데이터 저장 시스템, 데이터 저장 장치 및 RAID 컨트롤러{Data storage system, data storage device and RAID controller}
본 발명은 데이터 저장 시스템, 데이터 저장 장치 및 RAID 컨트롤러에 관한 것이다.
RAID(Redundant Array of Inexpensive Disk)는 중요한 데이터를 가지고 있는 서버 등의 저장 매체에서 주로 사용되는 방법으로, 여러 저장 매체 중 하나의 저장 매체에 패리티(parity)를 저장하여 다른 저장 매체에 저장된 데이터에서 오류가 발생하더라도 이를 정상적인 데이터로 복원할 수 있는 방법이다. 이러한 RAID를 이용하게되면 입출력 작업의 균형을 이룰 수 있고 서버의 전체적인 성능이 개선될 수 있다.
최근 서버의 저장 매체로 HDD(Hard Disk Driver) 대신 SSD(Solid State Driver)가 점차 사용되고 있다. 이러한 SSD에 사용되는 반도체 메모리로는 예를 들어, 낸드(NAND) 플래시일 수 있는데, 낸드 플래시의 읽기 및 쓰기 단위는 일반적으로 페이지(page)이므로, 페이지 단위로 스트라이프(Strip)를 구성하여 RAID 기술을 적용한다.
그런데 SSD의 경우, 표면 실장 기술(Surface Mounter Technology; SMT)로 단일한 다이(Die) 내에 복수의 반도체 칩이 장착되는 바, 복수의 반도체 칩 중에서 어느 하나가 동작하지 않는 경우, Hot Swap이 불가능하다는 불편함이 존재한다.
본 발명이 해결하고자 하는 기술적 과제는 RAID 설정 신호를 메모리 장치에 전달하여, 메모리 장치의 RAID 동작 여부 또는 RAID 동작 방법을 제어할 수 있는 데이터 저장 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 RAID 설정 신호를 수신하여, 메모리 장치의 RAID 동작 여부 또는 RAID 동작 방법을 제어할 수 있는 데이터 저장 장치를 제공하는 것이다.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 RAID 설정 신호를 메모리 장치에 전달하여, 메모리 장치의 RAID 동작 여부 또는 RAID 동작 방법을 제어할 수 있는 RAID 컨트롤러를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 저장 시스템은, 제1 내지 제m(단, m은 자연수) 페이지를 포함하는 비휘발성 메모리와, 상기 제1 내지 제m 페이지에 데이터를 프로그램하는 메모리 컨트롤러를 포함하는 메모리 장치, 및 상기 메모리 장치의 RAID 동작 여부를 결정하는 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성하고, 상기 메모리 컨트롤러에 상기 데이터와 상기 RAID 설정 신호를 전달하는 RAID 컨트롤러를 포함하되, 상기 메모리 컨트롤러는, 상기 RAID 동작 신호가 활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 페이지에 프로그램하고, 상기 RAID 패러티를 상기 제m 페이지에 프로그램하고, 상기 RAID 동작 신호가 비활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 페이지에 프로그램한다.
본 발명의 몇몇 실시예에서, 상기 데이터는 ECC(Error Correcting Code)를 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 컨트롤러는, ECC 검사를 우선하여 수행하고, 상기 ECC 검사 결과에 에러가 있는 경우, 상기 비휘발성 메모리의 RAID 복구 동작을 추가적으로 수행할 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 컨트롤러는, 상기 비휘발성 메모리의 RAID 복구 동작을 우선하여 수행하고, 상기 RAID 복구 동작 중에 에러가 발생하는 경우, ECC 검사를 추가적으로 수행할 수 있다.
본 발명의 몇몇 실시예에서, 상기 RAID 설정 신호는, RAID 복구 시점, RAID 동작 방법, 상기 비휘발성 메모리 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 컨트롤러는 상기 비휘발성 메모리의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 생성하여 상기 RAID 컨트롤러에 전달할 수 있다.
본 발명의 몇몇 실시예에서, 상기 RAID 컨트롤러는 상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단할 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 컨트롤러는 상기 비휘발성 메모리에 상기 RAID 패러티를 복수회 프로그램할 수 있다.
본 발명의 몇몇 실시예에서, 상기 비휘발성 메모리는 제1 내지 제m 메모리 블록을 포함하고, 상기 제1 내지 제m 페이지 각각은 서로 다른 상기 제1 내지 제m 메모리 블록 내에 배치될 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 내지 제m 메모리 블록은 순차적으로 또는 랜덤하게 배열될 수 있다.
본 발명의 몇몇 실시예에서, 상기 비휘발성 메모리는 복수의 메모리칩을 포함하고, 상기 제1 내지 제m 페이지 각각은 서로 다른 메모리칩 내에 배치될 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 장치는 SSD(Solid State Driver)를 포함하고, 상기 RAID 컨트롤러는 상기 메모리 장치 외부에 될 수 있다.
본 발명의 몇몇 실시예에서, 상기 데이터 저장 시스템은 복수의 메모리 장치를 포함하고, 상기 복수의 메모리 장치는 상기 RAID 컨트롤러에 탈착 가능하도록 구성될 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 저장 장치는, 제1 내지 제m(단, m은 자연수) 메모리칩, 상기 제1 내지 제m 메모리칩에 데이터를 프로그램하는 메모리 컨트롤러, 및 호스트로부터 RAID 동작 여부를 결정하는 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)와 상기 데이터를 수신하여, 상기 메모리 컨트롤러에 전달하는 제어부를 포함하되, 상기 제어부는 상기 RAID 설정 신호를 이용하여, 복수 개의 상기 메모리 컨트롤러의 RAID 동작을 제어하고, 각각의 상기 메모리 컨트롤러는, 상기 RAID 동작 신호가 활성화되는 경우, 상기 제어부로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 메모리칩에 프로그램하고, 상기 RAID 패러티를 상기 제m 메모리칩에 프로그램하고, 상기 RAID 동작 신호가 비활성화되는 경우, 상기 제어부로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 메모리에 프로그램한다.
본 발명의 몇몇 실시예에서, 상기 RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 메모리 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 RAID 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 메모리 컨트롤러는 상기 메모리칩의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 생성하여 상기 호스트에 전달할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 내지 제m 메모리칩 중 어느 하나가 에러가 발생한 경우, 상기 메모리 컨트롤러는 상기 제어부로부터 수신한 제1 내지 제m-2 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-2 데이터와 상기 RAID 패러티를 상기 에러가 발생한 상기 메모리를 제외한 나머지 메모리칩에 프로그램할 수 있다.
본 발명의 몇몇 실시예에서, 상기 제1 내지 제m 메모리칩 중 어느 하나가 에러가 발생한 경우, 상기 메모리 컨트롤러는 RAID 리빌드 동작을 수행할 수 있다.
본 발명의 몇몇 실시예에서, 상기 데이터 저장 장치는 SSD(Solid State Driver)를 포함할 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 RAID 컨트롤러는, RAID 동작이 가능한 메모리 장치로부터 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 수신하는 신호 수신부, 상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단하는 연산부, 상기 연산부의 판단 결과값을 이용하여 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성하는 신호 생성부, 및 상기 RAID 설정 신호를 상기 메모리 장치에 송신하는 인터페이스부를 포함한다.
본 발명의 몇몇 실시예에서, 상기 RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 비휘발성 메모리 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 더 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 RAID 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다.
본 발명의 몇몇 실시예에서, 상기 연산부는 상기 메모리 장치에 불량 칩이 존재하는 경우, 상기 헬스 스테이터스 리포트에 포함된 상기 불량 칩의 위치 및 상태를 고려하여 상기 메모리 장치의 RAID 동작 방법을 결정할 수 있다.
본 발명의 몇몇 실시예에서, 상기 인터페이스부는 상기 메모리 장치에 데이터를 전송하고, 상기 데이터는 ECC(Error Correcting Code)를 포함하며, 상기 ECC를 이용하여 상기 메모리 장치로부터 리드한 데이터의 오류를 검출하고 정정할 수 있는 오류 정정부를 더 포함할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템의 블록도이다.
도 2는 본 발명의 다른 실시예에 따른 데이터 저장 시스템의 블록도이다.
도 3 및 도 4는 본 발명의 다른 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시예에 따른 RAID 컨트롤러를 설명하기 위한 데이터 저장 시스템의 블록도이다.
도 6은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템의 블록도이다.
도 7은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 도면이다.
도 8은 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 순서도이다.
도 9는 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 10은 본 발명의 실시예들에 따른 반도체 장치를 포함하는 SoC 시스템의 블록도이다.
도 11은 본 발명의 실시예들에 따른 반도체 장치를 포함하는 전자 시스템의 블록도이다.
도 12 내지 도 14는 본 발명의 몇몇 실시예들에 따른 반도체 장치를 적용할 수 있는 예시적인 반도체 시스템들이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
소자(elements) 또는 층이 다른 소자 또는 층의 "위(on)" 또는 "상(on)"으로 지칭되는 것은 다른 소자 또는 층의 바로 위뿐만 아니라 중간에 다른 층 또는 다른 소자를 개재한 경우를 모두 포함한다. 반면, 소자가 "직접 위(directly on)" 또는 "바로 위"로 지칭되는 것은 중간에 다른 소자 또는 층을 개재하지 않은 것을 나타낸다.
공간적으로 상대적인 용어인 "아래(below)", "아래(beneath)", "하부(lower)", "위(above)", "상부(upper)" 등은 도면에 도시되어 있는 바와 같이 하나의 소자 또는 구성 요소들과 다른 소자 또는 구성 요소들과의 상관관계를 용이하게 기술하기 위해 사용될 수 있다. 공간적으로 상대적인 용어는 도면에 도시되어 있는 방향에 더하여 사용시 또는 동작시 소자의 서로 다른 방향을 포함하는 용어로 이해되어야 한다. 예를 들면, 도면에 도시되어 있는 소자를 뒤집을 경우, 다른 소자의 "아래(below)" 또는 "아래(beneath)"로 기술된 소자는 다른 소자의 "위(above)"에 놓여질 수 있다. 따라서, 예시적인 용어인 "아래"는 아래와 위의 방향을 모두 포함할 수 있다. 소자는 다른 방향으로도 배향될 수 있고, 이에 따라 공간적으로 상대적인 용어들은 배향에 따라 해석될 수 있다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서, 도 1 내지 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템, 데이터 저장 장치 및 RAID 컨트롤러에 대해 설명하도록 한다.
도 1은 본 발명의 일 실시예에 따른 데이터 저장 시스템의 블록도이다.
도 1을 참조하면, 데이터 저장 시스템(1)은 비휘발성 메모리 장치(100) 및 RAID 컨트롤러(200)를 포함한다.
비휘발성 메모리 장치(100)는 예를 들어, 복수의 비휘발성 메모리 칩들을 포함할 수 있다. 그리고 이러한 복수의 비휘발성 메모리 칩들은 예를 들어, 제1 내지 제k 채널들(CH1~CHk)을 통해 RAID 컨트롤러(200)와 통신할 수 있다.
RAID 컨트롤러(200)는 호스트(HOST) 및 비휘발성 메모리 장치(100)에 커플링될 수 있다. 호스트(HOST)로부터의 요청에 응답하여, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100)를 액세스하도록 구성될 수 있다. 예를 들어, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100)의 리드, 라이트, 이레이즈, 및 배경(background) 동작을 제어하도록 구성될 수 있다.
도면에 명확하게 도시하지는 않았으나, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이에서 인터페이스를 제공하도록 구성될 수 있다. 또한, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
예시적으로, RAID 컨트롤러(200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함할 수 있다. 여기서, 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(100) 및 호스트(HOST) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있고, 프로세싱 유닛은 RAID 컨트롤러(200)의 제반 동작을 제어할 수 있다.
본 실시예에서, 비휘발성 메모리 시스템은 오류 정정 블록(미도시)을 포함할 수 있다. 이러한 오류 정정 블록(미도시)은 오류 정정 코드(ECC)를 이용하여 비휘발성 메모리 장치(100)로부터 리드된 데이터의 오류를 검출하고, 정정하도록 구성될 수 있다. 이러한 오류 정정 블록(미도시)은 예를 들어, RAID 컨트롤러(200)의 한 구성 요소로서 제공될 수 있다.
한편 본 실시예에 따른 RAID 컨트롤러(200)는, 비휘발성 메모리 장치(100)에 대해 RAID 리커버리(recovery)를 수행할 수 있다. 구체적으로, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100)에 대해 서브 스트라이프(sub strip) 단위로 RAID 리커버리를 수행할 수 있다. 더욱 구체적으로, RAID 컨트롤러(200)는 비휘발성 메모리 장치(100)에 대해 서브 스트라이프 단위로 외부 RAID 리커버리(external RAID recovery)를 수행할 수 있다.
종합하면, 본 실시예에 따른 메모리 시스템에는 외부 RAID 리커버리 기술과 ECC(Error Correction Code) 기술이 채택될 수 있다. 하지만, 본 발명이 이에 제한되는 것은 아니며, 본 발명의 다른 몇몇 실시예에 따른 메모리 시스템에는 내부 RAID 리커버리(internal RAID recovery) 기술과 ECC(Error Correction Code) 기술이 채택될 수도 있다. 여기서, 외부 RAID 기술은 다수의 독립적인 반도체 칩 중 어느 하나에 RAID 페리티(RAID parity) 데이터를 저정하여 데이터를 리커버리하는 기술을 의미하고, 내부 RAID 기술은 하나의 반도체 칩 내에 RAID 페리티(RAID parity) 데이터를 저정하여 데이터를 리커버리하는 기술을 의미할 수 있다.
또한, 이하에서 설명될 RAID는 다양한 레벨일 수 있다. 예를 들어, RAID 레벨 0(Striped set without parity or Striping), RAID 레벨 1(Mirrored set without parity or Mirroring), RAID 레벨 2(Hamming code parity), RAID 레벨 3(Striped set with dedicated parity, bit interleaved parity, or byte level parity), RAID 레벨 4(Block level parity), RAID 레벨 5(Striped set with distributed parity or interleave parity), RAID 레벨 6(Striped set with dual distributed parity), RAID 레벨 7, RAID 레벨 10, 및 RAID 레벨 53 중에서 어느 하나 또는 상기 RAID 레벨들 중에서 적어도 2개를 혼합한(merged) RAID 레벨(예컨대, RAID 0+1, RAID 1+0, RAID 5+0, RAID 5+1, 또는 RAID 0+1+5)일 수도 있다.
본 발명의 실시예들에 따른 RAID 컨트롤러(200)의 상세 동작에 대해서는 후술하도록 한다.
호스트 인터페이스는 호스트(HOST) 및 RAID 컨트롤러(200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, RAID 컨트롤러(200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(HOST)와 통신하도록 구성될 수 있다.
본 실시예에서, RAID 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, RAID 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, RAID 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
한편, RAID 컨트롤러(200) 및 비휘발성 메모리 장치(100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. RAID 컨트롤러(200)와 비휘발성 메모리 장치(100)가 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD)로 이용되는 경우, 비휘발성 메모리 시스템에 연결된 호스트(HOST)의 동작 속도는 획기적으로 개선될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, RAID 컨트롤러(200)와 비휘발성 메모리 장치(100)는 탈착 가능하도록 물리적으로 분리되어 구성될 수 있다.
다른 예로서, 비휘발성 메모리 시스템은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
예시적으로, 비휘발성 메모리 장치(100) 또는 비휘발성 메모리 시스템은 다양한 형태들의 패키지화 될 수 있다. 예를 들어, 비휘발성 메모리 장치(100) 또는 비휘발성 메모리 시스템은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화될 수 있다.
도 2는 본 발명의 다른 실시예에 따른 데이터 저장 시스템의 블록도이다. 도 3 및 도 4는 본 발명의 다른 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 도면이다.
도 2를 참조하면, 본 발명의 다른 실시예에 따른 데이터 저장 시스템(2)은 메모리 장치(100)와 RAID 컨트롤러(200)를 포함한다. 상기 데이터 저장 시스템(2)은 도 1을 참조하여 설명한 데이터 저장 시스템(1)과 실질적으로 동일하게 구성할 수 있다.
메모리 장치(110, 120, 130)는 복수의 비휘발성 메모리(111~114, 121~124, 131~134)와 복수의 메모리 컨트롤러(119, 129, 139)를 포함할 수 있다. 이하에서는 비휘발성 메모리(111~114)와 메모리 컨트롤러(119)를 예를 들어 설명하도록 한다.
비휘발성 메모리(111~114)는 제1 내지 제m 페이지를 포함할 수 있다. (단, m은 자연수이다.) 비휘발성 메모리(111~114)의 읽기 및 쓰기 단위는 일반적으로 페이지(page)를 이용할 수 있다. 비휘발성 메모리(111~114)는 복수의 비휘발성 메모리 칩들을 포함할 수 있다. 예를 들어, 하나의 메모리 장치(100)는 네개의 비휘발성 메모리(111~114)를 포함할 수 있다.
비휘발성 메모리(111~114)는 자기 테이프, 자기 디스크, 플로피 디스크, 하드 디스크, 광 디스크, EEPROM(Electrical Erasable Programmable ROM), 플래시 메모리(flash memory) 등을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
또한, 비휘발성 메모리(111~114)는 제1 내지 제m 메모리 블록을 포함할 수 있다. 상기 제1 내지 제m 페이지 각각은 서로 다른 상기 제1 내지 제m 메모리 블록 내에 배치될 수 있다. 상기 제1 내지 제m 메모리 블록은 하나 또는 복수의 비휘발성 메모리(111~114) 내에 순차적으로 또는 랜덤하게 배열될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 비휘발성 메모리(111~114)는 복수의 메모리칩을 포함하고, 상기 제1 내지 제m 페이지 각각은 서로 다른 메모리칩 내에 배치될 수 있다.
메모리 컨트롤러(119)는 복수의 비휘발성 메모리(111~114)를 제어할 수 있다. 메모리 컨트롤러(119)는 비휘발성 메모리(111~114)에 포함된 상기 제1 내지 제m 페이지에 데이터를 프로그램할 수 있다. 즉, 메모리 컨트롤러(119)는 프로그램을 통해서 비휘발성 메모리(111~114)에 데이터를 읽고, 쓰고, 지우는 동작을 수행할 수 있다.
메모리 컨트롤러(119)는 RAID 컨트롤러(200)로부터 데이터를 수신할 수 있다. 상기 데이터는 비휘발성 메모리(111~114)에 쓰기 명령을 수행하기 위해 전달될 수 있다. 상기 데이터는 ECC(Error Correcting Code; 이하 오류 정정 코드)를 포함할 수 있다. 상기 오류 정정 코드는 연속적인 데이터에 결손, 정정, 오류가 있는지 확인하기 위한 코드를 의미한다. 오류 정정 코드는 일정한 데이터 단위마다 삽입될 수 있다. 이를 통해, 데이터는 패러티 비트와 비 패러티 비트를 포함할 수 있다.
메모리 컨트롤러(119)는 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성할 수 있다. RAID 패러티는 복수의 디스크를 병렬로 연결하여 사용하는 RAID 과정에서 데이터에 오류가 발생하였는지 여부를 판단하는데 이용될 수 있다. RAID 패러티는 RAID 방식에 따라 한 개 또는 복수 개가 이용될 수 있다. 또한 하나의 RAID 패러티를 여러 번에 걸쳐서 복사할 수 있다. 이에 대한 자세한 설명은 공지된 기술을 이용할 수 있으므로 생략하도록 한다.
예를 들어, 메모리 컨트롤러(119)가 네개의 비휘발성 메모리(111~114)를 제어하는 경우, 메모리 컨트롤러(119)는 제1 내지 제3 데이터를 이용하여 RAID 패러티를 생성할 수 있다. 제1 내지 제3 데이터는 제1 내지 제3 페이지에 프로그램될 수 있고, 생성된 RAID 패러티는 복수의 비휘발성 메모리(111~114) 중 어느 하나에 포함된 제4 페이지에 프로그램 될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 메모리 컨트롤러(119)는 더 많은 수의 비휘발성 메모리를 이용하여 RAID를 구동시킬 수 있다.
RAID 컨트롤러(200)는 메모리 컨트롤러(119)를 제어할 수 있다. 본 발명의 데이터 저장 시스템(2)은 복수의 메모리 장치(110, 120, 130)를 포함할 수 있다. 이에 따라, 상기 RAID 컨트롤러(200)는 복수의 메모리 컨트롤러(119, 129, 139)를 제어할 수 있다. RAID 컨트롤러(200)는 상기 메모리 장치(110, 120, 130)의 RAID 동작 여부를 결정하는 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성하고, 상기 메모리 컨트롤러(119)에 상기 데이터와 상기 RAID 설정 신호를 전달할 수 있다.
RAID 설정 신호는 RAID 동작의 ON/OFF 여부를 지시하는 RAID 동작 신호를 포함한다. 메모리 컨트롤러(119)는, RAID 설정 신호에 포함된 상기 RAID 동작 신호가 활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 페이지에 프로그램하고, 상기 RAID 패러티를 상기 제m 페이지에 프로그램할 수 있다. 즉, 메모리 장치(110, 120, 130)의 RAID 동작을 활성화시킬 수 있다. 이때, 메모리 장치(110, 120, 130)의 RAID는 다양한 RAID 레벨로 동작할 수 있다. 예를 들어, 상기 메모리 장치(100)의 RAID 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
다만, RAID 설정 신호에 포함된 상기 RAID 동작 신호가 비활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 페이지에 프로그램할 수 있다. 즉, RAID 패러티를 이용하지 않고, RAID 컨트롤러(200)가 수신한 데이터만을 메모리 장치(110)의 비휘발성 메모리(111~114)에 저장할 수 있다.
이는 메모리 장치(100)(예를 들어, SSD) 외부에서 RAID를 지원하는 경우에도 사용될 수 있다. 메모리 장치(100)의 외부에서 RAID를 지원하는 경우, 메모리 장치(100) 내부의 RAID를 OFF 하고, 스패어(spare) 영역을 오류 정정 코드로 강화하면, 메모리 장치(100)의 스패어 영역에 대한 사용 효율을 개선할 수 있다. 이를 통해, RAID 방식이 불필요한 영역에 RAID를 사용함으로써 낭비되는 스패어 영역을 줄이고, 메모리 장치(100)의 성능 및 신뢰성을 개선시킬 수 있다.
도 3을 참조하면, RAID 컨트롤러(200)는 메모리 장치(100)에 포함된 복수의 메모리 컨트롤러(119)가 RAID 동작을 하지 않도록 RAID 동작 신호를 비활성화한 RAID 설정 신호을 전달할 수 있다. 이 경우, 메모리 장치(100)에 포함된 모든 메모리 컨트롤러(119, 129, 139)의 RAID 기능은 OFF되고, 따라서, RAID 패러티가 저장되는 스패어 공간에는 데이터를 저장하는데 이용될 수 있다. 이를 통해, RAID 방식이 불필요한 영역에 RAID를 사용함으로써 낭비되는 스패어 영역을 줄일 수 있다. 또한, 각각의 메모리 컨트롤러(119, 129, 139)에 적합한 RAID 동작 방법을 다르게 설정할 수 있다. 상기 RAID 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 4를 참조하면, RAID 컨트롤러(200)는 메모리 장치(100)에 포함된 복수의 메모리 컨트롤러(119, 129, 139) 중 일부에만 RAID 동작을 하지 않도록 RAID 동작 신호를 비활성화한 RAID 설정 신호을 전달할 수 있다. 이 경우, 메모리 장치(100)에 포함된 비휘발성 메모리(111~114, 121~124, 131~134) 중 RAID 동작이 필요 없다고 판단되는 비휘발성 메모리를 제어하는 메모리 컨트롤러(119, 129, 139)의 RAID 기능만을 OFF할 수 있다. RAID 컨트롤러(200)는 반도체 장치의 메모리 컨트롤러(119, 129, 139)로부터 수신한 헬스 스테이터스 리포트(health status report)를 분석하여 RAID 동작이 필요 없다는 판단을 할 수 있다. 이하에서는 비휘발성 메모리(111~114)와 메모리 컨트롤러(119)를 예를 들어 설명하도록 한다.
상기 헬스 스테이터스 리포트는 상기 비휘발성 메모리(111~114) 의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함할 수 있다. 상기 RAID 리빌드는 RAID 컨트롤러(200)의 RAID 설정 신호에 RAID 리빌드 요청이 있는 경우 수행될 수 있다. 예를 들어, RAID 리빌드 요청이 있는 경우, 메모리 컨트롤러(119)는 RAID 리빌드 요청이 발생한 비휘발성 메모리(111~114)에 있는 데이터를 다른 비휘발성 메모리(111~114)에 복사하거나, 비휘발성 메모리(111~114)에 사용가능한 공간을 재편성할 수 있다. 이어서, 메모리 컨트롤러(119)는 RAID 리빌드된 비휘발성 메모리(111~114)에 다시 데이터 또는 RAID 패러티를 저장할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
상기 메모리 컨트롤러(119)는 상기 헬스 스테이터스 리포트를 생성하여 상기 RAID 컨트롤러에 전달할 수 있다. 상기 RAID 컨트롤러는 상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단하고, 일부의 메모리 컨트롤러(119)의 RAID 동작을 비활성화 시킬 수 있다. 이를 통해, RAID 방식이 불필요한 영역에 RAID를 사용함으로써 낭비되는 스패어 영역을 줄이고, 메모리 장치(100)의 성능 및 신뢰성을 개선시킬 수 있다.
다시 도 2를 참조하면, 상기 RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 비휘발성 메모리(111~114) 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 포함할 수 있다. 구체적으로, 이를 통해, RAID 컨트롤러(200)는 메모리 컨트롤러(119)가 제어하는 복수의 비휘발성 메모리(111~114)의 영역 중에서 일부 영역에서만 RAID 동작을 수행하도록 할 수 있다. 또한, RAID 컨트롤러(200)는 RAID 동작 방법, RAID 복구 시점, RAID 엔진 개수, RAID OFF 후 chip out command 등도 제어할 수 있다. 또한, 불량 칩을 배재하고, 나머지 칩만을 이용하여 RAID 동작이 가능하게도 할 수 있다. 이에 대한 자세한 설명은 후술하도록 한다.
메모리 컨트롤러(119)의 RAID 동작은 오류 정정 코드 검사를 우선하여 수행하고, 상기 오류 정정 코드 검사 결과에 에러가 있는 경우, 상기 비휘발성 메모리(111~114)의 RAID 복구 동작을 추가적으로 수행할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 상기 메모리 컨트롤러(119)는, 상기 비휘발성 메모리(111~114)의 RAID 복구 동작을 우선하여 수행하고, 상기 RAID 복구 동작 중에 에러가 발생하는 경우, ECC 검사를 추가적으로 수행할 수 있다.
앞에서 설명한 메모리 장치(100)는 SSD(Solid State Driver)를 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
또한, RAID 컨트롤러(200)는 상기 메모리 장치(100) 외부에 배치될 수 있다. RAID 컨트롤러(200)와 메모리 장치(100)는 탈착가능하게 구성될 수 있다. 즉, 본 발명의 일 실시예에 따른 데이터 저장 시스템(2)은 복수의 메모리 장치(100)를 포함하고, 상기 복수의 메모리 장치(100)의 일부는 상기 RAID 컨트롤러(200)에 탈착 가능하도록 구성될 수 있다. 이를 통해 RAID 컨트롤러(200)에 연결된 복수의 메모리 장치(100) 중 일부는 교체가 가능할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 5는 본 발명의 일 실시예에 따른 RAID 컨트롤러를 설명하기 위한 데이터 저장 시스템의 블록도이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 5를 참조하면, 본 발명의 데이터 저장 시스템(3)의 RAID 컨트롤러(200)는 신호 수신부(240)(Signal Receiver), 연산부(210)(Processor), 신호 생성부(220)(Signal Generater), 인터페이스부(250)(Interface), 오류 정정부(230)(Error Correcting Unit), 버스(260)를 포함한다.
신호 수신부(240)는 RAID 동작이 가능한 메모리 장치(100)로부터 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트를 수신할 수 있다. 헬스 스테이터스 리포트는 메모리 장치(100)의 메모리 컨트롤러(119)에 의해 작성될 수 있고, 메모리 컨트롤러(119)에 의해 제어되는 비휘발성 메모리(111~114)들의 상태를 나타낸다.
연산부(210)는 상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단할 수 있다. 연산부(210)는 상기 메모리 장치(100)에 불량 칩이 존재하는 경우, 헬스 스테이터스 리포트에 포함된 상기 불량 칩의 위치 및 상태를 고려하여 상기 메모리 장치(100)의 RAID 동작 방법을 결정할 수 있다. 예를 들어, RAID ON/OFF 여부, 부분 RAID 동작 여부, RAID 리빌드(rebulid) 여부, RAID 동작 방식 등을 판단할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
신호 생성부(220)는 상기 연산부(210)의 판단 결과값을 이용하여 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성할 수 있다. 상기 RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 비휘발성 메모리(110) 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 더 포함할 수 있다. 상기 RAID 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
인터페이스부(250)는 상기 RAID 설정 신호를 상기 메모리 장치(100)에 송신할 수 있다. 또한, 인터페이스부(250)는 호스트로부터 수신한 데이터를 메모리 장치(100)에 전송할 수 있다. 상기 데이터는 오류 정정 코드를 포함할 수 있다.
오류 정정부(230)는 상기 오류 정정 코드를 이용하여 메모리 장치(100)로부터 리드한 데이터의 오류를 검출하고 정정할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 메모리 장치(100)의 메모리 컨트롤러(119)도 오류 정정 코드를 이용하여 리드한 데이터의 오류를 검출하고 정정할 수 있다.
버스(260)는, 신호 수신부(240), 연산부(210), 신호 생성부(220), 인터페이스부(250), 오류 정정부(230)가 서로 데이터 통신을 하는데 이용될 수 있다. 본 발명의 몇몇 실시예에서, 이러한 버스(260)는 다층 구조를 가질 수 있다.
도 6은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템의 블록도이다. 도 7은 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 도면이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 6을 참조하면, 본 발명의 또 다른 실시예에 따른 데이터 저장 시스템(4)은 호스트(300), 데이터 저장 장치(400), 버스(600)를 포함한다.
본 발명에 따른 데이터 저장 시스템(4)의 호스트(300)는 도 5를 참조하여 설명한 RAID 컨트롤러(200)와 실질적으로 동일하게 구성 및 동작할 수 있다.
데이터 저장 장치(400)는 복수의 메모리칩(425, 435, 445, 455), 메모리 컨트롤러(420, 430, 440, 450)(Flash Memory Controller; FMC), 제어부(410)를 포함할 수 있다. 이하에서는 메모리칩(425)과 메모리 컨트롤러(420)를 예를 들어 설명하도록 한다.
메모리 컨트롤러(420)는 복수의 메모리칩(425)에 데이터를 프로그램할 수 있다. 예를 들어, 하나의 메모리 컨트롤러(420)는 m개의 메모리칩(425)을 제어할 수 있다.
제어부(410)는 복수의 메모리 컨트롤러(420)를 제어할 수 있다. 제어부(410)는 호스트(300)로부터 RAID 동작 여부를 결정하는 RAID 동작 신호를 포함하는 RAID 설정 신호와 데이터를 수신하여, 복수의 메모리 컨트롤러(420)에 배분하여 전달할 수 있다.
RAID 설정 신호는 RAID 동작의 ON/OFF 여부를 지시하는 RAID 동작 신호를 포함한다. 구체적으로, 제어부(410)는 상기 RAID 설정 신호를 이용하여, 복수 개의 상기 메모리 컨트롤러(420)의 RAID 동작을 제어하고, 각각의 상기 메모리 컨트롤러(420)는, 상기 RAID 동작 신호가 활성화되는 경우, 상기 제어부(410)로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 메모리칩(425)에 프로그램하고, 상기 RAID 패러티를 상기 제m 메모리칩(425)에 프로그램할 수 있다.
만약, 상기 RAID 동작 신호가 비활성화되는 경우, 상기 제어부(410)로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 메모리에 프로그램할 수 있다. 이는 메모리 장치(400) 외부에서 RAID를 지원하는 경우에도 사용될 수 있다. 메모리 장치(400)의 외부에서 RAID를 지원하는 경우, 메모리 장치(400) 내부의 RAID를 OFF 하고, 스패어(spare) 영역을 오류 정정 코드로 강화하면, 메모리 장치(400)의 스패어 영역에 대한 사용 효율을 개선할 수 있다. 이를 통해, RAID 방식이 불필요한 영역에 RAID를 사용함으로써 낭비되는 스패어 영역을 줄이고, 메모리 장치(400)의 성능 및 신뢰성을 개선시킬 수 있다.
RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 비휘발성 메모리 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 포함할 수 있다. 구체적으로, 이를 통해, RAID 컨트롤러(200)는 메모리 컨트롤러(420)가 제어하는 복수의 비휘발성 메모리(425)의 영역 중에서 일부 영역에서만 RAID 동작을 수행하도록 할 수 있다. 또한, RAID 컨트롤러(200)는 RAID 동작 방법, RAID 복구 시점, RAID 엔진 개수, RAID OFF 후 chip out command 등도 제어할 수 있다. 또한, 불량 칩을 배재하고, 나머지 칩만을 이용하여 RAID 동작이 가능하게도 할 수 있다.
메모리 컨트롤러(420)는 상기 메모리칩(425)의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트를 생성하여 상기 호스트(300)에 전달할 수 있다.
도 7을 참조하면, 상기 제1 내지 제m 메모리칩(425) 중 어느 하나가 에러가 발생한 경우, 상기 메모리 컨트롤러(420)는 상기 제어부(410)로부터 수신한 제1 내지 제m-2 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-2 데이터와 상기 RAID 패러티를 상기 에러가 발생한 상기 메모리를 제외한 나머지 메모리칩(425)에 프로그램할 수 있다.
예를 들어, 메모리 컨트롤러(420)는 8개의 메모리칩(425)을 제어할 수 있다. 8개의 메모리칩(425)에 RAID 동작을 수행하는 경우, 7개의 데이터를 이용하여 1개의 RAID 패러티를 생성하고 이를 8개의 메모리칩(425)에 분산하여 저장할 수 있다. 만약, 메모리 컨트롤러(420)가 제어하는 8개의 메모리칩(425) 가운데 하나의 메모리칩(425)에서 오류가 발생하는 경우, 메모리 컨트롤러(420)는 상기 오류가 발생한 메모리칩(425)을 제외한 나머지 7개의 메모리칩(425)을 이용하여 RAID 동작을 수행할 수 있다. 즉, 6개의 데이터를 이용하여 1개의 RAID 패러티를 생성하고, 이를 7개의 메모리칩(425)에 분산하여 저장할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 메모리 컨트롤러(420)는 RAID 동작시에 이용되는 데이터의 구성과 RAID 패러티의 개수를 상황에 맞게 조정할 수 있다. 이를 통해, 메모리칩(425) 가운데 몇몇 메모리칩(425)에서 오류가 발생하더라도, Hot Swap 없이도 나머지 메모리칩(425)을 최대한 이용할 수 있어 메모리 장치(400)의 성능 및 신뢰성을 개선시킬 수 있다. 이를 통해, RAID 방식이 불필요한 영역에 RAID를 사용함으로써 낭비되는 스패어 영역을 줄이고, 메모리칩(425) 저장 공간의 활용을 극대화하며 안정성을 높일 수 있다.
또한, 메모리 컨트롤러(420)는 복수의 메모리칩(425) 중 어느 하나가 에러가 발생한 경우, 상기 메모리 컨트롤러(420)는 RAID 리빌드 동작을 수행할 수 있다. 예를 들어, 메모리 컨트롤러(420)는 에러가 발생한 비휘발성 메모리(425)에 있는 데이터를 다른 비휘발성 메모리(425)에 복사하거나, 비휘발성 메모리(425)에 사용가능한 공간을 재편성할 수 있다. 이어서, 메모리 컨트롤러(420)는 RAID 리빌드된 비휘발성 메모리(425)에 다시 데이터 또는 RAID 패러티를 저장할 수 있다. 이를 통해, 반도체칩의 낭비되는 스패어 영역을 줄이고, 메모리칩(425) 저장 공간의 활용을 극대화하며 시스템의 안정성을 높일 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
버스(600)는, 호스트(300) 및 데이터 저장 장치(400)가 서로 데이터 통신을 하는데 이용될 수 있다. 본 발명의 몇몇 실시예에서, 이러한 버스(600)는 다층 구조를 가질 수 있다. 또한, 버스(600)는 호스트(300) 및 제어부(410) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, 제어부(410)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(300)(HOST)와 통신하도록 구성될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
도 8은 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템의 동작을 설명하기 위한 순서도이다. 설명의 편의를 위하여, 이하에서는 앞서 설명한 실시예와 동일한 사항에 대해서는 중복된 설명을 생략하고 차이점을 중심으로 설명하도록 한다.
도 8을 참조하면, 본 발명의 몇몇 실시예에 따른 데이터 저장 시스템(1~4)에서 메모리 장치의 메모리 컨트롤러는 비휘발성 메모리로부터 데이터를 리드한다(S710).
이어서, 메모리 컨트롤러는 리드한 데이터에 포함된 오류 정정 코드를 이용하여 오류 정정 코드 검사(ECC 검사)를 수행한다(S720).
이어서, 리드한 데이터의 오류 정정 코드 검사에 오류가 발생하는지 여부를 판단한다(S730).
이어서, 리드한 데이터의 오류 정정 코드 검사에서 오류가 발생하는 경우, 비휘발성 메모리에 대한 RAID 복구를 수행한다(S740). RAID 복구는 RAID 기능이 활성화되어 있는 경우에 동작할 수 있다. 상기 RAID 복구의 동작 방법은 RAID 레벨 0, RAID 레벨 1, RAID 레벨 5, RAID 레벨 6, RAID 레벨 10, 혼합 RAID 레벨을 포함할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, 메모리 컨트롤러는 RAID 복구 수행에 대한 결과를 헬스 스테이터스 리포트로 작성한다. 헬스 스테이터스 리포트는 과거의 RAID 복구 동작의 이력, 비휘발성 메모리의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황 등을 포함할 수 있다.
이어서, RAID 컨트롤러는 메모리 컨트롤러로부터 작성된 헬스 스테이터스 리포트를 수신한다(S750). RAID 컨트롤러는 상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단할 수 있다. 또한, RAID 컨트롤러는 상기 메모리 장치에 불량 칩이 존재하는 경우, 상기 헬스 스테이터스 리포트에 포함된 상기 불량 칩의 위치 및 상태를 고려하여 상기 메모리 장치의 RAID 동작 방법을 결정할 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니다.
이어서, RAID 컨트롤러는 헬스 스테이터스 리포트를 이용하여 반도체 장치의 RAID 복구 빈도의 증가 여부를 판단한다(S760).
이어서, 반도체 장치에 대한 RAID 복구 빈도가 증가하는 경우, RAID 컨트롤러는 방어 코드(예를 들어, Signal processing)를 동작시킬 수 있다(S770). 상기 방어 코드는 RAID 컨트롤러가 수신한 데이터에 대하여 오류를 검출하고, 정정할 수 있는 알고리즘을 포함할 수 있다. 이러한 방어 코드는 RAID 컨트롤러뿐만 아니라 메모리 컨트롤러 레벨에서도 수행될 수 있다.
이어서, RAID 컨트롤러는 반도체 장치에 RAID 복구 명령 또는 강화된 RAID 동작을 수행하게 한다(S780). RAID 컨트롤러는 RAID 동작 신호를 포함하는 RAID 설정 신호를 생성하여, 반도체 장치의 동작을 제어할 수 있다.
도 8에서는, 방어 코드를 동작시키는 단계(S770)와 강화된 RAID 동작을 수행하는 단계(S780)를 순차적으로 수행하는 것으로 도시하였으나, 본 발명이 이에 한정되는 것은 아니다. S770 단계와 S780 단계의 수행 순서는 변경되거나, 또는 동시에 수행될 수도 있다.
반면, 리드한 데이터의 오류 정정 코드 검사에서 오류가 발생하지 않는 경우, 또는 RAID 복구 빈도가 증가하지 않는 경우, RAID 메모리 컨트롤러는 다시 비휘발성 메모리의 다른 데이터를 리드한다(S710).
다음 도 9를 참조하여, 본 발명의 일 실시예에 따른 컴퓨팅 시스템에 대해 설명한다.
도 9는 본 발명의 일 실시예에 따른 컴퓨팅 시스템의 블록도이다.
도 9를 참조하면, 컴퓨팅 시스템(900)은 중앙 처리 장치(910), 램(920, RAM, Random Access Memory), 사용자 인터페이스(930), 전원(940), 그리고 메모리 시스템(800)을 포함할 수 있다.
여기서, 메모리 시스템(800)은 앞서 설명한 실시예들에 따라 컨트롤러(820)가 비휘발성 메모리 장치(810)를 컨트롤하는 시스템일 수 있다. 이러한 메모리 시스템(800)은 시스템 버스(950)를 통해, 중앙처리장치(910), 램(920), 사용자 인터페이스(930), 그리고 전원(940)에 전기적으로 연결될 수 있다. 그리고, 사용자 인터페이스(930)를 통해 제공되거나, 중앙 처리 장치(910)에 의해서 처리된 데이터는 메모리 시스템(800)에 저장될 수 있다.
비록 도 9에서는, 비휘발성 메모리 장치(810)가 컨트롤러(820)를 통해 시스템 버스(950)에 연결되는 것으로 도시되어 있으나, 본 발명의 몇몇 실시예에 따른 컴퓨팅 시스템에서, 비휘발성 메모리 장치(810)는 시스템 버스(950)에 직접 연결되도록 구성될 수 있다.
도 10은 본 발명의 실시예들에 따른 반도체 장치를 포함하는 SoC 시스템의 블록도이다.
도 10을 참조하면, SoC 시스템(1000)은 어플리케이션 프로세서(1001)와, DRAM(1060)을 포함한다.
어플리케이션 프로세서(1001)는 중앙처리부(1010), 멀티미디어 시스템(1020), 버스(1030), 메모리 시스템(1040), 주변 회로(1050)을 포함할 수 있다.
중앙처리부(1010)는 SoC 시스템(1000)의 구동에 필요한 연산을 수행할 수 있다. 본 발명의 몇몇 실시예에서, 중앙처리부(1010)는 복수의 코어를 포함하는 멀티 코어 환경으로 구성될 수 있다.
멀티미디어 시스템(1020)은, SoC시스템(1000)에서 각종 멀티미디어 기능을 수행하는데 이용될 수 있다. 이러한 멀티미디어 시스템(1020)은 3D 엔진(3D engine) 모듈, 비디오 코덱(video codec), 디스플레이 시스템(display system), 카메라 시스템(camera system), 포스트-프로세서(post -processor) 등을 포함할 수 있다.
버스(1030)는, 중앙처리부(1010), 멀티미디어 시스템(1020), 메모리 시스템(1040), 및 주변 회로(1050)가 서로 데이터 통신을 하는데 이용될 수 있다. 본 발명의 몇몇 실시예에서, 이러한 버스(1030)는 다층 구조를 가질 수 있다. 구체적으로, 이러한 버스(1030)의 예로는 다층 AHB(multi-layer Advanced High-performance Bus), 또는 다층 AXI(multi-layer Advanced eXtensible Interface)가 이용될 수 있으나, 본 발명이 이에 제한되는 것은 아니다.
메모리 시스템(1040)은, 어플리케이션 프로세서(1001)가 외부 메모리(예를 들어, DRAM(1060))에 연결되어 고속 동작하는데 필요한 환경을 제공할 수 있다. 본 발명의 몇몇 실시예에서, 메모리 시스템(1040)은 외부 메모리(예를 들어, DRAM(1060))를 컨트롤하기 위한 별도의 컨트롤러(예를 들어, DRAM 컨트롤러)를 포함할 수도 있다.
주변 회로(1050)는, SoC시스템(1000)이 외부 장치(예를 들어, 메인 보드)와 원활하게 접속되는데 필요한 환경을 제공할 수 있다. 이에 따라, 주변 회로(1050)는 SoC시스템(1000)에 접속되는 외부 장치가 호환 가능하도록 하는 다양한 인터페이스를 구비할 수 있다.
DRAM(1060)은 어플리케이션 프로세서(1001)가 동작하는데 필요한 동작 메모리로 기능할 수 있다. 본 발명의 몇몇 실시예에서, DRAM(1060)은, 도시된 것과 같이 어플리케이션 프로세서(1001)의 외부에 배치될 수 있다. 구체적으로, DRAM(1060)은 어플리케이션 프로세서(1001)와 PoP(Package on Package) 형태로 패키징될 수 있다.
이러한 SoC 시스템(1000)의 구성 요소 중 적어도 하나는 앞서 설명한 본 발명의 실시예들에 따른 데이터 저장 시스템(1~4) 중 어느 하나를 채용할 수 있다.
도 11는 본 발명의 실시예들에 따른 반도체 장치를 포함하는 전자 시스템의 블록도이다.
도 11를 참조하면, 본 발명의 실시예에 따른 전자 시스템(1100)은 컨트롤러(1110), 입출력 장치(1120, I/O), 기억 장치(1130, memory device), 인터페이스(1140) 및 버스(1150, bus)를 포함할 수 있다. 컨트롤러(1110), 입출력 장치(1120), 기억 장치(1130) 및/또는 인터페이스(1140)는 버스(1150)를 통하여 서로 결합될 수 있다. 버스(1150)는 데이터들이 이동되는 통로(path)에 해당한다.
컨트롤러(1110)는 마이크로프로세서, 디지털 신호 프로세스, 마이크로컨트롤러, 및 이들과 유사한 기능을 수행할 수 있는 논리 소자들 중에서 적어도 하나를 포함할 수 있다. 입출력 장치(1120)는 키패드(keypad), 키보드 및 디스플레이 장치등을 포함할 수 있다. 기억 장치(1130)는 데이터 및/또는 명령어등을 저장할 수 있다. 인터페이스(1140)는 통신 네트워크로 데이터를 전송하거나 통신 네트워크로부터 데이터를 수신하는 기능을 수행할 수 있다. 인터페이스(1140)는 유선 또는 무선 형태일 수 있다. 예컨대, 인터페이스(1140)는 안테나 또는 유무선 트랜시버등을 포함할 수 있다.
도시하지 않았지만, 전자 시스템(1100)은 컨트롤러(1110)의 동작을 향상시키기 위한 동작 메모리로서, 고속의 디램 및/또는 에스램 등을 더 포함할 수도 있다. 이 때 이러한 동작 메모리로서, 앞서 설명한 본 발명의 실시예에 따른 반도체 장치(99b)가 채용될 수 있다. 또한, 앞서 설명한 본 발명의 실시예에 따른 반도체 장치(98b)는, 기억 장치(1130) 내에 제공되거나, 컨트롤러(1110), 입출력 장치(1120, I/O) 등의 일부로 제공될 수 있다.
전자 시스템(1100)은 개인 휴대용 정보 단말기(PDA, personal digital assistant) 포터블 컴퓨터(portable computer), 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 디지털 뮤직 플레이어(digital music player), 메모리 카드(memory card), 또는 정보를 무선환경에서 송신 및/또는 수신할 수 있는 모든 전자 제품에 적용될 수 있다.
도 12 내지 도 14는 본 발명의 몇몇 실시예들에 따른 반도체 장치를 적용할 수 있는 예시적인 반도체 시스템들이다.
도 12은 태블릿 PC(1200)을 도시한 도면이고, 도 13은 노트북(1300)을 도시한 도면이며, 도 14은 스마트폰(1400)을 도시한 것이다. 본 발명의 실시예들에 따른 데이터 저장 시스템(1~4) 중 적어도 하나는 이러한 태블릿 PC(1200), 노트북(1300), 스마트폰(1400) 등에 사용될 수 있다.
또한, 본 발명의 몇몇 실시예들에 따른 반도체 장치는 예시하지 않는 다른 집적 회로 장치에도 적용될 수 있음은 당업자에게 자명하다. 즉, 이상에서는 본 실시예에 따른 반도체 시스템의 예로, 태블릿 PC(1200), 노트북(1300), 및 스마트폰(1400)만을 들었으나, 본 실시예에 따른 반도체 시스템의 예가 이에 제한되는 것은 아니다. 본 발명의 몇몇 실시예에서, 반도체 시스템은, 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 무선 전화기(wireless phone), 모바일 폰(mobile phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player) 등으로 구현될 수도 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 메모리 장치 111~114: 비휘발성 메모리
119: 메모리 컨트롤러 200: RAID 컨트롤러
300: 호스트

Claims (10)

  1. 제1 내지 제m(단, m은 자연수) 페이지를 포함하는 비휘발성 메모리와, 상기 제1 내지 제m 페이지에 데이터를 프로그램하는 메모리 컨트롤러를 포함하는 메모리 장치; 및
    상기 메모리 장치의 RAID 동작을 활성화 및 비활성화하는 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성하고, 상기 메모리 컨트롤러에 상기 데이터와 상기 RAID 설정 신호를 전달하는 RAID 컨트롤러를 포함하되,
    상기 메모리 컨트롤러는,
    상기 RAID 동작 신호가 활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 페이지에 프로그램하고, 상기 RAID 패러티를 상기 제m 페이지에 프로그램하고,
    상기 RAID 동작 신호가 비활성화되는 경우, 상기 RAID 컨트롤러로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 페이지에 프로그램하는 데이터 저장 시스템.
  2. 제 1항에 있어서,
    상기 데이터는 ECC(Error Correcting Code)를 포함하는 데이터 저장 시스템.
  3. 제 2항에 있어서,
    상기 메모리 컨트롤러는,
    ECC 검사를 우선하여 수행하고,
    상기 ECC 검사 결과에 에러가 있는 경우, 상기 비휘발성 메모리의 RAID 복구 동작을 추가적으로 수행하는 데이터 저장 시스템.
  4. 제 1항에 있어서,
    상기 메모리 컨트롤러는 상기 비휘발성 메모리의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 생성하여 상기 RAID 컨트롤러에 전달하는 데이터 저장 시스템.
  5. 제 1항에 있어서,
    상기 메모리 컨트롤러는 상기 비휘발성 메모리에 상기 RAID 패러티를 복수회 프로그램하는 데이터 저장 시스템.
  6. 제1 내지 제m(단, m은 자연수) 메모리칩;
    상기 제1 내지 제m 메모리칩에 데이터를 프로그램하는 메모리 컨트롤러; 및
    호스트로부터 RAID 동작을 활성화 및 비활성화하는 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)와 상기 데이터를 수신하여, 상기 메모리 컨트롤러에 전달하는 제어부를 포함하되,
    상기 제어부는 상기 RAID 설정 신호를 이용하여, 복수 개의 상기 메모리 컨트롤러의 RAID 동작을 제어하고,
    각각의 상기 메모리 컨트롤러는,
    상기 RAID 동작 신호가 활성화되는 경우, 상기 제어부로부터 수신한 제1 내지 제m-1 데이터를 이용하여 RAID 패러티를 생성한 뒤, 상기 제1 내지 제m-1 데이터를 상기 제1 내지 제m-1 메모리칩에 프로그램하고, 상기 RAID 패러티를 상기 제m 메모리칩에 프로그램하고,
    상기 RAID 동작 신호가 비활성화되는 경우, 상기 제어부로부터 수신한 제1 내지 제m 데이터를 상기 제1 내지 제m 메모리에 프로그램하는 데이터 저장 장치.
  7. 제 6항에 있어서,
    상기 RAID 설정 신호는 RAID 복구 시점, RAID 동작 방법, 상기 메모리 내에 RAID 동작 설정 영역, RAID 부분 동작 신호를 더 포함하는 데이터 저장 장치.
  8. 제 6항에 있어서,
    상기 메모리 컨트롤러는 상기 메모리칩의 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 생성하여 상기 호스트에 전달하는 데이터 저장 장치.
  9. 제 6항에 있어서,
    상기 제1 내지 제m 메모리칩 중 어느 하나가 에러가 발생한 경우, 상기 메모리 컨트롤러는 RAID 리빌드 동작을 수행하는 데이터 저장 장치.
  10. RAID 동작이 가능한 메모리 장치로부터 RAID 동작 정보, 불량 칩의 위치 및 상태, 또는 RAID 리빌드(Rebuild) 진행 상황을 포함하는 헬스 스테이터스 리포트(health status report)를 수신하는 신호 수신부;
    상기 헬스 스테이터스 리포트를 이용하여, 상기 RAID 동작 신호의 활성화 여부를 판단하는 연산부;
    상기 연산부의 판단 결과값을 이용하여 RAID 동작 신호를 포함하는 RAID 설정 신호(RAID Configuration Signal)를 생성하는 신호 생성부; 및
    상기 RAID 설정 신호를 상기 메모리 장치에 송신하는 인터페이스부를 포함하는 RAID 컨트롤러.
KR1020140139123A 2014-10-15 2014-10-15 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러 KR102177421B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140139123A KR102177421B1 (ko) 2014-10-15 2014-10-15 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
US14/800,614 US9812224B2 (en) 2014-10-15 2015-07-15 Data storage system, data storage device and RAID controller

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140139123A KR102177421B1 (ko) 2014-10-15 2014-10-15 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러

Publications (2)

Publication Number Publication Date
KR20160044289A KR20160044289A (ko) 2016-04-25
KR102177421B1 true KR102177421B1 (ko) 2020-11-11

Family

ID=55749171

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140139123A KR102177421B1 (ko) 2014-10-15 2014-10-15 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러

Country Status (2)

Country Link
US (1) US9812224B2 (ko)
KR (1) KR102177421B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9529672B2 (en) * 2014-09-25 2016-12-27 Everspin Technologies Inc. ECC word configuration for system-level ECC compatibility
KR102628239B1 (ko) * 2016-05-02 2024-01-24 삼성전자주식회사 스토리지 장치, 스토리지 장치의 동작 방법, 그리고 스토리지 장치 및 호스트 장치를 포함하는 컴퓨팅 장치의 동작 방법
KR102573301B1 (ko) * 2016-07-15 2023-08-31 삼성전자 주식회사 Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
KR102545698B1 (ko) 2016-09-27 2023-06-19 삼성전자주식회사 데이터 저장 시스템
KR20180045220A (ko) 2016-10-25 2018-05-04 삼성전자주식회사 읽기 요청 횟수를 줄이는 데이터 복원 동작을 수행하는 데이터 스토리지 시스템
CN106775483B (zh) * 2016-12-26 2019-05-28 湖南国科微电子股份有限公司 一种用于ssd的raid编解码系统及方法
KR102326659B1 (ko) * 2017-07-19 2021-11-16 삼성전자주식회사 비휘발성 메모리의 ecc 제어 방법 및 이를 수행하는 메모리 시스템
US10379950B2 (en) * 2017-11-30 2019-08-13 Western Digital Technologies, Inc. Updating write-in-place storage devices
TWI661307B (zh) * 2017-12-06 2019-06-01 慧榮科技股份有限公司 資料儲存裝置、主機裝置、以及資料寫入方法
US10481834B2 (en) * 2018-01-24 2019-11-19 Samsung Electronics Co., Ltd. Erasure code data protection across multiple NVME over fabrics storage devices
KR102493864B1 (ko) * 2021-11-16 2023-01-31 삼성전자주식회사 스토리지 장치의 동작 방법 및 호스트 및 스토리지 장치를 포함하는 스토리지 시스템의 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288814A1 (en) * 2007-05-16 2008-11-20 Jun Kitahara Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5499337A (en) 1991-09-27 1996-03-12 Emc Corporation Storage device array architecture with solid-state redundancy unit
US7099994B2 (en) 2003-09-29 2006-08-29 Hewlett-Packard Development Company, L.P. RAID memory system
US20070067563A1 (en) * 2005-09-19 2007-03-22 Lsi Logic Corporation Updating disk drive firmware behind RAID controllers
WO2007140260A2 (en) 2006-05-24 2007-12-06 Compellent Technologies System and method for raid management, reallocation, and restriping
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8185784B2 (en) 2008-04-28 2012-05-22 Lsi Corporation Drive health monitoring with provisions for drive probation state and drive copy rebuild
US8645749B2 (en) * 2009-02-04 2014-02-04 Micron Technology, Inc. Systems and methods for storing and recovering controller data in non-volatile memory devices
BRPI1013576B1 (pt) 2009-04-21 2020-05-19 Ibm aparelho e método para controlar um disco de estado sólido
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
US8484415B2 (en) 2010-07-19 2013-07-09 Taejin Info Tech Co., Ltd. Hybrid storage system for a multi-level raid architecture
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US20120278527A1 (en) 2011-04-26 2012-11-01 Byungcheol Cho System architecture based on hybrid raid storage
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
US8719619B2 (en) 2011-09-20 2014-05-06 International Business Machines Corporation Performance enhancement technique for raids under rebuild
KR20130084501A (ko) * 2012-01-17 2013-07-25 삼성전자주식회사 데이터 저장 시스템, 메모리 컨트롤러 및 비휘발성 메모리 장치
KR20130111821A (ko) * 2012-04-02 2013-10-11 삼성전자주식회사 Raid 메모리 시스템
US20130339784A1 (en) 2012-06-15 2013-12-19 International Business Machines Corporation Error recovery in redundant storage systems
US8782292B2 (en) 2012-10-31 2014-07-15 Lsi Corporation Methods and structure for performing a rebuild of a logical volume with a serial attached SCSI expander
US20140215147A1 (en) 2013-01-25 2014-07-31 Hewlett-Packard Development Company, L.P. Raid storage rebuild processing
CN103970481B (zh) 2013-01-29 2017-03-01 国际商业机器公司 重建存储器阵列的方法和装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288814A1 (en) * 2007-05-16 2008-11-20 Jun Kitahara Apparatus for detecting and recovering from data destruction caused in an unaccessed memory cell by read, and method therefor

Also Published As

Publication number Publication date
US20160110255A1 (en) 2016-04-21
KR20160044289A (ko) 2016-04-25
US9812224B2 (en) 2017-11-07

Similar Documents

Publication Publication Date Title
KR102177421B1 (ko) 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US20200334140A1 (en) Memory system, data processing system including the same and operating method of the same
US8250403B2 (en) Solid state disk device and related data storing and reading methods
KR102229024B1 (ko) 스스로 에러를 검출하고 로그를 저장할 수 있는 데이터 저장 장치와 이를 포함하는 시스템
US10409683B2 (en) Data storage system configured to perform data rebuild operation via reduced read requests
US10424352B2 (en) Memory system and method for operating the same
US9459811B2 (en) Disk array system and data processing method
KR20190117117A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20180157414A1 (en) Storage device and control method of the same
US10430278B2 (en) RAID system including nonvolatile memory and operating method of the same
US20160179596A1 (en) Operating method of data storage device
CN111427509A (zh) 控制器、数据存储装置及其操作方法
US20180232325A1 (en) Memory system and method for operating the same
US10853254B2 (en) Memory system having a memory controller and a memory device having a page buffer
US8883521B2 (en) Control method of multi-chip package memory device
CN114691535A (zh) 存储装置及其操作方法和存储器控制器的操作方法
US11016689B2 (en) Data storage system
CN108665920B (zh) 存储器系统及其操作方法
EP3665686A1 (en) Replaceable memory
CN112905107A (zh) 数据存储装置及其操作方法
CN112988045A (zh) 数据存储装置及其操作方法
KR20140081954A (ko) 데이터 저장 장치 및 그것의 에러 정정 코드 처리 방법
US20230130884A1 (en) Method of scheduling commands for memory device and memory system performing the same
CN110968473A (zh) 存储器控制器和包括存储器控制器的存储装置

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