KR100495722B1 - 개선된 플래시 파일 시스템 - Google Patents

개선된 플래시 파일 시스템 Download PDF

Info

Publication number
KR100495722B1
KR100495722B1 KR10-2000-7004068A KR20007004068A KR100495722B1 KR 100495722 B1 KR100495722 B1 KR 100495722B1 KR 20007004068 A KR20007004068 A KR 20007004068A KR 100495722 B1 KR100495722 B1 KR 100495722B1
Authority
KR
South Korea
Prior art keywords
physical
unit
virtual
block
units
Prior art date
Application number
KR10-2000-7004068A
Other languages
English (en)
Other versions
KR20010031157A (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 엠-시스템스 플래쉬 디스크 파이오니어스 리미티드
Publication of KR20010031157A publication Critical patent/KR20010031157A/ko
Application granted granted Critical
Publication of KR100495722B1 publication Critical patent/KR100495722B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • 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
    • 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

Landscapes

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

Abstract

본 발명은 플래시 장치에서 데이터 저장 상태를 조절하는 시스템, 특히, 페이지-모드 플래시 장치에서 정보 검색 및 저장 상태를 관리하는 시스템에 관한 것으로, 이 시스템은 페이지-모드 플래시 장치를 플래시 디스크처럼 작동하도록 한다. 플래시 메모리 장치(20)는 물리적인 장치(10), 가상 장치(22) 및 가상 맵(24)을 포함하며, 이 가상 맵은 가상 장치의 가상 어드레스를 물리적인 장치의 물리적인 어드레스에 연관시킨다.

Description

개선된 플래시 파일 시스템{Improved flash file system}
본 발명은 플래시 장치들 상에서 데이터 저장을 조절하는 시스템, 특히, 페이지-모드 플래시 장치들(page-mode flash devices) 상에서 정보 저장 및 검색을 관리하며, 그것들이 플래시 디스크들로서 작동할 수 있게 하는 시스템에 관한 것이다.
플래시 장치들은 플래시형으로 이루어진 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리들(EEPROMs)과 플로팅-게이트 트랜지스터들을 포함하며, 인서킷(in-circuit), 프로그래밍가능한 동작으로 메모리의 페이지들을 소거할 수 있게 하는 부가적인 기능성과 함께, EPROM 메모리에 대해 기능성 및 수행성능에 있어서 유사한 비휘발성 메모리들이다. 플래시 장치들은 종래의 자기 저장 디스크들에 비해, 비교적 저렴하며 전력 소비가 적다는 장점이 있다. 그러나, 플래시 장치에서, 이 영역의 선행 페이지의 소거 없이, 이전에 기록된 메모리 영역에 재기록 하는 것은 불가능하다. 이 영역이 우선 소거되지 않는다면, 데이터가 이미 기록되어 있는 플래시 장치내의 메모리 영역에 데이터가 기록될 수 없으므로, 플래시 장치들의 이러한 제한으로 인해, 전형적인 기존의 운용 시스템 프로그램들과 호환할 수 없다.
종래 기술에서, 운용 시스템 프로그램들을 수정하지 않고, 플래시 장치가 기존의 컴퓨터 운영 프로그램들에 의해 관리되도록 하는 소프트웨어 제품들이 제안되었다. 그러나, 이러한 종래 기술의 모든 프로그램들은 결함들을 가지고 있다. 예를 들면, 하나의 프로그램은 "1회 기록 다수 판독(write once read many)" 장치로서 플래시 메모리를 운용하는 것이다. 이 종래의 소프트웨어 제품은 이전에 기록된 메모리 위치들을 순환시킬 수 없다. 결국, 모든 위치들이 기록되면, 특정 사용자의 개입없이는 메모리를 더 이상 사용할 수 없다. 샌디스크(SanDisk)에 의해 제안된 것과 같은, 그 밖의 종래 기술 프로그램들은 새로운 데이터가 페이지에 기록될 때마다, 전체 메모리 페이지를 소거하고 재기록한다. 이 시스템은 다중 소거 사이클들을 필요로하는 단점, 즉, 비교적 저속 및 비효율적이며, 물리적인 매체 그 자체를 더 빠르게 열화시킨다는 단점을 갖는다.
종래 기술의 이러한 결점들을 극복하기 위해, 플래시 파일 시스템(flash File System: FFS)이 미국 특허 제 5,404,485호에 개시되어 있으며, 참고문헌으로 본원에 포함되어 있다. FFS에는 자기(magnetic), 디스크 기반의 데이터 저장을 에뮬레이트(emulate)하게 하는 플래시 장치들 상에 데이터 저장 및 조작 시스템이 제공된다. 상술한 바와 같이, 플래시 장치들의 비교적 저렴한 비용 및 저전력 소비로 인해, 데이터 저장장치, 특히, 랩탑 및 휴대용 컴퓨터들에서 그것들을 선택하게 한다. FFS는 자기 디스크 저장장치의 대용으로서 동작하도록 플래시 장치의 성능을 강화시킨다. 실제로, 미국 특허 제 5,404,485호에 개시된 FFS가 유용하다고 판명되어, 데이터 레이아웃 명세서(data layout specification)는 PCMCIA(Personal Computer Memory Card International Association) 및 JEIDA(Japan Electronic Industry Development Association) 위원회들에 의해 플래시 전송 층(FTL;Flash Translation Layer)으로 일컫는 표준으로 채택되었다.
삭제
FFS는 플래시 EEPROM 장치들용의 가상 맵핑 시스템을 기본적으로 개시하고 있다. 이 가상 맵은 플래시 장치내의 판독/기록 블록의 물리적인 어드레스와 그 블록의 가상 어드레스에 관련된 테이블이다. 이러한 블록들 각각은 512 바이트로 비교적 작기 때문에, 가상 맵 그 자체의 크기는 매우 크다. 또한, FFS는 플래시 EEPROM 장치 상에 가상 맵의 벌크(bulk)를 유지하고 저장하는 방법, 즉, 가상 맵의 저장을 위해 필요한 다른 메모리의 양을 최소화하는 방법을 포함한다.
상술한 바와 같이, FFS는 플래시 장치들을 자기 디스크 저장장치의 에뮬레이터들로 변환하는데 특히 성공적으로 판명되어, 산업 표준으로써 널리 채택되어 왔다. 그러나, FFS는 보다 새로운 플래시 장치 기술에 대한 요구사항들 모두를 만족시킬 수는 없다. 특히, FFS는 NAND 및 AND 플래시 기술들에 적합하지 못하다.
종래 기술의 플래시 메모리 아키텍쳐들, 특히, 기록-전-소거 시스템들(erase-before-wirte systemms)의 결점들들을 극복하려는 시도에 대한 또 다른 예가 미국 특허 제 5,479,638호에 개시되어 있다. 미국 특허 제 5,497,638의 시스템에 있어서, 기록된 블록에 부가적인 프로그래밍이 요구되는 경우에, 특정 판독/기록 블록의 물리적인 위치가 이동된다. 그러나, 이 시스템은 한번에 단일 512 바이트 판독/기록 블록을 소거할 수 있는 이들 플래시 장치들과만 동작 가능하다는 단점을 가지고 있다. 이러한 요구사항이 하드웨어 레벨에서 구현되기 때문에, 이 시스템 또한, 보다 새로운 NAND 및 AND 플래시 기술들에 사용될 수 없다.
NAND 및 AND는 기존의 플래시 장치 기술들과는 많은 점들에 있어서 상이하다. 첫째로, 소거 가능한 유닛의 크기는 기존의 플래시 장치에 대해 64 KB인 것에 반하여, NAND 및 AND에 대해 약 8 KB 정도로 작다. 둘째로, 소거 시간은, 단일 바이트를 소거하는데 요구되는 시간으로서 측정될 때에도, NAND 및 AND에 대하여 상당히 빠르다. 셋째로, 플래시 메모리는 길이가 256 또는 512 바이트인 NAND 및 AND을 위한 페이지들로 분할되며, 이것은 하드웨어 장치들 자체의 고정된 특징이다. 본원에 사용된 용어 "페이지"는, "페이지"와 "블록"의 특별한 특성들이 다소 상이하지만, 기존의 플래시 기술들에 사용되는 것과 같은, 용어 "블럭"에 대략 대응한다는 것에 주지해야 한다. 이러한 특징들은 NAND 및 AND 기술들에 근거한 플래시 장치들의 동작에 대해 많은 관련성을 갖는다.
첫째로, 페이지-모드 메모리는 페이지 또는 그것의 일부를 기록하기 위한 고정된 오버헤드(overhead)를 가진다. 대비하여, 이전의 플래시 기술들에서의 기록 동작에 대한 오버헤드는 기록된 바이트들의 수에 비례하였다. 둘째로, NAND 및 AND의 플래시 메모리는 각 페이지가 특별한 어드레스가능한 여러 개의 스페어 바이트들(spare bytes)을 갖도록 구성된다. 이러한 스페어 바이트들은 플래시 메모리 시스템에 관련된 정보를 저장하는데 편리한 위치들이다. 마지막으로, 페이지가 소거되기 전에 기록될 수 있는 횟수가 제한된다. 이러한 제한은 비교적 적은 8회 또는 10회이며, 그 후, 사전 소거없는 추가적인 기록은 신뢰할 수 없다. 그러므로, 페이지-모드 메모리는 성공적인 데이터 저장 및 검색을 위한 새로운 도전들(challenges) 및 상당한 장점들을 갖는다.
불행하게도, 상술한 바와 같이, 현재 이용 가능한 종래 기술의 데이터 조절 시스템, 즉, FFS 는 페이지-모드에서 플래시 메모리를 작동시키는데 상당한 단점들을 가진다. 특히, FFS는 페이지-모드 프로그래밍으로 인해 부과된 제한들로 인해, NAND 및 AND과 같은 페이지-모드 플래시 기술들에서 최적화되지 않은 수행성능을 보여준다. 더욱이, 미국 특허 제 5,479,638호에 개시된 시스템은 이러한 플래시 기술들로 사용될 수 없는데, 이는, 블록마다(block-by-block) 소거 동작에 대한 그 요구사항 때문이다.
그러므로, 페이지-모드 플래시 기술들에 대한 수행성능을 위해 최적화되고,기존의 넌-페이지 모드 플래시 장치들(non-page mode flash devices)에 여전히 유용한 NAND 또는 AND 플래시 장치에서 데이터 저장을 다루기 위한 시스템에 대한 필요성이 존재하며, 그러한 시스템을 갖추는 것이 상당히 이롭다.
도 1은 본 발명에 따른 물리적인 플래시 메모리 장치를 도시하는 개략도.
도 2는 본 발명에 따른 플래시 메모리 장치를 구성하는 기본 시스템을 도시하는 도면.
도 3a 및 3b는 본 발명에 따른 앤드 및 FMAX 시스템을 각각 도시하는 도면.
도 4a 및 4b는 본 발명에 따른 앤드 및 FMAX 시스템의 기록 알고리즘을 각각 도시하는 도면.
도 5a 및 5b는 본 발명에 따른 앤드 및 FMAX 시스템의 재 구성된 알고리즘을 도시하는 도면.
* 도면의 주요부분에 대한 부호의 설명 *
10: 물리적인 장치 12: 물리적인 유닛
14: 블록 16: 주 데이터 영역
18: 제어 데이터 영역 20: 시스템
22: 가상 매체 24: 가상 맵
26: 가상 유닛 28: 가상 블록
44: 가상 유닛 번호 52: 가상 블록 오프셋
발명의 개요 본 발명은, 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 반드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 메모리 구성 방법으로서, 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기가 소거를 위한 가장 작은 메모리 부분의 크기와는 다른, 상기 메모리를 위한 메모리 구성 방법에 있어서, (a) 메모리의 복수의 물리적인 유닛들을 제공하는 단계로서, 물리적인 유닛들 각각은 소거하기 위한 가장 작은 메모리 부분의 크기이고, 물리적인 유닛들 각각은 물리적인 유닛 번호에 의해 지정되며, 물리적인 유닛들 각각은 복수의 물리적인 블록들로 분할되고, 복수의 물리적인 블록들 각각은 데이터를 판독 또는 기록하기 위한 메모리 부분의 크기이고, 물리적인 블록들 각각은 물리적인 유닛 내의 물리적인 블록 오프셋에 의해 지정되는, 복수의 물리적인 유닛 제공 단계, (b) 메모리의 복수의 가상 유닛들을 제공하는 단계로서, 각각의 가상 유닛은 가상 유닛 번호에 의해 지정되고, 가상 유닛들 각각은 복수의 가상 블록들을 특징으로 하고, 가상 블록들 각각은 가상 유닛 내의 가상 블록 오프셋에 의해 지정되는, 복수의 가상 유닛들 제공 단계, (c) 적어도 하나의 물리적인 유닛에 각각의 가상 유닛을 맵핑하기 위한 가상 맵을 제공하는 단계 및, (d) 각각의 가상 블록의 가상 블록 오프셋에 따라, 가상 유닛 내의 각각의 가상 블록을 적어도 하나의 물리적인 유닛 내의 하나의 물리적인 블록에 매핑시키는 단계를 포함하는, 메모리 구성 방법을 제공한다.
바람직하게는, 방법은 (e) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계, (f) 가상 블록을 포함하는 가상 유닛을 위치지정하는(locating) 단계, (g) 가상 유닛에 맵핑된 물리적인 유닛 내의 기록 가능한 블록을 위치지정하는 단계, 및 (h) 기록된 물리적인 유닛을 형성하기 위해 데이터를 기록 가능한 물리적인 블록에 기록하는 단계를 더 포함한다. 보다 바람직하게는, 상기 방법은 (i) 기록된 물리적인 유닛 내의 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 제 2 물리적인 유닛을 위치지정하는 단계, (j) 데이터를 제 2 물리적인 유닛의 기록 가능한 물리적인 블록에 기록하는 단계, 및 (k) 가상 유닛이 제 2 물리적인 유닛과 기록된 물리적인 유닛에 대응하도록, 가상 유닛을 제 2 물리적인 유닛에 부가적으로 맵핑함으로써 가상 맵을 갱신하는 단계로서, 제 2 물리적인 유닛과 기록된 물리적인 유닛은 물리적인 유닛들의 체인을 형성하는, 가상 맹 갱신 단계를 더 포함한다. 가장 바람직하게는, 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록은 물리적인 블록 오프셋을 가지며, 물리적인 블록 오프셋은 맵핑된 가상 유닛의 가상 블록 오프셋에 대응한다. 또한, 가장 바람직하게는, 상기 방법은 (l) 기록된 물리적인 유닛 내의 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 체인 내에 복수의 물리적인 유닛들에 대응하는 제 2 가상 유닛을 위치지정하는 단계, (m) 상기 체인 내에 최종 물리적인 유닛을 위치지정하는 단계, (n) 기록된 물리적인 유닛의 물리적인 블록들 각각에서 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 데이터를 이동시키는 단계로서, 기록 가능한 블록은 상기 기록된 물리적인 유닛의 물리적인 블록과 실질적으로 동일한 블럭 오프셋을 갖는, 데이터 이동 단계, 및 (o) 가상 유닛이 최종 물리적인 유닛에만 실질적으로 대응하도록, 가상 유닛을 상기 최종 물리적인 유닛에 맵핑시킴으로써 가상 맵을 갱신하는 단계를 더 포함한다. 바람직하게는, 상기 방법은 또한 (p) 최종 물리적인 유닛을 제외한, 체인 내의 기록된 물리적인 유닛들 모두를 소거하는 단계를 더 포함한다.
대안으로, 바람직하게는, 상기 방법은 (l) 기록되지 않은 어떠한 물리적인 유닛도 체인에 대한 할당을 위해 이용될 수 없는 경우, 재구성하기 위해 기록되지 않은 물리적인 유닛을 할당하는 단계, (m) 기록된 물리적인 유닛의 물리적인 블록들 각각에서 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록으로 데이터를 이동시키는 단계, 및 (n) 가상 유닛이 기록되지 않은 물리적인 유닛에만 실질적으로 대응하도록, 가상 유닛을 상기 기록되지 않은 물리적인 유닛에 맵핑함으로써 가상 맵을 갱신하는 단계를 더 포함한다. 보다 바람직하게는, 상기 방법은 (o) 상기 기록된 물리적인 유닛 모두를 소거하는 단계를 더 포함한다.
본 발명의 양호한 그 밖의 실시예에 따라, 상기 방법은 (i) 기록된 물리적인 유닛 내에서 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 물리적인 유닛의 체인을 형성하기 위해, 체인 내의 최종 물리적인 유닛이 되는 기록되지 않은 물리적인 유닛을 할당하는 단계, (j) 데이터를 최종 물리적인 유닛 내의 기록되지 않은 물리적인 블록에 기록하는 단계, (k) 단계(J)에서 기록된 데이터를 제외한 데이터를 물리적인 블록 각각으로부터 기록되지 않은 물리적인 유닛의 기록가능한 물리적인 블록으로 이동시키는 단계 및, (m) 기록된 물리적인 유닛에 대응하는 가상 유닛을 맵핑함으로써, 가상 맵을 기록된 물리적인 데이터 유닛으로 갱신하는 단계를 더 포함한다.
본 발명의 다른 실시예에 따라, 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 반드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 데이터 기록 방법에 있어서,(a) 복수의 물리적인 블록들로 분할되는 복수의 물리적인 유닛을 제공하는 단계로서, 물리적인 유닛들 각각은 물리적인 유닛 번호를 가지며, 물리적인 블록들 각각은 물리적인 유닛 내의 물리적인 블록 오프셋을 갖는, 복수의 물리적인 유닛 제공 단계, (b) 복수의 물리적인 블록들로 분할되는 복수의 물리적인 유닛들을 제공하는 단계로서, 가상 유닛들 각각은 가상 유닛 번호를 가지며, 가상 블록들 각각은 가상 유닛 내의 가상 블록 오프셋을 가지며, 각각의 가상 유닛은 적어도 하나의 물리적인 유닛에 매핑되는, 복수의 물리적인 유닛들 제공 단계, (c) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계, (d) 가상 블록 오프셋을 갖는 가상 블록을 포함하는 가상 유닛을 결정하는 단계, (e) 가상 유닛에 대응하는 물리적인 유닛을 위치지정하는 단계, (f) 물리적인 유닛 내에 물리적인 블록을 위치지정하는 단계, (g) 물리적인 블록이 기록되지 않은 것인지의 여부를 결정하는 단계, (h) 물리적인 블록이 기록되지 않은 경우에만, 데이터를 물리적인 블록에 기록하는 단계, (i) 대안으로, 물리적인 블록이 기록되지 않은 것이 아닌 경우, 제 2 물리적인 유닛을 할당하는 단계, (j) 물리적인 블록 오프셋을 갖는 기록 가능한 물리적인 블록을 제 2 물리적인 유닛내에 위치지정하는 단계, (k) 데이터를 기록 가능한 물리적인 블록에 기록하는 단계, (l) 가상 유닛이 물리적인 유닛들의 체인을 형성하기 위해 제 2 물리적인 유닛에 부가적으로 맵핑되도록, 가상 유닛을 기록 가능한 물리적인 블록을 포함하는 제 2 물리적인 유닛에 부가적으로 맵핑하여 단계를 포함하며, 바람직하게는, 기록 가능한 물리적인 블록의 물리적인 블록 오프셋은 가상 블록 오프셋과 동일한 블록 오프셋 번호를 가진다.
바람직하게는, 상기 방법은 (m) 기록된 물리적인 유닛 내의 기록되지 않은 물리적인 블록이 위치지정될 수 없는 경우, 체인 내에 복수의 물리적인 유닛들에 대응하는 제 2 가상 유닛을 위치지정하는 단계, (n) 체인 내에 최종 물리적인 유닛을 위치지정하는 단계, (o) 기록된 물리적인 유닛의 물리적인 블록 내의 모든 데이터를 최종 물리적인 유닛의 물리적인 블록들에 전송하는 단계, 및 (p) 가상 유닛이 최종 물리적인 유닛에만 대응하도록 가상 맵을 갱신하는 단계를 더 포함한다. 가장 바람직하게는, 상기 방법은 (q) 기록된 물리적인 유닛들 모두를 소거하는 단계를 더 포함한다.
대안으로, 바람직하게는, 상기 방법은 (l) 기록되지 않은 어떠한 물리적인 유닛도 할당용으로 이용될 수 없는 경우, 최종 물리적인 유닛을 체인 내에 위치지정하는 단계, (m) 기록된 물리적인 유닛의 물리적인 블록내의 모든 데이터를 최종 물리적인 유닛의 물리적인 블록으로 전송하는 단계 및 (n) 가상 유닛이 최종 물리적인 유닛에만 대응하는 가상 맵을 갱신하는 단계를 더 포함한다. 보다 바람직하게는, (o) 최종 물리적인 유닛을 제외한 기록된 물리적인 유닛 모두를 실질적으로 소거하는 단계를 더 포함한다.
본 발명은 블록과 같은 데이터를 판독 또는 기록하기 위한 메모리 부분의 크기가 유닛과 같은 소거를 위한 가장 작은 부분의 크기와는 다른 플래시 메모리를 구성하는 방법에 관한 것이다. 본 발명의 방법에 따라 구성될 수 있는 플래시 메모리 형태들의 실예들에는, NAND 및 AND 기술에 의해 예시된 페이지-모드 장치를 포함하며, 이에 제한되지는 않는다. 또한, 본 발명은 플래시 메모리에 데이터를 판독 및 기록하는 방법을 제공하며, 더 이상의 기록되지 않은 물리적인 유닛을 사용할 수 없는 경우, 플래시 메모리를 재구성하는 방법을 제공한다.
이하, 용어 "물리적인 유닛"은 물리적인 매체 또는 메모리의 하드웨어상의 유닛으로 정의되며, 소거 가능한 메모리의 가장 작은 부분이 되고 그 정수배가 된다. 메모리의 일부는 고정된 크기를 가지며 소거 가능하다. 용어 "물리적인 블록"은 데이터를 판독 또는 기록하기 위한 메모리 부분으로 정의되며, 용어 "가상 유닛"은 물리적인 유닛과 동일한 크기로 정의된다. NAND 및 AND와 같은 페이지-모드 메모리 기술에 대하여, 소거 가능한 메모리의 가장 작은 부분은 상기 페이지 크기, 즉, 통상적으로 대략 8 KB 보다 크다. 본원에 사용된, 용어 "물리적인 블록"은 페이지-모드 메모리 기술에서의 용어 "페이지"에 대응한다. 따라서, 가상 유닛은 물리적인 유닛들만큼 크다.
이하, 용어 "가상 맵"은 가상 유닛을 하나 이상의 대응하는 물리적인 유닛에 관련시킨 테이블을 나타낸다. 상술한 바와 같이, 각각의 유닛, 즉, 가상 또는 물리적 유닛은 복수의 블록들로 구성된다. 유닛내의 블록의 정확한 위치는 하나 이상의 프리셋 규칙들에 따라 결정되며, 이에 대해 이하 설명한다.
각각의 물리적인 유닛은 물리적인 유닛 번호에 의해 지정된다. 각 물리적인 블록의 위치는 물리적인 블록 오프셋에 의해 주어진다. 유사하게, 각 가상 유닛은 가상 유닛 번호에 의해 지정된다. 각 가상 블록의 위치는 가상 블록 오프셋에 의해 주어진다. 각 가상 유닛 번호는 하나 이상의 물리적인 유닛 번호에 대응할 수 있음을 알아야 한다. 따라서, 가상 유닛과 물리적인 유닛사이의 맵핑은 1대1 또는 1대 다수가 될 수 있다.
이하, 용어 "데이터 기록"는 플래시 메모리상에 데이터를 저장하는 동작을 나타낸다. 용어 "데이터 판독"는 플래시 메모리로부터 데이터를 검색하는 동작을 나타낸다. 이하, 용어, "기록되지 않은"은 데이터를 기록할 수 있는 물리적인 블록과 같은 메모리의 일부분을 나타낸다. 따라서, 용어 "기록되지 않은"은 소거된 메모리의 일부분을 포함하며, 이에 제한되지는 않는다.
본 발명에 따라 구성된 플래시 메모리를 구비하는 컴퓨터나 전자 장자에 있어서, 그 장치의 운용 시스템은 데이터의 판독 및 기록을 위한 가상 유닛 및 가상 블록에 상호작용한다. 가상 매체는 가상 유닛과 블록을 포함하므로, 플래시 메모리 장치와 상호작용하는 운용 시스템에 대해 인터페이스로써 동작한다. 예를 들면, 운용 시스템은 데이터를 가상 블록에 기록하기 위해 가상 명령을 가상 블록 오프셋에서 발행한다. 그 후, 가상 블록을 포함하는 가상 유닛이 위치지정된다. 이어서, 가상 맵은 실제적으로 데이터가 저장되는 메모리의 가상 유닛내의 대응하는 물리적인 블록을 위치지정한다. 가상 유닛과 가상 블록이 마치 플래시 메모리의 실제 하드웨어인 것처럼, 운용 시스템이 판독 및 기록 명령을 발행한다 하더라도, 실제로는, 실제 하드웨어는 플래시 메모리의 물리적인 유닛과 물리적인 블록으로 병합된다. 따라서, 운용 시스템은 가상 유닛들과 블록들만을 인식하며, 하드웨어 자체와의 직접적인 상호작용은 없다.
이러한 인터페이스의 장점은 또 다른 기록동작 전에 소거를 위한 요청이 발생할 수 있는, 플래시 메모리의 고유의 단점들이 가상 메모리를 구비한 운용 시스템의 상호작용들에 의해 극복된다는 것이다. 또한, 전자 장치의 운용 시스템은 플래시 메모리의 어드레스를 조직화할 필요가 없다. 더욱이, 운용 시스템은 더 이상의 수정없이 다양하고 상이한 플래시 메모리 기술과 상호 작용을 할 수 있다. 이는, 하나의 인터페이스가 플래시 메모리 장치의 다양한 형태로 이용될 수 있기 때문이다. 따라서, 본 발명은 플래시 메모리와 이를 사용하는 전자 장치간에 최적의 호환성을 갖도록 한다. 이하, 본 발명은 첨부된 도면들을 참조하여, 예로써 설명된다.
본 발명은 NAND 또는 AND 플래시 장치와 같은 페이지-모드 플래시 메모리 장치를 구성하기 위한 시스템을 제공한다. 이 시스템은 플래시 장치등에서 판독 및 기록하는 방법을 포함한다. 더욱이, 이 시스템은 플래시 장치가 자기 디스크 저장장치에 필적하는 인터페이스를 제공한다. 이러한 플래시 메모리 장치는 퍼스널 컴퓨터 또는 랩탑 컴퓨터와 같은 다양한 호스트 장치에 설치될 수 있다.
본 발명이 플래시 메모리에 관하여 설명하는 동안, 본 기술 분야의 통상의 지식을 가진 사람은 이러한 설명이 동일한 기록, 판독 및 플래시 메모리로서 소거 특성을 갖는 데이터 저장 장치에 적용될 수 있음을 알 수 있을 것이다.
본 발명에 따른 페이지-모드 플래시 메모리 장치를 구성하기 위한 시스템의 원리 및 동작은 첨부된 도면과 실시예를 참조하면 더 잘 이해 할 수 있다.
도면을 참조하면, 도 1은 예를 들면, NAND등의 기술에 따른 종래의 물리적인 페이지-모드 플래시 메모리 장치에 대해 개략적으로 설명한다. 용어 "물리적인 장치"는 플래시 메모리 장치용의 물리적인 매체를 포함하는 실제 하드웨어 그 자체를 의미한다. 이러한 물리적인 매체는, 적절한 비휘발성, 즉, 프로그램 가능한 메모리 장치가 대용으로 사용될 수 있지만, 통상적으로 플래시 EEPROM 유닛으로 구성된다. 용어 "프로그램 가능한"은 예를 들면, 메모리 장치에 기록된 데이터를 가지는 것처럼, 수정 가능하다는 것을 의미한다.
하나 이상의 물리적인 유닛(12)을 갖는 플래시 메모리의 물리적인 장치(10)를 도시하였다. 물리적인 유닛(12)은 소거될 수 있는 물리적인 장치(10)의 가장 작은 구획이다. 물리적인 유닛(12)은 블록 1 내지 n (n은 정수이다) 으로 개별적으로 지정되며, 블록(14)으로서 집합적으로 지정된 정수개의 블록들을 포함한다. 블록(14)은 물리적인 바이트 어드레스의 고정된 길이의 그룹으로 구성되고, 하드웨어의 특징을 지닌다. 특히, 블록(14)의 크기는 물리적인 장치(10)의 특성이다. 사용자 데이터는 블록(14)의 주 데이터 영역(16)내에 저장될 수 있다. 각 블록(14)은 또한, 제어 데이터 영역(18)을 갖는다. 제어 데이터 영역(18)은 블록(14)의 주요부로부터 분리된 알고리즘에 의해 어드레싱 가능하며, 블록(14)의 크기에 대한 계산은 포함하지 않는다. 이하 상술하듯이, 제어 데이터 영역(18)은 플래시 파일링 시스템 그 자체에 관련된 정보를 저장하는데 유용하다. 각 물리적인 유닛(12)은 할당된 유닛 또는 비 할당된 유닛 중 어느 하나가 될 수 있다. 각각의 비 할당된 유닛이 사용가능하고 유용한 데이터를 포함하고 있지 않으며, 할당될 준비가 되어 있다. 각 할당된 유닛은 할당되어져서 데이터를 포함한다.
도 2는 기본 플래시 메모리를 구성하기 위한 시스템을 도시한다. 시스템(20)은 가상 매체(22)와 물리적인 장치(10) 모두를 제어하며, 가상 맵(24)을 통해 가상 매체(22)를 물리적인 장치(10)에 관련시킨다. 가상 매체(22)는 복수의 가상 유닛(26)을 포함하며, 각 가상 유닛(26)은 복수의 가상 블록들(28)을 포함한다. 각 가상 유닛(26)은 가상 어드레스에 의해 지정된다. 가상 어드레스는 가상 유닛 번호를 포함하며, 특정한 가상 유닛(26)을 지정한다. 각 가상 블록(28)은 가상 블록 오프셋에 의해 지정된다. 유사하게, 각 물리적인 유닛(12)은 물리적인 어드레스를 구비하며, 각 물리적인 어드레스는 물리적인 유닛 번호를 포함하며, 특정한 물리적인 유닛을 지정한다. 각 물리적인 블록(14)은 물리적인 블록 오프셋을 구비한다.
가상 맵(24)은 할당된 가상유닛인 가상 유닛(26)을 할당된 물리적인 유닛인 하나 이상의 물리적인 유닛(12)에 맵핑한다. 물리적인 유닛에서 처럼, 가상 유닛이 하나 이상의 물리적인 유닛에 맵핑되는 경우, 이것은 할당된 가상 유닛이 된다. 그러나, 하나의 가상 유닛(26)이 하나 이상의 물리적인 유닛(12)에 맵핑될 수 있다. 따라서, 가상 유닛(26)과 물리적인 유닛(12)의 대응관계는 1 대 1 또는 1 대 다수중 어느 하나가 될 수 있다.
시스템(20)은 다음과 같이 동작한다. 전자 장치의 운용 시스템은 판독 명령 또는 기록 명령과 같은 명령을 특정한 가상 유닛(26)내의 특정한 가상 블록(28)에 전송하는 플래시 메모리 장치(도시하지 않음)를 포함한다. 가상 맵(24)은 물리적인 유닛(12)내의 대응하는 물리적인 블록(14)을 위치지정한다.
맵핑의 대응관계가 도시된 바와 같이 1 대 1 이라면, 각각의 가상 유닛(26)은 정확하게 하나의 물리적인 유닛(12)에 맵핑되어, 이 상황을 비교적으로 간단히 나타날 수 있다. 그러나, 상술한 바와 같이, 물리적인 장치(10)는 데이터를 판독 및 기록하기 위한 특정한 물리적인 제한들을 가지며, 부가의 데이터가 기록될 수 있기 전에 주기적인 소거를 실행하는 요청을 포함한다. 물리적인 장치(10) 또는 그 일부의 빈번하고, 반복적인 소거를 포함하지 않는 이러한 제한들에 대해 2개의 가능한 해결책이 있다.
첫 번째 해결책은 도 3a에 도시하였으며, 이는 가상 유닛(26)과 물리적인 유닛(12)의 대응관계가 1 대 다수 이므로, 각 가상 유닛(26)은 복수의 물리적인 유닛(12)에 대응한다. 가상 맵(24)은 이러한 맵핑을 수행하기 위해 요구된 정보를 저장해야 한다. 가상 맵(24)의 일 부분의 예가 도 3a에 도시되어 있으며, 본 발명의 AND 시스템으로 이용될 수 있다.
가상 맵(24) 부분은 물리적인 유닛(12)내의 물리적인 블록(14)과 가상 유닛(26)내의 가상 블록(28)을 도시한다. 이 예에서, 하나의 특정한 가상 유닛(30)은 두 개의 물리적인 유닛(12)에 대응한다. 제 1 물리적인 유닛(12)이 주 유닛(32)이며, 제 2 물리적인 유닛(12)은 대체 유닛(34)이다. 그러나, 각 가상 유닛(26)에 관련된 0개 또는 그 이상의 대체 유닛(34)이 있을 수 있다. 예에서와 같이, 가상 유닛(36)은 주 유닛(38)에만 대응하며, 대체 유닛(34)에는 대응하지 않으므로, 가상 유닛(36)은 비 대체된 가상 유닛(non-replaced virtual unit)의 실예가 된다.
가상 블록(28)의 구성은 특정한 가상 유닛(26)에 대응하는 물리적인 블록(14)의 수에 의존한다. 가상 유닛(30)에 대해, 어떤 가상 블록(28)은 주 유닛(32)내의 물리적인 블록(14)에 대응하며, 다른 가상 블록(28)은 대체 유닛(34)내의 물리적인 블록(14)에 대응한다. 가상 유닛(36)에 대하여, 실질적으로 모든 가상 블록(28)은 주 유닛(38)내의 물리적인 블록(14)에 대응한다.
가장 간단한 경우로, 가상 유닛은 비 대체된 유닛이며, 특정한 물리적인 블록(14)을 위치지정하기 위한 절차를 이하 설명한다. 가상 유닛(36)은 가상 유닛(36)을 지정하는 가상 유닛 번호(44)와 가상 블록(42)을 지정하는 가상 블록 오프셋(46)을 가진다. 가상 블록 오프셋(46) 또한 번호임을 알 수 있다. 물리적인 유닛 번호(50)는 주 유닛(38)을 지정한다. 물리적인 블록 오프셋(52)은 주 유닛(38)내의 물리적인 블록(54)을 지정한다. 데이터를 판독 또는 기록할 목적으로 물리적인 블록(54)을 위치지정하기 위한 첫 번째 규칙은 가상 유닛 번호(44)를 결정하도록 가상 유닛 당 블록의 수만큼 원하는 가상 블록 오프셋(46)을 분할하는 것이다. 그 후, 가상 맵(24)은 가상 유닛 번호(44)를 물리적인 유닛 번호(50)에 맵핑시킨다. 두 번째 규칙은 원하는 물리적인 블록(14), 이 경우에는 물리적인 블록(54)이 가상 블록 오프셋(46)과 동일한 번호가 되어야 하는 물리적인 블록 오프셋(52)에 따라서 물리적인 유닛(38)내에 위치지정될 수 있다는 것이다. 따라서, 가상 맵(24)이 가상 및 물리적인 유닛에 대한 정보만을 포함하지만, 규칙들은 적절한 블록 오프셋을 결정하는 위해 사용된다.
더 복잡한 경우에는, 각 가상 유닛은 하나 이상의 물리적인 유닛에 대응한다. 이 경우, 2 개 이상의 물리적인 유닛들의 그룹을 "체인"이라 칭한다. 예를 들면, 가상 유닛 번호(72)는 가상 유닛(30)을 지정하며, 가상 블록 오프셋(74)은 가상 블록(70)을 지정한다. 물리적인 유닛 번호(78)는 대체 유닛(34)을 지정하며, 물리적인 블록 오프셋(80)은 대체 유닛(34)내의 물리적인 블록(82)을 지정한다. 따라서, 가상 유닛(30)의 가상 블록(70)은 대체 유닛(34)의 물리적인 블록(82)에 대응한다.
데이터를 판독하거나 기록할 목적으로 물리적인 블록(82)을 위치지정하려면, 첫 번째 규칙은 가상 유닛 번호(72)를 결정하도록 가상 유닛 당 블록의 수에 의해 소망의 가상 블록 오프셋(74)을 분할하는 것이다. 그 뒤, 가상 맵(24)은 가상 유닛 번호(72)를 물리적인 유닛 번호(78)에 맵핑시킨다. 그러나, 문제점이 발생한다. 상술한 바와 같이, 두 번째 규칙은, 소망의 물리적인 블록이 가상 블록 오프셋과 동일한 번호가 되어야 하는 물리적인 블록 오프셋에 따라 물리적인 유닛 내에 위치지정되어야 한다는 것이다. 이 경우, 체인내에는 복수의 물리적인 블록(14)이 존재하게된다. 데이터를 어느 물리적인 블록(14)이 가지는지 결정하기 위해, 세 번째 규칙은, 가상 블록(70)과 동일한 블록 오프셋을 갖는 각각의 물리적인 블록(14)이 체인의 각 물리적인 유닛내에서 검사된다는 것이다. 최종 비-프리 물리적인 블록(14)은, 대체 유닛(34)의 물리적인 블록(82)의 경우에, 데이터를 판독하기 위한 소망의 데이터를 포함하고, 반대로, 데이터를 기록하기 위해서는, 제 1 프리 물리적인 블록(14)이 소망의 블록이 된다.
물리적인 블록들은 이들이 속한 체인내의 물리적인 유닛의 순서로 기록되기 때문에, "최종 비-프리 물리적인 블록"이라는 용어는 체인 아래로 가장 멀리 있지만 여전히 비-프리인 유닛내의 물리적인 블록에 관하여 설명한다. 체인내에 더 이상의 유닛이 남아 있지 않거나, 체인내에 그 다음 유닛내의 동일한 블록 오프셋을 갖는 물리적인 블록이 프리상태가 된다. 유사하게, 제 1 프리 물리적인 블록을 찾기 위해, 소망의 블록 오프셋을 갖는 각각의 물리적인 블록은 체인내의 각각의 물리적인 유닛내에서 조사되며, 프리 블록이 발견될 때까지, 반복하여, 각각의 대체 유닛을 통해 주 유닛을 개시하며, 다운을 계속한다.
반대로, FMAX 가 유사한 가상 맵과 어드레싱 시스템을 사용하더라도, 이것은 도 3b에 도시된 바와 같이 각각의 주 유닛에 대한 하나의 대체 유닛만을 가진다. 이를 성취하기 위해, FMAX 는 간단하고도 합성의 대체(물리적인) 유닛을 사용한다. 간단한 대체 유닛은 실질적으로 물리적인 유닛의 물리적인 블록 오프셋 모두가 대응하는 가상 유닛의 가상 블록 오프셋에 직접적으로 상호관련된 유닛이다. 합성 대체 유닛(conpound replacement unit)은, 가상 블록 오프셋과 물리적인 블록 오프셋사이의 직접적인 대응관계가 필수적으로 필요하지 않는 유닛이다. 그 대신, 대응하는 물리적인 블록 오프셋을 갖는 물리적인 블록이 기록용으로 이용될 수 없을 경우, 상이한 물리적인 블록이 선택된다. 그 뒤, 제어 정보는, 가상 블록과 물리적이 블록사이의 실질적인 대응관계를 결정하기 위해 제어 데이터 영역에 기록된다.
도 3b에 도시된 바와 같이, 주 유닛(97)은 간단한 대체 유닛(98)을 가지면, 이 유닛은 복수의 물리적인 블록(100)을 가지고, 이들은 각각 가상 유닛(104)내의 가상 블록(102)에 대응한다. 각각의 물리적인 블록 오프셋은 동일한 오프셋 번호인 가상 블록 오프셋에 대응한다.
그러나, 필요한 물리적인 블록 오프셋을 갖는 물리적인 블록을 이용할 수 없는 경우, 동일한 물리적인 유닛내의 상이한 물리적인 블록이 기록되어야 하며, 대체 유닛은 합성의 대체 유닛이 된다. 제 2 주 유닛(109)은 합성의 물리적인 유닛(100)을 가지면, 이 유닛(100)은 복수의 물리적인 블록(112)를 가지고, 이들 각각은 가상 유닛(116)내의 가상 블록(114)에 대응한다. 그러나, 하나의 물리적인 블록 오프셋은 동일한 오프셋 번호인 가상 블록 오프셋에 대응하는 반면, 제 2 물리적인 블록 오프셋이 동일한 오프셋 번호가 아닌 제 2 가상 블록 오프셋에 대응한다. 특정한 물리적인 블록을 찾기 위해, 제어 데이터 영역에 기록된 제어 정보가 조사되어야 한다. 후술되는 바와 같이, 이것은 데이터의 기록 및 필요시 FMAX 시스템의 인식에 대하여 중요한 결론이다.
도 4a는 도 3a의 가상 맵을 처리하기 위한 흐름도를 도시하고, 도 4b는 도 3b의 가상 맵을 처리하기 위한 흐름도를 도시한다. 가장 간단한 경우, 모든 대체 유닛은 간단한 유닛이나, 하나의 대체 유닛만을 갖는 주 유닛중 어느 하나이며, 동일한 단계가 AND 및 FMAX 모두에 대하여 사용될 수 있다. 먼저, 가상 유닛 번호와 가상 블록 오프셋은 위치지정될 가상 블록의 수를, 가상 유닛 번호를 부여하는, 가상 유닛 당 블록들의 수로 분할함으로써 계산된다. 모듈로(modulo) 또는 분할 나머지는 가상 블록 오프셋이다.
다음, 가상 맵은 가상 유닛에 대응하는 물리적인 유닛을 찾기 위해 조사된다. 물리적인 유닛이 가상 유닛에 대응한다면, 물리적인 메모리의 요청된 부분이 플래시 장치에 존재하지 않는다. 상술한 바와 같이, 이 간단한 방식은 모든 대체 유닛이 간단한 유닛이거나, 주 유닛이 하나의 대체 유닛만을 가지는 경우에만 이루어진다. 그러나, 이 방식은, 데이터가 기록되어질 물리적인 블록이 이미 프로그래밍되거나 다른 데이터로 기록되는 경우에는 이루어지지 않는다. 이 경우, 대체 방식이 요구되며, 데이터가 기록될 수 있는 다른 물리적인 블록을 발견하는 작업을 처리할 수 있다.
도 4a(NAND) 및 도 4b(FMAX)에는 2개의 다른 알고리즘들이 도시되어 있다. 이 두 개의 알고리즘은 동일한 방식으로 시작된다. 단계(1)에서, 소망의 물리적인 유닛이 위치지정된다. 단계(2)에서는, 특정한 블록 오프셋에 대응하는 물리적인 블록이 그 물리적인 유닛내에 위치지정된다. 단계(3)에서는, 블록이 기록되지 않은 상태이면, 데이터가 블록에 기록된다. 소망의 물리적인 블록이 이용가능하지 않을 경우, 본 발명의 두 개의 시스템, 즉, AND 및 FMAX 는, 각 기술이 소망의 블록이 이미 기록된 상황을 처리하는 방식으로 분기된다.
도 4a에 도시된 바와 같이, AND 시스템은 대체 유닛을 찾음으로써 이 상황을 처리한다. 단계(4)에서, xth 대체 물리적인 유닛이 조사되며, 이때, x는 초기에는 1 이된다. 이 물리적인 유닛이 소망의 물리적인 블록 오프셋으로 기록되지 않은 물리적인 블록을 가질 경우, 이 데이터는 물리적인 블록에 기록된다. 이 블록을 사용할 수 없는 경우, 단계(5)에 도시된 바와 같이, x는 하나씩 증가되어 단계(4)를 반복한다. 단계(4,5)는 데이터가 블록에 기록되거나 체인내의 그 밖의 대체 유닛이 발견되지 않을 때까지 반복된다. 단계(6)에서, 할당되지 않은 물리적인 유닛은 대체 유닛으로써 할당되며, 데이터는 소망의 블록 오프셋을 갖는 블록에 기록된다.
FMAX 시스템은 이 상황을 도 4b에 도시된 바와 같이, 다르게 처리한다. 단계(4)에서, 대체 유닛내의 동일한 물리적인 블록 오프셋을 갖는 물리적인 블록이 위치지정된다. 그 물리적인 블록이 기록 되지 않은 상태이면, 데이터는 그 물리적인 블록에 기록된다. 그렇지 않으면, 단계(5)에서 처럼, 대체 유닛내의 상이한 물리적인 블록 오프셋을 가진 물리적인 블록이 위치지정된다. 단계(5)에서는 기록되지 않은 물리적인 블록이 위치지정될 때까지 반복된다. 대체 유닛은 현재 합성 유닛이 되는데, 이는 가상 블록 오프셋이 더 이상 물리적인 블록 오프셋과 동일하지 않기 때문이다. 단계(6)에서, 제어 정보는 맵핑 방식이 합성 유닛내에서 임의의 물리적인 블록의 정확한 위치를 찾을 수 있도록 물리적인 유닛의 제어 데이터 영역에 첨부된다.
그러나, 이러한 대체 알고리즘은 플래시 장치의 다양한 필요를 충족시키기에는 충분하지 않을 수도 있다. AND 및 FMAX 시스템들 둘 모두는 결국에 물리적인 블록이 이용가능하지 않기 때문에, 또 다른 물리적인 유닛 내의 블록에 기록될 수 있는 상황에 이르게 된다.
이러한 경우에, 가상 유닛은 데이터가 그것의 가장 간단한 상태로 재구성하도록 재조직화되어야 하며, 그것이 비-대체된 주 유닛이다. 이 재구성 과정동안, 가상 유닛 표현에 이전에 속하는 물리적인 대체 유닛이 프리상태로 되어, 비할당되거나 프리상태의 물리적인 유닛이 된다. AND 대체 유닛과 단순한 FMAX 대체 유닛에 대하여, 이 재구성 과정은 폴딩(folding)으로 불리며, 후술되는 도 5a의 다이어그램에 나타난다.
물리적인 블록들이 주 유닛에 기록되어지는 것처럼, 폴딩은 대체 유닛내의 동일한 물리적인 오프셋에 기록될 물리적인 블록들을 필요로하는데, 이는 상기 과정을 설명함으로 더 명백해 질 수 있다. 폴딩의 제 1 단계에 있어서, 체인 내의 최종 물리적인 유닛은 동일한 물리적인 유닛 x 가 될 수 있고, 여기서 x 는 1 내지 소정의 실행-의존 한계(implementation-dependent limit)의 범위를 나타내는 정수이다. 여기서 x 는 1과 동일하며, 대체 유닛은 실제로 주 유닛이 되고, 알고리즘의 나머지는 실행되지 않는다. 또한, FMAX에 대해서는 x 는 1 또는 2 와 동일하다.
단계(2)에서,유닛 x 의 블록 n 이 조사되며, 여기서 n 은 정수이다. 데이터가 블록 n 에 기록되면, n은 1씩 증가한다. 기록되지 않으면, 단계(3)에서 x 는 1 씩 감소한다. 단계(2) 와 (3)은 x 가 0이거나 기록된 블록 n 이 발견될 때까지 반복된다. 기록된 블록 n 이 발견되면, 데이터는 단계(4)에서 체인내의 최종 대체 유닛의 블록 n 에 이동된다. 단계(2) 내지 (4)는 모든 데이터가 최종 대체 유닛에 전송될 때까지 반복되고, 최종 전송유닛은 주 유닛이 된다. 체인내의 그 밖의 모든 유닛은, 이전의 주 유닛을 포함한다면, 프리상태가 되어 할당할 수 있게 된다. 가상 맵은 또한 가상 유닛이 이제 하나의 물리적인 유닛에 대응한다는 사실을 방영하도록 갱신된다.
불행히도, 폴딩은 합성의 FMAX 대체 유닛에 대해 동작하지 않는데, 이는, 대체 유닛내의 블록들은 가상 블록 오프셋과 동일한 물리적인 블록 오프셋을 항상 가지지는 않기 때문이다. 상이한 재할당 과정은 합성의 물리적인 유닛에 대해 도 5b에 도시되었다. 단계(1)에서, 새로운 할당되징 않은 물리적인 유닛은 새로운 주 물리적인 유닛으로써 지정된다. 단계(2)에서, 합성의 물리적인 유닛의 블록 n 이 조사된다. 데이터가 합성의 물리적인 유닛의 블록 n 에 기록된다면, 데이터는 단계(3)에서 새로운 주 유닛으로 복제된다. 그렇지 않으면, 오래된 주 유닛의 블록 n으로부터 데이터가 새로운 주 유닛에 기록된다. 단계(4)에서, n은 1 씩 증가한다. 단계(2) 내지 (4)는 모든 블록이 복제될 때까지 반복된다. 모든 블록이 일단 복제되면, 오래된 주 유닛뿐만 아니라 이전의 대체 유닛도 프리상태로 되어 할당할 수 있게된다. 이전의 절차에서처럼, 가상 맵은 가상 유닛이 하나의 물리적인 유닛에만 대응하는 사실을 반영하도록 갱신된다.
고도로 단순화된 재구성 방식의 실시예도 가능하다. 이러한 간단한 실시예에서, 재구성의 처리는 대체 유닛이 할당된 이후에 즉시 발생한다. 그러므로, 대체 유닛은 시스템의 트랜잭션 특징만 있고, 정지 상태에서, 물리적인 메모리는 기록 처리를 착수하지 않고, 데이터는 주 비-대체된 유닛에 유일하게 존재한다. 대체 유닛은 기록 가정에 대해서만 존재한다. 처리의 마지막부분에서, 모든 정보가 새로운 유닛으로 전송되어, 대체 유닛이 효율적으로 소거된다. 이 방법은 간단한 실행 및 이를 관리하는데 필요한 제어 구조의 장점이 있다. 그러나, 그 단점은 시스템의 기록 수행을 감소하는데 비효율적이다.
본 발명에 포함된 모든 방법들은, 저장된 데이터의 상태를 설명하도록, 물리적인 플래시 장치 그 자체에 제어 정보를 기록할 수 있어야 한다. 특히, 대안으로, 이러한 데이터가 데이터의 다른 형태로부터 재구성 되더라도, 유닛 및 블록 제어 정보는 이전에 저장된다. 유닛 제어 정보는 물리적인 유닛에 할당된 물리적인 유닛 번호, 주 유닛 또는 대체 유닛으로써 물리적인 유닛 그 자체의 상태 및 다른 유닛과의 상대적인 위치를 나타낸다. 블록 제어 정보는 물리적인 블록이 확보되었는지, 또는 프리 상태인지 아니면, 다른 물리적인 블록에 잔재하는 정보에 의해 대용되었는 지의 여부를 나타낸다.
정보의 이러한 상이한 형태들 중 하나 또는 둘다는 물리적인 장치의 특정한 부분에 기록될 수 있다. 도 1에서 설명한 바와 같이, 양호하게도 AND 및 FMAX 시스템은 각각의 물리적인 유닛(12)을 물리적인 플래시 장치에 저장된 실제 사용자 데이터를 포함하는 주 데이터 영역(16)과 제어 정보를 포함하는 제어 데이터 영역(18)으로 분할한다. 이러한 영역은 블록(16)의 서브분할로 도시되어 있지만, 물리적인 유닛(12)은 실질적으로 블록으로 독립적으로 분할되는 주 데이터 영역과 제어 데이터 영역으로 분할된다. 제어 데이터 영역(18)은 주 데이터 영역(16)의 블록 위치지정 방식 내에 포함되지 않고, 물리적인 플래시 디스크의 전체 크기를 계산할 때도 포함되지 않았음을 알아야 한다.
NAND 및 AND 플래시 기술은 메모리의 각 블록에 대한 스페어 영역을 가지기 때문에, 제어 정보는 그 블록의 스페어 영역에 일반적으로 기록되며, 사용자 데이터는 주 블록 영역에 위치지정된다.
스페어 영역이 제공되지 않는 이러한 플래시 기술에 있어서, 모든 물리적인 유닛은 사용자 데이터를 저장하기 위한 주 영역과 요청된 제어 정보를 저장하기 위한 오버헤드 섹션으로 분할될 수 있다.
상술한 설명은 단지 예로써 동작하도록 의도되었음을 알아야 하며, 그 밖의 많은 실시예들이 본 발명의 정신과 범위내에서 가능하다는 것을 이해할 것이다.

Claims (16)

  1. 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 반드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 메모리 구성 방법으로서, 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기가 소거를 위한 가장 작은 메모리 부분의 크기와는 다른, 상기 메모리를 위한 메모리 구성 방법에 있어서,
    (a) 상기 메모리의 복수의 물리적인 유닛들을 제공하는 단계로서, 상기 물리적인 유닛들 각각은 소거를 위한 상기 가장 작은 메모리 부분의 크기이고, 상기 물리적인 유닛들 각각은 물리적인 유닛 번호에 의해 지정되며, 상기 물리적인 유닛들 각각은 복수의 물리적인 블록들로 분할되고, 상기 복수의 물리적인 블록들 각각은 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기이고, 상기 물리적인 블록들 각각은 상기 물리적인 유닛 내의 물리적인 블록 오프셋에 의해 지정되는, 상기 복수의 물리적인 유닛들 제공 단계,
    (b) 상기 메모리의 복수의 가상 유닛들을 제공하는 단계로서, 각각의 가상 유닛은 가상 유닛 번호에 의해 지정되고, 상기 가상 유닛들 각각은 복수의 가상 블록들을 특징으로 하고, 상기 가상 블록들 각각은 상기 가상 유닛 내의 가상 블록 오프셋에 의해 지정되는, 상기 복수의 가상 유닛들 제공 단계,
    (c) 가상 맵(virtual map)을 형성하기 위해 적어도 하나의 물리적인 유닛에 각각의 가상 유닛을 매핑하는 단계, 및
    (d) 상기 각각의 가상 블록의 상기 가상 블록 오프셋에 따라, 상기 가상 유닛 내의 각각의 가상 블록을 상기 적어도 하나의 물리적인 유닛 내의 하나의 물리적인 블록에 매핑시키는 단계를 포함하는, 메모리 구성 방법.
  2. 제 1 항에 있어서,
    (e) 상기 메모리의 상기 복수의 가상 유닛들 중 적어도 하나와 상기 메모리의 상기 복수의 물리적인 유닛들 중 적어도 하나 사이의 대응관계를 변화시켜 상기 메모리에서의 변화를 반영하도록 상기 가상 맵을 변경하는 단계를 더 포함하는, 메모리 구성 방법.
  3. 제 1 항에 있어서,
    (e) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계,
    (f) 상기 가상 블록을 포함하는 가상 유닛을 위치지정하는(locating) 단계,
    (g) 상기 가상 유닛에 맵핑된 물리적인 유닛 내의 기록 가능한 블록을 위치지정하는 단계, 및
    (h) 기록된 물리적인 유닛을 형성하기 위해 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계를 더 포함하는, 메모리 구성 방법.
  4. 제 3 항에 있어서,
    (i) 상기 기록된 물리적인 유닛 내에서 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 제 2 물리적인 유닛을 위치지정하는 단계,
    (j) 상기 데이터를 상기 제 2 물리적인 유닛의 기록 가능한 물리적인 블록에 기록하는 단계, 및
    (k) 상기 가상 유닛이 상기 제 2 물리적인 유닛과 상기 기록된 물리적인 유닛에 대응하도록, 상기 가상 유닛을 상기 제 2 물리적인 유닛에 부가적으로 맵핑함으로써 상기 가상 맵을 갱신하는 단계로서, 상기 제 2 물리적인 유닛과 상기 기록된 물리적인 유닛은 물리적인 유닛들의 체인을 형성하는, 상기 가상 맵 갱신 단계를 더 포함하는, 메모리 구성 방법.
  5. 제 4 항에 있어서,
    상기 제 2 물리적인 유닛의 상기 기록 가능한 물리적인 블록은 물리적인 블록 오프셋을 가지며, 상기 물리적인 블록 오프셋은 상기 맵핑된 가상 유닛의 상기 가상 블록 오프셋에 대응하는, 메모리 구성 방법.
  6. 제 4 항에 있어서,
    상기 제 2 물리적인 유닛의 상기 기록 가능한 물리적인 블록은 물리적인 블록 오프셋을 가지며, 상기 물리적인 블록 오프셋은 상기 맵핑된 가상 유닛의 상기 가상 블록 오프셋과는 다른, 메모리 구성 방법.
  7. 제 4 항에 있어서,
    (l) 기록되지 않은 물리적인 블록이 임의의 물리적인 유닛 내에서 위치지정될 수 없는 경우, 체인 내에 복수의 물리적인 유닛들에 대응하는 제 2 가상 유닛을 위치지정하는 단계,
    (m) 상기 체인 내에 최종 물리적인 유닛을 위치지정하는 단계,
    (n) 상기 기록된 물리적인 유닛의 상기 물리적인 블록들 각각에서 상기 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 데이터를 이동시키는 단계로서, 상기 기록 가능한 물리적인 블록은 상기 기록된 물리적인 유닛의 상기 물리적인 블록과 동일한 블럭 오프셋을 갖는, 데이터 이동 단계, 및
    (o) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하도록, 상기 가상 유닛을 상기 최종 물리적인 유닛에 맵핑시킴으로써 상기 가상 맵을 갱신하는 단계를 더 포함하는, 메모리 구성 방법.
  8. 제 7 항에 있어서,
    (p) 상기 최종 물리적인 유닛을 제외한, 상기 체인 내의 상기 기록된 물리적인 유닛들 모두를 소거하는 단계를 더 포함하는, 메모리 구성 방법.
  9. 제 4 항에 있어서,
    (l) 기록되지 않은 어떠한 물리적인 유닛도 상기 체인에 대한 할당을 위해 이용될 수 없는 경우, 재구성화를 위해 기록되지 않은 물리적인 유닛을 할당하는 단계,
    (m) 상기 기록된 물리적인 유닛의 상기 물리적인 블록들 각각에서 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록으로 데이터를 이동시키는 단계, 및
    (n) 상기 가상 유닛이 상기 기록되지 않은 물리적인 유닛에만 대응하도록, 상기 가상 유닛을 상기 기록되지 않은 물리적인 유닛에 맵핑함으로써 상기 가상 맵을 갱신하는 단계를 더 포함하는, 메모리 구성 방법.
  10. 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 받드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 메모리 구성 방법으로서, 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기는 소거를 위한 가장 작은 메모리 부분의 크기와는 다른, 상기 메모리를 위한 메모리 구성 방법에 있어서,
    (a) 상기 메모리의 복수의 물리적인 유닛들을 제공하는 단계로서, 상기 물리적인 유닛들 각각은 소거를 위한 상기 가장 작은 메모리 부분이고, 상기 물리적인 유닛들 각각은 물리적인 유닛 번호에 의해 지정되며, 상기 물리적인 유닛들 각각은 복수의 물리적인 블록들로 분할되고, 상기 복수의 물리적인 블록들 각각은 데이터를 판독 또는 기록하기 위한 상기 메모리 부분이고, 상기 물리적인 블록들 각각은 상기 물리적인 유닛 내의 물리적인 블록 오프셋에 의해 지정되는, 상기 복수의 물리적인 유닛들 제공 단계,
    (b) 상기 메모리의 복수의 가상 유닛들을 제공하는 단계로서, 각각의 가상 유닛은 가상 유닛 번호에 의해 지정되고, 상기 가상 유닛들 각각은 복수의 가상 블록들을 특징으로 하고, 상기 가상 블록들 각각은 상기 가상 유닛 내의 가상 블록 오프셋에 의해 지정되는, 상기 복수의 가상 유닛들 제공 단계,
    (c) 각각의 가상 유닛을 적어도 하나의 물리적인 유닛에 맵핑시키기 위한 가상 맵을 제공하는 단계,
    (d) 상기 가상 유닛 내의 각각의 가상 블록을 상기 적어도 하나의 물리적인 유닛 내의 하나의 물리적인 블록에 매핑시키는 단계,
    (e) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계,
    (f) 상기 가상 블록을 포함하는 가상 유닛을 위치지정하는 단계,
    (g) 상기 가상 유닛에 맵핑된 물리적인 유닛 내에 기록 가능한 블록을 위치지정하는 단계,
    (h) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계,
    (i) 기록된 물리적인 유닛 내에서 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 상기 기록되지 않은 물리적인 유닛이 체인 내의 최종 물리적인 유닛이 되도록, 물리적인 유닛들의 체인을 형성하기 위해 기록되지 않은 물리적인 유닛을 할당하는 단계,
    (j) 상기 데이터를 상기 최종 물리적인 유닛 내의 기록되지 않은 물리적인 블록에 기록하는 단계,
    (k) 단계(j)에서 기록된 데이터를 제외한, 상기 복수의 물리적인 블록들 각각에서 상기 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 상기 데이터를 이동시키는 단계 및,
    (l) 상기 가상 유닛이 상기 기록된 물리적인 유닛에 대응하도록, 상기 가상 유닛을 상기 기록된 물리적인 유닛에 맵핑함으로써 상기 가상 맵을 갱신하는 단계를 포함하는, 메모리 구성 방법.
  11. 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 받드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 데이터 기록 방법에 있어서,
    (a) 복수의 물리적인 블록들로 분할된 복수의 물리적인 유닛들을 제공하는 단계로서, 상기 물리적인 유닛들 각각은 물리적인 유닛 번호를 가지며, 상기 물리적인 블록들 각각은 상기 물리적인 유닛 내의 물리적인 블록 오프셋을 갖는, 상기 복수의 물리적인 유닛들 제공 단계,
    (b) 복수의 물리적인 블록들로 분할된 복수의 가상 유닛들을 제공하는 단계로서, 상기 가상 유닛들 각각은 가상 유닛 번호를 가지며, 상기 가상 블록들 각각은 상기 가상 유닛 내의 가상 블록 오프셋을 가지며, 각각의 가상 유닛은 적어도 하나의 물리적인 유닛에 매핑되는, 상기 복수의 가상 유닛들 제공 단계,
    (c) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계,
    (d) 가상 블록 오프셋을 갖는 상기 가상 블록을 포함하는 가상 유닛을 결정하는 단계,
    (e) 상기 가상 유닛에 대응하는 물리적인 유닛을 위치지정하는 단계,
    (f) 상기 물리적인 유닛 내에 물리적인 블록을 위치지정하는 단계,
    (g) 상기 물리적인 블록이 기록되지 않은 것인지의 여부를 결정하는 단계,
    (h) 상기 물리적인 블록이 기록되지 않은 것인 경우에만, 상기 데이터를 상기 물리적인 블록에 기록하는 단계,
    (i) 대안으로, 상기 물리적인 블록이 기록되지 않은 것이 아닌 경우, 제 2 물리적인 유닛을 할당하는 단계,
    (j) 물리적인 블록 오프셋을 갖는 기록 가능한 물리적인 블록을 제 2 물리적인 유닛 내에 위치지정하는 단계,
    (k) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계,
    (l) 상기 가상 유닛이 물리적인 유닛들의 체인을 형성하기 위해 상기 제 2 물리적인 유닛에 부가적으로 맵핑되도록, 상기 가상 유닛을 상기 기록 가능한 물리적인 블록을 포함하는 상기 제 2 물리적인 유닛에 부가적으로 맵핑하는 단계,
    (m) 기록된 물리적인 유닛 내에서 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 체인 내에 복수의 물리적인 유닛들에 대응하는 제 2 가상 유닛을 위치지정하는 단계,
    (n) 상기 체인 내에 최종 물리적인 유닛을 위치지정하는 단계,
    (o) 상기 기록된 물리적인 유닛의 상기 물리적인 블록 내의 모든 데이터를 상기 최종 물리적인 유닛의 상기 물리적인 블록들에 전송하는 단계 및,
    (p) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하도록 상기 가상 맵을 갱신하는 단계를 포함하는, 데이터 기록 방법.
  12. 제 11 항에 있어서,
    상기 기록 가능한 물리적인 블록의 상기 물리적인 블록 오프셋은 상기 가상 블록 오프셋과 동일한 블록 오프셋 번호를 갖는, 데이터 기록 방법.
  13. 제 11 항에 있어서,
    (q) 상기 기록된 물리적인 유닛들 모두를 소거하는 단계를 더 포함하는, 데이터 기록 방법.
  14. 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 받드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 데이터 기록 방법에 있어서,
    (a) 복수의 물리적인 블록들로 분할된 복수의 물리적인 유닛들을 제공하는 단계로서, 상기 물리적인 유닛들 각각은 물리적인 유닛 번호를 가지며, 상기 물리적인 블록들 각각은 상기 물리적인 유닛 내의 물리적인 블록 오프셋을 갖는, 상기 복수의 물리적인 유닛들 제공 단계,
    (b) 복수의 물리적인 블록들로 분할된 복수의 가상 유닛들을 제공하는 단계로서, 상기 가상 유닛들 각각은 가상 유닛 번호를 가지며, 상기 가상 블록들 각각은 상기 가상 유닛 내의 가상 블록 오프셋을 가지며, 각각의 가상 유닛은 적어도 하나의 물리적인 유닛에 매핑되는, 상기 복수의 가상 유닛들 제공 단계,
    (c) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계,
    (d) 가상 블록 오프셋을 갖는 상기 가상 블록을 포함하는 가상 유닛을 결정하는 단계,
    (e) 상기 가상 유닛에 대응하는 물리적인 유닛을 위치지정하는 단계,
    (f) 상기 물리적인 유닛 내에 물리적인 블록을 위치지정하는 단계,
    (g) 상기 물리적인 블록이 기록되지 않은 것인지의 여부를 결정하는 단계,
    (h) 상기 물리적인 블록이 기록되지 않은 경우에만, 상기 데이터를 상기 물리적인 블록에 기록하는 단계,
    (i) 대안으로, 상기 물리적인 블록이 기록되지 않은 것이 아닌 경우, 제 2 물리적인 유닛을 할당하는 단계,
    (j) 물리적인 블록 오프셋을 갖는 기록 가능한 물리적인 블록을 제 2 물리적인 유닛 내에 위치지정하는 단계,
    (k) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계,
    (l) 상기 가상 유닛이 물리적인 유닛들의 체인을 형성하기 위해 상기 제 2 물리적인 유닛에 부가적으로 맵핑되도록, 상기 가상 유닛을 상기 기록 가능한 물리적인 블록을 포함하는 상기 제 2 물리적인 유닛에 부가적으로 맵핑하는 단계,
    (m) 기록되지 않은 물리적인 유닛이 할당을 위해 이용될 수 없는 경우, 상기 체인 내에 최종 물리적인 유닛을 위치지정하는 단계,
    (n) 상기 기록된 물리적인 유닛들의 상기 물리적인 블록 내의 모든 데이터를 상기 최종 물리적인 유닛의 상기 물리적인 블록들에 전송하는 단계 및,
    (o) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하도록 상기 가상 맵을 갱신하는 단계를 포함하는, 데이터 기록 방법.
  15. 제 14 항에 있어서,
    (p) 상기 최종 물리적인 유닛을 제외한, 상기 기록된 물리적인 유닛들 모두를 소거하는 단계를 더 포함하는, 데이터 기록 방법.
  16. 메모리의 기록된 부분이 기록되지 않은 부분이 되기 위해서는 받드시 소거되어야 하는 방식으로, 상기 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있는 메모리를 위한 메모리 구성 방법으로서, 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기는 소거를 위한 가장 작은 메모리 부분의 크기와는 다른 메모리를 위한 메모리 구성 방법에 있어서,
    (a) 상기 메모리의 복수의 물리적인 유닛들을 제공하는 단계로서, 상기 물리적인 유닛들 각각은 소거를 위한 상기 가장 작은 메모리 부분의 크기이고, 상기 물리적인 유닛들 각각은 물리적인 유닛 번호에 의해 지정되며, 상기 물리적인 유닛들 각각은 복수의 물리적인 블록들로 분할되고, 상기 복수의 물리적인 블록들 각각은 데이터를 판독 또는 기록하기 위한 상기 메모리 부분의 크기이고, 상기 물리적인 블록들 각각은 상기 물리적인 유닛 내의 물리적인 블록 오프셋에 의해 지정되는, 상기 복수의 물리적인 유닛 제공 단계,
    (b) 상기 메모리의 복수의 가상 유닛들을 제공하는 단계로서, 각각의 가상 유닛은 가상 유닛 번호에 의해 지정되고, 상기 가상 유닛들 각각은 복수의 가상 블록들을 특징으로 하고, 상기 가상 블록들 각각은 상기 가상 유닛 내의 가상 블록 오프셋에 의해 지정되는, 상기 복수의 가상 유닛들 제공 단계,
    (c) 각각의 가상 유닛을 적어도 하나의 물리적인 유닛에 맵핑시키기 위한 가상 맵을 제공하는 단계,
    (d) 상기 가상 유닛 내의 각각의 가상 블록을 상기 적어도 하나의 물리적인 유닛 내의 하나의 물리적인 블록에 매핑시키는 단계,
    (e) 데이터를 가상 블록에 기록하기 위해 기록 명령을 수신하는 단계,
    (f) 상기 가상 블록을 포함하는 가상 유닛을 위치지정하는 단계,
    (g) 상기 가상 유닛에 맵핑된 물리적인 유닛 내에 기록 가능한 블록을 위치지정하는 단계,
    (h) 기록된 물리적인 유닛을 형성하기 위해 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계,
    (i) 상기 기록된 물리적인 유닛 내에서 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 기록 가능한 물리적인 블록을 갖는 제 2 물리적인 유닛을 위치지정하는 단계,
    (j) 상기 데이터를 상기 제 2 물리적인 유닛의 상기 기록 가능한 물리적인 블록에 기록하는 단계,
    (k) 상기 가상 유닛이 상기 제 2 물리적인 유닛과 상기 기록된 물리적인 유닛에 대응하도록, 상기 가상 유닛을 상기 제 2 물리적인 유닛에 부가적으로 맵핑함으로써 상기 가상 맵을 갱신하는 단계로서, 상기 제 2 물리적인 유닛과 상기 기록된 물리적인 유닛은 물리적인 유닛들의 체인을 형성하는, 상기 가상 맵 갱신 단계,
    (l) 임의의 물리적인 유닛 내의 기록되지 않은 물리적인 블록이 발견될 수 없는 경우, 체인 내에 복수의 물리적인 유닛들에 대응하는 제 2 가상 유닛을 위치지정하는 단계,
    (m) 상기 체인 내에 상기 최종 물리적인 유닛을 위치지정하는 단계,
    (n) 상기 기록된 물리적인 유닛의 물리적인 블록들 각각에서 상기 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 데이터를 이동시키는 단계로서, 상기 기록 가능한 물리적인 블록은 상기 기록된 물리적인 유닛의 상기 물리적인 블록과 실질적으로 동일한 블럭 오프셋을 갖는, 데이터 이동 단계, 및
    (o) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하도록, 상기 가상 유닛을 상기 최종 물리적인 유닛에 맵핑시킴으로써 상기 가상 맵을 갱신하는 단계를 포함하는, 메모리 구성 방법.
KR10-2000-7004068A 1997-10-16 1998-10-05 개선된 플래시 파일 시스템 KR100495722B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/951,644 US5937425A (en) 1997-10-16 1997-10-16 Flash file system optimized for page-mode flash technologies
US8/951,644 1997-10-16
US08/951,644 1997-10-16

Publications (2)

Publication Number Publication Date
KR20010031157A KR20010031157A (ko) 2001-04-16
KR100495722B1 true KR100495722B1 (ko) 2005-06-17

Family

ID=25491960

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2000-7004068A KR100495722B1 (ko) 1997-10-16 1998-10-05 개선된 플래시 파일 시스템

Country Status (7)

Country Link
US (1) US5937425A (ko)
EP (1) EP1025502A4 (ko)
JP (1) JP3712231B2 (ko)
KR (1) KR100495722B1 (ko)
CN (1) CN1223945C (ko)
AU (1) AU9685898A (ko)
WO (1) WO1999021093A1 (ko)

Families Citing this family (280)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5657332A (en) * 1992-05-20 1997-08-12 Sandisk Corporation Soft errors handling in EEPROM devices
US5845313A (en) 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6978342B1 (en) 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US7113432B2 (en) 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
US7606733B2 (en) * 2000-10-27 2009-10-20 Sandisk Il Ltd. Account portability for computing
US7373656B2 (en) * 2000-10-27 2008-05-13 Sandisk Il Ltd. Automatic configuration for portable devices
US6986030B2 (en) 2000-10-27 2006-01-10 M-Systems Flash Disk Pioneers Ltd. Portable memory device includes software program for interacting with host computing device to provide a customized configuration for the program
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6510488B2 (en) 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US6732221B2 (en) 2001-06-01 2004-05-04 M-Systems Flash Disk Pioneers Ltd Wear leveling of static areas in flash memory
KR100389867B1 (ko) 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US6591330B2 (en) 2001-06-18 2003-07-08 M-Systems Flash Disk Pioneers Ltd. System and method for flexible flash file
US6760805B2 (en) 2001-09-05 2004-07-06 M-Systems Flash Disk Pioneers Ltd. Flash management system for large page size
US7108975B2 (en) * 2001-09-21 2006-09-19 Regents Of The University Of Michigan Atlastin
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
GB0123416D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123421D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Power management system
US6668336B2 (en) * 2001-11-08 2003-12-23 M-Systems Flash Disk Pioneers Ltd. Ruggedized block device driver
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US6977847B2 (en) * 2001-11-23 2005-12-20 M-Systems Flash Disk Pioneers Ltd. Detecting partially erased units in flash devices
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
US6909910B2 (en) * 2002-02-01 2005-06-21 Microsoft Corporation Method and system for managing changes to a contact database
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
US6621746B1 (en) 2002-02-27 2003-09-16 Microsoft Corporation Monitoring entropic conditions of a flash memory device as an indicator for invoking erasure operations
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US6901499B2 (en) 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
KR100914646B1 (ko) * 2002-08-31 2009-08-28 지인정보기술 주식회사 멀티-플레인 구조의 플래시 메모리 관리 방법
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
US7082512B2 (en) * 2002-11-21 2006-07-25 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
JP3928724B2 (ja) * 2003-02-20 2007-06-13 ソニー株式会社 記録媒体の記録制御方法および記録媒体の記録制御装置
US7526598B2 (en) * 2003-03-03 2009-04-28 Sandisk Il, Ltd. Efficient flash memory device driver
US7003621B2 (en) * 2003-03-25 2006-02-21 M-System Flash Disk Pioneers Ltd. Methods of sanitizing a flash-based data storage device
US7664987B2 (en) * 2003-05-25 2010-02-16 Sandisk Il Ltd. Flash memory device with fast reading rate
US7372731B2 (en) * 2003-06-17 2008-05-13 Sandisk Il Ltd. Flash memories with adaptive reference voltages
US6988175B2 (en) * 2003-06-30 2006-01-17 M-Systems Flash Disk Pioneers Ltd. Flash memory management method that is resistant to data corruption by power loss
JP4667243B2 (ja) * 2003-08-29 2011-04-06 パナソニック株式会社 不揮発性記憶装置及びその書込み方法
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7012835B2 (en) * 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7644376B2 (en) 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
KR100608602B1 (ko) 2003-12-10 2006-08-03 삼성전자주식회사 플래시 메모리, 이를 위한 사상 제어 장치 및 방법
KR100533682B1 (ko) * 2003-12-26 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP4284200B2 (ja) * 2004-01-28 2009-06-24 株式会社東芝 不揮発性半導体記憶システム
US7716413B2 (en) * 2004-02-15 2010-05-11 Sandisk Il Ltd. Method of making a multi-bit-cell flash memory
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
TWI249670B (en) * 2004-04-29 2006-02-21 Mediatek Inc System and method capable of sequentially writing a flash memory
CN100353341C (zh) * 2004-04-30 2007-12-05 联发科技股份有限公司 可循序写入数据至闪存中的系统及其方法
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7703073B2 (en) * 2004-06-08 2010-04-20 Covia Labs, Inc. Device interoperability format rule set and method for assembling interoperability application package
KR100568115B1 (ko) * 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
DE102004033593A1 (de) * 2004-07-07 2006-02-02 Siemens Ag Verfahren zur Simulation einer technischen Anlage
US7386700B2 (en) * 2004-07-30 2008-06-10 Sandisk Il Ltd Virtual-to-physical address translation in a flash file system
KR100597411B1 (ko) * 2004-08-04 2006-07-05 삼성전자주식회사 파일의 효율적인 데이터 관리를 위한 방법 및 장치
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
WO2006026645A2 (en) * 2004-08-30 2006-03-09 Silicon Storage Technology, Inc. Systems and methods for providing nonvolatile memory management in wireless phones
US20060059296A1 (en) * 2004-09-16 2006-03-16 M-Systems Flash Disk Pioneers, Ltd. Emulating small block size of flash memory
US7164611B2 (en) 2004-10-26 2007-01-16 Micron Technology, Inc. Data retention kill function
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
US7395404B2 (en) 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
US7386655B2 (en) * 2004-12-16 2008-06-10 Sandisk Corporation Non-volatile memory and method with improved indexing for scratch pad and update blocks
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
US7412560B2 (en) * 2004-12-16 2008-08-12 Sandisk Corporation Non-volatile memory and method with multi-stream updating
US7149111B2 (en) * 2004-12-17 2006-12-12 Msystems Ltd. Method of handling limitations on the order of writing to a non-volatile memory
FR2880152B1 (fr) * 2004-12-24 2007-03-02 Trusted Logic Sa Procede et systeme pour l'optimisation de la gestion de fichiers a enregistrements
US7308525B2 (en) * 2005-01-10 2007-12-11 Sandisk Il Ltd. Method of managing a multi-bit cell flash memory with improved reliablility and performance
US7426623B2 (en) * 2005-01-14 2008-09-16 Sandisk Il Ltd System and method for configuring flash memory partitions as super-units
US8341371B2 (en) * 2005-01-31 2012-12-25 Sandisk Il Ltd Method of managing copy operations in flash memories
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
EP1851771A2 (en) * 2005-02-11 2007-11-07 M-Systems Flash Disk Pioneers Ltd. Nand flash memory system architecture
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7275140B2 (en) * 2005-05-12 2007-09-25 Sandisk Il Ltd. Flash memory management method that is resistant to data corruption by power loss
US7389397B2 (en) * 2005-06-01 2008-06-17 Sandisk Il Ltd Method of storing control information in a large-page flash memory device
US20060282610A1 (en) 2005-06-08 2006-12-14 M-Systems Flash Disk Pioneers Ltd. Flash memory with programmable endurance
KR100827227B1 (ko) * 2005-06-24 2008-05-07 삼성전자주식회사 저성능 저장장치의 drm 권리 객체를 효율적으로관리하는 방법 및 장치
US7743409B2 (en) 2005-07-08 2010-06-22 Sandisk Corporation Methods used in a mass storage device with automated credentials loading
US8321953B2 (en) * 2005-07-14 2012-11-27 Imation Corp. Secure storage device with offline code entry
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US8015606B1 (en) 2005-07-14 2011-09-06 Ironkey, Inc. Storage device with website trust indication
US8335920B2 (en) 2005-07-14 2012-12-18 Imation Corp. Recovery of data access for a locked secure storage device
US20070016721A1 (en) * 2005-07-18 2007-01-18 Wyse Technology Inc. Flash file system power-up by using sequential sector allocation
TW200705180A (en) * 2005-07-29 2007-02-01 Genesys Logic Inc Adjustable flash memory management system and method
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US20070067620A1 (en) * 2005-09-06 2007-03-22 Ironkey, Inc. Systems and methods for third-party authentication
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7631245B2 (en) 2005-09-26 2009-12-08 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7747833B2 (en) * 2005-09-30 2010-06-29 Mosaid Technologies Incorporated Independent link and bank selection
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
KR101293365B1 (ko) * 2005-09-30 2013-08-05 모사이드 테크놀로지스 인코퍼레이티드 출력 제어 메모리
US11948629B2 (en) 2005-09-30 2024-04-02 Mosaid Technologies Incorporated Non-volatile memory device with concurrent bank operations
US20070076502A1 (en) * 2005-09-30 2007-04-05 Pyeon Hong B Daisy chain cascading devices
US20070165457A1 (en) * 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
US7529905B2 (en) 2005-10-13 2009-05-05 Sandisk Corporation Method of storing transformed units of data in a memory system having fixed sized storage blocks
US7814262B2 (en) * 2005-10-13 2010-10-12 Sandisk Corporation Memory system storing transformed units of data in fixed sized storage blocks
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US7769978B2 (en) 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7747837B2 (en) 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
US7519754B2 (en) * 2005-12-28 2009-04-14 Silicon Storage Technology, Inc. Hard disk drive cache memory and playback device
US20070147115A1 (en) * 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US8335868B2 (en) * 2006-03-28 2012-12-18 Mosaid Technologies Incorporated Apparatus and method for establishing device identifiers for serially interconnected devices
US8364861B2 (en) * 2006-03-28 2013-01-29 Mosaid Technologies Incorporated Asynchronous ID generation
US8069328B2 (en) * 2006-03-28 2011-11-29 Mosaid Technologies Incorporated Daisy chain cascade configuration recognition technique
US7551492B2 (en) 2006-03-29 2009-06-23 Mosaid Technologies, Inc. Non-volatile semiconductor memory with page erase
WO2007112555A1 (en) * 2006-03-31 2007-10-11 Mosaid Technologies Incorporated Flash memory system control scheme
JP2007280108A (ja) * 2006-04-07 2007-10-25 Sony Corp 記憶媒体制御装置、記憶媒体制御方法、プログラム
US8645793B2 (en) * 2008-06-03 2014-02-04 Marvell International Ltd. Statistical tracking for flash memory
US7583545B2 (en) * 2006-05-21 2009-09-01 Sandisk Il Ltd Method of storing data in a multi-bit-cell flash memory
US7711890B2 (en) * 2006-06-06 2010-05-04 Sandisk Il Ltd Cache control in a non-volatile memory device
US20080046641A1 (en) * 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US20080046630A1 (en) * 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US7904639B2 (en) * 2006-08-22 2011-03-08 Mosaid Technologies Incorporated Modular command structure for memory and memory system
KR100802059B1 (ko) * 2006-09-06 2008-02-12 삼성전자주식회사 읽기 디스터브로 인한 배드 블록의 생성을 억제할 수 있는메모리 시스템 및 그것의 동작 방법
US7593259B2 (en) * 2006-09-13 2009-09-22 Mosaid Technologies Incorporated Flash multi-level threshold distribution scheme
US7886204B2 (en) * 2006-09-27 2011-02-08 Sandisk Corporation Methods of cell population distribution assisted read margining
US7716538B2 (en) * 2006-09-27 2010-05-11 Sandisk Corporation Memory with cell population distribution assisted read margining
US8700818B2 (en) * 2006-09-29 2014-04-15 Mosaid Technologies Incorporated Packet based ID generation for serially interconnected devices
KR100771519B1 (ko) * 2006-10-23 2007-10-30 삼성전자주식회사 플래시 메모리를 포함한 메모리 시스템 및 그것의 머지방법
US7814263B2 (en) * 2006-10-26 2010-10-12 Sandisk Il Ltd. Erase history-based flash writing method
KR100789406B1 (ko) 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US7817470B2 (en) 2006-11-27 2010-10-19 Mosaid Technologies Incorporated Non-volatile memory serial core architecture
KR100816761B1 (ko) * 2006-12-04 2008-03-25 삼성전자주식회사 낸드 플래시 메모리 및 에스램/노어 플래시 메모리를포함하는 메모리 카드 및 그것의 데이터 저장 방법
US7818464B2 (en) * 2006-12-06 2010-10-19 Mosaid Technologies Incorporated Apparatus and method for capturing serial input data
US7853727B2 (en) * 2006-12-06 2010-12-14 Mosaid Technologies Incorporated Apparatus and method for producing identifiers regardless of mixed device type in a serial interconnection
US8271758B2 (en) * 2006-12-06 2012-09-18 Mosaid Technologies Incorporated Apparatus and method for producing IDS for interconnected devices of mixed type
US8010709B2 (en) * 2006-12-06 2011-08-30 Mosaid Technologies Incorporated Apparatus and method for producing device identifiers for serially interconnected devices of mixed type
US8331361B2 (en) * 2006-12-06 2012-12-11 Mosaid Technologies Incorporated Apparatus and method for producing device identifiers for serially interconnected devices of mixed type
US7529149B2 (en) * 2006-12-12 2009-05-05 Mosaid Technologies Incorporated Memory system and method with serial and parallel modes
US8984249B2 (en) * 2006-12-20 2015-03-17 Novachips Canada Inc. ID generation apparatus and method for serially interconnected devices
US8370561B2 (en) * 2006-12-24 2013-02-05 Sandisk Il Ltd. Randomizing for suppressing errors in a flash memory
US8127200B2 (en) * 2006-12-24 2012-02-28 Sandisk Il Ltd. Flash memory device and system with randomizing for suppressing errors
US7721040B2 (en) * 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US8010710B2 (en) * 2007-02-13 2011-08-30 Mosaid Technologies Incorporated Apparatus and method for identifying device type of serially interconnected devices
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof
US20080201588A1 (en) * 2007-02-16 2008-08-21 Mosaid Technologies Incorporated Semiconductor device and method for reducing power consumption in a system having interconnected devices
US8086785B2 (en) * 2007-02-22 2011-12-27 Mosaid Technologies Incorporated System and method of page buffer operation for memory devices
WO2008101316A1 (en) * 2007-02-22 2008-08-28 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
US7796462B2 (en) * 2007-02-22 2010-09-14 Mosaid Technologies Incorporated Data flow control in multiple independent port
US8370562B2 (en) * 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
US7577059B2 (en) * 2007-02-27 2009-08-18 Mosaid Technologies Incorporated Decoding control with address transition detection in page erase function
US7804718B2 (en) * 2007-03-07 2010-09-28 Mosaid Technologies Incorporated Partial block erase architecture for flash memory
US7477547B2 (en) * 2007-03-28 2009-01-13 Sandisk Corporation Flash memory refresh techniques triggered by controlled scrub data reads
US7573773B2 (en) * 2007-03-28 2009-08-11 Sandisk Corporation Flash memory with data refresh triggered by controlled scrub data reads
US7808834B1 (en) 2007-04-13 2010-10-05 Marvell International Ltd. Incremental memory refresh
US7869277B1 (en) 2007-04-25 2011-01-11 Apple Inc. Managing data writing to memories
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US7577029B2 (en) 2007-05-04 2009-08-18 Mosaid Technologies Incorporated Multi-level cell access buffer with dual function
CN101398759B (zh) * 2007-06-29 2012-06-13 北京中星微电子有限公司 避免启动代码在数据段搬移时自我覆盖的方法
US8031526B1 (en) 2007-08-23 2011-10-04 Marvell International Ltd. Write pre-compensation for nonvolatile memory
US8189381B1 (en) 2007-08-28 2012-05-29 Marvell International Ltd. System and method for reading flash memory cells
US8085605B2 (en) 2007-08-29 2011-12-27 Marvell World Trade Ltd. Sequence detection for flash memory with inter-cell interference
US7970983B2 (en) * 2007-10-14 2011-06-28 Sandisk Il Ltd. Identity-based flash management
US8024545B2 (en) 2007-10-19 2011-09-20 Inha-Industry Partnership Institute Efficient prefetching and asynchronous writing for flash memory
US7913128B2 (en) * 2007-11-23 2011-03-22 Mosaid Technologies Incorporated Data channel test apparatus and method thereof
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
US7983099B2 (en) 2007-12-20 2011-07-19 Mosaid Technologies Incorporated Dual function compatible non-volatile memory device
US7865658B2 (en) * 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
US7940572B2 (en) 2008-01-07 2011-05-10 Mosaid Technologies Incorporated NAND flash memory having multiple cell substrates
WO2009137371A2 (en) * 2008-05-02 2009-11-12 Ironkey, Inc. Enterprise device recovery
US20100042900A1 (en) * 2008-08-18 2010-02-18 Apple Inc. Write Failure Handling of MLC NAND
US8838876B2 (en) 2008-10-13 2014-09-16 Micron Technology, Inc. Translation layer in a solid state storage device
TWI452467B (zh) * 2008-10-13 2014-09-11 A Data Technology Co Ltd 記憶體系統及其控制方法
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
US8316201B2 (en) * 2008-12-18 2012-11-20 Sandisk Il Ltd. Methods for executing a command to write data from a source location to a destination location in a memory device
JP4551958B2 (ja) * 2008-12-22 2010-09-29 株式会社東芝 半導体記憶装置および半導体記憶装置の制御方法
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100228906A1 (en) * 2009-03-06 2010-09-09 Arunprasad Ramiya Mothilal Managing Data in a Non-Volatile Memory System
US8176295B2 (en) 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
TWI457940B (zh) * 2009-05-15 2014-10-21 Macronix Int Co Ltd 區塊為基礎快閃記憶體之位元組存取
US8745365B2 (en) * 2009-08-06 2014-06-03 Imation Corp. Method and system for secure booting a computer by booting a first operating system from a secure peripheral device and launching a second operating system stored a secure area in the secure peripheral device on the first operating system
US8683088B2 (en) * 2009-08-06 2014-03-25 Imation Corp. Peripheral device data integrity
US20110041039A1 (en) * 2009-08-11 2011-02-17 Eliyahou Harari Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US9396104B1 (en) 2010-03-22 2016-07-19 Seagate Technology, Llc Accessing compressed data of varying-sized quanta in non-volatile memory
US9235530B2 (en) 2010-05-31 2016-01-12 Sandisk Technologies Inc. Method and system for binary cache cleanup
JP2012226822A (ja) 2011-04-15 2012-11-15 Samsung Electronics Co Ltd 不揮発性メモリ装置
US9069477B1 (en) * 2011-06-16 2015-06-30 Amazon Technologies, Inc. Reuse of dynamically allocated memory
US9588883B2 (en) 2011-09-23 2017-03-07 Conversant Intellectual Property Management Inc. Flash memory system
US20130080731A1 (en) * 2011-09-28 2013-03-28 Ping-Yi Hsu Method and apparatus for performing memory management
US8687421B2 (en) 2011-11-21 2014-04-01 Sandisk Technologies Inc. Scrub techniques for use with dynamic read
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
CN102662849B (zh) * 2012-03-07 2015-12-16 忆正科技(武汉)有限公司 多通道闪存的区块管理方法
KR20140038110A (ko) 2012-09-20 2014-03-28 한국전자통신연구원 파일 시스템 관리 방법 및 이를 이용하는 장치
US9495288B2 (en) * 2013-01-22 2016-11-15 Seagate Technology Llc Variable-size flash translation layer
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9268502B2 (en) 2013-09-16 2016-02-23 Netapp, Inc. Dense tree volume metadata organization
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9152684B2 (en) 2013-11-12 2015-10-06 Netapp, Inc. Snapshots and clones of volumes in a storage system
US9201918B2 (en) 2013-11-19 2015-12-01 Netapp, Inc. Dense tree volume metadata update logging and checkpointing
US9170746B2 (en) 2014-01-07 2015-10-27 Netapp, Inc. Clustered raid assimilation management
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9152330B2 (en) 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9256549B2 (en) 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
US9454434B2 (en) 2014-01-17 2016-09-27 Netapp, Inc. File system driven raid rebuild technique
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9230689B2 (en) 2014-03-17 2016-01-05 Sandisk Technologies Inc. Finding read disturbs on non-volatile memories
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US9501359B2 (en) 2014-09-10 2016-11-22 Netapp, Inc. Reconstruction of dense tree volume metadata state across crash recovery
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
US9552171B2 (en) 2014-10-29 2017-01-24 Sandisk Technologies Llc Read scrub with adaptive counter management
US9978456B2 (en) 2014-11-17 2018-05-22 Sandisk Technologies Llc Techniques for reducing read disturb in partially written blocks of non-volatile memory
US9349479B1 (en) 2014-11-18 2016-05-24 Sandisk Technologies Inc. Boundary word line operation in nonvolatile memory
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9449700B2 (en) 2015-02-13 2016-09-20 Sandisk Technologies Llc Boundary word line search and open block read methods with reduced read disturb
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
JPWO2016175028A1 (ja) 2015-04-28 2018-02-22 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
US10592148B2 (en) 2015-07-06 2020-03-17 Nec Corporation Information processing system, storage control apparatus, storage control method, and storage control program for evaluating access performance to a storage medium
US10402114B2 (en) 2015-07-06 2019-09-03 Nec Corporation Information processing system, storage control apparatus, storage control method, and storage control program
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
US10394660B2 (en) 2015-07-31 2019-08-27 Netapp, Inc. Snapshot restore workflow
US10565230B2 (en) 2015-07-31 2020-02-18 Netapp, Inc. Technique for preserving efficiency for replication between clusters of a network
US9653154B2 (en) 2015-09-21 2017-05-16 Sandisk Technologies Llc Write abort detection for multi-state memories
US9785525B2 (en) 2015-09-24 2017-10-10 Netapp, Inc. High availability failover manager
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US10235059B2 (en) 2015-12-01 2019-03-19 Netapp, Inc. Technique for maintaining consistent I/O processing throughput in a storage system
US10691553B2 (en) 2015-12-16 2020-06-23 Netapp, Inc. Persistent memory based distributed-journal file system
US10489346B2 (en) 2015-12-16 2019-11-26 Netapp, Inc. Atomic update of B-tree in a persistent memory-based file system
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US9830103B2 (en) 2016-01-05 2017-11-28 Netapp, Inc. Technique for recovery of trapped storage space in an extent store
US10108547B2 (en) 2016-01-06 2018-10-23 Netapp, Inc. High performance and memory efficient metadata caching
US9846539B2 (en) 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
WO2017130022A1 (en) 2016-01-26 2017-08-03 Telefonaktiebolaget Lm Ericsson (Publ) Method for adding storage devices to a data storage system with diagonally replicated data storage blocks
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US9952767B2 (en) 2016-04-29 2018-04-24 Netapp, Inc. Consistency group management
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10713158B2 (en) 2018-06-28 2020-07-14 Western Digital Technologies, Inc. Non-volatile storage system with dynamic allocation of applications to memory based on usage monitoring
JP7242016B2 (ja) 2019-07-26 2023-03-20 内田工業株式会社 複合遊具

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system

Family Cites Families (7)

* 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
TW261687B (ko) * 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
JP3485938B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 不揮発性半導体メモリ装置
US5459850A (en) * 1993-02-19 1995-10-17 Conner Peripherals, Inc. Flash solid state drive that emulates a disk drive and stores variable length and fixed lenth data blocks
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US5867641A (en) * 1995-10-27 1999-02-02 Scm Microsystems (U.S.) Inc. Flash translation layer cleanup system and method

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system

Also Published As

Publication number Publication date
JP3712231B2 (ja) 2005-11-02
EP1025502A4 (en) 2006-11-08
WO1999021093A1 (en) 1999-04-29
CN1281562A (zh) 2001-01-24
KR20010031157A (ko) 2001-04-16
US5937425A (en) 1999-08-10
CN1223945C (zh) 2005-10-19
JP2001521220A (ja) 2001-11-06
EP1025502A1 (en) 2000-08-09
WO1999021093B1 (en) 1999-07-22
AU9685898A (en) 1999-05-10

Similar Documents

Publication Publication Date Title
KR100495722B1 (ko) 개선된 플래시 파일 시스템
JP4155463B2 (ja) 順次書き込みのみを用いるフラッシュ管理システムを有するシステム、及びその方法
KR100882862B1 (ko) 플렉시블 플래시 파일 시스템을 위한 시스템 및 방법
EP1410399B1 (en) Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US9489301B2 (en) Memory systems
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
JP4004468B2 (ja) 大きなページをサポートするようにさせるための方法およびシステム
US7752412B2 (en) Methods of managing file allocation table information
US7681008B2 (en) Systems for managing file allocation table information
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
US20070033375A1 (en) Indexing of File Data in Reprogrammable Non-Volatile Memories That Directly Store Data Files
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
JP2003085037A (ja) メモリ管理方法
WO2005059966A2 (en) Rotational use of memory to minimize write cycles
US20060212647A1 (en) Information storage apparatus
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법

Legal Events

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

Payment date: 20130522

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140530

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150515

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160517

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180516

Year of fee payment: 14