KR100484147B1 - 플래시 메모리 관리 방법 - Google Patents

플래시 메모리 관리 방법 Download PDF

Info

Publication number
KR100484147B1
KR100484147B1 KR10-2002-0044301A KR20020044301A KR100484147B1 KR 100484147 B1 KR100484147 B1 KR 100484147B1 KR 20020044301 A KR20020044301 A KR 20020044301A KR 100484147 B1 KR100484147 B1 KR 100484147B1
Authority
KR
South Korea
Prior art keywords
area
data
recorded
block
data block
Prior art date
Application number
KR10-2002-0044301A
Other languages
English (en)
Other versions
KR20040009926A (ko
Inventor
인지현
이동희
김범수
김성관
윤송호
Original Assignee
삼성전자주식회사
지인정보기술 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사, 지인정보기술 주식회사 filed Critical 삼성전자주식회사
Priority to KR10-2002-0044301A priority Critical patent/KR100484147B1/ko
Priority to US10/626,839 priority patent/US7594062B2/en
Publication of KR20040009926A publication Critical patent/KR20040009926A/ko
Application granted granted Critical
Publication of KR100484147B1 publication Critical patent/KR100484147B1/ko
Priority to US12/233,908 priority patent/US20090031076A1/en

Links

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • 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
    • 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
    • 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/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

Landscapes

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

Abstract

본 발명은 플래시 메모리 관리 방법, 플래시 메모리 마모도 평준화 방법, 및 플래시 메모리 파일 시스템 관리 방법에 관한 것이다. 상기 본 발명에 따른 플래시 메모리 관리 방법은, 데이터 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 교대 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 사상 영역에 기록하는 단계와, 상기 교대 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 상기 데이터 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 상기 사상 영역에서 삭제하는 단계를 포함한다.

Description

플래시 메모리 관리 방법{Flash memory management method}
본 발명은 플래시 메모리 관리 방법, 플래시 메모리 마모도 평준화 방법, 및 플래시 메모리 파일 시스템 관리 방법에 관한 것이다.
* 플래시 변환 계층의 교대 사상 방법 *
플래시 메모리는 전기적으로 데이터의 소거와 프로그램이 가능한 고집적 비휘발성 메모리로서, 데이터의 기록 및 삭제가 자유로운 램의 장점과 전원의 공급 없이도 저장된 데이터를 보존하는 롬의 장점을 동시에 지니고 있어 최근 디지털 카메라, PDA, MP3 플레이어 등 휴대용 전자기기의 저장 매체로 널리 채택되고 있다.
플래시 메모리가 기존의 다른 메모리와 크게 다른 점은 메모리 데이터의 변경이 전기적 소거 과정과 프로그램 과정으로 비원자적(non-atomic)이라는 점이다. 초기 상태에서 플래시 메모리의 각 비트는 1의 값을 가진다. 그리고, 소정의 위치에 데이터를 기록하기 위해 하나의 비트를 1에서 0으로 바꾸는 것은 가능하나, 일단 0으로 기록된 비트를 1로 되돌리는 것은 불가능하다. 따라서, 소정의 위치의 데이터를 변경하기 위해서는 해당 위치를 포함하는 일정량의 메모리 블럭을 전기적 소거 과정을 거쳐 1로 재초기화 한 다음에야 새로 기록할 수 있다.
파일 시스템이 소정의 블럭 사상 기능을 이용하지 않고 직접 플래시 메모리의 물리 주소를 이용하여 쓰기 등의 동작을 하면 블럭 사상에 필요한 메모리는 절약할 수 있으나, 이러한 경우 플래시 메모리 변경의 비원자적인 특성에 기인하는 문제가 발생한다. 즉, 소정의 위치의 데이터를 변경하기 위해 해당 메모리 블럭을 전기적으로 소거한 후 새로운 데이터를 기록하기 전에 오류가 발생하는 경우 해당 메모리 블럭에는 기존의 데이터도 남아있지 않고 새로운 데이터도 기록되어 있지 않으며 전혀 다른 데이터를 가지게 된다. 그러나, 이와 같은 비원자적 특성에 기인하는 상황은 기존의 파일 시스템이 대처하지 못한다.
따라서, 파일 시스템이 플래시 메모리를 하드 디스크와 같은 블럭 장치로 사용할 수 있도록 블럭을 사상해주는 소프트웨어인 플래시 변환 계층(FTL:Flash Translation Layer)이 요구된다. 이와 같이 플래시 변환 계층을 포함하는 플래시 메모리 파일 시스템의 계층(100)이 도 1에 개략적으로 도시되어 있다.
파일 시스템(110)이 작업하려는 파일의 논리적인 위치에 대한 정보를 플래시 변환 계층(120)에 제공하면, 플래시 변환 계층(120)은 파일 시스템으로부터 제공받은 논리적인 위치에 대한 정보를 사상 정보를 이용하여 물리적인 위치에 대한 정보로 변환한다. 그리고, 플래시 변환 계층(120)이 파일의 물리적인 위치에 대한 정보를 이용하여 디바이스 드라이버(130)에게 해당 파일에 대한 작업을 요청하면, 디바이스 드라이버(130)는 파일의 물리적인 위치 정보를 이용하여 플래시 메모리(140)에 기록된 파일에 대해 작업을 수행한다.
플래시 메모리(140)는 블럭과 페이지의 구조를 갖추고 있으며 블럭과 페이지의 크기는 플래시 메모리 제품마다 다르게 정해질 수 있는데, 일예로 전체 크기가 16메가바이트이면서 블럭의 크기가 16 킬로바이트이고, 페이지의 크기가 512 바이트인 플래시 메모리는 1024개의 블럭으로 구성되며 각 블럭은 32개의 페이지로 구성된다. 이때 데이터의 기록 및 판독은 페이지 단위이고, 전기적 소거는 블럭 단위로 이루어진다.
그러나, 플래시 메모리의 용량이 대형화 될수록 플래시 변환 계층이 블럭 사상에 필요한 메모리 요구량도 증가하게 된다.
도 2a에 종래 기술에 따른 플래시 메모리의 구성이 도시되어 있다. 플래시 메모리(200)에는 데이터와 데이터 블럭의 사상 정보가 가지는 사상 테이블이 기록되는데 사상 테이블은 플래시 메모리의 여러 블럭에 분산되어 저장되며, 사상테이블1(210),... 사상테이블4(240)을 포함한다. 이와 같이 데이터 블럭의 사상 정보가 여러 군데에 분산되어 있으므로, 데이터를 읽거나 쓰기 위해서는 먼저 도 2b에 도시된 바와 같이 플래시 메모리(200)에 분산되어 있는 복수개의 사상 테이블들을 합쳐서 전체 사상 테이블을 생성하여야 한다. 따라서, 이와 같은 종래 기술에 의하여 플래시 메모리 동작을 하기 위해서는 먼저 전체 사상 테이블을 생성하여야 하므로 동작 시간이 지연되고, 사상 테이블에는 모든 데이터의 사상 정보가 포함되어야 하므로 용량이 커져서 플래시 메모리를 낭비하게 된다는 문제점이 있다.
* 플래시 메모리의 마모도 평준화 방법 *
플래시 메모리는 각 블럭마다 데이터를 기록할 수 있는 유한한 수명을 가진다. 이러한 수명은 블럭에 수행된 전기적 소거 횟수와 밀접한 관계가 있는데, 전기적 소거 횟수가 일정 횟수 이상으로 많아지면 데이터의 기록에 장애가 발생할 수 있다. 전기적 소거 회수의 상한은 통상 10만번 내지 100만번 이상으로 플래시 제품마다 다르게 정해진다.
특정 블럭에 대해서만 반복적으로 전기적 소거가 수행되면 상기 특정 블럭만 수명을 다해 더이상 데이터의 기록이 어려울 수 있다. 따라서, 특정 블럭에 대해서만 반복적으로 전기적 소거가 수행되는 것을 방지하고 전체 블럭이 고르게 사용되면서 소거되도록 하여 모든 블럭의 수명을 평준하게 유지시키는 소프트웨어적인 방법인 마모도 평준화 방법이 제안되어 왔다.
기존의 마모도 평준화 방법은 플래시 메모리에 포함된 모든 데이터 블럭의 전기적 소거 횟수 정보를 플래시 메모리의 각 데이터 블럭마다에 유지하므로 메모리 용량이 낭비되고 관리가 어려우며 성능상의 오버헤드를 수반한다는 문제점이 있었다.
* 플래시 메모리 파일 시스템의 클러스터 교체 방법 *
플래시 메모리 파일 시스템에서는 기존의 파일에 대한 갱신이 반드시 원자적으로 이루어져야 한다. 본 발명에 의하면 디렉토리나 FAT(File Allocation Table)등의 메타 데이터 및 파일 데이터의 변경을 모두 플래시 변환 계층이 제공하는 원자적 쓰기 기능을 이용하여 트랜잭션 형태로 처리함으로써 파일 시스템의 무결성을 구현할 수 있다. 이와 같은 구현에서는 만일 트랜잭션을 완료하기 전에 오류가 발생할 경우 트랜잭션을 개시하기 이전의 상태로 복구됨이 보장되므로 시스템이 비정상적으로 종료하더라도 파일 시스템 검사와 같은 작업을 수행하지 않고도 빠르게 재기동할 수 있다. 그러나, 플래시 변환 계층이 제공하는 원자적 쓰기는 직접 플래시 메모리의 물리 주소를 이용하여 기록하는 비원자적 쓰기에 비해 효율이 떨어진다. 따라서, 시스템의 성능을 향상시키기 위해 다량의 데이터에 대한 비원자적 쓰기를 허용하면서 원자적 복구도 가능하도록 하는 최적화된 방법이 필요하다.
상기와 같은 문제점을 해결하기 위한 본 발명의 하나의 목적은 플래시 변환 계층 구현시 요구되는 메모리 용량을 감소시키고 시스템 기동 시간을 단축시키는 플래시 메모리 관리방법, 플래시 메모리 쓰기 방법, 플래시 메모리 읽기 방법, 플래시 메모리를 제공하는 것이다.
본 발명의 다른 목적은 성능상의 오버헤드 없이 플래시 메모리의 전체 블록을 고르게 사용되면서 소거되도록 하여 모든 블럭의 수명을 평준하게 유지시키는 플래시 메모리 마모도 평준화 방법, 플래시 메모리 마모도 평준화 시스템을 제공하는 것이다.
본 발명의 또다른 목적은 소정의 데이터를 트랜잭션에서 제외함으로써 플래시 메모리 파일시스템의 성능을 전체적으로 향상시키는 플래시 메모리 파일 시스템 관리 방법, 플래시 메모리 파일 갱신방법, 플래시 메모리 파일 시스템을 제공하는 것이다.
상기와 같은 과제를 해결하기 위한 본 발명의 하나의 특징은, 플래시 메모리 관리 방법에 있어서, 데이터 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 교대 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 사상 영역에 기록하는 단계와, 상기 교대 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 상기 데이터 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 상기 사상 영역에서 삭제하는 단계를 포함하는 것이다.
바람직하게는, 상기 사상 정보는 상기 데이터 블럭의 논리블럭번호이다.
또한, 바람직하게는, 상기 데이터 블럭의 변경된 내용을 교대 영역에 기록하는 경우에는 변경된 내용을 교대 영역의 임의의 블럭에 기록한다.
또한, 바람직하게는, 상기 데이터 블럭의 변경된 내용을 데이터 블럭에 기록하는 경우 변경된 내용을 상기 데이터 블럭의 논리블럭번호에 대응하는 데이터 영역의 위치에 기록한다.
본 발명의 다른 특징은, 교대 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 데이터 영역과, 데이터 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 교대 영역과, 상기 교대 영역에 포함된 데이터 블럭의 사상 정보를 가지는 사상 영역을 포함하는 플래시 메모리 쓰기 방법으로서, 플래시 메모리에 데이터 블럭 쓰기 요청을 수신하는 단계와, 상기 사상 영역에서 상기 쓰기 요청된 데이터 블럭에 관한 사상 정보를 검색하는 단계와, 검색 결과 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보가 없으면, 상기 교대 영역에 상기 쓰기 요청된 데이터 블럭을 쓰고, 상기 사상 영역에 상기 데이터 블럭에 대한 사상 정보를 기록하는 단계와, 검색 결과 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보가 있으면, 상기 쓰기 요청된 데이터 블럭을 상기 데이터 영역에 쓰고, 상기 사상 영역에 존재하는 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보를 삭제하는 단계를 포함하는 것이다.
본 발명의 또다른 특징은, 교대 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 데이터 영역과, 데이터 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 교대 영역과, 상기 교대 영역에 포함된 데이터 블럭의 사상 정보를 가지는 사상 영역을 포함하는 플래시 메모리 읽기 방법으로서, 플래시 메모리에 데이터 블럭 읽기 요청을 수신하는 단계와, 상기 사상 영역에서 상기 읽기 요청된 데이터 블럭에 관한 사상 정보를 검색하는 단계와, 검색 결과 상기 읽기 요청된 데이터 블럭에 대한 사상 정보가 없으면, 상기 데이터 영역으로부터 상기 읽기 요청된 데이터 블럭을 읽는 단계와, 검색 결과 상기 읽기 요청된 데이터 블럭에 대한 사상 정보가 있으면, 상기 상기 교대 영역으로부터 상기 읽기 요청된 데이터 블럭을 읽는 단계를 포함하는 것이다.
본 발명의 또다른 특징은,플래시 메모리에 있어서, 교대 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 데이터 블럭이 기록되는 데이터 영역과, 상기 데이터 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 데이터 블럭이 기록되는 교대 영역과, 상기 교대 영역에 기록된 상기 데이터 블럭의 사상 정보를 가지는 사상 테이블이 기록되며, 상기 데이터 블럭이 데이터 영역에 기록될 때는 상기 데이터 블럭의 사상 정보가 삭제되는 사상 영역을 포함하는 것이다.
바람직하게는, 상기 데이터 영역, 상기 교대 영역, 상기 사상 영역에 관한 정보를 가지는 마스터 블럭을 더 포함한다.
또한, 바람직하게는, 상기 데이터 영역에 존재하는 데이터 블럭의 물리 블럭 번호는 논리 블럭 번호와 일대일로 대응된다.
또한, 바람직하게는, 상기 사상 영역은 소정의 수의 블럭을 포함하고, 각 블럭은 소정의 수의 페이지를 포함하며, 제1 사상 테이블은 제1 블럭의 제1 페이지에 기록되고, 상기 제1사상 테이블의 내용이 변경된 제2 사상 테이블은 제1 블럭의 제2 페이지에 기록되며, 상기 제1 블럭의 페이지가 모두 기록되면 제 n 사상 테이블은 제2 블럭의 제1 페이지에 기록된다.
본 발명의 또다른 특징은, 플래시 메모리의 마모도를 평준화하는 방법에 있어서, 시스템 기동후 전기적 소거가 수행된 데이터 블럭의 전기적 소거 수행 회수에 관한 정보를 기록하는 제1단계와, 상기 데이터 블럭의 전기적 소거 수행 회수가 소정의 임계치를 초과하면 전기적 소거 수행 회수가 더 작은 데이터 블럭과 교환하는 제2단계를 포함하는 것이다.
바람직하게는, 상기 제2단계는, 미사용중인 물리 블럭이 존재하는지를 판단하는 단계와, 판단결과 미사용중인 물리 블럭이 존재하면 상기 데이터 블럭의 위치와 상기 미사용중인 물리 블럭의 위치를 교환하는 단계와, 판단결과 미사용중인 물리 블럭이 존재하지 않으면 상기 데이터 블럭의 위치를 상기 데이터 블럭의 전기적 소거 수행 회수보다 더 작은 전기적 소거 수행 회수를 가지는 물리 블럭과 교환하는 단계를 포함한다.
또한, 바람직하게는, 상기 전기적 소거 수행 회수에 관한 정보는 램에 기록된다.
본 발명의 또다른 특징은, 플래시 메모리의 마모도를 평준화하는 시스템에 있어서, 데이터 블럭이 기록된 플래시 메모리와, 시스템 기동후 전기적 소거가 수행된 데이터 블럭의 전기적 소거 수행 회수에 관한 정보가 기록되는 마모도 평준화 리스트를 포함하는 것이다.
바람직하게는, 상기 마모도 평준화 리스트는 램에 기록된다.
또한, 바람직하게는, 상기 마모도 평준화 리스트에 시스템 기동후 전기적 소거가 수행된 데이터 블럭중 최근에 전기적 소거가 수행된 소정의 개수의 블럭에 관한 전기적 소거 수행 회수에 관한 정보가 기록된다.
또한, 바람직하게는, 전기적 소거 수행 회수가 소정의 임계치를 초과한 데이터 블럭은 전기적 소거 수행 회수가 가장 낮은 데이터 블럭과 교환된다.
본 발명의 또다른 특징은, 파일 영역과 FAT 영역을 포함하는 플래시 메모리 파일 시스템 관리 방법에 있어서, 파일 영역에 기록된 파일의 클러스터 정보를 FAT 영역에 기록하는 단계와, 상기 파일의 변경이 요청되는 경우 변경된 내용을 새로운 클러스터에 기록하는 단계와, 상기 FAT 영역에 기록된 클러스터 정보에 상기 새로운 클러스터에 관한 정보를 반영하는 단계를 포함하는 것이다.
본 발명의 또다른 특징은, 플래시 메모리에 파일을 갱신하는 방법에 있어서,데이터 영역의 각 클러스터에 대응하는 엔트리를 가지는 FAT 영역의 엔트리에 데이터 영역에 기록된 파일의 다음 클러스터 정보를 기록하는 단계와, 상기 파일에 포함된 클러스터 Cold의 데이터 갱신이 요청되는 경우 새로운 클러스터 Cnew에 갱신된 데이터를 기록하는 단계와, 상기 FAT 영역의 엔트리에 상기 클러스터 Cold 대신 상기 새로운 클러스터 Cnew가 연결되도록 상기 다음 클러스터 정보를 수정하는 단계를 포함하는 것이다.
바람직하게는, 상기 파일의 첫번째 클러스터 정보를 루트 디렉토리 영역에 기록하는 단계를 더 포함한다.
또한, 바람직하게는, 상기 FAT 영역의 엔트리에 클러스터 정보의 기록은 원자적 쓰기로 수행되고, 상기 데이터 영역의 클러스터에 파일 데이터의 기록은 비원자적 쓰기로 수행되는 단계를 더 포함한다.
본 발명의 또다른 특징은, 플래시 메모리 파일 시스템에 있어서, 하나 이상의 클러스터로 이루어지는 파일이 기록되는 데이터 영역과, 상기 데이터 영역에 기록되는 파일의 첫번째 클러스터 정보를 가지고 있는 루트 디렉토리 영역과, 각 클러스터에 대응하는 엔트리를 가지며, 상기 엔트리에 상기 데이터 영역에 기록된 파일의 다음 클러스터 정보가 기록되는 FAT 영역을 포함하며, 상기 파일을 이루는 소정 클러스터의 내용의 변경이 요청되는 경우 변경된 내용을 새로운 클러스터에 기록하고, 상기 FAT 영역에 기록된 파일의 클러스터 정보에 상기 새로운 클러스터에 관한 정보를 연결하는 것이다.
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
도 3에 본 발명에 따른 플래시 메모리(300)의 구성이 도시되어 있다. 플래시 메모리(300)는 마스터 블럭(310)과, 사상영역(320)과, 데이터영역(330)과, 교대영역(340)을 포함한다. 도 3에 도시된 바와 같이 플래시 메모리가 n개의 블럭으로 구성되는 경우 플래시 메모리는 마스터 블럭이 1개 블럭, 사상 영역이 2개 블럭, 교대 영역이 s개 블럭, 데이터 영역이 n-s-3 개 블럭으로 구성된다.
또한, 플래시 메모리의 물리적인 위치를 나타내는 물리 블럭 번호는 플래시 메모리의 시작위치 0번부터 시작하여 n-1번까지 이루어지고, 논리 블럭 번호는 실제 유효한 데이터가 기록되는 데이터 영역의 번지를 나타내는 것으로 데이터 영역의 시작위치 0번 부터 시작하여 n-s-4번까지 이루어진다. 본 예서는 논리 블럭 번호와 물리 블럭 번호가 일대일로 대응되며, 예를 들어, 논리블럭 0은 물리블럭 3에 대응된다.
마스터 블럭(310)은 물리블럭 0번에 위치하며, 사상 영역, 데이터 영역, 교대 영역의 위치와 크기를 지정하는 테이블을 가진다. 특히, 불량 블럭(bad block)이 존재하는 경우 불량 블럭에 대한 정보를 마스터 블럭에 기록하여 적절히 배제하는 기능을 구현할 수 있다.
사상 영역(320)은 물리블럭 1번과 물리블럭 2번에 위치하며 교대 영역에 존재하는 각 블럭에 대한 사상 정보를 기록하는 테이블을 가진다. 도 3에는 사상 영역을 두 블럭으로 표시하였지만, 이에 한정되는 것은 아니며, 사상영역은 플래시 메모리의 여러 위치에 분산되어 있지 않고 일정한 위치, 예를 들어, 마스터 블럭 뒤에 존재한다. 따라서, 사상 테이블을 찾기 위하여 전체 플래시 메모리를 검사할 필요가 없게 된다.
데이터 영역(330)과 교대 영역(340)은 데이터가 기록되는 영역으로서, 처음 데이터 기록시에는 데이터 영역에 기록하고, 일단 데이터 영역에 기록된 데이터를 변경하는 경우에는 교대 영역에 기록하고, 교대 영역에 기록한 데이터를 다시 변경하는 경우에는 데이터 영역에 기록한다. 도 3에 도시된 데이터 영역과 교대 영역은 각각 n-s-3개와 s개의 블럭으로 구성된다.
데이터 영역에 존재하는 각 블럭의 물리블럭번호는 논리블럭번호에 일대일로 대응된다. 따라서, 논리블럭번호를 물리블럭번호로 사상하는 별도의 사상 테이블이 필요하지 않으며 논리블럭번호는 물리블럭번호에 대한 단순한 연산에 의하여 변환될 수 있다. 데이터 영역에 위치한 블럭에 새로운 데이터를 기록하는 경우에는 사용되지 않는 페이지에 기록하면 된다. 한편, 데이터 영역에 위치한 블럭에 기록된 기존의 데이터를 변경하는 경우에는 원래의 블럭이 아닌 별도의 블럭에 변경된 내용을 기록해야 한다. 블럭에 포함된 페이지들중 하나라도 변경되면 전체 블럭이 새로 기록되며, 이러한 경우에 교대 영역의 s 개 블럭들중 하나를 선택하여 기록한다. 그리고, 교대 영역에 존재하는 블럭들에 관한 정보는 사상 테이블에 의해 관리된다. 교대 영역에 위치한 블럭의 데이터가 다시 변경되는 경우 해당 블럭은 데이터 영역에 위치한 원래의 블럭에 기록된다.
또한, 교대 영역에 포함된 블럭들의 수 만큼 원자적 쓰기를 지원한다. 즉, 교대 영역에 5개의 블럭이 포함되어 있으면, 최대 5개 블럭의 동시 쓰기를 지원할 수 있다.
본 발명에 따른 교대사상 방법의 일 예를 도 4a와 도 4b를 참조하여 설명한다. 도 4a에 도시한 바와 같이, 논리블럭 0번은 물리블럭 3번에 위치하고, 논리블럭 3번은 물리블럭 6번에 위치하는데, 논리블럭 0번에 기록된 데이터의 변경이 요청되면 논리블럭 0번의 변경 내용은 교대 영역의 한 블럭 즉, 물리블럭 n-s 번에 기록되고 그 위치 정보가 사상 영역에 존재하는 사상 테이블에 기록되며, 논리블럭 3번에 기록된 데이터의 변경이 요청되면 논리블럭 3번의 변경 내용은 교대영역의 한 블럭, 즉 물리블럭 n-s+1번에 기록되고 그 위치 정보가 사상 영역에 존재하는 사상 테이블에 기록된다. 데이터 영역에 존재하는 데이터의 변경이 요청되어 교대 영역에 기록하는 경우, 변경 내용의 블럭은 교대 영역의 총 s 개 블럭중 어떠한 블럭에도 위치할 수 있다.
이후에, 교대 영역에 위치하고 있는 논리 블럭 0번 데이터에 대해서 데이터의 변경이 요청되면, 도 4b에 도시한 바와 같이, 논리블럭 0번의 변경된 내용은 데이터 영역의 물리블럭 3번에 기록되고 해당 교대 영역의 위치 정보가 사상 테이블에서 삭제된다.
본 발명에 따른 교대 사상 방법을 위한 사상 테이블(500)의 구조를 도 5를 참조하여 설명하면, 교대 영역에 존재하는 s개의 블럭에 각각 어떤 논리 블럭이 위치해 있는지에 관한 위치 정보가 사상 테이블에 기록된다. 사상 테이블의 초기 상태 즉, 교대 영역의 블럭이 사용되고 있지 않으면 해당 블럭의 사상 정보는 -1이 되고, 유효한 데이터를 가지고 있으면 해당 논리블럭번호 또는 물리블럭번호를 가지고 있다. 초기 상태에는 사상 테이블의 사상 정보는 모두 -1이다.
본 발명에 따른 교대 사상 방법을 위한 사상 테이블의 갱신 동작의 일예를 도 6a와 도 6b를 참조하여 설명하면, 사상 테이블은 물리 블럭 1번 또는 2번에 기록된다. 도 6a에 도시한 바와 같이 초기 상태에는 물리 블럭 1번의 첫번째 페이지에 사상 테이블이 기록된다. 데이터 쓰기 동작을 수행하면서 사상 테이블이 변경되면 새로운 사상 테이블은 물리 블럭 1번의 두번째 페이지에 기록된다. 그리고, 도 6b에 도시한 바와 같이, 여러번의 데이터 쓰기 동작을 수행하여 물리 블럭 1번에 사상 테이블을 기록할 더 이상의 페이지가 없으면 마지막 사상 테이블을 물리 블럭 2번에 기록하고 물리 블럭 1번은 전기적 소거를 수행한다.
본 발명에 따른 교대 사상 기법을 이용한 읽기 동작을 도 7을 참조하여 설명한다.
논리 블럭 n번에 대한 플래시 메모리 읽기가 요청되면(S710), 사상 영역에 존재하는 사상 테이블에 논리 블럭 번호 n이 존재하는지를 검색한다(S720). 사상 테이블에 논리 블럭 번호 n이 존재하면(S730) 교대 영역의 해당 블럭으로부터 읽기를 수행하고(S740), 사상 테이블에 논리블럭 번호 n 이 존재하지 않으면 데이터 영역의 해당 블럭으로부터 읽기를 수행한다(S750).
본 발명에 따른 교대 사상 기법을 이용한 쓰기 동작을 도 8을 참조하여 설명한다.
논리 블럭 n번에 대한 플래시 메모리 쓰기가 요청되면(S810), 사상 영역에 존재하는 사상 테이블에 논리 블럭 번호 n이 존재하는지를 검색한다(S820). 사상 테이블에 논리블럭 번호 n이 존재하면(S830), 데이터 영역의 해당 블럭에 플래시 쓰기를 수행하고(S840), 교대 영역에는 더이상 해당 블럭이 존재하지 않으므로 사상 테이블에서 논리 블럭 번호 n을 삭제한다(S850). 사상 테이블에 논리 블럭 번호 n이 존재하지 않으면, 교대 영역의 사용되지 않는 임의의 블럭에 플래시 쓰기를 수행하고(S860), 사상 테이블에 논리 블럭 번호 n을 기록한다(S870).
* 플래시 메모리의 마모도 평준화 방법 *
본 발명에 따른 마모도 평준화 방법은, 모든 플래시 메모리 데이터 블럭이 최초로 사용되기 시작한 때부터의 마모도를 플래시 메모리에 유지하는 것이 아니라 시스템이 기동한 후 수집된 전기적 소거 회수 정보만을 램에 유지하면서 마모도 평준화를 수행한다. 시스템 기동후 전기적 소거가 수행된 블럭중 소정 시간을 기준으로 최근 n개의 블럭에 대한 전기적 소거 회수를 랜덤 액세스 메모리(RAM)에 리스트로 유지한다. 이와 같은 마모도 평준화 리스트에 등록되어 있지 않은 물리 블럭들은 모두 마모도를 0으로 간주한다. 일예로, SLRU(Segmented Least Recently Used) 리스트를 적용할 수 있다.
본 발명에 따라 플래시 메모리의 마모도를 평준화시키는 과정을 도 9를 참조하여 설명한다.
물리 블럭 n번에 대한 플래시 메모리 소거가 요청되면(S901) 해당 물리 블럭 n에 대해 전기적 소거를 수행한다(S902). 다음, 마모도 평준화 리스트에 n이 존재하는지를 검색한다(S903).
검색결과, n이 존재하지 않는 경우에는(S904) 마모도 평준화 리스트에 n을 삽입하고(S905), n의 마모도 w를 1 증가시킨 다음(S906) 종료한다.
검색결과, n이 존재하는 경우에는(S904) n의 마모도 w를 1 증가시키고(S907), w가 임계치보다 큰지를 판단한다(S908).
S908의 판단결과, w가 임계치보다 크지 않으면 종료하고, w가 임계치보다 크면 마모도 평준화 리스트에 등록되어 있지 않고, 미사용중인 물리블럭 m을 탐색한다(S909).
미사용중인 물리블럭 m이 존재하면(S910) 물리 블럭 m을 소거하고(S913), 미사용중인 물리블럭 m이 존재하지 않으면, 마모도 평준화 리스트에 등록되어 있지 않은 물리블럭 m을 임의로 선택하고(S911), m의 데이터를 n에 복사한 다음(S912), S913으로 진행하여 물리블럭 m을 소거한다.
그리고나서, 마모도 평준화 리스트에 m을 삽입하고(S914), m의 마모도 w'를 1로 기록하고(S915), 물리주소변환테이블을 수정한다(S916).
이와 같이, 물리 블럭의 마모도가 임계치를 초과하여 미사용중인 블럭에 쓰기를 하거나, 사용중인 블럭중에서 마모도가 낮은 블럭과 교환하는 경우에 블럭의 물리적인 위치가 변환되므로, 교환된 블럭의 위치에 관한 정보를 기록해두어야 한다. 따라서, 사상 영역의 각 페이지에는 교대 사상 테이블뿐만 아니라 물리 주소 변환테이블을 저장해두는 것이 요구된다. 예를 들어, 도 12에 도시된 바와 같이, 사상 영역의 각 페이지는 물리주소 변환테이블(1210)과 교대사상 테이블(1220)을 포함하며, 물리주소변환테이블에는 교환되는 불럭에 관한 정보를 가진다.
예를 들어, 미사용중인 물리블럭 7 이 존재하는 경우의 동작을 도 10a와 도 10b를 참조하여 설명한다. 도 10a와 도 10b에 도시된 바와 같이 마모도 평준화 리스트는 리스트의 길이가 4인 경우, 전기적 소거가 수행된 블럭들중 최근 4개의 블럭의 리스트를 유지할 수 있다. 도 10a에 도시된 바와 같이 플래시 메모리의 물리블럭 3-6은 사용중이고, 물리블럭 7-12는 미사용중이며, 램에 저장된 마모도 평준화 리스트에는 물리블럭 3-6에 대한 마모도가 기록되어 있다. 그리고, 마모도의 임계치가 10인 경우에, 물리 블럭 5에 대한 전기적 소거 요청이 있으면, 먼저 물리 블럭 5의 내용을 소거하고, 임계치를 검사하는데 물리 블럭 5의 마모도는 11이 되어 임계치를 초과한다. 그러므로, 도 10b에 도시된 바와 같이, 미사용중인 물리블럭 7을 탐색하여 물리 블럭 7의 내용을 소거하고, 마모도 평준화 리스트에 물리블럭 번호 7을 삽입한다. 그리고, 물리블럭 7번의 전기적 소거는 한번 이루어졌으므로, 마모도는 1로 기록된다. 이때, 논리블럭 2번의 내용이 물리블럭 7번으로 사상된 것에 관한 정보는 별도의 물리주소변환테이블을 구현하여 기록해 둘 수 있다.
다음, 미사용중인 물리블럭이 존재하지 않는 경우의 동작을 도 11a와 도 11b를 참조하여 설명한다. 도 11a와 도 11b에 도시된 바와 같이 마모도 평준화 리스트는 리스트의 길이가 4인 경우, 전기적 소거가 수행된 블럭들중 최근 4개의 블럭의 리스트를 유지할 수 있다. 도 11a에 도시된 바와 같이, 플래시 메모리의 물리블럭3-12가 모두 사용중이고 물리블럭 3-6에 대한 마모도가 마모도 평준화 리스트에 모두 등록되어 있는 경우 물리블럭 5에 대한 전기적 소거 요청이 있는 경우에 먼저 물리블럭 5의 내용을 소거하고 임계치를 검사하는데 물리블럭5의 마모도는 11이 되어 임계치를 초과한다. 그러므로, 도 11b에 도시된 바와 같이, 물리블럭들중 마모도가 낮은 교환대상인 물리블럭 7을 선택하여 물리블럭 7의 데이터를 물리블럭 5에 복사하고, 물리블럭 7의 데이터를 소거한다. 그리고, 마모도 평준화 리스트에 물리블럭 번호 7을 삽입하고, 마모도를 1로 기록한다.
도 10a 내지 도 11b를 설명한 예에서는 전기적 소거가 수행된 모든 블럭을 리스트에 기록하였지만, 이에 한정되는 것은 아니며, 전기적 소거가 수행된 블럭들중 소정 시점을 기준으로 최근 n개의 블럭의 리스트만 유지할 수도 있다.
* 플래시 메모리 파일 시스템의 클러스터 교체 방법 *
본 발명에 따른 플래시 메모리 파일 시스템의 일 예를 도 13a와 도 13b를 참조하여 설명한다.
도 13a에 도시된 파일 시스템(1300)은 부트 블럭(1310), FAT(1320), FAT 디스크 캐쉬(1330), 루트 디렉토리(1340), 파일(1350)을 포함한다.
부트 블럭(1310)은 0번 클러스터의 0번 섹터에 위치하며, 클러스터의 크기와 섹터의 개수, 클러스터당 섹터의 개수, FAT의 시작 섹터 번호와 크기, FAT 디스크 캐쉬의 시작 클러스터 번호와 크기, 루트 디렉토리의 시작 클러스터 번호에 대한 정보를 가지고 있다.
FAT(1320)는 파일 시스템의 각 클러스터에 대응하는 엔트리를 가진다. 포맷 직후에 부트 클러스터(0번 클러스터)로부터 루트 디렉토리(6번 클러스터)에 해당하는 0번-6번 엔트리는 0으로, 나머지 엔트리는 모두 0xFFFF로 초기화가 된다. FAT 엔트리의 값이 0xFFFF 인 경우에는 해당 클러스터가 사용되지 않음을 의미하며, 0xFFFF가 아닌 경우에는 사용중임을 의미한다. 각 엔트리에는 해당 파일의 다음 클러스터가 위치한 클러스터 번호가 기록된다.
FAT 디스크 캐쉬(1330)는 FAT의 변경 내용을 먼저 512 바이트 크기로 기록하는 역할을 수행한다. FAT 를 판독할 때마다 FAT 디스크 캐쉬를 먼저 검색하여 해당 FAT 섹터가 존재하면 FAT 디스크 캐쉬에서 FAT를 판독한다. FAT 디스크 캐쉬에 없으면 FAT 영역에서 FAT를 판독한다.
디렉토리가 만들어지면 루트 디렉토리(1340)의 엔트리에는 기본적으로 "."과 ".."을 위한 2개의 항목이 생성된다. "."항목은 디렉토리 엔트리 자신을 가리키는 항목으로서, FAT_체인 필드는 자신이 저장되어 있는 클러스터 번호로 설정된다. 그리고, 초기에 "."의 크기 필드는 2로 설정되는데, 이는 그 디렉토리에 존재하는 파일이나 디렉토리의 개수를 나타낸다. ".." 항목은 부모 디렉토리를 가리키는 항목으로서, 루트 디렉토리의 경우 특별히 자신을 가리킨다.
루트 디렉토리에 "파일 1"이라는 이름의 파일이 생성되면, 디렉토리 엔트리에 "파일 1"을 위한 항목을 생성하고, FAT_체인 필드는 파일이 저장되어 있는 첫번째 클러스터 번호가 기록되며, 크기 필드는 파일에 할당된 클러스터의 개수가 기록된다. 그리고, FAT는 "파일 1"에 대한 클러스터 체인을 반영하도록 수정한다.
예를 들어, 도 13a에 도시한 바와 같이, 클러스터 7번, 8번, 9번에 파일 1이 기록되는 경우에는, 루트 디렉토리에 파일 1에 대한 항목을 생성하고, FAT_체인에는 파일 1의 첫번째 클러스터 번호인 7이 기록된다. 그리고, FAT 영역에서, 7번 엔트리에는 파일 1의 두번째 클러스터 번호인 8이 기록되고, 8번 엔트리에는 파일 1의 세번째 클러스터 번호인 9가 기록되며, 9번 엔트리에는 파일 1의 종료를 나타내기 위해 0이 기록된다. 이와 같이, FAT 의 각 엔트리가 연쇄적으로 해당 파일의 다음 클러스터 번호를 가지고 있으며, 이와 같이 연쇄적인 엔트리가 FAT_체인을 이룬다.
"파일 1"의 내용이 변경되는 경우에 기존의 클러스터에 변경된 내용을 기록하지 않고 새로운 클러스터를 할당받아 변경된 내용을 기록한다. 그리고, 새로운 클러스터에 변경된 내용의 기록이 완료되면 FAT영역에 클러스터 체인에서 기존 클러스터 번호를 삭제하고 새로운 클러스터가 체인에 연결되도록 수정한다.
예를 들어, 도 13b에 도시한 바와 같이, 파일 1의 두번째 클러스터의 내용을 변경하는 경우, 파일 1의 두번째 클러스터의 내용을 새로운 클러스터 10번에 기록한다. 그리고, FAT 영역에서 파일 1의 첫번째 클러스터 번호인 7번 엔트리에는 파일 1의 두번째 클러스터 번호인 10을 기록하고, 10번 엔트리에는 파일 1의 세번째 클러스터 번호인 9를 기록하고, 9번 엔트리에는 파일 1의 종료를 나타내기 위해 0을 기록한다. 그리고, 8번 엔트리에는 8번 클러스터가 사용되지 않으므로 FF를 기록한다.
이와 같은 클러스터 교체 방법에서 디렉토리나 FAT 등의 메타 데이터의 기록은 반드시 플래시 변환 계층이 제공하는 원자적 쓰기로 수행한다. 만일 새로운 클러스터에 데이터를 기록하던 도중 오류가 발생하면 기존의 클러스터 체인을 통해 기존의 데이터 보장되고, 새로운 FAT_체인이 FAT에 기록된 후 오류가 발생하면 새로운 데이터가 존재하게 된다. 반면, 파일 데이터의 기록은 비원자적 쓰기로 수행한다. 이는 오류 발생시 디렉토리나 FAT의 원자적 복구가 보장되는 조건에서 파일 데이터의 원자적 복구는 불필요하기 때문이다. 따라서, 클러스터 교체 방법을 이용하면 파일 시스템의 무결성이 유지되는 동시에 비원자적 쓰기에 상당하는 최적화된 성능이 달성된다.
본 발명에 따른 클러스터 교체 방법을 이용한 파일의 확장 및 갱신을 도 14를 참조하여 설명한다.
파일에 쓰기가 요청되는 경우(S1410) 새로운 내용을 확장하는 쓰기가 요청되면, 파일 시스템은 새로운 클러스터 Cnew를 할당하고(S1420), 새로운 파일 데이터를 클러스터 Cnew에 비원자적 쓰기를 수행하여 기록한다(S1430). 그리고, 클러스터 Cnew를 FAT의 클러스터 체인에 원자적 쓰기를 수행하여 추가한다(S1440).
파일에 쓰기가 요청되는 경우(S1410) 파일의 기존 내용을 갱신하는 쓰기가 요청되면, 파일 시스템은 기존의 클러스터 Cold와는 별도의 새로운 클러스터 Cnew를 할당하고(S1450), 갱신된 파일 데이터를 클러스터 Cnew에 비원자적 쓰기를 수행하여 기록한다(S1460). 그리고, 기존의 클러스터 Cold의 위치에 클러스터 Cnew가 연결되도록 FAT의 클러스터 체인을 원자적 쓰기를 수행하여 수정한다(S1470).
상술한 바와 같은 본 발명의 플래시 변환 계층의 교대 사상 방법에 의하면, 플래시 메모리 블럭의 사상에 필요한 메모리 요구량이 작으므로 플래시 메모리의 용량을 절약할 수 있고, 전체 플래시 메모리를 검사하지 않고도 블럭 사상에 필요한 정보를 얻을 수 있으므로 시스템 기동시간을 단축시킬 수 있다.
또한, 본 발명의 플래시 메모리 마모도 평준화 방법에 의하면, 플래시 메모리의 모든 블럭의 마모도를 관리하는 것이 아니므로 관리가 용이하고, 마모도 리스트를 플래시 메모리에 기록하는 것이 아니라 램에 기록하므로 플래시 메모리의 용량을 절약할 수 있다.
또한, 본 발명의 플래시 메모리 파일 시스템의 클러스터 교체 방법에 의하면 메타 데이터가 아닌 오류 발생후 복구가 불필요한 데이터를 기록하는 경우에는 트랜잭션에서 제외하므로 전체적으로 성능을 향상시킬 수 있다.
본 발명의 상세한 설명에서는 구체적인 실시예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도내에서는 여러가지 변형이 가능함은 물론이다. 그러므로 본 발명의 범위는 설명된 실시예에 한정되어져서는 안되며, 후술하는 특허청구의 범위 뿐만 아니라 이 특허청구의 범위와 균등한 것들에 의해 정해져야 한다.
도 1은 플래시 메모리 파일 시스템의 계층을 설명하기 위한 도면,
도 2a는 종래 기술에 따라 사상 테이블과 데이터가 저장된 플래시 메모리를 설명하기 위한 도면,
도 2b는 종래 기술에 따른 전체 사상 테이블을 도시한 도면,
도 3은 본 발명의 한 특징에 따라 저장된 플래시 메모리를 설명하기 위한 도면,
도 4a와 도 4b는 도 3에 도시된 플래시 메모리에서 데이터 갱신 동작을 설명하기 위한 도면,
도 5는 본 발명에 따른 사상테이블을 도시한 도면,
도 6a와 도 6b는 도 3에 도시된 플래시 메모리에 사상테이블을 기록하는 동작을 설명하기 위한 도면,
도 7은 본 발명에 따른 플래시 메모리의 데이터를 읽는 과정을 나타내는 흐름도,
도 8은 본 발명에 따른 플래시 메모리에 데이터를 쓰는 과정을 나타내는 흐름도,
도 9는 본 발명의 다른 특징에 따라 플래시 메모리의 마모도를 평준화시키는 과정을 나타내는 흐름도,
도 10a와 도 10b는 본 발명의 다른 특징에 따라 플래시 메모리의 마모도를평준화하기 위한 메모리와 램을 도시하는 도면,
도 11a와 도 11b는 본 발명의 다른 특징에 따라 플래시 메모리의 마모도를 평준화하기 위한 메모리와 램을 도시한 도면,
도 12은 물리주소 변환테이블이 저장된 사상 영역을 도시한 도면,
도 13a와 도 13b는 본 발명의 또다른 특징에 따른 클러스터 체인 방법을 설명하기 위하 도면,
도 14는 본 발명의 또다른 특징에 따라 클러스터 체인 방법에서 파일을 쓰는 과정을 나타내는 흐름도.
* 도면의 주요한 부분에 대한 부호의 설명 *
300 : 플래시 메모리 310 : 마스터 블럭
320 : 사상 영역 330 : 데이터 영역
340 : 교대 영역 500 : 사상 테이블
1100 : 마모도 평준화 리스트

Claims (22)

  1. 플래시 메모리 관리 방법에 있어서,
    데이터가 기록되는 데이터 영역, 상기 데이터 영역에 기록된 데이터 변경시 변경된 데이터가 기록되는 교대 영역 및 상기 교대 영역에 기록된 데이터의 사상 정보가 기록되는 교대 영역이 마련된 플래시 메모리의 데이터 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 교대 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 사상 영역에 기록하는 단계와,
    상기 교대 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 내용을 상기 데이터 영역에 기록하고, 상기 교대 영역에 기록된 데이터 블럭의 사상 정보를 상기 사상 영역에서 삭제하는 단계를 포함하는 플래시 메모리 관리 방법.
  2. 제1항에 있어서,
    상기 사상 정보는 상기 데이터 블럭의 논리블럭번호인, 플래시 메모리 관리 방법.
  3. 제1항에 있어서,
    상기 데이터 블럭의 변경된 내용을 교대 영역에 기록하는 경우에는 변경된 내용을 교대 영역의 임의의 블럭에 기록하는, 플래시 메모리 관리 방법
  4. 제1항에 있어서,
    상기 데이터 블럭의 변경된 내용을 데이터 블럭에 기록하는 경우 변경된 내용을 상기 데이터 블럭의 논리블럭번호에 대응하는 데이터 영역의 위치에 기록하는 플래시 메모리 관리 방법.
  5. 플래시 메모리 쓰기 방법에 있어서,
    교대 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 데이터 영역과, 데이터 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 교대 영역과, 상기 교대 영역에 포함된 데이터 블럭의 사상 정보를 가지는 사상 영역을 포함하는 플래시 메모리에 데이터 블럭 쓰기 요청을 수신하는 단계와,
    상기 사상 영역에서 상기 쓰기 요청된 데이터 블럭에 관한 사상 정보를 검색하는 단계와,
    검색 결과 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보가 없으면, 상기 교대 영역에 상기 쓰기 요청된 데이터 블럭을 쓰고, 상기 사상 영역에 상기 데이터 블럭에 대한 사상 정보를 기록하는 단계와,
    검색 결과 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보가 있으면, 상기 쓰기 요청된 데이터 블럭을 상기 데이터 영역에 쓰고, 상기 사상 영역에 존재하는 상기 쓰기 요청된 데이터 블럭에 대한 사상 정보를 삭제하는 단계를 포함하는, 플래시 메모리 쓰기 방법.
  6. 플래시 메모리 읽기 방법에 있어서,
    교대 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 데이터 영역과, 데이터 영역에 기록된 데이터 블럭의 변경된 내용이 기록되는 교대 영역과, 상기 교대 영역에 포함된 데이터 블럭의 사상 정보를 가지는 사상 영역을 포함하는플래시 메모리에 데이터 블럭 읽기 요청을 수신하는 단계와,
    상기 사상 영역에서 상기 읽기 요청된 데이터 블럭에 관한 사상 정보를 검색하는 단계와,
    검색 결과 상기 읽기 요청된 데이터 블럭에 대한 사상 정보가 없으면, 상기 데이터 영역으로부터 상기 읽기 요청된 데이터 블럭을 읽는 단계와,
    검색 결과 상기 읽기 요청된 데이터 블럭에 대한 사상 정보가 있으면, 상기 상기 교대 영역으로부터 상기 읽기 요청된 데이터 블럭을 읽는 단계를 포함하는, 플래시 메모리 읽기 방법.
  7. 플래시 메모리에 있어서,
    교대 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 데이터 블럭이 기록되는 데이터 영역과,
    상기 데이터 영역에 기록된 데이터 블럭의 변경이 요청되는 경우 변경된 데이터 블럭이 기록되는 교대 영역과,
    상기 교대 영역에 기록된 상기 데이터 블럭의 사상 정보를 가지는 사상 테이블이 기록되며, 상기 데이터 블럭이 데이터 영역에 기록될 때는 상기 데이터 블럭의 사상 정보가 삭제되는 사상 영역을 포함하는 플래시 메모리.
  8. 제7항에 있어서,
    상기 데이터 영역, 상기 교대 영역, 상기 사상 영역에 관한 정보를 가지는 마스터 블럭을 더 포함하는 플래시 메모리.
  9. 제7항에 있어서,
    상기 데이터 영역에 존재하는 데이터 블럭의 물리 블럭 번호는 논리 블럭 번호와 일대일로 대응되는, 플래시 메모리.
  10. 제7항에 있어서,
    상기 사상 영역은 소정의 수의 블럭을 포함하고, 각 블럭은 소정의 수의 페이지를 포함하며,
    제1 사상 테이블은 제1 블럭의 제1 페이지에 기록되고, 상기 제1사상 테이블의 내용이 변경된 제2 사상 테이블은 제1 블럭의 제2 페이지에 기록되며,
    상기 제1 블럭의 페이지가 모두 기록되면 제 n 사상 테이블은 제2 블럭의 제1 페이지에 기록되는, 플래시 메모리.
  11. 플래시 메모리의 마모도를 평준화하는 방법에 있어서,
    시스템 기동후 전기적 소거가 수행된 데이터 블럭의 전기적 소거 수행 회수에 관한 정보를 기록하는 제1단계와,
    상기 데이터 블럭의 전기적 소거 수행 회수가 소정의 임계치를 초과하면 전기적 소거 수행 회수가 더 작은 데이터 블럭과 교환하는 제2단계를 포함하는 플래시 메모리의 마모도 평준화 방법.
  12. 제11항에 있어서,
    상기 제2단계는,
    미사용중인 물리 블럭이 존재하는지를 판단하는 단계와,
    판단결과 미사용중인 물리 블럭이 존재하면 상기 데이터 블럭의 위치와 상기 미사용중인 물리 블럭의 위치를 교환하는 단계와,
    판단결과 미사용중인 물리 블럭이 존재하지 않으면 상기 데이터 블럭의 위치를 상기 데이터 블럭의 전기적 소거 수행 회수보다 더 작은 전기적 소거 수행 회수를 가지는 물리 블럭과 교환하는 단계를 포함하는 플래시 메모리의 마모도 평준화 방법.
  13. 제11항에 있어서,
    상기 전기적 소거 수행 회수에 관한 정보는 램에 기록되는, 플래시 메모리의 마모도 평준화 방법.
  14. 플래시 메모리의 마모도를 평준화하는 장치에 있어서,
    데이터 블럭이 기록된 플래시 메모리와,
    시스템 기동후 전기적 소거가 수행된 데이터 블럭의 전기적 소거 수행 회수에 관한 정보가 기록되는 마모도 평준화 리스트를 포함하는 플래시 메모리 마모도 평준화 장치.
  15. 제14항에 있어서,
    상기 마모도 평준화 리스트는 램에 기록되는, 플래시 메모리 마모도 평준화 장치.
  16. 제14항에 있어서,
    상기 마모도 평준화 리스트에 시스템 기동후 전기적 소거가 수행된 데이터 블럭중 최근에 전기적 소거가 수행된 소정의 개수의 블럭에 관한 전기적 소거 수행 회수에 관한 정보가 기록되는 플래시 메모리 마모도 평준화 장치.
  17. 제14항에 있어서,
    전기적 소거 수행 회수가 소정의 임계치를 초과한 데이터 블럭은 전기적 소거 수행 회수가 가장 낮은 데이터 블럭과 교환되는, 플래시 메모리 마모도 평준화 장치.
  18. 파일 영역과 FAT 영역을 포함하는 플래시 메모리 파일 시스템 관리 방법에 있어서,
    파일 영역에 기록된 파일의 클러스터 정보를 FAT 영역에 기록하는 단계와,
    상기 파일의 변경이 요청되는 경우 변경된 내용을 새로운 클러스터에 기록하는 단계와,
    상기 FAT 영역에 기록된 클러스터 정보에 상기 새로운 클러스터에 관한 정보를 반영하는 단계를 포함하는 플래시 메모리 파일 시스템 관리 방법.
  19. 플래시 메모리에 파일을 갱신하는 방법에 있어서,
    데이터 영역의 각 클러스터에 대응하는 엔트리를 가지는 FAT 영역의 엔트리에 데이터 영역에 기록된 파일의 다음 클러스터 정보를 기록하는 단계와,
    상기 파일에 포함된 클러스터 Cold의 데이터 갱신이 요청되는 경우 새로운 클러스터 Cnew에 갱신된 데이터를 기록하는 단계와,
    상기 FAT 영역의 엔트리에 상기 클러스터 Cold 대신 상기 새로운 클러스터 Cnew가 연결되도록 상기 다음 클러스터 정보를 수정하는 단계를 포함하는 플래시 메모리 파일 갱신 방법.
  20. 제19항에 있어서,
    상기 파일의 첫번째 클러스터 정보를 루트 디렉토리 영역에 기록하는 단계를 더 포함하는 플래시 메모리 파일 갱신 방법.
  21. 제19항에 있어서,
    상기 FAT영역의 엔트리에 클러스터 정보의 기록은 원자적쓰기로 수행되고, 상기 데이터 영역의 클러스터에 파일 데이터의 기록은 비원자적 쓰기로 수행되는 단계를 더 포함하는 플래시 메모리 파일 갱신 방법.
  22. 플래시 메모리 파일 시스템에 있어서,
    하나 이상의 클러스터로 이루어지는 파일이 기록되는 데이터 영역과,
    상기 데이터 영역에 기록되는 파일의 첫번째 클러스터 정보를 가지고 있는 루트 디렉토리 영역과,
    각 클러스터에 대응하는 엔트리를 가지며, 상기 엔트리에 상기 데이터 영역에 기록된 파일의 다음 클러스터 정보가 기록되는 FAT 영역을 포함하며,
    상기 파일을 이루는 소정 클러스터의 내용의 변경이 요청되는 경우 변경된 내용을 새로운 클러스터에 기록하고, 상기 FAT 영역에 기록된 파일의 클러스터 정보에 상기 새로운 클러스터에 관한 정보를 연결하는 플래시 메모리 파일 시스템.
KR10-2002-0044301A 2002-07-26 2002-07-26 플래시 메모리 관리 방법 KR100484147B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR10-2002-0044301A KR100484147B1 (ko) 2002-07-26 2002-07-26 플래시 메모리 관리 방법
US10/626,839 US7594062B2 (en) 2002-07-26 2003-07-25 Method for changing data of a data block in a flash memory having a mapping area, a data area and an alternative area
US12/233,908 US20090031076A1 (en) 2002-07-26 2008-09-19 Method for Managing Flash Memory

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0044301A KR100484147B1 (ko) 2002-07-26 2002-07-26 플래시 메모리 관리 방법

Publications (2)

Publication Number Publication Date
KR20040009926A KR20040009926A (ko) 2004-01-31
KR100484147B1 true KR100484147B1 (ko) 2005-04-18

Family

ID=33157245

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0044301A KR100484147B1 (ko) 2002-07-26 2002-07-26 플래시 메모리 관리 방법

Country Status (2)

Country Link
US (2) US7594062B2 (ko)
KR (1) KR100484147B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100965051B1 (ko) 2008-10-01 2010-06-21 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치
KR101270777B1 (ko) 2007-06-20 2013-05-31 삼성전자주식회사 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록시스템 및 방법
KR101383853B1 (ko) * 2005-09-01 2014-04-17 사이프레스 세미컨덕터 코포레이션 빠른 웨어 레벨링 플래쉬 드라이브
KR101437123B1 (ko) 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
KR101517185B1 (ko) 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법

Families Citing this family (152)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174420B2 (en) 2002-10-22 2007-02-06 Microsoft Corporation Transaction-safe FAT file system
US7363540B2 (en) * 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
KR100457812B1 (ko) * 2002-11-14 2004-11-18 삼성전자주식회사 플래시 메모리, 그에 따른 플래시 메모리 액세스 장치 및방법
TWI240863B (en) * 2003-09-05 2005-10-01 Megawin Technology Co Ltd Method for efficiently controlling flash memory read/write
KR100538338B1 (ko) * 2003-12-24 2005-12-22 주식회사 포인칩스 플래시 메모리의 블록 균등 분산 기법 및 이를 이용한데이터 저장 장치
KR100533683B1 (ko) * 2004-02-03 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US7818492B2 (en) * 2004-02-26 2010-10-19 Supertalent Electronics, Inc. Source and shadow wear-leveling method and apparatus
JP4157501B2 (ja) * 2004-06-30 2008-10-01 株式会社東芝 記憶装置
US8606830B2 (en) 2004-12-17 2013-12-10 Microsoft Corporation Contiguous file allocation in an extensible file system
US9639554B2 (en) 2004-12-17 2017-05-02 Microsoft Technology Licensing, Llc Extensible file system
US8321439B2 (en) 2004-12-17 2012-11-27 Microsoft Corporation Quick filename lookup using name hash
US7873596B2 (en) 2006-05-23 2011-01-18 Microsoft Corporation Extending cluster allocations in an extensible file system
KR100684942B1 (ko) 2005-02-07 2007-02-20 삼성전자주식회사 복수의 사상 기법들을 채용한 적응형 플래시 메모리 제어장치 및 그것을 포함한 플래시 메모리 시스템
KR100706242B1 (ko) * 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US7752391B2 (en) * 2006-01-20 2010-07-06 Apple Inc. Variable caching policy system and method
KR101274181B1 (ko) * 2006-02-13 2013-06-14 삼성전자주식회사 플래시 메모리를 관리하는 장치 및 방법
US20070288685A1 (en) * 2006-06-09 2007-12-13 Phison Electronics Corp. Flash memory scatter-write method
US8307148B2 (en) * 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US7650458B2 (en) * 2006-06-23 2010-01-19 Microsoft Corporation Flash memory driver
KR100833188B1 (ko) * 2006-11-03 2008-05-28 삼성전자주식회사 데이터의 특성에 따라 싱글 레벨 셀 또는 멀티 레벨 셀에데이터를 저장하는 불휘발성 메모리 시스템
KR100816820B1 (ko) * 2006-12-14 2008-03-27 한양대학교 산학협력단 플래시 메모리와 연동되는 버퍼 관리장치 및 방법
KR101087308B1 (ko) * 2006-12-27 2011-11-25 인텔 코오퍼레이션 비휘발성 메모리에 대한 초기 웨어 레벨링
US7747664B2 (en) * 2007-01-16 2010-06-29 Microsoft Corporation Storage system format for transaction safe file system
US7613738B2 (en) * 2007-01-16 2009-11-03 Microsoft Corporation FAT directory structure for use in transaction safe file system
US7966355B2 (en) * 2007-02-13 2011-06-21 Modu Ltd. Interface for extending functionality of memory cards
KR100881052B1 (ko) * 2007-02-13 2009-01-30 삼성전자주식회사 플래시 메모리의 매핑 테이블 검색 시스템 및 그에 따른검색방법
US7917479B2 (en) * 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
KR100838513B1 (ko) * 2007-05-30 2008-06-17 주식회사 아이오셀 단일 영역을 갖는 기록매체의 활성화 방법 및 상기 방법을실행하기 위한 프로그램을 저장한 기록매체, 상기프로그램을 네트웍을 통해 다운로드 하기 위한 시스템
US7865761B1 (en) * 2007-06-28 2011-01-04 Emc Corporation Accessing multiple non-volatile semiconductor memory modules in an uneven manner
KR101447188B1 (ko) * 2007-07-31 2014-10-08 삼성전자주식회사 플래시 메모리에 최적화된 입출력 제어 방법 및 장치
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
WO2009072101A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Apparatus and methods for generating row-specific reading thresholds in flash memory
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
KR101401560B1 (ko) * 2007-12-13 2014-06-03 삼성전자주식회사 반도체 메모리 시스템 및 그것의 마모도 관리 방법
US8621137B2 (en) * 2007-12-27 2013-12-31 Sandisk Enterprise Ip Llc Metadata rebuild in a flash memory controller following a loss of power
US8972472B2 (en) 2008-03-25 2015-03-03 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
KR100987320B1 (ko) * 2008-07-24 2010-10-12 강릉원주대학교산학협력단 고속 파일 복구가 가능한 fat 파일시스템을 사용한데이터 처리장치 및 데이터 처리방법
JP4816740B2 (ja) * 2009-02-09 2011-11-16 ソニー株式会社 情報処理装置、および情報処理方法、並びにプログラム
KR20100091544A (ko) * 2009-02-10 2010-08-19 삼성전자주식회사 메모리 시스템 및 그 마모도 관리 방법
US8195891B2 (en) * 2009-03-30 2012-06-05 Intel Corporation Techniques to perform power fail-safe caching without atomic metadata
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8065469B2 (en) 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8180955B2 (en) * 2009-05-06 2012-05-15 Via Telecom, Inc. Computing systems and methods for managing flash memory device
US8051241B2 (en) * 2009-05-07 2011-11-01 Seagate Technology Llc Wear leveling technique for storage devices
WO2011007511A1 (ja) * 2009-07-16 2011-01-20 パナソニック株式会社 メモリコントローラ、不揮発性記憶装置、アクセス装置、不揮発性記憶システム
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8463983B2 (en) * 2009-09-15 2013-06-11 International Business Machines Corporation Container marker scheme for reducing write amplification in solid state devices
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
TWI447735B (zh) * 2010-02-05 2014-08-01 Phison Electronics Corp 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US8839053B2 (en) * 2010-05-27 2014-09-16 Microsoft Corporation Error correcting pointers for non-volatile storage
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
CN101894076B (zh) * 2010-07-22 2012-08-29 深圳市江波龙电子有限公司 一种提高存储设备写入速度的实现方法及***
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
KR20120029239A (ko) * 2010-09-16 2012-03-26 삼성전자주식회사 Pram을 이용하는 데이터 기록 시스템 및 그 방법
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
KR101252375B1 (ko) * 2010-12-28 2013-04-08 한양대학교 산학협력단 저장 장치의 중복 제거 성능 향상을 위한 맵핑 관리 시스템 및 방법
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
KR20120136197A (ko) * 2011-06-08 2012-12-18 삼성전자주식회사 비휘발성 메모리에 대한 웨어 레벨링 방법
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
US8966205B1 (en) * 2012-05-10 2015-02-24 Western Digital Technologies, Inc. System data management using garbage collection and hybrid self mapping
US8984247B1 (en) 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
US9699263B1 (en) 2012-08-17 2017-07-04 Sandisk Technologies Llc. Automatic read and write acceleration of data accessed by virtual machines
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
US9032244B2 (en) 2012-11-16 2015-05-12 Microsoft Technology Licensing, Llc Memory segment remapping to address fragmentation
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
KR102002921B1 (ko) 2012-12-05 2019-07-23 삼성전자주식회사 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9501398B2 (en) 2012-12-26 2016-11-22 Sandisk Technologies Llc Persistent storage device with NVRAM for staging writes
US9612948B2 (en) 2012-12-27 2017-04-04 Sandisk Technologies Llc Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device
US9454420B1 (en) 2012-12-31 2016-09-27 Sandisk Technologies Llc Method and system of reading threshold voltage equalization
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9495288B2 (en) 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US9870830B1 (en) 2013-03-14 2018-01-16 Sandisk Technologies Llc Optimal multilevel sensing for reading data from a storage medium
US9367246B2 (en) 2013-03-15 2016-06-14 Sandisk Technologies Inc. Performance optimization of data transfer for soft information generation
US10013322B2 (en) * 2013-06-03 2018-07-03 Hitachi, Ltd. Storage apparatus and storage apparatus control method
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US9524235B1 (en) 2013-07-25 2016-12-20 Sandisk Technologies Llc Local hash value generation in non-volatile data storage systems
US9235509B1 (en) 2013-08-26 2016-01-12 Sandisk Enterprise Ip Llc Write amplification reduction by delaying read access to data written during garbage collection
US9639463B1 (en) 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9442662B2 (en) 2013-10-18 2016-09-13 Sandisk Technologies Llc Device and method for managing die groups
US9436831B2 (en) 2013-10-30 2016-09-06 Sandisk Technologies Llc Secure erase in a memory device
US9703816B2 (en) 2013-11-19 2017-07-11 Sandisk Technologies Llc Method and system for forward reference logging in a persistent datastore
US9520197B2 (en) 2013-11-22 2016-12-13 Sandisk Technologies Llc Adaptive erase of a storage device
US9520162B2 (en) 2013-11-27 2016-12-13 Sandisk Technologies Llc DIMM device controller supervisor
US9582058B2 (en) 2013-11-29 2017-02-28 Sandisk Technologies Llc Power inrush management of storage devices
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US9703636B2 (en) 2014-03-01 2017-07-11 Sandisk Technologies Llc Firmware reversion trigger and control
US9454448B2 (en) 2014-03-19 2016-09-27 Sandisk Technologies Llc Fault testing in storage devices
US9448876B2 (en) 2014-03-19 2016-09-20 Sandisk Technologies Llc Fault detection and prediction in storage devices
US9626400B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Compaction of information in tiered data structure
US9626399B2 (en) 2014-03-31 2017-04-18 Sandisk Technologies Llc Conditional updates for reducing frequency of data modification operations
US9390021B2 (en) 2014-03-31 2016-07-12 Sandisk Technologies Llc Efficient cache utilization in a tiered data structure
US9697267B2 (en) 2014-04-03 2017-07-04 Sandisk Technologies Llc Methods and systems for performing efficient snapshots in tiered data structures
KR102310246B1 (ko) * 2014-04-23 2021-10-08 삼성전자주식회사 세컨더리 인덱스 생성 방법 및 세컨더리 인덱스 저장 장치
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US10656842B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device
US10114557B2 (en) 2014-05-30 2018-10-30 Sandisk Technologies Llc Identification of hot regions to enhance performance and endurance of a non-volatile storage device
US10656840B2 (en) 2014-05-30 2020-05-19 Sandisk Technologies Llc Real-time I/O pattern recognition to enhance performance and endurance of a storage device
US10162748B2 (en) 2014-05-30 2018-12-25 Sandisk Technologies Llc Prioritizing garbage collection and block allocation based on I/O history for logical address regions
US10372613B2 (en) 2014-05-30 2019-08-06 Sandisk Technologies Llc Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device
US9703491B2 (en) 2014-05-30 2017-07-11 Sandisk Technologies Llc Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device
US10146448B2 (en) 2014-05-30 2018-12-04 Sandisk Technologies Llc Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device
US9652381B2 (en) 2014-06-19 2017-05-16 Sandisk Technologies Llc Sub-block garbage collection
GB2527529B (en) 2014-06-24 2021-07-14 Advanced Risc Mach Ltd A device controller and method for performing a plurality of write transactions atomically within a non-volatile data storage device
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
TWI512609B (zh) 2014-09-05 2015-12-11 Silicon Motion Inc 讀取命令排程方法以及使用該方法的裝置
US9443601B2 (en) 2014-09-08 2016-09-13 Sandisk Technologies Llc Holdup capacitor energy harvesting
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
JP2017045405A (ja) * 2015-08-28 2017-03-02 株式会社東芝 メモリシステム
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
KR101966399B1 (ko) * 2017-06-30 2019-04-08 단국대학교 산학협력단 원자적 연산을 이용한 파일 시스템 저널링 장치 및 방법
US10289561B2 (en) 2017-08-08 2019-05-14 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same
US10884889B2 (en) 2018-06-22 2021-01-05 Seagate Technology Llc Allocating part of a raid stripe to repair a second raid stripe
WO2020113440A1 (zh) * 2018-12-04 2020-06-11 深圳市大疆创新科技有限公司 数据存储方法、闪存设备、智能电池、可移动平台
US10956317B2 (en) * 2019-02-11 2021-03-23 International Business Machines Corporation Garbage collection in non-volatile memory that fully programs dependent layers in a target block
CN111949212B (zh) * 2020-07-10 2024-03-08 深圳宏芯宇电子股份有限公司 基于自定义开放通道ssd的文件***及文件管理方法
CN112732178B (zh) * 2020-12-29 2024-02-13 北京浪潮数据技术有限公司 一种ssd的数据清除方法及相关装置
CN116450537B (zh) * 2023-06-19 2023-08-29 联和存储科技(江苏)有限公司 Nand闪存固件烧录方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000047570A (ko) * 1998-10-30 2000-07-25 이데이 노부유끼 계층적 관리 파일 장치, 계층적으로 관리된 파일의 기록 및 재생 방법, 계층적 관리 파일 장치를 구현하는 전자 장치

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
GB2291990A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Flash-memory management system
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
KR100577380B1 (ko) * 1999-09-29 2006-05-09 삼성전자주식회사 플래시 메모리와 그 제어 방법
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6732221B2 (en) * 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20000047570A (ko) * 1998-10-30 2000-07-25 이데이 노부유끼 계층적 관리 파일 장치, 계층적으로 관리된 파일의 기록 및 재생 방법, 계층적 관리 파일 장치를 구현하는 전자 장치

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101383853B1 (ko) * 2005-09-01 2014-04-17 사이프레스 세미컨덕터 코포레이션 빠른 웨어 레벨링 플래쉬 드라이브
KR101270777B1 (ko) 2007-06-20 2013-05-31 삼성전자주식회사 블록 단위 입출력 디바이스에서 피램을 이용한 데이터 기록시스템 및 방법
KR101437123B1 (ko) 2008-04-01 2014-09-02 삼성전자 주식회사 메모리 시스템 및 그것의 마모도 관리 방법
KR101517185B1 (ko) 2008-04-15 2015-05-04 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
KR100965051B1 (ko) 2008-10-01 2010-06-21 서울시립대학교 산학협력단 플래시 메모리 장치를 위한 가변 공간 페이지 사상 방법 및그 장치

Also Published As

Publication number Publication date
KR20040009926A (ko) 2004-01-31
US20090031076A1 (en) 2009-01-29
US7594062B2 (en) 2009-09-22
US20040210706A1 (en) 2004-10-21

Similar Documents

Publication Publication Date Title
KR100484147B1 (ko) 플래시 메모리 관리 방법
CN110678836B (zh) 用于键值存储的持久性存储器
US7395384B2 (en) Method and apparatus for maintaining data on non-volatile memory systems
US10120869B2 (en) Method and apparatus for fault-tolerant memory management
US9971799B2 (en) Storage device for storing directory entries, directory entry lookup apparatus and method, and storage medium storing directory entry lookup program
US8510500B2 (en) Device driver including a flash memory file system and method thereof and a flash memory device and method thereof
US6675281B1 (en) Distributed mapping scheme for mass storage system
US8612719B2 (en) Methods for optimizing data movement in solid state devices
CN107180092B (zh) 一种文件***的控制方法、装置及终端
US8914579B2 (en) Access device, information recording device, controller, and information recording system
KR20120090965A (ko) 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
US20100131700A1 (en) Memory indexing system and process
JP2015515047A (ja) 不均等アクセス・メモリにレコードを配置するために不均等ハッシュ機能を利用する方法および装置
KR20070096429A (ko) 빠른 마운팅을 지원하는 낸드 플래시 메모리에 적용되는파일시스템
KR20060080972A (ko) 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
KR101297442B1 (ko) 공간 지역성을 고려한 요구 기반 플래시 메모리 변환 계층을 포함하는 낸드 플래시 메모리 시스템
CN111522507B (zh) 一种低延迟的文件***地址空间管理方法、***及介质
US20110320689A1 (en) Data Storage Devices and Data Management Methods for Processing Mapping Tables
CN113094372A (zh) 数据存取方法、数据存取控制装置及数据存取***
KR101008032B1 (ko) 메타 데이터 관리 시스템 및 방법
KR100907477B1 (ko) 플래시 메모리에 저장된 데이터의 인덱스 정보 관리 장치및 방법
US20090112951A1 (en) Apparatus and method of managing files and memory device
Lee et al. An efficient buffer management scheme for implementing a B-tree on NAND flash memory
KR100745163B1 (ko) 동적 매핑 테이블을 이용한 플래시 메모리 관리방법

Legal Events

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

Payment date: 20190329

Year of fee payment: 15