KR100644602B1 - 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 - Google Patents

플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 Download PDF

Info

Publication number
KR100644602B1
KR100644602B1 KR1020000059731A KR20000059731A KR100644602B1 KR 100644602 B1 KR100644602 B1 KR 100644602B1 KR 1020000059731 A KR1020000059731 A KR 1020000059731A KR 20000059731 A KR20000059731 A KR 20000059731A KR 100644602 B1 KR100644602 B1 KR 100644602B1
Authority
KR
South Korea
Prior art keywords
block
state
unit
flash memory
valid
Prior art date
Application number
KR1020000059731A
Other languages
English (en)
Other versions
KR20020028624A (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 KR1020000059731A priority Critical patent/KR100644602B1/ko
Priority to DE60121697T priority patent/DE60121697T2/de
Priority to EP01303384A priority patent/EP1197868B1/en
Priority to JP2001123320A priority patent/JP3662510B2/ja
Priority to CNB011177225A priority patent/CN1300803C/zh
Priority to US09/854,920 priority patent/US6381176B1/en
Publication of KR20020028624A publication Critical patent/KR20020028624A/ko
Application granted granted Critical
Publication of KR100644602B1 publication Critical patent/KR100644602B1/ko

Links

Images

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

Landscapes

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

Abstract

본 발명은 부분 기록을 최소화하면서 블록과 유니트의 상태를 기록하고 처리할 수 있는 플래시메모리의 재사상 제어 방법 및 그에 따른 플래시메모리의 구조를 개시한다. 본 발명에 따른 방법은, (a)소정 블록에 대한 사상 정보를 토대로 소정의 물리적인 유니트를 찾는 단계;(b) (a)단계에서 찾아진 물리적인 유니트에 소정 블록이 유효한 상태로 존재하면, 블록의 상태가 미정인 다른 블록을 찾는 단계;(c) 다른 블록의 상태를 소정 블록에 설정되어 있는 상태의 다음 상태로 변경하는 단계;(d) 다른 블록에 새로운 데이터와 논리적 블록 번호와 같은 부가 정보를 기록하는 단계; (e) 소정 블록의 상태를 삭제 상태로 변경하는 단계를 포함한다. 따라서, 부분기록 회수에 제한이 있는 플래시메모리에 대해 블록이나 유니트의 기록상태를 관리할 수 있다.

Description

플래시메모리를 위한 재사상 제어방법 및 그에 따른 플래시 메모리의 구조{Method for driving remapping for flash memory and flash memory architecture thereto}
도 1은 플래시메모리의 블록 및 유니트 구성 예 및 그에 따른 테이블 구성도이다.
도 2는 도 1에 도시된 바와 같이 데이터를 기록한 플래시메모리에 대한 블록단위 삭제 시 플래시메모리의 블록 및 유니트 구성 예 및 그에 따른 테이블 구성도이다.
도 3은 도 2에 도시된 바와 같이 데이터를 기록한 플래시메모리에 대한 유니트 단위 삭제 시 플래시메모리의 블록 및 유니트 구성 예 및 그에 따른 테이블 구성도이다.
도 4는 본 발명에 따른 플래시메모리를 위한 재사상 제어방법에 있어서 기록 및 수정 동작을 설명하기 위한 블록간 관계 예시도이다.
도 5는 NAND타입 플래시메모리의 물리적인 유니트(PU)의 포맷 예시도이다.
도 6은 본 발명에 따른 플래시메모리를 위한 재사상 제어방법에 있어서 블록 기록과정에 대한 동작 흐름도이다.
도 7은 본 발명에 따른 플래시메모리의 삭제유니트의 포맷도이다.
도 8은 본 발명에 따른 플래시메모리를 위한 재사상 제어방법에 있어서 재생연산과정을 설명하기 위한 유니트간 관계 예시도이다.
도 9는 본 발명에 따른 플래시메모리를 위한 재사상 제어방법에 있어서 재생연산과정에 대한 동작 흐름도이다.
본 발명은 블록단위로 플래시메모리에 데이터를 기록하거나 읽는 방법 및 그에 따른 플래시메모리의 구조에 관한 것으로, 특히, 부분적으로 기록 회수가 제한되어 있는 플래시메모리에/로부터 데이터를 기록하거나 읽을 때, 논리적인 주소와 물리적인 주소간의 재사상(remapping)을 제어하는 방법과 그에 적합한 플래시메모리의 구조에 관한 것이다.
플래시메모리는 기존의 RAM(Random Access Memory)이나 비휘발성 저장장치, 마그네틱 디스크 등과 마찬가지로 특정 위치에 저장된 데이터를 임의로 접근할 수 있다.
그러나, 데이터를 수정하거나 삭제하는 방법이 상술한 다른 저장장치들과 다르다. 즉, 블록단위 접근을 위하여 일정한 크기의 블록으로 분할된 플래시메모리의 소정 블록에 데이터를 한 번 기록한 뒤, 이를 수정하거나 삭제하고자 할 때에는 해당 블록을 포함하고 있는 유니트를 수정하거나 삭제하여 한다. 플래시메모리에서 블록은 물리적으로 연속된 주소를 갖는 바이트로 구성된 것으로 플래시메모리에 대 한 연산의 기본 단위이다. 유니트는 복수개의 블록들로 구성된 것으로, 물리적으로 한 번에 삭제 또는 수정할 수 있는 기본 단위이다.
이러한 플래시메모리의 운영 특성 때문에 삭제 회수를 감소시켜서 데이터 기록 및 갱신 효율을 높이고, 고장이 발생해도 데이터가 손실되지 않게 하기 위해 일반적으로 블록(또는 섹터) 재사상(remapping) 기법을 사용하고 있다.
재사상 기법은, 수정 또는 삭제로 인하여 플래시메모리에 기록된 데이터의 물리적인 블록번호(Physical Block Number, PBN이라고 약하기도 함)가 변경되어도 동일한 논리적인 블록번호(Logical Block Number, LBN이라고 약하기도 함)로 플래시메모리에 기록된 데이터에 대한 접근이 가능하도록, 해당 데이터에 대한 논리적인 블록번호와 물리적인 블록 번호(PBN)간의 사상 정보를 관리하는 것이다.
기존의 재사상 기법으로는 수정하고자 하는 데이터가 발생되면, 플래시메모리의 해당 데이터의 물리적인 블록번호를 포함하고 있는 유니트에서 비어 있는 물리적인 블록을 찾아서 기록하고, 해당되는 데이터의 논리적인 블록번호와 물리적인 블록번호간의 사상 정보를 갱신한 뒤, 이전의 물리적인 블록의 상태 정보에 삭제 표시를 한다. 따라서 사용자는 동일한 논리적인 블록 번호를 사용하여 데이터에 접근할 수 있게 된다.
예를 들어 플래시메모리에 도 1에 도시된 바와 같이 데이터가 기록된 상태에서 사용자가 논리적인 블록 번호가 '3'인 블록에 기록된 데이터를 수정하고자 할 때, 도 2에 도시된 바와 같이 해당되는 유니트의 상태가 변경된다. 즉, LBN-to-LUN 테이블을 참조하면, 논리적인 블록 번호 '3'에 대응되는 논리적인 유니트 번호는 '2'이다. 이 논리적인 유니트 번호 '2'를 이용하여 LUN-to-PUN 테이블을 참조하면, 대응되는 물리적인 유니트 번호는 '1'임을 알 수 있다. 따라서 물리적인 유니트 번호가 '1'인 유니트에서 빈 블록을 찾는다. 도 1에 도시된 바와 같이 '4'번 블록이 비어 있는 블록이므로, 논리적인 블록 번호 '3'에 해당되는 수정하고자 하는 데이터는 도 2에 도시된 바와 같이 빈 블록에 기록하고, 블록할당 맵(BAM)의 사상 정보를 갱신한 뒤, 블록할당 맵(BAM)에서 이전의 물리적인 블록이었던 '1'에 대한 상태 정보에 삭제 표시를 한다.
그러나, 해당되는 유니트에 사용되지 않는 물리적인 블록이 많아지면, 플래시메모리의 사용 효율이 낮아지므로 기존에는 도 3에 도시된 바와 같이 사용되는 부분만을 다른 유니트로 이동(transfer)시키고, 해당되는 물리적인 유니트 번호를 상기 다른 유니트의 물리적인 유니트 번호로 변환함으로써 데이터를 이동하더라도 동일한 논리적인 유니트 번호로 접근할 수 있도록 하였다.
이와 같은 재사상 기법은 유니트내에 빈 블록이 존재하거나 플래시메모리 상에 빈 유니트가 존재하는 한 실질적인 삭제 연산을 수행하지 않는다. 그러나, 삭제된 블록이 증가하면 플래시메모리에서 사용할 수 없는 영역이 증가하는 것을 의미하므로, 삭제된 블록이 있는 부분을 재사용하기 위한 방법이 마련되어야 할 것이다.
또한, 쓰기 연산을 수행하거나 유니트의 재사용 연산을 수행하는 도중에 전원 중단 등의 장애가 발생하면, 사용자의 데이터나 재사상을 위해 사용되는 데이터가 손실될 수 있다. 따라서 기존에는 이를 대비하기 위하여 블록과 유니트에 상태 정보를 기록하고, 연산 수행시 상태정보를 적절히 수정함으로써, 복구 연산을 수행하도록 하고 있다.
상술한 바와 같이 기존의 재사상 기법은 데이터뿐만 아니라 사상 정보를 저장하고 관리하는 데도 저장공간과 시간이 소요되므로, NAND타입의 플래시메모리와 같이 부분적인 쓰기 연산의 회수(Number of program cycles in the same page, 이하 Nop라고 약함)가 제한되는 플래시메모리에는 적용하기 어렵다. 이는 상술한 NAND타입의 플래시메모리와 같은 플래시메모리는 장애로 인한 복구를 위하여 사용되는 블록과 유니트의 상태 정보를 여러 번 변경시킬 수 있는 여지가 별로 없기 때문이다.
예를 들어, 소정 블록의 상태가 미정(FF)→할당(8F)→기록중(4F)→기록(2F)→삭제중(0F)→삭제(00)와 같은 절차로 블록의 상태를 표시하거나 미정(FF)→복사중(8F)→유효(4F)→이동중(2F)과 같은 절차로 유니트의 상태를 표시하려면 물리적으로 동일한 위치에 대해 최소한 5회 내지 3회의 쓰기 연산을 수행해야 한다. 뿐만 아니라 유니트나 블록에 사용자 데이터나 에러정정코드(ECC) 등의 경로를 기록하는 것까지 생각한다면, 상술한 바와 같이 Nop가 5회 또는 3회 등으로 제한된 플래시메모리에 기존의 재사상 기법을 적용하기는 어렵다.
본 발명은 상술한 문제를 해결하기 위하여, 부분 기록을 최소화하면서 블록과 유니트의 상태를 기록하고 처리할 수 있는 플래시메모리의 재사상 제어 방법 및 그에 따른 플래시메모리의 구조를 제공하는데 그 목적이 있다.
본 발명의 다른 목적은 순환계수(wrap-count)를 사용하여 최소한의 부분기록으로 상태정보를 표시하는 플래시메모리의 재사상 제어 방법 및 그에 따른 플래시메모리의 구조를 제공하는데 그 목적이 있다.
본 발명이 이루고자 하는 목적들을 달성하기 위하여 본 발명에 따른 방법은, 적어도 1개의 블록을 구비하고 있는 유니트 단위로 영역이 구분된 플래시메모리의 재사상 제어 방법에 있어서, (a)소정 블록에 대한 사상 정보를 토대로 소정의 물리적인 유니트를 찾는 단계;(b) (a)단계에서 찾아진 물리적인 유니트에 소정 블록이 유효한 상태로 존재하면, 블록의 상태가 미정인 다른 블록을 찾는 단계;(c) 다른 블록의 상태를 소정 블록에 설정되어 있는 상태의 다음 상태로 변경하는 단계;(d)다른 블록에 새로운 데이터와 논리적 블록 번호와 같은 부가 정보를 기록하는 단계;(e) 소정 블록의 상태를 삭제 상태로 변경하는 단계를 포함하는 것이 바람직하다.
특히, 상기 방법은, (f) (a)단계에서 찾아진 물리적인 유니트에 소정 블록이 존재하지 않거나 소정 블록이 삭제 상태로 존재하면, 소정 블록의 상태를 미정상태로 설정한 뒤, 블록의 상태가 미정인 다른 블록을 찾는 단계와 (g) (f)단계 수행결과, 다른 블록이 존재하지 않으면, 물리적인 유니트에 대해 재생연산을 수행하는 단계를 더 포함하는 것이 바람직하다.
상기 (g)단계에서 이루어지는 재생연산은, (g1)재생할 소스 유니트와 이동 유니트를 결정하는 단계;(g2) 소스 유니트의 상태를 이동중으로 설정하고, 이동 유 니트의 상태를 복사중으로 설정하는 단계;(g3) 소스 유니트내의 유효한 블록들, 관련 메타 및 헤더 정보를 복사하는 단계;(g4) 복사중으로 설정되어 있는 이동 유니트를 유효 상태로 설정하면서 삭제 회수(마모도 값)를 1회 증가시키는 단계;(g5) 소스 유니트를 삭제하면서 (g4)에서 결정된 삭제 회수를 소스 유니트에 기록하는 단계를 포함하는 것이 바람직하다.
상기 목적들을 달성하기 위한 플래시메모리의 구조는, 유니트의 첫 번째 블록은 논리적인 유니트 번호와 유효한 상태여부, 이전 블록의 삭제 회수를 포함하는 정보의 기록을 위해 할당하고, 유니트의 두 번째 블록은 복사중/이동중 여부와 삭제 회수(마모도)를 포함하는 정보의 기록을 위해 할당하도록 구성되고, 유니트의 데이터가 기록되는 블록의 스페어 어레이의 소정 영역에는 순환계수방식으로 결정된 블록상태를 나타내는 정보가 기록되도록 구성되는 것이 바람직하다.
이하, 첨부된 도면을 참조하여 본 발명을 상세히 설명한다.
먼저, 플래시메모리 재사상 제어에 있어서 삭제 단위로 사용하는 것은 삭제 유니트이다. 삭제 유니트는 플래시메모리의 물리적 삭제 블록(도 1 내지 도 3에 도시되어 있는 PUN1, PUN2와 같은 PUN)과 일치할 수도 있고, 여러 개의 삭제 블록으로 구성될 수도 있다.
각 삭제 유니트에는 물리적 유니트 번호(PUN)와 논리적인 유니트 번호(LUN)가 부여된다. 물리적 유니트 번호는 삭제 유니트의 물리적 순서에 따라 할당되며, 논리적 유니트 번호는 유니트의 논리적 순서를 나타내는 번호이다. 플래시메모리를 처음 사용할 때, 도 1 내지 도 3에 도시된 바와 같은 물리적 유니트 번호(PUN)와 논리적 유니트 번호(LUN)간의 사상을 나타내는 테이블(LUN-to-PUN)이 플래시메모리 상 또는 플래시메모리와 별도로 구비되어 있는 메모리에 구성된다. 이 테이블은 데이터의 삭제나 변경, 재생 등의 연산으로 인해 사상 관계가 변할 때마다 변경된다.
삭제 유니트는 도 1 내지 도 3에 도시된 PUN1, PUN2에 도시된 바와 같이 다시 작은 크기의 블록(또는 섹터)으로 분할된다. 이 블록은 플래시메모리에 대한 연산의 기본단위로 사용된다. 플래시메모리에서 모든 블록의 크기는 동일하다.
삭제 유니트의 삭제 유니트 헤더(Erase Unit Header, EUH)에는 플래시메모리 전체에 대한 정보(예를 들어 블록의 크기, 불량 블록 맵(bad block map) 등)와 그 유니트의 관리에 필요한 정보(예를 들어 논리적 유니트 번호, 마모도 등)가 기록된다. 상기 삭제 유니트 헤더는 하나 또는 그 이상의 블록을 차지할 수 있다.
삭제 유니트 헤더 다음에는 도 1 내지 도 3의 PUN1, PUN2에 도시된 바와 같이 사용자 데이터와 블록 할당 맵(Block Allocation Map, BAM)이 기록된다. 블록 할당 맵은 하나 또는 그 이상의 블록에 모아서 기록될 수도 있고, NAND 타입 플래시메모리의 스페어 어레이(spare array)와 같이 특수한 공간에 블록별로 나누어 기록될 수도 있다.
블록할당 맵(BAM)에는 그 유니트에 속한 블록들에 대한 정보(논리적 블록번호, 상태 등)가 기록된다. 논리적 블록번호는 사용자가 생각하는 블록의 주소이다. 따라서 블록할당 맵은 논리적 블록 번호와 그 블록이 실제로 기록된 물리적 위치간의 사상을 나타낸다. 블록에 기록되는 데이터가 변경될 때는 블록할당 맵의 내용, 즉, 논리적 블록번호와 물리적 블록번호 간의 사상 정보와 상태 정보도 변경된다.
변경된 블록이 많아지면, 플래시메모리에 못쓰게 된 부분이 많아지므로 재생연산을 적절히 수행하여 삭제된 블록이 차지하던 공간을 다시 쓸 수 있게 해야 한다. 기존의 재사상 제어방식에서도 이에 대해 설명하고 있기는 하지만 NAND 타입 플래시메모리와 같이 부분 기록의 회수가 제한된 플래시메모리에 대해 상술한 재생 연산을 어떻게 수행하는지에 대해서는 명시하고 있지 않다.
본 발명에서는 블록의 상태 정보를 순환계수(wrap-count)를 사용하여 표시하는 방법을 제시한다. 이 방법을 사용하면 최소한의 부분 기록 회수로 블록의 상태를 변화시키고, 고장이 발생할 경우에 해당 블록의 데이터를 회복할 수 있다. 또한, 순환계수의 변화순서를 이용하여 이전 데이터와 새 데이터를 구분할 수 있어서 롤 백(roll-back)과 롤 포워드(roll-forward) 등 여러 가지 회복방법을 사용할 수 있다. 롤 백 회복 방법은 새 데이터를 이용하여 데이터를 회복하는 것이고, 롤 포워드는 이전 데이터를 이용하여 데이터를 회복하는 것이다.
이와 같이 플래시메모리의 재사상 제어동작은 블록 기록, 검색, 고장에서의 회복 등으로 구분된다.
블록 할당 맵에서 각 블록의 상태는 크게 미정(free), 유효(valid), 삭제(deleted)로 나뉜다. 이 중에서 '유효'는 다시 세 가지 상태로 구분된다. 예를 들어 s0, s1, s2 상태로 구분된다. 유효한 상태의 세 값 사이에는 순환적인 순서 관계가 있다. 예를 들어 s0<s1, s1<s2, s2<s0인 관계를 가질 수 있다. 유효한 상태는 이 순서에 따라 변화하므로 이것을 순환계수라고 한다. 즉, 블록의 처음 상태는 미정이다가 데이터가 처음 기록될 때 s0가 되며, 그 다음에 다시 기록될 때는 s1, s2, 다시 s0으로 차례로 변하게 된다.
이와 같은 상태정보를 이용하여 소정 블록에 데이터를 기록하는 과정은 도 4와 같다. 도 4는 미정 상태를 '1111'로 설정하고, 유효한 상태의 세 값 중 s0을 '1110'으로 설정하고, s1을 '1100'으로 설정하고, s2를 '1000'으로 설정하고, 삭제를 '0000'으로 설정한 예이다. 따라서 블록의 상태는 상기 5가지 경우의 값이 순환되면서 설정된다. 그리고 도 4는 도 5에 도시된 바와 같이 물리적인 유니트가 구성된 NAND타입 플래시메모리에 적용한 예이다.
도 5에 도시된 바와 같이 NAND타입 플래시메모리의 물리적인 유니트(PU)내의 블록은 메인 어레이(main array)와 스페어 어레이(spare array)로 구성된다. 메인 어레이에는 실질적인 데이터(data)만 기록된다. 스페어 어레이에는 논리적인 섹터 번호(logical sector number, lsn), 순환계수(wrap count, cnt), 논리적인 섹터 번호(lsn)과 순환계수(cnt)의 에러정정 코드(ecc_lsn)와 데이터에 대한 에러 정정 코드(ecc_data) 등이 기록된다. 이 때, 블록을 페이지(page)라고도 표현한다.
NAND타입 플래시메모리 데이터 시트에서 흔히 언급하는 "블록"은 한번에 삭제할 수 있는 물리적인 단위로, 본 실시 예에서 언급되고 있는 "유니트"에 해당한다고 볼 수 있다. 그러나 실제로 구현시에는 상기 유니트를 여러 블록으로 구성할 수도 있다.
먼저, 사상 정보를 이용하여 해당 블록이 속한 논리적 유니트 번호와 물리적 유니트 번호를 결정한다. 결정된 물리적 유니트의 블록 할당 맵에서 해당 블록의 상태를 체크한 결과 미정(1111)이면, 해당 블록의 상태를 s0(=1110)으로 표시한 뒤, 데이터(data)와 논리적 블록번호(lsn) 등의 정보를 기록한다. 미정인 상태의 블록은 논리적 블록번호(lsn)도 유효하지 않은 어떤 값을 갖는다.
해당 블록의 상태가 유효인 경우에는 블록의 상태가 미정(1111)인 블록을 일반적인 사상 방식에 따라 찾는다. 그리고, 검색된 블록의 상태를 이전의 블록 상태의 다음 상태로 변경한다. 즉, 상술한 기존 블록의 상태가 s0(1110)이므로 s1(=1100)로 변경한다. 블록 검색은 기존의 재사상 제어방식에서 이루어진 것과 동일하게 이루어진다.
그리고 나서 새 블록(블럭의 상태가 s1(1100)으로 설정된 블럭)에 새로운 데이터(data)와 논리적 블록번호(lsn) 등을 기록한다. 그리고, 이전 블록의 상태를 삭제(0000)로 변경한다.
그 다음, 해당 블록의 상태가 s1(=1100)이고, 해당 유니트에 미정상태(1111)로 설정되어 있는 블록이 존재하는 경우에, 미정상태로 설정되어 있는 블록의 상태를 s2(=1000)로 설정하고, 블록의 상태가 s2로 설정된 블록에 데이터(data)와 논리적인 블록 번호(lsn) 등의 정보를 기록하고, 이전 블록의 상태는 삭제(=0000)로 변경한다.
또한, 해당 블록의 상태가 s2(=1000)이고, 해당 유니트에 미정상태(111)로 설정되어 있는 블록이 존재하는 경우에, 미정상태로 설정되어 있는 블록의 상태를 s0(=1110)으로 설정하고, 블록의 상태가 s0으로 설정된 블록에 데이터(data)와 논리적인 블록 번호(lsn) 등의 정보를 기록하고, 이전 블록의 상태는 삭제(=0000)로 변경한다.
상술한 블록의 상태 변화는 도 4에 도시된 화살표로 표시된 순서로 따라갈 경우에, 충분히 이해할 수 있을 것이다. 이와 같이 블록에 대한 기록 및 수정 처리를 할 경우에, 1 블럭에 대해 3회의 부분 기록으로 데이터를 기록할 수 있다. 삭제된 상태인 경우에, 데이터와 논리적 블록 번호 등 상태 정보를 제외한 다른 데이터는 모두 유효한 것으로 가정한다면 이는 실제로 2회의 부분 기록으로 기록 연산을 수행하는 것과 같다.
그리고, 상술한 작업 도중에 401 내지 407 단계에서 전원이 오프 되거나 기타 다른 이유로 장애가 발생된 경우에 데이터를 기록하고자 했던 대상 블록의 상태는 삭제(=0000)로 설정하는 회복작업을 수행한다. 그 이외의 작업 도중에는 상술한 바와 같이 장애가 발생된 경우에는 별다른 회복작업을 수행할 필요가 없다.
다시 말해서 블록에 데이터를 기록하던 중에 장애가 발생한 경우, 미정이거나 삭제 상태인 블록에 대해서는 어떠한 회복작업도 해 줄 것이 없다. 하나의 논리적 블록 번호에 대해 유효한 상태인 블록이 하나 밖에 없을 때도 역시 어떠한 회복작업도 해 줄 것이 없다.
문제는 동일한 논리적 블록 번호를 가진 유효한 블록이 두 개 존재하는 경우이다. 기존에는 이 같은 경우에 이전 블록과 새 블록을 구별할 수 없었으나 본 발명과 같이 순환계수를 사용하게 되면 이전 블록과 새 블록을 구별할 수 있다. 회복 시에 이전 블록을 삭제할 것인지 새 블록을 삭제할 것인지에 관한 정책은 응용의 필요에 따라 결정할 수 있다.
즉, 블록 데이터를 기록하던 중에 장애가 발생되면, 현재 하나의 논리적 블 록 번호에 대해 유효한 상태를 갖는 블록이 두 개 존재하는 지를 체크한다. 체크결과, 유효한 상태를 갖는 블록이 하나만 존재하는 경우에는 상술한 바와 같이 아무런 회복작업도 해 줄 것이 없다. 따라서 블록 데이터를 기록하던 작업을 중단하면 된다. 그러나, 유효한 상태를 갖는 블록이 두 개 존재하는 경우에, 블록에 할당되어 있는 순환계수의 값을 토대로 이전 블록과 새 블록을 구분하고, 이전 블록과 새 블록중 하나의 블록을 삭제한다. 도 4는 새 블록을 삭제하도록 구현한 예이다. 그러나, 이전 블록을 삭제하도록 구현할 수도 있다.
도 6은 상술한 재사상 제어 방법에 따라 블록을 기록 및 수정하고자 할 때의 동작 흐름도이다.
즉, 단계 601에서 해당 유니트에 해당 블록이 존재하는지를 체크한다. 체크한 결과, 존재하면 해당되는 블록의 상태가 유효상태인지를 체크한다. 체크결과 유효한 상태이면, 단계 603에서 해당 블록의 상태를 체크한다. 그 다음 단계 605에서 해당 유니트에 빈 블록이 존재하는 지를 체크한다. 체크방식은 블록의 상태가 미정으로 설정되어 있는 블록이 있는지를 검색하는 방식으로 이루어진다. 체크결과, 해당 유니트에 빈 블록이 존재하면, 단계 607에서 새로운 블록 상태 값을 결정한다.
새로운 블록 상태 값은 단계 603에서 체크한 해당 블록의 상태값을 고려하여 결정한다. 즉, 상술한 도 4에 대한 설명에서 언급한 바와 같이 이전의 블록의 상태가 s0에 해당되면, 새로운 블록 상태 값은 s1로 설정되고, 이전 블록의 상태가 s1에 해당되면, 새로운 블록 상태 값은 s2로 설정하고, 이전 블록의 상태가 s2에 해당되면, 새로운 블록 상태 값은 s0로 설정한다. 그리고, 이전 블록의 상태가 미정(free)상태이면, s0로 설정한다.
그 다음 단계609에서 단계 605에서 검색된 빈 블록에 단계 607에서 결정된 새로운 블록 상태값을 기록하고, 단계 611에서 새로운 블록 상태값을 기록한 새로운 블록에 해당되는 데이터를 기록하고, 단계 613에서 이전 블록의 상태를 삭제로 변경하고, 작업을 종료한다. 이 때, 이전 블록은 단계 603에서 상태가 체크된 블록이다.
한편, 단계 601에서 체크한 결과, 해당 블록이 존재하지 않거나 존재하기는 하나 유효한 블록이 아닌 경우에(즉, 해당 블록의 상태가 삭제상태인 경우에), 단계 615에서 해당 블록을 미정상태로 설정한다. 이 때, 해당 블록이 존재하지 않는 경우에는 해당 블록에 대한 영역을 할당하면서 해당 블록의 상태를 미정상태로 설정한다. 그리고, 단계 605에서 체크한 결과, 빈 블록이 존재하면, 단계 607로 진행되어 상술한 바와 같이 새로운 블록 상태값을 결정한다.
그러나, 단계 605에서 체크한 결과, 해당 유니트에 빈 블록이 존재하지 않으면, 단계 617에서 재생연산을 수행한다. 재생연산은 후술할 도 7 내지 도 9에서 상세하게 설명하기로 한다.
재생연산 수행 후, 단계 619에서 해당 유니트에 빈 블록이 존재하는지를 체크한다. 체크결과, 해당 유니트에 빈 블록이 존재하면, 단계 607로 진행되어 새로운 블록 상태값을 결정한다. 그러나, 빈 블록이 존재하지 않으면, 단계 621에서 오류처리를 하고, 작업을 종료한다.
블록에서 데이터를 읽기 위해서는 먼저 사상 정보를 이용하여 해당 논리적 유니트 번호와 물리적 유니트 번호를 알아내고 해당 유니트의 블록 할당 맵을 통해 블록의 물리적 위치를 결정하여 데이터를 읽는다. 블록의 상태가 유효한 경우에만 데이터를 읽게 되어 있으며 유효한 상태의 블록이 존재하지 않으면 그 블록은 한 번도 기록되지 않았거나 삭제되어 사용되지 않고 있는 블록이므로 초기값(예를 들어 모두 0xFF)을 반환하게 된다. 검색은 기존의 재사상 제어방식에서 이루어진 것과 동일하다.
한편, 삭제된 블록들이 많이 들어 있는 유니트에 대해서는 재생 연산이 수행되는데 이 때도 유니트의 상태를 변경시킬 필요가 있다.
본 발명에서 예를 든 삭제 블록의 포맷은 도 7에 도시된 바와 같다.
즉, 도 7을 참조하면, 삭제 블록은 이전 유니트의 물리적인 유니트 번호(physical unit number of previous unit, xpun), 재생된(이전) 유니트의 마모도 레벨(wear level of reclaimed(previous) unit), 논리적인 유니트 번호(logical unit number, lun), 유효 플래그(valid flag, v), 불량 블록 테이블(bad block table, bb[b]), 마모도 레벨(wear level, cnt), 복사(copying(cp))/전송(transferring(xf)), 데이터(data) 들이 기록된다.
유니트의 상태 변화도 부분 기록 회수에 따라 제한된다. 블록에 적용하였던 순환계수기법을 유니트에도 적용할 수 있지만 삭제 유니트 헤더를 여러 블록에 기록하면서 상태 정보를 각 블록에 적절히 나누어 배치하는 방법을 사용할 수도 있다.
예를 들어, 유니트의 상태가 미정(free), 유효(valid), 복사중(being copied), 이동중(being transferred)으로 나뉜다면, 삭제 유니트 헤더를 도 8에 도시된 바와 같이 두 블록에 걸쳐서 기록하되 첫 번째 블록에는 미정과 유효인 상태를 두 번째 블록에는 복사중과 이동중인 상태를 기록할 수 있다. 이 때 미정인 상태라 하더라도 마모도 평준화(wear-leveling)를 위한 카운터가 기록되어야 한다는 점에 주의해야 한다.
자유 삭제 유니트의 상태는 미정이고, 그 외의 정상적인 유니트의 상태는 유효이다. 복사중과 이동중이라는 상태가 표시되고, 자유 삭제 유니트였다가 재생되는 블록으로부터 데이터를 이어 받는 유니트에는 복사중이라는 상태가 표시된다. 재생을 수행하기 전에 먼저 이전 유니트의 상태를 이동중(xf)이라고 표시하고 자유삭제 유니트의 상태를 복사중(cp)이라고 표시한다.
복사중인 유니트에 이동중인 유니트로부터 유효한 블록들을 복사한 뒤, 이동중인 유니트의 마모도 값과 논리적 유니트 번호 등을 복사한 뒤, 복사중인 유니트의 상태를 유효(v)로 표시한다. 그리고 나서 이동중인 유니트를 삭제하고, 새 유니트에 복사되었던 마모도 값(cnt)을 1만큼 증가시켜 유니트 헤더에 기록한다.
연산을 수행하던 중에 장애가 발생하면, 도 8에서 재시작(redo)으로 지적한 부분에서는 재 시작한 후에 적절한 회복 절차를 수행한다. 즉, 재생연산 도중의 일시적인 상태에 해당되는 '이동중', '복사중'인 경우에 장애가 발생하면, 재시간을 한다. 그러나, 도 8에서 재시작을 지적한 부분을 제외한 부분에서는 어떠한 회복 절차도 해 줄 것이 없다.
재생연산 수행중 발생한 장애에 대한 회복방법도 블록 기록 및 수정시 회복 방법과 비슷하다.
즉, 수행중이던 연산의 단계에 따라 적절히 재생 연산을 다시 수행한다. 예를 들어 논리적 유니트 번호가 같은 유니트가 두 개 존재하는데, 하나는 이동중이고, 다른 하나는 복사중이라면 복사중인 유니트를 삭제하고 마모도 값을 기록한다. 이동중인 유니트에 이전 유니트(복사중인 유니트)의 마모도가 아직 기록되지 않은 상태였다면 먼저 이전 유니트(복사중 유니트)에 기록되어 있는 이동중인 유니트에 대한 마모도 값을 이동중인 유니트에 복사한 뒤, 다음 연산을 수행하면 된다.
삭제 유니트의 상태는 종래 기술과 같이 고정된 위치에서 값을 여러 가지로 변경시켜 나타낼 수도 있고, 유니트 헤더를 여러 블록에 나누어 기록하며 각 상태에 대해 다른 위치를 지정하고 값을 0과 1 등으로 구분하여 상태값 할당여부를 결정할 수도 있다.
예를 들어 첫 번째 블록에 논리적 유니트 번호와 유효한 상태 여부, 이전 블록의 마모도 등을 기록하고, 두 번째 블록에 복사중/이동중 여부와 마모도 등을 기록하고, 도 8에서 제시한 것과 같은 순서에 따라 재생 연산을 수행한다면 3회의 부분 기록이면 충분하다. 상태 정보를 더 많은 블록에 분산시키거나 배치를 조절하면 부분 기록 회수를 더 줄일 수도 있다.
도 9는 본 발명에 따른 재사상 제어방법으로 블록을 재생하는 과정에 대한 동작 흐름도이다.
단계 901에서 재생할 삭제 유니트(소스 유니트)와 이동 유니트(자유 삭제 유니트)를 결정한다. 단계 902에서 이동 유니트의 삭제 회수가 임계치를 넘었는지를 체크한다. 임계치는 상술한 바를 토대로 할 때, 3으로 설정될 수 있다.
체크결과, 이동 유니트의 삭제 회수가 임계치를 넘지 않으면, 단계 903에서 소스 유니트를 '이동중' 상태로 변경한다. 단계 904에서 이동 유니트를 '복사중' 상태로 변경한다.
다음, 단계 905에서 소스 유니트에서 유효 블록과 관련 메타 데이터(논리적 블록 번호, ECC, 불량 블록 맵 등)를 이동 유니트로 복사한다. 그리고, 단계 906에서 이동 유니트의 나머지 헤더 정보를 기록하고 유효 상태로 변경한다. 나머지 헤더 정보는 소스 유니트의 물리적인 유니트 번호와 삭제회수, 논리적 유니트 번호 등이다.
단계 907에서 소스 유니트를 삭제한다. 그리고, 단계 908에서 소스 유니트에 새로운 삭제 회수를 기록한다. 새로운 삭제 회수는 이전 삭제 회수에 1증가한 값(이전 삭제회수 +1)이다. 단계 909에서 사상 정보 등 메모리 내 자료 구조를 변경한다. 이 때, 변경은 갱신에 따른 것이다. 그리고, 단계 910에서 저장된 소스 유니트 번호가 있는지 체크한다. 체크결과, 있으면, 단계 901로 진행된다. 그러나, 체크결과, 없으면, 작업을 종료한다.
한편, 단계 902에서 체크한 결과, 이동 유니트의 삭제 회수가 임계치를 넘은 경우에는 단계 911에서 현재 소스 유니트의 번호를 저장한다. 이는 해당되는 이동 유니트에 소스 유니트의 데이터를 옮기는 것이 마땅치 않기 때문에, 후술할 단계 912에서 선택된 소스 유니트(삭제 유니트)를 이용한 재생 연산 처리후, 바뀌는 이동 유니트를 이용하여 이전에 재생되지 못했던 소스 유니트를 재생할 때, 사용하기 위한 것이다.
그리고, 단계 912에서 삭제 회수가 최소인 삭제 유니트를 선택하고, 단계 903으로 진행되어 상술한 바와 같은 재생연산처리가 수행된다.
상술한 바와 같이 본 발명에 의하면, 순환계수를 사용하여 상태 정보를 분산 배치함으로써, NAND타입의 플래시메모리와 같이 부분기록 회수에 제한이 있는 플래시메모리에 대해 블록이나 유니트의 기록상태를 관리할 수 있는 효과가 있다.
예를 들어 미정(1111)→유효(s0(1110)→s1(1100)→s2(1000)→s0(1110)→...)→삭제(0000)와 같은 절차로 변경할 수 있다. 따라서 NAND 타입 플래시메모리에 대해 이를 적용한다면 3회의 부분기록으로 데이터를 기록할 수 있다. 삭제된 상태인 경우에, 데이터와 논리적 블록번호 등 상태정보를 제외한 다른 데이터는 모두 무효한 것으로 가정한다면, 실제로 2회의 부분기록으로 기록연산을 수행하는 것과 같다.
삭제 유니트의 경우에도 첫 번째 블록에 논리적인 유니트 번호와 유효한 상태 여부, 이전 블록의 마모도(삭제 회수) 등을 기록하고, 두 번째 블록에 복사중/이동중 여부와 마모도 등을 기록한다면 3회의 부분 기록이면 충분하다. 상태 정보를 더 많은 블록에 분산시키거나 배치를 조절하면 부분 기록 회수를 더 줄일 수도 있다.

Claims (12)

  1. 적어도 1개의 블록을 구비하고 있는 유니트 단위로 영역이 구분된 플래시메모리의 재사상 제어 방법에 있어서,
    (a)소정 블록에 대한 사상 정보를 토대로 소정의 물리적인 유니트를 찾는 단계;
    (b)상기 (a)단계에서 찾아진 물리적인 유니트에 상기 소정 블록이 유효한 상태로 존재하면, 블록의 상태가 미정인 다른 블록을 찾는 단계;
    (c)상기 다른 블록의 상태를 상기 소정 블록에 설정되어 있는 상태의 다음 상태로 변경하는 단계;
    (d)상기 다른 블록에 새로운 데이터와 논리적 블록 번호와 같은 부가 정보를 기록하는 단계;
    (e)상기 소정 블록의 상태를 삭제 상태로 변경하는 단계를 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  2. 제 1 항에 있어서, 상기 (c)단계는 4가지 상태중 하나의 상태로 설정된 상기 소정 블록에 따라 상기 다른 블록의 상태를 설정하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  3. 제 2 항에 있어서, 상기 (c)단계는,
    (c1)상기 소정 블록의 상태가 미정 상태이면, 상기 다음 블록의 상태를 유효 상태중 첫 번째 상태로 설정하는 단계;
    (c2)상기 소정 블록의 상태가 유효 상태중 첫 번째 상태이면, 상기 다음 블록의 상태를 유효 상태중 두 번째 상태로 설정하는 단계;
    (c3)상기 소정 블록의 상태가 유효 상태중 두 번째 상태이면, 상기 다음 블록의 상태를 유효 상태중 세 번째 상태로 설정하는 단계;
    (c4)상기 소정 블록의 상태가 유효 상태중 세 번째 상태이면, 상기 다음 블록의 상태를 유효 상태중 첫 번째 상태로 설정하는 단계로 이루어지는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  4. 제 1 항에 있어서, 상기 플래시메모리에 대한 재사상 제어방법은,
    (f)상기 (a)단계에서 찾아진 물리적인 유니트에 상기 소정 블록이 존재하지 않거나 상기 소정 블록이 삭제 상태로 존재하면, 상기 소정 블록의 상태를 미정상태로 설정한 뒤, 블록의 상태가 미정인 다른 블록을 찾는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  5. 제 5 항에 있어서, 상기 플래시메모리에 대한 재사상 제어방법은,
    (g)상기 (f)단계 수행결과, 다른 블록이 존재하지 않으면, 상기 물리적인 유니트에 대해 재생연산을 수행하는 단계;
    (h)상기 (g)단계 수행 후, 블록의 상태가 미정인 다른 블록을 다시 찾는 단계;
    (i)상기 (h)단계 수행결과, 다른 블록이 찾아지면, 상기 (c)단계로 진행하는 단계;
    (j)상기 (h)단계 수행결과, 다른 블록이 찾아지지 않으면, 오류로 처리하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  6. 제 5 항에 있어서, 상기 (g)단계는,
    (g1)재생할 소스 유니트와 이동 유니트를 결정하는 단계;
    (g2)상기 소스 유니트의 상태를 이동중으로 설정하고, 상기 이동 유니트의 상태를 복사중으로 설정하는 단계;
    (g3)상기 소스 유니트내의 유효한 블록들, 관련 메타 및 헤더 정보를 복사하는 단계;
    (g4)상기 복사중으로 설정되어 있는 이동 유니트를 유효 상태로 설정하면서 삭제 회수(마모도 값)를 1회 증가시키는 단계;
    (g5)상기 소스 유니트를 삭제하면서 상기 (g4)에서 결정된 삭제 회수를 상기 소스 유니트에 기록하는 단계를 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  7. 제 6 항에 있어서, 상기 (g)단계는,
    (g6)상기 (g1)단계에서 결정된 상기 이동 유니트의 삭제 회수가 임계치를 넘는지를 체크하는 단계;
    (g7)상기 (g6)단계의 체크결과, 상기 임계치를 넘지 않으면, 상기 (g2)단계 로 진행하는 단계;
    (g8)상기 (g6)단계의 체크결과, 상기 임계치를 넘으면, 상기 소스 유니트의 번호를 저장하는 단계;
    (g9)상기 삭제 회수가 최소인 소스 유니트를 선택한 뒤, 상기 (g2)단계로 진행하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  8. 제 6 항에 있어서, 상기 (g)단계는,
    (g6)상기 (g5)단계 수행 후, 상기 플래시메모리에 대한 사상 정보를 포함한 내부 자료 구조를 갱신하는 단계;
    (g7)재생할 소스 유니트가 더 존재하는 지를 체크하는 단계;
    (g8)상기 (g7)의 체크결과, 상기 재생할 소스 유니트가 더 존재하면, 상기 (g1)단계로 리턴하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  9. 제 6 항에 있어서, 상기 (g)단계는,
    (g6)장애가 발생되면, 논리적인 유니트가 동일한 유니트가 두 개 존재하는 지를 체크하는 단계;
    (g7)상기 (g6)단계의 체크결과, 하나는 이동중이고, 하나는 복사중인 동일한 유니트가 두 개 존재하면, 복사중인 유니트를 삭제하고 복사중이던 유니트에 삭제 회수를 기록하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  10. 제 9 항에 있어서, 상기 (g)단계는,
    (g8)장애가 발생된 상태에서 이동중인 상태로 설정된 유니트에 (g4)단계에서 생성된 삭제 회수가 기록되지 않은 상태이면, 상기 복사중인 유니트에 설정되어 있는 이동중인 유니트에 대한 삭제회수를 이동중인 유니트로 복사한 후, 재생 연산을 종료하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  11. 제 1 항에 있어서, 상기 플래시메모리에 대한 재사상 제어방법은,
    (f)장애가 발생되면, 하나의 논리적 블록 번호에 대해 유효한 상태인 블록이 두 개 존재하는 지를 체크하는 단계;
    (g)상기 (f)단계 수행결과, 상기 유효한 상태의 블록이 하나만 존재하는 경우에는 블록 상태를 기록하는 과정을 종료하는 단계;
    (h)상기 (f)단계 수행결과, 상기 유효한 상태의 블록이 두 개 존재하는 경우에, 두 블록의 블록상태를 체크하여 상기 소정 블록(이전 블럭)과 다음 블록(새 블럭)을 구분하는 단계;
    (i)상기 소정 블록과 다음 블록중 하나의 블록을 삭제하는 단계를 더 포함하는 것을 특징으로 하는 플래시메모리에 대한 재사상 제어방법.
  12. 적어도 1개의 블록을 구비하고 있는 유니트 단위로 영역이 구분된 플래시메모리에 있어서,
    상기 유니트의 첫 번째 블록은 논리적인 유니트 번호와 유효한 상태여부, 이전 블록의 삭제 회수를 포함하는 정보가 기록되도록 할당하고,
    상기 유니트의 두 번째 블록은 복사중/이동중 여부와 삭제 회수(마모도)를 포함하는 정보가 기록되도록 할당하도록 구성되고,
    상기 유니트의 데이터가 기록되는 블록의 여유 어레이의 소정 영역에는 순환계수 방식으로 결정된 블록상태를 나타내는 정보가 기록되도록 구성된 플래시메모리.
KR1020000059731A 2000-10-11 2000-10-11 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조 KR100644602B1 (ko)

Priority Applications (6)

Application Number Priority Date Filing Date Title
KR1020000059731A KR100644602B1 (ko) 2000-10-11 2000-10-11 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
DE60121697T DE60121697T2 (de) 2000-10-11 2001-04-11 Verfahren zum ansteuern von remapping in einem flash-speicher und in einer dafür geeigneten flash-speicher-architektur
EP01303384A EP1197868B1 (en) 2000-10-11 2001-04-11 Method of driving remapping in flash memory and flash memory architecture suitable therefor
JP2001123320A JP3662510B2 (ja) 2000-10-11 2001-04-20 フラッシュメモリのための再写像制御方法及びこれによるフラッシュメモリの構造
CNB011177225A CN1300803C (zh) 2000-10-11 2001-04-29 闪速存储器中驱动再映射的方法及其闪速存储器体系结构
US09/854,920 US6381176B1 (en) 2000-10-11 2001-05-15 Method of driving remapping in flash memory and flash memory architecture suitable therefor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000059731A KR100644602B1 (ko) 2000-10-11 2000-10-11 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조

Publications (2)

Publication Number Publication Date
KR20020028624A KR20020028624A (ko) 2002-04-17
KR100644602B1 true KR100644602B1 (ko) 2006-11-10

Family

ID=36848389

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000059731A KR100644602B1 (ko) 2000-10-11 2000-10-11 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조

Country Status (6)

Country Link
US (1) US6381176B1 (ko)
EP (1) EP1197868B1 (ko)
JP (1) JP3662510B2 (ko)
KR (1) KR100644602B1 (ko)
CN (1) CN1300803C (ko)
DE (1) DE60121697T2 (ko)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7702831B2 (en) * 2000-01-06 2010-04-20 Super Talent Electronics, Inc. Flash memory controller for electronic data flash card
US7610438B2 (en) * 2000-01-06 2009-10-27 Super Talent Electronics, Inc. Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US20060161725A1 (en) * 2005-01-20 2006-07-20 Lee Charles C Multiple function flash memory system
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US7171536B2 (en) * 2002-10-28 2007-01-30 Sandisk Corporation Unusable block management within a non-volatile memory system
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7103732B1 (en) 2002-10-28 2006-09-05 Sandisk Corporation Method and apparatus for managing an erase count block
US7096313B1 (en) 2002-10-28 2006-08-22 Sandisk Corporation Tracking the least frequently erased blocks in non-volatile memory systems
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US7039788B1 (en) 2002-10-28 2006-05-02 Sandisk Corporation Method and apparatus for splitting a logical block
DE10252059B3 (de) * 2002-11-08 2004-04-15 Infineon Technologies Ag Verfahren zum Betreiben einer Speicheranordnung
KR100526178B1 (ko) 2003-03-31 2005-11-03 삼성전자주식회사 플래시 메모리 액세스 장치 및 방법
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
US7139863B1 (en) 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7032087B1 (en) 2003-10-28 2006-04-18 Sandisk Corporation Erase count differential table within a non-volatile memory system
KR100608602B1 (ko) * 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
KR100526190B1 (ko) * 2004-02-06 2005-11-03 삼성전자주식회사 플래시 메모리의 재사상 방법
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
US20080147964A1 (en) * 2004-02-26 2008-06-19 Chow David Q Using various flash memory cells to build usb data flash cards with multiple partitions and autorun function
JP2006003966A (ja) * 2004-06-15 2006-01-05 Oki Electric Ind Co Ltd フラッシュメモリの書込方法
KR100568115B1 (ko) 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
US7130209B2 (en) * 2004-10-15 2006-10-31 Atmel Corporation Flexible OTP sector protection architecture for flash memories
KR100631765B1 (ko) * 2004-10-18 2006-10-09 삼성전자주식회사 플래시 메모리의 데이터 처리 장치 및 방법
US7958430B1 (en) * 2005-06-20 2011-06-07 Cypress Semiconductor Corporation Flash memory device and method
JP4933861B2 (ja) 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
EP1791055A1 (en) * 2005-11-23 2007-05-30 Incard SA IC card file system
US8194880B2 (en) * 2006-01-30 2012-06-05 Audience, Inc. System and method for utilizing omni-directional microphones for speech enhancement
KR100781517B1 (ko) * 2006-02-16 2007-12-03 삼성전자주식회사 비휘발성 메모리의 맵핑 정보 관리 장치 및 방법
US20080077590A1 (en) * 2006-09-22 2008-03-27 Honeywell International Inc. Efficient journaling and recovery mechanism for embedded flash file systems
KR100849221B1 (ko) 2006-10-19 2008-07-31 삼성전자주식회사 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
KR100771519B1 (ko) * 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
TWI326028B (en) 2006-11-20 2010-06-11 Silicon Motion Inc Method for flash memory data management
KR100816761B1 (ko) * 2006-12-04 2008-03-25 삼성전자주식회사 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법
KR100857761B1 (ko) * 2007-06-14 2008-09-10 삼성전자주식회사 웨어 레벨링을 수행하는 메모리 시스템 및 그것의 쓰기방법
CN101364438B (zh) * 2007-08-08 2011-04-06 奇岩电子股份有限公司 提高与非门阵列闪存的存取装置与方法
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
KR101413736B1 (ko) 2007-09-13 2014-07-02 삼성전자주식회사 향상된 신뢰성을 갖는 메모리 시스템 및 그것의웨어-레벨링 기법
KR101464338B1 (ko) 2007-10-25 2014-11-25 삼성전자주식회사 불휘발성 메모리 장치를 이용한 데이터 저장장치, 메모리시스템, 그리고 컴퓨터 시스템
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
US20090313416A1 (en) * 2008-06-16 2009-12-17 George Wayne Nation Computer main memory incorporating volatile and non-volatile memory
KR101497074B1 (ko) * 2008-06-17 2015-03-05 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법
US8245244B2 (en) * 2008-08-26 2012-08-14 Intel Corporation Device, system, and method of executing a call to a routine within a transaction
TWI364661B (en) * 2008-09-25 2012-05-21 Silicon Motion Inc Access methods for a flash memory and memory devices
US8275933B2 (en) * 2008-11-10 2012-09-25 Fusion-10, Inc Apparatus, system, and method for managing physical regions in a solid-state storage device
US8751860B2 (en) 2009-06-03 2014-06-10 Micron Technology, Inc. Object oriented memory in solid state devices
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
JP5269213B2 (ja) * 2010-02-02 2013-08-21 株式会社東芝 ストレージ機能を持つ通信装置
TWI447735B (zh) * 2010-02-05 2014-08-01 Phison Electronics Corp 記憶體管理與寫入方法及其可複寫式非揮發性記憶體控制器與儲存系統
CN102193870B (zh) * 2010-03-09 2014-06-25 群联电子股份有限公司 存储器管理与写入方法、存储器控制器与存储器存储系统
KR101666987B1 (ko) * 2010-04-20 2016-10-17 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
JP2012123499A (ja) 2010-12-07 2012-06-28 Toshiba Corp メモリシステム
US9292392B2 (en) 2011-06-30 2016-03-22 Hewlett Packard Enterprise Development Lp Memory module that includes a memory module copy engine for copying data from an active memory die to a spare memory die
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
CN102789403B (zh) * 2012-07-11 2015-08-12 忆正科技(武汉)有限公司 一种闪存控制器及其控制方法
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
KR102067029B1 (ko) 2012-12-13 2020-01-16 삼성전자주식회사 반도체 메모리 장치 및 메모리 시스템
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
KR102015053B1 (ko) * 2013-02-20 2019-08-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 처리 방법
KR102101304B1 (ko) 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
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
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
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
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
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9747157B2 (en) 2013-11-08 2017-08-29 Sandisk Technologies Llc Method and system for improving error correction in data storage
TWI548991B (zh) * 2014-02-14 2016-09-11 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
US9405618B2 (en) * 2014-05-28 2016-08-02 Infineon Technologies Ag Marker programming in non-volatile memories
KR102491624B1 (ko) * 2015-07-27 2023-01-25 삼성전자주식회사 데이터 저장 장치의 작동 방법과 상기 데이터 저장 장치를 포함하는 시스템의 작동 방법
FR3051574A1 (fr) * 2016-05-20 2017-11-24 Proton World Int Nv Gestion du stockage dans une memoire flash
TWI661299B (zh) * 2018-04-30 2019-06-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
CN113568579B (zh) * 2021-07-28 2022-05-03 深圳市高川自动化技术有限公司 一种存储器、数据存储方法以及数据读取方法
TWI804236B (zh) * 2022-03-16 2023-06-01 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Family Cites Families (6)

* 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
US5485595A (en) * 1993-03-26 1996-01-16 Cirrus Logic, Inc. Flash memory mass storage architecture incorporating wear leveling technique without using cam cells
JPH08212019A (ja) * 1995-01-31 1996-08-20 Mitsubishi Electric Corp 半導体ディスク装置
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6034891A (en) * 1997-12-01 2000-03-07 Micron Technology, Inc. Multi-state flash memory defect management

Also Published As

Publication number Publication date
JP3662510B2 (ja) 2005-06-22
EP1197868A3 (en) 2004-01-14
US20020041517A1 (en) 2002-04-11
CN1348191A (zh) 2002-05-08
CN1300803C (zh) 2007-02-14
EP1197868B1 (en) 2006-07-26
EP1197868A2 (en) 2002-04-17
JP2002123421A (ja) 2002-04-26
US6381176B1 (en) 2002-04-30
DE60121697T2 (de) 2007-08-02
DE60121697D1 (de) 2006-09-07
KR20020028624A (ko) 2002-04-17

Similar Documents

Publication Publication Date Title
KR100644602B1 (ko) 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
KR100324028B1 (ko) 비휘발성 메모리에서 파일의 연속 중복기재를 수행하는 방법
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US7702844B2 (en) Address mapping method and mapping information managing method for flash memory, and flash memory using the same
US8793430B2 (en) Electronic system having memory with a physical block having a sector storing data and indicating a move status of another sector of the physical block
RU2243588C2 (ru) Энергонезависимое устройство памяти, устройство записи и способ записи
JP4898457B2 (ja) 不揮発性メモリおよび制御データ管理を伴う方法
KR100595909B1 (ko) 저장장치 및 플래시 메모리 장치내 정보 액세스 방법 및 정보 저장 관리 방법
KR100526190B1 (ko) 플래시 메모리의 재사상 방법
JP2009199625A (ja) メモリカードおよびメモリカードの制御方法および不揮発性半導体メモリの制御方法
JP2006040264A (ja) メモリカードの制御方法および不揮発性半導体メモリの制御方法
KR20070007264A (ko) 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법
US20100306447A1 (en) Data updating and recovering methods for a non-volatile memory array
WO2005066787A1 (ja) 情報記録媒体
KR20070007265A (ko) 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
KR100703680B1 (ko) 플래시 파일 시스템
KR20060134011A (ko) 메모리 플레인 배열을 갖춘 비휘발성 메모리 및 방법
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
KR20060121270A (ko) 페이즈된 프로그램 실패 핸들링을 구비한 비휘발성 메모리 및 방법
JP4130808B2 (ja) フォーマット方法
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP3808842B2 (ja) 書き換え可能な不揮発性メモリを備えた記憶装置及び記憶装置用不揮発性メモリの制御方法
Niijima Design of a solid-state file using flash EEPROM
KR100638638B1 (ko) 플래시 메모리의 제어 방법
JPH1031611A (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
FPAY Annual fee payment

Payment date: 20121031

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20131031

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20181031

Year of fee payment: 13