KR20140145834A - 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 - Google Patents
저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 Download PDFInfo
- Publication number
- KR20140145834A KR20140145834A KR1020130068502A KR20130068502A KR20140145834A KR 20140145834 A KR20140145834 A KR 20140145834A KR 1020130068502 A KR1020130068502 A KR 1020130068502A KR 20130068502 A KR20130068502 A KR 20130068502A KR 20140145834 A KR20140145834 A KR 20140145834A
- Authority
- KR
- South Korea
- Prior art keywords
- garbage collection
- storage
- storage devices
- global
- global garbage
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명에 따른 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법은: 상기 저장 장치에서 상기 RAID 구성 정보를 이용하여 글로벌 가비지 컬렉션 명령을 발생하는 단계; 및 상기 저장 장치 외의 나머지 저장 장치들 각각에서 상기 글로벌 가비지 컬렉션 명령 및 내부 상태에 근거로 하여 글로벌 가비지 컬렉션을 수행하는 단계를 포함한다.
Description
본 발명은 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법에 관한 것이다.
반도체 메모리 장치는 일반적으로 DRAM, SRAM 등과 같은 휘발성 메모리 장치와 EEPROM, FRAM, PRAM, MRAM, 플래시 메모리 등과 같은 비휘발성 메모리 장치로 구분할 수 있다. 휘발성 메모리 장치는 전원이 차단될 때 저장된 데이터를 잃지만, 비휘발성 메모리는 전원이 차단되더라도 저장된 데이터를 보존한다. 특히, 플래시 메모리는 높은 프로그래밍 속도, 낮은 전력 소비, 대용량 데이터 저장 등의 장점을 갖는다. 따라서 플래시 메모리를 기반으로 하는 데이터 저장 장치가 광범위하게 사용되고 있다. 플래시 메모리를 기반으로 하는 데이터 저장 장치에는 기존의 하드 디스크를 대체하고 있는 솔리드 스테이트 드라이브(SSD), SD 카드나 MMC 등과 같은 메모리 카드 등이 있다.
본 발명의 목적은 자체적으로 글로벌 가비지 컬렉션을 제공하는 저장 장치를 제공하는데 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고, 상기 메모리 제어기는, 상기 메모리 제어기의 전반적인 동작을 제어하는 적어도 하나의 프로세서; 외부의 입출력 요청시 상기 적어도 하나의 프로세서의 제어에 따라 입출력 데이터를 임시로 저장하는 버퍼 메모리; 상기 입출력 데이터의 에러를 검출 및 정정하는 에러 정정 회로; 상기 입출력 요청시 가비지 컬렉션이 필요할 때 제 1 글로벌 가비지 컬렉션 명령을 발생하거나, 상기 외부로부터 입력된 제 2 글로벌 가비지 컬렉션 명령에 응답하여 글로벌 가비지 컬렉션을 수행하는 가비지 컬렉터; 및 상기 제 1 글로벌 가비지 컬렉션 명령을 다른 저장 장치로 전송하는 스토리지 인터페이스를 포함한다.
실시 예에 있어서, 상기 가비지 컬렉터는 상기 저장 장치의 내부 상태에 따라 상기 제 2 글로벌 가비지 컬렉션 명령을 무시한다.
실시 예에 있어서, 상기 가비지 컬렉터는 상기 저장 장치가 내부적으로 가비지 컬렉션을 수행할 때 상기 제 2 글로벌 가비지 컬렉션 명령을 무시한다.
실시 예에 있어서, 상기 스토리지 인터페이스는 디바이스-투-디바이스 통신을 수행한다.
실시 예에 있어서, 상기 스토리지 인터페이스는 SATA/SAS 인터페이스를 포함한다.
실시 예에 있어서, 상기 스토리지 인터페이스는 상기 디바이스-투-디바이스 통신을 위하여 PM(port multiplier) 포트 및 FIS(frame information structure) 종류를 이용한다.
실시 예에 있어서, 상기 저장 장치가 RAID(redundant array of independent disks) 구성에 이용될 때, 다른 저장 장치들의 RAID 구성 정보가 저장된다.
실시 예에 있어서, 상기 제 1 글로벌 가비지 컬렉션 명령이 발생하기 전에 RAID에 핫 스페어(hot spare) 혹은 엑스트라 패리티 디스크(extra parity disk)가 존재하는 지가 판별되고, 만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때 상기 제 1 글로벌 가비지 컬렉션 명령이 발생된다.
실시 예에 있어서, 만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 다른 저장 장치들이 상기 입출력 요청을 처리할 수 있도록 특별한 명령이 발생된다.
실시 예에 있어서, 상기 제 2 글로벌 가비지 컬렉션 명령은 외부의 스토리지 제어기를 경유하여 다른 저장 장치로부터 입력된다.
본 발명의 실시 예에 따른 저장 장치들; 및 상기 저장 장치들을 제어하는 스토리지 제어기를 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법에 있어서: 상기 저장 장치들은 하나의 RAID를 구성하고, RAID 구성 정보를 상기 저장 장치들 각각에 저장하는 단계; 호스트로부터 입출력 요청을 받는 단계; 상기 입출력 요청을 수행하면서 상기 저장 장치들 중 어느 하나에서 가비지 컬렉션이 필요한 지를 판별하는 단계; 상기 어느 하나의 저장 장치에서 상기 가비지 컬렉션이 필요할 때, 상기 저장 장치들 중에 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하는 지를 판별하는 단계; 상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때, 상기 저장 장치에서 상기 RAID 구성 정보를 이용하여 글로벌 가비지 컬렉션 명령을 발생하는 단계; 및 상기 저장 장치 외의 나머지 저장 장치들 각각에서 상기 글로벌 가비지 컬렉션 명령 및 내부 상태에 근거로 하여 글로벌 가비지 컬렉션을 수행하는 단계를 포함한다.
실시 예에 있어서, 상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 나머지 저장 장치들에서 상기 입출력 요청을 처리하도록 상기 저장 장치에서 상기 나머지 저장 장치들 각각으로 특별한 명령을 전송하는 단계를 더 포함한다.
실시 예에 있어서, 상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 저장 장치에서 상기 가비지 컬렉션을 수행하는 단계를 더 포함한다.
실시 예에 있어서, 상기 저장 장치에서 상기 가비지 컬렉션을 완료한 뒤에 RAID를 재구성하는 단계를 더 포함한다.
실시 예에 있어서, 상기 저장 장치들 각각은 SSD이다.
본 발명은 서버 환경에서 SSD 가비지 컬렉션에 의한 성능 저하(Drop) 구간을 완전히 제거함으로써, 지속적으로 짧은 레이턴시(consistent low latency) 환경을 구현할 수 있다.
본 발명은 SSD 내부 자원만을 이용하여 글로벌 가비지 컬렉션을 수행함으로써, SSD를 사용하는 업체의 협력 없이 자체적으로 글로벌 가비지 컬렉션을 수행할 수 있다.
본 발명은 SSD 내부 자원만을 이용해 동일한 RAID 그룹에 포함된 SSD 간의 네트워크 환경을 구축함으로써, 서버 환경에서 자체 관리(self management) 성능을 강화시킬 수 있다.
도 1은 본 발명의 개념을 설명하기 위한 도면이다.
도 2는 본 발명의 실시 예에 따른 글로벌 가비지 컬렉션을 설명하기 위한 도면이다.
도 3은 인터페이스 관점에서 본 발명의 실시 예에 따른 데이터 저장 시스템(10)을 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 호스트-투-디바이스/디바이스-투-디바이스 프레임 정보 구조(FIS; frame information structure) 레이아웃(layout)을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 디바이스-투-호스트 프레임 정보 구조(FIS) 레이아웃(layout)을 예시적으로 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 저장 장치(1000)를 예시적으로 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치(1000)의 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 RAID 구성 정보를 이용한 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 1 실시 예를 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 2 실시 예를 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 3 실시 예를 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 4 실시 예를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 글로벌 가비지 컬렉션을 설명하기 위한 도면이다.
도 3은 인터페이스 관점에서 본 발명의 실시 예에 따른 데이터 저장 시스템(10)을 보여주는 도면이다.
도 4는 본 발명의 실시 예에 따른 호스트-투-디바이스/디바이스-투-디바이스 프레임 정보 구조(FIS; frame information structure) 레이아웃(layout)을 예시적으로 보여주는 도면이다.
도 5는 본 발명의 실시 예에 따른 디바이스-투-호스트 프레임 정보 구조(FIS) 레이아웃(layout)을 예시적으로 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따른 저장 장치(1000)를 예시적으로 보여주는 블록도이다.
도 7은 본 발명의 실시 예에 따른 저장 장치(1000)의 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다.
도 8은 본 발명의 실시 예에 따른 RAID 구성 정보를 이용한 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다.
도 9는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 1 실시 예를 예시적으로 보여주는 도면이다.
도 10은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 2 실시 예를 예시적으로 보여주는 도면이다.
도 11은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 3 실시 예를 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 4 실시 예를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 1은 본 발명의 개념을 설명하기 위한 도면이다. 도 1을 참조하면, 데이터 저장 시스템(10)은 복수의 저장 장치들(SSD1 ~ SSDn, n은 2 이상의 자연수; 110 ~ 1n0) 및 호스트와 저장 장치들(110 ~ 1n0) 사이에 연결되는 스토리지 제어기(storage controller; HBA/RAID; 200)를 포함한다. 여기서 스토리지 제어기(200)는 저장 장치들(110 ~ 1n0)의 호스트 접속을 도와주는 HBA(host bus adapter) 혹은 여러 개의 저장 장치들(SSD1 ~ SSDn)을 하나의 싱글 디스크(혹은, 가상 디스크)로 인식하기 위한 RAID(redundant array of independent disks)로 구현될 수 있다.
데이터 저장 시스템(10)은 글로벌 가비지 컬렉션(global garbage collection, GCC)을 수행한다. 여기서 글로벌 가비지 컬렉션은 소정의 시간 동안에 저장 장치들(110 ~ 1n0)이 동시에 가비지 컬렉션을 수행하는 것을 의미한다. 본 발명에서 저장 장치들(110 ~1n0) 각각은 글로벌 가비지 컬렉션 명령(GGC CMD)을 발생하거나 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 가비지 컬렉션을 수행하는 가비지 컬렉터(114/124/.../1n4)을 포함할 수 있다. 다시 말해, 본 발명에서 어느 하나의 저장 장치(예를 들어, 110)에서 글로벌 가비지 컬렉션 명령(GGC CMD)이 발생되고, 발행된 글로벌 가비지 컬렉션 명령(GGC CMD)은 스토리지 제어기(200)를 경유하여 다른 저장 장치들(예를 들어, 120, ..., 1n0)로 전송될 수 있다.
도 1에서는 발생된 글로벌 가비지 컬렉션 명령(GGC CMD)가 스토리지 제어기(200)을 경유하였다. 하지만 본 발명이 반드시 여기에 제한될 필요는 없다. 어느 하나의 저장 장치에서 발행된 글로벌 가비지 컬렉션 명령(GGC CMD)은 직접적으로 연결된 다른 저장 장치들로 전송될 수도 있다.
본 발명의 실시 예에 따른 데이터 저장 시스템(10)은 저장 장치들(110 ~ 1n0) 각각이 자체적으로 글로벌 가비지 컬렉션 명령을 발행/입력 받을 수 있음으로써, 글로벌 가비지 컬렉션에 대한 호스트의 업무 부담을 줄일 수 있다.
도 2는 본 발명의 실시 예에 따른 글로벌 가비지 컬렉션을 설명하기 위한 도면이다. 도 2에서는 설명의 편의를 위하여 도 1에 도시된 스토리지 제어기(200)가 RAID 제어기이고, 도 1에 도시된 저장 장치들(110 ~ 1n0)은 5개의 SSDs(SSD1 ~ SSD5)로 구성된다고 가정하겠다. 따라서 도 1에 도시된 데이터 저장 시스템(10)은 하나의 가상 드라이버로 보일 수 있다.
실시 예에 있어서, 도 2에 도시된 글로벌 가비지 컬렉션은 어느 하나의 저장 장치(SSD1)의 내부 가비지 컬렉션을 임의의 시점에서 시작하지 않고 글로벌 가비지 컬렉션 구간에서 시작하도록 레이턴시(latency)를 둘 수 있다.
실시 예에 있어서, 도 2에 도시된 글로벌 가비지 컬렉션은 어느 시점에서 수행될 어느 하나의 저장 장치(SSD5)의 내부 가비지 컬렉션을 글로벌 가비지 컬렉션 구간에서 미리 수행할 수 있다.
일반적인 데이터 저장 시스템은 저장 장치들 각각이 필요에 따라 가비지 컬렉션을 수행하였다. 이에 따라, RAID을 구성한 가상 드라이버의 성능은, 성능이 가장 낮은 저장 장치에 정렬(align)되는 문제점이 발생된다. 즉, 응답 시간이 느린 어느 하나의 저장 장치의 성능이, 곧, 전체 가상 드라이버의 성능이 된다.
반면에, 본 발명의 데이터 저장 시스템(10), 즉, 가상 드라이버는 글로벌 가비지 컬렉션 명령(GGC CMD)에 따라 저장 장치들(SSD1 ~ SSD5)에서 동시에 가비지 컬렉션을 수행하도록 함으로써, 어느 하나의 저장 장치의 성능에 가상 드라이버의 성능이 정렬되지 않도록 할 수 있다. 정리하면, 본 발명의 데이터 저장 시스템(10)은 도 2에 도시된 바와 같이, 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 글로벌 가비지 컬렉션 구간에서 내부 가비지 컬렉션을 수행함으로써, RAID로 구성된 가상 드라이버의 성능 저하를 방지할 수 있다.
도 3은 인터페이스 관점에서 본 발명의 실시 예에 따른 데이터 저장 시스템(10)을 보여주는 도면이다. 도 3에서는 설명의 편의를 위하여 2개의 저장 장치들(110, 120)만 도시하였다. 여기서 저장 장치들(110, 120)은 서로 디바이스-투-디바이스 통신을 수행하도록 구현될 수 있다. 예를 들어, 저장 장치들(110, 120)은 OOB(out of band) 시퀀스 후에 서로 통신을 수행하도록 구현될 수 있다.
제 1 저장 장치(110)가 글로벌 가비지 컬렉션의 필요하다고 판별하였다. 예를 들어, 호스트의 입출력 요청을 처리하고자 할 때, 제 1 저장 장치(110)에서 내부적으로 가비지 컬렉션이 수행될 필요가 있을 수 있다. 이때, 다른 저장 장치(120)에 글로벌 가비지 컬렉션이 수행되도록, 제 1 저장 장치(110)는 스토리지 인터페이스(SIF, 115)를 통하여 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 발행할 것이다. 여기서 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(GGC CMD)은 어느 하나의 디바이스(110)에서 다른 하나의 디바이스로 전송되는 명령이다.
스토리지 제어기(HBA/RAID, 200)의 스토리지 인터페이스(260)는 제 1 저장 장치(110)으로부터 디바이스-투-디바이스 가비지 컬렉션 명령(Device to Device GGC CMD)을 입력 받고, 타겟 저장 장치, 즉, 제 2 저장 장치(120)로 디바이스-투-디바이스 가비지 컬렉션 명령(Device to Device GGC CMD)을 전송할 것이다.
제 2 저장 장치(120)의 스토리지 인터페이스(125)는 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 입력 받는다. 제 2 저장 장치(120)는 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)에 응답하여 글로벌 가비지 컬렉션을 수행할 수 있다.
실시 예에 있어서, 스토리지 인터페이스(115/125/260)는 SATA, SAS, SATAe, NVMe, USB, UFS, PCI, PCIe, SCSI, iSCSI, FC, FCoE 등 다양한 종류의 인터페이스들 중 적어도 하나로 구현될 수 있다.
실시 예에 있어서, 스토리지 제어기(200)의 호스트 인터페이스(250)는 스토리지 인터페이스(115/125/260)와 다른 종류의 인터페이스일 수 있다. 다른 실시 예에 있어서, 스토리지 제어기(200)의 호스트 인터페이스(250)는 스토리지 인터페이스(115/125/260)와 동일한 종류의 인터페이스일 수도 있다.
실시 예에 있어서, 저장 장치들(110, 120) 각각은 데이터 저장 시스템(10)을 구성하는 정보를 포함할 수 있다. 예를 들어, 데이터 저장 시스템(10)이 RAID을 구성할 때, 저장 장치들(110, 120) 각각은 RAID 구성 정보를 포함할 수 있다. 여기서 RAID 구성 정보는 RAID 종류, 저장 장치 개수, 저장 장치 식별 번호 등을 포함할 수 있다.
실시 예에 있어서, RAID 구성 정보는 PM(port multiplier) 포트 정보(디바이스 포트 어드레스)일 수 있다. 저장 장치들(110, 120) 각각은 PM 포트 정보를 이용하여 타겟 저장 장치로 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 발생할 수 있다.
본 발명의 데이터 저장 시스템(10)은 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 발행 및 입력 받는 통신 프로토콜을 구비할 것이다. 아래서는 통신 프로토콜이 SATA/SAS 프로토콜이라고 가정하여 설명하도록 하겠다.
도 4는 본 발명의 실시 예에 따른 호스트-투-디바이스/디바이스-투-디바이스 프레임 정보 구조(FIS; frame information structure) 레이아웃(layout)을 예시적으로 보여주는 도면이다. 도 4를 참조하면, PM 포트는 타겟 저장 장치의 어드레스가 포함될 것이다. 프레임 정보 구조(FIS) 종류는, 27h로 표기될 경우 호스트-투-디바이스 혹은 디바이스-투-디바이스 정보로 판별될 것이다.
본 발명에서는 도 3에 도시된 저장 장치들(110, 120) 각각은 도 4에 도시된 프레임 정보 구조의 글로벌 가비지 컬렉션 명령(GGC CMD)을 발행할 것이다.
도 5는 본 발명의 실시 예에 따른 디바이스-투-호스트 프레임 정보 구조(FIS) 레이아웃(layout)을 예시적으로 보여주는 도면이다. 도 5를 참조하면, 프레임 정보 구조(FIS) 종류는, 34h로 표기될 경우 디바이스-투-호스트 정보로 판별될 것이다. 본 발명의 스토리지 제어기(200)는 입력된 프레임 정보 구조(FIS)의 종류를 읽고, 프레임 정보 구조(FIS)의 종류에 따라 호스트로 전송할 지 혹은 저장 장치로 전송할 지를 결정할 것이다.
도 6은 본 발명의 실시 예에 따른 저장 장치(1000)를 예시적으로 보여주는 블록도이다. 도 6을 참조하면, 저장 장치(1000)는 복수의 비휘발성 메모리 장치들(1100) 및 그것들을 제어하는 메모리 제어기(1200)를 포함할 수 있다. 실시 예에 있어서, 저장 장치(1000)는 SSD(solid state drive), EMMC(embedded multimedia card), SD(secure digital) 카드, USB Flash 등과 같은 장치일 수 있다.
비휘발성 메모리 장치들(1100) 각각은 적어도 하나의 비트를 저장하는 메모리 셀들로 구성된 복수의 메모리 블록들을 포함할 수 있다. 본 발명에 따른 비휘발성 메모리 장치들(1100) 각각은 낸드 플래시 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND, 이하, 'VNAND'라고 함), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetoresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
또한, 본 발명의 비휘발성 메모리 장치들(1100) 각각은 3차원 어레이 구조(three-dimensional array structure)로 구현될 수 있다. 본 발명은 전하 저장층이 전도성 부유 게이트로 구성된 플래시 메모리 장치는 물론, 전하 저장층이 절연막으로 구성된 차지 트랩형 플래시(charge trap flash; CTF)에도 모두 적용 가능하다. 또한, 비휘발성 메모리 장치들(1100)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다.
메모리 제어기(1200)는 복수의 채널들(CH1 ~ CHi, i는 2 이상의 정수)을 통하여 비휘발성 메모리 장치들(1100)에 연결된다. 메모리 제어기(1200)는 적어도 하나의 프로세서(1210), 버퍼 메모리(1220), 에러 정정 회로(1230), 가비지 컬렉터(1240), 스토리지 인터페이스(SIF, 1250) 및 비휘발성 메모리 인터페이스(NVM IF, 1260)를 포함한다.
적어도 하나의 프로세서(1210)는 저장 장치(1000)의 전반적인 동작을 제어할 수 있다.
버퍼 메모리(1220)는 메모리 제어기(1200)의 구동에 필요한 데이터를 임시로 저장할 것이다. 예를 들어, 버퍼 메모리(1220)는 호스트의 입출력 요청시 입출력 데이터를 임시로 저장할 수 있다. 버퍼 메모리(1220)는 쓰기 동작시 외부로부터 입력된 데이터를 비휘발성 메모리 장치들(1100)에 프로그램 하기 위하여 임시로 저장하거나, 읽기 동작시 비휘발성 메모리 장치들(1100)로부터 읽혀진 데이터를 외부로 출력하기 위하여 임시로 저장한다. 실시 예에 있어서, 버퍼 메모리(1220)는 데이터 혹은 명령을 저장하는 복수의 메모리 라인들을 포함할 수 있다. 여기서 복수의 메모리 라인들은, 프로세서(1210)에서 직접 억세스하는 캐시 라인들에 다양한 방법으로 맵핑 될 수 있다. 여기서 캐시 라인들은 프로세서(1210) 내부에 존재하거나 혹은 프로세서(1210) 외부에 별도로 구현될 수 있다.
에러 정정 회로(1230)는 입출력 데이터의 에러를 검출 및 정정하도록 구현될 수 있다. 예를 들어, 에러 정정 회로(1230)는 쓰기 동작에서 프로그램될 데이터의 에러 정정 코드 값을 계산하고, 읽기 동작에서 읽혀진 데이터를 에러 정정 코드 값에 근거로 하여 에러 정정하고, 데이터 복구 동작에서 비휘발성 메모리 장치(1100)로부터 읽혀진 데이터의 에러를 정정할 수 있다.
또한, 도시되지 않았지만 저장 장치(1000)는 메모리 제어기(1200)를 구동하는 데 필요한 코드 데이터를 저장하는 코드 메모리가 더 포함될 수 있다. 코드 메모리는 비휘발성 메모리 장치(예를 들어, PRAM, MRAM 등)로 구현될 수 있다.
가비지 컬렉터(1240)는 내부적으로 가비지 컬렉션을 수행하거나, 필요에 따라 글로벌 가비지 컬렉션 명령(GGC CMD, "제 1 글로벌 가비지 컬렉션 명령")을 발생하거나. 외부로부터 스토리지 인터페이스(1250)을 통하여 입력된 글로벌 가비지 컬렉션 명령(GGC CMD, "제 2 글로벌 가비지 컬렉션 명령")을 응답하여 글로벌 가비지 컬렉션을 수행할 수 있다.
실시 예에 있어서, 가비지 컬렉터(1240)는 하드웨어/소프트웨어/펨웨어적으로 구현될 수 있다.
스토리지 인터페이스(1250)는 외부의 장치(도 1에 도시된, "호스트", "스토리지 제어기", "다른 저장 장치" 중 어느 하나)와 인터페이스 기능을 제공할 수 있다. 스토리지 인터페이스(1250)는 가비지 컬렉터(1240)에서 발생된 글로벌 가비지 컬렉션 명령(GGC CMD)을 다른 저장 장치에서 입력받을 수 있는 데이터 구조로 변경하거나, 외부의 저장 장치에서 발행된 글로벌 가비지 컬렉션 명령(GGC CMD)을 입력 받도록 구현될 수 있다. 즉, 스토리지 인터페이스(1250)에서 입출력되는 글로벌 가비지 컬렉션 명령(GGC CMD)은 디바이스-투-디바이스 프레임 정보 구조일 것이다.
비휘발성 메모리 인터페이스(1260)는 비휘발성 메모리 장치(1100)와 인터페이스 기능을 제공할 수 있다.
본 발명의 실시 예에 따른 저장 장치(1000)는 글로벌 가비지 컬렉션 명령(GGC CMD)을 발행 및 입력 받고, 발행된/입력된 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 글로벌 가비지 컬렉션을 수행할 수 있다.
도 7은 본 발명의 실시 예에 따른 저장 장치(1000)의 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다. 도 6 및 도 7를 참조하면, 글로벌 가비지 컬렉션은 다음과 같이 수행된다. 저장 장치(1000)는 글로벌 가비지 컬렉션 명령(GGC CMD)을 입력 받는다(S110). 여기서 글로벌 가비지 컬렉션 명령(GGC CMD)는 다른 저장 장치에서 발행된 것으로, 외부의 장치(호스트, 도 1에 도시된 스토리지 제어기(200))를 경유하거나 혹은 직접 저장 장치(100)로 전송될 수 있다. 가비지 컬렉터(1240)는 내부적으로 가비지 컬렉션이 수행되고 있는 지를 판별한다(S120).
만일, 내부적으로 가비지 컬렉션이 수행되지 않는다면, 가비지 컬렉터(1240)는 입력된 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 글로벌 가비지 컬렉션을 수행한다(S130). 반면에, 내부적으로 가비지 컬렉션이 수행 중이라면, 가비지 컬렉터(1240)는 입력된 글로벌 가비지 컬렉션 명령(GGC CMD)을 무시한다(S135).
본 발명의 실시 예에 따른 글로벌 가비지 컬렉션 방법은 데이터 저장 시스템(10)의 저장 장치들 중 어느 하나로부터 발행된 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 수행될 수 있다. 다른 저장 장치에서 발행된 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 저장 장치의 가비지 컬렉션을 수행한다는 의미에서, 본 발명은 셀프 글로벌 가비지 컬렉션이라고 불릴 수 있다.
도 8은 본 발명의 실시 예에 따른 RAID 구성 정보를 이용한 글로벌 가비지 컬렉션 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 8을 참조하면, 글로벌 가비지 컬렉션 방법은 다음과 같이 진행될 것이다.
데이터 저장 시스템(도 1 참조, 10)은 복수의 저장 장치들(도 1 참조, SSD1 ~ SSDn)을 한 그룹의 RAID로 구성한다. 이에 따라 RAID 구성 정보(예를 들어, 저장 장치의 포트 어드레스)는 저장 장치들(SSD1 ~ SSDn) 각각에 저장될 것이다(S210). 이후, 외부의 호스트로부터 입출력이 요청된다(S220). 입출력 요청을 처리하고자 할 때, 어느 하나의 저장 장치(SSD)에서 가비지 컬렉션 이벤트가 발생될 수 있다. 즉, 가비지 컬렉션의 필요성이 판별될 수 있다(S230).
가비지 컬렉션이 필요할 때, 저장 장치(SSD)는 RAID에 핫 스페어(hot spare) 혹은 엑스트라 패리티 디스크(extra parity disk)가 존재하는지를 판별한다(S240). 여기서 핫 스페어는 장애가 발생한 활성화된 저장 장치를 대체할 수 있는 여분의 저장 장치를 의미한다. 만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재한다면, 저장 장치(SSD)는 호스트 입출력 요청을 나머지 저장 장치들(other SSDs)에서 처리할 수 있도록 특별한 명령을 나머지 저장 장치들에 전송할 수 있다(S250). 이후, 저장 장치(SSD)는 가비지 컬렉션을 홀로 수행할 수 있다(S260). 이로써, RAID로 구성된 가상 드라이버의 전체적인 성능 저하가 방지될 것이다. 저장 장치(SSD)의 가비지 컬렉션이 완료된 후, RAID 그룹은 핫 스페어 혹은 엑스트라 패리티 디스크를 이용하여 리빌딩(rebuilding)될 것이다(S270).
한편, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않는다면, 저장 장치(SSD)는 글로벌 가비지 컬렉션 명령(GGC CMD)을 발생하고, 이를 디바이스-투-디바이스 통신을 통하여 나머지 저장 장치들에 전송할 수 있다(S255). 나머지 저장 장치들 각각은 내부 상태에 따라 글로벌 가비지 컬렉션 명령(GGC CMD)에 응답하여 글로벌 가비지 컬렉션을 수행한다(S265).
본 발명의 실시 예에 따른 글로벌 가비지 컬렉션 방법은 핫 스페어/엑스트라 패리티 디스크의 존재 여부에 따라 글로벌 가비지 컬렉션이 수행될 지가 결정될 수 있다.
도 9는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 1 실시 예를 예시적으로 보여주는 도면이다. 도 9를 참조하면, 호스트 시스템(20)은, 적어도 하나의 중앙 처리 장치(22) 및 메인 메모리(24)로 구성된 호스트와, 복수의 저장 장치들(SSDs)과 스토리지 제어기(26)로 구성된 데이터 저장 시스템을 포함한다.
중앙 처리 장치(22)와 스토리지 제어기(26)는 호스트 버스(21)를 통하여 연결될 수 있다. 본 발명의 저장 장치(SSD)는 도 6에 도시된 저장 장치(1000)로 구현될 수 있다.
본 발명의 실시 예에 따른 호스트 시스템(20)은 데이터 저장 시스템에서 자체적으로 글로벌 가비지 컬렉션을 수행하기 때문에, 호스트에서 글로벌 가비지 컬렉션을 고려할 필요가 없다. 따라서, 본 발명의 호스트 시스템(20)은 종래의 그것과 비교하여 호스트에서 글로벌 가비지 컬렉션에 따른 부담을 경감시킬 수 있다. 또한, 글로벌 가비지 컬렉션에 따른 중앙 처리 장치의 사용률 및 전력 소모를 크게 줄일 수 있다.
한편, 도 9에 도시된 스토리지 제어기(26)는 한정된 개수의 저장 장치들만 연결될 수 있다. 일반적으로 스토리지 제어기(26)에 연결되는 저장 장치들의 개수를 증가시키기 위하여 확장기(expander)를 추가할 수 있다. 본 발명은 이러한 확장 제어기에도 적용 가능하다.
도 10은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 2 실시 예를 예시적으로 보여주는 도면이다. 도 10을 참조하면, 호스트 시스템(30)은, 적어도 하나의 중앙 처리 장치(32) 및 메인 메모리(34)로 구성된 호스트와, 복수의 저장 장치들(SSDs), 스토리지 제어기(36) 및 확장기(38)로 구성된 데이터 저장 시스템을 포함한다. 본 발명의 저장 장치(SSD)는 도 6에 도시된 저장 장치(1000)로 구현될 수 있다.
도 1 내지 도 10에서는 호스트와 저장 장치 사이에 중간 매체(예를 들어, 스토리지 제어기, 확장기)가 존재하였다. 하지만, 본 발명의 글로벌 가비지 컬렉션은 이러한 구조에 제한되지 않을 것이다. 본 발명은 호스트와 저장 장치가 직접 연결되는 호스트 시스템에도 적용 가능하다.
도 11은 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 3 실시 예를 예시적으로 보여주는 도면이다. 도 11을 참조하면, 호스트 시스템(40)은, 적어도 하나의 중앙 처리 장치(42) 및 메인 메모리(44)로 구성된 호스트와, 복수의 저장 장치들(NVMe)을 포함한다. 본 발명의 저장 장치(NVMe)는 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 발행 및 입력 받을 수 있도록 구현될 수 있다.
도 11을 참조하면, 두 개의 RAID 그룹들(RAID1, RAID2)을 구성할 수 있다. RAID 그룹들(RAID1, RAID2) 각각의 저장 장치들은 서로 글로벌 가비지 컬렉션 명령을 발행 및 입력 받을 수 있다. 글로벌 가비지 컬렉션이 수행된 후에는 RAID가 리빌딩될 것이다.
한편, 본 발명의 호스트 시스템은 HDD(hard disk drive)와 함께 사용하는 구조일 수도 있다.
도 12는 본 발명의 실시 예에 따른 호스트 시스템에 대한 제 4 실시 예를 예시적으로 보여주는 도면이다. 도 12를 참조하면, 호스트 시스템(50)은, 적어도 하나의 중앙 처리 장치(52) 및 메인 메모리(54)로 구성된 호스트, 복수의 저장 장치들(NVMe)을 구성된 RAID들(RAID1, RAID2), 스토리지 제어기(56) 및 스토리지 제어기(56)에 연결된 복수의 하드 디스크들(HDDs)로 구성된 RAID(RAID3)을 포함한다. RAID들(RAID1, RAID2)을 구성하는 저장 장치들(NVMe) 각각은 디바이스-투-디바이스 글로벌 가비지 컬렉션 명령(Device to Device GGC CMD)을 발행 및 입력 받을 수 있도록 구현될 수 있다.
본 발명은 서버 환경에서 SSD 가비지 컬렉션에 의한 성능 저하(Drop) 구간을 완전히 제거함으로써, 지속적으로 짧은 레이턴시(consistent low latency) 환경을 구현할 수 있다.
본 발명은 SSD 내부 자원만을 이용하여 글로벌 가비지 컬렉션을 수행함으로써, SSD를 사용하는 업체의 협력 없이 자체적으로 글로벌 가비지 컬렉션을 수행할 수 있다.
본 발명은 SSD 내부 자원만을 이용해 동일한 RAID 그룹에 포함된 SSD 간의 네트워크 환경을 구축함으로써, 서버 환경에서 자체 관리(self management) 성능을 강화시킬 수 있다.
본 발명은 RAID 카드를 사용하여 가상 드라이브(virtual Drive)을 발생할 때, RAID 관련 정보 (RAID 종류, Device 수, Device ID 등)를 모든 디스크에 동일하게 저장시키고, 이를 Foreign Drive Import 등에 이용할 수 있다.
본 발명에서는 SSD 제어기가 디스크에 저장되어 있는 RAID 관련 정보를 이용하여 글로벌 가비지 컬렉션을 수행할 수 있다. 또한, 임의의 SSD에서 가비지 컬렉션이 발생할 때, SSD는 핫 스페어(hot spare) 혹은 엑스트라 패리티 디스크(extra parity disk)가 있는 지를 판별할 수 있다. 만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, SSD는 다른 SSD들이 호스트 요청(Host IO)를 처리할 수 있도록 특별한 명령(special CMD)을 다른 SSD들에게 전송한 후, 홀로 가비지 컬렉션을 수행할 수 있다. 이로써, 본 발명은 가상 드라이브의 전체적인 성능 저하를 방지할 수 있다.
반면에, 핫 스페어 혹은 엑스트라 패리티 디스크가 없을 경우, 가비지 컬렉션을 수행해야 하는 SSD가 동일한 RAID 그룹에 속해 있는 다른 SSD들에게 가비지 컬렉션을 수행하도록 특별한 명령(special CMD를 전송함으로써, 글로벌 가비지 컬렉션이 수행될 수 있다. 이 때 특별한 명령은 SATA와 같은 디스크 통신 표준의 FIS에 따라 PM Port(Device Port Address)를 이용하여 주소가 지정될 수 있다.
본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 실시 예에 있어서, 본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 상술 된 본 발명의 내용은 발명을 실시하기 위한 구체적인 실시 예들에 불과하다. 본 발명은 구체적이고 실제로 이용할 수 있는 수단 자체뿐 아니라, 장차 기술로 활용할 수 있는 추상적이고 개념적인 아이디어인 기술적 사상을 포함할 것이다.
10: 데이터 저장 시스템
110 ~ 1n0, 1000: 저장 장치
200: 스토리지 제어기
20, 30, 40: 호스트 시스템
110 ~ 1n0, 1000: 저장 장치
200: 스토리지 제어기
20, 30, 40: 호스트 시스템
Claims (10)
- 적어도 하나의 비휘발성 메모리 장치; 및
상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
상기 메모리 제어기는,
상기 메모리 제어기의 전반적인 동작을 제어하는 적어도 하나의 프로세서;
외부의 입출력 요청시 상기 적어도 하나의 프로세서의 제어에 따라 입출력 데이터를 임시로 저장하는 버퍼 메모리;
상기 입출력 데이터의 에러를 검출 및 정정하는 에러 정정 회로;
상기 입출력 요청시 가비지 컬렉션이 필요할 때 제 1 글로벌 가비지 컬렉션 명령을 발생하거나, 상기 외부로부터 입력된 제 2 글로벌 가비지 컬렉션 명령에 응답하여 글로벌 가비지 컬렉션을 수행하는 가비지 컬렉터; 및
상기 제 1 글로벌 가비지 컬렉션 명령을 다른 저장 장치로 전송하는 스토리지 인터페이스를 포함하는 저장 장치. - 제 1 항에 있어서,
상기 가비지 컬렉터는 상기 저장 장치가 내부적으로 가비지 컬렉션을 수행할 때 상기 제 2 글로벌 가비지 컬렉션 명령을 무시하는 저장 장치. - 제 1 항에 있어서,
상기 스토리지 인터페이스는 디바이스-투-디바이스 통신을 수행하는 저장 장치. - 제 3 항에 있어서,
상기 스토리지 인터페이스는 상기 디바이스-투-디바이스 통신을 위하여 PM(port multiplier) 포트 및 FIS(frame information structure) 종류를 이용하는 저장 장치. - 제 1 항에 있어서,
상기 저장 장치가 RAID(redundant array of independent disks) 구성에 이용될 때, 다른 저장 장치들의 RAID 구성 정보가 저장되는 저장 장치. - 제 5 항에 있어서,
상기 제 1 글로벌 가비지 컬렉션 명령이 발생하기 전에 RAID에 핫 스페어(hot spare) 혹은 엑스트라 패리티 디스크(extra parity disk)가 존재하는 지가 판별되고,
만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때 상기 제 1 글로벌 가비지 컬렉션 명령이 발생되고,
반면에, 만일 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 다른 저장 장치들이 상기 입출력 요청을 처리할 수 있도록 특별한 명령이 발생되는 저장 장치. - 저장 장치들; 및 상기 저장 장치들을 제어하는 스토리지 제어기를 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법에 있어서:
상기 저장 장치들은 하나의 RAID를 구성하고, RAID 구성 정보를 상기 저장 장치들 각각에 저장하는 단계;
호스트로부터 입출력 요청을 받는 단계;
상기 입출력 요청을 수행하면서 상기 저장 장치들 중 어느 하나에서 가비지 컬렉션이 필요한 지를 판별하는 단계;
상기 어느 하나의 저장 장치에서 상기 가비지 컬렉션이 필요할 때, 상기 저장 장치들 중에 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하는 지를 판별하는 단계;
상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때, 상기 저장 장치에서 상기 RAID 구성 정보를 이용하여 글로벌 가비지 컬렉션 명령을 발생하는 단계; 및
상기 저장 장치 외의 나머지 저장 장치들 각각에서 상기 글로벌 가비지 컬렉션 명령 및 내부 상태에 근거로 하여 글로벌 가비지 컬렉션을 수행하는 단계를 포함하는 글로벌 가비지 컬렉션 방법. - 제 7 항에 있어서,
상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 나머지 저장 장치들에서 상기 입출력 요청을 처리하도록 상기 저장 장치에서 상기 나머지 저장 장치들 각각으로 특별한 명령을 전송하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법. - 제 9 항에 있어서,
상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 저장 장치에서 상기 가비지 컬렉션을 수행하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법. - 제 9 항에 있어서,
상기 저장 장치에서 상기 가비지 컬렉션을 완료한 뒤에 RAID를 재구성하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130068502A KR102072829B1 (ko) | 2013-06-14 | 2013-06-14 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 |
US14/244,039 US9465733B2 (en) | 2013-06-14 | 2014-04-03 | Storage device and global garbage collection method of data storage system including the same |
US15/289,488 US10621081B2 (en) | 2013-06-14 | 2016-10-10 | Storage device and global garbage collection method of data storage system including the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130068502A KR102072829B1 (ko) | 2013-06-14 | 2013-06-14 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140145834A true KR20140145834A (ko) | 2014-12-24 |
KR102072829B1 KR102072829B1 (ko) | 2020-02-03 |
Family
ID=52020284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130068502A KR102072829B1 (ko) | 2013-06-14 | 2013-06-14 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9465733B2 (ko) |
KR (1) | KR102072829B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107422993A (zh) * | 2017-07-31 | 2017-12-01 | 北京小米移动软件有限公司 | 内嵌式存储器的处理装置及系统 |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9384093B1 (en) * | 2014-05-28 | 2016-07-05 | Microsemi Storage Solutions (U.S.), Inc. | Raid enabled NVME device |
US10642663B2 (en) | 2014-09-10 | 2020-05-05 | Oracle International Corporation | Coordinated garbage collection in distributed systems |
KR102330391B1 (ko) | 2014-09-11 | 2021-11-24 | 삼성전자주식회사 | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 가비지 컬렉션 방법 |
US9947386B2 (en) * | 2014-09-21 | 2018-04-17 | Advanced Micro Devices, Inc. | Thermal aware data placement and compute dispatch in a memory system |
US11755255B2 (en) * | 2014-10-28 | 2023-09-12 | SK Hynix Inc. | Memory device comprising a plurality of memories sharing a resistance for impedance matching |
US10067903B2 (en) | 2015-07-30 | 2018-09-04 | SK Hynix Inc. | Semiconductor device |
US9727456B2 (en) * | 2014-11-03 | 2017-08-08 | Pavilion Data Systems, Inc. | Scheduled garbage collection for solid state storage devices |
US10162694B2 (en) | 2015-12-21 | 2018-12-25 | Intel Corporation | Hardware apparatuses and methods for memory corruption detection |
JP6517685B2 (ja) * | 2015-12-22 | 2019-05-22 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
JP6517684B2 (ja) | 2015-12-22 | 2019-05-22 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US20170300249A1 (en) * | 2016-04-15 | 2017-10-19 | Western Digital Technologies, Inc. | Validity tracking for garbage collection |
KR102580123B1 (ko) | 2016-05-03 | 2023-09-20 | 삼성전자주식회사 | Raid 스토리지 장치 및 그것의 관리 방법 |
US10452576B2 (en) * | 2016-06-24 | 2019-10-22 | Avago Technologies International Sales Pte. Limited | NVMe drive detection from a SAS/SATA connector |
US10216591B1 (en) * | 2016-06-30 | 2019-02-26 | EMC IP Holding Company LLC | Method and apparatus of a profiling algorithm to quickly detect faulty disks/HBA to avoid application disruptions and higher latencies |
US10191791B2 (en) | 2016-07-02 | 2019-01-29 | Intel Corporation | Enhanced address space layout randomization |
US10031689B2 (en) * | 2016-09-15 | 2018-07-24 | Western Digital Technologies, Inc. | Stream management for storage devices |
US10776202B1 (en) * | 2017-09-22 | 2020-09-15 | Pure Storage, Inc. | Drive, blade, or data shard decommission via RAID geometry shrinkage |
JP2019074897A (ja) * | 2017-10-16 | 2019-05-16 | 富士通株式会社 | ストレージ制御装置、及びプログラム |
US10572184B2 (en) | 2018-01-11 | 2020-02-25 | International Business Machines Corporation | Garbage collection in data storage systems |
US10740181B2 (en) | 2018-03-06 | 2020-08-11 | Western Digital Technologies, Inc. | Failed storage device rebuild method |
CN110895513B (zh) * | 2018-09-12 | 2024-09-17 | 华为技术有限公司 | 一种系统垃圾回收方法和固态硬盘中的垃圾回收方法 |
KR20220023476A (ko) | 2020-08-21 | 2022-03-02 | 에스케이하이닉스 주식회사 | 레이드 데이터 저장 장치 및 이를 포함하는 데이터 저장 시스템 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120036309A1 (en) * | 2010-08-05 | 2012-02-09 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
KR20120086695A (ko) * | 2009-10-09 | 2012-08-03 | 바이올린 메모리 인코포레이티드 | Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2543746C (en) | 2003-10-27 | 2018-01-16 | Archivas, Inc. | Policy-based management of a redundant array of independent nodes |
US8200887B2 (en) | 2007-03-29 | 2012-06-12 | Violin Memory, Inc. | Memory management system and method |
US8130554B1 (en) | 2008-09-29 | 2012-03-06 | Emc Corporation | Securely erasing flash-based memory |
KR20100069067A (ko) | 2008-12-16 | 2010-06-24 | (주)인디링스 | 독립적으로 파일 시스템을 관리하는 레이드 컨트롤러 |
CN102576330B (zh) | 2009-06-12 | 2015-01-28 | 提琴存储器公司 | 具有持久化无用单元收集机制的存储系统 |
KR101562794B1 (ko) | 2009-08-04 | 2015-10-26 | 삼성전자주식회사 | 데이터 저장 장치 |
TWI497293B (zh) | 2009-12-17 | 2015-08-21 | Ibm | 固態儲存裝置內之資料管理 |
KR101774496B1 (ko) | 2010-12-08 | 2017-09-05 | 삼성전자주식회사 | 비휘발성 메모리 장치, 이를 포함하는 장치들, 및 이의 동작 방법 |
US8484408B2 (en) | 2010-12-29 | 2013-07-09 | International Business Machines Corporation | Storage system cache with flash memory in a raid configuration that commits writes as full stripes |
JP5776436B2 (ja) * | 2011-08-22 | 2015-09-09 | 富士通株式会社 | ストレージシステム、ストレージ制御装置およびストレージ制御方法 |
-
2013
- 2013-06-14 KR KR1020130068502A patent/KR102072829B1/ko active IP Right Grant
-
2014
- 2014-04-03 US US14/244,039 patent/US9465733B2/en active Active
-
2016
- 2016-10-10 US US15/289,488 patent/US10621081B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120086695A (ko) * | 2009-10-09 | 2012-08-03 | 바이올린 메모리 인코포레이티드 | Raid 그룹의 여러 스트라이핑을 갖는 메모리 및 그 수행방법 |
US20120036309A1 (en) * | 2010-08-05 | 2012-02-09 | Ut-Battelle, Llc | Coordinated garbage collection for raid array of solid state disks |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107422993A (zh) * | 2017-07-31 | 2017-12-01 | 北京小米移动软件有限公司 | 内嵌式存储器的处理装置及系统 |
CN107422993B (zh) * | 2017-07-31 | 2020-06-02 | 北京小米移动软件有限公司 | 内嵌式存储器的处理装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20140372698A1 (en) | 2014-12-18 |
US20170024314A1 (en) | 2017-01-26 |
KR102072829B1 (ko) | 2020-02-03 |
US9465733B2 (en) | 2016-10-11 |
US10621081B2 (en) | 2020-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102072829B1 (ko) | 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 | |
US11646068B2 (en) | Memory controller and operating method thereof | |
US10282252B2 (en) | RAID storage device and method of management thereof | |
US10496312B2 (en) | Method of operating a storage device to compress or decompress data and a data storage system including the storage device | |
US8996959B2 (en) | Adaptive copy-back method and storage device using same | |
US20180322085A1 (en) | Memory device for a hierarchical memory architecture | |
KR101801147B1 (ko) | 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치 | |
US9858182B2 (en) | Storage device and garbage collection method of data storage system having the storage device | |
US11055176B1 (en) | Storage devices hiding parity swapping behavior | |
US10521152B2 (en) | Storage device storing data in raid manner | |
US20190087128A1 (en) | Memory system and operating method of the same | |
KR102537373B1 (ko) | 메모리 시스템에서의 데이터 전달 방법 및 장치 | |
US12026400B2 (en) | Memory controller and operating method thereof | |
US20190220397A1 (en) | Memory system and operating method thereof | |
US11567685B2 (en) | Storage controller and storage device including the same | |
US11487609B2 (en) | Separating parity data from host data in a memory sub-system | |
US11556268B2 (en) | Cache based flow for a simple copy command | |
US10515693B1 (en) | Data storage apparatus and operating method thereof | |
US11385834B2 (en) | Data storage device, storage system using the same, and method of operating the same | |
US11194489B2 (en) | Zone-based device with control level selected by the host | |
KR102547251B1 (ko) | 비휘발성 메모리 장치를 제어하는 제어기, 그것을 포함하는 저장 장치 및 그것의 동작 방법 | |
US20240111426A1 (en) | Data Storage Device That Detects and Releases Bottlenecks In Hardware | |
TW202321926A (zh) | 儲存裝置及其操作方法、以及控制器的操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |