KR20180002259A - 계층적 플래시 변환 레이어 구조 및 그 설계 방법 - Google Patents

계층적 플래시 변환 레이어 구조 및 그 설계 방법 Download PDF

Info

Publication number
KR20180002259A
KR20180002259A KR1020160081508A KR20160081508A KR20180002259A KR 20180002259 A KR20180002259 A KR 20180002259A KR 1020160081508 A KR1020160081508 A KR 1020160081508A KR 20160081508 A KR20160081508 A KR 20160081508A KR 20180002259 A KR20180002259 A KR 20180002259A
Authority
KR
South Korea
Prior art keywords
log
data
interface
logs
recovery
Prior art date
Application number
KR1020160081508A
Other languages
English (en)
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 KR1020160081508A priority Critical patent/KR20180002259A/ko
Priority to US15/334,663 priority patent/US10140031B2/en
Publication of KR20180002259A publication Critical patent/KR20180002259A/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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • G06F17/5045
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1048Scalability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/461Sector or disk block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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/7201Logical to physical mapping or translation of blocks or pages

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명의 일 실시예에 따르면, 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer) 구조로서, 제 0 계층 호스트 데이터 그룹 및 제 1 내지 제 n 계층 메타데이터 그룹을 포함하는 계층적 데이터 그룹들; 및 상기 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 제 0 내지 제 n 로그들; 을 포함하고, 제 k 로그 (0≤k≤n) 는, (a) 상기 제 k 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 제 k 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 구조가 제공된다.

Description

계층적 플래시 변환 레이어 구조 및 그 설계 방법{STRUCTURE AND DESIGN METHOD OF FLASH TRANSLATION LAYER}
본 발명은 플래시 변환 레이어 구조 및 그 설계 방법에 관한 것으로, 보다 상세히 본 발명은 플래시 변환 레이어가 계층적인 데이터 그룹들, 그 데이터 그룹들을 관리하는 로그들 그리고 로그들의 계층적 상호작용에 의해 구축되는 것을 특징으로 한다.
플래시 메모리는 최근 빠르게 하드 드라이브(HDD)를 대체하고 있으며, 그 영역은 소비자 가전 영역 (Notebook/Desktop) 의 시장에서 기업용 서버 및 데이터 센터 분야로 확장되고 있다. 플래시메모리는 HDD와 달리 덮어쓰기가 불가능하고, 페이지 단위의 읽기 및 쓰기, 블록 단위의 지우기를 기본 동작으로 하며, 배드 블록을 허용하고, 수명이 제한되는 등의 제약이 있다. 따라서 플래시메모리를 저장 매체로 한 고성능, 고신뢰성 저장 장치를 개발하기 위해서는 플래시메모리의 장점을 효과적으로 활용하고 제약사항들을 극복할 수 있는 방안이 필요하며, 플래시 변환 레이어(Flash Transition Layer)가 주로 이러한 역할을 담당해왔다. 플래시 변환 레이어는 덮어쓰기가 불가능한 플래시메모리의 제약사항을 극복하기 위해 논리 섹터 주소와 플래시메모리 물리 주소 간의 매핑(mapping)의 개념을 도입하여, 호스트 시스템에게 덮어쓰기가 가능한 블록 저장 장치 시스템을 제공한다. 또한 플래시 변환 레이어는 매핑을 활용하여 동작 중 발생 가능한 배드 블록을 향후 사용되지 않도록 조치하거나, 특정한 물리 블록이 과도하게 지워지는 것을 방지하는 마모도 평준화의 기능을 수행한다.
최근 플래시메모리의 공정이 미세화되면서 점점 신뢰성 특성이 악화되고 있으므로 플래시 저장 시스템의 신뢰성 보장을 위한 플래시 변환 레이어의 역할과 기능이 점점 더 커지고 있는 추세이다.
본 발명은 플래시 변환 레이어 구조에 관한 것으로, 공통적인 데이터 처리 매커니즘을 갖는 로그들의 계층적인 조합(Hierarchical composition)을 통해 스토리지 시스템을 구성하는 플래시 변환 레이어 구조를 제공하는 것을 일 목적으로 한다.
또한, 본 발명은 계층적으로 상호작용하는 로그를 이용하여 플래시 변환 레이어 구조의 설계를 용이하게 하고, 재사용이 가능하게 하며, 복구의 정확성을 증대시키는 것을 다른 목적으로 한다.
본 발명의 일 실시예에 따르면, 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer) 구조로서, 제 0 계층 호스트 데이터 그룹 및 제 1 내지 제 n 계층 메타데이터 그룹을 포함하는 계층적 데이터 그룹들; 및 상기 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 제 0 내지 제 n 로그들; 을 포함하고, 제 k 로그 (0≤k≤n) 는, (a) 상기 제 k 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 제 k 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 구조가 제공된다.
본 발명에 있어서, 상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기(read) 및 쓰기(write)가 가능하고, 바이트(byte) 단위 접근이 가능한 선형 주소 공간(Linear address space)일 수 있다.
본 발명에 있어서, 상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기 명령, 쓰기 명령 및 플러쉬(flush) 명령을 포함하고, 상기 읽기 명령은 제 k 로그의 로그 ID 주소 공간 상의 시작 어드레스(start address)에서부터 바이트 카운트(byte count)만큼의 개수의 바이트를 읽어서 호출부의 데이터 버퍼 어드레스(data buffer address)로 전송 요청하고, 상기 쓰기 명령은 상기 데이터 버퍼 어드레스로부터 데이터를 전송하여 상기 로그 ID 주소 공간 상의 상기 시작 어드레스에서부터 바이트 카운트 개수 만큼의 바이트를 기록할 것을 요청하며, 상기 플러쉬 명령은 상기 로그 ID 주소 공간 상에 쓰기 기록된 바이트들을 비휘발성 메모리에 영구 기록하도록 요청할 수 있다.
본 발명에 있어서, 상기 제 0 로그는 인터페이스 글루(Interface Glue)를 통해 호스트 시스템과의 인터페이스를 제공하고, 상기 인터페이스 글루는, 섹터(sector) 단위의 주소 공간과 바이트(Byte) 단위의 주소 공간의 불일치를 교정할 수 있다.
본 발명에 있어서, 상기 제 k 로그는, 상기 제 k 로그의 매타 캐시(cache)의 참조와 되찾음(eviction) 처리를 수행하는 메타데이터 처리부; 및
전원 중단 후 복구를 위한 로그 기록 처리 및 초기화 시 데이터 복구 처리를 수행하는 전원 중단 복구 처리부를 포함할 수 있다.
본 발명에 있어서, 상기 전원 중단 복구 처리부는, 제 k-1 로그로부터 (단, k=0 인 경우 호스트 시스템으로부터) 비휘발적 데이터 기록 요청을 수신하여, 요청 데이터를 비휘발적으로 기록하고, 메타데이터 갱신 내용을 복구 로그에 추가하며, 상기 복구 로그를 비휘발적으로 갱신하고, 제 k-1 로그에 완료 응답을 제공하며, 상기 제 k 로그에 대응하는 메타 캐시 공간이 부족한 경우, 제 k+1 로그로 읽기 혹은 플러시 요청을 보내고, 완료 응답을 받은 후 메타데이터 갱신 내용을 복구 로그로부터 제거하고, 복구 로그를 비휘발적으로 갱신할 수 있다.
본 발명에 있어서, 상기 k=n 인 경우, 상기 전원 중단 복구 처리부는 상기 제 k+1 로그로 읽기 혹은 플러쉬 요청을 보내지 않고, 제 n 로그에 대응되는 데이터 전체를 체크포인트 영역에 스냅샷(snapshot)할 수 있다.
본 발명에 있어서, 상기 제 k 로그는, 상기 제 k-1 로그로부터의 (단, k=0 인 경우 호스트 시스템으로부터의) 읽기, 쓰기 또는 플러쉬 요청을 받아 처리를 수행하는, 제 k-1 로그의 요청 처리부; 공간 재수거(Block reclaim)와 마모도 평준화(Wear-leveling)의 데이터 복사 처리를 수행하는 데이터 복사 처리부; 및 블록 할당과 데이터의 병렬적 기록을 위한 교차 처리(Interleaving)를 수행하는 데이터 배치 처리부를 더 포함할 수 있다.
본 발명에 있어서, 상기 n 은 매핑 단위가 커지면 감소하고, 매핑 단위가 작아지면 증가할 수 있다.
본 발명에 있어서, 상기 로그들은 공통적으로, 상기 분할 할당된 비휘발성 메모리 블록 자원에 데이터를 기록하는 동작 및 메타데이터를 업데이트하는 동작을 수행할 수 있는 동일한 데이터 처리 기능을 보유할 수 있다.
본 발명에 있어서, 상기 제 0 로그는 제 0 계층 호스트 데이터 그룹에 대응되고, 상기 제 1 내지 제 n 로그는 제 1 내지 제 n 계층 메타데이터 그룹에 각각 대응될 수 있다.
본 발명에 있어서, 상기 k=0 일 경우, 상기 (c) 는 호스트 시스템 및 제 1 로그와의 인터페이스이고, 상기 k=n 일 경우, 상기 (c) 는 제 n-1 로그와의 인터페이스일 수 있다.
본 발명에 있어서, 상기 로그들 중 검증이 완료된 로그는 다른 플래시 변환 레이어에 적용될 수 있다.
본 발명에 있어서, 상기 플래시 변환 레이어는, 복구의 정확성에 대한 상기 로그들의 인터페이스 자체의 정합성을 정형적으로 증명(formal proof) 가능할 수 있다.
본 발명의 다른 일 실시예에 따르면, 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer)의 설계 시스템으로서, 상기 플래시 변환 레이어의 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 로그들을 생성하는 로그 개발부; 상기 로그들을 검증하는 검증부; 상기 검증부에 의해 검증이 완료된 로그에 대해 로그 컴포넌트(component)를 생성하고, 생성된 상기 로그 컴포넌트들을 라이브러리에 등록하는 등록부; 상기 라이브러리에 등록된 로그 컴포넌트들 중 타겟(target) 스토리지 시스템의 성능 및 자원 사용량 요구 조건을 만족시키는 로그 컴포넌트들을 조합하여 플래시 변환 레이어를 설계하는 설계부; 를 포함하며, 상기 로그들 각각은, (a) 상기 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 이전 계층 로그 및 다음 계층 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 설계 시스템이 제공된다.
본 발명에 있어서, 상기 로그 컴포넌트는 설정가능(configurable) 특성들을 포함하고, 상기 로그 개발부는 하나의 로그 컴포넌트를 복제하되 상기 설정가능 특성을 변경하여 하나 이상의 다른 로그를 개발할 수 있다.
본 발명의 다른 일 실시예에 따르면, 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer) 구조를 설계하는 방법으로서, 제 0 계층 호스트 데이터 그룹 및 제 1 내지 제 n 계층 메타데이터 그룹을 포함하는 계층적 데이터 그룹들을 생성하는 단계; 및 상기 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 제 0 내지 제 n 로그를 설계하는 단계; 를 포함하고, 제 k 로그 (0≤k≤n) 는, (a) 상기 제 k 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 제 k 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스를 제공할 수 있다.
본 발명에 있어서, 상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기(read) 및 쓰기(write)가 가능하고, 바이트(byte) 단위 접근이 가능한 선형 주소 공간(Linear address space)일 수 있다.
본 발명에 있어서, 상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기 명령, 쓰기 명령 및 플러쉬(flush) 명령을 포함하고, 상기 읽기 명령은 제 k 로그의 로그 ID 주소 공간 상의 시작 어드레스(start address)에서부터 바이트 카운트(byte count)만큼의 개수의 바이트를 읽어서 호출부의 데이터 버퍼 어드레스(data buffer address)로 전송 요청하고, 상기 쓰기 명령은 상기 데이터 버퍼 어드레스로부터 데이터를 전송하여 상기 로그 ID 주소 공간 상의 상기 시작 어드레스에서부터 바이트 카운트 개수 만큼의 바이트를 기록할 것을 요청하며, 상기 플러쉬 명령은 상기 로그 ID 주소 공간 상에 쓰기 기록된 바이트들을 비휘발성 메모리에 영구 기록하도록 요청할 수 있다.
본 발명에 있어서, 상기 제 0 로그는 인터페이스 글루(Interface Glue)를 통해 호스트 시스템과의 인터페이스를 제공하고, 상기 인터페이스 글루는, 섹터(sector) 단위의 주소 공간과 바이트(Byte) 단위의 주소 공간의 불일치를 교정할 수 있다.
본 발명에 있어서, 제 0 내지 제 n 로그를 설계하는 단계는, 상기 제 k 로그의 매타 캐시(cache)의 참조와 되찾음(eviction) 처리를 수행하는 메타데이터 처리 단계; 및 전원 중단 후 복구를 위한 로그 기록 처리 및 초기화 시 데이터 복구 처리를 수행하는 전원 중단 복구 처리 단계를 포함할 수 있다.
본 발명에 있어서, 상기 전원 중단 복구 처리 단계는, 제 k-1 로그로부터 (단, k=0 인 경우 호스트 시스템으로부터) 비휘발적 데이터 기록 요청을 수신하여, 요청 데이터를 비휘발적으로 기록하고, 메타데이터 갱신 내용을 복구 로그에 추가하며, 상기 복구 로그를 비휘발적으로 갱신하고, 제 k-1 로그에 완료 응답을 제공하는 단계; 및, 상기 제 k 로그에 대응하는 메타 캐시 공간이 부족한 경우, 제 k+1 로그로 읽기 혹은 플러시 요청을 보내고, 완료 응답을 받은 후 메타데이터 갱신 내용을 복구 로그로부터 제거하고, 복구 로그를 비휘발적으로 갱신하는 단계를 포함할 수 있다.
본 발명에 있어서, 상기 k=n 인 경우, 상기 전원 중단 복구 처리부는 상기 제 k+1 로그로 읽기 혹은 플러쉬 요청을 보내지 않고, 제 n 로그에 대응되는 데이터 전체를 체크포인트 영역에 스냅샷(snapshot)할 수 있다.
본 발명에 있어서, 상기 제 k 로그는, 상기 제 k-1 로그로부터의 (단, k=0 인 경우 호스트 시스템으로부터의) 읽기, 쓰기 또는 플러쉬 요청을 받아 처리를 수행하는, 제 k-1 로그의 요청 처리 단계; 공간 재수거(Block reclaim)와 마모도 평준화(Wear-leveling)의 데이터 복사 처리를 수행하는 데이터 복사 처리 단계; 및 블록 할당과 데이터의 병렬적 기록을 위한 교차 처리(Interleaving)를 수행하는 데이터 배치 처리 단계를 더 포함할 수 있다.
본 발명에 있어서, 상기 n 은 매핑 단위가 커지면 감소하고, 매핑 단위가 작아지면 증가할 수 있다.
본 발명에 있어서, 상기 로그들은 공통적으로, 상기 분할 할당된 비휘발성 메모리 블록 자원에 데이터를 기록하는 동작 및 메타데이터를 업데이트하는 동작을 수행할 수 있는 동일한 데이터 처리 기능을 보유할 수 있다.
본 발명에 있어서, 상기 제 0 로그는 제 0 계층 호스트 데이터 그룹에 대응되고, 상기 제 1 내지 제 n 로그는 제 1 내지 제 n 계층 메타데이터 그룹에 각각 대응될 수 있다.
본 발명에 있어서, 상기 k=0 일 경우, 상기 (c) 는 호스트 시스템 및 제 1 로그와의 인터페이스이고, 상기 k=n 일 경우, 상기 (c) 는 제 n-1 로그와의 인터페이스일 수 있다.
본 발명에 있어서, 상기 로그들 중 검증이 완료된 로그는 다른 플래시 변환 레이어에 적용될 수 있다.
본 발명에 있어서, 상기 플래시 변환 레이어는, 복구의 정확성에 대한 상기 로그들의 인터페이스 자체의 정합성을 정형적으로 증명(formal proof) 가능할 수 있다.
본 발명의 다른 일 실시예에 따르면, 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer)의 설계 방법으로서, 상기 플래시 변환 레이어의 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 로그들을 생성하는 로그 개발 단계; 상기 로그들을 검증하는 검증 단계; 상기 검증 단계에 의해 검증이 완료된 로그에 대해 로그 컴포넌트(component)를 생성하고, 생성된 상기 로그 컴포넌트들을 라이브러리에 등록하는 등록 단계; 상기 라이브러리에 등록된 로그 컴포넌트들 중 타겟(target) 스토리지 시스템의 성능 및 자원 사용량 요구 조건을 만족시키는 로그 컴포넌트들을 조합하여 플래시 변환 레이어를 설계하는 설계 단계; 를 포함하며, 상기 로그들 각각은, (a) 상기 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 이전 계층 로그 및 다음 계층 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 설계 방법이 제공된다.
본 발명에 있어서, 상기 로그 컴포넌트는 설정가능(configurable) 특성들을 포함하고, 상기 로그 개발 단계는 하나의 로그 컴포넌트를 복제하되 상기 설정가능 특성을 변경하여 하나 이상의 다른 로그를 개발할 수 있다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 다른 시스템 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하는 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명의 일 실시예에 따르면 이미 구현 및 검증된 로그들 각각을 재활용하여 새로운 조합을 생성함으로써 타겟 스토리지 디바이스를 구현하는 것이 가능하므로, 스토리지 솔루션 구축을 위해 드는 시간과 비용의 단축이 가능하다.
또한, 본 발명의 일 실시예에 따르면 개별 로그들 간의 인터페이스를 명세함으로써, 복구의 정확성(Correctness of recovery)에 대한 인터페이스 자체의 정합성을 정형적으로 증명(formal proof)할 수 있다.
또한, 본 발명의 일 실시예에 따르면, 제한된 메모리 자원(resource)을 이용해서 큰 용량의 스토리지 시스템을 쉽게 구축하는 것이 가능하므로, 제품 군의 다양성을 증진시킬 수 있다.
도 1 은 본 발명의 일 실시예에 따른 메타데이터의 계층적 확장을 설명하기 위한 도면이다.
도 2 는 호스트 데이터와 메타데이터 처리를 이분법적으로 구분하는 플래시 변환 레이어 구조의 일 예이다.
도 3 은 본 발명의 일 실시예에 따라 HIL 방식을 사용한 플래시 변환 레이어를 나타낸 도면이다.
도 4 는 본 발명의 일 실시예에 따른 HIL이 구현된 플래시 변환 레이어를 포함하는 플래시 스토리지 시스템의 일 예를 나타낸 것이다.
도 5 는 본 발명의 일 실시예에 따른 로그의 인터페이스 프로토콜을 설명하기 위한 도면이다.
도 6 은 본 발명의 일 실시예에 따른 인터페이스 글루를 예시한 도면이다.
도 7 은 본 발명의 일 실시예에 따른 각 로그의 내부 기능 명세를 블록도로 나타낸 도면이다.
도 8 은 본 발명의 일 실시예에 따른 전원 중단 복구를 위한 규약을 시계열적으로 나타낸 도면이다.
도 9 는 본 발명의 일 실시예에 따른 HIL의 사용 모델을 예시한 도면이다.
도 10 은 본 발명의 일 실시예에 따른 HIL의 추가적인 사용 모델을 예시한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이러한 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 본 명세서에 기재되어 있는 특정 형상, 구조 및 특성은 본 발명의 정신과 범위를 벗어나지 않으면서 일 실시예로부터 다른 실시예로 변경되어 구현될 수 있다. 또한, 각각의 실시예 내의 개별 구성요소의 위치 또는 배치도 본 발명의 정신과 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 행하여지는 것이 아니며, 본 발명의 범위는 특허청구범위의 청구항들이 청구하는 범위 및 그와 균등한 모든 범위를 포괄하는 것으로 받아들여져야 한다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 구성요소를 나타낸다.
이하에서는, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있도록 하기 위하여, 본 발명의 여러 실시예에 관하여 첨부된 도면을 참조하여 상세히 설명하기로 한다.
비휘발성 스토리지 디바이스(non-volatile storage device)는 전원 공급이 끊어져도 데이터를 보존하는 비휘발성 데이터를 기록 및 참조할 수 있는 기능을 제공하는 장치로서, 호스트 시스템에 논리 블록 주소 공간(Logical Block Address space, LBA)을 제공한다. 플래시 스토리지 디바이스(flash storage device) 대표적인 비휘발성 스토리지 디바이스로서 , 플래시 메모리를 활용한 스토리지 디바이스를 칭한다 . 또한 플래시 스토리지 시스템은 플래시 스토리지 디바이스를 포함하는 기능적 시스템을 통칭할 수 있다. 플래시 스토리지 디바이스는 호스트 시스템과 플래시 메모리를 연결하는 데이터 전송 모듈, 인터페이스 모듈, 저장 장치 기능 구현과 성능 및 신뢰성 향상을 위한 각종 모듈을 포함한다. 또한, 본 명세서에서는 NAND 플래시 메모리를 기준으로 설명하지만, 반드시 이에 한정되는 것은 아니다.
플래시 스토리지 디바이스는 일반적으로 플래시 변환 레이어(Flash Transition Layer, FTL)라는 특수한 내부 제어 메카니즘을 필요로한다. 플래시 변환 레이어란, 덮어쓰기(overwrite)를 허용하지 않는 플래시 메모리를 이용하여 비휘발성 스토리지 디바이스의 기능을 구현하기 위해 필요한 제어 기능(Functionality)을 통칭한다.
보다 상세히, 플래시 메모리는 읽기(read), 프로그램(program), 지우기(erase) 세가지 연산을 지원하며 덮어쓰기가 불가능하며, 데이터를 쓰기 전에 반드시 지우기 연산이 선행되어야 한다. 즉, NAND 플래시 메모리는 지우기 된 메모리 블록에만 쓰기를 허용하기 때문에 (erase-before-program restriction), 이전에 지워진 물리적 위치에 호스트의 새로운 기록 요구의 데이터를 리디렉션(redirection)해야 한다. 이는 호스트 시스템의 읽기 요청에 대해 최신 데이터를 제공할 있도록 플래시 변환 레이어가 가상 공간-물리 공간의 매핑 정보를 소정의 형태로 유지해야 함을 의미한다. 플래시 변환 레이어는 프로그램된 페이지만을 포함하는 블록을 재사용하기 위해서 혹은 지우기 위해서 블록 정리 작업(block cleaning)을 수행해야 하며, 이는 가비지 콜렉션(garbage collection)이라고도 한다.
즉, 플래시 변환 레이어는 이전에 삭제된 메모리 위치에 새로운 쓰기 데이터를 다시 매핑하고 호스트의 읽기 요청에 대해 최신 데이터를 제공할 수 있도록, 가상주소-물리주소 간 매핑 정보의 소정의 형태를 유지한다.
매핑 단위의 크기와 관련하여, 플래시 변환 레이어가 데이터의 매핑 정보 관리를위해 큰 매핑 단위를 사용하는 경우(예를 들어 NAND 블록 단위의 매핑인 경우), 매핑 정보의 총량이 작아진다. 따라서 매핑 데이터를 유지하기 위해 메인 메모리 (예를 들면 SRAM 이나 DRAM)의 작은 양을 필요로 하지만(따라서 비용면에서 효율적임), 매핑 단위 크기의 데이터가 항상 함께 이동해야 하므로 다시 읽기 후-수정-쓰기(read-modify-write)의 큰 오버헤드를 발생시키므로, 매핑 단위 보다 작은 크기의 호스트 쓰기 요청의 처리 속도가 저하되는 문제점이 존재한다.
과거의 플래시 변환 레이어들은 대상 스토리지 시스템의 비용을 감소시키기 위해서, 고가의 메인 메모리에 필요한 용량을 최소화하고자 하였고, 따라서 큰 매핑 단위, 통상적으로 NAND 블록 크기의 매핑 단위를 사용하는 경향이 있었다. 이러한 블록 단위 매핑을 사용하는 경우, 플래시 변환 레이어는 작은 메인 메모리 내에 전체 매핑 데이터를 유지시킬 수 있었고, 따라서 매핑 데이터는 런타임 동안 운용 오버헤드가 적고 부팅 시 상대적으로 쉽게 복구될 수 있었다. 다시 말해, 매핑 데이터의 크기가 작으므로 플래시 변환 레이어는 간단하게 매핑 데이터를 처리할 수 있었고, 매핑 데이터 처리가 대상 스토리지 시스템의 성능 및 신뢰성에 큰 영향을 미치지 않았다.
이에 반해 작은 매핑 단위, 통상적으로 페이지 단위 매핑을 사용하는 경우, 매핑 정보의 총량은 커지지만 작은 크기의 호스트 쓰기 요청의 처리 속도가 향상된다. 최근에는 작은 사이즈(예를 들어, 4킬로바이트)의 쓰기 성능 요구치가 높아짐에 따라, 매핑 단위가 점점 작아지고 있는 추세이다.
한편, 플래시 스토리지 시스템이 처리하는 데이터는 호스트 시스템으로부터 요청된 호스트 데이터와, 호스트 데이터를 관리하기 위해 플래시 변환 레이어가 내부적으로 운용하는 메타데이터를 포함한다. 메타데이터는 호스트 데이터의 저장 위치를 알려주는 매핑 데이터를 포함한다.
대부분의 기존 기술은 메타데이터의 처리를 위해 별도의 플래시 변환 레이어 하부 구성 요소(sub component)를 정의하고, 해당 처리부를 호스트 데이터 처리부와 분리하여 별도 제작하였다. 또한 플래시 변환 레이어의 분리된 두 구성 요소 (혹은 처리부)간의 정보 교환은 표준화된 인터페이스를 통해서가 아니라, 제조사마다 다른 특화된 (Specialized) 인터페이스를 통해 이루어졌다. 이러한 경향은 플래시 변환 레이어의 매핑 데이터 처리가 전체 스토리지 시스템의 성능 및 신뢰성에 한계 효용이 있다는 암묵적인 가정 하에서 상대적으로 그 중요성이 간과되었기 때문이다.
그러나, 스토리지 시스템의 용량이 증가하면서, 메타데이터의 양의 증가로 인해 메타데이터의 프로세싱은 보다 많은 시스템 자원 (임베디드 프로세서의 사용율 및 휘발성/비휘발성 메모리 공간)을 필요로 하고 있다. 즉, 대상 스토리지 시스템의 용량이 증가함에 따라, 요구되는 맵핑 정보의 양이 점점 증가하고 있으며, 스토리지 시스템의 비용 (매핑 데이터를 담을 휘발성 메모리 공간)적 측면 과 부팅 시 복구 성능(매핑 데이터를 다시 휘발성 메모리로 복원하는 과정의 오버헤드)의 측면, 두 가지 모두에서 메타 구조의 계층적 확장에 대한 필요성이 점점 요구되고 있는 추세이다.
이에, 상기와 같은 문제점을 해결하기 위하여, 본 발명은 메타데이터의 구조의 계층적 확장을 염두에 둔 새로운 플래시 변환 레이어의 구조와 그 구현 방법을 제안하게 되었다. 본 발명의 일 실시예에 따른 플래시 변환 레이어는 소프트웨어나 하드웨어 혹은 둘의 적절한 조합으로 구현될 수 있다.
도 1 은 본 발명의 일 실시예에 따른 메타데이터의 계층적 확장을 설명하기 위한 도면이다.
메타데이터 구조의 계층적 확장이란, 메타데이터를 단일 계층 안에서 처리하지 않고 메타데이터간의 계층적 구조를 도입하는 것을 뜻하며, 참고적으로 이는 가상 메모리 시스템에서 주소 공간의 크기가 커짐에 따라 다중 계층 페이지 매핑(Multi-level page mapping)을 도입한 것과 원리상 유사하다고 볼 수 있다. 플래시 변환 레이어의 메타데이터는 매핑 데이터와 함께, 플래시 메모리의 블록 정보를 비롯한 여타 관리를 위한 데이터를 포함하지만 대부분의 경우 양적인 비중에 있어 매핑 정보가 메타데이터의 대부분을 차지한다. 이하의 설명에서는 암묵적으로 메타데이터가 매핑 정보와 같은 것으로 간주하지만, 메타데이터는 매핑 데이터에 국한되지 않고 더 넓은 범위로 확장될 수 있다.
도 1 은 메타데이터 구조의 확장을 설명하기 위해, 호스트 LBA(loginal block address) 데이터의 총량이 4TB 이고, 휘발성 메모리(RAM) 2MB 가 제공되며, 매핑 단위는 작은 사이즈인 4KB 를 사용하는 경우, 플래시 변환 레이어의 매핑이 계층적으로 확장되는 예시를 나타낸 도면이다.
보다 상세히, 호스트 데이터의 LBA 기준 총량이 4TB 이고, 4KB 단위의 매핑을 사용하면 (매핑 정보의 1 개 엔트리당 크기가 4Byte 인 경우) 총 4GB 의 제 1 계층 메타데이터가 요구될 것이다. 이때, 도 1 의 실시예에서는 가능한 휘발성 메인 메모리의 크기가 2MB 이므로, 제 1 계층 메타데이터는 가용한 휘발성 메인 메모리에 모두 저장될 수 없다. 따라서, 제 1 계층 메타데이터는 작은 단위(fragments)로 나뉘어져 비휘발성 메모리의 NAND 블록에 저장되고, 제 2 계층 매핑 정보가 나뉘어 저장된 제 1 계층 메타데이터의 위치를 파악하기 위해 요구된다.
제 1 계층 (메타) 데이터의 매핑 단위는 제 2 계층 메타데이터의 총량을 결정한다. 만약, 전체 매핑 계층을 두개 이하로 제한하고자 한다면, 16KB 의 매핑 단위를 사용할 수 있고, 이때 제 2 계층 메타데이터는 1 MB가 되며, 제 2 계층 메타데이터가 모두 휘발성 메모리(RAM)내에 저장될 수 있으므로 도1의 왼편의 예시와 같이 계층적 매핑 구조의 마지막 계층이 된다. 혹은, 작은 매핑 단위의 필요로 인하여 매핑 계층을 2 개 이상으로 확장하고자 한다면, 호스트 데이터와 마찬가지로 제 1 계층 (메타) 데이터의 매핑 단위는 4KB 가 될 수 있다. 이때, 제 2 계층 메타데이터는 4MB 이며, 이는 휘발성 메모리의 저장 용량을 초과하므로, 또 다시 제 3 계층의 매핑 정보가 제 2 계층 메타데이터를 위치시키기 위해 요구된다.
이러한 방법으로, 본 발명의 일 실시예에 따른 플래시 변환 레이어에서는 작은 매핑 단위를 사용할 경우 메타데이터를 계층적으로 확장하여 관리할 수 있다.
한편, 종래의 플래시 변환 레이어 구조는 호스트 데이터와 메타데이터 처리를 이분법적으로 구분하였다. 도 2 는 호스트 데이터와 메타데이터 처리를 이분법적으로 구분하는 플래시 변환 레이어 구조의 일 예이다.
도 2 를 참조하면, 플래시 변환 레이어의 호스트 데이터 처리부는, 호스트 데이터에 대해 분할 할당된 NAND 블록을 기록/참조하고, 분할 할당된 휘발성 메모리를 이용하여 호스트 데이터 처리를 가속화 한다. 또한, 플래시 변환 레이어의 메타데이터 처리부는, 메타데이터에 대해 분할 할당된 NAND 블록을 기록/참조하고, 분할 할당된 휘발성 메모리를 이용하여 각 계층의 데이터 처리를 가속화 한다.
즉, 종래의 접근법은 매핑 데이터를 처리하기 위해 호스트 데이터 처리 부분과 상이한 자체적인 매핑 처리 부분, 클리닝 정책 및 복구 절차를 사용하는 주문 제작된 플래시 변환 레이어 기능들의 세트를 제공하였다. 그러나 플래시 변환 레이어 기능의 두 개의 세트(호스트 데이터 처리부 및 메타데이터 처리부)는 플래시 스토리지 시스템의 구현 및 검증에 들어가는 노력을 배가시키는 문제점이 있었다. 또한, 두 개의 처리부 (호스트 데이터 처리부와 메타데이터 처리부)간의 상호작용을 위해 표준화된 인터페이스가 아닌 제조사 별, 제품군 별 상이한 특수 (specialized) 인터페이스를 사용하기 때문에, 재사용이 어렵다. 이것은 새로운 플래시 스토리지 시스템의 개발에 대한 심각한 비 효율성을 초래하고, 각 각 처리부의 상호작용, 예를 들어, 런타임 중의 데이터 교환 혹은 부팅 시 데이터 복구 처리 등의 작업이 재 디자인 구현 시마다 개발주기에서 검증되어야 함을 의미한다.
즉, 종래의 플래시 변환 레이어 구현 방법을 따르면 스토리지 시스템의 목적에 따라 개별적으로 요구되는 조건들이 있는 경우, 호스트 데이터 처리부와 메타데이터 처리부를 타겟 스토리지 시스템에 따라 개별적으로 구현해야 하기 때문에, 개발과 검증에 소요되는 시간과 비용이 증가하였다.
달리 말해, 기존의 플래시 변환 레이어에서는, 두 처리부 간 데이터 처리 과정상의 공통 요소(NAND에 데이터를 기록하거나 메타 정보를 업데이트 하는 요소 등)가 상당수 존재함에도 불구하고, 두 개의 서로 다른 처리부가 전혀 다른 개별 요소로 설계/구현되어 코드 공용성 및 재활용성이 저하되는 단점이 있었다. 이로 인해, 코드 작성 및 검증을 위해 드는 시간과 비용의 낭비가 존재하였다.
또한, 도 2 와 같이 두개의 서로 다른 처리부를 개별로 구현하는 경우 전원 중단 후 복구(recovery)를 위해 두 처리부 간의 일정한 프로토콜(protocol)이 필요하지만, 새로운 저장 장치 구현 시마다 두 처리부간의 설계 사항이 매번 바뀌므로 임시 방편적인(Ad hoc) 프로토콜을 만들어 사용하였으며, 이로 인해 복구 동작의 정확성을 검증하는데 걸리는 시간과 비용이 증가하였다.
이에 반해, 본 발명의 일 실시예에 따른 플래시 변환 레이어는 호스트 데이터 혹은 메타데이터에 상관없이 동일한 처리 매커니즘을 공유하는 개별 데이터 저장 요소(storage component - Log)를 제공하며 이러한 개별 구성 요소들의 임의 조합을 통해 플래시 스토리지 시스템을 구성하는 새로운 방법을 제공한다. 본 발명이 제시하는 플래시 변환 레이어 구조는 메타데이터의 계층적 확장의 전제 하에 각 개별 데이터 저장 요소(Log)들을 계층적 구조(hierarchy)하에 배치하고 이들이 표준화된 인터페이스를 통해 상호 작용(interaction)하는 것을 핵심적 특징으로 가지기 때문에 HIL (Hierarchically Interacting a set of Log, 로그 세트들의 계층적 상호 작용) 방식(또는 구조)으로 명명할 수 있다. 본 발명의 일 실시예에 따른 HIL 에서 로그란, 동일한 데이터 처리 매커니즘 (mapping, cleaning, recovery)을 제공하는 개별 데이터 저장 요소로써, 플래시 변환 레이어의 원자적 구성 요소(atomic component)로 기능한다. 즉, 본 발명의 일 실시예에 따른 플래시 변환 레이어는 로그들의 계층적 조합(Hierarchical composition)으로 구성될 수 있으며, 이는 HIL 이라 불려질 수 있다.
본 발명의 일 실시예에 따른 HIL 방식에서는 플래시 스토리지는 별개의 데이터 그룹들의 세트 및 그들의 계층적 상호 작용으로 정의된다. 각 데이터 그룹은 로그를 사용하여 관리되고, 또한 각 데이터 그룹은 로그의 내부에 포함된다. 또한, 로그는 재구성 가능하며(reconfigurable) 매핑, 클리닝 및 복구 프로세스와 같은 플래시 변환 레이어의 일반적인 기능들을 제공한다.
도 3 은 본 발명의 일 실시예에 따라 HIL 방식을 사용한 플래시 변환 레이어를 나타낸 도면이다.
도 3 의 실시예는 호스트 데이터, 제 1 계층 메타데이터 및 제 2 계층 메타데이터의 계층적 매핑 데이터 구조를 갖는 플래시 변환 레이어를 예시한 실시예이다. 도 3 을 참조하면, 본 발명의 일 실시예에 따른 플래시 변환 레이어의 각 데이터 그룹(호스트 데이터, 제 1 계층 메타데이터, 제 2 계층 메타데이터)은 로그들에 의해 관리되는 것을 알 수 있다. 데이터 그룹들의 계층적 구조에 따라, 대응하는 로그들 역시 계층적 구조를 가지며, 로그들은 본 발명의 일 실시예에 따른 표준화 인터페이스 방식에 따라 동작한다.
보다 상세히, 도 3 에서 도시된 바와 같이, 본 발명의 일 실시예에 따르면 플래시 변환 레이어는 호스트 데이터와 메타데이터를 위해 서로 다른 별도의 데이터 처리 메커니즘을 구현하지 않는다. 대신, 호스트 데이터 그룹 및 메타데이터 그룹들이 모두 공통적인 데이터 처리 매커니즘을 제공하는 '로그'에 의해 관리될 수 있다. 즉, 호스트 데이터는 제 0 로그(Log(0))에 의해 관리되고, 제 1 계층 메타데이터는 제 1 로그(Log(1))에 의해 관리되며, 제 2 계층 메타데이터는 제 2 로그(Log(2))에 의해 관리될 수 있다. 또한, 호스트 데이터, 제 1 계층 메타데이터 및 제 2 계층 메타데이터와 마찬가지로 제 0 로그, 제 1 로그 및 제 2 로그 역시 계층적인 구조를 가진다. 이하의 명세서에서, 설명의 편의를 위해 제 k 로그는 Log(k)로 (예를 들어, 제 0 로그는 Log(0)으로) 기재될 수 있다.
Log(0), Log(1) 및 Log(2) 는 공통적인 데이터 처리 메커니즘을 제공함으로써, 도 2 의 예와 같이 개별적으로 호스트 데이터 및 메타데이터에 대한 데이터 처리를 구현할 필요가 없다는 이점이 존재한다. 즉, 호스트 데이터와 메타데이터의 처리 방식에는 유사한 점들이 존재하므로, 개별적인 요소로 설계/구현하는 것보다 본 발명의 일 실시예에 따른 HIL을 적용하는 경우 설계상의 비용을 절감할 수 있다.
본 발명의 일 실시 예에 따른 HIL은 개별 로그들 각각의 기능적 명세와 로그들 간의 공통된 표준화 인터페이스 명세를 정의한다. 본 발명의 일 실시 예에 따른 로그의 명세들은 각 계층의 데이터 저장을 위해 필요한 기능들을 모두 포함하고, 복구의 정확성이 증명 가능하며, 로그 간의 데이터 교환을 위한 인터페이스의 부하가 적도록 정의될 수 있다. 그러나, 본 발명의 일 실시예에 따른 로그들은 특정 기능적 명세와 인터페이스 명세에 국한되는 것은 아니며, 로그가 플래시 변환 레이어의 계층적 데이터 그룹을 관리하는 공통된 데이터 처리 매커니즘과 표준화된 인터페이스를 제공함으로써 재 사용 가능한 스토리지 시스템의 원자적 구성요소가 된다는 것 자체가 발명이 될 수 있다.
도 4 는 본 발명의 일 실시예에 따른 HIL이 구현된 플래시 변환 레이어를 포함하는 플래시 스토리지 시스템의 일 예를 나타낸 것이다.
보다 상세히, 도 4 는 데이터 그룹 세트들 및 그들의 계층적 상호작용으로서 플래시 스토리지 시스템을 정의하는 HIL 의 전체 구조를 나타낸다. 상술한 바와 같이, 본 발명의 일 실시예에 따르면 데이터 그룹들은 스토리지 시스템의 기초 구성 요소 (storage primitive)인 로그들에 의해 관리될 수 있다. 또한, 로그들은 매핑(mapping), 클리닝(cleaning) 및 복구(recovery) 프로세스와 같은 일반적인 플래시 변환 레이어 기능을 제공할 수도 있다.
도 4 를 참조하면, 플래시 스토리지 시스템 내의 플래시 변환 레이어(FTL)에는 제 0 로그(Log(0)), 제 1 로그(Log(1)) ... 제 n 로그 (Log(n)) 가 포함된 것을 알 수 있다. 도 3 에서 설명한 바와 같이, Log(0)은 호스트 데이터 그룹을 처리할 수 있고, Log(1)은 제 1 계층 메타데이터 그룹을 처리할 수 있으며, Log(2) 는 제 2 계층 메타데이터 그룹을 처리할 수 있고, Log(n)은 제 n 계층 메타데이터 그룹을 처리할 수 있다. 특히, Log(0)은 읽고 쓰기가 가능한 비휘발성 주소 공간(예를 들어, LBA)를 통해 호스트 시스템과 인터랙션하여 호스트 데이터를 처리할 수 있다.
또한, N0, N1, ... , Nn 은 각 로그 별로 분할 할당된 비휘발성 NAND 메모리 블록의 자원을 도식적으로 나타낸 것이다. 또한, R0, R1, ..., Rn 은 캐싱(caching)을 위해 각 로그 별로 분할 할당된 휘발성 메모리 (RAM) 의 자원을 도식적으로 나타낸 것이다. 도 4 를 참조하면 각 로그들에 할당된 메모리 영역들이 분리되어 있지만, 이는 단지 개념적 구성도로서 실제 메모리 영역들은 분리되지 않을 수 있으며, 메모리 영역들은 가상화 기술을 통해 복수의 로그들 간에 물리적으로 공유될 수 있다.
Log(0)내의 데이터의 비휘발성 기록은 그 데이터의 매핑 정보 (Log(1)의 데이터) 의 업데이트를 야기할 수 있으며, 이는 (1) 휘발성 메모리 내에 캐시되거나 (2) Log(0)와 Log(1)간의 인터페이스를 통해 전달되어, Log(1)의 NAND 블록에 기록될 수 있다. (1) 또는 (2) 에 대한 결정은 Log(0)의 휘발성 메모리의 크기와 각 로그의 캐시 관리 정책에 의존적이다. (2) 의 경우에 있어서, Log(1)데이터의 업데이트된 매핑 데이터가 로그 간 인터페이스를 통해 다시 Log(2)로 전송될 수 있고 이러한 연쇄 작용은 휘발성 메모리의 할당된 양 내에서 모든 데이터가 저장될 수 있는 최상위 계층(top-tier)인 제 n 로그(Log(n)), 즉 루트 로그(root log)까지반복될 수 있다. 최상위 계층 로그의 데이터는 복구 목적으로 주기적으로 NAND 블록들에 기록되고, 부분이 아니라 전체가 NAND 메모리에 기록되기 때문에 상위-계층 매핑은 불필요하다. 최상위 계층 데이터(Log(n)의 데이터이자 Lon(n-1)의 매핑 데이터)의 최신 버전은 Log(n)에 할당된 NAND block들을 스캐닝함으로써 손쉽게 복구될 수 있다.
이하에서는, 도 4에 도시된 로그의 인터페이스 명세와 기능적 명세의 실시 예를 보다 상세히 살펴 보기로 한다.
도 5 는 본 발명의 일 실시예에 따른 로그의 인터페이스 프로토콜을 설명하기 위한 도면이다.
도 5 를 참조하면, 도 4 에 도시된 각각의 로그는 본 발명의 일 실시예에 따른 HIL 을 구현하기 위하여 세 개의 서로 다른 인터페이스 프로토콜을 통해 다른 스토리지 장치의 구성 요소와 통신한다. 본 발명의 일 실시예에서 로그의 서로 다른 세 개의 인터페이스는 도 5 에 도시된 바와 같이, (1) 휘발성 메모리(RAM)와의 인터페이스 (2) 비휘발성 메모리(NAND 플래시 메모리)와의 인터페이스 (3) 로그 상호간의 인터페이스일 수 있다. 즉, 도 4 의 HIL 구조에서 각 로그들은, 상기 (1) 내지 (3) 의 인터페이스 프로토콜을 공통적으로 가질 수 있다. 이때, (1) 휘발성 메모리와의 인터페이스는 일반적인 메모리 인터페이스가 사용될 수 있으며, 휘발성 메모리에 데이터를 읽기 및 쓰기(모두 바이트 단위) 가능하도록 한다. 또한, (2) 비휘발성 메모리와의 인터페이스는 비휘발성 메모리에 데이터를 지우기(블록 단위), 프로그램(페이지 단위), 읽기(페이지 단위) 가능하도록 한다.
각각의 로그들은 인터페이스 프로토콜들의 균일한 세트를 통해 다른 스토리지 장치의 구성 요소와 통신함으로써, 각 로그들은 스토리지 시스템의 어떤 계층과도 호환될 수 있고, 이들 로그의 임의의 계층적 조합으로 플래시 변환 레이어를 구성할 수 있다. 또한, 이미 존재하는 유형의 메모리 프로토콜을 사용하는 경우, 로그의 휘발성 메모리 및 NAND 플래시 메모리와의 인터페이스는 비교적 간단히 설계될 수 있다.
보다 상세히, 본 발명의 일 실시예에 따르면, 로그는 바이트 어드레싱 범위에 대한 읽기 및 쓰기 동작을 제공하는 범용 메모리 인터페이스를 통해 휘발성 메모리(전형적으로 SRAM 또는 DRAM)에 액세스할 수 있다. 해당 인터페이스를 통해, 로그는 휘발성 메모리에 데이터 버퍼링 및 메타데이터 캐싱을 수행할 수 있으며, 접근 가능한 휘발성 메모리의 물리 주소 범위는 초기 스토리지 시스템 구성 시의 휘발성 메모리의 분할 할당 정보에 의거한다.
또한, 본 발명의 일 실시예에 따른 로그에 의해, 비휘발성 메모리(NAND 플래시 메모리)는 프로그램, 읽기 및 지우기 동작을 제공하는 인터페이스를 통해 액세스 될 수 있다. 해당 인터페이스를 통해, 로그는 NAND 블록에 로그의 데이터를 저장할 수 있으며, 접근 가능한 비휘발성 (NAND 플래시) 메모리의 물리 주소 범위는 초기 스토리지 시스템 구성 시의 비휘발성 메모리 (NAND 블록)의 분할 할당 정보에 의거한다.
참고적으로, 비휘발성 메모리(NAND 플래시 메모리)는 페이지 단위(복수개의 바이트들)로 읽기 및 프로그램 동작을 지원하고, 복수개의 페이지 단위는 지우기 동작의 단위인 블록이 되며, 플래시 메모리 칩은 복수개의 블록들을 포함한다. 일부 표준화 노력이 있었지만, NAND 플래시 메모리의 인터페이스 및 기타 자세한 기능은 다양한 메모리 공급 업체마다 다르다. 플래시 메모리 스토리지 시스템을 구축하기 위해서는, 단일 플래시 메모리 칩의 제한된 성능과 신뢰성을 개선하기 위해 하드웨어의 다양한 아키텍처 지원이 요구된다. 예를 들어, RAID와 유사한 인터리빙(interleaving) 구조를 채용한 별도의 제어 하드웨어와 이에 특화된 비휘발성 (NAND 플래시) 메모리 인터페이스가 플래시 스토리지 시스템의 대역폭 및 신뢰성을 개선하기 위해 사용될 수 있다.
본 발명의 일 실시예에 따른 HIL은 각각의 플래시 메모리 유형에 사용되는 임의의 인터페이스 프로토콜을 허용하고 임의의 종류의 추가적 (플래시 메모리 제어) 하드웨어 아키텍처의 인터페이스까지도 수용할 수 있다. 즉 HIL은 로그의 비휘발성 메모리 인터페이스를 어떤 특정 타입의 플래시 메모리와 제어 하드웨어 구조로 한정하지 않으며, 단지 하나의 스토리지 시스템 안에 사용된 로그는 모두 같은 타입의 (=표준으로 지정된) 비휘발성 메모리 인터페이스를 사용해야 함을 명시할 뿐이다. 다시 말해, HIL 구조에서는 서로 다른 비휘발성 메모리 인터페이스를 가지는 로그들이 하나의 단일 플래시 스토리지 시스템 안에서 함께 호환되어 사용될 수 없다.
또한, 도 5 에서 도시된 바와 같이, 본 발명의 일 실시예에 따른 로그는 로그 상호간의 인터페이스를 제공할 수 있다. 즉, Log(k)는 Log(k-1)및 Log(k+1)과의 인터페이스를 제공할 수 있다. 이때, Log(0)의 경우에는 Log(1)과의 인터페이스 및 호스트 시스템과의 인터페이스를 제공하며, 이는 호스트 LBA 인터페이스와 로그 상호간 인터페이스간의 차이점을 없애기 위한 특별한 (또한 오버헤드가 적은) 인터페이스 글루(Glue Interface, 도 6 에서 후술됨)를 도입하여 구현될 수 있다. 또한, 마지막 계층의 메타데이터 그룹에 대응하는 Log(n)(최상위 로그)의 경우에는 Log(n+1) 의 인터페이스가 존재하지만 단지 사용되지 않으므로, 결과적으로 Log(n-1) 과의 인터페이스만을 제공한다.
추가적으로, 본 발명의 일 실시예에서는, 로그 상호간의 인터페이스 명세(specification)로 (1) Read와 Write가 가능하고 (2) 바이트(Byte) 단위 접근이 가능한 (3) 선형 주소 공간 (Linear address space)을 제시할 수 있지만, 반드시 이에 한정되는 것은 아니다.
발명의 또 다른 실시예에서는, 로그 상호간의 인터페이스 명세로, ATA 인터페이스 스타일의 읽기/쓰기/플러쉬(flush)를 제시할 수 있다. 이 경우, 각 읽기/쓰기/플러쉬 명령은 하기와 같이 구성되고 활용될 수 있다.
▶Read (Log ID, Start address, byte counts, data buffer address) ; Log ID 주소 공간 상의 start address 에서 부터 byte count 만큼의 개수의 바이트를 읽어서 호출 부의 data buffer address로 전송 요청
▶Write (Log ID, Start address, byte counts, data buffer address) ; 호출 부의 data buffer address로 부터 데이터를 전송하여 Log ID 주소 공간 상의 start address에서 부터 byte counts 개수 만큼의 바이트를 기록 요청. 다만, 완료 응답이 쓰기 요청한 데이터의 비휘발적이고 영속적인 기록을 보장하지는 않음
▶Flush (Log ID) ; Log ID의 주소 공간 상에 쓰기 기록된 byte들을 비휘발성 매체에 영구 기록 요청. 완료 응답을 받은 경우, 앞서 수행된 쓰기 요청들의 비휘발적이고 영속적인 기록을 보장함
도 6 은 본 발명의 일 실시예에 따른 인터페이스 글루를 예시한 도면이다.
본 발명의 일 실시예에 따른 HIL 에서는, 호스트 데이터 그룹에 대응하는 Log(0)가 직접 호스트 시스템과 인터랙션하지 않고, 인터페이스 글루(Interface glue)가 호스트 시스템과 Log(0)간의 인터페이스를 제공할 수 있다. 인터페이스 글루는, 현재 상업적으로 가장 널리 이용되는 섹터(sector, 512Bytes)단위의 LBA 주소 공간 모델과 본 발명의 일 실시예에 따른 바이트 단위 주소 공간의 불일치(mismatch) 문제를 해결하기 위해 적용될 수 있다.
도 6 을 참조하면, 본 발명의 일 실시예에 따른 인터페이스 글루는 섹터 단위의 LBA 주소 공간을 이용하여 호스트 시스템, 예를 들어 SATA, PCle 등과의 인터페이스를 제공할 수 있다. 또한, 본 발명의 일 실시예에 따른 인터페이스 글루는 바이트 단위의 주소 공간을 이용하여 Log(0)(호스트 데이터를 처리하는 로그)와의 인터페이스를 제공할 수 있다.
본 발명의 일 실시예로 기재된 로그 간의 인터페이스는 Log(0)와 호스트간 요구되는 인터페이스와 동작의 수행 단위 (바이트 혹은 호스트 섹터)에만 차이가 있을 뿐, 지원하는 동작의 종류(read/write/flush)는 같다. 따라서 인터페이스 글루를 통한 두 인터페이스간 변환 동작은 큰 추가적 오버헤드 없이 이루어질 수 있다.
참고로, 이하 설명하는 로그의 내부 기능적 명세는 NAND 플래시 메모리를 이용해 데이터를 비휘발적으로 기록/관리할 때 일반적으로 요구되는 기능 요소를 모듈 별로 재구성한 것으로, 실제 로그의 설계 및 구현에 대한 하나의 가이드 라인을 제시한다. 단 실제 로그 내부의 기능적 모듈 구성은 스토리지 시스템의 성능 및 신뢰성을 최적화 하기 위해 얼마든지 새롭게 변경될 수 있다. 즉, 로그 내부 동작의 설계는 로그 간 지정된 인터페이스 프로토콜의 동작을 준수하는 범위 안에서 자유로운 선택이 가능하다. 대표적인 예로 로그의 매핑 단위(4KB 또는 16KB), 블록 정리 작업(block cleaning)을 위한 알고리즘 (greedy 또는 cost-benefit) 등의 설계 자유도가 주어지고, 이러한 설계 옵션들에 대한 선택은 대상 스토리지 시스템의 성능, 신뢰성 및 비용 등의 측면에서의 요구 사항에 맞추어 이루어질 수 있다. 이 때, 각 로그 내부 기능 모듈의 다양한 옵션들을 재 설정 가능(reconfigurable) 하도록 설계한다면, 로그의 재사용성이 크게 향상될 수 있을 것이다.
도 7 은 본 발명의 일 실시예에 따른 각 로그의 내부 기능 명세를 블록도로 나타낸 도면이다.
도 7 의 실시예에서는, 플래시 스토리지 시스템의 플래시 변환 레이어 내의 Log(k)(60)를 기준으로 로그의 내부 기능 명세를 블록도로 나타내었다. Log(k)내부의 각 구성들은 Log(k)에 분할 할당된 휘발성 메모리(61)와 NAND 블록(62)과 인터랙션할 수 있다.
보다 상세히, Log(k)(60)는 기능 명세(functional specification)로서, Log(k-1)요청 처리부(601), 데이터 복사 처리부(602), 데이터 배치 처리부(603), Log(k)의 메타데이터 처리부(604), 전원중단 복구 처리부(605)를 포함한다. 또한, Log(k)(60)에 분할 할당된 휘발성 메모리(61) 영역은 데이터 버퍼(611)와 메타 캐시 버퍼(612)를 포함하고, Log(k)(60)에 분할 할당된 NAND 블록(62)은 데이터 저장 블록(621) 및 복구 데이터 블록(622)을 포함한다.
먼저, Log(k-1) 요청 처리부(601)는 Log(k-1)로부터의 읽기/쓰기/플러쉬 요청을 처리 및 수행한다. 이때, Log(k-1) 요청 처리부(601)는 도 5 에서 살펴본 로그 간 인터페이스 명세를 활용하여 Log(k-1)로부터의 읽기/쓰기/플러쉬를 처리 및 수행할 수 있다.
(1) 쓰기 요청 처리 - Log(k-1) 로부터 쓰기 요청된 데이터를 휘발성 메모리의 데이터 버퍼(611) 공간을 활용하여 임시 저장하거나 (write buffering), 버퍼의 빈 공간 상황에 따라 직접 비휘발성 메모리의 데이터 저장 블록(621)으로 기록되도록 처리할 수 있다. 데이터 버퍼의 관리 정책은 FIFO, LRU등 다양한 알고리즘을 선택적으로 사용할 수 있다. 데이터 버퍼에 공간이 부족하여 데이터 저장 블록(621)에 데이터를 기록하는 경우, 업데이트된 매핑 데이터를 메타데이터 처리부(604)로 전달한다.
(2) 읽기 요청 처리 - 데이터 버퍼(611) 공간에 Log(k-1)이 요청한 주소의 데이터가 이미 존재하는 경우 데이터 버퍼로부터 곧바로 전송 할 수 있으나, 그렇지 않은 경우 먼저 메타데이터 처리부(604)로부터 읽을 데이터의 매핑 데이터를 얻어온 다음 주소 정보로부터 파악된 데이터 저장 블록(621)의 위치에서 데이터를 읽어서 전송할 수 있다. 데이터 저장 블록(621)로부터 읽어온 데이터를 다음 번의 읽기 요청을 대비하여 데이터 버퍼(611)의 별도 캐시 공간에 담아둘 수도 있으며 해당 캐시 공간의 관리 정책은 다양한 선택이 가능하다.
(3) 플러쉬 요청 처리 - 데이터 버퍼(611)로부터 데이터 저장 블록(621)으로 아직 기록되지 않은 채로 남아있는 쓰기 데이터를 모두 비휘발적으로 기록한다. 기록 완료가 확인된 후에 하위 로그로 완료 응답을 송신한다.
또한, 데이터 복사 처리부(602)는 (1) Log(k-1)의 요청 처리부(601)에 의한 데이터 쓰기 작업이 지속적으로 수행되어 NAND 블록이 모자라게 된 경우, 혹은 (2) NAND 블록 간 마모도(P/E회수)의 편차가 기준치 이상으로 커진 경우 (3) 플래시 메모리의 신뢰성 문제(read disturbance/retention 등)로 인해, 복사 작업이 필요한 경우 등 다양한 경우에 대하 데이터 복사작업을 수행한다. (1)의 블록 재수거 (block cleaning 또는 garbage collection) 작업 수행 시, 복사 대상 블록을 선정하는 정책은 greedy 알고리즘, cost-benefit 알고리즘 등의 다양한 선택이 가능하다. (2)의 마모도 평준화(wear-leveling) 작업의 경우 시작 기준과 대상 블록의 선정 기준에 대한 선택이 요구되며, 이는 스토리지 시스템에서 사용되는 NAND 플래시 메모리의 신뢰성 특성에 의거하여 조정되어야 한다. (3)의 읽기 복사(read reclaim) 작업의 경우는 제조사 및 제품 별 플래시 메모리의 신뢰성 특성에 따라 작업의 시작 기준과 빈도 수 조절 등의 정책적 선택이 가능하다.
또한, 데이터 배치 처리부(603)는 블록 할당과 데이터의 병렬적 기록을 위한 교차 처리(interleaving)를 수행하며, 비휘발성 메모리의 데이터 저장 블록(621)과 인터랙션한다. 병렬 처리를 위한 인터리빙을 담당하는 하드웨어와 밀접하게 관련된 부분으로 병렬 처리에 대한 제어를 단일 플래시 메모리 물리 블록 단위로 할 것인지, 여러 개의 물리 블록들을 묶은 하나의 큰 가상 블록 단위로 수행할 것인지 등에 대한 선택을 할 수 있다.”
또한, Log(k)의 메타데이터 처리부(604)는 휘발성 메모리의 메타 캐시 버퍼(612)와 인터랙션하며, 메타 캐시에 대한 참조(reference)와 내쫓음(eviction) 동작을 통해 메타 캐시를 관리한다. 메타데이터 처리부(604)는 정보 참조의 지역성(locality)에 근거하여, 자주 참조되는 메타(매핑) 데이터를 캐시에 넣어두고 주위 처리부들로 부터의 참조 요청 시 캐시로부터 메타데이터를 인출하여 전달하거나, 캐시에 존재하지 않을 경우, Log(k+1)와 인터페이스를 통해 메타데이터를 직접 얻어오는 역할을 수행한다. 주위의 처리부들로 부터 메타데이터 업데이트 요청 시, 역시 캐시에 임시로 담아둠으로써, 다음 번에 재차 업데이트 요청이 있을 경우 휘발성 메모리 캐시 안에서 업데이트가 처리되기를 기대한다. 캐시에 남은 공간이 부족할 시에는 캐시의 일부 메타데이터를 Log(k+1)로 기록(write) 요청함으로써 캐시에 빈 공간을 확보한다. 메타 캐시의 관리 정책으로 다양한 방식(Direct-mapped, Set-Associative, Circular Queuing등)을 선택 할 수 있는데 경우에 따라 좀 더 세부적으로 캐시의 퇴거 (eviction) 정책 (FIFO, LRU)도 선택할 수 있다. 메타 캐시 버퍼(612)의 크기와 상기 관리 정책들은 Log(k+1)과 인터페이스를 통해 오가는 데이터 전송의 오버헤드를 줄이는데 중요한 역할을 할 수 있다. 이때, Log(k)가 루트 로그인 경우, 즉 Log(k)가 마지막 계층의 메타데이터 그룹에 대응하는 로그인 경우, Log(k+1)로의 트래픽이 존재하지 않기 때문에 별도의 캐시 관리 정책은 불필요하다.
또한, 전원 중단 복구 처리부(605)는 전원 중단 후 데이터 복구를 위해 (1) 런타임(run-time) 동작 중의 복구 로그 기록 작업 및 (2) 부팅 초기화(booting)시 메타데이터 복구 작업을 수행하며 비휘발성 메모리의 복구 데이터 블록(622)과 인터랙션한다. 이때, Log(k)가 루트(최상위) 로그인 경우, 전체 메타데이터를 스냅샷(snapshot)하여 기록하고, 부팅시, 최신 snapshot을 찾아 로드(load)할 수 있다.
Log(k)의 전원 중단 후 복구는 Log(k)의 메타(매핑) 데이터 (= Log(k+1)의 데이터) 복구를 의미하는 것으로, Log(k)메타데이터 의 정상 복구는 매핑 데이터가 전원 중단 이전의 상태로 온전히 복원됨을 의미하므로 Log(k)의 데이터까지 정상적으로 복구됨을 함의한다. HIL구조하에서 Log(k)의 메타데이터의 비휘발성 버전은 Log(k+1)에 의해 관리되지만, 전원 중단 이전의 최신의 휘발성 메타데이터는 Log(k)의 메타데이터 처리부(604)에 의해 관리될 수 있다. 이 때 갑작스러운 전원 중단으로 인해, Log(k)의 휘발성 메모리 안에 존재하는 메타데이터가 손실되는 것을 방지하기 위해 Log(k)는 (1) 런타임 동작 중에 로그 상호간의 약속된 프로토콜에 따라 복구 로그를 기록해야 하며, 인접한 로그가 상호 약속된 프로토콜을 준수한다는 가정하에서 (2) 부팅 시 메타데이터 복구 작업을 수행한다. 전원 중단 후 복구의 정확성을 위한 프로토콜은 로그 상호간의 인터페이스 명세에 의존적이며, 로그 내부 메타 캐시 버퍼(612)의 관리 정책에 따라 가변적으로 설계될 수 있다.
도 8 은 본 발명의 일 실시예에 따른 전원 중단 복구를 위한 프로토콜을 시계열적으로 나타낸 도면이다.
먼저, 도 8 의 (a) 는 전원 중단 복구를 위한 프로토콜의 제 1 원칙을 설명하기 위한 도면이다. 본 발명의 일 실시예에 따른 전원 중단 복구를 위한 프로토콜의 제 1 원칙은, Log(k-1)로부터의 비휘발적 기록 요청에 대해서 복구가 가능한 상태에서만 하위 로그로 완료 응답하는 것이다. 이를 위해, 도 8 의 (a) 에 도시된 바와 같은 시계열적 프로세스를 따를 수 있다.
먼저, Log(k-1)의 요청 처리부(601) 는 Log(k-1)로부터 비휘발적 기록 요청(즉 flush 명령)이 있었는지를 판단한다(S71). Log(k-1)로부터 flush 명령이 있는 경우, Log(k-1)요청 처리부(601) 가 이에 대해 완료 응답(S75)을 하기 위해서는, (1) 데이터 버퍼(611)에 존재하던 데이터를 데이터 저장 블록(621)에 기록(S72)해야 함과 동시에, (2) 이로 인해 업데이트된 매핑 데이터도 함께 비휘발적으로 (그리고 영구적으로) 저장되어야만 한다. 매핑 정보가 휘발적인 상태에서 flush 명령에 대한 완료 응답을 했다가 갑자기 전원 중단이 발생할 경우 데이터 위치 정보가 유실되었기 때문에 복구가 불가능해지기 때문이다.
따라서, 본 발명의 일 실시예에 따르면 상기 (2) 업데이트된 메핑 데이터를 함께 비휘발적으로 저장하기 위해, 메타 데이터 처리부(604)는 업데이트 메타 데이터를 메타 캐시 버퍼(612)에 적재하고(S73), 전원 중단 복구 처리부(605)는 Log(k)의 업데이트된 매핑 정보들을 모아서 복구 데이터 블록(622)에 기록한 후(S74), Log(k-1)요청 처리부(601)가 Log(k-1)로 완료 응답을 한다(S75).
Log(k)의 복구 데이터 블록(622)으로 업데이트된 매핑 정보들을 모아서 기록한 후 완료 응답을 하는 이유는, 바로 Log(k+1)로 메타데이터의 비휘발적 기록 (write & flush)을 요청하고 그 응답을 기다리는 경우 성능 저하 문제로 인해 상용 시스템에서 적용하기 어렵기 때문이다.
부연하면, 정규 휘발성 버전의 Log(k) 메타데이터는 Log(k+1)에 의해 기록/관리 되지만, Log(k)가 내부에 복구 로그를 활용하여 성능 최적화 및 유사시 (Log(k+1)로 전달 이전에 전원 중단)의 복구 목적을 달성할 수 있다. 결국 프로토콜의 제 1 원칙의 특징은 'Log(k-1)로부터의 비휘발적 기록 요청에 대해서 복구가 가능한 상태에서만 하위 로그로 완료 응답한다' (단 이 목적을 과도한 성능 저하를 방지하는 선에서 달성한다) 이다.
계속하여, 도 8 의 (b) 는 전원 중단 복구를 위한 프로토콜의 제 2 원칙을 설명하기 위한 도면이다. 앞서 살펴본 바와 같이, 복구 데이터 블록(622)는 Log(k)메타 데이터의 임시 거처이므로, 언젠가는 정리(제거)되어야 하며, 그 시점이 언제가 될 것인가를 정하는 것이 본 발명의 일 실시예에 따른 전원 중단 복구를 위한 프로토콜의 제 2 원칙이다.
보다 상세히, 도 8 의 (a) 에서 설명한 바와 같이 업데이트된 매핑 데이터들은 곧바로 Log(k+1)로 비휘발적 기록 요청될 필요 없이 Log(k)내의 메타 캐시 버퍼(612)내에서 관리되는데, 이때 메타 캐시 버퍼(612)에 공간이 부족해질 경우(S76), Log(k)의 메타 데이터 처리부(604)는 휘발성 업데이트 메타데이터들을 모아서 상위 Log(k+1)로 write/flush 요청을 한다(S77). 그 후, 전원 중단 복구 처리부(605)는 write/flush 요청에 대한 비휘발적인 기록을 확인 받은 업데이트 매핑 데이터를 복구 데이터 블록(622)로부터 제거한다(S78). 즉, 전원 중단 복구를 위한 프로토콜의 제 2 원칙의 핵심은 '복구 데이터 블록 상의 업데이트 메타 데이터들은 Log(k+1)로부터의 비휘발적이고 영속적인 기록을 확인 받은 후 제거한다' 이다.
상술한 본 발명의 일 실시예에 따른 전원 중단 복구를 위한 프로토콜의 제 1 원칙 및 제 2 원칙을 따르는 경우, 개별 로그들은 서로 독립적으로 기타 작업들을 수행할 수 있고, 로그 내부에서는 위의 원칙을 준수하기 위한 각 처리부 간의 공조가 필요하지만 그 외의 부분에서는 자유롭고 독립적으로 동작할 수 있다.
도 9 는 본 발명의 일 실시예에 따른 HIL의 사용 모델을 예시한 도면이다.
상술한 바와 같이, 본 발명의 일 실시예에 따른 HIL은 동일한 데이터 처리 매커니즘을 제공하는 개별 로그들의 계층적 조합으로 플래시 변환 레이어를 구성하는 것이다. 따라서, 개발 및 검증이 완료된 로그 컴포넌트(Log component)들을 라이브러리 형태로 관리하고, 타켓 플래시 스토리지 시스템의 플래시 변환 레이어를 구성할 때마다 적절한 로그 컴포넌트를 라이브러리로부터 꺼내 쓸 수도 있다.
도 9 에서 볼 수 있는 바와 같이, 특성별 로그들(type A, type B 등)에 대해 설계/개발/검증을 완료한 경우, 각 특성별 로그들을 라이브러리에 등록할 수 있다. 예를 들어, 특정 플래시 메모리와의 인터페이스 명세를 갖는 type B 로그에 대해 개발 및 검증이 완료된 경우 type B 로그에 대해서는 그 플래시 메모리를 사용하는 스토리지 시스템에서 해당 로그를 라이브러리에서 꺼내 바로 적용할 수 있도록 라이브러리에 등록할 수 있다.
또한, 플래시 스토리지 디바이스를 구축할 때, 라이브러리로부터 특성별 로그 컴포넌트들을 꺼내어 조합(composition) 구성할 수 있다. 이때, 타겟 스토리지 시스템의 성능 및 자원 사용량 요구 조건을 만족시킬 수 있도록 로그 컴포넌트들을 조합할 수도 있다. 예를 들어, 상기 특정 플래시 메모리를 사용하는 스토리지 시스템에서는, 조합 구성 및 검증 단계에서 type B 로그를 라이브러리로부터 꺼내 쓸 수 있고, 필요에 따라 type D 로그가 신규로 설계 및 개발되어 라이브러리에 등록될 수 있다.
도 10 은 본 발명의 일 실시예에 따른 HIL의 추가적인 사용 모델을 예시한 도면이다.
본 발명의 일 실시예에 따르면, HIL의 복제(Replication) 모델을 제공할 수 있다. 복제 모델이란, 다양한 설정이 가능한 (configurable) 로그 컴포넌트를 설계 및 구현하여, 동일 로그 컴포넌트의 복제본의 설정값을 바꾸어 계층적으로 그 조합을 구성하는 것이다. 본 발명의 일 실시예에 따른 복제 모델을 사용하면, 소프트웨어적 관점에서는 객체지향 프로그래밍 (OOP) 하드웨어적 관점에서는 동시 멀티 스레딩 (SMT) 기법을 활용하여 하나의 처리 자원 (Program Codes or Logic Gates)를 공유하여 사용하는 것도 가능하다.
보다 상세히, 도 10 에 도시된 실시예에서는, 로그 컴포넌트는 매핑 단위, 캐시 관리 정책, 공간 재수거 및 데이터 병렬 처리 정책이 설정 가능(configurable)하도록 설계 및 개발될 수 있다. 본 발명의 일 실시예에 따르면 설정 가능 로그 컴포넌트들을 다양하게 조합 구성 및 검증하여 플래시 변환 레이어 구조를 설계할 수 있다.
예를 들어, 도 10 의 실시예에 따른 플래시 변환 레이어 구조에서는, 매핑 단위 및 캐시 관리 정책을 다양하게 설정한 로그 컴포넌트들을 조합 구성하여 플래시 변환 레이어 구조를 설계한 예를 도시하고 있다. 보다 상세히, Log(0)는 4KB 크기의 매핑 단위를 가지며 FIFO(Fist in First out) 방식의 캐시 관리 정책을 가질 수 있고, Log(1)는 16KB 크기의 매핑 단위를 가지며 직접 매핑(Direct-mapped) 방식의 캐시 관리 정책을 가지도록 플래시 변환 레이어 구조가 설계될 수 있다.
상술한 명세서에서 살펴본 본 발명의 일 실시예에 따른 HIL 을 적용한 플래시 변환 레이어 구조는, i) 재사용성(Reusability), ii) 검증의 용이성 (Testability), iii) 확장성(Scalability)의 이점을 가진다.
보다 상세히, 재사용성과 관련하여, 본 발명의 일 실시예에 따르면 이미 구현 및 검증된 로그들을 재활용(reuse)하여 새로운 조합을 생성함으로써 타겟 스토리지 디바이스를 구현하는 것이 가능하므로, 스토리지 솔루션 구축을 위해 드는 시간과 비용의 획기적인 단축이 가능하다.
다음으로, 검증의 용이성과 관련하여, 본 발명의 일 실시예에 따르면 로그들 상호간 표준화된 (동일) 인터페이스를 사용하고, 복구를 위한 로그 내부 동작의 프로토콜을 명세함으로써 복구의 정확성(Correctness of recovery)에 대한 인터페이스 자체의 정합성을 정형적으로 증명(formal proof)할 수 있다. 즉, 시제품(Prototype) 테스트 중 복구 기능 이상 시 로그 간 책임 소재를 명확하게 구분하는 것이 가능하고, 이미 검증된 로그를 사용할 경우, 정상 복구 가능여부에 대한 검증의 노력이 크게 필요하지 않다는 장점이 존재한다.
마지막으로, 확장성과 관련하여, 본 발명의 일 실시예에 따르면 제한된 메모리 자원(resource) 하에서도 로그의 계층적 확장을 통해 큰 용량의 저장 장치 시스템을 조합 식으로 쉽게 구성하는 것이 가능하므로, 제품 군의 다양성을 획기적으로 증진 시킬 수 있다는 장점이 존재한다.
이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다. 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (33)

  1. 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer) 구조로서,
    제 0 계층 호스트 데이터 그룹 및 제 1 내지 제 n 계층 메타데이터 그룹을 포함하는 계층적 데이터 그룹들; 및
    상기 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 제 0 내지 제 n 로그들; 을 포함하고,
    제 k 로그 (0≤k≤n) 는, (a) 상기 제 k 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 제 k 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 구조.
  2. 제 1 항에 있어서,
    상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는,
    읽기(read) 및 쓰기(write)가 가능하고, 바이트(byte) 단위 접근이 가능한 논리 블록 주소 공간(Linear address space)인, 플래시 변환 레이어 구조.
  3. 제 1 항에 있어서,
    상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기 명령, 쓰기 명령 및 플러쉬(flush) 명령을 포함하고,
    상기 읽기 명령은 제 k 로그의 로그 ID 주소 공간 상의 시작 어드레스(start address)에서부터 바이트 카운트(byte count)만큼의 개수의 바이트를 읽어서 호출부의 데이터 버퍼 어드레스(data buffer address)로 전송 요청하고,
    상기 쓰기 명령은 상기 데이터 버퍼 어드레스로부터 데이터를 전송하여 상기 로그 ID 주소 공간 상의 상기 시작 어드레스에서부터 바이트 카운트 개수 만큼의 바이트를 기록할 것을 요청하며,
    상기 플러쉬 명령은 상기 로그 ID 주소 공간 상에 쓰기 기록된 바이트들을 비휘발성 메모리에 영구 기록하도록 요청하는, 플래시 변환 레이어 구조.
  4. 제 1 항에 있어서,
    상기 제 0 로그는 인터페이스 글루(Interface Glue)를 통해 호스트 시스템과의 인터페이스를 제공하고,
    상기 인터페이스 글루는, 섹터(sector) 단위의 주소 공간과 바이트(Byte) 단위의 주소 공간의 불일치를 교정하는, 플래시 변환 레이어 구조.
  5. 제 1 항에 있어서,
    상기 제 k 로그는,
    상기 제 k 로그의 매타 캐시(cache)의 참조와 되찾음(eviction) 처리를 수행하는 메타데이터 처리부; 및
    전원 중단 후 복구를 위한 로그 기록 처리 및 초기화 시 데이터 복구 처리를 수행하는 전원 중단 복구 처리부를 포함하는, 플래시 변환 레이어 구조.
  6. 제 5 항에 있어서,
    상기 전원 중단 복구 처리부는, 제 k-1 로그로부터 (단, k=0 인 경우 호스트 시스템으로부터) 비휘발적 데이터 기록 요청을 수신하여, 요청 데이터를 비휘발적으로 기록하고, 메타데이터 갱신 내용을 복구 로그에 추가하며, 상기 복구 로그를 비휘발적으로 갱신하고, 제 k-1 로그에 완료 응답을 제공하며,
    상기 제 k 로그에 대응하는 메타 캐시 공간이 부족한 경우, 제 k+1 로그로 읽기 혹은 플러시 요청을 보내고, 완료 응답을 받은 후 메타데이터 갱신 내용을 복구 로그로부터 제거하고, 복구 로그를 비휘발적으로 갱신하는, 플래시 변환 레이어 구조.
  7. 제 6 항에 있어서,
    상기 k=n 인 경우, 상기 전원 중단 복구 처리부는 상기 제 k+1 로그로 읽기 혹은 플러쉬 요청을 보내지 않고, 제 n 로그에 대응되는 데이터 전체를 체크포인트 영역에 스냅샷(snapshot)하는, 플래시 변환 레이어 구조.
  8. 제 5 항에 있어서,
    상기 제 k 로그는,
    상기 제 k-1 로그로부터의 (단, k=0 인 경우 호스트 시스템으로부터의) 읽기, 쓰기 또는 플러쉬 요청을 받아 처리를 수행하는, 제 k-1 로그의 요청 처리부;
    공간 재수거(Block reclaim)와 마모도 평준화(Wear-leveling)의 데이터 복사 처리를 수행하는 데이터 복사 처리부; 및
    블록 할당과 데이터의 병렬적 기록을 위한 교차 처리(Interleaving)를 수행하는 데이터 배치 처리부를 더 포함하는, 플래시 변환 레이어 구조.
  9. 제 1 항에 있어서,
    상기 n 은 매핑 단위가 커지면 감소하고, 매핑 단위가 작아지면 증가하는, 플래시 변환 레이어 구조.
  10. 제 1 항에 있어서,
    상기 로그들은 공통적으로, 상기 분할 할당된 비휘발성 메모리 블록 자원에 데이터를 기록하는 동작 및 메타데이터를 업데이트하는 동작을 수행할 수 있는 동일한 데이터 처리 기능을 보유하는, 플래시 변환 레이어 구조.
  11. 제 1 항에 있어서,
    상기 제 0 로그는 제 0 계층 호스트 데이터 그룹에 대응되고, 상기 제 1 내지 제 n 로그는 제 1 내지 제 n 계층 메타데이터 그룹에 각각 대응되는, 플래시 변환 레이어 구조.
  12. 제 1 항에 있어서,
    상기 k=0 일 경우, 상기 (c) 는 호스트 시스템 및 제 1 로그와의 인터페이스이고, 상기 k=n 일 경우, 상기 (c) 는 제 n-1 로그와의 인터페이스인, 플래시 변환 레이어 구조.
  13. 제 1 항에 있어서,
    상기 로그들 중 검증이 완료된 로그는 다른 플래시 변환 레이어에 적용될 수 있는, 플래시 변환 레이어 구조.
  14. 제 1 항에 있어서,
    상기 플래시 변환 레이어는, 복구의 정확성에 대한 상기 로그들의 인터페이스 자체의 정합성을 정형적으로 증명(formal proof) 가능한, 플래시 변환 레이어 구조.
  15. 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer)의 설계 시스템으로서,
    상기 플래시 변환 레이어의 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 로그들을 생성하는 로그 개발부;
    상기 로그들을 검증하는 검증부;
    상기 검증부에 의해 검증이 완료된 로그에 대해 로그 컴포넌트(component)를 생성하고, 생성된 상기 로그 컴포넌트들을 라이브러리에 등록하는 등록부;
    상기 라이브러리에 등록된 로그 컴포넌트들 중 타겟(target) 스토리지 시스템의 성능 및 자원 사용량 요구 조건을 만족시키는 로그 컴포넌트들을 조합하여 플래시 변환 레이어를 설계하는 설계부;
    를 포함하며,
    상기 로그들 각각은, (a) 상기 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 이전 계층 로그 및 다음 계층 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 설계 시스템.
  16. 제 15 항에 있어서,
    상기 로그 컴포넌트는 설정가능(configurable) 특성들을 포함하고, 상기 로그 개발부는 하나의 로그 컴포넌트를 복제하되 상기 설정가능 특성을 변경하여 하나 이상의 다른 로그를 개발하는, 플래시 변환 레이어 설계 시스템.
  17. 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer) 구조를 설계하는 방법으로서,
    제 0 계층 호스트 데이터 그룹 및 제 1 내지 제 n 계층 메타데이터 그룹을 포함하는 계층적 데이터 그룹들을 생성하는 단계; 및
    상기 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 제 0 내지 제 n 로그를 설계하는 단계; 를 포함하고,
    제 k 로그 (0≤k≤n) 는, (a) 상기 제 k 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 제 k 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 구조를 설계하는 방법.
  18. 제 17 항에 있어서,
    상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는,
    읽기(read) 및 쓰기(write)가 가능하고, 바이트(byte) 단위 접근이 가능한 논리 블록 주소 공간(Linear address space)인, 플래시 변환 레이어 구조를 설계하는 방법.
  19. 제 17 항에 있어서,
    상기 (c) 제 k-1 로그 및 k+1 로그 중 하나 이상의 로그와의 인터페이스는, 읽기 명령, 쓰기 명령 및 플러쉬(flush) 명령을 포함하고,
    상기 읽기 명령은 제 k 로그의 로그 ID 주소 공간 상의 시작 어드레스(start address)에서부터 바이트 카운트(byte count)만큼의 개수의 바이트를 읽어서 호출부의 데이터 버퍼 어드레스(data buffer address)로 전송 요청하고,
    상기 쓰기 명령은 상기 데이터 버퍼 어드레스로부터 데이터를 전송하여 상기 로그 ID 주소 공간 상의 상기 시작 어드레스에서부터 바이트 카운트 개수 만큼의 바이트를 기록할 것을 요청하며,
    상기 플러쉬 명령은 상기 로그 ID 주소 공간 상에 쓰기 기록된 바이트들을 비휘발성 메모리에 영구 기록하도록 요청하는, 플래시 변환 레이어 구조를 설계하는 방법.
  20. 제 17 항에 있어서,
    상기 제 0 로그는 인터페이스 글루(Interface Glue)를 통해 호스트 시스템과의 인터페이스를 제공하고,
    상기 인터페이스 글루는, 섹터(sector) 단위의 주소 공간과 바이트(Byte) 단위의 주소 공간의 불일치를 교정하는, 플래시 변환 레이어 구조를 설계하는 방법.
  21. 제 17 항에 있어서,
    제 0 내지 제 n 로그를 설계하는 단계는,
    상기 제 k 로그의 매타 캐시(cache)의 참조와 되찾음(eviction) 처리를 수행하는 메타데이터 처리 단계; 및
    전원 중단 후 복구를 위한 로그 기록 처리 및 초기화 시 데이터 복구 처리를 수행하는 전원 중단 복구 처리 단계를 포함하는, 플래시 변환 레이어 구조를 설계하는 방법.
  22. 제 21 항에 있어서,
    상기 전원 중단 복구 처리 단계는, 제 k-1 로그로부터 (단, k=0 인 경우 호스트 시스템으로부터) 비휘발적 데이터 기록 요청을 수신하여, 요청 데이터를 비휘발적으로 기록하고, 메타데이터 갱신 내용을 복구 로그에 추가하며, 상기 복구 로그를 비휘발적으로 갱신하고, 제 k-1 로그에 완료 응답을 제공하는 단계; 및,
    상기 제 k 로그에 대응하는 메타 캐시 공간이 부족한 경우, 제 k+1 로그로 읽기 혹은 플러시 요청을 보내고, 완료 응답을 받은 후 메타데이터 갱신 내용을 복구 로그로부터 제거하고, 복구 로그를 비휘발적으로 갱신하는 단계를 포함하는, 플래시 변환 레이어 구조를 설계하는 방법.
  23. 제 22 항에 있어서,
    상기 k=n 인 경우, 상기 전원 중단 복구 처리부는 상기 제 k+1 로그로 읽기 혹은 플러쉬 요청을 보내지 않고, 제 n 로그에 대응되는 데이터 전체를 체크포인트 영역에 스냅샷(snapshot)하는, 플래시 변환 레이어 구조를 설계하는 방법.
  24. 제 21 항에 있어서,
    상기 제 k 로그는,
    상기 제 k-1 로그로부터의 (단, k=0 인 경우 호스트 시스템으로부터의) 읽기, 쓰기 또는 플러쉬 요청을 받아 처리를 수행하는, 제 k-1 로그의 요청 처리 단계;
    공간 재수거(Block reclaim)와 마모도 평준화(Wear-leveling)의 데이터 복사 처리를 수행하는 데이터 복사 처리 단계; 및
    블록 할당과 데이터의 병렬적 기록을 위한 교차 처리(Interleaving)를 수행하는 데이터 배치 처리 단계를 더 포함하는, 플래시 변환 레이어 구조를 설계하는 방법.
  25. 제 17 항에 있어서,
    상기 n 은 매핑 단위가 커지면 감소하고, 매핑 단위가 작아지면 증가하는, 플래시 변환 레이어 구조를 설계하는 방법.
  26. 제 17 항에 있어서,
    상기 로그들은 공통적으로, 상기 분할 할당된 비휘발성 메모리 블록 자원에 데이터를 기록하는 동작 및 메타데이터를 업데이트하는 동작을 수행할 수 있는 동일한 데이터 처리 기능을 보유하는, 플래시 변환 레이어 구조를 설계하는 방법.
  27. 제 17 항에 있어서,
    상기 제 0 로그는 제 0 계층 호스트 데이터 그룹에 대응되고, 상기 제 1 내지 제 n 로그는 제 1 내지 제 n 계층 메타데이터 그룹에 각각 대응되는, 플래시 변환 레이어 구조.
  28. 제 17 항에 있어서,
    상기 k=0 일 경우, 상기 (c) 는 호스트 시스템 및 제 1 로그와의 인터페이스이고, 상기 k=n 일 경우, 상기 (c) 는 제 n-1 로그와의 인터페이스인, 플래시 변환 레이어 구조를 설계하는 방법.
  29. 제 17 항에 있어서,
    상기 로그들 중 검증이 완료된 로그는 다른 플래시 변환 레이어에 적용될 수 있는, 플래시 변환 레이어 구조를 설계하는 방법.
  30. 제 17 항에 있어서,
    상기 플래시 변환 레이어는, 복구의 정확성에 대한 상기 로그들의 인터페이스 자체의 정합성을 정형적으로 증명(formal proof) 가능한, 플래시 변환 레이어 구조를 설계하는 방법.
  31. 데이터를 스토리지하기 위한 매핑 정보를 포함하는 플래시 변환 레이어(Flash Translation Layer)의 설계 방법으로서,
    상기 플래시 변환 레이어의 계층적 데이터 그룹들 각각에 대응되고, 대응되는 데이터 그룹의 데이터를 처리하며, 계층적 구조를 가지는 로그들을 생성하는 로그 개발 단계;
    상기 로그들을 검증하는 검증 단계;
    상기 검증 단계에 의해 검증이 완료된 로그에 대해 로그 컴포넌트(component)를 생성하고, 생성된 상기 로그 컴포넌트들을 라이브러리에 등록하는 등록 단계;
    상기 라이브러리에 등록된 로그 컴포넌트들 중 타겟(target) 스토리지 시스템의 성능 및 자원 사용량 요구 조건을 만족시키는 로그 컴포넌트들을 조합하여 플래시 변환 레이어를 설계하는 설계 단계;
    를 포함하며,
    상기 로그들 각각은, (a) 상기 로그에 대응하여 분할 할당된 휘발성 메모리 자원과의 인터페이스, (b) 상기 로그에 대응하여 분할 할당된 비휘발성 메모리 블록 자원과의 인터페이스, 및 (c) 이전 계층 로그 및 다음 계층 로그 중 하나 이상의 로그와의 인터페이스를 제공하는, 플래시 변환 레이어 설계 방법.
  32. 제 31 항에 있어서,
    상기 로그 컴포넌트는 설정가능(configurable) 특성들을 포함하고, 상기 로그 개발 단계는 하나의 로그 컴포넌트를 복제하되 상기 설정가능 특성을 변경하여 하나 이상의 다른 로그를 개발하는, 플래시 변환 레이어 설계 방법.
  33. 제 17 항 내지 제 32 항 중 어느 하나의 방법을 실행시키기 위한 프로그램이 저장된 컴퓨터 판독 가능 매체.
KR1020160081508A 2016-06-29 2016-06-29 계층적 플래시 변환 레이어 구조 및 그 설계 방법 KR20180002259A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160081508A KR20180002259A (ko) 2016-06-29 2016-06-29 계층적 플래시 변환 레이어 구조 및 그 설계 방법
US15/334,663 US10140031B2 (en) 2016-06-29 2016-10-26 Hierarchical flash translation layer structure and method for designing the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160081508A KR20180002259A (ko) 2016-06-29 2016-06-29 계층적 플래시 변환 레이어 구조 및 그 설계 방법

Publications (1)

Publication Number Publication Date
KR20180002259A true KR20180002259A (ko) 2018-01-08

Family

ID=60807530

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160081508A KR20180002259A (ko) 2016-06-29 2016-06-29 계층적 플래시 변환 레이어 구조 및 그 설계 방법

Country Status (2)

Country Link
US (1) US10140031B2 (ko)
KR (1) KR20180002259A (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180058328A (ko) * 2016-11-24 2018-06-01 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US20180239532A1 (en) * 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10372351B2 (en) * 2017-02-23 2019-08-06 Western Digital Technologies, Inc. Techniques for non-blocking control information and data synchronization by a data storage device
US11330042B2 (en) * 2018-05-17 2022-05-10 International Business Machines Corporation Optimizing dynamic resource allocations for storage-dependent workloads in disaggregated data centers
US11281545B2 (en) 2018-09-07 2022-03-22 University Of Central Florida Research Foundation, Inc. Methods of crash recovery for data stored in non-volatile main memory
CN111326195A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111143313B (zh) * 2019-12-25 2023-07-25 成都三零嘉微电子有限公司 一种提高混合映射算法的日志块读写性能的方法
US11921695B2 (en) * 2021-10-05 2024-03-05 Dell Products L.P. Techniques for recording metadata changes
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US12001680B2 (en) * 2022-08-24 2024-06-04 Micron Technology, Inc. Utilizing last successful read voltage level in memory access operations

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101426806B1 (ko) 2012-03-26 2014-08-05 서울대학교산학협력단 오브젝트 아이디에 기반하여 저장 매체에서의 영속화를 제어하는 방법, 그 컴퓨터 시스템 및 스토리지 시스템
KR101526110B1 (ko) 2013-02-07 2015-06-10 서울대학교산학협력단 증명 가능하고 정확한 오류 복구를 위한 플래시 변환 계층 설계 프레임워크

Also Published As

Publication number Publication date
US20180004428A1 (en) 2018-01-04
US10140031B2 (en) 2018-11-27

Similar Documents

Publication Publication Date Title
KR20180002259A (ko) 계층적 플래시 변환 레이어 구조 및 그 설계 방법
US11003576B2 (en) Namespace change propagation in non-volatile memory devices
CN109144888B (zh) 存储器系统
KR101522848B1 (ko) 비휘발성 스토리지에 대한 셀프-저널링 및 계층적 일치성
US20170277630A1 (en) Garbage collection and defragmentation for solid state drives (ssd) and shingled magnetic recording (smr) drives
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
US8130554B1 (en) Securely erasing flash-based memory
US8280858B2 (en) Storage pool scrubbing with concurrent snapshots
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
US10521148B2 (en) Data storage device backup
EP1702338B1 (en) Robust data duplication and improved update method in a multibit non-volatile memory
US8862819B2 (en) Log structure array
KR20170038853A (ko) 호스트-관리 비휘발성 메모리
US11782828B2 (en) Efficiently purging non-active blocks in NVM regions using virtblock arrays
US10705954B2 (en) Efficiently purging non-active blocks in NVM regions while preserving large pages
US11989423B2 (en) Techniques for zoned namespace (ZNS) storage using multiple zones
US10152278B2 (en) Logical to physical sector size adapter
US9459801B2 (en) Tiered storage system provided with trial area, storage controller, area allocation method and storage medium
JP2007519996A (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
US11609854B1 (en) Utilizing checkpoints for resiliency of metadata in storage systems
US10691591B2 (en) Efficiently purging non-active blocks in NVM regions using pointer elimination
TW202121425A (zh) 資料儲存裝置以及非揮發式記憶體控制方法
US20240126435A1 (en) Storage system and method of data management of the same
CN109558236B (zh) 访问条带的方法及其存储系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application