KR20010031157A - 플래시 파일 시스템 - Google Patents

플래시 파일 시스템 Download PDF

Info

Publication number
KR20010031157A
KR20010031157A KR1020007004068A KR20007004068A KR20010031157A KR 20010031157 A KR20010031157 A KR 20010031157A KR 1020007004068 A KR1020007004068 A KR 1020007004068A KR 20007004068 A KR20007004068 A KR 20007004068A KR 20010031157 A KR20010031157 A KR 20010031157A
Authority
KR
South Korea
Prior art keywords
physical
unit
virtual
block
data
Prior art date
Application number
KR1020007004068A
Other languages
English (en)
Other versions
KR100495722B1 (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}
플래시 장치는 플래시형으로 이루어진 전기적으로 소거가능하고 프로그래밍가능한 판독 전용 메모리(EEPROMs)와 플로팅 게이트 트랜지스터를 포함하며, 기능성 및 실행성에 있어서는 EPROM 메모리와 유사한 비휘발성 메모리이며, 인서킷(in-circuit), 프로그래밍 및 메모리의 페이지 소거 동작을 가능하게 하는 부가의 기능을 갖추고 있다. 플래시 장치는 종래의 자기 저장 디스크에 비해, 비교적 저렴하며 전력 소비가 적다는 장점이 있다. 그러나, 플래시 장치에서, 이전에 기록된 메모리 영역에 재기록 하는 것은 이 영역의 페이지를 소거하기 전에는 불가능하다. 이 영역이 먼저 소거되지 않는다면, 데이터가 이미 기록되어 있는 플래시 장치내의 메모리 영역에 데이터를 기록하는 것은 불가능하기 때문에, 플래시 장치의 이러한 한계점으로 인해, 기존의 전형적인 운용 체제 프로그램과 양립할 수 없었다.
종래 기술에서, 운용 체제 프로그램을 수정하지 않고, 플래시 장치가 기존의 컴퓨터 운영 프로그램에 의해 관리되도록 하는 소프트웨어 제품들이 제안되었다. 그러나, 이러한 종래 기술의 모든 프로그램들에는 부족한면이 있는데, 예를 들면, 하나의 프로그램은 "1회 기록 다수 판독(write once read many)" 장치로써 플래시 메모리를 운용하는 것이다. 이 종래 기술 소프트웨어 프로그램은 이전에 기록된 메모리 위치를 순환할 수 없다. 결국, 모든 위치가 기록되면, 특정 사용자의 중재없이는 메모리를 더 이상 사용할 수 없다. 샌디스크(SanDisk)에 의해 제안된 것처럼, 그 밖의 종래 기술 프로그램은 새로운 데이터를 페이지에 기록하기 위해, 전체 메모리 페이지를 매번 소거 및 재기록해야 한다. 이 시스템은 다중 소거 사이클을 필요로하는 단점, 즉, 비교적 저속 및 비효율성이 있으므로, 물리적인 매체 그 자체의 속도가 더 늦어지는 원인이 되었다.
종래 기술의 이러한 결점을 극복하기 위해, 플래시 파일 시스템(FFS)이 미국 특허 제 5,404,485호에 개시되어 있으며, 참고사항으로 본원에 병합하였다. 플래시 장치에서 데이터를 저장 및 처리하는 시스템이 제공된 FFS는 이러한 장치가 자기, 디스크에 근거한 데이터 저장에 필적하도록 하였다. 상술한 바와 같이, 플래시 장치의 비교적 저렴한 비용 및 저전력 소비로 인해, 데이터 저장장치, 특히, 랩탑 및 휴대용 컴퓨터에서 채택되어 사용되어 왔다.
FFS는 자기 디스크 저장 장치의 대용으로 동작하도록 플래시 장치의 성능을 강화시킨다. 실제로, 미국 특허 제 5,404,485호에 개시된 FFS가 유용하다고 판명되어, 데이터 레이아웃 설명서는 PCMCIA(Personal Computer Memory Card International Association) 및 JEIDA(Japan Electronic Industry Development Association)에 의해 플래시 전송 층(FTL;Flash Translation Layer)으로 일컫는 표준으로 채택되었다.
FFS는 플래시 EEPROM 장치용의 가상 맵핑 시스템을 기본적으로 기재하고 있다. 이 가상 맵은 플래시 장치내의 판독/기록 블록의 물리적인 어드레스와 그 블록의 가상 어드레스에 관련된 테이블이다. 이러한 각각의 블록은 512 바이트로 비교적 작기 때문에, 가상 맵 그 자체의 크기는 매우 크다. 또한, FFS는 플래시 EEPROM 장치상에 가상 맵의 블크를 유지하고 저장하는 방법, 즉, 가상 맵의 저장을 위해 필요한 다른 메모리의 양을 최소화하는 방법을 포함한다.
상술한 바와 같이, FFS는 플래시 장치를 자기 디스크 저장의 에뮬레이터로 변환하는데 특히 성공적으로 판명되어서, 산업 표준으로써 널리 채택되어 왔다. 그러나, FFS는 보다 새로운 플래시 장치 기술에 대한 요구를 모두 만족시키지는 못하였다. 특히, FFS는 NAND 및 AND 플래시 기술에 적합하지 못하다.
종래 기술의 플래시 메모리 아키텍쳐, 특히, 소거-이전-기록 시스템의 결점들을 극복하려는 시도에 대한 다른 실예가 미국 특허 제 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 기술에 근거한 플래시 장치의 동작에서 나타난다.
첫재로, 페이지-방식 메모리는 페이지나 그 임의의 부분을 기록하는 고정된 오버헤드를 가진다. 반대로, 이전의 플래시 기술에서의 기록 동작에 대한 오버헤더는 기록된 바이트의 수에 비례하였다. 둘째로, NAND 및 AND의 플래시 메모리는 각 페이지가 특정 어드레싱가능한 몇 개의 스페어 바이트를 갖도록 구성된다. 이러한 스페어 페이지는 플래시 메모리에 관련된 정보를 저장하는데 편리한 위치가 된다. 마지막으로, 페이지가 소거되기 전에 기록될 수 있는 횟수가 한정된다. 이러한 한계는 8회 또는 10회 정도로 비교적 낮으며, 그 이후, 사전 소거없이 이루어지는 기록은 더 이상 신뢰할 수 없게 된다. 따라서, 페이지-방식 메모리는 성공적인 데이터 저장 및 검색에 대해 새로운 도전을 주며 많은 장점을 내포하고 있다.
불행하게도, 상술한 바와 같이, 현재 이용 가능한 종래 기술의 데이터 처리 시스템, 즉, FFS 는 페이지-방식으로 플래시 메모리를 작동시키는데 많은 단점을 가진다. 특히, FFS는 NAND 및 AND등의 페이지-방식 플래시 기술에서 비-최적화된 수행을 보여주는데, 그 이유는, 페이지-방식 프로그래밍으로 인해 제한되기 때문이다. 더욱이, 미국 특허 제 5,479,638호에 개시된 시스템은 이러한 플래시 기술로 사용될 수 없는데, 이는, 블록-바이-블록 소거 동작에 대한 그 요구사항 때문이다.
그러므로, 기존의 장치, 즉, 비-페이지 방식 플래시 장치에서도 사용할 수 있고, 페이지-방식 플래시 기술로 최적으로 실행될 수 있는 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) 상기 가상 블록을 포함하는 가상 유닛을 배치시키는 단계, (g) 맵핑된 물리적인 유닛내의 기록 가능한 블록을 상기 가상 유닛에 배치시키는 단계 및, (h) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계를 더 포함한다. 보다 바람직하게는, 상기 방법은 (i) 기록된 물리적인 유닛내의 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 기록되지 않은 물리적인 유닛을 배치시키는 단계, (j) 상기 데이터를 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록에 기록하는 단계, (k)상기 가상 유닛을 상기 기록되지 않은 물리적인 유닛에 부가로 맵핑함으로 상기 가상 맵을 갱신하는 단계를 더 포함하며, 상기 가상 유닛은 상기 기록되지 않은 물리적인 유닛과 기록된 물리적인 유닛에 대응하며, 상기 기록되지 않은 물리적인 유닛과 기록된 물리적인 유닛은 물리적인 유닛의 체인을 형성한다. 가장 바람직하게는, 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록은 물리적인 블록 오프셋을 가지며, 상기 물리적인 블록 오프셋은 상기 맵핑된 가상 유닛의 가상 블록 오프셋에 대응한다. 또한, 가장 바람직하게는, (l) 기록된 물리적인 유닛내에 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 복수의 물리적인 유닛에 대응하는 제 2 가상 유닛을 체인내에 배치시키는 단계, (m) 상기 최종 물리적인 유닛을 상기 체인내에 배치시키는 단계, (n) 데이터를 상기 기록된 물리적인 유닛의 각각의 물리적인 블록으로부터 상기 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 이동하는 단계 및, (o) 상기 최종 물리적인 유닛에만 실질적으로 대응하는 상기 가상 유닛을 맵핑시킴으로 상기 가상 맵을 상기 최종 물리적인 유닛으로 갱신하는 단계를 더 포함하며, 상기 기록 가능한 물리적인 블록은 상기 기록된 물리적인 유닛의 물리적인 블록처럼 실질적으로 동일한 블록 오프셋을 가진다. 바람직하게는, 또한, 상기 방법은 (p) 상기 최종 물리적인 유닛을 제외하고, 상기 체인 내에 기록된 모든 물리적인 유닛을 실질적으로 소거하는 단계를 더 포함한다.
대안으로, 바람직하게는, 상기 방법은 (l) 기록되지 않은 어떠한 물리적인 유닛도 상기 체인에 대하여 할당용으로 이용될 수 없는 경우, 재구성하기 위해 기록되지 않은 물리적인 유닛을 할당하는 단계, (m) 데이터를 상기 기록된 물리적인 유닛의 물리적인 블록 각각으로부터 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록으로 이동시키는 단계 및, (n) 상기 기록되지 않은 물리적인 유닛에만 실질적으로 대응하는 상기 가상 유닛을 맵핑함으로써 상기 가상 맵을 상기 기록되지 않은 물리적인 유닛으로 갱신하는 단계를 더 포함한다. 보다 바람직하게는, 상기 방법은 (o) 상기 기록된 물리적인 유닛 모두를 소거하는 단계를 더 포함한다.
본 발명의 양호한 그 밖의 실시예에 따라, 상기 방법은 (i) 기록된 물리적인 유닛내의 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 물리적인 유닛의 체인을 형성하기 위해, 상기 체인내의 최종 물리적인 유닛이 되는 기록되지 않은 물리적인 유닛을 할당하는 단계, (j) 상기 데이터를 상기 최종 물리적인 유닛내의 기록되지 않은 물리적인 블록에 기록하는 단계, (k) 단계(J)에서 기록된 데이터를 제외한 데이터를 상기 물리적인 블록 각각으로부터 상기 기록되지 않은 물리적인 유닛의 기록가능한 물리적인 블록으로 이동시키는 단계 및, (m) 상기 기록된 물리적인 유닛에 대응하는 가상 유닛을 맵핑함으로써, 상기 가상 맵을 상기 기록된 물리적인 데이터 유닛으로 갱신하는 단계를 더 포함한다.
본 발명의 다른 실시예에 따라, (a) 각각 물리적인 유닛내에 물리적인 블록 오프셋을 갖는 복수의 물리적인 블록으로 분할되고 각각 물리적인 유닛 번호를 갖는 복수의 물리적인 유닛을 제공하는 단계, (b) 하나 이상의 물리적인 유닛에 맵핑되는 가상 유닛내에 각각 가상 블록 오프셋을 갖는 복수의 가상 블록으로 분할되고 각각 가상 유닛 번호를 갖는 복수의 가상 유닛을 제공하는 단계, (c) 가상 블록에 데이터를 기록하기 위해 기록 명력을 수신하는 단계, (d) 가상 블록 오프셋을 갖는 상기 가상 블록을 포함하는 가상 유닛을 결정하는 단계, (e) 상기 가상 유닛에 대응하는 물리적인 유닛을 배치하는 단계, (f) 상기 물리적인 유닛내에 물리적인 블록을 배치하는 단계, (g) 상기 물리적인 블록이 기록되지 않았는지의 여부를 결정하는 단계, (h) 상기 물리적인 블록이 기록되지 않았을 경우에만, 상기 데이터를 상기 물리적인 블록에 기록하는 단계, (i) 반대로, 상기 물리적인 블록이 기록되지 않은 상태가 아닌 경우, 기록되지 않은 물리적인 유닛을 할당하는 단계, (j) 물리적인 블록 오프셋을 갖는 기록 가능한 물리적인 블록을 상기 기록되지 않은 물리적인 유닛에 배치하는 단계, (k) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계 및, (l) 부가로, 상기 가상 유닛을 상기 기록 가능한 물리적인 블록을 포함하는 상기 기록되지 않은 물리적인 유닛에 맵핑하는 단계를 포함하며, 상기 가상 유닛은 물리적인 유닛의 체인을 형성하기 위해 상기 기록되지 않은 물리적인 유닛에 부가로 맵핑되는, 데이터를 메모리의 기록되지 않은 부분에만 기록할 수 있어서, 기록되지 않은 부분이 되기 위해 상기 메모리의 기록된 부분이 소거되어야하는 메모리를 위한 데이터 기록 방법을 제공한다. 바람직하게는, 상기 기록 가능한 물리적인 블록의 물리적인 블록 오프셋은 상기 가상 블록 오프셋처럼 동일한 블록 오프셋 번호를 가진다.
바람직하게는, 상기 방법은 (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)은 대응하는 물리적인 블록(14)을 물리적인 유닛(12)내에 배치한다.
맵핑의 대응관계가 도시된 바와 같이 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)은 비 대체된 가상 유닛의 실예가 된다.
가상 블록(28)의 구성은 특정한 가상 유닛(26)에 대응하는 물리적인 블록(14)의 수에 의존한다. 가상 유닛(30)에 대해, 어떤 가상 블록(28)은 주 유닛(32)내의 물리적인 블록(14)에 대응하며, 다른 가상 블록(28)은 대체 유닛(34)내의 물리적인 블록(14)에 대응한다. 가상 유닛(36)에 대하여, 실질적으로 모든 가상 블록(28)은 주 유닛(38)내의 물리적인 블록(14)에 대응한다.
가장 간단한 경우로, 가상 유닛은 비 대체된 유닛이며, 특정한 물리적인 블록(14)을 배치하기 위한 절차를 이하 설명한다. 가상 유닛(36)은 가상 유닛(36)을 지정하는 가상 유닛 번호(44)와 가상 블록(42)을 지정하는 가상 블록 오프셋(46)을 가진다. 가상 블록 오프셋(46) 또한 번호임을 알 수 있다. 물리적인 유닛 번호(50)는 주 유닛(36)을 지정한다. 물리적인 블록 오프셋(52)은 주 유닛(38)내의 물리적인 블록(54)을 지정한다. 데이터를 판독 또는 기록할 목적으로 물리적인 블록(54)을 배치하기 위해, 첫 번째 규칙은 가상 유닛 번호(44)를 결정하도록 가상 유닛 당 블록의 수에 의해 소망의 가상 블록 오프셋(46)을 분할하는 것이다. 그 뒤, 가상 맵(24)은 가상 유닛 번호(44)를 물리적인 유닛 번호(50)에 맵핑시킨다. 두 번째 규칙은, 물리적인 블록(54)의 경우에, 소망의 물리적인 블록(14)이 가상 블록 오프셋(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 는 간단하고도 합성의 대체(물리적인) 유닛을 사용한다. 간단한 대체 유닛은 실질적으로 물리적인 유닛의 물리적인 블록 오프셋 모두가 대응하는 가상 유닛의 가상 블록 오프셋에 직접적으로 상호관련된 유닛이다. 합성의 대체 유닛은, 가상 블록 오프셋과 물리적인 블록 오프셋사이의 직접적인 대응관계가 필수적으로 필요하지 않는 유닛이다. 그 대신, 대응하는 물리적인 블록 오프셋을 갖는 물리적인 블록이 기록용으로 이용될 수 없을 경우, 상이한 물리적인 블록이 선택된다. 그 뒤, 제어 정보는, 가상 블록과 물리적이 블록사이의 실질적인 대응관계를 결정하기 위해 제어 데이터 영역에 기록된다.
도 3b에 도시된 바와 같이, 주 유닛(97)은 간단한 대체 유닛(98)을 가지면, 이 유닛은 복수의 물리적인 블록(100)을 가지고, 이들은 각각 가상 유닛(104)내의 가상 블록(102)에 대응한다. 각각의 물리적인 블록 오프셋은 동일한 오프셋 번호인 가상 블록 오프셋에 대응한다.
그러나, 필요한 물리적인 블록 오프셋을 갖는 물리적인 블록을 이용할 수 없는 경우, 동일한 물리적인 유닛내의 상이한 물리적인 블록이 기록되어야 하며, 대체 유닛은 합성의 대체 유닛이 된다. 제 2 주 유닛(109)은 합성의 물리적인 유닛(100)을 가지면, 이 유닛(100)은 복수의 물리적인 블록(112)를 가지고, 이들 각각은 가상 유닛(116)내의 가상 블록(114)에 대응한다. 그러나, 하나의 물리적인 블록 오프셋은 동일한 오프셋 번호인 가상 블록 오프셋에 대응하는 반면, 제 2 물리적인 블록 오프셋이 동일한 오프셋 번호가 아닌 제 2 가상 블록 오프셋에 대응한다. 특정한 물리적인 블록을 찾기 위해, 제어 데이터 영역에 기록된 제어 정보가 조사되어야 한다. 후술되는 바와 같이, 이것은 데이터의 기록 및 필요시 FMAX 시스템의 인식에 대하여 중요한 결론이다.
도 4a는 도 3a의 가상 맵을 처리하기 위한 흐름도를 도시하고, 도 4b는 도 3b의 가상 맵을 처리하기 위한 흐름도를 도시한다. 가장 간단한 경우, 모든 대체 유닛은 간단한 유닛이나, 하나의 대체 유닛만을 갖는 주 유닛중 어느 하나이며, 동일한 단계가 AND 및 FMAX 모두에 대하여 사용될 수 있다. 먼저, 가상 유닛 번호와 가상 블록 오프셋은 배치될 가상 블록의 수를 가상 유닛 당 블록의 수로 분할함으로써, 그리고, 가상 유닛 번호를 부여함으로써 계산된다. 모듈로, 또는 분할 리마인더는 가상 블록 오프셋이된다.
다음, 가상 맵은 가상 유닛에 대응하는 물리적인 유닛을 찾기 위해 조사된다. 물리적인 유닛이 가상 유닛에 대응한다면, 물리적인 메모리의 요청된 부분이 플래시 장치에 존재하지 않는다. 상술한 바와 같이, 이 간단한 방식은 모든 대체 유닛이 간단한 유닛이거나, 주 유닛이 하나의 대체 유닛만을 가지는 경우에만 이루어진다. 그러나, 이 방식은, 데이터가 기록되어질 물리적인 블록이 이미 프로그래밍되거나 다른 데이터로 기록되는 경우에는 이루어지지 않는다. 이 경우, 대체 방식이 요구되며, 데이터가 기록될 수 있는 다른 물리적인 블록을 발견하는 작업을 처리할 수 있다.
도 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 (15)

  1. 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있으므로, 기록되지 않은 부분이 되기 위해 상기 메모리의 기록된 부분이 소거되어야 하며,
    데이터를 판독 또는 기록하는 메모리 부분의 크기가 소거용의 가장 작은 메모리 부분의 크기와 상이한 메모리를 위한 메모리 구성 방법에 있어서,
    (a) 각각 상기 소거용의 가장 작은 메모리 부분이 되며, 물리적 유닛 번호에 의해 지정되며, 각각 데이터의 판독 또는 기록용 메모리 부분이 되고 상기 물리적인 유닛내에서 물리적인 블록 오프셋에 의해 지정되는 복수의 물리적인 블록으로 분할되는, 상기 메모리의 복수의 물리적인 유닛을 제공하는 단계,
    (b) 각각 가상 유닛 번호에 의해 지정되며, 각각 상기 가상 유닛내에 가상 블록 오프셋에 의해 지정된 복수의 가상 블록의 특징을 이루는, 상기 메모리의 복수의 가상 유닛을 제공하는 단계,
    (c) 하나 이상의 물리적인 유닛에 각각의 가상 유닛을 맵핑하기 위한 가상 맵을 제공하는 단계 및,
    (d)상기 가상 유닛내의 각 가상 블록을 하나 이상의 물리적인 유닛내의 하나의 물리적인 블록에 맵핑시키는 단계를 포함하는 메모리 구성 방법.
  2. 제 1 항에 있어서,
    (e) 데이터를 가상 블록에 기록하기 위한 기록 명령을 수신하는 단계,
    (f) 상기 가상 블록을 포함하는 가상 유닛을 배치시키는 단계,
    (g) 맵핑된 물리적인 유닛내의 기록 가능한 블록을 상기 가상 유닛에 배치시키는 단계 및,
    (h) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계를 더 포함하는 메모리 구성 방법.
  3. 제 2 항에 있어서,
    (i) 기록된 물리적인 유닛내의 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 기록되지 않은 물리적인 유닛을 배치시키는 단계,
    (j) 상기 데이터를 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록에 기록하는 단계,
    (k)상기 가상 유닛을 상기 기록되지 않은 물리적인 유닛에 부가로 맵핑함으로 상기 가상 맵을 갱신하는 단계를 더 포함하며;
    상기 가상 유닛은 상기 기록되지 않은 물리적인 유닛과 기록된 물리적인 유닛에 대응하며,
    상기 기록되지 않은 물리적인 유닛과 기록된 물리적인 유닛은 물리적인 유닛의 체인을 형성하는 메모리 구성 방법.
  4. 제 3 항에 있어서,
    상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록은 물리적인 블록 오프셋을 가지며,
    상기 물리적인 블록 오프셋은 상기 맵핑된 가상 유닛의 가상 블록 오프셋에 대응하는 메모리 구성 방법.
  5. 제 3 항에 있어서,
    (l) 기록된 물리적인 유닛내에 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 복수의 물리적인 유닛에 대응하는 제 2 가상 유닛을 체인내에 배치시키는 단계,
    (m) 상기 최종 물리적인 유닛을 상기 체인내에 배치시키는 단계,
    (n) 데이터를 상기 기록된 물리적인 유닛의 각각의 물리적인 블록으로부터 상기 최종 물리적인 유닛의 기록 가능한 물리적인 블록으로 이동하는 단계 및,
    (o) 상기 최종 물리적인 유닛에만 실질적으로 대응하는 상기 가상 유닛을 맵핑시킴으로 상기 가상 맵을 상기 최종 물리적인 유닛으로 갱신하는 단계를 더 포함하며;
    상기 기록 가능한 물리적인 블록은 상기 기록된 물리적인 유닛의 물리적인 블록처럼 실질적으로 동일한 블록 오프셋을 가지는 메모리 구성 방법.
  6. 제 5 항에 있어서,
    (p) 상기 최종 물리적인 유닛을 제외하고, 상기 체인 내에 기록된 모든 물리적인 유닛을 실질적으로 소거하는 단계를 더 포함하는 메모리 구성 방법.
  7. 제 3 항에 있어서,
    (l) 기록되지 않은 어떠한 물리적인 유닛도 상기 체인에 대하여 할당용으로 이용될 수 없는 경우, 재구성하기 위해 기록되지 않은 물리적인 유닛을 할당하는 단계,
    (m) 데이터를 상기 기록된 물리적인 유닛의 물리적인 블록 각각으로부터 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록으로 이동시키는 단계 및,
    (n) 상기 기록되지 않은 물리적인 유닛에만 실질적으로 대응하는 상기 가상 유닛을 맵핑함으로써 상기 가상 맵을 상기 기록되지 않은 물리적인 유닛으로 갱신하는 단계를 더 포함하는 메모리 구성 방법.
  8. 제 7 항에 있어서,
    (o) 상기 기록된 물리적인 유닛 모두를 소거하는 단계를 더 포함하는 메모리 구성 방법.
  9. 제 2 항에 있어서,
    (i) 기록된 물리적인 유닛내의 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 물리적인 유닛의 체인을 형성하기 위해, 상기 체인내의 최종 물리적인 유닛이 되는 기록되지 않은 물리적인 유닛을 할당하는 단계,
    (j) 상기 데이터를 상기 최종 물리적인 유닛내의 기록되지 않은 물리적인 블록에 기록하는 단계,
    (k) 단계(J)에서 기록된 데이터를 제외한 데이터를 상기 물리적인 블록 각각으로부터 상기 기록되지 않은 물리적인 유닛의 기록 가능한 물리적인 블록으로 이동시키는 단계 및,
    (m) 상기 기록된 물리적인 유닛에 대응하는 가상 유닛을 맵핑함으로써, 상기 가상 맵을 상기 기록된 물리적인 데이터 유닛으로 갱신하는 단계를 더 포함하는 메모리 구성 방법.
  10. 메모리의 기록되지 않은 부분에만 데이터가 기록될 수 있으므로, 기록되지 않은 부분이 되기 위해 상기 메모리의 기록된 부분이 소거되어야 하는 메모리를 위한 데이터 기록 방법에 있어서,
    (a) 각각 물리적인 유닛내에 물리적인 블록 오프셋을 갖는 복수의 물리적인 블록으로 분할되고 각각 물리적인 유닛 번호를 갖는 복수의 물리적인 유닛을 제공하는 단계,
    (b) 하나 이상의 물리적인 유닛에 맵핑되는 가상 유닛내에 각각 가상 블록 오프셋을 갖는 복수의 가상 블록으로 분할되고 각각 가상 유닛 번호를 갖는 복수의 가상 유닛을 제공하는 단계,
    (c) 가상 블록에 데이터를 기록하기 위해 기록 명령을 수신하는 단계,
    (d) 가상 블록 오프셋을 갖는 상기 가상 블록을 포함하는 가상 유닛을 결정하는 단계,
    (e) 상기 가상 유닛에 대응하는 물리적인 유닛을 배치하는 단계,
    (f) 상기 물리적인 유닛내에 물리적인 블록을 배치하는 단계,
    (g) 상기 물리적인 블록이 기록되지 않았는지의 여부를 결정하는 단계,
    (h) 상기 물리적인 블록이 기록되지 않았을 경우에만, 상기 데이터를 상기 물리적인 블록에 기록하는 단계,
    (i) 반대로, 상기 물리적인 블록이 기록되지 않은 상태가 아닌 경우, 기록되지 않은 물리적인 유닛을 할당하는 단계,
    (j) 물리적인 블록 오프셋을 갖는 기록 가능한 물리적인 블록을 상기 기록되지 않은 물리적인 유닛에 배치하는 단계,
    (k) 상기 데이터를 상기 기록 가능한 물리적인 블록에 기록하는 단계 및,
    (l) 부가로, 상기 가상 유닛을 상기 기록 가능한 물리적인 블록을 포함하는 상기 기록되지 않은 물리적인 유닛에 맵핑하는 단계를 포함하며;
    상기 가상 유닛은 물리적인 유닛의 체인을 형성하기 위해 상기 기록되지 않은 물리적인 유닛에 부가로 맵핑되는 데이터 기록 방법.
  11. 제 10 항에 있어서,
    상기 기록 가능한 물리적인 블록의 물리적인 블록 오프셋은 상기 가상 블록 오프셋처럼 동일한 블록 오프셋 번호를 갖는 데이터 기록 방법.
  12. 제 10 항에 있어서,
    (m) 기록된 물리적인 유닛내의 기록되지 않은 물리적인 블록이 배치될 수 없는 경우, 복수의 물리적인 유닛에 대응하는 제 2 가상 유닛을 체인내에 배치하는 단계,
    (n) 상기 최종 물리적인 유닛을 상기 체인내에 배치하는 단계,
    (o) 상기 기록된 물리적인 유닛의 물리적인 블록내의 모든 데이터를 상기 최종 물리적인 유닛의 물리적인 불록에 전송하는 단계 및,
    (p) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하는 상기 가상 맵을 갱신하는 단계를 더 포함하는 데이터 기록 방법.
  13. 제 12 항에 있어서,
    (q) 상기 기록된 물리적인 유닛 모두를 소거하는 단계를 더 포함하는 데이터 기록 방법.
  14. 제 10 항에 있어서,
    (l) 기록되지 않은 어떠한 물리적인 유닛도 할당용으로 이용될 수 없는 경우, 최종 물리적인 유닛을 상기 체인내에 배치하는 단계,
    (m) 상기 기록된 물리적인 유닛의 물리적인 블록내의 모든 데이터를 상기 최종 물리적인 유닛의 물리적인 블록으로 전송하는 단계 및
    (n) 상기 가상 유닛이 상기 최종 물리적인 유닛에만 대응하는 상기 가상 맵을 갱신하는 단계를 더 포함하는 데이터 기록 방법.
  15. 제 14 항에 있어서,
    (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 1997-10-16
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

Publications (2)

Publication Number Publication Date
KR20010031157A true KR20010031157A (ko) 2001-04-16
KR100495722B1 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100597411B1 (ko) * 2004-08-04 2006-07-05 삼성전자주식회사 파일의 효율적인 데이터 관리를 위한 방법 및 장치

Families Citing this family (279)

* 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
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
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
US8171203B2 (en) 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
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
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
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
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6883114B2 (en) * 2001-11-08 2005-04-19 M-Systems Flash Disk Pioneers Ltd. Block device driver enabling a ruggedized file system
US6668336B2 (en) * 2001-11-08 2003-12-23 M-Systems Flash Disk Pioneers Ltd. Ruggedized block device driver
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
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
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
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 지인정보기술 주식회사 멀티-플레인 구조의 플래시 메모리 관리 방법
US7174440B2 (en) * 2002-10-28 2007-02-06 Sandisk Corporation Method and apparatus for performing block caching in a non-volatile memory system
US7254668B1 (en) * 2002-10-28 2007-08-07 Sandisk Corporation Method and apparatus for grouping pages within a block
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
EP1659497A4 (en) 2003-08-29 2008-01-23 Matsushita Electric Ind Co Ltd NON-VOLATILE MEMORY BLOCK AND WRITING PROCESS THEREFOR
US7188228B1 (en) 2003-10-01 2007-03-06 Sandisk Corporation Hybrid mapping implementation within a non-volatile memory system
US7173852B2 (en) * 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7012835B2 (en) 2003-10-03 2006-03-14 Sandisk Corporation Flash memory data correction and scrub techniques
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 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
KR100526188B1 (ko) * 2003-12-30 2005-11-04 삼성전자주식회사 플래시 메모리의 주소 사상 방법, 사상 정보 관리 방법 및상기 방법을 이용한 플래시 메모리
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
JP4284200B2 (ja) * 2004-01-28 2009-06-24 株式会社東芝 不揮発性半導体記憶システム
US8019928B2 (en) * 2004-02-15 2011-09-13 Sandisk Il Ltd. Method of managing a multi-bit-cell flash memory
US7716413B2 (en) * 2004-02-15 2010-05-11 Sandisk Il Ltd. Method of making 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
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
CN100353341C (zh) * 2004-04-30 2007-12-05 联发科技股份有限公司 可循序写入数据至闪存中的系统及其方法
US7761863B2 (en) * 2004-06-08 2010-07-20 Covia Labs, Inc. Method system and data structure for content renditioning adaptation and interoperability segmentation model
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
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
EP1797645B1 (en) * 2004-08-30 2018-08-01 Google LLC 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
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
US7395404B2 (en) 2004-12-16 2008-07-01 Sandisk Corporation Cluster auto-alignment for storing addressable data packets in a non-volatile memory array
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
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques 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
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
KR20080007430A (ko) * 2005-02-11 2008-01-21 샌디스크 아이엘 엘티디 Nand 플래시 메모리 시스템 체계
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
US8505075B2 (en) * 2005-07-14 2013-08-06 Marble Security, Inc. Enterprise device recovery
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
US7949845B2 (en) * 2005-08-03 2011-05-24 Sandisk Corporation Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7552271B2 (en) * 2005-08-03 2009-06-23 Sandisk Corporation Nonvolatile memory with block management
US7984084B2 (en) * 2005-08-03 2011-07-19 SanDisk Technologies, Inc. Non-volatile memory with scheduled reclaim operations
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
US7669003B2 (en) * 2005-08-03 2010-02-23 Sandisk Corporation Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7558906B2 (en) * 2005-08-03 2009-07-07 Sandisk Corporation Methods of managing blocks in nonvolatile memory
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
US20070076502A1 (en) * 2005-09-30 2007-04-05 Pyeon Hong B Daisy chain cascading devices
WO2007036050A1 (en) * 2005-09-30 2007-04-05 Mosaid Technologies Incorporated Memory with output control
US20070165457A1 (en) * 2005-09-30 2007-07-19 Jin-Ki Kim Nonvolatile memory system
US11948629B2 (en) 2005-09-30 2024-04-02 Mosaid Technologies Incorporated Non-volatile memory device with concurrent bank operations
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
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
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
US7793068B2 (en) 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US8639873B1 (en) 2005-12-22 2014-01-28 Imation Corp. Detachable storage device with RAM cache
US8266378B1 (en) 2005-12-22 2012-09-11 Imation Corp. Storage device with accessible partitions
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
US8364861B2 (en) * 2006-03-28 2013-01-29 Mosaid Technologies Incorporated Asynchronous ID generation
US8335868B2 (en) * 2006-03-28 2012-12-18 Mosaid Technologies Incorporated Apparatus and method for establishing device identifiers for serially interconnected devices
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
US7802064B2 (en) * 2006-03-31 2010-09-21 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
US20080046630A1 (en) * 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
US20080046641A1 (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
US8271758B2 (en) * 2006-12-06 2012-09-18 Mosaid Technologies Incorporated Apparatus and method for producing IDS for interconnected devices of mixed type
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
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
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
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
US7769945B2 (en) 2007-01-18 2010-08-03 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
WO2008098342A1 (en) * 2007-02-16 2008-08-21 Mosaid Technologies Incorporated Semiconductor device and method for reducing power consumption in a system having interconnected devices
US8095723B2 (en) * 2007-02-16 2012-01-10 Electronics And Telecommunications Research Institute Log-based flash translation layer and operating method thereof
US8086785B2 (en) * 2007-02-22 2011-12-27 Mosaid Technologies Incorporated System and method of page buffer operation for memory devices
US7796462B2 (en) 2007-02-22 2010-09-14 Mosaid Technologies Incorporated Data flow control in multiple independent port
US8046527B2 (en) 2007-02-22 2011-10-25 Mosaid Technologies Incorporated Apparatus and method for using a page buffer of a memory device as a temporary cache
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
US7573773B2 (en) * 2007-03-28 2009-08-11 Sandisk Corporation Flash memory with data refresh triggered by controlled scrub data reads
US7477547B2 (en) * 2007-03-28 2009-01-13 Sandisk Corporation Flash memory refresh techniques 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
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
US8065469B2 (en) * 2009-04-20 2011-11-22 Imation Corp. Static wear leveling
US8176295B2 (en) * 2009-04-20 2012-05-08 Imation Corp. Logical-to-physical address translation for a removable data storage device
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
US8595411B2 (en) 2009-12-30 2013-11-26 Sandisk Technologies Inc. Method and controller for performing a sequence of commands
US8443263B2 (en) * 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
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
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
US9251064B2 (en) 2014-01-08 2016-02-02 Netapp, Inc. NVRAM caching and logging in a storage system
US9152330B2 (en) 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9483349B2 (en) 2014-01-17 2016-11-01 Netapp, Inc. Clustered raid data organization
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
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
US9501359B2 (en) 2014-09-10 2016-11-22 Netapp, Inc. Reconstruction of dense tree volume metadata state across crash recovery
US9524103B2 (en) 2014-09-10 2016-12-20 Netapp, Inc. Technique for quantifying logical space trapped in an extent store
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
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
US10649890B2 (en) 2015-04-28 2020-05-12 Nec Corporation Information processing system, storage control apparatus, storage control method, and storage control program
JP6691669B2 (ja) 2015-07-06 2020-05-13 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
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
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
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
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
US10229009B2 (en) 2015-12-16 2019-03-12 Netapp, Inc. Optimized file system layout for distributed consensus protocol
US10489346B2 (en) 2015-12-16 2019-11-26 Netapp, Inc. Atomic update of B-tree in a persistent memory-based file system
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 内田工業株式会社 複合遊具

Family Cites Families (8)

* 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
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5479638A (en) * 1993-03-26 1995-12-26 Cirrus Logic, Inc. Flash memory mass storage architecture incorporation wear leveling technique
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100597411B1 (ko) * 2004-08-04 2006-07-05 삼성전자주식회사 파일의 효율적인 데이터 관리를 위한 방법 및 장치

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100495722B1 (ko) 개선된 플래시 파일 시스템
JP4155463B2 (ja) 順次書き込みのみを用いるフラッシュ管理システムを有するシステム、及びその方法
EP1410399B1 (en) Method and apparatus for decreasing block write operation times performed on nonvolatile memory
US7610434B2 (en) File recording apparatus
US9489301B2 (en) Memory systems
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US6591330B2 (en) System and method for flexible flash file
US7752412B2 (en) Methods of managing file allocation table information
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US7681008B2 (en) Systems for managing file allocation table information
KR101329068B1 (ko) 블록 관리를 가지는 비휘발성 메모리
US20070113029A1 (en) Structures for the management of erase operations in non-volatile memories
US20070113030A1 (en) Methods for the management of erase operations in non-volatile memories
TW200417856A (en) Method and apparatus for splitting a logical block
KR20070060070A (ko) 최적화된 순차적인 클러스터 관리용 에프에이티 분석
EP1228510A1 (en) Space management for managing high capacity nonvolatile memory
JP2009503729A (ja) 論理アドレス空間と直接データファイル方式で動作するインターフェイスシステム
JP2009503740A (ja) データファイルを直接記憶する再プログラム可能な不揮発性メモリ内のファイルデータの索引付け
KR20020092261A (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
WO2008042594A1 (en) Managing file allocation table information

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