KR101445025B1 - 신뢰성 있는 ssd를 위한 효율적인 raid 기법 - Google Patents

신뢰성 있는 ssd를 위한 효율적인 raid 기법 Download PDF

Info

Publication number
KR101445025B1
KR101445025B1 KR1020130013954A KR20130013954A KR101445025B1 KR 101445025 B1 KR101445025 B1 KR 101445025B1 KR 1020130013954 A KR1020130013954 A KR 1020130013954A KR 20130013954 A KR20130013954 A KR 20130013954A KR 101445025 B1 KR101445025 B1 KR 101445025B1
Authority
KR
South Korea
Prior art keywords
page
data
write request
threshold time
processed
Prior art date
Application number
KR1020130013954A
Other languages
English (en)
Other versions
KR20130092482A (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 PCT/KR2013/001029 priority Critical patent/WO2013119074A1/ko
Priority to US14/377,159 priority patent/US9496051B2/en
Priority to CN201380006059.5A priority patent/CN104471546B/zh
Publication of KR20130092482A publication Critical patent/KR20130092482A/ko
Application granted granted Critical
Publication of KR101445025B1 publication Critical patent/KR101445025B1/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/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • 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
    • 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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
    • 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/1096Parity calculation or recalculation after configuration or reconfiguration of the system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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
    • 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/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치가 제공된다. 상기 장치는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부를 포함한다.

Description

신뢰성 있는 SSD를 위한 효율적인 RAID 기법{EFFICIENT RAID SCHEME FOR RELIABLE SSD}
본 발명은 SSD 장치의 신뢰성을 향상시키는 방법 및 장치에 연관되며, 보다 특정하게는 SSD 장치 내부에 RAID 기법을 적용하여 신뢰성을 향상시키는 방법 및 장치에 연관된다.
플래시 메모리 기반 SSD는 저전력 소모, 높은 속도, 가벼운 무게 등 다양한 장점을 포함하기 때문에 노트북과 개인용 컴퓨터에서부터 서버와 클라우드 시스템으로까지 널리 사용되는 저장장치이다.
그러나, 현재의 SSD는 안전성이 떨어진다는 점이 가장 큰 문제점으로 지적되고 있으며, 이로 인해 상기 SSD의 주요 컴포넌트인 플래시 메모리가 빈번한 에러를 발생시키며 한정된 소거 횟수를 갖는다는 사실에서 기인한다.
최근에는, 한 셀에 두 개 이상의 비트를 저장하는 MLC(Multi Level Cell) 또는 TLC(Triple Level Cell) 플래시 메모리가 시장에서 널리 채택되면서 좀더 심각한 문제로 인식되고 있는 실정이다. 통상적으로 상기 SSD는 플래시 메모리의 OOB(Out Of Band)영역에 에러 검출 및 정정 코드를 적어놓고, 이를 이용하여 예기치 않은 에러에 대응한다. 그러나, 에러 검출 및 정정 코드로는 한 개의 페이지 입출력에서 발생하는 몇 개의 비트 에러에 대해서만 검출 및 정정이 가능하며, 블록이나 칩 레벨의 에러에는 어떠한 대응도, 심지어는 검출도 할 수 없다는 문제점을 포함하고 있다.
또한, 상기 SSD 장치의 신뢰성을 향상 시키기 위하여 RAID 기법을 SSD 내부에 적용하는 종래의 방법이 있으나, RAID 기법의 전통적인 문제점인 작은 쓰기의 문제로 인해 플래시 메모리의 성능 저하와 수명을 감소시키는 문제점이 있다.
따라서, RAID 기법에서 상기 작은 쓰기 문제를 해결하고, 신뢰성 있는 SSD 장치를 설계할 필요가 있다.
일측에 따르면, 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치가 제공된다.
일실시예에 따르면, 상기 제어 장치는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부를 포함할 수 있다.
일실시예에 따르면, 상기 제어 장치는 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 복수 개의 페이지에 쓰여진 데이터의 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택하여 상기 데이터 클리닝을 수행하는 클리닝부를 더 포함할 수 있다.
일실시예에 따르면, 상기 클리닝부는 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치는 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부를 더 포함할 수 있다.
일실시예에 따르면, 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
다른 일측에 따르면, 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 패리티 생성부를 포함하는 제어 장치가 제공된다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 패리티 생성부는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
또 다른 일측에 따르면, 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법이 제공된다.
일실시예에 따르면, 상기 제어 방법은 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 단계 및 상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 단계를 포함할 수 있다.
일실시예에 따르면, 상기 제어 방법은 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 방법은 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계를 더 포함할 수 있고, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 방법은 상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 방법은 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
또 다른 일측에 따르면, 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 단계를 포함하는 제어 방법이 제공된다.
일실시예에 따르면, 상기 제어 방법의 상기 패리티 데이터를 생성하는 단계는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성할 수 있다.
도 1은 일실시예에 따른, 저장 장치의 구성도이다.
도 2는 일실시예에 따른, 상기 제어 장치의 블록도이다.
도 3은 일실시예에 따른, 상기 제어 장치에서 데이터 갱신이 발생하는 경우를 설명하는 도면이다.
도 4는 일실시예에 따른, 상기 제어 장치에서 부분 패리티가 생성될 수 있는 부분 스트라이프 패리티 풀을 설명하는 도면이다.
도 5는 일실시예에 따른, 상기 제어 장치에서 데이터 클리닝 수행 전을 설명하는 개념도이다.
도 6은 일실시예에 따른, 상기 제어 장치에서 상기 데이터 클리닝 수행 후를 설명하는 개념도이다.
도 7은 일실시예에 따른, 상기 제어 장치에서 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법의 흐름도이다.
도 8은 일실시예에 따른, 임계 시간에 따른 상기 제어 방법의 흐름도이다.
도 9은 일실시예에 따른, 상기 임계 시간 및 스트라이프의 클린 페이지 비율에 다른 상기 제어 방법의 흐름도이다.
도 10은 일실시예에 따른, 상기 제어 장치에서 상기 데이터 클리닝을 수행하는 흐름도이다.
이하에서, 일부 실시예들을, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
아래 설명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어를 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 관례, 새로운 기술의 출현 등에 따라 달라질 수 있다.
또한 특정한 경우는 이해를 돕거나 및/또는 설명의 편의를 위해 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를 기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와 명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
SSD(Solid-State Drive)는 다수의 플래시 메모리 칩과 입출력 채널 등으로 구성된다. 대부분의 SSD는 성능 향상을 위하여 각 플래시 메모리 칩이 병렬적으로 동작 하도록 데이터를 인터리빙 하는 RAID-0 구조를 취하며, 각 입출력 채널도 동시에 데이터를 전송할 수 있도록 한다. 상기 RAID는 종류별로 RAID-0, 1, 2, 3, 4, 5, 6 등 많이 존재하지만 RAID-5가 가장 많이 사용되고 있다.
상기 RAID-5를 상기 SSD에 도입하는 경우, HDD에서와는 다르게 플래시 메모리에서는 데이터가 제자리 갱신이 되지 않으므로 항상 다른 공간에 쓰기를 해야 하므로 빈번한 데이터 갱신은 많은 수의 패리티 쓰기를 수반하여 플래시 메모리의 클리닝 비용 증가와 수명을 단축시키는 결과를 초래한다. 또한, 데이터 갱신 과정 동안 패리티가 있는 칩은 다른 칩에 비하여 더욱 빈번한 쓰기가 많이 발생하므로 패리티를 포함하는 칩은 다른 칩에 비해 수명이 감소된다.
종래에서, 상기 SSD 장치가 수신하는 쓰기 요청은 LBN(Logical Block Number) 형태이며, 상기 LBN이 연속적이고 큰 크기로 이루어지는 경우 상기 RAID의 작은 쓰기 문제는 발생하지 않지만 대부분의 쓰기 요청이 작은 크기이다.
그러므로, 본 발명에서는 상기 LBN이 연속적이지 않고 작은 크기라도 앞서 기술된 문제를 해결할 수 있는 데이터 제어 장치 및 방법이 제공된다. 또한 추가적으로 부분 스트라이프 패리티(Partial Stripe Parity)(또는, 부분 패리티)를 생성함으로써 상기 저장 장치(이를 테면, 상기 SSD와 같은)의 신뢰성을 향상시킬 수 있다.
도 1은 일실시예에 따른, 저장 장치(101)의 구성도이다. 상기 저장 장치는 제어 장치(100), 호스트 인터페이스(103) 및 플래시 메모리 칩(110, 120)을 포함할 수 있다.
일실시예에 따르면, 상기 저장 장치의 상기 호스트 인터페이스는 상기 저장 장치를 제어하는 상기 제어 장치와 외부의 호스트 컴퓨터(102) 사이에서 인터페이스를 제공할 수 있다. 상기 호스트 인터페이스는 이를 테면, PATA(Parallel ATA), SATA(Serial ATA), 또는 USB(Universal Serial Bus) 등의 통신 규격일 수 있다. 따라서, 상기 저장 장치는 상기 호스트 인터페이스를 통해 호스트(102)로부터 데이터 액세스(data access) 명령(이를 테면, 데이터 읽기, 데이터 쓰기 등)을 수신한다.
일실시예에 따르면, 상기 저장 장치의 상기 제어 장치는 상기 호스트와의 통신 및 상기 플래시 메모리에 연관되는 각 부분을 제어하는 역할을 한다. 또한, 상기 저장 장치는 복수의 플래시 메모리 칩(110, 120)과 입출력 채널 등으로 구성될 수 있다.
대부분의 SSD는 성능 향상을 위하여 상기 복수의 플래시 메모리 칩이 각각 병렬적으로 동작 하도록 데이터를 인터리빙 하는 구조를 취할 수 있으며, 각 입출력 채널도 동시에 데이터를 전송할 수 있다. 상기 복수의 플래시 메모리 칩에 연관되는 내용은 아래에서 더 상세히 후술된다.
도 2는 일실시예에 따른, 상기 제어 장치(100)의 블록도이다. 상기 제어 장치는 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리할 수 있다.
또한, 상기 제어 장치는 스트라이프 구성부(210), 패리티 생성부(220), 클리닝부(230) 및 판단부(240)를 포함할 수 있다.
일실시예에 따른 상기 제어 장치의 상기 스트라이프 구성부(210)는 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성할 수 있으며, 상기 패리티 생성부(220)는 상기 구성된 스트라이프에 대한 패리티 데이터를 생성할 수 있다.
일실시예에 따르면, 상기 제어 장치는 복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 클리닝부(230)는 데이터 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택할 수 있다. 또한, 상기 클리닝부(230)는 상기 선택된 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
게다가, 상기 클리닝부(230)는 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행할 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 판단부(240)는 마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단할 수 있다.
또한, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후에 상기 제1 임계시간이 경과하면 상기 제1 페이지 쓰기 요청에 연관되는 제1 물리적 페이지 넘버에 대한 부분 패리티를 생성할 수 있다.
일실시예에 따른 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계시간이 경과한 후, 상기 제1 페이지 넘버에 대응하는 클린 페이지의 비율이 임계치 이상이면 상기 부분 패리티를 생성할 수 있다. 여기서, 상기 제1 임계시간 및 상기 클린 페이지의 비율의 임계치는 상기 제어 장치를 사용하는 사용자에 의해 미리 정의될 수 있다.
일실시예에 따른 상기 패리티 생성부(220)는 상기 제1 페이지 쓰기 요청이 처리된 후에 상기 제1 페이지 넘버에 대응하는 클린 페이지(clean page)의 비율이 상기 임계치 미만이더라도 상기 제1 임계시간보다 큰 제2 임계시간이 경과하면 상기 부분 패리티를 생성할 수 있다. 상기 제어 장치는 상기 스트라이프에 대한 풀 패리티를 생성하게 될 확률보다 페이지 데이터의 소실 또는 오류의 위험이 크다고 판단하기 때문에, 상기 제2 임계시간이 경과하는 경우 상기 클린 페이지가 조금 남아 있더라도(상기 임계치 미만이더라도) 상기 마지막 쓰기 이후에 무조건 상기 부분 패리티의 쓰기를 수행할 수 있다.
일실시예에 따르면, 상기 패리티 생성부(220)는 상기 제1 물리적 페이지 넘버에 대응하는 상기 클린 페이지 중 어느 하나에 상기 클린 페이지에 생성된 상기 부분 패리티를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
일실시예에 따르면, 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당할 수 있으며, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 제어할 수 있다. 상기 부분 패리티 저장 영역에 대한 내용은 아래에서 도면과 함께 더 상세히 후술된다.
도 3은 일실시예에 따른, 상기 데이터 처리 장치 데이터 갱신이 발생하는 경우의 도면이다.
일실시예에 따르면, 상기 제어 장치(100)는 상기 호스트와의 통신을 제어하고 및 상기 플래시 메모리에 연관되는 각 부분을 제어할 수 있다. 도 3에서 플래시 칩 컨트롤러(FCC: Flash Chip Controller)는 상기 제어 장치의 제어 하에 각각의 상기 플래시 메모리 칩을 제어할 수 있다.
일실시예에 따른 도 3에서는 5개의 플래시 메모리 칩(chip0, chip1, chip2, chip3 및 chip4)으로 구성되는 저장 장치(이를 테면, SSD와 같은) 내부를 도시한다. 여기서 PPN(Physical Page Number)은 물리적인 페이지 번호를 나타내고, PBN(Physical Block Number)은 물리적인 블록 번호를 나타낸다. 상기 PBN은 상기 각각의 플래시 메모리 칩에서 동일한 PPN 페이지를 포함할 수 있다.
일실시예에 따르면, Dx(x=0, 1, 2, 3 …)는 사용자의 데이터의 LBA(Logical Block Address)를 나타내고, Px(x=0, 1, 2, 3 …)는 스트라이프(310)에 대한 패리티를 나타낸다.
일실시예에 따른 상기 스트라이프는 상기 각각의 플래시 메모리 칩의 동일한 상기 PPN의 페이지들로 구성되며, 이를 테면, 상기 스트라이프는 동적 스트라이프(DS: Dynamic Stripe)라고 불릴 수 있다. 종래의 스트라이프는 논리적인 주소를 기반으로 상기 스트라이프를 구성하기 때문에 스트라이프 맵 테이블(Stripe map table)에 의해 관리되었으나, 상기 제어 장치에 의해 구성되는 상기 스트라이프(이를 테면, 동적 스트라이프(DS))는 물리적인 주소를 기반으로 상기 스트라이프를 생성하기 때문에 상기 스트라이프 맵 테이블을 필요로 하지 않는다.
일실시예에 따르면, 상기 스트라이프에 상기 데이터 쓰기가 수행되는 경우, 상기 스트라이프의 상기 PPN 페이지가 상기 데이터로 인해 다 채워지기 전에 상기 SSD의 신뢰성 향상과 데이터 복구를 위해 상기 스트라이프에 대한 적어도 하나의 상기 풀 패리티 또는 상기 부분 패리티가 상기 스트라이프에 생성될 수 있다.
일실시예에 따른 도 3은 데이터 D1 및 D2에 대한 데이터 갱신 요청이 발생하는 경우의 실시예를 도시한다. 대부분의 상기 SSD는 10~16개 이상 복수의 플래시 메모리 칩으로 구성되지만 설명의 편의상 도 3에서는 5개의 플래시 메모리 칩(chip0, chip1, chip2, chip3 및 chip4)으로 구성되는 실시예를 도시한다.
일실시예에 따르면, 도 3에서는 D0~D7의 사용자 데이터가 상기 플래시 메모리 칩의 상기 PPN 0 및 PPN 1에 쓰여져 있다. 또한, 도 3은 상기 PPN 0의 동일한 페이지들로 구성되는 상기 스트라이프(310)에 대한 패리티(P0)와 상기 PPN 1의 동일한 페이지들로 구성되는 상기 스트라이프에 대한 패리티(P1)를 포함하는 초기 상태를 도시하고 있다. 앞서 기술된 바와 같이, 적어도 하나의 상기 스트라이프에는 적어도 하나의 풀 패리티를 포함한다.
일실시예에 따르면, 상기 초기 상태에서 D1 및 D2의 사용자 데이터가 갱신된다고 가정한다. 상기 데이터 D1 및 D2의 갱신 요청으로 인해 업데이트되어야 하는 D1' 및 D2'의 쓰기 요청이 발생하게 된다. 상기 컨트롤러 장치는 상기 갱신 요청에 따른 상기 쓰기 요청에 대해 상기 요청이 발생한 순서대로 각각의 플래시 메모리 칩의 동일한 상기 PPN 페이지에 인터리빙되어 쓰여질 수 있다.
종래에서는 논리적인 주소를 기준으로 상기 스트라이프를 구성하기 때문에, 상기 갱신 되는 데이터가 동일한 플래시 메모리 칩 내의 빈 페이지(초기에 쓰여진 플래시 메모리 칩의 빈 페이지)에 쓰여야만 했다. 설명의 편의를 위해 하나의 상기 사용자 데이터 D1에 대한 데이터 갱신을 먼저 설명한다.
일실시예에 따르면, 초기 상태에서의 상기 사용자 데이터 D1(311)에 대해서만 데이터 갱신 요청이 발생한다고 가정한다. 종래에서는 업데이트되어야 하는 D1'의 사용자 데이터는 초기에 쓰여진 동일한 플래시 메모리 칩의 빈 페이지(312)에 쓰여지는 반면에, 상기 제어 장치는 상기 업데이트되어야 하는 D1'의 사용자 데이터를 빈 페이지에 순차대로 쓰기가 수행되도록 제어할 수 있다.
다시 말하면, 일실시예에 따른 상기 제어 장치는 물리적인 주소를 기준으로 스트라이프를 생성할 수 있기 때문에, 상기 업데이트되는 D1'의 사용자 데이터를 동일한 플래시 메모리 칩 내의 빈 페이지(312)에 쓰여지지 않는다.
일실시예에 따른 상기 제어 장치는 초기 상태에서 마지막 쓰기 요청에 의한 사용자 데이터 D7 페이지의 다음 페이지(301)에 상기 D1'이 쓰여지도록 제어할 수 있고, 상기 제어 장치는 초기 상태의 사용자 데이터 D1이 쓰여진 페이지(311)를 무효 페이지가 되도록 제어할 수 있다.
일반적으로 상기 제어 장치의 상기 패리티 생성부(220)는 상기 쓰기 요청으로 인해 적어도 하나의 스트라이프가 가득 차게 되면 상기 스트라이프에 대한 상기 풀 패리티를 생성할 수 있다.
그러나, 상기 제어 장치의 패리티 생성부(220)는 상기 스트라이프의 일부에서만 데이터 갱신이 이루어지는 경우 상기 스트라이프에 상기 사용자 데이터가 가득 찰 때까지 대기하지 않고 곧바로 갱신되는 데이터(또는 쓰기 요청에 의해 쓰여지는 데이터)에 대한 부분 패리티(Partial Parity)를 생성할 수 있다.
이를 테면, 초기 데이터 D1에 대한 데이터 갱신되는 실시예의 경우에서, 상기 제어 장치의 상기 스트라이프 생성부는 상기 업데이트되어야 하는(갱신되어야 하는) D1'은 물리적인 주소를 기준으로 페이지(301)에 쓰여지도록 하여 상기 스트라이프를 구성할 수 있다. 또한, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 갱신된 D1'을 포함하는 해당 스트라이프가 가득 찰 때까지 대기하여 상기 풀 패리티를 생성하지 않고, 상기 갱신된 D1'의 페이지(301)의 다음 페이지(312)에 곧바로 상기 부분 패리티를 생성할 수 있다.
다른 일실시예에 따르면, 도 3과 같은 초기 상태에서 D1, D2 순서로 데이터가 갱신된다고 가정한다. 종래의 기술에 따르면, 업데이트되어야 하는 D1', D2'은 논리적인 주소를 기준으로 초기에 쓰여진 동일한 플래시 메모리 칩의 빈 페이지에 쓰기가 수행된다. 따라서, 종래 기술에서는 D1'은 칩1의 PPN 2 페이지(312)에 쓰여지며, D2'는 칩2의 PPN2 페이지(321)에 쓰여진다.
그러나, 상기 제어 장치의 상기 스트라이프 구성부(210)는 물리적인 주소를 기준으로 스트라이프를 구성하기 때문에, D1', D2'을 쓰기 요청이 발생한 순서대로 각각의 플래시 메모리 칩의 PPN 페이지에 인터리빙 되어 쓰여질 수 있도록 할 수 있다. 따라서, 상기 제어 장치의 상기 스트라이프 구성부(210)는 D1'이 칩0의 PPN2 페이지(301)에 쓰여지도록 제어하고, D2'는 칩1의 PPN2 페이지(312)에 쓰여지도록 제어할 수 있다. 또한, 상기 갱신되는 데이터의 쓰기가 이루어지면, 초기 상태의 사용자 데이터 D1, D2가 쓰여진 페이지는 무효 페이지가 된다.
위에서 기술된 바와 같이, 상기 쓰기 요청으로 인해 하나의 스트라이프가 가득 차게 되면 상기 스트라이프에 대한 풀 패리티를 생성할 수 있다. 그러나, 상기 제어 장치의 상기 패리티 생성부(220)는 상기 스트라이프의 일부에서만 데이터 갱신이 이루어지는 경우, 상기 스트라이프에 상기 사용자 데이터가 가득 찰 때까지 대기하지 않고 곧바로 갱신되는 데이터(또는 쓰기 요청에 의해 쓰여지는 데이터)에 대한 부분 패리티를 생성할 수 있다.
이를 테면, 앞서 기술된 바와 같이 초기 데이터 D1, D2에 대한 데이터 갱신이 발생하는 경우, 상기 업데이트되어야 하는(갱신되어야 하는) D1', D2'의 사용자 데이터는 물리적인 주소를 기준으로 각각 페이지(301) 및 페이지(312)에 쓰여질 수 있다. 또한, 상기 갱신된 D1', D2'을 포함하는 해당 스트라이프는 상기 해당 스트라이프가 가득 찰 때까지 대기하지 않고, 마지막으로 갱신된 D2'의 페이지(312)의 다음 페이지(321)에 업데이트된 D1', D2'에 대한 상기 부분 패리티가 생성될 수 있다.
그러므로, 상기 제어 장치는 상기 쓰기 요청이 발생한 데이터에 대해서만 동적으로 스트라이프를 구성할 수 있으며, 상기 스트라이프에 대한 패리티(또는, 풀 패리티)를 생성할 수 있기 때문에, 상기 갱신되는 데이터에 대한 패리티 생성을 위해 초기 상태에 쓰여진 데이터에 대한 별도의 읽기 연산이 필요하지 않고 상기 패리티 쓰기 횟수도 감소할 수 있다. 또한, 특정 플래시 메모리 칩에 대한 쓰기가 집중되는 현상도 제거되어 상기 플래시 메모리 칩의 수명을 단축시키는 문제도 완화될 수 있다.
또 다른 일실시예에 따르면, 위와 같이 D1', D'2의 갱신이 이루어지고 상기 갱신된 데이터에 대응하는 상기 부분 패리티가 생성된 후, 또 다른 쓰기 요청인 D8에 대한 데이터 쓰기 요청이 발생하는 경우 다음의 빈 페이지인 칩3의 PPN 2의 페이지에 상기 D8 데이터 쓰기가 수행될 수 있다. 또한, 마지막 페이지(칩4의 PPN 2 페이지)에 해당되는 전체 스트라이프에 대한 새로운 상기 풀 패리티를 생성할 수 있다.
이 시점에서는 상기 SSD의 쓰기 버퍼에 보관하고 있는 상기 D8를 이용하므로 상기 풀 패리티 생성을 위한 읽기 연산이 필요하지 않다. 이와 같이 상기 스트라이프의 크기보다 작은 쓰기 요청에 대하여 생성한 패리티를 상기 부분 패리티라고 부르며, 이를 통해 NVRAM과 같은 추가적인 하드웨어 없이 상기 SSD의 신뢰성을 보장할 수 있다.
또 다른 일실시예에 따르면, 상기 제어 장치의 판단부(240)는 마지막으로 처리된 쓰기 요청으로부터의 임계시간을 고려하여 부분 패리티의 생성 유무를 판단할 수 있다. 상기 제어 장치의 상기 패리티 생성부(220)는 도 3과 같이 D1', D'2의 갱신이 요청되어 상기 칩0의 PPN2 페이지와 상기 칩1의 PPN2 페이지에 각각 D1', D2'가 쓰여지게 되는 경우 바로 상기 부분 패리티를 생성하지 않고 또 다른 쓰기 요청이 수신되는 지를 제1 임계 시간 동안 대기할 수 있다.
만약, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되는 경우에는 상기 쓰기 요청의 순서대로 상기 스트라이프를 구성할 수 있으며, 상기 또 다른 쓰기 요청으로 상기 스트라이프가 다 채워지는 경우, 상기 패리티 생성부(220)는 상기 부분 패리티의 생성 없이 곧바로 전체 스트라이프에 대응하는 상기 풀 패리티를 생성할 수 있다.
반대로, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되지 않은 경우(해당 스트라이프도 다 채워지지 않고 더 이상의 또 다른 쓰기 요청이 수신되지 않은 경우), 상기 패리티 생성부(220)는 마지막 쓰기 요청에 의해 쓰여진 페이지의 다음 페이지에 곧바로 상기 부분 패리티를 생성함으로써 상기 저장 장치(상기 SSD)의 신뢰도를 향상 시킬 수 있다.
또 다른 일실시예에 따르면, 상기 제어 장치의 판단부(240)는 상기 임계시간과 상기 클린 페이지의 비율을 고려하여 부분 패리티의 생성의 유무를 판단할 수 있다.
위에서 기술된 바와 같이 상기 제어 장치의 상기 패리티 생성부(220)는 D1', D'2의 갱신이 요청되어 상기 칩0의 PPN2 페이지와 상기 칩1의 PPN2 페이지에 각각 D1', D2'가 쓰여지게 되는 경우 곧바로 상기 부분 패리티를 생성하지 않고, 또 다른 쓰기 요청이 수신되는 지를 제1 임계 시간 동안 대기할 수 있다.
만약, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되는 경우 상기 쓰기 요청의 순서대로 상기 스트라이프를 구성할 수 있다. 또한, 상기 또 다른 쓰기 요청으로 상기 스트라이프가 다 채워지는 경우 상기 패리티 생성부(220)는 상기 부분 패리티의 생성 없이 곧바로 전체 스트라이프에 대응하는 상기 풀 패리티를 생성할 수 있다.
반대로, 상기 제1 임계 시간 내에 상기 또 다른 쓰기 요청이 수신되지 않은 경우(해당 스트라이프도 다 채워지지 않고 더 이상의 또 다른 쓰기 요청이 수신되지 않은 경우), 상기 제어 장치의 상기 판단부(240)는 상기 스트라이프 내에 클린 페이지(Clean page)가 충분히 존재하는지를 판단할 수 있다.
이를 테면, 상기 제어 장치의 상기 판단부(240)는 상기 쓰기 요청에 의해 데이터가 쓰여져야 하는 해당 스트라이프에서 상기 클린 페이지의 비율이 미리 정의된 임계치 이상이라고 판단되는 경우에는 아직 상기 해당 스트라이프에 여유 페이지가 존재하는 것으로 판단할 수 있다.
또한, 상기 판단부(240)가 상기 클린 페이지의 비율이 미리 정의된 임계치 이하이라고 판단되는 경우에는 상기 해당 스트라이프에 상기 여유 페이지가 존재하지 않는 것으로 판단하여, 상기 제1 임계시간보다 큰 제2 임계시간 동안 상기 또 다른 쓰기 요청을 위한 대기 시간을 갖도록 할 수 있다.
일실시예에 따르면, 상기 판단부(240)는 상기 제2 임계시간의 경과에도 불구하고, 상기 또 다른 쓰기 요청이 수신되지 않으면, 상기 클린 페이지의 비율이 상기 임계치 미만이더라도 상기 스트라이프에 해당하는 상기 부분 패리티를 생성하도록 판단할 수 있다.
도 4는 일실시예에 따른, 상기 제어 장치에서 부분 패리티가 생성될 수 있는 부분 스트라이프 패리티 풀(Partial Stripe Parity Pool)을 설명하는 도면이다. 상기 제어 장치는 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역(또는, 상기 부분 스트라이프 패리티 풀(Partial Stripe Parity Pool))으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어할 수 있다.
앞에서 언급한 도 3의 경우, D1'과 D2'을 물리적인 주소를 기반으로 상기 페이지(301과 312)에 쓰기 동작을 수행한 후에, (경우에 따라 임계시간 및 클린 페이지의 비율을 고려하여) 상기 부분 패리티를 그 다음 페이지(321)에 기록할 수 있다. 그 후에, 또 다른 쓰기 요청인 D8의 쓰기 요청이 발생하면 그 다음 페이지(칩3의 PPN2 페이지)에 쓰기를 수행하고, 전체 스트라이프에 대한 패리티를 반드시 기록해야 하므로 마지막 페이지(칩4의 PPN2)에 상기 풀 패리티를 기록한다.
그러나, 도 4를 참조하면, 상기 제어 장치는 전체 스트라이프에 대한 풀 패리티를 기록하지 않고 다음의 쓰기 요청에 대한 쓰기를 수행하고 상기 부분 패리티 저장 영역에 상기 부분 패리티를 따로 기록할 수 있다.
만약, D1' 및 D2'의 데이터 갱신에 이어 D8과 D9에 이어서 연속적인 쓰기 요청이 온다고 하더라도, 적어도 하나의 스트라이프에서 적어도 하나의 패리티를 반드시 기록해야 하기 때문에, P2를 기록해야만 한다. 이 후에, D10의 데이터 쓰기 요청이 수신되면, 해당 데이터를 Chip0의 페이지 3에 쓰기를 수행하고, D10의 데이터 쓰기에 대한 부분 패리티(PP1)는 상기 부분 패리티 저장 영역(또는, 상기 부분 스트라이프 패리티 풀)의 칩 1(402)에 기록될 수 있다.
일실시예에 따르면, 그 후에 연속적인 쓰기 요청 D11, D12, D13, D14가 순차적으로 오는 경우, D11부터 순서대로 Chip1, 2, 3, 4에 쓰고 풀 패리티 P3을 Chip0의 PPN4에 기록할 수 있다. 일실시예에 따르면, D11 ~ D14가 하나의 풀 스트라이프로 간주되어 풀 패리티 P3이 쓰여질 수 있다.
일실시예에 따르면, 해당 스트라이프가 가득 차는 경우 상기 스트라이프에 적어도 하나의 풀 패리티를 기록할 수 있고, 반대로 해당 스트라이프가 가득 차지 않는 경우에는 상기 부분 패리티 저장 영역(410)에 상기 부분 패리티를 따로 기록할 수 있다. 이와 같이, 상기 부분 패리티(401, 402 및 403)를 상기 부분 패리티 저장 영역(또는 상기 부분 스트라이프 패리티 풀)(410)에 기록하는 이유는 RAID 특성상 하나의 스트라이프에 포함되는 데이터를 각각 다른 칩에 분산시킴으로써 특정 칩의 오류 발생시 분산된 데이터를 이용하여 복구할 수 있기 때문이다.
일실시예에 따르면, 상기 부분 패리티 또는 상기 풀 패리티는 상기 스트라이프를 구성하는 페이지 개수(도 3 내지 도 4에서는 5개) 마다 반드시 1개 이상 유지될 수 있다.
일실시예에 따른, 상기 패리티 저장 영역을 이용함으로써 상기 스트라이프를 구성하는 페이지 마다 유지되는 패리티 개수를 감소시키면서 특정 칩에서 발생하는 오류로부터 데이터를 복구할 수 있다.
도 5는 일실시예에 따른, 상기 제어 장치에서 클리닝 부에 의한 데이터 클리닝의 수행 전을 설명하는 개념도이다.
일실시예에 따른 상기 플래시 메모리 칩의 클리닝 연산은 블록 단위로 수행되기 때문에 여유 공간 생성 시, 상기 스트라이프가 포함되는 블록들이 동시에 클리닝 되어야 한다. 도 5 및 도 6에서 도시한 바와 같이 상기 스트라이프(이를 테면, 동적 스트라이프(DS))가 포함되는 블록들을 동적 스트라이프 그룹(DSG: Dynamic Stripe Group)이라고 한다.
일실시예에 따르면, 상기 클리닝의 대상이 되는 블록을 선택할 경우, 유효 페이지가 가장 적은 블록의 집합이 선택될 수 있다. 이를 테면, 도 5의 경우에서는 DSG0의 유효 페이지의 개수는 5 개가 되며, DSG1의 유효 페이지 개수는 9개가 될 수 있다.
따라서, 상기 DSG1에 비해 상기 DSG0의 유효 페이지의 개수가 적기 때문에 상기 DSG0이 클리닝 수행의 대상이 되는 블록이 될 수 있다.
도 6은 일실시예에 따른, 상기 제어 장치에서 상기 클리닝부(230)에 의한 상기 데이터 클리닝 수행 후를 설명하는 개념도이다. 앞서 설명된 도 5에서, 상기 유효 페이지의 수가 적은 DSG를 선택하여 상기 클리닝 연산을 수행한다.
일실시예에 따르면, 상기 클리닝 부는 상기 클리닝 연산이 수행되는 상기 DSG0의 유효 페이지의 데이터 D0, D4, D7을 각각 플래시 칩 메모리 0, 플래시 칩 메모리 1 및 플래시 칩 메모리 2의 상기 PPN의 60 페이지에 복사할 수 있다.
또한, 상기 제어 장치는 상기 복사되는 D0, D4, D7에 대한 상기 풀 패리티 P60를 생성하여 플래시 메모리 칩 3의 PPN 60에 기록함으로써 새로운 상기 스트라이프(이를 테면, 동적 스트라이프)를 구성할 수 있다. 그리고, 나머지 유효 페이지의 데이터인 D8과 D10은 그 다음의 스트라이프에 쓰여지고, 위에서 언급한 바와 같이 상기 부분 패리티(PP)를 생성할 수 있다.
일실시예에 따르면, 모든 플래시 메모리 칩들이 동시에 클리닝이 수행되어야만 이와 같은 상기 스트라이프를 위해 여유 공간을 확보할 수 있다. 상기 각각의 플래시 메모리 칩들은 병렬적으로 상기 클리닝을 수행하므로 단일 플래시 메모리 칩에서의 클리닝과 비슷한 비용을 갖는다.
또한, 상기 데이터의 일관성을 보장하기 위해 상기 클리닝 시 다음과 같은 순서를 지켜야 한다. 1) 상기 클리닝 대상 블록들의 모든 유효 페이지를 여유 페이지로 복사한다. 2) 1)번을 수행하는 동안 상기 스트라이프를 동적으로 구성하여 패리티 쓰기도 완료한다. 3) 상기 클리닝 대상 블록들을 소거한다.
이와 같은 순서를 지켜야 하는 이유는 2)번의 상기 패리티 쓰기 도중에 오류가 발생하더라도 상기 클리닝 대상 블록들의 기존 데이터를 이용하여 복구할 수 있기 때문이다.
도 7은 일실시예에 따른, 상기 제어 장치에서 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법(700)의 흐름도이다.
일실시예에 따른 상기 제어 장치는 상기 초기 데이터(D1)에 대한 데이터 갱신 요청 명령을 수신한다(710). 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 상기 갱신되어야 하는(업데이트되어야 하는) 데이터(D1')을 제1 페이지에 프로그램하여 스트라이프를 구성할 수 있다(720). 또한, 상기 제어 장치는 상기 구성된 스트라이프에 대한 패리티 데이터를 생성할 수 있다.
도 8은 일실시예에 따른, 임계시간에 따른 상기 제어 방법의 흐름도이다. 앞서 설명된 도 7의 제어 방법에서 상기 임계시간을 고려하여 상기 부분 패리티의 생성 유무를 판단할 수 있다.
도 7에서 상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 상기 갱신되어야 하는(업데이트되어야 하는) 데이터(D1')을 제1 페이지에 프로그램하여 스트라이프를 구성(720)한 후에, 상기 제어 장치의 판단부(240)는 마지막으로 처리된 상기 제1 페이지의 프로그램된 이후 제1 임계시간이 경과하였는지의 여부를 판단할 수 있다(810).
만약, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성할 수 있다(820).
도 9은 일실시예에 따른, 상기 임계 시간 및 스트라이프의 클린 페이지 비율에 다른 상기 제어 방법의 흐름도이다.
일실시예에 따르면, 상기 제어 장치의 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하였는 지의 여부를 판단할 수 있다 (910).
일실시예에 따른 상기 제어 장치의 상기 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하였는 지의 여부를 판단할 수 있다. 만약 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계 시간이 경과하였다면, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인지의 여부를 판단하게 된다(920). 여기서, 상기 클린 페이지 비율이 임계치 이상인 경우에는 상기 부분 패리티(PP)를 생성하여 기록할 수 있다(940).
만약 상기 제1 페이지 쓰기 요청이 처리된 후 상기 제1 임계 시간이 경과하고, 상기 클린 페이지 비율이 임계치 미만인 경우에는 상기 제1 임계시간 보다 큰 상기 제2 임계시간의 경과 여부를 판단할 수 있다(930).
일실시예에 따르면, 상기 판단부(240)는 상기 제1 페이지 쓰기 요청이 처리되고 상기 제1 임계시간보다 큰 제2 임계시간이 경과하면 상기 제1 페이지 넘버에 대응하는 상기 클린 페이지의 비율이 상기 임계치 미만이더라도 상기 패리티 생성부(220)가 상기 부분 패리티를 생성하도록 할 수 있다(940).
도 10은 일실시예에 따른, 상기 데이터 처리 장치에서 상기 데이터 클리닝을 수행하는 흐름도이다. 일실시예에 따른, 상기 제어 장치는 상기 스트라이프에 의해 상기 쓰기 요청이 발생한 순서대로 동적으로 스트라이프를 생성할 수 있음으로써 패리티 갱신의 비용을 줄일 수 있다.
일실시예에 따르면, 이와 같은 상기 쓰기 요청의 순서로 상기 각각의 플래시 메모리 칩에 인터리빙 하기 위해서는 상기 각각의 플래시 메모리 칩의 동일한 PPN 순으로 할당하는 것이 상기 플래시 메모리를 관리하기에 가장 적절한 방법일 수 있다.
따라서, 상기 제어 장치에서 상기 스트라이프는 상기 각각의 플래시 메모리 칩의 동일한 PPN 페이지들로 구성될 수 있다. 상기 스트라이프 구성부(210)에 의해 상기 스트라이프를 구성하기 위해 상기 각각의 플래시 메모리 칩의 동일한 PPN 페이지가 여유 공간으로 확보되어야 하기 때문에, 상기 클리닝 연산 시 이와 같은 공간이 요구될 수 있다.
일실시예에 따르면, 상기 제어 장치의 상기 클리닝부(230)는 상기 플래시 메모리의 클리닝 연산을 블록 단위로 수행할 수 있다. 또한, 상기 스트라이프를 위한 여유 공간을 생성할 경우, 상기 스트라이프가 포함되는 블록들이 동시에 클리닝 되어야 한다. 앞에서 언급한 바와 같이, 상기 스트라이프가 포함되는 블록들은 동적 스트라이프 그룹(DSG: Dynamic Stripe Group)일 수 있다.
일실시예에 따른, 상기 스트라이프를 위한 공간을 확보하기 위해 모든 플래시 메모리 칩들이 동시에 클리닝 수행이 되어해야 한다. 상기 각각의 플래시 메모리 칩들은 병렬적으로 클리닝을 수행하므로 단일 칩에서의 클리닝과 비슷한 비용을 수반할 수 있다.
그리고, 데이터의 일관성을 보장하기 위해서는 상기 데이터의 클리닝을 수행할 경우 도 10의 흐름도를 참조하여, 다음의 순서로 클리닝이 수행될 수 있다.
일실시예에 따르면, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택할 수 있다(1010).
우선, 상기 데이터 클리닝의 대상 블록들의 모든 유효 페이지를 여유 페이지로 복사하고(1020), 이와 동시에 상기 스트라이프를 동적으로 구성하고 패리티 쓰기를 완료한다(1030). 이후에, 클리닝 대상 블록들을 소거할 수 있다(1040).
위와 같은 순서를 지켜야 하는 이유는, 상기 패리티 쓰기 도중 오류가 발생하더라도 상기 클리닝 대상 블록들의 기존 데이터를 이용하여 복구할 수 있기 때문이다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 장치에 있어서,
    상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 스트라이프 구성부;
    상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 패리티 생성부; 및
    마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 미리 지정된 임계시간이 경과하였는지의 여부를 판단하는 판단부
    를 포함하고,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 미리 지정된 임계시간이 경과하는 경우, 제1 페이지 넘버에 대응하는 클린 페이지 비율을 고려하여, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 제어 장치.
  2. 제1항에 있어서,
    복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행하는 제어 장치.
  3. 제1항에 있어서,
    상기 복수 개의 페이지에 쓰여진 데이터의 클리닝의 경우, 상기 복수의 스트라이프를 포함하는 클리닝 블록을 생성하고, 상기 클리닝 블록 중 유효 페이지가 가장 적은 클리닝 블록을 상기 데이터 클리닝의 대상 블록으로 선택하여 상기 데이터 클리닝을 수행하는 클리닝부
    를 더 포함하고,
    상기 클리닝부는, 상기 데이터 클리닝의 대상 블록을 상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록으로 복사하고, 상기 데이터 클리닝의 대상 블록에 대해 상기 데이터 클리닝을 수행하는 제어 장치.
  4. 삭제
  5. 제1항에 있어서,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하는 제어 장치.
  6. 제5항에 있어서,
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 장치.
  7. 제1항에 있어서,
    상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 장치.
  8. 제1항에 있어서,
    상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 장치.
  9. 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 판단부; 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 제1 페이지 넘버에 대응하는 클린 페이지 비율을 고려하여 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 패리티 생성부
    를 포함하는 제어 장치.
  10. 제9항에 있어서,
    상기 패리티 생성부는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하는 제어 장치.
  11. 제10항에 있어서,
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 장치.
  12. 멀티 채널 인터리빙을 통해 구동되는 복수 개의 메모리 채널을 관리하는 제어 방법에 있어서,
    상기 복수 개의 메모리 채널에 포함된 페이지들의 물리적 페이지 넘버에 따라 스트라이프를 구성하는 단계;
    상기 구성된 스트라이프에 대한 패리티 데이터를 생성하는 단계; 및
    마지막으로 처리된 제1 페이지 쓰기 요청이 처리된 이후 미리 지정된 임계시간이 경과하였는지의 여부를 판단하는 판단부
    를 포함하고,
    상기 패리티 데이터를 생성하는 단계는,
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 미리 지정된 임계시간이 경과하는 경우에 제1 페이지 넘버에 대응하는 클린 페이지 비율을 고려하여, 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 단계
    를 포함하는 제어 방법.
  13. 제12항에 있어서,
    복수 개의 페이지 데이터 쓰기 요청이 순차적으로 수신되는 경우, 상기 복수 개의 메모리 채널의 클린 페이지를 논리 블록 주소에 독립적으로 순차 쓰기하도록 상기 멀티 채널 인터리빙을 수행하는 제어 방법.
  14. 삭제
  15. 제12항에 있어서,
    상기 패리티 데이터를 생성하는 단계는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 방법.
  16. 제12항에 있어서,
    상기 제1 물리적 페이지 넘버에 대응하는 클린 페이지 중 어느 하나의 클린 페이지에 생성된 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 방법.
  17. 제12항에 있어서,
    상기 멀티 채널 인터리빙에 연관되는 복수 개의 칩의 적어도 일부 블록을 부분 패리티 저장 영역으로 할당하고, 상기 부분 패리티 저장 영역에 상기 부분 패리티 데이터를 쓰도록 상기 멀티 채널 인터리빙을 제어하는 제어 방법.
  18. 멀티 채널 인터리빙을 통해 페이지 데이터 쓰기가 처리되는 경우, 마지막으로 요청된 제1 페이지 쓰기 요청이 처리된 이후 제1 임계시간이 경과하였는지의 여부를 판단하는 단계; 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과한 경우, 제1 페이지 넘버에 대응하는 클린 페이지 비율을 고려하여 상기 제1 페이지 쓰기 요청에 연관된 제1 물리적 페이지 넘버에 대한 부분 패리티 데이터를 생성하는 단계
    를 포함하는 제어 방법.
  19. 제18항에 있어서,
    상기 패리티 데이터를 생성하는 단계는, 상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간이 경과하고 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 임계치 이상인 경우, 상기 부분 패리티 데이터를 생성하고, 및
    상기 제1 페이지 쓰기 요청이 처리된 이후 상기 제1 임계시간보다 큰 제2 임계시간이 경과한 경우, 상기 제1 페이지 넘버에 대응하는 클린 페이지 비율이 상기 임계치 미만이더라도 상기 부분 패리티 데이터를 생성하는 제어 방법.
  20. 제12항 내지 제13항 및 제15항 내지 제19항 중 어느 한 항의 제어 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020130013954A 2012-02-09 2013-02-07 신뢰성 있는 ssd를 위한 효율적인 raid 기법 KR101445025B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
PCT/KR2013/001029 WO2013119074A1 (ko) 2012-02-09 2013-02-08 신뢰성 있는 ssd를 위한 효율적인 raid 기법
US14/377,159 US9496051B2 (en) 2012-02-09 2013-02-08 Efficient raid technique for reliable SSD
CN201380006059.5A CN104471546B (zh) 2012-02-09 2013-02-08 用于提高固态硬盘可靠性的有效的磁盘冗余阵列技法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20120013076 2012-02-09
KR1020120013076 2012-02-09

Publications (2)

Publication Number Publication Date
KR20130092482A KR20130092482A (ko) 2013-08-20
KR101445025B1 true KR101445025B1 (ko) 2014-09-26

Family

ID=49217230

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130013954A KR101445025B1 (ko) 2012-02-09 2013-02-07 신뢰성 있는 ssd를 위한 효율적인 raid 기법

Country Status (3)

Country Link
US (1) US9496051B2 (ko)
KR (1) KR101445025B1 (ko)
CN (1) CN104471546B (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170051102A (ko) * 2015-11-02 2017-05-11 조진영 Ssd 메모리로 동작하는 nand 플래시 메모리를 레이드 방식으로 제어하여 입출력 속도를 향상시킨 usb 3.1 메모리장치
KR20180069176A (ko) 2016-12-14 2018-06-25 한국과학기술원 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671265B2 (en) 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
JP2016057876A (ja) * 2014-09-10 2016-04-21 富士通株式会社 情報処理装置、入出力制御プログラム、及び入出力制御方法
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
KR20170078315A (ko) * 2015-12-29 2017-07-07 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN106960675B (zh) * 2016-01-08 2019-07-05 株式会社东芝 磁盘装置及写入处理方法
KR102572357B1 (ko) 2016-02-03 2023-08-29 삼성전자주식회사 Raid-6 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
CN107479824B (zh) * 2016-06-08 2020-03-06 宜鼎国际股份有限公司 冗余磁盘阵列系统及其数据储存方法
KR102573301B1 (ko) * 2016-07-15 2023-08-31 삼성전자 주식회사 Raid 리커버리를 수행하는 메모리 시스템 및 그 동작방법
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
KR102585214B1 (ko) 2016-09-22 2023-10-05 삼성전자주식회사 가변 소거 유닛 크기를 가지는 스토리지 디바이스 및 이를 포함하는 레이드 스토리지 시스템
US10733105B1 (en) * 2017-04-17 2020-08-04 EMC IP Holding Company LLC Method for pipelined read optimization to improve performance of reading data from data cache and storage units
US10936412B1 (en) 2017-04-17 2021-03-02 EMC IP Holding Company LLC Method and system for accessing data stored in data cache with fault tolerance
US10970204B2 (en) * 2017-08-29 2021-04-06 Samsung Electronics Co., Ltd. Reducing read-write interference by adaptive scheduling in NAND flash SSDs
US11221958B2 (en) 2017-08-29 2022-01-11 Samsung Electronics Co., Ltd. System and method for LBA-based RAID
US10866764B2 (en) 2018-07-23 2020-12-15 SK Hynix Inc. Memory system with parity cache scheme and method of operating such memory system
CN110427279B (zh) * 2019-07-19 2023-02-10 深圳忆联信息系统有限公司 一种恢复写条带的Raid奇偶校验数据的方法及系统
KR20210071795A (ko) * 2019-12-06 2021-06-16 에스케이하이닉스 주식회사 메모리 및 메모리 시스템
CN112927735A (zh) * 2019-12-06 2021-06-08 爱思开海力士有限公司 存储器和存储系统
CN112817533A (zh) * 2021-01-29 2021-05-18 深圳忆联信息系统有限公司 Ssd管理方法、装置计算机设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110041037A1 (en) * 2009-08-11 2011-02-17 Texas Memory Systems, Inc. FLASH-based Memory System with Static or Variable Length Page Stripes including Data Protection Information and Auxiliary Protection Stripes

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6467022B1 (en) 1998-04-16 2002-10-15 International Business Machines Corporation Extending adapter memory with solid state disks in JBOD and RAID environments
US7392458B2 (en) * 2004-11-19 2008-06-24 International Business Machines Corporation Method and system for enhanced error identification with disk array parity checking
JP2006171957A (ja) * 2004-12-14 2006-06-29 Fujitsu Ltd ストレージ制御装置および方法
JP4440803B2 (ja) * 2005-03-03 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US8296337B2 (en) 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
KR101510120B1 (ko) * 2008-11-21 2015-04-10 삼성전자주식회사 메모리 장치 및 메모리 장치의 관리 방법
US8719621B1 (en) * 2010-05-05 2014-05-06 Marvell International Ltd. Solid-state disk cache assisted redundant array of independent disks

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110041037A1 (en) * 2009-08-11 2011-02-17 Texas Memory Systems, Inc. FLASH-based Memory System with Static or Variable Length Page Stripes including Data Protection Information and Auxiliary Protection Stripes

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170051102A (ko) * 2015-11-02 2017-05-11 조진영 Ssd 메모리로 동작하는 nand 플래시 메모리를 레이드 방식으로 제어하여 입출력 속도를 향상시킨 usb 3.1 메모리장치
KR101896148B1 (ko) * 2015-11-02 2018-09-06 조진영 Ssd 메모리로 동작하는 nand 플래시 메모리를 레이드 방식으로 제어하여 입출력 속도를 향상시킨 usb 3.1 메모리장치
KR102062558B1 (ko) * 2015-11-02 2020-01-06 조진영 Ssd 메모리로 동작하는 nand 플래시 메모리를 레이드 방식으로 제어하여 입출력 속도를 향상시킨 usb 3.1 메모리장치
KR20180069176A (ko) 2016-12-14 2018-06-25 한국과학기술원 Ssd 배열의 로그 기반 패리티 갱신 시스템 및 방법 그리고 이를 이용한 블록 및 노드 결함 복구 방법

Also Published As

Publication number Publication date
CN104471546B (zh) 2017-06-06
US9496051B2 (en) 2016-11-15
KR20130092482A (ko) 2013-08-20
US20140380092A1 (en) 2014-12-25
CN104471546A (zh) 2015-03-25

Similar Documents

Publication Publication Date Title
KR101445025B1 (ko) 신뢰성 있는 ssd를 위한 효율적인 raid 기법
JP6300132B2 (ja) ガベージデータを収集するための方法及び記憶装置
US9317436B2 (en) Cache node processing
US9378093B2 (en) Controlling data storage in an array of storage devices
US9026764B2 (en) Memory system performing wear leveling based on deletion request
EP2942713B1 (en) Storage system and storage apparatus
TWI428737B (zh) 半導體記憶體裝置
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
US9632702B2 (en) Efficient initialization of a thinly provisioned storage array
US20130191705A1 (en) Semiconductor storage device
US9335928B2 (en) Using unused portion of the storage space of physical storage devices configured as a RAID
JP5367686B2 (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
US20180018113A1 (en) Storage device
US11360903B2 (en) Data placement in write cache architecture supporting read heat data separation
US9952978B2 (en) Method for improving mixed random performance in low queue depth workloads
CN111124262A (zh) 独立盘冗余阵列(raid)的管理方法、设备和计算机可读介质
TWI501244B (zh) 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置
US8145839B2 (en) Raid—5 controller and accessing method with data stream distribution and aggregation operations based on the primitive data access block of storage devices
CN108304139B (zh) 一种在固态盘阵列中实现空间释放的方法及装置
CN112346658A (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
US10162573B2 (en) Storage management system, storage management method, storage medium and information processing system
US8380926B1 (en) Handling sector edges
KR101412830B1 (ko) 반도체 저장장치 및 이를 제어하는 방법
US20230333783A1 (en) Dynamic rain for zoned storage systems
CN117931055A (en) Apparatus and method for allocating and storing write data in a plurality of memory areas

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170711

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180801

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190731

Year of fee payment: 6