KR101017067B1 - 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 - Google Patents

낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 Download PDF

Info

Publication number
KR101017067B1
KR101017067B1 KR1020080032408A KR20080032408A KR101017067B1 KR 101017067 B1 KR101017067 B1 KR 101017067B1 KR 1020080032408 A KR1020080032408 A KR 1020080032408A KR 20080032408 A KR20080032408 A KR 20080032408A KR 101017067 B1 KR101017067 B1 KR 101017067B1
Authority
KR
South Korea
Prior art keywords
locality
log
block
data
garbage collection
Prior art date
Application number
KR1020080032408A
Other languages
English (en)
Other versions
KR20090107098A (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 KR1020080032408A priority Critical patent/KR101017067B1/ko
Publication of KR20090107098A publication Critical patent/KR20090107098A/ko
Application granted granted Critical
Publication of KR101017067B1 publication Critical patent/KR101017067B1/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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/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
    • 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

낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법 {Locality-Aware Garbage Collection Technique for NAND Flash Memory-Based Storage Systems}
본 발명은 낸드 플래시 메모리에서의 가비지 컬렉션에 따른 성능 저하를 감소시키는 방법에 관한 것으로, 더욱 상세하게는 작업부하의 지역성을 활용함으로써, 플래시 메모리 변환 계층의 가비지 컬렉션 동작 시 불필요한 읽기, 쓰기, 삭제 연산을 감소시켜 낸드 플래시 기반의 저장 장치의 성능을 향상시키는 방법에 관한 것이다.
(1) 플래시 메모리 변환 계층 (Flash Translation Layer, FTL)
일반적으로 낸드 플래시 메모리는 다수의 블록으로 구성되어 있으며, 또한 하나의 블록은 다수의 페이지로 이루어져 있다. 페이지는 읽기 및 쓰기 연산의 단위이며 반면 블록은 삭제 연산의 단위이다. 하드디스크와 달리 플래시 메모리는 덮어쓰기 연산을 지원하지 않으며, 따라서 페이지에 기록된 데이터를 수정하기 위해 서는 해당 페이지가 속한 블록 내의 모든 유효한 데이터(유효한 페이지)를 다른 빈 블록에 복사를 하고, 이전 블록을 삭제하는 과정을 필요로 한다. 이 과정은 다수의 페이지 복사(페이지 읽기 및 쓰기) 및 삭제 연산 과정을 수반하기 때문에 전반적인 낸드 플래시 저장 장치의 성능을 감소시킨다.
이러한 성능 감소를 줄이기 위해 일반적으로 플래시 메모리 변환 계층(Flash Translation Layer, FTL)이라는 소프트웨어가 파일 시스템과 낸드 플래시 메모리 사이에 사용된다. FTL은 크게 주소 사상 기능과 가비지 컬렉션 기능으로 구성되어 있다. 주소 사상 기능은 파일 시스템으로부터 덮어쓰기 요청을 받은 경우 해당 데이터를 원래 페이지에 덮어쓰는 대신, 다른 빈 페이지에 기록함으로써 부가적인 페이지 복사 및 삭제 연산을 감소시키는 역할을 한다. 이를 위해 주소 사상 기능은 특정 크기의 주소 사상 테이블을 반드시 SRAM 메모리 내에 유지해야하며, 이를 통해 파일 시스템으로 받은 논리 주소를 플래시 메모리 내의 실제 물리 주소로 사상하는 방식을 사용한다. 주소 사상 기법은 덮어쓰기에 따른 불필요한 읽기, 쓰기, 삭제 연산들을 줄여주지만 최신 데이터보다 오래된 데이터를 저장하고 있는 페이지(무효화 된 페이지)들을 다수 발생시킨다. 무효화 된 페이지들로 인해 플래시 메모리 공간이 낭비되는 것을 막기 위해 FTL은 주기적으로 무효화 된 페이지들을 삭제해야만 한다. 이러한 FTL의 기능을 가비지 컬렉션 기능이라 부른다.
(2) 종래 FTL 기술의 분류
종래의 FTL 관련 기술은 페이지 단위의 FTL 기법, 블록 단위의 FTL 기법, 혼합 FTL 기법으로 구분된다. 페이지 단위의 FTL 기법은 파일 시스템으로부터 받은 논리 페이지 번호를 플래시 메모리 내의 물리 페이지 번호로 변환한다. 이를 위해 SRAM 메모리에 페이지 단위의 주소 사상 테이블을 유지해야만 한다. 페이지 단위의 FTL 기법은 매우 우수한 가비지 컬렉션 성능을 제공하지만, 매우 큰 주소 사상 테이블을 요구하기 때문에, 실제 제품에 적용되기 힘들다는 단점을 가진다. 블록 단위의 FTL 기법은 파일 시스템으로부터 받은 논리 블록 번호를 플래시 메모리 내의 물리 블록 번호로 변환한다. 이때 동일한 논리 블록에 속한 페이지들은 동일한 물리 블록에 속한다. 이를 위해 블록 단위의 FTL은 SRAM 메모리에 블록 단위의 주소 사상 테이블을 유지해야만 한다. 블록 단위의 FTL 기법은 작은 크기의 주소 사상 테이블을 요구한다는 장점을 가지지만, 비효율적인 가비지 컬렉션 성능을 보인다는 단점을 지닌다. 위에서 언급한 두 FTL 기법의 문제를 해결하기 위해 다수의 혼합 FTL 기법이 제안되었다. 현재까지 제안된 혼합 FTL 기법 중 로그 버퍼 기반의 FTL 기법은 작은 메모리 공간을 필요로 하는 반면, 우수한 가비지 컬렉션 성능을 제공하기 때문에 실제 제품에서 가장 많이 사용되는 기법이다.
(3) 로그 버퍼 기반의 FTL 기법 개요
도 1은 로그 버퍼 기반 FTL 기법의 구조와 동작과정을 보여준다. 로그 버퍼 기반의 FTL 기법은 플래시 메모리 블록들을 데이터 블록들(101)과 로그 블록들(102)로 나눈다. 데이터 블록들은 일반 저장 공간으로 사용되며, 실제 사용자에게 보이는 저장 공간이다. 데이터 블록은 블록 단위의 주소 사상 테이블을 통해 관 리된다. 반면, 로그 블록들은 덮어 쓰여 진 데이터를 임시로 저장하는 공간으로 사용되며, 페이지 단위의 주소 사상 테이블을 통해 관리된다. 이러한 로그 블록들의 집합은 일반적으로 로그 버퍼라 불린다. 작은 수의 플래시 메모리 블록만이 로그 블록으로 사용되기 때문에 로그 버퍼 기반의 FTL이 요구하는 주소 사상 테이블의 크기는 매우 작다.
로그 버퍼 기반의 FTL 기법의 동작과정은 아래와 같다. 쓰기 명령이 파일 시스템으로부터 도착한 경우, 먼저 해당 쓰기 명령이 덮어쓰기 명령인지를 확인한다. 덮어쓰기 명령인 경우, 해당 데이터를 로그 버퍼에 기록하며(103), 만약 아닌 경우 해당 데이터를 데이터 블록에 기록한다(104). 로그 버퍼 기반의 FTL 기법은 덮어쓰기 데이터를 로그 버퍼 내에 임시로 기록함으로써 부가적인 읽기, 쓰기, 삭제 연산을 감소시킬 수 있다. 하지만, 로그 버퍼내의 빈 페이지들이 모두 사용된 경우, 가비지 컬렉션 과정을 통해 로그 버퍼 내에 새로운 빈 페이지들을 확보해 주어야만 한다. 이러한 가비지 컬렉션 과정은 합병 연산이라고 부리며, 크게 로그 버퍼 내에서 교체할 로그 블록을 선택하는 과정, 선택된 로그 블록 내의 유효한 페이지들을 데이터 블록에 복사하는 과정으로 구성되어 있다(105).
도 2는 합병 연산의 세부적인 동작 과정을 보여준다. 로그 버퍼 기반의 FTL 기법에는 세 가지 종류의 합병 연산들이 있다. 첫 번째 합병 연산 방식은 교체 합병 연산으로, 데이터 블록 내의 모든 페이지들이 첫 번째 페이지부터 마지막 페이지까지 논리적으로 연속적으로 덮어 쓰여졌을 때 발생한다(201). 이 경우 교체될 로그 블록을 데이터 블록으로 만들고(202), 이전 데이터 블록을 삭제한 후(203), 새로운 빈 블록을 로그 버퍼에 할당하는 작업이 수행된다. 교체 합병 방식은 단 한 번의 블록 삭제 연산만을 필요로 하기 때문에 그 비용이 매우 작다. 두 번째 합병 연산은 부분 합병 방식으로 역시 논리적으로 연속적인 덮어쓰기가 발생하였지만, 데이터 블록 내의 모든 페이지들이 덮어 쓰여 지지 않았을 때 발생한다(211). 이때 로그 버퍼 기반의 FTL은 데이터 블록 내의 유효한 페이지들을 로그 블록에 복사한 후(212) 교체 합병을 수행한다. 따라서 부분 합병은 다수의 페이지 복사와 한 번의 삭제 연산만을 필요로 한다. 마지막 합병 연산은 완전 합병 연산으로 일반적으로 비연속적인 쓰기가 발생했을 때 수행된다(221). 완전 합병 연산과정은 새로운 빈 블록을 할당한 후, 교체될 로그 블록과 대응되는 데이터 블록 내의 유효한 페이지들을 빈 블록에 복사한 후(222), 이전 로그 블록(223)과 데이터 블록(224)을 삭제한 후, 새로운 블록을 데이터 블록으로 변환하고(225), 새로운 빈 블록을 로그 버퍼에 할당함으로써 완료된다. 완전 합병을 위해 FTL은 최소 두 번의 삭제 연산과 최소 블록 내의 페이지 수만큼의 페이지 복사 연산을 필요로 한다. 따라서 완전 합병 연산은 매우 값 비싼 합병 연산 비용을 요구한다.
(4) 로그 버퍼 기반의 FTL 기법에서의 연관 방식
로그 버퍼 기반의 FTL 기법은 로그 블록과 데이터 블록간의 연관 방식에 따라 크게 블록 연관 방식과 완전 연관 방식으로 구분된다. 도 3은 이러한 연관 방식을 보여준다. 하나의 로그 블록이 오직 하나의 데이터 블록과 연관되어 있는 경우를 블록 연관 방식이라고 한다(301). 반면, 하나의 로그 블록이 다수의 데이터 블록과 연관되어 있는 경우를 완전 연관 방식이라고 한다(302). 블록 연관 방식은 FTL의 소프트웨어의 복잡도를 낮추어 준다는 장점을 가지지만, 비연속적 쓰기가 많을 때 블록 쓰래싱 문제를 발생시키며, 이로 인해 비연속적 쓰기가 많은 작업부하에서는 매우 낮은 성능을 제공한다는 단점을 가진다. 반면 완전 연관 방식은 블록 쓰래싱 문제로부터 자유롭다는 장점을 가지나, 소프트웨어의 복잡도를 증가시키고, 복잡한 작업부하에서는 값싼 교체 합병을 감소시킨다는 단점을 지닌다.
(5) 종래 기술의 문제점
로그 버퍼 기반의 FTL 기법은 MP3 플레이어나 PMP와 같은 모바일 기기에서 매우 효율적인 가비지 컬렉션 성능을 제공해 준다. 이는 모바일 기기에서 사용되는 대부분의 응용들이 논리적으로 연속적인 쓰기 명령을 요청하는 경향을 지니기 때문이다. 예를 들어 MP3 플레이어의 경우 사용자들은 비교적 큰 크기의 MP3 파일을 연속적으로 플래시 메모리에 기록한다. 이 경우 대부분 교체 합병만이 수행되기 때문에 가비지 컬렉션에 따른 부하는 매우 작다.
하지만, 로그 버퍼 기반의 FTL 기법은, 랩톱이나 데스크톱 혹은 서버와 같이 비연속적 쓰기 요청이 자주 발생하는 일반 컴퓨팅 시스템 환경에서는 매우 나쁜 성능을 제공한다는 단점을 지닌다. 이는 다수의 복사와 삭제 연산을 필요로 하는 완전 합병 연산의 비율이 매우 커지기 때문이다. 일반 컴퓨팅 시스템에서의 또 다른 문제는 파일 시스템에서 요청된 연속 쓰기 명령이 비연속적 쓰기 요청으로 변경될 수 있다는 것이다. 이는 일반 컴퓨팅 시스템이 기본적으로 다수의 응용이 동시에 수행되는 멀티 태스킹 환경이기 때문이다. 도 4는 이러한 일반 컴퓨팅 시스템의 환경을 보여준다. 일반 컴퓨팅 환경에서는 특정 응용(응용 1)이 연속적인 쓰기 명령을 요청하였다 하더라도(401), 다른 응용(응용 2)이 동시에 쓰기 명령을 요청하기 때문에(402), 실제 FTL에 도달하는 쓰기 요청의 형태는 비연속적 쓰기 형태로 변경된다(403). 이러한 현상은 결국 비용이 적은 교체 합병의 횟수를 줄이고 비용이 많은 완전 합병의 횟수를 늘리기 때문에 전반적인 가비지 컬렉션 부하를 증가시키게 된다.
종래기술의 문헌 정보
[문헌 1] M. Wu and W. Zwaenepoel. "eNVy: a non-volatile, main memory storage system," in Proc. Architectural Support for Programming Languages and Operating Systems, pp. 86-97,1994.
[문헌 2] H. Kim and S. Lee. "A new flash memory management for flash storage system," in Proc. Computer Software and Applications Conference, pp. 284-289, 1999.
[문헌 3] M. L. Chiang, P. C. H. Lee, and R. C. Chang. "Cleaning policies in mobile computers using flash memory," Journal of Systems and Software, vol. 48, no. 3, pp. 213-231, 1999.
[문헌 4] A. Ban. "Flash file system," United States Patent, no. 5,404,485, April, 1995.
[문헌 5] J. Kim, J. M. Kim, S. H. Noh, S. L. Min, and Y. Cho. "A space-efficient flash translation layer for compact flash systems," IEEE Transactions on Consumer Electronics, vol. 48, no. 2, pp. 366-375, 2002.
[문헌 6] S. W. Lee, D. J. Park, T. S. Chung, W. K. Choi, D. H. Lee, S. W. Park, and H. J. Song. "A log buffer based flash translation layer using fully associative sector translation," ACM Transactions on Embedded Computing Systems, vol. 6, no. 3, 2007.
[문헌 7] J. U. Kang, H. Jo, J. S. Kim, and J. Lee. "A superblock-based flash translation layer for NAND flash memory," in Proc. International Conference on Embedded Software, pp. 161-170, 2006.
본 발명은 비연속적 쓰기가 자주 발생하는 일반 컴퓨팅 환경에서 가비지 컬렉션에 따른 부하를 감소시키는 것에 목적을 둔다. 먼저, 본 발명에서는 비연속적 쓰기의 시간적 지역성(temporal locality)을 활용하여 완전 합병에 따른 비용을 최소화시키며, 또한 연속적인 쓰기 요청이 다른 쓰기 요청들과 섞여 비연속적 쓰기로 변경된 경우, 연속적 지역성(sequential locality)을 활용하여 연속적인 쓰기 요청을 비연속적 쓰기 요청에서 따로 분리함으로써 교체 합병의 횟수를 최대화시킨다.
본 발명은 파일 시스템으로부터의 쓰기 요청을 시간적 지역성과 연속적 지역성에 따라 구분하는 단계, 쓰기 요청의 지역성에 따라 해당 데이터를 다른 로그 블록에 구분하여 저장하는 단계, 시간적인 지역성을 지닌 데이터들의 지역성의 정도에 따라 구분하여 저장하는 단계, 가비지 컬렉션 비용을 줄이기 위해 로그 블록 내에서 교체될 로그 블록을 선정하는 단계로 이루어진 것에 특징이 있다.
본 발명은 비연속적 쓰기 요청이 많은 일반 컴퓨팅 환경에서 쓰기 요청의 연속적 지역성을 활용하여 연속 쓰기를 증가시킴으로써 비용이 많은 완전 합병의 횟수를 줄이고 비용이 적은 교체 합병의 횟수를 증가시킬 뿐만이 아니라, 쓰기 요청의 시간적 지역성을 고려하여 완전 합병 비용 자체를 감소시킨다. 따라서 본 발명은 가비지 컬렉션 시 발생하는 읽기, 쓰기, 삭제 연산의 횟수를 감소시켜 낸드 플래시 메모리 기반 저장 장치의 전반적인 성능을 향상시킨다. 이와 더불어 삭제 연산 자체를 감소시킴으로써 낸드 플래시 메모리의 수명 역시도 증가시킨다.
(1) 본 발명의 전반적인 구성
도 5는 본 발명에서 제시한 세부적인 구성 내용들을 보여주고 있다. 먼저, 파일 시스템에서 쓰기가 요청된 경우 지역성 판단자(501)는 해당 쓰기 명령의 지역성을 파악한다. 이후 해당 쓰기 명령이 연속적인 지역성을 가진 경우 이를 연속적인 로그 버퍼(502)에 기록을 한다. 연속적인 로그 버퍼는 블록 연관 방식을 통하여 관리된다. 만약 해당 쓰기 명령이 연속적인 지역성을 가지지 않은 경우에는 이를 비연속적인 로그 버퍼(503)에 기록한다. 비연속적인 로그 버퍼에 데이터를 기록할 때 해당 데이터의 시간적인 지역성의 정도에 따라 지역성이 높은 영역(504)과 지역성이 낮은 영역(505)에 나누어 저장한다. 비연속적인 로그 버퍼는 완전 연관 방식을 통하여 관리된다. 기존 로그 버퍼 기반의 FTL 기법과 달리 본 발병에서는 모든 쓰기 명령의 데이터를 우선적으로 로그 버퍼에 기록한다. 이후 로그 버퍼의 공간이 모두 사용되어 더 이상의 빈 공간이 없을 경우 합병 연산자(506)는 향후 가비지 컬렉션 비용을 최소화시킬 수 있도록 알맞은 교체될 로그 블록을 선정한다. 선정된 교체될 로그 블록의 데이터는 로그블록에 쓰인 데이터의 패턴에 따라 교체 합병, 부분 합병, 완전 합병 방식을 통하여 데이터 블록(507)에 기록된다.
(2) 지역성 판단자
파일 시스템으로부터 요청받은 쓰기 명령은 데이터가 기록될 시작 주소의 위치와 기록될 데이터의 길이로 구성되어 있다. 지역성 판단자는 쓰기 명령 내의 기록될 데이터의 길이 정보를 바탕으로 쓰기 명령의 지역성을 판단한다. 이는 일반적으로 쓰기 명령의 길이가 길 경우 해당 쓰기 명령이 연속적인 지역성을 지닐 확률이 높고, 반면 쓰기 명령의 길이가 짧을 경우 해당 쓰기 명령이 시간적인 지역성을 지닌 확률이 높기 때문이다.
도 6은 이러한 지역성 판단 과정을 나타낸다. 만약 쓰기 명령 내의 데이터의 길이가 특정 임계치(601)보다 클 경우 지역성 판단자는 해당 쓰기 명령이 연속적인 지역성을 지녔다고 판단하고 이를 연속적인 로그 버퍼로 보낸다(602). 반면 쓰여 질 데이터의 길이가 특정 임계치보다 작을 경우 지역성 판단자는 해당 쓰기 명령이 시간적인 지역성을 지녔다고 판단하고 이를 비연속적인 로그 버퍼에 보낸다(603).
이러한 임계치를 결정하는 문제는 매우 중요하다. 만약 임계치가 너무 작게 설정될 경우, 다수의 비연속적 쓰기 데이터들이 연속적인 로그 버퍼에 기록되기 때문에 블록 쓰래싱 문제를 유발시키게 된다. 이는 연속적인 로그 버퍼가 블록 연관 방식을 사용하기 때문이다. 반면 임계치가 너무 크게 설정될 경우 연속적인 쓰기 명령의 데이터들이 비연속적인 로그 버퍼에 기록되게 된다. 연속적인 쓰기가 비연속적인 로그 버퍼에 기록될 경우, 이를 완전 합병을 통하여 가비지 컬렉션을 해야만 하기 때문에, 교체 합병의 횟수는 감소 되며 이와 함께 완전 합병의 횟수는 증가하게 된다. 적당한 임계치는 파일 시스템이나 작업부하의 특징에 따라 달라질 수 있으며, 현재까지의 관찰을 토대로 보았을 때 2 KB에서 8 KB 사이가 가장 적합한 것으로 판단된다.
(3) 연속적인 로그 버퍼 관리
연속적인 로그 버퍼내의 로그 블록들은 블록 연관 방식에 따라 관리된다. 이는 블록 연관 방식이 연속적인 지역성을 가진 데이터를 관리하기에 유리하기 때문이다. 일반적으로 일반 컴퓨팅 환경에서는 다수의 연속적인 쓰기가 동시에 요청될 수 있다. 따라서 다수의 연속적인 쓰기를 기록할 수 있도록 연속적인 쓰기 버퍼 내에 다수의 로그 블록을 유지해야만 하며, 이와 함께 쓰기 요청의 연속성에 따라 다수의 연속 쓰기 요청들을 다른 로그 블록들에 구분하여 배분할 수 있어야만 한다. 본 발명에서는 블록 연관 방식을 이용하여 이러한 요구 사항을 만족시킨다.
도 7은 연속적인 로그 버퍼의 동작 과정을 보여준다. 도 6에서 4개의 연속적인 쓰기 명령들이(연속 쓰기 1, 2, 3, 4) 순차적으로 요청된다고 가정한다. 쓰기 명령은 이미 언급하였듯이 데이터가 기록될 시작 주소의 위치와 데이터의 길이 정보로 이루어져 있다. 도 7에서는 연속적인 로그 버퍼가 총 3개의 로그 블록들로 구성되어 있으며, 각 로그 블록은 총 4개의 페이지로 이루어져 있다. 작은 박스 내의 번호는 파일 시스템에서 받은 논리 주소의 번호를 나타낸다.
먼저, 첫 번째 쓰기 명령을 받은 경우 주소 0, 1의 데이터를 로그 블록 1에 순차적으로 기록한다(701). 두 번째 쓰기 명령을 받은 후 주소 12, 13, 14의 데이터를 로그 블록 3에 순차적으로 기록한다(702). 세 번째 쓰기 명령을 받은 후 주소 2, 3의 데이터를 로그 블록 1에 기록하고(703), 주소 4, 5, 6의 데이터를 로그 블록 2에 순차적으로 기록한다(704). 하지만, 네 번째 쓰기 명령을 받은 경우, 할당 가능한 빈 로그 블록이 연속적인 로그 버퍼에 없기 때문에 로그 버퍼 내에 빈 공간을 만들기 위해 합병 연산을 수행해야만 한다. 이 경우 로그 블록 1을 교체 대상으로 선정하고(705), 로그 블록 1에 대하여 교체 합병을 수행함으로써 새로운 빈 공간을 얻을 수 있다.
도 7에서와 같이 연속적인 쓰기 요청들은 구분되어 서로 다른 로그 블록에 기록된다. 만약 로그 블록의 개수가 너무 적거나 혹은 연속적인 쓰기 요청들이 하나의 로그 블록에 섞인 상태로 기록될 경우, 합병 연산 시 교체 합병을 적용하는 대신 부분 합병이나 완전 합병을 적용해야만 하며, 따라서 가비지 컬렉션에 따른 부하는 증가 될 수밖에 없다.
(4) 비연속적인 로그 버퍼 관리
비연속적인 로그 버퍼내의 로그 블록들은 완전 연관 방식에 따라 관리된다. 이는 완전 연관 방식이 완전 합병 비용을 감소시키기에 유리하기 때문이다. 비연속적인 로그 버퍼 내에는 비연속적 쓰기 명령의 데이터들이 기록되기 때문에 교체 합병을 수행할 수 없다. 따라서 본 발명에서는 완전 연관 방식을 사용하여 비연속적인 로그 버퍼의 사용률을 높인다. 또한, 비연속적 쓰기의 시간적인 지역성을 활용함으로써 완전 합병에 따른 비용을 감소시킨다. 시간적 지역성 활용 방식에 대한 설명 전에 완전 합병 비용이 어떤 요소에 의해 결정되는지 확인할 필요가 있다.
(a) 완전 합병 비용 계산
완전 합병 비용은 '교체될 로그 블록과 연관된 데이터 블록의 개수'에 따라 비례한다. 예를 들어서 교체될 로그 블록이 1개의 데이터 블록과 연관되어 있을 경우 2번의 삭제 연산과 블록 내의 페이지 개수만큼의 복사 연산이 필요하다. 반면 교체될 로그 블록이 2개의 데이터 블록과 연관되어 있을 경우 3번의 삭제 연산과 블록 내 페이지 개수의 두 배만큼의 복사 연산이 필요하다. 따라서 완전 합병 비용은 교체될 로그 블록에 연관된 데이터 블록의 수와 밀접한 관련이 있음을 알 수 있다.
교체될 블록과 로그 블록의 연관도를 줄이기 위해 본 특허에서는 비연속적 쓰기의 시간적 지역성을 활용한다. 첫 번째로 비연속적 로그 버퍼를 두 개로 나누어 시간적 지역성이 높은 데이터를 동일한 영역에 함께 기록함으로써 로그 블록이 무효화 된 페이지만 가지게 될 확률을 높인다. 두 번째로 향후 무효화 될 가능성이 높은 로그 블록을 교체 대상에서 배제함으로써 불필요한 복사 및 삭제 연산의 횟수를 감소시키는 것이다. 본 발명에서는 전자를 로그 버퍼 분할 기법이라고 부르며 후자를 로그 버퍼 교체 기법이라고 부른다.
(b) 로그 버퍼 분할 기법
도 8은 로그 버퍼 분할 기법의 동작 과정을 보여준다. 먼저, 덮어쓰기 명령이 요청된 경우 해당 데이터를 지역성이 낮은 영역에 기록한다(801). 지역성이 낮은 영역으로 전달된 데이터는 첫 번째 로그 블록에서부터 마지막 로그 블록까지 순차적으로 쓰여 지게 된다. 만약 특정 시간 내에 해당 데이터에 대해서 덮어쓰기 명령이 요청된 경우 해당 데이터를 지역성이 높은 영역에 기록한다(802). 지역성이 높은 영역에서도 첫 번째 로그 블록에서부터 마지막 로그 블록까지 데이터가 순차적으로 쓰여 지게 된다. 한번 지역성이 높은 영역에 기록된 페이지는 교체될 블록으로 선정되어 쫓겨나기 이전까지 항상 지역성이 높은 영역에 기록된다. 만약 특정 시간 이후에 덮어쓰기 명령이 요청된 경우에는 해당 데이터의 지역성이 낮다고 가정하고 이를 지역성이 낮은 영역에 계속 기록한다(803). 시간적인 지역성이 높은 데이터는 짧은 시간 내에 여러 번 덮어 쓰여 지기 때문에, 특정 데이터가 얼마나 자주 갱신이 되는지를 검사하여 지역성이 높은 데이터와 낮은 데이터를 구분할 수 있다.
지역성 정도를 구분하기 위해 본 특허에서는 시간적 지역성 구분자를 사용한다. 시간적 지역성 구분자는 지역성이 낮은 영역에서 특정 페이지가 몇 번의 쓰기 명령이 요청된 후 다시 갱신되었는지를 기준으로 데이터의 지역성 정도를 판별한다. 예를 들어 시간적 지역성 구분자의 값이 3인 경우, 특정 데이터가 기록된 후 3번의 쓰기 명령 내에 다시 갱신될 경우, 해당 데이터를 지역성이 높다고 판별한다. 바꾸어 말하면, 시간적 지역성 구분자는 지역성이 낮은 영역의 특정 지점을 나타내며, 해당 지점을 기준으로 어느 위치에서 기존 데이터가 무효화 되었는지에 따라 지역성의 높낮이를 구분하게 된다.
도 9는 로그 버퍼를 분할하지 않았을 때의 상태를 보여준다. 여기서는, 도 8에서와 동일한 패턴의 쓰기 명령이 발생하였다고 가정한다. 도 8에서 볼 수 있는 것과 같이, 지역성이 높은 영역에 모든 페이지들이 무효화 된 로그 블록이 존재한다(804). 이러한 블록을 본 특허에서는 죽은 블록이라고 부른다. 죽은 블록은 아무런 데이터 블록과도 연관이 되어 있지 않기 때문에, 한 번의 삭제 연산으로도 새로운 로그 블록을 얻을 수 있다. 반면 도 9에서는 죽은 블록이 존재하지 않기 때문에 새로운 로그 블록을 얻기 위해서는 완전 합병 연산을 수행해야만 한다. 따라서 지역성의 정도에 따라 비연속적인 로그 버퍼를 분할함으로써 합병 연산에 대한 비용이 감소할 수 있음을 알 수 있다. 이와 함께 지역성에 따른 로그 버퍼 분할은, 지역성이 낮은 영역에서의 교체될 블록의 데이터 블록과의 연관도를 감소시켜주는 이점을 제공한다. 지역성이 높은 영역에서는 많은 수의 죽은 블록이 생성되기 때문에, 죽은 블록을 우선적으로 제거하여 지역성이 낮은 영역에 대한 합병 연산 수행을 지연 지킬 수 있다. 이러한 지연으로 인해 지역성이 낮은 영역에 있는 더욱 많은 페이지가 무효화 될 수 있으며, 따라서 평균적인 연관도가 감소하게 된다.
데이터의 지역성은 시간에 따라 변할 수 있기 때문에, 본 특허에서는 시간에 따라 동적으로 시간적 지역성 구분자의 값을 변경시킨다. 본 특허에서는 또한, 얼마나 많은 로그 블록들이 지역성이 높은 영역에 할당되어야 할지를 판단한다. 만약 지역성이 높은 데이터가 많을 경우 지역성이 높은 영역의 크기는 커져야만 하고, 반면 그렇지 않을 경우 지역성이 높은 영역의 크기는 작아야만 한다. 이를 위해 본 특허에서는 지역성이 높은 영역과 지역성이 낮은 영역의 공간 활용도와 지역성이 높은 영역에서 발생하는 죽은 블록의 횟수를 참고한다. 공간 활용도는 각 영역 내에 유효한 데이터가 있는 페이지들의 비율을 나타낸다. 예를 들어 지역성이 높은 영역에 총 100개의 페이지가 있고, 그 중 유효한 페이지의 개수가 50개이고 무효한 페이지의 개수가 50개라면 지역성이 높은 영역에서의 공간 활용도는 50%가 된다.
지역성이 높은 영역의 크기는 아래의 두 경우에 따라 조절된다. 먼저, 지역성이 높은 영역에서 죽은 블록의 개수가 점차 증가한다면 이는 너무 많은 로그 블록들이 배정되었음을 의미한다. 따라서 이 경우에는 지역성이 높은 영역의 크기를 감소시킨다. 지역성이 높은 영역에서의 생성되는 죽은 블록의 개수가 감소하고 반면 전반적인 공간 활용도가 높아지는 경우에는 지역성이 높은 영역의 크기를 증가시킨다. 쓰기 요청된 데이터의 지역성 정도를 판단하는 시간적 지역성 구분자의 값은 아래의 두 경우에 따라 조절된다. 먼저, 지역성이 높은 영역에서 생성되는 죽은 블록의 개수가 감소하고 반면 지역성이 높은 영역에서의 공간 활용도가 상대적으로 낮을 경우에는, 지역성이 낮은 데이터들이 지역성이 높은 영역에 쓰여졌음을 의미하기 때문에 시간적 지역성 구분자의 값을 줄여준다. 반면 지역성이 낮은 영역에서의 공간 활용도가 감소 될 경우, 이는 지역성이 높은 데이터들이 지역성이 낮은 영역에 쓰여졌음을 의미하기 때문에 시간적 지역성 구분자의 값을 점차 증가시켜 준다.
(c) 로그 버퍼 교체 기법
로그 버퍼 교체기법은 향후 합병 연산에 따른 비용을 감소시키기 위해 어떠한 블록을 교체 대상으로 선정할지를 판단한다. 본 특허에서 개발한 로그 버퍼 교체 기법의 원리는, 가급적이면 지역성이 높은 데이터를 교체 대상으로 선정하지 않는 것에 있다. 지역성이 높은 데이터들은 빈번하게 갱신되기 때문에 많은 수의 죽 은 블록을 발생시킨다. 따라서 향후 합병 비용을 감소시킬 가능성이 매우 높다. 반면 지역성이 낮은 데이터들은 자주 갱신되지 않으며, 합병 비용 감소에 큰 기여를 하지 않는다. 따라서 빈번하게 갱신되지 않는 로그 블록을 교체 대상으로 선정하는 것이 향후 합병 비용을 감소시키는 것에 더 도움이 된다.
본 특허에서 교체 블록 선정과정은 두 단계로 이루어져 있다. 도 10은 이러한 교체 블록 선정과정을 보여준다. 첫 번째 단계는 교체될 블록이 있는 영역(지역성이 높은 영역, 지역성이 낮은 영역)을 고르는 단계이다. 만약 지역성이 높은 영역에 죽은 블록이 있을 경우 지역성이 높은 영역을 대상 영역으로 선정(1001)하고 그렇지 않을 경우 지역성이 낮은 영역을 대상 영역으로 선정한다(1002). 두 번째 단계는 선택된 영역에서 교체 블록을 선정하는 것이다. 지역성이 높은 영역에서는 죽은 블록을 교체 대상으로 선정한다(1003). 반면 지역성이 낮은 영역에서는 데이터 블록과의 연관도가 가장 낮은 블록을 교체 대상으로 선정한다(1004). 이러한 블록을 교체 대상으로 선정함으로써 가장 낮은 비용으로 완전 합병을 할 수 있으며, 더불어 다른 로그 블록의 합병 비용이 점차 감소 될 수 있도록 기회를 줄 수 있다.
또한, 본 특허에서는 이전에는 높은 지역성을 지니고 있었으나, 현재는 낮은 지역성을 지닌 페이지들을 주기적으로 제거함으로써 지역성이 낮은 페이지들이 지역성이 높은 영역에 저장되는 것을 방지한다. 이를 위해 지역성이 높은 영역에 저장된 특정 페이지 데이터들이 특정 시간 동안 갱신되지 않았을 경우, 해당 페이지들을 완전 합병 연산을 통해 지역성이 높은 영역에서 제거한다.
도 1은 로그 버퍼 기반 FTL 기법의 구조와 동작과정을 나타낸 블록도.
도 2는 합병 연산의 동작과정을 나타낸 블록도.
도 3은 로그 버퍼 기반 FTL 기법의 연관 방식을 나타낸 블록도.
도 4는 멀티 태스킹 기반의 일반 컴퓨팅 시스템의 환경을 나타낸 블록도.
도 5는 본 발명에서 사용되는 FTL 기법의 블록도.
도 6은 본 발명에서 사용되는 지역성 판단 블록도.
도 7은 본 발명에서 사용되는 연속적인 로그 버퍼의 동작과정을 나타낸 블록도.
도 8은 본 발명에서 사용되는 비연속적인 로그 버퍼의 로그 버퍼 분할 기법의 동작과정을 나타낸 블록도.
도 9는 비연속적인 로그 버퍼가 분할되지 않았을 때의 동작과정을 나타낸 블록도.
도 10은 본 발명에서 사용되는 로그 버퍼 교체 기법의 플로어차트

Claims (11)

  1. 낸드 플래시 메모리 기반의 저장 장치에 파일 시스템으로부터 쓰기 명령이 요청되었을 때, 해당 쓰기 명령의 시간적 지역성(temporal locality)와 연속적 지역성(sequential locality)을 판별하고, 블록 단위로 연관하여 관리하는 방식 또는 완전히 연결된 방식을 통해 관리되는 로그 버퍼에 구별하여 저장 및 관리하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  2. 상기 1항에서, 시간적 지역성과 연속적 지역성의 구분은, 요청된 쓰기 명령 내에 포함된 데이터의 길이 정보를 바탕으로 결정하되, 데이터의 길이가 지정된 임계치보다 클 경우 해당 데이터가 연속적 지역성을 가졌다고 판단하며, 데이터의 길이가 지정된 임계치보다 작은 경우 해당 데이터가 시간적 지역성을 가졌다고 판단하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  3. 상기 2항에서, 쓰기 명령이 연속적 지역성을 가진 경우 해당 데이터를 다수의 플래시 메모리 블록으로 구성되어 있는 연속적인 로그 버퍼에 기록하며, 저장된 데이터는 블록 단위 연관 방식에 따라 관리하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  4. 상기 2항에서, 쓰기 명령이 시간적 지역성을 가진 경우 해당 데이터를 다수의 플래시 메모리 블록으로 구성되어 있는 비연속적인 로그 버퍼에 기록하며, 저장된 데이터는 완전 연관 방식에 따라 관리하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  5. 상기 4항에서, 비연속적인 로그 버퍼는 지역성이 높은 영역과 지역성이 낮은 영역으로 나누어져 있으며, 시간적 지역성 구분자를 기준으로 기록되는 데이터의 갱신 주기에 따라 상기 데이터를 상기 지역성이 높은 영역 또는 상기 지역성이 낮은 영역에 각각 기록하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  6. 삭제
  7. 연속적인 로그 버퍼와 비연속적인 로그 버퍼에서 교체할 로그 블록을 선택할 때, 향후 합병 비용이 최소화될 수 있도록, 쓰기 명령의 지역성을 고려하여 교체될 로그 블록을 선택하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  8. 상기 청구 7항에서, 연속적인 로그 버퍼에 더 이상의 빈 곳이 없어 교체할 로그 블록을 선택할 때, 모든 페이지들이 사용된 로그 블록을 교체 대상으로 선정한 후 교체 합병을 통해 합병 연산을 수행하며, 만약 이러한 블록이 없을 경우 가장 오랜 기간 동안 데이터가 기록되지 않은 로그 블록을 교체 대상으로 선정한 후 부분 합병을 통해 합병 연산을 수행하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  9. 상기 청구 7항에서, 비연속적인 로그 버퍼에서 더 이상의 빈 곳이 없어 교체할 로그 블록을 선택할 때, 먼저 지역성이 높은 영역에 죽은 블록이 있는지를 확인하고, 죽은 블록이 있을 경우 지역성이 높은 영역을 교체 대상 영역으로 선정하고, 만약 죽은 블록이 없을 경우 지역성이 낮은 영역을 교체 대상 영역으로 선정하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  10. 상기 청구 9항에서, 지역성이 높은 영역이 교체 대상 영역으로 선정된 경우, 지역성이 높은 영역 내에 죽은 블록을 교체 대상 로그 블록으로 선정하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
  11. 상기 청구 9항에서, 지역성이 낮은 영역이 교체 대상 영역으로 선정된 경우, 지역성이 낮은 영역 내의 모든 로그 블록 중 데이터 블록과 연관된 정도가 가장 낮은 로그 블록을 교체 대상으로 선정하는 것을 특징으로 하는 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션 기법.
KR1020080032408A 2008-04-08 2008-04-08 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법 KR101017067B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080032408A KR101017067B1 (ko) 2008-04-08 2008-04-08 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080032408A KR101017067B1 (ko) 2008-04-08 2008-04-08 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법

Publications (2)

Publication Number Publication Date
KR20090107098A KR20090107098A (ko) 2009-10-13
KR101017067B1 true KR101017067B1 (ko) 2011-02-25

Family

ID=41536944

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080032408A KR101017067B1 (ko) 2008-04-08 2008-04-08 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법

Country Status (1)

Country Link
KR (1) KR101017067B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013176376A1 (ko) * 2012-05-23 2013-11-28 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
KR20140044558A (ko) * 2012-10-05 2014-04-15 삼성전자주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
US9244619B2 (en) 2012-09-27 2016-01-26 Samsung Electronics Co., Ltd. Method of managing data storage device and data storage device
US10747664B2 (en) 2018-07-11 2020-08-18 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101067018B1 (ko) * 2009-04-17 2011-09-22 서울대학교산학협력단 가비지 컬렉션 수행 방법 및 상기 방법을 이용한 플래시 메모리 장치
KR101157763B1 (ko) * 2010-12-27 2012-06-25 서울시립대학교 산학협력단 Trim 명령 처리 기능이 추가된 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및 그 장치
KR20150106778A (ko) 2014-03-12 2015-09-22 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 제어 방법
KR101663425B1 (ko) * 2015-06-29 2016-10-07 한양대학교 산학협력단 저장장치의 성능 및 내구성 향상을 위해 다중 오픈 블록을 관리하는 메모리 저장 장치 및 방법
CN115469797B (zh) * 2021-09-09 2023-12-29 上海江波龙数字技术有限公司 一种数据写入方法、存储装置及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050052016A (ko) * 2003-11-28 2005-06-02 한국전자통신연구원 파일 시스템의 메타 데이터 회복을 위한 로깅과 회복 방법및 장치
KR20060007667A (ko) * 2004-07-20 2006-01-26 엘지전자 주식회사 플래시 메모리 관리 방법과 장치 및 그 구조
KR20060089491A (ko) * 2005-02-04 2006-08-09 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR20060090087A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050052016A (ko) * 2003-11-28 2005-06-02 한국전자통신연구원 파일 시스템의 메타 데이터 회복을 위한 로깅과 회복 방법및 장치
KR20060007667A (ko) * 2004-07-20 2006-01-26 엘지전자 주식회사 플래시 메모리 관리 방법과 장치 및 그 구조
KR20060089491A (ko) * 2005-02-04 2006-08-09 삼성전자주식회사 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR20060090087A (ko) * 2005-02-07 2006-08-10 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013176376A1 (ko) * 2012-05-23 2013-11-28 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
KR101374065B1 (ko) * 2012-05-23 2014-03-13 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
US9244619B2 (en) 2012-09-27 2016-01-26 Samsung Electronics Co., Ltd. Method of managing data storage device and data storage device
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 삼성전자 주식회사 세그먼트 그룹을 고려하는 세그먼트 클리닝 장치 및 방법
US10747664B2 (en) 2018-07-11 2020-08-18 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
KR20090107098A (ko) 2009-10-13

Similar Documents

Publication Publication Date Title
US11893238B2 (en) Method of controlling nonvolatile semiconductor memory
CN110678836B (zh) 用于键值存储的持久性存储器
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
Lee et al. LAST: locality-aware sector translation for NAND flash memory-based storage systems
CN102576293B (zh) 固态存储设备和分层存储系统中的数据管理
WO2014102882A1 (en) Storage apparatus and storage control method
US8635399B2 (en) Reducing a number of close operations on open blocks in a flash memory
CN108604165B (zh) 存储装置
US20150127889A1 (en) Nonvolatile memory system
WO2015076354A1 (ja) ストレージ装置と方法並びにプログラム
KR20100089229A (ko) 플래시 메모리의 주소 매핑에 의한 데이터 관리 방법 및 장치
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
CN112130749A (zh) 数据储存装置以及非挥发式存储器控制方法
KR101155542B1 (ko) Ssd 장치의 매핑 테이블 관리 방법
KR20120034976A (ko) 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법
KR101153688B1 (ko) 데이터 페이지들에 대해 무효화 기회를 부여하는 방법 및 이를 위한 낸드 플래시 메모리 시스템
KR101021364B1 (ko) 완전 연관 섹터 변환 기법을 사용하는 플래시 변환 계층에서 합병연산을 줄이기 위한 멀티 플래시 메모리 관리방법 및 장치
KR101791855B1 (ko) 스토리지 장치 및 이의 공간 재수거 방법
KR101114398B1 (ko) 삭제 그룹 플래시 변환 계층을 이용한 퓨전 플래시 메모리의 주소 변환 방법 및 다중 블록 삭제 방법
KR20210089055A (ko) 지우기 성능이 향상된 플래시메모리 저장 장치 및 그 방법
JP5638022B2 (ja) ディスクアレイ装置
Ryu A flash translation layer for multimedia storages

Legal Events

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

Payment date: 20140204

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150212

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180129

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190201

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200203

Year of fee payment: 10