KR100874013B1 - 플래시 메모리의 데이터 관리 방법 및 장치 - Google Patents

플래시 메모리의 데이터 관리 방법 및 장치 Download PDF

Info

Publication number
KR100874013B1
KR100874013B1 KR1020070045927A KR20070045927A KR100874013B1 KR 100874013 B1 KR100874013 B1 KR 100874013B1 KR 1020070045927 A KR1020070045927 A KR 1020070045927A KR 20070045927 A KR20070045927 A KR 20070045927A KR 100874013 B1 KR100874013 B1 KR 100874013B1
Authority
KR
South Korea
Prior art keywords
block
data
sector
update
updated
Prior art date
Application number
KR1020070045927A
Other languages
English (en)
Other versions
KR20080099971A (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 KR1020070045927A priority Critical patent/KR100874013B1/ko
Publication of KR20080099971A publication Critical patent/KR20080099971A/ko
Application granted granted Critical
Publication of KR100874013B1 publication Critical patent/KR100874013B1/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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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

Abstract

본 발명은 플래시 메모리(Flash Memory)에서 대용량 데이터를 효율적으로 관리하기 위한 플래시 메모리의 데이터 관리 방법 및 장치에 관한 것으로, 대용량 데이터와 물리적 플래시 메모리의 클러스터링(Clustering) 및 매핑(Mapping) 기능, 대용량 데이터의 아웃플레이스 업데이트 폴리시(Outplace Update Policy) 및 사이클 평준화(Cycle Leveling) 기능, 버퍼링 폴리시(Buffering Policy) 기능이 적용된 플래시 관리 시스템 소프트웨어 및 플래시 디바이스 드라이버를 이용함으로써, 플래시 메모리의 성능 향상과 수명 지연을 시킬 수 있으며, 신뢰도를 높일 수 있다.
파일 시스템, 플래시 메모리, 대용량 데이터, 관리

Description

플래시 메모리의 데이터 관리 방법 및 장치{METHOD AND APPARATUS FOR MANAGING DATA OF FLASH MEMORY}
도 1은 일반적인 FTL(Flash Translation Layer)의 역할을 설명하기 위한 블록도이다.
도 2는 일반적인 플래시 메모리 디바이스 드라이버(Flash Memory Device Driver)에서 제공하는 API(Application Programming Interface)를 이용하는 방법을 설명하기 위한 도면이다.
도 3은 일반적인 플래시 메모리의 블록(Block)과 섹터(Sector)의 구조를 나타낸 도면이다.
도 4는 일반적인 플래시 메모리의 겹쳐쓰기(Overwrite) 연산을 설명하기 위한 도면이다.
도 5는 본 발명의 실시예에 따른 플래시 메모리의 데이터 관리 장치의 개략적인 블록도이다.
도 6은 본 발명의 실시예에 따른 플래시 메모리에서 지도(공간) 데이터의 섹터 클러스터링(Sector Clustering)의 필요성을 설명하기 위한 예시도이다.
도 7은 본 발명의 실시예에 따른 지도 데이터의 구성을 나타낸 예시도이다.
도 8은 본 발명의 실시예에 따른 플래시 메모리에서 지도 데이터의 블록 클 러스터링(Block Clustering)의 필요성을 설명하기 위한 예시도이다.
도 9는 본 발명의 실시예에 따른 공간 데이터의 클러스터링 및 섹터(페이지) 매핑을 통한 플래시 메모리의 데이터 관리 방법을 설명하기 위한 도면이다.
도 10은 본 발명의 실시예에 따른 공간 데이터의 클러스터링 및 섹터 매핑 동작을 나타낸 순서도이다.
도 11은 본 발명의 실시예에 따른 클러스터링된 섹터를 지-오더링(Z-ordering)을 이용한 블록 클러스터링을 설명하기 위한 예시도이다.
도 12는 본 발명의 실시예에 따른 클러스터링된 섹터를 힐버트 곡선(Hilbert Curve) 매핑을 이용한 블록 클러스터링을 설명하기 위한 예시도이다.
도 13은 본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시(Outplace Update Policy) 중의 업데이트 버퍼 블록 폴리시(Update Buffer Block Policy)를 설명하기 위한 예시도이다.
도 14는 본 발명의 실시예에 따른 업데이트 버퍼 블록 폴리시의 동작을 설명하기 위한 예시도이다.
도 15는 본 발명의 실시예에 따른 업데이트 버퍼 블록 폴리시에서 블록이 풀(Full)된 경우에 클리어링(Clearing)하는 동작을 나타낸 예시도이다.
도 16은 도 15의 클리어링 연산 수행 후 블록의 상태를 나타낸 예시도이다.
도 17은 본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시 중의 업데이트 로컬 버퍼 섹터 폴리시(Update Local Buffer Sectors Policy)를 설명하기 위한 예시도이다.
도 18은 도 17의 업데이트 로컬 버퍼 섹터 폴리시의 로컬 버퍼 섹터의 동작을 설명하기 위한 예시도이다.
도 19는 본 발명의 실시예에 따른 플래시 메모리 블록의 삭제 카운트(Erase Count)를 이용한 사이클 평준화(Cycle Leveling)를 설명하기 위한 예시도이다.
도 20은 도 19의 사이클 평준화 동작을 상세히 설명하기 위한 예시도이다.
도 21은 본 발명의 실시예에 따른 플래시 메모리의 기본 버퍼링(Buffering) 폴리시를 설명하기 위한 도면이다.
도 22는 도 21의 기본 버퍼링 폴리시 중 가장 기본적인 LRU(Least Recently Used)에 의한 페이지 교체 폴리시를 설명하기 위한 도면이다.
도 23은 본 발명의 실시예에 따른 지도 데이터의 버퍼링 중에서 업데이트 블록을 고려한 교체 전략(Replacement Strategy)을 설명하기 위한 도면이다.
본 발명은 플래시 메모리(Flash Memory)에서의 데이터 관리 방법 및 장치에 관한 것으로, 특히 플래시 메모리에서 대용량 데이터를 효율적으로 관리하기 위한 플래시 메모리의 데이터 관리 방법 및 장치에 관한 것이다.
기존의 하드 디스크(Hard Disk)를 저장 매체로 이용하는 파일 시스템에 있어서, 기본 API(Application Programming Interface)는 읽기(Read)/쓰기(Write)가 기본이며, 액세스 타임(Access Time)은 동일하다.
그러나 현재 모바일 단말기(Mobile Terminal)의 저장 매체로 가장 많이 쓰이는 플래시 메모리(Flash Memory)는, 기존의 파일 시스템과는 달리, 읽기/쓰기/삭제(Erase)의 3가지의 API를 제공한다. 또한, 플래시 메모리는 하드 디스크에 비해 판독/기록의 성능이 좋지만, 읽기/쓰기/삭제의 각 연산의 속도에는 많은 차이를 보인다.
그리고 일반 하드 디스크의 경우, 페이지를 판독할 때의 비용은 시크 타임(Seek Time: 자리찾기 시간), 로테이셔널 타임(Rotational Time: 회전 시간)이 소요되는 반면에, 플래시 메모리의 경우, 시크 타임, 로테이셔널 타임이 없기 때문에 일반 하드 디스크보다 읽고 쓰는 시간이 단축된다.
이러한 API의 차이를 해결하기 위해서, 도 1에 도시한 바와 같이, 중간에 FTL(Flash Translation Layer)(102)이라는 시스템 소프트웨어가 존재하여, 일반 저장 시스템의 API(101)를 플래시 메모리 디바이스 드라이버(Flash Memory Device Driver)(103)의 API에 맞게끔 매핑(Mapping)해 주는 역할을 수행한다. 또한, FTL(102)은 논리적 어드레스와 물리적 플래시 메모리 어드레스를 매핑해 주는 매핑 테이블을 관리한다.
여기서, 도 1은 일반적인 저장 시스템 API의 읽기/쓰기 연산과 플래시 메모리 디바이스의 읽기/쓰기/삭제 연산 사이의 미스매치(Mis-match)를 해결하기 위한 FTL(102)의 역할을 도시한 블록도이다,
그리고 도 2는 도 1의 플래시 메모리 디바이스 드라이버(103)에서 실제 제공하는 3개의 API를 이용하는 방법을 나타낸 도면이다.
도 2에 도시한 바와 같이, 플래시 메모리의 구성 블록(Block)(210-1 ~ 210-m), 섹터(Sector)(211-1 ~ 211-n) 및 플래시 메모리 디바이스의 API를 이용하여 읽기/쓰기/삭제/복사(Copy-back) 등의 연산을 수행하는 방법을 도식화하고 있다. 예를 들어, 20(us) 동안 섹터 읽기를 수행하고, 200(us) 동안 섹터 쓰기를 수행하고, 2(ms) 동안 블록 삭제를 수행하는데, 이때 섹터 읽기 시에 칩 번호, 블록 번호, 섹터 번호를 이용하고, 섹터 쓰기 시에 칩 번호, 블록 번호, 섹터 번호를 이용하고, 블록 삭제 시에 칩 번호, 블록 번호를 이용한다.
그리고 플래시 메모리 디바이스는, 도 3에 도시한 바와 같이, 다수 개의 블록(301-1 ~ 301-8192)으로 구성되며, 각 블록(301-1 ~ 301-8192)에는 다수 개의 섹터(페이지)(302-1 ~ 302-32)로 구성되며, 각 섹터(302-1 ~ 302-32)는 실제 데이터를 저장하는 영역인 메인 어레이(Main Array)(303-1)와 시스템에서 사용하는 영역인 스페어 어레이(Spare Array)로 구분된다. 여기서, 도 3은 플래시 메모리의 블록 구조와 섹터 구조를 나타낸 도면이다.
이때, 일반적으로 각 섹터(302-1 ~ 302-32)는 제작 방법에 따라 다르지만, 512(Byte)로 구성되고, 각 블록(301-1 ~ 301-8192)은 16(Kbyte)으로 구성된다. 즉, 한 개의 블록(301-1 ~ 301-8192)에는 32개의 섹터(302-1 ~ 302-32)로 구성된다. 또한, 플래시 메모리 디바이스는 128(Mbyte)로 8192개의 블록(301-1 ~ 301-8192)으로 구성된다.
한편, 난(NAND) 플래시 메모리에 있어서, 쓰기의 경우는 읽기의 약 8배의 액세스 타임이 소요되고, 삭제의 경우는 읽기의 약 60배 이상의 액세스 타임이 소요 된다. 또한, 전력 소모량도 쓰기, 삭제는 읽기에 비해 수배 이상 차이가 난다.
그리고 플래시 메모리는 일반 하드 디스크와 달리 다시 쓰기(Rewrite)를 수행할 수 없다. 즉, 도 4에 도시된 바와 같이, 이미 데이터가 저장되어 있는 섹터(페이지)에 데이터를 쓰기 위해서는, 반드시 해당 섹터를 삭제시킨 후에 쓰기를 수행해야 한다. 여기서, 도 4는 플래시 메모리의 겹쳐쓰기(Overwrite)(즉, 업데이트(Update)) 연산을 수행하기 위해서 먼저 해당 블록의 삭제를 수행해야 하는 것을 나타내는 도면이다.
또한, 읽기/쓰기 단위는 일반적으로 섹터(512(Bytes))이지만, 삭제 단위는 블록(16(Kbytes))이다. 삭제의 경우는 그 연산 수행 회수가 제한되어 있어, 불량 섹터(Bad Sector)가 발생하여 플래시 메모리의 수명을 단축시킬 수 있는 문제점이 있다.
따라서 섹터 업데이트 발생시에, 일반적으로 플래시 메모리의 수명 단축을 막기 위해서, 삭제 연산을 매번 이용하지 않고, 해당 섹터가 아닌 다른 섹터에 쓰기를 수행하는 아웃플레이스 업데이트(Outplace Update)를 수행한다.
그러나 이러한 아웃플레이스 업데이트가 많이 발생할수록 쓰레기 섹터(Garbage Sector)들의 발생이 많아 플래시 메모리를 효과적으로 사용할 수가 없는 문제점이 있다. 즉, 쓰레기 수집(Garbage Collection)을 적절한 타이밍에 반드시 수행하도록 해야 한다.
그리고 텔레매틱스, LBS 및 GIS 분야에서 내비게이션 서비스가 활발히 이루어지고 있는 상황에서, 대용량 지도 데이터(Map Data)를 저장 관리하기 위한 저장 매체로 플래시 메모리를 가장 많이 사용하고 있다. 하지만, 기존의 플래시 메모리 디바이스 및 이를 관리하는 시스템 소프트웨어들은, 일반적인 데이터(즉, 텍스트, 멀티미디어 데이터 등)를 고려하여 제작되었다. 그래서 이러한 플래시 메모리에서 2차원 데이터인 지도 데이터를 효과적으로 저장 관리하기 위해서는 다음 사항들을 반드시 고려해야 한다.
스몰 랜덤 쓰기(Small Random Write)를 한번에 모아 사용해야 하며, 버퍼 관리자와 버퍼 교체 폴리시(Policy)의 동작에서 빅팀 페이지(Victim Page) 선택 모델이 달라져야 하며, 지도 데이터는 공간적 근접성(Locality)이 상당히 중요하므로 데이터 클러스터링(Clustering)(섹터 클러스터링, 블록 클러스터링)을 수행해야 하며, 지도 데이터는 일반적인 데이터에 비해 업데이트가 자주 및 크게 발생하지 않도록 해야 하는 등과 같이, 플래시 메모리에서 지도 데이터를 저장 관리하기 위해서는 고려해야 할 사항이 너무 많다.
본 발명이 이루고자 하는 기술적 과제는, 플래시 메모리에서 지도(공간) 데이터 등과 같은 대용량 데이터를 효율적으로 관리하는 방법 및 장치를 제공하는 것이다.
또한, 본 발명은 플래시 메모리(특히, 난(NAND) 플래시 메모리)에서 지도(공간) 데이터를 효과적으로 저장 관리하도록 하는데, 그 목적이 있다.
이러한 과제를 해결하기 위해, 본 발명에 따르면, 플래시 메모리에서 지도 데이터의 특성인 공간적인 근접성이 상당히 중요한 시맨틱(Semantic)을 이용하여 보다 높은 성능을 제공하기 위한 방법과, 플래시 메모리의 수명을 보다 늘릴 수 있는 방법을 제공한다. 또한, 본 발명에 따른 지도 데이터와 물리적 플래시 메모리의 클러스터링(Clustering) 및 매핑(Mapping) 기법, 지도 데이터의 아웃플레이스 업데이트 폴리시(Outplace Update Policy)/사이클 평준화(Cycle Leveling) 및 버퍼링 폴리시(Buffering Policy)가 적용된 FTL/플래시 관리 시스템 소프트웨어 및 플래시 디바이스 드라이버를 이용함으로써, 플래시 메모리의 성능 향상과 수명 지연을 시킬 수 있도록 한다. 이에, 본 발명은 지도 데이터를 저장 관리하기 위하여 플래시 메모리를 이용하는 단말 혹은 타 장비에서 지도 데이터 관련 응용(Application)(즉, GIS 응용, 내비게이션, LBS 등)을 개발하고 동작함에 있어서, 플래시 메모리의 성능을 향상시킬 수 있고, 신뢰도를 높일 수 있다.
본 발명의 한 특징에 따르면, 플래시 메모리에서 공간 데이터의 클러스터링을 이용하여 공간 데이터를 관리하는 방법에 있어서, 하나의 공간적 그리드에 포함된 공간 데이터의 크기를 섹터 크기 단위로 공간을 분할하는 단계, 그리고 상기 그리드를 클러스터링한 후 상기 플래시 메모리의 물리적 섹터와 매핑시켜 주는 단계를 포함하는 데이터 관리 방법을 제공한다. 여기서, 상기 공간을 분할하는 단계는, 쿼드 트리 방식을 이용하여 공간 데이터의 공간 분포에 따라 공간을 4 분할하며, 또한 상기 분할된 공간의 그리드를 모두 섹터의 크기와 동일하거나 작게 구성한다.
그리고 상기 매핑시켜 주는 단계는, 지-오더링 또는 힐버트 곡선 오더링을 이용하여 상기 분할된 공간의 그리드를 각 순번대로 상기 섹터에 매핑시켜 준다.
본 발명의 다른 특징에 따르면, 플래시 메모리에서 데이터를 관리하는 방법에 있어서, 상기 데이터의 다수 개의 블록들 중에서 업데이트 블록을 설정하는 단계, 상기 각 블록의 섹터에 업데이트가 발생하였는지를 확인하는 단계, 그리고 상기 섹터에 업데이트가 발생한 경우, 상기 업데이트된 섹터를 무효화시킨 후에 상기 설정된 업데이트 블록에 쓰기를 수행하는 단계를 포함하는 데이터 관리 방법을 제공한다.
그리고 이러한 본 발명의 방법은, 상기 업데이트 블록이 풀인지를 확인하는 단계, 상기 업데이트 블록이 풀인 경우, 미리 설정된 상위의 업데이트 블록을 삭제하는 단계, 그리고 나머지의 업데이트된 섹터들을 그대로 다시 쓰기를 수행하여 상기 업데이트 블록을 유지시켜 주는 단계를 더 포함한다.
본 발명의 또 다른 특징에 따르면, 플래시 메모리에서 데이터를 관리하는 방법에 있어서, 상기 데이터의 각 블록에 업데이트 섹터를 기록하기 위한 로컬 버퍼 섹터들을 설정하는 단계, 상기 각 블록의 섹터에 업데이트가 발생하였는지를 확인하는 단계, 그리고 상기 섹터에 업데이트가 발생한 경우, 상기 업데이트된 섹터를 무효화시킨 후에 상기 로컬 버퍼 섹터에 쓰기를 수행하는 단계를 포함하는 데이터 관리 방법을 제공한다.
그리고 이러한 본 발명의 방법은, 상기 로컬 버퍼 섹터가 풀인지를 확인하는 단계, 그리고 상기 로컬 버퍼 섹터가 풀인 경우, 상기 로컬 버퍼 섹터에 해당하는 블록을 삭제하고 다시 쓰기를 수행하는 단계를 더 포함한다.
본 발명의 또 다른 특징에 따르면, 플래시 메모리에서 데이터를 관리하는 방 법에 있어서, 상기 데이터의 각 블록의 삭제 회수를 각 블록 내의 섹터의 여유 영역에 기록하는 단계, 상기 기록된 각 블록의 삭제 회수를 파악하는 단계, 삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수를 확인하여 그 차이 값을 구하는 단계, 상기 각 블록의 평균 삭제 회수를 구한 후에 평균 삭제 회수의 일정 배수를 구하는 단계, 상기 구한 차이 값이 상기 구한 일정 배수보다 큰지를 확인하는 단계, 그리고 상기 구한 차이 값이 상기 구한 일정 배수보다 큰 경우, 상기 삭제 후보가 된 블록과 상기 최소 삭제된 블록을 스와핑하는 단계를 포함하는 데이터 관리 방법을 제공한다.
본 발명의 또 다른 특징에 따르면, 플래시 메모리에서 지도 데이터의 버퍼링을 이용하여 지도 데이터를 관리하는 방법에 있어서, 상기 지도 데이터의 각 블록의 업데이트된 페이지를 마지막에 빅팀으로 선택되도록 설정하는 단계, 상기 업데이트된 페이지가 포함된 물리적 섹터 및 블록의 업데이트 상황을 파악하여 교체되었는지를 확인하는 단계, 그리고 상기 교체된 경우, 블록 삭제 발생시에 상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계를 포함하는 데이터 관리 방법을 제공한다. 여기서, 상기 업데이트된 페이지를 마지막에 빅팀으로 선택되도록 설정하는 단계는, 상기 지도 데이터의 각 블록의 LRU(Least Recently Used) 페이지들 중에서 업데이트가 되지 않은 LRU 페이지를 찾는 단계, 그리고 상기 업데이트가 되지 않은 LRU 페이지를 빅팀 페이지로 설정하는 단계를 포함한다. 또한, 상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계는, LRU 체인 값을 페이지 액세스 순으로 할당하는 단계, 상기 빅팀 페이지가 업 데이트되었는지를 확인하는 단계, 상기 빅팀 페이지가 업데이트된 경우, 상기 빅팀 페이지의 섹터가 포함된 업데이트 버퍼의 블록(또는, 업데이트 로컬 버퍼의 섹터들)에 적용 가능한 섹터가 남아 있는지를 확인하는 단계, 그리고 상기 적용 가능한 섹터가 남아 있는 경우, 상기 빅팀 페이지의 LRU 체인 값을 기 설정된 값으로 할당하는 단계를 포함한다.
본 발명의 또 다른 특징에 따르면, 플래시 메모리에서 데이터를 관리하는 장치에 있어서, 공간을 분할하고 분할된 공간의 그리드를 클러스터링한 후 상기 플래시 메모리의 물리적 섹터와 매핑시켜 주는 데이터 클러스터링 및 매핑 부분, 상기 데이터의 블록들 중에서 업데이트 블록을 설정하며, 상기 섹터에 업데이트가 발생한 경우에 업데이트된 섹터를 무효화시킨 후에 업데이트 블록에 쓰기를 수행하는 데이터 블록 클리어링 폴리시 부분, 상기 각 블록에 삭제 카운트를 두어, 각 블록의 삭제 회수를 기록하며, 삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수의 차이가 평균 삭제 회수의 일정 배수보다 큰 경우에 두 블록을 스와핑하는 데이터 블록 사이클 평준화 폴리시 부분, 그리고 상기 업데이트된 섹터를 마지막에 빅팀으로 선택되도록 설정하며, 상기 업데이트된 섹터가 블록이 교체되었는지를 확인하여, 블록 삭제 발생시에 상기 업데이트된 섹터를 가장 마지막에 빅팀으로 선택되도록 설정하는 버퍼링 폴리시 부분을 포함하는 데이터 관리 장치를 제공한다.
아래에서는 첨부한 도면을 참고로 하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세 히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 명세서에 기재된 "…부", "…기", "…모듈" 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어 또는 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
이제 본 발명의 실시예에 따른 플래시 메모리의 데이터 관리 방법 및 장치에 대하여 도면을 참고로 하여 상세하게 설명한다.
도 5는 본 발명의 실시예에 따른 지도 데이터를 효율적으로 관리하기 위한 플래시 메모리의 데이터 관리 장치의 개략적인 개념도이다.
도 5에 도시한 바와 같이, 본 발명의 실시예에 따른 플래시 메모리의 데이터 관리 장치는, 응용(Application)(510), 파일 시스템 API(Application Programming Interface)/라이브러리(Library)(520), FTL(Flash Translation Layer) 또는 플래시 관리기(530), 플래시 메모리 디바이스 드라이버(540)로 구성된다. 여기서, 일반 데이터를 핸들링하기 위한 FTL 또는 플래시 관리기(530) 내에, 지도 데이터의 관리를 위한 추가 기능들을 지원하기 위한 구성 블록들(531 ~ 534)을 구현한다. 즉, FTL 또는 플래시 관리기(530)는 지도 데이터 클러스터링 및 매핑 부분(531), 지도 데이터 블록 클리어링(Clearing) 폴리시 부분(532), 지도 데이터 블록 사이클 평준화 폴리시 부분(533), 버퍼링 폴리시 부분(534)을 포함한다.
지도 데이터 클러스터링 및 매핑 부분(531)은, 하나의 공간적 그리드에 포함된 공간 데이터의 크기를 섹터 크기 단위로 공간을 분할하며, 분할된 공간의 그리드를 클러스터링한 후 플래시 메모리의 물리적 섹터와 매핑시켜 준다. 이때, 지도 데이터 클러스터링 및 매핑 부분(531)은 쿼드 트리 방식을 이용하여 공간 데이터의 공간 분포에 따라 공간을 4 분할하는데, 분할된 공간의 그리드를 모두 섹터의 크기와 동일하거나 작게 구성하며, 분할된 공간의 그리드를 섹터에 매핑할 때에 최대한 근접성이 보장되는 순으로 오더링을 수행한다.
지도 데이터 블록 클리어링 폴리시 부분(532)은, 플래시 메모리 내의 데이터의 다수 개의 블록들 중에서 업데이트 블록을 설정하며, 각 블록의 섹터에 업데이트가 발생하였는지를 확인하여, 섹터에 업데이트가 발생한 경우에 업데이트된 섹터를 무효화(Invalidate)시킨 후에 설정된 업데이트 블록에 쓰기를 수행하며, 또한 업데이트 블록이 풀(Full)인지를 확인하여, 업데이트 블록이 풀인 경우에 미리 설정된 상위의 업데이트 블록을 삭제하며, 나머지의 업데이트된 섹터들을 그대로 다시 쓰기를 수행하여 업데이트 블록을 유지시켜 준다. 다르게는, 지도 데이터 블록 클리어링 폴리시 부분(532)은, 플래시 메모리 내의 데이터의 각 블록에 업데이트 섹터를 기록하기 위한 로컬 버퍼 섹터들을 설정하며, 각 블록의 섹터에 업데이트가 발생하였는지를 확인하여, 섹터에 업데이트가 발생한 경우에 업데이트된 섹터를 무 효화시킨 후에 로컬 버퍼 섹터에 쓰기를 수행하며, 또한 로컬 버퍼 섹터가 풀인지를 확인하여, 로컬 버퍼 섹터가 풀인 경우에 로컬 버퍼 섹터에 해당하는 블록을 삭제하고 다시 쓰기를 수행한다.
지도 데이터 블록 사이클 평준화 폴리시 부분(533)은, 플래시 메모리 내에 지도 데이터가 저장되어 있는 블록(즉, 섹터의 여유 영역)에 삭제 카운트(Erase Count)를 두어, 각 블록의 삭제 회수를 각 블록 내의 섹터의 여유 영역에 기록하며, 기록된 각 블록의 삭제 회수를 파악하여, 삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수를 확인하여 그 차이 값을 구하며, 각 블록의 평균 삭제 회수를 구한 후에 평균 삭제 회수의 일정 배수를 구하며, 구한 차이 값이 구한 일정 배수보다 큰지를 확인하여, 구한 차이 값이 상기 구한 일정 배수보다 큰 경우에 삭제 후보가 된 블록과 최소 삭제된 블록을 스와핑(Swapping)한다.
버퍼링 폴리시 부분(534)은, 플래시 메모리 내 지도 데이터의 각 블록의 업데이트된 페이지를 마지막에 빅팀으로 선택되도록 설정하며, 업데이트된 페이지가 포함된 물리적 섹터 및 블록의 업데이트 상황을 파악하여 교체되었는지를 확인하며, 교체된 경우에 블록 삭제 발생시에 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정한다. 이때, 버퍼링 폴리시 부분(534)은, 지도 데이터의 각 블록의 LRU(Least Recently Used) 페이지들 중에서 업데이트가 되지 않은 LRU 페이지를 찾아, 업데이트가 되지 않은 LRU 페이지를 빅팀 페이지로 설정하며, 또한 LRU 체인 값을 페이지 액세스 순으로 할당하고 빅팀 페이지가 업데이트되었는지를 확인하며, 빅팀 페이지가 업데이트된 경우에 빅팀 페이지의 섹터가 포함된 업데이트 버 퍼의 블록(또는, 업데이트 로컬 버퍼의 섹터들)에 적용 가능한 섹터가 남아 있는지를 확인하며, 적용 가능한 섹터가 남아 있는 경우에 빅팀 페이지의 LRU 체인 값을 기 설정된 값으로 할당한다. 또한, 버퍼링 폴리시 부분(534)은, 적용 가능한 섹터가 없는 경우에 클리어링 연산이 수행되어져야 할 상황인지를 확인하며, 클리어링 연산이 수행되어져야 할 상황인 경우에 1 보다 더 큰 LRU 체인 값을 할당한다.
그리고 FTL 또는 플래시 관리기(530)는 하위의 플래시 메모리 디바이스 드라이버(540)와 인터페이싱(Interfacing)하여 실제 물리적 섹터, 블록 연산을 수행한다. 또한, FTL 또는 플래시 관리기(530)는 지도 데이터의 효율적인 관리 기능을 제공한다. 즉, 플래시 메모리 디바이스 드라이버(540) 또는 이와 상위 파일 시스템 중간에 위치하는 OS(Operating System)에 포함된 플래시 메모리 관리 시스템 소프트웨어에서 지도 데이터를 저장하고 관리함에 있어서, FTL 또는 플래시 관리기(530)는 지도 데이터의 클러스터, 아웃플레이스 업데이트 및 사이클 평준화 기능, 지도 데이터 버퍼링 기능의 일부 또는 모두를 제공한다.
한편, OS 또는 라이브러리(520)에서 제공하는 파일 시스템에서는 FTL 또는 플래시 관리기(530)의 지도 데이터의 효율적인 관리 기능을 활용하여 보다 효과적인 애플리케이션(Application)(510)을 개발하도록 한다. 즉, FTL 또는 플래시 관리기(530)에서 지도 데이터의 효과적인 관리를 위한 기능들은, 플래시 메모리를 제공하는 디바이스 드라이버(540)와 이를 제공하는 시스템 소프트웨어(System Software)(즉, OS에서 포함되어 있는 시스템 소프트웨어)에 해당하는 부분이 된다. 플래시 메모리를 제공하는 업체와 이를 활용할 수 있는 시스템 OS의 제작에 지도 데이터의 효율적인 관리를 위한 이러한 기능들을 포함하여 제작 및 유통 가능하다.
다른 한편, FTL 또는 플래시 관리기(530)는 전체 플래시 메모리의 블록 중 지도 데이터의 효율적인 관리 기능들을 제공하기 위한 지도 데이터 영역(Map Data Area)(551)과 일반 데이터 영역(Common Data Area)(552)을 분리하여 관리 가능하다. 즉, FTL 또는 플래시 관리기(530)는 플래시 메모리의 전부 또는 일부만을 지도 데이터를 관리하기 위한 블록 영역(551)으로 설정하여, 클러스터링, 아웃플레이스 업데이트, 지도 데이터 버퍼링의 기능을 제공한다.
아래에서는 본 발명의 실시예에 따른 본 발명의 실시예에 따른 지도 데이터를 효율적으로 관리하기 위한 플래시 메모리의 데이터 관리 방법에 대해서 도 6 내지 도 23을 참조하여 상세하게 설명한다.
본 발명의 실시예에 따른 플래시 메모리의 데이터 관리 방법은, 크게 지도 데이터의 클러스터링 방법과 섹터 및 블록 매핑 방법, 아웃플레이스 업데이트 폴리시 및 사이클 평준화 기법, 데이터 버퍼링 기법으로 이루어진다.
첫 번째로, 본 발명의 실시예에 따른 지도 데이터와 물리적 플래시 메모리의 클러스터링을 통한 플래시 메모리의 데이터 관리 방법은, 지도 데이터의 클러스터링에서 공간을 분할함에 있어서, 하나의 공간적 그리드(Grid)(또는 셀(Cell))에 포함된 지도 데이터의 크기가 섹터(페이지) 크기 단위가 되도록 공간을 분할하며, 해당 그리드를 플래시 메모리의 물리적 섹터와 매핑시켜 준다. 이때, 공간을 분할함에 있어서, 쿼드 트리(Quad Tree) 방식으로 공간을 4 분할하도록 한다.
그리고 블록 클러스터링을 위해서, 분할된 공간의 그리드에 섹터 매핑을 위 하여 오더링(Ordering)을 지-오더링(Z-ordering)을 이용하고, 각 순번대로 섹터에 매핑시켜 준다. 다르게는, 블록 클러스터링을 위해서, 분할된 공간의 그리드에 섹터 매핑을 위하여 오더링을 힐버트 곡선(Hilbert Curve)을 이용하고, 각 순번대로 섹터에 매핑시켜 준다.
먼저, 섹터 클러스터링의 중요성을 살펴보면, 지도 데이터는 공간적 근접성이 상당히 중요하다. 즉, 지도 데이터를 읽기/쓰기/업데이트할 때, 주위에 함께 있는 데이터를 읽고 쓰고 업데이트할 가능성이 상당히 크기 때문이다. 지도 디스플레이(Map Display)에서 화면에 보여주는 지도 데이터는, 지역적으로 근접해 있는 데이터들과 함께 보여주는 것이다. 이것은 저장 매체에 저장되어 있는 데이터를 읽어와 데이터를 화면에 디스플레이하는데, 만약에 근접해 있는 객체들이 서로 다른 섹터에 저장되어 있다면, 여러 번 섹터를 읽어야 한다.
예를 들어, 도 6에 도시한 바와 같이, 512(Bytes)의 데이터(610)가 여러 개의 섹터들(620-1, 620-3, 620-13)에 저장될 수 있다. 이때, 여러 개의 섹터들(620-1, 620-3, 620-13)을 읽어야 하기 때문에, 512(Bytes)의 데이터(610)가 여러 개의 섹터들(620-1, 620-3, 620-13)에 분포되어 저장된다면 읽는 속도가 저하될 것이다. 여기서, 도 6은 하나의 섹터에 지도 데이터가 저장될 수 있음에도 불구하고 여러 개의 섹터에 객체들이 분포되어 저장되는 예를 보인 도면이다.
따라서 공간 데이터의 근접성은 상당히 중요하며, 물리적인 저장 매체에 클러스터링하여 저장되어야 성능이 향상될 수 있음을 잘 이해할 수 있다.
그 다음으로, 블록 클러스터링의 중요성을 살펴보면, 섹터 클러스터링은 주 로 읽기의 성능을 향상시킬 수 있는 반면에, 블록 클러스터링은 삭제의 성능을 향상시킬 수 있다.
플래시 메모리에서 읽기/쓰기의 단위는 섹터이고, 삭제의 단위는 블록이다. 일반적으로 아웃플레이스 업데이트를 수행하지만, 본 발명의 실시예는 블록 클리어링 폴리시에 따라, 블록을 삭제해야 하는 경우에 다시 쓰기의 대상이 되는 섹터들이 가능하면 하나의 블록에 모여 있도록 하며, 이렇게 다시 쓰기의 대상이 되는 섹터들을 하나의 블록에 모아 삭제 대상 블록이 줄어들도록 한다.
공간 데이터는 그 특성상 하나의 객체만이 일반적으로 수정되지 않는다. 즉, 업데이트되는 공간 객체가 존재할 경우, 그 주변에 있는 객체들이 함께 업데이트될 가능성이 크다.
예를 들어, 도 7의 (a)에 도시한 바와 같이, 일반적으로 '도로 데이터'라고 하면 실제 경로 탐색을 위한 노드(Node)/링크(Link) 데이터와 시각적으로 보여주는 폴리곤(Polygon) 데이터로 구성이 된다. 만약에 도로가 새로 생긴 경우, 노드/링크뿐만 아니라, 도로 폴리곤까지 함께 업데이트된다. 즉, 해당 데이터들이 섹터로 클러스터링되어 있고 이 섹터들이 블록 클러스터링되어 있는 경우, 삭제 대상 블록의 개수는 줄어드는 것을 잘 이해할 수 있다.
그리고 도 7의 (b)에 도시한 바와 같이, 아파트 단지가 새로 생기는 경우, 단지 경계의 폴리곤, 건물의 폴리곤, 명칭 검색을 위해 이용하는 건물 POI의 포인트(Point) 및 단지 POI의 포인트 등이 함께 업데이트된다.
여기서, 도 7은 본 발명의 실시예에 따른 지도 데이터의 구성을 나타낸 예시 도로, 업데이트되는 공간 데이터가 여러 개가 묶여서 함께 업데이트됨을 설명하고 있다.
또한, 도 8은 본 발명의 실시예에 따른 플래시 메모리에서 지도 데이터의 블록 클러스터링의 필요성을 설명하기 위한 예시도이다.
도 8에 도시한 바와 같이, 공간(810)을 그리드(셀)(s0~s7, s9, s51, s52)로 나누는데, 이때 각 그리드(s0~s7, s9, s51, s52)에 포함되어 있는 데이터의 크기는 각 섹터(820-1, 820-2, 820-6, 820-10, 820-52)의 크기와 동일하다. 이 경우, 빗금이 있는 그리드(s1, S5, s9, s51)에 대응하는 섹터(820-2, 820-6, 820-10, 820-52)에 있는 데이터들이 업데이트가 발생했으며, 클리어링 폴리시에 따라 해당 섹터(820-2, 820-6, 820-10, 820-52)를 업데이트함으로써 발생하는 삭제 대상 블록이 하나가 될 수 있음에도 불구하고, 도 8에 도시한 바와 같이 제52섹터(820-52)가 다른 섹터(820-2, 820-6, 820-10)가 저장되어 있는 제1블록(즉, 블록0)과 달리 제2블록(즉, 블록1)에 저장되어 있기 때문에, 블록0, 블록1과 같이 두 개의 블록을 삭제해야 하는 경우가 발생할 수 있다. 즉, 섹터 클러스터링뿐만 아니라, 블록 클러스터링 또한 공간 데이터에서는 성능 향상을 위해서 필요하다는 것을 잘 알 수 있다.
그러면, 상술한 본 발명의 실시예에 따른 지도 데이터 클러스터링 및 섹터 매핑을 통한 플래시 메모리의 데이터 관리 방법을 보다 상세히 살펴보면 다음과 같다.
지도 데이터를 클러스터링하는 동작은, 지도 데이터의 공간 분포에 따라 공간을 4 분할하는 쿼드 트리를 이용한다. 이때, 분할된 공간의 그리드는 모두 섹터 의 크기와 동일하거나 작게 구성하여, 클러스터링한 후 섹터에 매핑시켜 준다.
도 9는 본 발명의 실시예에 따른 공간 데이터의 클러스터링 및 섹터(페이지) 매핑을 통한 플래시 메모리의 데이터 관리 방법을 설명하기 위한 예시도이다.
도 9에 도시한 바와 같이, 공간(910)상의 왼쪽 윗부분에 데이터가 많이 분포가 되어 있어, 그리드의 분할이 많음을 알 수 있다. 이것에 대해 공간 분할 쿼드 트리를 나타내면 도 9의 오른쪽 그림과 같다. 쿼드 트리의 말단 노드(알파벳)들은 섹터에 매핑된다.
본 발명의 실시예에 따른 공간 데이터의 클러스터링 및 섹터 매핑 동작을 도 10의 순서도를 참고하여 살펴보면 다음과 같다.
우선, 초기 전체 지도 MBR(Minimum Boundary Rectangle)을 설정한 후(S101), 윈도즈 쿼어리(Windows Query)를 통해 해당 MBR에 포함되는 공간 데이터를 읽는다(S102). 여기서, 초기 데이터는 메모리에 적재되어 있을 수도 있고, 또는 일반 하드 디스크에 적재되어 있을 수도 있다.
이때, 상술한 단계 S102에서 읽은 공간 데이터의 크기가 이미 정의되어 있는 섹터의 크기보다 큰지의 여부를 확인한다(S103). 만약에, 상술한 단계 S102에서 읽은 공간 데이터의 크기가 이미 정의되어 있는 섹터의 크기보다 큰 경우에는 공간을 4 분할한다(S104).
그런 후에, 상술한 단계 S104에서 4 분할된 각각의 그리드에 포함되어 있는 공간 데이터를 다시 읽은 다음에(S105) 상술한 단계 S103으로 복귀하여 읽은 공간 데이터의 크기가 이미 정의되어 있는 섹터의 크기보다 큰지의 여부를 다시 확인하 도록 한다. 이와 같이, 공간 데이터의 크기가 이미 정의되어 있는 섹터의 크기보다 큰 경우에 반복적으로 공간을 4 분할한다.
반면에, 상술한 단계 S103에서 공간 데이터의 크기가 이미 정의되어 있는 섹터의 크기보다 작거나 동일할 경우, 각각의 그리드를 섹터에 매핑시켜 준다(S106).
본 발명의 실시예에 따른 지도 데이터의 블록 클러스터링에 대해 보다 상세히 다음과 같이 살펴본다.
블록 클러스터링은 클러스터링되어 있는 섹터의 시퀀언스(Sequence)를 결정하는 것이다. 블록에 32개의 섹터로 구성된다면, 지도 데이터가 클러스터링되어 있는 섹터들을 근접성(Locality)이 보장되도록 어떻게 블록에 할당하는지가 중요하다.
다시 말해서, 상술한 바와 같은 본 발명의 실시예에 따른 공간 데이터의 클러스터링 및 섹터 매핑 동작에 있어서, 상술한 단계 S106에서 각각의 그리드를 섹터에 매핑할 때 그 순서를 근접성이 보장되도록 해야 한다. 공간상에 분포되어 있는 지도 데이터는 2차원 데이터이다. 이러한 2차원 데이터를 오더링하는 것은 1차원 데이터를 오더링하는 것과는 약간 다른데, 1차원 데이터와 같은 경우에는 정렬(Sort)이 가능하지만, 공간 데이터는 정렬을 하는 의미가 다르다. 2차원 데이터의 오더링은 최대한 근접성이 보장되는 순으로 오더링을 수행한다.
그래서 본 발명의 실시예에서는 이러한 공간을 지-오더(Z-order), 힐버트 곡선(Hilbert Curve)의 매핑을 이용하여 클러스터링되어 있는 섹터를 오더링한다.
우선, 지-오더링은, 도 11에 도시한 바와 같은 형태로 공간을 오더링한다. 이를 쿼드 공간 분할에 적용한 예시이다. 이를 각 섹터에 매핑한 그림은, 도 11의 오른쪽 그림이다. 즉, 공간상의 근접성을 보장하면서 블록 클러스터링을 수행하게 된다. 여기서, 도 11은 본 발명의 실시예에 따른 클러스터링된 섹터를 지-오더링을 이용하여 블록 클러스터링을 수행하는 동작을 도식화한 도면이다.
또한, 도 12는 본 발명의 실시예에 따른 클러스터링된 섹터를 힐버트 곡선에 의해서 블록 클러스터링을 수행하는 동작을 도식화한 도면이다.
두 번째로, 본 발명의 실시예에 따른 아웃플레이스 업데이트 및 사이클 평준화를 통한 플래시 메모리의 데이터 관리 방법은, 플래시 메모리의 블록 삭제를 줄이기 위해서 아웃플레이스 업데이트를 수행하게 되는데, 이때 여러 개의 블록들 중에서 한 개의 임의의 업데이트 블록을 설정하고, 섹터에 업데이트가 발생하였는지의 여부를 확인하여, 해당 섹터에 업데이트가 발생한 경우에, 해당 섹터의 블록을 삭제시킨 후 다시 쓰기를 수행하지 않고, 해당 업데이트된 섹터를 무효화시킨 후에 설정된 업데이트 블록에 쓰기를 수행한다. 즉, 플래시 메모리의 삭제 오퍼레이션(Erase Operation)의 코스트(Cost)가 크고 회수가 제한되어 있으므로, 본 발명의 실시예에서는 일반적인 인플레이스 업데이트(Inplace Update)를 하지 않고, 아웃플레이스 업데이트를 수행하는데, 업데이트된 섹터를 포함하는 블록을 삭제한 후 다시 쓰기를 수행하지 않고, 해당 섹터를 무효화한 후 다른 섹터에 쓰기를 수행한다.
그리고 업데이트 블록이 풀(Full)되었는지를 확인하여, 업데이트 블록이 풀된 경우에 미리 설정된 상위 몇 개의 업데이트된 블록(예를 들어, 업데이트가 많이 된 블록)을 삭제하고, 나머지 업데이트된 섹터들은 그대로 다시 쓰기를 수행하도록 함으로써, 업데이트 블록을 유지시켜 준다.
그리고 상술한 아웃플레이스 업데이트 동작에 있어서, 각 블록에 업데이트 섹터를 기록하기 위한 별도의 로컬 버퍼 섹터(즉, 전체 섹터들의 일정 비율(%)에 해당되는 섹터)들을 설정하고, 섹터에 업데이트가 발생한 경우에 해당 섹터를 무효화시킨 후, 로컬 버퍼 섹터에 쓰기를 수행하며, 만약에 로컬 버퍼 섹터가 풀(Full)된 경우, 해당 블록을 삭제하고 다시 쓰기를 수행하도록 한다.
그리고 플래시 메모리의 블록 평준화를 위하여, 각 블록의 삭제 회수를 섹터의 여유 영역(Spare Area)에 기록하고, 각 블록의 삭제 회수를 각각 파악하고, 삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수를 확인하여 그 차이 값을 구하며, 각 블록의 평균 삭제 회수를 구한 후에 평균 삭제 회수의 일정 배수를 구하며, 해당 차이 값이 해당 일정 배수를 넘는지를 확인하여, 해당 차이 값이 해당 일정 배수를 넘어선 경우, 두 블록을 스와핑(Swapping)하도록 한다.
먼저, 업데이트 버퍼 블록 폴리시(Update Buffer Block Policy)에 대해 살펴보면, 아웃플레이스 업데이트 섹터를 포함하는 임의의 블록을 설정한 후, 업데이트 발생 시, 해당 블록에 아웃플레이스 업데이트를 수행하도록 한다.
이때, 지도 데이터는 크게 또는 자주 데이터의 변경이 이루어지지 않는다. 따라서 일정 버퍼 블록의 비율을 설정한다. 예를 들어, 도 13에 도시한 바와 같이, 20(%) 버퍼 블록이라면, 5개의 버퍼(B0~Bn-1)에 하나의 업데이트 블록(UB0, UB1, ...)을 할당하여 업데이트 영역(Update Area)으로 사용한다.
여기서, 도 13은 본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시 중 의 업데이트 버퍼 블록 폴리시를 설명하기 위한 예시도로, 임의의 업데이트 블록을 두는 방법을 도식화한 도면이다.
상술한 아웃플레이스 업데이트에 대해 살펴보면, 도 14에 도시한 바와 같이, 공간(140)상의 섹터에 매핑된 그리드(141, 142, 143)에 업데이트가 발생한 경우, 업데이트가 발생된 그리드(141, 142, 143)에 대응하는 각 섹터들(s12, s59, s90)이 포함되어 있는 블록(B0, B1, B2)에서 각 섹터들(s12, s59, s90)을 무효화시키고(이때, 섹터의 여유 영역(16bytes)에 기록하며), 할당된 업데이트 버퍼 블록(UB0)에 업데이트된 섹터의 모든 데이터를 기록한다. 여기서, 도 14는 본 발명의 실시예에 따른 업데이트 버퍼 블록 폴리시의 동작을 설명하기 위한 예시도이다.
이렇게 아웃플레이스 업데이트 동작을 하다가, 업데이트 버퍼 블록(UB0)이 풀되었는지를 확인하여, 업데이트 버퍼 블록(UB0)이 풀된 경우에 클리어링(삭제 및 쓰기)을 수행시켜야 한다. 이때, 업데이트 버퍼 블록(UB0)에 기록되어 있는 섹터의 블록이 B0, B1, B2, B3, B4 모두 업데이트되었다고 해서, 모든 블록을 클리어링하지는 않는다.
다시 말해서, 업데이트가 가장 많이 된, 최대 X개만큼만 블록 클리어링을 수행하게 된다. 예를 들어, 도 15에 도시한 바와 같이, 업데이트 버퍼 블록(UB0)이 풀되었고, 해당 각각의 블록 업데이트 비율(Block Update Rate)이 47(%), 31(%), 3(%), 6(%), 13(%)인 경우, 클린 블록 번호 한계치(Clean Block Number Threshold)가 '탑(top) 2'라면, 제1 및 제2블록(B0, B1)을 클리어링시켜야 한다. 이때, 물론 풀된 업데이트 버퍼 블록(UB0)도 클리어링되어야 한다. 여기서, 도 15는 본 발명의 실시예에 따른 업데이트 버퍼 블록 폴리시에서 블록이 풀된 경우에 클리어링하는 동작을 나타낸 예시도이다.
참고로, 공간 데이터는 업데이트되는 영역은 계속하여 업데이트될 가능성이 크다. 예를 들면, 도심지의 경우는 개활지보다 공간 데이터가 크고(즉, 객체가 많고), 지속적으로 업데이트될 가능성이 개활지보다 훨씬 크다.
예를 들어, 도 15에 도시한 바와 같이, 제1 및 제2블록(B0, B1), 업데이트 버퍼 블록(UB0)이 클리어링된 후에, 해당 클리어링된 후의 블록의 상태는 도 16과 같다. 이때, 업데이트 버퍼 블록(UB0)에는 제1 및 제2블록(B0, B1)의 업데이트 섹터를 모두 다시 쓰기를 수행하였고, 나머지는 그대로 유지하고 있다. 즉, 제3, 제4 및 제5블록(B2, B3, B4)의 업데이트 섹터들은 그대로 유지하고 있으며, 프리 섹터(Free Sector)는 78(%)이다. 여기서, 도 16은 도 15의 클리어링 연산 수행 후 블록의 상태를 나타낸 예시도이다.
다음으로, 업데이트 로컬 버퍼 섹터 폴리시(Update Local Buffer Sectors Policy)에 대해 살펴보면, 상술한 업데이트 버퍼 블록 폴리시와 달리, 아웃플레이스 업데이트 섹터를 해당 블록에 여유 섹터들을 확보하여 업데이트를 수행한다.
도 17에 도시한 바와 같이, 각 블록(B0~Bn-1)에 실제 지도 데이터 영역과 업데이트 영역(섹터들)을 분리하여 아웃플레이스 업데이트를 수행한다. 여기서, 도 17은 본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시 중의 업데이트 로컬 버퍼 섹터 폴리시를 설명하기 위한 예시도이다.
본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시 중의 업데이트 로컬 버퍼 섹터 폴리시는, 블록 클러스터링을 유지하면서 아웃플레이스 업데이트를 수행할 수 있다는 장점이 있다.
도 18은 본 발명의 실시예에 따른 아웃플레이스 업데이트 폴리시 중의 업데이트 로컬 버퍼 섹터 폴리시의 로컬 버퍼 섹터의 동작을 설명하기 위한 예시도이다. 도 18에 도시한 바와 같이, 블록의 30(%)을 업데이트 영역(s22~s31)으로 이용하고, 제1, 제2 및 제3섹터(s0, s0, s2)가 업데이트되었을 때에 제1블록(B0)의 구성을 보여주고 있다. 아웃플레이스 업데이트를 수행할 때, 업데이트 영역이 풀인 경우에는 해당 블록을 클리어링한다.
그 다음으로, 플래시 메모리의 지도 데이터 블록의 사이클 평준화를 수행하도록 하는 사이클 평준화 폴리시에 대해 살펴본다.
상술한 바와 같이, 영역별 업데이트 비율은 균등하지가 않다. 즉, 특정 영역에 업데이트될 가능성이 크다. 이것은 도심지가 개활지에 비해 업데이트될 가능성이 크기 때문이다. 마찬가지로, 플래시 메모리의 클러스터링되어 있는 블록들 중의 일부 블록의 경우에 클리어링이 많이 수행됨을 의미한다. 플래시 메모리의 블록은 삭제 회수가 제한되어 있으므로, 특정 블록만이 계속 업데이트될 경우, 전체 플래시 메모리를 사용하지 못하게 될 수도 있고 수명이 단축될 수도 있다. 따라서 블록 업데이트를 평준화시키는 폴리시가 중요하다. 이것을 본 발명의 실시예에서 '사이클 평준화'이라고 한다.
사이클 평준화 폴리시는, 특정 블록에 집중되어 있는 삭제를 다른 블록에 골고루 분포시켜 평준화를 시키는 것이다. 이를 위하여 도 19에 도시한 바와 같이, 지도 데이터가 저장되어 있는 블록(즉, 섹터의 여유 영역)에 삭제 카운트(Erase Count)를 두고, 평준화 폴리시를 수행하도록 한다. 여기서, 도 19는 본 발명의 실시예에 따른 플래시 메모리 블록의 사이클 평준화를 위하여 각 블록의 삭제 카운트를 이용하는 동작을 설명하기 위한 도면이다.
플래시 메모리 관리자는 각 블록의 삭제 카운트를 이용하여 사이클 평준화를 수행하도록 동작시킨다. 이때, 전체 블록의 평균 삭제 카운트(AvgEC)를 계산하고, CLT(Cycle Level Threshold)를 설정한 후, 최대 삭제 카운트를 가지는 블록 및 최소 삭제 카운트를 가지는 블록을 찾아, 최대 삭제 카운트를 가지는 블록과 최소 삭제 카운트를 가지는 블록의 차이 값을 구하며, 이와 동시에 평균 삭제 카운트(AvgEC)의 CLT 배의 값을 구하며, 이에 해당 차이 값이 해당 배의 값 이상인지를 확인한다.
이에 따라, 최대 삭제 카운트를 가지는 블록과 최소 삭제 카운트를 가지는 블록의 차이가 평균 삭제 카운트(AvgEC)의 CLT 배를 넘어설 경우, 블록 스와핑(Block Swapping)을 수행한다.
도 20에 도시한 바와 같이, 평균 삭제 카운트(AvgEC)가 3.3이고, CLT가 3이고, 최대 삭제 카운트(EC(BmaxEC))가 10이고, 최소 삭제 카운트(EC(BminEC))가 0이면, 아래의 수학식 1의 조건에 만족되어, 즉 '(10-0)/3.3 > 3'으로 블록 스와핑을 수행한다. 여기서, 도 20은 본 발명의 실시예에 따른 플래시 메모리 블록의 사이클 평준화 동작을 상세히 설명하기 위한 예시도이다.
(EC(BmaxEC)-EC(BminEC))/AvgEC > CLT
세 번째로, 본 발명의 실시예에 따른 플래시 메모리에서의 지도 데이터 버퍼링 폴리시(Buffering Policy)를 통한 플래시 메모리의 데이터 관리 방법은, 지도 데이터의 버퍼링의 페이지 교체 폴리시에 있어서, 가장 오래거나, 또는 가장 최근에 액세스한 페이지(섹터)를 선택하는 것이 아니고, 업데이트된 페이지를 마지막에 빅팀(Victim)으로 선택되도록 설정하며, 그리고 업데이트된 페이지가 포함된 물리적 플래시 메모리의 섹터 및 블록의 업데이트 상황을 파악하여, 교체된 경우에 블록 삭제가 발생할 시에 가장 마지막에 빅팀으로 선택되도록 설정한다.
앞서 살펴본 바와 같이, 플래시 메모리에 잦은 업데이트는, 여러모로 성능 저하 및 수명을 단축시킬 수 있다. 그래서 잦은 작은 업데이트를 모아서 한번에 업데이트를 하는 것은, 플래시 메모리의 성능을 향상시키는 가장 기본적인 버퍼링 기능이다. 해당 버퍼링 기능은, 응용프로그램이 플래시 메모리의 데이터를 액세스할 때, 임의의 메모리(활성 메모리)(예를 들어, DRAM)에 해당 섹터를 로딩(Loading)한 후, 상위 응용들이 메모리를 액세스하도록 하는 것이다. 가장 기본적으로 사용되는 버퍼링 폴리시는, LRU(Least Recently Used) 버퍼링으로, 버퍼 푸울(Buffer Pool)에 있는 버퍼 페이지가 풀된 경우, 교체 빅팀(Replacement Victim)을 선정할 시에 LRU 페이지(즉, 가장 오래 전에 액세스된 페이지)를 선택하여 저장 장치에 쓰기를 수행한다.
지도 데이터는 근접성의 특성상, 하나의 물리적 섹터를 요청할 경우, 주위에 같이 있는 섹터를 함께 요청하게 된다. 즉, 도 21에 도시한 바와 같이, 근접한 지도 데이터를 플래시 메모리에 요청할 때에, 클리스터링이 되어 있다면 근접한 섹터들이 같이 요청되어 버퍼에 로딩된다. 여기서, 도 21은 본 발명의 실시예에 따른 플래시 메모리의 기본 버퍼링 폴리시를 설명하기 위한 도면이다.
그리고 버퍼가 풀되었을 때, 지도상의 다른 영역 요청이 왔을 경우에 빅팀 페이지를 교체해야 한다. LRU에서는 가장 오래전에 액세스된 페이지를 빅팀 페이지로 선택하게 된다. 이때, LRU 체인 값(Chain Value)이 낮을수록 가장 오래전에 액세스된 페이지이다. 도 22에 도시한 바와 같이, 제7 및 제8페이지(P6, P7)가 빅팀 페이지인 경우, 요청된 제34 및 제37페이지(P33, P37)와 교체하게 되는데, 만약에 제7 및 제8페이지(P6, P7)가 업데이트가 발생했다면, 플래시 메모리의 섹터를 업데이트해야 한다. 여기서, 도 22는 가장 기본적인 LRU에 의한 페이지 교체 폴리시를 설명하기 위한 도면이다.
그러나 빅팀 페이지가 업데이트가 되었다면, 플래시 메모리의 블록 삭제가 발생할 수도 있기 때문에 상술한 LRU 버퍼링으로 빅팀 페이지를 선택하는 것은 플래시 메모리의 성능을 저하시킬 수도 있다.
그래서 본 발명의 실시예에서는, 도 23에 도시한 바와 같이, 제7, 제8 및 제131섹터(s6, s7, s130)가 제7, 제8 및 제131페이지(P6, P7, P130)로 버퍼링되어 있고 지도 데이터 업데이트가 발생했다면, 이들의 LRU 체인 값을 임의의 아주 큰 값(big)으로 자동 설정함으로써, 교체 대상 페이지가 될 가능성을 줄이도록 한다. 이에, 업데이트된 버퍼의 페이지는 추후에 또 업데이트될 가능성이 있음으로, 플래시 메모리로 업데이트 시기를 최대한 지연시켜 준다.
여기서, 도 23은 본 발명의 실시예에 따른 플래시 메모리에서의 지도 데이터 버퍼링 폴리시 중에서 기본 버퍼링 폴리시가 아니라, 업데이트 블록을 고려하여 교체 전략(Replacement Strategy)을 수행하는 동작을 설명하기 위한 도면이다.
그리고 본 발명의 실시예에서는, 지도 데이터를 효율적으로 관리하기 위한 플래시 메모리에 있어서, 버퍼의 교체 폴리시를 상술한 LRU와 다른 형태의 폴리시를 이용하는데, 이때 빅팀 페이지를 설정하는 동작은 다음과 같다.
우선, LRU 페이지들 중에서 업데이트가 되지 않은 LRU 페이지를 찾아, 해당 업데이트가 되지 않은 LRU 페이지를 빅팀 페이지로 설정한다.
그리고 LRU 체인 값은 페이지 액세스 순으로 값을 할당하지만, 빅팀 페이지가 업데이트되었는지의 여부를 확인하여, 업데이트 버퍼 블록 폴리시의 경우, 빅팀 페이지가 업데이트되었을 시에 해당 빅팀 페이지의 섹터가 포함된 업데이트 버퍼(UB0)의 블록에 적용 가능한 섹터가 남아 있는지를 확인한 후에, 적용 가능한 섹터가 남아 있을 경우에 페이지의 LRU 체인 값을 임의의 큰 값(big)으로 할당한다. 다르게는, 업데이트 로컬 버퍼 섹터 폴리시의 경우, 빅팀 페이지가 업데이트되었을 시에 해당 빅팀 페이지의 섹터가 포함된 업데이트 로컬 버퍼(B0)의 섹터들에 적용 가능한 섹터가 남아 있는지를 확인한 후에, 적용 가능한 섹터가 남아 있을 경우에 페이지의 LRU 체인 값을 임의의 큰 값(big)으로 할당한다.
만약에, 적용 가능한 섹터가 없는 경우에는, 클리어링 연산이 수행되어져야 할 상황인지를 확인한 후에, 클리어링 연산이 수행되어져야 할 상황인 경우에 1 보다 더 큰 임의의 LRU 체인 값을 할당한다.
이상, 본 발명의 실시예는, 플래시 메모리의 성능 향상을 위해서, 시스템 램(RAM)의 일부 영역을, 플래시 메모리에 데이터를 기록하기 위한 캐시 메모리(Cash Memory)로 사용할 수 있도록 하는 것에 대해서 설명하였다. 이것은, 읽기에 비해 플래시 메모리의 쓰기 연산(또는, 삭제 후의 쓰기 연산)의 수행 속도가 상당히 느리고, 이로 인해 플래시 메모리의 성능 저하를 가져 올 수가 있기 때문에, 시스템 램의 일부 영역을 캐시 메모리로 사용함으로써 플래시 메모리의 성능을 향상시키도록 한 것이다. 즉, 플래시 메모리에 쓰기가 필요한 데이터를 최대한 지연시키기 위해서 시스템 램에 유지하고, 시스템 램의 캐시 영역이 꽉 찬 경우에 이를 플래시 메모리에 쓰도록 하는 방법을 제시하였다.
그리고 본 발명의 실시예는, 블록 삭제를 수행해야 하는 상황인 경우에 빅팀 페이지로 선택하지 않는 방법으로 버퍼 페이지의 교체 폴리시를 이용하도록 하며, 대용량의 지도 데이터를 플래시 메모리에서 효과적으로 관리하도록 하는 것에 대해서 설명하였다.
그러나 본 발명의 실시예는 이상에서 설명한 장치 및/또는 방법을 통해서만 구현이 되는 것은 아니며, 본 발명의 실시예의 구성에 대응하는 기능을 실현하기 위한 프로그램, 그 프로그램이 기록된 기록 매체 등을 통해 구현될 수도 있으며, 이러한 구현은 앞서 설명한 실시예의 기재로부터 본 발명이 속하는 기술분야의 전문가라면 쉽게 구현할 수 있는 것이다.
이상에서 본 발명의 실시예에 대하여 상세하게 설명하였지만 본 발명의 권리범위는 이에 한정되는 것은 아니고 다음의 청구범위에서 정의하고 있는 본 발명의 기본 개념을 이용한 당업자의 여러 변형 및 개량 형태 또한 본 발명의 권리범위에 속하는 것이다.
이와 같이 본 발명의 실시예에 의하면, 플래시 메모리에서 지도 데이터의 클러스터링, 섹터 및 블록 매핑, 아웃플레이스 업데이트 폴리시 및 사이클 평준화, 데이터 버퍼링을 통해 지도 데이터를 저장 관리하도록 함으로써, 플래시 메모리의 성능 향상과 수명 지연을 시킬 수 있으며, 신뢰도를 높일 수 있다.

Claims (20)

  1. 플래시 메모리에서 공간 데이터를 관리하는 방법에 있어서,
    하나의 공간적 그리드에 대응하는 공간 데이터를 미리 정해진 섹터의 크기에 따라 복수 개의 분할 데이터로 분할하여 상기 그리드를 상기 복수 개의 분할 데이터에 각각 대응하는 복수 개의 분할 그리드로 분할하는 단계,
    상기 복수 개의 분할 그리드를 미리 정해진 방식에 따라 오더링하여 상기 복수 개의 분할 그리드에 각각 대응하는 복수 개의 분할 데이터에 대한 매핑 순서를 결정하는 단계, 그리고
    상기 매핑 순서에 따라 상기 복수 개의 분할 데이터를 상기 플래시 메모리의 물리적 섹터와 매핑하는 단계
    를 포함하는 데이터 관리 방법.
  2. 제1항에 있어서,
    상기 복수 개의 분할 그리드로 분할하는 단계는, 쿼드 트리 방식을 이용하여 공간 데이터의 공간 분포에 따라 상기 그리드를 4개의 분할 그리드로 분할하는 데이터 관리 방법.
  3. 제1항에 있어서,
    상기 복수 개의 분할 데이터의 각각은 상기 섹터의 크기와 동일하거나 상기 섹터의 크기보다 작은 데이터 관리 방법.
  4. 제1항에 있어서,
    상기 복수 개의 분할 그리드로 분할하는 단계는,
    초기 전체 지도의 MBR(Minimum Boundary Rectangle)을 설정하는 단계,
    상기 MBR에 포함되는 공간 데이터를 읽는 단계,
    상기 공간 데이터의 크기가 상기 섹터의 크기보다 큰지를 확인하는 단계, 그리고
    상기 공간 데이터의 크기가 상기 섹터의 크기보다 큰 경우, 상기 공간 데이터를 상기 복수 개의 분할 데이터로 분할하여 상기 그리드를 상기 복수 개의 분할 그리드로 분할하는 단계
    를 포함하는 데이터 관리 방법.
  5. 제4항에 있어서,
    상기 복수 개의 분할 그리드로 분할하는 단계는,
    상기 복수 개의 분할 데이터 중 어느 하나의 분할 데이터가 상기 섹터의 크기보다 큰지를 확인하는 단계, 그리고
    상기 분할 데이터가 상기 섹터의 크기보다 큰 경우, 상기 분할 데이터를 상기 섹터의 크기에 따라 분할하는 단계
    를 더 포함하는 데이터 관리 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 결정하는 단계는, 지-오더링 또는 힐버트 곡선 오더링을 이용하여 상기 매핑 순서를 결정하는 데이터 관리 방법.
  8. 플래시 메모리에서 데이터를 관리하는 방법에 있어서,
    상기 데이터의 다수 개의 블록들 중에서 업데이트 블록을 설정하는 단계,
    상기 각 블록의 섹터에 업데이트가 발생하였는지를 확인하는 단계, 그리고
    상기 섹터에 업데이트가 발생한 경우, 상기 업데이트된 섹터를 무효화시킨 후에 상기 설정된 업데이트 블록에 쓰기를 수행하는 단계
    를 포함하는 데이터 관리 방법.
  9. 제8항에 있어서,
    상기 업데이트 블록이 풀인지를 확인하는 단계,
    상기 업데이트 블록이 풀인 경우, 미리 설정된 상위의 업데이트 블록을 삭제하는 단계, 그리고
    나머지의 업데이트된 섹터들을 그대로 다시 쓰기를 수행하여 상기 업데이트 블록을 유지시켜 주는 단계
    를 더 포함하는 데이터 관리 방법.
  10. 제9항에 있어서,
    상기 상위 업데이트 블록은, 상기 업데이트 블록들 중에서 업데이트가 가장 많이 된 블록인 데이터 관리 방법.
  11. 플래시 메모리에서 데이터를 관리하는 방법에 있어서,
    상기 데이터의 각 블록에 업데이트 섹터를 기록하기 위한 로컬 버퍼 섹터들을 설정하는 단계,
    상기 각 블록의 섹터에 업데이트가 발생하였는지를 확인하는 단계, 그리고
    상기 섹터에 업데이트가 발생한 경우, 상기 업데이트된 섹터를 무효화시킨 후에 상기 로컬 버퍼 섹터에 쓰기를 수행하는 단계
    를 포함하는 데이터 관리 방법.
  12. 제11항에 있어서,
    상기 로컬 버퍼 섹터는, 전체 섹터들의 일정 비율에 해당되는 섹터들이 설정되는 데이터 관리 방법.
  13. 제11항에 있어서,
    상기 로컬 버퍼 섹터가 풀인지를 확인하는 단계, 그리고
    상기 로컬 버퍼 섹터가 풀인 경우, 상기 로컬 버퍼 섹터에 해당하는 블록을 삭제하고 다시 쓰기를 수행하는 단계
    를 더 포함하는 데이터 관리 방법.
  14. 플래시 메모리에서 데이터를 관리하는 방법에 있어서,
    상기 데이터의 각 블록의 삭제 회수를 각 블록 내의 섹터의 여유 영역에 기록하는 단계,
    상기 기록된 각 블록의 삭제 회수를 파악하는 단계,
    삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수를 확인하여 그 차이 값을 구하는 단계,
    상기 각 블록의 평균 삭제 회수를 구한 후에 평균 삭제 회수의 일정 배수를 구하는 단계,
    상기 구한 차이 값이 상기 구한 일정 배수보다 큰지를 확인하는 단계, 그리고
    상기 구한 차이 값이 상기 구한 일정 배수보다 큰 경우, 상기 삭제 후보가 된 블록과 상기 최소 삭제된 블록을 스와핑하는 단계
    를 포함하는 데이터 관리 방법.
  15. 플래시 메모리에서 지도 데이터의 버퍼링을 이용하여 지도 데이터를 관리하는 방법에 있어서,
    상기 지도 데이터의 각 블록의 업데이트된 페이지를 마지막에 빅팀으로 선택 되도록 설정하는 단계,
    상기 업데이트된 페이지가 포함된 물리적 섹터 및 블록의 업데이트 상황을 파악하여 교체되었는지를 확인하는 단계, 그리고
    상기 교체된 경우, 블록 삭제 발생시에 상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계
    를 포함하는 데이터 관리 방법.
  16. 제15항에 있어서,
    상기 업데이트된 페이지를 마지막에 빅팀으로 선택되도록 설정하는 단계는,
    상기 지도 데이터의 각 블록의 LRU(Least Recently Used) 페이지들 중에서 업데이트가 되지 않은 LRU 페이지를 찾는 단계, 그리고
    상기 업데이트가 되지 않은 LRU 페이지를 빅팀 페이지로 설정하는 단계
    를 포함하는 데이터 관리 방법.
  17. 제16항에 있어서,
    상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계는,
    LRU 체인 값을 페이지 액세스 순으로 할당하는 단계,
    상기 빅팀 페이지가 업데이트되었는지를 확인하는 단계,
    상기 빅팀 페이지가 업데이트된 경우, 상기 빅팀 페이지의 섹터가 포함된 업 데이트 버퍼의 블록에 적용 가능한 섹터가 남아 있는지를 확인하는 단계, 그리고
    상기 적용 가능한 섹터가 남아 있는 경우, 상기 빅팀 페이지의 LRU 체인 값을 기 설정된 값으로 할당하는 단계
    를 포함하는 데이터 관리 방법.
  18. 제16항에 있어서,
    상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계는,
    LRU 체인 값을 페이지 액세스 순으로 할당하는 단계,
    상기 빅팀 페이지가 업데이트되었는지를 확인하는 단계,
    상기 빅팀 페이지가 업데이트된 경우, 상기 빅팀 페이지의 섹터가 포함된 업데이트 로컬 버퍼의 섹터들에 적용 가능한 섹터가 남아 있는지를 확인하는 단계, 그리고
    상기 적용 가능한 섹터가 남아 있는 경우, 상기 빅팀 페이지의 LRU 체인 값을 기 설정된 값으로 할당하는 단계
    를 포함하는 데이터 관리 방법.
  19. 제17항 또는 제18항에 있어서,
    상기 업데이트된 페이지를 가장 마지막에 빅팀으로 선택되도록 설정하는 단계는,
    상기 적용 가능한 섹터가 없는 경우, 클리어링 연산이 수행되어져야 할 상황인지를 확인하는 단계, 그리고
    상기 클리어링 연산이 수행되어져야 할 상황인 경우, 1 보다 더 큰 LRU 체인 값을 할당하는 단계
    를 포함하는 데이터 관리 방법.
  20. 플래시 메모리에서 데이터를 관리하는 장치에 있어서,
    공간을 분할하고 분할된 공간의 그리드를 클러스터링한 후 상기 플래시 메모리의 물리적 섹터와 매핑시켜 주는 데이터 클러스터링 및 매핑 부분,
    상기 데이터의 블록들 중에서 업데이트 블록을 설정하며, 상기 섹터에 업데이트가 발생한 경우에 업데이트된 섹터를 무효화시킨 후에 업데이트 블록에 쓰기를 수행하는 데이터 블록 클리어링 폴리시 부분,
    상기 각 블록에 삭제 카운트를 두어, 각 블록의 삭제 회수를 기록하며, 삭제 후보가 된 블록의 삭제 회수와 최소 삭제된 블록의 삭제 회수의 차이가 평균 삭제 회수의 일정 배수보다 큰 경우에 두 블록을 스와핑하는 데이터 블록 사이클 평준화 폴리시 부분, 그리고
    상기 업데이트된 섹터를 마지막에 빅팀으로 선택되도록 설정하며, 상기 업데이트된 섹터가 블록이 교체되었는지를 확인하여, 블록 삭제 발생시에 상기 업데이트된 섹터를 가장 마지막에 빅팀으로 선택되도록 설정하는 버퍼링 폴리시 부분
    을 포함하는 데이터 관리 장치.
KR1020070045927A 2007-05-11 2007-05-11 플래시 메모리의 데이터 관리 방법 및 장치 KR100874013B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070045927A KR100874013B1 (ko) 2007-05-11 2007-05-11 플래시 메모리의 데이터 관리 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070045927A KR100874013B1 (ko) 2007-05-11 2007-05-11 플래시 메모리의 데이터 관리 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20080099971A KR20080099971A (ko) 2008-11-14
KR100874013B1 true KR100874013B1 (ko) 2008-12-17

Family

ID=40286790

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070045927A KR100874013B1 (ko) 2007-05-11 2007-05-11 플래시 메모리의 데이터 관리 방법 및 장치

Country Status (1)

Country Link
KR (1) KR100874013B1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155566B1 (ko) * 2008-12-01 2012-06-19 한국전자통신연구원 공간 데이터의 페이지 매핑 방법
US10573389B2 (en) 2017-10-17 2020-02-25 Samsung Electronics Co., Ltd. Storage device having parameter calibration function, and operating method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102275710B1 (ko) * 2015-02-02 2021-07-09 삼성전자주식회사 오버-라이트가 가능한 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101155566B1 (ko) * 2008-12-01 2012-06-19 한국전자통신연구원 공간 데이터의 페이지 매핑 방법
US10573389B2 (en) 2017-10-17 2020-02-25 Samsung Electronics Co., Ltd. Storage device having parameter calibration function, and operating method thereof

Also Published As

Publication number Publication date
KR20080099971A (ko) 2008-11-14

Similar Documents

Publication Publication Date Title
USRE46404E1 (en) Flash memory management method
US8250333B2 (en) Mapping address table maintenance in a memory device
KR101982251B1 (ko) 저장 디바이스들이 낮은 과도 공급으로 낮은 기입 증폭을 달성하기 위한 방법
KR100789406B1 (ko) 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
JP4938460B2 (ja) 不揮発性メモリおよびブロック管理システムを伴う方法
US7774392B2 (en) Non-volatile memory with management of a pool of update memory blocks based on each block's activity and data order
TWI483109B (zh) 半導體儲存裝置
US7779056B2 (en) Managing a pool of update memory blocks based on each block's activity and data order
KR101760144B1 (ko) 비휘발성 메모리 및 기록 캐시를 분할하는 방법
US20070094440A1 (en) Enhanced data access in a storage device
KR101430097B1 (ko) 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
Park et al. A hybrid flash translation layer design for SLC–MLC flash memory based multibank solid state disk
KR100874013B1 (ko) 플래시 메모리의 데이터 관리 방법 및 장치
KR101026634B1 (ko) 하이브리드 플래시 메모리의 데이터 저장 방법
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
Kim et al. LSB-Tree: a log-structured B-Tree index structure for NAND flash SSDs
KR101676175B1 (ko) 전원 손실 이후 데이터 손실을 방지하기 위한 메모리 저장 장치 및 방법
KR101020781B1 (ko) 플래시 메모리를 기반으로 한 데이터베이스 시스템에 대한 로그 관리 방법
Jin et al. Lazy-split B+-tree: a novel B+-tree index scheme for flash-based database systems
KR100638638B1 (ko) 플래시 메모리의 제어 방법
KR101101038B1 (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: 20121129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131128

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151127

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161121

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20181025

Year of fee payment: 11