KR101880190B1 - Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법 - Google Patents

Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법 Download PDF

Info

Publication number
KR101880190B1
KR101880190B1 KR1020170034770A KR20170034770A KR101880190B1 KR 101880190 B1 KR101880190 B1 KR 101880190B1 KR 1020170034770 A KR1020170034770 A KR 1020170034770A KR 20170034770 A KR20170034770 A KR 20170034770A KR 101880190 B1 KR101880190 B1 KR 101880190B1
Authority
KR
South Korea
Prior art keywords
block
page
hot
cold
garbage collection
Prior art date
Application number
KR1020170034770A
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 KR1020170034770A priority Critical patent/KR101880190B1/ko
Application granted granted Critical
Publication of KR101880190B1 publication Critical patent/KR101880190B1/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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • 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]

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)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 블록 속성 지정 방법은, SSD 컨트롤러(solid state drive controller)에 의해 수행되는 블록 속성 지정 방법으로서, 쓰기(write) 요청된 입력 파일(input file)의 각 페이지에 대한 덮어쓰기(overwrite) 횟수에 기초하여, 상기 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지(hot page)로 지정하는 단계; 상기 핫 페이지를 프리 블록(free block) 또는 핫 블록(hot block)에 저장하는 단계; 및 상기 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정하는 단계를 포함한다.

Description

SSD 컨트롤러 및 SSD 컨트롤러에 의해 수행되는 블록 속성 지정 방법{SOLID STATE DRIVE AND BLOCK ATTRIBUTE INDICATING METHOD PERFORMED BY THE SAME}
본 발명은 SSD 컨트롤러 및 SSD 컨트롤러에 의해 수행되는 블록 속성 지정 방법에 관한 것이다.
SSD(solid state drive)는 비휘발성 메모리 저장매체로 읽기(read) 속도가 빠르고 충격에 강인하여, 노트북, MP3, 디지털 카메라, 휴대 전화 등 다양한 디지털 기기의 저장 매체로 사용되고 있다.
SSD의 플래시 메모리에서 쓰기(write)는 페이지 단위로 수행되고, 지우기(erase)는 블록 단위로 수행된다. 플래시 메모리는 덮어쓰기(overwrite)를 수행할 수 없으며, 데이터가 기록된 블록에 새로운 데이터를 덮어쓰기 위해서는 쓰기 전에 지우기를 수행해야 한다. 플래시 메모리가 지우기를 수행할 수 있는 횟수는 SLC(single level cell)의 경우 약 10만 번으로 제한되며, MLC(multi level cell)의 경우 약 1만 번으로 제한된다.
따라서 이러한 지우기 횟수의 제한을 극복하기 위해서, 플래시 메모리 내 특정 블록이 집중적으로 반복 사용되어 다른 블록들에 비해 빠르게 마모되는 것을 방지하기 위한 마모도 평준화 기술(wear leveling)이 필요하다.
플래시 변환 계층(flash translation layer, FTL)은 호스트의 섹터 기반 파일 시스템을 플래시 메모리의 페이지 기반으로 변환하는 역할을 수행하며, 상술한 마모도 평준화 기술을 효과적으로 구현할 수 있어야 한다. 특히, 가비지 컬렉션(garbage collection)은 특정 블록에 무효 페이지(invalid page)가 충분히 쌓인 이후에 남은 유효 페이지(valid page)를 다른 블록에 모으는 카피백(copyback)을 수행하고, 특정 블록을 한번에 지우기함으로써 플래시 메모리의 마모도를 완화하는 기술이다.
하지만, 종래 기술은 소거 대상 블록 및 카피백될 페이지에 대한 특정한 기준이 없어서 효과적인 가비지 컬렉션이 구현되었다고 보기는 힘들다.
한국공개특허공보 제10-2017-0002848호 (2017.01.09)
해결하고자 하는 기술적 과제는 쓰기 요청된 입력 파일에 대응하여 다이나믹하게 핫 블록 및 콜드 블록을 지정함으로써 카피백 횟수를 획기적으로 저감할 수 있는 SSD 컨트롤러 및 SSD 컨트롤러에 의해 수행되는 블록 속성 지정 방법을 제공하는 데 있다.
본 발명의 한 실시예에 따른 블록 속성 지정 방법은, SSD 컨트롤러(solid state drive controller)에 의해 수행되는 블록 속성 지정 방법으로서, 쓰기(write) 요청된 입력 파일(input file)의 각 페이지에 대한 덮어쓰기(overwrite) 횟수에 기초하여, 상기 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지(hot page)로 지정하는 단계; 상기 핫 페이지를 프리 블록(free block) 또는 핫 블록(hot block)에 저장하는 단계; 및 상기 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정하는 단계를 포함한다.
상기 블록 속성 지정 방법은, 가비지 컬렉션(garbge collection)이 수행되는 경우, 상기 핫 블록 중 가장 많은 무효 페이지(invalid page)를 포함하는 핫 블록에 대해 가비지 컬렉션을 수행하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 가비지 컬렉션이 수행되는 핫 블록의 유효 페이지(valid page)를 프리 블록 또는 핫 블록으로 카피백(copyback)하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 핫 페이지가 카피백된 프리 블록을 핫 블록으로 지정하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 가비지 컬렉션이 수행된 핫 블록의 속성을 제거하여 프리 블록으로 지정하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 덮어쓰기 횟수가 상기 기준 횟수 미만인 페이지를 콜드 페이지(cold page)로 지정하는 단계; 상기 콜드 페이지를 프리 블록 또는 콜드 블록(cold block)에 저장하는 단계; 및 상기 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 가비지 컬렉션이 수행되는 경우, 상기 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 가비지 컬렉션이 수행되는 콜드 블록의 유효 페이지를 프리 블록 또는 콜드 블록으로 카피백하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 콜드 페이지가 카피백된 프리 블록을 콜드 블록으로 지정하는 단계를 더 포함할 수 있다.
상기 블록 속성 지정 방법은, 상기 가비지 컬렉션이 수행된 콜드 블록의 속성을 제거하여 프리 블록으로 지정하는 단계를 더 포함할 수 있다.
본 발명의 한 실시예에 따른 SSD 컨트롤러는, 쓰기 요청된 입력 파일의 각 페이지에 대한 덮어쓰기 횟수에 기초하여, 상기 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지로 지정하는 페이지 속성 지정부; 상기 핫 페이지를 프리 블록 또는 핫 블록에 저장하는 페이지 저장 수행부; 및 상기 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정하는 블록 속성 지정부를 포함할 수 있다.
상기 SSD 컨트롤러는, 가비지 컬렉션이 수행되는 경우, 상기 핫 블록 중 가장 많은 무효 페이지를 포함하는 핫 블록에 대해 가비지 컬렉션을 수행하는 가비지 컬렉션 수행부를 더 포함할 수 있다.
상기 가비지 컬렉션 수행부는 상기 가비지 컬렉션이 수행되는 핫 블록의 유효 페이지를 프리 블록 또는 핫 블록으로 카피백할 수 있다.
상기 블록 속성 지정부는 상기 핫 페이지가 카피백된 프리 블록을 핫 블록으로 지정할 수 있다.
상기 블록 속성 지정부는 상기 가비지 컬렉션이 수행된 핫 블록의 속성을 제거하여 프리 블록으로 지정할 수 있다.
상기 페이지 속성 지정부는 상기 덮어쓰기 횟수가 상기 기준 횟수 미만인 페이지를 콜드 페이지로 지정하고, 상기 페이지 저장 수행부는 상기 콜드 페이지를 프리 블록 또는 콜드 블록에 저장하고, 상기 블록 속성 지정부는 상기 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정할 수 있다.
상기 가비지 컬렉션 수행부는, 가비지 컬렉션이 수행되는 경우, 상기 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행할 수 있다.
상기 가비지 컬렉션 수행부는 상기 가비지 컬렉션이 수행되는 콜드 블록의 유효 페이지를 프리 블록 또는 콜드 블록으로 카피백할 수 있다.
상기 블록 속성 지정부는 상기 콜드 페이지가 카피백된 프리 블록을 콜드 블록으로 지정할 수 있다.
상기 블록 속성 지정부는 상기 가비지 컬렉션이 수행된 콜드 블록의 속성을 제거하여 프리 블록으로 지정할 수 있다.
본 발명에 따른 SSD 컨트롤러 및 SSD 컨트롤러에 의해 수행되는 블록 속성 지정 방법은 쓰기 요청된 입력 파일에 대응하여 다이나믹하게 핫 블록 및 콜드 블록을 지정함으로써 카피백 횟수를 획기적으로 저감할 수 있다.
도 1은 본 발명의 한 실시예에 따른 SSD 컨트롤러를 설명하기 위한 도면이다.
도 2는 본 발명의 한 실시예에 따른 블록 속성 지정 방법을 설명하기 위한 도면이다.
도 3은 본 발명의 한 실시예에 따른 핫 블록에 대한 가비지 컬렉션을 설명하기 위한 도면이다.
도 4는 본 발명의 한 실시예에 따른 콜드 블록에 대한 가비지 컬렉션을 설명하기 위한 도면이다.
도 5는 지피안 분포(Zipfian distribution)에서 페이지 당 덮어쓰기 횟수를 설명하기 위한 도면이다.
도 6은 TPC-C에서 페이지 당 덮어쓰기 횟수를 설명하기 위한 도면이다.
도 7은 종래 기술에 따른 카피백 횟수와 본 실시예에 따른 카피백 횟수를 비교하기 위한 도면이다.
도 8은 TPC-C에서의 기술 비교를 위한 도면이다.
이하, 첨부한 도면을 참고로 하여 본 발명의 여러 실시 예들에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예들에 한정되지 않는다.
본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 동일 또는 유사한 구성요소에 대해서는 동일한 참조 부호를 붙이도록 한다. 따라서 앞서 설명한 참조 부호는 다른 도면에서도 사용할 수 있다.
또한, 도면에서 나타난 각 구성의 크기 및 두께는 설명의 편의를 위해 임의로 나타내었으므로, 본 발명이 반드시 도시된 바에 한정되지 않는다. 도면에서 여러 층 및 영역을 명확하게 표현하기 위하여 크기 및 두께를 과장되게 나타낼 수 있다.
도 1은 본 발명의 한 실시예에 따른 SSD 컨트롤러를 설명하기 위한 도면이다.
도 1을 참조하면 본 발명의 한 실시예에 따른 SSD 컨트롤러(10)는 호스트(9)로부터 입력 파일 쓰기 요청을 받으면, 플래시 메모리(20)를 제어하여 목적하는 블록 및 페이지에 입력 파일을 기록하게 된다.
본 발명의 한 실시예에 따른 SSD 컨트롤러(10)는 페이지 속성 지정부(110), 페이저 저장 수행부(120), 블록 속성 지정부(130), 및 가비지 컬렉션 수행부(140)를 선택적으로 포함한다. 각각의 기능부(110, 120, 130, 140)는 소프트웨어적으로 또는 하드웨어적으로 모듈화되어 구현될 수 있다. 다만, 당업자라면 본 발명의 한 실시예에 따른 SSD 컨트롤러(10)의 기능을 수행하기 위해 복수의 기능부를 통합하거나 분리하여 그 명칭을 달리하여 구현할 수 있을 것이다.
플래시 메모리(20)는 복수의 블록(block 1, block 2, block 3, ...)을 포함하고, 각각의 블록은 복수의 페이지(page 11, page 12, page 13, page 21, page 22, page 23, page 31, page 32, page 33, ...)를 포함한다. 전술한 바와 같이, 쓰기는 페이지 단위로 수행되며, 지우기는 블록 단위로 수행되게 된다.
페이지 속성 지정부(110)는 쓰기 요청(write request)된 입력 파일의 각 페이지에 대한 덮어쓰기(overwrite) 횟수에 기초하여, 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지(hot page)로 지정한다.
예를 들어, 입력 파일을 미리 스캔하여 페이지 당 덮어쓰기 횟수를 카운트할 수 있다. 그 후 덮어쓰기 횟수에 대하여 내림차순으로 정렬하고, 전체 페이지 중에서 상위 20 퍼센트의 페이지를 핫 페이지로 지정할 수 있다. 이때 상위 20 퍼센트와 하위 80 퍼센트의 경계에 해당하는 덮어쓰기 횟수가 기준 횟수일 수 있다. 전술한 상위 20 퍼센트의 수치는 예시적인 수치이며, 당업자는 반복적인 실험에 의해 적용하고자 하는 제품에 대한 최적의 수치를 찾아낼 수 있을 것이다.
한 실시예에 따르면, 페이지 속성 지정부(110)는 SSD 컨트롤러(10)가 아닌, 호스트(9) 측에 구현될 수도 있다. 또는 SSD 컨트롤러(10)와 호스트(9) 양측에 분담되어 구현될 수도 있다. 이와 같이 기능을 수행하는 주체는 당업자의 설계에 따라 적절히 변형가능하다.
한 실시예에 따르면, 페이지 속성 지정부(110)는 덮어쓰기 횟수가 기준 횟수 미만인 페이지를 콜드 페이지(cold page)로 지정할 수 있다. 예를 들어 하위 80 퍼센트의 페이지를 콜드 페이지로 지정할 수 있다. 또한, 페이지 속성 지정부(110)는 덮어쓰기 횟수가 기준 횟수 미만인 페이지를 콜드 페이지로 구체적으로 지정(라벨링)하지 않고, 핫 페이지가 아닌 페이지를 콜드 페이지로 추론하여 이후의 기능을 수행할 수도 있다.
페이지 저장 수행부(120)는 핫 페이지를 프리 블록 또는 핫 블록에 저장한다. 페이지 저장 수행부(120)는 기존에 이미 속성이 지정된 핫 블록에 핫 페이지를 저장할 수 있다. 또한 페이지 저장 수행부(120)는 속성이 지정되지 않은 프리 블록에 핫 페이지를 저장할 수도 있다. 본 실시예에서 프리 블록은 어떠한 페이지도 저장되지 않고, 어떠한 속성(핫 또는 콜드)도 지정되지 않은 블록을 의미한다. 한 실시예에 따르면, 페이지 저장 수행부(120)는 콜드 페이지를 프리 블록 또는 콜드 블록에 저장할 수 있다.
블록 속성 지정부(130)는 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정한다. 페이지 저장 수행부(120)에서 프리 블록에 핫 페이지를 저장한 경우, 해당 프리 블록은 더 이상 프리 블록의 자격을 유지할 수 없으므로 속성의 지정이 필요하다. 본 실시예에서는 프리 블록에 처음 기록되는 페이지의 핫 또는 콜드 여부에 따라 프리 블록의 속성이 달라지게 된다. 한 실시예에 따르면, 블록 속성 지정부(130)는 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정할 수 있다.
가비지 컬렉션 수행부(140)는 가비지 컬렉션이 수행되는 경우, 핫 블록 중 가장 많은 무효 페이지를 포함하는 핫 블록에 대해 가비지 컬렉션을 수행할 수 있다. 한 실시예에 따르면 가비지 컬렉션 수행부(140)는 가비지 컬렉션이 수행되는 경우, 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행할 수 있다.
즉, 가비지 컬렉션 수행부(140)는 호스트(9)의 입력 파일 쓰기 요청 중 빈 공간이 없어 가비지 컬렉션이 수행될 필요가 있는 경우, 쓰기 요청 대상 페이지의 속성에 따라 가비지 컬렉션을 달리 수행한다. 예를 들어, 쓰기 요청 대상 페이지가 핫 페이지인 경우 핫 블록 중 가장 많은 무효 페이지를 포함하는 핫 블록에 대해 가비지 컬렉션을 수행한다. 또 다른 예를 들어, 쓰기 요청 대상 페이지가 콜드 페이지인 경우 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행한다. 이에 대한 구체적인 동작은 도 3 및 4를 참조하여 후술한다.
도 1을 참조하여 설명한 바에 따르면, 본 실시예의 SSD 컨트롤러(10)는 호스트(9)로부터 쓰기 요청된 입력 파일에 대응하여 다이나믹하게 핫 데이터와 콜드 데이터의 비율을 지정할 수 있다. 따라서 후속하는 가비지 컬렉션에서 전체적인 카피백이 줄어들게 되어 플래시 메모리(20)의 마모도를 저감할 수 있다. 가비지 컬렉션의 구체적인 동작에 대해서는 도 3 및 4를 참조하여 후술한다.
도 2는 본 발명의 한 실시예에 따른 블록 속성 지정 방법을 설명하기 위한 도면이다. 각 단계를 설명함에 있어서 도 1을 참조한다.
페이지 속성 지정부(110)는 쓰기 요청된 입력 파일의 각 페이지에 대한 덮어쓰기 횟수에 기초하여, 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지로 지정한다(S110). 전술한 바와 같이 실시예에 따라, 페이지 속성 지정부(110)는 덮어쓰기 횟수가 기준 횟수 미만인 페이지를 콜드 페이지로 지정할 수도 있다.
다음으로, 페이지 저장 수행부(120)는 핫 페이지를 프리 블록 또는 핫 블록에 저장한다(S120). 전술한 바와 같이 실시예에 따라, 페이지 저장 수행부(120)는 콜드 페이지를 프리 블록 또는 콜드 블록에 저장할 수 있다.
다음으로, 블록 속성 지정부(130)는 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정한다(S130). 전술한 바와 같이 실시예에 따라, 블록 속성 지정부(130)는 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정할 수 있다.
본 발명의 한 실시예에 따른 블록 속성 지정 방법에 대한 추가적인 실시예에 대해서는 도 1, 3, 및 4와 관련된 설명을 참조한다.
도 3은 본 발명의 한 실시예에 따른 핫 블록에 대한 가비지 컬렉션을 설명하기 위한 도면이다.
도 3을 참조하면, 가비지 컬렉션 수행부(140)는 핫 페이지를 기록하는 도중에 빈 공간이 없음을 확인하고, 핫 블록 중 가장 많은 무효 페이지를 포함하는 핫 블록(BL1)에 대한 가비지 컬렉션을 수행한다.
한 실시예에 따르면, 가비지 컬렉션 수행부(140)는 가비지 컬렉션이 수행되는 핫 블록의 유효 페이지를 프리 블록 또는 핫 블록으로 카피백할 수 있다. 도 3을 참조하면, 핫 블록(BL1)의 유효 페이지가 프리 블록(BL4)으로 카피백됨을 확인할 수 있다.
한 실시예에 따르면, 블록 속성 지정부(130)는 핫 페이지가 카피백된 프리 블록을 핫 블록으로 지정할 수 있다. 도 3을 참조하면, 핫 페이지가 카피백된 프리 블록(BL4)이 핫 블록(BL4)으로 지정되었음을 확인할 수 있다.
한 실시예에 따르면, 블록 속성 지정부(130)는 가비지 컬렉션이 수행된 핫 블록의 속성을 제거하여 프리 블록으로 지정할 수 있다. 도 3을 참조하면, 가비지 컬렉션이 수행된 핫 블록(BL1)의 속성이 제거되어 프리 블록(BL1)으로 지정되었음을 확인할 수 있다.
도 4는 본 발명의 한 실시예에 따른 콜드 블록에 대한 가비지 컬렉션을 설명하기 위한 도면이다.
도 4를 참조하면, 가비지 컬렉션 수행부(140)는 콜드 페이지를 기록하는 도중에 빈 공간이 없음을 확인하고, 콜드 블록(BL2, BL3) 중 가장 많은 무효 페이지를 포함하는 콜드 블록(BL2)에 대한 가비지 컬렉션을 수행한다.
한 실시예에 따르면, 가비지 컬렉션 수행부(140)는 가비지 컬렉션이 수행되는 콜드 블록의 유효 페이지를 프리 블록 또는 콜드 블록으로 카피백할 수 있다. 도 4를 참조하면, 콜드 블록(BL2)의 유효 페이지가 프리 블록(BL4)으로 카피백됨을 확인할 수 있다.
한 실시예에 따르면, 블록 속성 지정부(130)는 콜드 페이지가 카피백된 프리 블록을 콜드 블록으로 지정할 수 있다. 도 4를 참조하면, 콜드 페이지가 카피백된 프리 블록(BL4)이 콜드 블록(BL4)으로 지정되었음을 확인할 수 있다.
한 실시예에 따르면, 블록 속성 지정부(130)는 가비지 컬렉션이 수행된 콜드 블록의 속성을 제거하여 프리 블록으로 지정할 수 있다. 도 4를 참조하면, 가비지 컬렉션이 수행된 콜드 블록(BL2)의 속성이 제거되어 프리 블록(BL2)으로 지정되었음을 확인할 수 있다.
도 3 및 4를 참조했을 때, 핫 블록의 가비지 컬렉션과 콜드 블록의 가비지 컬렉션을 분리하는 이유는 가비지 컬렉션을 수행하고 나면, 카피백을 수행한 블록은 카피백하는 페이지의 속성을 따라가기 때문이다. 즉, 카피백하는 페이지들이 핫하다면, 카피백을 수행하는 블록은 핫 블록으로 지정되고 반대도 똑같은 방식이다. 따라서 가비지 컬렉션을 발생시킨 쓰기 요청이 카피백이 수행된 블록에 진행되기 때문에, 해당 페이지의 속성에 맞게 들어가게 된다.
실험에 의하면, 파레토 법칙 또는 80대 20 법칙처럼, 전체 쓰기 요청의 80 퍼센트가 전체 페이지 중에서 20 퍼센트에서 일어난다. 즉, 전체 페이지 중에서 20 퍼센트의 핫 페이지가 전체 쓰기 요청의 80 퍼센트를 차지하기 때문에 쓰기 요청이 자주 일어난다고 볼 수 있다. 전체 페이지 중에서 80 퍼센트의 콜드 페이지들은 전체 쓰기 요청의 20 퍼센트를 차지하므로 쓰기가 드물게 일어난다고 불 수 있다.
따라서 핫 블록의 가비지 컬렉션은 전체 가비지 컬렉션 중에서 80 퍼센트, 콜드 블록의 가비지 컬렉션은 전체 가비지 컬렉션 중에서 20 퍼센트 정도 발생한다고 추론할 수 있다. 핫 블록의 가비지 컬렉션은 핫 블록 중에서 가장 무효 페이지가 많은 블록을 선택하기 때문에 유효 상태로 남아있는 페이지가 아주 적다. 따라서, 카피백할 페이지의 양이 급격히 줄어든다.
하지만, 콜드 블록의 가비지 컬렉션의 경우에는 콜드 블록 중에서 가장 무효 페이지가 많은 블록을 선택하므로 기존 FTL에 비해 더 많은 카피백을 수행해야만 한다. 그러나 핫 블록의 가비지 컬렉션은 80 퍼센트, 콜드 블록의 가비지 커렉션은 20 퍼센트를 차지하기 때문에, 전체적인 가비지 컬렉션의 입장에서는 핫 가비지 컬렉션에서 카피백이 감소한 양의 효과가 더 극명할 것이다. 따라서, 쓰기 증폭(write amplification) 관점과 공간 증폭(space amplification) 관점에서도 개선을 예상할 수 있다.
도 5는 지피안 분포(Zipfian distribution)에서 페이지 당 덮어쓰기 횟수를 설명하기 위한 도면이고, 도 6은 TPC-C에서 페이지 당 덮어쓰기 횟수를 설명하기 위한 도면이고, 도 7은 종래 기술에 따른 카피백 횟수와 본 실시예에 따른 카피백 횟수를 비교하기 위한 도면이고, 도 8은 TPC-C에서의 기술 비교를 위한 도면이다.
이하에서 실제로 성능이 개선되었는 지를 확인하기 위해, FTL 시뮬레이터를 규현하고 현실적인 입력 파일을 생성하기 위해 지피안 분포와 TPC-C 벤치마크를 사용하였다.
FTL 시뮬레이터는 기존 페이지 매핑 FTL(page mapping FTL)과 핫 힌트 FTL(hot hint FTL)를 함께 구현하였다. 핫 힌트 FTL은 본 실시예에 따른 블록 속성 지정 방법을 구현한 FTL을 의미한다. 핫 힌트란, 페이지 속성 지정부(110)에 의해서 페이지가 핫 페이지로 지정되고, 이를 기초로 후속하는 작업(블록 속성)을 수행하므로, 후속하는 작업에 대한 힌트란 의미이다.
컴파일 당시에 선택하여 기존 FTL과 핫 힌트 FTL를 선택할 수 있도록 구현하였다. 또한 핫 페이지를 전체 페이지 중에서 몇 퍼센트로 지정할 것인가도 지정할 수 있다. 입력 파일을 넣으면 자동적으로 전체 페이지 중에서 쓰기가 가장 많은 순으로 핫하다는 힌트(hint)를 저장한다. 따라서 기존 FTL를 같은 입력 파일로 실험하고, 핫 힌트 FTL도 같은 입력 파일로 실험하여 두 가지를 비교하는 방식으로 실험하였다.
지피안 분포란 지프의 법칙(Zipf's Law)을 따르는 발생 가능성의 분포를 말한다. 전체 메모리의 페이지 수를 바탕으로 전체 개수에서 약 20 퍼센트의 페이지가 전체 데이터 쓰기 동작의 약 60 내지 70 퍼센트를 차지하고 각각의 자주 쓰이는 페이지들이 쓰기 데이터 트레이스에서 나타나는 분포가 연속적이지 않고 전체 쓰기 트레이스에 골고루 퍼지도록 데이터 트레이스를 생성하였다. 트레이스를 생성하여 페이지 당 덮어쓰기 수를 순서대로 그려보면 도 5와 같다.
실제 성능평가에 자주 사용되는 TPC-C 벤치마크를 이용하여 오라클(Oracle)로 실험하여 트레이스를 얻었다. 블록 I/O 트레이스(Block I/O trace)를 이용하여 실제 쓰기, 읽기의 패턴을 얻어낼 수 있었고, FTL 시뮬레이터에 맞는 형식으로 변환하여 데이터 트레이스를 생성하였다. 트레이스를 생성하여 페이지 당 덮어쓰기 수를 순서대로 그래프를 그려보았을 때 도 6과 같다. TPC-C를 5시간 돌렸을 때는 도 6의 왼쪽, 24시간 돌렸을 때는 도 6의 오른쪽 그래프이다.
이렇게 실험을 위한 준비를 한 뒤, FTL 시뮬레이터에 지피안 분포를 넣어보았을 때의 실험 결과는 도 7과 같다.
도 7을 참조하면, 핫 힌트 FTL은 기존 FTL에 비해 카피백 수가 82 퍼센트정도 감소하였다. 수행시간으로 볼 때 수행시간이 2197870 ms, 즉 36분 정도 빠르게 수행된다. 쓰기 증폭(write amplification)으로 볼 때는 1.38에서 1.06으로 감소하였다. 카피백(copyback)을 보게 되면, 모든 페이지들의 카피백이 급격히 감소하는 것을 확인할 수 있다. 실험결과를 보면 실제로 핫 힌트를 통해 핫 페이지와 콜드 페이지들을 다른 블록에 넣었을 때, 전체적인 카피백이 감소한다는 것을 볼 수 있다.
FTL 시뮬레이터에 TPC-C 트레이스를 넣어보았을 때의 실험 결과는 도 8과 같다. 실험 결과를 보면, 핫 힌트 FTL은 기존 FTL에 비해 카피백 수가 61 퍼센트 정도 감소하였다. 수행시간으로 볼 때 수행시간이 4517313 ms, 즉 75분 정도 빠르게 수행된다. 쓰기 증폭으로 볼 때는 1.75에서 1.29로 감소하였다. 이 실험결과 역시 전체적인 카피백이 급격히 감소하는 결과를 확인할 수 있다.
따라서 두 가지 실험으로 실제 FTL에 핫 힌트를 적용하였을 때 성능 개선이 일어난다는 것을 확인할 수 있었다.
지금까지 참조한 도면과 기재된 발명의 상세한 설명은 단지 본 발명의 예시적인 것으로서, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
9: 호스트
10: SSD 컨트롤러
110: 페이지 속성 지정부
120: 페이지 저장 수행부
130: 블록 속성 지정부
140: 가비지 컬렉션 수행부
20: 플래시 메모리

Claims (20)

  1. SSD 컨트롤러(solid state drive controller)에 의해 수행되는 블록 속성 지정 방법으로서,
    쓰기(write) 요청된 입력 파일(input file)의 각 페이지에 대한 덮어쓰기(overwrite) 횟수에 기초하여, 상기 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지(hot page)로 지정하는 단계;
    상기 핫 페이지를 프리 블록(free block) 또는 핫 블록(hot block)에 저장하는 단계;
    상기 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정하는 단계; 및
    상기 핫 페이지를 기록하는 도중에 빈 공간이 없는 경우, 상기 핫 블록 중 가장 많은 무효 페이지(invalid page)를 포함하는 핫 블록에 대해 가비지 컬렉션(garbage collection)을 수행하는 단계를 포함하는
    블록 속성 지정 방법.
  2. 삭제
  3. 제1 항에 있어서,
    상기 가비지 컬렉션이 수행되는 핫 블록의 유효 페이지(valid page)를 프리 블록 또는 핫 블록으로 카피백(copyback)하는 단계를 더 포함하는
    블록 속성 지정 방법.
  4. 제3 항에 있어서,
    상기 핫 페이지가 카피백된 프리 블록을 핫 블록으로 지정하는 단계를 더 포함하는
    블록 속성 지정 방법.
  5. 제4 항에 있어서,
    상기 가비지 컬렉션이 수행된 핫 블록의 속성을 제거하여 프리 블록으로 지정하는 단계를 더 포함하는
    블록 속성 지정 방법.
  6. 제1 항에 있어서,
    상기 덮어쓰기 횟수가 상기 기준 횟수 미만인 페이지를 콜드 페이지(cold page)로 지정하는 단계;
    상기 콜드 페이지를 프리 블록 또는 콜드 블록(cold block)에 저장하는 단계; 및
    상기 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정하는 단계를 더 포함하는
    블록 속성 지정 방법.
  7. 제6 항에 있어서,
    가비지 컬렉션이 수행되는 경우, 상기 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행하는 단계를 더 포함하는
    블록 속성 지정 방법.
  8. 제7 항에 있어서,
    상기 가비지 컬렉션이 수행되는 콜드 블록의 유효 페이지를 프리 블록 또는 콜드 블록으로 카피백하는 단계를 더 포함하는
    블록 속성 지정 방법.
  9. 제8 항에 있어서,
    상기 콜드 페이지가 카피백된 프리 블록을 콜드 블록으로 지정하는 단계를 더 포함하는
    블록 속성 지정 방법.
  10. 제9 항에 있어서,
    상기 가비지 컬렉션이 수행된 콜드 블록의 속성을 제거하여 프리 블록으로 지정하는 단계를 더 포함하는
    블록 속성 지정 방법.
  11. 쓰기 요청된 입력 파일의 각 페이지에 대한 덮어쓰기 횟수에 기초하여, 상기 덮어쓰기 횟수가 기준 횟수 이상인 페이지를 핫 페이지로 지정하는 페이지 속성 지정부;
    상기 핫 페이지를 프리 블록 또는 핫 블록에 저장하는 페이지 저장 수행부;
    상기 핫 페이지가 저장된 프리 블록을 핫 블록으로 지정하는 블록 속성 지정부; 및
    상기 핫 페이지를 기록하는 도중에 빈 공간이 없는 경우, 상기 핫 블록 중 가장 많은 무효 페이지를 포함하는 핫 블록에 대해 가비지 컬렉션(garbage collection)을 수행하는 가비지 컬렉션 수행부를 포함하는
    SSD 컨트롤러.
  12. 삭제
  13. 제11 항에 있어서,
    상기 가비지 컬렉션 수행부는 상기 가비지 컬렉션이 수행되는 핫 블록의 유효 페이지를 프리 블록 또는 핫 블록으로 카피백하는,
    SSD 컨트롤러.
  14. 제13 항에 있어서,
    상기 블록 속성 지정부는 상기 핫 페이지가 카피백된 프리 블록을 핫 블록으로 지정하는,
    SSD 컨트롤러.
  15. 제14 항에 있어서,
    상기 블록 속성 지정부는 상기 가비지 컬렉션이 수행된 핫 블록의 속성을 제거하여 프리 블록으로 지정하는,
    SSD 컨트롤러.
  16. 제11 항에 있어서,
    상기 페이지 속성 지정부는 상기 덮어쓰기 횟수가 상기 기준 횟수 미만인 페이지를 콜드 페이지로 지정하고,
    상기 페이지 저장 수행부는 상기 콜드 페이지를 프리 블록 또는 콜드 블록에 저장하고,
    상기 블록 속성 지정부는 상기 콜드 페이지가 저장된 프리 블록을 콜드 블록으로 지정하는,
    SSD 컨트롤러.
  17. 제16 항에 있어서,
    상기 가비지 컬렉션 수행부는, 가비지 컬렉션이 수행되는 경우, 상기 콜드 블록 중 가장 많은 무효 페이지를 포함하는 콜드 블록에 대해 가비지 컬렉션을 수행하는,
    SSD 컨트롤러.
  18. 제17 항에 있어서,
    상기 가비지 컬렉션 수행부는 상기 가비지 컬렉션이 수행되는 콜드 블록의 유효 페이지를 프리 블록 또는 콜드 블록으로 카피백하는,
    SSD 컨트롤러.
  19. 제18 항에 있어서,
    상기 블록 속성 지정부는 상기 콜드 페이지가 카피백된 프리 블록을 콜드 블록으로 지정하는,
    SSD 컨트롤러.
  20. 제19 항에 있어서,
    상기 블록 속성 지정부는 상기 가비지 컬렉션이 수행된 콜드 블록의 속성을 제거하여 프리 블록으로 지정하는,
    SSD 컨트롤러.
KR1020170034770A 2017-03-20 2017-03-20 Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법 KR101880190B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170034770A KR101880190B1 (ko) 2017-03-20 2017-03-20 Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170034770A KR101880190B1 (ko) 2017-03-20 2017-03-20 Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법

Publications (1)

Publication Number Publication Date
KR101880190B1 true KR101880190B1 (ko) 2018-07-20

Family

ID=63103377

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170034770A KR101880190B1 (ko) 2017-03-20 2017-03-20 Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법

Country Status (1)

Country Link
KR (1) KR101880190B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427509A (zh) * 2019-01-09 2020-07-17 爱思开海力士有限公司 控制器、数据存储装置及其操作方法
WO2023017914A1 (ko) * 2021-08-13 2023-02-16 울산과학기술원 플래시 메모리 기반 ssd의 성능과 수명 개선을 위한 데이터 이동횟수에 따른 수명별 데이터 분류방법
US11989125B2 (en) 2020-02-11 2024-05-21 Samsung Electronics Co., Ltd. Storage device and operating method of memory controller

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20170002848A (ko) 2015-06-30 2017-01-09 성균관대학교산학협력단 가비지 컬렉션 저널링 장치 및 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130076429A (ko) * 2011-12-28 2013-07-08 삼성전자주식회사 메모리 장치의 저장 영역 관리 방법 및 이를 이용한 저장 장치
KR20170002848A (ko) 2015-06-30 2017-01-09 성균관대학교산학협력단 가비지 컬렉션 저널링 장치 및 방법

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427509A (zh) * 2019-01-09 2020-07-17 爱思开海力士有限公司 控制器、数据存储装置及其操作方法
US11989125B2 (en) 2020-02-11 2024-05-21 Samsung Electronics Co., Ltd. Storage device and operating method of memory controller
WO2023017914A1 (ko) * 2021-08-13 2023-02-16 울산과학기술원 플래시 메모리 기반 ssd의 성능과 수명 개선을 위한 데이터 이동횟수에 따른 수명별 데이터 분류방법

Similar Documents

Publication Publication Date Title
US10007468B2 (en) Method and apparatus for erasing data in data section in flash memory
CN105701021B (zh) 数据储存装置及其数据写入方法
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
CN108038026B (zh) 一种基于闪存的数据快速恢复方法与系统
CN105718530B (zh) 文件存储系统及其文件存储控制方法
US20060020744A1 (en) Method and apparatus for maintaining data on non-volatile memory systems
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
KR102387935B1 (ko) 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
US8984251B2 (en) Hinting of deleted data from host to storage device
US20170285954A1 (en) Data storage device and data maintenance method thereof
KR101880190B1 (ko) Ssd 컨트롤러 및 ssd 컨트롤러에 의해 수행되는 블록 속성 지정 방법
US11269783B2 (en) Operating method for data storage device
US11042307B1 (en) System and method for facilitating improved utilization of NAND flash based on page-wise operation
CN107402719B (zh) 可用于数据储存装置的数据储存方法与数据回复方法、以及采用这些方法的数据储存装置
US20100318726A1 (en) Memory system and memory system managing method
US11334480B2 (en) Data storage device and non-volatile memory control method
KR20140038110A (ko) 파일 시스템 관리 방법 및 이를 이용하는 장치
JPWO2009001514A1 (ja) メモリコントローラ、不揮発性記憶装置、ファイルシステム、不揮発性記憶システム、データ書き込み方法及びデータ書き込みプログラム
KR101369408B1 (ko) 스토리지 시스템 및 이의 데이터 전송 방법
CN107193485B (zh) 储存装置、其控制单元、及可用于储存装置的数据储存方法
US10896004B2 (en) Data storage device and control method for non-volatile memory, with shared active block for writing commands and internal data collection
US11036414B2 (en) Data storage device and control method for non-volatile memory with high-efficiency garbage collection
KR20120039166A (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
JP7435470B2 (ja) 情報処理装置、情報処理方法および情報処理プログラム

Legal Events

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