KR20120039166A - 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 - Google Patents

데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 Download PDF

Info

Publication number
KR20120039166A
KR20120039166A KR1020100100704A KR20100100704A KR20120039166A KR 20120039166 A KR20120039166 A KR 20120039166A KR 1020100100704 A KR1020100100704 A KR 1020100100704A KR 20100100704 A KR20100100704 A KR 20100100704A KR 20120039166 A KR20120039166 A KR 20120039166A
Authority
KR
South Korea
Prior art keywords
block
data
victim
isolation
flash memory
Prior art date
Application number
KR1020100100704A
Other languages
English (en)
Other versions
KR101153688B1 (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 KR1020100100704A priority Critical patent/KR101153688B1/ko
Publication of KR20120039166A publication Critical patent/KR20120039166A/ko
Application granted granted Critical
Publication of KR101153688B1 publication Critical patent/KR101153688B1/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
    • 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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket

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)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템을 개시한다. 상기 낸드 플래시 메모리 시스템은 데이터를 저장하는 데이터 블록, 상기 데이터 블록으로 저장될 데이터를 임시로 저장하는 로그 블록, 빈 공간의 프리 블록 및 병합 연산될 데이터를 임시로 저장하는 격리 블록(isolation block)을 포함하고, 상기 각 블록은 복수개의 페이지를 포함하는 플래시 메모리와, 가비지 콜렉션 수행 조건 발생시 희생 로그 블록을 선택하고, 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 부여받지 않은 데이터 페이지를 프리 블록으로 복사하고 무효화될 기회를 이미 부여받은 데이터 페이지를 격리 블록에 복사하는 플래시 변환 계층부를 포함한다. 본 발명에 따라 데이터 페이지들에 대해서 두번째 기회(Second chance) 정책으로 데이터 무효화될 기회를 제공하여, 병합(merge) 연산 자체를 회피할 수 있어 큰 성능 개선이 가능하다. 또한, 격리영역을 통한 점진적 병합(progressive merge)로 한꺼번에 많은 유효 페이지들을 병합해야 하는 문제점을 없애 SSD의 멈춤(freezing) 현상을 방지할 수 있게 된다.

Description

데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템{NAND FLASH MEMORY SYSTEM AND METHOD FOR PROVIDING INVALIDATION CHANCE TO DATA PAGES}
본 발명은 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템에 관한 것이다.
낸드 플래시 메모리는 여러 개의 블록들로 구성되어 있으며 하나의 블록은 여러 개의 페이지로 구성되어 있다(읽기/쓰기 단위 : 페이지, 삭제 단위: 블록). 또한, 낸드 플래시 메모리는 하드디스크와 달리 덮어쓰기 연산을 지원하지 않는다. 따라서 업데이트가 발생하게 되면 대부분의 낸드 플래시 메모리는 빈 공간에 업데이트 데이터를 기록한다. 그리고 기존에 기록되어 있던 데이터는 무효화(invalid) 시킨다.
이러한 낸드 플래시 메모리의 특성을 위해 파일 시스템과 낸드 메모리 사이에 플래시 메모리 변환계층(Flash Translation Layer, FTL)을 사용한다. 플래시 변환 계층의 주요 기능은 크게 2가지로 나눌 수 있다. 첫 번째 논리 주소와 물리 주소를 맵핑 시켜주는 기능이다. 다른 하나는 가비지 콜렉션 기능이다. 주소 맵핑 기능은 파일 시스템에서 덮어쓰기를 요청 받은 데이터를 다른 빈 공간에 기록하고 기존의 데이터를 무효화 시킨다. 이러한 동작으로 추가적으로 발생할 수 있는 삭제와 복사 연산을 감소시키는 역할을 한다. 그러나 무효화 된 페이지들은 메모리 공간을 차지 하고 있으며 사용이 불가능한 공간이다. 이러한 공간을 다시 사용하기 위해서는 삭제 연산이 필요하다. FTL은 무효화 된 페이지 공간을 다시 사용 가능하도록 해주는 동작을 가비지 콜렉션이라고 한다. 가비지 콜렉션 기능은 낸드 플래시 메모리에서 특정 블록을 선택하여 해당 블록의 유효한 페이지를 다른 빈 공간에 복사하고 해당 블록은 삭제 하는 동작을 하게 된다. 삭제된 블록 공간내의 모든 페이지 들은 모두 빈 페이지가 되어 쓰기가 가능해지는 공간이 된다.
FTL 기법 중에 현재 가장 많이 사용되고 있는 것은 로그 버퍼 기반의 FTL(log buffer-based FTL) 기법이다. 로그 버퍼 기법은 플래시 메모리 블록들을 데이터 블록과 로그 블록으로 나눈다. 데이터 블록은 일반적인 데이터 저장 공간으로 사용되고, 로그 블록은 덮어 쓰려는 데이터를 임시로 저장하는 공간으로 사용된다. 따라서 쓰기 명령이 발생하면 해당 쓰기 명령이 덮어쓰기일 경우 해당 데이터를 로그 블록에 기록한다. 로그 버퍼 기반의 FTL 기법은 덮어쓰기 될 데이터를 로그 블록에 임시로 기록함으로써 추가적으로 발생할 수 있는 삭제와 쓰기 연산을 줄일 수 있다. 그러나 로그 블록들의 빈 페이지들을 모두 사용하게 되면, 가비지 콜렉션 과정으로 로그 블록에 빈 페이지들을 만들어줘야 한다.
도 1은 FTL을 사용하는 플래시 메모리를 나타내고 있다.
도 1에서, 플래시 메모리는 데이터 블록(PBN0, PBN1, PBN2)과 로그 블록(PBN3, PBN4)으로 구분된다. 그리고 프리 블록(PBN5, PBN6)은 쓰기 동작이 되지 않은 공간, 즉 바로 쓰기 동작이 가능한 곳이다. 각각의 블록들은 4개의 페이지로 구성된다고 가정한다. 데이터 블록과 로그 블록은 무효화된 페이지(invalid page)와 유효한 페이지(valid page)를 포함한다.
유효한 페이지는 최신의 데이터를 말하며 무효화된 페이지는 업데이트가 발생하여 더 이상 유효한 데이터가 아니다. 만약 플래시 메모리의 공간이 부족해서 더 이상 사용할 공간이 없을 때 가비지 콜렉션 동작이 요구된다. 가비지 콜렉션은 교체할 로그 블록(희생 블록)을 선택하며, 선택된 로그 블록을 연관된 데이터 블록과 병합(marge)하는 과정으로 구성되어 있다.
도 2는 기존의 가비지 콜렉션 동작을 설명하기 위한 도면이다. 도 2는 로그 블록 PBN 3이 희생 블록인 경우의 동작을 나타내고 있다.
도 2를 참조하면, 로그 블록 PBN 3과 관련 있는 모든 데이터 블록은 PBN 0과 PBN 2이다. 구체적으로 로그 블록 PBN 3은 페이지 P1, P3, P8 및 P10을 포함한다.
가비지 콜렉션 동작 시에, 로그 블록 PBN 3을 비우기 위해 로그 블록 PB3에 저장된 페이지들 P1, P3, P8 및 P10을 프리 블록에 복사한다. 이 경우, 페이지들 P1 및 P3은 관련된 페이지들과 함께 관리되므로, 데이터 블록 PBN 0의 P0 및 P2과 같이 프리 블록 PBN 5에 저장된다. 즉, 페이지 P1, P3은 데이터 블록 PBN 0에 관련된다, 그에 따라, 프리 블록 PBN 5에는 로그 블록 PB3의 페이지들 P1 및 P3이 저장되고, 데이터 블록 PBN 0의 P0 및 P2이 저장된다.
유사하게, 페이지들 P8 및 P10은 관련된 페이지들과 같이 관리되므로, 데이터 블록 PBN 2의 P9 및 P11과 같이 프리 블록 PBN 6에 저장된다. 즉, 페이지 P8 및 P10은 데이터 블록 PBN 2에 관련된다. 그에 따라, 프리 블록 PBN 6에는 로그 블록 PBN 3의 페이지들 P8 및 P10이 저장되고, 데이터 블록 PBN 2의 P9 및 P11이 저장된다.
이와 같이, 데이터 블록 PBN 0과 PBN 2 및 로그 블록 PBN 3의 모든 유효한 페이지를 프리 블록 PBN 5 및 PBN 6에 복사하고 PBN 0, PBN 2 및 PBN 3에 대해 삭제 동작을 수행하는 것이 가비지 콜렉션의 일련의 과정이다. 이 경우, 도 2에서는 P0, P1, P2, P3, P8, P9, P10, P11의 각 유효한 페이지를 프리 블록인 PBN 5와 PBN 6에 복사하게 된다. 총 8개의 페이지 복사와 3개 블록의 삭제가 가비지 콜렉션에 따른 병합 프로세스(merge process)시 발생하는 비용이다. 이와 같이 가비지 콜렉션 동작에서는 많은 비용이 발생하게 된다. 즉, 기존 가비지 콜렉션의 경우는 로그 영역에 더 이상 쓸 공간이 없으면, 순환(Circular) FIFO 방식(또는 round-robin 방식)으로 희생 로그 블록을 선정하고, 해당 블록 내 유효페이지들과 연관성(associativity)을 갖는 데이터 블록들을 한꺼번에 병합(merge)하여, 로그 공간을 확보하였다. 만약 호스트로부터 요청되는 데이터들이 특정 시간 당 매우 높은 빈도로 로그영역에 쓰여 진다면(i.e, 높은 시간적 지역성(temporal locality)을 갖는다면), 로그 영역 내 데이터 무효화 비율이 높을 것이다. 한편, 엔터프라이즈급 서버용 OLTP(Online Transaction Processing) 애플리케이션의 경우, 쓰기 연산 시, 특정 영역에 높은 시간적 지역성(또는 쓰기 비대칭성 (write skew))를 보이는 것을 관찰하였다.
따라서, 엔터프라이즈급 서버에 탑재할 플래시 SSD에 OLTP 워크로드를 수행한다면, 비교적 높은 데이터 무효화 비율을 갖기 때문에 비용이 비싼 병합 프로세스를 자주 수행하게 되어 비용과 자원이 낭비된다. 즉, FTL에서 발생하는 병합(merge) 연산은 매우 많은 비용이 발생하는 연산이기 때문에, 이를 최대한 줄이는 것이 플래시메모리 수명 및 FTL 성능 측면에서 바람직하다. 이러한 측면에서 기존의 병합 정책은 개선의 여지가 아주 많다.
따라서, 본 발명의 목적은 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 플래시 메모리 시스템을 설명한다.
상기 목적을 달성하기 위한 본 발명의 일 측면에 따라, 데이터 페이지들에 대해 무효화 기회를 부여하는 낸드 플래시 메모리 시스템은 데이터를 저장하는 데이터 블록, 상기 데이터 블록으로 저장될 데이터를 임시로 저장하는 로그 블록, 빈 공간의 프리 블록 및 병합 연산될 데이터를 임시로 저장하는 격리 블록(isolation block)을 포함하고, 상기 각 블록은 복수개의 페이지를 포함하는 플래시 메모리와, 가비지 콜렉션 수행 조건 발생시 희생 로그 블록을 선택하고, 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 부여 받지 않은 데이터 페이지를 프리 블록으로 복사하고 무효화될 기회를 이미 부여 받은 데이터 페이지를 격리 블록에 복사하는 플래시 변환 계층 부를 포함한다.
본 발명의 다른 측면에 따라, 데이터를 저장하는 데이터 블록, 상기 데이터 블록으로 저장될 데이터를 임시로 저장하는 로그 블록 및 빈 공간의 프리 블록을 포함하는 플래시 메모리를 포함하는 낸드 플래시 메모리 시스템에서 데이터 페이지들에 대해 무효화 기회를 부여하는 방법은 플래시 메모리에 병합 프로세스가 수행될 데이터를 임시로 저장하는 격리 블록(isolation block)을 포함하는 격리 영역을 형성하는 단계와, 가비지 콜렉션 수행 조건 발생시 희생 로그 블록을 선택하는 단계와, 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 부여받지 않은 데이터 페이지를 식별하여 프리 블록으로 복사하는 단계와, 무효화될 기회를 이미 부여받은 데이터 페이지를 식별하여 격리 블록에 복사하는 단계를 포함한다.
본 발명에 의하면, 데이터 페이지들에 대해서 두번째 기회(Second chance) 정책으로 데이터 무효화될 기회를 제공하여, 병합(merge 연산 자체를 회피할 수 있어 큰 성능 개선이 가능하다. 또한, 격리영역을 통한 점진적 병합(progressive merge)로 한꺼번에 많은 유효 페이지들을 병합해야 하는 문제점을 없애 SSD의 멈춤(freezing) 현상을 방지할 수 있게 된다.
도 1은 FTL을 사용하는 플래시 메모리를 나타내고 있다.
도 2는 기존의 가비지 콜렉션 동작을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시 예에 따른 플래시 메모리 시스템을 도시한다.
도 4는 본 발명의 일 실시 예에 따른 플래시 메모리의 구성을 도시한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 데이터 페이지들에 대해 무효화 기회를 부여하는 방법을 나타낸 플로우 차트이다.
도 6은 도 5의 방법이 수행되는 과정에서의 플래시 메모리의 상태들을 나타낸 도면이다.
도 7은 본 발명에 따른 데이터 페이지들에 대해 무효화 기회를 부여한 방법이 수행되기 전과 후 플래시 메모리의 상태를 나타낸 도면이다.
도 8은 본 발명의 일 실시 예에 따른 점진적 병합(progressive merge) 프로세스를 수행하는 방법을 나타낸 플로우 차트이다.
도 9는 도 8의 방법에 따라 수행되는 과정에서의 플래시 메모리의 상태들을 나타낸 도면이다.
도 10은 본 발명에 따른 점진적 병합(progressive merge) 프로세스를 수행하는 방법이 수행되기 전과 후 플래시 메모리의 상태를 나타낸 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리 시스템을 도시한다.
도 3을 참조하면, 플래시 메모리 시스템은 플래시 메모리 관리 장치(100) 및 플래시 메모리(140)를 포함한다.
플래시 메모리 관리 장치(100)는 파일 시스템(110), 플래시 변환 계층부(Flash Translation Layer, FTL)(120), 및 RAM(130)을 포함한다.
파일 시스템(110)은 플래시 메모리(140)에 대한 데이터 읽기/쓰기 명령을 플래시 변환 계층부(120)에 제공한다. 플래시 변환 계층부(120)는 파일 시스템(110)으로부터의 데이터 읽기/쓰기 명령에 따라 플래시 메모리(140)에 저장된 데이터를 판독하거나 플래시 메모리(140)에 기록한다. 이를 위해 플래시 변환 계층부(120)는 파일 시스템(10)으로부터 제공되는 데이터의 논리 주소와 플래시 메모리의 물리 주소를 맵핑시켜 저장한 RAM(130)을 참조하여 플래시 메모리(140)에 대해 데이터를 판독하거나 기록한다.
RAM(130)은 도시하지 않았지만 블록 맵핑 테이블 및 페이지 맵핑 테이블을 가지고 있다. 블록 맵핑 테이블은 데이터의 논리 주소와 물리 주소를 블록 단위로 맵핑한 정보를 가지고 있다. 또한 페이지 맵핑 테이블은 데이터의 논리 주소와 물리 주소를 페이지 단위로 맵핑한 정보를 가지고 있다.
또한, 플래시 변환 계층부(120)는 가비지 콜렉션 동작을 수행하는데, 본 발명에 따라, 가비지 콜렉션 동작에 따른 병합 프로세스의 조건이 발생하면, 희생 로그 블록의 데이터 페이지들에 대해 병합 프로세스를 수행하지 않도록 한 두번째 기회를 부여한다.
구체적으로, 플래시 변환 계층부(120)는 희생 로그 블록의 유효 데이터를 병합하지 않고 미리 결정된 프리 블록에 복사한다. 이후, 이 미리 결정된 프리 블록은 로그 블록이 된다. 이 경우, 플래시 변환 계층부(120)는 두 번째 기회를 이전에 부여 받았던 유효 페이지에 대해서는 별도의 메모리 영역, 즉 격리 영역(isolation area)에 복사한다. 즉, 플래시 변환 계층부(120)는 병합되어야 할 데이터 페이지들에 대해 무효화될 기회를 주며, 무효화될 기회를 부여받은 데이터 페이지가 순환(Circular) FIFO 방식(또는 round-robin 방식)에 따른 하나의 순환 주기 동안 무효화되지 않았으면, 병합 프로세스가 수행될 격리 영역에 복사한다. 이에 따라, 본 발명에서는 희생 로그 블록에 저장된 데이터 페이지들 중 하나의 순환 주기 동안 무효화될 기회를 부여 받았지만 무효화되지 않은 데이터 페이지를 콜드 페이지(cold page)라고 한다. 그리고, 로그 블록에 저장된 데이터 페이지들 중 하나의 순환 주기 동안 무효화될 기회를 부여 받으면 무효화될 확률이 높은 데이터 페이지를 웜 페이지(warm page)라고 한다. 이러한 분류는 본 발명에 따른 방법이 수행된 결과에 기반한 것이다. 따라서, 플래시 메모리(140)는 희생 로그 블록에서의 유효한 데이터 페이지들에 관련하여 하나의 순환 주기 동안 무효화될 기회를 이미 부여 받은 데이터 페이지와 무효화될 기회를 부여 받은 않은 데이터 페이지를 식별한다. 플래시 변환 계층부(120)는 빈 로그 영역이 존재하지 않아 가비지 콜렉션을 수행할 필요가 있으면, 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 이미 부여 받은 데이터 페이지를 격리 블록에 복사하고, 무효화될 기회를 부여 받지 않은 데이터 페이지를 프리 블록으로 복사한다. 이어서 플래시 변환 계층부(120)는 희생 로그 블록에 대해 삭제 연산을 수행한다. 그에 따라 희생 로그 블록은 프리 블록이 된다.
플래시 메모리(140)는 예컨대, 도 4에 도시된 바와 같이, 메타데이터 저장 공간(141), 데이터 영역(142), 로그 영역(143) 및 격리 영역(144)을 포함한다. 메타데이터 저장 공간(141), 데이터 영역(142) 및 로그 영역(143)은 일반적인 플래시 메모리(140)에서와 동일하므로, 그 상세한 설명은 생략한다. 격리 영역(144)에는 전술한 바와 같이, 플래시 변환 계층부(120)가 무효화될 기회가 주어진 데이터 페이지가 하나의 순환 주기 동안 무효화되지 않으면, 해당 데이터 페이지들을 복사한다.
이러한 데이터 페이지들에 대해 두번째 기회를 부여하는 방법을 도 5 내지 도 7을 참조하여 설명한다.
도 5는 본 발명의 일 실시예에 따른 데이터 페이지들에 대해 무효화 기회를 부여하는 방법을 나타낸 플로우 차트이고, 도 6은 도 5의 방법이 수행되는 과정에서의 플래시 메모리의 상태들을 나타낸 도면이다. 그리고 도 7은 본 발명에 따른 데이터 페이지들에 대해 무효화 기회를 부여한 방법이 수행되기 전과 후 플래시 메모리의 상태를 나타낸 도면이다.
도 5를 참조하면, 플래시 변환 계층부(120)는 단계 210에서 빈 로그 영역이 있는 지를 판단하는데 즉, 데이터 페이지가 저장될 로그 블록이 있는 지를 체크한다. 다시 말해 플래시 변환 계층부(120)는 가비지 콜렉션이 수행되어야 하는 지를 판단한다. 가비지 콜렉션은 로그 영역의 논리적으로 모든 로그 블록들에 데이터 페이지가 저장되어 있어, 더 이상 데이터 페이지가 저장될 로그 블록이 없는 경우 수행된다.
만약 빈 로그 영역이 없다면, 플래시 변환 계층부(120)는 단계 220으로 진행하여 희생 로그 블록을 선택한다. 도 6(a)를 참조하면, 희생 로그 블록(310)은 무효화된 페이지, 하나의 순환 주기 동안 무효화될 기회를 부여 받았지만 무효화되지 않은 데이터 페이지를 콜드 페이지(cold page) 및 무효화될 기회를 부여받지 않은 데이터 페이지를 포함할 수 있다.
플래시 변환 계층부(120)는 희생 로그 블록이 선택되면 단계 230에서 희생 로그 블록에서 유효한 페이지들 중 콜드 페이지를 식별한다. 플래시 변환 계층부(120)는 희생 로그 블록이 콜드 페이지를 포함하면 단계 240에서 콜드 페이지를 격리 블록에 복사한다. 다시 말해, 플래시 변환 계층부(120)는 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 이미 부여 받은 데이터 페이지를 식별하여 격리 블록에 복사한다. 이어서, 플래시 변환 계층부(120)는 단계 250에서 희생 로그 블록의 유효한 페이지들 중 콜드 페이지를 제외한 유효 페이지를 프리 블록에 복사한다. 즉, 플래시 변환 계층부(120)는 무효화될 기회를 부여 받지 않은 데이터 페이지를 프리 블록으로 복사한다.
도 6(b)를 참조하면, 콜드 페이지는 격리 영역의 블록으로 복사되어 있고, 그 외 유효한 페이지는 프리 블록에 복사되어 있다. 이후 프리 블록은 로그 블록이 된다. 이어서, 플래시 변환 계층부(120)는 단계 120에서 희생 로그 블록에 대해 삭제 연산을 수행하여 희생 로그 블록은 프리 블록이 된다.
도 6(c)를 참조하면, 희생 로그 블록(310)이 프리 블록이 되고, 희생 로그 블록의 유효한 페이지들이 복사된 프리 블록이 로그 블록이 된다.
이와 같이, 본 발명은 전체 로그영역이 가득 찰 경우, 가비지 콜렉션을 위해 선정된 희생(victim) 로그블록에서 유효페이지들 중 콜드 페이지를 로그 영역 즉 프리 블록으로 복사하고, 웜 페이지를 격리 영역에 복사하는 작업을 수행한다. 즉, 무효화 기회를 부여 받지 않은 웜 페이지들은 무효화되기 위한 두번째 기회(Second chance)를 부여 받게 됨으로써 병합(merge) 연산을 회피할 기회를 제공받는다. 다시 말해, 웜 페이지는 순환(Circular) FIFO 방식(또는 round-robin 방식)에 따른 하나의 순환 주기 동안 무효화되면 병합 연산을 회피할 수 있게 된다. 또한, 두번째 기회를 받았음에도 불구하고 무효화 되지 않은 콜드 페이지들은 앞으로 무효화될 확률이 낮기 때문에 격리 영역에 복사하여 이후 본 발명에 따른 점진적 병합(progressive merge) 연산의 대상이 되도록 한다.
도 7에는 본 발명에 따른 데이터 페이지들에 대해 무효화 기회를 부여하는 방법이 수행되기 전과 후의 플래시 메모리 상태가 나타나 있다. 도 7의 좌측에는 데이터 페이지들에 대해 무효화 기회를 부여하는 방법이 수행되기 전의 플래시 메모리 상태가 나타나 있으며, 도 7의 우측에는 데이터 페이지들에 대해 무효화 기회를 부여하는 방법이 수행된 후의 플래시 메모리 상태가 나타나 있다. 도 7을 참조하면, 무효화 기회를 부여 받지 않은 웜 페이지들은 로그 영역에 복사되어 있으며, 두번째 기회를 받았음에도 불구하고 무효화 되지 않은 콜드 페이지는 격리 영역에 복사되어 있다.
이하 본 발명의 일 실시예에 따른 점진적 병합(progressive merge) 프로세스를 수행하는 방법을 도 8 내지 도 10을 참조하여 설명한다. 본 발명은 전술한 가비지 콜렉션 시, 격리 영역(Isolation area)으로 옮겨진 콜드 페이지들에 대해 점진적 병합(progressive merge)를 수행한다.
도 8은 본 발명의 일 실시예에 따른 점진적 병합(progressive merge) 프로세스를 수행하는 방법을 나타낸 플로우 차트이며, 도 9는 도 8의 방법에 따라 수행되는 과정에서의 플래시 메모리의 상태들을 나타낸 도면이다. 그리고 도 10은 본 발명에 따른 점진적 병합(progressive merge) 프로세스를 수행하는 방법이 수행되기 전과 후의 플래시 메모리의 상태를 나타낸 도면이다.
도 8을 참조하면, 플래시 변환 계층부(120)는 단계 410에서 빈 격리 영역의 크기가 미리 결정된 임계치 이하인 지를 판단한다. 예컨대, 격리 영역은 복수개의 블록들로 이루어질 수 있으며, 데이터 페이지들이 예컨대, 전체 격리 영역의 크기에 대해 미리 결정된 비율만큼 저장되어 있으면, 도 8의 제어 흐름이 수행될 수 있다. 격리 영역의 일부를 빈 상태로 두는 것은 본 발명의 일 실시예에 따른 점진적 병합(progressive merge) 프로세스가 수행하는 중에도 격리 영역에는 콜드 페이지가 복사되어야 하기 때문이다.
플래시 변환 계층부(120)는 빈 격리 영역의 크기가 미리 결정된 임계치 이하이면, 단계 420으로 진행하여 희생 격리 블록을 선택하고 단계 430에서 희생 격리 블록 중 하나의 유효 페이지에 대해 병합 프로세스를 수행한다.
도 9(a)를 참조하면, 격리 블록(510)의 첫번째 데이터 페이지를 프리 블록(520)으로 복사하는데, 이 첫번째 데이터 페이지에 관련된 페이지들이 프리 블록(520)으로 복사되어 병합이 이루어진다. 그에 따라 첫번째 데이터 페이지에 관련된 페이지들이 저장되었던 올드 데이터 블록은 유효한 페이지를 더 이상 저장하지 않으므로, 해당 올드 데이터 블록에 대해 삭제 연산이 수행된다. 그에 따라 올드 데이터 블록(530)은 프리 블록이 된다. 그리고 병합이 수행된 결과인 프리 블록(520)은 새로운 데이터 블록이 된다.
이와 같이 한번의 병합 프로세스가 이루어진 후, 플래시 변환 계층부(120)는 단계 440에서 희생 격리 블록에 유효 페이지가 있는지를 판단한다. 만약 희생 격리 블록에 유효 페이지가 있으면 플래시 변환 계층부(120)는 단계 430으로 되돌아간다. 플래시 변환 계층부(120)는 희생 격리 블록에 유효 페이지가 없으면 단계 450으로 진행하여 희생 격리 블록에 대해 삭제 연산을 수행하며, 그에 따라 희생 격리 블록은 프리 블록이 된다.
이와 같이, 병합 프로세스는 희생 격리 블록의 데이터 페이지들 각각에 대해 점진적으로 수행된다.
도 10을 참조하면, 본 발명에 따른 점진적 병합 프로세스가 수행되기 전과 후의 플래시 메모리 상태가 나타나 있다. 도 10의 좌측에는 점진적 병합 프로세스가 수행되기 전의 플래시 메모리 상태가 나타나 있으며, 도 10의 우측에는 점진적 병합 프로세스가 수행된 후의 플래시 메모리 상태가 나타나 있다. 도 10의 우측에 도시된 바와 같이, 한번의 병합 프로세스가 수행되면 격리 블록 중 하나가 무효화되어 있다
이와 같이, 본 발명의 점진적 병합 프로세스는 격리 영역에 더 이상 콜드 페이지들을 기록할 공간이 없다면, 호스트로부터 요청된 데이터를 로그 영역에 기록할 때마다, 콜드 페이지들을 하나씩 점진적으로 병합 연산을 수행한다. 그에 따라 FAST FTL에서는 희생 로그블록 내 유효페이지들을 한번에 병합함으로써 높은 응답시간이 발생하게 되는데, 이러한 점진적 병합 연산을 통해 플래시 SSD의 멈춤(freezing)현상을 방지할 수 있게 된다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
110: 파일 시스템
120: 플래시 변환 계층부
130: RAM
140: 플래시 메모리

Claims (10)

  1. 데이터 페이지들에 대해 무효화 기회를 부여하는 낸드 플래시 메모리 시스템에 있어서,
    데이터를 저장하는 데이터 블록, 상기 데이터 블록으로 저장될 데이터를 임시로 저장하는 로그 블록, 빈 공간의 프리 블록 및 병합 연산될 데이터를 임시로 저장하는 격리 블록(isolation block)을 포함하고, 상기 각 블록은 복수개의 페이지를 포함하는 플래시 메모리와,
    가비지 콜렉션 수행 조건 발생시 희생 로그 블록을 선택하고, 희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 부여 받지 않은 데이터 페이지를 프리 블록으로 복사하고 무효화될 기회를 이미 부여 받은 데이터 페이지를 격리 블록에 복사하는 플래시 변환 계층부를 포함하는 것을 특징으로 하는 낸드 플래시 메모리 시스템.
  2. 제1항에 있어서, 상기 플래시 변환 계층부는 상기 희생 로그 블록에 대해 삭제 연산을 수행하는 낸드 플래시 메모리 시스템.
  3. 제1항에 있어서, 상기 플래시 변환 계층부는 상기 격리 영역이 미리 결정된 비율 이하의 빈 영역을 포함하면 희생 격리 블록을 선택하고, 상기 희생 격리 블록의 하나의 유효 페이지에 대해 병합 프로세스를 수행하는 낸드 플래시 메모리 시스템.
  4. 제3항에 있어서, 상기 플래시 변환 계층부는 상기 희생 격리 블록에 유효한 페이지가 존재하지 않을 때까지 상기 병합 프로세스를 상기 희생 격리 블록의 각 페이지에 대해 각각 수행하는 것을 특징으로 하는 낸드 플래시 메모리 시스템.
  5. 제4항에 있어서, 상기 플래시 변환 계층부는 상기 희생 격리 블록에 유효 페이지가 존재하지 않으면 상기 희생 격리 블록에 대해 삭제 연산을 수행하는 낸드 플래시 메모리 시스템.
  6. 데이터를 저장하는 데이터 블록, 상기 데이터 블록으로 저장될 데이터를 임시로 저장하는 로그 블록 및 빈 공간의 프리 블록을 포함하는 플래시 메모리를 포함하는 낸드 플래시 메모리 시스템에서 데이터 페이지들에 대해 무효화 기회를 부여하는 방법에 있어서,
    플래시 메모리에 병합 프로세스가 수행될 데이터를 임시로 저장하는 격리 블록(isolation block)을 포함하는 격리 영역을 형성하는 단계와,
    가비지 콜렉션 수행 조건 발생시 희생 로그 블록을 선택하는 단계와,
    희생 로그 블록의 유효한 데이터 페이지들 중 무효화될 기회를 부여받지 않은 데이터 페이지를 식별하여 프리 블록으로 복사하는 단계와,
    무효화될 기회를 이미 부여받은 데이터 페이지를 식별하여 격리 블록에 복사하는 단계를 포함하는 것을 특징으로 하는 무효화 기회 부여 방법.
  7. 제6항에 있어서, 상기 희생 로그 블록에 대해 삭제 연산을 수행하는 단계를 더 포함하는 무효화 기회 부여 방법.
  8. 제7항에 있어서, 상기 격리 영역이 미리결정된 비율 이하의 빈 영역을 포함하면 희생 격리 블록을 선택하는 단계와,
    상기 희생 격리 블록의 하나의 유효 페이지에 대해 병합 프로세스를 수행하는 단계를 더 포함하는 무효화 기회 부여 방법.
  9. 제8항에 있어서, 상기 희생 격리 블록에 유효한 페이지가 존재하지 않을 때까지 상기 병합 프로세스를 상기 희생 격리 블록의 각 페이지에 대해 각각 수행하는 단계를 더 포함하는 것을 특징으로 하는 무효화 기회 부여 방법.
  10. 제9항에 있어서, 상기 희생 격리 블록에 유효 페이지가 존재하지 않으면 상기 희생 격리 블록에 대해 삭제 연산을 수행하는 단계를 더 포함하는 무효화 기회 부여 방법.
KR1020100100704A 2010-10-15 2010-10-15 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템 KR101153688B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100100704A KR101153688B1 (ko) 2010-10-15 2010-10-15 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100100704A KR101153688B1 (ko) 2010-10-15 2010-10-15 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템

Publications (2)

Publication Number Publication Date
KR20120039166A true KR20120039166A (ko) 2012-04-25
KR101153688B1 KR101153688B1 (ko) 2012-06-18

Family

ID=46139584

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100100704A KR101153688B1 (ko) 2010-10-15 2010-10-15 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템

Country Status (1)

Country Link
KR (1) KR101153688B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323772B2 (en) 2012-10-05 2016-04-26 Samsung Electronics Co., Ltd. Segment group-based segment cleaning apparatus and methods for storage units
US10042753B2 (en) 2014-07-31 2018-08-07 SK Hynix Inc. Data storage device for storing data storage information of data and method for operating the same

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102107604B1 (ko) * 2018-03-26 2020-05-07 성균관대학교 산학협력단 비휘발성 메모리 장치, 및 비휘발성 메모리의 데이터 관리 방법

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR101477047B1 (ko) * 2008-02-29 2014-12-30 삼성전자주식회사 메모리 시스템 및 그것의 블록 병합 방법
KR100987251B1 (ko) 2008-10-10 2010-10-12 한양대학교 산학협력단 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
KR101028929B1 (ko) * 2008-12-31 2011-04-12 성균관대학교산학협력단 실시간 시스템을 위한 로그 블록 연관성 분산 방법 및 이를수행하는 플래시 메모리 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9323772B2 (en) 2012-10-05 2016-04-26 Samsung Electronics Co., Ltd. Segment group-based segment cleaning apparatus and methods for storage units
US10042753B2 (en) 2014-07-31 2018-08-07 SK Hynix Inc. Data storage device for storing data storage information of data and method for operating the same

Also Published As

Publication number Publication date
KR101153688B1 (ko) 2012-06-18

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
KR101717644B1 (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
US10402091B1 (en) Managing data in log-structured storage systems
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
JP7046669B2 (ja) 逆キャッシュテーブルを用いるハードウェアベースのマップアクセラレーション
US10133511B2 (en) Optimized segment cleaning technique
US8880784B2 (en) Random write optimization techniques for flash disks
CN108604165B (zh) 存储装置
US9489239B2 (en) Systems and methods to manage tiered cache data storage
US11782632B2 (en) Selective erasure of data in a SSD
US20150347310A1 (en) Storage Controller and Method for Managing Metadata in a Cache Store
US20170139825A1 (en) Method of improving garbage collection efficiency of flash-oriented file systems using a journaling approach
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
US10552377B2 (en) Data discard method for journaling file system and memory management apparatus thereof
JP6398102B2 (ja) メモリシステム
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR101077901B1 (ko) 로그 블록 단위 매핑 기법을 이용한 플래시 메모리 관리 장치 및 방법
KR101179027B1 (ko) 버퍼의 지역성에 기초한 가비지 컬렉션을 수행하는 낸드 플래시 메모리 시스템 및 방법
KR100987251B1 (ko) 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
US20180307615A1 (en) Storage control apparatus and storage control method
JP6640940B2 (ja) メモリシステムの制御方法
KR20150087990A (ko) 완전 복제된 가상 머신의 디스크 이미지 파일 캐싱 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160328

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee