KR20100115090A - 버퍼를 고려한 가비지 컬렉션 기법 - Google Patents

버퍼를 고려한 가비지 컬렉션 기법 Download PDF

Info

Publication number
KR20100115090A
KR20100115090A KR1020090033631A KR20090033631A KR20100115090A KR 20100115090 A KR20100115090 A KR 20100115090A KR 1020090033631 A KR1020090033631 A KR 1020090033631A KR 20090033631 A KR20090033631 A KR 20090033631A KR 20100115090 A KR20100115090 A KR 20100115090A
Authority
KR
South Korea
Prior art keywords
block
page
log
buffer cache
buffer
Prior art date
Application number
KR1020090033631A
Other languages
English (en)
Other versions
KR101067018B1 (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 KR1020090033631A priority Critical patent/KR101067018B1/ko
Publication of KR20100115090A publication Critical patent/KR20100115090A/ko
Application granted granted Critical
Publication of KR101067018B1 publication Critical patent/KR101067018B1/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
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Abstract

본 발명은 낸드 플래시 메모리 기반의 저장 장치에서의 버퍼를 고려한 가비지 컬렉션 기술에 관한 것으로, 플래시 메모리에서의 가비지 컬렉션 시 저장 장치 혹은 운영체제 내의 버퍼 캐시의 내용을 고려하여 가비지 컬렉션에 따라 발생하는 부가적인 플래시 읽기/쓰기/삭제 횟수를 감소시키는 방법에 관한 것이다.
이러한 본 발명은 가비지 컬렉션 수행 순간에 버퍼 캐시의 내용을 참고하여 불필요한 플래시 읽기/쓰기/삭제 횟수를 감소시키는 기술과, 버퍼 캐시의 향후 상태를 예측하여 가장 비용이 적을 것으로 예측되는 교체될 블록을 선택하는 기술로 이루어져 있으며, 이러한 기술들을 통해 낸드 플래시 기반 저장 장치에서의 가비지 컬렉션에 따른 부가적인 연산 횟수를 감소시켜 전반적인 플래시 저장장치의 성능과 함께 그 수명을 증가시킨다.
낸드 플래시 메모리, 가비지 컬렉션, 플래시 메모리 변환 계측(FTL), 낸드 플래시를 위한 버퍼 관리 기법

Description

버퍼를 고려한 가비지 컬렉션 기법 {Buffer-Aware Garbage Collection Technique for NAND Flash Memory-Based Storage Systems}
본 발명은 낸드 플래시 메모리에서의 가비지 컬렉션에 따른 성능 저하를 감소시키는 방법에 관한 것으로, 더욱 상세하게는 플래시 저장 장치 내의 FTL 소프트웨어 모듈이 가비지 컬렉션을 수행하는 중 호스트나 저장 장치 내의 버퍼 캐시에 저장된 데이터의 상태를 활용함으로써, 가비지 컬렉션 동작 시 불필요한 읽기, 쓰기, 삭제 연산을 감소시켜 플래시 기반의 저장 장치의 성능 및 수명을 향상시키는 방법에 관한 것이다.
(1) 플래시 메모리 변환 계층 (Flash Translation Layer, FTL)
도 1은 낸드 플래시 메모리의 일반적인 구성을 보여준다. 낸드 플래시 메모리칩(101) 내에는 다수의 블록(102)이 존재하며, 또한 하나의 블록은 다수의 페이지(103)로 이루어져 있다. 페이지는 읽기 및 쓰기 연산의 단위이며 반면 블록은 삭제 연산의 단위이다. 일반적으로 각 페이지의 크기는 4 KB 이며, 각 블록은 64개의 페이지로 구성되어 있다. 따라서 한 블록의 크기는 256 KB이다. 하지만 이러한 속 성은 플래시 메모리 제조사나 플래시 메모리 모델에 따라 달라질 수 있다. 하드디스크와 달리 플래시 메모리는 덮어쓰기 연산을 지원하지 않으며, 따라서 페이지에 기록된 데이터를 수정하기 위해서는 해당 페이지가 속한 블록 내의 모든 유효한 데이터(유효한 페이지)를 다른 빈 블록에 복사를 하고, 해당 블록을 삭제하는 과정이 수반되어야만 한다. 이 과정은 다수의 페이지 복사(페이지 읽기 및 쓰기) 및 블록 삭제 연산 과정을 수반하기 때문에 전반적인 낸드 플래시 저장 장치의 성능을 감소시킨다.
이러한 성능 감소를 줄이기 위해 일반적으로 플래시 메모리 변환 계층(Flash Translation Layer, FTL)이라는 특별한 소프트웨어 계층이 파일 시스템과 낸드 플래시 메모리 사이에 사용된다. FTL은 크게 주소 사상 기능과 가비지 컬렉션 기능으로 구성되어 있다. 주소 사상 기능은 파일 시스템으로부터 덮어쓰기 요청을 받은 경우 해당 데이터를 원래 페이지에 덮어쓰는 대신, 다른 빈 페이지에 기록함으로써 부가적인 페이지 복사 및 삭제 연산을 감소시키는 역할을 한다. 주소 사상 기능은 특정 크기의 주소 사상 테이블을 반드시 SRAM이나 DRAM과 같은 메모리 내에 유지해야하며, 이를 통해 파일 시스템으로 받은 논리 주소를 플래시 메모리 내의 실제 물리 주소로 사상하는 방식을 사용한다. 주소 사상 기법은 덮어쓰기에 따른 불필요한 읽기, 쓰기, 삭제 연산들을 줄여주지만 최신 데이터보다 오래된 데이터를 저장하고 있는 페이지(무효화 된 페이지)들을 다수 발생시킨다. 무효화 된 페이지들로 인해 플래시 메모리 공간이 낭비되는 것을 막기 위해 FTL은 주기적으로 무효화 된 페이지들을 삭제해야만 한다. 이러한 FTL의 기능을 가비지 컬렉션 기능이라 부른다.
가비지 컬렉션 기능은 전체 플래시 메모리 블록 중 특정한 블록(교체 블록) 을 선택한 후 해당 블록 내의 유효한 페이지를 다른 블록의 빈 페이지에 복사하는 과정을 수행한다. 무효화 된 페이지의 경우 오래된 데이터를 저장하고 있으므로 복사 대상에서 제외된다. 모든 유효한 페이지가 다른 블록에 복사된 후 선택된 교체 블록은 삭제될 수 있으며, 블록 삭체 후 교체 블록 내의 모든 페이지들은 빈 페이지 상태가 된다. 따라서 가비지 컬렉션 과정을 통하여 무효화 된 페이지에 의해 낭비되는 플래시 메모리의 공간을 회수할 수 있다.
(2) 로그 버퍼 기반의 FTL 기법 소개
현재까지 제안된 FTL 기법 중 로그 버퍼 기반의 FTL 기법은 작은 메모리 공간을 필요로 하는 반면, 우수한 가비지 컬렉션 성능을 제공하기 때문에 실제 제품에서 가장 많이 사용되는 기법이다. 도 2는 로그 버퍼 기반 FTL 기법의 구조와 동작과정을 보여준다. 로그 버퍼 기반의 FTL 기법은 플래시 메모리 블록들을 데이터 블록들(201)과 로그 블록들(202)로 나눈다. 데이터 블록들은 일반 저장 공간으로 사용되며, 실제 사용자에게 보이는 저장 공간이다. 데이터 블록은 블록 단위의 주소 사상 테이블을 통해 관리된다. 반면, 로그 블록들은 덮어 쓰여 진 데이터를 임시로 저장하는 공간으로 사용되며, 페이지 단위의 주소 사상 테이블을 통해 관리된다. 이러한 로그 블록들의 집합은 일반적으로 로그 버퍼라 불린다. 작은 수의 플래시 메모리 블록만이 로그 블록으로 사용되기 때문에 로그 버퍼 기반의 FTL이 요구하는 주소 사상 테이블의 크기는 매우 작다.
로그 버퍼 기반의 FTL 기법의 동작과정은 아래와 같다. 쓰기 명령이 파일 시스템으로부터 도착한 경우, 먼저 해당 쓰기 명령이 덮어쓰기 명령인지를 확인한다. 덮어쓰기 명령인 경우, 해당 데이터를 로그 버퍼에 기록하며(203) 이전 데이터를 저장하고 있는 페이지를 무효화 상태로 만든다. 만약 덮어쓰기가 아닌 경우 해당 데이터를 데이터 블록에 직접 기록한다(204). 로그 버퍼 기반의 FTL 기법은 덮어쓰기 데이터를 로그 버퍼 내에 임시로 기록함으로써 부가적인 읽기/쓰기/삭제 연산을 감소시킬 수 있다. 하지만, 로그 버퍼내의 빈 페이지들이 모두 사용된 경우, 가비지 컬렉션(205) 과정을 통해 로그 버퍼 내에 새로운 빈 페이지들을 확보해 주어야만 한다. 이러한 가비지 컬렉션 과정은 크게 (i) 로그 버퍼 내에서 교체할 로그 블록을 선택하는 과정 (ii) 선택된 로그 블록을 연관된 데이터 블록과 합병하는 과정으로 구성되어 있다.
(3) 로그 버퍼 기반의 FTL 기법에서의 블록 합병 과정
도 3은 로그 버퍼 기반의 FTL 기법에서의 블록 합병 과정을 보여준다. 도 3에서는 로그 블록(301)이 교체 블록으로 선택되었다고 가정한다. 블록 합병 연산 과정은 새로운 빈 블록을 할당한 후(302), 교체될 로그 블록(301)과 교체될 로그 블록과 연관된 다른 로그 블록(303) 및 데이터 블록들(304) 내의 유효한 페이지들을 빈 블록에 복사한 후, 교체될 로그 블록과 데이터 블록을 삭제한 후, 새로운 블록을 데이터 블록으로 변환하고(305), 삭제된 교체 블록을 다시 로그 버퍼에 할당(306)함으로써 완료된다.
도 3에 나타난 블록 합병은 세 번의 삭제 연산과 다수의 페이지 복사 연산을 필요로 한다. 따라서 합병 연산 시 발생하는 부가적인 읽기, 쓰기, 삭제 연산으로 인해 전반적인 플래시 기반 저장 장치의 성능이 감소하는 문제가 발생할 수 있다. 특히 교체될 로그 블록과 연관된 데이터 블록의 개수를 연관도라고 부르는데, 일반적으로 연관도가 높을수록 블록 합병에 따른 페이지 복사 연산의 개수가 증가하는 경향이 나타난다.
(4) 플래시를 위한 버퍼 캐시 관리 기법
플래시 메모리 가비지 컬렉션 비용 감소를 위해 FTL 기법 외에도 다양한 버퍼 캐시 관리 기법이 제안되었다. 도 4는 호스트 시스템(400)과 버퍼 캐시(401)와 플래시 변환 계층(402) 그리고 플래시 메모리(403) 간의 관계를 보여준다. 버퍼 캐시는 일반적으로 DRAM 혹은 SDRAM으로 구성되어 있으며, 호스트 시스템으로부터 요청된 읽기 및 쓰기 데이터를 임시적으로 보관하는 역할을 한다. FTL은 버퍼 캐시를 통하여 요청된 읽기 및 쓰기 데이터를 처리하며, 필요할 경우 블록 삭제 연산도 수행한다. 일반적으로 모바일 기기의 경우에는 버퍼 캐시와 FTL이 하나의 호스트 시스템 내에 존재하며, 플래시 메모리 기반의 Solid State Disk (이하 SSD)의 경우에도 저장장치 내에 버퍼 캐시와 FTL이 함께 존재하도록 설계되어 있다.
현재까지 제안된 플래시를 위한 버퍼 관리 기법은 크게 일반적인 LRU 기법, CFLRU 기법, FAB 기법이 존재한다. LRU 기법은 일반적인 디스크 기반의 저장장치에서 사용되는 방식과 동일하며, 따라서 자주 사용되지 않는 데이터를 버퍼 캐시 내에서 내보냄으로써 빈번히 사용되는 데이터가 보다 빠른 버퍼 캐시 내에 유지되도록 하는 기술을 말한다. CFLRU 기법은 읽기 연산에 비해 쓰기 연산이 느린 플래시 저장 장치의 특성을 고려한 것으로, 버퍼 캐시 내에서 수정된 데이터가 있는 페이지(이하 dirty 페이지)을 가급적이면 버퍼 캐시 내에서 플래시 메모리로 내보내지 않음으로써 쓰기 연산의 횟수를 감소시키는 기술을 말한다. CFLRU의 경우 쓰기 횟수를 줄여 가비지 컬렉션 부하도 함께 줄일 수 있다. 반면 FAB 기법은 동일한 플래시 메모리 블록 내의 데이터를 버퍼 캐시에서 한꺼번에 내보냄으로써 가비지 컬렉션에 따른 부하를 감소시키는 기술을 말한다.
플래시 기반의 저장장치는 대부분 특정 크기의 버퍼 캐시가 있으나, 종래의 FTL 기술들은 버퍼 캐시의 내용을 가비지 컬렉션 시 활용을 하지 않았다. 하지만 FTL이 버퍼 캐시에 저장되어 있는 내용을 알 수 있는 경우에는 가비지 컬렉션 중 발생하는 페이지 복사의 많은 부분이 불필요함을 알 수 있다. 도 5는 가비지 컬렉션 중 블록 합병 단계에서 발생하는 불필요한 복사 과정을 보여주고 있다.
도 5에서 버퍼 캐시(501)에는 총 4개의 페이지, P20, P21, P2, P3이 저장되어 있다. 이때 P20, P21은 플래시에 저장된 페이지와 동일한 데이터를 지닌 페이지를 나타내며, 본 특허에서는 clean 페이지(502)라고 부른다. 반면 P2, P3는 플래시에 저장된 페이지와 다른 데이터가 있으며, 본 특허에서는 dirty 페이지(503)라고 부른다. 버퍼 캐시에 저장된 페이지가 새로운 버전의 데이터를 저장하고 있기 때문에 버퍼 캐시의 공간이 부족하여 dirty 페이지가 버퍼 캐시에서 쫓겨날 때 해당 데이터는 반드시 플래시에 기록되어야만 한다. 로그 블록(504)에는 P0, P1 페이지가 저장되어 있다. 데이터 블록(505)에는 P0, P1, P2, P3 페이지들이 저장되어 있으며, P0, P1 페이지에 대한 새로운 데이터가 로그 블록에 저장되어 있으므로 P0, P1 페이지는 무효화 된 페이지 상태이다. 도 5에서는 1개의 로그 블록과 1개의 데이터 블록만 보여주고 있으나, 실제로는 이보다 많은 로그 블록 및 데이터 블록이 존재한다.
도 5의 상태에서 가비지 컬렉션이 수행될 때, 로그 블록(504)이 교체될 블록으로 선택되었다고 가정한다. 이때 FTL은 블록 합병 연산 과정으로 로그 블록과 데 이터 블록 내의 유효한 페이지를 빈 블록(506)에 복사하게 된다. 이 경우 페이지 P0, P1, P2, P3이 빈 블록에 복사되며, 따라서 4번의 페이지 읽기와 4번의 페이지 쓰기 연산이 수행된다. 하지만, 만약 FTL이 버퍼 캐시 내의 데이터를 보게 된다면, 페이지 P2, P3에 대한 복사 연산이 불필요함을 알 수 있다. 이는 버퍼 캐시에 이미 새로운 데이터를 지닌 P2, P3 페이지가 존재하며, 따라서 데이터 블록 내의 P2, P3 페이지는 이미 오래된 페이지를 저장하고 있기 때문이다. 즉, 블록 합병 시 버퍼 캐시 내에 dirty 상태로 있는 P2, P3 페이지에 대한 복사는 불필요하다.
본 발명은 FTL이 가비지 컬렉션 중 합병 연산을 하는 과정에서 도 5에서와 같이 불필요한 페이지에 대한 복사가 발생할 때, 플래시에 저장된 페이지 대신 버퍼 캐시 내에 저장된 최신 데이터를 플래시에 직접기록함으로써 불필요한 복사 문제를 해결한다. 이를 위해서는 FTL은 버퍼 캐시를 직접적으로 접근할 수 있어야만 한다. 실제로 SSD나 휴대폰과 같은 시스템에서 FTL은 버퍼 캐시와 동일한 시스템에 구현되기 때문에, FTL이 버퍼 캐시에 접근하는 것은 쉽게 적용될 수 있다. 더불어 본 발명에서는 가비지 컬렉션 중 교체 대상 블록 선택 시, 버퍼 캐시 내용을 바탕으로 어떠한 로그 블록이 교체 대상으로 선택되는 것이 향후 불필요한 데이터 복사 감소에 더 유리한지를 분석하고, 해당 로그 블록을 교체 대상 블록으로 선택하는 블록 선택 기술도 함께 제공한다.
본 발명은 종래 기술과 달리 FTL에서 가비지 컬렉션을 수행하는 중 버퍼 캐시의 내용을 직접 분석하고, 이러한 분석 내용을 바탕으로 불필요하게 복사되는 페이지를 판별하며, 판별된 페이지들에 대한 불필요한 복사를 제거함으로써, 가비지 컬렉션 중 발생하는 부가적인 읽기, 쓰기 횟수를 감소시켜 전반적인 플래시 저장 장치의 성능을 개선 시킨다. 더불어 플래시 블록의 삭제 횟수 역시도 함께 감소시켜 플래시 저장 장치의 수명 역시도 증가시키는 효과를 제공한다.
(1) 버퍼 캐시를 고려한 블록 합병
도 6은 본 발명에서 사용한 불필요한 페이지 복사 제거 과정을 보여준다. 버퍼 캐시(600)에는 총 8개의 페이지가 저장되어 있으며, 버퍼 캐시 내에 저장된 P20, P10, P12, P15, P16, P17은 clean 페이지를 나타내며, 반면 P2, P4는 dirty 페이지를 나타낸다. (601)은 로그 버퍼를 나타내며 여기서는 L0, L1 두 개의 로그 블록으로 구성되어 있다고 가정한다. 각 로그 블록은 총 4개의 페이지를 저장하고 있다. 여기서 P0, P1, P6, P7은 실제 로그 블록 L0에 저장된 페이지를 나타낸다. (602)는 데이터 블록을 나타내며 여기서는 B0, B1 두 개의 데이터 블록만이 그려져 있다. 여기서 P0, P1, P6, P7은 이미 새로운 데이터가 로그 블록에 저장되어 있으므로 무효화 된 상태이며, 반면 P2, P3, P4, P5는 로그 블록에 새로운 데이터가 없으므로 유효한 상태이다.
블록 합병 시 L0 로그블록(603)이 교체 블록으로 선택되었다고 가정하며, 블록 합병 과정에서 데이터 블록 B0와 B1 그리고 로그 블록 L0에 저장된 P0, P1, P2, P3, P4, P5, P6, P7 페이지들 새로운 빈 블록 N0와 N1으로(604) 복사되게 된다. 이 경우 총 8개의 페이지에 대한 읽기 연산과 8개의 페이지에 대한 쓰기 연산이 발생하게 된다. 하지만 만약 FTL이 버퍼 캐시 내용을 참조한다면 페이지 P2와 P4에 대한 복사 연산은 불필요하다는 것을 판단할 수 있다. 이는 P2와 P4가 dirty 페이지이기 때문이다. 따라서 본 특허에서는 데이터 블록에 있는 페이지 P2와 P4를 빈 블록에 복사하는 대신, 버퍼 캐시에 있는 P2와 P4를 직접 빈 블록에 복사를 한다. 버퍼 캐시에는 플래시 메모리보다 항상 최신의 데이터가 저장되어 있기 때문에 블록 합병 중 페이지 P2와 P4에 대한 복사는 유효한 것이 되며, 또한 불필요한 페이지 이주를 줄 일 수 있다.
이러한 기술을 통해 얻을 수 있는 이득은 아래 3가지로 요약될 수 있다. 첫 번째, 블록 합병 과정에서 읽기 시간이 감소 된다. 버퍼 캐시의 읽기 성능은 플래시의 읽기 성능에 비해 매우 빠르게 때문에 도 6에서와 같이 버퍼 캐시에서 직접 페이지 P2와 P4를 읽어 플래시에 기록할 경우, 해당 읽기 성능이 개선될 수 있다. 두 번째, dirty 페이지인 P2와 P4를 블록 합병 단계에서 플래시에 기록함으로써 이후 P2와 P4가 플래시에 쓰이는 과정을 막을 수 있다. 즉, 버퍼 캐시 내의 페이지 P2와 P4의 데이터는 블록 합병 시 플래시에 기록되고 따라서 합병 연산 이후 두 페이지는 clean 상태로 변경된다. 따라서 특정 시간이 흐른 후 페이지 P2와 P4가 버퍼 캐시에서 쫓겨날 때 다시 플래시에 기록되는 쓰기 과정이 없어지게 된다. 마지막 세 번째는 이러한 쓰기 과정을 제거함으로써 추가적인 블록 합병 횟수가 감소 된다. 만약 버퍼 캐시 내의 P2와 P4가 블록 합병 중 빈 블록에 복사되지 않을 경우 P2와 P4는 dirty 상태로 유지될 것이며, 따라서 일정 시간이 흐른 후 버퍼 캐시에 서 쫓겨나면서 플래시의 로그 블록에 기록될 것이다. 한번 로그 블록에 기록된 페이지 데이터는 반드시 블록 합병을 통해서만 데이터 블록에 기록될 수 있으며, 이러한 로그 블록 쓰기 연산은 추가적인 블록 합병을 발생시킨다. 반면 P2와 P4를 블록 합병 시 빈 블록에 기록할 경우, 로그 블록에 대한 페이지 쓰기를 방지하기 때문에 부가적인 블록 합병은 감소 될 수 있다.
(2) 버퍼 캐시를 고려한 교체 블록 선택
FTL에서 가비지 컬렉션 수행 시 블록 합병 이전에 반드시 교체될 대상 로그 블록을 선택하는 과정이 수행되어야만 한다. 이때 어떠한 로그 블록이 선정되는지에 따라 전반적인 합병 비용이 크게 영향을 받는다. 도 7은 어떤 로그 블록이 교체 대상 블록으로 선정되는지에 따라 변화되는 가비지 수집 비용을 보여준다. 도 7에서 버퍼 캐시(700)에는 총 7개의 페이지가 보이고 있다. 이때 P1, P2, P3 페이지는 지역성이 높은 페이지(이하 hot 페이지)이며 빈번하게 해당 데이터가 갱신되는 페이지이다. 반면 P7과 P6 페이지는 지역성이 낮은 페이지(이하 cold 페이지)로 한번 데이터가 갱신된 후 거의 해당 데이터가 갱신되지 않는 페이지를 나타낸다. 로그 버퍼(701)은 L0, L1 두 개의 로그 블록으로 구성되어 있다고 가정한다. 각 로그 블록은 4개의 페이지를 저장할 수 있다. 여기서 P0, P4, P5 만이 유효한 데이터를 가지고 있다. 데이터 블록(702)은 B0, B1 두 개의 데이터 블록만이 그려져 있다. 여기서 P0, P4, P5는 이미 새로운 데이터가 로그 블록에 저장되어 있으므로 무효화 된 상태이며, 반면 P1, P2, P3, P6, P7은 로그 블록에 새로운 데이터가 없으므로 유효한 상태이다.
도 7의 상태에서 만약 로그 블록 L0가 합병 대상 블록으로 선택되었고 버퍼 내용을 고려한 합병 연산을 수행할 경우, 페이지 P0만이 로그 블록 L0에서 빈 블록으로 복사될 것이며, 반면 페이지 P1, P2, P3은 버퍼 캐시에서 빈 블록으로 직접 복사될 것이다. 이 경우에 첫 번째로 3개의 페이지에 대한 읽기 시간이 감소 될 것이며, 두 번째로 P1, P2, P3 페이지가 블록 합병 후 clean 상태가 됨에 따라 향후 3개의 페이지 쓰기 횟수가 감소 될 것이고, 마지막으로 이러한 쓰기 횟수 감소로 인해 합병 횟수 역시도 감소 될 것이다. 반면 로그 블록 L1이 합병 대상 블록으로 선택되고 버퍼 내용을 고려한 합병 연산을 수행할 경우, 페이지 P6, P7이 버퍼 캐시에서 빈 블록으로 복사될 것이며, 따라서 2개의 페이지 쓰기 횟수가 향후 감소 될 것이다. 따라서 L1 보다 L0를 교체 대상으로 선택하는 것이 보다 유리한 것으로 판단된다.
하지만 L0와 연관된 버퍼 캐시 내의 페이지 P1, P2, P3은 지역성이 높은 데이터를 저장하고 있고, 따라서 매우 빈번하게 갱신되기 때문에, 버퍼를 고려한 합병 연산 이후 해당 페이지의 데이터가 새롭게 갱신될 가능성이 크다. 이 경우에는 합병 연산 중 P1, P2, P3을 빈 플래시 블록에 복사하는 과정이 무의미해 지는데, 이는 버퍼 캐시 내 P1, P2, P3가 합병 연산 후 clean 페이지로 변경되었다가 빠른 시간내에 dirty 페이지로 변경되고, 따라서 추가적인 쓰기 연산을 발생시킬 가능성이 높기 때문이다.
예를 들어 로그 블록 L0가 합병된 후 clean 상태로 변환된 페이지 P1, P2, P3가 다시 dirty 상태로 변경될 경우를 가정해 보면, 3개의 페이지에 대한 읽기 횟수가 감소 되는 것은 유지되지만 이후 3개의 페이지에 대한 쓰기 횟수는 감소 되지 않으며, 따라서 향후 합병 횟수 역시도 감소 되지 않을 것이다. 반면 로그 블록 L1이 합병된 경우 페이지 P6, P7은 다시 갱신될 확률이 낮기 때문에 clean 상태로 계속 유지가 될 것이며, 따라서 2개의 페이지 쓰기 횟수가 감소 될 것이다. 결론적으로 L1를 교체 대상 블록으로 선택하는 것이 가비지 컬렉션 비용 감소에 더 도움이 됨을 알 수 있다.
따라서 본 특허에서는 교체될 로그 블록을 선정하는 과정에서 가급적 버퍼 캐시 내의 많은 cold 페이지들과 연관된 로그 블록을 교체 대상으로 선택함으로써 향후 가비지 컬렉션에 따른 부하가 줄어들 수 있도록 시도를 한다. 하지만 특정 로그 블록이 많은 cold 페이지들와 연관되어 있다 하더라도 해당 로그 블록이 많은 데이터 블록과 연관되어 있을 경우 전체적인 페이지 복사 횟수가 증가할 수 있다. 이는 선택된 교체 블록과 연관된 데이터 블록의 개수가 증가 될수록 (즉, 높은 연관도가 높아질수록) 복사해야할 페이지의 개수가 증가하기 때문이다. 이러한 문제를 막기 위해 본 특허에서는 블록 합병 시 플래시 내부에서 이주 되는 비용과 불필요한 페이지 이주를 제거함으로써 얻게 되는 이득을 고려하여 교체될 블록을 선정하게 되며, 이는 아래와 같은 수식을 통해 표현될 수 있다.
* 예상되는 합병 비용(Lx) = 실제 합병 비용(Lx) - 불필요한 페이지 이주 제거에 따른 이득(Lx)
위의 수식에서 '실제 합병 비용(Lx)'는 Lx라는 로그 블록이 교체 블록으로 선정되었을 때, 일반적인 합병에 따라 발생하는 플래시 페이지 복사 및 블록 삭제 비용을 나타낸다. 반면 '불필요한 페이지 이주 제거에 따른 이득(Lx)'은 로그 블록 Lx에 대한 블록 합병 시 불필요한 페이지 이주 제거를 통해 얻을 수 있는 플래시 페이지 이주 비용을 나타낸다. 본 특허에서는 '예상되는 합병 비용'이 가장 작은 로그 블록 Lx를 교체 대상으로 선정하며, 따라서 '실제 합병 비용(Lx) - 불필요한 페이지 이주 제거에 따른 이득(Lx)' 수식을 이용할 경우 실제 합병 비용이 가장 작으면서도 불필요한 페이지 이주 제거에 따른 이득이 가장 큰 로그 블록을 선택하게 된다.
도 1은 플래시 메모리의 간략한 구조를 나타낸 블록도.
도 2는 로그 버퍼 기반의 FTL의 동작과정을 나타낸 블록도.
도 3은 합병 연산의 동작과정을 나타낸 블록도.
도 4는 버퍼 캐시와 FTL과 플래시 메모리의 관계를 나타낸 블록도.
도 5는 합병 연산 시 불필요한 페이지 이주를 나타낸 블록도.
도 6은 합병 연산 시 불필요한 페이지 이주의 제거 방식을 나타낸 블록도.
도 7은 가비지 컬렉션 시 합병 대상 블록 선택에 따른 이득의 차이를 나타낸 블록도.

Claims (9)

  1. 낸드 플래시 메모리 기반의 저장 장치를 사용하며 호스트 시스템 혹은 저장 장치 자체 내에 버퍼 캐시가 존재하는 경우 FTL이 버퍼 캐시 내의 데이터를 참고하여 가비지 컬렉션을 수행하는 장치 및 방법
  2. 상기 1항에서, 가비지 컬렉션 시 버퍼 캐시의 내용을 고려하여 교체 대상 로그 블록을 선정하고 블록 합병 시 버퍼 내용을 고려하여 이를 수행하는 장치 및 방법
  3. 상기 2항에서, 블록 합병 시 합병 대상이 되는 블록과 연관된 페이지들이 빈 블록으로 이주 될 때, 버퍼 캐시 내에 해당 블록에 대한 dirty 페이지가 존재할 때, 상기 페이지에 대한 플래시 내의 복사가 불필요하다고 구분하는 장치 및 방법
  4. 상기 3항에서, 합병 연산 시 플래시 내의 특정 페이지가 불필요하게 복사될 때, 해당 페이지에 대응되는 버퍼 캐시 내의 dirty 페이지를 직접 플래시 메모리의 대상 빈 블록으로 복사하여 불필요한 복사 과정을 제거하는 장치 및 방법
  5. 상기 4항에서, 블록 합병 시 버퍼 캐시에서 빈 블록으로 특정 dirty 페이지가 직접적으로 복사된 경우, 해당 페이지를 clean 상태로 변경하고 이를 버퍼 캐시 내에 유지하는 장치 및 방법.
  6. 상기 5항에서, 불필요한 페이지 복사를 제거하고 이로 인해 플래시 읽기 횟수와, 향후 추가적인 쓰기 횟수와, 블록 합병의 횟수를 감소시키는 장치 및 방법
  7. 상기 2항에서 교체 대상 로그 블록 선정 시, 플래시 저장 장치 내의 하나 이상의 로그 블록들을 대상으로, 각 로그 블록 합병 시 불필요한 페이지 이주를 제거함으로써 얻게 되는 이득과 실제 블록 합병 비용을 고려하여 대상 교체 로그 블록을 선택하는 장치 및 방법
  8. 상기 7항에서 불필요한 페이지 이주 제거를 통해 얻을 수 있는 이득을 해당 로그 블록과 연관된 페이지들이 버퍼 캐시에 있을 때, 버퍼 캐시에 있는 페이지 중 cold 페이지에 대한 불필요한 복사를 감소시킴으로써 얻게 될 읽기 횟수 감소와 향후 쓰기 횟수 감소 횟수와 블록 합병 횟수 감소로 계산하는 장치 및 방법.
  9. 상기 7항에서 최종적으로 교체될 로그 블록 선정 시 각 로그 블록을 대상으로 상기 로그 블록에 대한 블록 합병 수행 시 요구되는 플래시 페이지 복사 및 삭제 비용에 상기 8항에서 계산한 불필요한 페이지 이주 제거에 따른 이득을 뺀 값이 가장 작은 로그 블록을 교체 대상으로 선택하는 장치 및 방법.
KR1020090033631A 2009-04-17 2009-04-17 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치 KR101067018B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090033631A KR101067018B1 (ko) 2009-04-17 2009-04-17 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090033631A KR101067018B1 (ko) 2009-04-17 2009-04-17 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치

Publications (2)

Publication Number Publication Date
KR20100115090A true KR20100115090A (ko) 2010-10-27
KR101067018B1 KR101067018B1 (ko) 2011-09-22

Family

ID=43134060

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090033631A KR101067018B1 (ko) 2009-04-17 2009-04-17 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치

Country Status (1)

Country Link
KR (1) KR101067018B1 (ko)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101135313B1 (ko) * 2010-04-23 2012-04-17 성균관대학교산학협력단 요청 동작을 스케줄링하는 낸드 플래시 메모리 장치 및 방법
KR101278591B1 (ko) * 2011-05-30 2013-06-25 성균관대학교산학협력단 플래시 메모리 시스템 및 그 동작 방법
KR20170003776A (ko) * 2015-06-30 2017-01-10 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
CN106815152A (zh) * 2016-12-27 2017-06-09 华中科技大学 一种优化页级闪存转换层的方法
US9715344B2 (en) 2014-03-12 2017-07-25 Samsung Electronics Co., Ltd. Memory device and controlling method of the same
US9983824B2 (en) 2013-09-27 2018-05-29 Samsung Electronics Co., Ltd. Data mirroring control apparatus and method
KR20180076276A (ko) * 2016-12-27 2018-07-05 한양대학교 산학협력단 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
KR102076248B1 (ko) * 2018-08-08 2020-02-11 아주대학교산학협력단 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
CN110888600A (zh) * 2019-11-13 2020-03-17 西安交通大学 一种面向nand闪存的缓冲区管理方法
US11119950B2 (en) 2018-11-13 2021-09-14 SK Hynix Inc. Storage device and method of operating the same

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140040998A (ko) 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
KR102002830B1 (ko) 2012-09-28 2019-07-23 삼성전자 주식회사 세그먼트 클리닝 장치 및 방법
KR102007650B1 (ko) 2012-10-05 2019-10-23 삼성전자 주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
KR102544162B1 (ko) 2017-07-11 2023-06-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100739722B1 (ko) * 2005-08-20 2007-07-13 삼성전자주식회사 플래시 메모리 관리 방법 및 플래시 메모리 시스템
KR100843543B1 (ko) * 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
KR101017067B1 (ko) * 2008-04-08 2011-02-25 재단법인서울대학교산학협력재단 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101135313B1 (ko) * 2010-04-23 2012-04-17 성균관대학교산학협력단 요청 동작을 스케줄링하는 낸드 플래시 메모리 장치 및 방법
KR101278591B1 (ko) * 2011-05-30 2013-06-25 성균관대학교산학협력단 플래시 메모리 시스템 및 그 동작 방법
US10152272B2 (en) 2013-09-27 2018-12-11 Samsung Electronics Co., Ltd. Data mirroring control apparatus and method
US9983824B2 (en) 2013-09-27 2018-05-29 Samsung Electronics Co., Ltd. Data mirroring control apparatus and method
US9715344B2 (en) 2014-03-12 2017-07-25 Samsung Electronics Co., Ltd. Memory device and controlling method of the same
KR20170003776A (ko) * 2015-06-30 2017-01-10 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
US11645199B2 (en) 2015-06-30 2023-05-09 Samsung Electronics Co., Ltd. Storage device and garbage collection method thereof
KR20180076276A (ko) * 2016-12-27 2018-07-05 한양대학교 산학협력단 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
CN106815152B (zh) * 2016-12-27 2019-05-31 华中科技大学 一种优化页级闪存转换层的方法
CN106815152A (zh) * 2016-12-27 2017-06-09 华中科技大学 一种优化页级闪存转换层的方法
KR102076248B1 (ko) * 2018-08-08 2020-02-11 아주대학교산학협력단 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
US11119950B2 (en) 2018-11-13 2021-09-14 SK Hynix Inc. Storage device and method of operating the same
CN110888600A (zh) * 2019-11-13 2020-03-17 西安交通大学 一种面向nand闪存的缓冲区管理方法

Also Published As

Publication number Publication date
KR101067018B1 (ko) 2011-09-22

Similar Documents

Publication Publication Date Title
CN110678836B (zh) 用于键值存储的持久性存储器
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
KR101982251B1 (ko) 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법
US20180356984A1 (en) Memory system and method of controlling memory system
US10740251B2 (en) Hybrid drive translation layer
US7761655B2 (en) Storage system and method of preventing deterioration of write performance in storage system
Jiang et al. S-FTL: An efficient address translation for flash memory by exploiting spatial locality
KR101663667B1 (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
CN108604165B (zh) 存储装置
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
KR20150083264A (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
CN109783398A (zh) 一种基于相关感知页面级ftl固态硬盘性能优化方法
US20190303019A1 (en) Memory device and computer system for improving read performance and reliability
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
CN108845957B (zh) 一种置换和回写自适应的缓冲区管理方法
US20100318726A1 (en) Memory system and memory system managing method
KR20130022604A (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
KR101191650B1 (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR101179027B1 (ko) 버퍼의 지역성에 기초한 가비지 컬렉션을 수행하는 낸드 플래시 메모리 시스템 및 방법
KR100987251B1 (ko) 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법

Legal Events

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

Payment date: 20140822

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170824

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180820

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190917

Year of fee payment: 9