KR20080085574A - 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 - Google Patents

비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 Download PDF

Info

Publication number
KR20080085574A
KR20080085574A KR1020070027302A KR20070027302A KR20080085574A KR 20080085574 A KR20080085574 A KR 20080085574A KR 1020070027302 A KR1020070027302 A KR 1020070027302A KR 20070027302 A KR20070027302 A KR 20070027302A KR 20080085574 A KR20080085574 A KR 20080085574A
Authority
KR
South Korea
Prior art keywords
block
garbage collection
blocks
invalid
list
Prior art date
Application number
KR1020070027302A
Other languages
English (en)
Inventor
김정은
우남윤
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020070027302A priority Critical patent/KR20080085574A/ko
Priority to US12/051,598 priority patent/US20080235306A1/en
Publication of KR20080085574A publication Critical patent/KR20080085574A/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

본 발명은 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리에서 데이터의 속성을 고려하여 가비지 컬렉션을 수행하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법에 관한 것이다.
본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치는, 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 제 1블록 관리부, 데이터와 메타 데이터의 저장 및 가비지 컬렉션을 위해 할당할 다수의 제 2블록을 관리하는 제 2블록 관리부, 및 상기 유효하지 않은 페이지가 발생한 순서대로 상기 제 1블록의 유효한 페이지를 옮기기 위하여 상기 제 2블록을 할당하여 가비지 컬렉션을 수행하는 제어부를 포함한다.
비휘발성 메모리, 가비지 컬렉션, 할당, 블록, 페이지

Description

비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법{Apparatus and method for garbage collection of non-volatile memory}
도 1은 종래의 기술에 따른 유효하지 않은 페이지를 포함하는 블록의 리스트가 도시된 개략도.
도 2는 종래의 기술에 따른 가비지 컬렉션을 위해 할당한 블록의 리스트가 도시된 개략도.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치가 도시된 블록도.
도 4는 본 발명의 실시예에 따른 제 1블록 리스트가 도시된 개략도.
도 5는 도 4의 제 1블록 리스트에 포함되지 않는 블록에서 유효하지 않은 페이지가 발생한 경우, 갱신된 제 1블록 리스트가 도시된 개략도.
도 6 및 도 7은 도 4의 제 1블록 리스트에 포함된 블록에서 유효하지 않은 페이지가 발생한 경우, 갱신된 제 1블록 리스트가 도시된 개략도.
도 8은 본 발명의 실시예에 따른 제 2블록 리스트가 도시된 개략도.
도 9는 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 방법이 도시된 순서도.
도 10은 본 발명의 실시예에 따른 가비지 컬렉션 과정이 도시된 개략도.
<도면의 주요 부분에 관한 부호의 설명>
110: 비휘발성 메모리 120: 제 1블록 관리부
130: 제 2블록 관리부 140: 제어부
본 발명은 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법에 관한 것으로서, 더욱 상세하게는 비휘발성 메모리에서 데이터의 속성을 고려하여 가비지 컬렉션을 수행하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법에 관한 것이다.
일반적으로 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리가 많이 사용되고 있다.
비휘발성 메모리는 데이터의 기록 및 삭제가 자유로운 RAM(Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 ROM(Read Only Memory)의 장점을 동시에 지니고 있다.
또한, 비휘발성 메모리 중에서 주로 사용되는 플래시 메모리는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기 등에 적합하다.
이러한 비휘발성 메모리는 데이터의 갱신이 발생하는 경우, 기존 데이터가 기록되어 있던 페이지는 유효하지 않은 상태로 유지되고, 새로운 페이지를 할당받아 갱신될 데이터를 기록하게 된다. 이때, 비휘발성 메모리에 가용 공간이 부족하게 되면, 유효한 페이지만을 모으는 가비지 컬렉션(Garbage Collection)을 수행하여 가용 공간을 늘리게 된다.
종래의 가비지 컬렉션은 유효하지 않은 페이지를 포함하는 블록의 블록 리스트 및 유효하지 않은 페이지만으로 구성된 가비지 블록의 블록 리스트를 생성하여 관리하고, 가비지 컬렉션을 위해 할당할 블록이 부족하거나 유효하지 않은 페이지를 포함하는 블록을 줄이기 위해 수행된다.
구체적으로, 가비지 컬렉션 수행시, 도 1과 같이 유효하지 않은 페이지를 포함하는 블록들을 관리하기 위한 블록 리스트에서 유효하지 않은 페이지를 가장 많이 포함하는 블록인 블록 #80(11)이 가비지 컬렉션을 위한 대상이 되며, 가비지 컬렉션 수행시에 도 2와 같이 가비지 컬렉션을 위해 할당할 블록들을 관리하기 위한 블록 리스트에서 삭제 횟수가 가장 적은 블록인 블록 #15(12)를 할당하여 블록 #80(11)에서 유효한 페이지를 블록 #15(12)로 옮기게 된다.
이때, 가비지 컬렉션을 위해 할당할 블록들 중 삭제 횟수가 가장 적은 블록을 할당하는 것은, 웨어 레벨링을 위한 것으로 어느 하나의 블록이 삭제 횟수가 상대적으로 많아지게 되어 배드 블록이 발생하는 것을 방지하기 위함이다.
그러나, 종래의 가비지 컬렉션은 데이터의 속성, 즉 일반 데이터와 일반 데 이터에 비하여 상대적으로 빈번한 갱신이 이루어지는 메타 데이터 등을 구분하지 않고 일관된 정책에 따라 수행된다.
따라서, 빈번하게 갱신이 이루어지는 데이터는 해당 페이지가 유효하지 않게 됨으로써, 유효하지 않은 페이지가 발생하는 블록이 증가하게 되어 가비지 컬렉션 수행시 오버헤드가 발생하는 문제점이 있다.
일본 공개 특허 2002-278828은 보존기간이 짧은 데이터군의 제1 메모리 영역의 가비지 컬렉션 실행 빈도를 보존 기간이 긴 데이터군의 제 2 메모리 영역보다 높게 하여 가비지 컬렉션 시간을 단축시키는 것이 개시되어 있으나, 빈번하게 갱신이 이루어지는 데이터는 해당 페이지가 유효하지 않게 됨으로써, 유효하지 않은 페이지가 발생하는 블록이 증가하게 되어 가비지 컬렉션 수행시 오버헤드가 발생하는 것을 해결하기 위한 방안은 제안되고 있지 않다.
본 발명은 비휘발성 메모리에서 데이터 속성을 고려하여 가비지 컬렉션시 발생하는 불필요한 쓰기 연산의 오버헤드를 감소시킬 수 있는 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법을 제공하는데 그 목적이 있다.
본 발명의 목적은 이상에서 언급한 목적으로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치는, 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 제 1블록 관리부, 데이터와 메타 데이터의 저장 및 가비지 컬렉션을 위해 할당할 다수의 제 2블록을 관리하는 제 2블록 관리부, 및 상기 유효하지 않은 페이지가 발생한 순서대로 상기 제 1블록의 유효한 페이지를 옮기기 위하여 상기 제 2블록을 할당하여 가비지 컬렉션을 수행하는 제어부를 포함한다.
또한, 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 방법은, 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 단계, 유효하지 않은 페이지만을 포함하는 다수의 제 2블록을 관리하는 단계, 및 상기 유효하지 않은 페이지가 발생한 순서대로 상기 제 1블록에 상기 제 2블록을 할당하여 가비지 컬렉션을 수행하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범수를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 의하여 비휘발성 메모리의 가비지 컬렉션을 위 한 장치 및 방법을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있 다. 또, 몇 가지 대체 실행예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 3은 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치가 도시된 블록도이다.
도시된 바와 같이, 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치(100)는, 비휘발성 메모리(110), 비휘발성 메모리(110)의 각 블록 중 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 제 1블록 관리부(120), 데이터와 메타 데이터의 저장 및 가비지 컬렉션을 위해 할당할 유효하지 않은 페이지만을 포함하는 다수의 제 2블록을 관리하는 제 2블록 관리부(130), 및 유효하지 않은 페이지가 발생한 순서대로 제 1블록에 제 2블록을 할당하여 가비지 컬렉션을 수행하는 제어부(140)를 포함할 수 있다.
본 발명의 실시예에서 비휘발성 메모리(110)는 플래시 메모리 등으로 이해될 수 있으며, 이하 본 발명의 실시예에서는 비휘발성 메모리(110)가 플래시 메모리인 경우를 예를 들어 설명하기로 한다.
일반적으로 플래시 메모리는 크게 소블록 플래시 메모리와 대블록 플래시 메모리로 나뉘어질 수 있다.
소블록 플래시 메모리는 논리적인 연산 단위와 물리적인 연산 단위가 동일한 반면, 대블록 플래시 메모리는 논리적인 연산 단위에 비하여 물리적인 연산 단위가 큰 특성을 가진다. 여기서, 논리적인 연산 단위는 흔히 섹터라 칭하며, 물리적인 연산 단위는 페이지라 칭한다. 또한, 플래시 메모리에서 블록은 다수의 페이지를 포함하며, 블록은 플래시 메모리에서의 삭제 연산 단위이다.
이때, 논리적인 연산 단위를 섹터라 칭하고, 물리적인 연산 단위를 페이지라 칭하며, 삭제 연산 단위를 블록이라 칭한 것은, 본 발명의 이해를 돕기 위한 일 예에 불과한 것으로, 각 연산 단위를 지칭하는 용어는 변경될 수 있다.
제 1블록 관리부(120)는 비휘발성 메모리(110)에 포함된 다수의 블록 중 유효하지 않은 페이지가 적어도 하나 이상 포함되는 블록을 관리할 수 있으며, 본 발명의 실시예에서는 유효하지 않은 페이지를 적어도 하나 이상 포함하는 블록을 '제 1블록'이라 칭하기로 하며, 비휘발성 메모리(110)에는 다수의 제 1블록이 존재할 수 있다.
제 1블록 관리부(120)는 다수의 제 1블록을 관리하기 위한 제 1블록 리스트를 생성할 수 있다. 이때, 제 1블록 관리부(120)는 제 1블록 리스트를 유효하지 않는 페이지가 발생된 순서대로 제 1블록을 배열하거나 사용된 순서대로 제 1블록을 배열할 수 있다. 즉, 제 1블록 관리부(120)는 제 1블록 리스트를 FIFO(First Input First Output)로 유지하거나 LRU(Least Recently Used)로 유지할 수 있다.
구체적으로, 제 1블록 관리부(120)는 도 4와 같이, 제 1블록 리스트에서 유효하지 않은 페이지가 발생된 순서대로 제 1블록들을 배열할 수 있다. 이때, 도 4에서 블록 #95가 유효하지 않은 페이지가 가장 처음 발생한 것이며, 블록 #80이 유효하지 않은 페이지가 가장 마지막에 발생한 것으로 이해될 수 있다. 이때, 제 1블 록 리스트에서는 블록 #80가 헤드가 되며, 블록 #95가 테일이 된다. 또한, 제 1블록 리스트에서는 테일에 위치한 블록이 가장 처음 유효하지 않은 페이지가 발생된 블록으로 이해될 수 있다. 그리고, 도 4는 전술한 FIFO 및 LRU 중 FIFO에 의해 유지되는 제 1블록 리스트의 일 예로 이해될 수 있다.
한편, 제 1블록 관리부(120)는 제 1블록 리스트에 포함된 제 1블록에서 다시 유효하지 않은 페이지가 발생하거나 제 1블록 리스트에 포함되지 않은 블록에서 새로 유효하지 않은 페이지가 발생할 경우, 제 1블록 리스트를 갱신할 수 있다.
구체적으로, 제 1블록 관리부(120)는 전술한 도 4에 포함되지 않은 블록 #400에 유효하지 않은 페이지가 새로 발생한 경우에는, 도 5와 같이 블록 #400은 제 1블록 리스트의 헤드 부분에 삽입하고, 헤드 포인트를 블록 #400으로 변경할 수 있다.
또한, 제 1블록 관리부(120)는 전술한 도 4에 포함된 블록 #55에서 도 6과 같이, 유효하지 않은 페이지가 다시 발생한 경우 해당 블록에 대한 정보를 변경할 수 있으며, 제 1블록 관리부(120)가 LRU 에 의해 유지되는 경우에는 도 7과 같이, 유효하지 않은 페이지가 다시 발생한 제 1블록이 제 1블록 리스트의 헤드가 되도록 변경할 수 있다.
제 2블록 관리부(130)는 데이터 기록 및 가비지 할당을 위한 다수의 제 2블록들을 관리하기 위한 제 2블록 리스트를 생성할 수 있다. 이때, 제 2블록 관리부(120)는 제 2블록들을 소정의 카운트값, 예를 들어 삭제 횟수 등에 따라 배열할 수 있다. 구체적으로, 제 2블록 관리부(130)는 도 8과 같이, 제 2블록 리스트에서 삭제 횟수가 적은 제 2블록부터 삭제 횟수가 많은 제 2블록의 순서로 다수의 제 2블록을 배열할 수 있는 것이다. 물론, 본 발명의 실시예에서는 제 2블록 리스트가 삭제 횟수가 적은 제 2블록부터 삭제 횟수가 많은 제 2블록의 순서로 배열된 경우를 예를 들어 설명하고 있으나, 그 역순으로 배열될 수도 있다. 다시 말해서, 제 2블록 리스트는 삭제 횟수의 많고 적음에 따라 순서대로 배열되는 것이다.
제어부(140)는 제 2블록 관리부(130)에 의해 관리되는 다수의 제 2블록들을 데이터 기록 및 가비지 컬렉션을 위해 할당할 수 있다.제어부(140)는 다수의 제 2블록들을 데이터 기록을 위해 할당할 경우에는 웨어 레벨링을 위해 삭제 횟수가 가장 적은 제 2블록을 할당하게 되며, 가비지 컬렉션을 위해서는 제 1블록 리스트에서 가장 처음으로 유효하지 않은 페이지가 발생한 제 1블록에 가장 삭제 횟수가 큰 제 2블록을 할당하여 가비지 컬렉션을 수행할 수 있다. 즉, 제어부(140)는 도 5의 제 1블록 리스트에서 가장 처음으로 유효하지 않은 페이지가 발생한 블록 #95에 도 8의 제 2블록 리스트에서 데이터 기록을 위해서는 삭제 횟수가 가장 많은 블록 #270을 할당할 수 있다. 또한, 제어부(140)는 일반적인 데이터 기록을 위해서는 웨어 레벨링을 위해 도 8에서 삭제 횟수가 가장 적은 블록 #150을 할당할 수 있다.
이때, 제어부(140)가 가비지 컬렉션을 수행할 때, 제 1블록 리스트에서 가장 처음 유효하지 않은 페이지가 발생한 제 1블록을 선정하는 것은, 제 1블록 리스트에서 유효하지 않은 페이지가 발생한 시점이 오래될수록 변경되지 않을 데이터일 확률이 크기 때문이다. 따라서, 제어부(140)는 제 1블록 리스트에서 가장 처음 유효하지 않은 페이지가 발생한 제 1블록에 제 2블록 리스트에서 삭제 횟수가 가장 큰 제 2블록을 할당하여 가비지 컬렉션을 수행할 수 있다. 또한, 제어부(140)가 가비지 컬렉션을 수행할 때 일반적인 데이터 기록시 웨어 레벨링을 위해 삭제 횟수가 적은 제 2블록부터 할당하는 것에 비하여 삭제 횟수가 가장 큰 제 2블록을 사용하는 것은, 제 1블록 리스트에서 가비지 컬렉션이 수행되는 제 1블록은 변경되지 않을 확률이 크게 되고, 삭제 횟수가 적은 제 2블록을 할당하여 가비지 컬렉션을 수행할 경우 삭제 횟수가 상대적으로 다른 제 2블록에 비해 적어지기 때문에 웨어 레벨링에 문제가 발생할 수 있기 때문이다.
따라서, 삭제 횟수가 가장 큰 제 2블록을 할당하여 가비지 컬렉션을 수행하는 경우, 할당된 제 2블록에 이동된 데이터는 변경되지 않을 확률이 높기 때문에 웨어 레벨링을 만족시킬 수 있기 때문이다.
도 9는 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 방법이 도시된 순서도이다.
도시된 바와 같이, 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 방법은, 먼저 제 1블록 관리부(120)가 비휘발성 메모리(110)에서 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하기 위한 제 1블록 리스트를 생성한다(S110). 이때, 제 1블록 리스트는 가장 처음에 유효하지 않은 페이지가 발생한 제 1블록이 가장 처음 가비지 컬렉션이 대상이 될 수 있도록 FIFO로 유지되거나 경우에 따라 LRU로 유지될 수 있다. 또한, 제 1블록 리스트는 FIFO 및 LRU를 병용하여 유지될 수 있다.
제 2블록 관리부(130)는 데이터 기록 및 가비지 컬렉션을 위해 할당할 다수 의 제 2블록을 관리하기 위한 제 2블록 리스트를 생성한다(S120). 이때, 제 2블록 리스트에 포함된 다수의 제 2블록들은 삭제 횟수에 따라 배열될 수 있다.
제어부(140)는 제 1블록 리스트에서 가장 처음 유효하지 않은 페이지가 발생한 제 1블록을 가비지 컬렉션을 수행할 대상 블록을 선정하게 된다(S130).
또한, 제어부(140)는 전술한 S130 단계에서 선정된 제 1블록의 가비지 컬렉션을 위해 제 2블록 리스트에서 삭제 회수가 가장 큰 제 2블록을 할당하게 된다(S140).
이후, 제어부(140)는 전술한 S130단계에서 선정된 제 1블록에서 유효한 페이지를 전술한 S140단계에서 할당된 제 2블록에 복사하고(S150), 제 2블록 관리부(130)는 전술한 S150단계에서 유효한 페이지가 복사되어 더 이상 유효한 페이지가 존재하지 않는 제 1블록을 제 2블록 리스트에 삭제 회수에 따라 추가시키게 된다(S160).
이와 같은 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 방법에 따라 수행되는 가비지 컬렉션 과정을 도 10을 통해 보다 상세하게 살펴보기로 한다.
도시된 바와 같이, 본 발명의 실시예에 따른 비휘발성 메모리의 가비지 컬렉션 과정은, 제 1블록 리스트(210)에서 가비지 컬렉션을 수행할 제 1블록을 선정하고(①), 제 2블록 리스트(220)에서 가비지 컬렉션을 위해 할당할 제 2블록을 선정하게 된다(②). 이후, 선정된 제 1블록에서 유효한 페이지를 선정된 제 2블록으로 복사하고(③), 더 이상 유효한 페이지가 존재하지 않은 제 1블록을 제 2블록 리스 트(220)에 추가하게 된다(④).
본 발명의 실시예에서 사용되는 용어 중 '부'는 소프트웨어 또는 Field Programmable Gate Array(FPGA) 또는 주문형 반도체(Application Specific Integrated Circuit, ASIC)과 같은 하드웨어 구성요소를 의미하며, 부는 어떤 역할들을 수행한다. 그렇지만 부는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 부는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 실행시키도록 구성될 수도 있다. 따라서, 일 예로서 부는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 부들에서 제공되는 기능은 더 작은 수의 구성요소들 및 부들로 결합되거나 추가적인 구성요소들과 부들로 더 분리될 수 있다.
이상과 같이 본 발명에 따른 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
상기한 바와 같은 본 발명의 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
가비지 컬렉션 수행시 읽기 속성을 가진 데이터, 즉 데이터의 갱신이 일어나지 않는 데이터를 검출할 수 있는 효과가 있다.
또한, 데이터의 속성, 즉 빈번한 갱신이 이루어지는 데이터 및 빈번한 갱신이 이루어지지 않는 데이터들이 서로 구분되어 기록될 수 있는 효과도 있다.

Claims (12)

  1. 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 제 1블록 관리부;
    데이터와 메타 데이터의 저장 및 가비지 컬렉션(Garbage Collection)을 위해 할당할 다수의 제 2블록을 관리하는 제 2블록 관리부; 및
    상기 유효하지 않은 페이지가 발생한 순서대로 상기 제 1블록의 유효한 데이터를 옮기기 위하여 상기 제 2블록을 할당하여 가비지 컬렉션을 수행하는 제어부를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  2. 제 1 항에 있어서,
    상기 제 1블록 관리부는, 상기 다수의 제 1블록을 상기 유효하지 않은 페이지가 발생한 순서에 따라 배열한 제 1블록 리스트를 생성하며,
    상기 제 1블록 리스트에서 가장 최근에 상기 유효하지 않은 페이지가 발생한 제 1블록에 헤드 포인트를 할당하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  3. 제 2 항에 있어서,
    상기 제 1블록 관리부는, 상기 제 1블록 리스트에 포함된 소정의 제 1블록에 유효하지 않은 페이지가 다시 발생한 경우, 상기 유효하지 않은 페이지가 다시 발 생한 제 1블록으로 상기 헤드 포인트를 변경하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  4. 제 2 항에 있어서,
    상기 제 1블록 관리부는, 상기 제 1블록 리스트에 포함되지 않은 소정 블록에 유효하지 않은 페이지가 발생한 경우, 상기 유효하지 않은 페이지가 발생된 블록을 상기 제 1블록 리스트의 헤드 부분에 추가하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  5. 제 1 항에 있어서,
    상기 제 2블록 관리부는, 상기 다수의 제 2블록들을 삭제 횟수가 적은 순서대로 배열한 제 2블록 리스트를 생성하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  6. 제 5 항에 있어서,
    상기 제어부는, 상기 다수의 제 1블록들 중 상기 유효하지 않은 페이지가 가장 처음 발생한 제 1블록에 상기 삭제 횟수가 가장 큰 제 2블록을 할당하여 상기 가비지 컬렉션을 수행하는 비휘발성 메모리의 가비지 컬렉션을 위한 장치.
  7. 하나 이상의 유효하지 않은 페이지를 포함하는 다수의 제 1블록을 관리하는 단계;
    유효하지 않은 페이지만을 포함하는 다수의 제 2블록을 관리하는 단계; 및
    상기 유효하지 않은 페이지가 발생한 순서대로 상기 제 1블록의 유효한 페이지를 옮기기 위하여 상기 제 2블록을 할당하여 가비지 컬렉션을 수행하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
  8. 제 7 항에 있어서,
    상기 다수의 제 1블록을 관리하는 단계는, 상기 다수의 제 1블록을 상기 유효하지 않은 페이지가 발생한 순서에 따라 배열한 제 1블록 리스트를 생성하는 단계; 및
    상기 제 1블록 리스트에서 가장 최근에 상기 유효하지 않은 페이지가 발생한 제 1블록에 헤드 포인트를 할당하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
  9. 제 8 항에 있어서,
    상기 다수의 제 1블록을 관리하는 단계는, 상기 제 1블록 리스트에 포함된 소정의 블록에 유효하지 않은 페이지가 다시 발생한 경우, 상기 유효하지 않은 페이지가 다시 발생한 제 1블록으로 상기 헤드 포인트를 변경하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
  10. 제 8 항에 있어서,
    상기 다수의 제 1블록을 관리하는 단계는, 상기 제 1블록 리스트에 포함되지 않은 소정 블록에 유효하지 않은 페이지가 발생한 경우, 상기 유효하지 않은 페이지가 발생된 블록을 상기 제 1블록 리스트의 헤드 부분에 추가하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
  11. 제 7 항에 있어서,
    상기 다수의 제 2블록을 관리하는 단계는, 상기 다수의 제 2블록들을 삭제 횟수가 작은 순서대로 배열한 제 2블록 리스트를 생성하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
  12. 제 11 항에 있어서,
    상기 가비지 컬렉션을 수행하는 단계는, 상기 다수의 제 1블록들 중 상기 유효하지 않은 페이지가 가장 처음 발생한 제 1블록에 상기 삭제 횟수가 가장 큰 제 2블록을 할당하여 상기 가비지 컬렉션을 수행하는 단계를 포함하는 비휘발성 메모리의 가비지 컬렉션을 위한 방법.
KR1020070027302A 2007-03-20 2007-03-20 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법 KR20080085574A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070027302A KR20080085574A (ko) 2007-03-20 2007-03-20 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
US12/051,598 US20080235306A1 (en) 2007-03-20 2008-03-19 Garbage collection in nonvolatile memories using data attributes, computer program products and methods of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070027302A KR20080085574A (ko) 2007-03-20 2007-03-20 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법

Publications (1)

Publication Number Publication Date
KR20080085574A true KR20080085574A (ko) 2008-09-24

Family

ID=39775808

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070027302A KR20080085574A (ko) 2007-03-20 2007-03-20 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US20080235306A1 (ko)
KR (1) KR20080085574A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621087B2 (en) 2017-02-09 2020-04-14 SK Hynix Inc. Operating method of data storage device

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7991942B2 (en) * 2007-05-09 2011-08-02 Stmicroelectronics S.R.L. Memory block compaction method, circuit, and system in storage devices based on flash memories
US7882301B2 (en) * 2007-05-09 2011-02-01 Stmicroelectronics S.R.L. Wear leveling in storage devices based on flash memories and related circuit, system, and method
US8041883B2 (en) 2007-05-09 2011-10-18 Stmicroelectronics S.R.L. Restoring storage devices based on flash memories and related circuit, system, and method
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US8402242B2 (en) * 2009-07-29 2013-03-19 International Business Machines Corporation Write-erase endurance lifetime of memory storage devices
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9405670B2 (en) * 2011-06-09 2016-08-02 Tsinghua University Wear leveling method and apparatus
US8539007B2 (en) 2011-10-17 2013-09-17 International Business Machines Corporation Efficient garbage collection in a compressed journal file
US8838551B2 (en) 2011-10-21 2014-09-16 International Business Machines Corporation Multi-level database compression
US8738877B2 (en) 2011-12-14 2014-05-27 Advance Micro Devices, Inc. Processor with garbage-collection based classification of memory
KR20140040998A (ko) 2012-09-27 2014-04-04 삼성전자주식회사 로그기반 데이터 저장 시스템의 관리방법
US8732135B1 (en) * 2013-03-01 2014-05-20 Storagecraft Technology Corporation Restoring a backup from a deduplication vault storage
US8738577B1 (en) 2013-03-01 2014-05-27 Storagecraft Technology Corporation Change tracking for multiphase deduplication
US20140250078A1 (en) * 2013-03-01 2014-09-04 Storagecraft Technology Corporation Multiphase deduplication
US8874527B2 (en) 2013-03-01 2014-10-28 Storagecraft Technology Corporation Local seeding of a restore storage for restoring a backup from a remote deduplication vault storage
GB201322290D0 (en) * 2013-12-17 2014-01-29 Ibm Method and device for managing a memory
US8751454B1 (en) 2014-01-28 2014-06-10 Storagecraft Technology Corporation Virtual defragmentation in a deduplication vault
US20160224464A1 (en) * 2014-04-17 2016-08-04 Bitmicro Networks, Inc. Valid Data Compression On SSD
US9619158B2 (en) 2014-12-17 2017-04-11 International Business Machines Corporation Two-level hierarchical log structured array architecture with minimized write amplification
US9606734B2 (en) 2014-12-22 2017-03-28 International Business Machines Corporation Two-level hierarchical log structured array architecture using coordinated garbage collection for flash arrays
US20160179399A1 (en) * 2014-12-23 2016-06-23 Sandisk Technologies Inc. System and Method for Selecting Blocks for Garbage Collection Based on Block Health
KR20170015760A (ko) * 2015-07-31 2017-02-09 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10216536B2 (en) * 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
TWI679534B (zh) 2017-09-18 2019-12-11 慧榮科技股份有限公司 資料儲存裝置以及資料儲存方法
CN107844432B (zh) * 2017-11-22 2021-01-12 深圳忆联信息系统有限公司 一种固态硬盘动态垃圾回收的方法及固态硬盘
US11630592B2 (en) * 2020-11-12 2023-04-18 Western Digital Technologies, Inc. Data storage device database management architecture

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4775932A (en) * 1984-07-31 1988-10-04 Texas Instruments Incorporated Computer memory system with parallel garbage collection independent from an associated user processor
US6098089A (en) * 1997-04-23 2000-08-01 Sun Microsystems, Inc. Generation isolation system and method for garbage collection
US5845298A (en) * 1997-04-23 1998-12-01 Sun Microsystems, Inc. Write barrier system and method for trapping garbage collection page boundary crossing pointer stores
US6209003B1 (en) * 1998-04-15 2001-03-27 Inktomi Corporation Garbage collection in an object cache
US6671707B1 (en) * 1999-10-19 2003-12-30 Intel Corporation Method for practical concurrent copying garbage collection offering minimal thread block times
US6542911B2 (en) * 2001-03-01 2003-04-01 Sun Microsystems, Inc. Method and apparatus for freeing memory from an extensible markup language document object model tree active in an application cache
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
US6950838B2 (en) * 2002-04-17 2005-09-27 Sun Microsystems, Inc. Locating references and roots for in-cache garbage collection
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7519639B2 (en) * 2004-01-05 2009-04-14 International Business Machines Corporation Method and apparatus for dynamic incremental defragmentation of memory
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US20080005520A1 (en) * 2006-06-09 2008-01-03 Siegwart David K Locality with parallel hierarchical copying garbage collection

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621087B2 (en) 2017-02-09 2020-04-14 SK Hynix Inc. Operating method of data storage device

Also Published As

Publication number Publication date
US20080235306A1 (en) 2008-09-25

Similar Documents

Publication Publication Date Title
KR20080085574A (ko) 비휘발성 메모리의 가비지 컬렉션을 위한 장치 및 방법
JP4778942B2 (ja) 不揮発性メモリを管理する装置及び方法
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
TWI446168B (zh) 記憶體系統
KR100755702B1 (ko) 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 동작방법
KR100755700B1 (ko) 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
JP6112595B2 (ja) メモリシステムにおける消去管理
KR101143397B1 (ko) 페이지 복사 발생 빈도를 줄이는 반도체 스토리지 시스템 및 그 제어 방법
US20140129758A1 (en) Wear leveling in flash memory devices with trim commands
KR20100021868A (ko) 플래시 메모리 장치를 위한 버퍼 캐쉬 관리 방법
KR101336258B1 (ko) 비휘발성 메모리의 데이터 처리 장치 및 방법
CN110362499B (zh) 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
KR20120081351A (ko) Ftl을 수행하는 비휘발성 메모리 장치 및 그의 제어 방법
JP2018160189A (ja) メモリシステム
CN110968253A (zh) 一种数据存储方法、装置及系统
KR20090024971A (ko) 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
US8996786B2 (en) Nonvolatile memory system and block management method
JP2015053075A (ja) メモリシステム、情報処理装置および記憶装置
JP5649709B2 (ja) メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
JP5687649B2 (ja) 半導体記憶装置の制御方法
US9361040B1 (en) Systems and methods for data storage management
KR100703727B1 (ko) 비휘발성 메모리, 이를 위한 사상 제어 장치 및 방법
KR100801072B1 (ko) 플래시 메모리, 이를 위한 맵핑 장치 및 방법
CN107077420B (zh) 覆盖擦除块映射

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid