KR100526190B1 - 플래시 메모리의 재사상 방법 - Google Patents

플래시 메모리의 재사상 방법 Download PDF

Info

Publication number
KR100526190B1
KR100526190B1 KR10-2004-0008068A KR20040008068A KR100526190B1 KR 100526190 B1 KR100526190 B1 KR 100526190B1 KR 20040008068 A KR20040008068 A KR 20040008068A KR 100526190 B1 KR100526190 B1 KR 100526190B1
Authority
KR
South Korea
Prior art keywords
unit
physical unit
cost
physical
logical
Prior art date
Application number
KR10-2004-0008068A
Other languages
English (en)
Other versions
KR20050079576A (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 KR10-2004-0008068A priority Critical patent/KR100526190B1/ko
Priority to EP05250578A priority patent/EP1562122A3/en
Priority to JP2005026846A priority patent/JP4185058B2/ja
Priority to CNB2005100052562A priority patent/CN1315057C/zh
Priority to US11/050,737 priority patent/US7516295B2/en
Publication of KR20050079576A publication Critical patent/KR20050079576A/ko
Application granted granted Critical
Publication of KR100526190B1 publication Critical patent/KR100526190B1/ko

Links

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/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/7211Wear leveling

Abstract

본 발명은 플래시 메모리의 재사상 방법에 관한 것으로서, 더욱 상세하게는 플래시 메모리의 접근 횟수를 최소화하고, 상기 플래시 메모리의 모든 영역을 고르게 사용할 수 있는 플래시 메모리의 사상 방법에 관한 것이다.
본 발명의 실시예에 따른 플래시 메모리의 재사상 방법은 소정의 논리 유니트에 맵핑되지 않은 다수의 물리 유니트를 삭제 횟수에 따라 나열하는 제 1 단계와, 상기 삭제 횟수가 적은 순서에 따라 물리 유니트를 소정의 논리 유니트를 맵핑시키는 제 2 단계를 포함한다.

Description

플래시 메모리의 재사상 방법{Remapping method for flash memory}
본 발명은 플래시 메모리의 재사상 방법에 관한 것으로서, 더욱 상세하게는 플래시 메모리의 접근 횟수를 최소화하고, 상기 플래시 메모리의 모든 영역을 고르게 사용할 수 있는 플래시 메모리의 사상 방법에 관한 것이다.
일반적으로, 가전 기기, 통신 기기, 셋탑 박스 등의 내장형 시스템(Embedded System)에서는 데이터를 저장하고 처리하기 위한 저장 매체로 비휘발성 메모리가 많이 사용되고 있다.
상기 비휘발성 메모리 중에서 주로 사용되는 플래시 메모리는 전기적으로 데이터를 삭제하거나 다시 기록할 수 있는 비휘발성 기억 소자로서, 마그네틱 디스크 메모리를 기반으로 하는 저장 매체에 비해 전력 소모가 적으면서도 하드 디스크와 같은 빠른 액세스 타임(Access Time)을 가지며 크기가 작기 때문에 휴대 기기의 저장 매체로 널리 사용되고 있다.
또한, 상기 플래시 메모리는 하드웨어적 특성상 기존의 램(Random Access Memory, RAM)이나 비휘발성 저장 매체, 마그네틱 저장 매체등과 마찬가지로 특정 위치에 저장된 데이터를 임의로 접근할 수 있지만, 데이터를 삭제할 경우에는 기존의 저장 매체와는 다르게 블록(Block) 단위로 삭제가 이루어진다.
즉, 상기 플래시 메모리는 호스트에서는 논리적인 연산 단위인 섹터에 데이터를 쓰는 반면, 상기 섹터에 소정의 데이터를 덮어 씌울 경우에는 상기 섹터가 포함된 블록 전체를 삭제하는 것이다.
이때, 데이터 쓰기와 데이터 삭제의 불일치가 상기 플래시 메모리의 성능을 저하시키는 주요한 이유가 된다.
따라서, 쓰기 전 지우기(Erase before write) 문제를 해결하기 위해 논리 주소(Logocal Address)와 물리 주소(Physical address)의 개념이 도입되었다.
즉, 상기 호스트에서 요청되는 논리 주소에 대한 데이터 읽기/쓰기 연산은 여러 종류의 맵핑 알고리즘에 의해 실제 플래시 메모리의 물리 주소에 대한 읽기/쓰기 연산을 변경된다. 이때, 상기 플래시 메모리의 물리적인 상태를 고려하여 맵핑하기 때문에 상기 플래시 메모리의 성능을 최대화할 수 있다.
플래시 변환 계층(Flash Tranlation Layer, 이하 FTL이라 함)은 플래시 메모리를 블록 디바이스처럼 사용할 수 있게 해주는 소프트웨어로서, 일반적으로 상기 플래시 메모리를 효율적으로 관리하기 위한 재사상(Remapping) 기법을 지원한다.
상기 재사상 기법은 데이터의 수정 또는 삭제로 인하여 플래시 메모리에 저장된 데이터의 물리 블록 번호(Physical Block Number, 이하 PBN이라 함)가 변경되어도 동일한 논리 블록 번호(Logical Block Number, 이하 LBN이라 함)로 플래시 메모리에 저장된 데이터에 접근할 수 있도록 특정 데이터에 대한 LBN과 PBN간의 사상 정보를 관리하는 것이다.
즉, 도 1에 도시된 바와 같이, 특정 LBN에 대한 데이터의 읽기나 쓰기가 요청되면, 상기 LBN을 소정의 논리 유니트 번호(Logical Unit Number, 이하 LUN이라 함)를 LBN-LUN 맵핑 테이블을 통해 구한 다음, 상기 LUN에 대한 물리 유니트 번호(Physical Unit Number, 이하 PUN이라 함)를 LUN-PUN 맵핑 테이블을 통해 구한다.
이때, 상기 물리 유니트를 개략적으로 살펴보면, 도 2에 도시된 바와 같이, 각 물리 유니트(10, 20)는 헤더(Erase Unit Header, 이하 EUH라 함)(11, 21)와 블록 할당 맵(Block Allocation Map, 이하 BAM이라 함)(12, 22) 및 소정의 데이터가 저장되는 여러 개의 블록(13, 23)을 가진다.
이때, 상기 EUH(11, 21)에는 각 물리 유니트(10, 20)에 대한 여러 메타 정보가 저장되고, 상기 BAM(12, 22)은 상기 EUH(11, 21)의 아래 부분에 적어도 하나 이상의 블록을 모아 기록될 수 있다.
또한, 상기 BAM(12, 22)은 NAND 타입의 플래시 메모리의 Spare array와 같은 특정 공간에 블록 별로 나뉘어 기록될 수도 있다.
이러한 BAM에는 해당 물리 유니트에 속한 블록들에 대한 정보(LBN, 상태 등)이 기록될 수 있다.
따라서, 특정 논리 블록에 대한 데이터 쓰기는 상기 논리 블록에 해당하는 PUN을 구한 다음, 상기 PUN의 BAM에서 쓰기 가능한 블록에 데이터를 쓰면, 그 논리 블록 주소는 상기 BAM에 저장된다.
예를 들어, 도 3에 도시된 바와 같이, 논리 블록 3번에 데이터 쓰기가 두번 요청된 경우, 두번째 쓰기 연산은 비어있는 네번째 블록에 데이터를 쓰고, 상기 BAM의 네번째에 논리 블록 번호 3을 쓰게 된다
또한, 특정 논리 블록에 대한 데이터 읽기 연산도 마찬가지 방법을 수행될 수 있다.
이때, 데이터 에러 발생시 데이터 복구를 위하여 특정 블록의 상태 정보를 저장하기 위한 랩 카운트라는 개념이 도입되었다.
즉, 소정 블록의 상태는 미정(Free=1111), 유효(valid), 삭제(deleted=0000)으로 나뉘며, 상기 유효는 다시 세 가지 상태, s0=1110, s1=1100, s2=1000으로 구분된다.
이때, 상기 s0, s1, 및 s2간에는 s0<s1, s1<s2, s2<s0의 순환적인 관계를 가지고 있다.
여기서, 상기 ‘<’ 은 순서적인 선후 관계를 나타낸다.
따라서, 에러가 발생한 경우, 이전 혹은 이후 데이터로 복구할 수 있는 것이다.
예를 들어, 도 4에 도시된 바와 같이, 다섯번째 이후로 오류가 발생하게 되면, 유효 데이터가 두 개가 존재하고, 그 각각의 랩 카운트는 1110 및 1100이다.
이때, 상기 1110이 1100에 순서적으로 우선하기 때문에 이후 데이터로 복구하는 정책을 쓰다면 오른쪽 데이터가 삭제된다.
상기한 바와 같은 플래시 메모리는 논리 유니트와 물리 유니트가 1:1로 맵핑되어, 특정 논리 유니트에 대한 섹터 갱신이 잦기 때문에 논리 유니트 내에 빈 섹터가 존재하지 않는 경우 항상 빈 물리 유니트를 할당 받아 삭제후 유효 섹터를 상기 빈 물리 유니트로 복사하여 빈 섹터가 있는 물리 유니트로 만든 다음 섹터 갱신을 할 수 있다.
이때, 상기 플래시 메모리의 물리 유니트는 제한된 삭제 횟수를 가진다. 따라서, 상기 플래시 메모리의 물리 유니트를 고르게 사용하는 것이 상기 플래시 메모리의 수명을 연장시킬 수 있다.
그러나, 상기 플래시 메모리에서 빈 물리 유니트를 사용할 경우, 각 물리 유니트의 삭제 횟수에 무관하게 빈 물리 유니트를 임의의 선택하여 사용하기 때문에 상기 플래시 메모리의 수명을 연장시키는데 한계가 있다는 문제점이 있다.
또한, 항상 빈 물리 유니트를 할당하기 때문에 데이터를 쓰기 위해 추가적으로 수행되는 연산이 증가하게 되어 데이터 쓰기 연산에 대한 성능 저하를 야기시키는 문제점이 있다.
본 발명은 사용자가 논리 섹터에 대한 데이터 쓰기를 요청한 경우, 플래시 메모리의 모든 영역을 고르게 사용할 수 있도록 하여 플래시 메모리의 수명을 연장할 수 있는 플래시 메모리의 재사상 방법을 제공하는데 그 목적이 있다.
본 발명의 또 다른 목적은 사용자의 데이터 쓰기 요청을 처리하기 위한 플래시 메모리로의 접근 횟수를 최소화하여 사용자에게 빠른 응답을 제공하는 것이다.
본 발명의 목적들은 이상에서 언급한 목적들로 제한되지 않으며, 언급되지 않은 또 다른 목적들은 아래의 기재로부터 당업자에게 명확하게 이해되어 질 수 있을 것이다.
상기 목적을 달성하기 위하여, 본 발명의 실시예에 따른 플래시 메모리의 재사상 방법은 소정의 논리 유니트에 맵핑되지 않은 다수의 물리 유니트를 삭제 횟수에 따라 나열하는 제 1 단계와, 상기 삭제 횟수가 적은 순서에 따라 물리 유니트를 소정의 논리 유니트를 맵핑시키는 제 2 단계를 포함한다.
바람직하게는 소정의 논리 유니트에 맵핑된 다수의 물리 유니트간의 선후 관계를 나타내는 깊이 값이 각 물리 유니트에 포함된다.
바람직하게는 상기 깊이 값이 클수록 가장 최근에 맵핑된 물리 유니트로 판단된다.
바람직하게는 상기 맵핑되지 않은 물리 유니트가 존재하지 않은 경우, 상기 논리 유니트내에서 빈 물리 유니트를 생성하는 컴팩션 연산을 수행하는 제 3 단계를 더 포함한다.
바람직하게는 상기 깊이 값이 가장 큰 물리 유니트는 컴팩션 연산에서 제외시킨다.
바람직하게는 상기 제 3 단계는 소정의 논리 유니트내에서 컴팩션 코스트가 가장 작은 물리 유니트를 선정하는 제 1 과정과, 상기 선정된 물리 유니트의 컴팩션 코스트를 상기 논리 유니트의 컴팩션 코스트로 설정하는 제 2 과정과, 상기 컴팩션 코스트가 가장 작은 물리 유니트의 유효 섹터를 상기 논리 유니트의 빈 공간으로 복사 후 상기 물리 유니트를 맵핑에서 제외시키는 제 3 과정을 포함한다.
바람직하게는 상기 컴팩션 코스트는 소정 물리 유니트의 유효한 섹터 수 및 복사 코스트를 기반으로 유효 섹터를 옮기는데 소요되는 시간의 상대적인 값으로 설정된다.
바람직하게는 상기 논리 섹터를 상기 물리 유니트의 고정된 위치에 저장하는 경우, 상기 컴팩션 코스트 C는, C=Sv×Cc+Se×We에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트, Se는 빈 섹터수, We는 빈 섹터에 대한 가중치이다.
바람직하게는 논리 섹터를 상기 물리 유니트의 고정되지 않은 위치에 저장하는 경우, 상기 컴팩션 코스트 C는, C=Sv×Cc에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트이다.
바람직하게는 상기 컴팩션 코스트는 상기 유효 섹터를 소정의 논리 유니트내에서 옮길 수 없는 경우, 새로운 물리 유니트를 할당하기 위한 할당 코스트가 추가된다.
바람직하게는 상기 할당 코스트는 물리 유니트를 지우는 시간의 상대적인 값과 물리 유니트의 메타 정보를 기록하는 시간의 상대적인 값을 통해 설정된다.
바람직하게는 상기 할당 코스트 상기 물리 유니트의 컴팩션 코스트 C는, C=Sv×Cc에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트이다.
바람직하게는 상기 컴팩션 코스트는 가장 작은 컴팩션 코스트를 가지는 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트의 컴팩션 코스트가 추가된다.
바람직하게는 상기 제 3 단계는 상기 컴팩션 코스트가 가장 작은 논리 유니트의 유효 섹터를 복사하기 위한 빈 공간이 존재하지 않는 경우, 가장 컴팩션 코스트가 작은 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트를 검색하는 제 4 과정과, 소정의 빈 물리 유니트를 상기 논리 유니트에 맵핑시키는 제 5 과정과, 가장 컴팩션 코스트가 작은 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트의 유효 섹터를 상기 빈 물리 유니트에 복사한 후 맵핑에서 제외시키는 제 6 과정을 더 포함한다.
바람직하게는 소정의 논리 유니트들에 맵핑된 물리 유니트의 최소 삭제 횟수와 최대 삭제 횟수를 파악하는 제 4 단계와, 상기 최소 삭제 횟수와 최대 삭제 횟수가 소정 값을 초과하는 경우 상기 컴팩션 연산을 수행하는 제 5 단계를 더 포함한다.
바람직하게는 상기 제 5 단계는 상기 최소 삭제 횟수를 가지는 물리 유니트에 대한 컴팩션 연산을 수행한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범수를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다.
일반적으로 플래시 메모리는 소블록 플래시 메모리와 대블록 플래시 메모리로 나뉘어진다.
이때, 상기 소블록 플래시 메모리는 논리적인 연산 단위와 물리적인 연산 단위가 동일한 반면, 상기 대블록 플래시 메모리는 논리적인 연산 단위에 비하여 물리적인 연산 단위가 큰 특징을 가진다.
여기서, 상기 논리적인 연산 단위는 사용자측에서의 데이터 연산 단위로서 일반적으로 섹터라 칭하여지고, 상기 물리적인 연산 단위는 실제 플래시 메모리에서의 데이터 연산 단위로서 일반적으로 페이지라 칭하여진다.
참고적으로, 상기 논리적이 연산 단위와 물리적인 연산 단위는 상기 섹터 및 페이지에 국한되지 않고 상기 플래시 메모리가 사용되는 장치에 따라 다양한 크기로 이루어질 수 있다.
도 5는 일반적인 대블록 플래시 메모리의 구조가 개략적으로 도시된 도면으로서, 상기 플래시 메모리는 각각 다수의 페이지(102)로 이루어지는 다수의 블록(101)으로 이루어지고, 적어도 하나 이상의 블록이 모여 하나의 논리 유니트(100)를 구성한다.
이하, 하나의 논리 유니트에 포함된 각 블록은 물리 유니트라 칭한다.
이러한 논리 유니트(100)는 맵핑된 논리 유니트와 맵핑되지 않은 논리 유니트로 나누어질 수 있는데, 상기 맵핑된 논리 유니트는 유효한 섹터를 가지고 있으며 상기 맵핑되지 않은 논리 유니트는 유효한 섹터를 가지고 있지 않기 때문에 새로 맵핑되어 사용이 가능한 논리 유니트이다.
여기서, 상기 논리 유니트(100)는 해당 논리 유니트의 논리 유니트 번호(Logical Unit Number, 이하 LUN이라 함)가 저장되는 메타 정보 저장 영역(110)과 데이터가 저장되는 데이터 저장 영역(120)으로 구분될 수 있다.
또한, 상기 메타 정보 저장 영역(110)은 도 6에 도시된 바와 같이, LUN(111) 이외에도 소정의 논리 유니트에 맵핑된 여러 개의 물리 유니트에 대한 선후 관계를 나타내는 깊이(Depth)(112)와 각 물리 유니트의 삭제 횟수(Erase Count, 이하 ECNT라 함)(113)를 포함한다.
이때, 상기 Depth는 새로 맵핑된 물리 유니트일수록 큰 값을 가지도록 하여 큰 값의 깊이를 가질수록 보다 최신의 데이터라는 것을 판단할 수 있다.
한편, 상기 데이터 저장 영역(120)은 도 7에 도시된 바와 같이, 데이터가 저장되는 물리 섹터(121) 및 해당 물리 섹터(121)에 대한 논리 섹터 번호(Logical Sector Number, 이하 LSN이라 함)가 저장되는 메타 정보(122)를 포함한다.
도 8은 동일한 LUN을 가지는 여러 개의 물리 유니트 번호(Physical Unit Number, 이하 PUN이라 함)를 각 물리 유니트의 Depth에 따라 나열한 것이다.
이때, 동일한 LUN을 가지는 PUN을 각 물리 유니트의 Depth에 따라 나열되며, 상기 Depth가 큰 값일수록 최신의 유효한 데이터로 판단된다.
이러한 플래시 메모리의 각 물리 유니트는 독립적인 사용 수명을 가지고 있다. 즉, 각 물리 유니트는 소정의 ECNT를 가지고 있기 때문에 삭제 횟수가 적은 물리 유니트를 먼저 사용해야 상기 플래시 메모리의 수명을 연장시킬 수 있는 것이다.
본 실시예는 상기 ECNT에 따라 모든 물리 유니트를 고르게 사용할 수 있는 플래시 메모리의 재사상 방법에 관한 것으로서, 도 9에 도시된 바와 같이, 매핑되지 않은 물리 유니트들을 상기 ECNT가 적은 순서에 따라 나열하게 된다.
이때, 상기 맵핑되지 않은 물리 유니트는 유효한 섹터를 가지고 있지 않으며, 새로 맵핑되어 사용될 수 있는 빈 물리 유니트이다.
이후, 상기 맵핑되지 않은 물리 유니트들 중에서 소정의 논리 유니트에 물리 유니트를 새로 맵핑하여 사용할 경우, 상기 ECNT가 적은 물리 유니트를 우선하여 사용하여 모든 물리 유니트를 고르게 사용할 수 있다.
이러한 플래시 메모리의 재사상 방법을 이용한 데이터 쓰기를 예를 들어 설명하면, 도 10에 도시된 바와 같이, 먼저 소정의 논리 섹터에 데이터를 쓰는 경우 상기 데이터가 저장될 LUN을 검색한다.(S110)
이후, 검색된 논리 유니트에 상기 논리 섹터를 저장할 공간이 존재하는지의 여부를 판단한다.(S120)
상기 판단 결과 상기 논리 섹터를 저장할 공간이 존재하는 경우 해당 빈 공간에 데이터를 저장한다.(S130)
만일, 상기 검색된 논리 유니트에 데이터를 저장할 섹터가 존재하지 않는 경우, 추가로 맵핑할 수 있는 물리 유니트가 존재하는지의 여부를 판단한다.(S140)
상기 판단 결과 추가로 맵핑할 수 있는 물리 유니트가 존재하는 경우, 맵핑되지 않은 물리 유니트 중에서 ECNT가 가장 적은 물리 유니트를 선택하고(S150), 상기 선택된 물리 유니트를 상기 논리 유니트에 추가로 맵핑시키게 된다.(S160)
이후, 상기 논리 유니트에 추가로 맵핑된 물리 유니트의 빈 공간에 데이터를 쓰게 된다.
만일, 추가로 맵핑할 수 있는 물리 유니트가 존재하지 않는 경우에는 사용 중인 물리 유니트들 중 컴팩션 연산을 수행하여 맵핑되지 않은 물리 유니트를 생성하고, 상기 생성된 물리 유니트들 중에서 ECNT가 가장 적은 물리 유니트를 선택하고, 이를 상기 논리 유니트에 맵핑시키게 된다.(S170)
이때, 상기 컴팩션 연산은 논리 유니트와 물리 유니트의 맵핑 관계가 1:N(N>2)인 경우 상기 논리 유니트와 물리 유니트의 맵핑 관계가 1:N-1로 맵핑되도록 하여 빈 물리 유니트를 적어도 하나 이상을 생성하는 것이다.
즉, 상기 논리 유니트에 맵핑된 여러 개의 물리 유니트들 중에서 빈 물리 유니트를 만들 물리 유니트를 선정하고, 상기 선정된 물리 유니트의 유효 섹터들을 다른 물리 유니트의 빈 섹터로 옮겨 빈 물리 유니트를 생성하는 것이다.
이러한 컴팩션 연산 방법을 도 11을 참조로 하여 보다 상세하게 살펴 보면, 먼저 적어도 하나 이상의 물리 유니트가 맵핑된 논리 유니트를 대상으로 상기 논리 유니트의 컴팩션 코스트가 가장 작은 논리 유니트를 검색한다.(S171)
이때, 상기 논리 유니트의 컴팩션 코스트는 우선 해당 논리 유니트에 맵핑된 물리 유니트들의 컴팩션 코스트를 구해야 하는데, 상기 물리 유니트의 컴팩션 코스트는 유효 섹터의 수 등을 기반으로 상기 유효 섹터를 옮기는데 소요되는 시간의 상대적인 값으로 구할 수 있다.
즉, 상기 물리 유니트의 컴팩션 코스트는 논리 유니트에서 빈 물리 유니트를 생성하기 위한 시간의 상대적인 값으로서, 플래시 메모리에 접근해야 하는 횟수를 통해 얻어낼 수 있다.
이때, 상기 플래시 메모리의 접근은 크게 물리 유니트 지우기, 섹터 쓰기, 섹터 복사하기, 섹터 읽기 등을 구분될 수 있다.
예를 들어, 상기 물리 유니트 지우기의 코스트는 10, 섹터 쓰기의 코스트는 3, 섹터 복사하기의 코스트는 4, 섹터 읽기의 코스트는 1이라 하고, 컴팩션 연산을 수행하기 위해서는 1개의 물리 유니트를 지워야하고, 총 12개의 섹터를 복사하는 경우, 상기 논리 유니트의 컴팩션 코스트는 58이라고 할 수 있다.
이후, 상기 물리 유니트들의 컴팩션 코스트 중 가장 작은 값을 상기 논리 유니트의 컴팩션 코스트로 선정하게 된다.
이때, 상기 논리 유니트에 맵핑된 여러 개의 물리 유니트들 중에서 가장 최근에 맵핑된 유니트는 컴팩션 대상에서 제외하게 된다.
이는 가장 최근에 맵핑된 물리 유니트의 유효 섹터를 옮기기 위해서는 항상 빈 물리 유니트를 할당해야 하기 때문이다.
따라서, 가장 최근에 맵핑된 물리 유니트를 제외하고, 가장 작은 컴팩션 코스트를 가지는 물리 유니트의 컴팩션 코스트가 해당 논리 유니트의 컴팩션 코스트가 되는 것이다.
이때, 상기 논리 유니트의 컴팩션 코스트가 되는 해당 물리 유니트의 유효 섹터들을 모두 빈 공간에 옮길 수 없다면, 새로운 물리 유니트를 할당해아 하므로 상기 논리 유니트의 컴팩션 코스트에 할당 코스트를 더하게 된다.
그리고, 상기 논리 유니트의 컴팩션 코스트가 되는 해당 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트를 선정하고, 현재 논리 유니트의 컴팩션 코스트에 가장 작은 컴팩션 코스트를 가지는 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트의 컴팩션 코스트를 더하게 된다.
이와 같이 논리 유니트의 컴팩션 코스트를 모두 구하여 선정한 컴팩션 코스트가 가장 작은 논리 유니트를 검색하는 것이다.
상기 컴팩션 코스트가 가장 작은 논리 유니트가 검색되면, 상기 논리 유니트내에서 컴팩션 코스트가 가장 작은 물리 유니트 A를 검색한다.(S172)
이때, 상기 컴팩션 연산을 위해 상기 물리 유니트 A의 유효 섹터들을 옮기는데 빈 물리 유니트가 필요한지의 여부를 판단한다.(S173)
상기 판단 결과 빈 물리 유니트가 필요치 않은 경우에는 상기 컴팩션 코스트가 물리 유니트 A의 유효 섹터들을 상기 논리 유니트내의 빈 공간으로 복사한다.(S174)
이후, 상기 유효 섹터들이 모두 복사되면, 상기 물리 유니트 A를 상기 논리 유니트의 맵핑에서 제외시킨다.(S175)
만일, 상기 판단 결과 빈 물리 유니트가 필요한 경우, 상기 논리 유니트내에서 상기 컴팩션 코스트가 가장 적은 물리 유니트 다음으로 컴팩션 코스트가 적은 물리 유니트 B를 검색한다.(S176)
이후, 상기 논리 유니트에 빈 물리 유니트를 할당한다.(S177)
이때, 상기 컴팩션 연산을 위한 빈 물리 유니트를 상기 논리 유니트에 맵핑시키고(S178), 상기 물리 유니트 B를 상기 빈 물리 유니트로 복사한다.(S179)
이후, 상기 물리 유니트 B를 상기 논리 유니트의 맵핑에서 제외시키게 되고(S180), 상기 물리 유니트 A를 논리 유니트의 맵핑에서 제외시키는 과정(S175)을 수행하게 된다.
한편, 상기한 바와 같은 컴팩션 연산 방법은 상기 물리 유니트내에 저장되는 논리 섹터의 위치가 고정된 경우와 그렇지 않은 경우에 따라 소정의 차이를 가지게 된다.
즉, 상기 논리 섹터의 위치는 도 12에 도시된 바와 같이, 상기 물리 유니트내의 고정된 위치에 저장될 수 있고, 도 13에 도시된 바와 같이, 상기 물리 유니트내의 고정되지 않은 위치에 저장될 수도 있다.
우선, 상기 물리 유니트내에 저장되는 논리 섹터의 위치가 고정된 경우를 살펴보면, 도 14에 도시된 바와 같이, 하나의 논리 유니트에는 여러 개의 물리 유니트가 맵핑되어 있다.
예를 들어, 논리 섹터 0번부터 논리 섹터 3번까지는 논리 유니트 0번에 저장되며, 논리 섹터 4번부터 논리 섹터 7번까지는 논리 유니트 2번에 저장되고, 논리 섹터 8번부터 논리 섹터 11번가지는 논리 유니트 3번에 저장되는 경우를 살펴본다.
또한, 논리 유니트 0번에는 물리 유니트 7번, 5번, 4번이 맵핑되고, 논리 유니트 1번에는 물리 유니트 2번, 1번이 맵핑되며, 논리 유니트 2번에는 물리 유니트 0번이 맵핑되는 경우를 살펴본다.
이때, 상기 논리 유니트의 컴팩션 코스트를 산정하기 위해서는 각 물리 유니트에 대한 컴팩션 코스트를 선정해야 한다.
여기서, 상기 물리 유니트는 컴팩션 코스트 C는, C=Sv×Cc+Se×We에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트, Se는 빈 섹터수, We는 빈 섹터에 대한 가중치이다.
이때, 상기 복사 코스트는 3, 빈 섹터에 대한 가중치는 0.5인 경우를 예를 들어 살펴본다.
따라서, 상기 논리 주소 0번에서 상기 물리 유니트 7번의 컴팩션 코스트는 1×3+3×0.5=4.5이고, 상기 물리 유니트 5번의 컴팩션 코스트는 2×3+1×0.5=6.5이며, 상기 물리 유니트 4번의 컴팩션 코스트는 1×3+0×0.5=3이 된다.
여기서, 가장 최근 맵핑된 물리 유니트 7번을 제외하고 가장 적은 컴팩션 코스트를 가지는 물리 유니트는 4번이 된다. 따라서, 상기 물리 유니트 4번의 유효섹터 1개는 물리 유니트 5번으로 모두 옮길 수 있다.
또한, 상기 논리 유니트 0번의 컴팩션 코스트는 물리 유니트 4번의 컴팩션 코스트인 3이 된다.
한편, 상기 논리 주소 1번에서 물리 주소 2번의 컴팩션 코스트는 상기 물리 유니트 7번, 5번, 4번과 마찬가지 방법을 통하여 4.5를 얻을 수 있고, 상기 물리 주소 1번의 컴팩션 코스트는 4를 얻을 수 있다.
이때, 가장 최근에 맵핑된 물리 유니트 2번을 제외하고, 가장 적은 컴팩션 코스트를 가지는 물리 유니트 1번의 유효 섹터 1개는 물리 유니트 2번으로 모두 옮길 수 있으며, 상기 논리 유니트 1번의 컴팩션 코스트는 물리 유니트 1번의 컴팩션 코스트인 1이 된다.
이때, 상기 논리 주소 2번은 하나의 물리 유니트만이 맵핑되어 있으므로 컴팩션 대상에서 제외된다.
여기서, 상기 논리 섹터 11번을 기록하는 경우를 예를 들어 설명하면, 상기 논리 섹터 11번이 저장될 논리 유니트는 논리 유니트 2번이 된다.
이때, 상기 논리 유니트 2번에서는 빈 섹터가 존재하기 않기 때문에 컴팩션 연산을 수행하여 빈 공간의 물리 유니트를 생성한다.
즉, 상기 컴팩션 코스트가 가장 작은 논리 유니트는 상기 논리 유니트 0번이 된다.
또한, 상기 논리 유니트 0번에서 컴팩션 코스트가 가장 작은 물리 유니트는 물리 유니트 4번이 된다.
따라서, 도 15에 도시된 바와 같이, 상기 물리 유니트 4번의 유효 섹터 1개를 상기 물리 유니트 5번에 복사하고, 상기 물리 유니트 4번을 상기 논리 유니트 0번의 맵핑에서 제외시키게 된다.
이후, 도 16에 도시된 바와 같이, 상기 논리 유니트 0번의 맵핑에서 제외된 물리 유니트를 상기 논리 유니트 2번에 맵핑시키고, 논리 섹터 11번을 상기 물리 유니트 4번에 저장하게 된다.
한편, 다른 실시예로 논리 섹터가 저장되는 위치가 고정되지 않은 경우를 살펴보면, 도 17에 도시된 바와 같이, 하나의 논리 유니트에는 여러 개의 물리 유니트가 맵핑되고, 하나의 물리 유니트에는 4개의 논리 섹터를 저장할 수 있는 경우, 각 물리 유니트에 논리 섹터를 저장할때는 순차적으로 비어있는 논리 섹터에 저장할 수 있다.
이때, 논리 섹터 0번부터 3번까지는 논리 유니트 0번에 저장되며, 논리 섹터 4번부터 논리 섹터 7번까지는 논리 유니트 1번에 저장되고, 노리 섹터 8번부터 논리 섹터 11번까지는 논리 유니트 2번에 저장되는 경우를 예를 들어 살펴본다.
여기서, 상기 논리 유니트 0번에는 물리 유니트 7번, 5번, 4번이 맵핑되고, 상기 논리 유니트 1번에는 물리 유니트 2번, 1번이 맵핑되며, 상기 논리 유니트 2번에는 물리 유니트 0번이 맵핑된다.
이때, 각 논리 유니트의 컴팩션 코스트는 시스템 초기화시에 계산하고, 이후 갱신이 일어날때마나 해당 논리 유니트의 컴팩션 코스트를 갱신할 수 있다.
상기 물리 유니트의 컴팩션 코스트 C는, C=Sv×Cc에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트이다.
또한, 할당 코스트 Q는, Q=Uc+Iw 에 의해 구해지는데, 상기 Uc는 유니트를 지우는 코스트, Iw는 메타 정보를 기록하는 코스트이다.
여기서, 상기 복사 코스트는 3, 유니트를 지우는 코스트는 10, 메타 정보를 기록하는 코스트는 2인 경우를 예를 들어 설명한다.
우선, 상기 논리 유니트 0번의 컴팩션 코스트를 얻기 위해 상기 물리 유니트 7번, 5번, 4번의 컴팩션 코스트를 구하게 된다.
즉, 상기 물리 유니트 7번의 컴팩션 코스트는 1×3=3, 상기 물리 유니트 5번의 컴팩션 코스트는 2×3=6, 상기 물리 유니트 4번의 컴팩션 코스트는 1×3=3임을 알 수 있다.
이때, 상기 논리 유니트 0번에서 가장 최근에 맵핑된 물리 유니트 7번을 제외하고, 컴팩션 코스트가 가정 작은 물리 유니트는 4번이 된다.
따라서, 상기 논리 유니트 0번의 컴팩션 코스트는 상기 물리 유니트 번의 컴팩션 코스트인 3이 된다.
또한, 상기 논리 유니트 1번의 컴팩션 코스트는 상기 물리 유니트 2번의 컴팩션 코스트가 1×3=3이고 상기 물리 유니트 1번의 컴팩션 코스트가 3×3=9이므로 가장 최근에 맵핑된 물리 유니트 2번을 제외하면 상기 논리 유니트 1번의 컴팩션 코스트는 9가 된다.
이때, 상기 물리 유니트 1번의 유효 섹터 3개는 상기 논리 유니트 1번의 빈 공간에 모두 옮길 수 없기 때문에 새로운 유니트를 할당하는 할당 코스트 12를 더하게 된다. 따라서, 상기 논리 유니트 1번의 컴팩션 코스트는 21이 된다.
또한, 상기 물리 유니트 1번을 제외하고 컴팩션 코스트가 가장 작은 물리 유니트는 2번이 되기 때문에 상기 논리 유니트 1번의 컴팩션 코스트인 21에 3을 더하여 상기 논리 유니트 1번의 컴팩션 코스트는 24가 된다.
한편, 상기 논리 유니트 2번의 하나의 물리 유니트만이 맵핑되어 있으므로 컴팩션 연산의 대상에서 제외한다.
여기서, 상기 논리 섹터 11번을 기록하는 경우를 예를 들어 설명하면, 상기 논리 섹터 11번이 저장될 논리 유니트는 논리 유니트 2번이 된다.
이때, 상기 논리 유니트 2번에는 빈 섹터가 존재하지 않으므로 컴팩션을 수행하게 되는데, 우선 컴팩션 코스트가 가장 작은 논리 유니트는 0번이 된다.
또한, 상기 논리 유니트 0번에서 가장 최근에 맵핑된 물리 유니트 7번을 제외하면 컴팩션 코스트가 가장 작은 물리 유니트는 4번이 된다.
이때, 상기 물리 유니트 4번의 유효 섹터 1개는 해당 논리 유니트의 빈 섹터로 옮겨질 수 있으므로 빈 유니트가 필요하지 않게 된다.
따라서, 도 18에 도시된 바와 같이, 상기 물리 유니트 4번의 유효 섹터인 논리 섹터 3번을 상기 물리 유니트 7번의 빈 섹터에 복사하고, 상기 물리 유니트 4번은 상기 논리 유니트 0번의 맵핑에서 제외한다.
이후, 도 19에 도시된 바와 같이, 맵핑되지 않은 물리 유니트들 중에서 삭제 횟수가 가장 적은 물리 유니트를 선정하여 상기 논리 유니트 2번에 맵핑시킨다.
따라서, 상기 논리 섹터 11번을 상기 논리 유니트 2번에 새로 맵핑된 물리 유니트 4번의 첫번째 섹터에 기록하게 된다.
상기한 바와 같은 본 실시예는 여러 개의 물리 유니트들간에 고른 사용을 위해 맵핑 되지 않은 물리 유니트들을 사용할 때 가장 삭제 횟수가 작은 유니트를 사용하고 있다.
이때, 맵핑되지 않은 물리 유니트들의 수가 적을 경우 전체 물리 유니트들간의 고른 사용을 보장하기 위하여 상기 컴팩션 코스트 이외에 웨어 레벨링 코스트를 부여하여 컴팩션 연산을 수행할 물리 유니트를 설정할 수 있다.
또한, 최소 삭제 횟수와 최대 삭제 횟수의 차가 소정의 범위를 초과할 경우 상기 최소 삭제 횟수를 가지는 물리 유니트의 유효 섹터를 해당 논리 유니트의 빈 섹터로 옮기고 상기 최소 삭제 횟수를 가지는 물리 유니트를 맵핑에서 제외시켜 최소 삭제 횟수를 가지는 물리 유니트를 사용할 수 있다.
즉, 이러한 웨어 레벨링을 이용한 데이터 쓰기를 예를 들어 설명하면, 도 20에 도시된 바와 같이, 먼저 소정의 섹터에 데이터를 쓰는 경우 상기 데이터가 저장될 LUN을검색한다.(S210)
이후, 검색된 LUN내에 상기 섹터의 데이터를 저장할 공간이 존재하는지의 여부를 판단한다.(S220)
상기 판단 결과 상기 섹터를 저장할 공간이 존재하는 경우 해당 빈 공간에 데이터를 저장한다.(S230)
만일, 상기 논리 유니트에 데이터를 저장할 섹터가 존재하지 않는 경우, 추가로 맵핑할 수 있는 물리 유니트가 존재하는지의 여부를 판단한다.(S240)
상기 판단 결과 추가로 맵핑할 수 있는 물리 유니트가 존재하는 경우, 맵핑되지 않은 물리 유니트 중에서 삭제 횟수가 가장 적은 물리 유니트를 선택하고(S250), 상기 선택된 물리 유니트를 상기 논리 유니트에 추가로 맵핑시키게 된다.(S260)
이후, 상기 논리 유니트에 추가로 맵핑된 물리 유니트의 빈공간에 데이터를 쓰게 된다.
만일, 추가로 맵핑할 수 있는 물리 유니트가 존재하지 않는 경우에는 사용중인 물리 유니트들을 통한 컴팩션 연산을 수행하여 맵핑되지 않은 물리 유니트를 생성하여 이를 상기 논리 유니트에 추가로 맵핑시키게 된다.(S270)
즉, 도 21에 도시된 바와 같이, 논리 유니트 0번은 하나의 물리 유니트가 맵핑되어 있으므로 컴팩션 연산 대상에서 제외한다.
논리 유니트 1번에 속한 각 물리 유니트의 컴팩션 코스트를 구하면, 물리 유니트 2번의 컴팩션 코스트는 1×9=9이고, 물리 유니트 0번의 컴팩션 코스트는 2×3=6이고, 물리 유니트 6번의 컴팩션 코스트는 1×3=3이 된다.
이때, 가장 최근에 맵핑된 물리 유니트 2번을 제외하고, 컴팩션 코스트가 가장 적은 물리 유니트는 6번이 된다. 따라서, 상기 논리 유니트 1번의 컴팩션 코스트는 3이 된다.
이때, 상기 물리 유니트 6번의 유효 섹터 1개는 해당 논리 유니트의 빈 섹터에 모두 옮길 수 없으므로 새로운 물리 유니트의 할당 코스트 12를 더한다. 따라서, 상기 논리 유니트 1번의 컴팩션 코스트는 15가 된다.
이때, 상기 물리 유니트 1번을 제외한 컴팩션 코스트가 가장 작은 물리 유니트는 2번이기 때문에 상기 물리 유니트 2번의 컴팩션 코스트 3을 더하면 상기 논리 유니트 1번의 컴팩션 코스트는 18이 된다.
논리 유니트 3번의 물리 유니트 4번의 컴팩션 코스트는 1×3=3이고, 물리 유니트 1번의 컴팩션 코스트는 3×3=9가 된다.
가장 최근에 맵핑된 물리 유니트 4번을 제외하고 물리 유니트 1번의 컴팩션 코스트가 9이므로 상기 논리 유니트 3번의 컴팩션 코스트는 9가 된다. 이때 상기 물리 유니트 1번의 유효 섹터 3개는 해당 논리 유니트내의 빈 섹터에 모두 옮길 수 없으므로, 새로운 물리 유니트 할당 코스트 12를 더하면 상기 논리 유니트 3번의 컴팩션 코스트는 21이 된다.
또한, 상기 물리 유니트 1번을 제외하면 컴팩션 코스트가 가장 작은 물리 유니트 4번의 컴팩션 코스트가 3를 더하면 상기 논리 유니트 3번의 컴팩션 코스트는 24가 된다.
논리 유니트 4번에 속한 각 물리 유니트의 컴팩션 코스트를 구해보면, 물리 유니트 7번의 컴팩션 코스트는 1×3=3이고, 물리 유니트 9번의 컴팩션 코스트는 3×3=9이다.
가장 최근에 맵핑된 물리 유니트 7번을 제외하면, 물리 유니트 9번의 컴팩션 코스트가 9이기 때문에 상기 논리 유니트 4번의 컴팩션 코스트는 9가 된다. 이때, 상기 물리 유니트 9번의 유효 섹터 3개는 해당 논리 유니트내의 빈 섹터로 모두 옮겨질 수 없기 때문에 새로운 물리 유니트를 할당 받아 상기 논리 유니트 4번의 컴팩션 코스트는 할당 코스트 12가 더해져 21이 된다.
또한, 상기 물리 유니트 9번을 제외하고 컴팩션 코스트가 가장 작은 물리 유니트는 7번이므로 상기 물리 유니트 7번의 컴팩션 코스트를 더하여 상기 논리 유니트 4번의 컴팩션 코스트는 24가 된다.
이때, 상기 논리 유니트 0번에 논리 섹터 0번으 저장하는 경우를 예를 들어 설명하면, 상기 논리 유니트 0번에는 논리 섹터를 저장할 빈 섹터가 존재하지 않게 된다.
또한, 컴팩션 코스트가 가장 작은 논리 유니트는 논리 유니트 1번이고, 상기 논리 유니트 1번에서 컴팩션 코스트가 가장 작은 물리 유니트는 물리 유니트 2번을 제외하면, 물리 유니트 6번이 된다.
이때, 상기 물리 유니트 6번의 유효 섹터 1개가 해당 논리 유니트 내의 빈 섹터로 옮겨 질 수 없으므로 빈 물리 유니트가 필요하게 된다.
따라서, 도 22에 도시된 바와 같이, 맵핑되지 않은 물리 유니트 하나를 상기 논리 유니트 1번에 새로 맵핑시키게 된다.
이후, 상기 물리 유니트 6번 다음으로 컴팩션 코스트가 작은 물리 유니트는 2번이므로, 상기 물리 유니트 2번의 유효 섹터 1개를 새로 맵핑된 물리 유니트에 복사하고 상기 물리 유니트 2번은 맵핑에서 제외한다.
또한, 상기 물리 유니트 6번의 유효 섹터 1개를 새로 맵핑된 물리 유니트에 복사하고, 상기 물리 유니트 6번을 맵핑에서 제외한다.
이때, 도 23에 도시된 바와 같이, 상기 물리 유니트 6번과 2번이 맵핑되지 않은 물리 유니트에 포함되는데, 이 중 삭제 횟수가 작은 물리 유니트 6번을 상기 논리 유니트 0번에 맵핑시키게 된다.
이때, 최소 삭제 횟수와 최대 삭제 횟수의 차가 소정의 범위를 초과하는지의 여부를 판단하고(S280), 상기 판단 결과 소정의 범위를 초과한 경우 강제적으로 웨어 레벨링을 수행한다.(S290)
즉, 도 24에 도시된 바와 같이, 각 물리 유니트의 최소 삭제 횟수와 최대 삭제 횟수의 차가 소정의 범위를 초과하는지를 판단하는 것이다.
이때, 상기 소정 범위가 100인 경우를 예를 들어 설명하면, 최대 삭제 횟수는 물리 유니트 8번의 21이고 최소 삭제 횟수는 무리 유니트 9번 121이 되어 100이 된다.
따라서, 상기 최소 삭제 횟수를 가지는 물리 유니트인 9번을 강제적으로 컴팩션 시키게 된다.
이상과 같이 본 발명에 따른 플래시 메모리의 사상 방법을 예시된 도면을 참조로 하여 설명하였으나, 본 명세서에 개시된 실시예와 도면에 의해 본 발명은 한정되지 않으며 그 발명의 기술사상 범위내에서 당업자에 의해 다양한 변형이 이루어질 수 있음은 물론이다.
상기한 바와 같은 본 발명의 플래시 메모리의 재사상 방법에 따르면 다음과 같은 효과가 하나 혹은 그 이상 있다.
첫째, 맵핑되지 않은 다수의 물리 유니트들 중 삭제 횟수가 적은 순서대로 소정의 논리 유니트에 맵핑시킴으로서 모든 물리 유니트를 고르게 사용할 수 있기 때문에 플래시 메모리의 수명을 연장할 수 있는 장점이 있다.
둘째, 플래시 메모리의 데이터 쓰기 연산시 컴팩션 연산을 통해 플래시 메모리로의 접근 횟수를 최소화하여 사용자에게 빠른 응답을 제공할 수 있는 장점도 있다.
도 1 은 일반적인 논리 블록 번호와 논리 유니트 번호의 맵핑 테이블 및 논리 유니트 번호와 물리 유니트 번호의 맵핑 테이블이 도시된 도면.
도 2 는 일반적인 물리 유니트의 구조가 도시된 도면.
도 3 은 일반적인 물리 유니트의 데이터 쓰기가 도시된 도면.
도 4 는 일반적인 랩 카운트가 도시된 도면.
도 5 는 일반적인 대블록 플래시 메모리의 구조가 도시된 도면.
도 6 은 본 발명에 따른 논리 유니트의 메타 정보 저장 영역이 도시된 도면.
도 7 은 본 발명에 따른 논리 유니트의 데이터 저장 영역이 도시된 도면.
도 8 은 본 발명에 따른 논리 유니트에 맵핑된 물리 유니트가 도시된 도면.
도 9 는 본 발명에 따른 맵핑되지 않은 물리 유니트가 삭제 횟수가 적은 순서에 따라 나열된 도면.
도 10 은 본 발명에 따른 논리 섹터 쓰기 방법이 도시된 도면.
도 11 은 본 발명에 따른 컴팩션 연산 방법이 도시된 도면.
도 12 는 본 발명에 따른 물리 유니트의 고정된 위치에 논리 섹터를 쓰는 방법이 도시된 도면.
도 13 은 본 발명에 따른 물리 유니트의 고정되지 않은 위치에 논리 섹터를 쓰는 방법이 도시된 도면.
도 14 내지 도 16 은 본 발명에 따른 물리 유니트의 고정된 위치에 논리 섹터를 쓰는 경우 컴팩션 연산 과정이 도시된 도면.
도 17 내지 도 19 는 본 발명에 따른 물리 유니트의 고정되지 않은 위치에 논리 섹터를 쓰는 경우 컴팩션 연산 과정이 도시된 도면.
도 20 은 본 발명에 따른 강제 컴팩션 연산 방법이 도시된 도면.
도 21 내지 도 24 는 본 발명에 따른 강제 컴팩션 방법에서 컴팩션 연산 과정이 도시된 도면.

Claims (16)

  1. 소정의 논리 유니트에 맵핑되지 않은 다수의 물리 유니트를 삭제 횟수에 따라 나열하는 제 1 단계와,
    상기 삭제 횟수가 적은 순서에 따라 물리 유니트를 소정의 논리 유니트를 맵핑시키는 제 2 단계를 포함하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  2. 제 1 항에 있어서,
    소정의 논리 유니트에 맵핑된 다수의 물리 유니트간의 선후 관계를 나타내는 깊이 값이 각 물리 유니트에 포함되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  3. 제 2 항에 있어서,
    상기 깊이 값이 클수록 가장 최근에 맵핑된 물리 유니트로 판단되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  4. 제 3 항에 있어서,
    상기 맵핑되지 않은 물리 유니트가 존재하지 않은 경우, 상기 논리 유니트내에서 빈 물리 유니트를 생성하는 컴팩션 연산을 수행하는 제 3 단계를 포함하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  5. 제 4 항에 있어서,
    상기 깊이 값이 가장 큰 물리 유니트는 컴팩션 연산에서 제외시키는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  6. 제 5 항에 있어서,
    상기 제 3 단계는 소정의 논리 유니트내에서 컴팩션 코스트가 가장 작은 물리 유니트를 선정하는 제 1 과정과,
    상기 선정된 물리 유니트의 컴팩션 코스트를 상기 논리 유니트의 컴팩션 코스트로 설정하는 제 2 과정과,
    상기 컴팩션 코스트가 가장 작은 물리 유니트의 유효 섹터를 상기 논리 유니트의 빈 공간으로 복사 후 상기 물리 유니트를 맵핑에서 제외시키는 제 3 과정을 포함하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  7. 제 6 항에 있어서,
    상기 컴팩션 코스트는 소정 물리 유니트의 유효한 섹터 수 및 복사 코스트를 기반으로 유효 섹터를 옮기는데 소요되는 시간의 상대적인 값으로 설정되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  8. 제 7 항에 있어서,
    논리 섹터를 상기 물리 유니트의 고정된 위치에 저장하는 경우, 상기 컴팩션 코스트 C는, C=Sv×Cc+Se×We에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트, Se는 빈 섹터수, We는 빈 섹터에 대한 가중치인 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  9. 제 7 항에 있어서,
    논리 섹터를 상기 물리 유니트의 고정되지 않은 위치에 저장하는 경우, 상기 컴팩션 코스트 C는, C=Sv×Cc에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트인 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  10. 제 8 항 또는 제 9 항에 있어서,
    상기 컴팩션 코스트는 상기 유효 섹터를 소정의 논리 유니트내에서 옮길 수 없는 경우, 새로운 물리 유니트를 할당하기 위한 할당 코스트가 추가되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  11. 제 10 항에 있어서,
    상기 할당 코스트는 물리 유니트를 지우는 시간의 상대적인 값과 물리 유니트의 메타 정보를 기록하는 시간의 상대적인 값을 통해 설정되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  12. 제 11 항에 있어서,
    상기 할당 코스트 상기 물리 유니트의 컴팩션 코스트 C는, C=Sv×Cc에 의해 구해지는데, 상기 Sv는 유효 섹터수, Cc는 복사 코스트인 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  13. 제 12 항에 있어서,
    상기 컴팩션 코스트는 가장 작은 컴팩션 코스트를 가지는 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트의 컴팩션 코스트가 추가되는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  14. 제 13 항에 있어서,
    상기 제 3 단계는 상기 컴팩션 코스트가 가장 작은 논리 유니트의 유효 섹터를 복사하기 위한 빈 공간이 존재하지 않는 경우, 가장 컴팩션 코스트가 작은 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트를 검색하는 제 4 과정과,
    소정의 빈 물리 유니트를 상기 논리 유니트에 맵핑시키는 제 5 과정과,
    가장 컴팩션 코스트가 작은 물리 유니트 다음으로 작은 컴팩션 코스트를 가지는 물리 유니트의 유효 섹터를 상기 빈 물리 유니트에 복사한 후 맵핑에서 제외시키는 제 5 과정을 더 포함하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  15. 제 14 항에 있어서,
    소정의 논리 유니트들에 맵핑된 물리 유니트의 최소 삭제 횟수와 최대 삭제 횟수를 파악하는 제 4 단계와,
    상기 최소 삭제 횟수와 최대 삭제 횟수가 소정 값을 초과하는 경우 상기 컴팩션 연산을 수행하는 제 5 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
  16. 제 15 항에 있어서,
    상기 제 5 단계는 상기 최소 삭제 횟수를 가지는 물리 유니트에 대한 컴팩션 연산을 수행하는 것을 특징으로 하는 플래시 메모리의 재사상 방법.
KR10-2004-0008068A 2004-02-06 2004-02-06 플래시 메모리의 재사상 방법 KR100526190B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR10-2004-0008068A KR100526190B1 (ko) 2004-02-06 2004-02-06 플래시 메모리의 재사상 방법
EP05250578A EP1562122A3 (en) 2004-02-06 2005-02-02 Method of remapping flash memory
JP2005026846A JP4185058B2 (ja) 2004-02-06 2005-02-02 フラッシュメモリのリマッピング方法
CNB2005100052562A CN1315057C (zh) 2004-02-06 2005-02-03 重映射闪速存储器的方法
US11/050,737 US7516295B2 (en) 2004-02-06 2005-02-07 Method of remapping flash memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2004-0008068A KR100526190B1 (ko) 2004-02-06 2004-02-06 플래시 메모리의 재사상 방법

Publications (2)

Publication Number Publication Date
KR20050079576A KR20050079576A (ko) 2005-08-10
KR100526190B1 true KR100526190B1 (ko) 2005-11-03

Family

ID=34676016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2004-0008068A KR100526190B1 (ko) 2004-02-06 2004-02-06 플래시 메모리의 재사상 방법

Country Status (5)

Country Link
US (1) US7516295B2 (ko)
EP (1) EP1562122A3 (ko)
JP (1) JP4185058B2 (ko)
KR (1) KR100526190B1 (ko)
CN (1) CN1315057C (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
JP5008845B2 (ja) 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US20070180167A1 (en) * 2006-02-02 2007-08-02 Seagate Technology Llc Dynamic partition mapping in a hot-pluggable data storage apparatus
KR100781517B1 (ko) 2006-02-16 2007-12-03 삼성전자주식회사 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
KR100791325B1 (ko) * 2006-10-27 2008-01-03 삼성전자주식회사 비휘발성 메모리를 관리하는 장치 및 방법
JP4292225B2 (ja) * 2007-12-17 2009-07-08 株式会社東芝 情報記録装置および情報記録方法
KR100964374B1 (ko) * 2007-12-17 2010-06-17 한국전자통신연구원 전파식별 태그의 메모리 관리 장치 및 방법
WO2009084724A1 (en) 2007-12-28 2009-07-09 Kabushiki Kaisha Toshiba Semiconductor storage device
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
JP4683438B2 (ja) * 2008-06-13 2011-05-18 讀賣テレビ放送株式会社 データ放送システム、データ放送方法及びプログラム
TWI410976B (zh) * 2008-11-18 2013-10-01 Lite On It Corp 固態儲存媒體可靠度的測試方法
JP4821845B2 (ja) * 2008-12-22 2011-11-24 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4821844B2 (ja) * 2008-12-22 2011-11-24 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8700840B2 (en) 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
JP4952740B2 (ja) * 2009-04-13 2012-06-13 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
TWI410795B (zh) * 2009-06-23 2013-10-01 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制電路與儲存系統
CN102696010B (zh) * 2009-09-08 2016-03-23 才智知识产权控股公司(2) 用于将数据高速缓存在固态存储设备上的装置、系统和方法
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8055942B2 (en) * 2009-12-03 2011-11-08 Seagate Technology Llc Data storage devices and methods for power-on initialization
JP5609683B2 (ja) * 2011-01-31 2014-10-22 ソニー株式会社 メモリ装置およびメモリシステム
TWI494948B (zh) * 2011-01-31 2015-08-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
JP2012203443A (ja) 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US9177609B2 (en) 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US9208070B2 (en) * 2011-12-20 2015-12-08 Sandisk Technologies Inc. Wear leveling of multiple memory devices
CN104008061B (zh) * 2013-02-22 2018-01-23 华为技术有限公司 内存回收方法及装置
TWI571882B (zh) * 2016-02-19 2017-02-21 群聯電子股份有限公司 平均磨損方法、記憶體控制電路單元及記憶體儲存裝置
TWI584292B (zh) * 2016-09-08 2017-05-21 群聯電子股份有限公司 記憶體抹除方法、記憶體控制電路單元及記憶體儲存裝置
KR102507140B1 (ko) * 2017-11-13 2023-03-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102512727B1 (ko) * 2017-12-22 2023-03-22 삼성전자주식회사 가비지 컬렉션을 수행하는 스토리지 장치, 및 스토리지 장치의 가비지 컬렉션 방법
US11860947B2 (en) * 2019-01-31 2024-01-02 International Business Machines Corporation Deleted data restoration
US11061598B2 (en) * 2019-03-25 2021-07-13 Western Digital Technologies, Inc. Optimized handling of multiple copies in storage management
CN111290716A (zh) * 2020-03-05 2020-06-16 莆田学院 一种基于Norflash的磨损平衡处理方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5473765A (en) * 1994-01-24 1995-12-05 3Com Corporation Apparatus for using flash memory as a floppy disk emulator in a computer system
JP3507132B2 (ja) * 1994-06-29 2004-03-15 株式会社日立製作所 フラッシュメモリを用いた記憶装置およびその記憶制御方法
JPH08124393A (ja) * 1994-10-20 1996-05-17 Fujitsu Ltd データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
CN1136503C (zh) * 1996-01-30 2004-01-28 Tdk株式会社 闪烁存储系统
GB2317721B (en) * 1996-09-30 2001-09-12 Nokia Mobile Phones Ltd Memory device
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
KR100297986B1 (ko) * 1998-03-13 2001-10-25 김영환 플래쉬 메모리 셀 어레이의 웨어 레벨링 시스템 및 웨어 레벨링 방법
JP3544859B2 (ja) * 1998-05-11 2004-07-21 富士通株式会社 不揮発性半導体メモリを使用した2次記憶装置
US6427186B1 (en) * 1999-03-30 2002-07-30 Frank (Fong-Long) Lin Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6801994B2 (en) * 2000-12-20 2004-10-05 Microsoft Corporation Software management systems and methods for automotive computing devices
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4772214B2 (ja) 2001-06-08 2011-09-14 ルネサスエレクトロニクス株式会社 不揮発性記憶装置及びその書き換え制御方法
US6621746B1 (en) * 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
KR100914646B1 (ko) 2002-08-31 2009-08-28 지인정보기술 주식회사 멀티-플레인 구조의 플래시 메모리 관리 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101354152B1 (ko) 2006-12-18 2014-01-27 삼성전자주식회사 비휘발성 데이터 저장장치에 구비된 가상 파일 시스템의작업 스케줄링 방법 및 장치

Also Published As

Publication number Publication date
JP4185058B2 (ja) 2008-11-19
EP1562122A3 (en) 2007-05-02
JP2005222550A (ja) 2005-08-18
US20050174849A1 (en) 2005-08-11
CN1652089A (zh) 2005-08-10
CN1315057C (zh) 2007-05-09
US7516295B2 (en) 2009-04-07
EP1562122A2 (en) 2005-08-10
KR20050079576A (ko) 2005-08-10

Similar Documents

Publication Publication Date Title
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
KR100789406B1 (ko) 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US8103820B2 (en) Wear leveling method and controller using the same
US7882300B2 (en) Apparatus and method for managing nonvolatile memory
KR100577380B1 (ko) 플래시 메모리와 그 제어 방법
US8046526B2 (en) Wear leveling method and controller using the same
US7711892B2 (en) Flash memory allocation for improved performance and endurance
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
US20140129758A1 (en) Wear leveling in flash memory devices with trim commands
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
JP2010515179A (ja) フラッシュメモリのブロック管理方法
CN101354681A (zh) 存储器系统、非易失性存储器的磨损均衡方法及装置
CN103294604A (zh) 闪存器件和使用闪存器件的电子设备
KR101403922B1 (ko) 접근 빈도에 따라 데이터를 할당하는 저장장치 및 저장방법
US20100318726A1 (en) Memory system and memory system managing method
US11334480B2 (en) Data storage device and non-volatile memory control method
CN108073359B (zh) 数据储存装置的操作方法
US11150819B2 (en) Controller for allocating memory blocks, operation method of the controller, and memory system including the controller
JP4829202B2 (ja) 記憶装置及びメモリ制御方法
KR100533683B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
KR100638638B1 (ko) 플래시 메모리의 제어 방법
TWI808011B (zh) 資料處理方法及對應之資料儲存裝置

Legal Events

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

Payment date: 20120925

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20151001

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160930

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20180927

Year of fee payment: 14