KR102307130B1 - 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법 - Google Patents

복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102307130B1
KR102307130B1 KR1020160062889A KR20160062889A KR102307130B1 KR 102307130 B1 KR102307130 B1 KR 102307130B1 KR 1020160062889 A KR1020160062889 A KR 1020160062889A KR 20160062889 A KR20160062889 A KR 20160062889A KR 102307130 B1 KR102307130 B1 KR 102307130B1
Authority
KR
South Korea
Prior art keywords
solid state
garbage collection
state drive
state drives
logic
Prior art date
Application number
KR1020160062889A
Other languages
English (en)
Other versions
KR20170052440A (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 KR20170052440A publication Critical patent/KR20170052440A/ko
Application granted granted Critical
Publication of KR102307130B1 publication Critical patent/KR102307130B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0253Garbage collection, i.e. reclamation of unreferenced 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
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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
    • 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
    • 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/7205Cleaning, compaction, garbage collection, erase control

Abstract

본 발명은 레이드 컨트롤러에 관한 것이다. 본 발명의 일 실시 예에 따른 레이드 컨트롤러는 레이드 구성(RAID configuration)의 복수의 솔리드 스테이트 드라이브(SSD)들에 대해 읽기 및 쓰기 요청들을 제어하는 제어 로직, 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들(free sector sizes)을 기반으로 가비지 콜렉션를 수행하기 위해 상기 복수의 솔리드 스테이트 드라이브들로부터 하나의 솔리드 스테이트 드라이브를 선택하는 선택 로직, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 셋업 로직 및 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈에 진입하도록 지시하는 실행 로직을 포함한다.

Description

복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법 {MITIGATING GARBAGE COLLECTION IN A RAID CONTROLLER}
본 발명은 복수 배열 독립 디스크(RAID, Redundant Array of Independent Disks)에 관한 것으로, 더 상세하게는 솔리드 스테이트 드라이브(SSD, Solid State Drives)들의 복수 배열 독립 디스크(RAID)에서 가비지 콜렉션(garbage collection)을 수행하는 것에 관한 것이다.
솔리드 스테이트 드라이브(SSD)들을 구동하는 워크로드들(workloads)은 다양하지만, 많은 솔리드 스테이트 드라이브(SSD)들은 실시간 요구 사항(real-time requirement)들을 갖는다. 온라인 트랜잭션 프로세싱(OLTP, On-line Transaction Processing)은 매우 레이턴시(latency)에 민감한 워크로드이다. 이러한 어플리케이션들의 경우, 수 밀리 초를 초과하지 않기 위해 스토리지 서브 시스템으로부터 응답들(responses)의 레이턴시(latency)는 가능한 한 낮고 시간 제한적(time-bounded)인 것이 필수적이다. 그러나 솔리드 스테이트 드라이브(SSD)들 내에서 가비지 콜렉션(GC, garbage collection)으로 인한 소거 동작들(erase operations)은 이러한 요구 사항을 달성을 방해한다. 이 문제는 “테일 레이턴시 문제(tail latency probelm)”로 언급되며, 읽기 동작들의 아주 작은 퍼센트(1% 훨씬 이하)가 과도하게 큰 레이턴시를 겪는다고 할지라도, 최종 사용자는 상당한 영향을 받게 된다.
솔리드 스테이트 드라이브(SSD)의 다른 동작들에 대한 가비지 콜렉션 동작들의 영향을 최소화하기 위한 방법에 대한 요구는 여전히 남아있다.
본 발명의 목적은 복수 배열 독립 디스크 구성(RAID)에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법을 제공하는데 있다.
본 발명의 일 실시 예에 따른 레이드 컨트롤러는 제어 로직, 선택 로직, 셋업 로직 및 실행 로직을 포함한다. 제어 로직은 레이드 구성(RAID configuration)의 복수의 솔리드 스테이트 드라이브(SSD)들에 대해 읽기 및 쓰기 요청들을 제어한다. 선택 로직은 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들(free sector sizes)을 기반으로 가비지 콜렉션를 수행하기 위해 복수의 솔리드 스테이트 드라이브들로부터 하나의 솔리드 스테이트 드라이브를 선택한다. 셋업 로직은 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시한다. 실행 로직은 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈에 진입하도록 지시한다.
본 발명의 일 실시 예에 따른 레이드 컨트롤러의 동작 방법은 레이드(RAID, Redundant Array of Independent Disks) 구성의 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계, 제 1 시간 간격(a first interval of time) 동안 대기하는 단계 및 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지하도록 지시하는 단계를 포함한다.
본 발명의 일 실시 예에 따른 레이드 컨트롤유형의 저장 매체(tangible storage medium)를 포함하는 장치에 있어서, 비일시적인 명령들(non-transitory instructions)이 머신에 의해 실행될 때 상기 비일시적인 명령들을 저장하는 상기 유형의 저장 매체의 동작 방법은, 레이드 구성(RAID)의 복수의 솔리드 스테이트 드라이브들의 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계, 제 1 시간 구간을 대기하는 단계 및 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지하는 것을 지시하는 단계를 포함한다.
본 발명의 실시 예에 따르면, 솔리드 스테이드 드라이브의 다른 동작들이 가비지 콜렉션 동작에 의해 영향을 적게 받도록 제어할 수 있는 레이드 컨트롤러 및 그것의 동작방법이 제공된다.
도 1은 본 발명의 일 실시 예에 따라 복수 배열 독립 디스크(RAID) 구성에서 다양한 솔리드 스테이트 드라이브들을 포함하는 서버를 보여준다.
도 2는 도 1의 솔리드 스테이트 드라이브들 내 가비지 콜렉션을 관리하기 위한 도 1의 복수 배열 독립 디스크(RAID) 컨트롤러를 사용할 수 있는 장치를 보여준다.
도 3 및 도 4는 다양한 복수 배열 독립 디스크(RAID) 구성들에서 도 1의 솔리드 스테이트 드라이브들을 보여준다.
도 5는 도 1의 복수 배열 독립 디스크(RAID) 컨트롤러의 세부사항들을 보여준다.
도 6은 도 5의 선택 로직의 세부 사항들을 보여준다.
도 7은 도 5의 실행 로직의 세부 사항들을 보여준다.
도 8은 도 1의 솔리드 스테이트 드라이브들에 읽기 및 쓰기 요청들의 전달을 제어하는 도 5의 제어 로직을 보여준다.
도 9는 도 1의 솔리드 스테이트 드라이브들의 동작의 상태 다이어그램을 보여준다.
도 10은 도 1의 솔리드 스테이트 드라이브들로부터 프리 섹터 사이즈 정보를 프로세싱하는 도 5의 선택 로직을 보여준다.
도 11은 가비지 콜렉션 셋업 페이즈에 진입하기 위해 도 1의 일부 솔리드 스테이트 드라이브들을 지시하는 선택 로직을 보여준다.
도 12는 도 1의 솔리드 스테이트 드라이브들 중 어느 하나의 솔리드 스테이트 드라이브에서 소거를 위한 준비가 수행되는 블록을 보여준다.
도 13은 도 1의 솔리드 스테이트 드라이브들 중 어느 하나의 솔리드 스테이트 드라이브에서 동작하는 소거 존을 보여준다.
도 14a 내지 도 14c는 본 발명의 실시 예에 따른 도 1의 솔리드 스테이트 드라이브들 내에서 가비지 콜렉션을 제어하는 도 1의 복수 배열 독립 디스크(RAID) 컨트롤러의 동작의 순서도를 보여준다.
도 15는 소거 블록에 가비지 콜렉션을 수행하기 위해 도 1의 솔리드 스테이트 드라이브들의 동작의 순서도를 보여준다.
전술한 특성 및 이하 상세한 설명은 모두 본 발명의 설명 및 이해를 돕기 위한 예시적인 사항이다. 즉, 본 발명은 이와 같은 실시 예에 한정되지 않고 다른 형태로 구체화될 수 있다. 다음 실시 형태들은 단지 본 발명을 완전히 개시하기 위한 예시이며, 본 발명이 속하는 기술 분야의 통상의 기술자들에게 본 발명을 전달하기 위한 설명이다. 따라서, 본 발명의 구성 요소들을 구현하기 위한 방법이 여럿 있는 경우에는, 이들 방법 중 특정한 것 또는 이와 동일성 있는 것 가운데 어떠한 것으로든 본 발명의 구현이 가능함을 분명히 할 필요가 있다.
본 명세서에서 어떤 구성이 특정 요소들을 포함한다는 언급이 있는 경우, 또는 어떤 과정이 특정 단계들을 포함한다는 언급이 있는 경우는, 그 외 다른 요소 또는 다른 단계들이 더 포함될 수 있음을 의미한다. 즉, 본 명세서에서 사용되는 용어들은 특정 실시 형태를 설명하기 위한 것일 뿐이고, 본 발명의 개념을 한정하기 위한 것이 아니다. 나아가, 발명의 이해를 돕기 위해 설명한 예시들은 그것의 상보적인 실시 예도 포함한다.
도 1은 본 발명의 일 실시 예에 따라 복수 배열 독립 디스크(RAID, Redundant Array of Independent Disks, 이하 '레이드'라고 함) 구성(configuration)에서 다양한 솔리드 스테이트 드라이브들을 포함하는 서버를 보여준다. 도 1에서, 서버(105)가 보여진다. 서버(105)는 중앙 처리 장치(125) 및 메모리(110)와 같은 종래의 내부 구성 요소들을 포함하는 것으로 도시된다. 비록 도 1에는 도시되지 않았으나, 통상의 기술자는 서버(105)가 다른 그래픽 카드들, 모뎀들 및 다른 입/출력 장치(예로, 프린터) 등과 같은 다른 내부 구성 요소들을 포함할 수 있음을 인식할 수 있을 것이다. 게다가, 통상의 기술자는 서버(105)가 다른 컴퓨터 시스템들과 직접적으로 상호 작용하거나 임의의 네트워크(미도시)를 통해 상호 작용할 수 있음을 인식할 수 있을 것이다. 결과적으로, 서버(105)는 임의의 머신 또는 컴퓨팅 디바이스로 대체될 수 있다. 예를 들어, 임의의 머신 또는 컴퓨팅 디바이스는 랩탑(laptop) 컴퓨터, 테블릿(tablet) 컴퓨터, PDA(personal digital assistant) 또는 스마트폰일 수 있다.
또한 서버(105)는 레이드(RAID) 컨트롤러(115)를 포함할 수 있다. 레이드 (RAID) 컨트롤러(115)는 제 1 솔리드 스테이트 드라이브(120-1), 제 2 솔리드 스테이트 드라이브(120-2), 제 3 솔리드 스테이트 드라이브(120-3), 제 4 솔리드 스테이트 드라이브(120-4) 및 제 5 솔리드 스테이트 드라이브(120-5)와 같은 다양한 디스크들을 제어할 수 있다. 본 발명의 실시 예들은 데이터에 대한 리던던시(redundancy)의 몇몇 레벨을 제공하는 임의의 레이드(RAID) 구성(configuration)에 응용할 수 있다. (즉, RAID 0이 아닌 임의의 레이드(RAID) 레벨은 데이터 리던던시를 제공하지 않는다) 본 발명의 실시 예들에 응용할 수 있는 레이드(RAID) 레벨의 구체적인 예들은 아래에 도 3 및 도 4를 참조하여 더 논의되는 레이드(RAID) 레벨 5 및 레이드(RAID) 레벨 6를 포함한다.
도 2는 도 1의 솔리드 스테이트 드라이브들 내 가비지 콜렉션을 관리하기 위한 도 1의 레이드(RAID) 컨트롤러를 사용할 수 있는 장치를 보여준다. 도 2는 도 1의 서버(105)를 좀 더 자세히 보여주는 대체 도면일 수 있다. 도 2에서 일반적으로, 서버(105)는 하나 이상의 프로세서들(125)을 포함한다. 하나 이상의 프로세서들(125)은 메모리 컨트롤러(205)와 클럭(210)을 포함할 수 있다. 메모리 컨트롤러(205)와 클럭(210)은 서버(105)의 구성 요소들의 동작들을 조정하기 위해 사용될 수 있다. 프로세서(125)는 메모리(110)와 연결될 수 있다. 메모리(110)는 랜덤 엑세스 메모리(RAM, random access memory), 읽기 전용 메모리(ROM, read-only-memory) 또는 다른 상태 보존 미디어(state preserving media)를 포함할 수 있다. 또한 프로세서들(125)은 스토리지 장치들(120)에 연결될 수 있고, 네트워크 커넥터(215)에 연결될 수 있다. 예를 들어, 네트워크 커넥터(215)는 이더넷 커넥터(Ethernet connector)일 수 있다. 또한 프로세서들(125)은 버스(220)에 연결될 수 있다. 버스(220)는 기타 구성 요소들 사이에서 유저 인터페이스(225) 및 입출력 인터페이스 포트들에 연결될 수 있다. 이 경우 입출력 인터페이스 포트들은 입출력 엔진(230)을 이용하여 관리될 수 있다.
도 3 및 도 4는 다양한 레이드(RAID) 구성(configuration)들에서 도 1의 솔리드 스테이트 드라이브들을 보여준다. 도 3은 레이드(RAID) 레벨 5를 보여준다. 레이드(RAID) 레벨 5는 분산 패리티(distributed parity)를 갖는 블록 레벨 스트라이핑(block-level striping)으로 도시될 수 있다. 도 3에서, 블록 A, B, C 및 D의 4개의 셋들(sets)이 보여진다. 4개의 솔리드 스테이트 드라이브들은 이러한 블록들 중 하나를 저장하고, 1개의 솔리드 스테이트 드라이브는 패리티 블록을 저장한다. 예를 들어, A1 내지 A4 블록들은 패리티 블록(Ap)과 함께 레이드(RAID) 구성에서 디스크들에 분산된다. 다양한 패리티 블록들(Ap, Bp, Cp, Dp)은 레이드(RAID) 구성에서 디스크들에 분산됨에 주목할 필요가 있다. 다양한 패리티 블록들은 단일 디스크(single disk)에 모두 저장되지 않는다. (따라서 '분산 패리티'라 언급됨)
레이드(RAID) 레벨 5는 최소한 3개의 디스크들을 필요로 한다. 데이터를 위한 2개의 디스크와 패리티를 위한 1개의 디스크가 요구된다. 그러나, 도 3에 도시된 바와 같이, 추가적인 디스크들이 포함될 수도 있다. 하나의 디스크가 패리티를 위해 사용되기 때문에, 레이드(RAID) 레벨 5 구성은 n개의 디스크들을 포함하는 경우, 레이드(RAID) 구성의 효율은 1-1/n이다. 레이드(RAID) 레벨 5는 단일 디스크(single disk)의 손실(loss)을 지원할 수 있다.
이와 반대로, 도 4는 레이드(RAID) 레벨 6을 보여준다. 레이드(RAID) 레벨 6가 이중 분산 패리티(double distributed parity)를 포함하는 점을 제외하고, 레이드(RAID) 레벨 6은 레이드(RAID) 레벨 5와 유사하다. 레이드(RAID) 레벨 6은 최소한 4개의 디스크들을 요구한다. 데이터를 위한 2개의 디스크와 패리티를 위한 2개의 디스크가 요구된다. 그러나, 도 4에 도시된 것과 같이, 추가적인 디스크들이 포함될 수 있다. 2개의 디스크들은 패리티를 위해 사용되기 때문에, 레이드(RAID) 레벨 6 구성은 n개의 디스크들을 포함하는 경우, 레이드(RAID) 구성의 효율은 1-2/n이다. 레이드(RAID) 레벨 6는 2개의 디스크(two disks)의 손실(loss)을 지원할 수 있다.
도 5는 도 1의 레이드(RAID) 컨트롤러의 세부사항들을 보여준다. 도 5에서, 레이드(RAID) 컨트롤러(115)는 제어 로직(505, control logic), 설정 로직(510, configuration logic), 선택 로직(515, selection logic), 셋업 로직(520, setup logic), 실행 로직(525, execute logic) 및 버퍼(530)를 포함할 수 있다. 제어 로직(505)은 읽기 및 쓰기 요청들(read and write requests)이 레이드(RAID) 컨트롤러(115)에 의해 다뤄지는 방식을 제어할 수 있다. 레이드(RAID) 컨트롤러(115)에 의해 가비지 콜렉션을 수행하라는 지시를 받은 때를 제외하고, 설정 로직(510)은 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 가비지 콜렉션을 수행하지 않도록 사용될 수 있다. 선택 로직(515)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5) 중 어떠한 솔리드 스테이트 드라이브(SSD)를 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)로 진입시키고 어떠한 어떠한 솔리드 스테이트 드라이브(SSD)를 가비지 콜렉션 실행 페이즈(garbage collection execute phase)로 진입시킬지를 선택할 수 있다. 셋업 로직(520)은 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)을 가비지 콜렉션 셋업 페이즈로 진입하도록 지시할 수 있다. 실행 로직(525)는 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)을 가비지 콜렉션 실행 페이즈로 진입하도록 지시할 수 있다. 그리고 버퍼(530)는 쓰기 요청들로부터의 정보를 저장하기 위해 사용될 수 있다. 이 경우 쓰기 요청들은 가비지 콜렉션 실행 페이즈에 진입한 솔리드 스테이트 드라이브(SSD)에 관한 것이다. 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션을 완료한 때, 쓰기 요청들을 완료하기 위해 버퍼(530)에 있는 쓰기 데이터는 솔리드 스테이트 드라이브(SSD)에 전달될 수 있다.
레이드(RAID) 컨트롤러(115)는 하드웨어, 소프트웨어 또는 이들의 조합으로 구현될 수 있다. 예를 들어, 다양한 논리 소자들은 다양한 임무를 수행하기 위해 특별하게 설계된 회로일 수 있다. 또한, 다양한 논리 소자들은 소프트웨어일 수 있다. 본 발명의 실시 예들은 하드웨어 및 소프트웨어 논리 소자들을 모두 포함하는 것으로 의도된다.
도 6은 도 5의 선택 로직의 세부 사항들을 보여준다. 도 6을 참조하면, 선택 로직(515)은 쿼리 로직(605) 및 리시브 로직(610)을 포함하는 것으로 도시된다. 쿼리 로직(605)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)의 프리 섹터 사이즈를 위해 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)을 조회(query)할 수 있다. 또한 쿼리 로직(605)은 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 정적 웨어 레벨링(static wear leveling)을 필요로 하는지 여부를 위해 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)을 조회(query)할 수 있다. 솔리드 스테이트 드라이브(SSD)에 걸친 데이터 요소들에 대한 쓰기들(writes)의 횟수가 비교적 균일하도록 하기 위해, 정적 웨어 레벨링(static wear leveling)은 솔리드 스테이트 드라이브(SSD)가 데이터를 주변으로 이동시키는 것을 허용한다 (데이터 요소들이 신뢰할 수 없게 되기 전에, 데이터 요소들은 알려진 횟수의 쓰기만을 지원하기 때문). 리시브 로직(610)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)로부터 그들의 프리 섹터 사이즈들을 수신할 수 있다. 그리고 리시브 로직(610)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)로부터 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 정적 웨어 레벨링을 수행할 필요가 있는지 여부를 수신할 수 있다. 그리고 나서, 어떤 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션 모드에 진입해야하는지를 결정하기 위해, 선택 로직(515)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)의 프리 섹터 사이즈들을 사용할 수 있다. 선택 로직(515)은 어떠한 바람직한 알고리즘을 이용하여 어떠한 솔리드 스테이트 드라이브(SSD)를 가비지 콜렉션으로 진입시킬지를 선택할 수 있다. 예를 들어, 선택 로직(515)은 솔리드 스테이트 드라이브(SSD)의 총 공간 대비 프리 섹터 사이즈들의 비율이 가장 낮은 솔리드 스테이트 드라이브(SSD)를 선택할 수 있다. 또는 선택 로직(515)은 시간의 일부 문턱 양에 대한 정적 웨어 레벨링을 수행할 필요성이 나타나는 솔리드 스테이트 드라이브(SSD)를 선택할 수 있다.
도 6의 선택 로직(515)은 쿼리 로직(605) 및 리시브 로직(610)을 모두 포함하는 것으로 보여주고 있으나, 도 6의 선택 로직(515)은 쿼리 로직(605)을 생략할 수도 있다. 예를 들어, 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 주기적으로 그들의 프리 섹터 사이즈들(free sector sizes) 및 정적 웨어 레벨링(static wear leveling)을 수행할 필요성을 선택 로직(515)에 전송할 수 있다. 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)로부터 전송된 그들의 프리 섹터 사이즈들(free sector sizes) 및 정적 웨어 레벨링(static wear leveling)을 수행할 필요성은 선택 로직(515)이 가비지 콜렉션을 수행할 솔리드 스테이트 드라이브(SSD)를 선택하는 것을 가능하게 한다.
도 7은 도 5의 실행 로직의 세부 사항들을 보여준다. 도 7을 참조하면, 실행 로직(525)은 제 1 내지 제 3 타이머들(705, 710, 715)을 포함하는 것을 보여준다. 제 1 타이머(705)는 선택된 솔리드 스테이트 드라이브(SSD)가 언제 가비지 콜렉션 실행 페이즈(garbage collection execute phase)로 진입할지를 결정할 수 있다. 바꿔 말하면, 가비지 콜렉션 실행 페이즈(garbage collection execute phase)에 진입하기 전에 제 1 타이머(705)는 선택된 솔리드 스테이트 드라이브(SSD)가 얼마나 긴 시간을 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)에 있게 될지를 지정할 수 있다. 제 1 타이머(705)가 선택된 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션 실행 페이즈(garbage collection execute phase)에 진입할 수 있다는 것을 가리킨 이후에, 가비지 콜렉션 실행 페이즈(garbage collection execute phase)를 시작하기 위해 실행 로직(525)은 선택된 솔리드 스테이트 드라이브(SSD)에 신호를 전송할 수 있다.
제 1 타이머(705)는 선택된 솔리드 스테이트 드라이브(SSD)가 완전하게 가비지 콜렉션 셋업(garbage collection setup)을 수행하기 위해 필요한 시간보다 적은 양의 시간을 측정할 수 있다. 불충분한 프리 블록들을 갖는 다른 솔리드 스테이트 드라이브(SSD)들을 남겨둔 채, 각 선택된 솔리드 스테이트 드라이브(SSD)가 완전하게 가비지 콜렉션을 수행하기 위해 충분한 시간을 부여하는 것은 너무 긴 시간이 소요될 수 있다. 따라서 제 1 타이머(705)는 선택된 솔리드 스테이트 드라이브(SSD)가 완전하게 가비지 콜렉션 셋업(garbage collection setup)을 수행하기 위해 필요한 시간보다 적은 양의 시간을 측정할 수 있다는 것은 받아들일 수 있는 것으로 간주된다.
실행 로직(525)이 선택된 솔리드 스테이트 드라이브(SSD)에 블록들을 소거하는 것을 중지하도록 지시한 이후, 제 2 타이머(710)는 선택된 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션 실행 페이즈(garbage collection execute phase)를 얼마나 오래 유지할지를 결정할 수 있다. 제 2 타이머(710)는 선택된 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션을 완전히 수행하기 위해 요구되는 시간보다 적은 시간을 측정할 수 있다. 불충분한 프리 블록들을 갖는 다른 솔리드 스테이트 드라이브(SSD)들을 남겨둔 채, 각 선택된 솔리드 스테이트 드라이브(SSD)가 완전하게 가비지 콜렉션을 수행하기 위해 충분한 시간을 부여하는 것은 너무 긴 시간이 소요될 수 있다. 따라서, 반드시 모든 가비지 콜렉션에 대한 것은 아니지만, 제 2 타이머(710)는 선택된 솔리드 스테이트 드라이브(SSD)에 일부의 가비지 콜렉션을 수행할 시간을 부여할 수 있다.
제 3 타이머(715)는 선택된 솔리드 스테이트 드라이브(SSD)에 소거 동작을 수행하는데 걸리는 시간을 측정할 수 있다. 앞서 언급한 바와 같이 가비지 콜렉션이 완료되기 전에, 제 2 타이머(710)는 선택된 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션을 중지할 것을 요청받는 결과를 야기할 수 있다. 최악의 경우에, 선택된 솔리드 스테이트 드라이브(SSD)는 방금 소거 동작을 시작한 것이다. 이러한 소거 동작이 진행되는 동안, 해당 블록(및 가능한 한 다른 블록들)은 읽기 또는 쓰기 요청들을 처리할 수 없다. 그러므로, 선택된 솔리드 스테이트 드라이브(SSD)에 읽기 및 쓰기 요청들이 예정되기(scheduled) 전에, 선택된 솔리드 스테이트 드라이브(SSD)는 소거 동작이 완료되기에 충분한 시간을 부여받을 필요가 있다. 도 1의 레이드(RAID) 컨트롤러(115)가 선택된 솔리드 스테이트 드라이브(SSD)에 대한 읽기 및 쓰기 요청들을 다시 예정(schedule)한 이후에, 제 3 타이머(715)는 선택된 솔리드 스테이트 드라이브(SSD)에 소거 동작을 완료하기 위해 요구되는 시간을 양을 측정할 수 있다. 레이드(RAID) 구성에 있어 모든 드라이브들을 위해 같은 모델의 드라이브들이 사용되는 것이 바람직하지만, 레이드(RAID) 구성은 다른 모델의 솔리드 스테이트 드라이브(SSD)들로부터 조립될 수 있다. 그러므로, 다른 솔리드 스테이트 드라이브들이 소거 동작들을 수행하는데 얼마나 걸리는지 여부에 따라, 제 3 타이머(715)는 시간의 다른 양을 측정하는 것이 필요할 수 있다.
도 8은 도 1의 솔리드 스테이트 드라이브들에 읽기 및 쓰기 요청들의 전달을 제어하는 도 5의 제어 로직을 보여준다. 도 8을 참조하면, 제어 로직(505)은 읽기 요청(805) 및 쓰기 요청(810)을 수신한다. 제어 로직(505)은 이러한 요청들이 전송된 솔리드 스테이트 드라이브(SSD)를 제어할 수 있다.
일반적으로, 제어 로직(505)은 엑세스 되는 데이터를 포함하는 솔리드 스테이트 드라이브에 읽기 요청(805) 및 쓰기 요청(810)을 지시할 것이다. 그러나, 대상 솔리드 스테이트 드라이브(target SSD)가 현재 가비지 콜렉션을 수행하고 있다면, 대상 솔리드 스테이트 드라이브(target SSD)에 대한 요청을 지시하는 것은 불필요한 지연(unnecessary delay)을 유발할 수 있다. 더 구체적으로, 원하는 데이터(the desired data)가 가비지 콜렉션을 수행하는 솔리드 스테이트 드라이브(SSD)에 있는 경우라면, 솔리드 스테이트 드라이브(SSD)가 요청을 처리할 수 있기 전에 솔리드 스테이트 드라이브(SSD)는 소거 동작을 완료할 필요가 있다. 소거 동작들은 읽기 및 쓰기 요청들에 비해 느리기 때문에, 대상 솔리드 스테이트 드라이브(target SSD)가 요청을 처리하기 위해 대기하는 것은 요청이 정상적으로 요구하는 것에 비해 과도한 딜레이(excessive delay)를 유발할 수 있다.
대상 솔리드 스테이트 드라이브(target SSD)가 가비지 콜렉션을 완료하는 것을 기다리는 것보다 요청을 처리하기 위한 더 빠른 방법은 현재 가비지 콜렉션을 겪지 않는 다른 솔리드 스테이트 드라이브들(other SSDs)을 이용하는 것일 수 있다. 예를 들어, 데이터를 읽기 위해서, 레이드(RAID) 구성 내 각각의 다른 솔리드 스테이트 드라이브들(other SSDs)은 엑세스될 수 있다. 그리고 요청된 데이터는 다른 솔리드 스테이트 드라이브들(other SSDs)로부터 재구성될 수 있다.
더 구체적인 예를 제공하기 위해서, 도 3을 참조하고 제 1 솔리드 스테이트 드라이브(120-1)가 가비지 콜렉션 실행 페이즈(garbage collection execute phase)에 있다고 가정한다. 제 1 솔리드 스테이트 드라이브(120-1)가 그것의 가비지 콜렉션을 종료하는 것을 기다리는 것을 대신하여, A2 내지 A4 블록들과 패리티 블록(AP)이 읽혀질 수 있다. 이러한 블록들로부터 제 1 솔리드 스테이트 드라이브(120-1)가 가비지 콜렉션을 완료하는 것을 기다리지 않고, A1 블록은 재구성될 수 있고, 요청된 데이터가 전달될 수 있다.
도 8을 참조하면, 쓰기 요청(810)이 가비지 콜렉션을 수행하고 있는 솔리드 스테이트 드라이브(SSD)에 도달하는 경우, 제어 로직(505)은 쓰기 요청(810)을 도 5의 버퍼(530)로 향하게 할 수 있다. 또는 선택된 솔리드 스테이트 드라이브(the selected SSD)가 버퍼를 포함하는 경우, 제어 로직(505)은 쓰기 요청(810)을 선택된 솔리드 스테이트 드라이브(the selected SSD)로 향하게 하여 솔리드 스테이트 드라이브(SSD)의 버퍼로 쓰기 요청(810)을 내보낼 것이다.
도 9는 도 1의 솔리드 스테이트 드라이브들의 동작의 상태도를 보여준다. 도 9를 참조하면, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 905 단계에서 시작한다. 거기에서부터, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 910 단계인 가비지 콜렉션 구성 단계(GC configuration phase)로 변화(transition)한다. 910 단계에서, 도 5의 설정 로직(510)은 도 1의 레이드(RAID) 컨트롤러(115)에 의해 분명하게 지시받은 경우에만 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 가비지 콜렉션을 수행하도록 설정할 수 있다. 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 설정된 이후에, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 915 단계인 노말 동작(normal operation)에 진입한다. 915 단계 동안, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 도 8의 읽기 요청들(805) 및 쓰기 요청들(810)을 정상적으로 처리할 수 있다.
결국, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 920 단계의 가비지 콜렉션 셋업 페이즈(GC collection setup phase)로 변화(transition)할 수 있을 것이다. 920 단계에서, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 가비지 콜렉션에 대해 셋업(set up)할 수 있다. 920 단계의 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)는 소거 동작들(erase operations)을 위해 예정된 블록들(blocks scheduled)로부터 다른 블록들(other blocks)로 유효 데이터(valid data)를 복사하는 것을 포함할 수 있다. 가비지 콜렉션 셋업 페이즈(garbage collection setup phase) 동안, 솔리드 스테이트 드라이브(SSD)는 여전히 도 8의 읽기 요청들(805) 및 도 8의 쓰기 요청들(810)을 수신하고 처리할 수 있다. 이러한 요청들은 가비지 콜렉션 셋업(garbage collection setup)보다 우선 순위가 주어질 수 있다. 그러므로, 하나 이상의 솔리드 스테이트 드라이브(SSD)는 동시에 가비지 콜렉션 셋업 페이즈(920)에 있을 수 있다.
결국, 도 1의 레이드(RAID) 컨트롤러(115)가 가비지 콜렉션을 위한 솔리드 스테이트(SSD)를 선택할 때, 선택된 솔리드 스테이트 드라이브(SSD)는 925 단계의 가비지 콜렉션 실행 페이즈(garbage collection execute phase)로 진입할 수 있다. 925 단계에서, 선택된 솔리드 스테이트 드라이브(SSD)는 소거 동작들을 수행할 수 있다. 도 7에 언급된 바와 같이, 선택된 솔리드 스테이트 드라이브는 도 5의 실행 로직(525)의 명령(instruction)에 따라 925 단계의 가비지 콜렉션 실행 페이즈(garbage collection execute phase)에 진입하고 가비지 콜렉션 실행 페이즈(garbage collection execute phase)를 종료할 수 있다. 925 단계의 가비지 콜렉션 실행 페이즈(garbage collection execute phase)가 종료한 이후에, 솔리드 스테이트 드라이브(SSD)는 915 단계로 돌아간다.
위의 설명은 임의의 시점에 가비지 콜렉션 실행 페이즈(925)에 진입하는 하나의 솔리드 스테이트 드라이브에 초점을 맞춘 것이다. 예컨대 RAID 5와 같이 단일 드라이브(single drive)의 손실을 견딜 수 있는 레이드(RAID) 구성들에서, 이러한 것은 의미가 있다. 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행할 때, 가비지 콜렉션을 수행하는 솔리드 스테이트 드라이브는 레이드(RAID)로부터 빠져나옵니다. 레이드(RAID)는 고객들로부터 읽기 및 쓰기 요청들을 만족시킬 수 있어야 하기 때문에, RAID 5(오직 단일 드라이브의 손실을 지원하는 다른 레이드(RAID) 구성들)에서 최대 하나의 솔리드 스테이트 드라이브(SSD)가 한번에 가비지 콜렉션을 수행할 수 있다.
그러나 다른 레이드(RAID) 구성들은 단일 드라이브 이상의 손실을 지원할 수 있다. 예를 들어, 도 4에서 언급된 RAID 6는 레이드(RAID)로부터 두 개의 드라이브들의 손실을 지원할 수 있다. 그러므로, RAID 6 구성에서, 최대 두 개의 솔리드 스테이트 드라이브들은 고객들로부터 서비스 요청들을 처리할 수 있는 레이드(RAID)의 기능에 영향을 주는 것 없이 가비지 콜렉션을 동시에 수행할 수 있다. 더 일반적으로, 레이드(RAID) 구성은 k(RAID 고장 개수라고 불림)개의 드라이브들까지 손상을 입으면서도 여전히 고객 요청들(client requests)을 만족시킬 수도 있다. 그리고 나서, 최대 k개의 솔리드 스테이트 드라이브(SSD)들은 RAID 구성에서 동시에 가비지 콜렉션을 실행할 수 있다. 하기의 설명 및 본 발명의 실시 예들에서, 가비지 콜렉션을 실행하는 솔리드 스테이트 드라이브(SSD)들에 대한 모든 참조는 가비지 콜렉션을 실행하는 RAID 고장 개수(RAID failure number)의 솔리드 스테이트 드라이브(SSD)들까지 포함하기 위한 것이다.
도 10은 도 1의 솔리드 스테이트 드라이브들로부터 프리 섹터 사이즈 정보를 처리하는 도 5의 선택 로직을 보여준다. 도 10을 참조하면, 선택 로직(525)은 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)에 그들의 프리 섹터 사이즈들(free sector sizes)을 요청하는 요청(1005)를 보내는 것으로 도시된다. 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 제 1 내지 제 5 프리 섹터 사이즈들(1010-1~1010-5)로 응답할 수 있다. 또한 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)은 그들이 정적 웨어 레벨링(static wear leveling)을 수행할 필요가 있는지 여부에 관한 정보를 생성할 수 있다. 그리고 나서 선택 로직(525)은 솔리드 스테이트 드라이브가 가비지 콜렉션의 수행 여부를 선택하기 위해서 이러한 정보를 이용할 수 있다. 앞서 언급한 바와 같이, 선택 로직(525)은 도 9의 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)에 진입하기 위해 복수의 솔리드 스테이트 드라이브들을 선택할 수 있다. 그러나 가비지 콜렉션 실행 페이즈(garbage collection execute phase)의 솔리드 스테이트 드라이브(SSD)들의 수는 RAID 고장 개수(RAID failure number)를 초과해서는 안된다.
앞서 설명된 바와 같이, 도 5의 선택 로직(525)은 하나 이상의 솔리드 스테이트 드라이브(SSD)들이 도 9의 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)에 진입하도록 선택할 수 있다. 도 11은 이러한 경우를 도시한다. 도 11을 참조하면, 선택 로직(525)은 제 1 솔리드 스테이트 드라이브(120-1), 제 2 솔리드 스테이트 드라이브(120-2) 및 제 4 솔리드 스테이트 드라이브(120-4)들이 도 9의 가비지 콜렉션 셋업 페이즈(garbage collection setup phase)에 진입하도록 선택한다. 선택 로직(525)은 인스트럭션들(1105, 1110, 1115)을 제 1 솔리드 스테이트 드라이브(120-1), 제 2 솔리드 스테이트 드라이브(120-2) 및 제 4 솔리드 스테이트 드라이브(120-4)들에 각각 전달할 수 있다. 그러므로 제 3 솔리드 스테이트 드라이브(120-3) 및 제 5 솔리드 스테이트 드라이브(120-5)들은 도 9의 노말 동작 페이즈(915)에 남아 있게 된다.
도 12는 도 1의 솔리드 스테이트 드라이브들 중 어느 하나의 솔리드 스테이트 드라이브에서 소거를 위한 준비가 수행되는 블록을 보여준다. 이러한 준비는 도 9의 가비지 콜렉션 셋업 페이즈(920)의 일부일 수 있다. 도 12를 참조하면, 소거 블록(1205)이 보여진다. 소거 블록(1205)는 가비지 콜렉션 동안에 소거가 예정된 블록을 나타낸다. 솔리드 스테이트 드라이브(SSD)들의 하나의 특징은 데이터가 페이지 레벨(page level)에서 읽혀지고 쓰여진다는 것이다. 그러나, 소거는 블록 레벨(block level)에서 수행된다. 그러므로, 예를 들어, 소거 블록(1205)은 복수의 페이지들을 포함하는 것으로 도시된다. 예를 들어 복수의 페이지들 중 일부인 제 2 페이지(1210)는 유효 데이터(valid data)를 포함한다. 즉, 유효 데이터는 최신 데이터이다. 제 0 페이지(1215)와 같은 다른 페이지는 무효 데이터(invalid data)를 포함한다. 즉, 무효 데이터는 한 때 유효하였으나 아마도 새로운 데이터를 이용해 덮어 쓰여졌기 때문에 더 이상 최신 데이터가 아니다. (SSD에서 새롭게 쓰여진 데이터는 유효 페이지에 존재하는 데이터 위에 쓰여지기 보다는 프리 페이지에 쓰여진다) 도 12가 블록(1205) 내에 오직 네 개의 페이지들만을 보여주나, 블록(1205)은 임의의 수의 페이지들을 포함할 수 있다. 예를 들어, 블록(1205)은 1024개의 페이지들을 포함할 수 있다. 솔리드 스테이트 드라이브(SSD)의 한 블록 내 페이지들의 수는 일반적으로 생산자의 설계상의 선택 사항(design choice)이다.
블록(1205)이 소거되기 전에, 블록(1205) 내 모든 데이터는 소거가 예정된 블록으로부터 복사되어야 한다. 즉, 블록(1205) 내의 모든 유효 페이지들은 다른 프리 페이지들(free pages)로 복사되어야 하고, 그렇지 않으면 유효 페이지들이 포함하는 데이터는 손실될 것이다. 그러므로, 제 2 페이지(1210)는 프리 블록(1225)의 0 페이지(1220)에 복사되는 것이 보여진다. (이러한 복사는 동작(1230)으로 보여진다) 일단 제 2 페이지(1210)가 프리 블록(1225) 내 제 0 페이지(1220)에 복사되면, 제 2 페이지(1210)는 무효(invalid)로 표시될 수 있다. (물론, 블록(1205) 내 추가적인 유효 페이지들이 있다면, 추가 유효 페이지들은 블록(1205)이 소거되기 전에 복사될 필요가 있다) 일단 블록(1205) 내 모든 페이지들이 무효(invalid)로 표시되면, 블록(1205)은 소거(erasure)를 위한 준비가 된다. 이 경우 소거(erasure)는 도 9의 가비지 콜렉션 실행 페이즈 동안 수행될 수 있다.
도 12는 프리 블록(1225)의 제 0 페이지(1220)에 복사되는 제 2 페이지(1210)을 보여주나, 제 0 페이지(1220)은 프리 페이지일 필요는 없다. 즉, 프리 블록(1225)는 일부 유효 데이터(valid data) 및 일부 프리 페이지들(free pages)을 저장할 수 있다. 소거 대상 블록(a block targeted for erasure)으로부터 유효 데이터(valid data)의 복사를 위한 대상 블록(the destination block)은 얼마나 많은 데이터가 복사될 필요가 있는지에 따라 달라질 수 있다. 예를 들어, 솔리드 스테이트 드라이브(SSD)가 부분적으로 유효 데이터(valid data)로 채워진 몇몇 블록들을 포함한다면, 이러한 페이지들 전부를 단일 프리 블록(single free block)쪽으로 복사하는 것은 의미가 있을 수 있다. 반대로, 소거 대상의 블록으로부터 복사될 필요가 있는 데이터의 양이 적은 경우, 솔리드 스테이트 드라이브(SSD)는 유효 데이터(valid data)를 현재 사용 중인 블록의 프리 페이지(free page)로 복사할 수 있다.
도 12를 참조하면, 소거 동작의 대상은 단일 블록이다. 그러나 소거 동작들은 블록보다 더 높은 레벨에서 동작할 수 있다. 도 13은 도 1의 솔리드 스테이트 드라이브들 중 하나에서 동작하는 소거 존(erase zone)을 보여준다. 도 13을 참조하면, 소거 존(1305)은 다양한 블록들(1310, 1315, 1320, 1325)을 포함하는 것으로 보여진다. 만약 솔리드 스테이트 드라이브(SSD)가 소거 동작들을 소거 존(1305)에 수행한다면, 소거 동작이 수행되기 전에 블록들(1310, 1315, 1320, 1325) 내에 모든 페이지들의 모든 유효 데이터가 소거 존(1305)으로부터 복사될 필요가 있다. 이러한 과정은 앞서 도 12를 참조하여 설명된 바와 같다. 이러한 과정은 소거 존(1305) 내의 복수의 블록들에 간단히 수행된다.
도 14a 내지 도 14c는 본 발명의 일 실시 예에 따라 도 1의 솔리드 스테이트 드라이브(SSD)들 내 가비지 콜렉션을 제어하는 도 1의 레이드(RAID) 컨트롤러의 동작의 순서도가 보여진다. 도 14a를 참조하면, S1405 단계에서, 도 5의 설정 로직(510)은 도 1의 레이드(RAID) 컨트롤러(115)가 그렇게 하도록 지시받은 경우만을 제외하고 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)이 가비지 콜렉션을 수행하지 않도록 설정할 수 있다. S1410 단계에서, 도 5의 선택 로직(515)은 도 10의 제 1 내지 제 5 프리 섹터 사이즈들(1010-1~1010-5)을 위해 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)을 쿼리(query)할 수 있다. S1415 단계에서, 도 5의 선택 로직(515)은 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(120-1~120-5)로부터 제 1 내지 제 5 프리 섹터 사이즈들(1010-1~1010-5)을 수신할 수 있다. 앞서 언급된 도 10을 참조하면, 본 발명의 실시 예들에서, 도 1의 제 1 내지 제 5 솔리드 스테이트 드라이브들(20-1~120-5)은 도 5의 선택 로직(515)의 쿼리(query) 요청이 없더라도 도 10의 제 1 내지 제 5 프리 섹터 사이즈들(1010-1~1010-5)에 관한 정보를 제공할 수 있다.
S1420 단계에서, 도 5의 선택 로직(515)은 솔리드 스테이트 드라이브(SSD)가 가비지 콜렉션을 수행하도록 선택할 수 있다. 도 9에 설명된 바와 같이, 도 5의 선택 로직(515)은 도 9의 가비지 콜렉션 셋업 페이즈(920)를 위한 하나 이상의 솔리드 스테이트 드라이브(SSD)를 선택할 수 있다. S1425 단계에서, 도 5의 셋업 로직(520)은 선택된 솔리드 스테이트 드라이브(들)이 도 9의 가비지 콜렉션 셋업 페이즈(920)에 진입하도록 지시할 수 있다. S1430 단계에서, 도 5의 제어 로직(505)은 도 8의 읽기 요청들을 정상적으로(as normal) 선택된 솔리드 스테이트 드라이브(들)에 계속하여 전송할 수 있다. (그것이 바로 S1430 단계가 점선으로 표시된 이유이다)
도 14b를 참조하면, S1435 단계에서, 도 5의 실행 로직(525)은 도 9의 가비지 콜렉션 셋업 페이즈(920)를 완료(complete)하기 위해 충분한 시간을 대기할 수 있다. 이러한 맥락에서, “완료(complete)”는 “모든 가능한 동작들을 수행하는 것”을 반드시 의미하는 것은 아니지만, “충분한 동작들을 수행하는 것” 또는 “가비지 콜렉션이 종료될 때까지 동작들을 수행하는 것”을 의미한다. 만약 하나의 솔리드 스테이트 드라이브(SSD)가 모든 가능한 가비지 콜렉션 동작들을 수행하기에 충분한 시간을 부여 받는다면, 레이드(RAID) 구성의 다른 솔리드 스테이트 드라이브(SSD)들은 상당한 가비지 콜렉션을 요청할 가능성이 있다. 모든(또는 대부분의) 솔리드 스테이트 드라이브들이 계속적으로 가비지 콜렉션을 요청한다면, 이것은 모든 디스크들에 대한 성능의 저하의 결과를 가져올 수 있을 것이다. 이러한 상황을 피하기 위해, 각 솔리드 스테이트 드라이브는 가능한 모든 가비지 콜렉션 단계를 반드시 수행하지 않으면서 일부의 가비지 콜렉션(some garbage collection)을 수행할 수 있다. 그러므로, S1435 단계에서, 선택된 솔리드 스테이트 드라이브는 반드시 전부가 아닌 솔리드 스테이트 드라이브(SSD)가 실제로 필요로 하는 일부의 가비지 콜렉션 셋업(garbage collection setup)을 수행할 수 있다.
S1440 단계에서, 도 5의 실행 로직(525)은 선택된 솔리드 스테이트 드라이브가 도 9의 가비지 콜렉션 실행 페이즈(925)에 진입하도록 지시할 수 있다. 하나 이상의 솔리드 스테이트 드라이브(SSD)가 도 9의 가비지 콜렉션 셋업 페이즈(920)를 위해 선택될 수 있는 도 14a의 S1420 단계와 대비하여, 도 14b의 S1440 단계에서 도 5의 실행 로직(525)은 RAID 고장 개수(RAID failure number)까지 도 9의 가비지 콜렉션 실행 페이즈(925)를 위해 솔리드 스테이트 드라이브(SSD)들을 선택할 수 있다. 예를 들어, RAID 5의 RAID 고장 개수는 1개의 SSD를 가리키고, RAID 6의 RAID 고장 개수는 2개의 SSD를 가리킨다. S1445 단계에서, 도 5의 제어 로직(505)은 도 8의 읽기 요청들(805)을 레이드(RAID) 구성의 다른 솔리드 스테이트 드라이브들에 보낼 수 있다. S1450 단계에서, 도 5의 제어 로직(505)은 RAID 구성에 다른 솔리드 스테이트 드라이브들(other SSDs)에 저장된 데이터를 이용함으로써 선택된 솔리드 스테이트 드라이브(the selected SSD)로부터 요청된 데이터를 결정할 수 있다. S1455 단계에서, 선택된 솔리드 스테이트 드라이브(SSD) 및 레이드(RAID) 구성의 설계에 따라, 도 8의 쓰기 요청들(810)은 도 5의 버퍼(530) 또는 선택된 솔리드 스테이트 드라이버(SSD)에 버퍼링될 수 있다. S1445 단계, S1450 단계 및 S1455 단계가 동작하는 동안, S1460 단계에서 도 5의 실행 로직(525)은 도 9의 가비지 콜렉션 실행 페이즈가 완료되는 것을 기다릴 수 있다. S1435 단계와 마찬가지로, “완료”는 반드시 선택된 솔리드 스테이트 드라이브가 필요한 모든 가비지 콜렉션 동작을 수행한다기 보다는 선택된 솔리드 스테이트 드라이브가 프리 섹터 사이즈(free sector size)를 증가시키기 위하여 충분한 가비지 콜렉션 동작들을 수행할 수 있음을 의미한다.
S1465 단계에서, 도 5의 실행 로직(525)은 선택된 솔리드 스테이트 드라이브(SSD)가 도 9의 가비지 콜렉션 실행 페이즈(925)를 종료하도록 지시할 수 있다. 앞서 언급된 도 7을 참조하면, 도 5의 실행 로직(525)이 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 종료하라고 지시한 것은 모든 가비지 콜렉션 동작들이 즉시 종료됨을 의미하는 것은 아니다. 그러므로, S1470 단계에서, 도 5의 실행 로직(525)은 선택된 솔리드 스테이트 드라이브(the selected SSD)가 현재 계류 중인 소거 동작들을 완료하기 위한 충분한 시간을 대기할 수 있다. S1475 단계에서, 도 5의 제어 로직(505)은 선택된 솔리드 스테이트 드라이브에 도 8의 읽기 요청들(805)의 전달을 예정할 수 있다. 결국, S1480 단계에서, 도 5의 버퍼(530)가 선택된 솔리드 스테이트 드라이브(SSD)에 대한 도 8의 임의의 쓰기 요청들(810)을 저장한 경우, 도 1의 레이드(RAID) 컨트롤러(115)는 이러한 도 8의 버퍼링된 쓰기 요청들(810)을 선택된 솔리드 스테이트 드라이브에 전달할 수 있다. 이어 도 1의 레이드(RAID) 컨트롤러(115)는 도 1의 S1410 단계로 되돌아 올 수 있다.
도 15는 소거 블록에 가비지 콜렉션을 수행하기 위한 도 1의 솔리드 스테이트 드라이브들의 동작의 순서도를 보여준다. 도 15를 참조하면, S1505 단계에서, 선택된 솔리드 스테이트 드라이브는 소거를 위해 도 12의 블록(1205)을 선택할 수 있다. S1510 단계에서, 선택된 솔리드 스테이트 드라이브는 도 12의 프리 블록(1225) (또는 일부의 프리 페이지들을 갖는 블록)을 선택할 수 있다. S1515 단계에서, 선택된 솔리드 스테이트 드라이브(SSD)는 소거를 위해 선택된 도 12의 블록(1205)로부터 도 12의 유효 데이터(1210)를 도 12의 프리 블록(1225)에 복사할 수 있다. 결국, S1520 단계에서, 선택된 솔리드 스테이트 드라이브는 소거를 위해 선택된 블록(1205)를 소거할 수 있다.
도 14a 내지 도 14c 및 도 15를 참조하면, 본 발명에 따른 몇몇 실시 예들이 보여진다. 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
하기의 설명은 본 발명의 개념의 특정한 관점들이 구현될 수 있는 적합한 머신(machine) 또는 머신들(machines)의 간략하고 일반적인 설명을 제공하기 위한 것이다. 머신(machine) 또는 머신들(machines)의 적어도 일부는 다른 장치들로부터 수신된 지시들(directives)뿐만 아니라 키보드들, 마우스들과 같은 통상적인 입력 장치들로부터의 입력(input)에 의해 제어될 수 있다. 장치 또는 장치들의 적어도 일부는 가상 현실(VR, virtual reality) 환경과 상호 작용, 바이오 피드백(bio feedback) 또는 다른 입력 신호들에 의해서도 제어될 수 있다. 본 명세서에서 사용된 용어인 “머신(machine)”은 단일 머신(single machine), 가상 머신(virtual machine) 또는 통신 접속 머신들의 시스템(a system of communicatively coupled machines), 가상 머신들(virtual machine) 또는 함께 동작하는 장치들을 넓게 포함하는 것으로 의도된다. 예시적인 머신들은 컴퓨팅 장치들(computing devices) 및 수송 장치들(transportation devices)을 포함한다. 예를 들어, 컴퓨팅 장치들은 퍼스널 컴퓨터들(personal computers), 워크 스테이션들(workstations), 서버들, 휴대용 컴퓨터들, 휴대용 장치들, 휴대폰, 태블릿들(tablets) 등과 같을 수 있다. 예를 들어, 수송 장치들은 개인 또는 대중 교통 수단(예를 들어, 자동차, 기차, 택시 등)일 수 있다.
머신(machine) 또는 머신들(machines)은 임베디드 컨트롤러들(embedded controllers)을 포함할 수 있다. 예를 들어, 임베디드 컨트롤러들은 프로그램 가능한(또는 프로그램 불가능한) 로직 디바이스들 또는 어레이들, 주문형 반도체들(ASICs. Application Specific Integrated Circuits), 임베디드 컴퓨터들(embedded computers), 스마트 카드들(smart cards) 및 이와 유사한 것들일 수 있다. 네트워크 인터페이스(network interface), 모뎀 또는 다른 통신 연결(communicative coupling)을 통해, 머신(machine) 또는 머신들(machines)은 하나 이상의 원격 머신들(remote machines)에 대해 하나 이상의 접속들(connections)을 이용할 수 있다. 머신들(machines)은 인터넷, 근거리 네트워크들(LAN, local area networks), 광역 네트워크들(WAN, wide area networks) 등과 같은 물리적인 및/또는 논리적인 네트워크를 통하여 상호 접속될 수 있다. 통상의 기술자는 네트워크 통신이 다양한 유선 및/또는 무선 근거리 또는 장거리 캐리어들(carriers) 및 프로토콜들을 이용할 수 있음을 이해할 수 있을 것이다. 이 경우 다양한 유선 및/또는 무선 근거리 또는 장거리 캐리어들 및 프로토콜들은 무선 주파수(radio frequency), 위성(satellite), 마이크로파(microwave), 미국 전기 전자 학회(IEEE) 802.11, 블루투스(bluetooth) 등일 수 있다.
본 발명에 따른 실시 예들은 기능들(functions), 절차들(procedures), 데이터 구조들(data structures), 응용 프로그램들(application programs) 등을 포함하는 연관 데이터(the associated data)를 함께 참조하여 설명될 수 있다. 이 경우 연관 데이터(the associated data)는 머신에 의해 엑세스될 때 작업들(tasks)을 수행하거나 추상 데이터 유형들(abstract data types) 또는 로우 레벨의 하드웨어 컨텍스트들(low-level hardware contexts)을 정의하는 머신의 결과에 따른 것이다. 예를 들어, 연관 데이터(associated data)는 휘발성 및/또는 불휘발성 메모리(예로, RAM, ROM 등) 또는 다른 스토리지 장치들 및 연관 저장 매체(associated storage media)에 저장될 수 있다. 예를 들어, 연관 저장 매체(associated storage media)는 하드 드라이브들(hard-drives), 플로피 디스크들(floppy disks), 광학 저장 장치(optical storage), 테이프(tapes), 플래시 메모리(flash memory), 메모리 스틱(memory sticks), 디지털 비디오 디스크들(digital video disks), 생물학적 저장 장치(biological storage) 등을 포함할 수 있다. 연관 데이터(associated data)는 전송 환경들(transmission environments)을 통해 전달될 수 있다. 예를 들어, 전송 환경들은 패킷 형식(the form of packets), 직렬 데이터 형식(the form of serial data), 병렬 데이터 형식(the form of parallel data, 전파 신호 형식(the form of propagated signals) 등을 갖는 물리 및/또는 논리 네트워크를 포함한다. 그리고 연관 데이터(associated data)는 압축(compressed)되거나 암호화(encrypted)된 포맷(format)으로 사용될 수 있다. 연관 데이터(associated data)는 분산 환경(distributed environment)에서 사용될 수 있고, 머신 엑세스(machine access)를 위해 로컬적으로 및/또는 원격적으로 저장될 수 있다.
본 발명의 실시 예들은 하나 이상의 프로세서들에 의해 실행되는 명령들(instructions)을 포함하는 유형의(tangible) 비일시적인(non-transitory) 머신-판독 가능 매체(machine-readable medium)를 포함할 수 있다. 이러한 인스트럭션들은 본 명세서에서 설명된 본 발명의 구성요소들을 수행하기 위한 명령들을 포함한다.
도시된 실시 예들을 참조하여 본 발명의 개념의 원리를 설명하고 예시하였다. 도시된 실시 예들은 이러한 원리들로부터 벗어나지 않고 배열 및 세부 사항에 있어서 변형될 수 있고, 임의의 방식으로 조합될 수 있음은 이해될 것이다. 그리고, 비록 전술한 논의는 특정한 실시 예들에 집중한 것이지만, 다른 구성들이 고려될 수 있다. 특히, 이러한 “본 발명의 일 실시 예에 있어서” 또는 이와 유한 표현이 본 명세서에서 사용되었으나, 이러한 문구들은 일반적으로 실시 가능성(embodiment possibilities)을 참조하기 위한 것이고, 본 발명의 개념을 특정한 실시 예의 구성들에 한정하기 위한 것이 아니다. 본 명세서에서 사용된 것과 같이, 이러한 용어들은 다른 실시 예들에 결합될 수 있는 동일한 또는 다른 실시 예들을 참조할 수 있다.
전술한 실시 예들은 본 발명의 개념을 제한하는 것으로 해석되지 않는다. 비록 몇몇의 실시 예들이 설명되었으나, 이러한 통상의 기술자들은 이러한 실 시 예들에 대해 실질적으로 신규한 교시(novel teaching) 및 본 발명의 이점들(advantages)로부터 벗어나지 않으면서 많은 변형들(many modifications)이 가능하다는 것을 쉽게 이해할 것이다. 따라서, 이러한 모든 변형들은 청구 범위들에 기재된 본 발명의 개념의 범위 내에 포함되는 것으로 의도된다.
본 발명의 실시 예들은 제한(limitation) 없이 하기의 구절들(statements)로 확장할 수 있다.
제 1 구절로, 본 발명의 일 실시 예에 따른 레이드(RAID, Redundant Array of Independent Disks) 컨트롤러는 레이드 구성(RAID configuration)의 복수의 솔리드 스테이트 드라이브(SSD)들에 대해 읽기 및 쓰기 요청들을 제어하는 제어 로직, 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들(free sector sizes)을 기반으로 가비지 콜렉션를 수행하기 위해 복수의 솔리드 스테이트 드라이브들로부터 하나의 솔리드 스테이트 드라이브를 선택하는 선택 로직, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 셋업 로직 및 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈에 진입하도록 지시하는 실행 로직을 포함한다.
제 2 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 레이드 컨트롤러는 하드웨어로 구현된다.
제 3 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 레이드 컨트롤러는 소프트웨어로 구현된다.
제 4 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 레이드 구성에서 복수의 솔리드 스테이트 드라이브들 중 레이드 고장 개수(RAID failure number)까지의 솔리드 스테이트 드라이브들은 임의의 시점에 상기 가비지 콜렉션 실행 페이즈에 있다.
제 5 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 셋업 로직은 복수의 솔리드 스테이트 드라이브들의 서브셋(subset)이 가비지 콜렉션 셋업 페이즈에 진입하는 것을 지시하도록 동작한다.
제 6 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 레이드 컨트롤러로부터 지시가 있는 경우에만 솔리드 스테이트 드라이브들 각각이 가비지 콜렉션 실행 페이즈를 수행하도록 설정하는 설정 로직을 더 포함한다.
제 7 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 실행 로직은 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈를 종료하도록 지시하도록 동작한다.
제 8 구절로, 제 7 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 실행 로직은 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈를 시작하도록 지시할 때를 결정하기 위한 제 1 타이머를 포함한다.
제 9 구절로, 제 7 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 실행 로직은 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈를 종료하도록 지시할 때를 결정하기 위한 제 2 타이머를 포함한다.
제 10 구절로, 제 9 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택된 솔리드 스테이트 드라이브에 읽기 요청들을 전송할 때를 결정하기 위한 제 3 타이머를 포함한다.
제 11 구절로, 제 7 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 레이드 컨트롤러는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈를 종료하는 것을 지시할 때까지, 선택된 솔리드 스테이트 드라이브로 유도된(directed) 쓰기 요청들을 저장하는 버퍼를 더 포함한다.
제 12 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택된 솔리드 스테이트 드라이브는 가비지 콜렉션 셋업 페이즈 동안 소거 블록으로부터 유효 데이터를 프리 블록에 복사하도록 동작하고, 가비지 콜렉션 실행 페이즈 동안 소거 블록을 소거하도록 동작한다.
제 13 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈에 있을 때, 레이드 컨트롤러는 읽기 요청들을 레이드 구성의 다른 모든 솔리드 스테이트 드라이브들의 서브셋에 전송하도록 동작한다.
제 14 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택 로직은 복수의 솔리드 스테이트 드라이브들로부터 복수의 프리 섹터 사이즈들을 수신하는 수신 로직을 포함한다.
제 15 구절로, 제 14 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택 로직은 복수의 프리 섹터 사이즈들을 위해 복수의 솔리드 스테이트 드라이브들을 조회하는 쿼리 로직을 더 포함한다.
제 16 구절로, 제 1 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러를 포함하고, 선택 로직은 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위해 복수의 솔리드 스테이트 드라이브들로부터 최대 레이드 고장 개수(up to RAID failure number)를 선택하도록 동작한다.
제 17 구절로, 본 발명의 일 실시 예에 따른 동작 방법은 레이드(RAID, Redundant Array of Independent Disks) 구성의 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계, 제 1 시간 간격(a first interval of time) 동안 대기하는 단계 및 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지하도록 지시하는 단계를 포함한다.
제 18 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 레이드 구성에서 복수의 솔리드 스테이트 드라이브들 중 레이드 고장 개수(RAID failure number)까지의 솔리드 스테이트 드라이브들은 임의의 시점에 가비지 콜렉션 실행 페이즈에 있다.
제 19 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 상기 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계는 상기 레이드 구성의 다른 솔리드 스테이트 드라이브에 읽기 요청들을 유도하는 단계를 포함하되, 레이드 컨트롤러의 동작 방법은 제 2 시간 간격 동안 대기하는 단계 및 읽기 요청들에 대하여 선택된 솔리드 스테이트 드라이브를 스케쥴링하는 단계를 더 포함한다.
제 20 구절로, 제 19 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 읽기 요청들을 다른 솔리드 스테이트 드라이브로 유도하는 단계는 레이드 구성의 다른 솔리드 스테이트 드라이브의 서브셋에 정보을 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 21 구절로, 제 20 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 정보를 요청하는 읽기 요청을 유도하는 단계는 정보를 저장하는 레이드 구성의 제 2 솔리드 스테이트 드라이브에 정보를 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 22 구절로, 제 20 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 데이터를 요청하는 읽기 요청을 유도하는 단계는 레이드 구성에 다른 모든 솔리드 스테이트 드라이브들에 정보를 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 23 구절로, 제 20 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 데이터를 요청하는 읽기 요청을 유도하는 단계는 레이드 구성의 다른 솔리드 스테이트 드라이브들의 서브셋에 저장된 복수의 데이터로부터 요청된 정보를 판단하는 단계를 더 포함한다.
제 24 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계는 상기 복수의 프리 섹터 사이즈들을 기반으로 상기 가비지 콜렉션을 위한 상기 복수의 솔리드 스테이트 드라이브들을 선택하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는 선택된 복수의 솔리드 스테이트 드라이브들이 가비지 콜렉션 실행 페이즈에 진입하는 것을 지시하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계는 가비지 콜렉션 실행 페이즈 동안 선택된 복수의 솔리드 스테이트 드라이브들의 제 1 그룹을 선택하는 단계를 포함한다.
제 25 구절로, 제 24 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 상기 제 1 그룹의 솔리드 스테이트 드라이브들이 상기 가비지 콜렉션 실행 페이즈를 완료한 이후, 상기 가비지 콜렉션 실행 페이즈 동안 상기 선택된 복수의 솔리드 스테이트 드라이브들의 제 2 그룹을 선택하는 단계, 선택된 제 2 그룹의 복수의 솔리드 스테이트 드라이브들이 가비지 콜렉션을 수행하도록 지시하는 단계를 더 포함한다.
제 26 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는, 선택된 솔리드 스테이트 드라이브가 소거될 블록을 식별하도록 지시하는 단계 및 선택된 솔리드 스테이트 드라이브가 식별된 블록으로부터 모든 유효 페이지들을 이동시키도록 지시하는 단계를 포함한다.
제 27 구절로, 제 26 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 있는 동안 선택된 솔리드 스테이트 드라이브가 읽기 요청들을 처리하는 것을 허용하는 단계를 포함한다.
제 28 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 레이드 구성의 복수의 솔리드 스테이트 드라이브들이 레이드 컨트롤러로부터 지시를 받은 경우에만 가비지 콜렉션을 수행하도록 레이드 구성의 상기 복수의 솔리드 스테이트 드라이브들 각각을 설정하는 단계를 더 포함한다.
제 29 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행하도록 지시하는 단계는 선택된 솔리드 스테이트 드라이브가 적어도 하나의 소거 존(erase zone)에 가비지 콜렉션을 실행하도록 지시하는 단계를 포함하되, 적어도 하나의 소거 존은 복수의 블록들을 포함한다.
제 30 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 31 구절로, 제 30 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계는 솔리드 스테이트 드라이브의 용량(capacity)과 관련하여 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 32 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 정적 웨어 레벨링(static wear leveling)을 요청하는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 33 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 제 1 시간 간격 동안 대기하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행하는 동안 쓰기 요청들을 버퍼링하는 단계를 포함하되, 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지할 것을 지시한 이후에 버퍼링된 쓰기 요청들을 선택된 솔리드 스테이트 드라이브에 전달하는 단계를 더 포함한다.
제 34 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 제 1 시간 간격 동안 대기하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하는 동안 쓰기 요청들을 선택된 솔리드 스테이트 드라이브의 버퍼에 전달하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 소거 동작들을 종료한 이후에 선택된 솔리드 스테이트 드라이브가 버퍼링된 쓰기 요청들을 처리할 수 있다.
제 35 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 프리 섹터 사이즈들을 위해 복수의 솔리드 스테이트 드라이브들 각각을 쿼리(query)하는 단계를 포함한다.
제 36 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 솔리드 스테이트 드라이브들로부터 복수의 프리 섹터 사이즈들을 수신하는 단계를 포함한다.
제 37 구절로, 제 17 구절에 따라 본 발명의 일 실시 예는 레이드 컨트롤러의 동작 방법을 포함하고, 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 최대 레이드 고장 개수의 솔리드 스테이트 드라이브들을 선택하는 단계를 포함한다.
제 38 구절로, 본 발명의 일 실시 예는 유형의 저장 매체(tangible storage medium)를 포함하는 장치(article)를 포함하고, 비일시적인 명령들(non-transitory instructions)이 머신에 의해 실행될 때, 비일시적인 명령들을 저장하는 유형의 저장 매체의 동작 방법은 레이드 구성(RAID)의 복수의 솔리드 스테이트 드라이브들의 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계, 제 1 시간 구간을 대기하는 단계 및 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지하는 것을 지시하는 단계를 포함한다.
제 39 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 레이드 구성 내 복수의 솔리드 스테이트 드라이브들 중 레이드 고장 개수(RAID failure number)까지의 솔리드 스테이트 드라이브들은 임의의 시점에 가비지 콜렉션을 실행한다.
제 40 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계는 레이드 구성의 다른 솔리드 스테이트 드라이브에 읽기 요청들을 유도(directing)하는 단계를 포함하고, 비일시적인 명령들(non-transitory instructions)이 머신에 의해 실행될 때, 비일시적인 명령들을 저장하는 유형의 저장 매체의 동작 방법은 제 2 시간 간격 동안 대기하는 단계 및 읽기 요청들에 대하여 선택된 솔리드 스테이트 드라이브를 스케쥴링하는 단계를 더 포함한다.
제 41 구절로, 제 40 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 다른 솔리드 스테이트 드라이브에 읽기 요청들을 유도(directing)하는 단계는 레이드 구성의 다른 솔리드 스테이트 드라이브들의 서브셋에 정보(datum)를 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 42 구절로, 제 41 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 정보(datum)를 요청하는 읽기 요청을 유도하는 단계는 정보(datum)을 저장하는 레이드 구성의 제 2 솔리드 스테이트 드라이브에 정보를 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 43 구절로, 제 41 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 정보(datum)를 요청하는 읽기 요청을 유도하는 단계는 레이드 구성의 다른 모든 솔리드 스테이트 드라이브들에 정보를 요청하는 읽기 요청을 유도하는 단계를 포함한다.
제 44 구절로, 제 41 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 다른 솔리드 스테이트 드라이브들의 서브셋에 정보(datum)를 요청하는 읽기 요청을 유도하는 단계는 레이드 구성의 다른 솔리드 스테이트 드라이브들의 서브셋에 저장된 복수의 데이터로부터 요청된 정보(the requested datum)를 판단하는 단계를 포함한다.
제 45 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가비지 콜렉션을 위한 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 프리 섹터 사이즈들을 기반으로 가비지 콜렉션을 위한 상기 복수의 솔리드 스테이트 드라이브들을 선택하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는 선택된 복수의 솔리드 스테이트 드라이브들이 가비지 콜렉션 셋업 페이즈에 진입하는 것을 지시하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 실행하도록 지시하는 단계는 가비지 콜렉션 실행 페이즈 동안 제 1 그룹의 솔리드 스테이트 드라이브들을 선택하는 단계를 포함한다.
제 46 구절로, 제 45 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 비일시적인 명령들(non-transitory instructions)이 머신에 의해 실행될 때, 비일시적인 명령들을 저장하는 유형의 저장 매체의 동작 방법은 제 1 그룹의 솔리드 스테이트 드라이브들이 가비지 콜렉션 실행 페이즈를 완료한 이후, 가비지 콜렉션 실행 페이즈 동안 제 2 그룹의 복수의 솔리드 스테이트 드라이브들을 선택하는 단계 및 선택된 제 2 그룹의 복수의 솔리드 스테이트 드라이드들이 가비지 콜렉션을 수행하도록 지시하는 단계를 포함한다.
제 47 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는, 선택된 솔리드 스테이트 드라이브가 소거될 블록을 식별하도록 지시하는 단계 및 선택된 솔리드 스테이트 드라이브가 식별된 블록으로부터 모든 유효 페이지들을 이동시키는 단계를 포함한다.
제 48 구절로, 제 47 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 진입하도록 지시하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈에 있는 동안 선택된 솔리드 스테이트 드라이브가 읽기 요청들을 처리하는 것을 허용하는 단계를 포함한다.
제 49 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 유형의 저장 매체(tangible storage medium)를 포함하는 장치(article)를 포함하고, 비일시적인 명령들(non-transitory instructions)이 머신에 의해 실행될 때, 비일시적인 명령들을 저장하는 유형의 저장 매체의 동작 방법은 레이드 구성의 복수의 솔리드 스테이트 드라이브들이 레이드 컨트롤러로부터 지시를 받은 경우에만 가비지 콜렉션을 수행하도록 레이드 구성의 상기 복수의 솔리드 스테이트 드라이브들 각각을 설정하는 단계를 포함한다.
제 50 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행하도록 지시하는 단계는 선택된 솔리드 스테이트 드라이브가 적어도 하나의 소거 존(erase zone)에 가비지 콜렉션을 실행하도록 지시하는 단계를 포함하되, 적어도 하나의 소거 존은 복수의 블록들을 포함한다.
제 51 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 52 구절로, 제 51 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계는 솔리드 스테이트 드라이브의 용량(capacity)과 관련하여 가장 낮은 프리 섹터 사이즈(lowest free sector size)를 갖는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 53 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 정적 웨어 레벨링(static wear leveling)을 요청하는 솔리드 스테이트 드라이브를 선택하는 단계를 포함한다.
제 54 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 제 1 시간 간격 동안 대기하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행하는 동안 쓰기 요청들을 버퍼링하는 단계를 포함하되, 비일시적인 명령들이 머신에 의해 실행될 때 비일시적인 명령들(non-transitory instructions)을 저장하는 유형의 저장 매체의 동작 방법은 선택된 솔리드 스테이트 드라이브가 소거 동작들을 중지할 것을 지시한 이후에 버퍼링된 쓰기 요청들을 선택된 솔리드 스테이트 드라이브에 전달하는 단계를 더 포함한다.
제 55 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 제 1 시간 간격 동안 대기하는 단계는 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션을 수행하는 동안 쓰기 요청들을 선택된 솔리드 스테이트 드라이브의 버퍼에 전달하는 단계를 포함하고, 선택된 솔리드 스테이트 드라이브가 소거 동작들을 종료한 이후에 선택된 솔리드 스테이트 드라이브가 버퍼링된 쓰기 요청들을 처리한다.
제 56 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 프리 섹터 사이즈들을 위해 복수의 솔리드 스테이트 드라이브들 각각을 쿼리(query)하는 단계를 포함한다.
제 57 구절로, 제 38 구절에 따라 본 발명의 일 실시 예는 장치를 포함하고, 가비지 콜렉션을 위해 솔리드 스테이트 드라이브를 선택하는 단계는 복수의 솔리드 스테이트 드라이브들로부터 복수의 프리 섹터 사이즈들을 수신하는 단계를 포함한다.
본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지 변형이 가능하다. 그러므로, 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
105: 서버 110: 메모리
115: 컨트롤러
120-1~1205-5: 제 1 내지 제 5 솔리드 스테이트 드라이브들
120: 스토리지 장치들 125: 프로세서들
205: 메모리 컨트롤러 210: 클럭
220: 버스 225: 유저 인터페이스
230: 입출력 엔진

Claims (10)

  1. 복수의 솔리드 스테이트 드라이브들(Solid State Drive, SSD)은 데이터 및 소거 코딩을 저장하고, 상기 데이터 및 상기 소거 코딩을 사용하여 상기 복수의 솔리드 스테이트 드라이브들의 모든 수보다 적은 수로부터 상기 데이터가 복구될 수 있고, 상기 복수의 솔리드 스테이트 드라이브들에 대한 읽기 및 쓰기 요청들을 제어하는 제어 로직;
    상기 복수의 솔리드 스테이트 드라이브들에 대한 복수의 프리 섹터 사이즈들(free sector sizes)에 기초하여 가비지 콜렉션을 위해 상기 복수의 솔리드 스테이트 드라이브들로부터 하나의 솔리드 스테이트 드라이브를 선택하는 선택 로직;
    소거 동작들을 위해 스케쥴링된 제1 블록으로부터 제2 블록으로 유효 데이터를 복사할 수 있는 상기 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 셋업 페이즈(setup phase)에 진입하도록 지시하는 셋업 로직;
    상기 소거 동작들을 위해 스케쥴링된 상기 제1 블록을 소거하는 상기 선택된 솔리드 스테이트 드라이브가 가비지 콜렉션 실행 페이즈(execute phase)에 진입하도록 지시하는 실행 로직; 및
    상기 가비지 콜렉션 실행 페이즈에 진입하기 전에 상기 선택된 솔리드 스테이트 드라이브가 상기 가비지 콜렉션 셋업 페이즈에 남아 있는 시간을 측정하는 타이머를 포함하되,
    상기 선택된 솔리드 스테이트 드라이브는 상기 가비지 콜렉션 실행 페이즈에 진입하도록 지시될 때까지 상기 가비지 콜렉션 셋업 페이즈에 남아 있고,
    상기 솔리드 스테이트 드라이브는 상기 솔리드 스테이트 드라이브가 상기 가비지 콜렉션 실행 페이즈에 진입할 때 상기 가비지 콜렉션 셋업 페이즈를 종료하고,
    상기 선택된 솔리드 스테이트 드라이브는 상기 가비지 콜렉션 셋업 페이즈 동안 서버에서 발생하는 읽기 요청들 및 쓰기 요청들을 수신하는 컨트롤러.
  2. 제 1 항에 있어서,
    상기 복수의 솔리드 스테이트 드라이브들 중 최대 하나의 솔리드 스테이트 드라이브는 임의의 시간에 상기 가비지 콜렉션 실행 페이즈에 있는 컨트롤러.
  3. 제 1 항에 있어서,
    상기 복수의 솔리드 스테이트 드라이브들 중 사전 정의된 수보다 많은 수의 솔리드 스테이트 드라이브들이 임의의 시점에 상기 가비지 콜렉션 셋업 페이즈에 있고; 그리고
    상기 사전 정의된 수까지의 상기 복수의 솔리드 스테이트 드라이브들이 상기 임의의 시점에 상기 가비지 콜렉션 실행 페이즈에 있고,
    상기 사전 정의된 수의 솔리드 스테이트 드라이브들은 상기 복수의 솔리드 스테이트 드라이브들로부터 제거될 수 있는 솔리드 스테이트 드라이브들의 최대 수를 나타내고 그리고 상기 복수의 솔리드 스테이트 드라이브들에서 남아 있는 솔리드 스테이트 드라이브들로부터 상기 데이터 및 상기 소거 코딩으로부터 데이터를 재구성하는 컨트롤러.
  4. 제 1 항에 있어서,
    상기 셋업 로직은 상기 복수의 솔리드 스테이트 드라이브들의 서브 셋이 상기 가비지 콜렉션 셋업 페이즈에 진입하는 것을 지시하도록 동작하는 컨트롤러.
  5. 제 1 항에 있어서,
    상기 컨트롤러로부터 지시가 있는 경우에만 상기 솔리드 스테이트 드라이브들 각각이 상기 가비지 콜렉션 실행 페이즈를 수행하도록 구성하는 설정 로직(configuration logic)을 더 포함하는 컨트롤러.
  6. 제 1 항에 있어서,
    상기 실행 로직은 상기 선택된 솔리드 스테이트 드라이브가 상기 가비지 콜렉션 실행 페이즈를 종료하도록 지시하도록 동작하는 컨트롤러.
  7. 제 6 항에 있어서,
    상기 실행 로직이 상기 선택된 솔리드 스테이트 드라이브가 상기 가비지 콜렉션 실행 페이즈를 종료하는 것을 지시할 때까지 상기 선택된 솔리드 스테이트 드라이브로 향하는 쓰기 요청들을 저장하는 버퍼를 포함하는 컨트롤러.
  8. 제 1 항에 있어서,
    상기 선택된 솔리드 스테이트 드라이브가 상기 가비지 콜렉션 실행 페이즈에 있을 때, 상기 선택된 솔리드 스테이트 드라이브에 대한 읽기 요청들을 다른 모든 솔리드 스테이트 드라이브들의 서브 셋에 전송하도록 동작하는 컨트롤러.
  9. 제 1 항에 있어서,
    상기 선택 로직은 상기 복수의 솔리드 스테이트 드라이브들로부터 상기 복수의 프리 섹터 사이즈들을 수신하는 수신 로직을 포함하는 컨트롤러.
  10. 제 9 항에 있어서,
    상기 선택 로직은 상기 복수의 프리 섹터 사이즈들을 위해 상기 복수의 솔리드 스테이트 드라이브들을 조회(query)하는 쿼리 로직을 더 포함하는 컨트롤러.
KR1020160062889A 2015-11-03 2016-05-23 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법 KR102307130B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201562250416P 2015-11-03 2015-11-03
US62/250,416 2015-11-03
US15/001,217 US9804787B2 (en) 2015-11-03 2016-01-19 Mitigating GC effect in a raid configuration
US15/001,217 2016-01-19

Publications (2)

Publication Number Publication Date
KR20170052440A KR20170052440A (ko) 2017-05-12
KR102307130B1 true KR102307130B1 (ko) 2021-10-01

Family

ID=58637917

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160062889A KR102307130B1 (ko) 2015-11-03 2016-05-23 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법

Country Status (2)

Country Link
US (2) US9804787B2 (ko)
KR (1) KR102307130B1 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
JP2018022397A (ja) * 2016-08-04 2018-02-08 富士通株式会社 ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラム
JP2018041154A (ja) * 2016-09-05 2018-03-15 東芝メモリ株式会社 ストレージシステムおよび処理方法
JP2018181213A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
JP2018181207A (ja) * 2017-04-20 2018-11-15 富士通株式会社 ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム
CN109213695B (zh) * 2017-06-30 2023-07-21 伊姆西Ip控股有限责任公司 缓存管理方法、存储系统以及计算机程序产品
CN108399049B (zh) * 2018-01-16 2021-09-28 广州视源电子科技股份有限公司 数据写入、读取方法与系统、数据读写系统
CN108897496B (zh) * 2018-06-29 2020-11-03 平安科技(深圳)有限公司 磁盘阵列配置管理方法、装置、计算机设备及存储介质
CN110018787A (zh) * 2019-02-26 2019-07-16 深圳忆联信息系统有限公司 基于ssd全系统的固件读写方法、装置和计算机设备
US11314416B1 (en) * 2020-10-23 2022-04-26 EMC IP Holding Company LLC Defragmentation of striped volume in data storage system
KR20230102877A (ko) 2021-12-30 2023-07-07 부산대학교 산학협력단 다수의 ssd로 구성된 논리적 볼륨의 효율적인 입출력 자원 분배를 위한 블록 재배치 가능한 ssd 장치 및 방법
CN114238162B (zh) * 2022-02-21 2022-06-10 深圳佰维存储科技股份有限公司 垃圾回收方法、装置、可读存储介质及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034174A1 (en) 2006-08-04 2008-02-07 Shai Traister Non-volatile memory storage systems for phased garbage collection
US20160239412A1 (en) 2015-02-17 2016-08-18 Kabushiki Kaisha Toshiba Storage apparatus and information processing system including storage apparatus
US20170046256A1 (en) 2015-08-11 2017-02-16 Ocz Storage Solutions, Inc. Pool level garbage collection and wear leveling of solid state devices

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7444461B2 (en) * 2006-08-04 2008-10-28 Sandisk Corporation Methods for phased garbage collection
US20080162787A1 (en) * 2006-12-28 2008-07-03 Andrew Tomlin System for block relinking
US8402471B2 (en) * 2009-12-21 2013-03-19 At&T Intellectual Property I, L.P. Methods and apparatus to benchmark a computer system based on executing instructions using different numbers of threads
US8521972B1 (en) 2010-06-30 2013-08-27 Western Digital Technologies, Inc. System and method for optimizing garbage collection in data storage
US8713268B2 (en) * 2010-08-05 2014-04-29 Ut-Battelle, Llc Coordinated garbage collection for raid array of solid state disks
US8850114B2 (en) * 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
WO2012051600A2 (en) * 2010-10-15 2012-04-19 Kyquang Son File system-aware solid-state storage management system
KR101774496B1 (ko) * 2010-12-08 2017-09-05 삼성전자주식회사 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US8874995B2 (en) * 2012-02-02 2014-10-28 International Business Machines Corporation Partial-maximum distance separable (PMDS) erasure correcting codes for storage arrays
US9443591B2 (en) * 2013-01-23 2016-09-13 Seagate Technology Llc Storage device out-of-space handling
US9021336B1 (en) * 2012-05-22 2015-04-28 Pmc-Sierra, Inc. Systems and methods for redundantly storing error correction codes in a flash drive with secondary parity information spread out across each page of a group of pages
US8898376B2 (en) 2012-06-04 2014-11-25 Fusion-Io, Inc. Apparatus, system, and method for grouping data stored on an array of solid-state storage elements
WO2014008261A1 (en) 2012-07-03 2014-01-09 Violin Memory, Inc. Synchronization of a dispersed raid group
US8799561B2 (en) * 2012-07-27 2014-08-05 International Business Machines Corporation Valid page threshold based garbage collection for solid state drive
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US20150212752A1 (en) * 2013-04-08 2015-07-30 Avalanche Technology, Inc. Storage system redundant array of solid state disk array
US9183142B2 (en) * 2013-03-15 2015-11-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Reducing flash memory write amplification and latency
JP6007329B2 (ja) * 2013-07-17 2016-10-12 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム
US9928177B2 (en) * 2013-08-21 2018-03-27 Lite-On Electronics (Guangzhou) Limited Managing method for cache memory of solid state drive
US9298608B2 (en) * 2013-10-18 2016-03-29 Sandisk Enterprise Ip Llc Biasing for wear leveling in storage systems
KR102075358B1 (ko) * 2013-11-11 2020-03-02 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
US9785547B2 (en) * 2014-02-13 2017-10-10 Hitachi, Ltd. Data management apparatus and method
KR20150116352A (ko) * 2014-04-07 2015-10-15 삼성전자주식회사 메모리 제어 방법 및 시스템
US9075773B1 (en) * 2014-05-07 2015-07-07 Igneous Systems, Inc. Prioritized repair of data storage failures
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
KR20150139112A (ko) * 2014-06-02 2015-12-11 삼성전자주식회사 가비지 컬렉션 유닛을 포함하는 메모리 시스템 및 동작 방법
US9582355B2 (en) * 2014-07-09 2017-02-28 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9734007B2 (en) * 2014-07-09 2017-08-15 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9594632B2 (en) * 2014-07-09 2017-03-14 Qualcomm Incorporated Systems and methods for reliably storing data using liquid distributed storage
US9658923B2 (en) * 2014-09-30 2017-05-23 International Business Machines Corporation Optimization of rebuilding in solid state drives
CN105630638B (zh) * 2014-10-31 2018-01-12 国际商业机器公司 用于为磁盘阵列分配缓存的设备和方法
US9727456B2 (en) * 2014-11-03 2017-08-08 Pavilion Data Systems, Inc. Scheduled garbage collection for solid state storage devices
US9678677B2 (en) * 2014-12-09 2017-06-13 Intel Corporation Determining adjustments to the spare space in a storage device unavailable to a user based on a current consumption profile of a storage device
KR102368071B1 (ko) * 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
KR20160083762A (ko) * 2015-01-02 2016-07-12 삼성전자주식회사 스토리지 시스템에서의 매핑 테이블 관리 방법 및 이를 적용한 스토리지 시스템
JP2016170583A (ja) * 2015-03-12 2016-09-23 株式会社東芝 メモリシステムおよび情報処理システム
US9696935B2 (en) * 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
CN106326136A (zh) * 2015-07-02 2017-01-11 广明光电股份有限公司 固态硬盘搜集垃圾区块的方法
JP2017027388A (ja) * 2015-07-23 2017-02-02 株式会社東芝 メモリシステムおよび不揮発性メモリの制御方法
JP6403162B2 (ja) * 2015-07-23 2018-10-10 東芝メモリ株式会社 メモリシステム
US10044374B2 (en) * 2015-07-30 2018-08-07 Quantum Corporation Adaptive erasure codes
IN2015CH04361A (ko) * 2015-08-20 2015-09-04 Wipro Ltd
US10031670B2 (en) * 2015-09-04 2018-07-24 Toshiba Memory Corporation Control unit and control method for controlling writes and background operations of multiple semiconductor storage devices
KR20170050953A (ko) * 2015-11-02 2017-05-11 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034174A1 (en) 2006-08-04 2008-02-07 Shai Traister Non-volatile memory storage systems for phased garbage collection
US20160239412A1 (en) 2015-02-17 2016-08-18 Kabushiki Kaisha Toshiba Storage apparatus and information processing system including storage apparatus
US20170046256A1 (en) 2015-08-11 2017-02-16 Ocz Storage Solutions, Inc. Pool level garbage collection and wear leveling of solid state devices

Also Published As

Publication number Publication date
US10649667B2 (en) 2020-05-12
US20170123686A1 (en) 2017-05-04
KR20170052440A (ko) 2017-05-12
US9804787B2 (en) 2017-10-31
US20180011641A1 (en) 2018-01-11

Similar Documents

Publication Publication Date Title
KR102307130B1 (ko) 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법
KR102363519B1 (ko) 솔리드 스테이트 드라이브 및 그것의 동작 방법
JP6517684B2 (ja) メモリシステムおよび制御方法
JP6517685B2 (ja) メモリシステムおよび制御方法
US10248322B2 (en) Memory system
US8341374B2 (en) Solid state drive and related method of scheduling operations
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
JP6111575B2 (ja) ストレージ装置、内部処理制御方法および内部処理制御プログラム
CN104866428B (zh) 数据存取方法和数据存取装置
US20140379990A1 (en) Cache node processing
JP6328335B2 (ja) ストレージ装置及びその制御方法
TWI531963B (zh) Data storage systems and their specific instruction enforcement methods
JP6822274B2 (ja) 情報処理システム、方法、及びプログラム
CN109582215B (zh) 硬盘操作命令的执行方法、硬盘及存储介质
JP2007233896A (ja) ストレージ装置及びその制御方法
CN101140542A (zh) 一种缩短写时拷贝快照写响应时间的方法
KR20160033519A (ko) 라이트 명령들에 대한 로그를 생성할 수 있는 데이터 저장 장치의 작동 방법과 이를 포함하는 raid 시스템의 작동 방법
US9575669B2 (en) Programmable solid state drive controller and method for scheduling commands utilizing a data structure
JP6652647B2 (ja) ストレージシステム
Koh et al. Faster than flash: An in-depth study of system challenges for emerging ultra-low latency SSDs
WO2019226303A1 (en) Time-based mechanism supporting flush operation
JP2016045935A (ja) 逐次入出力ストリームを効率的にデステージするための方法及び装置
US20140372672A1 (en) System and method for providing improved system performance by moving pinned data to open nand flash interface working group modules while the system is in a running state
US10671307B2 (en) Storage system and operating method thereof
JP4714720B2 (ja) ストレージ装置及びその制御方法、並びにディスク装置

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right