KR101867282B1 - 비휘발성 메모리 장치의 가비지 컬렉션 방법 - Google Patents

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

Info

Publication number
KR101867282B1
KR101867282B1 KR1020110115297A KR20110115297A KR101867282B1 KR 101867282 B1 KR101867282 B1 KR 101867282B1 KR 1020110115297 A KR1020110115297 A KR 1020110115297A KR 20110115297 A KR20110115297 A KR 20110115297A KR 101867282 B1 KR101867282 B1 KR 101867282B1
Authority
KR
South Korea
Prior art keywords
segment
target segment
area
valid data
segments
Prior art date
Application number
KR1020110115297A
Other languages
English (en)
Other versions
KR20130050124A (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 KR1020110115297A priority Critical patent/KR101867282B1/ko
Priority to US13/559,637 priority patent/US8769191B2/en
Publication of KR20130050124A publication Critical patent/KR20130050124A/ko
Application granted granted Critical
Publication of KR101867282B1 publication Critical patent/KR101867282B1/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
    • G06F12/0261Garbage collection, i.e. reclamation of unreferenced memory using reference counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

비휘발성 메모리 장치의 가비지 컬렉션 방법이 제공된다. 비휘발성 메모리 장치의 가비지 컬렉션 방법은, 다수의 프리 세그먼트(free segment)와, 각각이 다수의 사용 세그먼트(used segment)를 포함하는 제1 내지 제4 영역을 포함하는 메모리 영역에서, 다수의 사용 세그먼트 중에서 대상 세그먼트(target segment)를 선정하는 단계, 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 제1 내지 제4 영역 중 적어도 어느 하나의 영역에 포함된 사용 세그먼트로 이동하는 단계, 및 선정된 대상 세그먼트에 포함된 모든 데이터 블록을 삭제하여 선정된 대상 세그먼트를 프리 세그먼트로 생성하는 단계를 포함하되, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 크면, 제1 방법으로 대상 세그먼트를 선정하고, 제2 방법으로 대상 세그먼트에 포함된 유효 데이터 블록을 이동하고, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 작으면, 제1 방법과 다른 제3 방법으로 대상 세그먼트를 선정하고, 제2 방법과 다른 제4 방법으로 대상 세그먼트에 포함된 유효 데이터 블록을 이동한다.

Description

비휘발성 메모리 장치의 가비지 컬렉션 방법{Garbage collection method for non-volatile memory device}
본 발명은 비휘발성 메모리 장치의 가비지 컬렉션 방법에 관한 것이다.
일반적으로 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리 장치가 많이 사용되고 있다. 비휘발성 메모리 장치는 데이터의 기록 및 삭제가 자유로운 RAM(Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 ROM(Read Only Memory)의 장점을 동시에 지니고 있다.
또한, 비휘발성 메모리 장치 중에서 주로 사용되는 플래시 메모리 장치는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기 등에 적합하다.
이러한 비휘발성 메모리 장치는 데이터의 갱신이 발생하는 경우, 기존 데이터가 기록되어있던 유효(valid) 데이터 블록은 무효(invalid) 데이터 블록으로 유지되고, 새로운 데이터 블록이 할당되어 갱신될 데이터를 기록하게 된다. 이때, 비휘발성 메모리 장치에 가용 공간이 부족하게 되면, 유효 데이터 블록을 모아 프리 세그먼트(free segment)를 생성하는 가비지 컬렉션(Garbage Collection)을 수행하여 가용 공간을 늘리게 된다.
이러한 가비지 컬렉션은 그 수행 과정에서 오버헤드(overhead)가 발생되게 되는데, 이러한 오버헤드는 비휘발성 메모리 장치의 성능 저하로 이어질 수 있으므로, 불필요한 오버헤드를 최소화시키는 방법에 대한 연구가 활발하다.
본 발명이 해결하고자 하는 기술적 과제는 수행과정에서 오버헤드가 최소화되어 효율적으로 수행이 가능한 비휘발성 메모리 장치의 가비지 컬렉션 방법을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법은, 다수의 프리 세그먼트(free segment)와, 각각이 다수의 사용 세그먼트(used segment)를 포함하는 제1 내지 제4 영역을 포함하는 메모리 영역에서, 다수의 사용 세그먼트 중에서 대상 세그먼트(target segment)를 선정하는 단계, 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 제1 내지 제4 영역 중 적어도 어느 하나의 영역에 포함된 사용 세그먼트로 이동하는 단계, 및 선정된 대상 세그먼트에 포함된 모든 데이터 블록을 삭제하여 선정된 대상 세그먼트를 프리 세그먼트로 생성하는 단계를 포함하되, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 크면, 제1 방법으로 대상 세그먼트를 선정하고, 제2 방법으로 대상 세그먼트에 포함된 유효 데이터 블록을 이동하고, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 작으면, 제1 방법과 다른 제3 방법으로 대상 세그먼트를 선정하고, 제2 방법과 다른 제4 방법으로 대상 세그먼트에 포함된 유효 데이터 블록을 이동한다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법은, 다수의 프리 세그먼트와, 각각이 다수의 사용 세그먼트를 포함하는 제1 내지 제4 영역을 포함하는 메모리 영역에서, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 크면, 다수의 사용 세그먼트 중에서 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수 및 유효 데이터 블록이 기록된 시간을 고려하여 대상 세그먼트를 선정하고, 메모리 영역에 포함된 프리 세그먼트의 개수가 설정값 보다 작으면, 다수의 사용 세그먼트 중에서 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수가 가장 작은 사용 세그먼트를 대상 세그먼트로 선정하는 단계, 선정된 대상 세그먼트가 제1 내지 제4 영역 중 어느 영역에 포함된 사용 세그먼트인지에 관계 없이, 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 제1 영역에 포함된 사용 세그먼트로 이동하는 단계, 및 선정된 대상 세그먼트에 포함된 모든 데이터 블록을 삭제하여 선정된 대상 세그먼트를 프리 세그먼트로 생성하는 단계를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 명세서에 사용되는 용어들을 설명하기 위한 도면이다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법의 순서도이다.
도 3 내지 도 11은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법을 설명하기 위한 도면들이다.
도 12는 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법을 설명하기 위한 도면이다.
도 13은 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 14는 도 13의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 15는 도 14를 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
본 발명에 따른 실시예들을 자세히 설명하기에 앞서, 도 1을 참조하여 본 명세서에서 사용될 몇몇 용어들을 정의하도록 한다.
도 1은 본 명세서에 사용되는 용어들을 설명하기 위한 도면이다.
도 1을 참조하면, 본 명세서에서, 데이터 블록(1a~1d, 2a~2d)은 비휘발성 메모리 장치에 저장되는 데이터가 기록되는 공간을 지칭한다. 여기서, 하나의 데이터 블록(1a~1d, 2a~2d)은, 예를 들어 비휘발성 메모리 장치의 하나의 페이지(page)에 대응될 수 있으나, 본 발명이 이에 제한되는 것은 아니다. 즉, 데이터 블록(1a~1d, 2a~2d)은 비휘발성 메모리 장치에 저장되는 데이터가 기록되는 공간이기만 하면, 대응되는 저장 공간이 무엇이든 간에 얼마든지 변형될 수 있있다. 예를 들어, 필요에 따라, 하나의 데이터 블록(1a~1d, 2a~2d)이 비휘발성 메모리 장치의 하나의 섹터(sector)에 대응될 수도 있다.
이러한 데이터 블록(1a~1d, 2a~2d)은, 그 안에 데이터가 기록되어 있고, 기록된 데이터가 사용이 가능한 유효(valid) 데이터 블록(2c), 그 안에 데이터가 기록되어 있으나, 기록된 데이터가 사용이 불가능한 무효(invalid) 데이터 블록(2a), 및 그 안에 데이터가 기록되어 있지 않은 프리(free) 데이터 블록(1a~1d, 2b, 2d)으로 구분될 수 있다.
세그먼트(segment)(1, 2)는 적어도 하나 이상의 데이터 블록(1a~1d, 2a~2d)이 모여 형성된 단위 저장공간을 지칭한다. 이러한 세그먼트(1, 2)는 프리 데이터 블록(1a~1d)으로만 이루어진 프리(free) 세그먼트(1)와, 유효 데이터 블록(2c)과 무효 데이터 블록(2a) 중 적어도 어느 하나를 포함하는 사용(used) 세그먼트(2)로 구분될 수 있다. 이러한 세그먼트(1, 2)는 포함하고 있는 데이터 블록의 종류에 따라 이를 보다 더 세부적으로 구분하는 것이 가능하나, 본 명세서에서는 설명의 편의상, 세그먼트(1, 2)를 이와 같이 두 가지로만 구분하도록 한다.
도 1에는 하나의 세그먼트(1, 2)에 4개의 데이터 블록(1a~1d, 2a~2d)이 포함된 것이 도시되어 있다. 이하, 본 발명의 실시예들을 설명하면서, 도 1에 도시된 것 같이, 하나의 세그먼트(1, 2)가 4개의 데이터 블록(1a~1d, 2a~2d)을 포함하는 것을 예로 들어 설명할 것이나, 이는 설명의 편의를 위한 것이며 본 발명이 이에 제한되는 것은 아니다. 필요에 따라, 하나의 세그먼트(1, 2)에 포함되는 데이터 블록(1a~1d, 2a~2d)의 개수는 이 보다 많아질 수도 있고, 또 적어질 수도 있다.
이하 도 2 내지 도 11을 참조하여, 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법에 대해 설명하도록 한다.
도 2는 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법의 순서도이다. 도 3 내지 도 11은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법을 설명하기 위한 도면들이다.
도 2를 참조하면, 먼저, 가비지 컬렉션의 대상이 되는 대상 세그먼트(target segment)를 선정한다(S100). 이에 대해, 도 3을 함께 참조하여 보다 구체적으로 설명하도록 한다.
도 3을 참조하면, 도 3에는 비휘발성 메모리 장치의 메모리 영역(100)이 도시되어 있다. 이러한 메모리 영역(100)은 다수의 프리 세그먼트(10)를 포함할 수 있다. 그리고, 메모리 영역(100)은 제1 내지 제4 영역(200~500)을 포함할 수 있는데, 각 영역은 도시된 것과 같이 다수의 사용 세그먼트(20)를 포함할 수 있다.
본 실시예에서, 이러한 다수의 사용 세그먼트(20) 중 가비지 컬렉션의 대상 세그먼트를 선정하는 방법은, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수에 따라 바뀔 수 있다.
구체적으로, 먼저, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값(이 값은 사용자 등에 의해 미리 지정될 수 있다) 보다 크면, 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수와, 유효 데이터 블록이 기록된 시간을 고려하여 대상 세그먼트를 선정한다. 그리고, 이와 반대로, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 작으면, 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수만을 고려하여 대상 세그먼트를 선정한다. 즉, 본 실시예에서는, 메모리 영역(100)에 남아있는 여유 저장 공간(예를 들어, 프리 세그먼트(10)의 개수)의 양에 따라 가비지 컬렉션의 대상 세그먼트를 선정하는 방법이 바뀌게 된다.
이처럼 본 실시예에서, 메모리 영역(100)에 남아있는 여유 저장 공간의 양(예를 들어, 프리 세그먼트(10)의 개수)에 따라 가비지 컬렉션의 대상 세그먼트를 선정하는 방법을 바꾸는 것에는 다음과 같은 이유가 있다.
먼저, 메모리 영역(100)에 남아있는 여유 저장 공간의 양이 많은 경우, 즉 프리 세그먼트(10)의 개수가 충분한 경우에는, 비휘발성 메모리 장치에 신규로 기록되거나 갱신되는(즉, 메모리 영역(100)에 입력되는)데이터에 대해 할당할 수 있는 프리 세그먼트(10)의 개수가 충분한 상태이다. 따라서, 가비지 컬렉션의 대상 세그먼트를 선정하는 과정에서 발생되는 오버헤드가 다소 크더라도 장치 성능에 크게 영향을 주지 않게 된다. 따라서, 본 실시예에서는 이 경우, 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수와, 유효 데이터 블록이 기록된 시간을 모두 종합적으로 고려하여 가비지 컬렉션의 대상 세그먼트를 선정한다. 비록 이 과정에서 오버헤드가 다소 발생하더라도 비휘발성 메모리 장치의 성능에 크게 악영향을 주지 않게 된다.
하지만, 메모리 영역(100)에 남아있는 여유 저장 공간의 양이 부족한 경우, 즉 프리 세그먼트(10)의 개수가 부족한 경우에는, 비휘발성 메모리 장치에 신규로 기록되거나 갱신되는(즉, 메모리 영역(100)에 입력되는)데이터에 대해 할당할 수 있는 프리 세그먼트(10)의 개수가 부족한 상태이다. 따라서, 이 경우에는 최대한 신속하게 가비지 컬렉션을 수행하여 프리 세그먼트(10)를 생성할 필요가 있다. 다시 말해, 이 경우에는 가비지 컬렉션의 대상 세그먼트를 선정하는 과정에서 발생되는 오버헤드가 비휘발성 메모리 장치의 성능에 크게 악영향을 줄 수 있기 때문에, 본 실시예에서는 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수만을 고려하여 대상 세그먼트를 선정하게 된다. 이처럼 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수만을 고려하여 대상 세그먼트를 선정하게 되면, 앞서, 유효 데이터 블록이 기록된 시간을 같이 고려하는 경우에 비해 대상 세그먼트 선정 과정에서의 오버헤드가 크게 줄어들기 때문에, 가비지 컬렉션 수행 과정에서 발생되는 오버헤드를 최소화할 수 있다.
이하에서는, 본 발명에 따른 실시예들의 일관성 있는 설명을 위하여, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우의 가비지 컬렉션 방법에 대해 먼저 설명하고, 그 후 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 작은 경우의 가비지 컬렉션 방법에 대해 설명하도록 한다.
다시 도 3을 참조하면, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우, 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수와, 유효 데이터 블록이 기록된 시간을 고려하여 대상 세그먼트를 선정한다. 이 때, 대상 세그먼트를 선정하는 방법으로는 예를 들어, 비용-편익법(cost-benefit method)이 사용될 수 있다.
구체적으로, 이 방법에 따를 경우, 먼저 각 사용 세그먼트(20)에 대해 아래의 <수학식 1>에 따른 값을 모두 계산한다.
<수학식 1>
Figure 112011087693784-pat00001
(여기서, u: 각 사용 세그먼트의 유효 데이터 블록의 개수, Age: 각 사용 세그먼트에 포함된 유효 데이터 블록이 기록된 시간)
그리고, 각 사용 세그먼트(20)에 대해 계산된 값 중 최대 값을 갖는 사용 세그먼트(20)를 대상 세그먼트로 선정한다.
여기서는, 이렇게 선정된 사용 세그먼트(20)가 도 3에 도시된 메모리 영역(100)의 제4 영역(500)에 포함된 사용 세그먼트(P)라고 가정하고, 본 실시예에 대한 설명을 계속하도록 한다.
다음, 다시 도 2를 참조하면, 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 제1 내지 제4 영역 중 적어도 어느 하나의 영역에 포함된 사용 세그먼트로 이동한다(S110). 이하, 도 3 내지 도 5를 참조하여, 이에 대해 보다 구체적으로 설명하도록 한다.
앞서 설명한 방법으로 대상 세그먼트(P)가 선정되면, 선정된 대상 세그먼트(P)에 포함된 모든 데이터 블록의 데이터가 삭제되어야 대상 세그먼트(P)를 프리 세그먼트(10)로 생성할 수 있다. 따라서, 선정된 대상 세그먼트(P)에 포함된 유효 데이터 블록(Pa)은 제1 내지 제4 영역(200~500) 중 적어도 어느 하나의 영역에 포함된 사용 세그먼트(20)로 이동되어야 한다.
본 실시예에서, 선정된 대상 세그먼트(P)에 포함된 유효 데이터 블록(Pa)을, 제1 내지 제4 영역(200~500) 중 어느 영역에 포함된 사용 세그먼트(20)에 이동할 것인지는, 도 4에 도시된 다이어그램을 따르게 된다. 즉, 도 4에는 특정 영역에 포함된 사용 세그먼트가 가비지 컬렉션(GC)의 대상 세그먼트로 선정될 경우, 그에 포함된 유효 데이터 블록을 어느 영역에 포함된 사용 세그먼트로 이동해야 하는지에 관한 다이어그램이 도시되어 있다. 여기서 가비지 컬렉션(GC)에 의한 유효 데이터 블록의 이동은 점선으로 도시되어 있다.
도 4를 참조하면, 본 실시예에서는, 가비지 컬렉션의 대상 세그먼트로 선정된 사용 세그먼트가 어느 영역에 포함되어 있던지 간에 상관 없이, 그에 포함된 유효 데이터 블록을 모두 제1 영역(100)에 포함된 사용 세그먼트로 이동시킴을 알 수 있다. 이렇게, 본 실시예에서 대상 세그먼트에 포함된 모든 유효 데이터 블록을 제1 영역(100)에 포함된 사용 세그먼트에 옮기는 이유는 추후, 본 실시예에 따른 데이터 재배치(data redistribution)를 설명하면서 같이 설명하도록 한다.
한편, 앞의 예시에서, 대상 세그먼트(P)는 제4 영역(500)에 포함되어 있으므로, 대상 세그먼트(P)에 포함된 유효 데이터 블록(Pa)은 도 4에 도시된 다이어그램에 따라 제1 영역(200)으로 이동하게 된다. 따라서, 도 5에 도시된 것과 같이, 제4 영역(500)에 포함된 대상 세그먼트(P)의 유효 데이터 블록(Pa)은 제1 영역(200)에 포함된 사용 세그먼트(Q)에 기록되게 되고, 대상 세그먼트(P)의 유효 데이터 블록(Pa)은 무효 데이터 블록으로 변경되게 된다.
다음 다시 도 2를 참조하면, 대상 세그먼트에 포함된 모든 데이터 블록의 데이터를 삭제하여 대상 세그먼트를 프리 세그먼트로 생성한다(S120).
도 6을 참조하면, 대상 세그먼트(P)는 유효 데이터 블록(Pa)을 제1 영역(200)에 포함된 사용 세그먼트(Q)로 이동하였으므로, 무효 데이터 블록 하나만을 포함하게 된다. 이제, 무효 데이터 블록을 삭제하여 대상 세그먼트(P)가 프리 데이터 블록만을 포함하도록 만든다. 그리고, 대상 세그먼트(P)를 프리 데이터 블록만을 포함하는 프리 세그먼트(R)로 생성한다.
한편, 도 4의 다이어그램은 가비지 컬렉션이 수행되기 전의 데이터 재배치(data redistribution)에 대해서도 도시하고 있다. 다시 말해 본 실시예에 따른, 비휘발성 메모리 장치는 도 4에 도시된 실선을 따라 데이터가 재배치되고 도시된 점선을 따라 가비지 컬렉션이 수행된다. 따라서, 대상 세그먼트(P)를 선정할 당시의 메모리 영역(100)의 상태를 나타내는 도 3은 이미 도 4에 도시된 다이어그램을 따라 데이터 재배치가 수행된 상태를 도시하고 있는 것이다.
이하, 도 4 및 도 7 내지 도 9를 참조하여, 본 실시예에 따른 데이터 재배치에 대해 보다 구체적으로 설명하도록 한다.
먼저, 도 7에 도시된 메모리 영역(100)에 신규 데이터(D)가 입력된다고 가정하자. 이는 예를 들어, 비휘발성 메모리 장치에 신규로 데이터(D)가 기록되는 것을 의미할 수 있다. 도 4에는 메모리 영역(100)에 신규로 데이터(D)가 입력될 경우, 제2 영역(300)에 이를 기록하는 것(entry)으로 도시되어 있다. 따라서, 신규 데이터(D)는 제2 영역(300)에 기록되게 된다. 제2 영역(300)에 신규 데이터(D)가 기록되는 방법은 다음 두 가지가 있을 수 있다. 먼저, 제2 영역(300)에 포함된 사용 세그먼트(20) 중 어느 하나의 프리 데이터 블록에 신규 데이터(D)가 기록될 수 있다. 만약, 제2 영역(300)에 포함된 사용 세그먼트(20)에 프리 데이터 블록이 존재하지 않을 경우에는 프리 세그먼트(20)에 신규 데이터(D)를 기록하고, 이러한 프리 세그먼트(20)를 제2 영역(300)에 포함시킬 수 도 있다. 도 7에서는, 제2 영역(300)에 포함된 사용 세그먼트(S)의 프리 데이터 블록에 신규 데이터(D)가 기록된 것을 그 일예로 도시하였다.
이제, 이 상태에서 데이터(D)가 갱신(예를 들어, 메모리 영역(100)에 재입력)된다면, 갱신되는 데이터(D)에 대해서는 재배치가 이루어져야 한다. 도 4를 참조하면, 제2 영역(300)에 기록된 데이터가 갱신(write)될 경우, 데이터(D)가 제3 영역(400)으로 재배치됨이 도시되어 있다. 따라서, 도 8을 참조하면, 데이터(D)가 갱신됨에 따라, 제2 영역(300)에 포함된 사용 세그먼트(S)의 유효 데이터 블록에 기록되어 있던 데이터(D)는 제3 영역(400)에 포함된 사용 세그먼트(T)의 유효 데이터 블록에 기록되게 된다. 그리고, 제2 영역(300)에 포함된 사용 세그먼트(S)의 유효 데이터 블록은 무효 데이터 블록으로 변경되게 된다.
다시, 이 상태에서 데이터(D)가 갱신(예를 들어, 메모리 영역(100)에 재입력)된다면, 갱신되는 데이터(D)에 대해서는 다시 재배치가 이루어져야 한다. 도 4를 참조하면, 제3 영역(400)에 기록된 데이터가 갱신(write)될 경우, 데이터(D)가 제4 영역(500)으로 재배치됨이 도시되어 있다. 따라서, 도 9를 참조하면, 데이터(D)가 갱신됨에 따라, 제3 영역(400)에 포함된 사용 세그먼트(T)의 유효 데이터 블록에 기록되어 있던 데이터(D)는 제4 영역(500)에 포함된 사용 세그먼트(P)의 유효 데이터 블록에 기록되게 된다. 이 때, 제4 영역(500)에 프리 데이터 블록을 포함하는 사용 세그먼트가 존재하는 않는 경우에는 도시된 것과 같이 프리 세그먼트(10)에 데이터(D)를 기록하고, 이를 제4 영역(500)의 사용 세그먼트(P)로 할 수 있다. 마지막으로, 제3 영역(400)에 포함된 사용 세그먼트(T)의 유효 데이터 블록은 무효 데이터 블록으로 변경되게 된다. 이렇게 데이터(D)가 순차적으로 재배치된 결과가 도 3에 도시된 메모리 영역(100)인 것이다.
종합해 보면, 도 4에 도시된 다이어그램에서, 제1 영역(200)에는 가비지 컬렉션에 의해 이동되고 데이터 갱신이 발생하지 않은 데이터들이 기록되게 되고, 제2 영역(300)에서 제 4영역(500)으로 갈수록 데이터 갱신이 빈번한 데이터들이 각 영역에 기록되게 된다.
메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우, 도 4에 도시된 다이어그램에 따라 데이터가 재배치되고, 가비지 컬렉션이 수행된다. 여기서, 도 4를 다시 참조하면, 가비지 컬렉션(GC, 점선)이 수행되어 제1 영역(200)에 기록된 데이터가 갱신(예를 들어, 메모리 영역(100)에 재입력)될 경우, 제4 영역(500)에 재배치되는 것으로 도시되어 있다. 즉, 본 실시에에서는 가비지 컬렉션이 수행된 데이터라 할지라도 한 번 갱신된 데이터는 조만간 다시 갱신될 가능성이 있다고 판단하고, 이를 제4 영역(500)에 기록하게 된다. 한편, 가비지 컬렉션이 수행되지 않은 상태의 데이터는, 제2 영역(300)에서 제3 영역(400)으로, 제3 영역(400)에서 제4 영역(500)으로 데이터를 단계적으로 이동되게 된다.
또한, 본 실시예에서는, 데이터가 제1 내지 제4 영역(200~500) 중 어느 영역에 기록되어 있던지 간에, 가비지 컬렉션이 수행되면 데이터를 제1 영역(200)에 기록하게 된다. 이처럼 가비지 컬렉션의 대상 세그먼트가 속한 영역에 관계없이 대상 세그먼트에 포함된 유효 데이터 블록의 데이터를 제1 영역(100)으로 이동하는 것은, 앞서 대상 세그먼트 선정 시, 유효 데이터 블록이 기록된 시간을 고려하였기 때문이다. 즉, 선정된 대상 세그먼트에 포함된 유효 데이터 블록의 데이터는 기록 시간 면에서도 비교적 오래되어 갱신이 잘 일어나지 않는 데이터로 볼 수 있기 때문에, 이를 데이터 갱신이 잘 일어나지 않는 데이터들이 기록된 제1 영역(200)에 기록하게 된다.
이처럼, 본 실시예에서는, 갱신에 의한 데이터 이동과 가비지 컬렉션에 의한 데이터 이동이 비대칭적(asymmetric)으로 일어나게 된다. 이러한 과정을 통해 비휘발성 메모리 장치의 성능에 영향을 주는 오버해드 발생을 최소화하면서, 효율적으로 데이터 재배치와 가비지 컬렉션을 수행할 수 있게 된다.
다음 도 3, 도 10 및 도 11을 참조하여, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 작은 경우의 가비지 컬렉션 방법에 대해 설명하도록 한다.
메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 작은 경우에는, 각 사용 세그먼트(20)에 포함된 유효 데이터 블록의 개수만을 고려하여 대상 세그먼트를 선정한다. 이는 비휘발성 메모리 장치의 성능에 악영향을 덜 주기 위해서임을 앞서 설명한 바 있다.
이 때, 대상 세그먼트를 선정하는 방법으로는 예를 들어, 탐욕법(greedy method)이 사용될 수 있다. 구체적으로, 이러한 탐욕법에 따를 경우, 다수의 사용 세그먼트(20) 중 가장 작은 수의 유효 데이터 블록을 포함하는 사용 세그먼트를 대상 세그먼트로 선정할 수 있다. 예를 들어, 도 3에서는 제4 영역(500)에 포함된 사용 세그먼트(P)가 가장 작은 수의 유효 데이터 블록을 포함하고 있으므로, 이를 대상 세그먼트(P)로 선정할 수 있다.
이제, 대상 세그먼트(P)에 포함된 유효 데이터 블록(Pa)의 데이터를 다른 영역에 포함된 사용 세그먼트로 이동시켜야 하는데, 이에 관한 다이어그램은 도 10에 도시되어 있다. 도 10에 도시된 다이어그램은 앞서 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우(도 4)와 유사하나, 가비지 컬렉션의 대상 세그먼트가 제4 영역(500)에 포함된 사용 세그먼트일 경우, 유효 데이터 블록의 데이터를 제3 영역(400)에 포함된 사용 세그먼트로 이동하는 것이 다르다. 즉, 이 경우에는, 도 3에 도시된 제4 영역(500)에 포함된 대상 세그먼트(P)의 유효 데이터 블록에 기록된 데이터가 도 11과 같이, 제3 영역(400)에 포함된 사용 세그먼트에 기록되고, 대상 세그먼트(P)가 프리 세그먼트(10)로 생성된다.
이처럼 가비지 컬렉션 수행 시의 데이터의 이동이 다른 이유는, 여기서는 대상 세그먼트 선정 시, 앞에서와 달리 유효 데이터 블록이 기록된 시간을 고려하지 않았기 때문이다. 즉, 도 10의 다이어그램을 참조하면, 제4 영역(500)은 빈번히 갱신이 일어나는 데이터가 기록되는 영역인데, 이 영역에 포함된 사용 세그먼트가 유효 데이터 블록을 가장 작게 포함하였다는 이유로 가비지 컬렉션의 대상 세그먼트로 선정되었다면, 대상 세그먼트의 유효 데이터 블록에 기록된 데이터는 다시 조만간 갱신이 일어날 확률이 높다. 따라서, 대상 세그먼트의 유효 데이터 블록에 기록된 데이터를 바로 제1 영역(200)에 포함된 사용 세그먼트로 이동시키지 않고 제3 영역(400)에 포함된 사용 세그먼트로 이동시킴으로써, 향후 이동된 데이터의 갱신이 일어날 경우 데이터를 바로 다시 제4 영역(500)에 포함된 사용 세그먼트로 이동할 수 있게 된다. 다시 말해, 도 10의 다이어그램과 같이 대상 세그먼트 선정 방식에 따라 데이터 이동을 다르게 함으로써, 비휘발성 메모리 장치의 동작에 효율성을 높일 수 있게 된다.
이 밖에 다른 사항에 대한 설명은, 앞서 설명한 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우와 동일한 바, 중복된 자세한 설명은 생략하도록 한다.
다음 도 2, 도 4, 및 도 12를 참조하여, 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법에 대해 설명하도록 한다.
도 12는 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법을 설명하기 위한 도면이다.
본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 가비지 컬렉션 방법 역시, 앞서 설명한 실시예와 동일하게 도 2에 도시된 순서도를 따라 가비지 컬렉션이 진행되게 된다. 즉, 메모리 영역(100)에 남아있는 여유 저장 공간(예를 들어, 프리 세그먼트(10)의 개수)의 양에 따라 가비지 컬렉션의 대상 세그먼트를 선정하는 방법이 변경됨은 앞서 설명한 실시예와 동일하다.
다만, 본 실시예에서는, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 큰 경우에는 도 4에 도시된 다이어그램에 따라 가비지 컬렉션과 데이터 재배치가 수행되나, 메모리 영역(100)에 포함된 다수의 프리 세그먼트(10)의 개수가 특정 설정값 보다 작은 경우에는 도 12에 도시된 다이어그램에 따라 가비지 컬렉션과 데이터 재배치가 수행된다.
도 12를 참조하면, 도 12에 도시된 다이어그램과 도 10에 도시된 다이어그램의 차이점은, 가비지 컬렉션의 대상 세그먼트가 제3 영역(400)에 포함된 사용 세그먼트일 경우, 유효 데이터 블록의 데이터를 제1 영역(200)에 포함된 사용 세그먼트로 이동하지 않고 제2 영역(200)에 포함된 사용 세그먼트로 이동하는 점이다. 즉, 본 실시에에서는, 가비지 컬렉션에 의한 데이터의 이동이 도시된 것과 같이 제4 영역(500)에서 제3 영역(400)으로, 제3 영역(400)에서 제2 영역(300)으로, 제2 영역(300)에서 제1 영역(200)으로 단계적으로 일어나게 된다. 이렇게 데이터를 이동시키는 이유는, 앞서 설명한 실시예와 동일하게, 대상 세그먼트 선정 시 유효 데이터 블록이 기록된 시간을 고려하지 않았기 때문에, 데이터 이동의 효율화를 통해 비휘발성 메모리 장치의 성능을 향상시키기 위함이다.
이 밖에 다른 사항에 대한 설명은, 앞서 설명한 실시예와 동일한 바, 중복된 설명은 생략하도록 한다.
다음 도 13 내지 도 15를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 시스템 및 그 응용예들에 대해 설명한다.
도 13은 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이고, 도 14는 도 13의 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 15는 도 14를 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 13을 참조하면, 메모리 시스템(1000)은 비휘발성 메모리 장치(1100) 및 컨트롤러(1200)를 포함한다.
비휘발성 메모리 장치(1100)는 앞서 설명한 방법으로 가비지 컬렉션이 수행되어 동작 성능이 향상된 비휘발성 메모리 장치일 수 있다.
컨트롤러(1200)는 호스트(Host) 및 비휘발성 메모리 장치(1100)에 연결된다. 호스트(Host)로부터의 요청에 응답하여, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 액세스하도록 구성된다. 예를 들면, 컨트롤러(1200)는 비휘발성 메모리 장치(1100)의 읽기, 쓰기, 소거, 그리고 배경(background) 동작을 제어하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이에 인터페이스를 제공하도록 구성된다. 컨트롤러(1200)는 비휘발성 메모리 장치(1100)를 제어하기 위한 펌웨어(firmware)를 구동하도록 구성된다.
예시적으로, 컨트롤러(1200)는 램(RAM, Random Access Memory), 프로세싱 유닛(processing unit), 호스트 인터페이스(host interface), 그리고 메모리 인터페이스(memory interface)와 같은 잘 알려진 구성 요소들을 더 포함한다. 램(RAM)은 프로세싱 유닛의 동작 메모리, 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 캐시 메모리, 그리고 비휘발성 메모리 장치(1100) 및 호스트(Host) 사이의 버퍼 메모리 중 적어도 하나로서 이용된다. 프로세싱 유닛은 컨트롤러(1200)의 제반 동작을 제어한다.
호스트 인터페이스는 호스트(Host) 및 컨트롤러(1200) 사이의 데이터 교환을 수행하기 위한 프로토콜을 포함한다. 예시적으로, 컨트롤러(1200)는 USB (Universal Serial Bus) 프로토콜, MMC (multimedia card) 프로토콜, PCI (peripheral component interconnection) 프로토콜, PCI-E (PCI-express) 프로토콜, ATA (Advanced Technology Attachment) 프로토콜, Serial-ATA 프로토콜, Parallel-ATA 프로토콜, SCSI (small computer small interface) 프로토콜, ESDI (enhanced small disk interface) 프로토콜, 그리고 IDE (Integrated Drive Electronics) 프로토콜 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 외부(호스트)와 통신하도록 구성된다. 메모리 인터페이스는 비휘발성 메모리 장치(1100)와 인터페이싱한다. 예를 들면, 메모리 인터페이스는 낸드 인터페이스 또는 노어 인터페이스를 포함한다.
메모리 시스템(1000)은 오류 정정 블록을 추가적으로 포함하도록 구성될 수 있다. 오류 정정 블록은 오류 정정 코드(ECC)를 이용하여 비휘발성 메모리 장치(1100)로부터 읽어진 데이터의 오류를 검출하고, 정정하도록 구성된다. 예시적으로, 오류 정정 블록은 컨트롤러(1200)의 구성 요소로서 제공된다. 오류 정정 블록은 비휘발성 메모리 장치(1100)의 구성 요소로서 제공될 수 있다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적될 수 있다. 예시적으로, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어, 메모리 카드를 구성할 수 있다. 예를 들면, 컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 PC 카드(PCMCIA, personal computer memory card international association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억장치(UFS) 등과 같은 메모리 카드를 구성할 것이다.
컨트롤러(1200) 및 비휘발성 메모리 장치(1100)는 하나의 반도체 장치로 집적되어 반도체 드라이브(SSD, Solid State Drive)를 구성할 수 있다. 반도체 드라이브(SSD)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(10)이 반도체 드라이브(SSD)로 이용되는 경우, 메모리 시스템(1000)에 연결된 호스트(Host)의 동작 속도는 획기적으로 개선된다.
다른 예로서, 메모리 시스템(1000)은 컴퓨터, UMPC (Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA (Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), 3차원 수상기(3-dimensional television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등과 같은 전자 장치의 다양한 구성 요소들 중 하나로 제공된다.
예시적으로, 비휘발성 메모리 장치(1100) 또는 메모리 시스템(1000)은 다양한 형태들의 패키지로 실장될 수 있다. 예를 들면, 비휘발성 메모리 장치(1100) 또는 메모리 시스템(1000)은 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
다음 도 14를 참조하면, 메모리 시스템(2000)은 비휘발성 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 비휘발성 메모리 장치(2100)는 복수의 비휘발성 메모리 칩들을 포함한다. 복수의 비휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 비휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예를 들어, 복수의 비휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
도 14에서, 하나의 채널에 복수의 비휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 비휘발성 메모리 칩이 연결되도록 메모리 시스템(2000)이 변형될 수 있음이 이해될 것이다.
다음 도 15를 참조하면, 컴퓨팅 시스템(3000)은 중앙 처리 장치(3100), 램(3200, RAM, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 그리고 메모리 시스템(2000)을 포함한다.
메모리 시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결된다. 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 메모리 시스템(2000)에 저장된다.
도 15에서, 비휘발성 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 비휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성될 수 있다.
도 15에서, 도 14를 참조하여 설명된 메모리 시스템(2000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(2000)은 도 13을 참조하여 설명된 메모리 시스템(1000)으로 대체될 수도 있다.
예시적으로, 컴퓨팅 시스템(3000)은 도 13 및 도 14를 참조하여 설명된 메모리 시스템들(1000, 2000)을 모두 포함하도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 프리 세그먼트 20: 사용 세그먼트
100: 메모리 영역 200~500: 제1 내지 제4 영역

Claims (10)

  1. 다수의 프리 세그먼트(free segment)와, 각각이 다수의 사용 세그먼트(used segment)를 포함하는 제1 내지 제4 영역을 포함하는 메모리 영역에서,
    상기 다수의 사용 세그먼트 중에서 대상 세그먼트(target segment)를 선정하는 단계;
    상기 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 상기 제1 내지 제4 영역 중 적어도 어느 하나의 영역에 포함된 사용 세그먼트로 이동하는 단계; 및
    상기 선정된 대상 세그먼트에 포함된 모든 데이터 블록의 데이터를 삭제하여 상기 선정된 대상 세그먼트를 프리 세그먼트로 생성하는 단계를 포함하되,
    상기 메모리 영역에 포함된 상기 프리 세그먼트의 개수가 설정값 보다 크면, 제1 방법으로 상기 대상 세그먼트를 선정하고, 제2 방법으로 상기 대상 세그먼트에 포함된 유효 데이터 블록을 이동하고,
    상기 메모리 영역에 포함된 상기 프리 세그먼트의 개수가 상기 설정값 보다 작으면, 상기 제1 방법과 다른 제3 방법으로 상기 대상 세그먼트를 선정하고, 상기 제2 방법과 다른 제4 방법으로 상기 대상 세그먼트에 포함된 유효 데이터 블록을 이동하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  2. 제 1항에 있어서,
    상기 제1 방법은, 상기 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수 및 상기 유효 데이터 블록이 기록된 시간을 고려하여 상기 대상 세그먼트를 선정하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  3. 제 2항에 있어서,
    상기 제1 방법은 비용-편익법(cost-benefit method)을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  4. 제 1항에 있어서,
    상기 제2 방법은, 상기 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 상기 제1 영역에 포함된 사용 세그먼트로 이동하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  5. 제 1항에 있어서,
    상기 제3 방법은, 상기 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수만을 고려하여 상기 대상 세그먼트를 선정하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  6. 제 5항에 있어서,
    상기 제3 방법은 상기 다수의 사용 세그먼트 중 가장 작은 수의 유효 데이터 블록을 포함하는 사용 세그먼트를 상기 대상 세그먼트로 선정하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  7. 제 5항에 있어서,
    상기 제3 방법은 탐욕법(greedy method)를 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  8. 제 1항에 있어서,
    상기 제4 방법은, 상기 선정된 대상 세그먼트가 상기 제4 영역에 포함된 대상 세그먼트이면 그에 포함된 유효 데이터 블록을 상기 제3 영역에 포함된 사용 세그먼트로 이동하고,
    상기 선정된 대상 세그먼트가 상기 제1 내지 제3 영역 중 어느 하나의 영역에 포함된 대상 세그먼트이면 그에 포함된 유효 데이터 블록을 상기 제1 영역에 포함된 사용 세그먼트로 이동하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  9. 제 1항에 있어서,
    상기 제4 방법은,
    상기 선정된 대상 세그먼트가 상기 제4 영역에 포함된 사용 세그먼트이면 그에 포함된 유효 데이터 블록을 상기 제3 영역에 포함된 사용 세그먼트로 이동하고,
    상기 선정된 대상 세그먼트가 상기 제3 영역에 포함된 사용 세그먼트이면 그에 포함된 유효 데이터 블록을 상기 제2 영역에 포함된 사용 세그먼트로 이동하고,
    상기 선정된 대상 세그먼트가 상기 제1 또는 제2 영역 중 어느 하나의 영역에 포함된 사용 세그먼트이면 그에 포함된 유효 데이터 블록을 상기 제1 영역에 포함된 사용 세그먼트로 이동하는 것을 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
  10. 다수의 프리 세그먼트와, 각각이 다수의 사용 세그먼트를 포함하는 제1 내지 제4 영역을 포함하는 메모리 영역에서,
    상기 메모리 영역에 포함된 상기 프리 세그먼트의 개수가 설정값 보다 크면, 상기 다수의 사용 세그먼트 중에서 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수 및 상기 유효 데이터 블록이 기록된 시간을 고려하여 대상 세그먼트를 선정하고, 상기 메모리 영역에 포함된 상기 프리 세그먼트의 개수가 상기 설정값 보다 작으면, 상기 다수의 사용 세그먼트 중에서 각 사용 세그먼트에 포함된 유효 데이터 블록의 개수가 가장 작은 사용 세그먼트를 대상 세그먼트로 선정하는 단계;
    상기 선정된 대상 세그먼트가 상기 제1 내지 제4 영역 중 어느 영역에 포함된 사용 세그먼트인지에 관계 없이, 상기 선정된 대상 세그먼트에 포함된 유효 데이터 블록을 상기 제1 영역에 포함된 사용 세그먼트로 이동하는 단계; 및
    상기 선정된 대상 세그먼트에 포함된 모든 데이터 블록의 데이터를 삭제하여 상기 선정된 대상 세그먼트를 프리 세그먼트로 생성하는 단계를 포함하는 비휘발성 메모리 장치의 가비지 컬렉션 방법.
KR1020110115297A 2011-11-07 2011-11-07 비휘발성 메모리 장치의 가비지 컬렉션 방법 KR101867282B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110115297A KR101867282B1 (ko) 2011-11-07 2011-11-07 비휘발성 메모리 장치의 가비지 컬렉션 방법
US13/559,637 US8769191B2 (en) 2011-11-07 2012-07-27 Garbage collection method for nonvolatile memory device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110115297A KR101867282B1 (ko) 2011-11-07 2011-11-07 비휘발성 메모리 장치의 가비지 컬렉션 방법

Publications (2)

Publication Number Publication Date
KR20130050124A KR20130050124A (ko) 2013-05-15
KR101867282B1 true KR101867282B1 (ko) 2018-06-18

Family

ID=48224531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110115297A KR101867282B1 (ko) 2011-11-07 2011-11-07 비휘발성 메모리 장치의 가비지 컬렉션 방법

Country Status (2)

Country Link
US (1) US8769191B2 (ko)
KR (1) KR101867282B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068189B2 (en) 2019-04-09 2021-07-20 SK Hynix Inc. Storage device and control method thereof

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501393B2 (en) * 2014-01-27 2016-11-22 Western Digital Technologies, Inc. Data storage system garbage collection based on at least one attribute
US9710326B2 (en) 2014-07-28 2017-07-18 SK Hynix Inc. Encoder by-pass with scrambler
US9798657B2 (en) 2014-10-15 2017-10-24 Samsung Electronics Co., Ltd. Data storage device including nonvolatile memory device and operating method thereof
US10318414B2 (en) * 2014-10-29 2019-06-11 SK Hynix Inc. Memory system and memory management method thereof
KR101548689B1 (ko) 2014-12-26 2015-09-01 성균관대학교산학협력단 파일 시스템에서의 부분 가비지 컬렉션 방법 및 장치
JP6320322B2 (ja) * 2014-12-29 2018-05-09 東芝メモリ株式会社 キャッシュメモリ装置及びプログラム
KR102301772B1 (ko) 2015-03-09 2021-09-16 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 저장 장치 및 그것의 가비지 컬렉션 방법
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
US20160321010A1 (en) 2015-04-28 2016-11-03 Kabushiki Kaisha Toshiba Storage system having a host directly manage physical data locations of storage device
WO2017069646A1 (en) * 2015-10-19 2017-04-27 Huawei Technologies Co., Ltd. Method and device for determination of garbage collector thread number and activity management in log-structured file systems
US9891833B2 (en) 2015-10-22 2018-02-13 HoneycombData Inc. Eliminating garbage collection in nand flash devices
KR102545067B1 (ko) * 2016-03-02 2023-06-20 한국전자통신연구원 로그 구조 파일 시스템의 메타 데이터 저장 방법, 시스템 및 컴퓨터 판독 가능한 기록 매체
US10101939B2 (en) 2016-03-09 2018-10-16 Toshiba Memory Corporation Storage system having a host that manages physical data locations of a storage device
KR102544162B1 (ko) * 2017-07-11 2023-06-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10521119B1 (en) * 2017-09-22 2019-12-31 EMC IP Holding Company LLC Hybrid copying garbage collector
WO2020000492A1 (zh) * 2018-06-30 2020-01-02 华为技术有限公司 一种存储碎片管理方法及终端
KR20200016075A (ko) 2018-08-06 2020-02-14 에스케이하이닉스 주식회사 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
US11550712B2 (en) * 2020-06-11 2023-01-10 Google Llc Optimizing garbage collection based on survivor lifetime prediction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080056580A (ko) * 2006-12-18 2008-06-23 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
KR20100034743A (ko) * 2007-06-08 2010-04-01 쌘디스크 코포레이션 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
KR20110021417A (ko) * 2009-08-26 2011-03-04 한국전자통신연구원 플래시 메모리 시스템 및 그것의 내용기반 블록 관리 방법

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1576593B1 (en) * 2002-12-24 2015-10-21 LG Electronics Inc. Dual journaling store method and storage medium thereof
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US20100057976A1 (en) * 2008-08-26 2010-03-04 Menahem Lasser Multiple performance mode memory system
KR100988388B1 (ko) 2009-04-20 2010-10-18 성균관대학교산학협력단 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
US8364924B2 (en) * 2009-10-21 2013-01-29 International Business Machines Corporation Achieving a high throughput in a storage cache application using a flash solid state disk
US8166269B2 (en) 2009-11-05 2012-04-24 Oracle America, Inc. Adaptive triggering of garbage collection
US8433981B1 (en) * 2010-01-12 2013-04-30 Sk Hynix Memory Solutions Inc. Coding across data blocks to reduce write amplification in NAND flash
US20120023144A1 (en) * 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
US8417878B2 (en) * 2010-09-20 2013-04-09 Seagate Technology Llc Selection of units for garbage collection in flash memory
US10049040B2 (en) * 2011-01-21 2018-08-14 Seagate Technology Llc Just in time garbage collection
US8762627B2 (en) * 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080056580A (ko) * 2006-12-18 2008-06-23 삼성전자주식회사 비휘발성 데이터 저장장치의 정적 데이터 영역 검출 방법,마모도 평준화 방법 및 데이터 유닛 병합 방법과 그 장치
KR20100034743A (ko) * 2007-06-08 2010-04-01 쌘디스크 코포레이션 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
US20100325351A1 (en) * 2009-06-12 2010-12-23 Bennett Jon C R Memory system having persistent garbage collection
KR20110021417A (ko) * 2009-08-26 2011-03-04 한국전자통신연구원 플래시 메모리 시스템 및 그것의 내용기반 블록 관리 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11068189B2 (en) 2019-04-09 2021-07-20 SK Hynix Inc. Storage device and control method thereof

Also Published As

Publication number Publication date
US8769191B2 (en) 2014-07-01
KR20130050124A (ko) 2013-05-15
US20130117501A1 (en) 2013-05-09

Similar Documents

Publication Publication Date Title
KR101867282B1 (ko) 비휘발성 메모리 장치의 가비지 컬렉션 방법
KR101861545B1 (ko) 저장 장치의 데이터 관리 방법
KR101907059B1 (ko) 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US20140115239A1 (en) Method of managing data in nonvolatile memory device
JP6343438B2 (ja) コンピュータシステム及びコンピュータシステムのデータ管理方法
US9852061B2 (en) Memory device and operating method of memory device
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
EP2665065A2 (en) Electronic device employing flash memory
US9201787B2 (en) Storage device file system and block allocation
KR101621788B1 (ko) Ssd에 데이터 기록
KR101510120B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
KR20100037874A (ko) 반도체 디스크 장치 및 그것의 데이터 처리 방법
KR20190044873A (ko) 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치
US20160378375A1 (en) Memory system and method of operating the same
US20160041759A1 (en) Storage system and data transmitting method thereof
JP6215631B2 (ja) コンピュータシステム及びそのデータ管理方法
US20140095558A1 (en) Computing system and method of managing data thereof
US10732845B2 (en) Data search method, memory storage apparatus, and memory control circuit unit
US9292524B2 (en) File system and file storing method
US20200379683A1 (en) Apparatus for transmitting map information in a memory system
KR20230135346A (ko) 메모리 컨트롤러 및 그의 동작 방법

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right