KR101286477B1 - 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템 - Google Patents

플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템 Download PDF

Info

Publication number
KR101286477B1
KR101286477B1 KR1020077028410A KR20077028410A KR101286477B1 KR 101286477 B1 KR101286477 B1 KR 101286477B1 KR 1020077028410 A KR1020077028410 A KR 1020077028410A KR 20077028410 A KR20077028410 A KR 20077028410A KR 101286477 B1 KR101286477 B1 KR 101286477B1
Authority
KR
South Korea
Prior art keywords
flash memory
flash
event
management table
memory system
Prior art date
Application number
KR1020077028410A
Other languages
English (en)
Other versions
KR20080009314A (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 KR20080009314A publication Critical patent/KR20080009314A/ko
Application granted granted Critical
Publication of KR101286477B1 publication Critical patent/KR101286477B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering

Landscapes

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

Abstract

플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하기 위한 방법, 시스템, 및 컴퓨터-판독가능한 코드가 개시된다. 이벤트 로그는 물론 적어도 하나의 플래시 관리 테이블이 모두 플래시 메모리 내에 유지된다. 적어도 하나의 시점에 대하여, 최근 저장된 플래시 관리 테이블이 플래시 메모리 시스템의 이전 상태를 나타내고, 한편, 이전 상태보다 최근인 적어도 하나의 이벤트가 이벤트 로그에 저장된다. 전원을 켜는 동안, 플래시 관리 테이블은 플래시 메모리로부터 복구된다. 플래시 관리 테이블의 최근 이벤트가 이벤트 로그의 최근 이벤트 보다 이전 것이면, 이벤트는 플래시 관리 테이블을 업데이트하기 위해 이벤트 로그로부터 복구된다. 선택적으로, 업데이트된 플래시 관리 테이블은 플래시 메모리에 저장된다.
플래시 메모리 시스템, 플래시 관리 소프트웨어, 컴퓨터 판독가능한 저장 매체, 플래시 메모리, 플래시 관리 테이블, 이벤트, 이벤트 로그.

Description

플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법 및 시스템{A METHOD AND SYSTEM FOR FACILITATING FAST WAKE-UP OF A FLASH MEMORY SYSTEM}
본 발명은 플래시 메모리 관리 시스템의 웨이크-업을 용이하게 하기 위해 유용한 데이터 구조를 보유한 방법 및 시스템에 관한 것이다.
"Method For Fast Wake-Up of a Flash Memory System"이란 제목의 Lasser의 미국특허 제6,510,488호는 플래시 시스템 소프트웨어가 스트래치를 통해 생성하는데 시간이 많이 걸리는 관리 테이블에 의존하는 경우에도, 플래시 메모리 시스템이 플래시 메모리 시스템의 전원을 킨 후 고속 웨이크-업 시간을 달성할 수 있게 하는 방법 및 시스템을 개시한다. 이러한 고속 웨이크-업 시간은 데이터 무결성을 희생시키지 않고 달성된다. Lasser의 상술된 특허는 참조를 위해 본 명세서에 그 전체가 통합되었다.
Lasser에 서술된 바와 같이, 컴퓨터 데이터 저장을 위해 플래시 메모리 디바이스를 사용하는 것은 전통적으로 호스트 컴퓨터의 운영체제와 디바이스 로우-레벨 액세스 루틴 사이에 놓인 몇몇 소프트웨어 번역 레이어를 필요로 한다. 이것이 플래시 기술이 가진 사용 제한이고, 단순한 랜덤-액세스 선형 방법으로 그것을 액세스할 수 없게 한다. 이러한 제한 중 하나는 임의의 원하는 메모리 위치에 랜덤하 게 덮어 쓰기하는 것이 불가능하다는 것이다. 그러므로, 플래시 메모리 위치에 새로운 컨텐츠를 기록하는 것은 그 위치를 포함하는 (임의의 다른 위치의 컨텐츠를 여전히 보존할 필요가 있음에도) 전체 블록을 먼저 삭제할 것을 요구할 것이고, 그 다음에만 새로운 컨텐츠를 기록할 수 있다.
번역 레이어는 호스팅 운영체제의 독립적인 데이터 섹터의 랜덤-액세스 어드레싱 가능한 어레이의 가상 뷰에 존재하고, 그들의 가상 어드레스를 플래시 매체 내의 그들의 실제 위치로 매핑하는 것을 숨기고 처리한다. 이러한 번역 메카니즘은 흔한 것이 아니고, 이러한 플래시 메모리 번역 층의 예는 본 명세서에 그 전체가 통합된 Amir Ban의 미국특허 제5,937,425호에 개시되어 있다. Ban은 가상 및 물리 플래시 어드레스 사이에 매핑 메카니즘을 구현하는 방법을 개시한다. 이러한 시스템의 다른 예는 미국특허 제6,678,785호에 상세하게 서술되어 있고, 그 전체가 본 명세서에 통합되어 있다.
번역 프로세스는 호스트 컴퓨터 데이터 액세스 요청을 실제 플래시 액세스 요청으로 변환하기 위해 요구되는 정보를 플래시 시스템 소프트웨어에 제공하는 내부 번역 테이블에 의존한다. 이러한 번역 테이블은 플래시 디바이스 내에 저장된 컨트롤 정보를 기초로, 시스템이 웨이크 업하는 동안(또는 호스팅 소프트웨어에 의해 요청된다면 이후 시간에) 소프트웨어에 의해 구성된다. 이러한 테이블을 구성하지 않고, 그 대신 플래시로부터의 미가공(raw) 컨트롤 데이터만을 사용하는 것이 이론적으로는 가능하지만, 이것은 액세스 요청에 대한 응답 시간이 너무 느리기 때문에 실제로 사용할 수 없다. 이것은 플래시 상에서의 데이터 액세스가 일반적인 컴퓨터 RAM 메모리에서의 데이터 액세스보다 훨씬 더 느리기 때문이고, 통상적으로 플래시-저장된 컨트롤 데이터가 아니라 메모리 테이블이 실행시간 동안 요구되는 오퍼레이션 타입의 효율성을 위해 최적화되기 때문이다.
예를 들어, 플래시 물리 유닛은 그것에 매핑된 다수의 가상 유닛을 포함할 수 있다. 프로그램 실행 동안, 우리는 가상 유닛 넘버를 그것의 물리 대응부로 번역하는 것이 빈번하게 필요할 것이다. 우리가 플래시-저장된 컨트롤 데이터에만 의존해야 한다면, 우리는 특정 가상 유닛 넘버를 찾을 때까지 모든 유닛을 스캔해야 할 것이고, 이는 단순한 매체 액세스의 표준에 의한 매우 긴 프로세스이다. 그러나, 시스템 웨이크-업 시에 한번 플래시 디바이스를 스캐닝하고, 각각의 가상 유닛 넘버를 대응하는 물리 유닛 넘버에 매핑하는 테이블을 구성함으로써, 이후의 이러한 매핑은 매우 효율적으로 수행할 수 있다.
시스템 웨이크-업 시에 플래시 데이터 저장 디바이스를 스캐닝하는 것의 문제점은, 특히 대용량 디바이스에 대하여, 긴 시간이 걸릴 수 있다는 것이다. 이것은 사용자가 즉시 턴-온을 기대하는 디바이스 및 시스템(즉, 셀룰러 폰, PDAs 등)에 대하여 특히 성가신 것이다. 플래시 내에 테이블을 간단하게 저장하는 것은 사용자에 의해 변경할 수 없는, 컴퓨터 실행가능한 코드만 저장하는 플래시 디바이스와 같은, 판독 전용 디바이스에 대하여 작동할 수 있다. 그러나, 단지 플래시 내에 테이블을 저장하는 것은 (PDA 내의 텍스트 파일 또는 스프레드 시트와 같은) 빈번하게 변경될 수 있는 데이터를 저장하기 위해 사용되는 디바이스를 사용할 때에 성공적이지 않을 것이다. 이것은 그 디바이스에 계속해서 기록하고 그것의 컨텐츠 를 변경할 때, 번역 테이블의 컨텐츠 또한 변하기 때문이다. 이로 이한 오버헤드가 시스템을 상당히 느리게 할 것이기 때문에, 메모리에서 변할 때마다 플래시 내의 테이블의 카피를 업데이트하는 것은 실용적이지 못하다. 결과적으로, 플래시에 저장된 테이블과 메모리 내의 "정확한" 테이블 사이의 차이는 누적될 것이다. 지금, 이 테이블을 업데이트하지 않고 사용자가 파워 오프 스위치를 누르고, 다시 턴 온하면, 그 소프트웨어는 플래시로부터 잘못된 번역 테이블을 읽을 것이고, 그 결과 새로운 데이터를 기록할 때 데이터가 손실될 수 있다.
Lasser에 서술된 몇몇 실시예에 따라, 이러한 문제점은 플래시에 번역 테이블을 저장하고, 그것을 판독할 때마다 검출가능한 방법으로 번역 테이블을 무효화하는 소프트웨어에 대한 몇몇 수단을 추가함으로써 해결될 수 있다. 가능한 구현(유일한 구현은 아니다)은 모든 엔트리의 합이 몇몇 고정된 알고 있는 값과 동일하게 하는 체크썸 값을 더하는 것, 또는 저장된 테이블에 검증 플래그를 더하는 것을 포함한다. 부가적으로, 시스템을 종료하기 전에 번역 레이어에서 특수 함수를 호출하도록 어플리케이션 소프트웨어에 요청해야 한다.
이러한 방법으로, 플래시 메모리 디바이스는 시스템이 정상적으로 종료될 때 고속 웨이크-업을 개시하고, 시스템이 비정상적으로 종료될 때 일반적인 웨이크-업으로 되돌아갈 수 있다.
이러한 솔루션이 많은 경우에 대하여 유용하지만, 이러한 솔루션이 적합하지 못한 상황이 있다. 이 솔루션이 적합하지 않은 제1예는 갑작스런 정전이 빈번하여, 다수의(또는 거의 대부분의) 전원 킴 이벤트가 무효의 저장된 테이블을 만날 것이고, 느린 일반적인 웨이크-업을 야기할 것이 예상되는 것이다.
이 솔루션이 적합하지 않은 제2예는 플래시 메모리 시스템을 호스팅하는 어플리언스의 운영체제가 정상적인 디스마운팅 또는 종료에 대한 서비스를 가진 소프트웨어 어플리케이션을 제공하지 않는 것이다. 리눅스와 같은 복잡한 운영체제는 이러한 서비스를 제공하지만, 전원을 킬 때 저장 시스템을 스타트-업하고, 그것을 종료하지 않도록 설계된 많은 더 단순하고 작은 운영체제들이 있다. 이러한 경우에, Lasser의 방법은 매번 플래시 관리 시스템의 일반적인 웨이크-업을 하는 시스템의 파워-업을 야기할 것이고, 이 방법의 아무런 이득도 얻지 못한다.
이 솔루션이 적합하지 않은 제3예는 시스템 전원을 키는 것과 그것을 오퍼레이션을 위한 준비 사이의 시간 인터벌 길이에 엄격한 제한이 있는 것이다. 정전이 드물고, 거의 모든 파워-업 경우가 플래시 관리 시스템의 고속 웨이크-업을 야기한다 하더라도, 그것의 발생 빈도에 무관하게, 정전 이후 일반적인 파워-업 시퀀스를 일으키는 것은 여전히 받아들일 수 없다.
본 명세서의 목적을 위해, 용어 "블록"은 단일 오퍼레이션으로 삭제될 수 있는 플래시 메모리의 최소 단위로 정의된다. 용어 "페이지"는 단일 오퍼레이션으로 기록될("프로그래밍된"이라고도 함) 수 있는 플래시 메모리의 최소 단위로 정의된다. 전형적으로 블록은 다수의 페이지를 포함한다.
본 명세서의 목적을 위해, 용어 "플래시 관리 시스템" 및 "플래시 파일 시스템"은 동의어이고, 상호치환적으로 사용될 수 있다. 이러한 용어 각각은 그 모듈에 의해 익스포트되는 인터페이스가 ("open file" 또는 "write file"과 같은 커맨 드를 가진) 파일-지향인지, 또는 ("read block" 또는 "write block"과 같은 커맨드를 가진) 블록-지향인지에 관계없이, 그리고 소프트웨어 모듈이 플래시 관리에 대한 전용 컨트롤러 상에서 실행하는지, 또는 저장 시스템을 사용하는 어플리케이션이 실행되는 동일한 호스트 컴퓨터 상에서 실행하는지에 관계없이, 플래시 메모리 디바이스 내의 데이터의 저장을 관리하는 소프트웨어 모듈을 의미한다.
그러므로, 플래시 데이터 구조의 무결성을 손상시키지 않고, 플래시 메모리 시스템의 고속 웨이크-업을 항상 보장할 수 있는 시스템 및 방법에 대한 장점 및 필요성이 널리 인식되어 있다.
몇몇 또는 모든 상술한 필요성, 및 다른 필요성이 본 발명의 몇몇 형태에 의해 충족될 수 있다.
본 발명자는 지금부터 하나 이상의 플래시 관리 테이블이 플래시 메모리 시스템의 모든 이벤트 후가 아니라, 몇 개의 이벤트 후에 비휘발성 플래시 메모리 내에 저장되고 업데이트되는 기술을 개시한다. 웨이크 업할 때, 그것은 비휘발성 플래시 내에 저장된 주어진 플래시 관리 테이블이 만료된(out-of-date) 정보를 가지고 있는 것으로 판정되면, 시스템 웨이크 업을 용이하게 하기 위해 저장된 테이블을 사용하는 것이 여전히 가능하고, 만료된 테이블을 무효화할 필요는 없다. 이 테이블을 무효화시키는 대신, 웨이크 업할 때, 종료 및/또는 정전 전에 플래시 메모리에 저장된 만료된 플래시 메모리 테이블은 "적합한" 테이블(즉, 시스템의 현재 상태를 반영한)을 재구성하기 위해 사용된다. 특정 실시예에서, 이것은 플래시 메모리에 이벤트 로그를 동시에 유지함으로써 수행되고, 웨이크 업 할 때, 이벤트 로그에 저장된 데이터는 플래시 메모리 테이블을 업데이트하고, 그러므로 정전 또는 종료 전에 정상적으로 빠져나가지 않았다 하더라도 데이터 무결성을 유지하기 위해 사용될 수 있다. 특정 실시예에서, 플래시 메모리에 저장된 "만료된" 테이블로부터 "최신의" 테이블을 유도하는 것은 플래시 저장 디바이스를 스캔함으로써 최신의 테이블을 구성하는 것보다 더 빠를 수 있다.
지금부터, 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법이 먼저 서술된다. 본 방법은 (a) 그것의 컨텐츠가 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 플래시 메모리 내에 유지하는 단계; (b) i) 가장 최근에 저장된 상기 적어도 하나의 플래시 관리 테이블이 상기 플래시 메모리 시스템의 이전 상태를 나타낼 때, 및 ii) 상기 이전 상태보다 더 최근인 적어도 하나의 이벤트가 상기 이벤트 로그에 저장된 때, 중 적어도 한 시점에 대한 이벤트 로그를 상기 플래시 메모리에 유지하는 단계를 포함한다.
몇몇 실시예에 따라, 상기 적어도 하나의 시점 동안, 최근 이벤트가 이벤트 로그에 저장된다.
몇몇 실시예에 따라, 상기 적어도 하나의 시점 동안, 플래시 메모리 시스템의 현재 상태가 저장된 이벤트 로그의 컨텐츠에 의해 반영되고, 적어도 하나의 플래시 관리 테이블에 저장된다. 이러한 피처는 업데이트된 플래시 관리 테이블이, 예컨대, 웨이크 업할 때보다 이후에 구성될 수 있도록, 데이터 무결성을 유지하는데 유용할 수 있다.
몇몇 실시예에 따라, 본 방법은 (c) 이전 상태를 나타내는 적어도 하나의 테이블로부터, 그리고 이벤트 로그로부터 플래시 메모리 시스템의 보다 현재 상태를 나타내는 적어도 하나의 테이블을 생성하는 단계를 더 포함한다.
몇몇 실시예에 따라, 상기 보다 현재 상태는 생성 시점에서 플래시 메모리 시스템의 가장 현재 상태이다.
몇몇 실시예에 따라, 생성하는 단계는 웨이크 업할 때 유효화된다.
몇몇 실시예에 따라, 적어도 하나의 관리 테이블을 유지하는 단계는, 상기 적어도 하나의 시점과 상이한 시점에, 적어도 하나의 플래시 관리 테이블과 이벤트 로그의 가장 최근에 기록된 이벤트를 동기시키는 단계를 포함한다.
몇몇 실시예에 따라, 플래시 메모리 내에 적어도 하나의 플래시 관리 테이블을 유지하는 단계는 적어도 하나의 플래시 관리 테이블과 현재 상태를 플래시 메모리 내에서 주기적으로 동기시키는 단계를 포함한다.
몇몇 실시예에 따라, 플래시 메모리 내에 적어도 하나의 플래시 관리 테이블을 유지하는 단계는, 플래시 메모리 시스템의 상태가 N번 변경할 때마다, 적어도 하나의 플래시 관리 테이블과 현재 상태를 플래시 메모리 내에서 동기시키는 단계를 포함하고, 여기서, N>=2이다.
몇몇 실시예에 따라, 플래시 메모리 내에 적어도 하나의 플래시 관리 테이블을 유지하는 단계는 i) 제1의 소정 타입의 상태 변경 발생 시, 적어도 하나의 플래시 관리 테이블과 현재 상태를 플래시 메모리 내에서 동기시키는 단계; 및 ii)제2의 소정 타입의 상태 변경 발생 시, 적어도 하나의 플래시 관리 테이블과 현재 상태를 플래시 메모리 내에서 동기시키지 않는 단계를 포함한다.
몇몇 실시예에 따라, 적어도 하나의 플래시 관리 테이블이 플래시 메모리 내에서 업데이트되는 주기는 플래시 메모리 시스템 리소스의 성능에 따라 결정된다.
몇몇 실시예에 따라, 적어도 하나의 플래시 관리 테이블은 가상 블록 넘버를 물리 블록 넘버에 매핑하는 번역 테이블을 포함한다.
몇몇 실시예에 따라, 적어도 하나의 플래시 관리 테이블은 프리 블록 테이블(free block table)을 포함한다.
몇몇 실시예에 따라, 상기 유지하는 단계는 플래시 메모리 내에 복수의 플래시 관리 테이블을 유지하는 단계를 포함한다.
몇몇 실시예에 따라, 플래시 메모리 내에 이벤트 로그를 유지하는 단계는 플래시 메모리의 고속 기록 모드를 사용하여 플래시 메모리에 데이터를 기록하는 단계를 포함한다.
몇몇 실시예에 따라, 플래시 메모리는 MLC 및 SLC 모드를 모두 제공하고, 이벤트 로그를 플래시 메모리 내에 유지하는 단계는 SLC 모드를 사용하여 수행된다.
몇몇 실시예에 따라, 이벤트 로그를 유지하는 단계는 플래시 메모리 시스템의 캐싱 오퍼레이션의 일부로서 수행된다.
지금부터, 플래시 메모리 시스템에서 웨이크 업하는 방법이 처음 개시된다. 본 방법은 I)웨이크 업할 때, (a) 플래시 메모리 시스템의 상태를 기록하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하는 단계; (b) 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트를 플래시 메모리로부터 판독하는 단계; (c) 이벤트 로그 내에 저장된 적어도 하나의 이벤트에 대하여, 적어도 하나의 이벤트에 의해 유효화된 변경에 따라 적어도 하나의 플래시 관리 테이블을 업데이트하는 단계를 포함한다.
몇몇 실시예에 따라, 상기 업데이트하는 단계는 적어도 하나의 플래시 관리 테이블이 이벤트 로그의 가장 최근의 이벤트에 따라 업데이트될 때까지 반복된다.
몇몇 실시예에 따라, 적어도 하나의 플래시 관리 테이블은 가상 블록 넘버를 물리 블록 넘버에 매핑하는 번역 테이블을 포함한다.
몇몇 실시예에 따라, 적어도 하나의 플래시 관리 테이블은 프리 블록 테이블을 포함한다.
몇몇 실시예에 따라, 플래시 메모리로부터 복수의 플래시 관리 테이블이 판독되고 업데이트된다.
지금부터, 플래시 메모리 시스템으로서, (a) 데이터를 저장하기 위한 플래시 메모리; 및 (b) 플래시 메모리에 액세스하기 위해 사용되는 데이터 구조를 유지하는 플래시 관리 소프트웨어를 포함하고, 상기 플래시 관리 소프트웨어는 i) 그 컨텐츠가 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 플래시 메모리 내에 유지하고; ii) I) 가장 최근에 저장된 적어도 하나의 플래시 관리 테이블이 플래시 메모리 시스템의 이전 상태를 나타내는 시점; 및 II) 이전 상태보다 더 최근의 적어도 하나의 이벤트가 이벤트 로그에 저장된 시점 중 적어도 하나의 시점에 대하여, 이벤트 로그를 플래시 메모리 내에 유지하도록 동작하는 플래시 메모리 시스템이 처음으로 개시된다.
지금부터, 플래시 메모리 시스템으로서, a) 데이터를 저장하는 플래시 메모리; 및 b) 상기 플래시 메모리에 액세스하기 위해 사용되는 적어도 하나의 데이터 구조를 유지하기 위한 플래시 관리 소프트웨어를 포함하고, 웨이크 업할 때, 상기 플래시 관리 소프트웨어는 i) 상기 플래시 메모리 시스템의 상태를 기술하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하고, ii) 상기 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트 로그를 상기 플래시 메모리로부터 판독하고, 그리고 iii) 상기 이벤트 로그에 저장된 적어도 하나의 이벤트에 대하여, 상기 적어도 하나의 이벤트에 의해 유효화된 변화에 따라 상기 적어도 하나의 플래시 관리 테이블을 업데이트하도록 동작하는 플래시 메모리 시스템이 처음으로 개시된다.
지금부터, 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체로서, 상기 컴퓨터 판독가능한 코드는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하기 위한 명령어를 포함하고, 상기 명령어는 a) 그것의 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 상기 플래시 메모리 내에 유지하고, 그리고 b) i) 가장 최근에 저장된 상기 적어도 하나의 플래시 관리 테이블이 상기 플래시 메모리 시스템의 이전 상태를 나타낼 때; 및 ii) 상기 이전 상태보다 더 최근인 적어도 하나의 이벤트가 상기 이벤트 로그에 저장된 때, 중 적어도 한 시점에 대한 이벤트 로그를 상기 플래시 메모리에 유지하도록 하는 명령어를 포함하는 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체가 처음 개시된다.
지금부터, 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체로서, 상기 컴퓨터 판독가능한 코드는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하기 위한 명령어를 포함하고, 상기 명령어는 I) 웨이크 업 할 때, a) 상기 플래시 메모리 시스템의 상태를 기술하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하고, b) 상기 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트 로그를 상기 플래시 메모리로부터 판독하고, 그리고 c) 상기 이벤트 로그에 저장된 적어도 하나의 이벤트에 대하여, 상기 적어도 하나의 이벤트에 의해 유효화된 변화에 따라 상기 적어도 하나의 플래시 관리 테이블을 업데이트하도록 하는 명령어를 포함하는 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체가 개시된다.
지금부터, 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법으로서, a) 그것의 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 상기 플래시 메모리 내에 유지하는 단계; b) 상기 플래시 메모리 내에 이벤트 로그를 유지하는 단계; 및 c) 상기 적어도 하나의 플래시 관리 테이블을 유지하는 단계와 동시에, 상기 이벤트 로그의 특정 이벤트를 고유하게 식별하는 데이터를 상기 플래시 메모리 내에 유지하는 단계를 포함하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법이 처음 개시된다.
몇몇 실시예에 따라, 특정의 이벤트는 적어도 하나의 테이블의 컨텐츠에 대응하는 최근의 이벤트(예를 들어, 테이블의 컨텐츠에 영향을 주었고, 그리고/또는 수정했던 최근의 이벤트)이다.
지금부터, 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법이 처음으로 개시된다. 본 방법은 (a) 그 컨텐츠가 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 플래시 메모리 내에 유지하는 단계; (b) 이벤트 로그를 플래시 메모리 내에 유지하는 단계; (c) 이벤트 로그를 유지하는 단계와 동시에, 이벤트 로그의 특정 이벤트를 고유하게 식별하는 데이터를 플래시 메모리 내에 유지하는 단계를 포함한다.
몇몇 실시예에 따라, 상기 고유하게 식별하는 데이터를 유지하는 단계는 이벤트 로그의 최근의 이벤트의 지시를 플래시 메모리 내에 유지하는 단계를 포함한다.
이러한 실시예 및 다른 실시예는 하기 실시예 및 예로부터 명백해질 것이다.
도 1은 본 발명의 몇몇 실시예에 따른 예시적인 플래시 메모리 시스템의 블록 다이어그램이다.
도 2A-2B는 본 발명의 몇몇 실시예에 따른 예시적인 번역 테이블을 도시한다.
도 3, 5-6은 본 발명의 몇몇 실시예에 따른, 하나 이상의 플래시 관리 테이블 및 이벤트 로그를 플래시 메모리 내에 유지하는 단계를 위한 다양한 루틴을 나 타내는 플로우 차트를 제공한다.
도 4, 8A-8C는 본 발명의 몇몇 실시예에 따른 예시적인 이벤트 로그를 도시한다.
도 7은 웨이크 업을 위한 예시적인 루틴의 플로우 차트를 제공한다.
지금부터, 본 발명은 특정의 예시적인 실시예에 관하여 서술할 것이다. 본 발명은 개시된 예시적인 실시예로 한정되지 않음을 이해해야 한다. 또한, 첨부된 청구항의 임의의 특정 청구항에 청구된 바와 같이 본 발명을 구현하기 위해 플래시 메모리 시스템의 이벤트에 따라 데이터 구조를 유지하기 위한 본 명세서에 개시된 방법, 디바이스, 및 컴퓨터 판독가능한 코드의 모든 피처가 필수적인 것이 아님을 이해해야 한다. 본 발명을 완전하게 실시하기 위해 디바이스의 다양한 엘리먼트 및 피처가 기술된다. 또한, 프로세스 또는 방법이 도시되거나 서술되어 있는 본 명세서를 통해, 본 방법의 단계는, 한 단계가 먼저 수행된 다른 단계에 종속된 것으로 분명하게 명시되어 있지 않다면, 임의의 순서로 수행되거나 동시에 수행될 수 있다.
데이터 구조를 유지하기 위한 본 명세서에 개시된 방법, 시스템, 및 컴퓨터 판독가능한 코드는, 예컨대 정전이 빈번하게 발생하는 환경에서, 플래시 메모리 시스템의 "고속 웨이크 업"을 용이하게 하는데 유용할 수 있다. 그럼에도 불구하고, 이것은 본 발명의 제한으로 해석되어서는 안되며, 단지 플래시 메모리 시스템 데이터 구조를 유지하기 위한 본 명세서에 개시된 기술의 제한하지 않은 어플리케이션 으로서 개시된 것이다.
더욱 상세하게는, 본 명세서에 개시된 기술은 예상하지 못한 정전이 빈번하게 일어나는 조건 하에서도, 데이터 무결성을 손상시키지 않는 플래시 관리 시스템의 웨이크 업을 제공하기 위해 사용될 수 있다.
도 1은 본 발명의 몇몇 실시예를 따른 제한하지 않은 예시적인 플래시 메모리 시스템(100)의 블록 다이어그램이다. 이 예시적인 시스템은 데이터 저장을 위한 메모리 모듈(120), 및 메모리 모듈(120)과 호스트 인터페이스(180)를 통해 통신하는 호스트 디바이스(110)(예컨대, 마이크로컴퓨터, 스마트 카드 터미널, 또는 임의의 다른 디바이스)를 포함한다.
메모리 모듈은 임의의 타입의 플래시 메모리(130)는 물론, 호스트 인터페이스(180)를 통해 수신된 판독 요청 및/또는 기록 요청 및/또는 삭제 요청에 따라 플래시 메모리에 액세스하는 컨트롤러(140)를 포함한다. 도 1에 도시된 예에 대하여, 컨트롤러는 CPU(150), (CPU에 의해 실행되는 코드가 저장된) ROM(160), 및 그 코드 실행을 지원하기 위해 CPU에 의해 사용되는 RAM(170)을 포함한다.
도 1의 제한하지 않은 예의 블록 다이어그램은 'SecureDigital' 플래시 메모리 카드, 또는 휴대용 USB 플래시 디바이스와 같은 전형적인 비휘발성 저장 모듈을 나타낸다.
플래시 관리 테이블
플래시 메모리 시스템(100)은 전형적으로 하나 이상의 플래시 관리 테이블을 휘발성 메모리, 예컨대, 메모리 모듈(120)의 RAM(170)에, 호스트 디바이스(110)의 RAM에, 또는 임의의 다른 적합한 위치에 저장한다. 이러한 플래시 관리 테이블의 제한하지 않은 예는 가상 블록 넘버로부터 물리 블록 넘버로의 어드레스 번역 및 예컨대, 미국 특허 제5,937,425호의 시스템과 같은 다수의 플래시 관리 시스템에 존재하는 매핑을 제공하는 번역 테이블이다. 동일한 개념 및 방법은 또한 다른 타입의 플래시 관리 테이블, 예컨대 블록의 사용이 자유로운지 아닌지를 나타내는 프리 블록 테이블, 가상 블록 넘버를 하나 이상의 물리 블록 넘버의 그룹으로의 매핑을 나타내는 테이블 등에 적용가능함을 이해해야 한다.
본 발명의 목적을 위해, "플래시 관리 테이블"은 그것의 알고리즘을 지원하기 위해 플래시 관리 시스템에 의해 사용되는 데이터를 포함하는 임의의 테이블이고, 임의의 특정 시점에서의 그 테이블 내의 데이터는 그 특정 시점에 저장 시스템의 상태의 몇몇 형태를 나타낸다. 예를 들어, 플래시 관리 테이블은 대응하는 블록의 사용이 자유로운지 아닌지를 나타내는 비트를 가진, 플래시 메모리의 각 블록당 1비트를 포함하는 테이블이고, 제1시점에서의 테이블의 컨텐츠는 그 블럭이 그 시점에서 자유로운지 아닌지에 관한 시스템의 상태의 형태를 나타내는 제1패턴의 비트이다. 이후 시점에서, 그 테이블 내의 상기 패턴의 비트는 제1시점에서와 상이할 수 있고, 몇몇 프리 블록은 논-프리 블록이 되고 몇몇 논-프리 블록은 프리 블록이 됨으로 인한, 프리 및 논-프리 블록의 다양한 혼합을 내포한다.
시간에 따라, 플래시 메모리 내에 저장된 데이터는 변할 수 있고, 플래시 메모리에 관련된 다양한 부속 데이터 또한 변할 수 있다. 플래시 메모리 시스템의 "상태"는 플래시 관리 시스템의 다양한 이벤트(예컨대, 쓰기 요청, 하우스키핑 오퍼 레이션 등)가 발생할 때 시간에 따라 변한다.
각각의 플래시 관리 테이블은 플래시 관리 시스템의 전체 "상태" 중 하나 이상의 형태를 나타냄을 이해해야 한다. 그러므로, 임의의 주어진 플래시 관리 테이블 또는 테이블의 세트는 반드시 시스템의 모든 상태를 나타내지 않고, 시스템의 몇몇 형태만 나타낸다. 상술한 프리 블록 테이블의 예에서, 블록이 자유로운지 아닌지를 아는 것은 시스템의 완전한 상태를 정의하기에는 확실히 충분하지 않을 것이다. 논-프리 블록은 단지 한번 사용된 페이지를 포함하는 것일 수 있고, 또는 그것의 모든 페이지가 유효 데이터로 기록된 것일 수 있다. 이것은 프리 블록 테이블에 의해 반영되지 않지만, 다른 플래시 관리 테이블 또는 몇몇 다른 수단에 의해 반영되고, 그 테이블은 여전히 시스템 상태의 몇몇 형태를 나타낸다. 그러므로, 플래시 관리 테이블의 정의 내에 속한다.
그러므로, 플래시 메모리 시스템의 "현재 상태" 또는 "이전 상태" 또는 "이 후 상태" 또는 "최근 상태"를 나타내는 특정 플래시 메모리 테이블이 휘발성 또는 비휘발성 메모리에 저장될 때, 이것은 특정 플래시 메모리 테이블에 의해 나타난 플래시 메모리 시스템의 형태의 "이전" 또는 "현재" 또는 "이후" 또는 "최근" 상태를 나타낸다.
시간에 따라, 플래시 관리 테이블은 각각의 상태가 주어진 시간에 대하여, 그 시점에 플래시 메모리 시스템의 하나 이상의 형태를 나타내는, 상태의 시퀀스 사이를 이동한다. 테이블에 의해 모델링된 시스템의 상태의 형태는 플래시 메모리 시스템의 이벤트에 대응하는 뚜렷한 변경점을 가진 불연속 상태 사이를 스위칭한 다.
예시적인 플래시 관리 테이블
도 2A는 제1시점(t=t1)에 가상 블록 넘버를 물리 블록 넘버로 매핑하는 예시적인 플래시 관리 테이블의 컨텐츠를 도시한다. 이 테이블은 가상 블록 넘버에 의해 인덱싱되고, 대응 가상 블록의 데이터를 현재 담고 있는 물리 블록 넘버를 산출한다. 실제 구현에 있어서, 테이블이 이들 가상 블록에 의해 요청된 때 가상 블록 넘버를 저장하기 위한 공간을 할당할 필요가 없고, 그러므로 정확한 엔트리로 직접 인덱싱될 수 있다. 그러나, 편의상 두 칼럼이 물리적으로 나타난 것으로 도시되어 있다.
도 2A에 나타난 가상-대-물리 매핑의 상태는 가상 블록 넘버 '2'가 액세스되어야 한다면, 그 테이블은 대응 물리 블록이 블록 넘버 '172'임을 우리에게 알려준다. 몇몇 시점에서, 플래시 관리 시스템으로 전송된 커맨드(또는, 가비지(garbage) 수집 오퍼레이션과 같은, 외부 커맨드 없이도 시스템에 의해 취해질 수 있는 내부 하우스키핑 오퍼레이션)는 그 매핑을 변경시킬 수 있다. 예를 들어, 가상 블록 넘버 '2'에 새로운 데이터를 쓰고, 그러므로 이전 데이터를 덮어 쓰는 커맨드는 플래시 관리 시스템가 가상 블록 넘버 '2'에 대응하는 다른 물리 블록을 할당하게 하고, 그 새로운 데이터는 그 블록에 저장된다.
도 2B는 이후 시점(t=t2)에 변경이 발생된 후 가상-대-물리 플래시 관리 테이블의 내용을 도시한다. 지금 가상 블록 넘버 '2'는 테이블에서 물리 블록 넘버 '777'에 대응하고, 더 이상 물리 블록 '172'에 대응하지 않는다. 그러므로, 이 테이블은 제1상태에서 제2상태로 스위칭되었다. 플래시 관리 테이블의 컨텐츠의 임의의 변경은 그 테이블의 상태 변경으로 정의된다.
플래시 관리 시스템 내에서 발생하는 모든 쓰기 오퍼레이션이 모든 그것의 플래시 관리 테이블의 변화를 일으키는 경우가 아닌 것이 강조되어야 한다. 예를 들어, 물리 블록 '172'가 몇몇 사용할 수 없는 페이지를 가지고, 쓰기 오퍼레이션이 가상 블록 넘버 '2'로 다이렉팅되었다면, 플래시 관리 시스템의 알고리즘에 따라, 물리 블록 '172'의 사용할 수 없는 페이지에 새로운 데이터가 저장되고, 그 다음 가상-대-물리 매핑에 변화가 일어나지 않고, 그 테이블은 변하지 않은 채로 남아 있고, 그 다음 쓰기 오퍼레이션을 진행한다. 플래시 관리 테이블 상태 변화의 빈도는 시스템 내에서 수행되는 오퍼레이션의 빈도보다 낮은 적이 전형적이다. 도한, (각각 그 시스템의 상태의 다른 형태를 나타내는)복수의 플래시 관리 테이블이 동일한 플래시 관리 시스템 내에 유지된다면, 각각의 테이블은 상이한 시점에 그것의 상태를 변경할 수 있다.
웨이크 업 시 유용한 데이터 구조(즉, 테이블 및 이벤트 로그)의 저장
상술한 바와 같이, 파워-업 후 시스템을 초기화할 때, 관리 소프트웨어가 그것이 사용하는 임의의 플래시 관리 테이블의 완전히 업데이트된 카피를 RAM 내에 생성하는 것이 필수적일 수 있다. 시스템의 고속 웨이크 업을 달성하기 위해, 저장 시스템의 블록을 통해 흩어진 데이터로부터만 테이블의 컨텐츠를 재생성하는 것은 너무 느리기 때문에 통상적으로 받아들일 수 없다. 비휘발성 플래시 메모리 내 테이블의 카피를 저장하는 상반된 대안으로써, 매번 그것의 상태를 변경하는 것은 높은 오버헤드를 추가시키고 시스템 성능을 저하시키기 때문에 받아들일 수 없다.
본 발명의 다양한 실시예에 의해 제공되는 기술은 이들 두 종래 기술의 접근법 사이의 절충안을 제공한다. 그러므로, 플래시 관리 테이블은 상태 변경이 있을 때마다가 아니라, 몇몇 상태 변경에 대해서만 비휘발성 플래시 메모리에 저장된다.
이것은 본 발명의 몇몇 실시예에 따라 플래시 관리 테이블의 데이터 구조를 플래시 메모리 내에 유지하기 위한 예시적인 루틴을 기술하는 도 3에 도시되어 있다. 본 명세서에서 사용된 바와 같이, '플래시 메모리 내에 유지하는 것'은 플래시 메모리에 저장하는 것을 포함한다. 전형적으로, 플래시 메모리 내에 유지하는 것은 테이블 및/또는 휘발성 메모리/RAM 내에 테이블을 상주시키기 위한 관련 데이터를 유지하는 것, 및 복수의 시점에 대하여, 업데이트된(즉, 플래시 메모리 시스템의 현재 상태로 동기된) 버전의 테이블을 플래시 메모리 내에 저장하는 것을 포함한다.
도 3의 제한하지 않는 실시예에 따라, 제한하지 않는 예에서, 몇몇 시점에 대하여, 시스템은 아이들(idle)될 수 있고, 시스템은 다음 이벤트를 대기할 수 있다(206). 플래시 관리 시스템의 이벤트를 프로세싱할 때(210), 하나 이상의 테이블은 발생한 이벤트에 따라 휘발성 메모리 내에서 업데이트되는 것이 전형적이다(214). 이러한 테이블은 주어진 이벤트 후에 비휘발성 플래시 내에서 업데이트될 수도 있고, 되지 않을 수도 있다.
예시적인 이벤트 로그의 설명
지금부터 본 발명자는 플래시 관리 테이블이 모든 이벤트가 아니라 몇몇 이벤트의 발생 후 저장되는 상황에서, 이벤트 로그를 플래시 메모리 내에 유지하는 것 또한 유용할 수 있음을 개시하고자 한다. 예시적인 실시예에서, 이러한 이벤트 로그는 복수의 레코드를 포함하고, 여기서 각각의 레코드는 플래시 관리 시스템의 특정 이벤트를 기술하는 데이터를 포함한다. 본 발명의 제한은 아니지만, 이러한 이벤트 로그는 각각의 이벤트 후에 플래시 메모리 내에 업데이트되는 것이 전형적이다. 이것은 업데이트된(즉, 플래시 메모리 시스템의 최후 이벤트에 따라 업데이트된) 테이블이 항상 플래시 메모리 내에 저장되지 않는 상황에 대하여 데이터 무결성을 유지하는데 유용할 수 있다.
(정전이 있더라도) 데이터 무결성이 제공되는 실시예에 대하여, 주어진 시점에, 다음 중 하나의 조건이 참이다: a) 최근 이벤트에 따라 업데이트된 테이블이 비휘발성 플래시에 저장되었다; 및 b) 이전 상태(즉, 최근 이벤트 보다 이전, 즉, "이전" 이벤트 후 플래시 메모리 시스템 내에 다른 이벤트가 발생되었다)에 따라 업데이트된 테이블이 비휘발성 플래시 메모리에 저장되었다, 그리고, 플래시 메모리 내에 저장된 이벤트 로그는 "이전 이벤트"의 시점 이후 발생된 모든 이벤트의 기록을 포함한다.
이벤트 로그의 예시적인 구현은 시스템의 상태(즉, 하나 이상의 플래시 관리 테이블에 저장된 "시스템의 적어도 하나의 형태"의 상태)에 영향을 주는 모든 이벤트가 그 내에 등록된 순차적인 큐이고, 상기 이벤트는 외부 쓰기 커맨드, 내부 하우스-키핑 오퍼레이션, 또는 상태에 영향을 주는 임의의 다른 이벤트일 수 있다. 도 4에 도시된 이러한 순차적 이벤트 로그의 제한하지 않는 가능한 구현은 그것의 최상위 어드레스에 도달한 후, 그것의 최하위 어드레스로 되돌아가는 순환 큐이다. 도 4의 실시예에 따라, 순환 큐의 크기는 "M"이다(M개의 이벤트까지 저장될 수 있다).
도 4의 예에 따라, 두 개의 포인터가 전형적으로 플래시 내에 유지된다. (도 4에서, 이벤트 M-2를 포인팅하는) 포인터는 PointerMOST _RECENT_EVENT로 표시된다. 이 포인터는 그 로그 내의 최근에 등록된 엔트리를 포인팅한다. 새로운 엔트리가 로그에 추가될 때마다, 이 포인터는 먼저 다음 엔트리 위치를 포인팅하기 위해 순환적으로 증가되고(도 3의 단계(218)), 그 다음 새로운 엔트리는 포인팅하는 엔트리에 기록된다(도 3의 단계(222)).
전형적으로, PointerMOST _RECENT_EVENT는 플래시 내에 (PointerMOST _RECENT_EVENT의 위치가 결정될 수 있도록 로그 내에 지시 데이터를 저장함으로써, 명시적으로 또는 함축적으로) 저장된다(218). 예를 들어, 명시적이지 않은 PointerMOST _RECENT_EVENT가 있고, 이벤트 로그는 추가적인 정보를 요구하지 않고, 그것의 컨텐츠를 스캐닝함으로써 그것의 최후 엔트리를 식별할 수 있도록 구조화된다. 이러한 예에 따라, 이러한 피처는 각각의 엔트리 내에 "발생" 필드를 포함함으로써 쉽게 구현될 수 있고, 발생은 각각의 성공적인 엔트리에 증가하는 숫자이다. 그 다음, 로그 내의 최후 엔트리는 가장 큰 발생 필드를 가진 엔트리이다. 이러한 피처를 달성하기 위한 다른(예컨대, 명시적인 PointerMOST _RECENT_EVENT를 저장하는) 구현이 또한 가능하다.
PointerMOST _RECENT_EVENT를 나타내는 데이터는 플래시 내의 임의의 위치에 저장될 수 있고, 그 이벤트 로그와 플래시 내의 단일 위치에 있을 필요가 없음을 이해해야 한다.
"순환 큐"의 제한하지 않는 예에 따라, 로그에 할당된 공간은 임의의 플래시 관리 테이블의 두 번의 연속적인 저장 오퍼레이션 사이에 부족하지 않도록 충분히 커야 하고, 그로 인해, 그 큐의 컨텐츠를 모니터링 할 필요없이 새로운 엔트리가 큐의 끝에 있는 가장 오래된 엔트리를 안전하게 덮어 쓸수 있다.
지금부터 도 4에 도시된 제2포인터, PointerMOST _RECENT_TABLE_SAVE가 서술된다.
도 3에 도시된 바와 같이, 플래시 관리 테이블은 플래시 메모리 시스템의 모든 이벤트에 대해서가 아니라, 몇몇 이벤트에 대하여(즉, "테이블 저장" 조건이 만족될 때만(226) - 이 조건은 아래에 서술한다) 플래시 내에 저장된다(230). 그러므로, 몇몇 실시예에서, 플래시 관리 테이블이 비휘발성 플래시에 저장될 때마다, 최근 이벤트의 업데이터된 지시 포인터 PointerMOST _RECENT_TABLE_SAVE가 또한 저장된다(234). 이 때에, 비휘발성 플래시에 저장된 플래시 관리 테이블은 플래시 메모리 시스템의 "최근 이벤트"이거나, 또는 "최근 상태에 동기" 되어야 함을 나타낸다. 이 때에, 도 4에 도시된 "갭"은 사라진다.
로그가 (적어도 하나의 이벤트에 대하여) 플래시 메모리 내의 업데이트된 테이블을 저장하기 않고 후속하여 업데이트된 때, PointerMOST _RECENT_TABLE_SAVE는 (PointerMOST_RECENT_EVENT 로 표현된) 최근 이벤트 보다 뒤쳐지기 시작하고, 갭이 재생성된다.
단계(230)를 참조하여, 플래시 메모리 시스템의 현재 상태를 나타내는 테이블이 비휘발성 플래시에 저장된 때, "플래시 메모리 내의 테이블과 현재 상태를 동기시킨다"라고 정의됨을 알아야 한다.
전체적으로, 플래시 관리 테이블이 다양한 이벤트 후(그러나, 모든 이벤트 후일 필요는 없다) 플래시 메모리 내에 저장되는 프로세스는 "플래시 메모리 내에 테이블을 유지한다"로 정의된다. 그러므로, 다른 시점에, 다른 버전의 플래시 관리 테이블(전형적으로, 플래시 메모리 시스템의 이 후 상태를 나타내는 각각의 후속 버전)이 플래시 메모리 내에 저장된다. 그러므로, "테이블을 플래시 메모리 내에 유지하는 것"은 임의의 주어진 시점에 대하여, 플래시 메모리 내에 저장된 최근 테이블을 플래시 메모리 시스템의 현재 상태와 동기되도록 요구하지 않는다. 도 3은 최근 저장된 플래시 메모리 테이블이 플래시 메모리 시스템의 이전 상태를 나타내는(즉, 시스템의 상태가 플래시 메모리 시스템에서 발생한 더 최근 이벤트 이전인) 시간의 기간이 있을 수 있음을 도시한다.
지시 PointerMOST _RECENT_TABLE_SAVE는, 예컨대, 플래시 시스템의 파워 업 후, 플래시로부터 이 후에 복구될 수 있음을 이해해야 한다. PointerMOST _RECENT_EVENT와 PointerMOST_RECENT_TABLE_SAVE를 비교함으로써, 임의의 주어진 시간에, 저장된 플래시 관리 테이블이 시스템의 최근 상태(즉, 테이블 내에 나타난 상태의 형태)를 반영하였는 지 아닌지가 판정될 수 있다.
이벤트 로그의 상기 구현은 매우 간단하고 구현하기 용이하지만, 이것만 가능한 것이 아니고, 다른 구현 또한 가능하다.
몇몇 실시예에서, 이벤트 로그의 각각의 이벤트에 대하여 기록된 데이터는
적어도 모든 데이터가 시스템의 상태에 따라 발생되는 이벤트의 결과를 재생성하도록 요구되는 데이터임을 이해해야 한다. 이벤트 로그 내의 이벤트에 관한 실제 데이터를 기록할 필요가 없고, 예시적인 실시예에서, 실제 데이터는 기록되지 않는다. 예를 들어, 이벤트가 외부 호스트 시스템으로부터 데이터의 한 페이지를 기록하기 위한 커맨드라면, 그 로그 내의 대응 기록은 기록할 데이터가 아니라, 기록할 섹터의 가상 주소를 포함한다.
상술한 바와 같이, 몇몇 실시예에서, PointerMOST _RECENT_TABLE_SAVE을 나타내는 데이터는 플래시에서 테이블이 업데이트될 때, 몇몇 이벤트 후에 저장되지만, PointerMOST_RECENT_EVENT는 매 이벤트 후에 저장될 수 있다.
비휘발성 플래시 메모리에 업데이트된 플래시 관리 테이블을 저장할 때를 결정하는 정책
업데이트된 테이블이 플래시 메모리에 저장되게하는 이벤트-즉, 단계(226)의 "저장 조건"을 무엇으로 구성하는지를 결정하기 위한 임의의 정책이 본 발명의 범위에 속한다.
본 발명자는 본 발명의 특정 실시예에 따른 다양한 정책을 개시한다.
(도 5에 도시된) 제1실시예에서, 테이블은 테이블의 상태가 N번 변할때 마다 저장되고, 여기서 N은 소정의 숫자이다. N은 저장 오버헤드가 낮을 때 2일 수도 있고, 또는 저장 오버 하드가 높을 때 예컨대 100 또는 그 이상일 수도 있다. 그러므로, 도 5에 도시된 바와 같이, 카운터 변수는 0으로 초기화된다(218). 각각의 이벤트 후, 이 카운터 변수는 증가된다(240). 카운터 변수가 소정의 값 N을 초과하면, 하나 이상의 테이블은 플래시 메모리에 저장되고(230), 이벤트 로그의 이벤트의 최근 이벤트와 플래시 메모리 내에서 동기된다.
(도 6에 도시된) 제2실시예에서, (단계 (226)에 나타난 바와 같은) "저장 조건"은 최근 이벤트에 의해 트리거된 상태의 변화에 따라 결정된다. 그 목적을 위해 상태 변경은 "마이너" 변경 또는 "메이저 변경"으로 분류된다. 메이저인 변화는 즉시 저장하지만, 마이너인 테이블 상태 내의 변화는 테이블을 즉시(즉, 다임 이벤트를 프로세싱하기 전에(210)) 저장시키지 않는다(즉, 단계(226B) 후 "NO"로 브랜치한다). 마이너 및 메이저로 변화의 분류에 대한 제한하지 않는 예는 프리 블록에서 논-프리 블록으로 변하는 변화는 마이너로 간주되고, 논-프리 블록에서 프리 블록으로 변하느 변화는 메이저로 간주는 프리 블록 플래시 관리 테이블이다. 플래시 메모리에 플래시 관리 테이블을 저장하는 때를 결정하는 정책의 다른 실시예가 가능하다.
제3실시예에서, 테이블은 소정의 시간 인터벌이 지날 때마다, 주기적으로 저장된다. 전형적으로, 테이블을 얼마나 자주 업데이트할 것인가와 플래시 관리 테이블을 비휘발성 플래시에 저장하는데 소비되는 시스템 리소스의 크기 사이에 트레 이트오프가 존재한다. 한편, 평균적으로 관리 테이블을 보다 자주 저장하는 것은 웨이크-업 동안 플래시 메모리로부터 복구된 테이블이 더 업데이트될 수 있게 하므로, 고속 웨이크 업을 제공한다. 임의의 시간 인터벌이 본 발명의 범위에 속함을 이해해야 한다. 제한하지 않는 예시적인 실시예에서, 시간 인터벌은 수십초 내지 5분 이상일 수 있다.
제4실시예에서, 테이블이 업데이트되는 주기는 시스템 리소스의 성능에 따라 결정된다. 예를 들어, 컨트롤러(140)가 많은 읽기/쓰기/삭제 요청을 처리할 때, 또는 많은 하우스키핑 오퍼레이션이 있을 때 일정 시간 기간 동안, 플래시 관리 테이블은 시스템 리소스를 절약하기 위해, 비휘발성 플래시에 보다 덜 빈번하게 저장된다. 시스템이 아이들이거나, 낮은 레벨의 사용에 있을 때인 "낮은 사용" 기간 동안에는, 플래시 시스템 성능에 심각한 충격을 주지 않고, 보다 자주 플래시 관리 테이블을 비휘발성 플래시에 저장하는 것이 가능할 수 있다. 플래시에 보다 자주 플래시 관리 테이블을 저장하는 것은, 특히 정상적으로 종료하지 못한 상황(예컨대, 예상하지 못한 정전)에서, 고속 웨이크-업을 가능하게 한다.
모든 상태 변화가 테이블의 저장을 트리거하지 않기 때문에, RAM 내에 최근에 업데이트된 카피와 테이블에 마지막 저장된 카피 사이에 갭 또는 불일치가 결국 존재한다. 테이블이 저장될 때마다, 그 갭은 제거되고, 두 카피(즉, 휘발성 RAM 메모리 내의 카피와 비휘발성 플래시 내에 저장된 카피)는 동일하게 되고, 그러나 테이블의 저장시키지 않는 새로운 상태 변경은 또 다시 갭을 생성한다.
웨이킹 -업
몇몇 실시예에서, 어플리케이션이 정상적으로 종료할 때, 업데이트된(즉, 플래시 메모리 시스템의 최근 이벤트에 따라 업데이트된) 플래시 관리 테이블이 플래시 메모리에 저장된다.
비정상적인 종료가 있을 때, 웨이크 업할 때, 플래시 메모리로부터 휘발성 메모리로 "만료된" 플래시 관리 테이블을 복구하고, 그 다음 휘발성 메모리에서, 이벤트 로그에 저장된 기록에 따라, 만료된 플래시 관리 테이블을 업데이트하는 것이 가능하다.
그러므로, 본 발명에 의해 제공된 실시예는 Lasser 미국특허 제6,510,488호에 개시된 바와 같이 만료된 테이블을 무효화시킬 필요성이 없다.
도 7은 본 발명의 몇몇 실시예에 따른 예시적인 웨이크-업 루틴을 도시하는 플로우차트를 제공한다. 파워 업(410) 후, 플래시 관리 시스템은 저장된 플래시 관리 테이블의 카피를 복구한다(414). 그 다음, 플래시 관리 시스템은 플래시 관리 테이블이 비휘발성 플래시에 저장되었던 시간에 최근 이벤트로 포인팅하는 PointerMOST _RECENT_TABLE_SAVE를 복구한다(418).
그 다음, 플래시 관리 시스템은, 예컨대 이벤트 로그를 스캐닝하고 그것의 최근 엔트리를 식별함으로써, 또는 비휘발성 메모리로부터의 명백한 값을 복구함으로써, 또는 임의의 다른 기술에 의해 PointerMOST _RECENT_EVENT를 판정한다(422). PointerMOST_RECENT_EVENT는 시스템이 종료되기 직전에 발생했던, 마지막 로그된 이벤트를 포인팅한다.
시스템이 플래시 관리 테이블의 최종 저장한 직후 그리고 테이블의 상태의 추가적인 변경 전에 종료되었다면(예컨대, "정상적인 종료" 또는 임의의 다른 상황이 있다면), 두 포인터(즉, PointerMOST _RECENT_TABLE_SAVE 및 PointerMOST _RECENT_EVENT)는 동일해야 한다. 그러나, 테이블의 최종 저장 후 그리고 시스템이 종료하기 전에 플래시 관리 테이블의 하나 이상의 상태 변경이 있었다면, 두 포인터 사이에 차이가 있을 것이다.
PointerMOST _RECENT_TABLE_SAVE는 저장된 테이블이 이미 테이블의 상태에 영향을 반영한 이벤트 로그 내의 최근 이벤트를 포인팅한다. 그 이벤트를 뒤이어 로그 내에 나타나는 모든 이벤트는, PointerMOST _RECENT_EVENT)에 의해 포인팅된 로그 내의 마지막 이벤트까지, 저장된 테이블 내에 아직 반영되지 않았다.
이러한 포인트에서, 테이블에 반영되지 않은 새로운 이벤트를 "재생(play back)"하는 것이 가능하다. 이 때문에, 이벤트 로그로부터의 엔트리(즉, 최근 파워-업(410) 전에 이벤트 로그에 저장된 "미리-저장된" 이벤트)는 가장 오래된 것(즉, PointerMOST _RECENT_TABLE_SAVE에 의해 포인팅 된 것)부터 가장 새로운 것(즉, PointerMOST_RECENT_EVENT에 의해 포인팅된 것)까지 하나씩 판독할 수 있다. 이러한 각각의 이벤트에 대하여, 플래시 관리 테이블의 상태는 오리지널 이벤트가 그 상태에 영향을 준 것과 정확하게 동일한 방법으로 (예컨대, 휘발성 메모리에) 업데이트될 수 있다(438). 이 때문에, 몇몇 제한하지 않는 구현에서, "반복자(iterator)"로서 기능하고, 이벤트 로그의 현재 처리된 이벤트를 포인팅하는 "임시적인" PointerTEMP를 정의하는 것이 유리할 수 있다. 처음으로, PointerTEMP의 값을 (도 8A에 도시된 바와 같은) PointerMOST _RECENT_TABLE_SAVE로 설정한다(426).
로그 테이블로부터 복구된(434) (도 8A-8C에 도시된 바와 같은) 각각의 이벤트에 대하여, (하나 이상이라면) 각각의 플래시 관리 테이블은 그 테이블에 특정 상태 변화를 반영시키기 위해 업데이트된다(438). 이벤트 로그 내에 저장된 각각의 이벤트를 처리한 후, 포인터(예컨대, PointerTEMP)는 이벤트 로그의 다음 이벤트에 앞서 진행될 수 있다(442). 프로세싱된 마지막 로그 엔트리가 동일하면(도 8C 참조, PointerTEMP = PointerMOST _RECENT_EVENT), 완료된다. 몇몇 실시예에서, 주어진 로그 엔트리가 "마지막" 로그 엔트리로 판정하는 단계는 "반복자" 포인터(예컨대, PointerTEMP)의 값과 PointerMOST _RECENT_EVENT를 비교함으로써(430) 유효화된다.
이러한 포인트에서, PointerTEMP = PointerMOST _RECENT_EVENT일 때, 플래시 관리 테이블은 완전히 업데이트되고, 시스템이 종료되기 전의 그것의 최근 상태를 각각 반영한다.
선택적으로, 지금 업데이트된 하나 이상의 플래시 관리 테이블은 (업데이트된 PointerMOST _RECENT_TABLE_SAVE과 함께) 비휘발성 플래시 메모리에 저장되어(446), 임의의 미래의 테이블의 재생성은 현재 상태로부터 시작할 것이다.
플래시 관리 테이블이 휘발성 메모리 및 선택적으로 비휘발성 메모리 내에서 업데이트된 것으로 판정된 후, 그 다음 플래시 메모리 시스템의 정상적인 오퍼레이션으로 진행하는 것이 가능하다(450).
성능에 대한 일반적인 설명
본 발명의 특정 실시예에 의해 제공되는 한가지 이점은 전형적으로 플래시 관리 테이블의 저장된 카피의 판독하고 테이블의 저장된 카피에 아직 반영되지 않은 로그 엔트리의 재생을 더하는 것이 저장 시스템의 많은 블록을 스캐닝하는 것에 의한 스크래치로부터 테이블의 재생성하는 것 보다 훨씬 더 작은 시간이 걸린다는 것이다. 시스템이 테이블을 저장한 후 추가적인 상태 변경이 발생하기 전에 종료하였다면(예컨대, 정상적인 종료였다면, 또는 운 좋게도 PointerMOST _RECENT_TABLE_SAVE = PointerMOST_RECENT_EVENT일 때 종료하였다면), 몇몇 실시예에서, 웨이크-업 시간은 정상적인 종료가 발생했을 때 Lasser의 방법과 같이 가장 빠를 것이다. 그러나, 몇몇 상태 변화가 테이블의 최종 저장 후에 발생하더라도, 본 시스템의 웨이크-업 시간은 정상적으로 종료하지 않았을 때 Lasser의 방법에서 발생하는 것과 같이 나빠지지 않을 것이다. 많은 상황에서, 로크의 몇몇 인트리 만이 판독되어야 할 것이고, 재생성된 테이블 상태에 영향을 줄 것이다. 소요되는 정확한 시간은 전형적으로 재생되어야 하는 엔트리의 개수에 의존한다. 이것은 차례로 테이블의 비휘발성 메모리에 저장되는 빈도에 의존할 수 있다. 빈도가 높을 수록 평균적으로 재생되어야할 엔트리는 적어지고, 평균적으로 웨이크-업은 더 빨라진다. 한편, 더 높은 저장 빈도는 시스템의 정규 오퍼레이션 동안 오버헤드를 저장하는데 더 많은 시간을 소비하게 한다.
관련된 다른 요소는 이벤트 로그 엔트리를 기록하기 위해 소요되는 오버헤드이다. 전형적으로, 데이터 무결성이 제공되는 실시예에서, 로그는 매 이벤트마다 기록되는데, 이것은 플래시 관리 테이블의 상태에 영향을 주는 모든 시스템 상태 변화에 대하여 기록되어야 한다는 의미이다.
이벤트 로그를 유지하는 오버헤드 비용이 각각의 상태가 변할 때 플래시 관리 테이블을 저장하는 오버헤드 비용보다 큰지 않다는 것이 놀라운 점이다. 그러므로, 몇몇 실시예에서, 플래시 관리 시스템은 가장 빠른 방법으로 기록된 이벤트 로그에 대한 이벤트 기록을 쓰도록 설계될 수 있다. 이 때문에, 플래시 매체가 하나 이상의 쓰기 모드를 제공할 때, (비휘발성 플래시 메모리에 플래시 관리 테이블을 나타내는 데이터, 및 이벤트 로그에 적어도 하나의 기록을 쓰기 위한) 더 빠른 쓰기 모드를 채용하는 것이 가능하다. 한 예로, 멀티-레벨 셀(MLC) 및 싱글-레벨 셀(SLC) 모드를 제공하는 플래시 메모리 디바이스를 사용하는 플래시 시스템이 있다. 이러한 디바이스는 그 전체가 본 발명에 참조로써 합치된, Chen의 미국특허 제6,456,528호에 개시되어 있다. 시스템에 저장된 "정규 데이터"(예컨대, 호스트 디바이스(110)로부터 쓰기 요청과 함께 패싱된 데이터)는 높은 저장 밀도를 달성하기 위해 더 느린 MLC 모드를 사용하여 기록되는 반면, 이벤트 로그는 훨씬 더 빠른 SLC 모드를 사용하여 기록된다.
플래시 메모리 시스템의 캐싱 오퍼레이션의 일부로서 로그 유지
몇몇 실시예에서, 본 명세서에 개시된 하나 이상의 기술은 특히 이벤트 로그 가 플래시 관리 테이블을 고려하지 않는 임의의 방법으로 유지되어야 하는 상황에서 장점을 제공한다. 이것은 플래시 관리 시스템이 들어오는 데이터에 대해 캐싱을 채용한 경우일 수 있고, 들어오는 데이터는 들어오는 데이터가 도착할 때 맨처음 플래시 메모리 내의 제1위치에 저장되고, 그 다음 장기간 저장을 위한 제2위치로 이동된다. 본 명세서에서 사용된 때, "캐싱"은 제1위치에 기록하는 것을 의미한다.
그러므로, 이러한 시스템에서, 제1위치에 데이터를 저장하는 것(즉, 캐싱)은 또한 이벤트 로그의 기능을 제공하는 방법으로 구현될 수 있다. 이러한 경우에, 로그를 구현하기 위한 엑스트라 오버헤드 비용이 없고, 본 발명의 방법의 장점이 극대화된다.
상기 설명은 플래시 관리 시스템 내의 단일 플래시 관리 테이블을 주로 중점을 두었으나, 본 발명은 각각이 시스템의 상태의 상이한 형태를 나타내는, 복수의 플래시 관리 테이블에도 동등하게 적용가능하다. 복수의 테이블이 존재한다면, 각각은 그 자신의 저장 정책을 사용하여 저장될 수 있으며, 동시에 동일한 포인트에 있을 필요는 없다. 파워-업할 때, 플래시 관리 테이블은 모든 테이블을 위해 서빙하는 동일한 이벤트 로그와 함께, 상술한 방법을 사용하여 재구성될 수 있다.
본 명세서에 개시된 시스템에 대한 부가 설명
본 명세서에 개시된 기술은 하드웨어, 펌웨어, 및 소프트웨어의 임의의 조합을 사용하여 구현될 수 있다.
제한하지 않는 예로서, 플래시 관리 테이블의 저장 및 파워 업 시에 그 테이 블의 복구 및 재구성은 컨트롤러(140)에 의해, 또는 보다 엄밀하게는 ROM(160)으로부터의 코드를 실행하는 CPU(150)에 의해 모두 수행된다. 그러나, 이것은 본 발명을 사용하기 위해 가능한 유일한 시스템 아키텍처는 아니다. 예를 들어, 본 발명의 방법은 저장 모듈이 온-보드 NAND 플래시 디바이스이고, 스탠드-얼론 컨트롤러가 없는 경우일 때, 호스트 컴퓨터(110)에서 실행되는 코드에 의해 구현되는 것이 가능하다. 다른 가능성은 본 발명의 방법이 호스트 컴퓨터(110)에 의해 적어도 부분적으로 구현되고, 컨트롤러(140)에 의해 부분적으로 구현되는 것이다. 이러한 모든 아키텍처 및 많은 다른 아키텍처는 본 발명의 범위에 속한다.
본 명세서에서, 동사 "포함한다" 및 "갖춘다", 및 이들의 동사변형은 그 동사의 목적어가 그 동사의 주체 또는 주체의 부재, 컴포넌트, 엘리먼트, 또는 일부분의 필수적이지 않은 완전한 리스트임을 나타내기 위해 사용되었다.
본 명세서에서 인용된 모든 참조문헌은 그 전체가 참조로써 통합되었다. 참조문헌의 인용은 그 참조문헌이 종래 기술임을 승인하고자 하는 것이 아니다.
본 명세서에서, 용어 "포함한다"는 문구 "포함하지만 제한하지 않는다"는 의미이고 상호치환가능하게 사용되었다.
본 명세서에서, 용어 "또는"은 구문에 명백하게 지시되지 않았다면, 용어 "및/또는"의 의미이고 상호치환가능하게 사용되었다.
본 명세서에서, 용어 "이와 같이"는 문구 "이와 같으나 이에 제한되지 않는"의 의미이고 상호치환가능하게 사용되었다.
본 발명은 예시의 방법으로 제공된 실시예의 상세한 설명을 사용하여 서술되 었으나, 본 발명의 범위를 제한하려는 것은 아니다. 서술된 실시예는 상이한 피처를 포함할 수 있고, 본 발명의 모든 실시예에서 모든 피처가 필수적인 것은 아니다. 본 발명의 몇몇 실시예는 이러한 피처의 일부만 사용하거나 이러한 피처의 조합이 가능하다. 서술된 본 발명의 실시예의 변형, 및 본 서술된 실시예에 언급된 피처와 상이한 조합을 포함하는 발명의 실시예는 당업자들에게 자명한 것이다.

Claims (27)

  1. 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법으로서,
    a) 그 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는, 적어도 하나의 플래시 관리 테이블을 플래시 메모리에 유지하는 단계;
    b) i) 가장 최근에 저장된 상기 적어도 하나의 플래시 관리 테이블이 제1 타임에서의 상기 플래시 메모리 시스템의 제1 상태를 나타낼 때, 및
    ii) 상기 제1 타임보다 더 최근인 제2 타임에서의 적어도 하나의 이벤트가 상기 이벤트 로그에 저장된 때, 중 적어도 한 시점에 대한 이벤트 로그를 상기 플래시 메모리에 유지하는 단계;를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  2. 제 1 항에 있어서, 가장 최근 이벤트가 상기 이벤트 로그에 저장된 상기 적어도 하나의 시점에 대한 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  3. 제 1 항에 있어서, 상기 플래시 메모리 시스템의 현재 상태가 상기 저장된 이벤트 로그 및 상기 저장된 적어도 하나의 플래시 관리 테이블의 컨텐츠에 의해 반영되는 적어도 하나의 시점에 대한 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  4. 제 2 항에 있어서,
    c) 상기 제1 상태를 나타내는 상기 적어도 하나의 테이블로부터, 그리고 상기 이벤트 로그로부터, 제2 타임에서의 상기 플래시 메모리 시스템의 제2 상태를 나타내는 적어도 하나의 테이블을 생성하는 단계를 더 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  5. 제 4 항에 있어서, 상기 제2 상태는 상기 생성하는 단계의 시점에 상기 플래시 메모리 시스템의 가장 현재 상태인 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  6. 제 4 항에 있어서, 웨이크 업할 때 상기 적어도 하나의 테이블이 생성되는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  7. 제 1 항에 있어서, 상기 적어도 하나의 관리 테이블의 상기 유지하는 단계는, 상기 적어도 한 시점과 구별되는 다른 시점에, 상기 적어도 하나의 플래시 관리 테이블과 상기 이벤트 로그의 마지막 기록된 이벤트를 동기시키는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  8. 제 1 항에 있어서, 상기 플래시 메모리 내에 상기 적어도 하나의 관리 테이블의 상기 유지하는 단계는, 상기 적어도 하나의 관리 테이블과 현재 상태를 상기 플래시 메모리 내에서 주기적으로 동기시키는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  9. 제 1 항에 있어서, 상기 플래시 메모리 내에 상기 적어도 하나의 관리 테이블의 상기 유지하는 단계는, 상기 플래시 메모리 시스템의 상태의 N(N은 2이상)번 변화 때마다, 상기 적어도 하나의 플래시 관리 테이블과 현재 상태를 상기 플래시 메모리 내에서 동시시키는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  10. 제 1 항에 있어서, 상기 플래시 메모리 내에 상기 적어도 하나의 관리 테이블의 상기 유지하는 단계는
    i) 제1의 소정 타입의 상태의 변화가 발생할 때, 상기 적어도 하나의 플래시 관리 테이블과 현재 상태를 상기 플래시 메모리 내에서 동기시키는 단계; 및
    ii) 제2의 소정 타입의 상태의 변화가 발생할 때, 상기 적어도 하나의 플래시 관리 테이블과 현재 상태를 상기 플래시 메모리 내에서 동기시키지 않는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이 터 구조를 유지하는 방법.
  11. 제 1 항에 있어서, 상기 적어도 하나의 플래시 관리 테이블을 플래시 메모리 내에서 업데이트하는 주기는 상기 플래시 메모리 시스템의 리소스의 성능에 따라 결정되는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  12. 제 1 항에 있어서, 상기 적어도 하나의 플래시 관리 테이블은 가상 블록 넘버를 물리 블록 넘버로 매핑하는 번역 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  13. 제 1 항에 있어서, 상기 적어도 하나의 플래시 관리 테이블은 프리 블록 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  14. 제 1 항에 있어서, 상기 유지하는 단계는 상기 플래시 메모리 내에 복수의 상기 플래시 관리 테이블을 유지하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  15. 제 1 항에 있어서, 상기 이벤트 로그를 상기 플래시 메모리 내에 유지하는 단계는 상기 플래시 메모리의 고속 기록 모드를 사용하여 상기 플래시 메모리에 데이터를 기록하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  16. 제 1 항에 있어서, 상기 플래시 메모리는 MLC 및 SLC 모드를 모두 제공하고, 상기 이벤트 로그를 상기 플래시 메모리에 유지하는 단계는 상기 SLC 모드를 사용하여 수행되는 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
  17. 삭제
  18. 플래시 메모리 시스템에서 웨이크 업하는 방법으로서,
    I) 웨이크 업 할 때,
    a) 상기 플래시 메모리 시스템의 상태를 기술하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하는 단계;
    b) 상기 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트 로그를 상기 플래시 메모리로부터 판독하는 단계; 및
    c) 상기 적어도 하나의 이벤트에 의해 야기된 변화에 따라 상기 적어도 하나의 플래시 관리 테이블을 업데이트하는 단계를 포함하는 것을 특징으로 하는 플래시 메모리 시스템에서 웨이크 업하는 방법.
  19. 제 18 항에 있어서, 상기 업데이트하는 단계는 상기 적어도 하나의 플래시 관리 테이블이 상기 이벤트 로그의 가장 최근 이벤트에 따라 업데이트될 때까지 반복되는 것을 특징으로 하는 플래시 메모리 시스템에서 웨이크 업하는 방법.
  20. 제 18 항에 있어서, 상기 적어도 하나의 플래시 관리 테이블은 가상 블록 넘버를 물리 블록 넘버에 매핑하는 번역 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 시스템에서 웨이크 업하는 방법.
  21. 제 18 항에 있어서, 상기 적어도 하나의 플래시 관리 테이블은 프리 블록 테이블을 포함하는 것을 특징으로 하는 플래시 메모리 시스템에서 웨이크 업하는 방법.
  22. 제 18 항에 있어서, 상기 플래시 메모리로부터 복수의 상기 플래시 관리 테이블이 판독되고, 업데이트되는 것을 특징으로 하는 플래시 메모리 시스템에서 웨이크 업하는 방법.
  23. 플래시 메모리 시스템으로서,
    a) 데이터를 저장하는 플래시 메모리; 및
    b) 상기 플래시 메모리에 액세스하기 위해 사용되는 데이터 구조를 유지하기 위한 플래시 관리 소프트웨어를 포함하고,
    상기 플래시 관리 소프트웨어는
    i) 그것의 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 상기 플래시 메모리 내에 유지하고, 그리고
    ii) I) 가장 최근에 저장된 상기 적어도 하나의 플래시 관리 테이블이 제1 타임에서의 상기 플래시 메모리 시스템의 제1 상태를 나타낼 때; 및
    II) 상기 제1 타임보다 더 최근인 제2 타임에서의 적어도 하나의 이벤트가 상기 이벤트 로그에 저장된 때, 중 적어도 한 시점에 대한 이벤트 로그를 상기 플래시 메모리에 유지하도록 동작하는 것을 특징으로 하는 플래시 메모리 시스템.
  24. 플래시 메모리 시스템으로서,
    a) 데이터를 저장하는 플래시 메모리; 및
    b) 상기 플래시 메모리에 액세스하기 위해 사용되는 적어도 하나의 데이터 구조를 유지하기 위한 플래시 관리 소프트웨어를 포함하고,
    웨이크 업할 때, 상기 플래시 관리 소프트웨어는
    i) 상기 플래시 메모리 시스템의 상태를 기술하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하고,
    ii) 상기 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트 로그를 상기 플래시 메모리로부터 판독하고; 그리고
    iii) 상기 이벤트 로그에 저장된 적어도 하나의 이벤트에 대하여, 상기 적어도 하나의 이벤트에 의해 야기된 변화에 따라 상기 적어도 하나의 플래시 관리 테이블을 업데이트하도록 동작하는 것을 특징으로 하는 플래시 메모리 시스템.
  25. 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체로서, 상기 컴퓨터 판독가능한 코드는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하기 위한 명령어를 포함하고, 상기 명령어는
    a) 그것의 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 상기 플래시 메모리 내에 유지하고, 그리고
    b) I) 가장 최근에 저장된 상기 적어도 하나의 플래시 관리 테이블이 제1 타임에서의 상기 플래시 메모리 시스템의 제1 상태를 나타낼 때; 및
    II) 상기 제1 타임보다 더 최근인 제2 타임에서의 적어도 하나의 이벤트가 상기 이벤트 로그에 저장된 때, 중 적어도 한 시점에 대한 이벤트 로그를 상기 플래시 메모리에 유지하도록 하는 명령어를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체.
  26. 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체로서, 상기 컴퓨터 판독가능한 코드는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하기 위한 명령어를 포함하고, 상기 명령어는
    I) 웨이크 업 할 때,
    a) 상기 플래시 메모리 시스템의 상태를 기술하는 적어도 하나의 플래시 관리 테이블을 플래시 메모리로부터 판독하고,
    b) 상기 플래시 메모리 시스템의 미리-저장된 이벤트의 기록을 담고 있는 이벤트 로그를 상기 플래시 메모리로부터 판독하고, 그리고
    c) 상기 이벤트 로그에 저장된 적어도 하나의 이벤트에 대하여, 상기 적어도 하나의 이벤트에 의해 야기된 변화에 따라 상기 적어도 하나의 플래시 관리 테이블을 업데이트하도록 하는 명령어를 포함하는 것을 특징으로 하는 컴퓨터 판독가능한 저장 매체에 내장된 컴퓨터 판독가능한 코드를 가진 컴퓨터 판독가능한 저장 매체.
  27. 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법으로서,
    a) 그것의 컨텐츠가 상기 플래시 메모리 시스템의 상태를 나타내는 적어도 하나의 플래시 관리 테이블을 상기 플래시 메모리 내에 유지하는 단계;
    b) 상기 플래시 메모리 내에 이벤트 로그를 유지하는 단계; 및
    c) 상기 적어도 하나의 플래시 관리 테이블을 유지하는 단계와 동시에, 상기 이벤트 로그의 특정 이벤트를 고유하게 식별하는 데이터를 상기 플래시 메모리 내에 유지하는 단계를 포함하고,
    상기 특정 이벤트는 상기 적어도 하나의 테이블의 상기 컨텐츠에 대응하는 가장 최근 이벤트인 것을 특징으로 하는 플래시 메모리 시스템의 이벤트에 따라 플래시 데이터 구조를 유지하는 방법.
KR1020077028410A 2005-05-09 2006-05-09 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템 KR101286477B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67890205P 2005-05-09 2005-05-09
US60/678,902 2005-05-09
PCT/IL2006/000550 WO2006120679A2 (en) 2005-05-09 2006-05-09 A method and system for facilitating fast wake-up of a flash memory system

Publications (2)

Publication Number Publication Date
KR20080009314A KR20080009314A (ko) 2008-01-28
KR101286477B1 true KR101286477B1 (ko) 2013-07-16

Family

ID=37396967

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077028410A KR101286477B1 (ko) 2005-05-09 2006-05-09 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템

Country Status (6)

Country Link
US (2) US8244958B2 (ko)
EP (1) EP1880293A4 (ko)
JP (1) JP5002586B2 (ko)
KR (1) KR101286477B1 (ko)
CN (1) CN101218566B (ko)
WO (1) WO2006120679A2 (ko)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US20080162782A1 (en) * 2005-06-15 2008-07-03 Nagarajan Suresh Using Transacted Writes and Caching Mechanism to Improve Write Performance in Multi-Level Cell Flash Memory
US7702821B2 (en) 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US8275949B2 (en) * 2005-12-13 2012-09-25 International Business Machines Corporation System support storage and computer system
WO2008057557A2 (en) 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
CN101548271B (zh) * 2006-12-08 2012-12-05 桑德福斯公司 多个存储装置中的数据冗余
US7721040B2 (en) * 2007-01-18 2010-05-18 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7987332B2 (en) 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
WO2008115720A1 (en) * 2007-03-21 2008-09-25 Sandisk Corporation Methods for storing memory operations in a queue
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
US8504784B2 (en) 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US7970983B2 (en) * 2007-10-14 2011-06-28 Sandisk Il Ltd. Identity-based flash management
US8656083B2 (en) * 2007-12-21 2014-02-18 Spansion Llc Frequency distributed flash memory allocation based on free page tables
JP2009211188A (ja) * 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
EP2309392A1 (en) 2008-02-29 2011-04-13 Kabushiki Kaisha Toshiba Memory system
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US20110029587A1 (en) * 2008-03-31 2011-02-03 Fujii John M Updating Retrieval Codes In Response To File Transfers
TWI375961B (en) * 2008-05-15 2012-11-01 Phison Electronics Corp Multi non-volatile memory chip packetaged storage system and controller and access method thereof
WO2009143885A1 (de) * 2008-05-28 2009-12-03 Hyperstone Gmbh Verfahren zum adressieren von seitenorientierten nichtflüchtigen speichern
US8065304B2 (en) * 2008-06-11 2011-11-22 International Business Machines Corporation Using asymmetric memory
US20110197018A1 (en) * 2008-10-06 2011-08-11 Sam Hyuk Noh Method and system for perpetual computing using non-volatile random access memory
EP2264602A1 (en) * 2009-06-17 2010-12-22 Gemalto SA Memory device for managing the recovery of a non volatile memory
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
JP5521477B2 (ja) * 2009-10-08 2014-06-11 日本電気株式会社 メモリ制御装置
US8296506B2 (en) * 2009-11-09 2012-10-23 Lite-On It Corporation Method for managing a non-violate memory and computer readable medium thereof
US8868575B2 (en) * 2010-01-13 2014-10-21 International Business Machines Corporation Method and system for transformation of logical data objects for storage
KR20110097438A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 메모리 시스템, 그리고 그것의 동작 방법
EP2542974B1 (en) * 2010-03-05 2016-07-20 Eye-Fi, Inc. Endless memory
US8886870B2 (en) * 2010-05-25 2014-11-11 Marvell World Trade Ltd. Memory access table saving and restoring system and methods
US8793429B1 (en) * 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US20130080687A1 (en) * 2011-09-23 2013-03-28 Avalanche Technology, Inc. Solid state disk employing flash and magnetic random access memory (mram)
US9251059B2 (en) 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US9009396B2 (en) 2011-09-23 2015-04-14 Avalanche Technology, Inc. Physically addressed solid state disk employing magnetic random access memory (MRAM)
WO2013051062A1 (en) 2011-10-05 2013-04-11 Hitachi, Ltd. Storage system and storage method
JP5938997B2 (ja) * 2012-03-30 2016-06-22 富士通株式会社 情報記憶装置、情報記憶装置制御プログラム、情報記憶装置制御方法
US9170932B1 (en) * 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
KR102164617B1 (ko) 2014-03-24 2020-10-12 삼성전자주식회사 데이터 저장 장치의 동작 방법과 상기 데이터 저장 장치를 포함하는 시스템의 동작 방법
JP6348400B2 (ja) * 2014-10-15 2018-06-27 株式会社メガチップス 半導体記憶装置
CN105511806B (zh) * 2015-11-30 2018-09-07 华为技术有限公司 处理写请求的方法和移动终端
US9542655B1 (en) 2015-12-09 2017-01-10 International Business Machines Corporation Generating streaming analytics applications using a glossary
US10452561B2 (en) 2016-08-08 2019-10-22 Raytheon Company Central processing unit architecture and methods for high availability systems
US20180239532A1 (en) 2017-02-23 2018-08-23 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US10359955B2 (en) 2017-02-23 2019-07-23 Western Digital Technologies, Inc. Data storage device configured to perform a non-blocking control update operation
JP2018160156A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム
US10459803B2 (en) * 2017-06-28 2019-10-29 Western Digital Technologies, Inc. Method for management tables recovery
CN107688442B (zh) * 2017-09-04 2020-11-20 苏州浪潮智能科技有限公司 一种用于固态硬盘的虚拟块管理方法
KR102589410B1 (ko) 2017-11-10 2023-10-13 삼성전자주식회사 메모리 장치 및 그의 파워 제어 방법
KR102553261B1 (ko) 2018-10-10 2023-07-07 삼성전자 주식회사 메모리 컨트롤러, 상기 메모리 컨트롤러를 포함하는 스토리지 장치, 및 상기 메모리 컨트롤러의 동작 방법
CN109471757A (zh) * 2018-11-19 2019-03-15 郑州云海信息技术有限公司 一种正常关机时触发nvdimm-n备份的方法及系统
KR20200099897A (ko) 2019-02-15 2020-08-25 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
JP7362369B2 (ja) * 2019-09-03 2023-10-17 キオクシア株式会社 メモリシステム
JP7490469B2 (ja) * 2020-06-25 2024-05-27 キオクシア株式会社 ストレージデバイス、ストレージシステム及び制御方法
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase
US11995344B2 (en) * 2022-05-19 2024-05-28 Micron Technology, Inc. Memory with efficient storage of event log data

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163594A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald Open-architecture file system

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
JPH07295866A (ja) * 1994-04-20 1995-11-10 Casio Comput Co Ltd データ処理装置
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
JP3464836B2 (ja) * 1995-01-19 2003-11-10 富士通株式会社 記憶装置のメモリ管理装置
US5671388A (en) * 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device
US5937425A (en) 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6282605B1 (en) * 1999-04-26 2001-08-28 Moore Computer Consultants, Inc. File system for non-volatile computer memory
JP2001209567A (ja) * 2000-01-27 2001-08-03 Nec Eng Ltd ジャーナル書き込み方式
US6970890B1 (en) * 2000-12-20 2005-11-29 Bitmicro Networks, Inc. Method and apparatus for data recovery
US6510488B2 (en) 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
JP4059002B2 (ja) * 2001-06-13 2008-03-12 株式会社日立製作所 メモリ装置
JP3692313B2 (ja) 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
JP2003027144A (ja) * 2001-07-09 2003-01-29 Sanyo Special Steel Co Ltd 高炭素クロム軸受鋼鋼管切断リングの復炭処理方法
US6948026B2 (en) * 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6678785B2 (en) 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
JP4129381B2 (ja) * 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
DE60318477T2 (de) * 2002-10-17 2008-04-30 Matsushita Electric Industrial Co., Ltd., Kadoma Vorrichtung zur dateiaktualisierung
JP4391793B2 (ja) * 2002-10-17 2009-12-24 パナソニック株式会社 ファイル更新装置
JP2004234188A (ja) 2003-01-29 2004-08-19 Canon Inc データファイル管理方法
KR100584338B1 (ko) * 2003-09-17 2006-05-26 삼성전자주식회사 소프트웨어 업데이트 방법 및 시스템
JP3912355B2 (ja) 2003-10-14 2007-05-09 ソニー株式会社 データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP2006040168A (ja) 2004-07-29 2006-02-09 Tdk Corp フラッシュメモリシステム及びフラッシュメモリの制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030163594A1 (en) 2002-02-27 2003-08-28 Aasheim Jered Donald Open-architecture file system

Also Published As

Publication number Publication date
CN101218566B (zh) 2011-11-23
WO2006120679A3 (en) 2007-05-24
CN101218566A (zh) 2008-07-09
EP1880293A4 (en) 2009-04-01
USRE46446E1 (en) 2017-06-20
JP5002586B2 (ja) 2012-08-15
US8244958B2 (en) 2012-08-14
WO2006120679A2 (en) 2006-11-16
KR20080009314A (ko) 2008-01-28
EP1880293A2 (en) 2008-01-23
JP2008544343A (ja) 2008-12-04
US20060253645A1 (en) 2006-11-09

Similar Documents

Publication Publication Date Title
KR101286477B1 (ko) 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템
KR101288408B1 (ko) 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는 방법과 시스템
US7711923B2 (en) Persistent flash memory mapping table
JP4279553B2 (ja) フラッシュメモリシステムの迅速スリープ解除方法
EP2329360B1 (en) Managing cache data and metadata
EP2353081B1 (en) Managing cache data and metadata
US6938116B2 (en) Flash memory management method
US9003108B2 (en) Relocating data based on matching address sequences
US20070118688A1 (en) Flash-Memory Card for Caching a Hard Disk Drive with Data-Area Toggling of Pointers Stored in a RAM Lookup Table
KR101475483B1 (ko) 비휘발성 버퍼 캐시와 비휘발성 스토리지를 위한 통합 데이터 관리 장치 및 방법
US7945762B2 (en) Method and apparatus for memory management in a non-volatile memory system using a block table
CN115705152A (zh) 使用存储器内日志在非易失性存储器装置中的元数据管理
CN110032526B (zh) 一种基于非易失性介质的页缓存方法、系统及设备
WO2008087634A1 (en) A method and system for facilitating fast wake-up of a flash memory system
CN115705153A (zh) 有条件更新和延迟的查找
Son et al. Nonvolatile write buffer-based journaling bypass for storage write reduction in mobile devices
Park et al. A Crash Recovery Scheme for a Hybrid Mapping FTL in NAND Flash Storage Devices. Electronics 2021, 10, 327

Legal Events

Date Code Title Description
A201 Request for examination
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: 20160616

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 7