KR101067018B1 - 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치 - Google Patents

가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치 Download PDF

Info

Publication number
KR101067018B1
KR101067018B1 KR1020090033631A KR20090033631A KR101067018B1 KR 101067018 B1 KR101067018 B1 KR 101067018B1 KR 1020090033631 A KR1020090033631 A KR 1020090033631A KR 20090033631 A KR20090033631 A KR 20090033631A KR 101067018 B1 KR101067018 B1 KR 101067018B1
Authority
KR
South Korea
Prior art keywords
flash memory
block
page
pages
buffer cache
Prior art date
Application number
KR1020090033631A
Other languages
English (en)
Other versions
KR20100115090A (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

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 Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명은 플래시 메모리에서의 가비지 컬렉션에 관한 것으로, 본 발명의 일 실시 예에 따른 가비지 컬렉션 수행 방법은 플래시 메모리 변환 계층(FTL)에서 가비지 컬렉션을 수행하는 중 버퍼 캐시의 내용을 직접 분석하고, 이러한 분석 내용을 바탕으로 불필요하게 복사되는 페이지를 판별하며, 판별된 페이지들에 대한 불필요한 복사를 제거함으로써, 가비지 컬렉션 중 발생하는 부가적인 읽기, 쓰기 횟수를 감소시켜 전반적인 플래시 저장 장치의 성능을 개선할 수 있다.
가비지 컬렉션, 플래시 메모리 변환 계측(FTL)

Description

가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치{Method for performing garbage collection and flash memory apparatus using the method}
본 발명은 플래시 메모리에서의 가비지 컬렉션에 관한 것으로, 더 상세하게는 가비지 컬렉션에 따른 성능 저하를 감소시킬 수 있는 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치에 관한 것이다.
삭제
삭제
삭제
삭제
플래시 메모리 변환 계층 (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)에서 가비지 컬렉션을 수행하는 중 버퍼 캐시의 내용을 직접 분석하고, 이러한 분석 내용을 바탕으로 불필요하게 복사되는 페이지를 판별하며, 판별된 페이지들에 대한 불필요한 복사를 제거함으로써, 가비지 컬렉션 중 발생하는 부가적인 읽기, 쓰기 횟수를 감소시켜 전반적인 플래시 저장 장치의 성능을 개선할 수 있는 가비지 컬렉션 수행 방법 및 이 방법을 사용한 플래시 메모리 장치를 제공하는 것이다.
삭제
삭제
상기 기술적 과제를 달성하기 위한, 본 발명의 일 실시 예에 따른 버퍼 캐시, 플래시 메모리 변환 계층(Flash Translation Layer) 및 플래시 메모리를 포함하는 플래시 메모리 장치에서, 상기 플래시 메모리 변환 계층에서 가비지 컬렉션을 수행하는 방법은 상기 플래시 메모리에서 교체될 로그 블록을 선택하는 단계; 상기 플래시 메모리에 저장된 데이터와 다른 데이터를 포함한 페이지를 상기 버퍼 캐시가 저장하고 있는지 판단하는 단계; 및 상기 교체될 로그 블록의 페이지를 상기 플래시 메모리의 빈 블록에 복사하고, 상기 버퍼 캐시에 다른 데이터를 포함한 페이지가 있는 경우, 상기 버퍼 캐시로부터 상기 다른 데이터를 포함한 페이지를 상기 플래시 메모리의 빈 블록에 복사하는 단계를 포함하여 이루어진다.
상기 가비지 컬렉션 수행 방법은 상기 플래시 메모리의 데이터 블록에 저장된 페이지들 중 상기 교체될 로그 블록의 페이지와 동일하지 않은 페이지인 유효 페이지를 상기 빈 블록에 복사하는 단계를 더 포함하는 것을 특징으로 한다.
상기 가비지 컬렉션 수행 방법은 상기 플래시 메모리의 데이터 블록에 저장된 페이지들 중 상기 교체될 로그 블록의 페이지와 동일한 페이지인 무효 페이지 및 상기 버퍼 캐시에 저장된 페이지와 동일한 페이지는 상기 빈 블록에 복사하지 않는 것을 특징으로 한다.
상기 교체될 로그 블록을 선택하는 단계는 상기 버퍼 캐시에 지역성이 낮은 페이지들과 연관된 로그 블록을 상기 교체될 로그 블록으로 선택하는 것을 특징으로 한다.
상기 교체될 로그 블록을 선택하는 단계는 상기 플래시 메모리의 블록 합병시, 상기 플래시 메모리 내부에서의 이주 비용과 불필요한 페이지의 이주를 제거함으로써 얻는 이익을 고려하여 상기 교체될 로그 블록을 선택하는 것을 특징으로 한다.
상기 가비지 컬렉션 수행 방법은 상기 불필요한 페이지의 이주를 제거함으로써 얻는 이득은 해당 로그 블록과 연관된 페이지들이 상기 버퍼 캐시에 있을 때, 상기 버퍼 캐시에 있는 페이지 중 지역성이 낮은 페이지에 대한 불필요한 복사를 감소시킴으로써 얻게 될 읽기 횟수 감소와 쓰기 횟수 감소 횟수와 블록 합병 횟수 감소로 계산되는 것을 특징으로 한다.
상기 플래시 메모리는 낸드 플래시 메모리인 것을 특징으로 한다.
상기 다른 기술적 과제를 달성하기 위한, 본 발명의 다른 실시 예에 따른 버퍼 캐시, 플래시 메모리 변환 계층(Flash Translation Layer) 및 플래시 메모리를 포함하는 플래시 메모리 장치에 있어서, 상기 플래시 메모리 변환 계층은, 상기 플래시 메모리에서 교체될 로그 블록을 선택하고, 상기 플래시 메모리에 저장된 데이터와 다른 데이터를 포함한 페이지를 상기 버퍼 캐시가 저장하고 있는지 판단하고, 상기 교체될 로그 블록의 페이지를 상기 플래시 메모리의 빈 블록에 복사하고, 상기 버퍼 캐시에 다른 데이터를 포함한 페이지가 있는 경우, 상기 버퍼 캐시로부터 상기 다른 데이터를 포함한 페이지를 상기 플래시 메모리의 빈 블록에 복사하는 것을 특징으로 한다.
상기 플래시 메모리 변환 계층은 상기 플래시 메모리의 블록 합병시, 상기 플래시 메모리 내부에서의 이주 비용과 불필요한 페이지의 이주를 제거함으로써 얻는 이익을 고려하여 상기 교체될 로그 블록을 선택하는 것을 특징으로 한다.
본 발명의 일 실시 예에 따른 가비지 컬렉션 수행 방법은 플래시메모리 변환 계층(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은 본 발명의 일 실시 예에 따른 가비지 컬렉션 수행 방법을 설명하기 위한 도면이며, 불필요한 페이지 복사 제거 과정을 보여준다.
도 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에 대한 복사는 유효한 것이 되며, 또한 불필요한 페이지 이주를 줄 일 수 있다.
따라서, 본 발명의 일 실시 예에 따른 가비지 컬렉션 수행 방법은 다음과 같은 효과를 얻을 수 있다.
첫 번째, 블록 합병 과정에서 읽기 시간이 감소 된다. 버퍼 캐시의 읽기 성능은 플래시의 읽기 성능에 비해 매우 빠르게 때문에 도 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 페이지들과 연관되어 있다 하더라도 해당 로그 블록이 많은 데이터 블록과 연관되어 있을 경우 전체적인 페이지 복사 횟수가 증가할 수 있다. 이는 선택된 교체 블록과 연관된 데이터 블록의 개수가 증가 될수록 (즉, 높은 연관도가 높아질수록) 복사해야 할 페이지의 개수가 증가하기 때문이다. 이러한 문제를 막기 위해 본 발명의 다른 실시 예서는 블록 합병 시 플래시 내부에서 이주 되는 비용과 불필요한 페이지 이주를 제거함으로써 얻게 되는 이득을 고려하여 교체될 블록을 선정하게 되며, 이는 다음 수학식 1과 같이 정의한다.
예상되는 합병 비용(Lx) = 실제 합병 비용(Lx) - 불필요한 페이지 이주 제거에 따른 이득(Lx)
삭제
삭제
삭제
삭제
삭제
삭제
삭제
상기 수학식 1에서 실제 합병 비용(Lx)은 Lx라는 로그 블록이 교체 블록으로 선정되었을 때, 일반적인 합병에 따라 발생하는 플래시 페이지 복사 및 블록 삭제 비용을 나타낸다. 반면 불필요한 페이지 이주 제거에 따른 이득(Lx)은 로그 블록 Lx에 대한 블록 합병 시 불필요한 페이지 이주 제거를 통해 얻을 수 있는 플래시 페이지 이주 비용을 나타낸다. 본 발명의 다른 실시 예에서는 예상되는 합병 비용이 가장 작은 로그 블록 Lx를 교체 대상으로 선정하며, 따라서 상기 수학식 1을 이용할 경우, 실제 합병 비용이 가장 작으면서도 불필요한 페이지 이주 제거에 따른 이득이 가장 큰 로그 블록을 선택하게 된다.
본 발명에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서 상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 발명에서 인용하는 공개 문헌, 특허 출원, 특허 등을 포함하는 모든 문헌들은 각 인용 문헌이 개별적으로 및 구체적으로 병합하여 나타내는 것 또는 본 발명에서 전체적으로 병합하여 나타낸 것과 동일하게 본 발명에 병합될 수 있다.
본 발명의 이해를 위하여, 도면에 도시된 바람직한 실시 예들에서 참조 부호를 기재하였으며, 본 발명의 실시 예들을 설명하기 위하여 특정 용어들을 사용하였으나, 특정 용어에 의해 본 발명이 한정되는 것은 아니며, 본 발명은 당업자에 있어서 통상적으로 생각할 수 있는 모든 구성 요소들을 포함할 수 있다.
본 발명은 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 발명은 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 본 발명에의 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 발명은 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 발명은 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어 시스템들, 소프트웨어, 상기 시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
본 발명의 명세서(특히 특허청구범위에서)에서 “상기”의 용어 및 이와 유사한 지시 용어의 사용은 단수 및 복수 모두에 해당하는 것일 수 있다. 또한, 본 발명에서 범위(range)를 기재한 경우 상기 범위에 속하는 개별적인 값을 적용한 발명을 포함하는 것으로서(이에 반하는 기재가 없다면), 발명의 상세한 설명에 상기 범위를 구성하는 각 개별적인 값을 기재한 것과 같다. 마지막으로, 본 발명에 따른 방법을 구성하는 단계들에 대하여 명백하게 순서를 기재하거나 반하는 기재가 없다면, 상기 단계들은 적당한 순서로 행해질 수 있다. 반드시 상기 단계들의 기재 순서에 따라 본 발명이 한정되는 것은 아니다. 본 발명에서 모든 예들 또는 예시적인 용어(예들 들어, 등등)의 사용은 단순히 본 발명을 상세히 설명하기 위한 것으로서 특허청구범위에 의해 한정되지 않는 이상 상기 예들 또는 예시적인 용어로 인해 본 발명의 범위가 한정되는 것은 아니다. 또한, 당업자는 다양한 수정, 조합 및 변경이 부가된 특허청구범위 또는 그 균등물의 범주 내에서 설계 조건 및 팩터에 따라 구성될 수 있음을 알 수 있다.
도 1은 플래시 메모리의 간략한 구조를 나타낸 블록도.
도 2는 로그 버퍼 기반의 FTL의 동작과정을 나타낸 블록도.
도 3은 합병 연산의 동작과정을 나타낸 블록도.
도 4는 버퍼 캐시와 FTL과 플래시 메모리의 관계를 나타낸 블록도.
도 5는 합병 연산 시 불필요한 페이지 이주를 나타낸 블록도.
도 6은 합병 연산 시 불필요한 페이지 이주의 제거 방식을 나타낸 블록도.
도 7은 가비지 컬렉션 시 합병 대상 블록 선택에 따른 이득의 차이를 나타낸 블록도.

Claims (9)

  1. 버퍼 캐시, 플래시 메모리 변환 계층(Flash Translation Layer) 및 플래시 메모리를 포함하는 플래시 메모리 장치에서, 상기 플래시 메모리 변환 계층에서 가비지 컬렉션을 수행하는 방법에 있어서,
    상기 플래시 메모리에서 교체될 로그 블록을 선택하는 단계;
    상기 플래시 메모리에 저장된 데이터와 다른 데이터를 포함한 페이지를 상기 버퍼 캐시가 저장하고 있는지 판단하는 단계; 및
    상기 교체될 로그 블록의 페이지를 상기 플래시 메모리의 빈 블록에 복사하고, 상기 버퍼 캐시에 다른 데이터를 포함한 페이지가 있는 경우, 상기 버퍼 캐시로부터 상기 다른 데이터를 포함한 페이지를 상기 플래시 메모리의 빈 블록에 복사하는 단계를 포함하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  2. 제 1 항에 있어서,
    상기 플래시 메모리의 데이터 블록에 저장된 페이지들 중 상기 교체될 로그 블록의 페이지와 동일하지 않은 페이지인 유효 페이지를 상기 빈 블록에 복사하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  3. 제 1 항에 있어서,
    상기 플래시 메모리의 데이터 블록에 저장된 페이지들 중 상기 교체될 로그 블록의 페이지와 동일한 페이지인 무효 페이지 및 상기 버퍼 캐시에 저장된 페이지와 동일한 페이지는 상기 빈 블록에 복사하지 않는 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  4. 제 1 항에 있어서,
    상기 교체될 로그 블록을 선택하는 단계는,
    상기 버퍼 캐시에 지역성이 낮은 페이지들과 연관된 로그 블록을 상기 교체될 로그 블록으로 선택하는 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  5. 제 1 항에 있어서,
    상기 교체될 로그 블록을 선택하는 단계는,
    상기 플래시 메모리의 블록 합병시, 상기 플래시 메모리 내부에서의 이주 비용과 불필요한 페이지의 이주를 제거함으로써 얻는 이익을 고려하여 상기 교체될 로그 블록을 선택하는 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  6. 제 5 항에 있어서,
    상기 불필요한 페이지의 이주를 제거함으로써 얻는 이득은 해당 로그 블록과 연관된 페이지들이 상기 버퍼 캐시에 있을 때, 상기 버퍼 캐시에 있는 페이지 중 지역성이 낮은 페이지에 대한 불필요한 복사를 감소시킴으로써 얻게 될 읽기 횟수 감소와 쓰기 횟수 감소 횟수와 블록 합병 횟수 감소로 계산되는 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  7. 제 1 항에 있어서,
    상기 플래시 메모리는,
    낸드 플래시 메모리인 것을 특징으로 하는 플래시 메모리 변환 계층에서 가비지 컬렉션 수행 방법.
  8. 버퍼 캐시, 플래시 메모리 변환 계층(Flash Translation Layer) 및 플래시 메모리를 포함하는 플래시 메모리 장치에 있어서,
    상기 플래시 메모리 변환 계층은,
    상기 플래시 메모리에서 교체될 로그 블록을 선택하고, 상기 플래시 메모리에 저장된 데이터와 다른 데이터를 포함한 페이지를 상기 버퍼 캐시가 저장하고 있는지 판단하고, 상기 교체될 로그 블록의 페이지를 상기 플래시 메모리의 빈 블록에 복사하고, 상기 버퍼 캐시에 다른 데이터를 포함한 페이지가 있는 경우, 상기 버퍼 캐시로부터 상기 다른 데이터를 포함한 페이지를 상기 플래시 메모리의 빈 블록에 복사하는 가비지 컬렉션을 수행하는 것을 특징으로 하는 플래시 메모리 장치.
  9. 제 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 KR20100115090A (ko) 2010-10-27
KR101067018B1 true 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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140044558A (ko) * 2012-10-05 2014-04-15 삼성전자주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
US9069673B2 (en) 2012-09-28 2015-06-30 Samsung Electronics Co., Ltd. Memory system configured to perform segment cleaning and related method of operation
US9244619B2 (en) 2012-09-27 2016-01-26 Samsung Electronics Co., Ltd. Method of managing data storage device and data storage device
US10671527B2 (en) 2017-07-11 2020-06-02 SK Hynix Inc. Data storage device and method for operating the same

Families Citing this family (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 성균관대학교산학협력단 플래시 메모리 시스템 및 그 동작 방법
KR102116702B1 (ko) 2013-09-27 2020-05-29 삼성전자 주식회사 데이터 미러링 제어 장치 및 방법
KR20150106778A (ko) 2014-03-12 2015-09-22 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 제어 방법
KR102509540B1 (ko) 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
CN106815152B (zh) * 2016-12-27 2019-05-31 华中科技大学 一种优化页级闪存转换层的方法
KR102033462B1 (ko) * 2016-12-27 2019-10-17 한양대학교 산학협력단 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치
KR102076248B1 (ko) * 2018-08-08 2020-02-11 아주대학교산학협력단 선택 지연 가비지 컬렉션 방법 및 이를 이용한 메모리 시스템
KR20200055349A (ko) 2018-11-13 2020-05-21 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
CN110888600B (zh) * 2019-11-13 2021-02-12 西安交通大学 一种面向nand闪存的缓冲区管理方法

Citations (3)

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

Patent Citations (3)

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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9244619B2 (en) 2012-09-27 2016-01-26 Samsung Electronics Co., Ltd. Method of managing data storage device and data storage device
US9069673B2 (en) 2012-09-28 2015-06-30 Samsung Electronics Co., Ltd. Memory system configured to perform segment cleaning and related method of operation
KR20140044558A (ko) * 2012-10-05 2014-04-15 삼성전자주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
US9323772B2 (en) 2012-10-05 2016-04-26 Samsung Electronics Co., Ltd. Segment group-based segment cleaning apparatus and methods for storage units
KR102007650B1 (ko) * 2012-10-05 2019-10-23 삼성전자 주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
US10671527B2 (en) 2017-07-11 2020-06-02 SK Hynix Inc. Data storage device and method for operating the same

Also Published As

Publication number Publication date
KR20100115090A (ko) 2010-10-27

Similar Documents

Publication Publication Date Title
KR101067018B1 (ko) 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
CN110678836B (zh) 用于键值存储的持久性存储器
KR101329937B1 (ko) 메모리 시스템
KR102114256B1 (ko) 플래시 메모리 디바이스 액세스 방법 및 장치
US9053007B2 (en) Memory system, controller, and method for controlling memory system
US10740251B2 (en) Hybrid drive translation layer
US10445022B1 (en) Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices
US10936203B2 (en) Memory storage device and system employing nonvolatile read/write buffers
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
Park et al. A pattern adaptive NAND flash memory storage structure
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
KR20230055978A (ko) 블록 수정 특성을 갖는 메모리의 데이터에 대해 순차 액세스하는 장치, 시스템, 및 그것의 동작 방법
Lv et al. Exploiting minipage-level mapping to improve write efficiency of NAND flash
KR101191650B1 (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR101179027B1 (ko) 버퍼의 지역성에 기초한 가비지 컬렉션을 수행하는 낸드 플래시 메모리 시스템 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR20100040559A (ko) 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 플래시 메모리 관리 방법및 장치
KR100994052B1 (ko) 플래시 변환 계층에서 수행되는 데이터 관리 방법 및 이를 수행하는 플래시 메모리 장치
Lee et al. Exploiting sequential and temporal localities to improve performance of NAND flash-based SSDs
KR100999111B1 (ko) 플래시 변환 계층 구조를 갖는 장치와 이를 이용한 선 반입 방법 및 플래시 변환 구조를 기반으로 한 비동기 쓰기 방법
Kim et al. Advil: A pain reliever for the storage performance of mobile devices
US11782854B2 (en) Cache architecture for a storage device
Chen et al. Reorder write sequence by hetero-buffer to extend SSD’s lifespan
KR101974731B1 (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