KR101022001B1 - 플래시 메모리 시스템 및 플래시 메모리의 관리 방법 - Google Patents

플래시 메모리 시스템 및 플래시 메모리의 관리 방법 Download PDF

Info

Publication number
KR101022001B1
KR101022001B1 KR1020080124174A KR20080124174A KR101022001B1 KR 101022001 B1 KR101022001 B1 KR 101022001B1 KR 1020080124174 A KR1020080124174 A KR 1020080124174A KR 20080124174 A KR20080124174 A KR 20080124174A KR 101022001 B1 KR101022001 B1 KR 101022001B1
Authority
KR
South Korea
Prior art keywords
block
data
logical
page
address
Prior art date
Application number
KR1020080124174A
Other languages
English (en)
Other versions
KR20100065702A (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 KR1020080124174A priority Critical patent/KR101022001B1/ko
Priority to PCT/KR2009/000286 priority patent/WO2010067919A1/ko
Publication of KR20100065702A publication Critical patent/KR20100065702A/ko
Application granted granted Critical
Publication of KR101022001B1 publication Critical patent/KR101022001B1/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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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

플래시 메모리 시스템 및 플래시 메모리의 관리 방법{Flash memory system and method for managing flash memory}
본 발명은 플래시 메모리를 기반으로 하는 시스템 및 플래시 메모리를 관리하는 방법에 관한 것으로서, 특히 여러 개의 데이터 블록을 하나의 데이터 블록 집합으로 설정하고 데이터 블록 단위로 메모리를 관리함으로써 작은 파일의 쓰기가 빈번히 일어나는 환경에서 성능이 저하되지 않는 플래시 메모리 관리 방법에 관한 것이다.
플래시 메모리는 전기적으로 데이터를 지우거나 쓸 수 있는 비휘발성(non-volatile) 메모리로, 전원이 차단되어도 저장된 데이터는 손실되지 않는다.
통상적으로 플래시 메모리는 복수의 블록들로 나뉘어 관리되며, 각각의 블록은 복수의 페이지들을 포함한다. 플래시 메모리에서 쓰기(write)는 페이지 단위로 수행되고 지우기(erase)는 블록단위로 수행된다.
플래시 메모리에서 쓰기는 셀을 초기상태로 만든 후 수행된다. 따라서 이미 데이터가 쓰여 있는 영역에 대해 덮어쓰기(over-write)를 수행하기 위해서는, 덮어쓰기가 수행될 페이지는 쓰기 이전에 지우기가 이미 수행되어 있어야 한다.
한 블록에 여러 페이지가 쓰여 있고 그 중 한 페이지에 대해 덮어쓰기를 하는 다양한 방법들이 제안되어 있다. 한 가지 방법으로, 덮어쓰기를 하고자 하는 페이지 외의 나머지 쓰여 있는 페이지의 데이터를 임시 저장장치(플래시 메모리의 다른 블록 또는 별도의 저장장치)에 저장하고, 해당 블록에 대해 지우기를 수행하고, 덮어쓰기를 수행할 페이지에 대해 쓰기를 수행하고, 임시 저장장치에 저장된 데이터를 해당 페이지에 쓰기를 하여 복원하는 방법이 있다.
이 방법은 지우기와 쓰기의 실행 단위가 일치하지 않기 때문에 부득이하게 쓰기가 요청되지 않은 부분까지 함께 지워지고 지워진 부분은 다시 쓰기를 통해 복원되어야 하므로, 최악의 경우 데이터 하나의 쓰기 요청에 대해 하나의 지우기와 지워진 단위만큼의 쓰기를 필요로 하게 되어 쓰기 수행의 성능 저하되는 문제점이 있다.
또 다른 방법으로, 지우기가 이미 수행된 여분의 블록을 할당하고, 그 여분의 블록에 덮어쓰기를 수행할 페이지에 대한 쓰기를 수행하고, 나머지 쓰여 있는 페이지의 데이터를 그 여분의 블록에 복사하고, 기존의 블록을 여분의 블록으로 교체하고, 기존의 블록에 대해 지우기를 수행하는 방법이 있다.
이 방법은 쓰기 과정에서의 블록 교체에 따라 요청이 들어온 주소와 실제 물리적인 블록의 주소가 쓰기과정에서 변화되기 때문에 주소 변환을 하여야 한다. 이때 요청이 들어온 주소를 논리적 블록 주소(logical block address)라 하고, 물리적인 블록 주소를 물리적 블록 주소(physical block address)라 한다. 이 방법 또한 최악의 경우 데이터 하나의 쓰기 요청에 대해 하나의 지우기와 지워진 단위만큼의 쓰기를 필요로 하게 되어 쓰기 수행의 성능이 저하되는 문제점이 있다.
상술한 바와 같이, 플래시 메모리에서 쓰기 성능은 읽기 성능에 비해 현저하게 떨어지므로, 플래시 메모리 기반의 저장장치의 구현에 있어서 쓰기 성능 개선을 위한 여러 방식이 제안되고 있다.
한국등록특허 제389867호는 하나의 데이터 블록(data block)과 이에 대응되는 하나의 로그 블록(log block) 개념을 도입하여 쓰기 수행의 성능을 개선하였다. 하나의 데이터 블록에 포함되어 있는 페이지에 쓰기가 요청되었을 때 요청 데이터 블록에 대응되는 하나의 로그 블록에 쓰기를 수행하고, 해당 데이터블록에 쓰기가 다시 요청되면 대응하는 로그 블록의 비어 있는 페이지에 쓰기를 수행한다. 만일 로그 블록에 비어있는 페이지가 없으면, 하나의 비어 있는 블록을 자유블록(free block)을으로 할당하고, 해당 데이터블록과 로그 블록의 최신 데이터를 갖는 페이지들을 자유블록의 페이지에 모두 복사하고, 최신 데이터가 복사된 자유블록을 데이터블록화 하고, 데이터블록과 로그 블록에 대해 지우기를 수행하여 자유블록화 하는 병합(merge)과정을 수행한다. 이때 병합과정에서는 블록 내의 페이지 개수만큼의 쓰기와 두 번의 지우기가 수행된다.
이 방식에서는 플래시 메모리의 전체 블록들이 데이터 블록, 로그 블록, 자유블록으로 구분되고, 실제 최대 저장용량은 데이터블록의 총합이 되며, 로그 블록과 자유 블록은 쓰기 성능을 개선하기 위하여 사용되는 숨겨진 블록(hidden block)이 된다. 따라서 플래시 메모리의 물리적인 전체 용량 대비 실제 최대 용량의 가용성을 높이기 위해서는 데이터블록의 총 개수에 대비하여 로그 블록과 자유블록의 총 개수를 최소한으로 할당할 수밖에 없다.
그러나 이 방식에서는, 무작위 주소에 쓰기(random write)가 연속적으로 요청되면 자유블록이 로그블록화 되는 과정이 반복되어 결국 자유블록이 소진되어 더 이상 로그블록을 생성할 수 없는 상황이 발생한다. 이러한 상황을 피하기 위해서 비어 있는 페이지를 포함하는 로그 블록과 이에 대응되는 데이터블록을 병합하는 가비지 컬렉션(garbage collection)이 수행된다.
가비지 컬렉션 수행에 의한 병합에 관여하는 로그 블록은 비어있는 페이지를 포함하므로, 실제 쓰기 요청에 의한 쓰기와 추가로 발생하는 병합 과정에 소요되는 블록 내의 페이지 개수만큼의 쓰기와 두 번의 지우기 사이의 효율성에 주목할 필요가 있다. 즉 로그 블록에 비어있는 페이지가 많을수록 이를 병합하면 쓰기의 성능이 저하되는 사실을 알 수 있다.
특히 이 방식은 작은 크기의 무작위 쓰기가 연속적으로 요청되면 로그 블록의 비어 있는 페이지가 훨씬 더 많은 상태에서 병합이 발생하므로 쓰기 성능이 현격하게 저하되는 문제점이 있으며, 이에 따라 작은 파일 쓰기가 빈번하게 일어나는 인터넷 서버 시스템 등의 저장장치에서의 플래시 메모리 관리 방법으로는 적합하지 않은 문제점이 있다.
본 발명이 이루고자하는 기술적 과제는 여러 개의 데이터 블록을 하나의 데이터 블록 집합으로 설정하고 데이터 블록 단위로 메모리를 관리함으로써 작은 파일의 쓰기가 빈번히 일어나는 환경에서 성능이 저하되지 않는 플래시 메모리 시스템을 제공하는데 있다.
본 발명이 이루고자하는 다른 기술적 과제는 여러 개의 데이터 블록을 하나의 데이터 블록 집합으로 설정하고 데이터 블록 단위로 메모리를 관리함으로써 작은 파일의 쓰기가 빈번히 일어나는 환경에서 성능이 저하되지 않는 플래시 메모리 관리 방법을 제공하는데 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 플래시 메모리 시스템은 플래시 메모리, 프로세서, 프로그램 메모리, 및 데이터 메모리를 포함하며, 상기 플래시 메모리는, 일정한 개수의 데이터 블록들로 구성되는 복수의 데이터 블록 집합들 및 상기 데이터 블록 집합들 각각에 대응되고, 상기 데이터 블록 집합에 저장되는 데이터가 갱신되는 경우 갱신되는 데이터를 저장하는 복수의 순차 갱신 블록 및/또는 랜덤 갱신 블록들을 포함한다.
상기 순차 갱신 블록은 대응되는 데이터 블록 집합 내의 특정 데이터 블록에 대응되어 상기 특정 데이터 블록의 데이터가 갱신되는 경우 갱신되는 데이터를 저 장한다.
상기 데이터 블록 집합을 구성하는 상기 데이터 블록들은, 논리적 블록 번호와 논리적 블록 집합 주소를 포함하는 논리적 주소에 따라 상기 플래시 메모리의 물리적 블록들에 대응되며, 서로 떨어진 거리가 가장 멀어지도록 위치한다.
상기 다른 기술적 과제를 달성하기 위한 본 발명의 실시예에 따른 메모리 관리 방법은 소정의 논리적 주소에 대한 동작 요청을 받는 단계, 상기 논리적 주소에 포함된 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호를 추출하는 단계, 및 상기 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호에 대응하는 물리적 페이지에 대해 요청된 동작을 수행하는 단계를 포함한다.
한편, 상기 동작 요청은 읽기 동작 요청일 수 있으며, 이때 상기 요청된 동작을 수행하는 단계는, 주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하는 단계, 및 상기 데이터 블록 집합에 할당된 순차 갱신 블록에 존재하는 유효 페이지에 해당하는 물리적 페이지의 데이터를 읽는 단계를 포함한다. 또한 상기 요청된 동작을 수행하는 단계는 상기 순차 갱신 블록에 유효 페이지가 존재하지 않는 경우, 상기 데이터 블록 집합에 할당된 랜덤 갱신 블록에 존재하는 유효 페이지에 해당하는 물리적 페이지의 데이터를 읽는 단계를 더 포함할 수 있다. 또한 상기 요청된 동작을 수행하는 단계는 상기 랜덤 갱신 블록에 유효 페이지가 존재하지 않는 경우, 상기 주소 변환 테이블을 이용하여 논리적 블록 주소에 대응하는 데이터 블록을 선택하고, 상기 논리적 페이지 주소에 포함된 기준값을 이용하여 상기 선택된 데이터 블록의 대응하는 물리적 페이지의 데이터를 읽는 단계를 더 포함할 수 있다.
한편, 상기 동작 요청은 쓰기 요청일 수도 있으며, 이때 상기 요청은 상기 논리적 주소, 페이지 개수, 및 페이지에 대한 데이터를 포함하며, 상기 동작 요청을 수행하는 단계는, 상기 페이지 개수가 일정 크기 이상이면 상기 쓰기 요청에 대해 순차 페이지 쓰기 요청을 수행하는 단계, 및 상기 페이지 개수가 일정 크기보다 작으면 랜덤 쓰기 요청을 수행하는 단계를 포함한다.
또한, 상기 순차 페이지 쓰기 요청을 수행하는 단계는, 주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하고, 상기 선택된 데이터 블록 집합에 대해 할당된 순차 갱신 블록이 있는지 확인하는 단계, 할당된 순차 갱신 블록이 있으면 순차 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계, 및 할당된 순차 갱신 블록이 없으면, 자유 블록들로부터 순차 갱신 블록을 할당한 후 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계를 포함한다.
또한 상기 랜덤 페이지 쓰기 요청을 수행하는 단계는, 주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하고, 상기 선택된 데이터 블록 집합에 대해 할당된 랜덤 갱신 블록이 있는지 확인하는 단계, 할당된 랜덤 갱신 블록이 있으면 랜덤 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계, 및 할당된 랜덤 갱신 블록이 없으면, 자유 블록들로부터 순차 갱신 블록을 할당한 후 할당된 랜덤 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계를 포함한다.
상술한 바와 같이 본 발명의 실시예에 따른 메모리 관리 방법은 여러 개의 데이터 블록들이 하나 또는 두 개의 갱신 블록에 대응할 수 있으므로, 특히 작은 크기의 랜덤 쓰기가 빈번하게 요청되어도 소량의 갱신 블록들이 생성되어 자유 블록이 고갈될 확률이 감소하고 자유 블록의 고갈로 인하여 야기되는 블록 병합이 발생하는 확률도 감소하여 랜덤 쓰기의 성능이 개선되는 장점이 있다.
한편 일정한 시간 동안 다수의 쓰기 요청들의 논리적 주소들은 일반적으로 지역성(locality)을 갖는다. 즉 일정한 시간 동안 쓰기 요청은 특정한 영역의 주소에만 접근(access)하는 특성을 갖는다. 이런 개념은 일반적으로 사용되는 캐쉬 메모리 (cash memory)에도 적용되어 그 효과가 입증된 바 있다. 본 발명에서는 데이터 블록 집합을 이루는 각 데이터 블록들은 논리적 주소에 기초하여 서로 최대한 멀리 떨어져 있으므로, 그 데이터 블록들 사이의 지역성은 가장 낮으며, 이에 따라 일정한 시간 동안 랜덤 갱신 블록에 연관된 데이터 블록들은 한정된다. 따라서 본 발명의 실시예에 따른 메모리 관리 방법은 랜덤 갱신 블록의 모든 페이지들에 데이터가 쓰여 있을 때, 랜덤 갱신 블록과 이에 대응되는 데이터 블록들이 한정되어 완전 병합에 소요되는 시간을 줄일 수 있는 장점이 있다.
또한 데이터 블록 집합을 이루는 각 데이터 블록들 사이의 지역성이 가장 낮으므로, 일정한 시간 동안 순차 쓰기 요청의 논리 주소에 대응하는 데이터 블록이 변화될 확률이 감소하여, 순차 갱신 블록에 대응하는 데이터 블록의 변화에 의한 부분 병합이 일어날 확률도 감소한다. 따라서 본 발명의 실시예에 따른 메모리 관리 방법은 부분 병합의 빈도수도 감소하여 순차 쓰기의 성능도 개선되는 장점이 있다.
본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.
이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다. 이하에서는 본 발명에 따른 메모리 관리 방법이 이용되는 메모리 기반 시스템에 대해 먼저 설명한 후, 메모리 기반 시스템에서 이루어지는 메모리 관리 방법, 즉 메모리에 데이터를 쓰고 읽는 방법에 대해 설명한다.
도 1은 본 발명의 실시예에 따른 메모리 관리 방법이 이용되는 플래시 메모리 기반 시스템의 블록도이다. 시스템(100)은 플래시 메모리(110), 프로세서(130), 프로그램 메모리(150), 및 데이터 메모리(170)를 포함한다. 프로세서(130)는 프로그램 메모리(150)에 저장되어 있는 응용 프로그램 코드와 결합하여 플래시 메모리 관리에 따른 읽기/쓰기 요청을 수행한다. 데이터 메모리(170)는 프로그램 관련 데이터 및 플래시 메모리 관리에 따른 읽기/쓰기 요청에 따른 데이터를 저장한다.
도 2는 도 1의 플래시 메모리에 대한 용도에 따른 예시도이다.
플래시 메모리에는 복수의 데이터 블록들, 일부의 데이터 블록에 대응되는 복수의 갱신 블록들, 복수의 자유 블록들, 그리고 복수의 메타 블록들을 포함한다. 데이터 블록을 구성하는 모든 페이지들은 논리적 주소와 일대일 대응되어 데이터를 저장한다. 즉 데이터 블록들은 데이터 저장을 위한 기본 블록들로서 총 개수는 변하지 않는다.
갱신 블록들은 데이터 블록의 수정을 위해 사용되는 블록들로서, 자유 블록들로부터 할당된다. 따라서 갱신 블록의 전체 개수와 자유 블록의 총 개수는 변할 수 있다. 자유 블록들은 갱신 블록 할당 과정과 병합 과정에 사용되어 갱신 블록 또는 데이터 블록으로 전이될 수 있다. 반면 병합과정에서 데이터 블록 또는 갱신 블록들이 자유 블록들로 생성될 수도 있다. 한편, 복수의 메타 블록들은 주소 변환 테이블용 블록, 자유 블록 리스트용 블록 등을 포함한다.
도 3은 본 발명의 논리적 블록들, 물리적 블록들과 데이터 블록 집합의 관계를 도시한다.
데이터 블록 집합(data block set)은 일정한 개수의 데이터 블록들로 구성된다. 본 발명에서 각 데이터 블록들은 논리적 주소에 기초하여 서로 최대한 멀리 떨어져 있는 것이 바람직하다. 도 3의 예에서는, 데이터 블록 집합에 B 개의 데이터 블록이 포함되어 있으며, 데이터 블록들 사이는 S 개의 블록 단위의 논리적 주소만큼 서로 떨어져 있다.
하나의 데이터 블록 집합은 하나의 랜덤(random) 갱신 블록과 하나의 순차(sequential) 갱신 블록, 오직 하나의 랜덤 갱신 블록, 또는 오직 하나의 순차 갱신 블록에 대응될 수 있다. 순차 갱신 블록은 이에 대응하는 데이터 블록 집합에 있는 오직 하나의 데이터 블록에 대응되며, 랜덤 갱신 블록은 이에 대응하는 데이터 블록 집합에 있는 모든 데이터 블록들과 대응될 수 있다.
도 4는 논리적 주소와 물리적 주소의 주소 변환 테이블의 예시도이다. 본 발명에서는 플래시 메모리의 소정의 블록들을 이용하여 주소 변환 테이블을 구성하는 것이 바람직하다. 또 본 발명에서는, 주소 변환 테이블에 사용되는 블록들의 하나의 페이지에 데이터 블록 집합에 포함되는 데이터 블록들과 이에 대응하는 갱신 블록 집합이 포함하는 순차 갱신 블록과 랜덤 갱신 블록의 정보 리스트를 저장함으로써, 한 번의 페이지 쓰기로 주소 변환 테이블을 갱신할 수 있도록 하는 것이 바람직하다.
데이터 블록의 정보는 물리적 블록 주소와 기준값을 포함하고, 순차 갱신 블록의 정보는 물리적 블록 주소, 기준값과 대응하는 데이터 블록의 블록 번호를 포함하고, 랜덤 갱신 블록의 정보는 물리적 블록 주소를 포함한다.
도 5에서 플래시 메모리의 하나의 블록은 P 개의 페이지를 갖는다. 기준값 0인 데이터 블록에서는 물리적 페이지 번호가 논리적 페이지 번호와 일치한다. 한편, 기준값 4인 데이터 블록에서는 물리적 페이지 번호는 논리적 페이지 번호와 4 만큼 차이가 난다. 이 경우 논리적 페이지 번호 0 인 데이터는 물리적 페이지 번호 P-4 에 쓰여 있다. 논리적 페이지 번호는 기준값을 시작으로 순차적으로 증가하므로, 본 발명에서는 읽기나 쓰기 요청이 들어오면 기준값을 이용하여 논리적 페이지 주소의 데이터에 쉽게 접근할 수 있다.
도 6은 요청된 논리적 주소에서 논리적 블록 번호, 논리적 블록 집합 주소, 논리적 페이지 번호의 구성에 대한 예시도이다. 도 6에서 논리적 주소가 이진수 총 19비트로 이루어져 있을 때, 논리적 블록 집합 주소는 논리적 주소의 비트 15에서 6까지 할당되고, 논리적 블록 번호는 논리 주소의 비트 18에서 16까지 할당되고, 논리적 페이지 번호는 논리적 주소의 비트 5에서 0까지 할당되다.
도 6의 예에서, 플래시 메모리의 블록당 페이지 개수는 64개이며, 데이터 블록 집합은 1024개이며, 하나의 데이터 블록 집합에 최대 8개의 데이터 블록을 포함하고, 하나의 데이터 블록 집합에 포함하는 데이터 블록들 각각은 1024 블록 단위만큼 논리 주소가 서로 떨어져 있다.
이상에서 본 발명에 따른 메모리 관리 방법이 이용되는 메모리 기반 시스템에 대해 설명하였다. 이하에서는 도 7과 도 8을 참조하여 본 발명에 따른 메모리 관리 방법, 즉 메모리에 저장된 데이터를 읽는 방법과 메모리에 데이터를 쓰는 방법에 대해 설명한다.
앞서 살펴본 바와 같이, 본 발명에서는 데이터 블록 집합에 최대 두 개의 갱신 블록을 대응시키는 방법을 이용한다. 데이터 블록 집합을 구성하는 데이터 블록들에 대응하는 논리적 블록 주소들은 서로 가장 멀리 떨어져 있도록 하는 것이 바람직하다. 한편 갱신 블록은, 하나의 랜덤 갱신 블록과 하나의 순차 갱신 블록, 오직 하나의 랜덤 갱신 블록, 또는 오직 하나의 순차 갱신 블록으로 구성될 수 있다.
랜덤 갱신 블록의 페이지에 저장된 데이터는 이에 대응하는 데이터 블록 집합의 특정 데이터 블록의 페이지에 저장되는 데이터에 대응되고, 랜덤 갱신 블록은 이에 대응하는 데이터 블록 집합의 여러 데이터 블록의 데이터를 저장한다. 반면 순차 갱신 블록은 이에 대응하는 데이터 블록 집합의 특정한 하나의 데이터 블록의 데이터만을 저장한다.
하나의 데이터 블록 집합에 대해 하나의 랜덤 갱신 블록과 하나의 순차 갱신 블록이 대응되는 경우, 순차 갱신 블록에 쓰여 있는 페이지의 데이터가 최신 것이며, 순차 갱신 블록 내에 존재하지 않으면서 랜덤 갱신 블록 내에 쓰여 있는 페이지의 데이터가 최신 것이며, 순차 갱신 블록과 랜덤 갱신 블록 내에 존재하지 않으면서 데이터 블록에 쓰여 있는 페이지의 데이터가 최신 것이다.
논리적 주소의 최신 데이터가 기록된 페이지를 유효 페이지(valid page)라 하고, 같은 논리적 주소의 데이터가 기록되더라도 최신 데이터가 아닌 데이터가 기록된 페이지를 무효(invalid page) 페이지라 한다.
본 발명에서는 논리적 주소의 최소 단위를 플래시 메모리의 페이지 단위로 정의한다. 즉 논리적 주소는 논리적 페이지 주소와 같게 된다. 논리적 페이지 주소는 플래시 메모리에서 모든 데이터 블록들의 페이지에 대응한다.
그리고 논리적 블록 주소는 논리적 주소의 상위 부분으로 모든 데이터 블록에 대응하고, 논리적 블록 집합 주소는 논리적 주소의 상위 부분으로 모든 데이터 블록 집합에 대응한다. 따라서 논리적 주소는 데이터 블록 집합에 대응되는 논리적 주소의 블록 집합 번호(number), 하나의 데이터 블록 집합의 데이터 블록에 대응되는 논리적 주소의 블록 번호, 하나의 데이터 블록의 페이지에 대응되는 논리적 주소의 페이지 번호로 구성된다.
하나의 데이터 블록이 포함하는 페이지들의 각각의 물리적 페이지 번호에 대하여 각각 논리적 페이지 번호는 일정한 기준값만큼 차이를 갖고, 각각의 논리적 페이지 번호는 물리적 페이지에 대하여 연속된 번호로 배열되며, 마지막 논리적 페이지 번호 다음에 첫 번째 논리적 페이지 번호로 연결되는 순환(rollover)구조를 갖는다.
예를 들면, 첫 번째 논리적 페이지 번호가 첫 번째 물리적 페이지에 대응되면 기준값 0을 갖는 데이터 블록이라 정의하고, 네 번째 논리적 페이지 번호가 첫 번째 물리적 페이지에 대응되면 기준값 4를 갖는 데이터 블록이라 정의한다.
도 7은 본 발명의 실시예에 따라 주소 변환 테이블을 이용하여 플래시 메모리의 페이지에 저장된 데이터를 읽는 방법에 대한 흐름도이다.
플레시 메모리의 페이지에 대한 논리적 주소에 읽기 요청을 받는 경우, 도 5에 도시된 구조를 참조하여, 요청된 논리적 주소로부터 논리적 블록 집합 주소, 논리적 블록 번호, 그리고 논리적 페이지 번호를 추출한다(S701). 그 후 도 4에 도시된 주소 변환 테이블을 이용하여, 논리적 블록 집합 주소에 해당하는 데이터 블록 집합과 논리적 블록 번호에 해당하는 데이터 블록 집합의 데이터 블록을 선택하고, 물리적 페이지에 접근한다(S703). 물리적 페이지에 접근하는 구체적인 방법은 다음과 같다.
먼저 논리적 블록 번호와 순차 갱신 블록의 블록 번호가 일치하는지 확인한다(S705). 번호가 일치하면 논리적 블록 번호에 대응하는 순차 갱신 블록이 있는 것이므로, 논리적 페이지 기준값을 이용하여 논리적 페이지 번호에 대응하는 물리 적 페이지가 존재하는 지를 확인한다(S707). 물리적 페이지가 존재한다면 최신의 데이터가 순차 논리 블록에 존재하는 것이므로 순차 갱신 블록의 해당 페이지에 저장된 데이터를 읽는다(S711).
논리적 블록 번호와 순차 갱신 블록의 블록 번호가 일치하지 않으면, 최신의 데이터가 순차 갱신 블록에 존재하지 않는 것이므로, 랜덤 갱신 블록을 검색한다. 즉 랜덤 갱신 블록의 논리 블록 번호의 논리 페이지 번호와 일치하는 물리적 페이지가 있는지 확인한다(S709). 이 경우, 요청된 논리적 블록 번호와 논리적 페이지 번호에 일치하는 랜덤 블록의 여분의 페이지에 기록된 논리적 블록 번호와 논리적 페이지 번호를 검색한다. 랜덤 갱신 블록은 물리적 페이지에 순차적으로 쓰기를 수행하므로 논리적 주소의 검색은 물리적 페이지의 역순으로 수행한다.
S709 단계에서 일치하는 물리적 페이지가 있으면 최신의 데이터가 랜덤 갱신 블록에 존재하는 것이므로, 랜덤 갱신 블록의 해당 페이지에 저장된 데이터를 읽는다. (S713). 일치하는 물리적 페이지가 없으면 최신의 데이터가 순차 갱신 블록과 랜덤 갱신 블록에 존재하지 않는 것이므로, 데이터 블록의 해당 페이지에 저장된 데이터를 읽는다(S715). 이 경우, 데이터 블록에서 논리적 페이지 번호의 기준값을 이용하여 바로 해당하는 페이지의 데이터를 읽을 수 있다.
도 8은 본 발명의 실시예에 따라 주소 변환 테이블을 이용하여 플래시 메모리의 페이지에 데이터를 쓰는 방법에 대한 흐름도이다.
쓰기 명령에 의해 쓰기가 요청되는 경우, 이 요청에는 쓰기를 시작하는 논리적 주소, 페이지 개수, 및 페이지들의 데이터를 포함한다. 그리고 쓰기 요청은 요 청된 페이지 개수만큼의 페이지 쓰기 요청으로 세분할 수 있다.
도 8을 참조하면, 소정의 논리적 주소에 대한 쓰기 요청을 받는 경우, 도 5에 도시된 구조를 참조하여, 요청된 논리적 주소로부터 논리적 블록 집합 주소, 논리적 블록 번호, 그리고 논리적 페이지 번호를 추출한다(S801). 그 후 도 4에 도시된 주소 변환 테이블을 이용하여, 논리적 블록 집합 주소에 해당하는 데이터 블록 집합과 논리적 블록 번호에 해당하는 데이터 블록 집합의 데이터 블록을 선택하고, 물리적 페이지에 접근한다(S803). 물리적 페이지에 접근하는 구체적인 방법은 다음과 같다.
본 발명의 실시예에 따른 메모리 관리 방법에서는 요청된 페이지 개수가 일정 크기 이상이면 순차 페이지 쓰기를 수행한다. 따라서 쓰기를 수행하기 전, 먼저 요청된 페이지 개수가 일정 크기 이상인지 확인한다(S805). 요청된 페이지 개수가 일정 크기 이상이면 순차 페이지 쓰기를 수행한다(S807). 한편 요청된 페이지 개수가 일정 크기 미만이지만 순차 갱신 블록에 이미 쓰여 있는 마지막 페이지의 논리적 페이지 번호에 대하여 연속하는 경우에도 순차 페이지 쓰기를 수행한다(S807).
반면, 요청된 페이지 개수가 일정 크기 미만이고 순차 갱신 블록에 이미 쓰여 있는 마지막 페이지의 논리적 페이지 번호에 대하여 연속하지 않으면, 랜덤 페이지 쓰기를 수행한다(S809).
한편, 순차 페이지 쓰기 요청에 대하여 요청한 논리적 블록 번호가 순차 갱신 블록의 블록 번호와 일치하고, 그 요청의 논리적 페이지 번호가 순차 갱신 블록에 이미 쓰여 있는 마지막 페이지의 논리적 번호에 연속하면, 순차 페이지 쓰기 조 건을 만족한다. 반면, 랜덤 페이지 쓰기 요청에 대하여 요청한 논리적 블록 번호가 순차 갱신 블록의 블록 번호와 다르거나, 요청한 논리적 페이지 번호가 순차 갱신 블록에 쓰여 있는 논리적 페이지 번호와 일치하지 않으면, 랜덤 페이지 쓰기 조건을 만족한다.
이하에서는 도 9 및 도 10을 참조하여 순차 페이지 쓰기와 랜덤 페이지 쓰기 과정에 대해 설명한다.
도 9는 도 8의 순차 페이지 쓰기 과정에 대한 흐름도이다.
통상적으로 데이터 블록 집합에 대해 쓰기 요청을 받는 경우, 하나의 로그 블록을 추가로 할당하고 추가로 할당된 로그 블록에 쓰기를 수행하게 된다. 쓰기 요청을 받은 데이터 블록 집합에 대해 다시 쓰기 요청을 받는 경우, 로그 블록의 비어 있는 페이지, 즉 자유 페이지(free page)에 쓰기를 수행한다.
도 8에서 쓰기 요청이 순차 페이지 쓰기 요청이면, 먼저 순차 갱신 블록이 있는가 확인한다(S901). 순차 갱신 블록이 없는 경우는 순차 갱신 블록을 포함하지 않는 데이터 블록 집합에 대해 순차 페이지 쓰기 요청을 받는 경우이므로, 순차 갱신 블록 할당이 가능한가 확인한다(S905). 이때 순차 블록으로 할당할 자유 블록들이 있다면, 자유 블록들로부터 하나의 순차 갱신 블록을 할당하고(S915), 할당된 순차 갱신 블록의 첫 번째 물리적 페이지, 즉 첫 번째 자유 페이지부터 요청된 페이지 쓰기를 수행한다(S917).
한편, 순차 갱신 블록이 있다면, 순차 갱신 블록에 자유 페이지가 있는지 확인한다(S903). 순차 갱신 블록에 자유 페이지가 있으면, 그 논리적 주소가 앞서 설 명한 순차 페이지 쓰기 조건을 만족하는지 확인한다(S907). 이때 순차 쓰기 조건을 만족하면 순차 갱신 블록에 쓰여 있는 마지막 페이지에 이어서, 즉 첫 번재 자유 페이지에 대해 쓰기를 수행한다.
한편, S903 단계에서 자유 페이지가 없으면, 순차 갱신 블록을 이에 대응하는 데이터 블록으로 전이하고 데이터 블록에 대해 지우기를 수행하는 교환 병합 (switch merge)을 수행한다(S909). 교환 병합이 수행된 후에는 자유 블록들 중 하나를 순차 갱신 블록으로 할당하고(S915), 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 쓰기를 수행한다(S917).
한편, S907 단계에서 순차 페이지 쓰기 조건을 만족하지 못하는 경우, 순차 갱신 블록의 자유 페이지에 대응하는 데이터 블록의 페이지들을 순차 갱신 블록에 복사한 후 순차 갱신 블록을 대응되는 데이터 블록으로 전이하고, 그 후 데이터 블록에 대해 지우기를 수행하는 부분 병합(partial merge)을 수행한다(S913). 부분 병합이 수행된 후에는 자유 블록들 중 하나를 순차 갱신 블록으로 할당하고(S915), 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 쓰기를 수행한다(S917).
한편, 순차 갱신 블록과 랜덤 갱신 블록 사이에 논리적 블록 번호와 논리적 페이지 번호가 일치하는 페이지들이 존재하면, 순차 갱신 블록의 일치하는 페이지들을 랜덤 갱신 블록에 복사한 후 병합을 수행한다. 병합이 수행된 후에는 자유 블록들 중 하나를 순차 갱신 블록으로 할당하고(S915), 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 쓰기를 수행한다(S917).
한편, S905 단계에서 순차 갱신 블록 할당이 불가능한 경우는, 할당할 자유 블록이 소진되어 할당할 수 없는 경우이므로, 기존의 갱신 블록을 병합하는 가비지 컬렉션(garbage collection)을 수행한다(S911). 즉 할당할 자유 블록이 소진되어 할당할 수 없으면, 이미 존재하는 순차 갱신 블록들 중에서 쓰여 있는 페이지가 많은 순서대로 부분 병합을 수행한다. 그 후 여기서 발생하는 자유 블록을 순차 갱신 블록으로 할당하고(S915). 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 쓰기를 수행한다(S917).
한편, 할당할 자유 블록이 소진되어 할당할 수 없고 존재하는 순차 갱신 블록도 없으면, 랜덤 갱신 블록들 중에서 쓰여 있는 페이지들이 연관된 데이터 블록들이 적고 또 그 중에서 쓰여 있는 페이지들이 많은 순서대로 완전 병합을 수행한다. 완전 병합이 수행된 후에는 자유 블록들 중 하나를 순차 갱신 블록으로 할당하고(S915), 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 쓰기를 수행한다(S917).
도 10은 도 8의 랜덤 페이지 쓰기 과정에 대한 흐름도이다. 도 8에서 쓰기 요청이 랜덤 페이지 쓰기 요청이면, 먼저 랜덤 갱신 블록이 있는가 확인한다(S1001). 랜덤 갱신 블록이 없는 경우는 랜덤 갱신 블록을 포함하지 않는 데이터 블록 집합에 대해 랜덤 페이지 쓰기 요청을 받는 경우이므로, 랜덤 갱신 블록 할당이 가능한가 확인한다(S1005). 이때 랜덤 갱신 블록으로 할당할 자유 블록들이 있다면, 자유 블록들로부터 하나의 랜덤 갱신 블록을 할당하고(S1015), 그 논리적 주소가 앞서 설명한 랜덤 페이지 쓰기 조건을 만족하는지 확인한다(S1007).
한편, 랜덤 갱신 블록이 있다면, 랜덤 갱신 블록에 자유 페이지가 있는지 확 인한다(S1003). 랜덤 갱신 블록에 자유 페이지가 있으면, 그 논리적 주소가 앞서 설명한 랜덤 페이지 쓰기 조건을 만족하는지 확인한다(S1007). 이때 랜덤 페이지 쓰기 조건을 만족하면 랜덤 갱신 블록에 쓰여 있는 마지막 페이지에 이어서, 즉 첫 번째 자유 페이지에 대해 쓰기를 수행한다.
한편, S1003 단계에서 자유 페이지가 없으면, 랜덤 갱신 블록의 페이지의 논리적 블록 번호와 대응하는 다수의 데이터 블록에 대하여 대응하는 데이터 블록 개수만큼의 자유 블록을 할당하고, 랜덤 갱신 블록의 최신 페이지와 나머지 데이터 블록의 페이지들을 논리적 블록 번호별로 각각의 자유 블록에 복사하여 새로운 데이터 블록들을 생성하고, 이전의 데이터 블록과 랜덤 갱신 블록의 지우기를 수행하는 완전 병합(full merge)을 수행한다(S1009). 완전 병합을 수행한 후 자유블록들 중 하나를 랜덤 갱신 블록으로 할당하고(S1015), 그 논리적 주소가 앞서 설명한 랜덤 페이지 쓰기 조건을 만족하는지 확인한다(S1007).
한편, S1007 단계에서 랜덤 페이지 쓰기 조건을 만족하지 못하는 경우, 순차 갱신 블록의 자유 페이지에 대응하는 데이터 블록의 페이지들을 순차 갱신 블록에 복사한 후 순차 갱신 블록을 대응하는 데이터 블록으로 전이하고, 그 후 데이터 블록에 대해 지우기를 수행하는 부분 병합(partial merge)을 수행한다(S1013). 부분병합과정에서 순차 갱신 블록과 랜덤 갱신 블록 사이에 논리적 블록 번호와 논리적 페이지 번호가 일치하는 페이지들이 존재하면, 순차 갱신 블록의 일치하는 페이지들을 랜덤 갱신 블록에 복사한 후 병합을 수행한다.
한편, S1005 단계에서 랜덤 갱신 블록 할당이 불가능한 경우는, 할당할 자유 블록이 소진되어 할당할 수 없는 경우이므로, 기존의 갱신 블록을 병합하는 가비지 컬렉션(garbage collection)을 수행한다(S1011). 즉 할당할 자유 블록이 소진되어 할당할 수 없으면, 이미 존재하는 순차 갱신 블록들 중에서 쓰여 있는 페이지가 많은 순서대로 부분 병합을 수행한다.
한편, 할당할 자유 블록이 소진되어 할당할 수 없고 존재하는 순차 갱신 블록도 없으면, 랜덤 갱신 블록들 중에서 쓰여 있는 페이지들이 연관된 데이터 블록들이 적고 또 그 중에서 쓰여 있는 페이지들이 많은 순서대로 완전 병합을 수행한다. 가비지 컬렉션이 수행된 후에는 자유 블록들 중 하나를 랜덤 갱신 블록으로 할당하고(S1015), 그 논리적 주소가 앞서 설명한 랜덤 페이지 쓰기 조건을 만족하는지 확인한다(S1007).
도 7의 읽기 과정에서, 랜덤 갱신 블록의 쓰여 있는 페이지 중 동일한 논리적 블록 번호와 논리적 페이지 번호가 다수 개가 존재할 때 물리적 페이지 번호가 가장 큰 페이지가 논리적 주소의 최신의 데이터이다. 한편, 순차 갱신 블록에 유효 페이지가 없으면, 랜덤 갱신 블록의 최신 데이터의 페이지가 유효 페이지이다.
한편, 본 발명에서 플래시 메모리의 페이지에 데이터 영역(data area)과 여분 영역(spare area)이 구비되어 있다면, 랜덤 갱신 블록의 페이지에 쓰기를 수행할 때 여분의 영역에 논리적 블록 번호와 논리적 페이지 번호를 기록하는 것이 바람직하다. 이때 여분 영역에 기록된 논리적 블록 번호와 논리적 페이지 번호는 해당하는 페이지를 검색하는 정보로 이용된다.
또한, 본 발명에서 도 8 내지 도 10의 쓰기 과정 중 논리적 블록 주소에 대 하여 이에 대응하는 물리적 블록 주소가 변화될 때에는 주소 변환 정보를 갱신(update)하도록 하는 것이 바람직하다. 이를 위해 플래시 메모리에 일정 블록을 할당하여 블록의 동일한 페이지에 데이터 블록 집합에 포함되는 데이터 블록들과 이에 대응하는 데이터 블록 집합이 포함하는 순차 갱신 블록과 랜덤 갱신 블록의 정보 리스트를 기록하는 것이 바람직하다.
또한 본 발명에서, 데이터 블록의 정보는 물리적 블록 주소와 기준값을 포함하고, 순차 갱신 블록의 정보는 물리적 블록 주소, 기준 값과 대응하는 데이터 블록의 블록 번호(block number)를 포함하고, 랜덤 갱신 블록의 정보는 물리적 블록 주소를 포함하는 것이 바람직하다.
상술한 바와 같이 본 발명의 실시예에 따른 메모리 관리 방법에서 읽기 또는 쓰기 요청이 들어오면, 요청된 논리적 주소에서 논리적 블록 집합 주소, 논리적 블록 번호와 논리적 페이지 번호를 추출하고, 주소 변환 테이블을 참조하여 필요한 수행을 완료하는 것이 바람직하다.
이상에서와 같이 도면과 명세서에서 최적 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로 본 기술분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 간단한 설명이 제공된다.
도 1은 본 발명의 실시예에 따른 메모리 관리 방법이 이용되는 플래시 메모리 기반 시스템의 블록도이다.
도 2는 도 1의 플래시 메모리에 대한 용도에 따른 예시도이다.
도 3은 본 발명의 논리적 블록들, 물리적 블록들과 데이터 블록 집합의 관계를 도시한다.
도 4는 논리적 주소와 물리적 주소의 주소 변환 테이블의 예시도이다.
도 5는 하나의 데이터 블록의 물리적 페이지 번호에 대한 논리적 페이지 번호의 예시도이다.
도 6은 요청된 논리적 주소에서 논리적 블록 번호, 논리적 블록 집합 주소, 논리적 페이지 번호의 구성에 대한 예시도이다.
도 7은 본 발명의 실시예에 따라 주소 변환 테이블을 이용하여 플래시 메모리의 페이지에 저장된 데이터를 읽는 방법에 대한 흐름도이다.
도 8은 본 발명의 실시예에 따라 주소 변환 테이블을 이용하여 플래시 메모리의 페이지에 데이터를 쓰는 방법에 대한 흐름도이다.
도 9는 도 8의 순차 페이지 쓰기 과정에 대한 흐름도이다.
도 10은 도 8의 랜덤 페이지 쓰기 과정에 대한 흐름도이다.

Claims (12)

  1. 플래시 메모리가 소정의 논리적 주소에 대한 동작 요청을 받는 단계;
    상기 논리적 주소에 포함된 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호를 추출하는 단계; 및
    상기 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호에 대응하는 물리적 페이지에 대해 요청된 동작을 수행하는 단계를 포함하며,
    상기 동작 요청은 읽기 동작 요청이고,
    상기 요청된 동작을 수행하는 단계는,
    주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하는 단계; 및
    상기 데이터 블록 집합에 할당된 순차 갱신 블록에 존재하는 유효 페이지에 해당하는 물리적 페이지의 데이터를 읽는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  2. 삭제
  3. 삭제
  4. 제 1 항에 있어서, 상기 요청된 동작을 수행하는 단계는,
    상기 순차 갱신 블록에 유효 페이지가 존재하지 않는 경우, 상기 데이터 블록 집합에 할당된 랜덤 갱신 블록에 존재하는 유효 페이지에 해당하는 물리적 페이지의 데이터를 읽는 단계를 더 포함하는 것을 특징으로 메모리 관리 방법.
  5. 제 4 항에 있어서, 상기 요청된 동작을 수행하는 단계는,
    상기 랜덤 갱신 블록에 유효 페이지가 존재하지 않는 경우, 상기 주소 변환 테이블을 이용하여 논리적 블록 주소에 대응하는 데이터 블록을 선택하고, 상기 논리적 페이지 주소에 포함된 기준값을 이용하여 상기 선택된 데이터 블록의 대응하는 물리적 페이지의 데이터를 읽는 단계를 더 포함하는 것을 특징으로 메모리 관리 방법.
  6. 플래시 메모리가 소정의 논리적 주소에 대한 동작 요청을 받는 단계;
    상기 논리적 주소에 포함된 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호를 추출하는 단계; 및
    상기 논리적 블록 번호, 논리적 블록 집합 주소, 및 논리적 페이지 번호에 대응하는 물리적 페이지에 대해 요청된 동작을 수행하는 단계를 포함하며,
    상기 동작 요청은 쓰기 요청이고,
    상기 요청은 상기 논리적 주소, 페이지 개수, 및 페이지에 대한 데이터를 포함하며,
    상기 요청된 동작을 수행하는 단계는,
    상기 페이지 개수가 소정 크기 이상이면 상기 쓰기 요청에 대해 순차 페이지 쓰기 요청을 수행하는 단계; 및
    상기 페이지 개수가 소정 크기보다 작으면 랜덤 쓰기 요청을 수행하는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  7. 삭제
  8. 제 6 항에 있어서, 상기 순차 페이지 쓰기 요청을 수행하는 단계는,
    주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하고, 상기 선택된 데이터 블록 집합에 대해 할당된 순차 갱신 블록이 있는지 확인하는 단계;
    할당된 순차 갱신 블록이 있으면 순차 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계; 및
    할당된 순차 갱신 블록이 없으면, 자유 블록들로부터 순차 갱신 블록을 할당한 후 할당된 순차 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  9. 제 6 항에 있어서, 상기 랜덤 페이지 쓰기 요청을 수행하는 단계는,
    주소 변환 테이블을 이용하여 상기 논리적 블록 집합 주소에 대응하는 데이터 블록 집합을 선택하고, 상기 선택된 데이터 블록 집합에 대해 할당된 랜덤 갱신 블록이 있는지 확인하는 단계;
    할당된 랜덤 갱신 블록이 있으면 랜덤 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계; 및
    할당된 랜덤 갱신 블록이 없으면, 자유 블록들로부터 순차 갱신 블록을 할당한 후 할당된 랜덤 갱신 블록의 첫 번째 자유 페이지에 상기 요청된 데이터를 쓰는 단계를 포함하는 것을 특징으로 하는 메모리 관리 방법.
  10. 플래시 메모리, 프로세서, 프로그램 메모리, 및 데이터 메모리를 포함하는 플래시 메모리 시스템에 있어서,
    상기 플래시 메모리는,
    일정한 개수의 데이터 블록들로 구성되는 복수의 데이터 블록 집합들; 및
    상기 데이터 블록 집합들 각각에 대응되고, 상기 데이터 블록 집합에 저장되는 데이터가 갱신되는 경우 갱신되는 데이터를 저장하는 복수의 순차 갱신 블록 또는 랜덤 갱신 블록들을 포함하며,
    상기 순차 갱신 블록은 대응되는 데이터 블록 집합 내의 특정 데이터 블록에 대응되어 상기 특정 데이터 블록의 데이터가 갱신되는 경우 갱신되는 데이터를 저장하는 것을 특징으로 하는 플래시 메모리 시스템.
  11. 삭제
  12. 제 10 항에 있어서,
    상기 데이터 블록 집합을 구성하는 상기 데이터 블록들은, 논리적 블록 번호와 논리적 블록 집합 주소를 포함하는 논리적 주소에 따라 상기 플래시 메모리의 물리적 블록들에 대응되며, 서로 떨어진 거리가 가장 멀어지도록 위치하는 것을 특 징으로 하는 플래시 메모리 시스템.
KR1020080124174A 2008-12-08 2008-12-08 플래시 메모리 시스템 및 플래시 메모리의 관리 방법 KR101022001B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020080124174A KR101022001B1 (ko) 2008-12-08 2008-12-08 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
PCT/KR2009/000286 WO2010067919A1 (ko) 2008-12-08 2009-01-20 플래시 메모리 시스템 및 플래시 메모리의 관리 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080124174A KR101022001B1 (ko) 2008-12-08 2008-12-08 플래시 메모리 시스템 및 플래시 메모리의 관리 방법

Publications (2)

Publication Number Publication Date
KR20100065702A KR20100065702A (ko) 2010-06-17
KR101022001B1 true KR101022001B1 (ko) 2011-03-17

Family

ID=42242896

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080124174A KR101022001B1 (ko) 2008-12-08 2008-12-08 플래시 메모리 시스템 및 플래시 메모리의 관리 방법

Country Status (2)

Country Link
KR (1) KR101022001B1 (ko)
WO (1) WO2010067919A1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20130084846A (ko) 2012-01-18 2013-07-26 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치, 그것을 포함한 사용자 장치, 그리고 그것의 데이터 읽기 방법
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020092487A (ko) * 2001-06-04 2002-12-12 삼성전자 주식회사 플래시 메모리 관리방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR20080067334A (ko) * 2005-09-25 2008-07-18 네탁 테크놀로지 컴퍼니 리미티드 플래시 메모리 매체에서의 데이터 관리 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100914646B1 (ko) * 2002-08-31 2009-08-28 지인정보기술 주식회사 멀티-플레인 구조의 플래시 메모리 관리 방법
KR20080046345A (ko) * 2006-11-22 2008-05-27 삼성전자주식회사 휴대용 단말기의 메모리 절약 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20020092487A (ko) * 2001-06-04 2002-12-12 삼성전자 주식회사 플래시 메모리 관리방법
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR20080067334A (ko) * 2005-09-25 2008-07-18 네탁 테크놀로지 컴퍼니 리미티드 플래시 메모리 매체에서의 데이터 관리 방법

Also Published As

Publication number Publication date
WO2010067919A1 (ko) 2010-06-17
KR20100065702A (ko) 2010-06-17

Similar Documents

Publication Publication Date Title
KR100389867B1 (ko) 플래시 메모리 관리방법
CN107066393B (zh) 提高地址映射表中映射信息密度的方法
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
KR100684887B1 (ko) 플래시 메모리를 포함한 데이터 저장 장치 및 그것의 머지방법
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
KR102252419B1 (ko) 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
CN105975399B (zh) 用来管理一记忆装置的方法以及其相关的记忆装置
KR101465789B1 (ko) 페이지 복사 횟수를 줄일 수 있는 메모리 카드 시스템의쓰기 및 병합 방법
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
US10402317B2 (en) Data storage device and flash memory control method
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
JP4682261B2 (ja) 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法
CN107817945B (zh) 一种混合内存结构的数据读取方法和系统
US20100318726A1 (en) Memory system and memory system managing method
KR100845552B1 (ko) Ftl의 어드레스 매핑 방법
CN113253926A (zh) 提升新型存储器的查询和存储性能的存储内索引构建方法
KR101022001B1 (ko) 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
Ross Modeling the performance of algorithms on flash memory devices
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR100638638B1 (ko) 플래시 메모리의 제어 방법
KR100982440B1 (ko) 단일 플래시 메모리의 데이터 관리시스템
KR100868674B1 (ko) 플래시메모리 관리방법
Du et al. Adaptive garbage collection mechanism for N-log block flash memory storage systems
KR100688463B1 (ko) 물리 메모리의 데이터 기록 및 삭제 방법

Legal Events

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

Payment date: 20140307

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee