KR102545698B1 - 데이터 저장 시스템 - Google Patents

데이터 저장 시스템 Download PDF

Info

Publication number
KR102545698B1
KR102545698B1 KR1020160123753A KR20160123753A KR102545698B1 KR 102545698 B1 KR102545698 B1 KR 102545698B1 KR 1020160123753 A KR1020160123753 A KR 1020160123753A KR 20160123753 A KR20160123753 A KR 20160123753A KR 102545698 B1 KR102545698 B1 KR 102545698B1
Authority
KR
South Korea
Prior art keywords
storage
storage component
data
sector
memory
Prior art date
Application number
KR1020160123753A
Other languages
English (en)
Other versions
KR20180033926A (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 KR1020160123753A priority Critical patent/KR102545698B1/ko
Priority to US15/696,443 priority patent/US11016689B2/en
Publication of KR20180033926A publication Critical patent/KR20180033926A/ko
Application granted granted Critical
Publication of KR102545698B1 publication Critical patent/KR102545698B1/ko

Links

Images

Classifications

    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Abstract

데이터 저장 시스템이 제공된다. 데이터 저장 시스템은, 복수의 제1 저장 컴포넌트와, 상기 복수의 제1 저장 컴포넌트의 동작을 제어하는 제1 메모리 컨트롤러를 포함하는 제1 메모리 유닛, 복수의 제2 저장 컴포넌트와, 상기 복수의 제2 저장 컴포넌트의 동작을 제어하는 제2 메모리 컨트롤러를 포함하고, 상기 제1 메모리 유닛과 분리된 제2 메모리 유닛, 상기 복수의 제1 및 제2 저장 컴포넌트 각각의 등급을 결정하는 그레이딩부(grading unit) 및 상기 제1 및 제2 메모리 컨트롤러로부터 수신 받은 상기 복수의 제1 및 제2 저장 컴포넌트 각각의 등급에 대한 정보를 기초로, 제1 및 제2 섹터를 포함하는 데이터에 대한 기록 커맨드를 상기 제1 및 제2 메모리 컨트롤러에 제공하고, 상기 제1 및 제2 메모리 유닛과 분리된 시스템 컨트롤러를 포함하되, 상기 시스템 컨트롤러는, 상기 제1 섹터가 기록되는 상기 복수의 제1 저장 컴포넌트 중 어느 하나의 등급과, 상기 제2 섹터가 기록되는 상기 복수의 제2 저장 컴포넌트 중 어느 하나의 등급의 합이 임계값 이하가 되도록 할 수 있다.

Description

데이터 저장 시스템{Data storage system}
본 발명은 데이터 저장 시스템에 관한 것이다.
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이 불가능하다는 불편함이 존재한다.
본 발명이 해결하고자 하는 기술적 과제는 시스템 컨트롤러가 저장 컴포넌트에 대한 등급을 활용하여 스트라이프 또는 복수의 스트라이프들 간의 신뢰성을 균일하게 유지할 수 있는 데이터 저장 시스템을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 시스템 컨트롤러가 저장 컴포넌트에 대한 등급을 활용하여 스트라이프를 재구성함으로써 스트라이프의 신뢰성을 유지할 수 있는 데이터 저장 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템은, 복수의 제1 저장 컴포넌트와, 복수의 제1 저장 컴포넌트의 동작을 제어하는 제1 메모리 컨트롤러를 포함하는 제1 메모리 유닛, 복수의 제2 저장 컴포넌트와, 복수의 제2 저장 컴포넌트의 동작을 제어하는 제2 메모리 컨트롤러를 포함하고, 제1 메모리 유닛과 분리된 제2 메모리 유닛, 복수의 제1 및 제2 저장 컴포넌트 각각의 등급을 결정하는 그레이딩부(grading unit) 및 제1 및 제2 메모리 컨트롤러로부터 수신 받은 복수의 제1 및 제2 저장 컴포넌트 각각의 등급에 대한 정보를 기초로, 제1 및 제2 섹터를 포함하는 데이터에 대한 기록 커맨드를 제1 및 제2 메모리 컨트롤러에 제공하고, 제1 및 제2 메모리 유닛과 분리된 시스템 컨트롤러를 포함하되, 시스템 컨트롤러는, 제1 섹터가 기록되는 복수의 제1 저장 컴포넌트 중 어느 하나의 등급과, 제2 섹터가 기록되는 복수의 제2 저장 컴포넌트 중 어느 하나의 등급의 합이 임계값 이하가 되도록 한다.
상기 기술적 과제를 달성하기 위한 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템은, 복수의 제1 저장 컴포넌트와, 상기 복수의 제1 저장 컴포넌트의 동작을 제어하는 제1 메모리 컨트롤러를 포함하는 제1 메모리 유닛, 복수의 제2 저장 컴포넌트와, 상기 복수의 제2 저장 컴포넌트의 동작을 제어하는 제2 메모리 컨트롤러를 포함하고, 상기 제1 메모리 유닛과 분리된 제2 메모리 유닛, 상기 복수의 제1 저장 컴포넌트 및 상기 복수의 제2 저장 컴포넌트 각각의 등급을 결정하는 그레이딩부(grading unit) 및 상기 제1 메모리 컨트롤러로부터 수신 받은 상기 복수의 제1 저장 컴포넌트 각각의 등급에 대한 정보, 및 상기 제2 메모리 컨트롤러로부터 수신 받은 상기 복수의 제2 저장 컴포넌트 각각의 등급에 대한 정보를 기초로, 제1 데이터에 포함되는 제1 섹터에 제1 등급을 할당하고, 상기 제1 데이터에 포함되는 제2 섹터에 제2 등급을 할당하여, 상기 제1 데이터에 대한 기록 커맨드를 상기 제1 및 제2 메모리 컨트롤러에 전달하는 시스템 컨트롤러를 포함하고, 상기 기록 커맨드를 수신 받은 상기 제1 메모리 컨트롤러는, 상기 복수의 제1 저장 컴포넌트 중 상기 제1 등급을 갖는 저장 컴포넌트에 상기 제1 섹터를 기록하고, 상기 기록 커맨드를 수신 받은 상기 제2 메모리 컨트롤러는, 상기 복수의 제2 저장 컴포넌트 중 상기 제2 등급을 갖는 저장 컴포넌트에 상기 제2 섹터를 기록할 수 있다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템의 예시적인 블록도이다.
도 2는 본 발명의 몇몇 실시예들에 따른 시스템 컨트롤러의 예시적인 블록도이다.
도 3은 본 발명의 몇몇 실시예들에 따른 메모리 유닛의 예시적인 블록도이다.
도 4는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템의 예시적인 블록도이다.
도 5는 본 발명의 몇몇 실시예들에 따른 등급 테이블에 대한 예시적인 도면이다.
도 6은 본 발명의 몇몇 실시예들에 따른 데이터 구조를 설명하기 위한 도면이다.
도 7은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 데이터가 저장되어 스트라이프를 구성하는 것을 설명하기 위한 도면이다.
도 8은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에서, 데이터가 저장 컴포넌트에 저장되는 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 순서도이다.
도 10 및 도 11은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 순서도이다.
도 13은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 도면이다.
도 14는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템을 포함하는 컴퓨팅 시스템의 블록도이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
이하에서 도 1 내지 도 5를 참조하여 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 대해 설명한다.
도 1은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템의 예시적인 블록도이다. 도 2는 본 발명의 몇몇 실시예들에 따른 시스템 컨트롤러의 예시적인 블록도이다.
도 1 및 도 2를 참조하면, 본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 호스트(100), 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)을 포함할 수 있다.
몇몇 실시예에서, 시스템 컨트롤러(110)와 메모리 유닛 그룹(120)은, 서로 분리된 별개의 것일 수 있다.
시스템 컨트롤러(110)는 호스트(100) 및 메모리 유닛 그룹(120)에 커플링될 수 있다. 시스템 컨트롤러(110)는, 호스트(100)로부터의 요청에 응답하여, 메모리 유닛 그룹(120)을 액세스 하도록 구성될 수 있다. 시스템 컨트롤러(110)는, 호스트(100)와 시스템 컨트롤러(110)간의 채널(101)을 통해, 호스트(100)와 통신할 수 있다.
또한, 시스템 컨트롤러(110)는, 메모리 유닛 그룹(120)과 시스템 컨트롤러(110)간의 채널(103)을 통해, 메모리 유닛 그룹(120)과 통신할 수 있다. 도면에서, 메모리 유닛 그룹(120)과 시스템 컨트롤러(110)간의 채널(103)이 한 개인 것으로 도시하였으나, 이는 예시적인 것일 뿐 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 메모리 유닛 그룹(120)과 시스템 컨트롤러(110)간의 채널(103)은, 복수개 일 수도 있다.
시스템 컨트롤러(110)는 메모리 유닛 그룹(120)과 호스트(100) 사이에서 인터페이스를 제공하도록 구성될 수 있다. 또한, 시스템 컨트롤러(110)는, 예를 들어, 메모리 유닛 그룹(120)을 제어하기 위한 펌웨어(firmware)를 구동하도록 구성될 수 있다.
시스템 컨트롤러(110)는, 예를 들어, 메모리 유닛 그룹(120)의 리드, 라이트, 이레이즈, 및 배경(background) 동작을 제어하도록 구성될 수 있다.
시스템 컨트롤러(110)는, 예를 들어, 호스트 인터페이스(111), 프로세서(112), RAID 마스터 컨트롤러(113), 신뢰성 관리부(reliability manager)(114), 및 메모리 인터페이스(memory interface)(115) 등을 포함할 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 램(RAM)과 같이 필요에 따라 다른 구성요소들을 더 포함할 수 있음은 물론이다.
시스템 컨트롤러(110)에 포함되는 구성요소들은, 버스(116)를 통해 서로 통신할 수 있다.
호스트 인터페이스(111)는 호스트(100) 및 시스템 컨트롤러(110) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함할 수 있다. 예시적으로, 시스템 컨트롤러(110)는 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) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(100)와 통신하도록 구성될 수 있다.
시스템 컨트롤러가 램을 더 포함하는 경우, 프로세서(112)의 동작 메모리, 메모리 유닛 그룹(120) 및 호스트(100) 사이의 캐시 메모리, 그리고 메모리 유닛 그룹(120) 및 호스트(100) 사이의 버퍼 메모리 중 적어도 하나로서 이용될 수 있다. 프로세서(112)는, 예를 들어, 시스템 컨트롤러(110)의 제반 동작을 제어할 수 있다.
RAID 마스터 컨트롤러(113)와 신뢰성 관리부(114)의 동작에 대한 자세한 사항은 후술한다.
시스템 컨트롤러(110)는, 예를 들어, 메모리 유닛 그룹(120)에 대해 RAID 리커버리(recovery)를 수행할 수 있다. 구체적으로, 시스템 컨트롤러(110)는 메모리 유닛 그룹(120)에 대해 스트라이프(stripe) 단위로 RAID 리커버리를 수행할 수 있다. 더욱 구체적으로, 시스템 컨트롤러(110)는 메모리 유닛 그룹(120)에 대해 스트라이프 단위로 외부 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) 데이터를 저정하여 데이터를 리커버리하는 기술을 의미할 수 있다.
메모리 유닛 그룹(120)은, j개 (단, j는 자연수)의 메모리 유닛(120-1 내지 120-j)을 포함할 수 있다. j개의 메모리 유닛(120-1 내지 120-j)은, 제1 메모리 유닛(120-1)과 제2 메모리 유닛(120-2)을 포함할 수 있다. 몇몇 실시예에서, j번째 메모리 유닛은, 예를 들어, 스페어(spare) 메모리 유닛일 수 있다. 그러나 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 메모리 유닛 그룹(120)은, j개의 메모리 유닛(120-1 내지 120-j) 외에, 스페어 메모리 유닛으로 사용할 메모리 유닛을 별도로 포함할 수도 있다.
몇몇 실시예에서, 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)은 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)은 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)은 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
한편, 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)은 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 몇몇 실시예에서, 메모리 유닛 그룹(120)은 예를 들어, 낸드 메모리를 포함할 수 있다. 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)이 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD)로 이용되는 경우, 메모리 유닛 그룹(120)에 연결된 호스트(100)의 동작 속도는 획기적으로 개선될 수 있다. 다만, 본 발명이 이에 한정되는 것은 아니고, 시스템 컨트롤러(110) 및 메모리 유닛 그룹(120)은 탈착 가능하도록 물리적으로 분리되어 구성될 수 있다.
다른 예로서, 데이터 저장 시스템은, 컴퓨터, 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 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공될 수 있다.
예시적으로, 메모리 유닛 그룹(120)은 다양한 형태들의 패키지화 될 수 있다. 예를 들어, 메모리 유닛 그룹(120)은 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) 등과 같은 방식으로 패키지화될 수 있다.
메모리 유닛 그룹(120)에 대한 자세한 사항은, 도 3 및 도 4를 참조하여 설명한다.
도 3은 본 발명의 몇몇 실시예들에 따른 메모리 유닛의 예시적인 블록도이다. 도 4는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템의 예시적인 블록도이다.
도 1 및 도 3을 참조하면, 본 발명의 기술적 사상에 따른 데이터 저장 시스템의 메모리 유닛 그룹(120)에 포함되는 복수의 메모리 유닛(120-1 내지 120-j) 각각은, 복수의 저장 컴포넌트를 포함할 수 있다. 몇몇 실시예에서, 저장 컴포넌트는, 낸드 메모리 즉, 다이(die)일 수 있다. 메모리 유닛 그룹(120)에 포함되는 복수의 메모리 유닛(120-1 내지 120-j) 중, 제1 메모리 유닛(120-1)을 대표로 예로 들어 설명한다. 복수의 메모리 유닛(120-1 내지 120-j) 내에 포함되는 구성요소들은, 예를 들어, 서로 실질적으로 동일할 수 있다.
제1 메모리 유닛(120-1)은, 예를 들어, 제1 메모리부 컨트롤러(121)와 제1 메모리부(memory part)(123)를 포함할 수 있다.
제1 메모리부(123)는 복수의 제1 저장 컴포넌트(123-1 내지 123-n) (단, n은 자연수)를 포함할 수 있다. 몇몇 실시예에서, 복수의 제1 저장 컴포넌트(123-1 내지 123-n)는 낸드 메모리일 수 있고, 제1 메모리 유닛(120-1)은 SSD일 수 있다. 이는 제2 내지 제j 메모리 유닛(120-2 내지 120-j)도 마찬가지일 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 복수의 제1 저장 컴포넌트(123-1 내지 123-n)는, 예를 들어, 자기 테이프, 자기 디스크, 플로피 디스크, 하드 디스크, 광 디스크, EEPROM(Electrical Erasable Programmable ROM), 플래시 메모리(flash memory) 등을 포함할 수 있다.
몇몇 실시예에서, 제1 내지 제j 메모리 유닛(120-1 내지 120-j)에 포함되는 저장 컴포넌트들은, RAID 시스템을 구성할 수 있다. 본 발명이 적용될 수 있는 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)일 수도 있다.
제1 메모리부 컨트롤러(121)는, 호스트 인터페이스(121-1), 센싱부(sensing unit)(121-2), 제1 그레이딩부(grading unit)(121-3), 제1 메모리 컨트롤러(121-4), ECC 유닛(121-5), 및 메모리 인터페이스(121-6)를 포함할 수 있다. 다만 본 발명이 이에 제한되는 것은 아니고, 필요에 따라 몇 개의 유닛이 추가되거나 생략될 수 있다.
도 4를 참조하면, 예를 들어, 센싱부(122')와 그레이딩부(123')는, 메모리 유닛 그룹(120') 내에, 복수의 메모리 유닛(120-1 내지 120-j)과 별개로 배치될 수도 있음은 물론이다. 또는, 예를 들어, 센싱부와 그레이딩부는, 복수의 메모리 유닛(120-1 내지 120-j) 중 적어도 하나의 내부에 포함될 수도 있다. 또는, 예를 들어, 필요에 따라 센싱부는 생략될 수도 있다.
다시 도 1 및 도 3을 참조하면, 제1 메모리부 컨트롤러(121)에 포함되는 호스트 인터페이스(121-1)는, 예를 들어, 제1 메모리 유닛(120-1)과 시스템 컨트롤러(110)간의 통신 시 인터페이스를 제공할 수 있다. 제1 메모리부 컨트롤러(121)에 포함되는 메모리 인터페이스(121-6)는, 예를 들어, 제1 메모리부(123)와 제1 메모리부 컨트롤러(121)간의 통신 시 인터페이스를 제공할 수 있다. 제1 메모리부 컨트롤러(121)에 포함되는 ECC 유닛(121-5)은, 오류 정정 코드(ECC)를 이용하여 제1 메모리부(123)로부터 리드된 데이터의 오류를 검출하고, 정정하도록 구성될 수 있다.
제1 메모리 컨트롤러(121-4)는, 복수의 제1 저장 컴포넌트(123-1 내지 123-n)의 동작을 제어할 수 있다. 제1 메모리 컨트롤러(121-4)는, 예를 들어, 시스템 컨트롤러(110)로부터 다양한 종류의 커맨드를 수신 받고, 이에 따른 동작을 복수의 제1 저장 컴포넌트(123-1 내지 123-n)에 대해 수행할 수 있다.
예를 들어, 제1 메모리 컨트롤러(121-4)가 시스템 컨트롤러(110)로부터 기록 커맨드를 수신 받은 경우, 제1 메모리 컨트롤러(121-4)는 데이터를 복수의 제1 저장 컴포넌트(123-1 내지 123-n)에 기록할 수 있다. 또는, 예를 들어, 제1 메모리 컨트롤러(121-4)가 시스템 컨트롤러(110)로부터 스트라이프를 재구성 할 것을 명령 받은 경우, 제1 메모리 컨트롤러(121-4)는 데이터를 이동시켜 스트라이프를 새롭게 구성할 수 있다. 이에 대한 자세한 사항은 후술한다.
제1 센싱부(121-2)는, 데이터의 입/출력 과정에서 발생되는 각종 정보들을 수집할 수 있다. 예를 들어, 제1 메모리 유닛(120-1) 내부에서 지우기 작업이 수행된 경우, 제1 센싱부(121-2)는, 블록 별 지우기 횟수 정보를 수집할 수 있다. 예를 들어, 제1 메모리 유닛(120-1) 내부에서 읽기 작업이 수행된 경우, 제1 센싱부(121-2)는, 읽기 작업이 수행된 저장 컴포넌트에서 발생한 오류 개수에 대한 정보를 수집할 수 있다. 또한, 예를 들어, 제1 센싱부(121-2)는, 워드 라인 또는 블록 당 BER(Bit Error Rate)에 대한 정보를 수집할 수 있다. 제1 센싱부(121-2)가 수집하는 정보는 상술한 예시에 제한되는 것은 아니며, 본 발명의 몇몇 실시예들에 따른 제1 센싱부(121-2)는 특정 정보를 수집하기 위한 별도의 테스트 과정 없이, 데이터의 입/출력 과정에서 발생되는 정보를 수집할 수 있다.
몇몇 실시예에서, 센싱부가 메모리 유닛 그룹(120) 내에, 제1 내지 제j 메모리 유닛(120-1 내지 120-j)과 별도로 배치되는 경우, 센싱부는 제1 내지 제j 메모리 유닛(120-1 내지 120-j) 내부에 데이터가 입력 또는 출력될 때 발생되는 각종 정보들을 종합적으로 수집할 수 있다.
제1 그레이딩부(121-3)는, 제1 센싱부(121-2)가 수집한 정보를 이용하여 복수의 제1 저장 컴포넌트(123-1 내지 123-n)에 대한 등급을 결정할 수 있다. 몇몇 실시예에서, 그레이딩부가 메모리 유닛 그룹(120) 내에, 제1 내지 제j 메모리 유닛(120-1 내지 120-j)과 별도로 배치되는 경우, 그레이딩부는 제1 내지 제j 메모리 유닛(120-1 내지 120-j) 각각의 내부에 포함되는 복수의 저장 컴포넌트들에 대한 등급을 결정할 수 있다.
몇몇 실시예에서, 제1 그레이딩부(121-3)는, 별도의 테스트 과정 없이, 복수의 제1 저장 컴포넌트(123-1 내지 123-n)에 대한 등급을 결정할 수 있다. 제1 그레이딩부(121-3)의 동작에 대한 자세한 사항은, 도 5를 참조하여 아래에서 설명한다.
도 5는 본 발명의 몇몇 실시예들에 따른 등급 테이블(110-t)에 대한 예시적인 도면이다.
도 1 내지 도 5를 참조하면, 등급 테이블(110-t)은 제1 내지 제j 메모리 유닛(120-1 내지 120-j) 각각에 포함되는 복수의 저장 컴포넌트들에 대한 등급 별 비율이 포함될 수 있다. 도 5의 등급 테이블(110-t)은, 예시적으로 제1 내지 제4 메모리 유닛에 대한 등급 별 비율만을 도시하였다.
제1 그레이딩부(121-3)가 결정하는 등급은, 예를 들어, k개 (단, k는 자연수) 일 수 있다. 제1 그레이딩부(121-3)는, 예를 들어, 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 각각에 대한 등급을, k개의 등급 중 어느 하나의 등급으로 결정할 수 있다.
제1 내지 제k 등급 각각은, 각 등급에 대응되는 서로 다른 점수를 가지고 있을 수 있다. 예를 들어, 제1 등급(G1)은 신뢰성이 가장 좋은 등급으로, 1점을 가질 수 있다. 예를 들어, 제4 등급(G4)은 신뢰성이 제1 등급 보다 나쁜 등급으로, 10점을 가질 수 있다.
제1 그레이딩부(121-3)가 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 각각에 대한 등급을 결정하면, 이를 제1 메모리 컨트롤러(121-4)에 전달할 수 있다. 시스템 컨트롤러(110)는, 복수의 메모리 유닛(120-1 내지 120-j)에 대한 등급 정보가 필요한 경우, 제1 메모리 컨트롤러(121-4)에 대해 그 정보를 요청할 수 있다. 시스템 컨트롤러(110)로부터 요청을 받은 제1 메모리 컨트롤러(121-4)는, 제1 그레이딩부(121-3)가 결정한 등급에 대한 정보를 시스템 컨트롤러(110)에 전달할 수 있다.
몇몇 실시예에서, 제1 그레이딩부(121-3)는, 주기적으로 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 각각에 대한 등급을 결정하여, 제1 메모리 컨트롤러(121-4)에 전달할 수 있다. 이 경우, 등급 테이블(110-t)은 주기적으로 업데이트될 수 있다.
몇몇 실시예에서, 제1 메모리 컨트롤러(121-4)에 등급에 대한 정보를 요청하는 유닛은, 시스템 컨트롤러(110) 내의 신뢰성 관리부(114)일 수 있다. 신뢰성 관리부(114)는, 제1 메모리 컨트롤러(121-4)로부터 복수의 제1 저장 컴포넌트(123-1 내지 123-n)의 등급을 수신 받을 수 있다. 신뢰성 관리부(114)가 수신 받는 등급은, 예를 들어, 각 메모리 유닛 내의 등급별 비율일 수 있다.
좀 더 구체적으로, 시스템 컨트롤러(110)는 등급 테이블(110-t)을 가지고 있을 수 있다. 제1 메모리 컨트롤러(121-4)가 시스템 컨트롤러(110)에 전달하는 등급에 대한 정보는, 각 메모리 유닛 내의 등급별 비율일 수 있다. 예를 들어, 등급 테이블(110-t)의 a1은, 제1 메모리 유닛(SSD1, 120-1) 내의 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 중 제1 등급(G1)을 갖는 저장 컴포넌트의 비율일 수 있다. a1 내지 dk는, 서로 같거나 다른 수 일 수 있다.
예를 들어, 제1 메모리 유닛(SSD1, 120-1)은, 제1 등급(G1)을 a1 퍼센트(%), 제2 등급(G2)을 a2 퍼센트(%) 보유할 수 있다.
제1 메모리 컨트롤러(121-4)는, 시스템 컨트롤러(110)의 요청에 따라, 등급에 대한 정보의 전부 또는 일부를 시스템 컨트롤러(110)로 전달할 수 있다.
이하에서 도 1, 도 2, 도 6, 및 도 7을 참조하여 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 대해 설명한다. 설명의 명확성을 위해, 앞서 설명한 것과 중복되는 것은 생략한다.
도 6은 본 발명의 몇몇 실시예들에 따른 데이터 구조를 설명하기 위한 도면이다. 도 7은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 데이터가 저장되어 스트라이프를 구성하는 것을 설명하기 위한 도면이다.
도 1, 도 2, 도 6 및 도 7을 참조하면, 제1 및 제2 데이터(D1, D2)는, 본 발명의 기술적 사상에 따른 데이터 저장 시스템의 복수의 메모리 유닛에 저장되어, 제1 및 제2 스트라이프(Stripe 1, Stripe 2)를 각각 구성할 수 있다.
이하에서, 본 발명의 몇몇 실시에들에 따른 데이터 저장 시스템이, RAID 2 레벨 이상의 것을 갖는 것으로 가정하고 설명하나, 본 발명이 이에 제한되는 것은 아니다. 데이터가 저장되는 방식은, 필요에 따라 얼마든지 변경될 수 있음은 물론이다.
제2 메모리 유닛(120-2)은, 제1 메모리 유닛(120-1)과 분리된 것일 수 있다. 제2 메모리 유닛(120-2)은, 제2 메모리부 컨트롤러(221)와 제2 메모리부(223)를 포함할 수 있다. 제2 메모리부 컨트롤러(221)는, 제2 메모리 컨트롤러(221-4)를 포함할 수 있다. 제2 메모리부(223)는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m)를 포함할 수 있다.
제2 메모리 컨트롤러(221-4)는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m)의 동작을 제어할 수 있다. 제2 그레이딩부는, 예를 들어, 제2 메모리부 컨트롤러(221)에 포함될 수 있다. 제2 그레이딩부는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m) 각각의 등급을 결정할 수 있다.
제2 그레이딩부는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m) 각각의 등급에 대한 정보를, 시스템 컨트롤러(110)로 전달할 수 있다.
제2 메모리 유닛(120-2)의 구성 및 이에 포함되는 구성요소들의 기능은, 제1 메모리 유닛(120-1)과 실질적으로 동일할 수 있다.
제3 및 제4 메모리 유닛(120-j-1, 120-j)도 마찬가지로, 제3 및 제4 메모리 유닛(120-j-1, 120-j)의 구성 및 이에 포함되는 구성요소들의 기능은, 제1 메모리 유닛(120-1)과 실질적으로 동일할 수 있다.
제4 메모리 유닛(120-j)은, 몇몇 실시예에서, 스페어 메모리 유닛으로 기능할 수 있다. 이에 대한 자세한 사항은 후술한다.
제1 데이터(D1)는, 제1 내지 제 p1 섹터(sector)(D1-1 내지 D1-p1)를 포함할 수 있다. 제2 데이터(D2)는, 제1 내지 제 p1 섹터(sector)(D2-1 내지 D2-p2)를 포함할 수 있다. 여기서 섹터는, 하나의 저장 컴포넌트에 저장되는 데이터의 기본 단위일 수 있다.
제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)는, 시스템 컨트롤러(110)로부터 제1 및 제2 데이터(D1, D2)를 수신할 수 있다. 예를 들어, 제1 메모리 컨트롤러(121-4)는, 시스템 컨트롤러(110)로부터 제1 데이터(D1)의 제1 섹터(D1-1)에 대한 기록 커맨드를 수신받을 수 있다. 예를 들어, 제2 메모리 컨트롤러(221-4)는, 시스템 컨트롤러(110)로부터 제1 데이터(D1)의 제2 섹터(D2-1)에 대한 기록 커맨드를 수신받을 수 있다.
제1 및 제2 메모리 컨트롤러(121-4, 221-4)가 기록 커맨드를 수신 받아, 제1 데이터(D1)의 제1 및 제2 섹터(D1-1, D2-1)를 복수의 제1 컴포넌트(123-1 내지 123-n) 중 어느 하나 및 복수의 제2 컴포넌트(223-1 내지 223-m) 중 어느 하나에 저장할 수 있다. 이러한 동작에 대한 자세한 사항은 후술한다.
하나의 저장 컴포넌트에는, 하나의 섹터가 저장될 수 있다. 예를 들어, 제1 데이터(D1)의 제1 섹터(D1-1)는, 제1 메모리 유닛(120-1)의 제2 저장 컴포넌트(123-1)에 저장(W1-1)될 수 있다. 여기서, 제2 저장 컴포넌트(123-1)는, 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 중 어느 하나일 수 있다. 또한, 예를 들어, 제1 데이터(D1)의 제2 섹터(D1-2)는, 제2 메모리 유닛(120-2)의 제4 저장 컴포넌트(223-1)에 저장(W1-2)될 수 있다. 여기서 제4 저장 컴포넌트(223-1)는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m) 중 어느 하나일 수 있다. 또한, 예를 들어, 제1 데이터(D1)의 제p1 섹터(D1-p1)는, 제j-1 메모리 유닛(120-j-1)의 제8 저장 컴포넌트(323-1)에 저장(W1-p1)될 수 있다. 여기서 제8 저장 컴포넌트(323-1)는, 복수의 제3 저장 컴포넌트(323-1 내지 323-y) 중 어느 하나일 수 있다.
제1 데이터(D1)가 기록된 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 등은, 제1 스트라이프(Strip 1)를 구성할 수 있다.
예를 들어, 제2 데이터(D2)의 제1 섹터(D2-1)는, 제1 메모리 유닛(120-1)의 제3 저장 컴포넌트(123-2)에 저장(W2-1)될 수 있다. 여기서, 제3 저장 컴포넌트(123-3)는, 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 중 어느 하나일 수 있다. 또한, 예를 들어, 제2 데이터(D2)의 제2 섹터(D2-2)는, 제2 메모리 유닛(120-2)의 제5 저장 컴포넌트(223-2)에 저장(W2-2)될 수 있다. 여기서 제5 저장 컴포넌트(223-2)는, 복수의 제2 저장 컴포넌트(223-1 내지 223-m) 중 어느 하나일 수 있다. 또한, 예를 들어, 제2 데이터(D2)의 제p2 섹터(D2-p2)는, 제j-1 메모리 유닛(120-j-1)의 제9 저장 컴포넌트(323-2)에 저장(W2-p2)될 수 있다. 여기서 제9 저장 컴포넌트(323-2)는, 복수의 제3 저장 컴포넌트(323-1 내지 323-y) 중 어느 하나일 수 있다.
제2 데이터(D2)가 기록된 제3 저장 컴포넌트(123-2), 제5 저장 컴포넌트(223-2) 및 제9 저장 컴포넌트(323-2) 등은, 제2 스트라이프(Strip 2)를 구성할 수 있다.
몇몇 실시예에서, 제1 및 제2 데이터(D1, D2)는, ECC(Error Correcting Code; 이하 오류 정정 코드)를 포함할 수 있다. 오류 정정 코드는 연속적인 데이터에 결손, 정정, 오류가 있는지 확인하기 위한 코드를 의미할 수 있다. 오류 정정 코드는 일정한 데이터 단위마다 삽입될 수 있다. 이를 통해, 데이터는 패러티 비트와 비 패러티 비트를 포함할 수 있다.
제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)는 데이터를 이용하여 RAID 패러티를 생성할 수 있다. RAID 패러티는 복수의 디스크를 병렬로 연결하여 사용하는 RAID 과정에서 데이터에 오류가 발생하였는지 여부를 판단하는데 이용될 수 있다. RAID 패러티는 RAID 방식에 따라 한 개 또는 복수 개가 이용될 수 있다. 또한 하나의 RAID 패러티를 여러 번에 걸쳐서 복사할 수 있다. 이에 대한 자세한 설명은 공지된 기술을 이용할 수 있으므로 생략하도록 한다.
제1 메모리 유닛(120-1)은, n개의 저장 컴포넌트(123-1 내지 123-n)를 포함할 수 있다. 제2 메모리 유닛(120-2)은, m개 (단, m은 자연수)의 저장 컴포넌트(223-1 내지 223-m)를 포함할 수 있다. 제3 메모리 유닛(120-j-1)은, y개 (단, y는 자연수)의 저장 컴포넌트(323-1 내지 323-y)를 포함할 수 있다. 제4 메모리 유닛(120-j)은, i개 (단, i는 자연수)의 저장 컴포넌트(423-1 내지 423-i)를 포함할 수 있다.
몇몇 실시예에서, n, m, y, 및 i는 모두 같은 수 일 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 데이터 저장 시스템의 RAID 구성에 따라, n, m, y, 및 i는 서로 다른 수 이거나, 일부는 같고 다른 일부는 상이한 수 일 수도 있음은 물론이다.
시스템 컨트롤러(110)는, 하나의 스트라이프를 구성하는 저장 컴포넌트들의 등급의 합이, 임계값 이하가 되도록 할 수 있다.
하나의 스트라이프를 구성하는 저장 컴포넌트들의 등급의 합은, 각 등급에 상응하는 점수를 합한 것일 수 있다. 예를 들어 제1 스트라이프(Stripe 1)에서, 제1 스트라이프(Stripe 1)의 등급의 합은, 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 등의 등급에 대응되는 점수의 총합일 수 있다.
예를 들어, 제2 및 제4 저장 컴포넌트(123-1, 323-1)의 등급은 제1 등급(G1)으로, 제1 등급(G1)에 대응되는 점수는 1점이라 가정한다. 또한, 제8 저장 컴포넌트(323-1)의 등급은 제2 등급(G2)으로, 제2 등급(G2)에 대응되는 점수는 2점이라 가정한다. 만약 제1 데이터(D1)가, 도면에서와 달리 제1 섹터(D1-1), 제2 섹터(D1-2) 및 제p1 섹터(D1-p1)만을 포함하는 경우, 제1 스트라이프(Stripe 1)의 등급의 합은, 4(=1+1+2)일 수 있다.
이러한 스트라이프의 등급의 합은, 몇몇 실시예에서, 시스템 컨트롤러(110)에 포함되는 RAID 마스터 컨트롤러(113)가 수행할 수 있다. 예를 들어, 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)로부터 각 저장 컴포넌트들의 등급에 대한 정보를 수신 받은 신뢰성 관리부(114)는, RAID 마스터 컨트롤러(113)가 스트라이프들의 등급의 합을 계산하도록 할 수 있다.
이 때, 신뢰성 관리부(114)는 데이터 저장 시스템에 저장되어 있는 모든 스트라이프들에 대한 등급의 합을 계산할 것을, RAID 마스터 컨트롤러(113)에 대해 명령할 수 있다. 또는, 예를 들어, 신뢰성 관리부(114)는 데이터 저장 시스템에 저장되어 있는 스트라이프들 중 일부에 대한 등급의 합을 계산할 것을, RAID 마스터 컨트롤러(113)에 대해 명령할 수도 있다.
본 발명의 몇몇 실시예들에 따른 시스템 컨트롤러(110)는, 예를 들어, 제1 및 제2 스트라이프(Stripe 1, Stripe 2)의 등급의 합이 임계값 이하가 되도록 할 수 있다. 임계값은, 기결정된 임의의 값으로, 데이터 저장 시스템의 신뢰성을 유지하기 위해 요구되는 값일 수 있다.
이하에서 도 1, 도 6, 내지 도 8을 참조하여 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 대해 설명한다. 설명의 명확성을 위해, 앞서 설명한 것과 중복되는 것은 생략한다.
도 8은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에서, 데이터가 저장 컴포넌트에 저장되는 동작을 설명하기 위한 도면이다.
도 1, 도 6, 내지 도 8을 참조하면, 본 발명의 기술적 사상에 따른 시스템 컨트롤러(110)는, 하나의 스트라이프를 구성하는 저장 컴포넌트들의 등급의 합이 임계값 이하가 되도록 할 수 있다.
단계(S500)에서, 시스템 컨트롤러(110)는 메모리 유닛 그룹(120)에 대해 저장 컴포넌트들의 등급에 대한 정보를 요구할 수 있다. 몇몇 실시예에서, 시스템 컨트롤러(110)는 메모리 유닛 그룹(120)에 대해 저장 컴포넌트들의 등급에 대한 정보를 요구하는 것은, 데이터가 저장 컴포넌트들에 저장되어 스트라이프를 구성하기 전 단계에서 수행될 수 있다. 또한, 시스템 컨트롤러(110)가 메모리 유닛 그룹(120)에 대해 저장 컴포넌트들의 등급에 대한 정보를 요구하기 전, 그레이딩부(또는, 각 메모리 유닛 내에 포함되는 제1 내지 제x 그레이딩 부)는, 저장 컴포넌트들 각각에 대한 등급을 결정할 수 있다.
단계(S501)에서, 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)는, 각 저장 컴포넌트들의 등급에 대한 정보의 전부 또는 일부를, 시스템 컨트롤러(110)에 전송할 수 있다. 이 때, 전송되는 형식은, 앞서 도 5를 참조하여 설명한 바와 같이, 해당 메모리 유닛 내의 각 등급이 차지하는 비율일 수 있다.
단계(S510) 및 단계(S511)에서, 시스템 컨트롤러(110)는, 전송받은 등급에 대한 정보를 기초로, 제1 데이터(D1)의 각 섹터들에 대한 데이터 등급을 결정할 수 있다. 몇몇 실시예에서, 데이터 등급과 저장 컴포넌트들에 대한 등급은, 같은 체계를 가질 수 있다. 예를 들어, 제1 데이터 등급은 제1 등급(G1)과 같은 등급으로, 제1 등급(G1)과 동일한 점수를 가질 수 있다.
시스템 컨트롤러(110)는, 예를 들어, 각 메모리 유닛 내의 각 등급이 차지하는 비율을 기초로, 제1 데이터(D1)의 제1 섹터(D1-1)에는 제1 데이터 등급(G1)을 할당하고, 제1 데이터(D1)의 제2 섹터(D1-2)에는 제2 데이터 등급(G2)을 할당할 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 제1 데이터(D1)의 각 섹터들에는, 각 메모리 유닛 내의 각 등급이 차지하는 비율에 따라, 같은 데이터 등급이 할당 될 수도 있음은 물론이다.
시스템 컨트롤러(110)는, 제1 데이터(D1)의 각 섹터에 데이터 등급을 할당하여 메모리 유닛에 기록시켜 스트라이프를 구성하는 경우, 스트라이프의 등급의 합이 임계값 이하가 되도록 할 수 있다. 다시 말해서, 시스템 컨트롤러(110)는, 제1 데이터(D1)의 각 섹터에 할당된 등급의 합은, 임계값 이하가 되도록 할 수 있다.
단계(S520)에서, 시스템 컨트롤러(110)는, 데이터 등급이 할당된 제1 데이터(D1)에 대한 기록 커맨드를, 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)에 전달할 수 있다.
예를 들어, 시스템 컨트롤러(110)는, 시스템 컨트롤러(110)에 의해 제1 데이터 등급(G1)이 할당된 제1 데이터(D1)의 제1 섹터(D1-1)에 대한 기록 커맨드를, 제1 메모리 컨트롤러(121-4)에 전달할 수 있다.
기록 커맨드를 수신 받은 제1 메모리 컨트롤러(121-4)는, 복수의 제1 저장 컴포넌트(123-1 내지 123-n) 중 제1 데이터 등급(G1)과 동일한 제1 등급(G1)을 갖는 저장 컴포넌트를 찾을 수 있다. 제1 데이터 등급(G1)과 동일한 제1 등급(G1)을 갖는 저장 컴포넌트를 찾은 제1 메모리 컨트롤러(121-4)는, 제1 데이터(D1)의 제1 섹터(D1-1)를, 찾아낸 저장 컴포넌트에 기록할 수 있다.
예를 들어, 제2 저장 컴포넌트(123-1)가 제1 등급(G1)을 갖는 경우, 제1 메모리 컨트롤러(121-4)는, 제1 데이터(D1)의 제1 섹터(D1-1)를 제2 저장 컴포넌트(123-1)에 기록할 수 있다.
제2 메모리 컨트롤러(221-4)는, 제1 데이터(D1)의 제2 섹터(D1-2)를 상술한 바와 마찬가지의 동작을 통해, 시스템 컨트롤러(110)에 의해 할당된 제1 데이터(D1)의 제2 섹터(D1-2)의 데이터 등급과 동일한 등급을 갖는 저장 컴포넌트에 저장할 수 있다.
각 저장 컴포넌트에 저장되어 제1 스트라이프(Stripe 1)를 구성하는 제1 데이터(D1)의 등급의 합은, 임계값 이하일 수 있다. 제1 스트라이프(Stripe 1)의 등급의 합이 임계값 이하라는 것은, 데이터 저장 시스템이 정상적이고 신뢰성 있게 동작할 수 있음을 의미할 수 있다. 만약 제1 스트라이프(Stripe 1)의 등급의 합이 임계값을 초과한다면, 일부 메모리 유닛의 용량이 감소되거나 저장 컴포넌트에 기록된 데이터가 손실되는 등, 데이터 저장 시스템이 비정상적이고 신뢰성 낮게 동작할 수 있음을 의미할 수 있다.
본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터 기록 전, 데이터의 각 섹터에 대해, 저장 컴포넌트들의 등급에 대한 정보를 기초로 데이터 등급을 할당함으로써, 스트라이프를 구성하는 복수의 메모리 유닛(120-1 내지 120-j 또는 120-1 내지 120-j-1)들 간의 신뢰성을 유지시킬 수 있다.
또한, 본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 각 메모리 유닛 내부의 정보를 등급으로 환산하여, 이러한 등급을 메모리 유닛 그룹(120)과 분리된 시스템 컨트롤러(110)가 활용함으로써, 스트라이프를 구성하는 복수의 메모리 유닛(120-1 내지 120-j 또는 120-1 내지 120-j-1)들 간의 신뢰성을 유지시킬 수 있다.
나아가, 본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터 기록 전, 데이터의 각 섹터에 대해 저장 컴포넌트들의 등급에 대한 정보를 기초로 데이터 등급을 할당하여 신뢰성 있는 저장 컴포넌트들로 스트라이프를 구성함으로써, 데이터 저장에 대한 신뢰성을 향상시킬 수 있다.
이하에서 도 1, 도 6, 도 7, 도 9 내지 도 11을 참조하여 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 대해 설명한다. 설명의 명확성을 위해, 앞서 설명한 것과 중복되는 것은 생략한다.
도 9는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 순서도이다. 도 10 및 도 11은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 도면이다.
도 1, 도 6, 도 7, 도 9 내지 도 11을 참조하면, 본 발명의 기술적 사상에 따른 시스템 컨트롤러(110)는, 데이터 저장 시스템에 기록되어 있는 복수의 스트라이프들 각각을 구성하는 저장 컴포넌트들의 등급의 합이 임계값 이하가 되도록 할 수 있다.
단계(S610)에서, 시스템 컨트롤러(110)는 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)에 대해, 저장 컴포넌트들의 등급에 대한 정보를 주기적으로 결정하여 업데이트할 것을 명령할 수 있다.
제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)는, 제1 내지 제x 그레이딩부로부터 주기적으로 전송받은 저장 컴포넌트들의 등급에 대한 정보를, 주기적으로 시스템 컨트롤러(110)로 전달할 수 있다. 이 때, 시스템 컨트롤러(110)로 전달되는 정보에는, 어느 저장 컴포넌트들이 하나의 스트라이프를 구성하는지에 대한 정보가 포함되어 있을 수 있다.
시스템 컨트롤러(110)는, 전달 받은 정보를 기초로, 하나의 스트라이프를 구성하는 저장 컴포넌트들의 등급의 합이 임계값을 초과하는지 판단할 수 있다. 이 때, 시스템 컨트롤러(110)는, 데이터 저장 시스템에 저장되어 있는 복수의 스트라이프들 전부에 대한 등급의 합을 검사할 수도 있고, 임의의 스트라이프에 대한 등급의 합을 랜덤하게 검사할 수도 있다. 또는, 예를 들어, 시스템 컨트롤러(110)는, 구성의 변화 없이 오랫동안 유지되고 있는 스트라이프에 대한 등급의 합을 검사할 수 있다. 또는, 예를 들어, 시스템 컨트롤러(110)는, 스트라이프의 일부분에 대한 등급의 합을 검사할 수 있다. 또는, 예를 들어, 시스템 컨트롤러(110)는, 호스트 장치에 의한 판독 요청이 빈번히 일어나는 스트라이프 또는 그 스트라이프의 일부분에 대한 등급의 합을 검사할 수도 있다.
만약 복수의 스트라이프 중 하나인 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들의 등급의 합이 임계값 이하인 경우(Y), 단계(S620)에서, 시스템 컨트롤러(110)는 현재 제1 스트라이프(Stripe 1)의 구성을 유지하도록 할 수 있다.
만약 복수의 스트라이프 중 하나인 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들의 등급의 합이 임계값을 초과하는 경우(N), 단계(S630)에서, 시스템 컨트롤러(110)는 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중, 임계값을 초과하는 등급을 갖는 저장 컴포넌트가 존재하는지 판단할 수 있다.
이 때, 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들의 등급의 합이 임계값을 초과하는지 여부는, 주기적으로 업데이트 되는 저장 컴포넌트들의 등급에 대한 정보를 기초로, 시스템 컨트롤러(110)가 주기적으로 판단할 수 있다.
만약, 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중, 임계값을 초과하는 등급을 갖는 저장 컴포넌트가 존재하지 않는다면(N), 도 10 및 단계(S640)에서, 시스템 컨트롤러(110)는 제1 스트라이프(Stripe 1)를 재구성할 수 있다.
다시 말해서, 단계(S640)에서의 제1 스트라이프(Stripe 1) 재구성은, 제1 스트라이프(Stripe 1)를 구성하는 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 각각의 등급은 임계값을 초과하지 않지만, 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 각각의 등급의 합은 임계값을 초과하는 경우일 수 있다.
몇몇 실시예에서, 시스템 컨트롤러(110)는, 예를 들어, 제2 저장 컴포넌트(123-1)에 저장되어 있는 제1 데이터(D1)의 제1 섹터(D1-1)를 제1 메모리 유닛(120-1) 내의 다른 저장 컴포넌트로 이동 시키도록, 제1 메모리 컨트롤러(121-4)에 요구할 수 있다. 그러나, 이는 예시적인 것일 뿐, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 기록되어 있던 섹터가 이동되어야 할 저장 컴포넌트는, 제2 저장 컴포넌트(123-1)에 제한되지 않고, 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중 어느 하나 또는 복수개일 수 있다. 시스템 컨트롤러(110)는, 저장 컴포넌트들의 등급에 대한 정보를 기초로, 기록되어 있던 섹터가 이동되어야 할 저장 컴포넌트를 결정할 수 있다.
예를 들어, 시스템 컨트롤러(110)는, 제1 데이터(D1)의 제1 섹터(D1-1)를 제6 저장 컴포넌트(123-3)로 이동(m1)시킬 것을, 제1 메모리 컨트롤러(121-4)에 요구할 수 있다. 이 때, 제6 저장 컴포넌트(123-3)의 등급에 대한 정보는, 제1 그레이딩부(121-3)에 의해 결정되어, 제1 메모리 컨트롤러(121-4)를 통해 시스템 컨트롤러(110)로 이미 전송되어 있을 수 있다. 또한, 제6 저장 컴포넌트(123-3)의 등급은 임계값 이하로써, 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 각각의 등급과 합하여도 임계값을 초과하지 않는 등급을 가질 수 있다.
이동(m1)을 요구 받은 제1 메모리 컨트롤러(121-4)는, 제1 데이터(D1)의 제1 섹터(D1-1)를 제6 저장 컴포넌트(123-3)로 이동(m1)시킨 후, 완료 신호를 시스템 컨트롤러(110)에 보낼 수 있다.
따라서, 제1 스트라이프(Stripe 1)는 재구성되어 제1' 스트라이프(Stripe 1')가 될 수 있다. 다시 말해서, 제1' 스트라이프(Stripe 1')는, 제6 저장 컴포넌트(123-3), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1)로 구성될 수 있다. 재구성된 제1 스트라이프(Stripe 1')의 등급의 합은, 임계값 이하일 수 있다.
본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터 기록 후, 주기적으로 저장 컴포넌트들의 등급을 체크하여, 스트라이프의 등급의 합이 임계값을 초과하는 스트라이프가 발견되는 경우, 스트라이프를 재구성할 수 있다. 이로써, 스트라이프를 구성하는 복수의 메모리 유닛(120-1 내지 120-j 또는 120-1 내지 120-j-1)들 간의 신뢰성이 유지될 수 있다.
또한, 본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터가 기록된 저장 컴포넌트들의 등급에 대한 정보를 기초로, 신뢰성에 문제가 있는 스트라이프가 존재하는 경우, 스트라이프를 재구성함으로써, 데이터 저장 및 저장된 데이터의 유지에 대한 신뢰성을 향상시킬 수 있다.
단계(S630) 수행 후, 만약 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중, 임계값을 초과하는 등급을 갖는 저장 컴포넌트가 존재 한다면(Y), 도 11 및 단계(S650)에서, 시스템 컨트롤러(110)는 제1 스트라이프(Stripe 1)를 재구성할 수 있다.
단계(S650)에서 제1 스트라이프(Stripe 1)를 재구성하는 경우는, 제1 스트라이프(Stripe 1)를 구성하는 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 중 어느 하나의 컴포넌트의 등급이 임계값을 초과하는 경우일 수 있다.
예를 들어, 제2 저장 컴포넌트(123-1)의 등급이 임계값을 초과한다면, 제1 메모리 컨트롤러(121-4)는, 시스템 컨트롤러(110)에 이를 알릴 수 있다. 알림을 받은 시스템 컨트롤러(110)는, 제2 저장 컴포넌트(123-1)에 대한 정보를 제1 메모리 컨트롤러(121-4)에 요구할 수 있다. 이에 응답하여 제1 메모리 컨트롤러(121-4)가 시스템 컨트롤러(110)에, 제2 저장 컴포넌트(123-1)에 대한 정보를 전송할 수 있다.
제2 저장 컴포넌트(123-1)에 대한 정보를 전송 받은 시스템 컨트롤러(110)는, 제2 저장 컴포넌트(123-1)에 저장되어 있는 제1 데이터(D1)의 제1 섹터(D1-1)를 스페어 메모리 유닛(120-j) 내의 제10 저장 컴포넌트(423-1)로 이동(m4)시키도록, 제1 메모리 컨트롤러(121-4) 및 제x 메모리 컨트롤러(421-4)에 요구할 수 있다.
이 때, 스페어 메모리 유닛(120-k) 내의 제x 메모리부(423)의 복수의 제x 저장 컴포넌트들(423-1 내지 423-i)의 등급은 예를 들어, 모두 임계값 이하일 수 있다.
이동(m4)을 요구 받은 제1 메모리 컨트롤러(121-4)는, 제1 데이터(D1)의 제1 섹터(D1-1)를 제10 저장 컴포넌트(423-1)로 이동(m4)시킨 후, 완료 신호를 시스템 컨트롤러(110)에 다시 보낼 수 있다.
따라서, 제1 스트라이프(Stripe 1)는 재구성되어 제1' 스트라이프(Stripe 1')가 될 수 있다. 다시 말해서, 제1' 스트라이프(Stripe 1')는, 제10 저장 컴포넌트(423-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1)로 구성될 수 있다. 재구성된 제1 스트라이프(Stripe 1')의 등급의 합은, 임계값 이하일 수 있다.
본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터 기록 후, 주기적으로 저장 컴포넌트들의 등급을 체크하여, 하나의 저장 컴포넌트의 등급이 임계값을 초과하는 경우, 스트라이프를 재구성할 수 있다. 이로써, 스트라이프를 구성하는 복수의 메모리 유닛(120-1 내지 120-)들 간의 신뢰성이 유지될 수 있다.
또한, 본 발명의 기술적 사상에 따른 데이터 저장 시스템은, 데이터가 기록된 저장 컴포넌트들의 등급에 대한 정보를 기초로, 신뢰성에 문제가 있는 저장 컴포넌트가 존재하는 경우, 스트라이프를 재구성함으로써, 데이터 저장, 자저장된 데이터의 유지 및 데이터 저장 시스템의 용량 유지에 대한 신뢰성을 향상시킬 수 있다.
이하에서 도 1, 도 6, 도 7, 도 9, 도 12 및 도 13을 참조하여 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템에 대해 설명한다. 설명의 명확성을 위해, 앞서 설명한 것과 중복되는 것은 생략한다.
도 12는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 순서도이다. 도 13은 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템이 스트라이프를 재구성하는 동작을 설명하기 위한 도면이다.
도 1, 도 6, 도 7, 도 9, 도 12 및 도 13을 참조하면, 본 발명의 기술적 사상에 따른 시스템 컨트롤러(110)는, 데이터 저장 시스템에 기록되어 있는 복수의 스트라이프들 각각을 구성하는 저장 컴포넌트들의 등급의 합이 임계값 이하가 되도록 할 수 있다.
도 12의 단계(S610, S620, S630, S650)들은, 도 9의 그것과 동일한 단계일 수 있다.
단계(S630)에서, 만약 복수의 스트라이프 중 하나인 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들의 등급의 합이 임계값을 초과하는 경우(N), 시스템 컨트롤러(110)는 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중, 임계값을 초과하는 등급을 갖는 저장 컴포넌트가 존재하는지 판단할 수 있다.
만약, 제1 스트라이프(Stripe 1)를 구성하는 저장 컴포넌트들 중, 임계값을 초과하는 등급을 갖는 저장 컴포넌트가 존재하지 않는다면(N), 도 13 및 단계(S660)에서, 시스템 컨트롤러(110)는 제1 스트라이프(Stripe 1)를 재구성할 수 있다.
몇몇 실시예에서, 시스템 컨트롤러(110)는, 예를 들어, 제1 스트라이프(Stripe 1)를 구성하는 제2 저장 컴포넌트(123-1), 제4 저장 컴포넌트(223-1) 및 제8 저장 컴포넌트(323-1) 각각에 저장되어 있는 제1 데이터(D1)의 섹터를, 전부 다른 저장 컴포넌트로 이동시키도록, 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)에 요구할 수 있다. 이 때 각 섹터들의 이동은, 동일 메모리 유닛 내의 복수의 저장 컴포넌트들 사이에서만 수행될 수 있다.
예를 들어, 시스템 컨트롤러(110)는, 제2 저장 컴포넌트(123-1)에 저장되어 있던 제1 데이터(D1)의 제1 섹터(D1-1)를, 제6 저장 컴포넌트(123-3)로 이동(m1)시킬 것을, 제1 메모리 컨트롤러(121-4)에 요구할 수 있다. 또한, 시스템 컨트롤러(110)는, 제4 저장 컴포넌트(223-1)에 저장되어 있던 제1 데이터(D1)의 제2 섹터(D1-2)를, 제7 저장 컴포넌트(223-3)로 이동(m2)시킬 것을, 제2 메모리 컨트롤러(221-4)에 요구할 수 있다. 또한, 시스템 컨트롤러(110)는, 제8 저장 컴포넌트(323-1)에 저장되어 있던 제1 데이터(D1)의 제p1 섹터(D1-1)를, 제9 저장 컴포넌트(323-3)로 이동(m3)시킬 것을, 제x 메모리 컨트롤러(421-4)에 요구할 수 있다.
이 때, 제6, 제7 및 제9 저장 컴포넌트(123-3, 223-3, 323-3)의 등급에 대한 정보는, 제1 내지 제x 그레이딩부에 의해 결정되어, 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)를 통해 시스템 컨트롤러(110)로 이미 전송되어 있을 수 있다. 또한, 제6, 제7 및 제9 저장 컴포넌트(123-3, 223-3, 323-3)의 각각의 등급은 임계값 이하로써, 각 등급을 모두 합하여도 임계값을 초과하지 않는 조합일 수 있다.
이동(m1 내지 m3)을 요구 받은 제1 내지 제x 메모리 컨트롤러(121-4 내지 421-4)는, 각 이동(m1 내지 m3)을 완료한 후, 완료 신호를 시스템 컨트롤러(110)에 보낼 수 있다.
따라서, 제1 스트라이프(Stripe 1)는 재구성되어 제1' 스트라이프(Stripe 1')가 될 수 있다. 다시 말해서, 제1' 스트라이프(Stripe 1')는, 제6 저장 컴포넌트(123-3), 제7 저장 컴포넌트(223-3) 및 제9 저장 컴포넌트(323-3)로 구성될 수 있다. 재구성된 제1 스트라이프(Stripe 1')의 등급의 합은, 임계값 이하일 수 있다.
이하에서 도 14를 참조하여, 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템을 포함하는 컴퓨팅 시스템에 대해 설명한다.
도 14는 본 발명의 몇몇 실시예들에 따른 데이터 저장 시스템을 포함하는 컴퓨팅 시스템의 블록도이다.
도 14를 참조하면, 컴퓨팅 시스템(900)은 중앙 처리 장치(910), 램(920, RAM, Random Access Memory), 사용자 인터페이스(930), 전원(940), 그리고 데이터 저장 시스템(800)을 포함할 수 있다.
여기서, 데이터 저장 시스템(800)은 앞서 설명한 실시예들에 따라 시스템 컨트롤러(110)가 메모리 유닛 그룹(120)을 컨트롤하는 시스템일 수 있다. 이러한 데이터 저장 시스템(800)은 시스템 버스(950)를 통해, 중앙처리장치(910), 램(920), 사용자 인터페이스(930), 그리고 전원(940)에 전기적으로 연결될 수 있다. 그리고, 사용자 인터페이스(930)를 통해 제공되거나, 중앙 처리 장치(910)에 의해서 처리된 데이터는 데이터 저장 시스템(800)에 저장될 수 있다.
메모리 유닛 그룹(120)은, 시스템 컨트롤러(110)를 통해 시스템 버스(950)에 연결될 수 있다. 그러나, 본 발명이 이에 제한되는 것은 아니다. 예를 들어, 메모리 유닛 그룹(120)은, 시스템 버스(950)에 직접 연결되도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
120-1: 제1 메모리 유닛 121-4: 제1 메모리 컨트롤러
121-3: 제1 그레이딩부 110: 시스템 컨트롤러

Claims (10)

  1. 복수의 제1 저장 컴포넌트와, 상기 복수의 제1 저장 컴포넌트의 동작을 제어하는 제1 메모리 컨트롤러를 포함하는 제1 메모리 유닛;
    복수의 제2 저장 컴포넌트와, 상기 복수의 제2 저장 컴포넌트의 동작을 제어하는 제2 메모리 컨트롤러를 포함하고, 상기 제1 메모리 유닛과 분리된 제2 메모리 유닛;
    상기 복수의 제1 및 제2 저장 컴포넌트 각각의 등급을 결정하는 그레이딩부(grading unit); 및
    상기 제1 및 제2 메모리 유닛과 분리된 시스템 컨트롤러로서, 상기 제1 및 제2 메모리 컨트롤러로부터 수신받은 상기 복수의 제1 및 제2 저장 컴포넌트 각각의 등급에 대한 정보를 기초로, 제1 및 제2 섹터를 포함하는 데이터에 대한 기록 커맨드를 상기 제1 및 제2 메모리 컨트롤러에 제공하여, 상기 데이터의 제1 섹터를 복수의 제1 저장 컴포넌트 중 어느 하나에 저장하고, 상기 데이터의 제2 섹터를 복수의 제2 저장 컴포넌트 중 어느 하나에 저장하는 시스템 컨트롤러를 포함하되,
    상기 시스템 컨트롤러는, 상기 제1 섹터가 기록되는 상기 복수의 제1 저장 컴포넌트 중 어느 하나의 등급과, 상기 제2 섹터가 기록되는 상기 복수의 제2 저장 컴포넌트 중 어느 하나의 등급의 합이 임계값 이하가 되도록 하는 데이터 저장 시스템.
  2. 제 1항에 있어서,
    상기 시스템 컨트롤러는,
    상기 합이 상기 임계값 이하가 되도록, 상기 제1 및 제2 메모리 컨트롤러로부터 수신 받은 상기 복수의 제1 및 제2 저장 컴포넌트 각각의 등급에 대한 상기 정보를 기초로, 상기 데이터의 제1 및 제2 섹터 각각에, 제1 및 제2 데이터 등급 각각을 할당하고,
    상기 데이터는, 상기 등급이 할당된 데이터이고,
    상기 제1 메모리 컨트롤러는 상기 기록 커맨드에 따라, 상기 제1 섹터를 상기 복수의 제1 저장 컴포넌트 중 어느 하나인 제2 저장 컴포넌트에 저장하고,
    상기 제2 메모리 컨트롤러는 상기 기록 커맨드에 따라, 상기 제2 섹터를 상기 복수의 제2 저장 컴포넌트 중 어느 하나인 제3 저장 컴포넌트에 저장하되, 상기 제1 섹터의 상기 제1 데이터 등급과 상기 제2 저장 컴포넌트의 등급은 동일하고, 상기 제2 섹터의 상기 제2 데이터 등급과 상기 제3 저장 컴포넌트의 등급은 동일한 데이터 저장 시스템.
  3. 제 1항에 있어서,
    상기 복수의 제1 저장 컴포넌트는, 제2 및 제3 저장 컴포넌트를 포함하고,
    상기 복수의 제2 저장 컴포넌트는, 제4 및 제5 저장 컴포넌트를 포함하고,
    상기 그레이딩부는 상기 제2 내지 제5 저장 컴포넌트의 등급을 결정하고,
    상기 시스템 컨트롤러는, 상기 제1 및 제2 메모리 컨트롤러로부터 상기 제2 내지 제5 저장 컴포넌트의 등급에 대한 정보를 수신 받는 데이터 저장 시스템.
  4. 제 3항에 있어서,
    상기 제1 메모리 컨트롤러는, 상기 제1 섹터를 상기 제2 저장 컴포넌트에 기록하고,
    상기 제2 메모리 컨트롤러는, 상기 제2 섹터를 상기 제4 저장 컴포넌트에 기록하고,
    상기 시스템 컨트롤러는,
    상기 제2 저장 컴포넌트의 상기 등급과 상기 제4 저장 컴포넌트의 상기 등급의 합이 상기 임계값을 초과하는 경우, 상기 제1 섹터를 상기 제3 저장 컴포넌트로 이동시켜, 상기 제3 저장 컴포넌트의 상기 등급과 상기 제4 저장 컴포넌트의 상기 등급의 합이 상기 임계값 이하가 되도록 하는 데이터 저장 시스템.
  5. 제 3항에 있어서,
    상기 제1 메모리 컨트롤러는, 상기 제1 섹터를 상기 제2 저장 컴포넌트에 기록하고,
    상기 제2 메모리 컨트롤러는, 상기 제2 섹터를 상기 제4 저장 컴포넌트에 기록하고,
    상기 시스템 컨트롤러는,
    상기 제2 저장 컴포넌트의 상기 등급과 상기 제4 저장 컴포넌트의 상기 등급의 합이 상기 임계값을 초과하는 경우, 상기 제1 섹터를 상기 제3 저장 컴포넌트로 이동시키고, 상기 제2 섹터를 상기 제5 저장 컴포넌트로 이동시켜, 상기 제3 저장 컴포넌트의 상기 등급과 상기 제5 저장 컴포넌트의 상기 등급의 합이 상기 임계값 이하가 되도록 하는 데이터 저장 시스템.
  6. 복수의 제1 저장 컴포넌트와, 상기 복수의 제1 저장 컴포넌트의 동작을 제어하는 제1 메모리 컨트롤러를 포함하는 제1 메모리 유닛;
    복수의 제2 저장 컴포넌트와, 상기 복수의 제2 저장 컴포넌트의 동작을 제어하는 제2 메모리 컨트롤러를 포함하고, 상기 제1 메모리 유닛과 분리된 제2 메모리 유닛;
    상기 복수의 제1 저장 컴포넌트 및 상기 복수의 제2 저장 컴포넌트 각각의 등급을 결정하는 그레이딩부(grading unit); 및
    상기 제1 메모리 컨트롤러로부터 수신 받은 상기 복수의 제1 저장 컴포넌트 각각의 등급에 대한 정보, 및 상기 제2 메모리 컨트롤러로부터 수신 받은 상기 복수의 제2 저장 컴포넌트 각각의 등급에 대한 정보를 기초로, 제1 데이터에 포함되는 제1 섹터에 제1 등급을 할당하고, 상기 제1 데이터에 포함되는 제2 섹터에 제2 등급을 할당하여, 상기 제1 데이터에 대한 기록 커맨드를 상기 제1 및 제2 메모리 컨트롤러에 전달하는 시스템 컨트롤러를 포함하고,
    상기 기록 커맨드를 수신 받은 상기 제1 메모리 컨트롤러는, 상기 복수의 제1 저장 컴포넌트 중 상기 제1 등급을 갖는 저장 컴포넌트에 상기 제1 섹터를 기록하고,
    상기 기록 커맨드를 수신 받은 상기 제2 메모리 컨트롤러는, 상기 복수의 제2 저장 컴포넌트 중 상기 제2 등급을 갖는 저장 컴포넌트에 상기 제2 섹터를 기록하는 데이터 저장 시스템.
  7. 제 6항에 있어서,
    상기 복수의 제1 저장 컴포넌트는, 제2 저장 컴포넌트와, 제2 데이터에 포함되는 제3 섹터가 저장된 제3 저장 컴포넌트를 포함하고,
    상기 복수의 제2 저장 컴포넌트는, 제4 저장 컴포넌트와, 상기 제2 데이터에 포함되는 제4 섹터가 저장된 제5 저장 컴포넌트를 포함하고,
    상기 제1 등급을 갖는 저장 컴포넌트는, 상기 제2 저장 컴포넌트이고,
    상기 제2 등급을 갖는 저장 컴포넌트는, 상기 제4 저장 컴포넌트이고,
    상기 제1 등급과 상기 제2 등급의 합은 임계값 이하인 데이터 저장 시스템.
  8. 제 7항에 있어서,
    상기 제3 및 제5 저장 컴포넌트의 등급의 합은 상기 임계값 이하인 데이터 저장 시스템.
  9. 제 7항에 있어서,
    상기 복수의 제1 저장 컴포넌트는, 제6 저장 컴포넌트를 포함하고,
    상기 시스템 컨트롤러는,
    상기 제3 저장 컴포넌트의 상기 등급과 상기 제5 저장 컴포넌트의 상기 등급의 합이 상기 임계값을 초과하는 경우, 상기 제3 섹터를 상기 제6 저장 컴포넌트로 이동시켜, 상기 제6 저장 컴포넌트의 상기 등급과 상기 제5 저장 컴포넌트의 상기 등급의 합이 상기 임계값 이하가 되도록 하는 데이터 저장 시스템.
  10. 제 7항에 있어서,
    상기 복수의 제1 저장 컴포넌트는, 제6 저장 컴포넌트를 포함하고,
    상기 복수의 제2 저장 컴포넌트는, 제7 저장 컴포넌트를 포함하고,
    상기 시스템 컨트롤러는,
    상기 제3 저장 컴포넌트의 상기 등급과 상기 제5 저장 컴포넌트의 상기 등급의 합이 상기 임계값을 초과하는 경우, 상기 제3 섹터를 상기 제6 저장 컴포넌트로 이동시키고, 상기 제4 섹터를 상기 제7 저장 컴포넌트로 이동시켜, 상기 제6 저장 컴포넌트의 상기 등급과 상기 제7 저장 컴포넌트의 상기 등급의 합이 상기 임계값 이하가 되도록 하는 데이터 저장 시스템.
KR1020160123753A 2016-09-27 2016-09-27 데이터 저장 시스템 KR102545698B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160123753A KR102545698B1 (ko) 2016-09-27 2016-09-27 데이터 저장 시스템
US15/696,443 US11016689B2 (en) 2016-09-27 2017-09-06 Data storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160123753A KR102545698B1 (ko) 2016-09-27 2016-09-27 데이터 저장 시스템

Publications (2)

Publication Number Publication Date
KR20180033926A KR20180033926A (ko) 2018-04-04
KR102545698B1 true KR102545698B1 (ko) 2023-06-19

Family

ID=61685379

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160123753A KR102545698B1 (ko) 2016-09-27 2016-09-27 데이터 저장 시스템

Country Status (2)

Country Link
US (1) US11016689B2 (ko)
KR (1) KR102545698B1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10340024B2 (en) * 2017-09-26 2019-07-02 Intel Corporation Solid state drive physical block revectoring to improve cluster failure rates
US11334253B2 (en) * 2018-12-07 2022-05-17 Intel Corporation Storage system that provides protection levels at stored data item granularity
US10990474B1 (en) * 2020-03-06 2021-04-27 Seagate Technology Llc Cost-benefit aware read-amplification in RAID scrubbing

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080007544A (ko) * 2006-04-06 2008-01-22 가부시키가이샤 어드밴티스트 시험 장치 및 시험 방법
US8185784B2 (en) * 2008-04-28 2012-05-22 Lsi Corporation Drive health monitoring with provisions for drive probation state and drive copy rebuild
US20100125695A1 (en) 2008-11-15 2010-05-20 Nanostar Corporation Non-volatile memory storage system
US9170897B2 (en) * 2012-05-29 2015-10-27 SanDisk Technologies, Inc. Apparatus, system, and method for managing solid-state storage reliability
KR101517767B1 (ko) * 2009-01-07 2015-05-06 시게이트 테크놀로지 엘엘씨 하이브리드 저장 장치 및 그의 자원 공유 방법
US8874825B2 (en) * 2009-06-30 2014-10-28 Sandisk Technologies Inc. Storage device and method using parameters based on physical memory block location
US8775868B2 (en) 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US8953398B2 (en) * 2012-06-19 2015-02-10 Sandisk Technologies Inc. Block level grading for reliability and yield improvement
KR102065664B1 (ko) * 2013-08-09 2020-01-13 삼성전자 주식회사 메모리 장치의 열화 상태 추정 방법 및 이를 이용한 메모리 시스템에서의 웨어 레벨링 방법
US9304685B2 (en) 2013-09-10 2016-04-05 Kabushiki Kaisha Toshiba Storage array system and non-transitory recording medium storing control program
US9442662B2 (en) * 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US20150143027A1 (en) 2013-11-20 2015-05-21 Sage Microelectronics Corp. Solid state drive with raid functions
KR102289919B1 (ko) * 2014-04-15 2021-08-12 삼성전자주식회사 스토리지 컨트롤러, 스토리지 장치, 스토리지 시스템 및 상기 스토리지 컨트롤러의 동작 방법
KR102177421B1 (ko) 2014-10-15 2020-11-11 삼성전자주식회사 데이터 저장 시스템, 데이터 저장 장치 및 raid 컨트롤러
US9959059B2 (en) * 2014-10-20 2018-05-01 Sandisk Technologies Llc Storage error management
US9857986B2 (en) * 2015-06-30 2018-01-02 International Business Machines Corporation Wear leveling of a memory array
US9804803B2 (en) * 2015-08-20 2017-10-31 Sap Se Data access in hybrid main memory systems
US9710329B2 (en) * 2015-09-30 2017-07-18 Sandisk Technologies Llc Error correction based on historical bit error data
US10169141B2 (en) * 2016-08-11 2019-01-01 SK Hynix Inc. Modifiable stripe length in flash memory devices

Also Published As

Publication number Publication date
US20180088856A1 (en) 2018-03-29
US11016689B2 (en) 2021-05-25
KR20180033926A (ko) 2018-04-04

Similar Documents

Publication Publication Date Title
US9811277B2 (en) Information processing system
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US9798620B2 (en) Systems and methods for non-blocking solid-state memory
KR101758544B1 (ko) 비휘발성 메모리 시스템에서의 동기 미러링
KR101912596B1 (ko) 리던던트 어레이들을 통한 비휘발성 메모리 프로그램 실패 복구
US8756367B2 (en) Information processing device, external storage device, host device, relay device, control program, and control method of information processing device
US20130262920A1 (en) Raid memory system
US8799745B2 (en) Storage control apparatus and error correction method
US11288119B2 (en) Key value SSD
US10409683B2 (en) Data storage system configured to perform data rebuild operation via reduced read requests
KR20150067583A (ko) 불휘발성 메모리 장치 및 그것의 중복 데이터 제거 방법
US11340986B1 (en) Host-assisted storage device error correction
CN103534688A (zh) 数据恢复方法、存储设备和存储系统
US10430278B2 (en) RAID system including nonvolatile memory and operating method of the same
KR102545698B1 (ko) 데이터 저장 시스템
KR20210121654A (ko) 메모리 시스템의 데이터 에러를 복구하는 장치 및 방법
US20210117104A1 (en) Storage control device and computer-readable recording medium
CN113553631A (zh) 用于在存储器系统中保护数据的设备和方法
JP7407230B2 (ja) キー値データ記憶デバイスのためのeccパリティ偏り
CN112328182B (zh) 一种raid数据管理方法、装置和计算机可读存储介质
KR20230056901A (ko) 메모리 장치에 데이터를 프로그램하는 장치 및 방법
KR20220049230A (ko) 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
CN114730247A (zh) 具有数据的最小写入大小的存储设备
KR102477051B1 (ko) 네트워크를 이용한 스토리지 장치의 데이터 복구 방법 및 이를 수행하는 스토리지 장치
KR20230064279A (ko) 메모리 시스템에서 데이터를 복구하는 장치 및 방법

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