[go: up one dir, main page]

KR100638638B1 - 플래시 메모리의 제어 방법 - Google Patents

플래시 메모리의 제어 방법 Download PDF

Info

Publication number
KR100638638B1
KR100638638B1 KR1020040070322A KR20040070322A KR100638638B1 KR 100638638 B1 KR100638638 B1 KR 100638638B1 KR 1020040070322 A KR1020040070322 A KR 1020040070322A KR 20040070322 A KR20040070322 A KR 20040070322A KR 100638638 B1 KR100638638 B1 KR 100638638B1
Authority
KR
South Korea
Prior art keywords
unit
block
log
available
blocks
Prior art date
Application number
KR1020040070322A
Other languages
English (en)
Other versions
KR20060021548A (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 KR1020040070322A priority Critical patent/KR100638638B1/ko
Publication of KR20060021548A publication Critical patent/KR20060021548A/ko
Application granted granted Critical
Publication of KR100638638B1 publication Critical patent/KR100638638B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • 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/26Sensing or reading circuits; Data output 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/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

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

본 발명은 플래시 메모리의 제어 방법에 관한 것으로, 복수개의 블록으로 구성된 복수개의 유니트로 구성되어 읽기 및 쓰기 연산은 블록 단위로 수행되고 삭제 연산은 유니트 단위로 수행되는 플래시 메모리에서 원 유니트의 데이터 블록을 갱신하고자 할 때 갱신할 블록을 원 유니트에 대응되는 로그 유니트에 기록함에 있어서 원 유니트들이 복수개의 로그 유니트를 공유하도록 함으로써 유니트 내의 공간 사용률을 높여 가용 블록을 확보하기 위한 삭제 횟수를 줄일 수 있어 데이터 기록 및 갱신 효율을 높일 수 있는 이점이 있다.
플래시 메모리, 재사상, 로그 유니트, 데이터 갱신, 원 유니트, 공간 사용률, 재생, 가용 블록, 삭제

Description

플래시 메모리의 제어 방법{METHOD FOR CONTROLING FLASH MEMORY DEVICE}
도 1은 일반적인 플래시 메모리의 제어 방법을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 사상 테이블의 구성도, (b)는 LUN-to-PUN 사상 테이블의 구성도이다.
도 2는 본 발명에 따른 플래시 메모리의 제어 방법을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 사상 테이블의 구성도, (b)는 LUN-to-PUN 사상 테이블의 구성도이다.
도 3은 본 발명에 따른 플래시 메모리의 제어 방법에서 원 유니트와 로그 유니트의 사상 관계에 대한 예를 설명하기 위한 도면이다.
도 4는 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 읽기 연산에 대한 동작 흐름도이다.
도 5는 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 쓰기 연산에 대한 동작 흐름도이다.
도 6은 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 로그 유니트의 결정 과정에 대한 동작 흐름도이다.
도 7은 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 재생 연산에 대 한 동작 흐름도이다.
본 발명은 플래시 메모리의 제어 방법에 관한 것으로서, 보다 상세하게는 복수개의 블록으로 구성된 복수개의 유니트로 구성되어 읽기 및 쓰기 연산은 블록 단위로 수행되고 삭제 연산은 유니트 단위로 수행되는 플래시 메모리에서 원 유니트의 데이터 블록을 갱신하고자 할 때 갱신할 블록을 원 유니트에 대응되는 로그 유니트에 기록함에 있어서 원 유니트들이 복수개의 로그 유니트를 공유하도록 함으로써 유니트 내의 공간 사용률을 높여 가용 블록을 확보하기 위한 삭제 횟수를 줄일 수 있도록 한 플래시 메모리의 제어 방법에 관한 것이다.
플래시 메모리는 EEPROM의 일종으로 비휘발성이면서 프로그램이 가능하다는 특성 때문에 최근에 이동전화나 PDA와 같은 이동기기를 비롯한 내장형 시스템의 메모리 장치로 널리 쓰이고 있다.
이러한 플래시 메모리는 기존의 RAM(Ramdom Access Memory)이나 비휘발성 저장장치, 마그네틱 디스크 등과 마찬가지로 특정 위치에 저장된 데이터를 임의로 접근할 수 있는 특징이 있다.
그러나, 이러한 플래시 메모리는 데이터를 수정하거나 삭제하는 방법이 위의 다른 저장장치들과는 다르다. 즉, 초기화된 플래시 메모리의 소정 블록에 일단 데 이터를 한번 기록하고 나면 이를 수정하거나 삭제하고자 할 경우에는 그 블록을 포함하고 있는 유니트를 수정하거나 삭제하여야 한다.
플래시 메모리에서 블록은 물리적으로 연속된 주소를 갖는 바이트들로 구성된 것으로 플래시 메모리에 대한 연산의 기본 단위가 된다. 그리고 유니트는 복수개의 블록들로 구성된 것으로 물리적으로 한번에 삭제 또는 수정할 수 있는 기본단위가 된다.
따라서, 플래시 메모리는 블록에 기록되어 있는 데이터에 대한 갱신은 바로 수행이 불가능하며 그 블록을 포함하는 유니트에 대해 삭제 연산을 수행한 후에 가능하다.
또한, 플래시 메모리의 유니트는 삭제 회수가 물리적으로 제한되어 있으며, 삭제 연산 시간이 읽기 및 쓰기 시간보다 많이 걸린다.
그래서, 유니트의 삭제 회수를 줄이는 것이 데이터 기록 및 갱신 효율을 높이게 되는 것이다.
플래시 메모리의 블록은 순차적으로 물리적 블록 번호(PBN: Physical Block Number)가 부여되어 있으며, 사용자 수준에서는 논리적 블록 번호(LBN: Logical Block Number)를 사용하여 블록에 접근한다. 그리고, 플래시 메모리의 유니트는 순차적으로 물리적 유니트 번호(PUN: Physical Unit Number)가 부여되어 있으며, 사용자 수준에서는 논리적 유니트 번호(LUN: Logical Unit Number)를 사용한다.
따라서, 논리적 블록 번호와 물리적 블록 번호 사이에 사상(mapping)이 필요하게 되며 이를 위해 블록 사상 테이블(Block Mapping Table)들과 블록 할당 맵 (Block Allocation Map)이 사용된다.
도 1은 일반적인 플래시 메모리의 제어 방법을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 사상 테이블의 구성도, (b)는 LUN-to-PUN 사상 테이블의 구성도이다.
여기에 도시된 바와 같이 논리적 블록 2에 데이터를 기록하려는 경우를 예로 들어 본다. 먼저, (a)에 도시된 LBN-to-LUN 사상 테이블을 사용하여 논리적 블록 2가 논리적 유니트 번호 5에 사상됨을 알 수 있다. 다음으로 (b)에 도시된 LUN-to-PUN 사상 테이블을 사용하여 논리적 유니트 번호 5가 물리적 유니트 번호가 3에 사상됨을 알 수 있다. 따라서, 논리적 블록 2는 물리적 유니트 3의 빈 블록에 기록된다.
이때 각 유니트는 유니트 내의 블록의 할당 상태를 관리하기 위한 블록 할당 맵을 가지며, 블록 사상 테이블은 플래시 메모리의 특정 블록에 기록되고, 블록 할당 맵은 유니트 내의 특정 블록에 기록되거나 블록마다 가지는 여유 영역(spare area)에 기록된다.
이와 같이 블록 사상 테이블을 사용하면 사용자의 논리 번호는 그대로 사용하면서 실제 데이터가 저장되는 물리적 위치를 변경할 수 있다. 예를 들어, 논리적 유니트 5가 사상된 물리적 유니트 3의 데이터를 물리적 유니트 10으로 복사한다면 LUN-to-PUN 테이블에서 PUN 값을 10으로 갱신하면 되고 사용자는 논리적 유니트 번호 5를 그대로 사용하면 된다.
상술한 바와 같이 이렇게 플래시 메모리는 데이터 블록의 갱신을 해당 블록 에 직접 수행하려면 해당 블록을 포함하는 유니트의 삭제 연산이 요구되며 이 연산은 수행 시간이 오래 걸리고 수행 도중 전원 단절로 중단되는 경우 데이터의 유실을 초래할 수 있다.
따라서, 이를 해결하기 위해 데이터 블록의 변경을 해당 블록에 직접 수행하지 않고 새로운 블록을 할당받아 데이터를 기록한 후 이전 블록은 무효(invalid) 블록으로 표시한 후 나중에 삭제하는 방법들이 고안되었다. 이러한 방법들은 블록 사상 테이블을 사용하여 사용자의 논리 번호는 변경 없이 데이터의 물리적 위치를 변경하는 것이다.
이러한 방법으로 미국 등록특허 제 5,404,485호(1995년 04월 04일 등록) "Flash File System" 에서는 데이터 갱신이 요청되었을 때 가용 블록을 가진 유니트를 탐색하고 가용 블록에 새 데이터를 기록한 후 원래 데이터 블록은 무효 블록으로 바꾸고 나중에 삭제한다. 상기 발명에서는 주기적으로 유니트들을 재생(reclaiming)하여 가용 공간을 확보한다. 이때 재생할 유니트를 선택하고 가용 유니트(free unit) 중에서 이동 유니트(transfer unit)를 할당한 후, 재생을 위해 선택된 유니트에서 유효 블록(valid block)만을 읽어 이동 유니트의 동일한 오프셋 위치의 블록에 기록한다. 또한, 재생을 위해 선택된 유니트는 삭제하여 가용 유니트로 바꾼다.
그러나, 이와 같은 방법은 갱신 데이터를 저장할 가용 유니트 및 가용 블록을 탐색해야 하는 문제점을 가진다.
그래서, 이와 같은 문제점을 해결하기 위한 방법으로써 대한민국 공개특허 제2001-0029171호(2001년 04월 06일 공개) "플래시 메모리와 그 제어 방법" 에서는 유니트마다 일정 개수의 예비 블록을 두고 갱신되는 블록을 기록하기 위해 사용한다. 또한, 갱신 데이터를 저장할 때 유니트를 탐색할 필요 없이 동일 유니트의 예비 블록에 바로 기록한 후 원래 데이터 블록은 무효 블록으로 바꾼다. 만약 유니트의 예비 블록이 다 사용된 경우에는 이동 유니트(transfer unit)를 할당하고 이전 유니트의 유효 블록들을 이동 유니트로 복사하고 이전 유니트는 삭제하여 가용 유니트로 바꾼다.
그러나, 이 방법은 유니트 내에 예비 블록을 미리 확보해야 하는데 예비 블록의 적정 개수를 결정하기가 어렵고, 유니트 내에 갱신 작업 횟수가 적은 경우에는 유니트의 공간 사용률이 떨어지는 문제점을 가진다.
한편, 대한민국 공개특허 제2002-0028624호(2002년 04월 17일 공개) "플래시 메모리를 위한 재사상 제어방법 및 그에 따른 플래시 메모리의 구조" 에서는 공개특허 제2001-0029171호의 방법을 사용하면서 블록의 상태 전이를 정의하여 블록의 부분 기록을 최소화 방법을 고안하였다.
그러나, 이와 같은 방법도 여전히 유니트 내에 예비 블록을 확보해야 하고 유니트의 공간 사용률이 떨어지는 문제점을 가진다.
한편, 2002년 IEEE Transactions on Consumer Electronics 제48권 제2호 페이지 366∼375에 발표된 "A Space Efficient Flash Translation Layer for Compact Flash Systems" 에서는 유니트마다 같은 크기의 로그 유니트(log unit)를 두어 원 유니트(original unit)의 데이터 블록이 갱신되어야할 때 대응되는 로그 유니트의 가용 블록에 순차적으로 기록한다. 만약 로그 유니트의 가용 블록이 다 사용된 경우에는 가용 유니트를 할당한 후 원 유니트와 로그 유니트에서 유효 블록만을 읽어 가용 유니트에 기록하고 원 유니트로 바꾼다. 그런다음, 원 유니트와 가용 블록이 다 사용된 로그 유니트는 삭제 연산을 수행하여 가용 유니트로 바꾼다.
그런데, 이와 같은 방법은 갱신할 데이터를 대응되는 로그 유니트에 바로 기록하므로 빠르게 수행할 수는 있지만, 하나의 로그 유니트가 오직 하나의 원 유니트를 위해서만 전용되기 때문에 원 유니트 내에 갱신 연산의 횟수가 적은 경우에는 로그 유니트의 공간 사용률이 떨어지는 문제점을 가진다. 예를 들어, 유니트의 크기가 128KB이며 블록의 크기가 2KB인 플래시 메모리에서 하나의 블록만 갱신되었다면 유니트의 공간 사용률은 약 1.5% (2 / 128 = 0.015)가 된다.
이와 같은 종래의 플래시 메모리의 블록 사상 방법들은 가용 블록을 최대한 사용하지 못하여 플래시 메모리의 공간 사용률을 떨어뜨리고, 가용 블록을 확보하기 위한 삭제 횟수를 증가시킬 수 있어 플래시 메모리의 성능을 저하시키는 문제점을 가진다.
본 발명은 상기와 같은 문제점을 해결하기 위해 창작된 것으로서, 본 발명의 목적은 복수개의 블록으로 구성된 복수개의 유니트로 구성되어 읽기 및 쓰기 연산은 블록 단위로 수행되고 삭제 연산은 유니트 단위로 수행되는 플래시 메모리에서 원 유니트의 데이터 블록을 갱신하고자 할 때 갱신할 블록을 원 유니트에 대응되는 로그 유니트에 기록함에 있어서 원 유니트들이 복수개의 로그 유니트를 공유하도록 함으로써 유니트 내의 공간 사용률을 높여 가용 블록을 확보하기 위한 삭제 횟수를 줄일 수 있도록 한 플래시 메모리의 제어 방법을 제공함에 있다.
상기와 같은 목적을 실현하기 위한 본 발명은 복수개의 블록으로 구성된 복수개의 유니트로 구성되어 읽기 및 쓰기 연산은 블록 단위로 수행되고 삭제 연산은 유니트 단위로 수행되는 플래시 메모리에 있어서, 하나 이상의 블록에 데이터가 기록된 원 유니트내 블록들의 복사본이 저장되는 로그 유니트에 하나 이상의 원 유니트가 대응되도록 사상하여 로그 유니트를 결정하는 것을 특징으로 한다.
본 발명에서, 로그 유니트의 결정은 (a) 사상 정보를 통해 원 유니트에 대응되어 할당된 로그 유니트가 있는가 검사하는 단계와, (b) (a)단계에서 검사하여 할당된 로그 유니트가 있다면 가용 블록을 가진 로그 유니트를 탐색하는 단계와, (c) (b)단계에서 탐색하여 로그 유니트가 있다면 해당 로그 유니트를 사용하도록 하는 단계와, (d) (b)단계에서 탐색하여 로그 유니트가 없다면 다른 원 유니트에 할당되어 사용 중인 로그 유니트에서 가용 블록을 가진 로그 유니트가 있는가 검사하는 단계와, (e) (d)단계에서 검사하여 로그 유니트가 있다면 해당 로그 유니트를 사용하도록 할당하는 단계와, (f) (d)단계에서 검사하여 로그 유니트가 없다면 가용 유니트가 있는가를 검사하는 단계와, (g) (f)단계에서 검사하여 가용 유니트가 없다면 재생 연산을 수행하는 단계와, (h) (f)단계에서 검사하여 가용 유니트가 있다면 가용 유니트에서 로그 유니트를 새로 할당하는 단계와, (i) (e)단계와 (h)단계에서 로그 유니트를 할당한 후 사상 정보에 해당 로그 유니트 정보를 기록하는 단계와, (j) (a)단계에서 할당된 로그 유니트가 없다면 (d)단계에서 (i)단계까지 수행하는 단계로 이루어진 것을 특징으로 한다.
이때, 사상 정보는 블록 사상 테이블인 것을 특징으로 한다.
또한, 본 발명에서 로그 유니트는 원 유니트와 같은 크기로 구성되거나 여러 개의 유니트로 구성된 것을 특징으로 한다.
이와 같이 본 발명은 플래시 메모리의 하나 이상의 블록에 데이터가 기록된 원 유니트내 블록들의 복사본이 저장되는 로그 유니트에 하나 이상의 원 유니트가 대응되도록 사상함으로써 원 유니트와 로그 유니트가 공유되어 유니트내 공간 사용률을 높일 수 있게 되어 가용 블록을 확보하기 위한 삭제 횟수를 줄일 수 있게 된다.
이하, 본 발명의 바람직한 실시예를 첨부된 도면을 참조하여 설명한다. 또한 본 실시예는 본 발명의 권리범위를 한정하는 것은 아니고, 단지 예시로 제시된 것이며 종래 구성과 동일한 부분은 동일한 부호 및 명칭을 사용한다.
도 2는 본 발명에 따른 플래시 메모리의 제어 방법을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 사상 테이블의 구성도, (b)는 LUN-to-PUN 사상 테이블의 구성도이다.
유니트는 플래시 메모리의 물리적인 삭제 연산의 기본 단위가 되는 삭제 유 니트(삭제 블록(erase block)이라고 불리기도 함)와 일치할 수도 있고 여러 개의 삭제 유니트로 구성될 수도 있다.
그리고, 유니트 내의 하나 이상의 블록에 데이터가 기록되어진 유니트를 원 유니트(original unit)라고 하며 원 유니트에 대응되어 원 유니트의 블록들의 최신 복사본을 가지는 유니트를 로그 유니트(log unit)라고 한다. 또한, 데이터가 기록되지 않은 유니트를 가용 유니트(free unit)라고 한다. 로그 유니트는 원 유니트와 같은 크기를 가질 수도 있고 여러 개의 유니트로 구성될 수도 있다. 하나의 로그 유니트에 한 개 이상의 원 유니트가 대응될 수 있다.
먼저, 도 2의 (a)에 도시된 LBN-to-LUN 사상 테이블에서 보는 바와 같이 논리적 블록(LBN) 1과 3은 논리적 유니트(LUN) 1에 사상되어 있고, 논리적 블록(LBN) 2와 4는 논리적 유니트(LUN) 5에 사상되어 있다.
그리고, 도 2의 (b)에 도시된 LUN-to-PUN 사상 테이블에서 볼 때 하나의 논리적 유니트에 대해 원 유니트와 여러 개의 로그 유니트들이 사상되어 있으며 PUN1은 원 유니트의 물리적 번호이고 PUN2에서 PUNn까지는 로그 유니트들의 물리적 번호이다. 예를 들어, LUN 1은 PUN이 2인 원 유니트와 PUN이 20인 로그 유니트에 사상되었고, LUN 5는 원 유니트의 PUN은 3이고 로그 유니트의 PUN은 20으로 사상되어 로그 유니트 20이 공유되고 있다. 또한, LUN 3이 사상되는 로그 유니트는 아직 할당되지 않았다. 따라서, LUN 3의 블록에 갱신 연산이 요청되면 로그 유니트가 할당되고 해당 물리적 유니트 번호가 사상 테이블에 기록된다.
또한, 각 유니트는 유니트 내 블록의 할당 상태를 관리하기 위한 블록 할당 맵을 가지게 되는데, 이와 같은 블록 할당 맵은 유니트 내의 특정 블록에 기록되거나, 각 블록의 여유 영역에 유니트에 속한 해당 블록에 대한 정보(상태, 논리적 블록 번호 등)가 기록된다. 블록은 가용 블록(free block), 유효 블록(valid block), 무효 블록(invalid block)으로 구분된다. 이때 가용 블록은 데이터가 기록되지 않은 블록이며, 유효 블록은 데이터가 기록된 블록이며, 무효 블록은 이전에 유효 블록이었다가 데이터가 갱신되어 더 이상 의미 없는 블록이다.
도 3은 본 발명에 따른 플래시 메모리의 제어 방법에서 원 유니트와 로그 유니트의 사상 관계에 대한 예를 설명하기 위한 도면으로써 도 2에 예시된 블록 사상 테이블을 사용하여 원 유니트와 대응되는 로그 유니트간의 관계를 설명한다.
먼저, 각 원 유니트는 로그 유니트를 2개까지 가질 수 있다고 가정한다. 또한, 각 블록의 여유 영역에 해당 블록의 할당 맵이 기록되었다고 가정하며 도시된 각 유니트에서는 각 블록에 기록된 블록 할당 맵을 나타내고 있다.
여기에 도시된 바와 같이 원 유니트 PUN2에서 첫 번째 블록에는 논리적 블록 1(LBN1)이 기록되어 있으며 두 번째 블록에는 논리적 블록 3(LBN3)이 기록되어 있다. 또, 원 유니트 PUN3에서 첫 번째 블록에는 논리적 블록 2(LBN2)가 기록되어 있으며 두 번째 블록에는 논리적 블록 4(LBN4)가 기록되어 있다.
원 유니트 PUN2의 논리적 블록 1과 3(LBN1, LBN3)은 갱신되어 무효화되었고 각각 로그 유니트 PUN20에 유효 블록이 기록되어 있다. 원 유니트 PUN3의 논리적 블록 2와 4(LBN2, LBN4)는 갱신되어 무효화되었고 각각 로그 유니트 PUN20과 로그 유니트 PUN 30에 기록되어 있다.
도 4는 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 읽기 연산에 대한 동작 흐름도이다.
먼저, 블록 사상 테이블을 사용하여 해당 데이터 블록이 속한 논리적 유니트 번호와 물리적 유니트 번호를 구하고(S11), 해당 원 유니트의 블록 할당 맵을 사용하여 해당 데이터 블록이 존재하는가를 검사한다(S12).
이때, 원 유니트 내에 해당 데이터 블록이 유효 상태로 존재하면(S14), 해당 데이터 블록에서 데이터를 읽고(S16), 해당 데이터 블록이 존재하지 않으면 에러 처리한다(S13).
그러나, 만약 해당 데이터 블록이 무효 상태인 경우에는 블록 사상 테이블에서 원 유니트에 대응되는 로그 유니트를 결정한다(S15). 그런다음 결정된 로그 유니트의 블록 할당 맵을 사용하여 해당 데이터 블록에 유효 블록이 존재하는가 검사한 후(S17), 유효 블록이 존재할 경우 유효 블록에서 데이터를 읽을 수 있도록 한다(S19). 그러나, 결정된 로그 유니트에 의한 해당 데이터 블록이 없거나 유효 블록이 아니면 에러 처리한다(S18).
도 5는 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 쓰기 연산에 대한 동작 흐름도이다.
먼저, 블록 사상 테이블을 사용하여 해당 데이터 블록이 속할 논리적 유니트 번호와 물리적 유니트 번호에 의해 원 유니트를 결정한다(S21). 그런다음 해당 원 유니트의 블록 할당 맵을 사용하여 해당 데이터 블록이 존재하는 가를 검사한다(S22).
이때 원 유니트 내에 해당 데이터 블록이 존재하지 않으면 원 유니트에서 가용 블록을 할당한 후 가용 블록에 데이터를 기록하고(S23), 블록 할당 맵에서 블록의 상태를 유효로 기록하고 해당 논리적 블록 번호를 기록한다(S25).
그러나, 단계 S22에서 해당 데이터 블록이 존재하면 원 유니트에 대응되는 로그 유니트를 결정한 후(S24), 로그 유니트에 해당 블록이 존재하는지를 검사한다(S26).
그래서, 해당 블록이 없는 경우에는 로그 유니트 내에 가용 블록이 있는가를 검사한다(S27). 그래서, 만약 가용 블록이 없다면 재생 연산을 수행한다(S28).
그런데, 만약 가용 블록이 있다면 가용 블록에 데이터를 기록하고(S29), 블록 할당 맵에서 새로 기록된 블록의 상태를 유효로 기록하고 해당 논리적 블록 번호를 기록한다(S30).
한편, 단계 S26에서 해당 블록이 있는 경우에는 단계 S27에서 S29까지 수행한 후, 블록 할당 맵에서 이전 블록을 무효로 기록하고 새로 기록된 블록의 상태를 유효로 기록하고 해당 논리적 블록 번호를 기록한다(S30).
도 6은 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 로그 유니트의 결정 과정에 대한 동작 흐름도이다.
먼저, 블록 사상 테이블을 사용하여 원 유니트에 대응되어 할당된 로그 유니트가 있는가를 검사한다(S31). 만약 할당된 로그 유니트가 있다면 가용 블록을 가진 로그 유니트를 탐색한다(S33). 이때 이와 같은 로그 유니트가 있다면 로그 유니트를 사용하도록 해준다(S34). 그러나, 로그 유니트가 없다면 다른 원 유니트에 할당되어 사용 중인 로그 유니트에서 가용 블록을 가진 로그 유니트가 있는지를 검사한다(S32). 이때, 이러한 로그 유니트가 있다면 이 로그 유니트를 사용하도록 할당하며(S36), 만약 없다면 가용 유니트가 충분하게 남아있는지를 검사한다(S35). 따라서, 충분하지 않다면 재생 연산을 수행한다(S37). 그리고 충분하다면 가용 유니트에서 로그 유니트를 새로 할당한다(S38).
그리고, 로그 유니트를 사용하도록 할당하거나(S36), 로그 유니트를 새로 할당한 후(S38)에 블록 사상 테이블을 갱신하여 해당 로그 유니트 정보를 기록한다(S39).
한편, 원 유니트에 대응되어 할당된 로그 유니트가 있는가를 검사하여(S31) 할당된 로그 유니트가 없다면, 다른 원 유니트에 할당되어 사용 중인 로그 유니트에서 가용 블록을 가진 로그 유니트가 있는지를 검사한다(S32). 이때, 이러한 로그 유니트가 있다면 이 로그 유니트를 사용하도록 할당하며(S36), 만약 없다면 가용 유니트가 충분하게 남아있는지를 검사한다(S35). 따라서, 충분하지 않다면 재생 연산을 수행한다(S37). 그리고 충분하다면 가용 유니트에서 로그 유니트를 새로 할당한다(S38).
그리고, 로그 유니트를 사용하도록 할당하거나(S36), 로그 유니트를 새로 할 당한 후(S38)에 블록 사상 테이블을 갱신하여 해당 로그 유니트 정보를 기록한다(S39).
재생 연산은 두 가지 경우에 수행된다. 첫째는, 쓰기 연산인 도 5에서 로그 유니트 내에 가용 블록이 없다면 재생 연산이 수행된다. 둘째는, 로그 유니트 결정인 도 6에서 다른 원 유니트에 할당되어 사용 중인 로그 유니트에서도 가용 블록을 가진 로그 유니트가 없고 가용 유니트가 충분하지 않다면 재생할 로그 유니트를 선택한 후 재생 연산을 수행한다.
도 7은 본 발명에 따른 플래시 메모리의 제어 방법에 있어서 재생 연산에 대한 동작 흐름도이다.
먼저, 가용 블록이 없는 로그 유니트에 대해서 대응되는 원 유니트의 개수만큼 가용 유니트가 있는가를 검사한다(S41). 예를 들어, 대응되는 원 유니트가 3개라면 가용 유니트도 3개가 필요하다. 만약 가용 유니트가 충분하지 않다면 에러 처리한다(S42). 그리고, 가용 유니트가 충분하다면 이를 할당하는데(S43) 할당된 가용 유니트들은 각각 원 유니트에 하나씩 대응된다. 원 유니트의 유효 블록과 로그 유니트의 유효 블록 중에서 원 유니트에 속한 유효 블록들을 원 유니트에 대응된 가용 유니트로 복사한다(S44). 그런다음, 새로운 원 유니트의 블록 할당 맵을 갱신하고(S45), 블록 사상 테이블에서 물리적 유니트 번호를 갱신한다(S46). 그런다음 로그 유니트와 각 원 유니트들을 삭제하여 가용 유니트로 변경한다(S47).
상기한 바와 같이 본 발명은 복수개의 블록으로 구성된 복수개의 유니트로 구성되어 읽기 및 쓰기 연산은 블록 단위로 수행되고 삭제 연산은 유니트 단위로 수행되는 플래시 메모리에서 원 유니트의 데이터 블록을 갱신하고자 할 때 갱신할 블록을 원 유니트에 대응되는 로그 유니트에 기록함에 있어서 원 유니트들이 복수개의 로그 유니트를 공유하도록 함으로써 유니트 내의 공간 사용률을 높여 가용 블록을 확보하기 위한 삭제 횟수를 줄일 수 있어 데이터 기록 및 갱신 효율을 높일 수 있는 이점이 있다.

Claims (4)

  1. 하나 이상의 블록에 데이터가 기록된 원 유니트내 블록들의 복사본이 저장되는 로그 유니트에 하나 이상의 원 유니트가 대응되도록 사상하여 로그 유니트를 결정하는 플래시 메모리의 제어 방법으로서,
    (a) 사상 정보를 통해 원 유니트에 대응되어 할당된 로그 유니트가 있는가 검사하는 단계;
    (b) 상기 (a)단계에서 검사한 결과, 할당된 로그 유니트가 있으면 가용 블록을 가진 로그 유니트를 탐색하고, 할당된 로그 유니트가 없으면 아래의 (c) 단계의 가용블록을 가진 로그 유니트가 없는 경우로 넘어가는 단계;
    (c) 상기 (b)단계에서 탐색한 결과, 가용 블록을 가진 로그 유니트가 있다면 해당 로그 유니트를 사용하도록 하고, 가용블록을 가진 로그 유니트가 없다면 다른 원 유니트에 할당되어 사용 중인 로그 유니트에서 가용 블록을 가진 로그 유니트가 있는가 검사하는 단계;
    (d) 상기 (c)단계에서 검사한 결과, 가용블록을 가진 로그 유니트가 있다면 해당 로그 유닛트를 사용하도록 할당하고, 가용블록을 가진 로그 유니트가 없다면 가용 유니트가 있는가를 검사하는 단계;
    (e) 상기 (d) 단계에서 검사한 결과, 가용 유니트가 없다면 재생연산을 수행하고, 가용 유니트가 있다면 이러한 가용 유니트에서 로그 유니트를 새로 할당하는 단계; 및
    (f) 상기 (d), (e) 단계에서 로그 유닛을 할당한 후에 사상정보에 해당 로그 유니트 정보를 기록하는 단계;를 포함하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  2. 삭제
  3. 제 1항에 있어서, 상기 사상 정보는 블록 사상 테이블인 것을 특징으로 하는 플래시 메모리의 제어 방법.
  4. 제 1항에 있어서, 상기 로그 유니트는 상기 원 유니트와 같은 크기로 구성되거나 여러 개의 유니트로 구성된 것을 특징으로 하는 플래시 메모리의 제어 방법.
KR1020040070322A 2004-09-03 2004-09-03 플래시 메모리의 제어 방법 KR100638638B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020040070322A KR100638638B1 (ko) 2004-09-03 2004-09-03 플래시 메모리의 제어 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020040070322A KR100638638B1 (ko) 2004-09-03 2004-09-03 플래시 메모리의 제어 방법

Publications (2)

Publication Number Publication Date
KR20060021548A KR20060021548A (ko) 2006-03-08
KR100638638B1 true KR100638638B1 (ko) 2006-10-26

Family

ID=37128353

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040070322A KR100638638B1 (ko) 2004-09-03 2004-09-03 플래시 메모리의 제어 방법

Country Status (1)

Country Link
KR (1) KR100638638B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292435B2 (en) 2008-11-21 2016-03-22 Samsung Electronics Co., Ltd. Memory device and method of operation

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100849221B1 (ko) * 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR100858241B1 (ko) 2006-10-25 2008-09-12 삼성전자주식회사 하이브리드 플래시 메모리 장치 및 그것의 가용 블록 할당방법
KR100885181B1 (ko) * 2007-02-06 2009-02-23 삼성전자주식회사 그룹 맵핑 동작을 수행하는 메모리 시스템 및 그것의어드레스 맵핑 방법
KR101300821B1 (ko) 2007-07-04 2013-08-26 삼성전자주식회사 비휘발성 메모리의 데이터 손실을 방지하기 위한 장치 및방법
KR101465789B1 (ko) 2008-01-24 2014-11-26 삼성전자주식회사 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292435B2 (en) 2008-11-21 2016-03-22 Samsung Electronics Co., Ltd. Memory device and method of operation

Also Published As

Publication number Publication date
KR20060021548A (ko) 2006-03-08

Similar Documents

Publication Publication Date Title
US8180955B2 (en) Computing systems and methods for managing flash memory device
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US7814265B2 (en) Single sector write operation in flash memory
KR100684942B1 (ko) 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
JP5295778B2 (ja) フラッシュメモリ管理方法
US7877569B2 (en) Reduction of fragmentation in nonvolatile memory using alternate address mapping
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
USRE45222E1 (en) Method of writing of writing to a flash memory including data blocks and log blocks, using a logical address having a block address portion and page identifying portion, a block address table and a page table
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
US20060020745A1 (en) Fat analysis for optimized sequential cluster management
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
KR100703680B1 (ko) 플래시 파일 시스템
TWI399642B (zh) 具區塊管理之非揮發性記憶體
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR100638638B1 (ko) 플래시 메모리의 제어 방법
KR100533683B1 (ko) 플래시 메모리의 데이터 관리 장치 및 방법
KR20050102779A (ko) Nand형 플래시 메모리 파일 시스템의 설계 방법

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20040903

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20060131

Patent event code: PE09021S01D

PG1501 Laying open of application
E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20060720

N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20060926

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20061019

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20061020

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
PR1001 Payment of annual fee

Payment date: 20091030

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20101019

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20111018

Start annual number: 6

End annual number: 6

FPAY Annual fee payment

Payment date: 20121016

Year of fee payment: 7

PR1001 Payment of annual fee

Payment date: 20121016

Start annual number: 7

End annual number: 7

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 8

PR1001 Payment of annual fee

Payment date: 20131001

Start annual number: 8

End annual number: 8

FPAY Annual fee payment

Payment date: 20141002

Year of fee payment: 9

PR1001 Payment of annual fee

Payment date: 20141002

Start annual number: 9

End annual number: 9

FPAY Annual fee payment

Payment date: 20151014

Year of fee payment: 10

PR1001 Payment of annual fee

Payment date: 20151014

Start annual number: 10

End annual number: 10

FPAY Annual fee payment

Payment date: 20160927

Year of fee payment: 11

PR1001 Payment of annual fee

Payment date: 20160927

Start annual number: 11

End annual number: 11

FPAY Annual fee payment

Payment date: 20181016

Year of fee payment: 13

PR1001 Payment of annual fee

Payment date: 20181016

Start annual number: 13

End annual number: 13

FPAY Annual fee payment

Payment date: 20191203

Year of fee payment: 14

PR1001 Payment of annual fee

Payment date: 20191203

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20201020

Start annual number: 15

End annual number: 15

PR1001 Payment of annual fee

Payment date: 20211014

Start annual number: 16

End annual number: 16

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20230522

PR0401 Registration of restoration

Patent event code: PR04011E01D

Patent event date: 20230522

Comment text: Registration of Restoration

PR1001 Payment of annual fee

Payment date: 20230522

Start annual number: 17

End annual number: 17

R401 Registration of restoration
PR1001 Payment of annual fee

Payment date: 20231019

Start annual number: 18

End annual number: 18

PC1801 Expiration of term

Termination date: 20250303

Termination category: Expiration of duration