KR20140009940A - 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체 - Google Patents

솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체 Download PDF

Info

Publication number
KR20140009940A
KR20140009940A KR1020130083099A KR20130083099A KR20140009940A KR 20140009940 A KR20140009940 A KR 20140009940A KR 1020130083099 A KR1020130083099 A KR 1020130083099A KR 20130083099 A KR20130083099 A KR 20130083099A KR 20140009940 A KR20140009940 A KR 20140009940A
Authority
KR
South Korea
Prior art keywords
sequence information
memory
solid state
state drive
memory cell
Prior art date
Application number
KR1020130083099A
Other languages
English (en)
Other versions
KR102116713B1 (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 삼성전자주식회사
Publication of KR20140009940A publication Critical patent/KR20140009940A/ko
Application granted granted Critical
Publication of KR102116713B1 publication Critical patent/KR102116713B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • 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
    • 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

Abstract

고내구성 메모리에 패리티 블록을, 저내구성 메모리에 데이터 블록을 저장하는 RAID로 구성되는 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체가 개시된다.

Description

솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체{SOLID STATE DRIVE CONTROLLER, SOLID STATE DRIVE, DATA PROCESSING METHOD THEREOF, MULTI CHANNEL SOLID STATE DRIVE, RAID CONTROLLER THEREFOR, AND COMPUTER-READABLE MEDIUM STORING COMPUTER PROGRAM PROVIDING SEQUENCE INFORMATION TO SOLID STATE DRIVE}
솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관련된다. 특히, 고내구성 메모리에 패리티 블록을, 저내구성 메모리에 데이터 블록을 저장하는 RAID로 구성되는 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체에 관련된다.
반도체 드라이브 또는 솔리드 스테이트 드라이브(SSD: Solid-state Drive) 는 비휘발성 플래시 메모리를 사용하여 만들어진 저장장치를 말한다. 플래시 메모리의 특성 상, 신규 데이터를 기록하기 위해서는 기존에 기록된 데이터를 삭제한 후 재기록하는 방법(in-place overwrite)이 사용되므로, 그 플래시 메모리의 최대 삭제 회수에 도달하면 더 이상 사용할 수 없게 된다.
SSD에는 싱글 레벨 셀(SLC: Single Level Cell) SSD, 멀티 레벨 셀(MLC: Multi-Level Cell), 트리플 레벨 셀(TLC: Triple Level Cell) 또는 이들의 조합 등 다양한 플래시 메모리가 사용된다.
SSD는 NAND 셀 메모리 어레이로 이루어지는 특성 상, In-place 업데이트를 하기 위해서는 쓰기(write) 연산 전에 삭제(delete) 연산이 필요하다.
그런데, SLC의 경우, 평균 약 10만 회, MLC는 약 1만 회, TLC는 약 1천 회의 삭제 연산이 수행된 이후에는 수명을 다하게 된다(wear-out).
SSD의 이러한 제한된 수명을 연장시키기 위하여, FTL(Flash Translation Layer)이라는 복잡한 프로세싱 로직 소프트웨어가 어드레스 매핑, 가비지 수집 및 부하 조절(wear-leveling)을 수행한다.
한편, 복수의 SSD를 이용하여 복수 배열 독립 디스크(RAID: Redundant Array of Independent Disks)를 구성할 수 있다. RAID를 구성하면, 저장된 데이터에 병렬적인 접근을 가능케 하거나, MTBF(Mean Time Between Failure)의 증가에 힘입어 고장에 대비하는 능력을 향상시키는 등의 효과가 있다.
RAID에는 여러 유형이 있으며, 그 중에서 패리티 비트(parity bit)를 포함하는 유형으로서 예컨대 RAID 5 및 RAID 6이 있다.
RAID 5는 데이터를 스트라이핑하여 여러 디스크에 분산 저장함과 함께, 스트라이핑된 데이터들을 배타적 논리합(XOR) 연산한 패리티 비트(parity bit)도 분산 저장한다. 이 패리티 비트는, 디스크 고장이 발생한 경우, 고장난 디스크가 저장한 데이터를 복구하는 데에 사용된다.
RAID 6은 데이터에 대한 2차 패리티를 추가 저장함으로써 RAID 5보다 향상된 고장 대비 능력을 제공한다.
그런데, 패리티 비트를 포함하는 RAID에서, 데이터와 패리티는 서로 다른 액세스 패턴을 생성한다. 즉, 각 디스크가 저장한 데이터 영역이 업데이트될 때마다, 해당 데이터에 매칭되는 패리티 영역이 함께 업데이트된다.
예컨대, RAID 5에서 데이터가 처음 기록된 후 한 번씩만 업데이트된다고 가정하더라도, 패리티 블록은 평균적으로 데이터 블록의 업데이트 회수(총 디스크 개수 - 1)만큼 더 자주 업데이트된다. RAID 6의 경우에도 데이터 블록보다 패리티 블록이 더욱 빈번히 업데이트된다.
따라서, 패리티 비트를 포함하는 RAID로 구성되는 SSD 스토리지 시스템에서는, SSD의 패리티 블록의 잦은 업데이트로 인하여 SSD의 수명이 단축되는 문제가 발생한다.
하나의 RAID 그룹 내에서 RAID 콘트롤러로부터 전달되는 패리티와 데이터를 적합한 유형의 메모리에 저장함으로써 저장효율과 수명을 동시에 향상시키는 고내구성 메모리에 패리티 블록을, 저내구성 메모리에 데이터 블록을 저장하는 RAID로 구성되는 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공하는 것을 목적으로 한다.
일측면에 따른 솔리드 스테이트 드라이브 콘트롤러는, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부; 및 적어도 하나의 제1 메모리 셀 어레이에는 상기 패리티 블록들을, 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들을, 각각 저장하는 메모리 제어부;를 포함한다.
다른 측면에 따른 솔리드 스테이트 드라이브는, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부; 적어도 하나의 제1 메모리 셀 어레이 및 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이를 포함하는 메모리부; 및 상기 제1 메모리 셀 어레이에는 상기 패리티 블록들이, 상기 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들이, 각각 저장되도록 상기 메모리부를 제어하는 메모리 제어부; 를 포함한다.
또 다른 측면에 따른 솔리드 스테이트 드라이브의 데이터 처리 방법은, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하는 단계; 상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어하는 단계;를 포함한다.
또 다른 측면에 따른 솔리드 스테이트 드라이브의 데이터 처리 방법은, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 생성하는 단계; 상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어하는 단계;를 포함한다.
또 다른 측면에 따른 다채널 솔리드 스테이트 드라이브는, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부; 메모리 채널마다 적어도 하나의 제1 메모리 셀 어레이 및 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이를 포함하는 다수의 메모리 채널을 포함하는 메모리부; 및 상기 제1 메모리 셀 어레이에는 상기 패리티 블록들이, 상기 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들이, 각각 저장되도록 상기 메모리부를 제어하는 메모리 제어부; 를 포함한다.
또 다른 측면에 따른 레이드 콘트롤러는, 솔리드 스테이트 드라이브가, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하고, 상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어함으로써 상기 레이드 기반 데이터를 처리하도록 상기 시퀀스 정보를 상기 솔리드 스테이트 드라이브에 제공한다.
또 다른 측면에 따른 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체는, 호스트 시스템의 I/O 서브시스템을 통하여 연결된 솔리드 스테이트 드라이브가, 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하고, 상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어함으로써 상기 레이드 기반 데이터를 처리하도록 상기 시퀀스 정보를 상기 솔리드 스테이트 드라이브에 제공한다.
하나의 RAID 그룹 내에서 RAID 콘트롤러로부터 전달되는 패리티와 데이터를 적합한 유형의 메모리에 저장함으로써 저장효율과 수명을 동시에 향상시키는 하이브리드 반도체 스토리지 시스템 및 그 동작방법을 구현할 수 있는 효과가 있다.
도 1은 일측면에 따른 솔리드 스테이트 드라이브의 일례 및 그 주변 장치와의 연결관계를 나타낸 블록도이다.
도 2는 도 1의 솔리드 스테이트 드라이브의 일례를 더욱 상세히 나타낸 블록도이다.
도 3은 도 2의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 4a 내지 도 4b는 도 1의 솔리드 스테이트 드라이브의 다른 실시예를 예시한 블록도이다.
도 5a 내지 도 5c는 도 1의 솔리드 스테이트 드라이브의 또다른 실시예들을 예시한 블록도이다.
도 6a은 도 5a의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 6b는 도 5b의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 6c는 도 5c의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 7은 다른 측면에 따른 다채널 솔리드 스테이트 드라이브의 일례를 나타낸 블록도이다.
이하, 첨부된 도면을 참조하여 실시를 위한 구체적인 예를 상세히 설명한다.
도 1은 일측면에 따른 솔리드 스테이트 드라이브의 일례 및 그 주변 장치와의 연결관계를 나타낸 블록도이다.
도 1에서 예시한 솔리드 스테이트 드라이브(1)는, 분산 패리티를 포함하는 레이드 기반의 스토리지 시스템을 구성하는 각각의 디스크로 동작한다.
설명의 편의를 위하여, 도 1의 솔리드 스테이트 드라이브(1)는 4개의 디스크로 이루어지는 레이드 5 레벨 기반의 좌대칭(left symmetric) 스토리지 시스템에서의 각각의 디스크인 것으로 한다. 즉, "Disk #n"은 "Disk #4"가 된다.
각각의 솔리드 스테이트 드라이브(1)는 크게 인터페이스부(10), 메모리부(30) 및 메모리 제어부(20)를 포함하여 이루어진다.
인터페이스부(10)는 레이드 콘트롤러(4)를 통하여 호스트 시스템(3)의 I/O 서브시스템과 연결된다.
메모리부(30)는 서로 다른 내구성을 가진 두 가지 메모리 셀 어레이를 포함한다. 즉, 도 1의 메모리부(30)는 고내구성 메모리부(300)와 저내구성 메모리부(310)를 포함한다. 도 1의 실시예에서는 고내구성 메모리부(300)는 다수의 SLC(Single Level Cell) 메모리 셀 어레이로 이루어지는 채널이고, 저내구성 메모리부(310)는 다수의 MLC(Multi Level Cell) 메모리셀 어레이로 이루어지는 채널이다.
인터페이스부(10)를 통하여 패리티 블록들과 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터가 솔리드 스테이트 드라이브(1)로 입력되면, 메모리 제어부(20)는 패리티 블록들은 고내구성 메모리부(300)에, 데이터 스트라이프 블록들은 저내구성 메모리부(310)에 각각 저장되도록 메모리부(30)를 제어한다.
솔리드 스테이트 드라이브(1)는, 분산 패리티를 포함하는 레이드 기반의 스토리지 시스템을 구성하는 네 개의 디스크로 동작하므로, 호스트 시스템(3) 또는 레이드 콘트롤러(4)로부터 일정한 규칙에 따라 데이터 스트라이프 블록들 및 데이터의 무결성을 보장하기 위한 패리티 블록들을 수신하게 된다. 도 1의 실시예는 4개의 디스크(솔리드 스테이트 드라이브(1))로 이루어지는 레이드 5 레벨 기반의 레이드 스토리지 시스템에 관한 것이므로, 레이드 콘트롤러(또는 호스트 시스템의 I/O 서브시스템)는 하나의 단위 데이터를 3개의 데이터 스트라이프 및 1개의 패리티로 분할하여 솔리드 스테이트 드라이브들로 전송한다.
솔리드 스테이트 드라이브(1)는, 만약 레이드 콘트롤러(4)로부터 데이터 스트라이프 블록을 전송받고 신규 쓰기(write) 요청을 받은 경우에는, 데이터 스트라이프 블록을 저내구성 메모리부(310)에 저장하고, 패리티 블록을 전송받고 신규 쓰기 요청을 받은 경우에는, 패리티 블록을 고내구성 메모리부(300)에 저장한다.
도 2는 도 1의 솔리드 스테이트 드라이브의 일례를 더욱 상세히 나타낸 블록도이다.
도 2에서 나타낸 솔리드 스테이트 드라이브는, 인터페이스부(10)를 통하여 블록들의 순서 정보를 명시적이거나 암시적으로 전송받는 경우에 관한 실시예이다.
도 2의 솔리드 스테이트 드라이브(2)는, 메모리 제어부(20)가 시퀀스 정보 인식부(210),시퀀스 정보 저장부(220) 및 FTL(Flash Translation Layer)부(200)를 더 포함한다.
시퀀스 정보 인식부(210)는 인터페이스부(10)를 통하여 호스트 시스템(3)의 I/O 서브시스템 또는 레이드 콘트롤러(4)로부터 패리티 블록들과 데이터 스트라이프 블록들의 순서를 지시하는 시퀀스 정보를 인식한다.
이 때, 시퀀스 정보는 명시적으로 부여될 수도 있고, 암시적으로 부여될 수도 있다.
시퀀스 정보가 명시적으로 부여되는 경우의 일례로서, 인터페이스부를 통하여 수신한 블록마다 그 블록이 데이터 스트라이프 블록인지 패리티 블록인지를 나타내는 지시자가 시퀀스 정보로서 솔리드 스테이트 드라이브(1)로 더 제공될 수 있다.
[표 1]은 시퀀스 정보가 명시적으로 부여되는 경우의 일례를 나타낸 표이다. 이 때, "D"는 데이터 스트라이프 블록을, "P"는 패리티 블록을 의미한다.
Disk #1 Disk #2 Disk #3 Disk #4
시퀀스 정보 DDDP DDPD DPDD PDDD
표 1을 참조하면, 디스크(Disk #1)로는 연속한 세 개의 데이터 스트라이프 블록이 수신된 후 한 개의 패리티 블록이 수신됨을 알 수 있다.
시퀀스 정보가 암시적으로 부여되는 경우의 일례로서, 인터페이스부를 통하여 블록들이 수신되는 규칙이 시퀀스 정보로서 솔리드 스테이트 드라이브(1)로 더 제공될 수 있다.
[표 2]는 시퀀스 정보가 암시적으로 부여되는 경우의 일례를 나타낸 표이다.
Disk #1 Disk #2 Disk #3 Disk #4
시퀀스 정보 (0, 4, 5L) (1, 4, 5L) (2, 4, 5L) (3, 4, 5L)
표 2에 예시한 규칙, 즉 시퀀스 정보는 세 개의 파라미터로 이루어진다. 첫 번째 파라미터는 몇 번째의 블록이 최초의 패리티 블록인지를 나타내고, 두 번째 파라미터는 다음 패리티 블록이 수신되는 주기를 나타내며, 세 번째 파라미터는 레이드의 특성을 나타낸다.
표 2를 참조하면, 디스크(Disk #1)로 수신되는 최초의 블록이 패리티 블록이고, 매 네 번째마다의 블록이 패리티 블록이며(즉, 나머지는 데이터 스트라이프 블록이며), 레이드의 특성은 좌대칭의 레이드 5 레벨임을 알 수 있다.
시퀀스 정보 저장부(220)는 시퀀스 정보 인식부(210)가 명시적 또는 암시적으로 인식한 시퀀스 정보를 저장한다.
FTL부(200)는 시퀀스 정보 저장부(220)에 저장된 시퀀스 정보에 기초하여, 수신된 블록들에 대하여 신규 쓰기 요청을 받는 경우, 수신된 블록이 패리티 블록인 경우에는 고내구성 메모리부(300)에, 수신된 블록이 데이터 스트라이프 블록인 경우에는 저내구성 메모리부(310)에 각각 저장을 한다.
이 때, FTL부(200)는 수신된 블록에 대한 논리 블록 어드레스 매핑 및 부하 조절을 더 수행한다.
한편, 시퀀스 정보가 호스트 시스템의 I/O 서브시스템으로부터 제공되는 경우, 범용의 레이드 콘트롤러를 변경 없이 그대로 이용할 수 있다는 장점이 있다.
도 3은 도 2의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 3에서 나타낸 바와 같이, 솔리드 스테이트 드라이브의 데이터 처리 방법은 시퀀스 정보 저장 단계(S10) 및 데이터 처리 단계(S20)를 포함한다.
시퀀스 정보 저장 단계(S10)에서는 처리될 블록들에 관한 시퀀스 정보가 인식되어 저장된다.
먼저, 인터페이스부(10)는 호스트 시스템(3)의 I/O 서브시스템 또는 레이드 콘트롤러(4)로부터 시퀀스 정보를 수신한다(S100). 도 2를 참조하여 설명한 바와 같이, 시퀀스 정보는 명시적으로 제공될 수도 있고, 암시적으로 제공될 수도 있다.
다음으로, 시퀀스 정보 인식부(210)는 명시적 또는 암시적으로 제공된 시퀀스 정보를 인식한다(S110). 시퀀스 정보 인식부(210)가 인식한 시퀀스 정보는 시퀀스 정보 저장부(220)에 저장된다(S120).
데이터 처리 단계(S20)에서는 시퀀스 정보에 기초하여, 수신된 블록들에 관한 처리가 수행된다.
먼저, 인터페이스부(10)를 통하여, 수신된 블록에 관한 신규 "쓰기" 요청이 수신된다(S200).
그러면, FTL부(200)는, 시퀀스 정보 저장부(220)에 저장된 시퀀스 정보를 참조하여, 블록의 특성을 판단한다(S210).
만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록인 경우, FTL부(200)는 그 블록을 고내구성 메모리에 저장한다(S220). 만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록이 아닌(즉, 데이터 스트라이프 블록인) 경우, FTL부(200)는 그 블록을 저내구성 메모리에 저장한다(S230).
도 4a 내지 도 4b는 도 1의 솔리드 스테이트 드라이브의 다른 실시예를 예시한 블록도이다.
도 2의 솔리드 스테이트 드라이브(1)는 시퀀스 정보 저장부(220)가 메모리 제어부 내에 존재한다. 그러나, 실시예에 따라 시퀀스 정보가 메모리부 내에 저장될 수 있다.
도 4a에 예시한 솔리드 스테이트 드라이브(4a)는 시퀀스 정보 저장부(221)를 고내구성 메모리부(300)의 일부에 포함한다.
또한, 도 4b에 예시한 솔리드 스테이트 드라이브(4b)는 시퀀스 정보 저장부(222)를 저내구성 메모리부(310)의 일부에 포함한다.
도 4a의 솔리드 스테이트 드라이브(4a) 및 도 4b의 솔리드 스테이트 드라이브(4b)는 시퀀스 정보 저장부의 위치에만 차이가 있을 뿐, 기본적으로 도 2의 솔리드 스테이트 드라이브(2)와 동일한 방식으로 동작한다. 도 4a의 FTL부(201)는 고내구성 메모리부에서, 도 4b의 FTL부(202)는 저내구성 메모리부에서 각각 시퀀스 정보를 참조한다는 점을 제외하면 도 2의 FTL부(200)와 동일한 기능을 수행한다. 또한, 도 2, 도 4a 및 도 4b의 솔리드 스테이트 드라이브들에서, 도면부호가 동일한 구성요소는 동일한 기능을 수행한다.
도 5a 내지 도 5c는 도 1의 솔리드 스테이트 드라이브의 또다른 실시예들을 예시한 블록도이다.
도 2의 솔리드 스테이트 드라이브(2)는 호스트 시스템(3)의 I/O 서브시스템 또는 레이드 콘트롤러(4)로부터 명시적 또는 암시적으로 제공받은 시퀀스 정보에 기초하여 데이터를 처리한다. 반면, 도 5a의 솔리드 스테이트 드라이브(5a) 및 도 5b의 솔리드 스테이트 드라이브(5b)는 장치 외부로부터 시퀀스 정보를 제공받는 대신, 메모리 제어부(23,24)의 시퀀스 정보 생성부(213,214)가 직접 시퀀스 정보를 생성한다.
시퀀스 정보 생성부(213,214)는 일정 기간 동안 레이드 콘트롤러가 시도하는 액세스의 패턴에 기초하여, 시퀀스 정보를 생성할 수 있다.
예컨대, 분산 패리티를 포함하는 레이드 레벨, 예컨대 레이드 레벨 5에 기초하여 레이드 내의 디스크에 대한 읽기, 쓰기 및 지우기가 수행되는 경우에는, 데이터 스트라이프 블록에 비하여 패리티 블록에 대해서 현저히 빈번하게 업데이트가 이루어진다. 따라서, 시퀀스 정보 생성부(213,214)가 일부 블록들이 빈번히 업데이트되는 패턴을 인식한 경우에는, 이러한 패턴에 기초하여, 빈번히 업데이트되는 블록들에는 패리티 블록들이 저장되는 규칙에 관한 시퀀스 정보를 생성할 수 있다.
도 5a의 실시예에서, 시퀀스 정보 생성부(213)는 생성한 시퀀스 정보를 시퀀스 정보 저장부(223)에 저장해 두고, FTL부(203)가 이를 참조하도록 할 수 있다.
도 5b의 실시예에서는 시퀀스 정보 생성부(214)가 생성한 시퀀스 정보를 실시간으로 FTL부(204)가 참조하도록 할 수도 있다. 이 경우, 시퀀스 정보 저장부는 생략될 수도 있다.
또는, 도 5c에서 나타낸 바와 같이, 솔리드 스테이트 드라이브(5c)는 현재의 레이드 특성에 적합한 시퀀스 정보를 미리 시퀀스 정보 저장부(215)에 저장해 둘 수 있다. 이 경우, 시퀀스 정보 생성부는 생략될 수도 있다.
도 6a 내지 도 6c는 도 5a 내지 도 5c의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를 나타낸 흐름도이다.
도 6a는 도 5a의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를나타낸 흐름도이다.
도 6a에서 나타낸 바와 같이, 도 5a의 솔리드 스테이트 드라이브의 데이터 처리 방법은 시퀀스 정보 생성 단계(S11) 및 데이터 처리 단계(S21)를 포함한다.
시퀀스 정보 생성 단계(S11)에서는 처리될 블록들에 관한 시퀀스 정보가 생성되어 저장된다.
앞서 설명한 바와 같이, 시퀀스 정보 생성부는 일정 기간 동안 레이드 콘트롤러가 시도하는 액세스의 패턴에 기초하여, 시퀀스 정보를 생성한다(S111).
시퀀스 정보 인식부가 인식한 시퀀스 정보는 시퀀스 정보 저장부에 저장된다(S121).
다음으로, 데이터 처리 단계(S21)에서는 시퀀스 정보 생성부가 생성한 시퀀스 정보에 기초하여, 수신된 블록들에 관한 처리가 수행된다.
먼저, 인터페이스부를 통하여, 수신된 블록에 관한 신규 "쓰기" 요청이 수신된다(S201).
그러면, FTL부는, 시퀀스 정보 저장부(223)에 저장된 시퀀스 정보를 참조하여, 블록의 특성을 판단한다(S211).
만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록인 경우, FTL부는 그 블록을 고내구성 메모리에 저장한다(S221). 만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록이 아닌(즉, 데이터 스트라이프 블록인) 경우, FTL부는 그 블록을 저내구성 메모리에 저장한다(S231).
도 6b는 도 5b의 솔리드 스테이트 드라이브의 데이터 처리 방법의 일례를나타낸 흐름도이다.
도 6b에서 나타낸 바와 같이, 도 5b의 솔리드 스테이트 드라이브의 데이터 처리 방법은 신규 쓰기 요청 수신 단계(S12), 시퀀스 정보 생성 단계(S22) 및 데이터 처리 단계(S23)를 포함한다.
먼저 인터페이스부를 통하여, 수신된 블록에 관한 신규 "쓰기" 요청이 수신되면, FTL부는 시퀀스 정보 생성부에 현재 처리되어야 할 블록들에 대한 시퀀스 정보의 생성을 요청한다(S12).
시퀀스 정보 생성 단계에서 시퀀스 정보 생성부는 일정 기간 동안 레이드 콘트롤러가 시도하는 액세스의 패턴에 기초하여, 현재 처리되어야 할 블록들에 대한 시퀀스 정보를 생성한다(S22).
다음으로, 데이터 처리 단계(S23)에서는 시퀀스 정보 생성부가 생성한 시퀀스 정보에 기초하여 FTL부가 현재 처리되어야 할 블록의 특성을 판단한다.
만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록인 경우, FTL부는 그 블록을 고내구성 메모리에 저장한다(S222). 만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록이 아닌(즉, 데이터 스트라이프 블록인) 경우, FTL부는 그 블록을 저내구성 메모리에 저장한다(S232).
도 6c에서 나타낸 바와 같이, 도 5c의 솔리드 스테이트 드라이브의 데이터 처리 방법은 신규 쓰기 요청 수신 단계(S13)및 데이터 처리 단계(S23)를 포함한다.
먼저 인터페이스부를 통하여, 수신된 블록에 관한 신규 "쓰기" 요청이 수신되면, FTL부는 시퀀스 정보 저장부에 저장된 시퀀스 정보에 기초하여 현재 처리되어야 할 블록의 특성을 판단한다(S213).
만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록인 경우, FTL부는 그 블록을 고내구성 메모리에 저장한다(S223). 만약 신규 "쓰기" 요청이 수신된 블록이 패리티 블록이 아닌(즉, 데이터 스트라이프 블록인) 경우, FTL부는 그 블록을 저내구성 메모리에 저장한다(S233).
도 7은 다른 측면에 따른 다채널 솔리드 스테이트 드라이브의 일례를 나타낸 블록도이다.
도 7의 다채널 솔리드 스테이트 드라이브(7)의 가장 큰 특징은, 드라이브 내에서 자체적인 분산 패리티를 갖는 레이드 알고리즘을 기초로 여러 채널의 메모리부에 데이터 및 메모리를 관리할 수 있는 내부 레이드 콘트롤러를 갖는다는 점이다.
이를 위하여, 도 7의 다채널 솔리드 스테이트 드라이브(7)는, 인터페이스부(10), 메모리 제어부(26) 및 다채널의 메모리부(40,42,44,46)를 가지며, 메모리부(40,42,44,46)는 각 채널마다 고내구성 메모리부(400) 및 저내구성 메모리부(402)를 포함한다.
도 7에서 나타낸 솔리드 스테이트 드라이브(7)는, 인터페이스부(10)를 통하여 블록들의 순서 정보를 명시적이거나 암시적으로 전송받는 경우에 관한 실시예이다.
도 7의 다채널 솔리드 스테이트 드라이브(7)는, 메모리 제어부(26)가 시퀀스 정보 인식부(215), 시퀀스 정보 저장부(225), 내부 레이드 제어부(236) 및 FTL(Flash Translation Layer)부(205)를 더 포함한다.
시퀀스 정보 인식부(215)는 인터페이스부(10)를 통하여 호스트 시스템의 I/O 서브시스템 또는 외부의 레이드 콘트롤러로부터 패리티 블록들과 데이터 스트라이프 블록들의 순서를 지시하는 "외부" 시퀀스 정보를 인식한다.
이 때, 외부 시퀀스 정보는 명시적으로 부여될 수도 있고, 암시적으로 부여될 수도 있다.
시퀀스 정보 저장부(225)는 시퀀스 정보 인식부(215)가 명시적 또는 암시적으로 인식한 외부 시퀀스 정보를 저장한다.
내부 레이드 제어부(236)는 다채널 솔리드 스테이트 드라이브(7)가 채용한 레이드 레벨에 따른 알고리즘에 기초하여, 처리되어야 할 데이터 스트라이프 블록 및 패리티 블록이 저장되는 채널을 나타내는 내부 시퀀스 정보를 FTL부(205)에 제공한다. 내부 시퀀스 정보도 시퀀스 정보 저장부(225)에 외부 시퀀스 정보와 함께 저장될 수 있다.
FTL부(205)는 시퀀스 정보 저장부(225)에 저장된 외부 시퀀스 정보 및 내부 시퀀스 정보에 기초하여, 수신된 블록들에 대하여 신규 쓰기 요청을 받는 경우, 적절한 메모리 채널에 대하여, 수신된 블록이 패리티 블록인 경우에는 그 메모리 채널의 고내구성 메모리부(예컨대 400)에, 수신된 블록이 데이터 스트라이프 블록인 경우에는 그 메모리 채널의 저내구성 메모리부(예컨대 402)에 각각 저장을 한다.
이 때, FTL부(205)는 수신된 블록에 대한 논리 블록 어드레스 매핑 및 부하 조절을 더 수행한다.
한편, 실시예들을 통하여, 업데이트가 빈번한 패리티 블록은 고내구성 메모리부에, 업데이트가 뜸한 데이터 스트라이프 블록은 저내구성 메모리부에 저장하기 위한 장치와 방법을 설명하였다.
그런데, 메모리부의 저장영역의 크기는 두 가지 형식의 메모리 셀의 내구성 및 I/O의 패턴 등을 고려하여 조정이 가능하다.
예컨대, 고내구성 메모리 셀의 저장영역이 레이드 레벨(예컨대 레이드 5 레벨)에서 요구하는 패리티 블록의 저장영역보다 큰 경우, 패리티 블록이 저장될 수 있는 고내구성 메모리부의 영역은 남는 반면 데이터 스트라이프 블록이 저장될 수 있는 저내구성 메모리부의 영역은 모자라게 된다.
이 때, 데이터 스트라이프 블록의 저장공간의 효율적인 사용을 위해서는 저내구도 메모리부에 저장된 일부 데이터를 고내구도 메모리부로 이동하여 저장할 수 있다.
반대로, 저내구성 메모리 셀의 저장영역이 레이드 레벨(예컨대 레이드 5 레벨)에서 요구하는 데이터 스트라이프 블록의 저장영역보다 큰 경우, 패리티 블록이 저장될 수 있는 고내구성 메모리부의 영역은 모자라는 반면 데이터 스트라이프 블록이 저장될 수 있는 저내구성 메모리부의 영역은 남게 된다.
이 때, 데이터 스트라이프 블록의 저장공간의 효율적인 사용을 위해서는 고내구도 메모리부에 저장된 일부 패리티 블록을 고내구도 메모리부로 이동하여 저장할 수 있다.
또한, 오랜 기간 사용함으로써 일부 메모리 셀의 마모가 심해진 경우, 잦은 Failure가 발생하는 경우, Rebuild를 하는 경우 등에도 동일한 시퀀스 정보 인식 과정을 거쳐 시퀀스 정보를 저장한 뒤, 저장된 시퀀스 정보에 기초하여 데이터와 패리티를 타 메모리의 저장영역으로 분산하여 저장할 수 있다.
한편, 메모리부를 이루는 고내구성 메모리 및 저내구성 메모리는 NAND 플래시 메모리 셀뿐만 아니라, 발명의 사상을 벗어나지 않는 범위에서 그 밖의 비휘발성 메모리 셀 또는 휘발성 메모리 셀을 사용하는 것도 가능하다.
한편, 본 발명의 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 발명을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
나아가 전술한 실시 예들은 본 발명을 예시적으로 설명하기 위한 것으로 본 발명의 권리범위가 특정 실시 예에 한정되지 아니할 것이다.

Claims (36)

  1. 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부; 및
    적어도 하나의 제1 메모리 셀 어레이에는 상기 패리티 블록들을, 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들을, 각각 저장하는 메모리 제어부;를 포함하는 솔리드 스테이트 드라이브 콘트롤러.
  2. 제1항에 있어서,
    상기 메모리 제어부는,
    상기 패리티 블록들과 상기 데이터 스트라이프 블록들의 순서를 지시하는 시퀀스 정보를 인식하는 시퀀스 정보 인식부; 및
    상기 시퀀스 정보에 기초하여, 신규 쓰기 요청된 적어도 하나의 패리티 블록을 상기 제1 메모리 셀 어레이에, 신규 쓰기 요청된 데이터 스트라이프 블록들을 상기 제2 메모리 셀 어레이에 각각 저장하는 FTL(Flash Translation Layer)부;를 더 포함하는 솔리드 스테이트 드라이브 콘트롤러.
  3. 제1항에 있어서,
    상기 메모리 제어부는, 상기 시퀀스 정보를 저장하는 시퀀스 정보 저장부;를 더 포함하는 솔리드 스테이트 드라이브 콘트롤러.
  4. 제2항에 있어서,
    상기 시퀀스 정보 인식부는,
    상기 인터페이스부를 통하여, 호스트 시스템의 I/O 서브시스템 또는 레이드콘트롤러로부터 수신한 시퀀스 정보를, 상기 시퀀스 정보로 인식하는 솔리드 스테이트 드라이브 콘트롤러.
  5. 제2항에 있어서,
    상기 시퀀스 정보 인식부는,
    상기 인터페이스부를 통하여, 호스트 시스템의 I/O 서브시스템 또는 레이드콘트롤러로부터 수신한 정보를 해석하여 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브 콘트롤러.
  6. 제2항에 있어서,
    상기 시퀀스 정보 인식부는,
    미리 정해진 시간구간 동안의 액세스 패턴에 기초하여 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브 콘트롤러.
  7. 제6항에 있어서,
    상기 시퀀스 정보 인식부는, 상기 액세스 패턴이 일부 블록들을 빈번하게 업데이트하는 패턴인 경우, 상기 일부 블록들에는 패리티 블록들이 저장되는 것으로 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브 콘트롤러.
  8. 제1항에 있어서,
    상기 제1 메모리 셀 어레이는 고내구성 플래시 메모리이고, 상기 제2 메모리 셀 어레이는 저내구성 플래시 메모리인 솔리드 스테이트 드라이브 콘트롤러.
  9. 제8항에 있어서,
    상기 고내구성 플래시 메모리는 SLC(Single-Level Cell)이고, 상기 제2 메모리 셀 어레이는 MLC(Multi-Level Cell)인 솔리드 스테이트 드라이브 콘트롤러.
  10. 제8항에 있어서,
    상기 고내구성 플래시 메모리는 MLC이고, 상기 제2 메모리 셀 어레이는 TLC(Triple-Level Cell)인 솔리드 스테이트 드라이브 콘트롤러.
  11. 제1항에 있어서,
    상기 레이드 기반 데이터는 레이드 레벨 5 기반 데이터인 솔리드 스테이트 드라이브 콘트롤러.
  12. 제1항에 있어서,
    상기 레이드 기반 데이터는 레이드 레벨 6 기반 데이터인 솔리드 스테이트 드라이브 콘트롤러.
  13. 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부;
    적어도 하나의 제1 메모리 셀 어레이 및 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이를 포함하는 메모리부; 및
    상기 제1 메모리 셀 어레이에는 상기 패리티 블록들이, 상기 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들이, 각각 저장되도록 상기 메모리부를 제어하는 메모리 제어부; 를 포함하는 솔리드 스테이트 드라이브.
  14. 제13항에 있어서,
    상기 메모리 제어부는,
    상기 패리티 블록들과 상기 데이터 스트라이프 블록들의 순서를 지시하는 시퀀스 정보를 인식하는 시퀀스 정보 인식부; 및
    상기 시퀀스 정보에 기초하여, 신규 쓰기 요청된 적어도 하나의 패리티 블록을 상기 제1 메모리 셀 어레이에, 신규 쓰기 요청된 데이터 스트라이프 블록들을 상기 제2 메모리 셀 어레이에 각각 저장하는 FTL(Flash Translation Layer)부;를 더 포함하는 솔리드 스테이트 드라이브.
  15. 제1항에 있어서,
    상기 메모리 제어부는, 상기 시퀀스 정보를 저장하는 시퀀스 정보 저장부;를 더 포함하는 솔리드 스테이트 드라이브.
  16. 제14항에 있어서,
    상기 시퀀스 정보 인식부는,
    상기 인터페이스부를 통하여, 호스트 시스템의 I/O 서브시스템 또는 레이드콘트롤러로부터 수신한 시퀀스 정보를, 상기 시퀀스 정보로 인식하는 솔리드 스테이트 드라이브.
  17. 제14항에 있어서,
    상기 시퀀스 정보 인식부는,
    상기 인터페이스부를 통하여, 호스트 시스템의 I/O 서브시스템 또는 레이드콘트롤러로부터 수신한 정보를 해석하여 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브.
  18. 제14항에 있어서,
    상기 시퀀스 정보 인식부는,
    미리 정해진 시간구간 동안의 액세스 패턴에 기초하여 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브.
  19. 제18항에 있어서,
    상기 시퀀스 정보 인식부는, 상기 액세스 패턴이 일부 블록들을 빈번하게 업데이트하는 패턴인 경우, 상기 일부 블록들에는 패리티 블록들이 저장되는 것으로 상기 시퀀스 정보를 인식하는 솔리드 스테이트 드라이브.
  20. 제13항에 있어서,
    상기 제1 메모리 셀 어레이는 고내구성 플래시 메모리이고, 상기 제2 메모리 셀 어레이는 저내구성 플래시 메모리인 솔리드 스테이트 드라이브.
  21. 제20항에 있어서,
    상기 고내구성 플래시 메모리는 SLC(Single-Level Cell)이고, 상기 제2 메모리 셀 어레이는 MLC(Multi-Level Cell)인 솔리드 스테이트 드라이브.
  22. 제20항에 있어서,
    상기 고내구성 플래시 메모리는 MLC이고, 상기 제2 메모리 셀 어레이는 TLC(Triple-Level Cell)인 솔리드 스테이트 드라이브.
  23. 제13항에 있어서,
    상기 레이드 기반 데이터는 레이드 레벨 5 기반 데이터인 솔리드 스테이트 드라이브.
  24. 제13항에 있어서,
    상기 레이드 기반 데이터는 레이드 레벨 6 기반 데이터인 솔리드 스테이트 드라이브.
  25. 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하는 단계;
    상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어하는 단계;를 포함하는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  26. 제25항에 있어서,
    인식된 시퀀스 정보를 저장하는 단계;를 더 포함하는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  27. 제26항에 있어서,
    상기 인식된 시퀀스 정보는 메모리 제어부 내에 저장되는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  28. 제26항에 있어서,
    상기 인식된 시퀀스 정보는 상기 고내구성 메모리셀의 일부에 저장되는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  29. 제26항에 있어서,
    상기 인식된 시퀀스 정보는 상기 저내구성 메모리셀의 일부에 저장되는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  30. 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 생성하는 단계;
    상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어하는 단계;를 포함하는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  31. 제30항에 있어서,
    인식된 시퀀스 정보를 저장하는 단계;를 더 포함하는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  32. 제30항에 있어서,
    상기 시퀀스 정보를 생성하는 단계에서,
    업데이트되는 블록들에 대한 액세스 패턴을 기초로 상기 시퀀스 정보를 생성하는 솔리드 스테이트 드라이브의 데이터 처리 방법.
  33. 패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터를 수신하는 인터페이스부;
    메모리 채널마다 적어도 하나의 제1 메모리 셀 어레이 및 상기 제1 메모리 셀 어레이보다 내구성이 높지 않은 적어도 하나의 제2 메모리 셀 어레이를 포함하는 다수의 메모리 채널을 포함하는 메모리부; 및
    상기 제1 메모리 셀 어레이에는 상기 패리티 블록들이, 상기 제2 메모리 셀 어레이에는 상기 데이터 스트라이프 블록들이, 각각 저장되도록 상기 메모리부를 제어하는 메모리 제어부; 를 포함하는 다채널 솔리드 스테이트 드라이브.
  34. 제33항에 있어서,
    상기 메모리 제어부는,
    상기 패리티 블록들과 상기 데이터 스트라이프 블록들의 순서를 지시하는 외부 시퀀스 정보를 인식하는 시퀀스 정보 인식부;
    레이드 레벨에 따른 알고리즘에 기초하여, 처리되어야 할 데이터 스트라이프 블록 및 패리티 블록이 저장되는 채널을 나타내는 내부 시퀀스 정보를 제공하는 내부 레이드 제어부; 및
    상기 외부 시퀀스 정보 및 상기 내부 시퀀스 정보에 기초하여, 신규 쓰기 요청된 적어도 하나의 패리티 블록을 상기 내부 시퀀스 정보에 따라 결정되는 메모리 채널의 상기 제1 메모리 셀 어레이에, 신규 쓰기 요청된 데이터 스트라이프 블록들을 상기 내부 시퀀스 정보에 따라 결정되는 메모리 채널의 상기 제2 메모리 셀 어레이에 각각 저장하는 FTL부;를 더 포함하는 다채널 솔리드 스테이트 드라이브.
  35. 솔리드 스테이트 드라이브가,
    패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하고,
    상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어함으로써 상기 레이드 기반 데이터를 처리하도록 상기 시퀀스 정보를 상기 솔리드 스테이트 드라이브에 제공하는 레이드 콘트롤러.
  36. 호스트 시스템의 I/O 서브시스템을 통하여 연결된 솔리드 스테이트 드라이브가,
    패리티 블록들 및 데이터 스트라이프 블록들을 포함하는 레이드 기반 데이터에 관한 시퀀스 정보를 인식하고,
    상기 시퀀스 정보를 기초로, 신규 쓰기 요청이 수신된 블록이 패리티 블록인 경우, 상기 신규 쓰기 요청이 수신된 블록이 고내구성 메모리셀에 저장되고, 패리티 블록이 아닌 경우, 저내구성 메모리셀에 저장되도록 메모리를 제어함으로써 상기 레이드 기반 데이터를 처리하도록 상기 시퀀스 정보를 상기 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020130083099A 2012-07-13 2013-07-15 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체 KR102116713B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20120076824 2012-07-13
KR1020120076824 2012-07-13

Publications (2)

Publication Number Publication Date
KR20140009940A true KR20140009940A (ko) 2014-01-23
KR102116713B1 KR102116713B1 (ko) 2020-06-01

Family

ID=49916356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130083099A KR102116713B1 (ko) 2012-07-13 2013-07-15 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체

Country Status (4)

Country Link
US (1) US20150160999A1 (ko)
KR (1) KR102116713B1 (ko)
CN (1) CN104641419A (ko)
WO (1) WO2014011011A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210093821A (ko) * 2016-02-23 2021-07-28 에스케이텔레콤 주식회사 Raid 기반의 스토리지 장치

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110175088B (zh) * 2013-08-23 2022-11-11 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN104425019B (zh) * 2013-08-23 2018-07-06 慧荣科技股份有限公司 存取快闪存储器中存储单元的方法以及使用该方法的装置
CN107632904B (zh) 2013-08-23 2020-12-22 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN104424127A (zh) 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
US9213485B1 (en) * 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
KR20180051703A (ko) * 2016-11-07 2018-05-17 삼성전자주식회사 Raid 방식으로 데이터를 저장하는 스토리지 장치
CN106952663A (zh) * 2017-03-13 2017-07-14 西北工业大学 一种多接口高速大容量固态存储产品开发平台
CN108255414B (zh) 2017-04-14 2020-04-03 新华三信息技术有限公司 固态硬盘访问方法及装置
CN108733318A (zh) * 2017-04-20 2018-11-02 立而鼎科技(深圳)有限公司 一种tlc nand flash固态硬盘的写入方法
WO2019127212A1 (zh) 2017-12-28 2019-07-04 华为技术有限公司 一种数据写入的方法及固态硬盘阵列
US10783036B2 (en) * 2018-10-19 2020-09-22 Seagate Technology Llc Storage system stripe grouping using multiple logical units
CN110109621B (zh) * 2019-04-28 2022-07-12 南威软件股份有限公司 一种提升固态硬盘阵列系统性能和寿命的方法
US11042324B2 (en) * 2019-04-29 2021-06-22 EMC IP Holding Company LLC Managing a raid group that uses storage devices of different types that provide different data storage characteristics
KR20200142219A (ko) 2019-06-12 2020-12-22 삼성전자주식회사 전자 장치 및 그의 저장 공간 이용 방법
US10970170B2 (en) 2019-08-29 2021-04-06 Micron Technology, Inc. Shared parity protection
CN110989928B (zh) * 2019-11-20 2020-10-09 北京连山科技股份有限公司 Raid0中存储单元的管理方法及管理设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172258A1 (en) * 2007-12-27 2009-07-02 Pliant Technology, Inc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US20100191907A1 (en) * 2009-01-26 2010-07-29 Lsi Corporation RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy
US20110093650A1 (en) * 2009-10-16 2011-04-21 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of preserving stored data during power interruption
US8429514B1 (en) * 2008-09-24 2013-04-23 Network Appliance, Inc. Dynamic load balancing of distributed parity in a RAID array
US20140365821A1 (en) * 2011-03-21 2014-12-11 Apple Inc. Independent Management of Data and Parity Logical Block Addresses

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8078794B2 (en) * 2000-01-06 2011-12-13 Super Talent Electronics, Inc. Hybrid SSD using a combination of SLC and MLC flash memory arrays
US8261136B2 (en) * 2009-06-29 2012-09-04 Sandisk Technologies Inc. Method and device for selectively refreshing a region of a memory of a data storage device
US8639877B2 (en) * 2009-06-30 2014-01-28 International Business Machines Corporation Wear leveling of solid state disks distributed in a plurality of redundant array of independent disk ranks
US8332578B2 (en) * 2009-07-31 2012-12-11 Intel Corporation Method and system to improve the performance of a multi-level cell (MLC) NAND flash memory
KR101769883B1 (ko) * 2009-09-09 2017-08-21 샌디스크 테크놀로지스 엘엘씨 저장부 할당 장치, 시스템, 및 방법
US8266501B2 (en) * 2009-09-29 2012-09-11 Micron Technology, Inc. Stripe based memory operation
US8437183B2 (en) * 2009-12-16 2013-05-07 Sandisk Il Ltd. Auxiliary parity bits for data written in multi-level cells
JP4806084B1 (ja) * 2010-05-28 2011-11-02 株式会社東芝 情報処理装置
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090172258A1 (en) * 2007-12-27 2009-07-02 Pliant Technology, Inc Flash memory controller garbage collection operations performed independently in multiple flash memory groups
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8429514B1 (en) * 2008-09-24 2013-04-23 Network Appliance, Inc. Dynamic load balancing of distributed parity in a RAID array
US20100191907A1 (en) * 2009-01-26 2010-07-29 Lsi Corporation RAID Converter and Methods for Transforming a First RAID Array to a Second RAID Array Without Creating a Backup Copy
US20110093650A1 (en) * 2009-10-16 2011-04-21 Samsung Electronics Co., Ltd. Nonvolatile memory system and related method of preserving stored data during power interruption
US20140365821A1 (en) * 2011-03-21 2014-12-11 Apple Inc. Independent Management of Data and Parity Logical Block Addresses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210093821A (ko) * 2016-02-23 2021-07-28 에스케이텔레콤 주식회사 Raid 기반의 스토리지 장치

Also Published As

Publication number Publication date
WO2014011011A1 (ko) 2014-01-16
KR102116713B1 (ko) 2020-06-01
US20150160999A1 (en) 2015-06-11
CN104641419A (zh) 2015-05-20

Similar Documents

Publication Publication Date Title
KR102116713B1 (ko) 솔리드 스테이트 드라이브 콘트롤러, 솔리드 스테이트 드라이브, 솔리드 스테이트 드라이브의 데이터 처리 방법, 다채널 솔리드 스테이트 드라이브, 레이드 콘트롤러, 시퀀스 정보를 솔리드 스테이트 드라이브에 제공하는 컴퓨터 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체
EP3800554B1 (en) Storage system managing metadata, host system controlling storage system, and storage system operating method
US9747177B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US9582220B2 (en) Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9158681B1 (en) Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
US7574554B2 (en) Storage system and data protection method therefor
TWI497293B (zh) 固態儲存裝置內之資料管理
US10353614B2 (en) Raid system and method based on solid-state storage medium
EP2937774A1 (en) Storage controller, storage system and method of operating storage controller
US20180239671A1 (en) Method for Processing Stripe in Storage Device and Storage Device
US20130290613A1 (en) Storage system and storage apparatus
US10795768B2 (en) Memory reallocation during raid rebuild
CN104471546A (zh) 用于提高固态硬盘可靠性的有效的磁盘冗余阵列技法
US20160062663A1 (en) Process and Apparatus to Reduce Declared Capacity of a Storage Device by Altering an Encoding Format
US20160062666A1 (en) Process and Apparatus to Reduce Declared Capacity of a Storage Device by Making Specific Logical Addresses Unavailable
US20120233382A1 (en) Data storage apparatus and method for table management
US9519427B2 (en) Triggering, at a host system, a process to reduce declared capacity of a storage device
US9524112B2 (en) Process and apparatus to reduce declared capacity of a storage device by trimming
US9582193B2 (en) Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9563362B2 (en) Host system and process to reduce declared capacity of a storage device by trimming
US20230333750A1 (en) Apparatus and method for power-loss data protection in a system
US11934264B2 (en) ECC parity biasing for Key-Value data storage devices
US20160062667A1 (en) Process and Apparatus to Reduce Declared Capacity of a Storage Device by Reducing a Count of Logical Addresses
US9552166B2 (en) Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582212B2 (en) Notification of trigger condition to reduce declared capacity of a storage device

Legal Events

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