KR20010029171A - 플래시 메모리와 그 제어 방법 - Google Patents

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

Info

Publication number
KR20010029171A
KR20010029171A KR1019990041835A KR19990041835A KR20010029171A KR 20010029171 A KR20010029171 A KR 20010029171A KR 1019990041835 A KR1019990041835 A KR 1019990041835A KR 19990041835 A KR19990041835 A KR 19990041835A KR 20010029171 A KR20010029171 A KR 20010029171A
Authority
KR
South Korea
Prior art keywords
block
unit
data
state
spare
Prior art date
Application number
KR1019990041835A
Other languages
English (en)
Other versions
KR100577380B1 (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 KR1019990041835A priority Critical patent/KR100577380B1/ko
Priority to CNB001263781A priority patent/CN1256732C/zh
Priority to US09/671,176 priority patent/US6587915B1/en
Publication of KR20010029171A publication Critical patent/KR20010029171A/ko
Application granted granted Critical
Publication of KR100577380B1 publication Critical patent/KR100577380B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

본 발명은 플래시 메모리와 그 제어 방법에 관한 것으로,
본 발명의 플래시 메모리가, 데이타를 기록하기 위한 복수개의 데이타 블럭 ; 상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ; 데이타가 기록된 실제 위치를 지정하는 맵 블럭 ; 플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성되어,
데이타 블럭의 데이타를 갱신하고자 할 경우 먼저 갱신할 데이타를 동일 유니트내의 비어있는 예비 블럭에 기록한 후 맵 블럭의 사상정보를 갱신하고 이전 블럭의 상태정보를 갱신하므로써, 사용자가 동일한 주소를 이용하여 데이타에 접근할 수 있어, 블럭을 갱신할 때마다 유니트를 지우지 않아도 되기 때문에, 삭제 횟수를 감소시켜서 데이타 기록 및 갱신의 효율을 높인다는 데 그 효과가 있다.

Description

플래시 메모리와 그 제어 방법{A flash-memory and a it's controling method}
본 발명은 플래시 메모리와 그 제어 방법에 관한 것이다.
보다 상세하게는, 블럭의 논리적 주소와 물리적 주소간의 사상을 효율적으로 관리하여 블럭 단위로 데이타를 기록하거나 독출하도록 되어진 플래시 메모리와 그 제어 방법에 관한 것이다.
1980년대 초 인텔에 의해서 처음으로 개발된 플래시 메모리는 EPROM의 일종이지만, 일반적인 EPROM과는 달리 프로그램을 위한 하드웨어가 별도로 필요없으며 소프트웨어로 데이타를 삭제하거나 기록할 수 있다는 특성을 가지고 있다.
이같이 플래시 메모리는 비휘발성이면서 프로그램 가능하다는 특성 때문에 최근에 이동전화나 PDA 같은 이동기기를 비롯한 내장형 시스템에서 널리 사용되고 있다.
플래시 메모리는 기존의 RAM 이나 다른 휘발성 저장장치, 마그네틱 디스크 등과 마찬가지로 특정 위치에 저장된 데이타를 임의로 접근할 수 있지만, 데이타를 수정하거나 삭제하는 방법이 다르다.
즉, 초기화된 플래시 메모리의 소정 블럭에 일단 데이타를 한 번 기록하고 나면 나중에 이를 삭제하고자 할 경우 그 블럭이 포함된 유니트를 모두 삭제해야 한다.
여기서 물리적으로 연속된 주소를 갖는 바이트들을 블럭이라 하는데, 상기 블럭은 플래시 메모리에 대한 연산의 기본 단위로 사용된다. 또한 상기 복수개의 블럭들로 구성된 유니트는 플래시 메모리에서 물리적으로 한번에 삭제될 수 있는 삭제 연산의 기본 단위이다.
따라서 플래시 메모리는 RAM과 같이 바이트 단위로 읽고 쓰기 보다는 마치 디스크처럼 블럭 단위로 접근하는 경우가 많다.
플래시 메모리를 블럭 디바이스처럼 사용할 수 있게 해주는 소프트웨어를 일반적으로 플래시 변환 계층(FTL : Flash Translation Layer)이라고 한다.
대표적인 FTL 제품으로는 M-System사의 TrueFFS[FTL97]와 Datalight사의 FlashFX[FX99] 등이 있다.
이들 소프트웨어의 여러 구성 요소중에서 특히 블럭 재사상을 지원하는 부분을, TrueFFS[FX99]에서는 FTL, FlsshFX에서는 VBX라 하며, M-System사의 FTL은 PC Card 표준의 저장 포맷으로 채택되기도 했다.
플래시메모리를 블럭 단위로 접근하려면 일단 플래시 메모리를 유니트보다 작은 일정한 크기의 블럭으로 분할한다.
이렇게 분할된 블럭에 순차적으로 부여된 번호를 물리적 블럭 번호(PBN : Physical Block Number)라 하며, 사용자가 생각하는 블럭의 가상 번호를 논리적 블럭 번호(LBN : Logical Setor Number)라 한다.
상기 논리적 블럭 번호(LBN)와 물리적 블럭 번호(PBN) 사이의 사상을 제공하는 방식은 크게 고정 사상과 임의 사상으로 구분할 수 있다.
a. 고정 사상
고정 사상은 논리적 블럭 번호(LBN)와 물리적 블럭 번호(PBN) 사이의 관계가 일정하게 정해져 있는 방식이다.
별도의 헤더를 사용하지 않는 매우 단순한 경우라면 LBN=PBN 이라 할 수 있다.
도 1(a) 는 일반적인 고정 사상을 설명하기 위한 도면이고, 도 2 는 일반적인 플래시 메모리와 그 주변 회로를 도시한 블럭도로서, 도 1(a) 및 도 2 에 도시된 바와 같이 플래시 메모리(2)내 유니트의 블럭 2에 기록된 데이타를 갱신하려면 블럭 1,3,4의 데이타를 일단 독출하여 RAM(3)에 기록하고 이들 블럭이 속한 유니트의 데이타를 모두 삭제한 뒤, 상기 RAM에 기록된 블럭 1,3,4의 이전 데이타를 독출하여 다시 블럭 1,3,4에 기록하고, 블럭 2에는 새로운 데이타를 기록한다.
따라서, 블럭의 데이타를 삭제하고 재기록하는 데 많은 시간이 걸리게 될 뿐만 아니라, 블럭의 데이타를 삭제한 직후에 고장이 발생하면 블럭 1,2,3,4의 데이타를 모두 잃을 수 있다.
즉, 고정 사상은 복잡한 사상 정보를 유지하기 위한 저장 공간과 알고리즘이 필요하지 않고 코드 크기가 작다는 장점이 있으나, 삭제 연산이나 갱신 연산의 성능이 좋지 않다는 단점이 있다.
b. 임의 사상
임의 사상은 기존의 FTL 제품에서 주로 사용되는 것으로, 논리적 블럭 번호(LBN)와 물리적 블럭 번호(PBN) 사이의 관계가 일정하게 정해져 있지 않다.
즉, 비어 있는 물리적 블럭에 임의의 논리적 블럭이 할당된다. MAP(LBN)=PBN.
논리적 유니트 번호(LUN)와 물리적 유니트 번호(PUN)간의 사상 정보, 논리적 블럭 번호(LBN)와 물리적 블럭 번호(PBN)간의 사상 정보는 RAM(3)와 플래시 메모리(2)에 저장된다.
RAM(3)상의 맵 테이블에는 물리적 유니트 번호(PUN)와 논리적 유니트 번호(LUN)간의 사상 정보가 기록되어 있어, 논리적 주소를 물리적 주소로 변환하는데 사용되는 바, 삭제 연산이나 갱신 연산 혹은 재생 연산으로 인해 사상 관계가 변하면 상기 맵 테이블도 갱신되어 동일한 논리적 주소로 계속 접근할 수 있다.
도 1(b)는 일반적인 임의 사상을 설명하기 위한 도면으로, 도 1(b) 에 도시된 바와 같이 중앙처리장치(1)가 독출 연산을 수행하는 경우, 사용자가 요청한 논리적 블럭 번호(LBN)는 맵 테이블을 통해 물리적 블럭 번호(PBN)로 변환된다.
기록 연산도 상기 독출 연산과 마찬가지로 해당 블럭에 접근하기 위해 먼저 논리적 블럭 번호(LBN)를 물리적 블럭 번호(PBN)로 변환하는데, 이때 해당 블럭에 이미 데이타가 기록되어 있는 상태라면 플래시 메모리의 특성상 그 블럭이 속한 유니트의 데이타를 모두 삭제한 후, 갱신하지 않아야 할 블럭의 데이타와 갱신해야 할 블럭의 데이타를 삭제된 유니트에 다시 재기록하거나,
또는 새로운 유니트에 재기록하고 이전 유니트는 삭제된 것으로 표시한다.
이때 상기 맵 테이블은 상기 논리적 블럭 번호(LBN)에 대한 물리적 블럭 번호(PBN)가 갱신된다.
또한, 유니트에 사용되지 않는 블럭들이 많아지면 메모리 사용율이 낮아지므로, 사용되는 부분만을 다른 유니트로 이동시키는데, 유니트에 논리적 번호를 매기고 이것을 물리적 블럭으로 변환함으로써, 유니트의 데이타를 이동하더라도 동일한 논리적 유니트 번호(LUN)로 접근할 수 있다.
상기에서 살펴본 바와 같이 종래 플래시 메모리에 이용되는 임의 사상 방법은 맵 테이블을 이용하여 플래시 메모리상에 데이타를 기록하거나, 플래시 메모리에 기록된 데이타를 독출하는 방법을 제시하고 있다.
종래 플래시 메모리에 이용되는 임의 사상 방법은 논리적 주소를 임의의 물리적 주소로 변환하는데 필요한 사상 정보를 유지하기 위해 별도의 저장 공간이 필요하며, 데이타를 기록하거나 갱신해야 하는데 많은 시간이 소요될 뿐만 아니라 복잡한 사상 구조와 알고리즘을 오류없이 구현하거나 이식하는 것이 어렵다는 문제점이 있었다.
이에 본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로, 블럭의 논리적 주소와 물리적 주소간의 사상을 효율적으로 관리하여 블럭 단위로 데이타를 기록하거나 독출하도록 되어진 플래시 메모리와 그 제어 방법을 제공하는 데 그 목적이 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 플래시 메모리가,
데이타를 기록하기 위한 복수개의 데이타 블럭 ;
상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ;
데이타가 기록된 실제 위치를 지정하는 맵 블럭 ;
플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된 것을 특징한다.
또한 상기와 같은 목적을 달성하기 위한 본 발명에 따른 플래시 메모리의 제어방법은,
데이타를 기록하기 위한 복수개의 데이타 블럭 ; 상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ; 데이타가 기록된 실제 위치를 지정하는 맵 블럭 ; 플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된 플래시 메모리에 있어서,
논리적 블럭이 속하는 논리적 유니트를 탐색하는 과정 ;
상기 논리적 유니트에 대한 물리적 유니트를 탐색하는 과정 ;
상기 물리적 유니트의 맵 블럭에서 상기 논리적 블럭에 대한 물리적 블럭의 위치를 탐색하는 과정으로 사상 동작을 제어하는 것을 특징으로 한다.
도 1 의 (a)는 일반적인 고정 사상 방법을 설명하기 위한 도면이고, (b)는 일반적인 임의 사상 방법을 설명하기 위한 도면이고, (c)는 본 발명에 따른 혼합 사상 방법을 설명하기 위한 도면,
도 2 는 일반적인 플래시 메모리와 그 주변 회로를 도시한 블럭도,
도 3 은 본 발명에 따른 플래시 메모리와 그 제어 방법을 설명하기 위한 도면으로, (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)는 플래시 메모리내 유니트의 구성도,
도 4 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 사상 동작의 흐름도로서,
도 5 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 블럭 할당 동작의 흐름도,
도 6 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 독출 연산의 흐름도,
도 7 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 삭제 연산의 흐름도,
도 8 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 갱신 연산의 흐름도,
도 9 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 재생 연산의 흐름도,
도 10 은 도 8 의 갱신 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도,
도 11 은 도 9 의 재생 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도,
도 12 는 도 8 의 갱신 연산을 설명하기 위한 도면으로, (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)는 플래시 메모리내 유니트의 구성도,
도 13 은 도 9 의 재생 연산을 설명하기 위한 도면으로, (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)(e)는 플래시 메모리내 유니트의 구성도이다.
* 도면의 주요 부분에 대한 부호의 명칭 *
1 : 중앙처리장치 2 : 플래시 메모리
3 : 램 4 : 롬
이에 상기와 같이 구성된 본 발명의 플래시 메모리와 그 제어방법에 따른 일실시예를 살펴보도록 한다.
도 3 (c)(d)는 본 발명에 따른 플래시 메모리내 유니트의 구성도이다.
도 3(c)(d)에 도시된 바와 같이 본 발명에 따른 플래시 메모리는, 데이타를 기록하기 위한 복수개의 데이타 블럭 ; 상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ; 데이타가 기록된 실제 위치를 지정하는 맵 블럭 ; 플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된다.
여기서 상기 유니트는 삭제 연산의 기본 단위로 사용되며, 상기 헤더 블럭에는 논리적 유니트 번호(LUN), 마모도, 블럭의 크기에 대한 정보를 기록하고, 상기 맵 블럭에는 논리적 블럭 번호(LBN), 블럭의 상태 정보, 갱신된 블럭의 위치 정보를 기록한다.
도 4 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 사상 동작의 흐름도이다.
도 4 에 도시된 바와 같이 본 발명의 방법은, 데이타를 기록하기 위한 복수개의 데이타 블럭 ; 상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ; 데이타가 기록된 실제 위치를 지정하는 맵 블럭 ; 플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된 플래시 메모리에 있어서, 논리적 블럭이 속하는 논리적 유니트를 탐색하는 과정(S11) ; 상기 논리적 유니트에 대한 물리적 유니트를 탐색하는 과정(S12) ; 상기 물리적 유니트의 맵 블럭에서 상기 논리적 블럭에 대한 물리적 블럭의 위치를 탐색하는 과정(S13)으로 사상 동작을 제어한다.
도 5 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 블럭 할당 동작의 흐름도이다.
도 5 에 도시된 바와 같이 본 발명의 방법은, 상기 유니트의 맵 블럭을 검사하여 상기 유니트에 예비 블럭이 있는가를 판단하는 제 21 단계(S21) ; 상기 제 21 단계(S21)에서 판단한 결과 상기 유니트에 예비 블럭이 없으면 상기 유니트에 대해 재생연산을 수행하는 제 22 단계(S22) ; 상기 재생된 유니트의 맵 블럭을 검사하여 상기 재생된 유니트에 예비 블럭이 있는가를 판단하는 제 23 단계(S23) ; 상기 제 21 단계(S21)에서 판단한 결과 상기 유니트에 예비 블럭이 있거나 또는 상기 제 23 단계(S23)에서 판단한 결과 상기 재생된 유니트에 예비 블럭이 있으면, 상기 맵 블럭에 데이타 블럭의 논리적 블럭 번호(LBN)와 상태를 기록하는 제 24 단계(S24) ; 상기 제 23 단계(S23)에서 판단한 결과 상기 재생된 유니트에 예비 블럭이 없으면 에러 처리하는 제 25 단계(S25)로 할당 연산을 제어한다.
도 6 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 독출 연산의 흐름도이다.
도 6 에 도시된 바와 같이 본 발명의 방법은, 해당 데이타 블럭이 속한 유니트를 탐색하는 제 31 단계(S31) ; 상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하는 제 32 단계(S32) ; 상기 제 32 단계(S32)에서 판단한 결과 해당 데이타 블럭이 존재하면, 상기 해당 데이타 블럭에서 데이타를 독출하는 제 33 단계(S32) ; 상기 제 32 단계(S32)에서 판단한 결과 해당 데이타 블럭이 존재하지 않으면 에러 처리하는 제 34 단계(S34)로 독출 연산을 제어한다.
도 7 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 삭제 연산의 흐름도이다.
도 7 에 도시된 바와 같이 본 발명의 방법은, 해당 데이타 블럭이 속한 유니트를 탐색하는 제 41 단계 ; 상기 유니트의 맵 블럭에 기록된 해당 데이타 블럭의 상태를 "삭제중"으로 갱신하는 제 42 단계(S42)로 삭제 연산을 제어한다.
도 8 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 갱신 연산의 흐름도이다.
도 8 에 도시된 바와 같이 본 발명의 방법은, 해당 데이타 블럭이 속한 유니트를 결정하는 제 51 단계(S51) ; 상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하는 제 52 단계(S52) ; 상기 제 52 단계(S52)에서 판단한 결과 해당 데이타 블럭이 존재하면, 맵 블럭을 검사하여 해당 데이타 블럭의 상태가 "할당됨"인가를 판단하는 제 53 단계(S53) ; 상기 제 53 단계(S53)에서 판단한 결과 해당 블럭이 "할당됨" 상태이면 해당 데이타 블럭 상태를 "기록중"으로 갱신하는 제 54 단계(S54) ; 해당 데이타 블럭에 데이타를 기록하는 제 55 단계(S55) ; 해당 데이타 블럭 상태를 "기록됨"으로 갱신하는 제 56 단계(S56) ; 상기 제 53 단계(S53)에서 판단한 결과 해당 데이타 블럭이 "할당됨" 상태이면 블럭의 상태를 "삭제중"으로 갱신하는 제 57 단계(S57) ; 상기 유니트내에서 예비 블럭을 탐색하여 할당하는 제 58 단계(S58) ; 새롭게 할당된 블럭의 상태를 "기록중"으로 갱신하는 제 59 단계(S59) ; 상기 새롭게 할당된 블럭의 위치 정보를 상기 맵 블럭에 기록하는 제 60 단계(S60) ; 상기 새롭게 할당된 블럭에 데이타를 기록하는 제 61 단계(S61) ; 상기 새롭게 할당된 블럭의 상태를 "기록됨"으로 갱신하는 제 62 단계(S62) ; 상기 해당 데이타 블럭의 상태를 "삭제됨"으로 갱신하는 제 63 단계(S63) ; 상기 제 52 단계(S52)에서 판단한 결과 해당 데이타 블럭이 존재하지 않으면 에러 처리하는 제 64 단계(S64)로 갱신 연산을 제어한다.
도 9 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 재생 연산의 흐름도이다.
도 9 에 도시된 바와 같이 본 발명의 방법은, 재생할 유니트(EU)와 이동 유니트(TU)를 결정하는 제 71 단계(S71) ; 상기 이동 유니트(TU)의 삭제 횟수가 임계치를 넘는가를 판단하는 제 72 단계(S72) ; 상기 제 72 단계(S72)에서 판단한 결과 상기 이동 유니트(TU)의 삭제 횟수가 임계치를 넘으면 삭제 횟수가 최소인 이동 유니트(TU)를 선택하는 제 74 단계(S73) ; 상기 제 72 단계(S72)에서 판단한 결과 상기 이동 유니트(TU)의 삭제 횟수가 임계치를 넘지 않거나 또는 상기 제 73 단계(S73)에서 삭제 횟수가 최소인 이동 유니트(TU)가 선택되면, 상기 재생할 유니트(EU)의 상태를 "이동중"으로 갱신하는 제 74 단계(S74) ; 상기 74 단계(S74)에서 삭제 횟수가 임계치를 넘지 않는 이동 유니트(TU) 또는 삭제 횟수가 최소인 이동 유니트(TU)의 상태를 "복사중"으로 갱신하는 제 75 단계(S75) ; 상기 재생할 유니트(EU)에서 "기록중" "기록됨" 상태인 블럭과 맵 블럭 항목, 삭제 횟수를 상기 이동 유니트(TU)로 복사하는 제 76 단계(S76) ; 상기 이동 유니트(TU)의 상태를 "유효" 로 갱신하는 제 77 단계(S77) ; 상기 재생할 유니트(EU)를 삭제하는 제 78 단계(S78) ; 상기 이동 유니트(TU)에 복사된 유니트의 삭제 횟수를 읽어서 증가시킨 후 상기 삭제된 유니트에 기록하는 제 79 단계(S79) ; 사상 정보 등 플래시 메모리내 자료 구조를 갱신하는 제 80 단계(S80)로 재생 연산을 제어한다.
도 10 은 도 8 의 갱신 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도이다.
도 10 에 도시된 바와 같이 본 발명의 방법은, 어느 한 데이타 블럭(X_old)의 데이타를 삭제중(deieting)일 때, a) 예비 블럭(X_new)이 할당되지 않은 상태(free)에서 에러가 발생하면, 동일 유니트내의 어느 한 예비 블럭(Y_new)을 할당하여 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 할당된 예비 블럭(Y_new)에 기록하고, b) 예비 블럭(X_new)이 할당된 상태(allocated)에서 에러가 발생하면, 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 할당된 예비 블럭(X_new)에 기록하고, c) 예비 블럭(X_new)에 갱신 데이타를 기록중인 상태(writing)에서 에러가 발생하면, 상기 예비 블럭(X_new)에 기록된 갱신 데이타를 삭제하는 한편 동일 유니트내의 어느 한 예비 블럭(Z_new)을 재할당하여 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 재할당된 예비 블럭(Z_new)에 기록하여, 에러 발생시 회복 동작을 제어한다.
도 11 은 도 9 의 갱신 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도이다.
도 11 에 도시된 바와 같이 본 발명의 방법은, 재생할 유니트(EU)의 데이타를 전송중(transfer)일 때, a) 이동 유니트(TU)에 데이타가 복사중이 아닌 상태(free)에서 에러가 발생하면, 상기 재생할 유니트(EU)의 재생 연산을 재수행하고, b) 이동 유니트(TU)가 복사중인 상태(copying)에서 에러가 발생하면, 상기 이동 유니트(TU)에 복사된 데이타를 삭제하는 한편 상기 재생할 유니트(EU)의 재생 연산을 재수행하여, 에러 발생시 회복 동작을 제어한다.
상기와 같이 구성된 본 발명의 동작 및 효과를 도 2 를 참조하여 플래시 메모리의 유니트 구조, 사상 동작, 블럭 할당 동작, 독출 연산, 삭제 연산, 갱신 연산, 재생 연산, 에러 발생시 회복 동작으로 나누어 자세히 살펴보도록 한다.
도 2 는 본 발명이 적용되는 플래시 메모리와 그 주변 회로를 도시한 블럭도이다,
1. 플래시 메모리의 유니트 구조
본 발명의 방법에 적용되는 플래시 메모리의 유니트 구조는 대체로 FTL, DMS 등과 유사하지만 이들과는 사상 방법이 다르기 때문에 그에 맞는 저장 구조와 알고리즘을 사용한다.
일반적으로 플래시 메모리는 복수개의 유니트로 구성되어 있으며, 유니트는 복수개의 블럭으로 구성되어 있다.
각 유니트에 물리적 유니트 번호(PUN : Physical Unit Number)와 논리적 유니트 번호(LUN : Logical Unit Number)가 부여되는데, 물리적 유니트 번호(PUN)는 유니트의 물리적 순서에 따라 메겨지며, 논리적 유니트 번호(LUN)는 유니트의 논리적 순서를 나타내는 번호이다.
또한 각 블럭에 물리적 블럭 번호(PBN : Physical Block Number)와 논리적 블럭 번호(LUN : Logical Block Number)가 부여되는데, 물리적 블럭 번호(PBN)는 블럭의 물리적 순서에 따라 메겨지며, 논리적 블럭 번호(LBN)는 블럭의 논리적 순서를 나타내는 번호이다.
도 3 은 본 발명에 따른 플래시 메모리와 그 제어 방법을 설명하기 위한 도면으로, (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)는 플래시 메모리내 유니트의 구성도이다.
도 3 (c)(d)에 도시된 바와 같이 유니트의 첫번째 블럭에는 플래시 메모리 전체에 대한 정보(예컨데 블럭의 크기 정보)와 그 유니트의 관리에 필요한 정보(예컨데 논리적 유니트 번호(LUN), 마모도)가 기록된다. 이 첫번째 블럭를 헤더(EUH : Eraser Unit Header) 블럭이라 한다.
유니트에서 두번째 블럭은 맵(BAM : Block Allocation Map) 블럭으로, 상기 맵 블럭에는 그 유니트에 속한 블럭들에 대한 정보(논리적 블럭 번호(LBN), 블럭의 상태 정보, 갱신된 블럭의 위치 정보 등)가 기록된다.
상기 논리적 블럭 번호(LBN)는 사용자가 생각하는 블럭의 주소이다. 따라서 상기 맵 블럭은 논리적 블럭 번호(LBN)와 그 블럭이 실제로 기록된 물리적 블럭번호(PBN)간의 사상을 나타낸다. 블럭의 데이타가 갱신되면 상기 맵 블럭에서 해당 항목의 상태 정보만 바뀌고 갱신된 블럭이 저장된 위치를 기록한다. 이값을 따라가면서 블럭의 최종 위치를 알아낼 수 있다.
이때, 좀더 효율적으로 플래시 메모리(1)를 제어하기 위해 상기 각 유니트내 맵 블럭의 사본(일부 혹은 전부)을 RAM(3)과 같은 저장수단에 저장해두므로써, 변경된 위치 정보를 따라가지 않고도 즉시 파악하게 할 수 있다.
이때, 상기 유니트에 할당될 수 있는 블럭의 수는 그 유니트에 기록될 수 있는 최대 블럭 수보다 작게 유지한다.
예를들어 도 3(c)(d) 에 도시된 바와 같이 한 유니트에 6개의 블럭이 있다면, 한 개의 블럭은 헤더 블럭으로, 한 개의 블럭은 맵 블럭으로, 세 개의 블럭은 데이타 블럭으로, 나머지 한 개의 블럭은 예비 블럭으로 나누어 사용하므로써, 상기 데이타 블럭이 갱신되거나 삭제된 후 재기록될 때 상기 예비 블럭을 이용할 수 있다.
2. 사상 동작
본 발명의 방법에 의해 제어되는 사상 동작은 은 고정 사상과 임의 사상을 혼합한 일종의 혼합 사상이다.
도 1(c)에 도시된 바와 같이, 혼합 사상은 논리적 블럭 번호(LBN)를 특정한 논리적 유니트 번호(LUN)에 할당하고 논리적 유니트내에서 논리적 블럭 번호(LBN)를 임의로 할당한다. 논리적 블럭 번호(LBN)를 논리적 유니트 번호에 할당하는 방식은 마치 해시 함수를 이용하여 키값을 버켓에 할당하는 것과 유사하다. "Search(Hash(LBN))=PBN".
도 4 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 사상 동작의 흐름도로서, 도 1(c)와 도 3 및 도 4 를 참조하여 살펴보면 다음과 같다.
먼저, 중앙처리장치(1)가 연산을 수행하기 위해 플래시 메모리(2)의 어느 한 블럭에 접근하려면 우선 그 블럭이 속하는 논리적 유니트 번호(LUN)를 탐색해야 한다(S11). 이때 논리적 블럭 번호(LBN)가 속하는 논리적 유니트 번호(LUN)를 탐색하기 위해서 도 3(a)에 도시된 바와 같은 "LBN-to-LUN" 맵 테이블을 이용할 수 있다.
상기 중앙처리장치(1)가 논리적 유니트 번호(LUN)를 결정한 뒤에는 도 3(b)에 도시된 바와 같은 "LUN-to-PUN" 맵 테이블을 이용하여 논리적 유니트에 대한 물리적 유니트를 결정한다(S12).
그리고 나서 상기 중앙처리장치(1)는 도 3(c)(d)에 도시된 바와 같은 물리적 유니트의 맵 블럭에서 상기 논리적 블럭에 대한 물리적 블럭의 위치를 탐색한다(S13).
상기 "LBN-to-LUN" 맵 테이블과 "LUN-to-PUN" 맵 테이블은 RAM(3)상에 위치하며, 삭제 연산이나 갱신 연산 혹은 재생 연산으로 인해 사상 관계가 변하면 상기 맵 테이블도 갱신되어 동일한 논리적 주소로 계속 접근할 수 있다.
이같은 혼합 사상은 고정 사상과 같이 논리적 블럭이 물리적 블럭에 일정하게 사상되지는 않으며 복잡한 사상 정보를 유지하기 위한 공간과 시간이 임의 사상만큼 필요하지는 않으며, 어떤 한 유니트에 속한 블럭들이 집중적으로 갱신되는 경우 삭제 연산이 빈번히 발생하지 않기 때문에 데이타 기록 및 갱신의 효율을 높일 수 있다.
이중 뱅크 플래시 메모리(2)에서는 여러 크기의 유니트를 사용하는 경우가 있는데, 이런 경우 유니트의 크기도 서로 다르기 때문에, 유니트를 논리적 블럭이 할당되는 버켓으로 사용하는 본 발명에 의한 사상 동작에서 이같은 비대칭 구조의 플래시 메모리를 지원하기 위해서는 서로 다른 크기의 버켓을 효율적으로 사용하는 사상 방법이 마련되어야 하는 바, 도 1 (c)에 도시된 바와 같이 논리적 블럭 번호(LBN)를 버켓번호(BN)으로 사상(LBN-to-BN)하는 한편 버켓 번호(BN)를 논리적 유니트 번호(LUN)로 사상(BN-to-LUN)함으로써, 마치 크기가 다른 버켓이 사용되는 것 처럼 처리한다.
3. 블럭 할당 동작
도 5 는 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 블럭 할당 동작의 흐름도이다.
도 5 에 도시된 바와 같이 중앙처리장치(1)가 먼저 플래시 메모리(2)내 유니트의 맵 블럭을 검사하여 상기 유니트에 예비 블럭이 있는가를 판단하여(S21), 상기 유니트에 예비 블럭이 없으면 상기 유니트에 대해 재생연산을 수행한다(S22).
이에 따라 상기 중앙처리장치(1)가 상기 재생된 유니트의 맵 블럭을 검사하여 상기 재생된 유니트에 예비 블럭이 있는가를 판단하여(S23), 상기 제 21 단계(S21)에서 판단한 결과 상기 유니트에 예비 블럭이 있거나 또는 상기 제 23 단계(S23)에서 판단한 결과 상기 재생된 유니트에 예비 블럭이 있으면 맵 블럭에 데이타 블럭의 논리적 블럭 번호(LBN)와 상태를 기록하고(S24), 상기 재생된 유니트에 예비 블럭이 없으면 에러 처리한다(S25).
이때 상기 유니트에 할당될 수 있는 데이타 블럭의 수는 그 유니트에 기록될 수 있는 최대 블럭 수보다 작게 유지한다.
예를들어 한 유니트에 최대 10개의 블럭가 기록될 수 있다면, 실제로 7개의 블럭만 유니트에 할당한다.
나머지 3개 만큼의 빈 공간은 기존의 블럭이 갱신되거나 삭제된 후 재기록될 때 이용될 수 있도록 예비 블럭으로 남겨둔다.
데이타 블럭에 대한 예비 블럭의 비율은 플래시 메모리의 응용 요구에 따라 결정될 수 있는 바, 갱신 연산이 자주 이루어지는 유니트에는 예비 블럭의 비율을 높여서 재생 연산의 수행 빈도를 낮추므로써, 전체적으로 연산의 수행 속도를 증가시킨다.
독출 연산 전용인 유니트라면 예비 블럭을 따로 두지 않으므로써, 공간 사용률을 높일 수 있다.
4. 독출 연산
도 6 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 독출 연산의 흐름도이다.
도 3 과 도 6 을 참조하여 독출 연산을 살펴보면, 중앙처리장치(1)가 먼저 혼합 사상에 의해 해당 데이타 블럭이 속한 논리적 유니트 번호(LUN)와 물리적 유니트 번호(PUN)를 탐색하고, 해당 물리적 유니트의 맵 블럭을 통해 해당 데이타 블럭의 물리적 위치를 결정한다(S31).
이때 상기 중앙처리장치(1)는 상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하여(S32), 해당 데이타 블럭이 존재하면 상기 해당 데이타 블럭에서 데이타를 독출하고(S33), 해당 데이타 블럭이 존재하지 않으면 에러 처리한다(S34).
갱신된 블럭인 경우에는 맵 블럭에서 갱신된 블럭의 위치를 따라가면 블럭의 위치를 찾을 수 있다.
5. 삭제 연산
도 7 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 삭제 연산의 흐름도이다.
도 7 에 도시된 바와 같이 중앙처리장치(1)는 먼저 혼합 사상에 의해 해당 데이타 블럭이 속한 논리적 유니트 번호(LUN)와 물리적 유니트 번호(PUN)를 탐색하여, 해당 물리적 유니트의 맵 블럭을 통해 해당 데이타 블럭의 물리적 위치를 결정한 후(S41), 상기 유니트의 맵 블럭에 기록된 해당 데이타 블럭의 상태를 "삭제중"으로 갱신한다(S42).
즉, 블럭의 데이타를 삭제할 때는 그 블럭이 속한 유니트를 삭제하지 않고 블럭의 상태 정보만 갱신한다.
6. 갱신 연산
도 8 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 갱신 연산의 흐름도이고, 도 12 은 도 8 의 갱신 연산을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)는 플래시 메모리의 유니트의 구성도이다.
도 8 과 도 12 을 참조하여 본 발명에 따른 갱신 연산을 살펴보면, 줄ㅇ앙처리장치(1)는 먼저 혼합 사상에 의해 해당 데이타 블럭이 속한 논리적 유니트 번호(LUN)와 물리적 유니트 번호(PUN)를 탐색하여, 해당 물리적 유니트의 맵 블럭을 통해 해당 데이타 블럭의 물리적 위치를 결정한다(S51).
상기 중앙처리장치(1)는 상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하여(S52), 해당 데이타 블럭이 존재하면 맵 블럭을 검사하여 해당 데이타 블럭의 상태가 "할당됨"인가를 판단한다(S53).
상기 제 53 단계(S53)에서 판단한 결과 해당 블럭이 "할당됨" 상태이면, 상기 중앙처리장치(1)는 해당 데이타 블럭 상태를 "기록중"으로 갱신 한 후(S54), 해당 데이타 블럭에 데이타를 기록하고(S55), 다시 해당 데이타 블럭 상태를 "기록됨"으로 갱신한다(S56).
상기 제 53 단계(S53)에서 판단한 결과 해당 데이타 블럭이 "할당됨" 상태이면 상기 중앙처리장치(1)는 블럭의 상태를 "삭제중"으로 갱신하고(S57), 상기 유니트내에서 예비 블럭을 탐색하여 할당한다(S58).
이에 따라 중앙처리장치(1)는 새롭게 할당된 블럭의 상태를 "기록중"으로 갱신하고(S59), 상기 새롭게 할당된 블럭의 위치 정보를 상기 맵 블럭에 기록한 후(S60), 상기 새롭게 할당된 블럭에 데이타를 기록하고(S61), 상기 새롭게 할당된 블럭의 상태를 "기록됨"으로 갱신한 후(S62), 상기 해당 데이타 블럭의 상태를 "삭제됨"으로 갱신한다(S63).
이때 상기 제 52 단계(S52)에서 판단한 결과 해당 데이타 블럭이 존재하지 않으면 상기 중앙처리장치(1)는 에러 처리한다(S64).
즉, 블럭의 데이타를 갱신할 때는, 유니트내의 예비 블럭이 있으면 그곳에 새로운 데이타를 기록하고 사상 정보를 갱신하며 이전 블럭의 상태를 갱신한다.
예를들어 도 12(c) 에 도시된 바와 같이 블럭 1의 데이타를 갱신할 경우, 상기 중앙처리장치(1)는 예비 블럭을 새로운 블럭 4로 할당하고 새로운 데이타를 상기 새로운 블럭 4에 기록하므로써, 물리적 유니트 1에는 더이상 예비 블럭이 없게 된다. 이때 이전 블럭 1의 데이타는 그대로 두고 블럭1의 상태 정보만 "삭제됨"으로 표시한다.
7. 재생 연산
유니트에 할당된 블럭이 갱신되거나 삭제되는 일이 계속 발생하면 예비 블럭이 점점 줄어들어서 더 이상 갱신과 삭제가 수행될 수 없게 된다.
임의 사상이라면 다른 유니트로 블럭을 이동시키면 되지만 본 발명에서는 블럭가 할당되는 논리적 유니트가 일정하기 때문에, 유니트를 삭제하여 예비 블럭을 다시 확보해야 한다.
즉, 재생할 유니트에서 유효 블럭들을 이동 유니트로 옮기고 이전의 유니트를 삭제하여 다시 사용 가능하도록 재생시킨다.
이때 이동 뒤에는 삭제된 유니트가 이동 유니트가 된다.
플래시 메모리장치에는 적어도 하나 이상의 이동 유니트가 항상 존재하는 데, 유니트의 크기가 다를 경우에는 적어도 그 종류만큼의 이동 유니트가 있어야 한다.
예를들어 8KB와 64KB의 유니트로 구성된 플래시 메모리라면 8KB와 64KB 이동 유니트가 각각 하나 이상 존재해야 한다.
이동은 크기가 같은 유니트 사이에만 발생한다.
따라서 이동 후에도 BN-to-LUN 맵 테이블에서 논리적 유니트 번호(LUN)는 갱신되지 않으며 LUN-to-PUN 맵 테이블에서 물리적 유니트 번호(PUN)만 갱신된다.
크기가 다른 유니트 사이에서 이동이 일어나게 하려면 BN-to-LUN 사상을 위한 별도의 저장 공간이 필요하며, 유니트 내에서 버켓의 경계를 유지하기 위한 저장 공간과 처리 시간도 필요하다.
본 발명의 방법에서는 논리적 블럭이 일정한 논리적 유니트로 사상되기 때문에 어떤 특정 블럭이 자주 갱신되는 경우 그것이 속한 논리적 유니트의 삭제 횟수가 급속히 증가할 수 있다.
이러한 단점을 파일 팩터(Fill Factor)와 마모도 평준화 기법을 사용하여 보완한다.
즉 버켓의 크기를 유니트의 크기보다 작게 유지함으로써 갱신 연산이 어느정도 일어날 때 까지는 이동이 발생하지 않게 할 수 있다.
그러나 그렇게 해도 어떤 경우에는 두개의 유니트의 삭제 횟수만 집중적으로 증가할 수 있다.
따라서 헤더 블럭에 삭제 횟수를 기록하여 그것이 규정된 값을 넘으면 삭제 횟수가 적은 다른 유니트와 데이타를 교환한다.
도 9 은 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 재생 연산의 흐름도이고, 도 13 은 도 9 의 재생 연산을 설명하기 위한 도면으로 (a)는 LBN-to-LUN 맵 테이블의 구성도, (b)는 LUN-to-PUN 맵 테이블의 구성도, (c)(d)는 플래시 메모리내 유니트의 구성도이다.
도 9 와 도 13 을 참조하여 본 발명에 따른 재생 연산을 살펴보면, 먼저 중앙처리장치(1)가 재생할 유니트(EU)와 이동 유니트(TU)를 결정하면(S71), 상기 이동 유니트(TU)의 헤더 블럭에 기록된 삭제 횟수를 검출하여 상기 삭제 횟수가 임계치를 넘는가를 판단한다(S72).
상기 제 72 단계(S72)에서 판단한 결과 상기 이동 유니트(TU)의 삭제 횟수가 임계치를 넘으면 상기 중앙처리장치(1)는 삭제 횟수가 최소인 이동 유니트(TU)를 선택한다(S73).
상기 제 72 단계(S72)에서 판단한 결과 상기 이동 유니트(TU)의 삭제 횟수가 임계치를 넘지 않거나 또는 상기 제 73 단계(S73)에서 삭제 횟수가 최소인 이동 유니트(TU)가 선택되면, 상기 중앙처리장치(1)는 상기 재생할 유니트(EU)의 상태를 "이동중"으로 갱신하고(S74), 상기 삭제 횟수가 임계치를 넘지 않는 이동 유니트(TU) 또는 삭제 횟수가 최소인 이동 유니트(TU)의 상태를 "복사중"으로 갱신한다(S75).
상기 중앙처리장치(1)는 상기 재생할 유니트(EU)에서 "기록중" "기록됨" 상태인 블럭과 맵 블럭 항목, 삭제 횟수를 상기 이동 유니트(TU)로 복사하고(S76), 상기 이동 유니트(TU)의 상태를 "유효" 로 갱신한 후(S77), 상기 재생할 유니트(EU)를 삭제한다(S78).
상기 과정이 완료되면 중앙처리장치(1)는 상기 이동 유니트(TU)의 헤더 블럭에 복사된 삭제 횟수를 읽어서 증가시킨 후 상기 삭제된 유니트의 헤더 블럭에 기록하고(S79), 사상 정보 등 플래시 메모리내 자료 구조를 갱신한다(S80).
이때 상기 제 72 단계(S72)에서 판단한 결과 삭제 횟수가 임계치를 넘는 이동 유니트(TU)의 번호를 RAM(3)에 따로 기록해두었다가 상기와 같은 재생 동작이 완료되고 나면 상기 RAM(3)에 기록된 이동 유니트의 번호를 독출하여 상기 이동 유니트에 대해 재생 연산을 수행한다.
예를들어 도 13(c)(d)에 도시된 바와 같이 물리적 유니트 번호가 1일 유니트에 예비 블럭이 존재하지 않으면 상기 중앙처리장치(1)는 재생 연산을 수행하여, 재생할 유니트에서 유효 블럭들을 물리적 유니트 번호가 3인 이동 유니트로 옮기고 물리적 유니트 번호가 1인 유니트의 데이타를 모두 삭제하여 예비 블럭을 다시 확보해야 한다.
재생 연산 수행시 상기 중앙처리장치(1)는 이동 유니트의 헤더 블럭에서 삭제 횟수를 독출하여 삭제 횟수에 따라 재생 여부를 결정할 수도 있지만, 시스템 초기화시 결정하여 번역 변수로 유지할 수 있다.
또한, 상기 중앙처리장치(1)는 마모도 평준화를 위하여 마도모 순위를 검색해야 하는데, 이를 위해 메모리내의 큐에 자료 구조를 구성할 수 있다.
또한, 상기 중앙처리장치(1)는 상기 블럭 또는 유니트의 상태를 플래시 메모리의 특성과 알고리즘상의 순서에 맞도록 미리 설정할 수 있다.
예를 들어 독출, 기록, 삭제, 갱신 연산에서 블럭의 상태가 미정(FF)→할당됨(8F)→기록중(4F)→기록됨(2F)→삭제중(0F)→삭제됨(00)의 순서로 진행되고, 재생 연산에서 유니트의 상태가 미정(FF)→복사중(8F)→유효(4F)→이동중(2F)의 순서로 진행되므로, 블럭 또는 유니트의 상태가 상기 순서에 따라 갱신되도록 미리 설정해둔다.
8. 에러 회복
도 10 은 도 8 의 갱신 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도이고, 도 11 은 도 9 의 재생 연산 수행중 에러 발생시 본 발명에 따른 플래시 메모리의 제어 방법에 의해 제어되는 회복 동작의 상태도이다.
즉, 도 10 은 블럭을 갱신할 때 이전 블럭(X_old)과 새로운 블럭(X_new)의 상태 정보가 시간에 따라 갱신되는 단계를 보여준다.
아래로 향한 굵은 화살표는 시간축을 나타내며 사각형 안에 든 값은 해당 시점에서의 블럭 상태를 나타내고, 가로로 그어진 선은 고장 발생 시점을 나타낸다. 그림 좌우의 굽어진 화살표와 레이블은 회복 단계에서 취할 연산과 회복 후 그 블럭이 돌아갈 상태를 나타낸다.
이에 따라 어느 한 데이타 블럭(X_old)의 데이타를 삭제중(deleting)일 때, a) 예비 블럭(X_new)이 할당되지 않은 상태(free)에서 에러가 발생하면, 동일 유니트내의 어느 한 예비 블럭(Y_new)을 할당하여 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 할당된 예비 블럭(Y_new)에 기록하고, b) 예비 블럭(X_new)이 할당된 상태(allocated)에서 에러가 발생하면, 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 할당된 예비 블럭(X_new)에 기록하고, c) 예비 블럭(X_new)에 갱신 데이타를 기록중인 상태(writing)에서 에러가 발생하면, 상기 예비 블럭(X_new)에 기록된 갱신 데이타를 삭제하는 한편 동일 유니트내의 어느 한 예비 블럭(Z_new)을 재할당하여 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 재할당된 예비 블럭(Z_new)에 기록하여, 에러 발생시 회복 동작을 제어한다.
예를들어 데이타 블럭(X_old)의 상태가 "삭제중(deleting)"이고 예비 블럭(X_new)의 상태가 "할당됨(allocated)"일 때 고장이 발생하면, 재시작시 상기 데이타 블럭(X_old)에서 삭제중인 데이타를 상기 할당된 예비 블럭(X_new)에 기록하면서 나머지 과정을 계속 진행한다.
블럭의 상태가 가질 수 잇는 값은 도 10 의 상태도에 모두 표현되어 있으며, 회복 과정을 수행하는 도중에 다시 고장이 발생하여도 상태도의 순서에 따라 다시 회복할 수 있다.
도 13 은 유니트를 재생시킬 때 재생되는 유니트(EU)와 비어있는 유니트(TU)의 상태 변화도이다.
이에 따라 재생할 유니트(EU)의 데이타를 전송중(transfer)일 때, a) 이동 유니트(TU)에 데이타가 복사중이 아닌 상태(free)에서 에러가 발생하면, 상기 재생할 유니트(EU)의 재생 연산을 재수행하고, b) 이동 유니트(TU)가 복사중인 상태(copying)에서 에러가 발생하면, 상기 이동 유니트(TU)에 복사된 데이타를 삭제하는 한편 상기 재생할 유니트(EU)의 재생 연산을 재수행하여, 에러 발생시 회복 동작을 제어한다.
예를들어 재생할 유니트(EU)의 상태가 "전송중(transfer)"이고 이동 유니트(TU)의 상태가 "복사중(copying)"일 때 고장이 발생하면, 재시작시 상기 이동 유니트(TU)에 복사된 데이타를 삭제하는 한편 상기 재생할 유니트(EU)의 재생 연산을 재수행한다.
따라서 재생이 완전히 수행되거나 아니면 전혀 수행되지 않은 상태만 존재하게 된다.
데이타 블럭의 데이타를 갱신하고자 할 경우 먼저 갱신할 데이타를 동일 유니트내의 비어있는 예비 블럭에 기록한 후, 맵 블럭의 사상정보를 갱신하고 이전 블럭의 상태정보를 갱신하므로써, 사용자가 동일한 주소를 이용하여 데이타에 접근할 수 있어, 블럭을 갱신할 때마다 유니트를 지우지 않아도 되기 때문에, 삭제 횟수를 감소시켜서 데이타 기록 및 갱신의 효율을 높인다는 데 그 효과가 있다. 또한 플래시 메모리 사용중 에러가 발생하더라도 그 회복이 용이하며, 사상의 임의성이 감소하기 때문에 발생하는 집중적인 삭제 연산을 해결한다는 데 그 효과가 있다.

Claims (12)

  1. 데이타를 기록하기 위한 복수개의 데이타 블럭 ;
    상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ;
    데이타가 기록된 실제 위치를 지정하는 맵 블럭 ;
    플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된 것을 특징으로 하는 플래시 메모리.
  2. 제 1 항에 있어서,
    상기 유니트가 삭제 연산의 기본 단위로 사용되는 것을 특징으로 하는 플래시 메모리.
  3. 제 1 항에 있어서,
    상기 헤더 블럭에 논리적 유니트 번호, 마모도, 블럭의 크기에 대한 정보를 기록하는 것을 특징으로 하는 플래시 메모리.
  4. 제 1 항에 있어서
    상기 맵 블럭에 논리적 블럭 번호, 블럭의 상태 정보, 갱신된 블럭의 위치 정보를 기록하는 것을 특징으로 하는 플래시 메모리.
  5. 데이타를 기록하기 위한 복수개의 데이타 블럭 ; 상기 데이타 블럭의 갱신 데이타를 기록하기 위해 비워 둔 복수개의 예비 블럭 ; 데이타가 기록된 실제 위치를 지정하는 맵 블럭 ; 플래시 메모리에 대한 정보와 유니트에 대한 정보를 기록하는 헤더 블럭으로 이루어진 유니트를 포함하여 구성된 플래시 메모리에 있어서,
    논리적 블럭이 속하는 논리적 유니트를 탐색하는 과정 ;
    상기 논리적 유니트에 대한 물리적 유니트를 탐색하는 과정 ;
    상기 물리적 유니트의 맵 블럭에서 상기 논리적 블럭에 대한 물리적 블럭의 위치를 탐색하는 과정으로 사상 동작을 제어하는 것을 특징으로 하는 플래시 메모리의 제어방법.
  6. 제 5 항에 있어서,
    상기 유니트의 맵 블럭을 검사하여 상기 유니트에 예비 블럭이 있는가를 판단하는 제 21 단계 ;
    상기 제 21 단계에서 판단한 결과 상기 유니트에 예비 블럭이 없으면 상기 유니트에 대해 재생연산을 수행하는 제 22 단계 ;
    상기 재생된 유니트의 맵 블럭을 검사하여 상기 재생된 유니트에 예비 블럭이 있는가를 판단하는 제 23 단계 ;
    상기 제 21 단계에서 판단한 결과 상기 유니트에 예비 블럭이 있거나 또는 상기 제 23 단계에서 판단한 결과 상기 재생된 유니트에 예비 블럭이 있으면, 상기 맵 블럭에 데이타 블럭의 논리적 블럭 번호와 상태를 기록하는 제 24 단계 ;
    상기 제 23 단계에서 판단한 결과 상기 재생된 유니트에 예비 블럭이 없으면 에러 처리하는 제 25 단계로 할당 연산을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  7. 제 5 항에 있어서,
    해당 데이타 블럭이 속한 유니트를 탐색하는 제 31 단계 ;
    상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하는 제 32 단계 ;
    상기 제 32 단계에서 판단한 결과 해당 데이타 블럭이 존재하면, 상기 해당 데이타 블럭에서 데이타를 독출하는 제 33 단계 ;
    상기 제 32 단계에서 판단한 결과 해당 데이타 블럭이 존재하지 않으면 에러 처리하는 제 34 단계로 독출 연산을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  8. 제 5 항에 있어서,
    해당 데이타 블럭이 속한 유니트를 탐색하는 제 41 단계 ;
    상기 유니트의 맵 블럭에 기록된 해당 데이타 블럭의 상태를 "삭제중"으로 갱신하는 제 42 단계로 삭제 연산을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  9. 제 5 항에 있어서,
    해당 데이타 블럭이 속한 유니트를 결정하는 제 51 단계 ;
    상기 유니트내에 해당 데이타 블럭이 존재하는가를 판단하는 제 52 단계 ;
    상기 제 52 단계에서 판단한 결과 해당 데이타 블럭이 존재하면, 맵 블럭을 검사하여 해당 데이타 블럭의 상태가 "할당됨"인가를 판단하는 제 53 단계 ;
    상기 제 53 단계에서 판단한 결과 해당 블럭이 "할당됨" 상태이면 해당 데이타 블럭 상태를 "기록중"으로 갱신하는 제 54 단계 ;
    해당 데이타 블럭에 데이타를 기록하는 제 55 단계 ;
    해당 데이타 블럭 상태를 "기록됨"으로 갱신하는 제 56 단계 ;
    상기 제 53 단계에서 판단한 결과 해당 데이타 블럭이 "할당됨" 상태이면 블럭의 상태를 "삭제중"으로 갱신하는 제 57 단계 ;
    상기 유니트내에서 예비 블럭을 탐색하여 할당하는 제 58 단계 ;
    새롭게 할당된 블럭의 상태를 "기록중"으로 갱신하는 제 59 단계 ;
    상기 새롭게 할당된 블럭의 위치 정보를 상기 맵 블럭에 기록하는 제 60 단계 ;
    상기 새롭게 할당된 블럭에 데이타를 기록하는 제 61 단계 ;
    상기 새롭게 할당된 블럭의 상태를 "기록됨"으로 갱신하는 제 62 단계 ;
    상기 해당 데이타 블럭의 상태를 "삭제됨"으로 갱신하는 제 63 단계 ;
    상기 제 52 단계에서 판단한 결과 해당 데이타 블럭이 존재하지 않으면 에러 처리하는 제 64 단계로 갱신 연산을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  10. 제 5 항에 있어서,
    재생할 유니트와 이동 유니트를 결정하는 제 71 단계 ;
    상기 이동 유니트의 삭제 횟수가 임계치를 넘는가를 판단하는 제 72 단계 ;
    상기 제 72 단계에서 판단한 결과 상기 이동 유니트의 삭제 횟수가 임계치를 넘으면 삭제 횟수가 최소인 이동 유니트를 선택하는 제 73 단계 ;
    상기 제 72 단계에서 판단한 결과 상기 이동 유니트의 삭제 횟수가 임계치를 넘지 않거나 또는 상기 제 73 단계에서 삭제 횟수가 최소인 이동 유니트가 선택되면, 상기 재생할 유니트의 상태를 "이동중"으로 갱신하는 제 74 단계 ;
    상기 74 단계에서 삭제 횟수가 임계치를 넘지 않는 이동 유니트 또는 삭제 횟수가 최소인 이동 유니트의 상태를 "복사중"으로 갱신하는 제 75 단계 ;
    상기 재생할 유니트에서 "기록중" "기록됨" 상태인 블럭과 맵 블럭 항목, 삭제 횟수를 상기 이동 유니트로 복사하는 제 76 단계 ;
    상기 이동 유니트의 상태를 "유효" 로 갱신하는 제 77 단계 ;
    상기 재생할 유니트를 삭제하는 제 78 단계 ;
    상기 이동 유니트에 복사된 유니트의 삭제 횟수를 읽어서 증가시킨 후 상기 삭제된 유니트에 기록하는 제 79 단계 ;
    사상 정보 등 플래시 메모리내 자료 구조를 갱신하는 제 80 단계로 재생 연산을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  11. 제 9 항에 있어서,
    어느 한 데이타 블럭의 데이타를 삭제중일 때,
    a) 예비 블럭이 할당되지 않은 상태에서 에러가 발생하면, 동일 유니트내의 어느 한 예비 블럭을 할당하여 상기 데이타 블럭에서 삭제중인 데이타를 상기 할당된 예비 블럭에 기록하고,
    b) 예비 블럭이 할당된 상태에서 에러가 발생하면, 상기 데이타 블럭에서 삭제중인 데이타를 상기 할당된 예비 블럭에 기록하고,
    c) 예비 블럭에 데이타를 기록중인 상태에서 에러가 발생하면, 상기 예비 블럭에 기록된 데이타를 삭제하는 한편 동일 유니트내의 어느 한 예비 블럭을 재할당하여 상기 데이타 블럭에서 삭제중인 데이타를 상기 재할당된 예비 블럭에 기록하여,
    에러 발생시 회복 동작을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
  12. 제 10 항에 있어서,
    재생할 유니트의 데이타를 전송중일 때,
    a) 이동 유니트에 데이타가 복사중이 아닌 상태에서 에러가 발생하면, 상기 재생할 유니트의 재생 연산을 재수행하고,
    b) 이동 유니트가 복사중인 상태에서 에러가 발생하면, 상기 이동 유니트에 복사된 데이타를 삭제하는 한편 상기 재생할 유니트의 재생 연산을 재수행하여,
    에러 발생시 회복 동작을 제어하는 것을 특징으로 하는 플래시 메모리의 제어 방법.
KR1019990041835A 1999-09-29 1999-09-29 플래시 메모리와 그 제어 방법 KR100577380B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1019990041835A KR100577380B1 (ko) 1999-09-29 1999-09-29 플래시 메모리와 그 제어 방법
CNB001263781A CN1256732C (zh) 1999-09-29 2000-09-12 快闪存储器及其控制方法
US09/671,176 US6587915B1 (en) 1999-09-29 2000-09-28 Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019990041835A KR100577380B1 (ko) 1999-09-29 1999-09-29 플래시 메모리와 그 제어 방법

Publications (2)

Publication Number Publication Date
KR20010029171A true KR20010029171A (ko) 2001-04-06
KR100577380B1 KR100577380B1 (ko) 2006-05-09

Family

ID=36763095

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990041835A KR100577380B1 (ko) 1999-09-29 1999-09-29 플래시 메모리와 그 제어 방법

Country Status (3)

Country Link
US (1) US6587915B1 (ko)
KR (1) KR100577380B1 (ko)
CN (1) CN1256732C (ko)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100538338B1 (ko) * 2003-12-24 2005-12-22 주식회사 포인칩스 플래시 메모리의 블록 균등 분산 기법 및 이를 이용한데이터 저장 장치
KR100678656B1 (ko) * 2005-01-25 2007-02-05 에스케이 텔레콤주식회사 메모리의 임시 영역을 이용한 이동통신 단말기의데이터베이스 업데이트 방법 및 그를 위한 이동통신 단말기
US7191306B2 (en) 2002-11-14 2007-03-13 Samsung Electronics Co., Ltd. Flash memory, and flash memory access method and apparatus
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
US7529879B2 (en) 2004-06-30 2009-05-05 Samsung Electronics Co., Ltd. Incremental merge methods and memory systems using the same
KR100923814B1 (ko) * 2002-10-28 2009-10-27 샌디스크 코포레이션 논리적 블록을 분할하기 위한 방법 및 장치
US7664906B2 (en) 2003-03-31 2010-02-16 Samsung Electronics Co., Ltd. Flash memory access apparatus and method
US7882300B2 (en) 2006-10-27 2011-02-01 Samsung Electronics Co., Ltd. Apparatus and method for managing nonvolatile memory
US8055836B2 (en) 2007-12-13 2011-11-08 Samsung Electronics Co., Ltd. Semiconductor memory system and wear-leveling method thereof
CN114371814A (zh) * 2021-12-08 2022-04-19 浙江大华存储科技有限公司 数据处理的方法、装置及固态硬盘

Families Citing this family (157)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020199130A1 (en) * 2001-06-20 2002-12-26 Yao-Jung Kuo Automatic address redirecting memory device and the method of the same
US6700815B2 (en) * 2002-04-08 2004-03-02 Advanced Micro Devices, Inc. Refresh scheme for dynamic page programming
JP4238514B2 (ja) * 2002-04-15 2009-03-18 ソニー株式会社 データ記憶装置
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
CN100428358C (zh) * 2003-06-24 2008-10-22 群联电子股份有限公司 闪存高速大区块的数据写入方法
US7921262B1 (en) 2003-12-18 2011-04-05 Symantec Operating Corporation System and method for dynamic storage device expansion support in a storage virtualization environment
JP4534498B2 (ja) * 2004-01-28 2010-09-01 ソニー株式会社 半導体装置およびその起動処理方法
JP4661086B2 (ja) * 2004-05-24 2011-03-30 パナソニック株式会社 不揮発性記憶装置および不揮発性メモリの消去方法と書込み方法
KR100632947B1 (ko) * 2004-07-20 2006-10-12 삼성전자주식회사 불 휘발성 메모리 장치 및 그것의 프로그램 방법
US20060026377A1 (en) * 2004-07-27 2006-02-02 Somsubhra Sikdar Lookup interface for array machine context data memory
KR100597411B1 (ko) * 2004-08-04 2006-07-05 삼성전자주식회사 파일의 효율적인 데이터 관리를 위한 방법 및 장치
CN100442246C (zh) * 2004-08-26 2008-12-10 旺玖科技股份有限公司 非易失性存储器的数据更新方法
KR100725390B1 (ko) * 2005-01-06 2007-06-07 삼성전자주식회사 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
US8306952B2 (en) * 2005-03-29 2012-11-06 Sap Ag Technique for managing messages
US7603530B1 (en) 2005-05-05 2009-10-13 Seagate Technology Llc Methods and structure for dynamic multiple indirections in a dynamically mapped mass storage device
US7685360B1 (en) 2005-05-05 2010-03-23 Seagate Technology Llc Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device
US7620772B1 (en) 2005-05-05 2009-11-17 Seagate Technology, Llc Methods and structure for dynamic data density in a dynamically mapped mass storage device
US7653847B1 (en) 2005-05-05 2010-01-26 Seagate Technology Llc Methods and structure for field flawscan in a dynamically mapped mass storage device
US7617358B1 (en) 2005-05-05 2009-11-10 Seagate Technology, Llc Methods and structure for writing lead-in sequences for head stability in a dynamically mapped mass storage device
US7916421B1 (en) 2005-05-05 2011-03-29 Seagate Technology Llc Methods and structure for recovery of write fault errors in a dynamically mapped mass storage device
US7752491B1 (en) 2005-05-05 2010-07-06 Seagate Technology Llc Methods and structure for on-the-fly head depopulation in a dynamically mapped mass storage device
US20060294292A1 (en) * 2005-06-27 2006-12-28 Illendula Ajith K Shared spare block for multiple memory file volumes
KR101274181B1 (ko) 2006-02-13 2013-06-14 삼성전자주식회사 플래시 메모리를 관리하는 장치 및 방법
CN100452907C (zh) * 2006-08-22 2009-01-14 凤凰微电子(中国)有限公司 在用户识别模块和移动终端之间传输数据的方法及其装置
US7694091B2 (en) * 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US9104599B2 (en) 2007-12-06 2015-08-11 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for destaging cached data
CN101622606B (zh) 2006-12-06 2014-04-09 弗森-艾奥公司 用于作为大容量、非易失性存储器的高速缓存的固态存储器的装置、系统和方法
US8074011B2 (en) * 2006-12-06 2011-12-06 Fusion-Io, Inc. Apparatus, system, and method for storage space recovery after reaching a read count limit
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
WO2008070191A2 (en) 2006-12-06 2008-06-12 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for a reconfigurable baseboard management controller
US9116823B2 (en) 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
US9495241B2 (en) 2006-12-06 2016-11-15 Longitude Enterprise Flash S.A.R.L. Systems and methods for adaptive data storage
US8935302B2 (en) * 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8443134B2 (en) * 2006-12-06 2013-05-14 Fusion-Io, Inc. Apparatus, system, and method for graceful cache device degradation
US8706968B2 (en) * 2007-12-06 2014-04-22 Fusion-Io, Inc. Apparatus, system, and method for redundant write caching
TW200828014A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Flash memory management method with low RAM utilization
CN100458736C (zh) * 2006-12-30 2009-02-04 北京中星微电子有限公司 Nand闪存信息提取方法和nand闪存自动识别方法
TWI322957B (en) * 2007-01-23 2010-04-01 Silicon Motion Inc Storage apparatus and method for accessing storage apparatus
CN101251826B (zh) * 2007-02-27 2010-09-01 深圳市同洲电子股份有限公司 闪速存储器、用于闪速存储器的数据管理方法及设备
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
US7908423B2 (en) * 2007-07-25 2011-03-15 Silicon Motion, Inc. Memory apparatus, and method of averagely using blocks of a flash memory
KR101473344B1 (ko) * 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
TWI372396B (en) 2007-09-28 2012-09-11 Phison Electronics Corp Method of protecting data for power failure and controller using the same
JP4746598B2 (ja) * 2007-09-28 2011-08-10 株式会社東芝 半導体記憶装置
CN101408864B (zh) * 2007-10-09 2011-08-24 群联电子股份有限公司 用于断电时的数据保护方法及使用此方法的控制器
US7945587B2 (en) * 2007-10-10 2011-05-17 Microsoft Corporation Random allocation of media storage units
CN101425338B (zh) * 2007-10-29 2011-05-18 群联电子股份有限公司 非易失性存储器的写入方法及使用此方法的控制器
US8195912B2 (en) * 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US8316277B2 (en) * 2007-12-06 2012-11-20 Fusion-Io, Inc. Apparatus, system, and method for ensuring data validity in a data storage process
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
KR20110050404A (ko) 2008-05-16 2011-05-13 퓨전-아이오, 인크. 결함 있는 데이터 저장소를 검출하고 교체하는 장치, 시스템 및 프로그램 제품
CN101739350B (zh) * 2008-11-26 2013-02-13 威刚科技股份有限公司 存储器储存装置及其控制方法
US9542409B2 (en) * 2008-11-26 2017-01-10 Red Hat, Inc. Deduplicated file system
US8266503B2 (en) 2009-03-13 2012-09-11 Fusion-Io Apparatus, system, and method for using multi-level cell storage in a single-level cell mode
CN101539887B (zh) * 2009-05-06 2011-08-17 美商威睿电通公司 快闪存储器管理方法与计算机系统
TWI457940B (zh) * 2009-05-15 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8281227B2 (en) * 2009-05-18 2012-10-02 Fusion-10, Inc. Apparatus, system, and method to increase data integrity in a redundant storage system
US8453021B2 (en) * 2009-07-29 2013-05-28 Stec, Inc. Wear leveling in solid-state device
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
JP5999645B2 (ja) 2009-09-08 2016-10-05 ロンギチュード エンタープライズ フラッシュ エスエイアールエル ソリッドステート記憶デバイス上にデータをキャッシングするための装置、システム、および方法
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
CN102597910B (zh) 2009-09-09 2015-03-25 弗森-艾奥公司 存储设备中用于功率减小管理的装置、系统及方法
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
TWI437569B (zh) * 2009-10-16 2014-05-11 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
JP2011090496A (ja) * 2009-10-22 2011-05-06 Hitachi Ltd 半導体記憶装置および制御方法
CN102110056B (zh) * 2009-12-24 2013-07-17 群联电子股份有限公司 闪存管理方法、闪存控制器与闪存存储系统
WO2011094454A2 (en) * 2010-01-27 2011-08-04 Fusion-Io, Inc. Apparatus, system, and method for determining a read voltage threshold for solid-state storage media
US8661184B2 (en) 2010-01-27 2014-02-25 Fusion-Io, Inc. Managing non-volatile media
US8854882B2 (en) 2010-01-27 2014-10-07 Intelligent Intellectual Property Holdings 2 Llc Configuring storage cells
US8380915B2 (en) 2010-01-27 2013-02-19 Fusion-Io, Inc. Apparatus, system, and method for managing solid-state storage media
US9245653B2 (en) 2010-03-15 2016-01-26 Intelligent Intellectual Property Holdings 2 Llc Reduced level cell mode for non-volatile memory
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US20120089646A1 (en) * 2010-10-08 2012-04-12 Jain Rohit N Processing change data
US8527693B2 (en) 2010-12-13 2013-09-03 Fusion IO, Inc. Apparatus, system, and method for auto-commit memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
CN102541777B (zh) * 2010-12-13 2015-08-19 深圳市硅格半导体有限公司 基于DMA映射的Flash数据传输控制方法及装置
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
WO2012100087A2 (en) 2011-01-19 2012-07-26 Fusion-Io, Inc. Apparatus, system, and method for managing out-of-service conditions
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
FR2965079A1 (fr) * 2011-03-15 2012-03-23 Continental Automotive France Procede de gestion d'une memoire non volatile
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
JP2012203443A (ja) * 2011-03-23 2012-10-22 Toshiba Corp メモリシステムおよびメモリシステムの制御方法
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
CN102214145B (zh) * 2011-07-14 2013-07-17 李佰战 一种闪存数据更新方法及系统
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US8972967B2 (en) * 2011-09-12 2015-03-03 Microsoft Corporation Application packages using block maps
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US8843711B1 (en) * 2011-12-28 2014-09-23 Netapp, Inc. Partial write without read-modify
US9251052B2 (en) 2012-01-12 2016-02-02 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for profiling a non-volatile cache having a logical-to-physical translation layer
US10102117B2 (en) 2012-01-12 2018-10-16 Sandisk Technologies Llc Systems and methods for cache and storage device coordination
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US10019353B2 (en) 2012-03-02 2018-07-10 Longitude Enterprise Flash S.A.R.L. Systems and methods for referencing data on a storage medium
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US8804415B2 (en) 2012-06-19 2014-08-12 Fusion-Io, Inc. Adaptive voltage range management in non-volatile memory
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
KR101993704B1 (ko) 2012-08-24 2019-06-27 삼성전자주식회사 플래시 메모리를 기반으로 하는 저장 장치 및 플래시 메모리를 제어하는 메모리 컨트롤러의 쓰기 메모리 블록 할당 방법
TWI514389B (zh) * 2012-09-03 2015-12-21 Silicon Motion Inc 快閃記憶體控制器和快閃記憶體控制方法
US10509776B2 (en) 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US10318495B2 (en) 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US10102144B2 (en) 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
CN103885889A (zh) * 2014-03-19 2014-06-25 广州市泰斗软核信息科技有限公司 一种基于nor flash的数据存储方法及系统
KR101700315B1 (ko) * 2014-12-12 2017-01-26 국민대학교산학협력단 스크래치패드 메모리 관리 방법, 이를 수행하는 스크래치패드 메모리 관리 장치 및 이를 저장하는 기록매체
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US10009438B2 (en) 2015-05-20 2018-06-26 Sandisk Technologies Llc Transaction log acceleration
KR20200069889A (ko) * 2018-12-07 2020-06-17 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 메모리 시스템 및 이의 동작 방법
CN110471626B (zh) * 2019-08-15 2023-04-25 无锡融卡科技有限公司 应用于Java Card的Nor Flash管理层及方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US6230233B1 (en) * 1991-09-13 2001-05-08 Sandisk Corporation Wear leveling techniques for flash EEPROM systems
KR0121800B1 (ko) * 1992-05-08 1997-11-22 사또오 후미오 메모리 카드장치
JPH0750558B2 (ja) * 1992-09-22 1995-05-31 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリ
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
US5765175A (en) * 1994-08-26 1998-06-09 Intel Corporation System and method for removing deleted entries in file systems based on write-once or erase-slowly media
JPH08328762A (ja) * 1995-06-06 1996-12-13 Mitsubishi Electric Corp 半導体ディスク装置及びそのメモリ管理方法
US5835935A (en) * 1995-09-13 1998-11-10 Lexar Media, Inc. Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method
US5978808A (en) * 1995-12-27 1999-11-02 Intel Corporation Virtual small block file manager for flash memory array
JPH09212411A (ja) * 1996-02-06 1997-08-15 Tokyo Electron Ltd メモリシステム
US5787445A (en) * 1996-03-07 1998-07-28 Norris Communications Corporation Operating system including improved file management for use in devices utilizing flash memory as main memory
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
US5896393A (en) * 1996-05-23 1999-04-20 Advanced Micro Devices, Inc. Simplified file management scheme for flash memory
KR100206186B1 (ko) * 1996-10-09 1999-07-01 윤종용 재기록 가능한 불휘발성 메모리의 기록정보 복구장치 및 방법
JPH10124381A (ja) * 1996-10-21 1998-05-15 Mitsubishi Electric Corp 半導体記憶装置
US5937434A (en) * 1997-02-14 1999-08-10 Intel Corporation Method of managing a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
JPH1139221A (ja) * 1997-07-17 1999-02-12 Hitachi Ltd 不揮発性半導体メモリに対する書き込みアクセス・リフレッシュ制御方法、並びに半導体ファイル記憶装置
US6260156B1 (en) * 1998-12-04 2001-07-10 Datalight, Inc. Method and system for managing bad areas in flash memory
KR100330164B1 (ko) * 1999-04-27 2002-03-28 윤종용 무효 블록들을 가지는 복수의 플래시 메모리들을 동시에 프로그램하는 방법

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
US7127551B2 (en) 2001-11-16 2006-10-24 Samsung Electronics Co., Ltd. Flash memory management method
KR100923814B1 (ko) * 2002-10-28 2009-10-27 샌디스크 코포레이션 논리적 블록을 분할하기 위한 방법 및 장치
US7191306B2 (en) 2002-11-14 2007-03-13 Samsung Electronics Co., Ltd. Flash memory, and flash memory access method and apparatus
US7664906B2 (en) 2003-03-31 2010-02-16 Samsung Electronics Co., Ltd. Flash memory access apparatus and method
US7287117B2 (en) 2003-12-10 2007-10-23 Samsung Electronics Co. Ltd. Flash memory and mapping control apparatus and method for flash memory
KR100538338B1 (ko) * 2003-12-24 2005-12-22 주식회사 포인칩스 플래시 메모리의 블록 균등 분산 기법 및 이를 이용한데이터 저장 장치
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
US7529879B2 (en) 2004-06-30 2009-05-05 Samsung Electronics Co., Ltd. Incremental merge methods and memory systems using the same
KR100678656B1 (ko) * 2005-01-25 2007-02-05 에스케이 텔레콤주식회사 메모리의 임시 영역을 이용한 이동통신 단말기의데이터베이스 업데이트 방법 및 그를 위한 이동통신 단말기
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
US7702845B2 (en) 2006-02-17 2010-04-20 Samsung Electronics Co., Ltd. Method and apparatus for managing blocks according to update type of data in block-type memory
US7882300B2 (en) 2006-10-27 2011-02-01 Samsung Electronics Co., Ltd. Apparatus and method for managing nonvolatile memory
US8055836B2 (en) 2007-12-13 2011-11-08 Samsung Electronics Co., Ltd. Semiconductor memory system and wear-leveling method thereof
KR101401560B1 (ko) * 2007-12-13 2014-06-03 삼성전자주식회사 반도체 메모리 시스템 및 그것의 마모도 관리 방법
CN114371814A (zh) * 2021-12-08 2022-04-19 浙江大华存储科技有限公司 数据处理的方法、装置及固态硬盘

Also Published As

Publication number Publication date
CN1290014A (zh) 2001-04-04
CN1256732C (zh) 2006-05-17
KR100577380B1 (ko) 2006-05-09
US6587915B1 (en) 2003-07-01

Similar Documents

Publication Publication Date Title
KR20010029171A (ko) 플래시 메모리와 그 제어 방법
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
US7734862B2 (en) Block management for mass storage
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US6567307B1 (en) Block management for mass storage
US9032134B2 (en) Methods of operating a memory system that include outputting a data pattern from a sector allocation table to a host if a logical sector is indicated as being erased
JP3942807B2 (ja) ブロックアラインメント機能付き半導体記憶装置
JP4931810B2 (ja) 最適化されたシーケンシャルなクラスタの管理のためのfat分析
US6760805B2 (en) Flash management system for large page size
US7191306B2 (en) Flash memory, and flash memory access method and apparatus
US6327639B1 (en) Method and apparatus for storing location identification information within non-volatile memory devices
JP4679581B2 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
KR100608602B1 (ko) 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
US20050144357A1 (en) Adaptive metablocks
JP2007280428A (ja) メモリ管理
WO2009096180A1 (ja) メモリコントローラ、不揮発性記憶装置、及び、不揮発性記憶システム
JP2001521220A (ja) 改善されたフラッシュファイルシステム
JPWO2005103903A1 (ja) 不揮発性記憶システム
JP2007517325A (ja) データラン・プログラミング
JP2003085037A (ja) メモリ管理方法
KR20040017215A (ko) 플렉시블 플래시 파일 시스템을 위한 시스템 및 방법
KR20100034743A (ko) 메모리 디바이스에 대한 저장 어드레스 리매핑을 위한 방법과 시스템
JP4551328B2 (ja) 情報記録媒体におけるデータ領域管理方法、及びデータ領域管理方法を用いた情報処理装置
JP2000285688A (ja) 不揮発性半導体記憶装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee