KR20090093154A - 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템 - Google Patents

센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템

Info

Publication number
KR20090093154A
KR20090093154A KR1020080018517A KR20080018517A KR20090093154A KR 20090093154 A KR20090093154 A KR 20090093154A KR 1020080018517 A KR1020080018517 A KR 1020080018517A KR 20080018517 A KR20080018517 A KR 20080018517A KR 20090093154 A KR20090093154 A KR 20090093154A
Authority
KR
South Korea
Prior art keywords
file
block
nand flash
flash memory
memory
Prior art date
Application number
KR1020080018517A
Other languages
English (en)
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 KR1020080018517A priority Critical patent/KR20090093154A/ko
Publication of KR20090093154A publication Critical patent/KR20090093154A/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
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • G06F2212/7207Details relating to flash memory management management of metadata or control data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

센서 노드에 탑재되어 센서 노드의 데이터 저장소로 이용되는 낸드 플래시 메모리에 대한 파일 시스템이 개시된다. 본 발명의 파일 시스템은 상기 낸드 플래시 메모리에 저장되는 파일에 대한 메타정보를 상기 센서 노드에 결합되는 덮어쓰기가 가능한 외부 메모리에 저장하고, 부팅시 상기 외부 메모리에 저장된 메타정보를 상기 센서 노드의 메인 메모리로 복사하여 파일을 관리하는 파일 관리부;를 포함한다. 이에 의해 낸드 플래시 메모리 전체를 스캔하지 않고 EEPROM에 저장된 메타정보를 가지고 낸드 플래시 메모리에 저장된 파일들을 관리할 수 있다.

Description

센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템{File system for NAND flash memory using by sensor node}
본 발명은 센서 노드에 관한 것으로, 특히 센서 노드에 탑재되어 센서 노드의 데이터 저장소로 이용되는 플래시 메모리에 대한 파일 시스템에 관한 것이다.
최근 각광받고 있는 센서 네트워크 기술은 주변의 빛, 소리, 온도, 습도 등의 물리적 데이터의 수집을 바탕으로 환경, 의료, IT 등의 다양한 분야에 적용되고 있다. 점차 데이터의 수집 분야가 다양해지고 장기간 수집을 목적으로 사용되는 경우가 늘어나면서, 대량의 데이터를 저장하고 관리하기 위한 효율적인 저장장치가 요구되고 있다. 현재 센서 노드의 저장소로는 플래시 메모리가 많이 사용되고 있다. 플래시 메모리는 최근에 주목받는 반도체 기반의 데이터 저장매체로서, 비휘발성(non-volatile)이고 하드디스크와 같은 보조기억 장치보다 실행속도가 훨씬 빠르다는 장점을 가진다. 또한 전력소모가 매우 적으며 물리적 충격에 강하기 때문에, 센서 노드(Sensor Node)용 저장소로 가장 적합하다. 하지만 기존 데이터의 덮어쓰기가 불가능하며 쓰기 횟수의 제한이 있다. 이는 파일 시스템의 성능 한계와 알고리즘 개발에 제약이 된다.
플래시 메모리는 낸드(NAND) 플래시와 노어(NOR) 플래시로 구분된다. 노어 플래시는 읽기(Read) 속도가 빠르고 데이터의 안정성이 뛰어나다는 장점이 있지만, 가격이 비싸고 회로가 복잡하여 대용량화하기가 힘들다는 단점이 있다. 이에 비해 낸드 플래시는 노어 플래시와 비교하여 쓰기(Write) 및 삭제(Erase) 속도가 월등히 빠르다. 그리고 최근 단가가 낮아지고 대용량화되고 있는 추세이므로, 앞으로의 센서 노드용 저장소로 적합할 것으로 예상된다. 하지만 현재 대부분의 센서 노드용 파일 시스템은 노어 플래시 기반으로 개발되었기 때문에, 낸드 플래시에 적용할 수 있는 파일 시스템은 거의 없다. 대용량 낸드 플래시의 특성을 고려한 새로운 파일 시스템의 구축이 요구되지만, 센서 노드는 오직 4 ~ 10KByte의 매우 작은 크기의 메모리를 지원하므로 효율성이 뛰어난 파일 시스템을 구축하는 것은 매우 어렵다.
기존 플래시 메모리 기반의 센서 노드용 파일 시스템은 센서 노드라는 장치적 제약 때문에 그 수가 많지 않다. 대표적인 파일 시스템으로는 표 1에 나타낸 바와 같이 Matchbox, ELF, Capsule이 있다.
구분 Matchbox ELF Capsule
저장 장치 NOR NOR NOR
에너지 최적화 No No No
메모리 최적화 Yes Yes Yes
자원 평준화 No Yes Yes
Crash Recovery No Snapshot Checkpointing
추상화 Filesystem Filesystem Object
EEPROM 사용 MetadataIndex
Matchbox는 TinyOS에서 기본적으로 제공하는 파일 시스템이다. 노어 플래시 기반에서 설계되었으며, 오직 메모리 최적화에 대한 측면만 고려되었다. 에너지 효율성과 자원 평준화는 고려되지 않았으며, Crash Recovery에 대한 정책은 없다. 노어 플래시 기반이지만 Write-append, Seek 명령을 지원하지 않으며, Free 페이지 리스트를 메인 메모리에서 관리하므로 전원이 소실되면 부팅 시간에 재구성한다.
ELF는 Matchbox와 같이 노어 플래시 기반에서 설계되었으며, 노어 플래시의 특징을 살려 Write-modify 연산과 Seek 기능을 지원한다. 메모리 최적화와 자원 평준화를 고려했으며, Crash Recovery에 대한 정책으로 Snapshot을 사용한다. 유일하게 EEPROM을 사용하며, 디렉토리와 파일의 메타데이터 인덱스를 저장한다. 하지만 Atmel 데이터 플래시 장치에 특성화하여 구현되었기 때문에, 다른 장치를 대상으로 사용할 수 없을 뿐 아니라 버퍼를 순환 형태로 사용하여 센서 네트워크에서 사용하는 다양한 응용 프로그램들을 만족시키지 못한다.
Capsule은 노어 플래시에서 낸드 플래시의 특징을 살려 구현된 파일 시스템이다. 에너지 최적화, 메모리 최적화, 자원 평준화를 모두 고려하였으며, Crash Recovery 정책으로 Checkpointing을 사용한다. 파일 기반이 아닌 객체 기반으로 스택, 큐, 인덱스 등의 다양한 자료 구조를 저장 시스템 단위에서 지원한다. 하지만 인덱스는 컴파일 시간에 크기가 고정되므로, 파일의 크기나 Fragment 수가 제한된다. 또한 Backward Chaining을 사용하므로, Write-modify와 Read 연산이 매우 비효율적이다. 이러한 이유 때문에, 유일하게 낸드 플래시에서 동작되도록 설계되었지만대용량 낸드 플래시 파일 시스템으로는 적합하지 않다.
본 발명은 이 같은 배경에서 도출된 것으로, 적은 메모리 사용량을 가진 센서 노드의 데이터 저장소로 이용할 대용량 낸드 플래시 메모리에 적합한 파일 시스템을 제공함을 목적으로 한다.
전술한 기술적 과제를 달성하기 위한 본 발명에 따른 센서 노드에 탑재되어 상기 센서 노드의 데이터 저장소로 이용되는 낸드 플래시 메모리용 파일 시스템은, 상기 낸드 플래시 메모리에 저장되는 파일에 대한 메타정보를 상기 센서 노드에 결합되는 덮어쓰기가 가능한 외부 메모리에 저장하고, 부팅시 상기 외부 메모리에 저장된 메타정보를 상기 센서 노드의 메인 메모리로 복사하여 파일을 관리하는 파일 관리부;를 포함한다.
상기 파일 시스템은, 상기 낸드 플래시 메모리의 각 블록에 블록의 사용 상태 정보를 기록하고, 부팅시 상기 낸드 플래시 메모리의 모든 블록에 기록된 블록의 사용 상태 정보를 읽어들여 맵을 구성하는 블록 관리부;를 더 포함한다.
상기 파일 시스템은, 상기 낸드 플래시 메모리의 각 블록에 블록의 사용 횟수 정보를 기록하고, 그 기록된 사용 횟수를 파악하여 파악된 횟수가 상기 외부 메모리에 기록된 블록 사용 한계치에 도달하면 우선 사용을 배제하여 평균적으로 전체 블록의 사용 횟수를 평준화시키는 메모리 사용 평준화 처리부;를 더 포함한다.
상기 파일 시스템은, 상기 낸드 플래시 메모리의 페이지에 기록하고자 하는 데이터를 상기 메인 메모리의 일부 할당된 영역에 기록하며, 상기 할당 영역이 채워지면 그 기록된 데이터 모두를 상기 낸드 플래시 메모리의 한 페이지에 기록하는 데이터 기록 처리부;를 더 포함한다.
본 발명은 앞으로의 센서 노드용 저장소로 가장 적합한 대용량 낸드 플래시 기반 파일 시스템의 설계 방안을 제안한다. 본 발명에 따른 파일 시스템은 자원과 에너지의 효율성, 대용량의 지원 및 신뢰성을 극대화하는 방향으로 설계되었으며, 매우 작은 크기의 EEPROM을 사용하여 센서 노드에서 제공하는 작은 크기의 메인 메모리의 한계를 극복하였다.
본 발명은 부팅시 플래시 메모리 전체를 스캔하지 않고 EEPROM의 특정 위치만 확인하면 필요한 정보를 얻을 수 있다. 특히 본 발명은 부팅시 낸드 플래시 메모리의 전체 블록에 대한 사용 상태를 구성하여 관리하므로, 삭제(Erase)된 블록의 위치를 용이하게 파악하여 재사용을 위해 할당할 수 있다.
또한 본 발명은 낸드 플래시 메모리의 페이지를 완전하게 사용할 수 있는 방안을 제시함으로써 기존 방식보다 약 3~4배 이상의 페이지를 절약하며, 그로 인해 보다 긴 시간 동안 데이터의 수집이 가능하고, 쓰기 속도가 개선되며, 센서 노드의 수명이 약 10% 이상 향상되는 효과가 창출된다.
또한 본 발명은 낸드 플래시 메모리의 블록 사용을 평준화시킴으로써, 메모리 용량을 보장하는 센서 노드의 최대 수명을 연장시킬 수 있다. 예를 들어 플래시 메모리를 사용할 때 평준화가 없이 사용하게 된다면, 특정 블록의 사용횟수 과다로 인해 해당 블록이 사용할 수 없게 될 수 있다. 해당 블록에 대해 배드 블록 처리를 하여 사용 가능한 블록만 사용한다 하여도, 배드 블록으로 인한 사용 가능한 용량 감소는 피할 수 없다. 결국 사용 한계에 도달할 때마다 사용 가능한 메모리 용량은 점차 줄어들며, 이로 인해 센서 노드의 수명까지 일찍 끝나게 될 것이다. 전체 메모리의 수명이 끝나게 될 것이다. 그러나 본 발명에 따른 메모리 평준화를 적용하게 되면, 전체 블록의 고른 사용을 통하여 전체 블록이 비슷한 시점에 사용 한계에 도달하게 되므로, 메모리의 전체 용량을 보장하는 센서 노드의 수명을 보장한다.
또한 본 발명은 Write append 방식 뿐 아니라 Write fixed 방식에 의한 파일 생성 방식을 제공하므로, 데이터 기록 중에 용량 부족으로 인하여 블록 할당을 받지 못하는 경우를 방지할 수 있다. 또한 파일 생성 이전에 작업할 용량이 충분한지 확인하여 블록에 대한 실제 삭제 작업(garbage collection)을 수행하도록 명령할 수도 있다.
도 1은 본 발명에 따른 전체 시스템 구성도.
도 2는 1Gbit 용량의 낸드 플래시 메모리 배열 구성 예시도.
도 3은 파일 디스크립션 맵을 이용하여 낸드 플래시 메모리의 블록 상태 정보를 확인하고 구성하는 방식의 이해를 돕기 위한 예시도.
도 4는 Write append 모드 설명을 위한 예시도.
도 5는 Write fixed 모드 설명을 위한 예시도.
<도면의 주요 부분에 대한 부호의 설명>
100 : 센서 노드 200 : SRAM
300 : 파일 시스템 310 : 파일 관리부
320 : 블록 관리부 330 : 메모리 사용 평준화 처리부
340 : 데이터 기록 처리부 350 : 파일 생성부
400 : 낸드 플래시 메모리 500 : EEPROM
전술한, 그리고 추가적인 본 발명의 양상들은 첨부된 도면을 참조하여 설명되는 바람직한 실시예들을 통하여 더욱 명백해질 것이다. 이하에서는 본 발명을 이러한 실시예를 통해 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 설명하기로 한다.
고성능의 파일 시스템을 설계하기 위해서는 효율적인 알고리즘과 적절한 크기의 저장매체의 조합이 매우 중요하다. 파일 시스템의 요구사항에 대해 하드웨어를 적절히 배분하여 전체 시스템을 설계함으로써, 보다 우수한 성능의 파일 시스템을 설계할 수 있다. 이하에서는 이 같은 하드웨어의 배분 및 파일 시스템 설계 방식에 대해 구체적으로 살펴본다.
도 1은 본 발명에 따른 전체 시스템 구성도이다.
센서 노드(100)로는 저전력을 목적으로 제작된 TIP 시리즈의 TIP810CM Mote가 이용될 수 있다. TIP810CM은 10KByte의 SRAM을 제공한다. 센서 노드(100)의 메인 메모리인 SRAM(200)에는 파일 시스템(300)이 탑재되며, 본 발명에 따른 파일 시스템(300)의 구체적인 특징들에 대해서는 후술하기로 한다. 센서 노드(100)에는 낸드 플래시 메모리(400) 및 EEPROM(500)이 결합된다. 일 예로, 낸드 플래시 메모리(400)와 EEPROM(500)은 동일 기판상에 구현되며, SPI(Serial Peripheral Interface) 버스로 센서 노드(100)와 연결된다. 낸드 플래시 메모리(400)는 센서 노드(100)에서 발생되는 데이터를 저장하기 위한 저장소로 이용된다.
도 2는 1Gbit 용량의 낸드 플래시 메모리 배열 구성 예시도이다.
일 실시예에 있어서, 1Gbit 낸드 플래시 메모리는 스몰 페이지 방식이다. 전체 블록 수는 8192개이고, 블록당 페이지 수는 32개이다. 한 페이지는 528Byte이고, 512Byte의 데이터 영역과 16Byte의 스페어 영역으로 구성된다. 데이터 영역은 오직 한 번만 기록될 수 있고, 스페어 영역은 두 번 기록될 수 있다.
낸드 플래시 메모리는 동일한 페이지에 덮어쓰기가 불가능하므로, 특정 위치에 데이터를 보관할 수 없다. 이로 인해 데이터가 갱신될 때마다 매번 그 위치가 변한다. 그래서 기존에 존재하는 대부분의 파일 시스템에서는 부팅 타임에 전체 플래시 메모리를 스캔해서 필요한 정보들을 SRAM에 구성하여 사용한다. 하지만 플래시 메모리는 점점 대용량화되고 있기 때문에, 매번 전체 메모리를 모두 스캔하기에는 시간과 전력 면에서 한계가 있다.
이러한 문제 해결을 위해, 본 발명에 따른 파일 시스템의 설계에서는 적은 용량의 외부 메모리를 사용한다. 일 실시예에 있어서, 외부 메모리로는 도 2에 도시된 바와 같이 EEPROM(500)이 사용될 수 있으며, 1Kbyte의 용량을 가짐이 바람직하다. EEPROM은 동일한 위치에 덮어쓰기가 가능하고 비휘발성이므로, 필요한 데이터의 위치를 기록하는데 적합하다. 즉, 부팅 시간에 플래시 메모리 전체를 스캔하지 않고 EEPROM의 특정 위치만 확인하면 필요한 정보를 얻을 수 있다.
EEPROM(500)은 그 일부 저장 영역에 다음의 표 2와 같이 데이터를 기록한다.
목적 할당 Byte
File Description[MAX_FILES] 520 Byte
File Count 1 Byte
Open File Info[OPEN_FILE_NUM] 2 Byte
Last Allocated File ID 1 Byte
Wear Leveling을 위한 한계값 4 Byte
Total 528 Byte
각각의 구성요소에 대해 살펴본다.
→ File Description[MAX_FILES]
- File Description은 File의 메타정보이다. 최대 기록할 수 있는 개수는 20개이다.
- File Description의 정보는 표 3과 같다.
목적 할당 Byte
File Name 14 Byte
File Mode 1 Byte
File ID 1 Byte
File Size 4 Byte
초기 블록 번호 2 Byte
마지막에 기록한 페이지 번호 3 Byte
현재 기록중인 블록에서 유효하지 않은 페이지 개수 1 Byte
Total 26 Byte
- File Name : 총14글자의 파일이름을 기록할 수 있다.
- File Mode : 파일의 생성 목적을 기록한다. 표 4와 같은 값을 표현할 수 있다.
상수 사용 목적
WRITE_APPEND File이 쓰여질 때 공간이 부족하면 한 블록씩 할당받는다.
WRITE_FIXED File의 Size를 입력받아 그만큼의 크기를 보장해준다.
- File ID : File의 고유한 ID이다.
- File Size : 현재 기록된 File의 Size이다.
- 초기 블록 번호 : File의 시작 블록을 기록한다.
- 마지막에 기록한 페이지 번호 : 현재까지 쓴 것 중에 마지막에 쓴 페이지의 주소를 기록한다.
- 현재 기록 중인 블록에서 유효하지 않은 페이지의 개수를 기록한다.
→ File Count
- File Count는 지금까지 생성된 파일의 개수이다.
- 최대 생성할 수 있는 파일의 개수는 20개이다.
→ Open File Info[OPEN_FILE_NUM]
- Open File Info는 현재 Open된 File의 정보이다.
- FIle ID를 기록한다.
- 최대 Open할 수 있는 파일의 개수는 2개이다.
→ Last Allocated File ID
- 마지막에 할당한 File의 ID를 기록한다.
- 0은 할당하지 않았음을 표현하며, 1~255 값을 File ID로 부여한다.
→ Wear Leveling을 위한 한계값
-모든 블록의 Erase Count는 Wear Leveling 한계값보다 작거나 같다.
한편, 센서 노드(100)의 SRAM(200)에는 다음과 같은 데이터들이 기록된다.
목적 할당 Byte
Description map 521 Byte
Block Info bit-map 2079 Byte
Buffer1 - Open File1 전용 528 Byte
Buffer2 - Open File2 전용 528 Byte
S_Buffer1 16 Byte
S_Buffer2 16 Byte
Total 3688 Byte (3.6K)
각각의 구성요소에 대해 살펴본다.
→ Description map
- 파일 시스템의 거의 모든 명령어는 연산중에 Description map에 접근한다. 사용량이 많고 매번 EEPROM에 접근하여 값을 가져오면 전력소모 및 속도 면에서 비효율적이므로, 별도의 메모리 공간을 할당하여 그곳에도 보존한다.
→ Block Info map
- 모든 Block의 사용 상태를 기록해 놓는다.
- 기록하는 정보는 표 5와 같다.
목적 할당 Byte
Block Info bit-map 2048 Byte
Priority Queue 30 Byte
Priority Queue의 size 1 Byte
Total 2079 Byte
- Block의 Bit Info는 모든 Block의 사용 상태를 묘사한다. 한 블록당 2Bit를 사용하며 표현하는 정보는 표 6과 같다.
상수 사용 목적
GARBAGE 현재 블록이 지워진 상태이며 Garbage Collection을 기다리고 있다.
IN_USE 현재 블록에 파일의 내용이 기록되어 있다.
FREE_HIGH 블록의 상태는 Free이고 Wearleveling의 한계값과 같다.
FREE_LOW 블록의 상태는 Free이고 Wearleveling의 한계값보다 작다.
- Priority Queue 안에는 Free 블록의 정보를 최대 5개까지 넣을 수 있다. 현재 Erase Count가 낮을수록 우선적으로 들어간다.
- Priority Queue의 size : 현재 Priority Queue 안에 들어있는 Block의 개수이다.
→ Buffer1
- 이곳은 첫 번째 Open된 파일이 전용으로 사용한다.
→ Buffer2
- 이곳은 두 번째 Open된 파일이 전용으로 사용한다.
→ S_Buffer1, S_Buffer2
- 이곳은 Free Block Map의 구성, Free 페이지 할당, Garbage Collection, Create, Delete에서 두 개의 버퍼를 관리(management)하여 사용한다. Garbage Collection은 파일 시스템의 Delete 명렁을 통해 garbage로 표시된 블록의 실제 Erase를 수행하는 작업이다. Create는 새로운 파일을 생성하는 파일 시스템 명령어이다. Delete는 파일을 삭제하는 파일 시스템 명령어로써, 파일명을 입력받아 해당 파일의 디스크립션 맵 정보를 삭제한 후 해당 파일이 가진 블록들을 garbage 마킹하는 작업을 수행한다.
한편, 위 구성요소들 중 Block Info bit-map에 대해 표 7을 참조로 보다 구체적으로 살펴본다.
상태 Bit 설명
IN_USE 00 현재블록의 상태가 파일의 데이터 용도로 사용중이거나,파일 Create시 사용할 블록으로 지정된 블록이다.
GARBAGE 01 GARBAGE 대상인 블록이다.
FREE_HIGH 10 EEPROM에 MAX WEAR LEVEL 숫자를 가지고 있고, 현재 블록의Erase된 숫자가 MAX WEAR LEVEL과 같으면 FREE_HIGH 상태로 FREE BLOCK을 할당할 때 할당되지 않는다.
FREE_LOW 11 MAX WEAR LEVEL보다 현재 블록의 Erase된 숫자가 MAX WEAR LEVEL보다 낮은 블록으로 PRIORITY QUEUE를 구성하거나 FREE BLOCK을 할당할 때 사용된다.
- 한 블록의 상태는 2bit로 표현한다.
- 1Byte로 4개의 블록 상태를 표현하며, 2048Byte로 0~8191까지 블록의 상태를 표현한다.
- 블록의 상태는 IN_USE(00), GARBAGE(01), FREE_HIGH(10), FREE_LOW(11)의 4가지 상태를 가진다.
예를 들어 3번째 Byte의 상태가 다음과 같다면,
7,6번 비트 5,4번 비트 3,2번 비트 1,0번 비트
00 10 11 01
8번 블록은 IN_USE, 9번 블록은 FREE_HIGH, 10번 블록은 FREE_LOW, 11번 블록은 GARBAGE 상태인 것이다.
- Priority List는 블록비트맵 구성시에 FREE_LOW 상태의 블록 중에서 가장 Erase Count가 낮은 5개의 블록을 가지며, Free Block 할당 요청이 들어왔을 경우 Priority List에서 먼저 할당된다. Priority Block이 더 이상 없을 경우, FREE_LOW 상태의 블록을 임의로 할당한다.
이하 본 발명에 따른 파일 시스템(300)에 대해 설명하기로 한다. 본 발명의 파일 시스템(300)은 파일 관리부(310)를 포함한다. 파일 관리부(310)는 낸드 플래시 메모리(400)에 저장되는 파일에 대해 그 메타정보인 파일 디스크립션(File Description)을 EEPROM(500)에 저장 관리한다. 그리고 부팅시 파일 시스템(300)의 파일 관리부(310)는 EEPROM(500)에 저장된 파일 디스크립션의 전체 집합인 디스크립션 맵을 읽어들여 SRAM(200)에 복사하고, 복사된 디스크립션 맵의 파일 디스크립션 정보(표 2에 기록된 정보)를 기반으로 하여 도 3에서와 같이 낸드 플래시 메모리(400)에 저장된 파일들의 위치를 파악하고 관리한다.
본 발명의 파일 시스템(300)은 블록 관리부(320)를 포함한다. 블록 관리부(320)는 부팅시 낸드 플래시 메모리(400)의 모든 블록의 특정 페이지의 스페어 영역에 기록된 블록의 사용 상태 정보(IN_USE, GARBAGE, FREE)를 읽어들여 SRAM(200)에 Block Info map을 구성한다. 그리고 블록의 사용 상태 변화에 따라 Block Info map에 구성된 블록의 상태 정보를 수정한다. 일 실시예에 있어서, 블록 관리부(320)는 도 3에서와 같이 각 블록의 상태 정보를 ‘00’,‘01’,‘00’,‘10’,‘11’중 어느 하나로 기록하여 관리한다. 이를 통해 본 발명은 낸드 플래시 메모리(400)의 전체 블록 상태를 관리할 수 있기 때문에, 삭제(Erase)된 블록 및 그 상태를 용이하게 파악하여 재사용을 위해 할당할 수 있다.
본 발명에 따른 파일 시스템(300)은 메모리 사용 평준화 처리부(330)를 포함한다. 메모리 사용 평준화 처리부(330)는 대용량 낸드 플래시 메모리(400)의 블록들에 대한 사용을 평준화시키고자 하는 것이다. 구체적으로 메모리 사용 평준화 처리부(330)는 블록의 사용 횟수를 체크한다. 일 예로, 블록의 삭제를 카운트(Erase count)함으로써 블록의 사용 횟수를 체크할 수 있다. 일 실시예에 있어서, 메모리 사용 평준화 처리부(330)는 블록의 삭제시마다 그 카운트를 블록의 특정 페이지의 스페어 영역에 저장한다. 그리고 그 스페어 영역에 기록된 블록의 사용 횟수가 한계치에 도달하였는지를 체크한다. 여기서 한계치(Wear Leveling을 위한 한계값)는 표 2에서와 같이 EEPROM(500)에 저장되어 있다. 블록의 사용 횟수가 한계치에 도달하면, 메모리 사용 평준화 처리부(330)는 그 블록의 사용을 배제시키고 한계치에 도달하지 않은 다른 블록들을 사용케 한다. 여기서 한계치는 적절한 값이 설정될 수 있는데, 예를 들어 블록 사용 횟수의 70% 정도가 될 수 있다. 낸드 플래시 메모리의 블록 사용 횟수가 대략 10만회 정도인 것을 고려하면, 약 7만회 정도의 횟수를 한계치로 설정하면 될 것이다.
본 발명의 파일 시스템(300)은 데이터 기록 처리부(340)를 포함한다. 데이터 기록 처리부(340)는 페이지에 기록될 데이터를 곧바로 낸드 플래시 메모리(400)의 해당 페이지에 기록하지 않고 SRAM(200)에 할당된 버퍼(도 3의 Buffer1 혹은 Buffer2)에 기록한다. 여기서는 Buffer1이라고 가정한다. 이후 또 기록될 데이터가 발생하면 SRAM(200)의 Buffer1에 추가 기록한다. 이를 계속 수행하여 SRAM(200)의 Buffer1이 모두 꽉 차게 되면, 데이터 기록 처리부(340)는 SRAM(200)의 Buffer1에 기록된 데이터들을 모두 낸드 플래시 메모리(400)의 한 페이지(FREE 페이지)에 기록한다. 본 발명의 특징적인 양상에 따라 SRAM의 Buffer1 및 Buffer2는 낸드 플래시 메모리(400)의 페이지와 동일한 용량을 갖기 때문에, 버퍼가 모두 꽉 차게 된 후 버퍼에 저장된 데이터들을 페이지로 옮겨 기록하면 한 페이지의 저장 용량을 완전하게 사용할 수 있게 된다.
기존 방식과 비교하면, 기존에는 기록할 데이터가 발생 시마다 페이지를 할당하여 기록해야 하기 때문에 자원의 낭비라는 문제가 발생할 수밖에 없다. 그러나 본 발명은 데이터를 SRAM(200)의 버퍼에 저장한 후 버퍼가 꽉 차면 버퍼에 저장된 데이터를 모두 낸드 플래시 메모리(400)의 한 페이지에 기록하는 방식이므로, 기존에 비해 약 3~4배 이상의 메모리 페이지와 에너지를 절약할 수 있다. 이는 보다 긴 시간 동안 데이터의 수집을 가능하게 하며, 센서 노드의 수명을 10% 이상 증가시킨다.
본 발명에 따른 파일 시스템(300)은 파일 생성부(350)를 포함한다. 파일 생성부(350)는 파일 모드(File Mode)에 따라 낸드 플래시 메모리에 기록되는 데이터들을 묶어 하나의 파일로 생성하되, 생성하고자 하는 파일에 대한 고정된 용량을 할당하거나 가변적으로 용량을 할당한다. 구체적으로 설명하면, 파일을 생성하고자 하는 Create 명령어를 사용하여 생성하고자 하는 파일에 대한 이름을 입력한 후 원하는 파일 모드를 입력한다. 본 발명에 따른 실시예에 있어서, 파일 모드는 WRITE FIXED, WRITE APPEND를 말한다. WRITE FIXED는 사용하고자 하는 데이터량을 고정하여 사용케 하는 것이며, WRITE APPEND는 데이터를 입력할 때마다 데이터 기록 영역을 넓히는 것이다.
WRITE FIXED를 선택하면 원하는 파일의 크기를 입력하게 된다. 예를 들어 20개의 파일이 저장되도록 한정된 경우를 고려하면, 파일 시스템은 우선 description_map.file_count라는 변수를 가지고 현재 가지고 있는 파일의 수를 체크한다. 20개를 초과하면 더 이상 파일을 생성할 수 없다는 메시지를 보내고 작업을 종료한다. 20개 미만이면 다음 단계로 넘어간다. 입력된 이름을 가지고 find_description_by_name이라는 현재 저장된 파일이름을 찾는 함수를 이용하여 현재 동일한 이름의 파일의 저장되어 있는지를 확인한다. 동일한 이름이 있다면 이를 알리는 메시지를 보내고 작업을 종료하며, 없다면 다음 단계로 넘어간다.
사용자가 입력한 파일의 이름과 모드를 description_map.description에 입력하고, eeprom.l_alloc_file_id를 읽어와서 하나를 증가시켜서 할당 description_map.description의 file id에 입력한다. s_buffer_check() 함수를 통해 buffer_num을 할당받아서 사용 여부를 검사하고 여유 버퍼가 없다면 작업을 종료한다. 그렇지 않으면 다음 단계로 넘어간다. 원하는 사이즈를 블록 단위로 환산하여 그 블록 수만큼 할당받고, 할당받은 첫번째 블록이 initial block으로 설정된다. 할당된 수만큼의 메모리 블록들은 순차적으로 블록의 3번째 페이지에 다음 블록의 주소를 저장하게 된다. 그리고 description_map.description의 내용들을 eeprom.file_description에 저장한다. 또한 description_map.description의 카운트(현재 생성된 파일의 수)를 하나 증가시키며, eeprom.file_description의 count 역시 하나 증가시킨다.
WRITE APPEND를 선택하면, description_map.file_count라는 변수를 가지고 현재 가지고 있는 파일의 수를 체크한다. 20개를 초과하면 더 이상 파일을 생성할 수 없다는 메시지를 보내고 작업을 종료한다. 20개 미만이면 다음 단계로 넘어간다. 입력된 이름을 가지고 find_description_by_name이라는 현재 저장된 파일이름을 찾는 함수를 이용하여 현재 동일한 이름의 파일의 저장되어 있는지를 확인한다. 동일한 이름이 있다면 이를 알리는 메시지를 보내고 작업을 종료하며, 없다면 다음 단계로 넘어간다.
사용자가 입력한 파일의 이름과 모드를 description_map.description에 입력하고, eeprom.l_alloc_file_id를 읽어와서 하나를 증가시켜서 할당 description_map.description의 file id에 입력한다. description_map.description의 내용들을 eeprom.file_description에 저장한다. 그리고 description_map.description의 카운트(현재 생성된 파일의 수)를 하나 증가시키며, eeprom.file_description의 count 역시 하나를 증가시킨다.
도 4 및 도 5는 Write append 모드와 Write fixed 모드를 비교하기 위한 예시도이다.
Write append 모드는 데이터를 기록하면서 현재 블록의 사용이 끝나면 추가로 블록을 할당받으며, 블록 단위로 링크(Link)를 걸고 이어서 기록하는 방식이다. 그리고 Write fixed 모드는 데이터를 기록할 때 특정 사이즈를 입력받고 그 키기만큼을 항상 보장하기 위한 것으로, 첫 블록부터 순서대로 기록하고 마지막 블록의 마지막 페이지에 도달하면 더 이상 데이터를 기록하지 못하는 방식이다. 그리고 위 두 방식의 모드는 데이터들의 묶음인 파일에 대해 블록의 Linked List를 사용하여 자료구조를 구현한다는 점에 있어서는 동일하다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (7)

  1. 센서 노드에 탑재되어 상기 센서 노드의 데이터 저장소로 이용되는 낸드 플래시 메모리용 파일 시스템에 있어서,
    상기 낸드 플래시 메모리에 저장되는 파일에 대한 메타정보를 상기 센서 노드에 결합되는 덮어쓰기가 가능한 외부 메모리에 저장하고, 부팅시 상기 외부 메모리에 저장된 메타정보를 상기 센서 노드의 메인 메모리로 복사하여 파일을 관리하는 파일 관리부;
    를 더 포함하는 것을 특징으로 하는 파일 시스템.
  2. 제1항에 있어서,
    상기 낸드 플래시 메모리의 각 블록에 블록의 사용 상태 정보를 기록하고, 부팅시 상기 낸드 플래시 메모리의 모든 블록에 기록된 블록의 사용 상태 정보를 읽어들여 맵을 구성하는 블록 관리부;
    를 포함하는 것을 특징으로 하는 파일 시스템.
  3. 제1항에 있어서,
    상기 낸드 플래시 메모리의 각 블록에 블록의 사용 횟수 정보를 기록하고, 그 기록된 사용 횟수를 파악하여 파악된 횟수가 상기 외부 메모리에 기록된 블록 사용 한계치에 도달하면 우선 사용을 배제하여 평균적으로 전체 블록의 사용 횟수를 평준화시키는 메모리 사용 평준화 처리부;
    를 포함하는 것을 특징으로 하는 파일 시스템.
  4. 제1항에 있어서,
    상기 낸드 플래시 메모리의 페이지에 기록하고자 하는 데이터를 상기 메인 메모리의 일부 할당된 영역에 기록하며, 상기 할당 영역이 채워지면 그 기록된 데이터 모두를 상기 낸드 플래시 메모리의 한 페이지에 기록하는 데이터 기록 처리부;
    를 포함하는 것을 특징으로 하는 파일 시스템.
  5. 제1항에 있어서,
    상기 할당 공간은 상기 페이지와 동일한 용량을 갖는 것을 특징으로 하는 파일 시스템.
  6. 제1항에 있어서,
    상기 낸드 플래시 메모리에 기록되는 데이터들을 묶어 하나의 파일로 생성하되, 생성하고자 하는 파일에 블록 단위의 고정된 용량을 부여하거나 가변적으로 용량을 부여하는 파일 생성부;
    를 더 포함하는 것을 특징으로 하는 파일 시스템.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서,
    상기 외부 메모리는 이이피롬(EEPROM)인 것을 특징으로 하는 파일 시스템.
KR1020080018517A 2008-02-28 2008-02-28 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템 KR20090093154A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020080018517A KR20090093154A (ko) 2008-02-28 2008-02-28 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020080018517A KR20090093154A (ko) 2008-02-28 2008-02-28 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템

Publications (1)

Publication Number Publication Date
KR20090093154A true KR20090093154A (ko) 2009-09-02

Family

ID=41301666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080018517A KR20090093154A (ko) 2008-02-28 2008-02-28 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템

Country Status (1)

Country Link
KR (1) KR20090093154A (ko)

Similar Documents

Publication Publication Date Title
US11847350B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US20220327050A1 (en) Storage system and information processing system for controlling nonvolatile memory
US10372331B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US7594062B2 (en) Method for changing data of a data block in a flash memory having a mapping area, a data area and an alternative area
TWI805323B (zh) 儲存裝置
US10353612B2 (en) Storage system, information processing system and method for controlling nonvolatile memory
US8521949B2 (en) Data deleting method and apparatus
KR100441587B1 (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
JP4185058B2 (ja) フラッシュメモリのリマッピング方法
JP5295778B2 (ja) フラッシュメモリ管理方法
JP4778942B2 (ja) 不揮発性メモリを管理する装置及び方法
CN1307555C (zh) 数据存储装置
US7991942B2 (en) Memory block compaction method, circuit, and system in storage devices based on flash memories
KR100453053B1 (ko) 플래쉬 메모리용 파일 시스템
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JPWO2005103903A1 (ja) 不揮発性記憶システム
JP2008198208A (ja) ホストデータ処理装置の動作方法、ホストデータ処理装置並びにデータ格納装置
CN110362499B (zh) 电子机器及其控制方法、计算机系统及其控制方法以及主机的控制方法
TW201344432A (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법
KR20090093154A (ko) 센서 노드용 대용량 낸드 플래시 메모리의 파일 시스템
JPH1031611A (ja) 不揮発性メモリ記憶媒体用ファイルシステム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E601 Decision to refuse application