KR20140145834A - 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 - Google Patents

저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 Download PDF

Info

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
Application number
KR1020130068502A
Other languages
English (en)
Other versions
KR102072829B1 (ko
Inventor
이상걸
이원주
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130068502A priority Critical patent/KR102072829B1/ko
Priority to US14/244,039 priority patent/US9465733B2/en
Publication of KR20140145834A publication Critical patent/KR20140145834A/ko
Priority to US15/289,488 priority patent/US10621081B2/en
Application granted granted Critical
Publication of KR102072829B1 publication Critical patent/KR102072829B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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

저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법{STORAGE DEVICE, GLOBAL GARBAGE COLLECTION METHOD OF DATA STORAGE SYSTEM HAVING THE SAME}
본 발명은 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법에 관한 것이다.
반도체 메모리 장치는 일반적으로 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 실시 예를 예시적으로 보여주는 도면이다.
아래에서는 도면들을 이용하여 본 발명의 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있을 정도로 본 발명의 내용을 명확하고 상세하게 기재할 것이다.
도 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: 호스트 시스템

Claims (10)

  1. 적어도 하나의 비휘발성 메모리 장치; 및
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 메모리 제어기를 포함하고,
    상기 메모리 제어기는,
    상기 메모리 제어기의 전반적인 동작을 제어하는 적어도 하나의 프로세서;
    외부의 입출력 요청시 상기 적어도 하나의 프로세서의 제어에 따라 입출력 데이터를 임시로 저장하는 버퍼 메모리;
    상기 입출력 데이터의 에러를 검출 및 정정하는 에러 정정 회로;
    상기 입출력 요청시 가비지 컬렉션이 필요할 때 제 1 글로벌 가비지 컬렉션 명령을 발생하거나, 상기 외부로부터 입력된 제 2 글로벌 가비지 컬렉션 명령에 응답하여 글로벌 가비지 컬렉션을 수행하는 가비지 컬렉터; 및
    상기 제 1 글로벌 가비지 컬렉션 명령을 다른 저장 장치로 전송하는 스토리지 인터페이스를 포함하는 저장 장치.
  2. 제 1 항에 있어서,
    상기 가비지 컬렉터는 상기 저장 장치가 내부적으로 가비지 컬렉션을 수행할 때 상기 제 2 글로벌 가비지 컬렉션 명령을 무시하는 저장 장치.
  3. 제 1 항에 있어서,
    상기 스토리지 인터페이스는 디바이스-투-디바이스 통신을 수행하는 저장 장치.
  4. 제 3 항에 있어서,
    상기 스토리지 인터페이스는 상기 디바이스-투-디바이스 통신을 위하여 PM(port multiplier) 포트 및 FIS(frame information structure) 종류를 이용하는 저장 장치.
  5. 제 1 항에 있어서,
    상기 저장 장치가 RAID(redundant array of independent disks) 구성에 이용될 때, 다른 저장 장치들의 RAID 구성 정보가 저장되는 저장 장치.
  6. 제 5 항에 있어서,
    상기 제 1 글로벌 가비지 컬렉션 명령이 발생하기 전에 RAID에 핫 스페어(hot spare) 혹은 엑스트라 패리티 디스크(extra parity disk)가 존재하는 지가 판별되고,
    만일, 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때 상기 제 1 글로벌 가비지 컬렉션 명령이 발생되고,
    반면에, 만일 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 다른 저장 장치들이 상기 입출력 요청을 처리할 수 있도록 특별한 명령이 발생되는 저장 장치.
  7. 저장 장치들; 및 상기 저장 장치들을 제어하는 스토리지 제어기를 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법에 있어서:
    상기 저장 장치들은 하나의 RAID를 구성하고, RAID 구성 정보를 상기 저장 장치들 각각에 저장하는 단계;
    호스트로부터 입출력 요청을 받는 단계;
    상기 입출력 요청을 수행하면서 상기 저장 장치들 중 어느 하나에서 가비지 컬렉션이 필요한 지를 판별하는 단계;
    상기 어느 하나의 저장 장치에서 상기 가비지 컬렉션이 필요할 때, 상기 저장 장치들 중에 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하는 지를 판별하는 단계;
    상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재하지 않을 때, 상기 저장 장치에서 상기 RAID 구성 정보를 이용하여 글로벌 가비지 컬렉션 명령을 발생하는 단계; 및
    상기 저장 장치 외의 나머지 저장 장치들 각각에서 상기 글로벌 가비지 컬렉션 명령 및 내부 상태에 근거로 하여 글로벌 가비지 컬렉션을 수행하는 단계를 포함하는 글로벌 가비지 컬렉션 방법.
  8. 제 7 항에 있어서,
    상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 나머지 저장 장치들에서 상기 입출력 요청을 처리하도록 상기 저장 장치에서 상기 나머지 저장 장치들 각각으로 특별한 명령을 전송하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법.
  9. 제 9 항에 있어서,
    상기 핫 스페어 혹은 엑스트라 패리티 디스크가 존재할 때, 상기 저장 장치에서 상기 가비지 컬렉션을 수행하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법.
  10. 제 9 항에 있어서,
    상기 저장 장치에서 상기 가비지 컬렉션을 완료한 뒤에 RAID를 재구성하는 단계를 더 포함하는 글로벌 가비지 컬렉션 방법.
KR1020130068502A 2013-06-14 2013-06-14 저장 장치 및 그것을 포함하는 데이터 저장 시스템의 글로벌 가비지 컬렉션 방법 KR102072829B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107422993A (zh) * 2017-07-31 2017-12-01 北京小米移动软件有限公司 内嵌式存储器的处理装置及系统

Families Citing this family (22)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 富士通株式会社 ストレージシステム、ストレージ制御装置およびストレージ制御方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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