KR20110031130A - 불휘발성 메모리에 대한 메타데이터 리던던시 스킴 - Google Patents

불휘발성 메모리에 대한 메타데이터 리던던시 스킴 Download PDF

Info

Publication number
KR20110031130A
KR20110031130A KR1020100091712A KR20100091712A KR20110031130A KR 20110031130 A KR20110031130 A KR 20110031130A KR 1020100091712 A KR1020100091712 A KR 1020100091712A KR 20100091712 A KR20100091712 A KR 20100091712A KR 20110031130 A KR20110031130 A KR 20110031130A
Authority
KR
South Korea
Prior art keywords
metadata
memory
user data
data
memory location
Prior art date
Application number
KR1020100091712A
Other languages
English (en)
Other versions
KR101303524B1 (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 KR20110031130A publication Critical patent/KR20110031130A/ko
Application granted granted Critical
Publication of KR101303524B1 publication Critical patent/KR101303524B1/ko

Links

Images

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/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
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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
    • 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/7207Details relating to flash memory management management of metadata or control data

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)
  • Memory System (AREA)

Abstract

메타데이터 리던던시 스킴을 이용하여 플래시 메모리와 같은 불휘발성 메모리("NVM")에 데이터를 저장하거나 이로부터 데이터를 판독하기 위한 시스템 및 방법이 제공된다. 일부 실시예에서 NVM을 포함하는 전자 장치는 이 NVM에의 액세스를 제어하기 위한 메모리 인터페이스도 포함할 수 있다. 메모리 인터페이스는 사용자 데이터를 NVM에 기입하라는 요청을 수신할 수 있다. 각 요청으로부터의 사용자 데이터는 논리 주소, 플래그 또는 다른 데이터와 같은 메타데이터와 연관될 수 있다. 기입 요청에 응답하여 NVM 인터페이스는 사용자 데이터와 그 연관된 메타데이터를 제1 메모리 장소(예컨대 페이지)에 저장할 수 있고, 메타데이터의 리던던트 카피를 제2 메모리 장소에 저장할 수 있다. 이런 식으로 제1 메모리 장소가 액세스 불가능하게 되더라도 메모리 인터페이스는 여전히 제2 메모리 장소에 저장된 백업 카피로부터 메타데이터를 복구할 수 있다.

Description

불휘발성 메모리에 대한 메타데이터 리던던시 스킴{METADATA REDUNDANCY SCHEMES FOR NON-VOLATILE MEMORIES}
본 발명은 불휘발성 메모리의 메모리 장소에 메타데이터를 저장하는 시스템 및 방법에 관한 것이다.
NAND 플래시 메모리는 물론 다른 형태의 불휘발성 메모리("NVM")는 대용량 저장 전자 장치에서 흔히 이용된다. 예컨대 휴대형 미디어 플레이어와 같은 소비자 전자 장치는 대개는 음악, 비디오 및 기타 다른 데이터를 저장하는 플래시 메모리를 포함한다.
그러나 불휘발성 메모리는 일상적인 사용에 따라 메모리 셀에 결함이 생길 수가 있으며, 사용 중의 메모리 셀은 인접 셀에 인가된 전압으로 인해 프로그램/소거/판독 동작이 방해를 받을 수 있다. NVM의 페이지와 같은 메모리 장소가 지나치게 많은 결함 셀을 포함하거나 과도한 에러 때문에 사용할 수 없게 되면 그 메모리 장소 내에 포함된 정보가 손실될 수 있다.
이런 일이 발생하면 NVM를 사용하는 전자 장치는 사용자 데이터(예컨대 애플리케이션에 의해 저장된 데이터)를 잃어버릴 수가 있다. 게다가 전자 장치는 NVM을 관리하기 위해 사용하는 메타데이터를 잃어버릴 수도 있다. 이는 불휘발성 메모리의 성능에 영향을 미칠 수 있다.
따라서 불휘발성 메모리("NVM")에 메타데이터 리던던시를 제공하는 시스템 및 방법이 개시된다. 리던던트 메타데이터는 예컨대 논리 주소를 포함할 수 있으며, NVM의 하나 이상의 메모리 장소가 결함이 생기거나 다른 에러 유발 현상을 겪을 때에 메타데이터의 복구를 가능하게 하는데 이용될 수 있다.
일부 실시예에서 시스템-온-칩과 NVM을 포함할 수 있는 전자 장치가 제공된다. NVM은 NAND 플래시 메모리와 같은 플래시 메모리, 또는 기타 다른 적당한 형태의 불휘발성 메모리를 포함할 수 있다.
시스템-온-칩은 때로는 여기서는 NVM에 액세스하기 위한 "메모리 인터페이스"라고 하는 NVM 인터페이스를 포함할 수 있다. 일부 실시예에서 메모리 인터페이스는 파일 시스템으로부터 기입 요청을 수신하여 사용자 데이터를 논리 주소에 저장할 수 있다. 메모리 인터페이스는 논리 주소를 물리적 주소에 맵핑할 수 있으며 사용자 데이터를 NVM의 물리적 주소에 저장할 수 있다.
메모리 인터페이스는 사용자 데이터와 연관된 메타데이터를 그 사용자 데이터가 저장된 물리적 주소에 저장할 수 있다. 메타데이터는 NVM을 관리하는데 이용되는 메모리 인터페이스에 의해 발생되는 논리 주소 또는 기타 다른 정보를 포함할 수 있다. 메모리 인터페이스는 추가적으로 메타데이터의 리던던트 카피를 하나 이상의 다른 물리적 주소에 저장할 수 있다. 예컨대 메모리 인터페이스는 메타데이터를 버퍼에 저장할 수 있으며, 파일 시스템으로부터의 제2의 후속 기입 요청에 응답하여 메타데이터를 다른 물리적 주소로 프로그래밍할 수 있다.
이 방식을 이용하면 사용자 데이터에 대한 메타데이터는 NVM 내의 복수의 장소에 저장될 수 있으며, 메모리 인터페이스는, (예컨대 판독/프로그램/소거 방해, 결함 또는 다른 에러 유발 현상으로 인해) 사용자 데이터가 저장된 물리적 주소가 액세스 불가능하게 되더라도, 메타데이터를 다른 장소로부터 복구할 수 있다. 예컨대 제1 페이지로부터 판독된 데이터가 사용가능하지 않다는 판정에 응답하여, NVM 인터페이스는 제1 페이지에 저장된 사용자 데이터에 대한 메타데이터도 포함하는 제2 페이지를 판독될 수 있으며, 제2 페이지로부터 메타데이터를 추출할 수 있다.
메타데이터의 동일 부분이 복수의 장소로부터 판독될 수 있도록 하기 위해 NVM의 메모리 장소들 중 적어도 일부는 메타데이터의 복수의 카피를 저장하는데 이용될 수 있다. 특정 메모리 장소에 저장된 메타데이터의 다른 카피는 NVM의 다른 메모리 장소에 저장된 다른 사용자 데이터와 연관될 수 있다. 예컨대 현재 메모리 장소 내의 메타데이터의 한 부분은 현재 메모리 장소에도 저장되는 사용자 데이터와 연관될 수 있다. 현재 메모리 장소 내의 메타데이터의 다른 부분은 때로는 "리던던트 메타데이터"라고 하는데 (예컨대 이전 기입 요청으로부터의) 다른 메모리 장소에 저장된 사용자 데이터와 연관될 수 있다.
일부 실시예에서 (예컨대 이전 기입 요청으로부터의) 다른 메모리 장소는 현재 메모리 장소에 관한 특정의 기하학적 관계나 맵핑을 가질 수 있다. 예컨대 현재 페이지에 저장된 리던던트 메타데이터는 동일 블록 내의 이전 페이지에 저장된 사용자 데이터와 연관될 수 있다(즉 "어버브-미(above-me)" 리던던시). 다른 예로서, 리던던트 메타데이터는 동일 수퍼 블록의 이전 블록의 대응 페이지에 저장된 사용자 데이터와 연관될 수 있다(즉 "레프트-오브-미(left-of-me)" 리던던시). 또 다른 예로서, 리던던트 메타데이터는 이전 블록의 이전 페이지에 저장된 사용자 데이터와 연관될 수 있다(즉 "다이어고날-투-미(diagonal-to-me)" 리던던시).
본 발명의 상기 및 기타 다른 양상은 첨부 도면을 참조한 하기의 상세한 설명으로부터 더욱 명백하게 드러날 것이다. 도면 전체에 걸쳐 유사한 구성 요소에 대해서는 유사한 도면 부호를 병기한다.
도 1 및 2는 본 발명의 여러 가지 실시예에 따라 구성된 전자 장치의 개략도.
도 3은 본 발명의 여러 가지 실시예에 따라, 레프트-오브-미(left-of-me) 리던던시 스킴을 보여주는, 불휘발성 메모리의 2개 블록의 그래픽도.
도 4는 본 발명의 여러 가지 실시예에 따라, 어버브-미(above-me) 리던던시 스킴을 보여주는, 불휘발성 메모리의 한 블록의 그래픽도.
도 5는 본 발명의 여러 가지 실시예에 따라, 다이어고날-투-미(diagonal-to-me) 리던던시 스킴을 보여주는, 불휘발성 메모리의 2개 블록의 그래픽도.
도 6은 본 발명의 여러 가지 실시예에 따라, 메타데이터 리던던시 스킴을 이용하여 사용자 데이터를 저장하는 예시적인 프로세스의 플로우차트.
도 7은 본 발명의 여러 가지 실시예에 따라, 메타데이터 리던던시 스킴이 이용될 때에 메타데이터를 복구하는 예시적인 프로세스의 플로우차트.
도 1은 어떤 전자 장치(100)의 개략도이다. 일부 실시예에서 전자 장치(100)는 휴대형 미디어 플레이어(예컨대 Apple사(CA, Cupertino 소재)의 iPod™), 셀룰러 전화(예컨대 Apple사의 iPhone™), 포켓 사이즈 퍼스널 컴퓨터, 개인 휴대 정보 단말("PDA"), 데스크탑 컴퓨터, 랩탑 컴퓨터, 기타 다른 적당한 형태의 전자 장치이거나 이들을 포함할 수 있다.
전자 장치(100)는 시스템-온-칩("SoC")(110)과 불휘발성 메모리("NVM")(120)를 포함할 수 있다. 불휘발성 메모리(120)는 플로팅 게이트 또는 전하 트래핑 기술에 기초한 NAND 플래시 메모리, NOR 플래시 메모리, 소거가능 프로그램가능 판독 전용 메모리("EPROM"), 전기적 소거가능 프로그램가능 판독 전용 메모리("EEPROM"), 강유전성 RAM("FRAM"), 자기저항성 RAM("MRAM"), 기타 다른 공지 또는 장래의 불휘발성 메모리 기술, 또는 이들의 조합을 포함할 수 있다. NVM(120)은 각각이 한 번에 소거될 수 있는 "블록"으로 구성될 수 있으며, 각각이 한 번에 프로그램 및 판독 가능한 "페이지"로 더 구성될 수 있다. 일부 실시예에서 NVM(120)은 복수의 집적 회로를 포함할 수 있으며, 이 경우에 각 직접 회로는 복수의 블록을 가질 수 있다. 대응하는 집적 회로로부터의 블록(예컨대 동일한 위치 또는 블록 번호를 가진 블록)은 "수퍼 블록"을 구성할 수 있다. NVM(120)의 각 메모리 장소(예컨대 페이지 또는 블록)는 물리적 주소(예컨대 물리적 페이지 주소 또는 물리적 블록 주소)를 이용하여 주소지정될 수 있다.
도 1은 물론 그 뒤의 도면과 여러 가지 개시된 실시예는 때로는 플래시 기술을 이용하여 기술될 수 있다. 그러나 이는 제한적인 것이 아니며 기타 다른 형태의 불휘발성 메모리가 대신 구현될 수 있다. 전자 장치(100)는 도면이 지나치게 복잡하게 되지 않도록 하기 위해 도 1에는 도시되지 않은 전원 장치나 임의의 사용자 입력 또는 출력 컴포넌트와 같은 다른 컴포넌트를 포함할 수 있다.
시스템-온-칩(110)은 SoC 제어 회로(112), 메모리(114) 및 NVM 인터페이스(118)를 포함할 수 있다. SoC 제어 회로(112)는 SoC(110)의 일반적인 동작 및 기능과 SoC(110) 또는 장치(100)의 다른 컴포넌트를 제어할 수 있다. 예컨대 사용자 입력 및/또는 애플리케이션 또는 운영 체제의 명령에 응답하여 SoC 제어 회로(112)는 NVM 인터페이스(118)에 판독 또는 기입 명령을 발행하여 NVM(120)로부터 데이터를 얻거나 이에 데이터를 저장할 수 있다. 분명하게 하기 위해서 SoC 제어 회로(112)가 저장 또는 검색을 위해 요청할 수 있는 데이터는 비록 사용자 또는 사용자 애플리케이션과 직접적으로 연관될 수는 없더라도 "사용자 데이터"라고 할 수 있다. 사용자 데이터는 (예컨대 애플리케이션 또는 운영 체제를 통해) SoC 제어 회로(112)에 의해 발생 또는 얻어진 임의의 적당한 디지털 정보 계열일 수 있다.
SoC 제어 회로(112)는 하드웨어, 소프트웨어 및 펌웨어의 조합, 그리고 전자 장치(100)의 기능을 구동하도록 동작하는 임의의 컴포넌트, 회로 또는 로직을 포함할 수 있다. 예컨대 SoC 제어 회로(112)는 NVM(120) 또는 메모리(114)에 저장된 소프트웨어/펌웨어의 제어 하에서 동작하는 하나 이상의 프로세서를 포함할 수 있다.
메모리(114)는 다이나믹 랜덤 액세스 메모리("DRAM"), 동기식 다이나믹 랜덤 액세스 메모리("SDRAM"), 더블 데이터 레이트("DDR") RAM, 캐시 메모리, 판독 전용 메모리("ROM"), 또는 이들의 조합과 같은 임의의 적당한 형태의 휘발성 또는 불휘발성 메모리를 포함할 수 있다. 메모리(114)는 불휘발성 메모리(120) 내에 프로그래밍하거나 이로부터 판독하기 위한 사용자 데이터를 임시적으로 저장할 수 있는 데이터 소스를 포함할 수 있다. 일부 실시예에서 메모리(114)는 SoC 제어 회로(112)의 일부로서 구현되는 임의의 프로세서를 위한 메인 메모리로서 기능할 수 있다.
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)를 위한 소프트웨어 기반 메모리 드라이버를 실행할 수 있다. 따라서 SoC 제어 회로(112)와 NVM 인터페이스(118) 부분은 때로는 총괄하여 "제어 회로"라고 할 수 있다.
도 1은 NVM(120)이 그 자신의 컨트롤러를 갖고 있지 않을 수 있는 전자 장치를 도시한 것이다. 다른 실시예에서 전자 장치(100)는 NVM(120)과 NVM 인터페이스(118)의 일부 또는 전부(예컨대 후술하는 변환 계층)를 포함하는 플래시 또는 SD 카드와 같은 타겟 디바이스를 포함할 수 있다. 이들 실시예에서 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) 파일 시스템과 같은 임의의 적당한 형태의 파일 시스템을 포함할 수 있으며, 전자 장치(200)의 운영 체제의 일부(예컨대 도 1의 SoC 제어 회로(112)의 일부)일 수 있다. 일부 실시예에서 파일 시스템(210)은 YAFFS(Yet Another Flash File System)와 같은 플래시 파일 시스템을 포함할 수 있다. 이들 실시예에서 파일 시스템(210)은 후술하는 NVM 드라이버(212)의 기능의 일부 또는 전부를 수행할 수 있으며, 그러므로 파일 시스템(210)과 NVM 드라이버(212)는 별개의 모듈일 수도 아닐 수도 있다.
파일 시스템(210)은 애플리케이션과 운영 체제를 위한 파일 및 폴더 구조를 관리할 수 있다. 파일 시스템(210)은 전자 장치(200)에서 실행되는 애플리케이션 또는 운영 체제의 제어에 따라 동작할 수 있으며, 애플리케이션이나 운영 체제가 정보를 NVM(220)으로부터 판독하거나 이에 저장할 것을 요청하는 경우에 NVM 드라이버(212)에 기입 및 판독 명령을 제공할 수 있다. 파일 시스템(210)은, 각 판독 또는 기입 명령과 함께, 논리 페이지 주소 또는 페이지 오프셋을 가진 논리 블록 주소와 같이, 사용자 데이터가 판독되거나 기입되는 장소를 나타내는 논리 주소를 제공할 수 있다.
파일 시스템(210)은 NVM 드라이버(212)에 NVM(220)과 직접적으로 양립하지 않는 판독 및 기입 요청을 제공할 수 있다. 예컨대 논리 주소는 하드 드라이브 기반 시스템을 대표하는 협약이나 프로토콜을 이용할 수 있다. 하드 드라이브 기반 시스템은 플래시 메모리와는 달리 먼저 블록 소거를 수행하지 않고 메모리 장소에 겹쳐쓸 수 있다. 더욱이 하드 드라이브는 장치의 수명을 증가시키는데 웨어 레벨링이 필요하지 않을 수 있다. 그러므로 NVM 인터페이스(218)는 파일 시스템 요청을 처리하는 메모리 특정(memory-specific), 벤더 특정(vendor-specific), 또는 이 둘 다의 기능을 수행하고 NVM(220)에 적합한 방식으로 다른 관리 기능을 수행할 수 있다.
NVM 드라이버(212)는 변환 계층(214)을 포함할 수 있다. 일부 실시예에서 변환 계층(214)은 FTL(flash translation layer)이거나 이를 포함할 수 있다. 기입 동작 시에 변환 계층(214)은 제공된 논리 주소를 NVM(220) 상의 비어있는 소거된 물리적 장소에 맵핑할 수 있다. 판독 동작 시에는 변환 계층(214)은 제공된 논리 주소를 이용하여 요청된 데이터가 저장된 물리적 주소를 알아낼 수 있다. 각 NVM은 NVM의 사이즈와 벤더에 따라서 레이아웃이 다를 수가 있기 때문에 이러한 맵핑 동작은 메모리 및/또는 벤더 특정일 수 있다. 변환 계층(214)은 논리-물리적 주소 맵핑 이외에도 다른 적당한 기능을 수행할 수 있다. 예컨대 변환 계층(214)은 불요 정보 정리(garbage collection)와 웨어 레벨링과 같은 FTL을 대표할 수 있는 다른 기능을 수행할 수 있다.
NVM 드라이버(212)는 NVM 버스 컨트롤러(216)와 인터페이스하여 NVM 액세스 요청(예컨대 프로그램, 판독 및 소거 요청)을 완료한다. 버스 컨트롤러(216)는 NVM(220)과의 하드웨어 인터페이스로서 기능할 수 있으며, NVM(220)의 버스 프로토콜, 데이터율 및 기타 다른 사양을 이용하여 NVM(220)과 통신할 수 있다.
NVM 인터페이스(218)는 여기서는 때로는 "메타데이터"라고 하는 메모리 관리 데이터에 기초하여 NVM(220)을 관리할 수 있다. 메타데이터는 NVM 드라이버(212)에서 발생되거나 NVM 드라이버(212)의 제어에 따라 동작하는 모듈에서 발생될 수 있다. 예컨대 메타데이터는 논리 주소와 물리적 주소 간의 맵핑 관리, 불량 블록 관리, 웨어 레벨링 관리, ECC(error correcting code) 데이터 관리, 또는 이들의 조합에 이용되는 정보를 포함할 수 있다. 메타데이터는 논리 주소와 같은 사용자 데이터와 함께 파일 시스템(210)이 제공하는 데이터를 포함할 수 있다. 따라서 일반적으로 "메타데이터"는 사용자 데이터에 대한 또는 이에 관련되거나, 불휘발성 메모리의 동작과 메모리 장소를 관리하는데 일반적으로 이용되는 임의의 정보라고 할 수 있다.
NVM 인터페이스(218)는 NVM(220)에 메타데이터를 저장하도록 구성될 수 있다. 일부 실시예에서 NVM 인터페이스(218)는 사용자 데이터가 저장되는 그 메모리 장소(예컨대 페이지)에 사용자 데이터와 연관된 메타데이터를 저장할 수 있다. 예컨대 NVM 인터페이스(218)는 사용자 데이터, 그 관련 데이터, 및 이 사용자 데이터를 위한 ECC 데이터를 NVM(220)의 하나의 메모리 장소에 저장할 수 있다. NVM 인터페이스(218)는 그 메모리 장소에 사용자 데이터에 대한 임의 형태의 메타데이터를 저장할 수도 있다.
NVM 인터페이스(218)는 NVM(220)의 작동 시작 시에 또는 NVM(220)의 작동 중에 전자 장치(200)가 그 메모리 장소에 어떤 데이터가 존재하는가를 알아낼 수 있도록 논리 주소를 저장할 수 있다. 특히 파일 시스템(210)이 물리적 주소가 아니라 논리 주소에 따라 사용자 데이터를 참조할 수 있기 때문에, NVM 인터페이스(218)는 사용자 데이터와 논리 주소 간의 연관성을 유지하기 위하여 이들을 함께 저장할 수 있다. 이런 식으로, NVM(220) 내에 물리적-논리 맵핑을 유지하는 별도의 테이블이 구식이 되더라도, NVM 인터페이스(218)는 여전히 예컨대 전자 장치(200)의 작동 시작 시나 재부팅시에 적절한 맵핑을 알아낼 수 있다.
그러나 NVM(220)의 메모리 장소는 인접 장소로부터의 방해 효과, 결함, 실패한 판독 동작으로 인해 또는 어떤 다른 에러 유발 현상으로 인해 판독되지 못할 수 있다. 이런 일이 생기면 NVM 인터페이스(218)는 그 메모리 장소에 있는 실제 사용자 데이터를 잃는 것은 물론, 더 이상 어떤 종류의 정보가 그 메모리 장소에 저장되기로 된 것인지를 알아낼 수가 없다(예컨대 더 이상 사용자 데이터와 연관된 논리 주소를 알아낼 수가 없다). 즉, NVM 인터페이스(218)는 사용자 데이터에 대한 정보 또는 NVM 인터페이스(218)가 그 메모리 장소에 저장된 사용자 데이터를 관리하는데 필요한 정보를 잃을 수가 있다. 이런 일은 특히 NVM 인터페이스(118)가 NVM(220)의 논리-물리적 주소 맵핑을 알아내려고 시도할 수 있을 때에 전자 장치(200)의 동작 시작 중에 생길 수 있다.
현재 메모리 장소에 저장된 데이터의 손실에 따른 결과를 완화하기 위해서 NVM 인터페이스(218)는 현재 메모리 장소의 메타데이터를 때로는 "백업" 메모리 장소라고 하는 복수의 다른 메모리 장소에 저장할 수 있다. 특히 백업 메모리 장소에는 다른 기입 요청으로부터의 사용자 데이터와 메타데이터가 완전히 채워지지 않을 수 있다. 그러므로 백업 메모리 장소의 나머지 공간 중 적어도 일부는 현재 메모리 장소의 메타데이터를 저장하는데 이용될 수 있다. 전술한 바와 같이 이 메타데이터는 "리던던트(redundant) 메타데이터"라 할 수 있다. 현재 메모리 장소가 액세스 불가능하게 되어 NVM 인터페이스(218)가 사용자 데이터를 검색할 수 없게 되더라도, NVM 인터페이스(218)는 여전히 그 사용자 데이터에 대한 메타데이터를 복구할 수 있을 것이다. 이러한 리던던트 메타데이터를 이용하면 NVM 인터페이스(218)는 그 현재 메모리 장소에서의 사용자 데이터 손실을 더 잘 처리할 수 있다.
일부 실시예에서 NVM 인터페이스(218)는 리던던트 메타데이터를 이용하여 손실된 사용자 데이터의 이전의(older) 카피를 복구할 수 있다. 예컨대 리던던트 메타데이터는 손실된 사용자 데이터에 대한 논리 주소를 포함할 수 있으며, NVM 인터페이스(218)는 NVM(220)의 여러 가지 메모리 장소를 검색하여 오래된 연령 또는 이전 세대가 표시될 수 있고 동일한 논리 주소를 저장하는 다른 메모리 장소를 찾을 수 있다. 이런 식으로 메모리 장소가 액세스 불가능하게 되어 NVM 인터페이스(218)가 현재 사용자 데이터를 복구할 수 없게 되더라도, NVM 인터페이스(218)는 여전히 그 사용자 데이터의 구 버전을 복구할 수 있을 것이다.
일부 실시예에서 NVM 인터페이스(218)는 리던던트 메타데이터를 물리적-논리 주소 맵의 탐색표로부터 얻을 수 있더라도 백업 메모리 장소로부터 이 리던던트 메타데이터를 탐색할 수 있다. 실행 시간에서 만일 NVM 인터페이스(218)가 (예컨대 방해 효과로 인해) 현재 메모리 장소에 저장된 데이터를 복구할 수 없다면 NVM 인터페이스(218)는 백업 메모리 장치로부터 메타데이터를 얻을 수 있으며, 따라서 별도의 테이블에 대한 자원 집약적인 망라적인 검색을 수행할 필요가 없게 된다. 또한 리던던트 메타데이터를 다른 사용자 데이터를 포함하는 백업 메모리 장소에 저장함으로써 그 주소맵에 대한 제2의 테이블 세트가 필요하지 않을 수 있다.
NVM 인터페이스(218)는 메타데이터의 리던던트 카피를 저장할 임의의 적당한 메모리 장소를 선택할 수 있다. 메모리 장소는 이 리던던트 카피를 가진 장소와 원 메타데이터 및 그 관련 사용자 데이터를 가진 장소 간에 1 대 1 맵핑이 되도록 선택될 수 있다. 즉 NVM 인터페이스(218)는 백업 메모리 장소가 백업하고 있는 메모리 장소가 어느 것인지에 대해 애매함이 없는 한 임의의 적당한 방식을 이용하여 백업 메모리 장소를 선택할 수 있다.
일부 실시예에서 백업 메모리 장소로서 선택된 메모리 장소는 사용자 데이터를 가진 메모리 장소에 상대적인 NVM(220) 내의 특정 위치를 가질 수 있다. 예컨대 백업 메모리 장소는 어떤 블록 내의 일련의 페이지에서 NVM(220)의 다음 페이지, 어떤 수퍼 블록의 다음 블록 내의 대응 페이지(예컨대 각 블록 내의 동일 위치 또는 페이지 번호를 가진 페이지), 또는 동일 집적 회로의 다음 블록 내의 대응 페이지일 수 있다. 간명하게 하기 위해 NVM(220)의 블록과 페이지는 2개의 메모리 장소들 간의 관계가 서로 간에 특정의 기하학적 관계를 갖는 것으로 보여질 수 있도록 2차원 또는 3차원 공간에서 그래프로 나타낼 수 있다. 즉 도 3 내지 5에 도시된 바와 같이 그래픽 표시를 이용하면 "좌측", "우측", "위", "아래" 및 "대각"과 같은 용어들을 사용할 있다.
이제 도 3 내지 5를 참조로 설명하면, 여러 가지 메타데이터 리던던시 스킴에 따라서 불휘발성 메모리(220)(도 2)의 여러 가지 페이지와 블록의 그래픽도가 도시되어 있다. 특히 도 3은 "레프트-오브- 미(left-of-me)" 리던던시라고 하는 메타데이터 리던던시 스킴을 보여주고, 도 4는 "어버브-미(above-me)" 리던던시라고 하는 메타데이터 리던던시 스킴을 보여주고, 도 5는 "다이어고날-투-미(diagonal-to-me)" 리던던시라고 하는 메타데이터 리던던시 스킴을 보여준다. 명확하게 하기 위해 도 3 내지 5와 본 명세서의 그 밖의 다른 곳에서는 다음과 같은 명명 규정이 이용될 수 있다. udata_xy는 블록 x, 페이지 y에 저장된 사용자 데이터를 지칭하고, m_xy는 블록 x, 페이지 y에 저장된 사용자 데이터와 연관된 메타데이터를 지칭할 수 있다.
먼저 도 3을 참조로 설명하면, 블록(300, 350)의 그래프도가 도시되어 있는데, 이는 레프트-오브-미 메타데이터 리던던시를 보여줄 수 있다. 일부 실시예에서 블록(300, 350)은 동일 수퍼 블록 중의 일련의 블록 내의 임의의 적당한 인접 위치(j, k)를 가질 수 있다. 여기서 위치(k)는 위치(j)의 우측에 있다. 즉 블록(300, 350)은 NVM(220) 내의 인접한 집적 회로 내의 대응 위치를 가질 수 있다. 다른 실시예에서 블록(300, 350)은 동일한 집적 회로 내의 일련의 블록 내의 임의의 적당한 인접 위치(j, k)를 가질 수 있다.
블록(300, 350)은 각각 각자의 페이지(302, 352)를 포함하여, 복수의 페이지를 포함할 수 있다. 페이지(302, 352)는 각자의 블록 내의 동일 위치(M)에 위치할 수 있다. 여기서 위치(M)는 블록(300, 350)을 따른 임의의 적당한 장소에 위치할 수 있다. 따라서 페이지(302)는 페이지(352)의 바로 "좌측"에 있을 수 있다.
블록(300)의 페이지(302)는 사용자 데이터(즉 udata_jM)를 저장하기 위한 데이터 부분(310), 사용자 데이터와 연관된 메타데이터(즉 m_jM)를 저장하기 위한 제1 메타데이터 부분(306), 및 리던던트 메타데이터를 저장하기 위한 제2 메타데이터 부분(308)을 포함할 수 있다. 마찬가지로 블록(350)의 페이지(352)는 제1 메타데이터 부분(356), 제2 메타데이터 부분(358) 및 데이터 부분(360)을 포함할 수 있다.
예시된 레프트-오브-미 리던던시 스킴에서 NVM(220)의 페이지의 일부 또는 전부는 이전 블록 내의 대응 페이지(즉 현재 페이지의 "좌측"에 있는 페이지)로부터의 사용자 데이터와 연관된 리던던트 메타데이터를 저장할 수 있다. 예컨대 페이지(352)는 그 제2 메타데이터 부분(358)을 이용하여 페이지(302)의 제1 메타데이터 부분(306)으로부터의 메타데이터의 리던던트 카피를 저장할 수 있고, 페이지(302)는 그 제2 메타데이터 부분(308)을 이용하여 페이지(302)의 좌측(즉 위치(i))에 있는 페이지로부터의 메타데이터의 리던던트 카피를 저장할 수 있다. 이런 식으로, 예컨대 페이지(302)의 udata_jM에 대한 메타데이터는 적어도 2개의 장소(즉 페이지(302)의 제1 메타데이터 부분(306)과 페이지(352)의 제2 메타데이터 부분(358))에 저장될 수 있고, 만일 페이지(302)가 어떤 이유로 판독될 수 없게 되어도 udata_jM에 대한 메타데이터는 여전히 페이지(352)로부터 복구될 수 있다.
이제 도 4를 참조로 설명하면, 블록(400)의 그래프도가 도시되어 있는데, 이는 어버브-미 메타데이터 리던던시를 보여줄 수 있다. 블록(400)은 단일 집적 회로 내의 임의의 적당한 위치(j)나 도 2의 불휘발성 메모리(220)의 수퍼 블록 내의 임의의 적당한 위치(j)에 위치할 수 있다. 블록(400)은 페이지(402, 404)를 포함하여 복수의 페이지를 포함할 수 있다. 페이지(402, 404)는 각각 일련의 페이지 내의 임의의 적당한 인접 위치(M, N)에 위치할 수 있다. 여기서 위치(M)는 위치(N) 위에 있을 수 있다.
도 3과 관련하여 설명된 페이지처럼 페이지(402, 404)는 각각 메타데이터(예컨대 논리 주소)를 저장하기 위한 제1 메타데이터 부분(406), 리던던트 메타데이터(예컨대 리던던트 논리 주소)를 저장하기 위한 제2 메타데이터 부분(408), 및 부분(406)에 있는 메타데이터와 연관된 사용자 데이터를 저장하기 위한 데이터 부분(410)을 포함할 수 있다.
예시된 어버브-미 리던던시 스킴에서 NVM(220)의 페이지의 일부 또는 전부는 바로 앞 페이지(즉 현재 페이지 위에 있는 페이지)로부터의 사용자 데이터와 연관된 리던던트 메타데이터를 저장할 수 있다. 예컨대 페이지(404)는 그 제2 메타데이터 부분(408)을 이용하여 페이지(402)에 저장된 메타데이터의 리던던트 카피를 저장할 수 있고, 페이지(402)는 그 제2 메타데이터 부분(408)을 이용하여 위치(M) 위의 위치(L)에 있는 페이지에 저장된 메타데이터의 리던던트 카피를 저장할 수 있다. 그러므로 페이지(402)의 udata_jM에 대한 메타데이터는 적어도 2개의 장소(즉 페이지(402)의 제1 메타데이터 부분(406)과 페이지(404)의 제2 메타데이터 부분(408))에 저장될 수 있고, 만일 페이지(402)가 어떤 이유로 판독될 수 없게 되어도 udata_jM에 대한 메타데이터는 여전히 페이지(404)로부터 복구될 수 있다.
이제 도 5를 참조로 설명하면, NVM(220)의 블록(500, 550)의 그래프도가 도시되어 있는데, 이는 다이어고날-투-미 메타데이터 리던던시를 보여줄 수 있다. 블록(500, 550)은 각각 블록(300, 350)(도 3)과 관련하여 전술한 방식으로 서로 관련하여 위치할 수 있다. 블록(500, 550)은 페이지(502, 552)를 포함하여 임의의 적당한 수의 페이지를 포함할 수 있다. 페이지(502)는 블록(500)을 따라 임의 적당한 위치(M)에 위치할 수 있다. 페이지(552)는 블록(500)을 따른 위치(M)보다 더 낮은 블록(550)을 따른 한 장소일 수 있는 위치(N)에 위치할 수 있다. 따라서 페이지(502)는 한 페이지와 한 블록만큼 페이지(552)로부터 오프셋되어 있으므로 페이지(552)로부터 "대각적"일 수 있다.
도 3 및 4와 관련하여 설명된 페이지처럼 페이지(500)는 메타데이터(즉 논리 주소와 같은 m_jM)를 저장하기 위한 제1 메타데이터 부분(506), 리던던트 메타데이터(즉 리던던트 논리 주소와 같은 m_iL)를 저장하기 위한 제2 메타데이터 부분(508), 및 부분(506)에 있는 메타데이터(즉 udata_jM)와 연관된 사용자 데이터를 저장하기 위한 데이터 부분(510)을 포함할 수 있다. 마찬가지로 페이지(550)는 제1 메타데이터 부분(556), 제2 메타데이터 부분(558) 및 데이터 부분(560)을 포함할 수 있다.
예시된 다이어고날-투-미 리던던시 스킴에서 NVM(220)의 페이지의 일부 또는 전부는 선행 페이지와 선행 블록으로부터의 사용자 데이터와 연관된 리던던트 메타데이터를 저장할 수 있다. 예컨대 페이지(552)는 제2 메타데이터 부분(558)을 이용하여 페이지(552)로부터 대각적으로 위치한 페이지(502)로부터의 메타데이터의 리던던트 카피를 저장할 수 있고, 페이지(502)는 제2 메타데이터 부분(508)을 이용하여 페이지(502)에 대각적인 페이지로부터의 메타데이터의 리던던트 카피를 저장할 수 있다. 그러므로 페이지(502)의 udata_jM에 대한 메타데이터는 적어도 2개의 장소(즉 페이지(502)의 제1 메타데이터 부분(506)과 페이지(552)의 제2 메타데이터 부분(558))에 저장될 수 있고, 만일 페이지(502)가 어떤 이유로 판독될 수 없게 되어도 udata_jM에 대한 메타데이터는 여전히 페이지(552)로부터 복구될 수 있다.
도 3 내지 5에 나타낸 레프트-오브-미, 어버브-미, 그리고 다이어고날-투-미 리던던시 스킴은 리던던트 메타데이터가 백업되는 페이지로부터 한 페이지 및/또는 한 블록 떨어진 페이지에 저장되는 실시예를 보여준다. 이것은 단지 예시적인 것이며, 이들 스킴들에서는 리던던트 메타데이터는 백업하는 페이지로부터 하나보다 많은 페이지 및/또는 블록만큼 떨어진 페이지에 저장될 수 있음은 물론이다. 예컨대 레프트-오브-미 리던던시 스킴에서 백업 메모리 장소는 백업 메모리 장소의 좌측에 있는 2, 3, 4, 5 또는 그 이상의 블록인 다른 메모리 장소에 대한 리던던트 메타데이터를 저장할 수 있다.
더욱이 도 3 내지 5는 백업 메모리 장소가 다른 하나의 메모리 장소에 대한 리던던트 메타데이터를 저장할 수 있는 실시예를 보여준다. 다른 실시예에서 각 메모리 장소는 하나보다 많은 다른 메모리 장소에 대한 리던던트 메타데이터를 저장하는 추가 메타데이터 부분(예컨대 제3, 제4, 또는 제5 메타데이터 부분)을 포함할 수 있다. 이들 실시예에서 한 가지 리던던시 스킴은 확장될 수 있다. 예컨대 레프트-오브-미 리던던시는 어떤 페이지가 이 페이지의 좌측에 있는 임의 수의 페이지에 대한 리던던트 메타데이터를 저장하게 함으로써 확장될 수 있다. 다른 실시예에서 2 또는 그 이상의 리던던시 스킴이 조합 및/또는 확장될 수 있다. 예컨대 레프트-오브-미 리던던시와 어버브-미 리던던시는 어떤 페이지가 이 페이지의 좌측에 있는 임의 수의 페이지에 대한 리던던시 메타데이터를 저장할 수 있고 또 그 페이지 위의 임의 수의 페이지에 대한 리던던시 메타데이터를 저장할 수 있도록 조합될 수 있다.
또한, 도 3 내지 5와 관련하여 전술한 3가지 종류의 메타데이터 리던던시 스킴은 단지 예시적인 것이다. "빌로우-미(below-me)" 리던던시, "라이트-오브-미(right-of-me)" 리던던시, 또는 다른 대각 방향을 이용하는 "다이어고날-투-미" 리던던시와 같은 기타 다른 적당한 리던던시가 이용될 수 있다는 것을 알아야 한다. 이들 리던던시 스킴은 현재 페이지가 각각 현재 페이지의 우측, 아래, 또는 우측 및 아래에 있는 페이지에 대한 리던던트 메타데이터를 저장하는 것일 수 있다.
일부 실시예에서 메타데이터 리던던시 스킴은 데이터가 불휘발성 메모리 내로 프로그래밍되는 순서에 따라서 선택될 수 있다. 즉, 일부 실시예에서, 도 2의 NVM 인터페이스(218)는 복수의 수퍼 블록을 소거하고, 그런 다음에 이 소거된 블록을 갱신된 정보를 가지고 어떤 적당한 순서로 프로그래밍하도록 구성될 수 있다. 예컨대 일부 실시예에서 NVM 인터페이스(218)는 최좌측 블록에서 최우측 블록까지의 수퍼 블록의 제1 페이지를 프로그래밍하고, 그 다음에 최좌측 블록에서 최우측 블록까지의 수퍼 블록의 제2 페이지를 프로그래밍하는 식으로 페이지를 프로그래밍할 수 있다.
이러한 프로그래밍 순서에 따라서 NVM 인터페이스(218)는 빌로우-미, 라이트-오브-미 및 (다른 방향에서의) 다이어고날-투-미 리던던시 스킴 대신에 레프트-오브-미, 어버브-미 또는 다이어고날-투-미 리던던시 스킴을 선택할 수 있다. 이것은 후자의 리던던시 스킴 세트에서는 메타데이터의 리던던트 카피가 원본 메타데이터를 가진 메모리 장소보다 늦게 프로그래밍되는 메모리 장소에 저장될 수 있기 때문이다. 따라서 NVM 인터페이스(218)는 원본이 저장된 후에 소정의 버퍼 내에 메타데이터를 유지하고, 그런 다음에 리던던트 카피를 저장하는데 이용되는 뒤의 기입 요청에 응답하여 그 버퍼링된 메타데이터를 검색함으로써 리던던시 스킴을 구현할 수 있다. 이 기법에 대해서는 도 6의 프로세스(600)와 관련하여 더 자세히 설명하기로 한다.
NVM 인터페이스(218)는 다른 프로그래밍 순서가 구현될 때에 빌로우-미, 라이트-오브-미 또는 다른 형태의 다이어고날-투-미 리던던시를 구현할 수 있다. 대안으로, NVM 인터페이스(218)는 NVM 인터페이스(218)가 전술한 버퍼링 기법과 다른 메타데이터 리던던시 스킴을 구현하기 위한 방식을 이용하는 경우에 빌로우-미, 라이트-오브-미 또는 다른 형태의 다이어고날-투-미 리던던시를 구현할 수 있다.
이제 도 6 및 7을 참조로 설명하면, 본 발명의 여러 가지 실시예에 따른 예시적인 프로세스(600, 700)의 플로우차트가 나타나 있다. 프로세스(600, 700)는 각각 메타데이터 리던던시 스킴을 채용하는 도 1 및 2의 NVM 인터페이스(118 또는 218)와 같은 임의의 적당한 메모리 인터페이스에 의해 실행될 수 있다.
먼저 도 6을 참조로 설명하면, 프로세스(600)는 플래시 메모리와 같은 불휘발성 메모리의 하나 이상의 메모리 장소(예컨대 페이지)에 리던던시 메타데이터를 저장하는데 이용되는 단계들을 보여줄 수 있다. 프로세스(600)는 단계(602)에서 시작할 수 있다. 단계(604)에서, 메모리 인터페이스는 사용자 데이터를 NVM에 기입하라는 요청을 수신할 수 있다. 이 기입 요청은 사용자 데이터를 저장할 제1 논리 주소를 포함할 수 있다.
그 다음, 단계(606)에서, 메모리 인터페이스는 사용자 데이터에 대한 제1 메타데이터를 버퍼에 저장할 수 있다. 이 버퍼는 도 1의 메모리(114)와 같이 전자 장치의 임의의 적당한 장소에서 생성될 수 있다. 제1 메타데이터는 예컨대 제1 논리 주소를 나타내는 데이터를 포함할 수 있다. 제1 메타데이터를 버퍼에 저장함으로써 메모리 인터페이스는 차후의 기입 요청에 응답하여 또는 메모리 인터페이스가 다른 메모리 장소로 이동하는 것에 응답하여 제1 메타데이터를 검색할 수 있다. 이런 식으로 제1 메타데이터는 차후의 기입 요청과 연관된 다른 데이터와 함께 (즉 리던던트 메타데이터로서) 저장될 수 있다.
현재 기입 요청에 대한 리던던트 메타데이터를 얻기 위해서 단계(608)에서 메모리 인터페이스는 버퍼로부터 제2 메타데이터를 판독할 수 있다. 제2 메타데이터는 불휘발성 메모리에 이미 저장되었던 사용자 데이터와 같이 이전의 기입 요청으로부터의 사용자 데이터와 연관될 수 있다. 제2 메타데이터는 예컨대 이전에 저장된 사용자 데이터에 대응하는 제2 논리 주소를 나타내는 데이터를 포함할 수 있다.
단계(610)에서 계속하여 메모리 인터페이스는 현재 사용자 데이터를 저장할 물리적 주소를 결정할 수 있다. 단계(612)에서, 메모리 인터페이스는 그 결정된 물리적 주소에서 불휘발성 메모리에 현재 사용자 데이터, 제1 메타데이터 및 제2 메타데이터를 프로그래밍할 수 있다. 따라서 그 결정된 물리적 주소에 대응하는 메모리 장소는 현재 기입 요청으로부터의 사용자 데이터에 대한 메타데이터는 물론 이전의 기입 요청으로부터의 사용자 데이터에 대한 메타데이터를 포함할 수 있다.
그런 다음에 프로세스(600)는 단계(614)에서 종료할 수 있다. 또는 프로세스(600)는 메모리 인터페이스가 제2 기입 요청을 수신할 수 있는 단계(604)로 되돌아갈 수 있다. 일부 실시예에서 제2 기입 요청에 따라 메모리 인터페이스는 프로세스(600)의 현재 반복 중의 단계(608)에서 프로세스(600)의 이전 반복 중의 단계(606)에서 저장되었던 제1 메타데이터를 판독할 수 있다. 이들 실시예에서 메모리 인터페이스는 현재 반복의 단계(612)에서 제1 메타데이터를 리던던시 메타데이터로서 저장할 수 있다.
이제 도 7을 참조로 설명하면, 메타데이터 리던던시 스킴이 채용될 때에 메타데이터를 복구하는 예시적인 프로세스(700)의 플로우차트가 나타나 있다. 프로세스(700)는 메모리 인터페이스가 불휘발성 메모리 상에서 판독 동작을 수행할 때에 실행될 수 있는 단계들을 보여줄 수 있다.
프로세스(700)는 단계(702)에서 시작할 수 있다. 단계(704)에서, 메모리 인터페이스는 불휘발성 메모리의 제1 메모리 장소(예컨대 제1 페이지)를 판독할 수 있다. 단계(706)에서, 메모리 인터페이스는 제1 메모리 장소가 액세스가능한지 여부를 판정할 수 있다. 예컨대 메모리 인터페이스는 제1 메모리 장소로부터 판독된 데이터가 너무 많은 에러를 갖고 있어 해석될 수 없는지 여부를 판정할 수 있다. 이들 실시예에서 메모리 인터페이스는 데이터에 에러 검출/정정을 적용할 수 있으며 에러 정정이 유효 코드워드를 생성할 수 있는지 여부를 판정할 수 있다. 다른 예로서 메모리 인터페이스는 판독 동작 그 자체가 실패했는지 여부를 판정할 수 있고 NVM이 이러한 발생을 신호로 나타내는 "노 액세스(no-access)" 벡터를 되돌려 주었다고 판정할 수 있다.
단계(706)에서 만일 메모리 인터페이스가 제1 메모리 장소에 있는 데이터가 액세스가능하다고 판정하면 프로세스(700)는 단계(708)로 진행할 수 있다. 단계(708)에서 메모리 인터페이스는 제1 메모리 장소로부터 판독된 데이터로부터 메타데이터 및/또는 사용자 데이터를 추출할 수 있다. 그 다음에 프로세스(700)는 단계(710)에서 종료할 수 있다.
단계(706)로 되돌아가서 만일 메모리 인터페이스가 제1 메모리 장소(예컨대 페이지)에의 액세스가 실패했다고 판정하면 프로세스(700)는 단계(712)로 진행할 수 있다. 프로세스(700)의 이러한 분기를 따른 단계들에 의해 메모리 인터페이스는, 제1 메모리 장치에 있는 사용자 데이터를 복구하지 못할 수 있더라도, 이 제1 메모리 장소에 있는 사용자 데이터와 연관된 메타데이터를 복구할 수 있다.
단계(712)에서, 메모리 인터페이스는 제2의 백업 메모리 장소를 판독할 수 있다. 이 제2 메모리 장소는 제1 메모리 장소에 상대적인 불휘발성 메모리 내의 위치에 따라 선택될 수 있다. 예컨대 레프트-오브-미 리던던시를 채용하는 경우에, 단계(712)에서 메모리 인터페이스는 제1 메모리 장소의 우측에 있는 메모리 장소(즉 수퍼 블록의 다음 블록 내의 대응 페이지)를 판독할 수 있다.
그 다음, 단계(714)에서, 메모리 인터페이스는 제2 메모리 장소가 액세스 가능한지 여부를 판정할 수 있다. 예컨대, 단계(706)와 관련하여 전술한 바와 같이, 메모리 인터페이스는 메모리 장소로부터 판독된 데이터가 지나치게 많은 에러를 갖고 있는지 여부를 판정할 수 있고, 또는 메모리 인터페이스는 판독 동작 그 자체가 실패했는지 여부를 판정할 수 있다. 단계(714)에서 만일 메모리 인터페이스가 제2 메모리 장소로부터의 데이터가 액세스 불가능하다고 판정하면 프로세스(700)는 제1 메모리 장소에 있는 사용자 데이터에 대한 메타데이터를 복구하지 않고 단계(710)에서 종료할 수 있다. 다른 실시예에서 만일 채용된 메타데이터 리던던시 스킴이 2개 이상의 장소에(즉 제1 및 제2 메모리 장소보다 더 많은 장소에) 메타데이터를 저장한다면 메모리 인터페이스는 (예컨대 단계(712)와 유사한 단계에서) 제2 백업 메모리 장소를 판독함으로써 메타데이터 복구를 시도할 수 있다.
단계(714)로 되돌아가서 만일 메모리 인터페이스가 제2 메모리 장소에 있는 데이터가 액세스 가능하다고 판정하면 프로세스(700)는 단계(716)에서 계속할 수 있다. 단계(716)에서 메모리 인터페이스는 제2 메모리 주소로부터 판독된 데이터로부터 제1 메모리 장소에 저장된 사용자 데이터에 대한 메타데이터를 추출할 수 있다. 그 다음, 단계(718)에서, 메모리 인터페이스는 단계(704)로부터의 실패한 판독 시도의 기록을 저장할 수 있다. 예컨대 추출된 메타데이터는 리던던시 논리주소를 나타내는 데이터를 포함할 수 있고, 메모리 인터페이스는 제1 메모리 장소에 저장되기로 되어 있는, 그 리던던시 논리 주소와 연관된 사용자 데이터가 더 이상 이용할 수 없다는 기록을 저장할 수 있다. 리던던시 논리 주소 없이는 메모리 인터페이스는 제1 메모리 장소에 어떤 종류의 사용자 데이터가 저장되어 있는지를 판정하지 못할 수가 있다. 단계(718)에 이어서 프로세스(700)는 단계(710)에서 종료할 수 있다.
도 6 및 7의 프로세스(600, 700)는 단지 예시적인 것임을 알아야 한다. 본 발명의 범위로부터 벗어남이 없이 단계들 중 어떤 것들은 제거, 변형 또는 조합될 수 있으며, 추가되는 단계도 있을 수 있다.
지금까지 설명된 본 발명의 실시예들은 한정이 아니라 예시 목적으로 제시된 것이며, 본 발명은 하기의 청구범위에 의해서만 한정된다.
100: 전자 장치
110: SoC
112: SoC 제어 회로
114: 메모리
118: NVM 인터페이스
120: NWM
210: 파일 시스템
212: NVM 드라이버
214: 변환 계층
216: NVM 버스 컨트롤러
220: NVM

Claims (20)

  1. 불휘발성 메모리에 데이터를 저장하는 방법으로서,
    제1 사용자 데이터를 제1 논리 주소에 기입하라는 제1 기입 요청을 수신하는 단계;
    제2 사용자 데이터를 제2 논리 주소에 기입하라는 제2 기입 요청을 수신하는 단계;
    상기 제2 사용자 데이터를 저장할 물리적 주소를 식별하는 단계; 및
    상기 제1 사용자 데이터와 연관된 제1 메타데이터, 상기 제2 사용자 데이터와 연관된 제2 메타데이터, 및 상기 제2 사용자 데이터를, 상기 물리적 주소에서 상기 불휘발성 메모리 내에 프로그래밍하는 단계 - 상기 제1 메타데이터는 상기 제1 논리 주소를 포함하고, 상기 제2 메타데이터는 상기 제2 논리 주소를 포함함 -
    를 포함하는 데이터 저장 방법.
  2. 제1항에 있어서,
    상기 물리적 주소는 제2 물리적 주소이고,
    상기 제1 사용자 데이터를 저장할 제1 물리적 주소를 결정하는 단계; 및
    적어도 상기 제1 메타데이터와 상기 제1 사용자 데이터를, 상기 제1 물리적 주소에서 상기 불휘발성 메모리 내에 프로그래밍하는 단계
    를 더 포함하는 데이터 저장 방법
  3. 제2항에 있어서,
    상기 제1 물리적 주소와 상기 제2 물리적 주소 간의 기하학적(geometric) 관계에 기초하여 상기 제2 사용자 데이터를 가지고 프로그래밍할 상기 제2 물리적 주소를 선택하는 단계를 더 포함하는 데이터 저장 방법
  4. 제1항에 있어서,
    제3 사용자 데이터를 제3 논리 주소에 기입하라는 제3 기입 요청을 수신하는 단계;
    상기 제3 사용자 데이터를 저장할 다른 물리적 주소를 식별하는 단계; 및
    상기 제2 메타데이터, 제3 메타데이터 및 상기 제3 사용자 데이터를, 상기 다른 물리적 주소에서 상기 불휘발성 메모리 내에 프로그래밍하는 단계 - 상기 제3 메타데이터는 상기 제3 논리 주소를 포함함 -
    를 더 포함하는 데이터 저장 방법
  5. 제1항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리를 포함하고, 상기 물리적 주소는 상기 플래시 메모리의 페이지에 대응하는 데이터 저장 방법
  6. 제1항에 있어서,
    상기 제1 기입 요청을 수신하는 것에 응답하여 상기 제1 메타데이터를 버퍼에 저장하는 단계; 및
    상기 프로그래밍을 위해 상기 버퍼로부터 상기 제1 메타데이터를 판독하는 단계
    를 더 포함하는 데이터 저장 방법
  7. 시스템으로서,
    불휘발성 메모리에 액세스하기 위한 메모리 인터페이스를 포함하고,
    상기 메모리 인터페이스는,
    상기 불휘발성 메모리와 통신하기 위한 버스 컨트롤러; 및
    제1 사용자 데이터 및 메타데이터를 상기 불휘발성 메모리의 제1 메모리 장소에 저장하기 위해 상기 버스 컨트롤러를 지도하도록 구성된 제어 회로
    를 포함하고,
    상기 메타데이터는,
    상기 제1 사용자 데이터와 연관되며, 상기 제1 사용자 데이터와 연관된 제1 논리 주소, 플래그들 및 데이터 중 적어도 하나를 포함하는 제1 메타데이터, 및
    상기 불휘발성 메모리의 제2 메모리 장소에 저장된 제2 사용자 데이터와 연관되며, 상기 제2 사용자 데이터와 연관된 제2 논리 주소, 플래그들 및 데이터 중 적어도 하나를 포함하는 제2 메타데이터를 포함하는
    시스템.
  8. 제7항에 있어서,
    상기 제어 회로는 상기 제1 메모리 장소와 상기 제2 메모리 장소 간의 기하학적 관계에 기초하여 상기 제1 메모리 장소에 저장하기 위한 상기 제2 메타데이터를 선택하도록 또한 구성된 시스템
  9. 제7항에 있어서,
    상기 불휘발성 메모리는 플래시 메모리를 포함하고, 상기 제1 메모리 장소는 상기 플래시 메모리의 제1 페이지를 포함하고, 상기 제2 메모리 장소는 상기 플래시 메모리의 제2 페이지를 포함하는 시스템
  10. 제9항에 있어서,
    상기 플래시 메모리는 복수의 수퍼 블록을 포함하고, 상기 수퍼 블록들 각각은 블록들의 시퀀스를 포함하고, 상기 제1 메모리 장소와 상기 제2 메모리 장소는 상기 수퍼 블록들 중 하나의 인접 블록들에 위치하고, 상기 제1 메모리 장소와 상기 제2 메모리 장소는 이들 각자의 블록 내의 동일한 페이지 번호를 가진 페이지들에 대응하는 시스템
  11. 제9항에 있어서,
    상기 플래시 메모리는 복수의 블록을 포함하고, 상기 슈퍼 블록들 각각은 페이지들의 시퀀스를 포함하고, 상기 제1 메모리 장소와 상기 제2 메모리 장소는 상기 복수의 블록 중 하나의 블록의 인접 페이지들에 위치하는 시스템
  12. 전자 장치로서,
    불휘발성 메모리; 및
    복수의 모듈의 제어하에서 동작하는 제어 회로
    를 포함하며,
    상기 모듈들은,
    제1 사용자 데이터를 상기 불휘발성 메모리에 기입하라는 제1 기입 명령을 발행하도록 구성된 파일 시스템; 및
    제1 메타데이터를 상기 불휘발성 메모리의 복수의 메모리 장소에 저장하도록 구성된 메모리 인터페이스 - 상기 제1 메타데이터는 상기 제1 사용자 데이터와 연관됨 - 를 포함하는
    전자 장치.
  13. 제12항에 있어서,
    상기 메모리 인터페이스는 상기 제1 사용자 데이터를 제1 메타데이터와 함께 상기 복수의 메모리 장소 중 제1 메모리 장소에 저장하도록 또한 구성된 전자 장치.
  14. 제13항에 있어서,
    상기 파일 시스템은 제2 사용자 데이터를 상기 불휘발성 메모리에 기입하라는 제2 기입 명령을 발행하도록 또한 구성되고,
    상기 메모리 인터페이스는 제2 메타데이터와 상기 제2 사용자 데이터를 상기 제1 메타데이터와 함께 상기 복수의 메모리 장소 중 제2 메모리 장소에 저장하도록 또한 구성되고, 상기 제2 메타데이터는 상기 제2 사용자 데이터와 연관되는 전자 장치.
  15. 불휘발성 메모리로부터 논리 주소를 복구하는 방법으로서,
    상기 불휘발성 메모리의 제1 메모리 장소에 저장되는 제1 데이터가 액세스 가능한지 여부를 판정하는 단계 - 상기 제1 데이터는 제1 사용자 데이터 및 상기 제1 사용자 데이터와 연관된 제1 논리 주소를 포함함 -;
    상기 제1 데이터가 액세스 불가능하다는 판정에 응답하여 상기 불휘발성 메모리의 제2 메모리 장소로부터 제2 데이터를 판독하는 단계; 및
    상기 제2 데이터로부터 상기 제1 논리 주소를 추출하는 단계
    를 포함하는 논리 주소 복구 방법.
  16. 제15항에 있어서,
    상기 제1 데이터가 액세스 가능하다는 판정에 응답하여 상기 제1 데이터로부터 상기 제1 논리 주소를 추출하는 논리 주소 복구 방법.
  17. 제15항에 있어서,
    상기 판정 단계는,
    상기 불휘발성 메모리의 제1 메모리 장소로부터 상기 제1 데이터를 판독하는 단계;
    에러 검출 또는 정정을 상기 제1 데이터에게 적용하는 단계; 및
    상기 적용 단계에 기초하여 상기 제1 데이터가 액세스 불가능한지를 판정하는 단계를 포함하는
    논리 주소 복구 방법.
  18. 제15항에 있어서,
    상기 판정 단계는,
    상기 불휘발성 메모리의 제1 메모리 장소로부터 상기 제1 데이터를 판독하는 단계; 및
    상기 불휘발성 메모리가 상기 판독 단계에 응답하여 실패한 판독 동작을 시그널링하는 벡터를 되돌려 주는지 여부를 판정하는 단계를 포함하는
    논리 주소 복구 방법.
  19. 제15항에 있어서,
    상기 제2 메모리 장소에 저장된 제2 데이터가 액세스 가능한지 여부를 판정하는 단계를 더 포함하고,
    상기 추출 단계는 상기 제2 데이터가 액세스 가능하다는 판정에 응답하여 수행되는 논리 주소 복구 방법.
  20. 제19항에 있어서,
    상기 제2 데이터는 상기 제1 논리 주소, 제2 사용자 데이터, 및 상기 제2 사용자 데이터와 연관된 제2 논리 주소를 포함하는 논리 주소 복구 방법.
KR1020100091712A 2009-09-18 2010-09-17 불휘발성 메모리에 대한 메타데이터 리던던시 스킴 KR101303524B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/562,860 2009-09-18
US12/562,860 US9063886B2 (en) 2009-09-18 2009-09-18 Metadata redundancy schemes for non-volatile memories

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020120032843A Division KR101631348B1 (ko) 2009-09-18 2012-03-30 불휘발성 메모리에 대한 메타데이터 리던던시 스킴

Publications (2)

Publication Number Publication Date
KR20110031130A true KR20110031130A (ko) 2011-03-24
KR101303524B1 KR101303524B1 (ko) 2013-09-03

Family

ID=42983766

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020100091712A KR101303524B1 (ko) 2009-09-18 2010-09-17 불휘발성 메모리에 대한 메타데이터 리던던시 스킴
KR1020120032843A KR101631348B1 (ko) 2009-09-18 2012-03-30 불휘발성 메모리에 대한 메타데이터 리던던시 스킴

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020120032843A KR101631348B1 (ko) 2009-09-18 2012-03-30 불휘발성 메모리에 대한 메타데이터 리던던시 스킴

Country Status (4)

Country Link
US (2) US9063886B2 (ko)
EP (1) EP2299364B1 (ko)
KR (2) KR101303524B1 (ko)
WO (2) WO2011034652A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013066357A1 (en) * 2011-11-04 2013-05-10 Intel Corporation Nonvolatile memory wear management
CN110275797A (zh) * 2018-03-14 2019-09-24 欧姆龙株式会社 控制器以及数据保存方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8296503B2 (en) * 2009-05-26 2012-10-23 Mediatek Inc. Data updating and recovering methods for a non-volatile memory array
TWI425513B (zh) * 2009-08-13 2014-02-01 Silicon Motion Inc 識別快閃記憶體中區塊之資料頁的方法以及相關之記憶裝置
KR20110018605A (ko) * 2009-08-18 2011-02-24 삼성전자주식회사 자동 백업기능을 갖는 저장장치
US9063886B2 (en) 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories
WO2011055407A1 (en) * 2009-11-04 2011-05-12 Hitachi, Ltd. Flash memory module
US9063728B2 (en) 2010-03-17 2015-06-23 Apple Inc. Systems and methods for handling hibernation data
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8381018B2 (en) * 2010-05-21 2013-02-19 Mediatek Inc. Method for data recovery for flash devices
US8892981B2 (en) 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory
US8954647B2 (en) 2011-01-28 2015-02-10 Apple Inc. Systems and methods for redundantly storing metadata for non-volatile memory
US8738882B2 (en) * 2011-06-03 2014-05-27 Apple Inc. Pre-organization of data
US9727570B2 (en) 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US20120324148A1 (en) * 2011-06-19 2012-12-20 Paul Roger Stonelake System and method of protecting metadata from nand flash failures
US8949508B2 (en) 2011-07-18 2015-02-03 Apple Inc. Non-volatile temporary data handling
US8756458B2 (en) 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9111648B2 (en) 2012-08-28 2015-08-18 Apple Inc. Redundancy schemes for non-volatile memory based on physical memory layout
US9069695B2 (en) 2013-03-14 2015-06-30 Apple Inc. Correction of block errors for a system having non-volatile memory
CN104937565B (zh) 2013-03-28 2017-11-17 慧与发展有限责任合伙企业 从第一节点到第二节点的地址范围传送
EP2979187B1 (en) 2013-03-28 2019-07-31 Hewlett-Packard Enterprise Development LP Data flush of group table
US20150046772A1 (en) * 2013-08-06 2015-02-12 Sandisk Technologies Inc. Method and device for error correcting code (ecc) error handling
KR102069274B1 (ko) 2014-02-05 2020-01-22 삼성전자주식회사 메모리 제어 방법
US10509662B1 (en) * 2014-11-25 2019-12-17 Scale Computing Virtual devices in a reliable distributed computing system
US20170024140A1 (en) * 2015-07-20 2017-01-26 Samsung Electronics Co., Ltd. Storage system and method for metadata management in non-volatile memory
KR102415385B1 (ko) * 2015-07-22 2022-07-01 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 저장 장치
CN105260270B (zh) * 2015-11-11 2018-12-11 恒宝股份有限公司 一种Flash存储空间的动态恢复方法及装置
US9898202B2 (en) 2015-11-30 2018-02-20 Samsung Electronics Co., Ltd. Enhanced multi-streaming though statistical analysis
US9880780B2 (en) 2015-11-30 2018-01-30 Samsung Electronics Co., Ltd. Enhanced multi-stream operations
CN107870926A (zh) * 2016-09-26 2018-04-03 北京信威通信技术股份有限公司 一种实时存储的方法及装置
US10379758B2 (en) * 2017-06-26 2019-08-13 Western Digital Technologies, Inc. Managing system data for a data storage system
CN109240943B (zh) * 2018-09-26 2021-10-29 郑州云海信息技术有限公司 地址映射关系反馈方法、装置、设备及可读存储介质
CN109344094B (zh) * 2018-09-26 2021-10-29 郑州云海信息技术有限公司 地址映射关系反馈方法、装置、设备及可读存储介质
CN113906505B (zh) * 2019-05-31 2023-04-18 美光科技公司 用于片上系统装置的存储器组件
US11422886B2 (en) * 2020-01-09 2022-08-23 Microsoft Technology Licensing, Llc Die level data redundancy in solid state storage devices
KR20230022060A (ko) 2021-08-06 2023-02-14 삼성전자주식회사 설정 데이터를 저장하는 메모리 장치 및 그 동작방법
US11960766B2 (en) 2021-12-06 2024-04-16 Western Digital Technologies, Inc. Data storage device and method for accidental delete protection

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529997B1 (en) 2000-08-11 2003-03-04 Storage Technology Corporation Apparatus and method for writing and reading data to and from a virtual volume of redundant storage devices
US6961900B1 (en) 2000-08-28 2005-11-01 Microsoft Corporation Rendering data according to a present schema from an origin response message
JP4256600B2 (ja) 2001-06-19 2009-04-22 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
US7139863B1 (en) 2003-09-26 2006-11-21 Storage Technology Corporation Method and system for improving usable life of memory devices using vector processing
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7136973B2 (en) 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7444360B2 (en) 2004-11-17 2008-10-28 International Business Machines Corporation Method, system, and program for storing and using metadata in multiple storage locations
US7366825B2 (en) 2005-04-26 2008-04-29 Microsoft Corporation NAND flash memory management
US7389397B2 (en) 2005-06-01 2008-06-17 Sandisk Il Ltd Method of storing control information in a large-page flash memory device
US7533330B2 (en) 2005-06-27 2009-05-12 Seagate Technology Llc Redundancy for storage data structures
US20070083697A1 (en) 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US20070136501A1 (en) 2005-12-08 2007-06-14 Chang Robert C Media card command pass through methods
US20070268905A1 (en) 2006-05-18 2007-11-22 Sigmatel, Inc. Non-volatile memory error correction system and method
JP2008077783A (ja) 2006-09-22 2008-04-03 Fujitsu Ltd 記憶データ処理装置、記憶装置、記憶データ処理プログラム
US7694091B2 (en) 2006-10-23 2010-04-06 Hewlett-Packard Development Company, L.P. Non-volatile storage for backing up volatile storage
US8151060B2 (en) * 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
US8341375B2 (en) * 2007-03-19 2012-12-25 Sandisk Technologies Inc. Methods for conversion of update blocks based on association with host file management data structures
US20080288712A1 (en) 2007-04-25 2008-11-20 Cornwell Michael J Accessing metadata with an external host
US8332574B2 (en) 2007-04-30 2012-12-11 Sandisk Il Ltd. Method for efficient storage of metadata in flash memory
KR101433859B1 (ko) 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
KR20090042039A (ko) 2007-10-25 2009-04-29 삼성전자주식회사 불휘발성 메모리 장치의 데이터 관리 방법
US7761740B2 (en) 2007-12-13 2010-07-20 Spansion Llc Power safe translation table operation in flash memory
WO2009079478A1 (en) * 2007-12-14 2009-06-25 Virident Systems, Inc. Distributing metadata across multiple different disruption regions within an asymmetric memory system
US8185685B2 (en) 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
US8245101B2 (en) 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US20090172335A1 (en) 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US8028123B2 (en) * 2008-04-15 2011-09-27 SMART Modular Technologies (AZ) , Inc. Circular wear leveling
US8171205B2 (en) 2008-05-05 2012-05-01 Intel Corporation Wrap-around sequence numbers for recovering from power-fall in non-volatile memory
KR101563647B1 (ko) 2009-02-24 2015-10-28 삼성전자주식회사 메모리 시스템 및 그것의 데이터 처리 방법
US9063886B2 (en) 2009-09-18 2015-06-23 Apple Inc. Metadata redundancy schemes for non-volatile memories

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013066357A1 (en) * 2011-11-04 2013-05-10 Intel Corporation Nonvolatile memory wear management
US9141536B2 (en) 2011-11-04 2015-09-22 Intel Corporation Nonvolatile memory wear management
CN110275797A (zh) * 2018-03-14 2019-09-24 欧姆龙株式会社 控制器以及数据保存方法
CN110275797B (zh) * 2018-03-14 2023-05-23 欧姆龙株式会社 控制器以及数据保存方法

Also Published As

Publication number Publication date
KR101303524B1 (ko) 2013-09-03
US20150309928A1 (en) 2015-10-29
KR20120044324A (ko) 2012-05-07
US9063886B2 (en) 2015-06-23
US9342449B2 (en) 2016-05-17
WO2011035245A1 (en) 2011-03-24
EP2299364B1 (en) 2019-01-02
WO2011034652A1 (en) 2011-03-24
EP2299364A1 (en) 2011-03-23
US20110072189A1 (en) 2011-03-24
KR101631348B1 (ko) 2016-06-16

Similar Documents

Publication Publication Date Title
KR101303524B1 (ko) 불휘발성 메모리에 대한 메타데이터 리던던시 스킴
US8812816B2 (en) Garbage collection schemes for index block
US8954647B2 (en) Systems and methods for redundantly storing metadata for non-volatile memory
US8478796B2 (en) Uncorrectable error handling schemes for non-volatile memories
EP2570927B1 (en) Handling unclean shutdowns for a system having non-volatile memory
US9069657B2 (en) LBA bitmap usage
US8966209B2 (en) Efficient allocation policies for a system having non-volatile memory
KR101494051B1 (ko) 불휘발성 메모리 시스템들을 위한 위브 시퀀스 카운터
US8935459B2 (en) Heuristics for programming data in a non-volatile memory
US8949506B2 (en) Initiating wear leveling for a non-volatile memory
US9239785B2 (en) Stochastic block allocation for improved wear leveling
US20120260027A1 (en) Device bootup from a nand-type non-volatile memory
US8850160B2 (en) Adaptive write behavior for a system having non-volatile memory
TWI669610B (zh) 資料儲存裝置以及非揮發式記憶體控制方法

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
A107 Divisional application of patent
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160727

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170804

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180730

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190729

Year of fee payment: 7