KR101907059B1 - 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 - Google Patents
비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 Download PDFInfo
- Publication number
- KR101907059B1 KR101907059B1 KR1020110139302A KR20110139302A KR101907059B1 KR 101907059 B1 KR101907059 B1 KR 101907059B1 KR 1020110139302 A KR1020110139302 A KR 1020110139302A KR 20110139302 A KR20110139302 A KR 20110139302A KR 101907059 B1 KR101907059 B1 KR 101907059B1
- Authority
- KR
- South Korea
- Prior art keywords
- block
- memory device
- life
- nonvolatile memory
- logical page
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, 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)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
비휘발성 메모리 장치의 블록 관리 방법이 제공된다. 비휘발성 메모리 장치의 블록 관리 방법은, 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 대상 블록(target block)으로 선정하고, 대상 블록을 프리 블록(free block)으로 반환하는 것을 포함하는 것을 포함한다.
Description
본 발명은 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템에 관한 것이다.
일반적으로 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리 장치가 많이 사용되고 있다.
비휘발성 메모리 장치는 데이터의 기록 및 삭제가 자유로운 RAM(Random Access Memory)의 장점과 전원 공급 없이도 저장된 데이터를 보존하는 ROM(Read Only Memory)의 장점을 동시에 지니고 있다.
또한, 비휘발성 메모리 장치 중에서 주로 사용되는 플래시 메모리 장치는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기 등에 적합하다.
이러한 비휘발성 메모리 장치는 데이터의 갱신이 발생하는 경우, 기존 데이터가 기록되어 있던 페이지는 유효하지 않은 상태로 유지되고, 새로운 페이지를 할당받아 갱신될 데이터를 기록하게 된다. 이때, 비휘발성 메모리에 가용 공간이 부족하게 되면, 유효한 페이지만을 모으는 가비지 컬렉션(Garbage Collection)을 수행하여 가용 공간을 늘리게 된다.
한편, 이렇게 가비지 컬렉션이 수행되는데 소요되는 시간은 비휘발성 메모리 장치의 성능에 부하로 작용하게 된다. 따라서, 비휘발성 메모리 장치가 작동하는 중에 가비지 컬렉션에 소요되는 시간이 작을수록 장치의 전체 성능이 향상될 수 있다.
본 발명이 해결하고자 하는 기술적 과제는 가비지 컬렉션에 소요되는 시간이 단축되어 비휘발성 메모리 장치의 성능을 향상시킬 수 있는 블록 관리 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 기술적 과제는 가비지 컬렉션에 소요되는 시간이 단축되어 비휘발성 메모리 장치의 성능을 향상시킬 수 있는 블록 관리 시스템을 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 방법은, 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 대상 블록(target block)으로 선정하고, 대상 블록을 프리 블록(free block)으로 반환하는 것을 포함하는 것을 포함한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템은, 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 대상 블록(target block)으로 선정하는 대상 블록 선정부, 및 대상 블록 선정부가 선정한 대상 블록을 프리 블록으로 반환하는 블록 반환부를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함된 블록의 유형들을 도시한 도면이다.
도 2 및 도 3은 호스트로부터 다수의 논리 페이지를 입력 받은 비휘발성 메모리 장치 내부의 블록 변화를 도시한 도면들이다.
도 4는 다양한 사용환경에 따라 변화하는 비휘발성 메모리 장치의 재기록 횟수의 변화를 도시한 도면이다.
도 5는 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법의 순서도이다.
도 6 및 도 7은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법을 설명하기 위한 도면들이다.
도 8 내지 도 10은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면들이다.
도 11은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면이다.
도 12는 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 13은 도 12의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 2 및 도 3은 호스트로부터 다수의 논리 페이지를 입력 받은 비휘발성 메모리 장치 내부의 블록 변화를 도시한 도면들이다.
도 4는 다양한 사용환경에 따라 변화하는 비휘발성 메모리 장치의 재기록 횟수의 변화를 도시한 도면이다.
도 5는 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법의 순서도이다.
도 6 및 도 7은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법을 설명하기 위한 도면들이다.
도 8 내지 도 10은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면들이다.
도 11은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면이다.
도 12는 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이다.
도 13은 도 12의 메모리 시스템의 응용 예를 보여주는 블록도이다.
도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수도 있음은 물론이다.
본 실시예에서 사용되는 사용되는 '부' 또는 '모듈'이라는 용어는 소프트웨어 또는 FPGA또는 ASIC과 같은 하드웨어 구성요소를 의미하며, '부' 또는 '모듈'은 어떤 역할들을 수행한다. 그렇지만 '부' 또는 '모듈'은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '부' 또는 '모듈'은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '부' 또는 '모듈'은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 '부' 또는 '모듈'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '부' 또는 '모듈'들로 결합되거나 추가적인 구성요소들과 '부' 또는 '모듈'들로 더 분리될 수 있다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
구체적인 본 발명의 실시예들에 대한 설명에 앞서, 먼저 도 1을 참조하여, 본 명세서에서 사용되는 용어들에 대해 정의하도록 한다.
도 1은 본 발명의 실시예들에 따른 비휘발성 메모리 장치에 포함된 블록의 유형들을 도시한 도면이다.
도 1을 참조하면, 본 발명의 실시예들에 따른 비휘발성 메모리 장치에는 다양한 형태의 다수의 블록이 포함될 수 있다. 본 실시예에서, 이러한 블록의 종류로는, 크게 도시된 것과 같이 프리 블록(free block), 오픈 블록(open block), 풀 블록(full block) 등을 들 수 있다.
이하에서는, 비휘발성 메모리 장치에 포함된 하나의 블록이 도 1에 도시된 것과 같이 3개의 논리 페이지(logical page)를 포함하는 것을 예로 들어 설명할 것이나, 본 발명이 이러한 예시에 제한되는 것은 아니다. 필요에 따라, 하나의 블록에는 이보다 더 많은 수의 논리 페이지가 포함될 수도 있고, 이보다 더 적은 수의 논리 페이지가 포함될 수도 있다.
프리 블록은, 도시된 것과 같이 블록 내에 논리 페이지가 하나도 포함되지 않은 블록을 의미한다. 이러한 프리 블록은 비휘발성 메모리 장치가 처음 구동할 당시 가장 많이 존재하게 되고, 장치의 사용시간이 경과할수록 점점 줄어들게 된다. 그리고, 장치의 사용시간이 더욱 경과하게 되어 장치 내에 프리 블록의 개수가 일정 수 이하가 되면, 비휘발성 메모리 장치는 가비지 컬렉션(garbage collection) 등을 통해 이러한 프리 블록을 새로 생성하게 된다.
오픈 블록은, 도시된 것과 같이 불록 내에 논리 페이지는 포함되나, 블록이 최대 포함할 수 있는 논리 페이지에는 아직 도달하지 못한 블록을 의미한다. 예를 들어, 도 1의 왼쪽 오픈 블록은, 블록 내에 논리 페이지 0만 저장되어 있기 때문에, 최대 3개의 논리 페이지가 저장될 수 있는 이러한 블록에는 2개의 논리 페이지가 더 저장될 수 있다. 그리고, 도 1의 오른쪽 오픈 블록은, 블록 내에 논리 페이지 2, 7이 저장되어 있기 때문에, 1개의 논리 페이지가 추가적으로 더 저장될 수 있다.
호스트로부터 논리 페이지가 비휘발성 메모리 장치로 입력되면, 입력된 논리 페이지는 일반적으로 이러한 오픈 블록에 저장되게 된다. 본 발명의 몇몇 실시예에서, 비록 상세하게 도시하지는 않았으나, 이러한 오픈 블록들은 빈번하게 갱신이 일어나는 논리 페이지들을 저장하는 제1 블록(예를 들어, hot block) 그룹과, 빈번하게 갱신이 일어나지 않는 논리 페이지들을 저장하는 제2 블록(예를 들어, cold block) 그룹으로 구분될 수 있다.
비휘발성 메모리 장치는, 호스트로부터 제공 받은 논리 페이지의 속성이 지속적으로 빈번히 갱신이 일어나는 제1 데이터(예를 들어, hot data)라면, 이를 제1 블록(예를 들어, hot block) 그룹에 포함된 오픈 블록들에 저장하고, 데이터의 속성이 그와 반대인 제2 데이터(예를 들어, cold data)라면, 이를 제2 블록(예를 들어, cold block) 그룹에 포함된 오픈 블록들에 저장할 수 있다. 따라서, 제1 블록(예를 들어, hot block) 그룹에 포함된 오픈 블록들은, 제2 블록(예를 들어, cold block) 그룹에 포함된 오픈 블록들에 비해, 상대적으로 비휘발성 메모리 장치 내에서 오픈 블록 상태로 머무는 시간이 작을 수 있다.
풀 블록은, 도시된 것과 같이 불록이 포함할 수 있는 최대 논리 페이지 개수까지 논리 페이지가 저장된 블록을 의미한다. 본 실시예에서, 풀 블록은 도시된 것과 같이 하나의 블록에 3개의 논리 페이지가 저장된 블록을 의미할 수 있다. 향후 보다 자세히 설명하겠으나, 블록에 이미 저장된 논리 페이지(예를 들어, 논리 페이지 2)에 대해 호스트로부터 갱신이 일어나는 경우, 기존에 저장되어 있던 블록 내의 논리 페이지는 무효화(invalidated)된다. 다시말해, 동일한 논리 페이지가 호스트로부터 다시 입력될 경우, 기존 블록 내에 저장된 논리 페이지는 무효(invalid) 논리 페이지로 변경되고, 새로운 블록에 새로 입력 받은 논리 페이지가 유효(valid) 논리 페이지로 저장되게 된다. 도 1에서, 논리 페이지 2에 표시된 줄은 논리 페이지 2가 무효화(invalidated) 되었음을 의미한다.
앞서, 오픈 블록들을 빈번하게 갱신이 일어나는 논리 페이지들을 저장하는 제1 블록(예를 들어, hot block) 그룹과, 빈번하게 갱신이 일어나지 않는 논리 페이지들을 저장하는 제2 블록(예를 들어, cold block) 그룹으로 구분하였으나, 풀 블록도 이러한 기준으로 구분하는 것이 가능하다. 풀 블록에 포함된 논리 페이지가 호스트로부터 빈번히 갱신이 일어나는 속성을 갖고 있다면, 이러한 풀 블록은 제1 블록(예를 들어, hot block) 그룹에 속할 수 있고, 풀 블록에 포함된 논리 페이지가 호스트로부터 빈번히 갱신이 일어나지 않는 속성을 갖고 있다면, 이러한 풀 블록은 제2 블록(예를 들어, cold block) 그룹에 속할 수 있다.
따라서, 제1 블록(예를 들어, hot block) 그룹에 속한 풀 블록들은 그에 포함된 논리 페이지들이 빈번하게 무효화되는 성향이 있으며, 제2 블록(예를 들어, cold block) 그룹에 속한 풀 블록들은 그에 포함된 논리 페이지들이 비교적 오랫동안 유효 페이지로 남는 성향이 있게 된다.
한편, 본 실시예에서, 풀 블록은 영 블록(young block)과 올드 블록(old block)으로 구분될 수 있다. 영 블록은 풀 블록 중 블록 라이프(block life)의 임계값이 경과되지 않은 풀 블록을 의미하며, 올드 블록은 풀 블록 중 블록 라이프의 임계값이 경과된 풀 블록을 의미한다. 여기서, 블록 라이프란, 해당 블록을 채우는 마지막 논리 페이지가 기록된 시점부터 비휘발성 메모리 장치에 기록된 논리 페이지량을 의미한다.
이하, 도 2 및 도 3을 참조하여, 앞서 설명한 블록 라이프, 영 블록, 올드 블록의 개념에 대해 보다 구체적으로 설명하도록 한다.
도 2 및 도 3은 호스트로부터 다수의 논리 페이지를 입력 받은 비휘발성 메모리 장치 내부의 블록 변화를 도시한 도면들이다.
먼저 도 2를 참조하면, 호스트(10)로부터 논리 페이지 0, 1, 2가 순차적으로 입력된다고 가정한다. 이 때, 비휘발성 메모리 장치(20)에는 4개의 프리 플록(B1~B4)이 포함되어 있을 수 있다.
앞서, 설명한 것과 같이, 호스트로(10)로부터 논리 페이지가 입력되면, 프리 블록(B1~B4)에 그 값이 저장되게 된다. 여기서는, 제1 프리 블록(B1)부터 순차적으로 그 값이 저장된다고 가정한다. 따라서, 호스트(10)로부터 입력된 논리 페이지 0, 1, 2는 제1 프리 블록(B1)에 순차적으로 저장되게 된다. 도 2는 논리 페이지 0, 1, 2가 제1 프리 블록(B1)에 순차적으로 저장된 상태를 도시한 도면이다. 제1 프리 블록(B1)은 3개의 논리 페이지를 저장함으로써 제1 풀 블록(B1)이 되었다.
다음 도 3을 참조하면, 이이서 호스트로(10)로부터 논리 페이지 3, 4, 0, 4, 5, 6, 4가 순차적으로 비휘발성 메모리 장치(20)에 입력된다고 가정한다.
먼저, 논리 페이지 3, 4가 입력되면, 제2 프리 블록(B2)에 그 값이 순차적으로 저장된다. 그리고, 이어서 논리 페이지 0이 입력되면, 논리 페이지 0은 이미 제1 풀 블록(B1)에 그 값이 저장되어 있으므로, 제1 풀 블록(B1)에 이미 저장된 논리 페이지가 무효화되고, 제2 프리 블록(B2)에 새로운 값이 저장된다. 이제 제2 프리 블록(B2)은 3개의 논리 페이지를 저장함으로써 제2 풀 블록(B2)에 되게 된다.
향후, 입력되는 논리 페이지 4, 5, 6, 4도 동일한 과정을 거쳐 각각 제3 프리 블록(B3)과 제4 프리 블록(B4)에 저장되게 된다. 이에 따라, 제3 프리 블록(B3)은 제3 풀 블록(B3)이 되게 되며, 제4 프리 블록(B4)은 제4 오픈 블록(B4)이 되게 된다.
앞서, 영 블록(B3)는 풀 블록 중 블록 라이프(block life)의 임계값이 경과되지 않은 풀 블록을 의미하며, 올드 블록(B1, B2)은 풀 블록 중 블록 라이프의 임계값이 경과된 풀 블록을 의미한다고 설명하였다. 그리고, 블록 라이프는 해당 블록을 채우는 마지막 논리 페이지가 기록된 시점부터 비휘발성 메모리 장치(20)에 기록된 논리 페이지량을 의미한다고 설명하였다.
이를 바탕으로, 도 3에서 제1 풀 블록(B1)의 블록 라이프를 계산해 보면, 7이됨을 알 수 있다. 제1 오픈 블록(B1)의 마지막을 채우는 논리 페이지 2가 입력되어 제1 오픈 블록(B1)이 제1 풀 블록(B1)이된 후, 비휘발성 메모리 장치(20)에는 7개의 논리 페이지(논리 페이지 3, 4, 0, 4, 5, 6, 4)가 입력되었기 때문이다. 마찬가지로, 제2 풀 블록(B2)과 제3 풀 블록(B3)의 블록 라이프를 계산해보면, 각각 4, 1이 됨을 알 수 있다. 그리고, 제4 오픈 블록(B4)은 아직 블록이 풀 블록이 되지 못했으므로, 블록 라이프가 0임을 알 수 있다.
여기서, 블록 라이프의 임계값을 3이라고 가정하면, 제1 풀 블록(B1)과 제2 풀 블록(B2)의 블록 라이프는 임계값이 경과되었고, 제3 풀 블록(B3)의 블록 라이프는 임계값이 경과되지 않았음을 알 수 있다. 따라서, 본 실시예에서, 제1 풀 블록(B1)과 제2 풀 블록(B2)은 올드 블록이 되며, 제3 풀 블록(B3)은 영 블록이 된다.
도 3과 같은 블록 상태에서, 비휘발성 메모리 장치(20)가 프리 블록을 확보하기 위해, 가비지 컬렉션을 수행한다고 하자. 일반적으로, 비휘발성 메모리 장치의 가비지 컬렉션은 다음의 순서로 진행되게 된다.
(1) 풀 블록 중 대상 블록을 선정
(2) 대상 블록에 포함된 유효(valid) 논리 페이지를 프리 블록 또는 오픈 블록으로 이동
(3) 대상 블록을 삭제하여 프리 블록으로 반환
일반적인 가비지 컬렉션에서, 상기 (1)의 과정에서는, 풀 블록 중 유효 논리 페이지를 가장 적게 포함하는 풀 블록을 대상 블록으로 선정하게 된다. 다시 말해, 각 풀 블록에 포함된 무효 논리 페이지 수를 카운트하여 무효 논리 페이지를 가장 많이 포함하는 풀 블록을 대상 블록으로 선정하는 IPC(Invalid Page Conut) 기법이 사용될 수 있다. 이렇게 하는 이유는, 이러한 풀 블록이 대상 블록으로 선정되어야만, 상기 (2)의 과정에서 이동시키는 유효 논리 페이지량이 가장 작아지게 되고, 나아가 비휘발성 메모리 장치(20)의 성능에 가장 부담이 적기 때문이다.
이러한 기준에 따라, 도 3의 예에서, 대상 블록을 선정할 경우, 무효 논리 페이지가 가장 많은 제2 풀 블록(B2)이 대상 블록으로 선정될 수 있다.
하지만, 여기서 만약 제3 풀 블록(B3)이 앞서 설명한 제1 블록(예를 들어, hot block) 그룹에 속한 풀 블록 이라면 제3 풀 블록(B3)에 포함된 논리 페이지들이 단 기간 내에 무효화될 가능성이 높다. 즉, 호스트(10)로부터 논리 페이지 5, 6이 곧 바로 입력될 가능성이 매우 높게 된다.
만약, 도 3에 도시된 호스트(10)로부터 입력된 마지막 논리 페이지 4에 이이서, 논리 페이지 5, 6이 입력되게 되면, 제3 풀 블록(B3)에 포함된 모든 논리 페이지는 무효화되게 된다. 그리고, 이 경우, 제3 풀 블록(B3)이 가비지 컬렉션의 대상 블록으로 선정된다면, 제2 풀 블록(B2)이 선정되는 경우에 비해, 데이터 이동 비용을 줄일 수 있다.
또한, 도 3에 도시된 예와 다르게, 이번에는 영 블록이 가비지 컬렉션의 대상 블록으로 선정되었다고 가정하자. 마찬가지로, 이러한 대상 블록이 제1 블록(예를 들어, hot block) 그룹에 속한 풀 블록이라면, 이러한 대상 블록은 조금의 시간을 대기한다면, 대상 블록 내에 포함된 모든 논리 페이지들이 무효화될 수 있다. 하지만, 이러한 시간을 대기하지 않은 채로 대상 블록을 선정하게 된다면, 블록 내에 포함된 모든 논리 페이지들이 무효화되기 전에 블록이 대상 블록으로 선정될 수 있다.
종합하면, 가비지 컬렉션의 대상 블록을 선정하기 전에, 블록 라이프의 임계값이 경과되지 않은 영 블록들은, 그에 포함된 논리 페이지들이 충분히 무효화될 수 있는 시간을 갖는 것이 가비지 컬렉션에 소요되는 전체 시간을 단축 시키는데 도움이 됨을 알 수 있다.
이하, 도 4를 참조하여, 이에 대해 보다 구체적으로 설명하도록 한다.
도 4는 다양한 사용환경에 따라 변화하는 비휘발성 메모리 장치의 재기록 횟수의 변화를 도시한 도면이다.
도 4에 도시된 그래프에서, Y축은 비휘발성 메모리 장치 내의 블록들 중 어느 정도의 블록들이 재기록(re-write) 되는지를 나타내는 확률 값이며, X축은 그 때의 재기록 횟수를 나타낸다.
예를 들어, 사용 환경 B에서는, 비휘발성 메모리 장치에 1MB 단위의 약 110회 정도의 재기록이 발생하면, 비휘발성 메모리 장치에 포함된 전체 블록의 약 50%가 갱신될 수 있으나, 사용 환경 D에서는, 비휘발성 메모리 장치에 1MB 단위의 약 401회 정도의 재기록이 발생해야 비휘발성 메모리 장치에 포함된 전체 블록의 약 50%가 갱신될 수 있음을 알 수 있다. 또한, 사용 환경 E에서는, 1MB 단위의 수 회 재기록만 발생하여도, 비휘발성 메모리 장치에 포함된 전체 블록의 약 80%가 갱신될 수 있음을 알 수 있다.
이처럼, 사용 환경(A~E)에 따라 특정 사용환경에서는, 제1 데이터(예를 들어, hot data)를 주로 사용하기 때문에, 대부분의 데이터가 짧은 시간 안에 비휘발성 메모리 장치에 재기록됨을 알 수 있다. 따라서, 이와 같은 결과를 고려해볼 때, 특정 사용 환경에서는 가비지 컬렉션의 대상 블록을 선정하기 전에, 영 블록들에 대해서는 그에 포함된 논리 페이지들이 충분히 무효화될 수 있는 시간을 부여하는 것이 보다 효율적으로 가비지 컬렉션을 수행할 수 있는 한 방법이 될 수 있음을 알 수 있다.
이하, 도 5 내지 도 7을 참조하여, 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법에 대해 설명한다.
도 5는 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법의 순서도이다. 도 6 및 도 7은 본 발명의 실시예들에 따른 비휘발성 메모리 장치의 블록 관리 방법을 설명하기 위한 도면들이다.
먼저 도 5를 참조하면, 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 대상 블록(target block)으로 선정한다(S100). 즉, 대상 블록을 올드 블록 중에서 선정함으로써, 영 블록들에게는 그에 저장된 논리 페이지들이 무효화될 수 있는 충분한 시간을 보장한다.
앞서, 개념 설명을 위해, 블록 라이프의 임계값을 3으로 설정한 것을 예로 들었으나, 본 실시에에서, 블록 라이프의 임계값은 동적(dynamic) 또는 정적(static)으로 설정될 수 있다.
먼저, 동적으로 블록 라이프의 임계값을 설정하는 것에 대해 설명하도록 한다. 여기서, 동적으로 블록 라이프의 임계값을 설정한다는 것은, 블록 라이프의 임계값이 비휘발성 메모리 장치에 제공되는 논리 페이지에 따라 변동된다는 것을 의미할 수 있다. 이하, 이에 대해 보다 구체적으로 설명하도록 한다.
본 실시예에서, 블록 라이프의 임계값은 비휘발성 메모리 장치에 기록되는 논리 페이지들의 평균 기록 거리(average write distance)를 고려하여 결정될 수 있다.
여기서, 논리 페이지의 기록 거리(write distance)란, 특정 논리 페이지가 비휘발성 메모리 장치에 기록된 이후 다시 같은 논리 페이지가 비휘발성 메모리 장치에 기록되기까지 비휘발성 메모리 장치에 기록된 논리 페이지량을 의미할 수 있다. 예를 들어, 도 3을 참조하면, 논리 페이지 0의 기록거리는 4이고, 논리 페이지 4의 기록거리는 1임을 알 수 있다.
이처럼 본 실시예에서는, 블록 라이프의 임계값을 호스트(10)로부터 비휘발성 메모리 장치(20)에 기록되는 모든 논리 페이지들의 평균 기록 거리를 블록 라이프의 임계값으로 설정할 수 있다. 그리고, 필요에 따라, 계산된 평균 기록 거리에 x%(여기서, x는 실수)만큼 마진을 더 둘 수도 있다. 이처럼 계산된 블록 라이프의 임계값은 비휘발성 메모리 장치에 제공되는 논리 페이지의 순서 또는 종류에 따라 그 값이 변동될 수 있다.
영 블록이 가비지 컬렉션의 대상 블록으로 선정되지 않은 상태로, 이렇게 계산된 비휘발성 메모리 장치(20)에 기록되는 논리 페이지들의 평균 기록 거리(또는 거기에 x%의 마진을 더한 값)만큼 대기하게 되면, 충분한 시간동안 그 안에 포함된 논리 페이지들을 무효화할 수 있는 시간을 갖게 된다고 볼 수 있다. 따라서, 그 후 블록 라이프의 임계값이 경과된 영 블록들을 올드 블록이 되도록 하고, 올드 블록 중에서 가비지 컬렉션의 대상 블록을 선정한다면, 가비지 컬렉션에 소요되는 전체 시간이 단축될 수 있으며, 나아가 비휘발성 메모리 장치의 성능을 향상시킬 수 있게 된다.
한편, 이렇게 비휘발성 메모리 장치(20)에 기록되는 모든 논리 페이지들의 평균 기록 거리를 고려하게 된다면, 평균 기록 거리를 계산하는데 상당한 시간이 소요될 수 있다. 따라서, 본 발명의 몇몇 실시에에 따른 블록 관리 방법의 경우, 비휘발성 메모리 장치(20)에 기록되는 논리 페이지들 중 일부 논리 페이지를 샘플 논리 페이지로 선정하고, 선정된 샘플 논리 페이지의 기록 거리 평균을 고려하여 블록 라이프의 임계값을 설정할 수 있다.
이하, 도 6 및 도 7을 참조하여, 이에 대해 보다 구체적으로 설명하도록 한다.
도 6을 참조하면, 호스트(10)로부터 논리 페이지 0, 1, 2, 3, 4, 5, 1, 3이 순차적으로 비휘발성 메모리 장치(20)에 입력된다고 하자. 여기서, 샘플 논리 페이지로 논리 페이지 1, 3을 선정할 수 있다.
논리 페이지 1에 대해 기록 거리를 구해보면, 4가 됨을 알 수 있다. 그리고, 논리 페이지 3에 대해 기록 거리를 구해보면, 3이 됨을 알 수 있다. 따라서, 본 실시예에 따른 블록 라이프의 임계값은 논리 페이지 1에 대한 기록 거리와 논리 페이지 3에 대한 기록 거리의 평균인 3.5가 되거나, 이에 x%의 마진을 더한 값이 됨을 알 수 있다.
이렇게 계산된 블록 라이프의 임계값은 비휘발성 메모리 장치에 제공되는 논리 페이지에 따라 변동될 수 있다. 도 7을 참조하면, 도 7에서는 도 6과 달리, 호스트(10)로부터 논리 페이지 0, 1, 2, 1, 0, 1, 3, 3이 순차적으로 비휘발성 메모리 장치(20)에 입력되는 것이 도시되어 있다. 여기서, 샘플 논리 페이지는 앞서 설명한 것과 같이 논리 페이지 1, 3이 선정된다고 하자.
이 경우, 논리 페이지 1에 대해 기록 거리를 구해보면, 1이 됨을 알 수 있으며, 논리 페이지 3에 대해 기록 거리를 구해보면, 0이 됨을 알 수 있다. 따라서, 본 실시예에 따른 블록 라이프의 임계값은 논리 페이지 1에 대한 기록 거리와 논리 페이지 3에 대한 기록 거리의 평균인 0.5가 되거나, 이에 x%의 마진을 더한 값이 됨을 알 수 있다. 즉, 본 실시예에서, 블록 라이프의 임계값은 비휘발성 메모리 장치(20)에 제공되는 논리 페이지에 따라 동적(dynamic)으로 설정됨을 알 수 있다.
한편, 이렇게 계산된 블록 라이프의 임계값이 무한정 커질 수는 없다. 도 7의 예에서, 논리 페이지 2가 샘플 페이지로 선정되고, 논리 페이지 2가 호스트(10)로부터 비휘발성 메모리 장치(20)에 다시 입력되지 않는다면 이론적으로 블록 라이프의 임계값은 무한대가 될 것이다. 이 경우, 비휘발성 메모리 장치(20) 내부에는 영 블록만 존재하게 되고, 올드 블록은 존재하지 않게된다. 따라서, 가비지 컬렉션의 대상 블록을 선정할 수 없게 되는 문제점이 발생할 수 있다.
이를 방지하기 위해서는, 블록 라이프의 임계값이 비휘발성 메모리 장치(20)에 포함된 프리 블록량을 고려하여 결정되어야 한다. 즉, 비휘발성 메모리 장치(20) 내에 일정량 이상의 프리 블록이 존재하는 한도 내에서 블록 라이프의 임계값이 설정될 수 있다.
정리하면, 본 실시예에 따른 블록 관리 방법에서, 블록 라이프의 임계값 하한은 아래의 수학식을 통해 계산될 수 있다.
<수학식>
블록 라이프의 임계값의 하한 = 샘플 논리 페이지의 기록 거리 평균 * (1+k)
(여기서, 0≤k<1, k는 실수)
본 발명의 몇몇 실시예에서, 이와 같이 블록 라이프의 임계값의 하한을 계산할 때, 상기 샘플 논리 페이지의 기록 거리 평균이 아닌, 샘플 논리 페이지의 기록 거리 중 중앙 값 등이 다른 대안으로 고려될 수 있다.
그리고, 블록 라이프의 임계값 상한은 비휘발성 메모리 장치(20)에 포함된 프리 블록량을 고려하여 결정될 수 있다. 즉, 블록 라이프 임계값의 상한은 비휘발성 메모리 장치(20)의 오버 프로비저닝 스페이스(over provisioning space)가 될 수 있다.
이상의 내용을 하나의 식으로 정리하면 다음과 같다.
샘플 논리 페이지의 기록 거리 평균(또는 중앙 값) * (1+k) (여기서, 0≤k<1, k는 실수) < 블록 라이프 임계값 < 비휘발성 메모리 장치의 오버 프로비저닝 스페이스(over provisioning space)
한편, 본 발명의 몇몇 실시예에서, 블록 라이프의 임계값은 정적(static)으로 설정될 수도 있다. 여기서, 정적으로 블록 라이프의 임계값을 설정한다는 것은, 블록 라이프의 임계값이 비휘발성 메모리 장치에 제공되는 논리 페이지에 관계 없이 항상 고정된 값임을 의미한다.
이러한 블록 라이프의 임계값은 비휘발성 메모리 장치(20)에 포함된 프리 블록량을 고려하여 결정될 수 있다. 구체적으로 다음과 같이 설정될 수 있다.
블록 라이프 임계값 < 비휘발성 메모리 장치의 오버 프로비저닝 스페이스 * a(여기서, a는 0<a≤1, a는 실수)
이렇게 블록 라이프의 임계값을 설정하게 되면, 상기 a가 결정된 이후에는 그 값이 변하지 않으므로, 블록 라이프 임계값이 비휘발성 메모리 장치(20)에 제공되는 논리 페이지에 따라 변동되지 않게 된다.
다시 도 5 참조하면, 대상 블록을 프리 블록(free block)으로 반환한다(S200). 구체적으로, 대상 블록에 포함된 무효 논리 페이지를 비휘발성 메모리 장치(20)에 포함된 프리 블록 도는 오픈 블록으로 옮기고, 대상 블록을 프리 블록으로 반환한다. 이러한 과정은 일반적인 가비지 컬렉션 수행 과정과 동일할 수 있으므로, 여기서는 자세한 설명을 생략하도록 한다.
다음 도 8 내지 도 10을 참조하여, 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템에 대해 설명한다.
도 8 내지 도 10은 본 발명의 일 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면들이다.
도 8을 참조하면, 블록 관리 시스템(30)은 비휘발성 메모리 장치(20) 내부에 배치될 수 있다. 여기서, 도시된 비휘발성 메모리 장치(20)는 예를 들어, 플래시 메모리 장치(flash memory device)일 수 있으나, 본 발명이 이에 제한되는 것은 아니다. 비휘발성 메모리 장치(20)가 플래시 메모리 장치인 경우, 블록 관리 시스템(30)은 예를 들어, FTL(Flash Transition Layer)에 배치될 수 있다.
호스트(10)는 다수의 논리 페이지(LPN)를 비휘발성 메모리 장치(20)에 제공할 수 있다. 호스트(10)는 비휘발성 메모리 장치(20)의 블록 관리 시스템(30)과 통신을 위한 소정의 드라이버(15)를 그 내부에 포함할 수 있다.
도 9를 참조하면, 블록 관리 시스템(30)은 대상 블록 선정부(31)와, 블록 반환부(32)를 포함할 수 있다.
대상 블록 선정부(31)는 비휘발성 메모리 장치(20)에 포함된 다수의 풀 블록 중에서 블록 라이프의 임계값이 경과된 풀 블록(즉, 올드 블록)을 가비지 컬렉션의 대상 블록으로 선정할 수 있다. 즉, 앞서 설명한 것과 같이, 본 실시예에 따른 대상 블록 선정부(31)는 풀 블록 중에서 블록 라이프의 임계값이 경과되지 않은 블록(즉, 영 블록)은 가비지 컬렉션의 대상 블록으로 선정하지 않는다.
이를 위해 대상 블록 선정부(31)는 비휘발성 메모리 장치(20)에 포함된 모든 풀 블록에 대한 블록 라이프 테이블을 관리할 수 있다. 도 10에는 이러한 블록 라이프 테이블의 한 예가 도시되어 있다. 도 10을 참조하면, 대상 블록 선정부(31)는 도시된 것과 같은 모든 풀 블록에 대한 블록 라이프 테이블을 가지고 있을 수 있으며, 이 중에서, 블록 라이프의 임계값이 경과하지 않은 풀 블록은 영 블록으로 분류하고, 블록 라이프의 임계값이 경과한 풀 블록은 올드 블록으로 분류할 수 있다.
여기서, 블록 라이프의 임계값은 비휘발성 메모리 장치(20)에 기록되는 논리 페이지들의 평균 기록 거리와 비휘발성 메모리 장치(20)에 포함된 프리 블록량을 고려하여 결정될 수 있다. 이에 대해서는 앞서 충분히 설명한 바, 중복된 설명은 생략하도록 한다.
블록 반환부(32)는 대상 블록 선정부(31)가 선정한 대상 블록을 프리 블록으로 반환할 수 있다.
한편, 본 발명의 몇몇 실시예에서, 블록 관리 시스템(30)은 영 블록 리스트를 직접 관리함으로써 가비지 컬렉션의 대상 블록을 선정할 수 있다. 이하 도 11을 참조하여, 이에 대해 보다 구체적으로 설명하도록 한다.
도 11은 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템을 설명하기 위한 도면이다.
도 11을 참조하면, 본 발명의 다른 실시예에 따른 비휘발성 메모리 장치의 블록 관리 시스템(30)은, 비휘발성 메모리 장치(20)에 포함된 영 블록에 대한 정보를 저장하는 영 블록 정보 저장부(33)를 더 포함할 수 있다.
이 경우, 대상 블록 선정부(31)는 영 블록 정보 저장부(33)로부터 영 블록에 대한 정보를 제공받고, 이를 바탕으로 비휘발성 메모리 장치(20)에 포함된 다수의 풀 블록 중에서 올드 블록을 추출하고, 추출된 올드 블록 중에서 가비지 컬렉션의 대상 블록을 선정할 수 있다.
영 블록 정보 저장부(33)가 영 블록 리스트를 관리하는 방법은 여러 방법이 이용될 수 있다. 예를 들어, 영 블록 정보 저장부(33)는 영 블록을 LRU(Least Recently Used) 리스트로 관리할 수도 있으며, 해쉬 함수 등을 사용하여 영 블록을 관리할 수도 있다.
다음 도 12 내지 도 14를 참조하여, 본 발명의 몇몇 실시예에 따른 메모리 시스템 및 그 응용예들에 대해 설명한다.
도 12는 본 발명의 몇몇 실시예에 따른 메모리 시스템을 설명하기 위한 블록도이고, 도 13은 도 12의 메모리 시스템의 응용 예를 보여주는 블록도이다. 도 14는 도 13을 참조하여 설명된 메모리 시스템을 포함하는 컴퓨팅 시스템을 보여주는 블록도이다.
도 12를 참조하면, 메모리 시스템(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)는 반도체 메모리에 데이터를 저장하도록 구성되는 저장 장치를 포함한다. 메모리 시스템(1000)이 반도체 드라이브(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) 등과 같은 방식으로 패키지화되어 실장될 수 있다.
다음 도 13을 참조하면, 메모리 시스템(2000)은 비휘발성 메모리 장치(2100) 및 컨트롤러(2200)를 포함한다. 비휘발성 메모리 장치(2100)는 복수의 비휘발성 메모리 칩들을 포함한다. 복수의 비휘발성 메모리 칩들은 복수의 그룹들로 분할된다. 복수의 비휘발성 메모리 칩들의 각 그룹은 하나의 공통 채널을 통해 컨트롤러(2200)와 통신하도록 구성된다. 예를 들어, 복수의 비휘발성 메모리 칩들은 제 1 내지 제 k 채널들(CH1~CHk)을 통해 컨트롤러(2200)와 통신하는 것으로 도시되어 있다.
도 13에서, 하나의 채널에 복수의 비휘발성 메모리 칩들이 연결되는 것으로 설명되었다. 그러나, 하나의 채널에 하나의 비휘발성 메모리 칩이 연결되도록 메모리 시스템(2000)이 변형될 수 있음이 이해될 것이다.
다음 도 14를 참조하면, 컴퓨팅 시스템(3000)은 중앙 처리 장치(3100), 램(3200, RAM, Random Access Memory), 사용자 인터페이스(3300), 전원(3400), 그리고 메모리 시스템(2000)을 포함한다.
메모리 시스템(2000)은 시스템 버스(3500)를 통해, 중앙처리장치(3100), 램(3200), 사용자 인터페이스(3300), 그리고 전원(3400)에 전기적으로 연결된다. 사용자 인터페이스(3300)를 통해 제공되거나, 중앙 처리 장치(3100)에 의해서 처리된 데이터는 메모리 시스템(2000)에 저장된다.
도 14에서, 비휘발성 메모리 장치(2100)는 컨트롤러(2200)를 통해 시스템 버스(3500)에 연결되는 것으로 도시되어 있다. 그러나, 비휘발성 메모리 장치(2100)는 시스템 버스(3500)에 직접 연결되도록 구성될 수 있다.
도 14에서, 도 13을 참조하여 설명된 메모리 시스템(2000)이 제공되는 것으로 도시되어 있다. 그러나, 메모리 시스템(2000)은 도 12를 참조하여 설명된 메모리 시스템(1000)으로 대체될 수도 있다.
예시적으로, 컴퓨팅 시스템(3000)은 도 12 및 도 13을 참조하여 설명된 메모리 시스템들(1000, 2000)을 모두 포함하도록 구성될 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
10: 호스트 20: 비휘발성 메모리 장치
30: 블록 관리 시스템 31: 대상 블록 선정부
32: 블록 반환부 33: 영 블록 정보 저장부
S100, S200: 비휘발성 메모리 장치의 블록 관리 방법
30: 블록 관리 시스템 31: 대상 블록 선정부
32: 블록 반환부 33: 영 블록 정보 저장부
S100, S200: 비휘발성 메모리 장치의 블록 관리 방법
Claims (10)
- 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 가비지 컬렉션의 대상 블록(target block)으로 선정하고,
상기 대상 블록을 프리 블록(free block)으로 반환하는 것을 포함하되,
상기 블록 라이프의 임계값은 상기 비휘발성 메모리 장치에 기록되는 논리 페이지들의 평균 기록 거리(average write distance)을 고려하여 결정되고,
상기 기록 거리는,
특정 논리 페이지가 상기 비휘발성 메모리 장치의 제1 지점에 기록된 이후, 다시 같은 논리 페이지가 상기 비휘발성 메모리 장치의 상기 제1 지점과 다른 제2 지점에 기록되기까지 상기 비휘발성 메모리 장치에 기록된 논리 페이지량을 나타내고,
상기 블록 라이프의 임계값이 경과된 풀 블록을 대상 블록으로 선정하는 것은,
상기 풀 블록을 채우는 마지막 논리 페이지가 기록된 시점부터 상기 비휘발성 메모리 장치에 기록된 논리 페이지량을 연산하고,
상기 연산된 논리 페이지량으로부터 상기 블록 라이프를 연산하고,
상기 연산된 블록 라이프와 상기 블록 라이프의 임계값을 비교하고,
상기 연산된 블록 라이프가 상기 블록 라이프의 임계값을 경과한 경우, 상기 풀블록을 상기 대상 블록으로 선정하는 것을 포함하는 비휘발성 메모리 장치의 블록 관리 방법. - 제 1항에 있어서,
상기 블록 라이프의 임계값은 상기 비휘발성 메모리 장치에 제공되는 논리 페이지에 따라 변동되는 값인 비휘발성 메모리 장치의 블록 관리방법. - 삭제
- 제 2항에 있어서,
상기 비휘발성 메모리 장치에 기록되는 논리 페이지들의 평균 기록 거리를 고려하는 것은,
상기 비휘발성 메모리 장치에 기록되는 논리 페이지들 중 일부 논리 페이지를 샘플 논리 페이지로 선정하고,
상기 샘플 논리 페이지의 기록 거리 평균을 고려하는 것을 포함하는 비휘발성 메모리 장치의 블록 관리 방법. - 제 4항에 있어서,
상기 블록 라이프의 임계값 하한은 아래의 수학식을 통해 계산되는 비휘발성 메모리 장치의 블록 관리 방법.
<수학식>
블록 라이프의 임계값의 하한 = 샘플 논리 페이지의 기록 거리 평균 * (1+k)
(여기서, 0≤k<1, k는 실수) - 제 1항에 있어서,
상기 블록 라이프의 임계값은 상기 비휘발성 메모리 장치에 제공되는 논리 페이지에 관계없이 항상 고정된 값인 비휘발성 메모리 장치의 블록 관리방법. - 제 6항에 있어서,
상기 블록 라이프의 임계값은 상기 비휘발성 메모리 장치에 포함된 프리 블록량을 고려하여 결정되는 비휘발성 메모리 장치의 블록 관리 방법. - 비휘발성 메모리 장치에 포함된 다수의 풀 블록(full block) 중에서 블록 라이프(block life)의 임계값이 경과된 풀 블록을 가비지 컬렉션의 대상 블록(target block)으로 선정하는 대상 블록 선정부; 및
상기 대상 블록 선정부가 선정한 대상 블록을 프리 블록으로 반환하는 블록 반환부를 포함하되,
상기 블록 라이프의 임계값은 상기 비휘발성 메모리 장치에 기록되는 논리 페이지들의 평균 기록 거리(average write distance)을 고려하여 결정되고,
상기 기록 거리는,
특정 논리 페이지가 상기 비휘발성 메모리 장치의 제1 지점에 기록된 이후, 다시 같은 논리 페이지가 상기 비휘발성 메모리 장치의 상기 제1 지점과 다른 제2 지점에 기록되기까지 상기 비휘발성 메모리 장치에 기록된 논리 페이지량을 나타내고,
상기 대상 블록 선정부는,
상기 풀 블록을 채우는 마지막 논리 페이지가 기록된 시점부터 상기 비휘발성 메모리 장치에 기록된 논리 페이지량을 연산하고,
상기 연산된 논리 페이지량으로부터 상기 블록 라이프를 연산하고,
상기 연산된 블록 라이프와 상기 블록 라이프의 임계값을 비교하고,
상기 연산된 블록 라이프가 상기 블록 라이프의 임계값을 경과한 경우, 상기 풀블록을 상기 대상 블록으로 선정하는 비휘발성 메모리 장치의 블록 관리 시스템. - 제 8항에 있어서,
상기 비휘발성 메모리 장치에 포함된 영 블록(young block)에 대한 정보를 저장하는 영 블록 정보 저장부를 더 포함하고,
상기 대상 블록 선정부는 상기 영 블록 정보 저장부로부터 상기 영 블록에 대한 정보를 제공받고 이를 바탕으로 상기 비휘발성 메모리 장치에 포함된 다수의 풀 블록 중에서 올드 블록(old block)을 추출하고, 상기 추출된 올드 블록 중에서 상기 대상 블록을 선정하는 비휘발성 메모리 장치의 블록 관리 시스템. - 제 8항에 있어서,
상기 대상 블록 선정부 및 상기 블록 반환부는 상기 비휘발성 메모리 장치 내부에 배치되는 비휘발성 메모리 장치의 블록 관리 시스템.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110139302A KR101907059B1 (ko) | 2011-12-21 | 2011-12-21 | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 |
US13/613,443 US9239780B2 (en) | 2011-12-21 | 2012-09-13 | Selection of memory blocks for garbage collection based on variable block life threshold |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020110139302A KR101907059B1 (ko) | 2011-12-21 | 2011-12-21 | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20130071849A KR20130071849A (ko) | 2013-07-01 |
KR101907059B1 true KR101907059B1 (ko) | 2018-10-12 |
Family
ID=48655715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020110139302A KR101907059B1 (ko) | 2011-12-21 | 2011-12-21 | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9239780B2 (ko) |
KR (1) | KR101907059B1 (ko) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11249652B1 (en) | 2013-01-28 | 2022-02-15 | Radian Memory Systems, Inc. | Maintenance of nonvolatile memory on host selected namespaces by a common memory controller |
US10445229B1 (en) | 2013-01-28 | 2019-10-15 | Radian Memory Systems, Inc. | Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
US9870830B1 (en) | 2013-03-14 | 2018-01-16 | Sandisk Technologies Llc | Optimal multilevel sensing for reading data from a storage medium |
KR20150106778A (ko) | 2014-03-12 | 2015-09-22 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 제어 방법 |
US20160342476A1 (en) * | 2014-03-20 | 2016-11-24 | Hewlett Packard Enterprise Development Lp | Solid state drive operations |
TWI521541B (zh) * | 2014-05-22 | 2016-02-11 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元 |
CN105224238B (zh) * | 2014-05-29 | 2019-01-15 | 群联电子股份有限公司 | 存储器管理方法、存储器存储装置及存储器控制电路单元 |
US10162748B2 (en) | 2014-05-30 | 2018-12-25 | Sandisk Technologies Llc | Prioritizing garbage collection and block allocation based on I/O history for logical address regions |
US10656840B2 (en) | 2014-05-30 | 2020-05-19 | Sandisk Technologies Llc | Real-time I/O pattern recognition to enhance performance and endurance of a storage device |
US10114557B2 (en) * | 2014-05-30 | 2018-10-30 | Sandisk Technologies Llc | Identification of hot regions to enhance performance and endurance of a non-volatile storage device |
US10372613B2 (en) | 2014-05-30 | 2019-08-06 | Sandisk Technologies Llc | Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device |
US10146448B2 (en) | 2014-05-30 | 2018-12-04 | Sandisk Technologies Llc | Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device |
US9542118B1 (en) | 2014-09-09 | 2017-01-10 | Radian Memory Systems, Inc. | Expositive flash memory control |
US10235056B2 (en) * | 2014-09-26 | 2019-03-19 | Western Digital Technologies, Inc. | Storage device health diagnosis |
US9798657B2 (en) | 2014-10-15 | 2017-10-24 | Samsung Electronics Co., Ltd. | Data storage device including nonvolatile memory device and operating method thereof |
US9959059B2 (en) * | 2014-10-20 | 2018-05-01 | Sandisk Technologies Llc | Storage error management |
KR102349999B1 (ko) * | 2015-03-02 | 2022-01-10 | 에스케이하이닉스 주식회사 | 반도체 장치 및 그 동작 방법 |
TWI585770B (zh) * | 2015-08-11 | 2017-06-01 | 群聯電子股份有限公司 | 記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置 |
US20170139826A1 (en) * | 2015-11-17 | 2017-05-18 | Kabushiki Kaisha Toshiba | Memory system, memory control device, and memory control method |
KR20170060206A (ko) * | 2015-11-23 | 2017-06-01 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9880780B2 (en) | 2015-11-30 | 2018-01-30 | Samsung Electronics Co., Ltd. | Enhanced multi-stream operations |
US9898202B2 (en) * | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
JP2018163434A (ja) | 2017-03-24 | 2018-10-18 | 東芝メモリ株式会社 | メモリシステム |
TWI613652B (zh) * | 2017-03-27 | 2018-02-01 | 慧榮科技股份有限公司 | 資料儲存裝置以及其操作方法 |
TWI759580B (zh) * | 2019-01-29 | 2022-04-01 | 慧榮科技股份有限公司 | 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
KR20210063764A (ko) * | 2019-11-25 | 2021-06-02 | 에스케이하이닉스 주식회사 | 메모리 시스템의 동작 방법 및 장치 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011061724A1 (en) * | 2009-11-23 | 2011-05-26 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933840A (en) * | 1997-05-19 | 1999-08-03 | International Business Machines Corporation | Garbage collection in log-structured information storage systems using age threshold selection of segments |
US6457023B1 (en) | 2000-12-28 | 2002-09-24 | International Business Machines Corporation | Estimation of object lifetime using static analysis |
US7149762B1 (en) | 2003-08-20 | 2006-12-12 | Sun Microsystems, Inc. | Handling futile collections in the train algorithm through selective extension of the collection set |
US7660961B2 (en) | 2007-04-03 | 2010-02-09 | Sun Microsystems, Inc. | Concurrent evacuation of the young generation |
US8402242B2 (en) | 2009-07-29 | 2013-03-19 | International Business Machines Corporation | Write-erase endurance lifetime of memory storage devices |
US9141526B2 (en) * | 2010-09-16 | 2015-09-22 | International Business Machines Corporation | Reclaiming units by searching units for a predetermined criterion and storing data from a valid subunit |
-
2011
- 2011-12-21 KR KR1020110139302A patent/KR101907059B1/ko active IP Right Grant
-
2012
- 2012-09-13 US US13/613,443 patent/US9239780B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011061724A1 (en) * | 2009-11-23 | 2011-05-26 | Amir Ban | Memory controller and methods for enhancing write performance of a flash device |
Also Published As
Publication number | Publication date |
---|---|
KR20130071849A (ko) | 2013-07-01 |
US20130166824A1 (en) | 2013-06-27 |
US9239780B2 (en) | 2016-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101907059B1 (ko) | 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템 | |
KR101861545B1 (ko) | 저장 장치의 데이터 관리 방법 | |
KR101867282B1 (ko) | 비휘발성 메모리 장치의 가비지 컬렉션 방법 | |
US9696911B2 (en) | Operation method of nonvolatile memory system and operation method of user system including the same | |
JP6343438B2 (ja) | コンピュータシステム及びコンピュータシステムのデータ管理方法 | |
KR20140050941A (ko) | 비휘발성 메모리 장치의 데이터 관리 방법 | |
EP2665065A2 (en) | Electronic device employing flash memory | |
US10409718B2 (en) | Memory system and operating method thereof | |
KR20200068941A (ko) | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 | |
US20100211820A1 (en) | Method of managing non-volatile memory device and memory system including the same | |
KR20130030238A (ko) | 비휘발성 메모리를 갖는 시스템을 위한 고속 트리 플래트닝 | |
KR20120105294A (ko) | 불휘발성 메모리를 제어하는 메모리 컨트롤러 | |
US9600209B2 (en) | Flash storage devices and methods for organizing address mapping tables in flash storage devices | |
Lee et al. | An efficient index buffer management scheme for implementing a B-tree on NAND flash memory | |
KR20190044873A (ko) | 공용 메모리 영역 및 전용 메모리 영역을 포함하는 데이터 저장 장치 | |
CN111831578B (zh) | 用于处理存储器系统中的不同类型数据的设备及方法 | |
KR20130081526A (ko) | 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 | |
KR20210063764A (ko) | 메모리 시스템의 동작 방법 및 장치 | |
KR102559549B1 (ko) | 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치 | |
US8782345B2 (en) | Sub-block accessible nonvolatile memory cache | |
KR20210112557A (ko) | 메모리 장치에서 연속으로 수행되는 다수의 커맨드 동작에 필요한 파워값을 정확하게 예측할 수 있는 메모리 시스템 및 메모리 시스템의 동작방법 | |
KR20170033480A (ko) | 스토리지 장치 및 그것을 포함하는 서버 시스템의 매칭 키 검색 방법 | |
US9652172B2 (en) | Data storage device performing merging process on groups of memory blocks and operation method thereof | |
KR20200014175A (ko) | 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치 | |
US10990520B2 (en) | Method for gabage collecting for non-volatile memory |
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 |