KR20130030237A - 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링 - Google Patents

비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링 Download PDF

Info

Publication number
KR20130030237A
KR20130030237A KR1020120102592A KR20120102592A KR20130030237A KR 20130030237 A KR20130030237 A KR 20130030237A KR 1020120102592 A KR1020120102592 A KR 1020120102592A KR 20120102592 A KR20120102592 A KR 20120102592A KR 20130030237 A KR20130030237 A KR 20130030237A
Authority
KR
South Korea
Prior art keywords
index
nvm
pages
data
page
Prior art date
Application number
KR1020120102592A
Other languages
English (en)
Other versions
KR101450396B1 (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 KR20130030237A publication Critical patent/KR20130030237A/ko
Application granted granted Critical
Publication of KR101450396B1 publication Critical patent/KR101450396B1/ko

Links

Images

Classifications

    • 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/1417Boot up procedures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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
    • 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
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • 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

Abstract

비휘발성 메모리("NVM")를 갖는 시스템에 대한 비정상 셧다운들을 핸들링하기 위한 시스템들 및 방법들이 개시된다. 일부 실시예들에서, 시스템은, 비정상 셧다운 이벤트 후에 논리-물리 매핑들을 효율적으로 재구성하기 위해서 인덱스 페이지들로부터 획득된 정보를 활용할 수 있다. 다른 실시예들에서, 시스템은 NVM에 저장된 콘텍스트 정보를 활용함으로써 논리-물리 매핑들을 재구성할 수 있다. 추가 실시예들에서, 콘텍스트 정보는 비정상 셧다운 후에 논리-물리 매핑들을 재구성하기 위해서 인덱스 페이지들과 함께 이용될 수 있다.

Description

비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링{HANDLING UNCLEAN SHUTDOWNS FOR A SYSTEM HAVING NON-VOLATILE MEMORY}
NAND 플래시 메모리뿐만 아니라 비휘발성 메모리들("NVM들")의 다른 유형들은 일반적으로 대용량 스토리지를 위해 이용된다. 예를 들어, 휴대용 미디어 플레이어와 같은 가전 제품은 종종 음악, 비디오 및 다른 미디어를 저장하기 위해서 플래시 메모리를 포함한다.
NVM은 논리 주소들과 물리 주소들 사이의 매핑들을 제공하기 위해서 다수의 인덱스 페이지를 포함할 수 있다. 몇몇 경우에, 보다 빠른 판독을 제공하기 위해서, 가장 최근에 기록된 사용자 데이터에 대응하는 매핑 정보가 디바이스의 휘발성 메모리에 저장된다. 주기적으로, 이 매핑 정보는 휘발성 메모리로부터 NVM의 인덱스 페이지들로 플러싱되어(flushed), 정보의 장기 저장을 제공할 수 있다.
NVM을 갖는 전자 디바이스가 정상적으로(cleanly) 셧다운하는 경우, 휘발성 메모리에 논리-물리 매핑(logical-to-physical mapping)을 재구성하기 위해서 직접 인덱스 페이지들에 저장된 정보가 이용될 수 있다. 그러나, 전자 디바이스가 비정상적으로(uncleanly) 셧다운하는 경우, 인덱스 페이지들의 적어도 일부는 구식이 될 수 있는데, 그 이유는 디바이스가 가장 최근의 매핑 정보를 인덱스 페이지들로 완전히 플러싱하지 않았을 수 있기 때문이다. 그 결과, 휘발성 메모리에 논리-물리 매핑을 재구성하기 위해서 디바이스는 전체 NVM를 스캔할 필요가 있을 수 있다. 이 프로세스는 시간의 관점에서 고비용이 소요될 수 있다.
비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운들을 핸들링하기 위한 시스템들 및 방법들이 개시된다. 일부 실시예들에서, 시스템은, 비정상 셧다운 후에 논리-물리 매핑들을 보다 효율적으로 재구성하기 위해서 인덱스 페이지들로부터 획득된 정보를 활용(leverage)할 수 있다. 본 명세서에 이용된 바와 같이, "인덱스 페이지"는 파일 시스템에 의해 이용되는 논리 주소들과 데이터 페이지들(예컨대, 사용자 데이터를 저장하는 NVM의 페이지들)의 물리 주소들 사이의 매핑들을 저장하는 NVM의 페이지일 수 있다.
다른 실시예들에서, 시스템은, NVM에 또한 저장되는 콘텍스트 정보를 활용함으로써 논리-물리 매핑들을 재구성할 수 있다. 본 명세서에 이용된 바와 같이, "콘텍스트 정보"는 특정 시점에 전체 NVM의 상태와 연관된 정보를 언급할 수 있다. 추가 실시예들에서, 콘텍스트 정보는 비정상 셧다운 후에 논리-물리 매핑들을 재구성하기 위해서 인덱스 페이지들과 함께 이용될 수 있다.
본 발명의 전술한 양태들과 이점들 및 다른 양태들과 이점들은 첨부 도면들과 함께 취해진 다음의 상세한 설명을 고려하면 보다 명백해질 것이며, 이들 도면들에서 유사한 참조 부호들은 그 전체에 걸쳐 유사한 부분들을 언급한다.
도 1 및 도 2는 본 발명의 다양한 실시예들에 따라 구성된 전자 디바이스들의 블록도들.
도 3은 본 발명의 다양한 실시예들에 따른 메모리 매핑 아키텍처의 예시적인 블록도.
도 4는 본 발명의 다양한 실시예들에 따라 비정상 셧다운 이벤트를 핸들링하기 위한 예시적인 프로세스의 흐름도.
도 5는 본 발명의 다양한 실시예들에 따라 데이터 페이지들의 연령들(ages)과 인덱스 페이지의 연령을 비교하기 위한 예시적인 프로세스의 흐름도.
도 6은 본 발명의 다양한 실시예들에 따라 비정상 셧다운 이벤트를 핸들링하기 위한 다른 예시적인 프로세스의 흐름도.
도 7은 본 발명의 다양한 실시예들에 따라 비정상 셧다운 이벤트를 핸들링하기 위한 또 다른 예시적인 프로세스의 흐름도.
비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운들을 핸들링하기 위한 시스템들 및 방법들이 제공된다. 특히, 시스템의 NVM 인터페이스는, 비정상 셧다운 후에 논리-물리 매핑들을 보다 효율적으로 재구성하기 위해서 인덱스 페이지들로부터 획득된 정보를 활용할 수 있다. 본 명세서에 이용된 바와 같이, "인덱스 페이지들"은 파일 시스템에 의해 이용되는 논리 주소들과 데이터 페이지들(예컨대, 사용자 데이터를 저장하는 NVM의 페이지들)의 물리 주소들 사이의 매핑들을 저장하기 위한 NVM의 페이지들일 수 있다.
예를 들어, NVM 인터페이스는 인덱스 페이지들의 연령들을 획득하기 위해서 인덱스 페이지들을 스캔함으로써 재구성을 수행할 수 있다. 그런 다음, NVM 인터페이스는, 인덱스 페이지들의 연령들과 대응하는 데이터 페이지들의 연령들을 비교하여, 특정 인덱스 페이지가 대응하는 데이터 페이지들보다 어린지(예컨대, 최신인지) 또는 오래된 것인지를 결정할 수 있다.
인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이라고 NVM 인터페이스가 결정하는 경우, NVM 인터페이스는, 인덱스 페이지가 신뢰할 수 없는 것(예컨대, 데이터 페이지들이 업데이트된 이후로 인덱스 페이지가 업데이트되지 않았다)이라고 결정할 수 있다. 그 결과, NVM 인터페이스는 논리-물리 매핑들을 재구성하기 위해서 보다 어린 데이터 블록들을 스캔할 수 있다.
이에 반해, 대신에 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이 아니라고 NVM 인터페이스가 결정하는 경우, NVM 인터페이스는, 인덱스 페이지가 신뢰할 수 있는 것(예컨대, 데이터 페이지들 이후에 또는 그와 동시에 인덱스 페이지가 업데이트되었다)이라고 결정할 수 있다. 그 결과, NVM 인터페이스는 휘발성 메모리에 매핑들을 재구성하기 위해서 인덱스 페이지에 저장된 매핑들을 이용할 수 있다.
일부 실시예들에서, 시스템은 NVM에 저장된 콘텍스트 정보를 활용함으로써 논리-물리 매핑들을 재구성할 수 있다. 본 명세서에 이용된 바와 같이, "콘텍스트 정보"는 특정 시점에 전체 NVM의 상태와 연관된 정보를 언급할 수 있다. 추가 실시예들에서, 콘텍스트 정보는 비정상 셧다운 후에 논리-물리 매핑들을 재구성하기 위해서 인덱스 페이지들과 함께 이용될 수 있다.
도 1은 전자 디바이스(100)의 블록도를 도시한다. 일부 실시예들에서, 전자 디바이스(100)는, 휴대용 미디어 플레이어, 셀룰러 전화기, 포켓 크기의 개인용 컴퓨터, PDA(personal digital assistance), 데스크톱 컴퓨터, 랩톱 컴퓨터 및 임의의 다른 적합한 유형의 전자 디바이스이거나 또는 이들을 포함할 수 있다.
전자 디바이스(100)는 SoC(system-on-a-chip; 110) 및 비휘발성 메모리("NVM")(120)를 포함할 수 있다. 비휘발성 메모리(120)는 부동 게이트 또는 전하 트래핑(charge trapping) 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, EPROM(erasable programmable read only memory), EEPROM(electrically erasable programmable read only memory), FRAM(Ferroelectric RAM), MRAM(magnetoresistive RAM) 또는 이들의 임의의 조합을 포함할 수 있다.
NVM(120)은 최소 소거 단위(smallest erasable unit)일 수 있는 "블록들"로 구조화될 수 있고, 프로그래밍되거나 판독될 수 있는 최소 단위일 수 있는 "페이지들"로 또한 구조화될 수 있다. 일부 실시예들에서, NVM(120)은 다수의 집적 회로를 포함할 수 있는데, 여기서 각각의 집적 회로는 다수의 블록을 가질 수 있다. 대응하는 집적 회로들로부터의 메모리 위치들(예컨대, 블록들 또는 블록들의 페이지들)은 "수퍼 블록들"을 형성할 수 있다. NVM(120)의 각각의 메모리 위치(예컨대, 페이지 또는 블록)는 물리 주소(예컨대, 물리 페이지 주소 또는 물리 블록 주소)를 이용하여 참조될 수 있다.
NVM(120)의 하나 이상의 페이지는 SoC(110) 또는 디바이스(100)의 컴포넌트들의 일반적인 동작들과 연관된 데이터를 저장하는데 이용될 수 있는 데이터 페이지들일 수 있다. 또한, NVM(120)의 하나 이상의 페이지는 인덱스 테이블을 저장하는데 이용될 수 있다. 논리 섹터들이 물리 페이지들에 직접 매핑되는 실시예들에서, 논리-물리 매핑들은 인덱스 테이블에 저장될 수 있다. 본 명세서에 이용된 바와 같이, "논리-물리 매핑"은 하나 이상의 논리 주소들(예컨대, 논리 섹터들)과 데이터 페이지들의 물리 페이지 주소들 사이의 매핑일 수 있다. 예를 들어, 인덱스 테이블은 NVM(120)의 데이터 페이지들의 물리 주소들을 유지할 수 있다.
몇몇 경우에, 인덱스 테이블은 다수의 인덱스 페이지를 포함할 수 있는데, 여기서 각각의 인덱스 페이지는 데이터 페이지들의 하나 이상의 물리 주소로 논리 주소들을 매핑할 수 있다. 인덱스 테이블 및 인덱스 페이지들은 도 3과 관련하여 보다 상세히 설명될 것이다.
SoC(system-on-a-chip; 110)는 SoC 제어 회로(112), 메모리(114) 및 NVM 인터페이스(118)를 포함할 수 있다. SoC 제어 회로(112)는 SoC(110) 및 SoC(110) 또는 디바이스(100)의 다른 컴포넌트들의 일반적인 동작들과 기능들을 제어할 수 있다. 예를 들어, 사용자 입력들 및/또는 애플리케이션 또는 운영 체제의 명령어들에 응답하여, SoC 제어 회로(112)는, NVM(120)으로부터 데이터를 획득하거나 이 NVM에 데이터를 저장하기 위해서 NVM 인터페이스(118)에 대해 판독 또는 기록 커맨드들을 발행할 수 있다. 명확성을 위해, SoC 제어 회로(112)가 저장 또는 검색을 위해 요청할 수 있는 데이터는, 이 데이터가 사용자 또는 사용자 애플리케이션과 직접 연관되지 않을 수 있는 경우에도 "사용자 데이터"로 언급될 수 있다. 오히려, 사용자 데이터는 (예컨대, 애플리케이션 또는 운영 체제를 통해) SoC 제어 회로(112)에 의해 생성되거나 이 SoC 제어 회로에 의해 획득된 디지털 정보의 임의의 적합한 시퀀스일 수 있다.
SoC 제어 회로(112)는 하드웨어, 소프트웨어 및 펌웨어의 임의의 조합, 및 전자 디바이스(100)의 기능성을 구동하도록 동작가능한 임의의 컴포넌트들, 회로 또는 로직을 포함할 수 있다. 예를 들어, SoC 제어 회로(112)는 NVM(120) 또는 메모리(114)에 저장된 소프트웨어/펌웨어의 제어 하에 동작하는 하나 이상의 프로세서를 포함할 수 있다.
메모리(114)는 임의의 적합한 유형의 휘발성 메모리, 예를 들어 RAM(random access memory)(예컨대, SRAM(static RAM), DRAM(dynamic random access memory), SDRAM(synchronous dynamic random access memory), DDR(double-data-rate) RAM), 캐시 메모리, ROM(read-only memory), 또는 이들의 임의의 조합을 포함할 수 있다. 메모리(114)는, 비휘발성 메모리(120)로 프로그래밍하거나 이 비휘발성 메모리로부터 판독하기 위한 사용자 데이터를 일시적으로 저장할 수 있는 데이터 소스를 포함할 수 있다. 일부 실시예들에서, 메모리(114)는 SoC 제어 회로(112)의 일부로 구현된 임의의 프로세서들에 대한 메인 메모리의 역할을 할 수 있다.
메모리(114)는 룩업 테이블 및/또는 인덱스 테이블 캐시를 포함할 수 있다. 룩업 테이블은 NVM(120)에 저장된 인덱스 테이블의 위치(예컨대, 물리 주소)를 유지할 수 있다. 인덱스 테이블 캐시는, 보다 빠른 판독을 제공하기 위해서, 최근에 기록된 논리 주소들(예컨대, 논리 섹터들)의 물리 주소들을 유지할 수 있다. 주기적으로, 인덱스 테이블 캐시에 저장된 정보는 인덱스 테이블 캐시로부터 NVM(120)의 인덱스 페이지들로 플러싱될 수 있다.
일부 실시예들에서, 인덱스 테이블 캐시의 크기는 인덱스 페이지들의 크기의 작은 부분일 수 있다. 인덱스 테이블 캐시보다 오히려 인덱스 페이지들에 매핑 정보의 대부분을 저장함으로써, 메모리(114)에서 보다 많은 공간이 다른 목적들을 위해 해방될 수 있다. 룩업 테이블 및 인덱스 테이블 캐시는 도 3과 관련하여 보다 상세히 설명될 것이다.
NVM 인터페이스(118)는 SoC 제어 회로(112)와 NVM(120) 사이의 인터페이스 또는 드라이버의 역할을 하도록 구성된 하드웨어, 소프트웨어 및/또는 펌웨어의 임의의 적합한 조합을 포함할 수 있다. NVM 인터페이스(118)에 포함된 임의의 소프트웨어 모듈들에 대해, 대응하는 프로그램 코드는 NVM(120) 또는 메모리(114)에 저장될 수 있다.
NVM 인터페이스(118)는, SoC 제어 회로(112)가 NVM(120)에 액세스하며 NVM(120)의 메모리 위치들(예컨대, 페이지들, 블록들, 수퍼 블록들, 집적 회로들) 및 거기에 저장된 데이터(예컨대, 사용자 데이터)를 관리할 수 있게 하는 다양한 기능들을 수행할 수 있다. 예를 들어, NVM 인터페이스(118)는 SoC 제어 회로(112)로부터의 판독 또는 기록 요청들을 해석하고, 웨어 레벨링(wear leveling)을 수행하고, NVM(120)의 버스 프로토콜과 호환성이 있는 판독 및 프로그램 명령어들을 생성할 수 있다.
NVM 인터페이스(118)와 SoC 제어 회로(112)는 개별 모듈들로서 도시되어 있지만, 이것은 단지 본 발명의 실시예들의 설명을 간략하게 하기 위한 것이다. 이러한 모듈들은 하드웨어 컴포넌트들, 소프트웨어 컴포넌트들 또는 이들 모두를 공유할 수 있다는 것을 이해해야 한다. 예를 들어, SoC 제어 회로(112)는 NVM 인터페이스(118)를 위한 소프트웨어 기반 메모리 드라이버를 실행할 수 있다.
일부 실시예들에서, 전자 디바이스(100)는 타깃 디바이스, 예를 들어 NVM(120) 및 NVM 인터페이스(118)의 일부 또는 전부(예컨대, 후술되는 변환 계층)를 포함하는 플래시 메모리 드라이브 또는 SD(Secure Digital) 카드를 포함할 수 있다. 이러한 실시예들에서, SoC(110) 또는 SoC 제어 회로(112)는 타깃 디바이스를 위한 호스트 제어기의 역할을 할 수 있다. 예를 들어, 호스트 제어기로서, SoC(110)는 타깃 디바이스에 판독 및 기록 요청들을 발행할 수 있다.
도 2는 다양한 실시예들에 따라 전자 디바이스(100)(도 1)의 펌웨어, 소프트웨어 및/또는 하드웨어 컴포넌트들의 일부를 보다 상세히 설명할 수 있는 전자 디바이스(200)의 블록도를 도시한다. 전자 디바이스(200)는 도 1과 관련하여 위에서 설명한 특징들 및 기능성들 중 임의의 것을 가질 수도 있고 그 반대일 수도 있다. 도시된 바와 같이, 파선들은 계층들의 경계를 정한다. 컴포넌트들이 경계 라인들 내에 있는 도시는 단지 예시적일 뿐이며, 하나 이상의 컴포넌트가 상이한 계층과 연관될 수 있다고 이해된다.
전자 디바이스(200)는 파일 시스템(210), NVM 드라이버(212), NVM 버스 제어기(216) 및 NVM(220)을 포함할 수 있다. 일부 실시예들에서, 파일 시스템(210) 및 NVM 드라이버(212)는 소프트웨어 또는 펌웨어 모듈들일 수 있고, NVM 버스 제어기(216) 및 NVM(220)은 하드웨어 모듈들일 수 있다. 따라서, 이러한 실시예들에서, NVM 드라이버(212)는 NVM 인터페이스(218)의 소프트웨어 또는 펌웨어 양태를 나타낼 수 있고, NVM 버스 제어기(216)는 NVM 인터페이스(218)의 하드웨어 양태를 나타낼 수 있다.
파일 시스템(210)은, 임의의 적합한 유형의 파일 시스템, 예를 들어 FAT(File Allocation Table) 파일 시스템 또는 HFS+(Hierarchical File System Plus)를 포함할 수 있고, 전자 디바이스(200)의 운영 체제의 일부(예컨대, 도 1의 SoC 제어 회로(112)의 일부)일 수 있다. 일부 실시예들에서, 파일 시스템(210)은 페이지들의 논리-물리 매핑을 제공하는 플래시 파일 시스템을 포함할 수 있다. 이러한 실시예들에서, 파일 시스템(210)은 아래 논의된 NVM 드라이버(212)의 기능성의 일부 또는 전부를 수행할 수 있으므로, 파일 시스템(210) 및 NVM 드라이버(212)는 개별 모듈들일 수도 있고 아닐 수도 있다.
파일 시스템(210)은 애플리케이션과 운영 체제를 위한 파일 및 폴더 구조들을 관리할 수 있다. 파일 시스템(210)은 전자 디바이스(200)에서 실행되는 애플리케이션 또는 운영 체제의 제어 하에 동작할 수 있고, 정보가 NVM(220)으로부터 판독되거나 이 NVM에 저장되는 것을 애플리케이션 또는 운영 체제가 요청할 때 NVM 드라이버(212)에 기록 및 판독 커맨드들을 제공할 수 있다. 각각의 판독 또는 기록 커맨드와 함께, 파일 시스템(210)은, 페이지 오프셋으로 논리 페이지 주소 또는 논리 블록 주소("LBA")와 같이 사용자 데이터가 판독되거나 기록되어야 하는 곳을 표시하기 위해서 논리 주소를 제공할 수 있다.
파일 시스템(210)은 NVM(220)와 직접 호환가능하지 않은 NVM 드라이버(212)에 판독 및 기록 요청들을 제공할 수 있다. 예를 들어, 논리 주소들은 하드 드라이브 기반 시스템들에 통상적인 협약들 또는 프로토콜들을 이용할 수 있다. 하드 드라이브 기반 시스템은, 플래시 메모리와는 달리, 먼저 블록 소거를 수행하지 않고 메모리 위치에 겹쳐쓰기(overwrite)할 수 있다. 또한, 하드 드라이브들은 디바이스의 수명을 증가시키기 위해서 웨어 레벨링을 필요로 하지 않을 수 있다. 따라서, NVM 인터페이스(218)는 파일 시스템 요청들을 핸들링하기 위해서 메모리-특정, 벤더-특정 또는 이들 모두인 임의의 기능들을 수행하며, NVM(220)에 적합한 방식으로 다른 관리 기능들을 수행할 수 있다.
NVM 드라이버(212)는 변환 계층(214)을 포함할 수 있다. 일부 실시예들에서, 변환 계층(214)은 FTL(flash translation layer)이거나 이것을 포함할 수 있다. 기록 커맨드에 대해, 변환 계층(214)은 NVM(220) 상의 프리인 소거된 물리 위치에 대해 제공된 논리 주소를 매핑할 수 있다. 판독 커맨드에 대해, 변환 계층(214)은 요청된 데이터가 저장되는 물리 주소를 결정하기 위해서 제공된 논리 주소를 이용할 수 있다. 각각의 NVM이 NVM의 크기 또는 벤더에 따라 상이한 레이아웃을 가질 수 있기 때문에, 이러한 매핑 동작은 메모리 및/또는 벤더-특정일 수 있다. 변환 계층(214)은 논리-물리 주소 매핑에 부가하여 임의의 다른 적합한 기능들을 수행할 수 있다. 예를 들어, 변환 계층(214)은, 플래시 변환 계층들에 통상적인 다른 기능들 중 임의의 기능, 예를 들어 가비지 컬렉션(garbage collection) 및 웨어 레벨링을 수행할 수 있다.
NVM 드라이버(212)는 NVM 액세스 커맨드들(예컨대, 프로그램, 판독 및 소거 커맨드들)을 완료하기 위해 NVM 버스 제어기(216)와 인터페이스할 수 있다. 버스 제어기(216)는 NVM(220)에 대한 하드웨어 인터페이스의 역할을 할 수 있고, NVM(220)의 버스 프로토콜, 데이터 레이트 및 다른 규격들을 이용하여 NVM(220)과 통신할 수 있다.
NVM 인터페이스(218)는 본 명세서에서 때때로 "메타데이터"로 언급된 메모리 관리 데이터에 기초하여 NVM(220)을 관리할 수 있다. 메타데이터는 NVM 드라이버(212)에 의해 생성될 수 있거나, 또는 NVM 드라이버(212)의 제어 하에 동작하는 모듈에 의해 생성될 수 있다. 예를 들어, 메타데이터는, 논리 주소와 물리 주소 사이의 매핑, 불량(bad) 블록 관리, 웨어 레벨링, 데이터 오류를 검출하거나 정정하기 위해 이용되는 오류 정정 코드(error-correcting code; "ECC") 데이터, 또는 이들의 임의의 조합을 관리하기 위해 이용되는 임의의 정보를 포함할 수 있다. 메타데이터는 사용자 데이터와 함께 파일 시스템(210)에 의해 제공된 데이터, 예를 들어 논리 주소를 포함할 수 있다. 따라서, 일반적으로, "메타데이터"는, 사용자 데이터에 대한 또는 이 데이터에 관련되거나, 또는 비휘발성 메모리의 동작 및 메모리 위치들을 관리하기 위해 일반적으로 이용되는 임의의 정보를 지칭할 수 있다.
NVM 인터페이스(218)는 NVM(220)에 메타데이터를 저장하도록 구성될 수 있다. 일부 실시예들에서, NVM 인터페이스(218)는 사용자 데이터가 저장되는 동일한 메모리 위치(예컨대, 페이지)에서 사용자 데이터와 연관된 메타데이터를 저장할 수 있다. 예를 들어, NVM 인터페이스(218)는 NVM(220)의 하나 이상의 메모리 위치에 사용자 데이터, 연관된 논리 주소 및 사용자 데이터에 대한 ECC 데이터를 저장할 수 있다. NVM 인터페이스(218)는 또한 동일한 메모리 위치에 사용자 데이터에 관한 다른 유형의 메타데이터를 저장할 수 있다.
NVM 인터페이스(218)는 논리 주소를 저장할 수 있어, NVM(220)의 파워업 시에 또는 NVM(220)의 동작 중에, 어떤 데이터가 그 위치에 있는지를 전자 디바이스(200)가 결정할 수 있게 한다. 특히, 파일 시스템(210)이 사용자 데이터를 그 물리 주소가 아니라 그 논리 주소에 따라 참조할 수 있기 때문에, NVM 인터페이스(218)는 그들의 연관성을 유지하기 위해 사용자 데이터와 논리 주소를 함께 저장할 수 있다. 이 방식은, 물리-논리 매핑을 유지하는 NVM(220)에서의 인덱스 테이블이 구식이 되는 경우에도, NVM 인터페이스(218)는 여전히 예를 들어 전자 디바이스(200)의 파워업 시에 또는 재부팅 시에 적절한 매핑을 결정할 수 있다.
이하, 도 3을 참조하면, 물리 페이지들에 논리 주소들을 매핑하기 위한 예시적인 메모리 매핑 아키텍처(300)를 예시하는 블록도가 도시되어 있다. 아키텍처(300)는 휘발성 메모리(파선의 좌측에 도시됨)와 비휘발성 메모리(파선의 우측에 도시됨)로 분할된다. 룩업 테이블(302) 및 인덱스 테이블 캐시(304)는 휘발성 메모리(예컨대, 도 1의 메모리(114))에 저장되는 반면, 인덱스 테이블(306) 및 데이터 페이지들(308)은 비휘발성 메모리(예컨대, 도 1의 NVM(120) 또는 도 2의 NVM(220))에 저장된다. 도 3에 도시된 바와 같이, 데이터 페이지들(308)은 데이터 블록 1 내지 데이터 블록 N에 포함된다.
인덱스 테이블(306)은 인덱스 페이지 1 내지 인덱스 페이지 N을 포함할 수 있다. 인덱스 테이블(306)의 인덱스 페이지 1 내지 인덱스 페이지 N 각각은 하나 이상의 논리-물리 매핑을 저장할 수 있다. 예를 들어, 도 3에 도시된 바와 같이, 인덱스 테이블(306)의 인덱스 페이지 1은 데이터 블록 1과 데이터 블록 N의 하나 이상의 데이터 페이지에 논리 주소들을 매핑할 수 있다.
룩업 테이블(302)은 인덱스 테이블(306)의 위치(예컨대, 물리 주소들)를 유지할 수 있다. 예를 들어, 룩업 테이블(302)은 인덱스 테이블(306)의 일부를 형성하는 인덱스 페이지 1 내지 인덱스 페이지 N의 논리-물리 매핑들을 유지할 수 있다. 또한, 룩업 테이블(302)은 또한 인덱스 테이블 캐시(304)의 메모리 위치(들)를 저장할 수 있다.
인덱스 테이블 캐시(304)는 최근에 기록되거나 액세스된 논리 주소들의 물리 주소들을 유지할 수 있다. 즉, 캐시(304)는 현재 프로그래밍 중이거나 또는 최근에 프로그래밍된 데이터 페이지들(308)에 대한 논리-물리 매핑들을 유지할 수 있다. 주기적으로, 캐시(304)에 저장된 정보는 인덱스 테이블(306)의 인덱스 페이지 1 내지 인덱스 페이지 N으로 플러싱될 수 있다. 그 결과, 캐시(304)는 인덱스 테이블(306)에 또한 저장될 수 있는 매핑의 중복 사본(redundant copy)을 때때로 제공할 수 있다.
전자 디바이스가 정상적으로 셧다운하는 경우(예컨대, 캐시(304)에 저장된 모든 정보가 인덱스 테이블(306)로 플러싱된 경우), 디바이스는 인덱스 페이지 1 내지 인덱스 페이지 N에 저장된 논리-물리 매핑들이 유효하다고 가정할 수 있다. 그 결과, 디바이스가 파워온되거나 재부팅된 후에, 디바이스는 휘발성 메모리에 매핑들을 재구성하기 위해서 인덱스 페이지 1 내지 인덱스 페이지 N에 저장된 매핑들을 직접 이용할 수 있다. 예를 들어, NVM 인터페이스(예컨대, 도 1의 NVM 인터페이스(118) 또는 도 2의 NVM 인터페이스(218))는 인덱스 페이지 1 내지 인덱스 페이지 N의 논리-물리 매핑들을 캐시(304)로 복사할 수 있다. 인덱스 페이지 1 내지 인덱스 페이지 N이 단지 데이터 페이지들(308)의 크기의 일부를 차지할 수 있기 때문에, 이 프로세스는 전체 NVM을 스캔함으로써 논리-물리 매핑들을 획득하는 것과 비교하여 보다 효율적일 수 있다.
이에 반해, 전자 디바이스가 비정상적으로 셧다운하는 경우(예컨대, 캐시(304)에 저장된 정보 중 적어도 일부가 인덱스 테이블(306)로 플러싱되지 않은 경우), 디바이스는 인덱스 테이블(306)에 저장된 정보에 종속가능하지 않을 수 있다. 특히, 인덱스 테이블(306)은 가장 최근에 기록되거나 소거된 사용자 데이터를 캡처하지 못할 수 있다.
통상적으로, 일단 디바이스가 재부팅되면, 인덱스 테이블(306)에 저장된 논리-물리 매핑들이 무효인 것으로 가정된다. 따라서, 디바이스는 캐시(304)에 논리-물리 매핑들을 재구성하기 위해서 NVM의 데이터 블록들을 스캔하는 것을 진행할 수 있다. 예를 들어, 디바이스는 데이터 블록과 연관되는 블록 TOC(table-of-contents)를 판독함으로써 데이터 블록을 스캔할 수 있다. 예를 들어, 도 3에 도시된 예에서, 블록 TOC 1은 데이터 블록 1과 연관될 수 있고, 블록 TOC N은 데이터 블록 N과 연관될 수 있는 등이다. 각각의 블록 TOC는 대응하는 데이터 블록에 저장될 수 있고, 데이터 블록의 데이터 페이지들을 대응하는 논리 주소들에 매핑하는 정보를 포함할 수 있다. 통상적인 시스템에서, 블록 TOC는, 프로그래밍되는 각각의 페이지에 대한 논리 주소(예컨대, LBA 또는 논리 페이지 번호)만을 포함할 수 있다. 다른 실시예들에서, 블록 TOC는 또한 (예컨대, 페이지가 다른 데이터 및/또는 인덱스 페이지들에 대하여 업데이트된 경우) 페이지에 대해 행해진 업데이트들의 상대 연령을 포함할 수 있다. 이러한 구성에서, 블록 TOC는 프로그래밍되는 각각의 데이터 및/또는 인덱스 페이지에 대한 논리 주소-연령 쌍을 포함할 수 있다.
이전에 논의된 바와 같이, NVM의 각각의 데이터 블록을 스캔하는 프로세스는 시간 소모적이며 비효율적일 수 있다. 따라서, NVM의 데이터 블록들 모두를 자동으로 스캔하는 대신에, 디바이스는, 비정상 셧다운 후에 논리-물리 매핑들을 보다 효율적으로 재구성하기 위해서 다른 소스들(예컨대, 인덱스 페이지들 및/또는 콘텍스트 정보)로부터 획득된 정보를 활용할 수 있다. 이하, 도 4 내지 도 7을 참조하면, 본 발명의 다양한 실시예들에 따른 예시적인 프로세스들의 흐름도가 도시되어 있다. 이러한 프로세스들은 시스템(예컨대, 도 1의 전자 디바이스(100) 또는 도 2의 전자 디바이스(200))의 하나 이상의 컴포넌트에 의해 실행될 수 있다. 예를 들어, 도 4 내지 도 7의 프로세스들에서의 단계들 중 적어도 일부는 NVM 인터페이스(예컨대, 도 1의 NVM 인터페이스(118) 또는 도 2의 NVM 인터페이스(218))에 의해 수행될 수 있다. 또한, 당업자라면, 단계들의 적어도 일부가 제어 회로(예컨대, 도 1의 SoC 제어 회로(112))에 의해 수행될 수 있다는 것을 인식할 것이다.
먼저, 도 4를 참조하면, 비정상 셧다운 이벤트를 핸들링하기 위한 프로세스(400)가 도시되어 있다. 프로세스(400)는 단계 402에서 시작할 수 있고, 단계 404에서, NVM 인터페이스는 비정상 셧다운 이벤트가 발생했다고 결정할 수 있다.
단계 406에서, NVM 인터페이스는 인덱스 페이지들의 연령들에 대해 NVM(예컨대, 도 1의 NVM(120) 또는 도 2의 NVM(220))의 다수의 인덱스 페이지(예컨대, 도 3의 인덱스 페이지 1 내지 인덱스 페이지 N)를 스캔할 수 있다. 인덱스 페이지의 연령은 그 인덱스 페이지의 신뢰도의 표시일 수 있다.
단계 408로 계속하면, NVM 인터페이스는 인덱스 페이지들에 대응하는 NVM의 데이터 페이지들의 연령들과 인덱스 페이지들의 연령들을 비교할 수 있다. 이러한 비교에 기초하여, NVM 인터페이스는, 특정 인덱스 페이지가 대응하는 데이터 페이지들보다 어린지(예컨대, 보다 최신인지) 또는 보다 오래된 것인지를 결정할 수 있다.
당업자라면, 임의의 적합한 파라미터(들)(예컨대, 메타데이터로서 저장된 하나 이상의 파라미터)가 인덱스 페이지들과 대응하는 데이터 페이지들의 상대 연령들을 비교하기 위해 이용될 수 있다는 것을 인식할 것이다. 예를 들어, 페이지의 연령과 반대로 관련될 수 있는 카운터가 이용될 수 있다(예컨대, 보다 오래된 페이지가 보다 작은 카운터와 연관될 수 있고, 보다 어린 페이지가 보다 큰 카운터와 연관될 수 있음).
인덱스 페이지들의 연령들과 대응하는 데이터 페이지들의 연령들을 비교한 후에, 프로세스(400)는 단계 410으로 이동할 수 있다. 단계 410에서, NVM 인터페이스는 이 비교에 적어도 부분적으로 기초하여 각각의 인덱스 페이지의 신뢰도를 결정할 수 있다.
특히, 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이라고 NVM 인터페이스가 결정하는 경우, NVM 인터페이스는, 인덱스 페이지가 신뢰할 수 없는 것이므로 무효인 것(예컨대, 대응하는 데이터 페이지들이 업데이트된 이후로 인덱스 페이지가 업데이트되지 않았음)으로 결정할 수 있다. 그 결과, NVM 인터페이스는 인덱스 페이지의 논리 주소들에 대응하는 논리-물리 매핑들을 재구성하기 위해서 보다 어린 데이터 블록들을 스캔할 수 있다.
이에 반해, 대신에 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이 아니라고(예컨대, 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 어리거나 그와 동일하다고) NVM 인터페이스가 결정하는 경우, NVM 인터페이스는, 인덱스 페이지가 신뢰할 수 있는 것이므로 유효하다고 결정할 수 있다(예컨대, 인덱스 페이지는 대응하는 데이터 페이지들 후에 또는 그와 동시에 업데이트되었음). 그 결과, 인덱스 페이지에 저장된 논리-물리 매핑들은 유효한 것으로 간주될 수 있고, NVM 인터페이스는 휘발성 메모리에 매핑들을 재구성하기 위해서 인덱스 페이지의 매핑들을 이용할 수 있다. 그런 다음, 프로세스(400)는 단계 412에서 종료할 수 있다.
이러한 접근법을 이용함으로써, NVM 인터페이스는, NVM의 모든 데이터 블록을 스캔하는 것을 회피할 수 있고, 대신에 휘발성 메모리에 논리-물리 매핑들을 재구성하기 위해서 인덱스 페이지들의 서브세트(예컨대, 유효한 인덱스 페이지들)를 직접 이용할 수 있다. 또한, 무효한 인덱스 페이지들이 인덱스 페이지들의 전체 개수의 작은 부분을 구성할 수 있기 때문에, NVM 인터페이스는 단지 무효한 인덱스 페이지들의 논리 주소들에 대응하는 데이터 블록들의 작은 서브세트만 스캔할 필요가 있을 수 있다. 따라서, 이러한 접근법은 비정상 셧다운 이벤트 후에 논리-물리 매핑들을 재구성하기 위해 요구되는 시간의 양을 상당히 감소시킬 수 있다.
이하, 도 5를 참조하면, NVM(예컨대, 도 1의 NVM(120) 또는 도 2의 NVM(220))의 데이터 페이지들의 연령들과 인덱스 페이지의 연령을 비교하기 위한 프로세스(500)가 도시되어 있다. 일부 실시예들에서, 프로세스(500)는 프로세스(400)(도 4)의 비교 단계 408 및 결정 단계 410의 보다 상세한 뷰를 나타낼 수 있다.
프로세스(500)는 단계 502에서 시작할 수 있고, 단계 504에서, NVM 인터페이스는 NVM에 저장된 인덱스 페이지를 선택할 수 있다. 예를 들어, NVM 인터페이스는 인덱스 테이블(306)(도 3)로부터 인덱스 페이지를 선택할 수 있다.
그런 다음, 단계 506에서, NVM 인터페이스는, 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것인지를 결정할 수 있다. 예를 들어, NVM 인터페이스는, 인덱스 페이지의 카운터가 대응하는 데이터 페이지들의 카운터들보다 큰지를 결정할 수 있으며, 그에 따라 인덱스 페이지가 유효한지를 결정할 수 있다. 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이 아니라고(예컨대, 인덱스 페이지의 카운터가 대응하는 데이터 페이지들의 카운터들과 동일하거나 그보다 크다고) NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 508로 이동할 수 있다. 즉, NVM 인터페이스는, 인덱스 페이지가 유효한 인덱스 페이지라고 결정하였다.
단계 508에서, NVM 인터페이스는, 아직 선택되지 않은 부가적인 인덱스 페이지들이 존재하는지를 결정할 수 있다. 단계 508에서, 부가적인 인덱스 페이지들이 존재하지 않는다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 510에서 종료할 수 있다. 단계 508에서, 대신에 부가적인 인덱스 페이지들이 존재한다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 504로 복귀할 수 있는데, 여기서 NVM 인터페이스는 다른 인덱스 페이지를 선택할 수 있다.
단계 506을 다시 참조하면, 대신에 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 연령들보다 오래된 것이라고(예컨대, 인덱스 페이지의 카운터가 대응하는 데이터 페이지들의 카운터들보다 작다고) NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 512로 이동할 수 있다. 즉, NVM 인터페이스는, 인덱스 페이지가 무효한 인덱스 페이지라고 결정하였다.
단계 512에서, NVM 인터페이스는 인덱스 페이지의 연령보다 어린 연령들의 데이터 페이지들을 갖는 NVM의 하나 이상의 데이터 블록을 스캔할 수 있다. 그런 다음, 프로세스(500)는 단계 514로 이동할 수 있다.
단계 514에서, NVM 인터페이스는 하나 이상의 데이터 블록 중 하나의 데이터 블록을 선택할 수 있는데, 여기서 선택된 데이터 블록은 인덱스 페이지와 연관되는 하나 이상의 데이터 페이지를 포함한다(예컨대, 인덱스 페이지는 선택된 데이터 블록의 하나 이상의 데이터 페이지에 대응하는 논리-물리 매핑들을 저장할 수 있다).
그런 다음, 단계 516에서, NVM 인터페이스는, 하나 이상의 데이터 페이지의 연령들이 인덱스 페이지의 연령보다 어린지를 결정할 수 있다. 단계 516에서, 하나 이상의 데이터 페이지의 연령들이 인덱스 페이지의 연령보다 어리지 않다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 518로 이동할 수 있다.
단계 518에서, NVM 인터페이스는, 하나 이상의 데이터 블록에 부가적인 데이터 블록들이 존재하는지를 결정할 수 있다. 단계 518에서, 부가적인 데이터 블록들이 존재한다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 514로 이동할 수 있다. 단계 514에서, NVM 인터페이스는 인덱스 페이지와 연관되는 하나 이상의 데이터 페이지를 갖는 다른 데이터 블록을 선택할 수 있다. 단계 518에서, 부가적인 데이터 블록들이 존재하지 않는다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 508로 이동할 수 있는데, 여기서 NVM 인터페이스는, 부가적인 인덱스 페이지들이 존재하는지를 결정할 수 있다.
단계 516을 다시 참조하면, 대신에 하나 이상의 데이터 페이지의 연령들이 인덱스 페이지의 연령보다 어리다고 NVM 인터페이스가 결정하는 경우, 프로세스(500)는 단계 520으로 이동할 수 있다. 단계 520에서, NVM 인터페이스는 휘발성 메모리(예컨대, 도 1의 메모리(114))의 인덱스 테이블 캐시(예컨대, 도 3의 인덱스 테이블 캐시(304))에 인덱스 페이지를 복사할 수 있다.
단계 522에서, NVM 인터페이스는 선택된 데이터 블록을 이용하여 캐시의 하나 이상의 엔트리를 업데이트할 수 있다. 예를 들어, 선택된 데이터 블록을 이용하여, NVM 인터페이스는 인덱스 페이지의 하나 이상의 논리 주소에 대응하는 논리-물리 매핑들을 재구성할 수 있다.
일부 실시예들에서, NVM 인터페이스는 선택된 데이터 블록의 블록 TOC(예컨대, 도 3의 데이터 블록 1의 블록 TOC 1 또는 데이터 블록 N의 블록 TOC N)를 판독함으로써 논리-물리 매핑들을 재구성할 수 있다. 예를 들어, 블록 TOC가 논리-물리 매핑들에 부가하여 페이지 업데이트들의 상대 연령을 포함하는 경우, NVM 인터페이스는 블록 TOC만을 참조함으로써 업데이트된 논리-물리 매핑들을 획득할 수 있다.
다른 실시예들에서, NVM 인터페이스는 선택된 데이터 블록에 저장된 메타데이터를 스캔함으로써 논리-물리 매핑들을 재구성할 수 있다. 예를 들어, 블록 TOC가 프로그래밍된 페이지의 논리 주소만을 포함하는 경우, NVM 인터페이스는 메타데이터를 스캔함으로써 페이지의 연령을 결정하고, 업데이트된 논리-물리 매핑들을 획득할 수 있다. 인덱스 페이지의 하나 이상의 엔트리를 업데이트한 후, 프로세스(500)는 단계 522로 이동할 수 있다. 일부 실시예들에서, NVM 인터페이스는 재구성된 논리-물리 매핑들로 인덱스 테이블(예컨대, 도 3의 인덱스 테이블(306))을 업데이트할 수 있다.
그런 다음, 프로세스(500)는 단계 518로 이동할 수 있는데, 여기서 NVM 인터페이스는 부가적인 데이터 블록들이 존재하는지를 결정할 수 있다.
이하, 도 6을 참조하면, 콘텍스트 정보를 이용하여 비정상 셧다운 이벤트를 핸들링하기 위한 예시적인 프로세스(600)의 흐름도가 도시되어 있다. 특히, NVM 인터페이스는 NVM(예컨대, 도 1의 NVM(120) 또는 도 2의 NVM(220))에 저장된 콘텍스트 정보를 활용함으로써 논리-물리 매핑들을 재구성할 수 있다. 본 명세서에 이용된 바와 같이, "콘텍스트 정보"는 특정 시점에 전체 NVM의 상태와 연관된 정보를 언급할 수 있다. 예를 들어, 콘텍스트 정보는 특정 시점에서의 NVM의 데이터 블록들 모두에 대한 논리-물리 매핑들을 포함할 수 있다.
일부 실시예들에서, 콘텍스트 정보는 NVM의 하나 이상의 지정 블록에 저장될 수 있다. 예를 들어, 도 3을 다시 참조하면, 콘텍스트 블록(310)은 콘텍스트 정보를 저장하기 위해 이용되는 NVM의 블록일 수 있다.
도 6을 다시 참조하면, 프로세스(600)는 단계 602에서 시작할 수 있고, 단계 604에서, NVM 인터페이스는 비정상 셧다운 이벤트가 발생했다는 것을 검출할 수 있다. 그런 다음, 단계 606에서, NVM 인터페이스는 비정상 셧다운 이벤트 이전에 NVM에(예컨대, 도 3의 콘텍스트 블록(310)에) 저장된 콘텍스트 정보를 검색할 수 있다. 즉, NVM 인터페이스는 비정상 셧다운 이벤트가 발생하기 전에 NVM에 저장된 콘텍스트 정보의 최신 사본을 획득할 수 있다. 콘텍스트 정보를 검색한 후에, 프로세스(600)는 단계 608로 이동할 수 있다.
단계 608에서, NVM 인터페이스는 휘발성 메모리(예컨대, 도 1의 메모리(114))에 콘텍스트 정보(예컨대, 콘텍스트 정보의 최신 사본)를 로딩할 수 있다. 예를 들어, NVM 인터페이스는 휘발성 메모리의 캐시(예컨대, 도 3의 인덱스 테이블 캐시(304)) 및/또는 룩업 테이블(예컨대, 도 3의 룩업 테이블(302))에 콘텍스트 정보를 로딩할 수 있다.
그런 다음, 단계 610에서, NVM 인터페이스는 로딩된 콘텍스트 정보의 연령보다 어린 연령들(예컨대, 콘텍스트 정보가 저장되어 있는 콘텍스트 블록의 카운터보다 큰 하나 이상의 데이터 블록의 카운터들)을 갖는 NVM의 하나 이상의 데이터 블록을 식별할 수 있다. 특히, 이러한 데이터 블록들은 콘텍스트 정보에 의해 캡처되지 않은 업데이트된 논리-물리 매핑들을 포함할 수 있다. 그런 다음, 프로세스(600)는 단계 612로 진행할 수 있다.
단계 612에서, NVM 인터페이스는 하나 이상의 데이터 블록의 완전 복구(full restore)를 수행할 수 있다. 예를 들어, NVM 인터페이스는 논리-물리 매핑들을 획득하기 위해서 하나 이상의 데이터 블록을 스캔(예컨대, 데이터 블록들의 메타데이터 및/또는 하나 이상의 블록 TOC들을 판독)할 수 있다. 콘텍스트 정보가 최근에 저장된 경우, 논리-물리 매핑들을 재구성하기 위한 시간이 감소되는데, 그 이유는 완전 복구가 단지 데이터 블록들의 작은 서브세트에 대해서만 수행되어야 할 것이기 때문이다.
그런 다음, 프로세스(600)는 단계 614에서 종료할 수 있다. 완전 복구 프로세스에 대한 보다 상세한 설명은, 2009년 7월 24일자로 출원되었으며 발명의 명칭이 "Restore Index Page"인 Wakrat 등에 의한 미국 특허 출원 제12/509,071호에서 발견될 수 있는데, 이 특허 출원은 본 명세서에 완전히 참고로 포함되어 있다.
이하, 도 7을 참조하면, 하이브리드 접근법을 이용하여 비정상 셧다운 이벤트를 핸들링하기 위한 예시적인 프로세스(700)의 흐름도가 도시되어 있다. 특히, NVM 인터페이스는 콘텍스트 정보와 인덱스 페이지들 모두를 활용함으로써 논리-물리 매핑들을 재구성할 수 있다.
프로세스(700)는 단계 702에서 시작할 수 있고, 단계 704에서, NVM 인터페이스는 비정상 셧다운 이벤트가 발생했다는 것을 검출할 수 있다. 그런 다음, 단계 706에서, NVM 인터페이스는 콘텍스트 정보를 이용하여 NVM의 데이터 블록들의 세트에 대한 논리-물리 매핑들을 획득할 수 있다. 예를 들어, 데이터 블록들의 세트는 콘텍스트 정보가 마지막으로 저장된 이후에 업데이트되지 않은 데이터 블록들일 수 있다.
단계 708로 계속하면, NVM 인터페이스는 NVM의 나머지 데이터 블록들에 대한 논리-물리 매핑들을 재구성할 수 있다. 예를 들어, NVM 인터페이스는 하나 이상의 인덱스 페이지를 이용하여 논리-물리 매핑들을 재구성할 수 있다. 나머지 데이터 블록들은 콘텍스트 정보에 의해 캡처되지 않은 데이터 블록들(예컨대, 콘텍스트 정보가 마지막으로 저장된 이후에 업데이트된 데이터 블록들)을 포함할 수 있다.
나머지 데이터 블록들에 대한 논리-물리 매핑들을 재구성하기 위해서, NVM 인터페이스는 프로세스(400)(도 4) 및 프로세스(500)(도 5)와 유사한 프로세스를 이용할 수 있다. 예를 들어, 하나 이상의 인덱스 페이지는 나머지 데이터 블록들의 물리 주소들과 대응하는 논리 주소들 사이의 매핑을 저장할 수 있다. 특히, NVM 인터페이스는, 하나 이상의 인덱스 페이지의 연령들이 대응하는 데이터 페이지들의 연령들보다 오래된 것인지를 결정할 수 있다.
하나 이상의 인덱스 페이지의 연령들이 대응하는 데이터 페이지들의 연령들보다 오래된 것이라고 NVM 인터페이스가 결정하는 경우, NVM 인터페이스는 적어도 나머지 데이터 블록들의 서브세트를 스캔함으로써 완전 복구를 수행할 수 있다. 적어도 나머지 데이터 블록들의 서브세트를 스캔함으로써, NVM 인터페이스는 하나 이상의 인덱스 페이지의 논리 주소들에 대응하는 논리-물리 매핑들을 획득할 수 있다. 그런 다음, NVM 인터페이스는 휘발성 메모리의 캐시(예컨대, 도 3의 인덱스 테이블 캐시(304))에 인덱스 페이지들을 복사하고, 논리-물리 매핑들에 기초하여 캐시의 엔트리들을 업데이트할 수 있다. 그런 다음, 프로세스(700)는 단계 710에서 종료할 수 있다.
따라서, 콘텍스트 정보가 논리-물리 매핑들을 재구성하기 위해서 인덱스 페이지들과 함께 이용될 수 있기 때문에, 시스템 재부팅 후에 처리될 필요가 있는 정보의 양이 보다 감소될 수 있다. 특히, 완전 복구는 단지 데이터 블록들의 총 수의 작은 서브세트에 대해서만 수행될 필요가 있을 수 있다. 이는 시스템 효율을 개선하며, 비정상 셧다운으로부터 복구하는데 필요한 시간의 양을 감소시킬 수 있다.
도 4 내지 도 7의 프로세스들(400, 500, 600 및 700)은 단지 예시적이라는 것을 이해해야 한다. 단계들 중 임의의 단계는 제거되거나, 변경되거나 또는 결합될 수 있으며, 본 발명의 범위로부터 벗어나지 않고 임의의 부가적인 단계들이 추가될 수 있다.
본 발명의 설명된 실시예들은 제한이 아니라 예시를 목적으로 제시되었다.

Claims (19)

  1. 디바이스 고장(device failure)으로부터 복구하는 방법으로서,
    비정상 셧다운 이벤트(unclean shutdown event)가 발생했다는 것을 검출하는 단계;
    비휘발성 메모리("NVM")의 복수의 인덱스 페이지들의 연령들(ages)에 대해 상기 복수의 인덱스 페이지들을 스캔하는 단계;
    상기 복수의 인덱스 페이지들의 연령들과 상기 복수의 인덱스 페이지들에 대응하는 상기 NVM의 데이터 페이지들의 연령들을 비교하는 단계; 및
    상기 비교에 적어도 부분적으로 기초하여 상기 복수의 인덱스 페이지들의 각각의 인덱스 페이지의 신뢰도를 결정하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 복수의 인덱스 페이지들의 각각의 인덱스 페이지는 상기 데이터 페이지들의 적어도 하나의 물리 주소에 적어도 하나의 논리 주소를 매핑하는 방법.
  3. 제1항 또는 제2항에 있어서,
    상기 비교하는 단계는,
    상기 복수의 인덱스 페이지들의 각각의 인덱스 페이지에 대하여, 상기 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 복수의 연령들보다 오래된 것인지를 결정하는 단계, 및
    상기 인덱스 페이지의 연령이 상기 대응하는 데이터 페이지들의 복수의 연령들보다 오래된 것이 아니라고 결정하는 것에 응답하여, 상기 인덱스 페이지가 신뢰할 수 있는 것이라고 결정하는 단계
    를 더 포함하는 방법.
  4. 제3항에 있어서,
    상기 인덱스 페이지의 연령이 상기 대응하는 데이터 페이지들의 복수의 연령들보다 오래된 것이라고 결정하는 것에 응답하여, 상기 인덱스 페이지가 신뢰할 수 없는 것이라고 결정하는 단계를 포함하는 방법.
  5. 제4항에 있어서,
    상기 인덱스 페이지의 연령보다 어린 연령들의 데이터 페이지들을 갖는 상기 NVM의 적어도 하나의 데이터 블록을 스캔하는 단계를 더 포함하는 방법.
  6. 제5항에 있어서,
    상기 적어도 하나의 데이터 블록이 상기 인덱스 페이지와 연관되는 적어도 하나의 데이터 페이지를 포함한다고 결정하는 단계;
    상기 적어도 하나의 데이터 페이지의 연령이 상기 인덱스 페이지의 연령보다 어린지를 결정하는 단계; 및
    상기 적어도 하나의 데이터 페이지의 연령이 상기 인덱스 페이지의 연령보다 어리다고 결정하는 것에 응답하여, 상기 인덱스 페이지를 휘발성 메모리의 캐시에 복사하는 단계
    를 더 포함하는 방법.
  7. 제6항에 있어서,
    상기 적어도 하나의 데이터 블록을 이용하여 상기 캐시의 적어도 하나의 엔트리를 업데이트하는 단계를 더 포함하는 방법.
  8. 제7항에 있어서,
    상기 업데이트하는 단계는, 상기 적어도 하나의 데이터 블록을 이용하여 상기 인덱스 페이지의 논리 주소들에 대응하는 논리-물리 매핑들을 재구성하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서,
    상기 재구성하는 단계는 상기 NVM의 상기 적어도 하나의 데이터 블록에 저장된 메타데이터를 스캔하는 단계를 더 포함하는 방법.
  10. 제8항에 있어서,
    상기 재구성하는 단계는 상기 적어도 하나의 데이터 블록의 블록 TOC(table of contents)를 판독하는 단계를 더 포함하는 방법.
  11. 비휘발성 메모리("NVM")에 액세스하기 위한 메모리 인터페이스로서,
    제어 회로
    를 포함하고,
    상기 제어 회로는,
    비정상 셧다운 이벤트가 발생했다는 것을 검출하고;
    상기 비정상 셧다운 이벤트 이전에 상기 NVM에 저장된 콘텍스트 정보를 검색하고 - 상기 콘텍스트 정보는 상기 NVM의 블록 상에 저장됨 -;
    상기 콘텍스트 정보를 휘발성 메모리로 로딩하고;
    상기 로딩된 콘텍스트 정보의 연령보다 어린 연령을 갖는 상기 NVM의 적어도 하나의 데이터 블록을 식별하며;
    상기 적어도 하나의 데이터 블록의 완전 복구(full restore)를 수행하도록
    동작가능한 메모리 인터페이스.
  12. 제11항에 있어서,
    상기 콘텍스트 정보는 특정 시점에서의 상기 NVM의 복수의 데이터 블록들에 대한 논리-물리 매핑들(logical-to-physical mappings)을 포함하는 메모리 인터페이스.
  13. 제11항 또는 제12항에 있어서,
    상기 제어 회로는 상기 휘발성 메모리에 저장된 캐시로 상기 콘텍스트 정보를 로딩하도록 동작가능한 메모리 인터페이스.
  14. 제11항 또는 제12항에 있어서,
    상기 제어 회로는 상기 휘발성 메모리에 저장된 룩업 테이블로 상기 콘텍스트 정보를 로딩하도록 동작가능한 메모리 인터페이스.
  15. 시스템으로서,
    복수의 인덱스 페이지들을 갖는 인덱스 블록 및 콘텍스트 정보를 포함하는 콘텍스트 블록을 포함하는 비휘발성 메모리("NVM"); 및
    제어 회로
    를 포함하고,
    상기 제어 회로는,
    비정상 셧다운 이벤트가 발생했다는 것을 검출하고,
    상기 콘텍스트 정보를 이용하여 상기 NVM의 데이터 블록들의 세트에 대한 논리-물리 매핑들을 획득하며,
    상기 복수의 인덱스 페이지들 중 적어도 하나의 인덱스 페이지에 적어도 부분적으로 기초하여 상기 NVM의 나머지 데이터 블록들에 대한 논리-물리 매핑들을 재구성하도록
    동작가능한 시스템.
  16. 제15항에 있어서,
    상기 복수의 인덱스 페이지들의 각각의 인덱스 페이지는 상기 나머지 데이터 블록들의 데이터 페이지들의 적어도 하나의 물리 주소에 적어도 하나의 논리 주소를 매핑하는 시스템.
  17. 제15항 또는 제16항에 있어서,
    상기 제어 회로는,
    상기 적어도 하나의 인덱스 페이지의 연령이 대응하는 데이터 페이지들의 복수의 연령들보다 오래된 것인지를 결정하며,
    상기 적어도 하나의 인덱스 페이지의 연령이 상기 대응하는 데이터 페이지들의 복수의 연령들보다 오래된 것이라고 결정하는 것에 응답하여, 적어도 상기 NVM의 나머지 데이터 블록들의 서브세트를 스캔하도록
    동작가능한 시스템.
  18. 제17항에 있어서,
    적어도 상기 나머지 데이터 블록들의 서브세트는 상기 적어도 하나의 인덱스 페이지의 연령보다 어린 연령들의 데이터 페이지들을 갖는 시스템.
  19. 제17항에 있어서,
    캐시를 갖는 휘발성 메모리
    를 더 포함하고,
    상기 제어 회로는,
    상기 적어도 하나의 인덱스 페이지의 논리 주소들에 대응하는 논리-물리 매핑들을 획득하고,
    상기 캐시에 상기 적어도 하나의 인덱스 페이지를 복사하며,
    상기 논리-물리 매핑들에 기초하여 상기 캐시의 적어도 하나의 엔트리를 업데이트하도록
    동작가능한 시스템.
KR1020120102592A 2011-09-16 2012-09-17 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링 KR101450396B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/234,934 US9104614B2 (en) 2011-09-16 2011-09-16 Handling unclean shutdowns for a system having non-volatile memory
US13/234,934 2011-09-16

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020120132229A Division KR101900760B1 (ko) 2011-09-16 2012-11-21 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링

Publications (2)

Publication Number Publication Date
KR20130030237A true KR20130030237A (ko) 2013-03-26
KR101450396B1 KR101450396B1 (ko) 2014-10-14

Family

ID=47002643

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020120102592A KR101450396B1 (ko) 2011-09-16 2012-09-17 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링
KR1020120132229A KR101900760B1 (ko) 2011-09-16 2012-11-21 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020120132229A KR101900760B1 (ko) 2011-09-16 2012-11-21 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링

Country Status (7)

Country Link
US (1) US9104614B2 (ko)
EP (1) EP2570927B1 (ko)
JP (1) JP5702348B2 (ko)
KR (2) KR101450396B1 (ko)
CN (1) CN102999430B (ko)
TW (2) TWI506417B (ko)
WO (1) WO2013040236A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180097441A (ko) * 2017-02-23 2018-08-31 웨스턴 디지털 테크놀로지스, 인코포레이티드 비차단 제어 업데이트 동작을 수행하도록 구성되는 데이터 저장 디바이스
US11288201B2 (en) 2017-02-23 2022-03-29 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US11809722B2 (en) 2017-06-20 2023-11-07 Samsung Electronics Co., Ltd. System and method for managing a memory device using indexes
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5874525B2 (ja) * 2012-05-11 2016-03-02 ソニー株式会社 制御装置、記憶装置、記憶制御方法
US9836353B2 (en) 2012-09-12 2017-12-05 International Business Machines Corporation Reconstruction of system definitional and state information
AT514444A2 (de) * 2013-06-24 2015-01-15 Fts Computertechnik Gmbh Verfahren und Vorrichtung zur zeitrichtigen Datenübergabe an die zyklischen Tasks in einem verteilten Echtzeitsystem
US9829966B2 (en) 2014-09-15 2017-11-28 Apple Inc. Method for preparing a system for a power loss
US10331552B2 (en) 2015-03-10 2019-06-25 Toshiba Memory Corporation Storage device and memory system
KR102403202B1 (ko) 2015-03-13 2022-05-30 삼성전자주식회사 메타 데이터 관리자를 포함하는 메모리 시스템 및 동작 방법
FR3036205B1 (fr) * 2015-05-13 2019-05-24 Thales Systeme informatique de divertissement en vol, embarque a bord d'un aeronef
US9911487B2 (en) * 2015-05-19 2018-03-06 EMC IP Holding Company LLC Method and system for storing and recovering data from flash memory
US10120823B2 (en) * 2015-09-25 2018-11-06 Toshiba Memory Corporation Host-safe firmware upgrade of a PCI express device
TWI607309B (zh) * 2016-03-16 2017-12-01 群聯電子股份有限公司 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
KR102653401B1 (ko) * 2016-07-18 2024-04-03 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작방법
KR20200113387A (ko) 2019-03-25 2020-10-07 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10942659B2 (en) * 2019-06-03 2021-03-09 International Business Machines Corporation Persistent logical to virtual table
CN112148645A (zh) * 2019-06-28 2020-12-29 北京忆芯科技有限公司 去分配命令处理方法及其存储设备
CN114510198B (zh) * 2022-02-16 2023-06-30 北京中电华大电子设计有限责任公司 一种提高nvm擦写效率的方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397351B1 (en) 1998-09-28 2002-05-28 International Business Machines Corporation Method and apparatus for rapid data restoration including on-demand output of sorted logged changes
US7269608B2 (en) * 2001-05-30 2007-09-11 Sun Microsystems, Inc. Apparatus and methods for caching objects using main memory and persistent memory
US7137026B2 (en) 2001-10-04 2006-11-14 Nokia Corporation Crash recovery system
KR100449708B1 (ko) * 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
US20030220949A1 (en) 2002-01-22 2003-11-27 Columbia Data Products, Inc. Automatic deletion in data storage management
US7051050B2 (en) 2002-03-19 2006-05-23 Netwrok Appliance, Inc. System and method for restoring a single file from a snapshot
US8095511B2 (en) 2003-06-30 2012-01-10 Microsoft Corporation Database data recovery system and method
US7447710B2 (en) * 2003-12-11 2008-11-04 Sybase, Inc. Database system providing self-tuned parallel database recovery
TWI275936B (en) 2004-03-02 2007-03-11 Infortrend Technology Inc Filesystem journaling architecture and data writing method therefor
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
KR100843543B1 (ko) 2006-10-25 2008-07-04 삼성전자주식회사 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
TW200828273A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Hard disk cache device and method
US7769945B2 (en) * 2007-01-18 2010-08-03 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
JP4301301B2 (ja) * 2007-02-05 2009-07-22 ソニー株式会社 不揮発性半導体記憶装置およびその管理方法
US7818610B2 (en) 2007-09-27 2010-10-19 Microsoft Corporation Rapid crash recovery for flash storage
US8417893B2 (en) * 2008-02-04 2013-04-09 Apple Inc. Memory mapping techniques
WO2009143885A1 (de) 2008-05-28 2009-12-03 Hyperstone Gmbh Verfahren zum adressieren von seitenorientierten nichtflüchtigen speichern
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8468293B2 (en) * 2009-07-24 2013-06-18 Apple Inc. Restore index page
US20120150527A1 (en) 2009-08-21 2012-06-14 Tadhg Creedon Storage peripheral device emulation
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
JP5707695B2 (ja) * 2009-12-08 2015-04-30 沖電気工業株式会社 フラッシュディスク装置
CN101930404B (zh) 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US20120239860A1 (en) * 2010-12-17 2012-09-20 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180097441A (ko) * 2017-02-23 2018-08-31 웨스턴 디지털 테크놀로지스, 인코포레이티드 비차단 제어 업데이트 동작을 수행하도록 구성되는 데이터 저장 디바이스
US11288201B2 (en) 2017-02-23 2022-03-29 Western Digital Technologies, Inc. Techniques for performing a non-blocking control sync operation
US11809722B2 (en) 2017-06-20 2023-11-07 Samsung Electronics Co., Ltd. System and method for managing a memory device using indexes
US11816349B2 (en) 2021-11-03 2023-11-14 Western Digital Technologies, Inc. Reduce command latency using block pre-erase

Also Published As

Publication number Publication date
TW201329700A (zh) 2013-07-16
KR101900760B1 (ko) 2018-09-20
EP2570927B1 (en) 2018-04-25
US9104614B2 (en) 2015-08-11
EP2570927A1 (en) 2013-03-20
TW201329699A (zh) 2013-07-16
US20130073897A1 (en) 2013-03-21
CN102999430A (zh) 2013-03-27
TWI554877B (zh) 2016-10-21
JP5702348B2 (ja) 2015-04-15
CN102999430B (zh) 2016-04-27
KR101450396B1 (ko) 2014-10-14
KR20130030242A (ko) 2013-03-26
TWI506417B (zh) 2015-11-01
JP2013065308A (ja) 2013-04-11
WO2013040236A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
KR101450396B1 (ko) 비휘발성 메모리를 갖는 시스템에 대한 비정상 셧다운의 핸들링
JP5696118B2 (ja) 不揮発性メモリシステムのためのウィーブシーケンスカウンタ
US8812816B2 (en) Garbage collection schemes for index block
US9477596B2 (en) LBA bitmap usage
US9342449B2 (en) Metadata redundancy schemes for non-volatile memories
US8478796B2 (en) Uncorrectable error handling schemes for non-volatile memories
US8949512B2 (en) Trim token journaling
US20130073789A1 (en) Systems and methods for configuring non-volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
A107 Divisional application of patent
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: 20170919

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 5