KR101573370B1 - 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템 - Google Patents

비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템 Download PDF

Info

Publication number
KR101573370B1
KR101573370B1 KR1020107013777A KR20107013777A KR101573370B1 KR 101573370 B1 KR101573370 B1 KR 101573370B1 KR 1020107013777 A KR1020107013777 A KR 1020107013777A KR 20107013777 A KR20107013777 A KR 20107013777A KR 101573370 B1 KR101573370 B1 KR 101573370B1
Authority
KR
South Korea
Prior art keywords
data
block
nvs
metadata
memory
Prior art date
Application number
KR1020107013777A
Other languages
English (en)
Other versions
KR20100091227A (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
Priority claimed from US12/079,364 external-priority patent/US8200887B2/en
Application filed by 바이올린 메모리 인코포레이티드 filed Critical 바이올린 메모리 인코포레이티드
Publication of KR20100091227A publication Critical patent/KR20100091227A/ko
Application granted granted Critical
Publication of KR101573370B1 publication Critical patent/KR101573370B1/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
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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/1474Saving, restoring, recovering or retrying in transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • 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/7205Cleaning, compaction, garbage collection, erase control
    • 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
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

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

Abstract

시스템의 비휘발성 메모리에 데이터를 저장하기 위한 방법 및 메모리 시스템이 개시되어 있다. 일 태양에서, 데이터는 휘발성 메모리로부터 비휘발성 메모리로 체크포인트되는 트랜잭션 로그 파일 및 메타데이터에 의해 설명된다. 로그 파일 세그먼트와 메타데이터 세그먼트의 마지막 체프포인트 사이에 발생할 수 있는 액션은 비휘발성 메모리 블록을 스캔함으로써 발견되며, 기록되어 있다고 알려진 각각의 블록에서의 가장 높은 섹터의 리코드를 설명한다. 임의 나중 트랜잭션이 발견되며 저장된 데이터를 메타데이터가 정확하게 나타내도록 복구된 메타데이터를 업데이트하는 데 사용된다.

Description

비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템{Method and system for storage of data in non-volatile media}
본 출원은 2007년 11월 21일에 출원된 미국 가출원 제 61/003,897호의 우선권을 주장하며, 이는 본 발명에 참고로 통합되어 있다. 본 출원은 2005년 4월 21일에 출원된 미국 가출원 제 60/674,189호, 및 2005년 6월 11일에 출원된 미국 가출원 제 60/698,636호에 우선권을 주장하는 2006년 4월 17일에 출원된 미국 출원 제 11,405,803호, 및 2007년 3월 29일에 출원된, 미국 가출원 60/920,737호에 우선권을 주장하는, 2008년 3월 26일에 출원된 미국 출원 12/019,364호의 일부 계속 출원이며, 이들 각각은 본 발명에 참고로 통합되어 있다.
본 발명은 휘발성 및 비휘발성 저장 매체 상의 데이터의 저장에 관한 것이다.
비휘발성 메모리 또는 비휘발성 기억소자(non-volatile storage: NVS)는 장기간 동안 보유될 필요가 있는 데이터를 저장하고, 전력 손실 또는 다른 시스템 실패 이벤트 이후 데이터 무결성(integrity)을 유지하기 위한 컴퓨팅 시스템에 유용하다. 비휘발성 기억소자의 예는 자기 디스크, 자기 테이프, 광 디스크 및 플래시 메모리일 수 있다. 이와 같은 메모리는 영구 기억소자(persistent storage)라 불린다.
플래시 메모리는 반도체 메모리 셀의 어레이에 정보를 저장하는 NVS의 예이다. SLC(single-level cell) 장치에서, 각각의 셀은 한 비트의 정보만을 저장한다. MLC(multi-level cell) 장치로 공지된, 최근 개발된 유형의 플래시 메모리는 셀로 적용하기 위해 전기 전하의 여러 레벨 사이에서 선택함으로써 셀당 2 이상의 비트를 저장할 수 있다. 다른 유형의 NVS가 개발되고 있으며, 장래에 사용될 것으로 예상될 수 있다.
플래시 메모리 회로의 2 개의 포괄적 유형, 즉 NOR 및 NAND은 현재 널리 사용되고 있다. 현재 대용량 메모리 시스템에 대해, NAND 플래시 메모리가 바람직하다. NOR 플래시 메모리가 바이트에 기초하여 수행되도록 판독 및 기록(프로그래밍) 동작, 및 "블록"으로 알려진 영역 상의 소거를 허용하는 반면, NAND 플래시는 자기 디스크 드라이브에 유사한, 블록에 기초하여 조직된다. 이와 같이, 섹터(sector), 페이지 및 블록이란 용어는 계층에 기초하여 유추에 의해 사용될 수 있다. 각각의 이들 데이터 저장 영역의 크기는 설명되는 실제 제품에 따라 달라질 수 있다; 그러나, 물리적 메모리와 관련하여 사용되는 경우, 블록이란 용어는 소거될 수 있는 물리적 메모리 위치의 가장 작은 인접한(contiguous) 범위를 나타낸다. 블록을 소거하는 것은 블록에서의 모든 비트를 "1"로 설정한다. 때때로 프로그래밍이라 불리는, 기록은 메모리로 정보(데이터)의 기록을 가져오도록 블록의 한 페이지 또는 섹터의 선택된 비트들을 "0"으로 설정한다. 블록 내의 섹터 또는 페이지 프로그래밍 동작은 순차적으로 수행된다. 이와 같은 프로그래밍 동작은 NAND 메모리의 각각의 섹터에 대해 오직 한번 수행될 수 있고, 섹터를 포함하는 메모리의 전체 블록은 섹터를 다시 기록하기 전에 소거되어야 한다.
논리 메모리 어드레스에 대한 NVS에 저장된 데이터를 수정하는 것은 물리적 메모리 위치에 또다른 기록을 요구하며, 이는 플래시 시스템에 바로 수행될 수 없기 때문에, 행해진 보통의 접근은 사용되지 않은 그러나 이전에 소거된 섹터로 수정된 데이터를 기록하도록 물리적 메모리에 논리적 메모리 위치를 이동하는 것이다. 데이터가 재배치되어 있는 섹터는 구 데이터를 현재 포함하고, 사용자에 더이상 흥미가 없다. 이는 "데드(dead) 또는 무효" 섹터라 고려될 수 있는 반면, 통용되는 데이터는 "리브(live) 또는 유효" 섹터에 저장된다고 고려된다. 데이터의 기록을 위해 이용가능한 섹터는 "프리(free)" 섹터라 불릴 수 있다. 동일한 용어는 페이지, 또는 블록 등을 설명하는데 적용될 수 있다.
메타데이터(metadata)는 시스템에 저장된 데이터에 대한 데이터를 포함할 수 있다. 메타데이터는, 예를 들어, 물리적 저장 위치로 논리 데이터 요소의 연관일 수 있다. 파일 관리 시스템의 요건, 씬 프로비저닝(thin provisioning) 시스템, 분산 RAID 관리, 디스크 에뮬레이션(disk emulation) 또는 다른 사용자 요구에 좌우하는, 다른 정보, 데이터의 유형, 데이터의 기록 시간, 및 오류 수정 코드에 대한 정보를 더 포함할 수 있다.
시스템 동작에서의 중단이 예를 들어, 전력 실패, 하드웨어 실패, 또는 소프트웨어-관련 오류에 기인하여 발생하는 경우, 휘발성 메모리에 저장된 메타데이터는 변질되거나 또는 손실될 수 있고, 비휘발성 기억소자(NVS)에, 하우스키핑(housekeeping) 또는 상태 정보를 포함하는, 사용자 데이터의 위치 및 다른 정보는 중단의 시간에서는 더이상 알려질 수 없다.
본 발명의 내용에 포함되어 있음.
시스템의 비휘발성 메모리에 데이터를 저장하기 위한 방법 및 메모리 시스템이 개시되어 있다.
일 태양에서, 상기 방법은 비휘발성 기억소자(NVS)에 동적 테이블의 체크포인트된(checkpoint) 복사본(copy)을 유지하는 단계; 및 동적 테이블에 대한 트랜잭션 로그를 유지하는 단계를 포함한다. 동적 테이블이 현재의 것이 아니거나 또는 재저장될 필요가 있는 경우, 상기 방법은 트랜잭션 로그에 포함되지 않은 동적 테이블로의 변경을 발견하는 단계 및 발견된 변경 및 트랜잭션 로그에서의 트랜잭션을 적용함으로써 동적 테이블을 업데이트하는 단계를 포함한다. 또한 로그되는 하나 이상의 트랜잭션이 시작되고/되거나 NVS로 기록되는 것을 마치기 전에 트랜잭션 로그가 NVS로 기록되는 상황과 같이, 실제로 발생하지 않았던 트랜잭션 로그에서 엔트리를 발견하는 단계를 또한 포함할 수 있다.
또다른 태양에서, 데이터의 저장 시스템은 프로세서, 휘발성 메모리 장치(VS), 및 비휘발성 메모리 장치(NVS)를 포함할 수 있다. 프로세서는 NVS에 저장된 데이터를 나타내는 메타데이터의 VS에서의 동적 테이블; NVS에서의 동적 테이블의 점진적으로 체크포인트된 버전, 및 로그가 NVS로 점진적으로 체크포인트되며, 메타데이터에 영향을 미치는 트랜잭션을 나타내는 VS에서의 로그를 유지하도록 구성된다. 메타데이터는 수선 또는 복구의 시간과 NVS에서의 로그의 마지막 점진적 체크포인트 사이에서 NVS로 기록된 데이터를 발견함으로써 수선될 수 있다.
또다른 태양에서, 비휘발성 기억 장치(NVS)에 저장된 데이터를 나타내는 메타데이터를 유지하기 위해 프로세서 및 메모리 시스템을 구성하기 위한 명령어를 가지며 컴퓨터 판독가능한 매체 상에 저장가능한, 컴퓨터 프로그램 제품이 개시되어 있다. 트랜잭션 로그 및 NVS에의 메타데이터의 체크포인트된 버전은 NVS에서 유지될 수 있고, 메타데이터는: 메타데이터를 업데이트하기 위해 체크포인트된 메타데이터로 트랜잭션 로그의 트랜잭션을 적용하고; 트랜잭션 로그가 트랜잭션을 포함하도록 아직 업데이트되지 않던 시간 동안 기록된 데이터를 발견하고; 그리고 업데이트된 메타데이터로 정렬된 복구 로그에서의 트랜잭션을 적용함으로써 수선될 수 있다.
본 발명의 내용에 포함되어 있음.
도 1은 휘발성 및 비휘발성 저장 회로를 가지는 데이터 저장 시스템을 설명한다;
도 2a는 비휘발성 기억소자(NMS)에 체크포인트된 메타데이터를 유지하는 방법을 나타내는 흐름도이다; 도 2b는 언제 메타포인트의 세그먼트가 체크포인트되어야 하는 지를 결정하는 방법을 나타내는 방법에 관한 상세한 설명이며; 도 2c는 도 2b에 도시된 방법의 연속이다;
도 3a는 메타데이터를 복구하는 방법을 나타내는 흐름도이다(파트 Ⅰ); 및 도 3b는 메타데이터를 복수하는 방법을 나타내는 흐름도이다(파트 Ⅱ);
도 4는 메모리 모듈의 논리 또는 물리적 배열일 수 있는, 복수의 메모리 모듈 상에 저장된 어레이 A에 대한 데이터 구조의 예이다;
도 5는 모듈의 물리적 배열이 다수의 루트를 가지는 이진 트리에 있는, 메모리 시스템의 물리적 모듈로의 논리 데이터 소자의 배정(assignment)을 나타내는 예이다;
도 6a는 메타데이터의 인덱스 워드(index word)의 데이터 구조의 예이며; 도 6b는 모듈의 또다른 모듈에 대한 인덱스 워드의 일부이다;
도 7은 메모리 어레이에 구체적 기본 데이터 유닛을 위치시키는데 사용되는 것으로 인덱스 워드를 나타낸다;
도 8은 메모리의 쿼드 데이터 유닛(quad data unit: QDU)의 데이터 구조를 나타낸다;
도 9는 여유 영역(spare area)에서 여유 영역 필드를 나타낸다;
도 10은 2-칩 메모리 회로에 대한 메타데이터 구조의 계층을 나타낸다;
도 11은 RBR(Root Block Record)의 데이터 구조를 나타낸다;
도 12는 RBR 여유 영역의 데이터 구조를 나타낸다;
도 13은 IB(Index Block) 여유 영역의 데이터 구조를 나타낸다;
도 14는 MTE(Map Table) 여유 영역의 데이터 구조를 나타낸다;
도 15는 MTE(Map Table Entry)의 데이터 구조를 나타낸다;
도 16은 도 15의 MTE 위치 필드의 데이터 구조를 나타낸다;
도 17은 여유 영역에서 MTE 위치 필드의 데이터 구조를 나타낸다;
도 18은 도 15의 시퀀스 번호 필드의 데이터 구조를 나타낸다;
도 19는 CPB(checkpoint block) 여유 영역의 데이터 구조를 나타낸다;
도 20은 MTE에 대한 로그 엔트리(log entry)의 데이터 구조를 나타낸다;
도 21은 체크포인트 블록 기록 동작에 대한 로그 엔트리의 데이터 구조를 나타낸다;
도 22는 블록 소거 동작에 대한 로그 엔트리의 데이터 구조를 나타낸다;
도 23은 블록 배정 동작에 대한 로그 엔트리의 데이터 구조를 나타낸다;
도 24는 불량 블록에 대한 로그 엔트리의 데이터 구조를 나타낸다;
도 25는 로그를 패딩하기 위한 로그에 대한 데이터 구조를 나타낸다;
도 26은 로그 블록 여유 영역에 대한 데이터 구조를 나타낸다.
예시적인 실시예는 도면을 참고로 하여 더 잘 이해될 수 있지만, 그러나 이들 실시예는 제한하는 것으로 의도되어 있지 않다. 동일하거나 또는 다른 도면에서 동일한 번호의 소자는 동일한 기능을 수행한다. 소자들은 번호가 매겨지거나 또는 두문자어에 의해 표시될 수 있거나 또는 양자 모두 가능하고, 명료함을 위해 표현 사이의 선택이 이루어져, 숫자로 표시된 소자, 및 두문자어 또는 글자와 숫자로 쓴 표시자에 의해 나타난 동일한 소자는 구별되어서는 안된다.
당업자가 명세서에 개시되어 있는 예들을 이해할 수 있게 하도록, 공지된 시스템, 장치, 구성요소 또는 기술을 본 발명에서 참고로 할 수 있다. 예들은, 시스템, 장치, 구성소자 또는 공지되어 있거나, 본 발명에 개시될 수 있거나, 이하 개발될 수 있는 기술, 또는 이들의 조합을 사용하여, 당업자가 본 발명에 청구된 바와 같이 발명의 개념을 실행할 수 있도록 의도되어 있다. 본 발명에 개시된 예와 임의 공지된 시스템, 장치, 구성소자 또는 기술 사이의 성능을 비교하는 경우, 이와 같은 비교는 본 발명의 새로운 시스템, 장치, 구성소자 또는 기술을 더 편리하게 이해하기 위해 단지 당업자에서 허용되도록 이루어지고, 이와 같은 결과가 변함없이 달성되거나 또는 달성될 수 있는 성능상에 제한이 되는지를 암시하지 않고, 상기 비교가 더 양호하게, 열등하게, 또는 실질적으로 동일한 경우, 복잡한 시스템에서, 다양한 구성 및 조건들이 존재할 수 있음을 이해해야 한다.
설명된 방법 및 도면에 도시된 장치가 기계-실행가능한 명령어, 예를 들어, 소프트웨어로, 또는 하드웨어, 또는 이들의 조합으로 구성될 수 있거나 또는 구현될 수 있음을 이해할 것이다. 명령어는 설명된 동작을 수행하기 위해 명령어와 함께 프로그램되는, 범용 컴퓨터, 마이크로프로세서, 메모리 제어기와 같은, 특수 목적 프로세서, DSP, 또는 어레이 프로세서 등을 야기하는데 사용될 수 있다. 대안으로는, 동작은, 설명된 동작을 수행하기 위한 펌웨어 명령어 또는 하드와어어드 로직(hardwired logic)을 포함하는 특수 하드웨어 소자에 의해, 또는 아날로그 회로를 포함할 수 있는, 사용자 지정 하드웨어(custom hardware) 소자 및 프로그램된 컴퓨터 소자의 임의 조합에 의해 수행될 수 있다. 이와 같은 하드웨어 소자는 FPGA(field programmable gate array), ASIC(application specific integrated circuits), 및 혼합 로직 및 아날로그 회로 등을 포함할 수 있다.
상기 방법들은 기계-판독가능 매체 저장될 수 있거나 또는 분배될 수 있고, 컴퓨터(또는 다른 전자 장치)가 기능 또는 방법을 수행하게 하기 위해 사용될 수 있는 명령어를 포함할 수 있는 컴퓨터 프로그램 제품으로서, 적어도 부분적으로 제공될 수 있다. 이 명세서의 목적을 위해, "기계 판독가능 매체(machine-readable medium)"란 용어는 기계 또는 특수 목적 하드웨어가 본 발명에 설명된 기능 또는 방법 중 임의 하나를 수행하게 하고, 컴퓨팅 기계 또는 특수 목적 하드웨어에 의해 판독 또는 실행을 위한 데이터 또는 명령어의 시퀀스를 저장할 수 있는 임의 매체를 포함하도록 취해질 것이다. "기계-판독가능 매체"란 용어는 고체-상태 메모리, 광 디스크 및 자기 디스크, 자기 메모리 및 광 메모리를 포함할 수 있지만 이에 제한되지 않는다.
예를 들어, 제한이 아니라, 기계 판독가능 매체는 ROM(read-only memory); 모든 유형의 RAM(random access memory)(예를 들어, S-RAM, D-RAM, P-RAM, M-RAM); PROM(programmable read-only memory); EPROM(electronically alterable read only memory); 자기 RAM; 자기 디스트 저장 미디어; 및 모든 유형의 플래시 메모리(에를 들어, SLC, MLC, 위상 변화(phase change)), 또는 공지되어 있거나 또는 연이어 개별될 수 있는 다른 비휘발성 메모리 유형 등을 포함할 수 있다.
또한, 액션을 취하거나 또는 결과를 야기하는 것으로, 일 형태 또는 또다른 형태로(예를 들어, 프로그램, 절차, 과정, 애플리케이션, 모듈, 알고리즘 또는 로직) 소프트웨어라 말하는 것이 당해 기술에 일반적이다. 이와 같은 표현은, 컴퓨터 또는 등가 장치에 의한 소프트웨어의 실행이 컴퓨터의 프로세서 또는 등가 장치가 액션을 수행하거나 또는 결과를 발생하도록 한다고 말하는 단지 편리한 방법이며, 이들의 표현은 예를 들어, 메모리 위치에 저장될 수 있거나, 또는 외부 장치 또는 시스템 상에, 국부적으로 또는 네트워크 전체에 영향을 미치는데 사용될 수 있다.
구체적인 예를 설명하는 경우, 예는 구체적 특징, 구조 또는 특성을 포함할 수 있지만, 모든 예가 반드시 구체적 특징, 구조 또는 특성을 반드시 포함하지 않을 수 있다. 이는 2 개 이상의 예의 특징, 구조 또는 특성의 결합이 명백히 제외되는 경우를 제외하고는, 2 개 이상의 예의 특징, 구조 또는 특성의 결합이 결합되어서는 안되거나 결합될 수 없는 제안 또는 의미로서 취해져서는 안된다. 구체적 특징, 구조 또는 특성이 예와 함께 설명되는 경우, 당업자는, 명백하게 본 발명에서 설명되든 아니든, 다른 예와 함께 이와 같은 특징, 구조 또는 특성을 실시할 수 있다.
메타데이터는 시스템에 저장된 데이터에 대한 데이터를 포함할 수 있다. 메타데이터는 예를 들어, 물리 저장 위치로의 논리 데이터 요소의 연관, 및 논리 데이터 요소와 물리 저장 위치의 연관일 수 있다. 또한 특정 시스템의 요건에 좌우되는, 데이터 유형에 대한 정보, 데이터의 기록의 시간, 오류 수정 코드 및 물리적 저장 위치의 상태 등 등에 관한 정보를 포함하는 다른 정보를 더 포함할 수 있다. 메타데이터에 대한 변경은 메타데이터 자체로 이뤄질 수 있고, 메타데이터가 나타나도록 의도되어 있는 저장된 데이터와 일관되게 메타데이터를 유지하도록 로그에 대해 이뤄질 수도 있다.
메타데이터는 다이, 칩, 모듈, 볼륨 또는 시스템에 저장된 데이터에 관한 것 일 수 있으며, 다른 메타데이터를 언급할 수 있거나 또는 다른 메타데이터로 언급될 수 있다. 간단함을 위해, 다이 상의 데이터의 저장과 연과된 메타데이터가 논의되며, 칩, 모듈 또는 시스템 상에 저장된 메타데이터의 태양은 필요한 경우 도입된다. 메타데이터는 "논리 블록 어드레스(LBA)" 상에 색인된 테이블로 조직될 수 있지만, 그러나 물리적 메모리 위치(예를 들어, PBA)와 관련하여 또한 저장될 수 있다. 어드레스 인덱스는 자주 디스크 상의 개별 페이지 또는 섹터, 또는 플래시 다이 상의 블록의 섹터들 또는 페이지들과 연관되며, 512 바이트일 수 있다. 다른 태양에서, 어드레스 인덱스는 복수의 섹터(통상적으로 4개의 섹터)를 가지는 페이지와 연관될 수 있다. 이 맥락에서, LBA란 용어는 메타데이터에 의해 표현되는 데이터 어드레스의 가장 작은 증분을 언급할 수 있다; 예를 들어, 512 바이트, 또는 2K 바이트. 저장된 데이터가 플래시 칩의 여유 영역에서와 같은, 메모리에 저장된 속성을 가지는 경우, 이와 같은 데이터의 존재는 LBA의 속성들 중 하나로서 포함될 수 있고 로컬 메타데이터로 고려될 수 있다.
LBA에 대한 데이터가 저장되어 있는 위치의 물리적 어드레스, 및 LBA 시퀀스 번호는 LBA에 대한 메타데이터에 포함될 수 있다. LBA 시퀀스 번호는 각각의 LBA에 특정할 수 있으며 연관된 메모리 장치의 리셋에서 초기화될 수 있거나, 또는 시퀀스 번호는 명령(command)에 의해 일정 값으로 설정될 수 있다. LBA의 데이터가 변경되는 매 경우, LBA의 시퀀스 번호의 값(SeqLba)은 1(unity) 씩 증분될 수 있다. 시퀀스 번호가 2 개 이상의 LBA와 연관된다면, 시퀀스 번호는 증분되는 것보다는 차라리 카운터의 현재 값으로 설정될 수 있다. 대안으로는, 시퀀스 번호는 클록 값의 일부 또는 시간 스탬프, 난수(random number), 또는 또다른 다른 방법으로 임의로 배정된 값일 수 있다.
LBA 등의 용어가 호스트 또는 사용자 컴퓨터로 초기화된 프로세스로부터 수신된 데이터를 말하는 경우, 사용자는 LBA가 메모리의 논리 또는 물리적 어드레스를 말할 수 있다고 생각할 수 있다. 메모리 시스템은 이 명칭(designation)을 받아들 일 수 있고, 임의 사용자 데이터 위치가 메모리에서의 논리 위치라고 생각하는 것에 의해 메모리의 실제 데이터 위치 및 데이터 위치의 사용자 표현 사이의 맵핑(mapping)을 형성한다. 따라서, 사용자의 파일 관리 시스템은 메모리 시스템의 메모리 시스템의 동작으로부터 실질적으로 분리될 수 있고, 구식 소프트웨어(legacy software)일 수 있는 복수의 파일 관리 시스템 유형은 호스트 컴퓨터 상에서 성공적으로 동작할 수 있다.
설명의 간단함을 위하여, 메모리 시스템의 메모리 위치는, 사용자 관점에서, RAM-기반 메모리를 관리하는데 사용되는 것과 유사한, 메모리 어드레스의 근접 스팬(span)으로 설명될 수 있고, 메모리 어드레스 공간은 사용자 메모리 공간에 서브-영역으로 분할될 수 있거나, 또는 다른 사용자 프로세스로 이와 같은 영역을 할당하기 위해 메모리 시스템에 의해 구성될 수 있다. 사용자 프로그램은 랜덤하게 접근가능한 것으로, RAM 메모리 시스템에서와 같이, 블록 지향 장치로서, 또는 임의 다른 어드레스지정 방식을 사용하여 LBA 어드레스 범위를 처리할 수 있다.
RAID(Reliable Array of Inexpensive Disks)와 등가의 개념이 사용되는 경우, 동일한 시퀀스 번호는 RAID 그룹 데이터가 저장되어 있는 스트라이프(stripe)의 각각의 메모리 회로에 대응하는 데이터 요소로 할당될 수 있다. RAID 스트라이프의 각각의 일부로의 동일한 시퀀스 번호 값의 배정은 스트라이프의 각각의 일부로부터 판독된 데이터가 스트라이프의 상기 부분으로 기록되어 있었던 가장 최근의 데이터이며, 스트라이프의 약간의 부분이 정확한 어드레스를 가지지만 구식 버젼의 데이터를 나타내는 데이터를 반환하지 않았다는 확인을 허용한다. 시퀀스 번호는 순차적일 필요는 없지만 RAID 스트라이프의 모든 부분이 함께 속해 있음을 증명하기 위해 사용될 수 있는 특성을 가질 필요만이 있다. 이와 같은 비순차적 "시퀀스" 번호의 예들은 공유된 난수, T1 DIF(Data Integrity Field), 또는 스트라이프의 또다른 부분의 체크섬(checksum)일 수 있다: 예를 들어, 청크 B(chunk B)의 SeqNum은 청크 A의 CRC이고, 청크 C의 것은 청크 B의 CRC이며, ... 청크 E의 것은 청크 D의 CRC이고 청크 A의 것은 청트 E의 CRC이다. 스트라이프 부분들의 SeqNum은 스트라이의 한 부분 또는 전체에 걸쳐 계산된 ECC 또는 CRC의 조각일 수 있다.
메타데이터로의 변경은 로그에 리코드(record)될 수 있고 로그의 헤드에 순차적으로 리코드될 수 있고, 이는 메타데이터의 유지와 연관된 트랜잭션(transaction)의 연대순의 기록이다. 로그에 할당된 저장 공간이 유한하며, 따라서 프리 공간은 예를 들어, 로그 파일 시스템이, 로그 파일이 순환 버퍼에서 유지되는 경우 로그의 헤드가 랩 어라운드(wrap around)하는 경우 채워지게 되는 것을 방지하기 위해 로그의 테일(tail)로부터 되찾아 질 수 있다. 그러나, 로그 데이터는 링크된 리스트 또는 다른 데이터 구조로서 유지될 수 있다. 로그 파일 자체는 또한 메타데이터로서 고려될 수 있다.
칩 또는 모듈에 대한 메타데이터는 자율 엔티티(autonomous entity)로서 모듈을 유지하도록, 칩 또는 모듈 상의 칩들에 기록될 수 있다. 칩의 고장은 복구를 위한 메터니즘이 존재하지 않는 한 데이터의 손실을 유발할 수 있다. 사용자 데이터는 RAID 배열에서 복수의 모듈을 가로질러 데이터를 스트라이핑함으로써 메모리 시스템에 저장될 수 있고, 고장난 모듈에 저장된 데이터는 RAID를 사용하여 여유 모듈로 재구성될 수 있다.
메타데이터가 모듈상에 저장되고 저장된 메타데이터를 포함하는, 모듈의 메모리 영역 또는 칩이 고장나는 경우, 오류 복구 메커니즘이 제공되지 않는 한 저장된 메타데이터는 손실될 수 있다. 모듈의 칩에 대한 메타데이터는 모듈의 복수의 칩에 걸쳐 RDID 스트라이프에 메타데이터를 저장함으로써 손실로부터 보호될 수 있다. 회복 불능의 오류가 모듈에 저장된 (로그를 포함하는) 메타데이터 블록에서 발생하는 경우 잉여 패리티(redundant parity) 데이터가 사용되도록 예상될 뿐이기 때문에, RAID는 높은 순위를 가질 것이다. 즉, 18 개의 칩을 가지는 하나의 모듈에서, 메타데이터 자체는 17개의 칩 상에 저장될 수 있고, 패리티 데이터는 18 번째 칩에 저장될 수 있다. 수정을 필요로 하는 오류가 존재하지 않는 한 패리티 데이터는 일반적으로 판독되지 않는다. 이와 같이, 필요한 저장 영역, 및 로컬 프로세서 로드(load)만이 단지 약간 증가될 뿐이다.
로그 엔트리와 저장 매체로 기록된 데이터를 연관시키도록, 다른 시퀀스 번호(PgmSeqNum, PSN)는 데이터 또는 메타데이터에 영향을 미치는 각각의 트랜잭션, 또는 NVS 상의 블록 상태와 연관될 수 있다. PgmSeqNum의 값은 매체가 초기화되거나 또는 리셋되는 시간에 초기화될 수 있고, NVS로 기록된 다른 데이터 또는 각각의 LBA 데이터에 대해 1 씩 증분될 수 있거나, 블록이 소거되거나, 또는 다른 리코드가능한 액션이 NVS와 관련하여 발생한다. PgmSeqNum의 값은 예를 들어, 각각의 섹터 또는 페이지와 연관된 NVS의 여유 영역에 LBA 데이터를 특징으로 하는 다른 데이터와 마찬가지로 저장될 수 있다. NVS의 여유 영역은 저장되고 있는 데이터가 아닌 다른 정보 또는 메타데이터의 저장을 위해 사용되도록 할당되는 임의 어드레스 범위일 수 있다. 여유 영역은 섹터, 또는 페이지에 근접할 수 있거나, 또는 하나 이상의 비-근접한 어드레스 범위일 수 있다. 섹터 또는 페이지와 연관되는 경우, 여유 영역은 때때로 보조 데이터라 불린다. 통상적으로는, 본 발명에서 상호변경가능하게 용어를 사용할 것이다.
로그 파일은 저장된 데이터의 위치 또는 저장된 데이터를 변경하는 저장 매체 상에 각각의 동작을 위한 엔트리를 포함할 수 있고, LBA, 이전 물리적 메모리 위치, 새로운 물리적 메모리 위치, SeqLba, PgmSeqNum 및 LBA에 대한 메타데이터를 업데이트하기 위해 필요할 수 있는 임의 다른 정보를 포함할 수 있다. 메타데이터 및 로그는 또한 페이지 및 이의 섹터를 포함하는, 블록의 상태를 나타내는 정보를 포함할 수 있다. 이와 같은 정보는 예를 들어, 블록, 페이지 또는 섹터가 프리, 리브, 데드 또는 불량 중 하나일 수 있다.
로그 파일은 NVS에 존재할 수 있다; 그러나, 가장 최근의 트랜잭션을 나타내는 로그 파일의 세그먼트는 "충돌(crash)"이 발생하는 순간에 (DRAM과 같은) 휘발성 메모리에 저장될 수 있다. 휘발성 메모리에서의 로그 파일의 세그먼트는 메타데이터가 충돌에 의해 변질되거나 또는 손실되기 전에 NVS로 아직 기록되지 않았을 수 있다. 트랜잭션 데이터가 로그 파일로 입력되었다고 말해지는 경우, 특별히 달리 말하지 않는 한, NVS에 이미 저장된 트랜잭션 데이터의 세그먼트를 의미한다. 이 논의는 전력 실패의 시간, 또는 현재 메타데이터 및 트랜잭션 로그가 휘발성 메모리로부터 NVS로 완전히 저장되어 있지 않은, 다른 상황에서 불충분한 잔존 전력이 존재할 수 있다고 추정한다. 모든 메타데이터 및 트랜잭션 로그가 동작의 중단 전에 NVS에 저장될 수 있는 경우, 이는 "클린" 종료(clean shutdown)라 불릴 수 있으며, 저장된 로그에 임의 트랜잭션에 의해 적어도 업데이트되는 바와 같이, 메타데이터는 플래시 메모리에 저장된 데이터의 현재 표현이다. 프로그래밍 결함과 연관된 충돌 또는 유사한 이벤트의 경우에, 데이터 전송을 수행할 어떠한 기회도 없을 수 있거나, 또는 데이터 전송이 불완전하거나 또는 손상될 수 있다.
메타데이터, 로그 파일, 및 유사한 정보는 예를 들어, 순환 버퍼에 NVS에 저장될 수 있다. 일 태양에서, 메타데이터 및 로그 데이터는, 원보다는 사슬을 형성하는, 더이상 필요하지 않은 경우 동적으로 할당되고 비어있는(freed) 데이터 구조에 저장될 수 있다. (완전하거나 또는 인접하지 않을 수 있는) LBA의 범위를 나타내는, 메타데이터의 세그먼트는 NVS 메타데이터 버퍼의 헤드에 위치함으로써 NVS에 저장된 데이터에 주기적으로 추가될 수 있어(체크포인트될 수 있어), 비록 저장된 메타데이터가 과거에 LBA 어드레스 범위의 각각의 "스냅샷(snapshot)"을 나타낼 수 있더라도, 결국에는, 모든 LBA 데이터는 NVS에 저장되어 있다. 체크포인트를 위해 할당된 NVS 메모리는 메타데이터의 적어도 현재의 전체 세트 및 관련 저장 매체에 대한 임의 연관된 트랜색션 로그가 저장될 수 있도록 충분히 커야 한다. 결국에는, 버퍼는 논리적으로 랩 어라운드될 수 있고 오래된 데이터는 중복기록될 수 있다. 일반적으로, 가장 최근의 메타데이터 세트만이 충돌로부터 복구하는데 사용된다; 그러나, 더 오래된 메타데이터는 진단을 목적으로 보유될 수 있고, 메타데이터 저장을 위해 할당된 저장 영역은 완전한 체크포인트를 위한 저장 영역을 초과한다.
NVS에서의 트랜잭션 로그 파일의 크기는 (마지막 증분 체크포인트) 각각의 LBA 어드레스 범위에 대해 업데이트된 메타데이터의 저장 다음에 메타데이터에서의 변경을 리코드하는데 적어도 충분할 필요가 있어, 저장된 데이터에 대한 메타데이터의 완전한 세트가 NVS에 저장되거나, 또는 NVS로부터 복구가능하다. 메타데이터 업데이트의 주기성 및 NVS에서의 로그 파일의 길이는 설계 트레이트-오프(trade off)이며, 판독 및 기록 동작의 혼합에 좌우되며 동적으로 조절가능할 수 있다.
실시예에 대한 내용을 제공하기 위해, 이용가능한 플래시 메모리 장치는 NVS를 특징 짓는데 사용된다. 메모리 시스템에 대한 구체적 설계 고려사항에 좌우하여, 구체적 메모리 장치의 사용은 개발되고 있는 비휘발성 메모리 유형을 포함할 수 있거나, 또는 개발될 수 있는, 유사한 기능적 특성을 가지는, 다른 NVS 메모리 장치가 동일하게 사용가능하지 않음을 제안하는 것으로 의도되지 않았다. 몇 가지 다른 NVS 메모리 기술의 조합이 NVS를 위해 사용될 수 있고, 몇 가지 다른 메모리 유형의 조합이 또한 휘발성 기억소자를 위해 사용될 수 있다. 휘발성 메모리 회로 및 비휘발성 메모리 회로 모두는 편의를 위해 약간의 다른 메모리 유형을 포함할 수 있다.
현재 제품에서 예시적인 NVS 장치는 동일한 물리적 패키지에서 2 개의 512 Mbyte 다이(die)를 가지는, 삼성 부품 번호 K9W8G08U1M, 1 GByte 플래시 메모리 회로이다. 상기 장치는 공유된 8-비트 I/O 버스 및 다수의 공유된 제어 신호들을 가진다. 2 개의 다이는 개별 인에이블(enable) 및 레디/비지(ready/busy) 신호를 가진다. 간략함을 위하여, 플래시 메모리 장치가 실시예에서 언급되는 경우, 모듈 또는 칩에서의 2 개의 다이의 동작이 논의되는 경우를 제외하고는, 다이 중 하나 만을 의미하는 것이다. 그러나, 더 크거나 또는 더 작은 용량의 칩 및 다중 칩 패키지들로의 확대가 당업자에 의해 이해될 것이다. 실시예에서 사용된 플래시 메모리 칩의 구체적 설계가 실시예의 이해를 용이하게 하기 위한 것이며, 다른 버스 구조, 및 데이터 용량 등을 가질 수 있는 다른 사양 장치가 동일하게 사용가능함을 이해할 것이다. 메모리 회로의 선택은 NVS 메모리 산업이 발달함에 따라 변경될 수 있다.
각각의 다이는 4096 블록을 포함하며; 각각의 블록은 64개의 2KByte 페이지를 포함한다. 즉, 각각의 다이는 512 Mbyte(MB)의 용량을 가지며, (하나의 칩일 수 있는) 2 개의 다이의 패키지는 1 GByte(GB)의 용량을 가진다. 각각의 페이지는 또한 4 개의 512 byte 섹터로 구성될 수 있다. 각각의 페이지는 섹터에 대한 보조 데이터라 불릴 수 있는, 로컬 메타데이터를 보유하는데 사용된 64 Byte 영역을 포함할 수 있다. 데이터 및 페이지의 로컬 메타데이터는 또한 달리 배열될 수 있고, 전체 페이지에 대한 메타데이터는 하나의 64 바이트 영역에 포함되거나 또는 페이지의 섹터에 할당된다. 일 실시예에서, 데이터는 2 KByte + 64 byte 휘발성 데이터 레지스터로 플래시 저장으로부터 전체 페이지의 이미지를 전달함으로써 판독될 수 있다. 따라서, 판독된 데이터는 바이트 데이터로서 휘발성 데이터 레지스터로부터 접근될 수 있거나, 전체 페이지는 데이터 버스 상에서 시프트 아웃(shift out)한다. 판독 포인터(pointer)가 페이지에서의 임의 바이트에서 시작될 수 있기 때문에, 페이지의 서브세트가 또한 시프트 아웃될 수 있다. 페이지 또는 섹터의 판독이 설명되는 경우, 로컬 메타데이터는 메타데이터가 요구된다면 또한 판독되어야 한다고 추정될 수 있다. 필요한 경우, 메타데이터는 섹터 또는 페이지의 남아있는 데이터를 전달하지 않고 접근될 수 있다.
데이터 레지스터로의 비휘발성 메모리 회로로부터의 페이지의 판독은 약 25 마이크로세컨드가 걸릴 수 있고, 데이터는 20 MBytes/second의 레이트로 칩 데이터 버스로 시프트 아웃될 수 있다. 레지스터 및 버스로부터 또는 이들로 전체 페이지를 시프트하는 것은 약 100 마이크로세컨드를 요구한다. 보조 데이터만이 요구되는 경우, 판독 시간은 데이터 레지스터로 페이지에 대한 데이터를 판독하기 위해 필요한 대략 25 마이크로세컨드로 감소될 수 있다.
블록이 데이터를 저장하는데 사용될 수 있기 전에, 그 블록은 소거되어야 하며, 소거 프로세서는 대략 2 밀리세컨드가 걸릴 수 있다. 소거는 블록의 모든 비트를 "1"로 설정하고, 다음 기록(프로그래밍) 동작은 선택적으로 비트를 "0"으로 클리어한다. 비트가 일단 0으로 된다면, 전체 블록을 소거함으로써 "1"로 설정될 수 있을 뿐이다. 즉, 블록의 하나 이상의 섹터가 기록된다면, 동일한 섹터들은 전체 블록이 소거될 때가지 다시 기록될 수 없다. 부분적으로만 채워진 블록들은 오름 차순으로 프리 섹터 또는 페이지로, 기록된 데이터를 계속하여 가질 수 있다.
기록은 칩 데이터 레지스터로 데이터를 시프트하고 이후 비휘발성 메모리(NVS) 회로로 데이터를 기록하는 명령을 실행함으로써 수행될 수 있다; 기록은 버스로부터 데이터 레지스터로 데이터를 이동하는데 필요한 시간을 배제하고, 대략 200 마이크로세컨드가 걸린다. 페이지의 데이터 및 메타데이터 영역은, 페이지가 4 개의 섹터로 구성되는 것으로 고려되는 경우, 소거들 사이의 4 배의 시간까지 각각 기록될 수 있다. 즉, 페이지의 섹터들의 각각은 증가하는 시퀀스 순서로 개별적으로 기록될 수 있다. 이 태양은 페이지가 4 개의 512 바이트 섹터로서 처리되도록 할 수 있고, 각각의 섹터는 연관된 ECC 또는 다른 로컬 메타데이터를 가질 수 있다. 플래시 메모리 블록에서의 페이지는 낮은 페이지 어드레스로부터 높은 페이지 어드레스로, 순차적으로 기록된다. 저장된 데이터의 메모리 어드레스는 예를 들어, 블록 번호, 블록에서의 순차적 페이지 번호 및 섹터 번호에 의해 표현되는 것으로 고려될 수 있고, 필요하다면 섹터 내의 바이트의 위치를 포함할 수 있다. 페이지가 일단 기록된다면, 블록에서의 더 빠른 페이지는 전체 블록의 다음 소거 이후 까지 더이상 기록될 수 없다.
종종, 본 발명의 실시예에서, 페이지는 판독되거나 또는 기록되고 있는 등의 메모리 위치들의 가장 작은 인접 그룹 등을 설명하는 데 사용된다. 이는 설명에서의 간소함을 위한 것이다. 전술된 바와 같이, 많은 NVS 회로는 섹터 레벨에서 기록가능하며, 한 페이지에 복수의(통상적으로는 4 개) 섹터가 존재할 수 있다. 전술한 바와 같이, 한 페이지의 섹터들은 한 페이지가 오름 차순으로, 그러나 반드시 함께는 아니라, 4 개의 섹터로서 기록될 수 있도록 시퀀스에 기록될 수 있다. 데이터가 페이지로부터 판독되는 경우, 데이터는 휘발성 데이터 레지스터로 전송되고, 데이터의 일부만이 전송되거나 또는 동작된다. 예를 들어, 한 페이지의 한 섹터만, 데이터의 한 바이트만, 또는 섹터 또는 페이지의 여유 영역만이 실제로 칩의 버스에 배치될 수 있다.
전술한 설명에서의 섹터, 페이지 및 블록이란 용어의 사용은 플래시 메모리 회로를 위한 통상적으로 받아들여지는 용어를 반영하며, 회전 디스크 메모리 기술로부터 몇 가지 용어의 채택으로부터 유발된다. 그러나, 데이터 구조가 본 발명에 설명된 경우, "블록"이란 용어는 이하 명백하게 설명되어 있는, 다른 의미를 가질 수 있다. 데이터 구조에서의 데이터의 블록은 논리 데이터 구조 정의해 의해 정의된 크기 및 특성을 가지며, 소거 동작에서 소거될 수 있는 최소 량의 메모리를 나타내는 플래시 메모리의 한 블록에 대응하지 않을 수 있다. 데이터 "세그먼트"란 용어는 물리적 메모리의 플래시 메모리 블록으로 크기에 있어 대응하지 않을 수 있는 고정 또는 가변 크기의 데이터의 한 블록을 언급할 수 있다. 페이지 및 섹터란 용어는 데이터 및 위치를 말하는 경우 사용되는 다른 용어로 교체될 수 있다. 이는 실시예들의 내용으로부터 명백하게 된다.
도 1에 도시된, 시스템(1)의 예에서, 컴퓨터 또는 버스 인터페이스 프로세서(10)는 휘발성 기억 장치(20) 및 플래시 메모리일 수 있는 비휘발성 기억 장치(30)(NVS)와 통신한다. 휘발성 기억소자(20)는 DRAM(dynamic random access memory), 또는 SRAM(static random access memory) 등과 같은 장치일 수 있다. 휘발성 메모리 또는 휘발성 기억소자(VS)는 이와 같은 메모리에 저장된 데이터의 무결성을 유지하기 위해 전력원의 근본적으로 연속하는 응용을 요구하는 것으로 알려져 있다. 종종 이 전력이 시스템 구조의 임의 레벨에서 있을 수 있는 배터리 백업 시스템에 의해 보충된다; 그러나, 이와 같은 백업 전력 공급은 무한히 계속되지 않으며, 이 예를 위해, 시스템 주 전력의 손실 또는 다른 전력 중단이 휘발성 기억소자(20)에 데이터의 손실 또는 가능한 변질을 가져오도록 고려된다. 편의를 위해, 휘발성 기억소자(VS)는 RAM으로 본 발명에서 설명된다. 비휘발성 기억소자(NVS)는 데이터 무결성이 전력 손실 이후에 조차 유지되는 매체 또는 메모리 회로를 가지는 장치일 수 있다. 자기 디스크 같은 매체, 또는 다양한 유형의 플래시 메모리가 현재 사용된다. 예를 위해, SLC NAND 플래시 메모리 회로는, 사용될 수 있는 NVS의 유형을 제한하도록 의도되지 않고, NVS 빌딩 블록으로서 사용된다.
버스 인터페이스(10)는 RAM, 자기 디스크, 및 자기 테이프 등과 같은 다른 저장 매체와 연관될 수 있는, 호스트 프로세서와 같은 컴퓨팅 시스템의 다른 소자와 통신할 수 있고, 또한 외부 통신 네트워크와 접속할 수 있다. 버스 인터페이스(10)는 더 큰 NVS 메모리 시스템의 버스와 접속하도록 구성될 수 있고, 도 1의 어셈블리는 모듈로 고려될 수 있다. 이와 같은 메모리 시스템은 도 2에 도시되어 있다. 일 태양에서, 도 1의 어셈블리는 고체 상태 디스크(solid state disk: SSD)로 고려될 수 있고, 더 대용량의 메모리 시스템의 일부로서 또는 개별적으로 사용될 수 있다.
RAM(20)은 실행하기 전에 RAM에 또한 저장될 수 있는 컴퓨터 프로그램에 의해 동작되고 있는 데이터를 저장하는데 사용될 수 있다; RAM은 메타데이터 및 데이터의 휘발성 저장을 위한 영역을 포함할 수 있고, 메타데이터는 NVS 상에 저장될 수 있는, 데이터, 프로그램, 또다른 메타데이터, 및 로그 파일 등의 태양을 나타내는데 사용된다.
모듈이 대용량의 메모리 시스템의 일부인 경우, 다른 휘발성 메모리 영역들은 또한 또다른 컴퓨터 또는 프로세서 등에 의해 동작을 위한 데이터 및 프로그램 명령어의 임시 저장을 위해 제공될 수 있다. 메모리 모듈과 연관된 RAM은 NVS 장치와 임의 다른 저장 매체 사이에 중간 기억소자로서 사용될 수 있다.
반복하기 위해, 모듈이란 용어는 컴퓨팅 시스템에 연관될 수 있는, NVS 메모리회로의 그룹을 상상하기 위한 편의이다. 모듈은 또한 시스템의 다른 부분들과 통신하기 위한 버스 인터페이스를 포함할 수 있다. 모듈은 단일 회로 보드, 기판 또는 패키지 상에 물리적으로 존재하는 모든 소자를 가질 필요는 없다. 대안으로는, 2 개 이상의 모듈은 단일 보드, 기판 또는 패키지 상에 존재할 수 있다.
처리되고 있는 메타데이터는 현재는, NVS에서의 데이터를 판독하고 기록하기 위한 액세스 시간이 RAM에서의 데이터에 대한 액세스 시간 보다 긴 경우 NVS에서 뿐만 아니라 RAM에 저장될 수 있고, NVS는 또한 소모되기 전에 소거 또는 기록의 횟수와 같은 제한을 가질 수 있다. RAM(VS)에서의 메타데이터를 휘발성 메타데이터라고 고려할 수 있으며, NVS(예를 들어, 플래시)에서의 메타데이터를 바람직하게는 휘발성 메타데이터의 비휘발성 거의 현재 또는 현재 이미지라고 고려할 수 있다. 따라서, 메타데이터가 NVS 상의 데이터의 저장 및 회수(retrieval)를 관리하기 위해 사용되는 경우, 수정된 메타데이터가 RAM에 있는 경우 동작의 속도가 더 빠를 수 있다. 데이터란 용어가 본 발명에 사용되는 경우, 특별히 배제되는 경우를 제외하고는, 사용자 데이터, 메타데이터, 파일 데이터, 프로그램 명령어 및 로그 파일 등을 의미한다.
휘발성 기억소자(VS)의 메타데이터는 시스템 전력의 손실 또는 다른 예상치 못한 사건에 의해 손실되거나, 변질되거나 또는 다른 방법으로 사용불가능하게 될 수 있다. 이는 종종 "충돌(crash)"로 불린다. 본 발명에서, "충돌"이란 용어는 VS의 메타데이터가 의도된 목적을 위해 사용할 수 없게 되도록 하는 임의 사건을 나타내기 위해 사용된다. 충돌의 유발은 전력 고장, 하드웨어 결함, 소프트웨어 프로그래밍 오류, 또는 유사한 발생일 수 있다. 이 발생은 또한 시스템이 순서대로 종료되고("클린" 종료), 그리고 모든 데이터 및 메타데이터가 NVS에 정확하게 저장되는(체크포인트되는) 상황과 구별하도록, "더티(dirty)" 종료로 공지될 수 있고, 저장된 메타데이터 또는 저장된 메타데이터와 저장된 트랜잭션 로그의 조합은 저장된 데이터의 현재 상태를 나타낸다.
이 실시예에서, 휘발성 메타데이터는 RAM에 저장되고, 메타데이터는 NVS에 저장된 데이터의 각각의 논리 요소의 속성 및 위치를 설명한다. 논리 데이터 요소 저장 설명은 예를 들어, 섹터, 페이지, 블록 또는 볼륨의 입도(granularity)를 가질 수 있다. 이 실시예에서, 논리 요소는 섹터이다. 시스템(1)이 동작을 시작하는 경우, 시스템(1)에 의해 수신되거나, 또는 시스템 및 연관된 소프트웨어 프로그램의 동작에 의해 발생된 데이터는 저장되거나 또는 NVS로부터 회수될 수 있다. 데이터가 NVS로 기록되는 경우, 데이터는 논리 블록 어드레스(LBA)를 각각 가지는, 섹터로서 조직화된다. 메타데이터는 NVS의 섹터의 물리적 메모리 위치와 LBA를 연관시키며, 시간 스탬프, 시퀀스 번호(예를 들어, SeqLba, PgmSeqNum), 데이터 유형, 체크섬, 또는 다른 오류 수정 코드(ECC) 등과 같은 데이터와 관련한 다른 정보를 포함할 수 있다. 시간 스탬프는 동작의 상대적 순서가 기결정된 입도에 대해 시간이 경과하는 방향과 관련하여 조직될 수 있도록 시스템 타이머에 관련할 수 있다.
휘발성 메타데이터의 스냅샷(체크포인트)를 취할 수 있고, NVS에 저장할 수 있고 제 1 베이스라인(baseline)으로 사용될 수 있다. 파일 관리 시스템은 데이터가 NVS로 기록되도록 하는 매 시간마다, 논리 요소와 이의 물리적 위치 사이의 연관은 데이터 또는 저장 위치의 임의 변경된 속성과 함께, 업데이트되고 휘발성 메타데이터에 저장되며, 트랜잭션은 또한 휘발성 기억소자에서 로그에 저장된다.
주기적으로, 또는 휘발성 메타데이터로의 기결정된 횟수의 업데이트 이후, 메타데이터의 세그먼트(예를 들어, 페이지)는 NVS로 기록되어, 모든 메타데이터 페이지가 NVS에 기록됨에 따라, 동작의 횟수 또는 시간 주기 이후, NVS에 저장된 메타데이터는 새로운 베이스라인을 구성한다. 비록 다른 유효 시간을 가지더라도, 완전한 메타데이터 세트가 NVS에 있도록 메타데이터 페이지의 수보다 큰 깊이를 가지는 순환 버퍼에 메타데이터가 저장될 수 있다. 그러나, NVS에 체크포인트된 이미지와 다르도록 휘발성 메모리의 메타데이터 페이지를 수정하는 동작이 수행된 직후, 저장된 데이터는 구식이며, 전체 메모리 시스템의 현재 상태를 나타내지 않는다. 메타데이터로의 변화를 가져오는 트랜잭션의 로그는 휘발성 기억소자에 유지되며, 로그 데이터의 세그먼트는, 통상적으로 기결정된 경과된 시간 또는 메타데이터 변경의 횟수 이후, 휘발성 메모리로부터 NVS로 점진적으로 기록된다. 이는 저장된 로그가, 로그의 마지막 세그먼트가 NVS에 저장되어 있던 시간에 저장된 메타데이터를 업데이트하는 데 사용되도록 할 수 있다.
현재 휘발성 메타데이터 또는 휘발성 로그 데이터는 즉시 NVS로 기록(체크포인트)되지 않았을 수 있으며, 충돌의 발생은 RAM의 로그 데이터 및 메타데이터를 사용불가능하게 만들 수 있다; 그리고, NVS에서의 메타데이터 이미지, 및 NVS에서의 로그는 완전히 통용되지 않을 수 있다. 데이터는 다음에 NVS로 기록되었을 수 있으며, 불필요 데이터 수집(garbage collection) 또는 웨어 레벨링(wear leveling) 하우스키핑 동작은 데이터 등의 재배치를 가져올 수 있으며, 몇 데이터의 위치의 리코드가 손실될 수 있다. 마찬가지로, 아직 영구적으로 기록되지 않은 것과 같은 액션 및 다른 이유로, 데이터는 NVS에서의 하나의 물리적 위치로부터 또다른 물리적 위치로 전송될 수 있다. 이들 "손실" 데이터는 위치가 정해질 필요가 있거나, 또는 "발견될" 필요가 있으며, 메타데이터는 시스템이 충돌의 순간에 현실에서 존재하는 바와 같이 데이터 세트와의 일관성을 가지는 메타데이터 세트 상에서 동작을 재개할 수 있도록 업데이트된다.
메타데이터는 배드 블록(bad blocks)의 테이블, 각각의 플래시 블록에 대해, 수행된 이전 소거 동작의 횟수와 같은 사용 데이터, 및 각각의 플래시 메모리 블록의 점유 등과 같은 다른 정보를 포함할 수 있다. 메모리 블록의 섹터가 기록됨에 따라, 기록되려는 블록의 물리적 페이지 어드레스(인덱스)가 증분되며, 각각의 블록 'i'는 점유에 의해 특징지어질 수 있으며, 이는 MaxNum[i] 값으로 표현될 수 있고, 이는 데이터가 기록되어있는 블록에서 가장 높은 어드레스 섹터의 인덱스 번호이다. 블록 소거 동작의 결과로서 이전에 소거되었고, 그리고 아직 다시 기록되지 않은, 또는 프로그램되지 않은 경우, 더 높은 페이지 번호를 가지는 섹터는 모두 "1"로 예상된다. MaxNum=0은 이전에 블록이 소거되었고, 데이터가 아직 블록에 기록되지 않았음을 나타내는 데 사용될 수 있다. MaxNum[i]=MAX_BLOCK은 예를 들어, 블록이 차있음을 나타내며, 여기서 MAX_BLOCK 값은 블록에서 섹터의 개수이다. (이 실시예에서, 블록은 페이지당 4 개의 섹터를 가지는 64 개의 페이지를 포함하여, MAX_BLOCK=255 이다.)
충돌로부터의 복구의 과정은 각각의 메타데이터 세그먼트의 가장 현재 버전을 결정하도록 NVS에 저장된 체크포인트된 메타데이터를 스캔(scan)하는 것을 포함할 수 있다. 메타데이터의 메타데이터 세그먼트(예를 들어, 논리 어드레스 범위)의 2개 이상의 이미지를 찾으면, 2개의 세그먼트 중 오래된 것이 무시된다. 각각 보유된 가장 현재의 메타데이터 세그먼트의 가장 오래된 시간은 NVS로부터 회수된 트랜잭션 로그에 기초하여 이루어지도록 변경을 고려하기 위한 시간 경계를 설정한다. NVS에 저장되어 있고, 보유된 세그먼트에 대한 가장 오래된 시간보다 더 오래된, 트랜잭션 로그의 데이터는 저장된 메타데이터에 이미 기록되어 있던 변화를 나타낸다. 그래서, 업데이트는 트랜직션 로그 시간이 메타데이터의 각각의 유형에 대해 가장 오래된 가장 최근 체크포인트 시간과 동일한 경우 시작할 수 있다.
일 태양에서, 블록이 소거되어 있는 상황이 발생할 수 있으며, 이의 발생은 NVS의 트랜잭션 로그에 아직 기록되어 않았다. 블록이 기록 동작을 위해 필요하다면, 소거 동작은 메타데이터에 소거되었던 것으로 블록을 마킹(marking)고 새로운 데이터를 블록에 기록하기 전에 VS의 트랜잭션 로그로 기록될 수 있다.
이 실시예에서 칩에 대한 메타데이터를 고려한다. 이와 같은 메타데이터 데이터의 속성 중 하나는, 메타데이터가 플래시 장치의 특성뿐만 아니라, 플래시 메모리 장치로 기록된 데이터를 설명할 수 있다는 것이다. 특히, 플래시 장치의 블록에서의 데이터가 순차적으로 기록되기 때문에, 유효 데이터를 가지는 MaxNum[i]=MAX, 각각의 블록 "i"에 대한 가장 높은 페이지 및 섹터 번호 MAX를 나타내는 정보는 메타데이터의 일부로서 저장될 수 있다. 플래시 블록은 그 블록에 대한 기록이 시작되기 전의 소정 시간에 소거되었기 때문에, MaxNum[i]=MAX의 값보다 더 높은 섹터 및 페이지가 모두 "1"일 것으로 예상한다.
충돌로부터의 복구의 일부로서, 마지막 유효 저장된 메타데이터 세트는 NVS에서 VS로 판독된다. NVS에 저장된 트랜잭션 로그 데이터는, 로그가 NVS로 저장되어있던 마지막 시간으로 메타데이터를 업데이트하도록 처리된 로그, 및 체크포인트의 가장 오래된 마지막 저장된 메타데이터 세그먼트를 나타내는 시간 또는 시퀀스 번호로부터 적어도, NVS로부터 VS로 또한 판독된다. 널 데이터(null data)를 포함하는, 기록 데이터, 및 NVS로의 로그의 마지막 저장 다음에 취해진, 불필요 데이터 수집 또는 웨어 레벨링과 같은, 다른 NVS 관리 시스템에 의한 액션은 다른 수단에 의해 발견될 필요가 있다.
각각의 블록 "i"에 대한 MaxNum[i]의 값에 관한 메타데이터는 스캔될 수 있다. 각각의 블록 "i"에 대한, MaxNum[i]의 값을 사용하여, 블록의 MaxNum[i]+1에 대응하는 섹터가 판독되며, (체크섬, SeqLba와 같은) 적절한 메타데이터와 함께, 데이터 영역의 모든 비트가 "1"이라면, 따라서 블록에 대한 메타데이터가 NVS에서의 로그로 휘발성 트랜잭션 로그의 저장, 또는 롤링(rolling) 체크포인트 또는 스냅샷의 일부로서 NVS에 저장되어 있었기 때문에 어떠한 추가 데이터도 블록에 기록되어 있지 않음을 결정할 수 있다.
MaxNum[i]=MAX의 값 이하의 섹터에 저장된 데이터는 논리적으로 삭제될 수 있거나 또는 NVS의 다른 영역으로 이동되었을 수 있다. 데이터가 이동되고, 트랜잭션이 NVS의 로그에 저장되지 않았다면, 데이터는 NVS의 블록의 각각에 대해 MaxNum[i]의 값 위의 섹터에 기록된 데이터에 대해 체크하는 과정에 의해 발견될 것이다. MaxNum[i]의 값 위의 섹터에 발견된 데이터는, 연관된 섹터 또는 페이지 메타데이터의 일부로서, 시퀀스 번호(PgmSeqNum)에 대한 값, 및 현재 LBA 시퀀스 번호(SeqLba), 및 LBA의 물리적 이전 위치를 가질 수 있다. 이 데이터는 메타데이터를 복구하도록 VS에 메타데이터를 업데이트하는 것을 위해 휘발성 기억소자에서의 복구 로그로 기록될 수 있다. 대안으로는, 섹터의 판독은 보조 데이터, 또는 예비 데이터로 제한될 수 있고, 이 데이터가 모두 "1"이라면, 이때 섹터의 데이터 영역은 또한 모두 "1"로 추정될 수 있다. 예비 데이터만 판독하는 것이 더 빠른 동작이다.
블록의 섹터로의 데이터의 기록이 양의 방향으로 점진적으로 진행함에 따라, 섹터 MaxNum[i]=MAX+1의 검사는 소거되지 않았던 블록에 어떠한 추가 데이터도 기록되지 않았음을 결정하는데 충분할 수 있다. 새로운 데이터가 메모리 블록에 발견되었다면, 기록되지 않았던 제 1 섹터가 발견될 때까지, 추가 섹터가 판독되고, 섹터는 점진적으로 더 커지는 섹터 번호를 가지며, 적절한 정보는, 복구 로그로의 엔트리를 발생하도록 여유 영역에 설명적 데이터(로컬 메타데이터)로부터 판독된다. 이 시점에서, 블록에 기록되어있지만 아직 NVS의 로그로 투입되지 않은 모든 섹터가 발견되며, 휘발성 기억소자의 복구 로그로 추가된다.
MaxNum[i]=MAX의 값에 대응하는 섹터가 또한 검사된다. 2개의 전형적 상황이 달성된다. 첫 번째로, 값이 MaxNum[i]=MAX인 섹터의 데이터는 충돌 전의 시간에 섹터로 기록되었고 (NVS에 저장되어 있던 로그에 의해 적어도 업데이트되는 경우) 이미 메타데이터에 나타나 있는 데이터이며, 이 데이터는 "손실"되지 않았으며 따라서 복구될 필요가 없다. 두 번째로, 블록이 소거되었지만, 그러나 트랜잭션은 아직 로그로 기록되지 않았다. 즉, MaxNum[i]=MAX 이하의 값의 모든 섹터에서의 정보는 이동되거나 또는 삭제되고, 블록은 소거된다. 이 액션은 로그에 블록에 대한 소거 트랜잭션을 기록하는 것에 의해 설명된다. 데이터가 또다른 섹터로 재기록되었다면, 데이터는 본 발명에 설명된 과정에 의해 발견될 것이며, 섹터 위치는 LBA와 연관될 수 있다.
그러나, 새로운 데이터는 소거 동작 후에 블록, 정확히 새로운 데이터가 기록된 블록의 MaxNum[i]=MAX+1 섹터로 기록될 수 있다. 섹터 MaxNum[i]=MAX의 상태 영역은, 유효 데이터가 존재한다면, 마지막 로그 세그먼트가 NVS로 투입되는 전의 시간에 데이터가 기록되었는지를 결정하도록 감시되어야 한다. 나중에 기록된 데이터가 발견된다면, 낮은 섹터 번호의 블록에서 모든 데이터는 또한 발견되는 새로-기록된 데이터이다. 그러나, 섹터 MaxNum[i]=MAX에서의 데이터가 로그 세그머트가 NVS로 투입되는 시간보다 오래 되었다면, 낮은 섹터 번호에서의 모든 데이터는 저장된 메타데이터 또는 저장된 로그에 이미 설명되어 있다.
또다른 태양에서, 블록은 소거되었지만 그러나 아직 MaxNum[i]=MAX 시간 동안 기록되지 않아, 체크되고 있는 섹터가 소거된다. 이와 같은 상황에서 임의 것이 블록에 기록되는 지를 보기위해 블록의 제 1 섹터가 판독되어야 한다. 데이터 자체가 NVS로 기록되기 전에 로그 세그먼트에 대한 트랜잭션 정책이 때때로 NVS로 기록된다면, 메타데이터가 기록되어 있는 것보다 더 적은 페이지가 기록되어 있다는 사실은 반드시 블록이 소거되었음을 의미하지 않는다.
특수한 경우가 로그를 기록하는데 사용된 정책에 좌우하여 발생하는 것을 방지하는 것이 또한 가능하다: 예를 들어 블록이 소거되도록 스케줄되어 있음을 나타내는 엔트리가 NVS에 기록될 때까지 예를 들어 블록이 소거되도록 허용될 수 없거나, 또는 블록이 소거되어 있음을 나타내는 로그 엔트리가 NVS에 기록될 때까지 어떠한 기록 동작도 새롭게 소거된 블록에 허용될 수 없다. 따라서, 볼록이 소거되고 기록되는 경우, 그러나 메타데이터가 소거 동작을 반영하지 않는 경우는 발생하지 않는다.
다양한 특수한 경우는 시스템의 다른 특성을 제한함으로써 예방될 수 있다. 예를 들어, 새로 소거된 블록은, 로그 엔트리가 NVS로 기록되지 않고 VS에 남아있도록 허용되는 것보다 더 긴 시간의 기간 동안 기록되도록 허용될 수 없거나, 또는 블록 소거의 표시를 포함하는 로그 엔트리가 로그의 성장 때문에 NVS로 넘치는 충분한 기록이 발생할 때까지 기록되지 않을 수 있다. 로그 엔트리에 대응하는 데이터가 NVS에 기록되기 전에 데이터가 NVS에 기록될 수 있는 경우에, 다수의 방법은 동작이 실제로 시작하고/하거나 완료하지 않은 로그 엔트리를 "실행취소(undo)"해야 하는 것을 방지하는데 사용될 수 있다. 하나의 방법은 실제 기록 발생 전에 기록될 수 있는 만큼의 많은 로그 엔트리를 로그의 테일으로부터 폐기되는 것이다. 또는, 엔트리는 기록이 완료되었는 지를 결정하도록 로그의 테일으로부터 시작하며 확인될 수 있다.
블록 "j"의 각각의 섹터 'j'에 대한 로컬 메타데이터는 시퀀스 번호(PgmSeqNum[i,j]; PSN)를 포함하여, 각각의 섹터의 기록의 순차적 순서는 복수의 블록 상에서 결정될 수 있다. 칩의 각각의 블록의 섹터에 발견된 데이터는 NVS로의 트랜잭션 로그 세드먼트의 마지막 저장과 충돌 사이의 시간 동안 섹터에 기록되어 있는 데이터를 나타낸다.
메타데이터로 표현된 복수의 블록에 있는 발견된 섹터의 복구 로그는 PgmSeqNum[i,j]를 사용하여 예를 들어, 테일에서 가장 오래된 것으로부터 헤드의 가장 새로운 것으로 처리되거나 또는 정렬될 수 있다. 섹터 또는 페이지 여유 데이터 영역에 저장된 메타데이터의 LBA를 사용하여, 복구 로그는 LBA와의 섹터 또는 페이지 메모리 위치의 현재 연관, 및 LBA의 바로 전 메모리 위치 상의 정보를 제공한다. 이와 같이, 복구 로그가 테일에서 헤드로 처리되는 경우, 각각의 섹터 또는 페이지와 연관된 LBA는 이전 손실된 섹터 또는 페이지와의 LBA의 연관을 삭제하고, 복구 동작 동안 발견되는 섹터 또는 페이지와 LBA를 연관시킴으로써, 업데이트된다. 몇 다른 정책에 따라, 또는 일단 모든 페이지가 데드 또는 프리라면, 전체 블록이 블록을 소거함으로써 결국에 복구될 수 있도록 이 액션은 또한 "데드" 메모리 위치를 식별한다. 블록 소거에 대한 복구 로그 데이터는 시퀀스 번호를 포함할 수 없지만, 그러나 정보는 프리 블록 테이블을 업데이트하고 소거된 블록에 대한 MaxNum[i]를 0으로 설정하는데 사용될 수 있다.
업데이트의 완료 이후, 각각의 LBA는 유효 데이터가 물리적으로 존재하는 섹터, 페이지 및 블록과 연관된다. 각각의 물리적 메모리 블록에서 페이지의 상태는 또한, 불필요 데이터 수집 및 웨어 레블링과 같은 하우스키핑 동작이 수행될 수 있도록 업데이트된다.
이 실시예는 예를 들어, 불필요 데이터 수집, 웨어 레벨링, 불량-블록 검출 및 처리 등과 같은 유지 또는 하우스키핑 동작을 무시함으로써, 단순해진다. 많은 이들 동작들은 새로운 섹터로 데이터의 이동, 블록의 소거, 및 불량 블록 테이블 변경 등으로 나타나며, 설명된 과정에 의해 설정된 유효 메타데이터의 재구성에서 설명된다.
종료 또는 충돌 이후 NVS에 저장된 데이터에 대한 메타데이터를 복구하는 방법의 예는 도 2 및 도 3a에 도시되어 있다. 저장된 데이터 및 플래시 메모리 상태를 특징짓는 메타데이터를 유지하는 방법(500)이 도 2a에 도시되어 있다. 기록 요청(단계 510)이 수신된다. 이 요청은 NVS에 저장된 데이터 또는 정보의 수정을 유발하는 임의 동작을 위한 것일 수 있다. 현재 PgmSeqNum은 1 씩 증가되며(단계 520) 기록 요청과 관련된 트랜잭션 정보는 VS의 트랜잭션 로그의 헤드에 입력된다(단계 530). 트랜잭션은 예를 들어 플래시 메모리의 블록에 특정 페이지 위치로 데이터의 페이지를 기록함으로써 수행될 수 있다(단계 540). VS의 메타데이터는 트랜잭션을 반영하기 위해 업데이트된다(단계 550). 이 메타데이터는, 부분적으로, 복수의 논리 데이터 어드레스에 포함될 수 있어, 각각의 논리 데이터 어드레스는 NVS의 물리적 메모리 어드레스로 맵핑된다. 체크포인트를 위하여, 메타데이터는 복수의 세그먼트로 할당될 수 있고, NVS의 메타데이터의 저장을 관리하기 위해, 각각의 세그먼트는 복수의 논리 데이터 어드레스를 포함한다. 로그 또는 메타데이터가 업데이트되는 경우, 상태는 업데이트된 메타데이터 세그먼트, 또는 로그의 세그먼트가 NVS에 기록되어야 하는지 여부를 결정하도록 체크된다(단계 560). 어떠한 정보도 NVS에 저장되는데 필요하지 않다면, 단계 510으로 돌아가며, 새로운 기록 요청을 기다린다.
정보가 NVS에 저장될 필요가 있다면, 메타데이터 세그먼트 또는 로그는 NVS에 기록되고(단계 580) 가장 최근에 저장된 메타데이터 및 로그에 대한 포인터가 업데이트된다. 단계 510으로 돌아간다. 또다른 태양에서, 클린 종료를 수행하기 위한 명령과 같은, 이벤트가 수신될 수 있다(단계 570). 이는 이벤트 트리거(event trigger)라 불릴 수 있으며 단계 560에서 처리된다.
단계 560에 대한 세부사항은 도 2b에 도시되어 있다. 현재 시스템 시간뿐만 아니라 PgmSeqNum의 현재 값이 판독된다(단계 561, 단계 562). 시스템 시간은 1-초 카운터의 롤-오버(roll over)의 횟수를 세는 카운터로부터 판독될 수 있거나, 플래시 메모리 회로와 관련하여 유지되는 임의 다른 시간 기준으로부터 판독될 수 있다. 이벤트 비트가 체크되고(563) 이벤트 비트가 설정된다면 과정 600으로 간다. 달리, PgmSeqNum의 값 및 시스템 시간은 메타데이터 세그먼트 또는 로그에 대한 이전에 기록된 값에 대해 검사된다(단계 564). 여기서, "마지막" PgmSeqNum 또는 "last" 시스템 시간의 값과 현재 사이의 차가 결정된다. 값이 메타데이터 세그먼트 및 로그의 각각에 대한 개별 파라미터일 수 있는, 한계보다 크다면, 예의 결과를 가지고 주과정 500으로 나가, 메타데이터 세그먼트 또는 로그는 적당한 경우, NVS에 기록된다. 시스템 시간 및 PgmSeqNum의 "마지막" 값은 특정 메타데이터 세그먼트 또는 로그가 NVS에 기록되어 있는(체크포인트되어 있는) 마지막 시간을 나타낸다. 로그는 "마지막" PgmSeqNum으로부터 현재로 저장된다. "마지막" PgmSeqNum 및 "마지막" 시간은 현재 값으로 업데이트된다. 단계 564의 결과가 아니오라면, 주 과정으로 간다.
과정 560이 이벤트 비트가 설정된 결과로서 과정 600으로 가는 상황에서, 과정 600의 단계들은 도 2c에 도시된 바와 같이 수행된다. VS에 기존 메타데이터 세그먼트들이 메타데이터의 현재 체크포인트로서 모두 NVS에 기록되고(단계 610), VS의 로그는 이들 트랜잭션을 반영하기 위해 업데이트된다. 이후, 아직 NVS에 기록되지 않은 VS의 로그의 일부는 NVS로 체크포인트(기록)되고(단계 620), "클린" 종료의 완료가 기록된다(단계 630). 종료가 이 방식으로 수행되는 경우, 저장된 로그는 종료의 시간으로 메타데이터를 업데이트하도록 시동시 처리될 수 있다.
대안으로는, 저장된 로그 및 휘발성 로그는 재시작 시간을 최소화하도록, 종료 전에 메타데이터를 업데이트하기 위해 사용될 수 있다. 이와 같이, 설명된 단계들이 다양한 순서로 수행될 수 있음을 이해할 수 있으며, 몇 단계들은 설계의 다른 태양에 따라, 생략되거나 추가될 수 있고, 이 구체적 실시예는 전체 개념을 잘 이해하기 위해 제공된다.
종료가 "더티" 종료인 경우, NVS에 저장된 메타데이터 및 로그는 NVS에 저장된 다른 정보의 현재 상태를 나타내지 않을 수 있으며, 메타데이터는 사용 전에 업데이트될 필요가 있다.
도 3a에 도시된 바와 같이, 복구 과정을 시작하도록 복구 요청이 수신된다(단계 710). 체크포인트된 메타데이터 세그먼트는 NVS로부터 VS로 판독된다(단계 720). 로그 데이터는 가장 최근의 로그 정보로 체크포인트된 메타데이터와 연관된 가장 이른 "마지막" PgmSeqNum으로 시작하는 주기 동안 NVS로부터 VS로 판독되고, VS로 이동된다(단계 730). 시간의 기간에 걸쳐 세드먼트 단위로(segment by segment) 저장될 수 있더라도, NVS에 저장되어 있는 메타데이터의 세그먼트의 마지막 완료 세트는 체크포인트된다. VS의 로그는 메타데이터에 모든 트랜잭션을 입력하도록(단계 750) 가장 오래된 엔트리로부터 가장 최근 엔트리로 처리될 수 있다(단계 740). 이 시점에서, VS의 메타데이터는 로그가 VS로 마지막 체크포인트되었던 시간으로 업데이트된다.
일 태양에서, 개별 트랜잭션은 트랜잭션을 수행하는 실제 시간과 연관된 PgmSeqNum이 정확하다면, 정확한 시간 순서 방식으로 로그로 기록되지 않을 수 있다. "마지막" 데이터를 발견하기 전에 저장된 메타데이터를 업데이트하기 위해 NVS에 저장된 로그를 사용하는 경우, NVS에 저장된 로그의 마지막 PgmSeqNum은 마지막 유효 PgmSeqNum으로 고려되며, 마지막 유효 PgmSeqNum의 것보다 큰 PgmSeqNum와 연관된 로그 데이터는 메타데이터 복구에 사용되지 않는다. 차라리, 더 높은 PgmSeqNum과 연관된 데이터가 손실된 것으로 고려되며 발견 과정에 의해 발견될 수 있다. 저장된 로그는 저장된 메타데이터를 업데이트하는 데 사용되기 전에 PgmSeqNum에 의해 정렬된다.
상기 방법의 다음 단계들은 충돌과 로그의 마지막 체크 포인트 사이에서, 기록되거나 또는 소거되어 있는 플래시 메모리의 임의 블록, 페이지 또는 섹터를 찾거나 또는 "발견"하도록 의도되어 있다. 시스템 과정은 모든 "리브" 블록으로 이동하며 블록 소거 전에 또다른 블록에서의 프리 페이지로 이들을 기록한다. 그러므로, 소거된 블록에 있었던 "리브" 페이지는 이동되었던 것으로 추정될 수 있고, 이동이 NVS의 로그 및 메타데이터에 기록되지 않았더라도, 복구될 것이다. 과정 800일 수 있는, 복구 동작 동안, NVS에 저장되어 있고, 데이터에 부합하지 않을 수 있는, 메타데이터는 과정 700에 의해 업데이트되며, 각각의 블록에 대해, 값이 라이브 페이지가 저장되어 있다고 생각되는 플래시 메모리 블록에서 가장 높은 페이지 번호를 가르키는 가변 "MaxPage"를 가진다. 플래시 메모리의 물리적 블록에서 페이지가 순차적인 오름 차순으로 기록되기 때문에, 블록에서 MaxPage 위의 모든 블록은 모든 "1"의 소거된 상태에 여전히 있다고 추정된다. 이는 페이지 로컬 메타데이터를 포함한다. 그러므로 기록된 데이터를 가지는 블록에서 MaxPage 위의 임의 페이지는 메타데이터가 체크포인트된 마지막 시간 이후 기록되어야 하며(과정 700에서 처럼, 저장된 로그에 의해 업데이트 되는 경우), "발견된" 데이터로 고려된다. 발견된 페이지에 대한 메타데이터는 복구 로그에 기록된다. 본 발명에 몇 가지는 설명되어 있는, 코너(corner) 케이스를 제외하고, MaxPage 아래의 모든 페이지가 다른 블록으로 콘텐츠를 기록함으로써 이전에 이동되고 플래시 메모리 블록이 소거되지 않는 한, MaxPage 미만의 모든 페이지에 대해 트루(true)일 수 있는 경우, 페이지 MaxPage는 데이터 및 이와 관련된 로컬 메타데이터를 포함하는 것으로 예상된다.
플래시 블록의 실제 콘텐츠는 과정 800에서 확인된다. 과정 700으로부터, 업데이트된 메타데이터는 장치에서 각각의 플래시 블록에 대해 판독된다(단계 810) .특히, 플래시 블록에 대해, MaxPage 값, MAX가 판독된다. 페이지 MaxPage=MAX에 대한 메타데이터 또는 데이터 중 적어도 하나가 판독된다(단계 820). 데이터가 모두 "1"이라면, 페이지가 소거된다. 발견되려는 새로운 데이터가 MAX 아래의 페이지로 기록되는 가능성이 있다. 플래시 블록에 기록된 임의 새로운 데이터가 가장 낮은 블록 번호에서 시작하며 윗 방향으로 페이지 증분을 진행하기 때문에, 단계 830에서의 예 결정은 페이지 번호가 "0"으로 설정되는 단계 840으로 간다. 그래서 페이지 "0"이 판독되고, 판독된 정보는 새로운 데이터가 플래시 블록으로 기록되는 지를 결정하도록 평가된다. 결과가 모든 데이터 비트가 "1"이라고 하면, 이는 소거된 상태이며, 따라서 어떠한 새로운 페이지도 이 플래시 블록에서 발견될 수 없다고 결정할 수 있고, 예와 함께, 단계 860에서, 과정 800은 특정 플래시 블록에 대해 종결한다.
데이터가 페이지 "0"에서 발견된다면, 페이지에 대한 로컬 메타데이터는 발견된 것으로 리코드되고 페이지에 대한 로컬 메타데이터는 복구 로그에 저장된다(단계 870). 페이지 번호는 하나씩 증분되며(단계 880) 데이터는 다음 가장 높은 페이지로부터 판독된다. 단계 860이 다시 수행되고 결과에 따라, 새로운 데이터가 발견되는 경우, 또는 아직 기록되지 않은(프로그램되지 않은) 페이지가 발견될 때까지 플래시 블록에 더 높게 점진적으로 스캔이 계속되며, 플래시 블록에서 발견되는 새로운 데이터의 모두는 설명된다.
그러나, 단계 830의 결과가 아니오라면, MAX 아래의 모든 페이지는 이전에 기록되었으며, 과정 700에 의해 업데이트되는 바와 같이, 트랜잭션은 메타데이터에서 설명되어 있다. 페이지 번호는 증분되며(단계 850) MAX 위의 다음의 가장 높은 페이지가 평가된다(단계 860). 데이터가 모두 "1"이라면, 어떠한 데이터도 이 페이지 또는 플래시 블록에 임의의 더 높은 번호의 페이지에 기록되지 않으며, 발견되는 어떠한 새로운 데이터도 없다. 이 플래시 블록에 대해, 과정 800이 종료한다. 데이터가 모두 "1"이 아닌 경우, 업데이트된 메타데이터가 유효하기 때문에, 새로운 데이터는 이 메모리 블록에 기록되고, 따라서 이 새로운 데이터가 발견된다. 발견이 보고되고 복구 로그에 리코드되며(단계 870) 메모리 블록의 모든 페이지가 스캔될 때까지, 임의 또다른 페이지가 플래시 블록으로 기록되는지를 결정하기 위해 페이지 번호는 다시 증가되거나(단계 880), 또는 단계 860은 블록이 프로그램되지 않았다고 결정한다. 플래시 블록의 스캔이 완료된다. 과정 800은 각각의 플래시 블록에 대해 수행된다. 블록의 발견된 데이터를 가지는 가장 높은 페이지 위의 모든 페이지는 프로그램되지 않은 바와 같이, 프리 페이지이다.
오직 경계 스캔(boundary scanning)이 블록에서 발견되는 데이터가 존재하고 있음을 나타낸다면, 플래시 블록의 개별 페이지가 스캔될 필요가 있음에 따라, 많은 플래시 블록은 경계 스캔만을 요구할 것이다. 즉, 업데이트되고 체크포인트된 메타데이터가 유효한 이후 기록 또는 소거가 수행되는 지를 결정하도록 상기 방법은 메모리 블록의 스캔을 수행하고, 업데이트된 메타데이터가 유효한 시간 이후 메타데이터에 대한 변경을 복구하는데 필요한 이와 같은 블록의 페이지만을 스캔한다. MaxPage=MAX_BLOCK인 경우에, 블록에서 가장 큰 페이지 번호는 블록에서 어떠한 변화도 없다면 평가하는데 필요한 번호일 뿐이다.
이 방법은 특정한 순서로 수행되는 특정 단계들을 참고로 하여 설명되어 있다; 그러나, 본 발명에 설명된 다른 예들에서와 같이, 단계, 기능, 또는 액션이 동일한 방법을 형성하기 위해 결합되거나, 분할되거나, 또는 재정렬될 수 있음을 이해할 것이다. 따라서, 구체적으로 본 발명에서 나타나 있지 않는한, 이와 같은 단계, 기능, 또는 액션의 순서 및 분류는 제한으로 해석되는 것으로 의도되지 않는다.
개별 칩은 더 큰 크기의 시스템 또는 메모리 어레이에 결합될 수 있고 모듈을 형성하도록 회로 보드에 장착될 수 있다. 마찬가지로, 복수의 모듈은 훨씬 더 큰 메모리 시스템을 형성하도록, 마더 보드, 또는 기판 등에 장착될 수 있다. 메모리 시스템에서의 데이터 무결성은 오류 수정 코드 또는 RAID와 같은, 하나 이상의 리던던시 기술에 의해 더 개선될 수 있다.
현재 상태로의 메타데이터의 복구가, 복수의 블록이 고려되는 메모리 시스템의 레벨에서 설명되는 반면, 방법은 시스템의 더 높은 레벨에서 사용될 수 있고, 낮은 레벨 메타데이터는 데이터로서 고려될 수 있으며, 실패한 모듈와 같은 문제는 불량 블록의 등가물로서 고려될 수 있다.
이 예에서 데이터 처리가 컴퓨터에 의해 수행되는 것으로 도시되어 있는 경우, 컴퓨터는 메모리를 포함하는 기판 또는 모듈인 회로 보드 상에 위치하거나, 또는 버스에 의해 이와 같은 모듈에 연결되어 있는 메모리 제어기 또는 메모리 관리 회로일 수 있어, 데이터는 더 큰 시스템의 또다른 소자에서 처리될 수 있다. 시스템의 다른 태양과 통신하기 위해 사용된 버스는 버스 구조의 다양성, 산업 사양, 또는 공지된 독점 포맷 중 임의의 것일 수 있거나, 또는 개발될 수 있으며, 메모리 시스템이 접속하도록 설계될 수 있는 제품과 호환가능하다. 예를 들어, 이와 같은 버스는 회전 자기 디스크 저장 시스템이 인터페이스 특성을 모방할 수 있거나, 또는 상기 버스 상에 위치한 모듈의 동작처럼 RAID를 지원하기 위해 확장과 같은, 확장 또는 개선일 수 있으며, 이와 같은 확장은 RAID 그룹 사이의 데이터의 동기화, 또는 예를 들어, 모듈의 동작의 시간 동기화를 위해 사용된 추가 정보를 포함할 수 있다.
일 태양에서, 로그로 아직 기록되지 않은 NVS로의 기록을 찾기 위해 모든 블록을 검색하는 것 대신에, 더 작은 개수의 블록은, 새로운 데이터를 어디에 기록할지를 검색하기 위한 정책을 시스템의 재구성된 상태로부터, 전체적으로 또는 부분적으로 따를 수 있다면, 검색될 수 있다.
예를 들어, 정책이 가장 프리로운 공간을 가지는 블록으로 기록되고 N 개의 프리 페이지를 가지는 3 개의 블록 및 N-1 개의 프리 페이지를 가지는 2 개의 블록이 존재하는 로그를 처리한 후, N 개의 프리 페이지를 가지는 오직 3 개의 블록만이 체크되어야 한다. 이들 블록 중 3 개 모두에 기록된 페이지가 존재하면, 이들은 N-1개의 프리 페이지를 가져, N-1 개의 프리 페이지를 가지는 새로운 8 개의 블록이 체크되어야 한다. 새로운 페이지가 블록들 중 7 개의 블록에서 찾아진다면 N-1 개의 페이지를 가지는 남아있는 블록 전에 기록되지 않음에 따라 N-2 개의 프리 페이지를 가지는 블록 중 임의 블록을 체크할 필요가 없다.
소거될 수 있는, 그러나 로그되지 않은 임의 블록을 찾기 위해, 어떠한 "라이브" 페이지도 가지지 않는 블록만을 체크하는 것이 충분할 수 있으며, 정책은 블록이 라이브 데이터를 가지는 경우 소거 동작을 위해 마킹되지 않는다는 것이다.
일 태양에서, RAID 리던던시 구성, 또는 다른 버젼의 RAID 일 수 있는 이와 같은 구성의 계층을 이행하도록, 데이터는 모듈의 칩 또는 복수의 메모리 회로에 걸쳐, 또는 다수의 메모리 모듈에 걸쳐 스트라이프될 수 있다. 이와 같은 구성은 제 2 실시예에 설명된 바와 같이, 제 1 실시예의 접근과 호환가능하다.
또다른 실시예에서, 메모리 시스템은 버스 시스템에 의해 연결된 모듈의 어레이로서 조직될 수 있다. 메모리 모듈의 버스연결된 어레이는 2006년 4월 17일에 출원된, 상호연결 시스템(Interconnection System)이란 명칭의, US 11/405,083에 설명되어 있으며, 이는 본 발명에 참고로 통합되어 있다. 버스연결된 어레이의 모듈은 본 발명에서 제 1 실시예의 휘발성 기억소자(20) 및 비휘발성 기억소자(20)를 가질 수 있고, 버스 인터페이스 또는 로컬 메모리 제어기(20)를 가질 수 있다. 충돌로부터의 복구는 위에서 설명된 바와 같이 개별적으로 메모리 모듈의 각각에 수행될 수 있다. 버스 연결된 메모리 시스템은 2008년 3월 26일에 출원된 메모리 관리 시스템 및 방법이란 명칭의 US 12/079,737에 설명된 바와 같이, RAID 기술의 사용에 의해 데이터 손실에 대한 추가 보호를 가질 수 있고, 이 특허는 참고로 본 발명에 통합되어 있다.
도 4는 4개의 데이터 모듈 및 1 개의 패리티 모듈을 가지는 RAID 5 조직을 실현하도록 다른 메모리 모듈 상에 저장될 수 있는 데이터의 논리 조직을 나타낸다. 각각의 LBA는 4 개의 작은 LBA 범위(예를 들어, 섹터)의 그룹으로 분할될 수 있으며 다른 메모리 모듈 상에 저장될 수 있다. LBA 범위의 각각의 그룹에 대한 패리티 값은 계산될 수 있고 제 5 메모리 모듈에 저장될 수 있다. 데이터 저장의 이와 같은 조직화는, 메모리 모듈이 실패하는 경우 또는 데이터 판독이 수행되는 경우 다른 방법으로 이용가능하지 않는 경우 데이터의 복구를 허용한다. 출원 12/079,364에 설명된 바와 같이, 도 4의 메모리 시스템은 5 개의 모듈 중 오직 4개로부터의 데이터를 사용하여 유효 데이터를 반환하도록 작동될 수 있다. 이와 같이, 시스템의 동작은 예를 들어, 실패된 모듈의 교체 이후 RAID 데이터 구조가 재건설되는 동안 계속될 수 있다.
일 태양에서, 데이터 A는 개별 메모리 모듈 상에 데이터의 2 개의 순차적 영역 A1, A2, A3, A4로 저장되고, 패리티 Ap는 제 5 메모리 모듈에 저장된다. 각각의 메모리 모듈에서 데이터의 순차적 영역과 연관된 LBA가 동일할 수 있고, 각각의 모듈의 LBA에 대한 SeqLba 값이 리셋 또는 초기화시 0으로 이전에 초기화될 수 있음에 따라, 특정 데이터 영역 A에 대한 스트라이프에서의 모든 모듈은 그 시간 이후 (섹터일 수 있는) 데이터의 동일한 개수의 서브-블록을 수신할 수 있다. 시퀀스 번호 값 SeqLba는 각각의 모듈의 메타데이터의 일부로서 저장될 수 있다. 이와 같이, A에 대한 데이터가 메모리 모듈로부터 판독되고 재조합되는 경우, 데이터 A1, A2, A3, A4 및 Ap의 서브세트의 각각은 SeqLba의 동일한 값을 가지는 것으로 예상될 수 있다.
RAID는 모듈, 또는 이의 일부가 실패되는 경우 데이터를 복구하는 데 사용될 수 있다. 각각의 개별 모듈에 대한 로컬 메타데이터가 이전에 설명된 바와 같이, 충돌이 있다면 복구될 수 있기 때문에, 복구된 LBA의 로컬 메타데이터는 정확한 시퀀스 번호 SeqLba를 가질 것이다. 5 개의 모듈 중 남아있는 4개로부터 데이터는 4 개의 유효 모듈로부터 데이터를 판독하고 데이터의 XOR를 계산함으로써, 실패한 모듈의 데이터를 복구하는데 사용될 수 있다. 그에 따른 데이터는 남아있는 모듈로부터 손실된 데이터이다. 그래서, 실패한 모듈이 교체된 후, 데이터는 완전히 복구되고 재저장될 수 있다. 일 태양에서, 데이터는 여유 모듈로 실패된 모듈의 데이터의 재구성 동안, 또는 실패된 모듈의 교체에 의한 것일 수 있는, 하드웨어의 수선 동안, 계속 접근될 수 있고, 핫-스웨핑(hot-swapping)을 기초로 수행될 수 있다. 데이터에 대한 PgmSeqNum 또는 다른 인덱스는 저장된 A1, A2, A3, A4 및 Ap(이들 중 하나는 모듈 실패로 인해 손실됨)에 대응하는 각각의 모듈에 대한 개별 메타데이터 세트의 각각에 존재할 수 있고, 그러므로 복구된 데이터에 대한 SeqLba가 또한 공지될 수 있다. 복구된 데이터에 대한 PgmSeqNum은 NVS에 재저장되는 경우 재-초기화될 수 있다.
실패한 메모리 모듈의 콘텐츠가 RAID를 사용하여 재구성되는 경우, 재구성된 데이터는 교체 또는 여유 모듈에 저장될 수 있고, 모듈 상의 데이터의 저장과 연관된 메타데이터는 동시에 생성될 수 있다.
메모리 시스템 내의 메모리 모듈의 위치는 도 4에 도시된 논리적 배열과 물리적으로 다를 수 있다. 그러나 도 4의 배열은 또한 복수의 메모리 모듈이 선형 버스에 조직되며 하나 이상의 메모리 제어기에 연결되는 물리적 메모리 시스템을 나타낼 수 있다.
또다른 실시예에서, 트리-유형 메모리 시스템이 도 5에 도시되어 있으며, 도 4의 논리적 배열에 대응하는 RAID 5 배열의 스트라이프와 연관된 메모리 모듈이 도시되어 있다. 대응하는 물리적 모듈은 D1, D2, D3, D4 및 Dp이다. 물리적 메모리 모듈 D1, D2, D3, D4 및 Dp로의 데이터 서브-어레이 A1, A2, A3, A4 및 Ap의 연관은 계산 알고리즘, 룩업 테이블, 또는 임의 다른 적절한 기술을 사용하여 이뤄질 수 있다.
또다른 실시예에서, 데이터 복구 동작을 수행하는 것과 호환가능한 데이터 구조의 상세한 설계를 설명한다. 일 태양에서, 실시예는 논리-블록-어드레스가능 포맷에서 데이터의 저장으로 지향되어 있다. 사용될 수 있는 다른 데이터 저장 포맷은 파일 시스템 저장, 객체 데이터 저장, NV 컴퓨터 주 메모리를 포함한다; 저장 포맷의 몇 가의 유형은 블록 기반 저장 시스템의 상부에 놓여 있는 반면, 다른 유형은 전체 데이터 관리 구조 내에서 본 출원의 태양을 통합할 수 있다.
이 상세한 설계는 많은 가능한 설계들 중 하나이며 메모리 시스템의 맥락에서 데이터 구조 설계를 배치하기 위해 제공된 설명을 포함한다. 이와 같이, 본 발명에 설명된 특징 및 동작의 모두가 임의 특정 설계에 필요하지 않고, 특징은 개발자의 요구에 따라 추가되거나 또는 소거될 수 있다. 또한, 이 설명이 다른 실시예보다 더 상세한 반면, 당업자는 수행될 수 있는, 상세히 설명되지 않은 다른 동작 및 하우스키핑의 다양성이 있음을 인식할 것이다. 또한, 데이터 구조의 일부는 설명되지 않거나, 또는 도시되어 있지만 그러나 상세히 설명되지 않는다. 이들 부분은 또다른 개발을 위해, 또는 이 출원의 주제가 아닌 특징을 이행하기 위해 예비 공간을 제공할 수 있거나, 또는 본 발명에 설명되어 있다. 실시예에서 임의 특징의 생략은 경제성, 또는 특정 성능 특성의 최적화 등과 같은 다른 요인에 좌우하여, 특정 설계에 추가를 불가능하게 하는 것으로 취해지는 것이 아니다.
데이터가 모듈 레벨에서 하드웨어 고장, RAID 기술에 의해 시스템에서의 더 높은 레벨, 또는 오류 수정 코드(EEC) 등에 기인한 손실에 대해 보호될 수 있는 반면, 이 실시예에서, 이와 연관된 동작이 설명되지 않으며, 이와 같은 동작은 실행을 위해 명령되어 있는 판독 및 기록 동작에서 포함되어 있다고 고려된다.
이 실시예를 위해, 모듈의 하드웨어는 도 1에 도시된 기능 영역을 포함할 수 있고, 비휘발성 기억소자(NVS)(30)는 멀티-칩 장치일 수 있는, 플래시 메모리이며, 휘발성 메모리(VS)(20)는 DRAM이고, 컴퓨터(10)는 마이크로프로세서, FPGA(field-programmable-gate-array), 또는 상태 머신 등이며, 이는 로컬 메모리를 포함할 수 있다; 대안으로는, 이와 같은 프로그램 데이터는 또다른 메모리 또는 컴퓨터 판독가능 저장 장치로부터 로딩될 수 있다. 컴퓨터(10)는 또한 외부 버스와 인터페이스하기 위한 회로소자를 포함할 수 있거나 또는 시스템의 나머지와 인터페이스의 형태를 가질 수 있다. 하드웨어는 단일 회로 보드 또는 기판, 또는 복수의 동일한 것 상에 위치될 수 있다.
제한하는 것이 아닌, 이 실시예에서, 하나의 모듈은 8 내지 16 개의 플래시 회로를 포함할 수 있고, 각각의 플래시 회로(패키지)는 8 플래시 칩을 가진다. 플래시 회로(NVS)는 1 GB의 용량을 가질 수 있어, 8 개의 플래시 회로는 8 GB 의 용량을 가지며 16 개의 플래시 회로는 128 GB의 용량을 가질 수 있다. 플래시 메모리 칩은 통상적 200 usec 및 최대 700 usec의 프로그래밍 시간(기록 시간), 약 100 us의 페이지 판독 시간, 및 통상적 1.5 msec 및 최대 2 msec의 소거 시간을 가지는 것으로 특징될 수 있다. 회로는 160 MB/s의 전체 모듈 용량에 대한 20 MB/s 용량을 가지는 로컬 버스 상에 컴퓨터(10)과 통신하도록 조직된다. 휘발성 메모리(VS)는 125 MHz의 클록률을 가지는 8 비트 확장(bit wide)으로 조직된, RAM일 수 있다. RAM 메모리의 저장 용량은 오류 수정 코드(ECC)에 대한 영역을 추가하여, 플래시 메모리의 저장 용량의 대략 2 퍼센트일 수 있다(0.5에서 2 GB).
이 실시예에서 설계는 US 12/079,737에 개시된 RAID 구조와 일치하여, 플래시 메모리 상의 소거 동작은 판독 대기 상에 거의 또는 어떠한 영향도 가지지 않으며, 최대 기록 대역폭의 실질적 부분까지의 레이트에서 기록 동작은 판독 대기의 거의 또는 어떠한 영향도 가지지 않는다. 이는 단지 도입될 수 있는 설계 제약의 일 예이다. 데이터 구조 및 방법은 충돌의 이벤트에서 모듈 상의 비휘발성 기억소자에 대한 메타데이터의 복구를 용이하게 하도록 의도되어 있다.
이 예를 위해, 다음의 용어가 메모리 어드레스를 설명하는 데 있어 편의를 위해 사용된다:
여유 데이터 영역에 추가된 2*512 바이트 영역일 수 있는 BDU(Basic Data Unit); BDU의 "여유 영역"은 단일 엔티티로서 고려된 BDU의 양 섹터의 여유 영역을 말한다;
4*BDU 또는 4 Kbyte일 수 있는 QDU(Quad Data Unit);
인접한 메모리 위치에서 2*QUU일 수 있는 ODU(Octal Data Unit);
복수의 ODU인 블록; 및
단일 블록으로 블록 "i" 및 블록 "i+1"을 처리함으로써 형성된 메모리에 어드레스일 수 있는 2블록; 2블록은 2Block[1/2]으로 색인되며, 여기서 "i"는 짝수이다.
블록은 일 유형의 정보를 포함하는 것으로 설명될 수 있고, 이는 이행을 간소화하거나 또는 소정의 동작을 더 효율적으로 하는데, 또는 페이지 단위 기초보다는 차라리 블록 단위 상에서 몇 구조들이 이동되도록 함으로써 요구되는 기록을 감소시키도록 이동 종종 행해질 수 있다. 그러나, 이는 제한으로 의도되는 것이 아니다. 예를 들어, 맵 테이블(MT) 및 블록 테이블(BT) 체크포인트는 개별적으로 저장될 수 있지만, 그러나 데이터의 양 유형을 포함하는 체크포인트 블록(CPB)에 저장될 수 있다. 로그 블록(LB) 및 데이터 블록은 개별적으로 저장되지만 그러나 로그는 데이터 블록 또는 체크포인트 블록에 저장될 수 있다. 루트 블록(RB) 및 인덱스 블록(IB)이 합병될 수 있고, 루트 블록(RB)은 임의 위치에 저장될 수 있으며 특정한 마커, 유사하게는 인덱스 블록으로 표시에 대해 여유 영역을 검색하여 발견될 수 있다. 루트 블록 및 인덱스 블록 모두는 전체적으로 제거될 수 있고 로그 세그먼트 및 체크포인트의 위치는 식별 마커에 대한 탐색으로 발견된다. 필드 또는 기능이 소정의 유형의 "블록"에 있음에 따라 설명된 경우, 설명은 어떻게 다른 데이터 유형이 정교하게 인터리빙되는 지에 좌우되는 소정의 유형의 "섹터" 또는 소정의 유형의 "페이지"로서 판독될 수 있다.
이 예시적인 데이터 구조의 기본적인 어드레스가능한 메모리 유닛은 BDU이며, BDU의 여유 영역은 대응하는 BDU가 어드레스되는 경우 어드레스된다고 고려될 수 있다. BDU의 데이터는 이와 같이 어드레스될수 있지만, 그러나 참고된 BDU로부터 추출될 수 있다. 도 6a는 28 비트의 길이를 가지는, 통상적인 인덱스 워드에서 비트 할당(bit assignment)을 나타낸다.
설명을 위해, 삼성 부품 번호 K9KAAG08U0M에서 K9NCG08U5M(삼성, 서울, 한국)가 고려되며, 각각의 부품은 칩 선택 라인 당 2 GB의 용량을 가진다. 2Block에서 섹터의 물리적 메모리 어드레스는 BDU를 위해 비트 0-2, ODU를 위해 비트 3-8, 및 2Block에서 위치를 위해 9-20 비트에 의해 명시되며, 비트 21-23은 버스 선택을 위한 것이다. 비트 24-28은 사용된 메모리 회로의 구체적 구성에 기초한 기능에 부여될 수 있다. 8 패키지가 사용되는 경우, 비트 24 또는 비트 24-25는 칩 선택을 준비하는데 사용될 수 있다. 16개의 패키지가 사용되는 경우 비트 24는 하나의 버스 상에 2 개의 패키지 사이에 선택할 수 있고, 비트 24-25는 도 6b에 도시된 바와 같이 칩 선택을 제공한다.
도 7은 칩 상에 특정 BDU의 메모리 위치를 식별하기 위해 인덱스 워드의 사용을 나타낸다. 인덱스 워드의 비트 패턴은 2Block 2049의 ODU 62의 QDU 1의 BDU 2인 것으로 BDU를 배치한다.
시스템 또는 모듈 기초 상에 몇 개의 글로벌 변수가 존재할 수 있다. 시스템은 1 초의 롤-오버 시간 및 1 마이크로세컨드의 입도를 가지는 카운터를 가질 수 있다. 이는 예를 들어, RAID 행의 소거 및 기록 동작을 동기화시키는데 사용될 수 있다. 40 비트의 길이를 가지는 모듈 프로그램 시퀀스 번호(PSN 또는 PgmSeqNum)가 사용될 수 있고, 이는 mtlf제로 수행된 동작을 센다. PSN은 클록 레이트에 좌우되는, 아마도 몇 주 마다 롤-오버(랩(wrap))할 수 있다. 백그라운드 리프레시 동작은 PSN의 가장 최근 값의 2^38 내로 저장된 PSN을 유지하도록 요구될 수 있다.
각각의 페이지(QDU)는 도 8에 도시된 바와 같이, 보조 데이터가 저장되어 있는, 여유 영역을 가질 수 있다. QDU의 데이터 영역은 4096 바이트 크기이며, 여유 영역은 섹터 당 16 바이트이다. BDU가 2 개의 섹터의 연속이기 때문에, BDU에 할당된 여유 영역은 32 비트이다. 섹터 K 및 L에 대응하는, 이들 여우 데이터 영역들 중 하나가 다른 여유 데이터 영역들을 대표하는 것으로 상세히 도시되어 있다. 16 바이트 영역은 여우 영역 및 데이터 영역의 무결성을 보호하기 위해 ECC에 제공되어 있다; 예를 들어, ECC는 2 개의 부분으로 나눠질 수 있다: 판독되는 데이터를 요구하지 않고 여유 영역이 판독되고 검증되도록 하기 위해, 하나는 데이터에 대한 것이며, 하나는 스페어 영역에 대한 것이다. ECC에 추가하여 또는 대신에, 커버 범위가 다른, CRC와 같은 다른 데이터 보호 알고리즘이 포함될 수 있다; 예를 들어, 16 바이트는 여유 영역을 커버하는 CRC의 4 바이트 및 데이터 및 여유 영역 모두를 커버하는 ECC의 12 바이트로 분할될 수 있어, 여유영역의 데이터를 여유 영역 CRC가 검증한다면 여유 영역 데이터는 여유 영역의 ECC 체크를 수행하기 위해 여유에 더하여 전체 데이터를 판독할 필요 없이 사용될 수 있다. 또다른 태양에서, 16 바이트는 데이터를 커버하는 ECC, 여유 영역을 커버하는 ECC, 및 양 영역을 커버하는 CRC로 분할될 수 있다. PSN은 5 바이트로 저장된다.
블록-타입 필드는 블록에 저장된 정보의 타입을 나타내는 표시자를 저장한다. 이는 16 진수일 수 있고 다음과 같이 배치될 수 있다:
0xFF = 루트 블록(RB)
0xF1 = 인덱스 블록(IB)
0xF2 = 체크포인트된 블록(CB)의 블록 테이블(BT)
0xF4 = 체크포인트된 블록(CB)의 맵 테이블(MT)
0xF8 = 로그 블록(LB)
0x0F = 데이터 블록
0x00 = 불량 블록
다른 바이트가 예약될 수 있다. 블록 타입에 좌우되는, Spare Area Fields, SAF0 및 SAF1의 콘텐츠는 도 9에 도시되어 있다.
본 실시예와 관련한 데이터 구조가 도 10에 도시되어 있다. 일반적으로는, 플래시 메모리(NVS)에서의 데이터 구조는 RAM에서 대응하는 데이터 구조를 가진다; 그러나, RAM에서 발견되지만 플래시에서 발견될 수 없는 몇 개의 데이터 구조가 있다. 데이터 구조를 설명하는 경우, "블록"이란 용어는 논리 데이터 구성을 언급하는데 사용될 수 있고, 이의 각각의 유형은 다른 크기 및 기능을 가질 수 있다. 데이터 구조에 대해 사용되는 경우 "블록"이란 용어의 이 사용은 플래시 칩의 인접한 메모리의 최소소거가능한 양을 언급하는데 사용되는 바와 같이 용어와 구별될 필요가 있으며, 이는 또한 블록이라 일컬어진다.
루트 블록(RT)은 각각의 플래시 패키지에 할당되고 예를 들어 메모리 모듈을 포함하는 8 또는 16 플래시 페이지가 있을 수 있다. 이 예에서, 2 개의 인덱스 블록(IB)은 각각의 버스에 할당된다. 체크포인트 블록(CPB)은 32 GB 당 32 BT가 있을 수 있는 블록 테이블(BT)(32-512 블록 유닛, 예를 들어, 32 GB에서 512 GB + 16 퍼 모듈의 범위인 모듈 크기에 대한 23에서 512 블록), 및 32 GB당 1K MT(1K 내지 16K) + 16 퍼 모듈이 존재할 수 있는 맵 테이블(MT)일 수 있다. MT는 전체 저장 영역의 대략 0.8 퍼센트일 수 있다. + 16은 23 GB 당 32 BT CPB가 필요한 CPB의 실제 개수를 나타내는 상황에 대비하지만, 어드레스의 범위에 대한 오래된 체크포인트 블록이 새로운 체크포인트 블록을 기록하기 전에 중복기록되지 않는 경우, 메타데이터를 저장하는데 필요한 것보다 적어도 1 개 이상 많은 모듈이 할당된다. + 16 위치를 가지는 것은 메모리 모듈의 모든 16 패키지를 가지는 동시에 발생하는 트랜잭션을 허용한다. 제한에서, 오직 +1 블록이 요구되지만 그러나 동작은 병렬 기록의 개수, 및 그 결과로서, 체크포인트 데이터가 NVS에 기록될 수 있는 레이트에 제한될 수 있다. BT에 대해, 아마도 하나의 추가의 CPB가 필요할 수 있다.
32GB 당 1K 맵 테이블(MT) 크기는 데이터의 100 퍼센트가 사용자에 의해 어드레스가능하다고 가정한다; 즉, 메모리의 모든 가능한 물리적 어드레스가 사용자 데이터로 채워질 수 있는 상황이다. 그러나, 이 실시예에서, 칩 메모리의 대략 0.8%가 CPB를 위해 사용됨에 따라, 어드레스의 대략 99.2% 만이 사용자에 의해 사용될 수 있다. 메모리 공간은 또한 부품의 수명에 거쳐 나빠지는 다른 블록을 교체하는 것을 고려하도록 예약된 메모리 블록뿐만 아니라 로그를 위해 요구된다. 통상적 제품에 대한 데이터 시트는 실패한 블록에 대한 허용량이 대략 3%일 수 있음을 제안한다. 블록은 또한 불필요 데이터 수집 또는 웨어 레벨링과 같은 하우스키핑 동작을 위해 할당될 수 있다. 그래서, 전체 사용자 어드레스가능 공간은 대기 또는 기록 처리량과 같은 성능 속성을 개선시키도록 예약된 공간을 거의 또는 전혀 가지지 않고 시스템의 물리적 메모리의 오직 95%일 수 있다. 그러나, 몇 상황에서, 어드레스 공간의 50% 미만은 사용자 데이터를 위해 이용가능하다. 사용자 데이터 공간이 이들 시스템 요구에 의해 물리적 데이터 공간으로부터 감소되는 반면, 물리적 메모리의 시스템 데이터 및 사용자 데이터의 위치는, 불량 블록의 예방을 제외하고, 특정 물리적 메모리 위치로 제한될 수 없다.
로그 블록(LB)는 트랜잭션을 저장하고, 대략 메모리의 32 GB 당 6000 로그 블록이 존재한다. 체크포인트된 LB가 여전히 유효 저장된 CPB의 가장 빠른 것까지의 시간에서 뒤로 확장할 필요가 있음에 따라, LB의 개수는 CPB의 완전한 체크포인트를 수행하기 위해 전체 시간의 양에 좌우된다. 체크 포인트 블록이 고정 레이트로 NVS로 기록된다면, 이때 로그의 적합한 최대 메모리 크기는 NVS로 MT 및 BT 테이블의 완전한 체크포인트를 기록하도록 취해진 시간 동안 수행될 수 있는 BDU 기록의 개수에 의해 주로 결정된다. 로그에 이용가능한 메모리 공간이 고정되어 있는 경우, 체크포인트가 기록되어야 하는 속도는 로그가 얼마나 빨리 충전될 수 있는 지를 계산함으로써 결정될 수 있다.
일 태양에서, 체크포인트하는 속도는 시스템이 주로 유휴이고(idle), 거의 엔트리가 로그에서 이루어지지 않는 경우, 체크포인트하는 것이 더 느리게 진행할 수 있도록 달라질 수 있다.
또다른 태양에서, 체크포인트는 또한, 예를 들어 로그의 크기 및 체크포인트 영역의 크기들의 비에 기초하여 로그가 얼마나 빨리 기록되는 지보다 차리리 얼마나 많은 데이터가 로그에 기록되는 지에 기초하여 기록될 수 있어, 완전한 체크포인트는 완전한 로그가 로그 엔트리를 가지고 기록되기 전에 수행될 수 있다.
데이터 블록(DB)은 사용자 접근가능 데이터의 저장을 위한 영역이다. 불량 블록(BB)은 어떠한 이유로 "불량"이라 선언되어 있는 블록이다. 불량 블록은 이와 같은 블록의 리스트를 유지함으로써 다양한 이유로 추적될 수 있고, 루트 블록에서 이 경우에, 데이터를 저장하기 위해 사용되는 것을 예방하는 블록의 블록 테이블 엔트리가 불량으로 EH한 마킹될 경우 이와 같은 추적은 시스템의 동작을 위해 요구되지 않는다.
다른 위치들이 사용될 수 있더라도, 루트 블록(RB)은 편리하게 칩의 블록 0일 수 있다. 이 블록은 초기화 후 드물게 프로그램되거나 또는 소거될 수 있고, 블록이 위치되어 있는 칩과 관련하여 기록 유지에 주로 이용된다. 제조업자 정보(제조 날짜, 제품 로트, 등)와 같은 이와 같은 정보, 모듈 상의 메모리 패키지 및 시스템에서의 모듈의 현재 위치, 및 메타데이터 정보가 저장될 수 있다. RB 메타데이터는, 예를 들어, 인덱스 블록(IB) 어드레스의 리스트, CPB 및 로그의 번호, 및 초기 불량 블록 리스트를 포함할 수 있다. 루트 블록(RB)은 인덱스 블록(IB)을 가르킨다. 초기 불량 블록(BB)은 각각의 패키지에 대한 초기 불량 블록을 대비할 수 있다. 초기 불량 블록 리스트는 단지 루트 블록으로서 동일한 패키지에 위치되어 있는 메모리 블록을 위한 것일 수 있는 반면, 다음 불량 블록 리스트는 모듈 어디든 위치한 메모리 블록을 위한 어드레스를 포함할 수 있다.
도 11에 도시된, PBR(Root Block record)는 76 바이트의 고정 크기의 헤더를 가질 수 있고, 제 1 BDU의 잔여 부분은 제조 정보와 같은, 제조의 일련 번호/로트 번호/날짜와 같은 정보, 모듈 상의 다른 소자들에 대한 정보; 시스템에서 모듈의 위치와 같은 상대적 정적 정보(static information), 및 모듈이 장치로부터 제거되고 다른 시스템에 설치된다면, 모듈이 다른 시스템에 속하는 것으로 검출될 수 있도록 모듈이 설치되어 있어, 모듈 데이터가 의도적이지 않게 사용되거나 또는 중복되지 않는, 특정 시스템을 식별하는 시스템 ID 번호를 포함할 수 있다.
QDU의 잔여 BDU는 불량 블록과 관련한 정보를 포함할 수 있다. 불량 블록 기록은, 처음 254 개의 불량 블록의 어드레스가 뒤따르는, 불량 블록의 개수 N의 카운트로 시작할 수 있다. N이 254보다 크다면, 불량 블록 어드레스의 리스트가 다음 BDU로 계속할 수 있고, 달리 QDU에서의 BDU의 나머지가 기록되지 않거나 또는 0으로 채워진다. 인덱스 블록에 대한 데이터를 변경시키기 위해, 또는 새로운 불량 블록을 추가하기 위해, 이전에 기록된 PBR의 끝에서 통상적으로, 새로운 PBR이 기록된다. 새로운 PBR은, 필요하지 않더라도, QDU 아래 경계상에서 시작할 수 있다.
루트 블록(RB)은 또한 다른 BDU에 대한 여유 영역과 유사할 수 있는 여유 영역을 가질 수 있고, 도 12에 도시되어 있다. 타입 필드 값은 0xFF이며, 임의 다른 타입 값은 불량 블록을 나타낸다. 도 11에 예약되어 있는 바와 같이 도시되어 있는 영역들 중 2 개의 영역이 RB에 사용된다. 동일한 24 비트 RBR 시퀀스 번호 SAF0는 동일한 RBR에 모든 BDU로 배치되며, 24 비트 소거 블록 카운트(EBC) SAF1은 RB에서의 모든 프로그램된 페이지가 동일한 EBC를 가지도록 배치된다. RBR의 새로운 버전을 기록하기 위해 블록에서의 어떠한 더 많은 공간도 존재하지 않는다면 루트 블록(RB)의 RBR은 새로운 RB에 기록된다. 업데이트가 인덱스 블록(IB)에서의 변경에 기인하는 경우, 모든 루트 블록(RB)은 소거될 필요가 있을 수 있다. 어떠한 새로운 RBR도 마지막 유효 RBR 이후 RB에 첨부되지 않는다; 그러나, 새로운 엔트리를 저장하기에 충분한고 공간이 없다면, RB는 소거되어야 할 것이다. 모든 RB가 동시에 소거되어야 한다면, 그리고 전력이 실패했다면, 부팅하기 위해 어떠한 유효 RB도 없다. 따라서 소거될 수 있는 RB의 개수는 부팅하기 위해 유효 RBR을 선택하는데 사용된 정책에 좌우된다. 정책이 하나의 가장 최근 유효(오류 없음) RBR을 택한다면, 하나의 RB가 남아있는 한, 시스템은 더 복잡한 복구 계획 없이 부팅될 수 있다. 정책이 동일한 적어도 N 유효 RBR이 존재해야 하는 태양에서, 적어도 N 개의 RB는 소거된 RB로 새로운 RBR을 기록하는 동안 소거되지 않고 남아야 한다.
인덱스 블록(IB) 0-7은 블록 테이블(BT) 및 체크포인트 블록(CPB)의 위치를 가르키는 반면, IB 8-15는 맵 테이블(MT) 블록을 가르킨다. 인덱스 블록(IB) 여유 영역은 도 13에 도시되어 있다. 이 구성은 필드 타입이 IB를 의미하는 OxF1인, RBR 여유 영역과 유사하며, 가변 SAF0는 2-비트 타입 필드 및 22 비트 IBR 시퀀스 번호를 포함한다. 동일한 IBR에서 모든 세그먼트는 동일한 시퀀스 번호를 가진다. SAF1은 RBR에서의 것과 유사한 EBC이다. 2-비트 타입 필드는 인덱스 블록이 BT(00); (01) LE 리코드; 및 MT 리코드(MT)를 가리키는 인덱스 데이터의 타입을 나타낸다.
각각의 메모리 블록은 256 KB의 크기를 가진다; 그러나, 전술한 바와 같이, 한 TKd의 메모리 블록은 이중 평면 동작을 허용하도록 단일 512 KB 블록을 형성하도록 결합될 수 있다. 이와 같은 구성은 현존하는 거대한 시장 소자들의 구체적 구조적 특징을 이용하고, 설계의 요건이 아니다. 따라서 이 구성은 칩들의 각각의 쌍 상의 512 1KB BDU을 가진다. 각각의 블록은 여유 영역을 가지고 블록 여유 영역의 특정 특징들은 도 14에 도시되어 있고, 타입 필드는 0x0F이다. 이 실시예에서, SAF0의 값은 30-비트 논리 BDU 인덱스 및 1 비트 Seq# 세트 필드이다.
Seq# 세트 필드는 시퀀스 번호가 논리 어드레스에 대한 마지막 시퀀스 번호보다 하나 큰 값과 다른 값으로 설정된다. 이와 같은 상황은 여유 모듈은 시퀀스 번호에 대한 초가화된 값만을 가지거나, 또는 모듈이 RAID 그룹의 다른 모듈과의 동기화를 손실하는 여유 모듈로 RAID 대구성의 경우에 발생할 수 있다. 예를 들어, 이는, 전력 실패가 몇몇 그러나 전부가 아닌 모듈이 NVS로 기록된 새로운 데이터를 가진 후 발생하는 경우, 발생할 수 있다. 예를 들어, 단지 RAID 그룹의 하나의 모듈이 NVS로 기록된 데이터를 가진다면, RAID 그룹의 기록 동작은 완료되지 않았다. 이전 데이터 값은 예를 들어, 모듈 상에 국부적으로 발견함으로써 오래된 데이터를 복구하거나, 또는 RAID 그룹의 다른 개수로부터 데이터를 사용하는 데이터를 재구성함으로써 재저장되어야 한다. 이들 동작은 NVS에서의 주어진 논리 어드레스에 대한 데이터의 적어도 2 개의 예에서 저장될 수 있다: 하나의 예는 더 작은 Seq# 그러나 나중 PSN을 가지고; 그리고, 하나의 예는 더 큰 Seq# 그러나 더 빠른 PSN을 가진다. NVS로의 관련 메타데이터를 기록하기 전에 전력이 실패한다면 이는 NVS의 상태를 이어서 부정확하게 복구하는 결과를 가져올 수 있다: 더 큰 Seq#를 가지는 위치는 가장 최근 버전으로 부정확하게 가정될 수 있다. Seq# 세트 비트는 (더 작은) Seq#을 비교함으로써 엔트리들의 가장 최근 엔트리의 결정이 정확하지 않을 수 있는 복구 과정을 나타내며; 그러나, 차라리, 복구 동작은 예를 들어, (더 큰) PSN을 비교함으로써 진행할 수 있다. 그러나, 주어진 엔트리에 대한 PSN이 RAM에 저장되지 않았기 때문에, 이 비교는, 부팅의 복구 부분 동안 발견되었던 엔트리와 비교하도록, 가장 최근으로 고려되는 NVS에 엔트리를 판독함으로써 이뤄질 수 있다.
SAF1 필드는 RAM에 저장된 MTE의 두 번째 절반의 콘텐츠, 즉 State +SN 부를 포함하는 NVS에 구조이다. RAM에서의 MTE의 제 1 부분은, 제 1 부분이 판독되는 SAF1 필드로부터 알려져 있는, LBA가 저장되어 있는 NVS에서의 물리적 어드레스를 포함함에 따라 NVS에서의 저장될 필요가 있지 않다.
휘발성 로그를 사용하는 RAM에서의 체크포인트가능 메타데이터의 모두를 업데이트하고, NVS에서의 체크포인트된 메타데이터로서 엡데이트된 메타데이터의 완료 버전을 저장하는데 충분한 시간이 있음에 따라, 시스템이 클린 종료 이후 재시작되는 경우, NVS에 저장된 점진적으로 저장된 체크포인트된 메타데이터는 메모리의 가장 최근 상태를 나타내며, 물리적 메모리 위치에 저장된 LBA의 데이터의 위치를 정확하게 가르킨다. 대안으로는, 클린 종료가 완료 메타데이터보다 차리리 최근 로그 파일 세그먼트를 저장함으로써 수행되는 경우, NVS에 저장되고 VS로 판독된 메타데이터는 저장된 로그 데이터에 의해 업데이트된다. 그러나, 전술한 바와 같이, "더티" 종료는 현재 동적 메타데이터의 불완전 이미지를 가져올 수 있고, 휘발성 로그 데이터 및 "손실" 데이터는, 전술된 기술을 사용하여, "발견"될 필요가 있다.
맵 테이블 엔트리(MTE)는 도 15에 도시된 바와 같이, 64 비트 워드일 수 있고, 32 비트는 LBA 위치 어드레스에 할당되고 32 비트는 일련 번호 및 상태 정보에 할당된다. MT가 NVS에서의 MT인 경우, 위치 데이터는 플래시 메모리에서 데이터의 어드레스를 가르킨다; 또는 MT가 캐시된(cached) MT인 경우, 위치 데이터는 캐시된 BDU 기술어를 가리키고, 이는 플래시 메모리 어드레스를 포함한다. MTE 워드 위치 필드는 BDU가 플래시(V0) 또는 DRAM(V8)에 있는 상황을 위한 도 16에 설명되어 있다. V12는 모두 1 또는 모두 0과 같은 소정의 고정된 패턴, 또는 0xf0, 0x5a 등과 같은 통상의 테스트 패턴으로 구성된 NVS로의 데이터를 기록해야 하는 것을 예방하는데 사용될 수 있다. 이 상황에서, 타입 필드는 패턴 필드의 해석을 알려준다.
일 태양에서, 패턴이 동일한 2 바이트의 단순한 반복인 경우, 타입 필드의 값은 패턴 필드를 직접적으로 사용하도록 나타낸다. 또다른 태양에서, 데이터에서의 패턴이 Oxdeadbeef, 또는 0xfeedface 등과 같은 채우기 패턴으로 공지되어 있는 경우, 타입 필드의 값은 이와 같은 패턴된 데이터의 기결정된 테이블로의 인덱스이거나 , 또는 패턴 필드는 학습된 패턴의 소정의 동적 테이블로의 인덱스일 수 있다. 다른 유형의 기술어(예를 들어 V14 및 V15)는 예약될 수 있다. 플래시에 사용된 바와 같은 MTE 위치 필드는 도 17에 도시되어 있다. 논리 BDU 어드레스는 2 개의 어드레스 공간이 수용될 수 있도록 물리적 BDU 어드레스보다 1 비트 더 크다.
NVS로 이용된 로그 및 CPB와 사용되는 경우, MTE 위치 필드는 DRAM 위치를 말하는, V8을 제외하고, 휘발성 메모리(VS) 버전에 사용된 값들 중 임의 값 일 수 있다. MTE 위치 필드가 V8이라면, 표시된 캐시 기술어는 BDU의 인-NVS(in-NVS) 상태를 결정하도록 역참조될 필요가 있고, BDU의 인-NVS 상태에 대응하는 위치 필드는 적절한 경우, 로그 또는 CPB에 배치되어 있는 위치 필드이다. 포인터를 역참조함으로써, 데이터 어드레스 값인, 포인터 자체의 값보다는 차라리, 포인터가 가르키는 어드레스 값에서의 데이터가 판독된다.
MTE 상태 및 시퀀스 번호(SeqNum) 필드는 도 18에 도시되어 있다. 20-비트 SeqNum이 사용된다. 4-비트 행동 예측기(behavior predictor)는 3개의 행동 예측기들의 각각에 할당될 수 있다. 판독(P-R) 예측기는 현재 BDU가 판독된다면 ODU에서의 다른 BDU가 판독될 가능성을 예측하기 위해 사용될 수 있다. 기록(P-W) 예측기는 현재 BDU가 기록된다면 ODU에서의 다른 BDU가 기록될 가능성을 나타내는데 사용될 수 있다. 그리고, 수명(P-L) 예측기는 데이터의 플래시 버전이 가비지 수집 동작 동안 이동되기 전에 NVS로 재기록될 가능성을 나타내는 데 사용될 수 있다.
도 20 내지 25는 비트 29-31에 저장되어 있는, 엔트리의 타입 필드에 의해 나타난, 로그에서의 데이터 엔트리의 다양한 유형을 도시하고 있다.
타입 1은 도 20에 도시된 맵 테이블 엔트리 업데이트이고, BDU가 NVS에 기록되는 경우 사용될 수 있다; 워드 'A'는 BDU의 이전 위치의 물리적 어드레스를 포함하고; 워드 'B'는 BDU의 논리 어드레스를 포함하며, 워드 'C' 및 'D'는 이 BDU에 대한 VS MT 엔트리의 콘텐츠를 포함한다.
타입 2는 도 21에 도시된 블록 기록 로그 엔트리이고, 이는 '사용자' 데이터보다 차라리 메타데이터의 NVS로 기록을 리코딩하는데 사용될 수 있다. 워드 'A'는 기록이 수행되어있는 PBI를 포함하고, 엔트리의 나머지는 BDU의 PSN, 블록의 타입과 같은 다양한 필드를 가지고, 잉여 체크를 위해, 또는 하우스키핑 및 관리 기능을 지원하기 위해 다른 데이터를 포함할 수 있다.
타입 3은 도 22에 도시된 블록 소거 로그 엔트리이고, 블록 소거의 완료를 나타내는 데 사용될 수 있다. 워드 'A'는 블록에서 제 1 BDU의 어드레이스며; 워드 'C'에서의 'O' 필드는 잉여 오류 체크로서 소거되는 블록의 타입이고; 그리고 PSN은 블록 소거가 수행된 경우 PSN의 값이다.
타입 4는 도 23에 도시된 블록 배정 로그 엔트리이고, 이는 블록의 타입이 변경되는 경우 사용될 수 있다; 순환식 체크포인트 버퍼의 블록의 위치를 나타내기 위해 체크포인트 블록으로 블록이 배정된다면 사용되는 워드 'B'에서의 인덱스 필드, 및 블록의 새로운 타입을 포함하는 'N' 필드의 추가를 가지며 타입 3 엔트리와 동일하다.
타입 5는 도 24에 도시된 불량 블록 로그 엔트리이고, 블록이 불량이라고 선언되는 경우 사용될 수 있다. 워드 'B'에서의 인덱스 필드는 블록이 불량이라고 선언되게 하는 오류의 블록에서의 위치를 포함한다.
타입 0은 도 25에 도시된, 패드 로그 엔트리이고, 불량 블록 엔트리와 같이, 시스템 종료 시와 같은, 또는 즉시 NVS로 이용되기를 바라는 로그로 엔트리의 기록 이후와 같이, 로그 BDU가 데이터로 가득차기 전에 NVS로 로그 BDU를 기록하도록 바라는 경우 로그 BDU에 사용되지 않은 공간을 채우는데 사용될 수 있다.
불필요 데이터 수집(garbage collection) 또는 웨어 레벨링(wear leveling)란 용어는 플래시 메모리 시스템에서 수행되는 하우스키핑 동작을 일반적으로 설명하는데 사용된다. 불필요 데이터 수집은 플래시 메모리에 위치한 LBA로 데이터를 기록함으로써 생성된 "데드" 메모리 위치를 재생(reclaim)하는 과정에 관한 것이다. 물리적 메모리에서의 소스 데이터 위치는 오래된 데이터를 포함하며 재생될 필요가 있는 낭비된 공간을 나타내어, 적절한 양의 프리 메모리는 계속된 기록 동작을 허용하도록 유지된다. 웨어 레벨링은 일반적으로, 플래시 메모리의 예상보다 이른 마모를 피하도록, 메모리의 블록들 상에서 메모리 블록 소거 동작의 횟수가 대략 동일하게 유지하도록 시도하기 위해 플래시 메모리에 데이터를 이동하는 과정에 관한 것이다. 현재, 플래시 메모리 회로는 실패 전에 소거 동작의 횟수로 측정될 수 있는 수명을 가지는 것으로 제조업자에 의해 평가된다. 주어질 수 있는 임의 통상적 시간-관련 실패율 외에 이것이 추가된다.
이 새로운 BDU가 NVS에 이용되는 지에 상관없이, 시퀀스 번호 SeqNum은 변경이 BDU에서 이뤄지는 시간 마다 증분될 수 있다. SeqNum은 "더티" 종료로부터의 복구 동안 사용될 수 있지만, 그러나 유발될 수 있다. RAID 저장기술이 사용되는 경우, SeqNum는 저장되는 곳 어디에나, RAID 그룹의 BDU의 모두에 걸쳐 동일할 수 있다. 데이터가 (예를 들어, 칩, 회로 패키지 또는 모듈일 수 있는) RAID 그룹의 다양한 메모리 위치로부터 반환되는 경우, 동일한 기록 동작에 속한 RAID 그룹의 모든 데이터는 동일한 SeqNum을 가질 것이다.
이 실시예에서, BDU는 데이터의 1KB, 및 연관된 보조 데이터를 포함한다. SeqNum은 판독 동작을 수행하는 경우 데이터와 동일한 경로 상에서 반환될 수 있다. SeqNum은 예를 들어, 메모리로 기록될 데이터의 수신을 응답하는 경우, 또한 이 데이터 경로 상에서 반환될 수 있다.
SeqNum은 NVS로 BDU의 1 KB 데이터를 기록하기 위한 명령이 발행되는 시간에서 설정될 수 있다. SeqNum의 사용은 재건될 수 있으며 더티 종료 동안 얻어질 수 있는 상황인, 일치하지 않는 경우 RAID 그룹의 메모리 위치를 재동기화할 수 있다. 위치 필드에서의 SxS 비트는 MTE가 NVS로 체크포인트될 때까지 설정될 수 있어, 연관된 SeqNum은 복구 과정 동안 재사용되지 않을 것이다.
2block은 다음 정보가 이용가능할 수 있는 512 BDU로 구성된다: 상태; 64-브트 BDU 라이브 상태 비트 맵; 각각 2 바이트에 의해 나타난, 프리 BDU의 개수, 및 라이브 BDU의 개수; 5 바이트로 나타난, CPB의 PSN; 3 바이트 소거 카운트; 3 바이트 판독 카운트; 오류 카운트[max-bits] 3 바이트/1바이트; 및 평균 프로그래밍 시간(3 바이트). Max_bits는 한번에 ECC에 의해 오류에 있는 것으로 검출되었던 비트의 가장 큰 개수를 나타낸다. ECC가 오류의 소정의 개수를 정정할 수만 있기 때문에, 오류 비트의 개수가 ECC에 의해 정정되기 위해 크기 전에 새로운 메모리 위치로 데이터가 이동될 수 있도록 얼마나 많은 오류 비트가 마주칠 수 있는 지를 아는 것이 유용할 수 있다. 기록하는 데 유용할 수 있는 다른 데이터는 부품의 수명을 변경할 수 있는, 평균 소거 시간, 프로그램 및 소거하기 위한 최대 시간일 수 있다.
체크포인트 블록(CPB)의 2 개의 타입, 즉 블록 테이블(BT) CPB 및 맵핑 테이블(MT) CPB가 사용될 수 있다.
BT-CPB는 각각의 BDU에 대해 8 개의 엔트리, 및 각각의 ODU에 대해 64 개의 엔트리를 가질 수 있다. 각각의 데이터 블록은 512 BDU를 포함할 수 있어, 8 개의 엔트리를 포함하는 BT-CPB에서의 BDU는 데이터의 4MB를 보유하는, 4K 데이터 BDU를 나타내는 BT 수조를 체크포인트하며, ODU에서의 64 개의 엔트리는 데이터의 32 MB 또는 32K 데이터 BDU를 나타내는 BT 구조를 보유한다. 블록 테이블(BT)은 정상 동작 동안 주기적으로 NVS로 체크포인트될 수 있다. 예를 들어, 1280 2Block를 나타내는, 20 ODU BT는 매 초 NVS로 체크포인트될 수 있다. 정상 종료 동안, 휘발성 메모리에서의 BT는 모든 BT가 체크포인트될 때까지 더 빠른 레이트로 메모리로 체크포인트될 수 있다.
BT가 전술한 바와 같이 주기적으로 체크포인트되는 경우, BT의 완전한 체크포인트는 관리되는 메모리 크기에 대략 비례한다. 예를 들어, 전술한 체크포인트의 레이트에서, 32GByte 메모리에 대한 BT의 완전한 체크포인트는 매 50 초 마다 수행될 수 있다. 더 큰 메모리 시스템을 체크포인트하기 위한 시간은 예를 들어, 512 GB 메모리 시스템이 13 분에 체크포인트되도록 시스템에서 메모리의 양에 비례할 수 있다.
예를 들어, 맵 테이블 CPB는 BDU 당 128 엔트리, 및 각각의 ODU에 대한 1K 데이터 엔트리를 포함할 수 있고, 160 MT ODU는 매 초마다 체크포인트될 수 있다. 따라서, MT CPB의 완전한 체크포인트는 32 GB 메모리에 대해 204 초로 수행될 수 있고, 512GB 메모리는 매 54 분 마다 체크포인트될 수 있다.
각각의 체크 포인트 블록 여유 영역은 도 20d에 도시된 바와 같이, 추가적 정보를 가질 수 있고, 필드 타입 바이트는 CPB의 타입을 나타내며, 0xF2는 BT CPB를 나타내고, 0xF4는 MT CPB를 나타낸다. 또한, 가변 SAF0는 BDU에서의 제 1 엔트리의 인덱스이며, SAF1은 블록 소거 카운트일 수 있다.
맵 테이블(MT)은 메모리 어드레싱 정보를 제공한다. 2차적인 테이블(128 MTE 당 하나)은 PSN 및 "활성" 서술자(active descriptor)를 포함할 수 있다. "활성" 서술자는 범위[128*i, 128i+127]에 얼마나 많은 MTE가 있는 지를 나타낼 수 있고 타입 V8 위치 필드를 가질 수 있고, 데이터는 휘발성 메모리(예를 들어, RAM)에 있고 체크포인트되는 경우 재참고되어야 할 것이다. 범위[128*i, 128i+127]에서 MTE를 포함하는 CPB의 PSN[i]은 시스템 복구 동안 순서화하는 로그 리플레이를 위해 사용될 수 있다.
로그 블록(LB)은 LB의 각각의 BDU에 대한 256 개의 엔트리가 존재하도록 16 바이트 엔트리로 구성된다. BDU에서의 모든 엔트리는 모호성을 피하도록, 채워져야 한다. 이와 같이, 패딩 엔트리는 종료 동안, 또는 불량 블록 엔트리가 이뤄지는 경우와 같은, NVS로의 BDU의 즉각적인 기록이 요구될 수 있는 경우, BDU에서의 사용되지 않은 메모리 위치를 프로그램하기 위해 사용될 수 있다. LB 엔트리 유형은 MTB(0x1); CPB(0x2); 블록 소거(0x3); 블록 배정(0x4); 불량 블록(0x5); 및 프로그램되지 않음(0x7)이다. 표시자 0x6는 예약되어 있다.
MTE를 나타내는 LB 엔트리는 도 20에 도시되어 있다. 워드 A는 이 LB 엔트리를 가져오는 프로그래밍(기록) 액션 전에 BDU의 물리적 위치일 수 있다. 워드 B는 기록되고 있는 논리 블록(LBA)의 인덱스일 수 있다. 워드 C 및 D는 기록되는 LBA에 대한 MTE이다. 따라서 LB 엔트리는 LBA의 새로운 물리적 메모리 위치와 LBA의 이전 물리적 메모리 위치를 연결한다.
CPB가 기록되고 있는 경우, LB 엔트리는 도 21에 도시되어 있다. 워드 A는 기록되고 있는 CPB BDU의 물리적 위치이다; 워드 B는 BDU에서의 제 1 엔트리의 인덱스 값이며, 이는 정확한 데이터가 판독되고 있음을 결정하기 위해 타당성 체크로서 사용될 수 있다(BDU 상의 CRC와 같이, 임의 다른 체크 데이터가 대체될 수 있거나, 또는 시스템의 데이터 신뢰도 요건에 따라 생략될 수 있다); 워드 C는 PSN의 제 1 바이트 및 한 바이트 타입 필드를 포함한다; 워드 D는 CPB BDU와 연관된 PSN의 마지막 4 바이트를 포함한다.
블록 소거 동작을 나타내는 LB 엔트리는 도 23에 도시되어 있다. 워드 A는 소거되는 NVS의 블록에서 제 1 BDU의 인덱스 값이다(BDU 상의 CRC, 제 1 BDU의 PSN, 등과 같은, 또다른 체크 데이터는 대체될 수 있다; 이들 값은 현재 데이터가 체크 데이터와 일치하지 않은 지를 결정함으로써 블록이 소거되었다는 확인을 허용하여, 따라서 오래된, 기-삭제 데이터가 교체되었음을 나타낸다); 워드 B는 예약되어있다; 워드 C는 PSN의 제 1 타입, 및 삭제되어 있는 블록의 타입을 나타내는 단일 바이트를 가진다; 그리고, 워드 D는 PSN의 마지막 4 바이트를 가진다.
전술한 바와 같이, 제한이 아닌 것으로서, 이 실시예에서, 각각의 블록은 데이터의 일 유형, 즉, 인덱스, 로그, 체크포인트 또는 사용자 데이터를 포함할 수 있다. 이것이 특정 설계의 결과일 수 있는 반면, 표현을 단지 간소화하도록 제한이 생긴다.
블록 배정 동작에 대한 LB 엔트리는 도 24에 도시되어 있다. 워드 A는 블록에서의 제 1 BDU의 인덱스 값이다; 워드 B는 (적용가능하다면) 블록에서의 제 1 엔트리의 인덱스 값이다; 워드 C는 새로운 블록 타입을 나타내는 한 바이트를 가지고, 한 바이트는 오래된 블록 타입 및 PSN의 제 1 바이트를 나타낸다; 워드 D는 PSN의 마지막 4 바이트를 가진다.
불량 블록에 대한 LB 엔트리는 도 22e에 도시되어 있다. 이 엔트리는 2 배로 이뤄진다. 제 1 엔트리는 불량 블록이 검출되는 경우 이뤄진다. LB의 나머지는 완성을 위해 패딩되며, 즉시 NVS로 기록된다. 불량 메모리 블록에서의 모든 BDU가 재위치된다면, 또다른 엔트리가 이뤄진다. 블록 타입으로서 제 1 엔트리가 현재 블록 티압을 사용하는 반면, 제 2 엔트리는 표시자로서 불량 블록 타입을 사용하는 점에서 엔트리가 다를 수 있다. 워드 A는 불량 메모리 블록에 제 1 BDU의 인덱스 값이다; 워드 B는 결함이 페이즈 프로그램(기록) 실패라면 결함 있는 페이지의 인덱스 값이며, 결함이 블록 소거 실패라면 모두 "1"이다. 판독 오류는 현재 이용가능한 플래시 메모리가 사용되고 ECC에 의해 정정되는 경우 '정상'이다; 오류의 개수는 블록 테이블에 저장될 수 있다. 블록들은 판독 오류 때문에, 그러나 프로그램 또는 삭제 오류의 결과로서 불량으로 선언되지 않을 수 있다.
패드 동작 동안 LB 엔트리는 도 25에 도시된 바와 같이 모두 0이다. 이는 고정 콘텐츠 ODU가 NVS에 빠르게 기록되도록 한다. NVS 메모리 회로가 이 실시예에서 사용되면, 이는 기록이 버스 상에서 수행되는 경우 대략 400 us 보다는 차라리, 대략 25 us로 패딩되도록 ODU를 허용한다.
LB 여유 영역이 도 22에 도시되어 있다. LP 여유 영역의 고유 태양은 타입 필드가 LB임을 나타내는 0xF8이라는 것이다; SAF0의 값은 LB에서의 엔트리의 개수이다; 그리고, SAF1의 값은 블록 소거 카운트이다.
데이터 구조를 수립하고 NVS로의 로그 및 메타데이터를 체크포인트하기 위한 동작을 수행하는 경우, 복구 또는 재시작은 종료의 지점으로부터, 또는 종료가 더티하다면, 충돌의 지점으로부터 수행될 수 있다.
시스템이 초기화되거나, 리셋되거나 또는 다른 방법으로 재시작되는 경우, MT 및 BT는 NVS(예를 들어, 플래시)로부터 휘발성 기억소자(예를 들어, RAM)로 판독되고 BT 또는 MT에서의 임의 엔트리의 가장 작은 PSN보다 큰 가장 작은 PSN을 가지는 로그 블록 어드레스(LBA)의 위치(LogStart)가 결정된다. 가장 마지막 체크포인트의 MT 및 BT 테이블 모두에서 모든 엔트리보다 더 작은 PSN을 가지는 로그에서의 어떠한 엔트리가 복구를 위해 필요하지 않은 경우 이전 트랜잭션은 NVS로부터 판독되었던 BT 및 MT에 완전히 반영되며, 로그 복구는 MT 또는 BT에서의 임의 엔트리의 가장 작은 PSN 보다 더 큰 가장 작은 PSN을 가지는 로그에서의 BDU의 위치(LogStart)에서 시작한다.
이 실시예에 대한 과정의 태양이 다음과 같이 의사코드로 설명될 수 있다;
L=LogStart
While (L!=NULL)&(L.PSN>=logStart.PSN){
/* 포인트된 Log BDU가 NULL이 아니고(소거된게 아님) BDU의 PSN이 로그의 시작의 PSN 보다 큰(즉, 더 최근) 동안, BDU에서 엔트리를 진행한다: 로그가 순환식이기 때문에, L이 움직임에 따라 로그 L은 결국 랩 어라운드되며, BDU가 소거되지 않았다고 포인트된다면, BDU는 로그의 시작보다 빠른 PSN을 가질 것이고 이는 전체 로그가 처리되었음을 나타낼 것이다 */
For I=0 to 63
If L.E[I].Type != 0 Process_LE(L,I) /* 임의 비-패드(non-pad) 엔트리를 처리한다 */
L=NextLogEntry(L) /* 로그의 다음 BDU로 진행하며, 로그 블록의 마지막에 도달하는 경우, 다음 로그 블록을 찾고 이 블록의 처음에서 시작한다. 이 단계는 한 블록 이후 한 블록으로, 로그가 순차적으로 기록된다고 가정한다; 그러나, 예를 들어, 로그가 한 번에 2 개 이상의 블록에 걸쳐 스트라이프된다면, 또는 다른 방법으로 한번에 메모리를 통해 순차적으로 한 블록을 밟아가는 방식으로 기록된다면, NextLogEntry는 사용되었던 레이아웃 정책에 따라 진행한다 */
}
Precess_LE(L,I){
E=L.E[I];
T=E.PSN
Switch(L.E[I].Type){
Case MTE: /*데이터 BDU의 위치에서의 변경을 처리한다, */
/* 로그 엔트리의 다양한 필드를 추출한다
OldLoc는 업데이트 하기 전에 BDU가 있었던 물리적 위치이고, BDU가 이전에 사용되지 않았다면, 또는 MT에서의 패턴으로서만 오직 저장되어 있었다면, OldLoc는 0과 같은 무효 어드레스로 설정된다
New Loc는 BDU가 기록되고 있는 위치이고, BDU가 MT에서의 패턴으로서 저장되거나 또는 할당해제되는 것과 같은 소정의 이류로 NVS로 기록되지 않는다면, NewLoc는 0과 같은 무효 어드레스로 설정된다
LBI는 이 엔트리가 언급하는 기록되고 있는 BDU의 논리 인덱스이다 */
OldLoc = E:Bits[0-28];
NewLoc = E:Bits[64-92];
LBI = E:Bits[32:60];
/*BDU의 새로운 위치 및 오래된 위치에 대한 블록 테이블 엔트리를 얻는다 */
OB=BT[(OldLoc / BlockSize)]
NB= BT[(NewLoc / BlockSize)]
/* BDU의 새로운 또는 오래된 위치가 NVS에 있다면, 그리고 NVS에서의 블록 테이블 엔트리가 로그 엔트리보다 오래되었다면, 인-메모리 BT 데이터 구조로부터 엔트리를 추가하거나 또는 삭제하고, 가득차 있다면 기록되는데 이용할 수 있는 블록의 리스트로부터 삭제하거나 또는 비어 있다면 프리 리스트로 블록을 이동하는 것과 같은, 적절한 다른 처리를 수행한다 */
If(OldLoc !=0)&(T>OB.PSN) {Remove(OB, OldLoc)}
If(NewLoc !=0)&(T>NB.PSN) {Add(OB, NewLoc)}
/* BDU를 포함하는 MT의 NVS에서의 PSN이 로그 엔트리보다 오래되었다면, 로그 엔트리에서의 데이터에 기초하여 PSN을 설정함으로써 인-메모리 MT를 업데이트한다 */
If T>PSN[LBI/128]{
MT[LBI]= E:Bits[64-127]}
}
Break;
Case Block_Write:
/* 예를 들어, 블록의 타입을 변경하는 것으로부터 업데이트가 요구되었음을 나타냄으로써 하우스키핑을 단순화하는데 사용될 수 있고, 로그 블록 할당되어 있던 블록에서의 포인트로 인덱스 블록의 이와 같은 엡데이트는 업데이트되는 지를 보기 위해 Index Block을 감시하는데 필요하지 않지 않도록 NVS로 기록된다. 일반적으로 이는 언제나 사용될 수 있고 NVS로의 기록의 확인이 요구되거나 또는 도움이 된다*/
Break;
Case Block_Erase;
B=E:Bits[0:27]; /*블록의 인덱스가 소거됨*/
If(T>BT[B].PSN) { /*블록은 BT 엔트리가 체크포인트된 후 소거된다*/
Process_Block_Erase(B); /*블록 소거 이후 일반적으로 수행되는 모든 데이터 구조 하우스키핑을 처리하고, 라이브 비트 필드를 클리어하며, 소거 카운트를 증분하고, 엔트리를 프리 리스트로 이동한다, 등 */
Break;
Case Block_Assign;
B=E:Bits[0:27]; /*블록의 인덱스가 배정됨*/
If(T>BT[B].PSN) { /*블록은 BT 엔트리가 체크포인트된 후 새로운 타입으로 배정된다*/
Process_Block_Assign(B); /* 모든 데이터 구조를 처리한다
블록의 타입이 변경된 후 수행되는 하우스키핑은, 다양한 목록으로부터 블록을 추가하거나 또는 제거하는 것을 포함할 수 있다. 블록이 체크 포인트 블록 또는 로그 블록으로 또는 이로부터 변경된다면, 인덱스 블록(사용되는 경우)은 업데이트될 필요가 있다. 블록이 인덱스 블록으로 또는 이로부터 변경된다면, 루트 블록(사용된다면)은 업데이트될 필요가 있다. 체크는 블록이 이미 업데이트되는 지를 보기 위해 수행되어야 한다*/
}
Break;
End Switch;
상기 의사코드는 실시예의 태양을 설명하기 위해 주어져 있는 많은 이와 같은 과정의 상세한 부분 중 하나이며 제한하는 것으로 의도되어 있지 않다.
로그의 처리 후, 로그의 기록에 대하여 각각의 블록으로 기록된 마지막 데이터의 위치가 결정될 것이다; 이때 각각의 블록은 마지막 로그 엔트리 이후 기록되어 있는 추가 데이터가 존재하는 지를 보기 위해 체크된다. 발견된 BDU의 LBA에 대한 MT에 저장된 엔트리보다 더 최근인 BDU가 찾아진다면, MT는 데이터의 새로운 위치를 반영하도록 업데이트되고, 새로운 BT 엔트리 및 오래된 BT 엔트리는 따라서 업데이트된다. 시퀀스 번호 세트 플래그가 발견된 BDU로 설정되는 경우에, MTE 시퀀스 번호는 BDU가 더 최근인지를 결정하기 위해 사용될 수 있고, LBA에 대한 MR 엔트리로 현재 가르켜진 것 또는 발견된 것, 및 동일한 LBA를 나타내는 NVS에서의 BDU의 PSN은 데이터가 더 최근인지를 결정하기 위해 비교되야 한다. PSN의 크기는 PSN이 저장 시스템의 수명 동안 랩 어라운드할 수 있도록 충분히 작다면, 스크러빙(scrubbing)의 소정의 형태는, 복구 동작 동안 동일한 LBA에 대한 데이터를 가지는 다른 BDU의 상대적 수명을 정확하게 결정할 수 없는 가능성이 존재하는데 PSN이 충분히 오래된 것인 BDU를 이동하는 데 이용되어야 한다.
그러므로 상기 상세한 설명은 제한보다는 차라리 예시적인 것으로 간주되며, 모든 등가물을 포함하는, 다음의 청구항이 본 발명의 범위 및 기술사상을 정의하도록 이해됨이 의도되어 있다.
본 발명의 내용에 포함되어 있음.

Claims (43)

  1. 비휘발성 기억소자(NVS)에 데이터를 저장하는 단계;
    휘발성 기억소자(VS)에 저장된 데이터에 대한 메타데이터의 동적 테이블을 유지하는 단계;
    상기 NVS에 상기 동적 테이블의 체크포인트된 복사본(copy)을 유지하는 단계;
    동적 테이블에 대한 트랜잭션 로그의 일부는 VS에 다른 일부는 NVS에 유지하는 단계; 및
    메타데이터의 제1 업데이트를 수행하기 위하여 NVS에 저장된 트랜잭션 로그의 일부에 있는 트랜잭션들을 동적 테이블에 적용하고; NVS에 저장된 트랜잭션 로그의 일부에 포함되지 않은 동적 테이블에 대한 변경을 발견하며; 발견된 변경이 존재하면, 메타데이터의 제2 업데이트를 수행하기 위하여 발견된 변경을 동적 테이블에 적용하는 것에 의하여 상기 동적 테이블을 수선하는 단계를 포함하는 메모리 시스템의 동작 방법.
  2. 제 1 항에 있어서,
    동적 테이블의 체크포인트된 복사본이 NVS에서 휘발성 기억소자로 판독되는 메모리 시스템의 동작 방법.
  3. 제 2 항에 있어서,
    동적 테이블은 플래시 메모리의 블록에 대한 인덱스 값을 포함하고, 인덱스 값은 데이터를 가지고 기록된 블록의 섹터 번호의 가장 높은 증분 값인 메모리 시스템의 동작 방법.
  4. 제 3 항에 있어서,
    변경을 발견하는 단계는 데이터가 블록의 인덱스 값보다 큰 인덱스 값을 가지는 섹터에 기록되어 있는지를 결정하기 위해 블록을 검사하는 단계를 포함하는 메모리 시스템의 동작 방법.
  5. 제 4 항에 있어서,
    데이터가 섹터에 기록되어 있다는 표시는 데이터 비트가 모두 "1"인 비트 이외의 데이터 비트인 메모리 시스템의 동작 방법.
  6. 제 4 항에 있어서,
    데이터가 섹터에 기록되어 있다는 표시는 섹터의 예비 데이터 영역의 데이터 비트가 모두 "1"인 비트 이외의 데이터 비트인 메모리 시스템의 동작 방법.
  7. 제 4 항에 있어서,
    변경을 발견하는 단계는 트랜잭션 로그의 체크포인트부터 블록이 소거되는 지를 결정하기 위해 각각의 블록의 적어도 가장 낮은 번호의 섹터를 검사하는 단계를 포함하는 메모리 시스템의 동작 방법.
  8. 제 4 항에 있어서,
    발견된 변경은 예비 데이터를 포함하는 메모리 시스템의 동작 방법.
  9. 제 8 항에 있어서,
    예비 데이터는 데이터의 논리 블록 어드레스, 및 트랜잭션 시퀀스 번호를 포함하는 메모리 시스템의 동작 방법.
  10. 제 8 항에 있어서,
    예비 데이터는 데이터의 이전 섹터 어드레스를 포함하는 메모리 시스템의 동작 방법.
  11. 제 3 항에 있어서,
    섹터는 복수의 섹터인 메모리 시스템의 동작 방법.
  12. 제 10 항에 있어서,
    4 개의 섹터가 하나의 페이지이며, 발견된 변경은 데이터의 페이지에 대한 것인 메모리 시스템의 동작 방법.
  13. 제 1 항에 있어서,
    시퀀스 번호는 동적 테이블의 각각의 변경에 순차적으로 배정되는 메모리 시스템의 동작 방법.
  14. 제 1 항에 있어서,
    동적 테이블은 최소 기록가능한 메모리 회로 어드레스 범위의 각각에 기록된 데이터의 적어도 기본 메모리 어드레스를 나타내는 메타데이터인 메모리 시스템의 동작 방법.
  15. 제 1 항에 있어서,
    메타데이터는 물리적 섹터 어드레스로 논리 블록 어드레스를 관련시키며 동적 테이블은 부분들에 체크포인트를 함으로써 비휘발성 기억소자에 유지되는 메모리 시스템의 동작 방법.
  16. 제 1 항에 있어서,
    동적 테이블은 복수의 블록에 대한 메타데이터 데이터를 포함하며, 각각의 블록은 섹터로 구성되는 메모리 시스템의 동작 방법.
  17. 제 1 항에 있어서,
    동적 테이블 및 트랜잭션 로그는 세그먼트들에서의 비휘발성 기억소자에 체크포인트되는 메모리 시스템의 동작 방법.
  18. 제 17 항에 있어서,
    동적 테이블의 각각의 세그먼트는 동일한 세그먼트가 다시 체크포인트되기 전에 체크포인트되는 메모리 시스템의 동작 방법.
  19. 제 17 항에 있어서,
    동적 테이블의 각각의 세그먼트는 기결정된 개수의 변경이 세그먼트의 콘텐츠에서 이뤄지는 경우 체크포인트되는 메모리 시스템의 동작 방법.
  20. 제 17 항에 있어서,
    동적 테이블의 각각의 세그먼트는 마지막 체크포인트부터 기결정된 경과 시간 이후 체크포인트되는 메모리 시스템의 동작 방법.
  21. 제 1 항에 있어서,
    NVS에서의 체크포인트된 트랜잭션 로그는 트랜잭션 NVS로 휘발성 트랜잭션 로그의 가장 최근 세그먼트의 콘텐츠를 기록함으로써 유지되는 메모리 시스템의 동작 방법.
  22. 제 1 항에 있어서,
    NVS에서의 트랜잭션 로그의 크기는 동적 테이블의 세그먼트의 각각이 체크포인트된 마지막 시간부터 동적 테이블에 영향을 미치는 트랜잭션의 리코드를 유지하는데 충분한 메모리 시스템의 동작 방법.
  23. 제 1 항에 있어서,
    발견된 변경을 위한 예비 데이터는 복구 로그에 기록되는 메모리 시스템의 동작 방법.
  24. 제 23 항에 있어서,
    예비 데이터는 예비 데이터로부터 추출된 트랜잭션 시퀀스 번호에 의해 복구 로그에 정렬되는 메모리 시스템의 동작 방법.
  25. 제 24 항에 있어서,
    정렬된 예비 데이터는 예비 데이터에 포함된 트랜잭션 정보를 적용함으로써 동적 테이블을 업데이트하기 위해 사용되는 메모리 시스템의 동작 방법.
  26. 제 3 항에 있어서,
    블록에 대한 인덱스 값에 대응하는 섹터가 검사되는 메모리 시스템의 동작 방법.
  27. 제 9 항에 있어서,
    섹터는 블록이 소거 트랜잭션에 의해 소거되었다는 표시를 포함하고, 프리 섹터 테이블이 업데이트되는 메모리 시스템의 동작 방법.
  28. 제 1 항에 있어서,
    NVS 안에 기록된 사용자 데이터는 RAID 알고리즘을 사용하여 기록되는 메모리 시스템의 동작 방법.
  29. 제 28 항에 있어서,
    동적 테이블 데이터는 RAID 데이터의 시퀀스 번호를 포함하는 메모리 시스템의 동작 방법.
  30. 휘발성 메모리 장치(VS);
    비휘발성 메모리 장치(NVS); 및
    휘발성 메모리 장치 및 비휘발성 메모리 장치와 통신하는 프로세서를 포함하고,
    상기 프로세서는
    상기 NVS에 데이터를 저장하는 단계;
    상기 VS에 저장된 데이터에 대한 메타데이터의 동적 테이블을 유지하는 단계;
    상기 NVS에 상기 동적 테이블의 체크포인트된 복사본(copy)을 유지하는 단계;
    동적 테이블에 대한 트랜잭션 로그의 일부는 VS에 다른 일부는 NVS에 유지하는 단계; 및
    메타데이터의 제1 업데이트를 수행하기 위하여 NVS에 저장된 트랜잭션 로그의 일부에 있는 트랜잭션들을 동적 테이블에 적용하고; NVS에 저장된 트랜잭션 로그의 일부에 포함되지 않은 동적 테이블에 대한 변경을 발견하며; 발견된 변경이 존재하면, 메타데이터의 제2 업데이트를 수행하기 위하여 발견된 변경을 동적 테이블에 적용하는 것에 의하여 상기 동적 테이블을 수선하는 단계를 수행하도록 구성되는 데이터의 저장을 위한 시스템.
  31. 제 30 항에 있어서,
    동적 테이블은 NVS의 기록가능한 데이터 영역에 대한 인덱스 값 및 물리적 어드레스로의 논리 어드레스의 맵핑을 포함하는 메타데이터를 포함하고 인덱스 값은 데이터가 기록되어 있는 NVS의 블록의 가장 높은 기록가능한 데이터 영역을 나타내는 데이터의 저장을 위한 시스템.
  32. 비휘발성 기억 장치(NVS)에 저장된 데이터를 나타내는 휘발성 기억 장치에 메타데이터를 유지하도록 프로세서 및 메모리 시스템을 구성하기 위하여,
    비휘발성 기억소자(NVS)에 데이터를 저장하고;
    휘발성 기억소자(VS)에 저장된 데이터에 대한 메타데이터의 동적 테이블을 유지하며;
    상기 NVS에 상기 동적 테이블의 체크포인트된 복사본(copy)을 유지하고;
    동적 테이블에 대한 트랜잭션 로그의 일부는 VS에 다른 일부는 NVS에 유지하며;
    메타데이터의 제1 업데이트를 수행하기 위하여 NVS에 저장된 트랜잭션 로그의 일부에 있는 트랜잭션들을 동적 테이블에 적용하고; NVS에 저장된 트랜잭션 로그의 일부에 포함되지 않은 동적 테이블에 대한 변경을 발견하며; 발견된 변경이 존재하면, 메타데이터의 제2 업데이트를 수행하기 위하여 발견된 변경을 동적 테이블에 적용하는 것에 의하여 상기 동적 테이블을 수선하기 위한 명령어를 포함하는, 컴퓨터 프로그램이 저장되거나 분배된 컴퓨터 판독가능 매체.
  33. 제 32 항에 있어서,
    발견된 트랜잭션은 적용하기 전에 정렬된 시퀀스로 배열되는 컴퓨터 판독가능 매체.
  34. 제 33 항에 있어서,
    발견된 트랜잭션은 NVS의 데이터의 블록이 소거되었는지 여부 및 트랜잭션이 체크포인트된 메타데이터 또는 트랜잭션 로그에 기록되어 있는지 여부를 결정하는 것, 및 메타데이터를 업데이트 하는 것을 포함하는 컴퓨터 판독가능 매체.
  35. 제 32 항에 있어서,
    메타데이터는 NVS의 블록에서 기록된 데이터를 가지는 가장 높은 섹터 위치를 나타내는 인덱스 값을 포함하는 컴퓨터 판독가능 매체.
  36. 제 32 항에 있어서,
    메타데이터는 프리 블록의 목록을 포함하는 컴퓨터 판독가능 매체.
  37. 제 36 항에 있어서,
    프리 블록은 모든 프리 섹터들로 구성되는 컴퓨터 판독가능 매체.
  38. 제 37 항에 있어서,
    데이터는 증가하는 인덱스 값의 순서로 블록의 프리 블록에 기록되는 컴퓨터 판독가능 매체.
  39. 제 38 항에 있어서,
    데이터가 프리 블록에 기록되는 경우, 섹터는 유효 데이터를 가진다고 고려되고 섹터는 블록이 소거될 때까지 다시 기록될 수 없는 컴퓨터 판독가능 매체.
  40. 제 34 항에 있어서,
    블록은 라이브 데이터를 가지는 블록의 모든 섹터의 데이터가 또다른 블록의 프리 섹터들로 재배치될 때까지 소거될 수 없는 컴퓨터 판독가능 매체.
  41. 제 35 항에 있어서,
    섹터의 위치의 데이터가 수정되는 경우, 수정된 데이터의 섹터 위치는 수정된 데이터가 기록되어 있는 프리 페이지의 섹터 위치로 변경되며 수정된 데이터가 이동되어 있는 섹터 위치는 데드 페이지로서 마킹되는 컴퓨터 판독가능 매체.
  42. 삭제
  43. 삭제
KR1020107013777A 2007-11-21 2008-11-19 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템 KR101573370B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US389707P 2007-11-21 2007-11-21
US61/003,897 2007-11-21
US12/079,364 2008-03-26
US12/079,364 US8200887B2 (en) 2007-03-29 2008-03-26 Memory management system and method
US12/273,410 2008-11-18
US12/273,410 US8452929B2 (en) 2005-04-21 2008-11-18 Method and system for storage of data in non-volatile media

Publications (2)

Publication Number Publication Date
KR20100091227A KR20100091227A (ko) 2010-08-18
KR101573370B1 true KR101573370B1 (ko) 2015-12-01

Family

ID=40668069

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107013777A KR101573370B1 (ko) 2007-11-21 2008-11-19 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템

Country Status (5)

Country Link
US (1) US8452929B2 (ko)
EP (2) EP2232374B1 (ko)
KR (1) KR101573370B1 (ko)
CN (1) CN101903866B (ko)
WO (1) WO2009067476A2 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144425A (zh) * 2018-09-07 2019-01-04 郑州云海信息技术有限公司 一种元数据存储方法、装置、设备及计算机可读存储介质
KR20190069781A (ko) * 2017-12-12 2019-06-20 연세대학교 산학협력단 듀얼 모듈러 리던던시를 이용한 파이프라인 구조의 오류 복구 모듈 및 방법
US10664355B2 (en) 2017-05-16 2020-05-26 SK Hynik Inc. Data storage device performing recovery operation after sudden power-off and operating method thereof

Families Citing this family (394)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7571287B2 (en) 2003-03-13 2009-08-04 Marvell World Trade Ltd. Multiport memory architecture, devices and systems including the same, and methods of using the same
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US9384818B2 (en) 2005-04-21 2016-07-05 Violin Memory Memory power management
US8200887B2 (en) 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
US7539924B1 (en) 2005-11-15 2009-05-26 Western Digital Technologies, Inc. Disk drive implementing data path protection by encoding large host blocks into sub blocks
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US8489817B2 (en) 2007-12-06 2013-07-16 Fusion-Io, Inc. Apparatus, system, and method for caching data
US9632870B2 (en) * 2007-03-29 2017-04-25 Violin Memory, Inc. Memory system with multiple striping of raid groups and method for performing the same
US11010076B2 (en) 2007-03-29 2021-05-18 Violin Systems Llc Memory system with multiple striping of raid groups and method for performing the same
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8127104B1 (en) 2007-08-06 2012-02-28 Marvell International Ltd. Alignment matrix memory copy
US8365040B2 (en) 2007-09-20 2013-01-29 Densbits Technologies Ltd. Systems and methods for handling immediate data errors in flash memory
US7873878B2 (en) * 2007-09-24 2011-01-18 International Business Machines Corporation Data integrity validation in storage systems
US8694715B2 (en) 2007-10-22 2014-04-08 Densbits Technologies Ltd. Methods for adaptively programming flash memory devices and flash memory systems incorporating same
US8688947B1 (en) 2007-11-21 2014-04-01 Marvell International Ltd. Aligned data access
WO2009072104A2 (en) 2007-12-05 2009-06-11 Densbits Technologies Ltd. Flash memory device with physical cell value deterioration accommodation and methods useful in conjunction therewith
US9519540B2 (en) 2007-12-06 2016-12-13 Sandisk Technologies Llc Apparatus, system, and method for destaging cached data
US7836226B2 (en) 2007-12-06 2010-11-16 Fusion-Io, Inc. Apparatus, system, and method for coordinating storage requests in a multi-processor/multi-thread environment
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
WO2009074978A2 (en) 2007-12-12 2009-06-18 Densbits Technologies Ltd. Systems and methods for error correction and decoding on multi-level physical media
US8271454B2 (en) * 2007-12-18 2012-09-18 Microsoft Corporation Circular log amnesia detection
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
WO2009118720A2 (en) 2008-03-25 2009-10-01 Densbits Technologies Ltd. Apparatus and methods for hardware-efficient unbiased rounding
US7721166B2 (en) * 2008-03-27 2010-05-18 Skymedi Corporation Method for managing defect blocks in non-volatile memory
US8131915B1 (en) 2008-04-11 2012-03-06 Marvell Intentional Ltd. Modifying or overwriting data stored in flash memory
US8683085B1 (en) 2008-05-06 2014-03-25 Marvell International Ltd. USB interface configurable for host or device mode
US9548108B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver for enhanced flash endurance
US9547589B2 (en) * 2008-06-18 2017-01-17 Super Talent Technology, Corp. Endurance translation layer (ETL) and diversion of temp files for reduced flash wear of a super-endurance solid-state drive
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) * 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
EP2189895A1 (en) * 2008-11-24 2010-05-26 Deutsche Thomson OHG Flash based memory comprising a Flash translation layer and method for storing a file therein
US8825940B1 (en) * 2008-12-02 2014-09-02 Siliconsystems, Inc. Architecture for optimizing execution of storage access commands
US7925925B2 (en) * 2008-12-30 2011-04-12 Intel Corporation Delta checkpoints for a non-volatile memory indirection table
US9176859B2 (en) * 2009-01-07 2015-11-03 Siliconsystems, Inc. Systems and methods for improving the performance of non-volatile memory operations
US9110796B2 (en) * 2009-01-27 2015-08-18 Avago Technologies General Ip (Singapore) Pte Ltd Apparatus and circuitry for memory-based collection and verification of data integrity information
JP5326708B2 (ja) * 2009-03-18 2013-10-30 富士通株式会社 演算処理装置および演算処理装置の制御方法
US8423710B1 (en) 2009-03-23 2013-04-16 Marvell International Ltd. Sequential writes to flash memory
US10079048B2 (en) * 2009-03-24 2018-09-18 Western Digital Technologies, Inc. Adjusting access of non-volatile semiconductor memory based on access time
US8819385B2 (en) 2009-04-06 2014-08-26 Densbits Technologies Ltd. Device and method for managing a flash memory
US8458574B2 (en) 2009-04-06 2013-06-04 Densbits Technologies Ltd. Compact chien-search based decoding apparatus and method
US8213236B1 (en) 2009-04-21 2012-07-03 Marvell International Ltd. Flash memory
WO2010144587A2 (en) * 2009-06-12 2010-12-16 Violin Memory, Inc. Memory system having persistent garbage collection
TWI460588B (zh) * 2009-07-17 2014-11-11 Toshiba Kk Memory management device and memory information processing device
US9330767B1 (en) 2009-08-26 2016-05-03 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory module and method for programming a page of flash memory cells
US8995197B1 (en) 2009-08-26 2015-03-31 Densbits Technologies Ltd. System and methods for dynamic erase and program control for flash memory device memories
US8601222B2 (en) 2010-05-13 2013-12-03 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US8289801B2 (en) 2009-09-09 2012-10-16 Fusion-Io, Inc. Apparatus, system, and method for power reduction management in a storage device
US9223514B2 (en) 2009-09-09 2015-12-29 SanDisk Technologies, Inc. Erase suspend/resume for memory
US9122579B2 (en) 2010-01-06 2015-09-01 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for a storage layer
EP2476079A4 (en) 2009-09-09 2013-07-03 Fusion Io Inc APPARATUS, SYSTEM, AND METHOD FOR STORAGE ALLOCATION
FR2950464B1 (fr) * 2009-09-21 2012-03-16 St Microelectronics Rousset Procede de nivellement de l'usure dans une memoire non volatile
EP2302636B1 (fr) * 2009-09-21 2014-11-05 STMicroelectronics (Rousset) SAS Procédé de lecture d'une mémoire non volatile au moyen de métadonnées et d'une table de correspondance
FR2950463B1 (fr) * 2009-09-21 2011-12-09 St Microelectronics Rousset Procede de lecture d'une memoire non volatile au moyen de metadonnees et d'une table de correspondance
FR2950462A1 (fr) * 2009-09-21 2011-03-25 St Microelectronics Rousset Procede d'ecriture et de lecture de donnees dans une memoire non volatile, au moyen de metadonnees
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8730729B2 (en) 2009-10-15 2014-05-20 Densbits Technologies Ltd. Systems and methods for averaging error rates in non-volatile devices and storage systems
US8724387B2 (en) 2009-10-22 2014-05-13 Densbits Technologies Ltd. Method, system, and computer readable medium for reading and programming flash memory cells using multiple bias voltages
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
EP2317443A1 (en) * 2009-10-29 2011-05-04 Incard SA Method for executing data updates in an IC Card
US8397107B1 (en) 2009-12-11 2013-03-12 Western Digital Technologies, Inc. Data storage device employing data path protection using both LBA and PBA
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
US9037777B2 (en) 2009-12-22 2015-05-19 Densbits Technologies Ltd. Device, system, and method for reducing program/read disturb in flash arrays
DE102010005172B4 (de) * 2010-01-20 2016-01-14 Siemens Aktiengesellschaft Verfahren zum Betreib eines Archivierungssystems für medizinische Bilddatensätze und Archivierungssystem
US8255617B2 (en) * 2010-01-26 2012-08-28 Seagate Technology Llc Maintaining data integrity in a data storage device
US8364886B2 (en) * 2010-01-26 2013-01-29 Seagate Technology Llc Verifying whether metadata identifies a most current version of stored data in a memory space
US20110191522A1 (en) * 2010-02-02 2011-08-04 Condict Michael N Managing Metadata and Page Replacement in a Persistent Cache in Flash Memory
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
KR20110097438A (ko) * 2010-02-25 2011-08-31 삼성전자주식회사 메모리 시스템, 그리고 그것의 동작 방법
US8407449B1 (en) 2010-02-26 2013-03-26 Western Digital Technologies, Inc. Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table
US8819208B2 (en) 2010-03-05 2014-08-26 Solidfire, Inc. Data deletion in a distributed data storage system
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US8745317B2 (en) 2010-04-07 2014-06-03 Densbits Technologies Ltd. System and method for storing information in a multi-level cell memory
US20110252185A1 (en) * 2010-04-08 2011-10-13 Silicon Storage Technology, Inc. Method Of Operating A NAND Memory Controller To Minimize Read Latency Time
US8407517B2 (en) 2010-04-08 2013-03-26 Hitachi, Ltd. Methods and apparatus for managing error codes for storage systems coupled with external storage systems
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8725951B2 (en) 2010-04-12 2014-05-13 Sandisk Enterprise Ip Llc Efficient flash memory-based object store
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9563397B1 (en) 2010-05-05 2017-02-07 Western Digital Technologies, Inc. Disk drive using non-volatile cache when garbage collecting log structured writes
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
WO2011153478A2 (en) * 2010-06-04 2011-12-08 Flashsoft Corporation Cache management and acceleration of storage media
JP5464066B2 (ja) * 2010-06-10 2014-04-09 ソニー株式会社 通信装置、及び、通信方法
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8554741B1 (en) 2010-06-16 2013-10-08 Western Digital Technologies, Inc. Timeline application for log structured storage devices
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US8468431B2 (en) 2010-07-01 2013-06-18 Densbits Technologies Ltd. System and method for multi-dimensional encoding and decoding
US8756394B1 (en) 2010-07-07 2014-06-17 Marvell International Ltd. Multi-dimension memory timing tuner
US8725934B2 (en) 2011-12-22 2014-05-13 Fusion-Io, Inc. Methods and appratuses for atomic storage operations
WO2012016089A2 (en) 2010-07-28 2012-02-02 Fusion-Io, Inc. Apparatus, system, and method for conditional and atomic storage operations
US9146875B1 (en) 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8964464B2 (en) 2010-08-24 2015-02-24 Densbits Technologies Ltd. System and method for accelerated sampling
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8683295B1 (en) 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
US8984216B2 (en) 2010-09-09 2015-03-17 Fusion-Io, Llc Apparatus, system, and method for managing lifetime of a storage device
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8825977B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life
US8670205B1 (en) 2010-09-29 2014-03-11 Western Digital Technologies, Inc. Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold
US8699171B1 (en) 2010-09-30 2014-04-15 Western Digital Technologies, Inc. Disk drive selecting head for write operation based on environmental condition
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
US8756361B1 (en) 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
KR101699779B1 (ko) * 2010-10-14 2017-01-26 삼성전자주식회사 플래시 메모리의 색인 방법
US8429343B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
US8612798B1 (en) 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US8427771B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors
US8560759B1 (en) 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US9063878B2 (en) 2010-11-03 2015-06-23 Densbits Technologies Ltd. Method, system and computer readable medium for copy back
US8495338B2 (en) * 2010-12-03 2013-07-23 Micron Technology, Inc. Transaction log recovery
US8850100B2 (en) 2010-12-07 2014-09-30 Densbits Technologies Ltd. Interleaving codeword portions between multiple planes and/or dies of a flash memory device
US9047178B2 (en) 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
WO2012082792A2 (en) 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
US9218278B2 (en) 2010-12-13 2015-12-22 SanDisk Technologies, Inc. Auto-commit memory
US8601313B1 (en) 2010-12-13 2013-12-03 Western Digital Technologies, Inc. System and method for a data reliability scheme in a solid state memory
US10817421B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent data structures
US10817502B2 (en) 2010-12-13 2020-10-27 Sandisk Technologies Llc Persistent memory management
US9208071B2 (en) 2010-12-13 2015-12-08 SanDisk Technologies, Inc. Apparatus, system, and method for accessing memory
US8601311B2 (en) 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
WO2012083308A2 (en) 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
CN102722421A (zh) * 2010-12-17 2012-10-10 奇瑞汽车股份有限公司 车用控制器非易失存储器内容的校验方法
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8630418B2 (en) * 2011-01-05 2014-01-14 International Business Machines Corporation Secure management of keys in a key repository
US8868512B2 (en) * 2011-01-14 2014-10-21 Sap Se Logging scheme for column-oriented in-memory databases
US9213594B2 (en) * 2011-01-19 2015-12-15 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for managing out-of-service conditions
US8966184B2 (en) 2011-01-31 2015-02-24 Intelligent Intellectual Property Holdings 2, LLC. Apparatus, system, and method for managing eviction of data
US10922225B2 (en) * 2011-02-01 2021-02-16 Drobo, Inc. Fast cache reheat
US8700950B1 (en) 2011-02-11 2014-04-15 Western Digital Technologies, Inc. System and method for data error recovery in a solid state subsystem
US9201677B2 (en) 2011-05-23 2015-12-01 Intelligent Intellectual Property Holdings 2 Llc Managing data input/output operations
US9003104B2 (en) 2011-02-15 2015-04-07 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a file-level cache
US8874823B2 (en) 2011-02-15 2014-10-28 Intellectual Property Holdings 2 Llc Systems and methods for managing data input/output operations
US9141527B2 (en) 2011-02-25 2015-09-22 Intelligent Intellectual Property Holdings 2 Llc Managing cache pools
US8700951B1 (en) * 2011-03-09 2014-04-15 Western Digital Technologies, Inc. System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata
WO2012129191A2 (en) 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
US9563555B2 (en) 2011-03-18 2017-02-07 Sandisk Technologies Llc Systems and methods for storage allocation
CN102156720A (zh) * 2011-03-28 2011-08-17 中国人民解放军国防科学技术大学 一种数据恢复的方法、装置和系统
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US8990665B1 (en) 2011-04-06 2015-03-24 Densbits Technologies Ltd. System, method and computer program product for joint search of a read threshold and soft decoding
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
JP5708216B2 (ja) * 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
US9195592B1 (en) 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
US9372792B1 (en) 2011-05-12 2016-06-21 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US9396106B2 (en) * 2011-05-12 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. Advanced management of a non-volatile memory
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9501392B1 (en) 2011-05-12 2016-11-22 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of a non-volatile memory module
US9110785B1 (en) 2011-05-12 2015-08-18 Densbits Technologies Ltd. Ordered merge of data sectors that belong to memory space portions
US9076528B2 (en) * 2011-05-31 2015-07-07 Micron Technology, Inc. Apparatus including memory management control circuitry and related methods for allocation of a write block cluster
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US9086999B2 (en) * 2011-07-05 2015-07-21 International Business Machines Corporation Data encryption management
US20130019057A1 (en) * 2011-07-15 2013-01-17 Violin Memory, Inc. Flash disk array and controller
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
WO2013023564A1 (en) 2011-08-12 2013-02-21 Huawei Technologies Co., Ltd. Method and apparatus for flexible raid in ssd
US9323659B2 (en) 2011-08-12 2016-04-26 Sandisk Enterprise Ip Llc Cache management including solid state device virtualization
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
EP2756406B1 (en) * 2011-09-14 2020-07-22 Hewlett-Packard Enterprise Development LP Imparting durability to a transactional memory system
US9026717B2 (en) * 2011-09-30 2015-05-05 SanDisk Technologies, Inc. Apparatus, system, and method for a persistent object store
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
KR101283051B1 (ko) * 2011-11-25 2013-07-05 엘에스산전 주식회사 전기자동차의 프로그램 운용방법
US8671250B2 (en) 2011-12-15 2014-03-11 Western Digital Technologies, Inc. Data storage device generating redundancy for data path protection of a parity sector
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
US8819367B1 (en) 2011-12-19 2014-08-26 Western Digital Technologies, Inc. Accelerated translation power recovery
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
US9767032B2 (en) 2012-01-12 2017-09-19 Sandisk Technologies Llc Systems and methods for cache endurance
US9251086B2 (en) 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
US10359972B2 (en) 2012-08-31 2019-07-23 Sandisk Technologies Llc Systems, methods, and interfaces for adaptive persistence
US9116812B2 (en) 2012-01-27 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for a de-duplication cache
US8996788B2 (en) 2012-02-09 2015-03-31 Densbits Technologies Ltd. Configurable flash interface
US8947941B2 (en) 2012-02-09 2015-02-03 Densbits Technologies Ltd. State responsive operations relating to flash memory cells
US20150074456A1 (en) * 2012-03-02 2015-03-12 Doe Hyun Yoon Versioned memories using a multi-level cell
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US8996793B1 (en) 2012-04-24 2015-03-31 Densbits Technologies Ltd. System, method and computer readable medium for generating soft information
KR101620772B1 (ko) 2012-04-27 2016-05-12 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. 멀티-레벨 셀을 사용하는 로컬 체크포인팅
CN102708019B (zh) * 2012-04-28 2014-12-03 华为技术有限公司 一种硬盘数据恢复方法、装置及系统
US8984247B1 (en) * 2012-05-10 2015-03-17 Western Digital Technologies, Inc. Storing and reconstructing mapping table data in a data storage system
US8966205B1 (en) 2012-05-10 2015-02-24 Western Digital Technologies, Inc. System data management using garbage collection and hybrid self mapping
US9977612B1 (en) 2012-05-11 2018-05-22 Western Digital Technologies, Inc. System data management using garbage collection and logs
US9170932B1 (en) 2012-05-22 2015-10-27 Western Digital Technologies, Inc. System data storage mechanism providing coherency and segmented data loading
US8838937B1 (en) 2012-05-23 2014-09-16 Densbits Technologies Ltd. Methods, systems and computer readable medium for writing and reading data
US8879325B1 (en) 2012-05-30 2014-11-04 Densbits Technologies Ltd. System, method and computer program product for processing read threshold information and for reading a flash memory module
EP2859437A4 (en) * 2012-06-08 2016-06-08 Hewlett Packard Development Co CHECKPOINTING BY FPGA
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
US10339056B2 (en) 2012-07-03 2019-07-02 Sandisk Technologies Llc Systems, methods and apparatus for cache transfers
US9612966B2 (en) 2012-07-03 2017-04-04 Sandisk Technologies Llc Systems, methods and apparatus for a virtual machine cache
US20140052897A1 (en) * 2012-08-17 2014-02-20 Seagate Technology Llc Dynamic formation of garbage collection units in a memory
US9195578B2 (en) 2012-08-24 2015-11-24 International Business Machines Corporation Systems, methods and computer program products memory space management for storage class memory
US8898548B1 (en) 2012-08-24 2014-11-25 Western Digital Technologies, Inc. Methods, data storage devices and systems having variable size ECC page size
US9921954B1 (en) 2012-08-27 2018-03-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and system for split flash memory management between host and storage controller
KR101934517B1 (ko) 2012-08-31 2019-01-03 삼성전자주식회사 메모리 컨트롤러, 이의 동작 방법, 및 상기 메모리 컨트롤러를 포함하는 시스템
CN103678141B (zh) * 2012-09-05 2017-11-28 努比亚技术有限公司 闪存的管理方法和管理系统
US8938645B2 (en) * 2012-09-19 2015-01-20 Sap Se Invalidation of metadata buffers
US10318495B2 (en) * 2012-09-24 2019-06-11 Sandisk Technologies Llc Snapshots for a non-volatile device
US9348758B2 (en) * 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
US10509776B2 (en) * 2012-09-24 2019-12-17 Sandisk Technologies Llc Time sequence data management
US8880786B2 (en) * 2012-09-28 2014-11-04 Apple Inc. Flash translation layer (FTL) database journaling schemes
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9507523B1 (en) 2012-10-12 2016-11-29 Western Digital Technologies, Inc. Methods, devices and systems for variable size logical page management in a solid state drive
US9489296B1 (en) 2012-10-17 2016-11-08 Western Digital Technologies, Inc. Methods, devices and systems for hardware-based garbage collection in solid state drives
US9772949B2 (en) * 2012-10-18 2017-09-26 Oracle International Corporation Apparatus, system and method for providing a persistent level-two cache
FR2997208B1 (fr) * 2012-10-19 2016-01-15 Continental Automotive France Procede de gestion d'une memoire flash
US9411717B2 (en) * 2012-10-23 2016-08-09 Seagate Technology Llc Metadata journaling with error correction redundancy
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9368225B1 (en) 2012-11-21 2016-06-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Determining read thresholds based upon read error direction statistics
US9003228B2 (en) * 2012-12-07 2015-04-07 International Business Machines Corporation Consistency of data in persistent memory
US9128824B2 (en) 2012-12-24 2015-09-08 Intel Corporation In-place change between transient and persistent state for data structures on non-volatile memory
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US9286002B1 (en) * 2012-12-28 2016-03-15 Virident Systems Inc. Dynamic restriping in nonvolatile memory systems
US9842660B1 (en) 2012-12-28 2017-12-12 Virident Systems, Llc System and method to improve enterprise reliability through tracking I/O performance metrics in non-volatile random access memory
CN103092765B (zh) * 2012-12-31 2015-08-05 记忆科技(深圳)有限公司 固态存储系统、装置及数据写入方法
US9069659B1 (en) 2013-01-03 2015-06-30 Densbits Technologies Ltd. Read threshold determination using reference read threshold
US9135173B2 (en) * 2013-01-22 2015-09-15 International Business Machines Corporation Thinly provisioned flash cache with shared storage pool
CN103092745B (zh) * 2013-01-22 2016-04-13 中兴通讯股份有限公司 系统日志记录的控制方法和装置
US9021188B1 (en) 2013-03-15 2015-04-28 Virident Systems Inc. Small block write operations in non-volatile memory systems
US9135164B2 (en) 2013-03-15 2015-09-15 Virident Systems Inc. Synchronous mirroring in non-volatile memory systems
US9842053B2 (en) 2013-03-15 2017-12-12 Sandisk Technologies Llc Systems and methods for persistent cache logging
US10073626B2 (en) 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
US10558561B2 (en) 2013-04-16 2020-02-11 Sandisk Technologies Llc Systems and methods for storage metadata management
US10102144B2 (en) * 2013-04-16 2018-10-16 Sandisk Technologies Llc Systems, methods and interfaces for data virtualization
US9519575B2 (en) * 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
JP2014215914A (ja) * 2013-04-26 2014-11-17 株式会社東芝 端末装置、情報処理方法及び情報処理プログラム
CN105408869B (zh) * 2013-05-29 2018-12-25 慧与发展有限责任合伙企业 调用错误处理程序来处理无法纠正的错误
US9136876B1 (en) 2013-06-13 2015-09-15 Densbits Technologies Ltd. Size limited multi-dimensional decoding
US8773795B1 (en) 2013-06-20 2014-07-08 International Business Machines Corporation Products with tape formats having one or more spare areas and apparatuses configured for use with such products
RU2623801C1 (ru) * 2013-07-26 2017-06-29 Интел Корпорейшн Интерфейс энергонезависимой памяти
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
EP3028142A1 (en) * 2013-07-29 2016-06-08 Hewlett-Packard Development Company, L.P. Writing to files and file meta-data
US9842128B2 (en) 2013-08-01 2017-12-12 Sandisk Technologies Llc Systems and methods for atomic storage operations
KR102025180B1 (ko) 2013-08-08 2019-09-26 삼성전자주식회사 스토리지 시스템 및 그것의 쓰기 방법
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US9298534B2 (en) * 2013-09-05 2016-03-29 Kabushiki Kaisha Toshiba Memory system and constructing method of logical block
US9317421B2 (en) * 2013-09-27 2016-04-19 Intel Corporation Memory management
US9372743B1 (en) * 2013-09-30 2016-06-21 Emc Corporation System and method for storage management
US9418100B1 (en) * 2013-09-30 2016-08-16 Emc Corporation System and method for storage management
US9405783B2 (en) 2013-10-02 2016-08-02 Netapp, Inc. Extent hashing technique for distributed storage architecture
US9413491B1 (en) 2013-10-08 2016-08-09 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for multiple dimension decoding and encoding a message
US9397706B1 (en) 2013-10-09 2016-07-19 Avago Technologies General Ip (Singapore) Pte. Ltd. System and method for irregular multiple dimension decoding and encoding
US9786388B1 (en) 2013-10-09 2017-10-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US9348694B1 (en) 2013-10-09 2016-05-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Detecting and managing bad columns
US10019320B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for distributed atomic storage operations
US10019352B2 (en) 2013-10-18 2018-07-10 Sandisk Technologies Llc Systems and methods for adaptive reserve storage
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
US9558080B2 (en) 2013-10-31 2017-01-31 Microsoft Technology Licensing, Llc Crash recovery using non-volatile memory
US10073630B2 (en) 2013-11-08 2018-09-11 Sandisk Technologies Llc Systems and methods for log coordination
US9928166B2 (en) 2013-12-24 2018-03-27 International Business Machines Corporation Detecting hot spots through flash memory management table snapshots
US9529546B2 (en) 2014-01-08 2016-12-27 Netapp, Inc. Global in-line extent-based deduplication
US9448924B2 (en) 2014-01-08 2016-09-20 Netapp, Inc. Flash optimized, log-structured layer of a file system
US9152330B2 (en) * 2014-01-09 2015-10-06 Netapp, Inc. NVRAM data organization using self-describing entities for predictable recovery after power-loss
US9256549B2 (en) 2014-01-17 2016-02-09 Netapp, Inc. Set-associative hash table organization for efficient storage and retrieval of data in a storage system
US9268653B2 (en) 2014-01-17 2016-02-23 Netapp, Inc. Extent metadata update logging and checkpointing
US10331457B2 (en) 2014-01-22 2019-06-25 Hewlett-Packard Development Company, L.P. Byte-addressable non-volatile read-write main memory partitioned into regions including metadata region
US9536612B1 (en) 2014-01-23 2017-01-03 Avago Technologies General Ip (Singapore) Pte. Ltd Digital signaling processing for three dimensional flash memory arrays
US10120792B1 (en) * 2014-01-29 2018-11-06 Avago Technologies General Ip (Singapore) Pte. Ltd. Programming an embedded flash storage device
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
KR102033323B1 (ko) * 2014-03-05 2019-10-17 한국전자통신연구원 플래시 메모리에서 사용하는 로그 구조 파일시스템의 메타데이터 저장 방법
US9354955B1 (en) 2014-03-19 2016-05-31 Western Digital Technologies, Inc. Partial garbage collection for fast error handling and optimized garbage collection for the invisible band
US9542262B1 (en) 2014-05-29 2017-01-10 Avago Technologies General Ip (Singapore) Pte. Ltd. Error correction
US9892033B1 (en) 2014-06-24 2018-02-13 Avago Technologies General Ip (Singapore) Pte. Ltd. Management of memory units
US9972393B1 (en) 2014-07-03 2018-05-15 Avago Technologies General Ip (Singapore) Pte. Ltd. Accelerating programming of a flash memory module
US9584159B1 (en) 2014-07-03 2017-02-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interleaved encoding
US9449702B1 (en) 2014-07-08 2016-09-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Power management
CN104090730B (zh) * 2014-07-08 2017-02-22 飞天诚信科技股份有限公司 一种对存储设备进行数据读写的方法及装置
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
WO2016014061A1 (en) * 2014-07-24 2016-01-28 Hewlett-Packard Development Company, L.P. Storing metadata
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9875055B1 (en) * 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
US10002044B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US10002043B2 (en) 2014-08-19 2018-06-19 Samsung Electronics Co., Ltd. Memory devices and modules
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9792069B2 (en) * 2014-09-29 2017-10-17 Western Digital Technologies, Inc. Offline deduplication for solid-state storage devices
US9171563B1 (en) 2014-09-30 2015-10-27 International Business Machines Corporation Recording medium having independent track for velocity, timing and/or longitudinal position
CN105487939A (zh) * 2014-10-10 2016-04-13 中兴通讯股份有限公司 一种闪存文件的数据恢复方法和装置
US9524211B1 (en) 2014-11-18 2016-12-20 Avago Technologies General Ip (Singapore) Pte. Ltd. Codeword management
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10055146B1 (en) * 2014-12-30 2018-08-21 EMC IP Holding Company LLC Virtual machine rollback
CN104571963A (zh) * 2014-12-31 2015-04-29 曙光信息产业股份有限公司 Raid的元数据的处理方法和装置
US10228745B2 (en) * 2015-01-29 2019-03-12 Hewlett-Packard Development Company, L.P. Resuming a system-on-a-chip device
US10305515B1 (en) 2015-02-02 2019-05-28 Avago Technologies International Sales Pte. Limited System and method for encoding using multiple linear feedback shift registers
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
JP6219865B2 (ja) * 2015-02-19 2017-10-25 ファナック株式会社 制御装置の故障予測システム
US9946607B2 (en) 2015-03-04 2018-04-17 Sandisk Technologies Llc Systems and methods for storage error management
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9671971B2 (en) * 2015-03-27 2017-06-06 Intel Corporation Managing prior versions of data for logical addresses in a storage device
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US10102251B2 (en) 2015-04-14 2018-10-16 Microsoft Technology Licensing, Llc Lockless open collection data structure
US9959137B2 (en) 2015-04-14 2018-05-01 Microsoft Technology Licensing, Llc Transaction redo using skip element for object
US9766929B2 (en) 2015-04-14 2017-09-19 Microsoft Technology Licensing, Llc Processing of data stream collection record sequence
US10592494B2 (en) 2015-04-14 2020-03-17 Microsoft Technology Licensing, Llc Collection record for overlapping data stream collections
US10031814B2 (en) * 2015-04-14 2018-07-24 Microsoft Technology Licensing, Llc Collection record location as log tail beginning
US10133768B2 (en) 2015-04-14 2018-11-20 Microsoft Technology Licensing, Llc Latest external dependee entity in transaction record
CN106294357B (zh) * 2015-05-14 2019-07-09 阿里巴巴集团控股有限公司 数据处理方法和流计算系统
US10628255B1 (en) 2015-06-11 2020-04-21 Avago Technologies International Sales Pte. Limited Multi-dimensional decoding
US9864774B2 (en) * 2015-06-23 2018-01-09 International Business Machines Corporation Granular buffering of metadata changes for journaling file systems
US9851921B1 (en) 2015-07-05 2017-12-26 Avago Technologies General Ip (Singapore) Pte. Ltd. Flash memory chip processing
US9916091B2 (en) 2015-07-13 2018-03-13 Samsung Electronics Co., Ltd. Memory system architecture
CN106354718B (zh) * 2015-07-13 2021-05-25 中国移动通信集团公司 用户识别模块的文件管理方法及装置
CN106354662B (zh) * 2015-07-17 2019-03-01 陕西千山航空电子有限责任公司 一种nand flash数据存储方法
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
CN106527957B (zh) * 2015-09-09 2019-05-28 深圳市凯路创新科技有限公司 嵌入式数据采集终端的循环记录和采集方法
US20170097771A1 (en) 2015-10-01 2017-04-06 Netapp, Inc. Transaction log layout for efficient reclamation and recovery
US10162526B2 (en) * 2015-10-20 2018-12-25 Micron Technology, Inc. Logical address history management in memory device
CN106649136B (zh) * 2015-11-03 2022-09-23 西安中兴新软件有限责任公司 一种数据存储方法和存储装置
EP3376394B1 (en) 2015-12-30 2022-09-28 Huawei Technologies Co., Ltd. Method and device for processing access request, and computer system
CN108431784B (zh) 2015-12-30 2020-12-04 华为技术有限公司 访问请求处理方法、装置及计算机系统
US9846539B2 (en) 2016-01-22 2017-12-19 Netapp, Inc. Recovery from low space condition of an extent store
JP6578982B2 (ja) * 2016-02-12 2019-09-25 富士通株式会社 情報処理装置、故障情報記憶プログラム及び故障情報記憶方法
US9954558B1 (en) 2016-03-03 2018-04-24 Avago Technologies General Ip (Singapore) Pte. Ltd. Fast decoding of data stored in a flash memory
US11036676B2 (en) * 2016-03-04 2021-06-15 International Business Machines Corporation Modifying storage space consumed by snapshots
CN107203552B (zh) * 2016-03-17 2021-12-28 阿里巴巴集团控股有限公司 垃圾回收方法及装置
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10733045B2 (en) * 2016-07-14 2020-08-04 Microsoft Technology Licensing, Llc Online repair of metadata for structured data including file systems
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10540102B2 (en) * 2016-09-30 2020-01-21 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and replay
US10489289B1 (en) 2016-09-30 2019-11-26 Amazon Technologies, Inc. Physical media aware spacially coupled journaling and trim
US20180095788A1 (en) * 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
CN106407468B (zh) * 2016-10-24 2018-08-28 北京亚控科技发展有限公司 一种描述事物空间属性并基于所述描述进行查找的方法
US10613973B1 (en) 2016-12-28 2020-04-07 Amazon Technologies, Inc. Garbage collection in solid state drives
WO2018165939A1 (en) * 2017-03-16 2018-09-20 Intel Corporation Flash data compression decompression method and apparatus
JP6912240B2 (ja) * 2017-03-29 2021-08-04 ラピスセミコンダクタ株式会社 メモリシステム及びメモリの管理方法
US10223272B2 (en) 2017-04-25 2019-03-05 Seagate Technology Llc Latency sensitive metadata object persistence operation for storage device
US10719446B2 (en) * 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10521115B2 (en) 2017-09-05 2019-12-31 International Business Machines Corporation Handling cache and non-volatile storage (NVS) out of sync writes
US11314659B2 (en) * 2017-09-05 2022-04-26 International Business Machines Corporation Using real segments and alternate segments in non-volatile storage
US10761744B2 (en) 2017-09-05 2020-09-01 International Business Machines Corporation Synchronously performing commit records operations
US10936441B2 (en) * 2017-12-15 2021-03-02 Microsoft Technology Licensing, Llc Write-ahead style logging in a persistent memory device
CN108280028B (zh) * 2017-12-27 2024-04-05 浙江恒业电子股份有限公司 一种基于动态分配的智能电能表负荷记录实现的方法
US10585596B2 (en) * 2018-02-12 2020-03-10 International Business Machines Corporation Dynamic I/O throttling in a storlet environment
KR102619954B1 (ko) * 2018-03-29 2024-01-02 삼성전자주식회사 데이터를 처리하기 위한 방법 및 이를 지원하는 전자 장치
TWI669610B (zh) * 2018-06-13 2019-08-21 慧榮科技股份有限公司 資料儲存裝置以及非揮發式記憶體控制方法
CN109032518A (zh) * 2018-07-19 2018-12-18 江苏华存电子科技有限公司 一种闪存内超级块的类型识别方法
US20200042466A1 (en) * 2018-08-03 2020-02-06 Burlywood, Inc. Power Loss Protection And Recovery
US11334547B2 (en) * 2018-08-20 2022-05-17 Koninklijke Philips N.V. Data-oblivious copying from a first array to a second array
KR20200031886A (ko) 2018-09-17 2020-03-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
CN109240856A (zh) * 2018-09-18 2019-01-18 郑州云海信息技术有限公司 一种存储元数据损坏模拟方法、装置、终端及存储介质
US11243909B2 (en) * 2018-10-31 2022-02-08 Alibaba Group Holding Limited Journaling overhead reduction with remapping interface
CN111124264B (zh) * 2018-10-31 2023-10-27 伊姆西Ip控股有限责任公司 用于重建数据的方法、设备和计算机程序产品
CN109597580B (zh) * 2018-12-03 2021-10-29 烟台东方威思顿电气有限公司 适用于智能电表负荷曲线存储的flash操作方法
US10884654B2 (en) * 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
KR20200086143A (ko) * 2019-01-08 2020-07-16 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
CN111435331B (zh) * 2019-01-14 2022-08-26 杭州宏杉科技股份有限公司 存储卷写数据方法、装置、电子设备及机器可读存储介质
TWI737189B (zh) * 2019-02-23 2021-08-21 國立清華大學 易於從固態儲存裝置之故障中還原的方法、電腦系統,及固態儲存裝置
US11200122B2 (en) * 2019-07-24 2021-12-14 EMC IP Holding Company LLC Barrierless snapshots
US11036594B1 (en) 2019-07-25 2021-06-15 Jetstream Software Inc. Disaster recovery systems and methods with low recovery point objectives
US11307779B2 (en) * 2019-09-11 2022-04-19 Ceremorphic, Inc. System and method for flash and RAM allocation for reduced power consumption in a processor
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
CN110673800B (zh) * 2019-09-29 2022-07-22 苏州浪潮智能科技有限公司 文件系统的数据操作方法、装置、设备及可读存储介质
US11106372B2 (en) 2019-12-27 2021-08-31 Micron Technology, Inc. Asynchronous power loss handling approach for a memory sub-system
US11567865B2 (en) * 2019-12-31 2023-01-31 Samsung Electronics Co., Ltd. Methods and apparatus for persistent data structures
CN113312294A (zh) * 2020-02-27 2021-08-27 瑞昱半导体股份有限公司 电子装置以及通讯方法
KR20210128780A (ko) * 2020-04-17 2021-10-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
US11481273B2 (en) * 2020-08-17 2022-10-25 Micron Technology, Inc. Partitioned memory having error detection capability
CN112035410B (zh) * 2020-08-18 2023-08-18 腾讯科技(深圳)有限公司 日志存储方法、装置、节点设备及存储介质
KR20220049230A (ko) 2020-10-14 2022-04-21 에스케이하이닉스 주식회사 메모리 시스템에서 비휘발성 메모리 장치 내 오류를 확인하는 장치 및 방법
CN112256203B (zh) * 2020-10-26 2023-04-28 山东盖特航空科技有限公司 Flash存储器的写入方法、装置、设备、介质及系统
JP2022095257A (ja) 2020-12-16 2022-06-28 キオクシア株式会社 メモリシステム
US11899630B2 (en) * 2021-04-23 2024-02-13 EMC IP Holding Company, LLC System and method for non-disruptive upgrade for metadata log with minimal hiccup
CN113220615A (zh) * 2021-05-08 2021-08-06 山东英信计算机技术有限公司 一种异步通信方法及系统
CN114595105B (zh) * 2022-05-09 2022-08-05 深圳佰维存储科技股份有限公司 Psn唯一性设计方法、装置、可读存储介质及电子设备
CN115292266A (zh) * 2022-05-30 2022-11-04 中国电子科技集团公司第五十二研究所 一种基于存储器的高可靠日志存储方法
EP4318249A1 (en) * 2022-08-03 2024-02-07 Samsung Electronics Co., Ltd. Storage device and operation method thereof
CN117687845A (zh) * 2024-02-04 2024-03-12 成都佰维存储科技有限公司 上电恢复方法、装置、可读存储介质及电子设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050246362A1 (en) 2004-05-03 2005-11-03 Borland Devin P System and method for dynamci log compression in a file system
US20080040385A1 (en) 2002-11-01 2008-02-14 Bluearc Uk Limited Apparatus and Method for Hardware-Based File System

Family Cites Families (206)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3728679A (en) 1971-10-21 1973-04-17 Weston Instruments Inc Skew device
FR2269158B1 (ko) 1974-04-26 1976-10-15 Ibm France
US4128882A (en) 1976-08-19 1978-12-05 Massachusetts Institute Of Technology Packet memory system with hierarchical structure
US4363094A (en) 1977-12-29 1982-12-07 M/A-COM DDC, Inc. Communications processor
US4240143A (en) 1978-12-22 1980-12-16 Burroughs Corporation Hierarchical multi-processor network for memory sharing
US4263651A (en) 1979-05-21 1981-04-21 International Business Machines Corporation Method for determining the characteristics of a logic block graph diagram to provide an indication of path delays between the blocks
US4323849A (en) 1980-01-11 1982-04-06 Hybricon, Inc. Coulometer
NL183214C (nl) 1980-01-31 1988-08-16 Philips Nv Inrichting voor het synchroniseren van de fase van een lokaal opgewekt kloksignaal met de fase van een ingangssignaal.
US4322849C1 (en) 1980-04-14 2002-03-05 Frank A Calabrese Data relay system
US4383314A (en) 1981-01-12 1983-05-10 Burroughs Corporation Circular access linkage loop configuration for system communication
US4445171A (en) 1981-04-01 1984-04-24 Teradata Corporation Data processing systems and methods
EP0104294B1 (fr) 1982-09-28 1987-03-18 International Business Machines Corporation Système de transmission de données
US4703451A (en) 1983-05-02 1987-10-27 Calabrese Frank A Data relay system
US4805195A (en) 1984-06-08 1989-02-14 Amdahl Corporation Selectable timing delay circuit
US4701756A (en) 1985-09-10 1987-10-20 Burr William E Fault-tolerant hierarchical network
EP0245765B1 (en) 1986-05-14 1993-09-22 Mitsubishi Denki Kabushiki Kaisha Data transfer control system
US4860201A (en) 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
FR2605768B1 (fr) 1986-10-23 1989-05-05 Bull Sa Dispositif de commande de bus constitue par plusieurs segments isolables
US4756011A (en) 1986-12-24 1988-07-05 Bell Communications Research, Inc. Digital phase aligner
US4910669A (en) 1987-04-03 1990-03-20 At&T Bell Laboratories Binary tree multiprocessor
US6112287A (en) 1993-03-01 2000-08-29 Busless Computers Sarl Shared memory multiprocessor system using a set of serial links as processors-memory switch
US4843288A (en) 1988-03-28 1989-06-27 Rigidyne Corporation Phase locked motor control system for multiple disk drive units
US4881165A (en) 1988-04-01 1989-11-14 Digital Equipment Corporation Method and apparatus for high speed data transmission between two systems operating under the same clock with unknown and non constant skew in the clock between the two systems
US5128810A (en) 1988-08-02 1992-07-07 Cray Research, Inc. Single disk emulation interface for an array of synchronous spindle disk drives
US5053942A (en) 1988-11-01 1991-10-01 The Regents Of The University Of California Bit-sliced cross-connect chip having a tree topology of arbitration cells for connecting memory modules to processors in a multiprocessor system
US5041964A (en) 1989-06-12 1991-08-20 Grid Systems Corporation Low-power, standby mode computer
US5258660A (en) 1990-01-16 1993-11-02 Cray Research, Inc. Skew-compensated clock distribution system
US5283877A (en) 1990-07-17 1994-02-01 Sun Microsystems, Inc. Single in-line DRAM memory module including a memory controller and cross bar switches
JP2666533B2 (ja) 1990-08-06 1997-10-22 日本電気株式会社 スイツチモジユール
CA2093355A1 (en) 1990-10-03 1992-04-04 David C. Douglas Parallel computer system
US5920704A (en) 1991-03-29 1999-07-06 International Business Machines Corporation Dynamic routing switch apparatus with clocked signal regeneration
EP0544954B1 (en) 1991-12-05 1996-04-24 International Business Machines Corporation Disk drive synchronisation
DE69230129T2 (de) 1991-12-18 2000-06-15 Sun Microsystems Inc Schreibüberlappung mit Verhinderung des Überschreibens
US5285441A (en) 1992-03-17 1994-02-08 At&T Bell Laboratories Errorless line protection switching in asynchronous transer mode (ATM) communications systems
US5365487A (en) 1992-03-24 1994-11-15 Texas Instruments Incorporated DRAM power management with self-refresh
US5313501A (en) 1992-06-15 1994-05-17 Digital Equipment Corporation Method and apparatus for deskewing digital data
JP3412839B2 (ja) 1992-07-01 2003-06-03 株式会社東芝 不揮発性半導体メモリ装置
WO1994003901A1 (en) 1992-08-10 1994-02-17 Monolithic System Technology, Inc. Fault-tolerant, high-speed bus system and bus interface for wafer-scale integration
JPH07154381A (ja) 1993-11-30 1995-06-16 Hitachi Ltd データ転送装置
JPH07175700A (ja) * 1993-12-20 1995-07-14 Fujitsu Ltd データベース管理方式
US5513377A (en) 1994-06-17 1996-04-30 International Business Machines Corporation Input-output element has self timed interface using a received clock signal to individually phase aligned bits received from a parallel bus
US5507029A (en) 1995-01-11 1996-04-09 International Business Machines Corporation Method for minimizing the time skew of electrical signals in very large scale integrated circuits
US6728851B1 (en) 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5960034A (en) 1995-12-01 1999-09-28 Advanced Micro Devices, Inc. Expandable repeater with built-in tree structure arbitration logic
US6151289A (en) 1996-01-22 2000-11-21 T. Squared G, Inc. Multibyte random access mass storage/memory system
JP2924773B2 (ja) 1996-03-28 1999-07-26 日本電気株式会社 位相同期システム
US6018778A (en) 1996-05-03 2000-01-25 Netcell Corporation Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory
JP3976839B2 (ja) 1996-07-09 2007-09-19 株式会社ルネサステクノロジ 不揮発性メモリシステムおよび不揮発性半導体メモリ
US5872959A (en) 1996-09-10 1999-02-16 Lsi Logic Corporation Method and apparatus for parallel high speed data transfer
US5771346A (en) 1996-10-24 1998-06-23 Micron Quantum Devices, Inc. Apparatus and method for detecting over-programming condition in multistate memory device
US5974503A (en) 1997-04-25 1999-10-26 Emc Corporation Storage and access of continuous media files indexed as lists of raid stripe sets associated with file names
US5923830A (en) 1997-05-07 1999-07-13 General Dynamics Information Systems, Inc. Non-interrupting power control for fault tolerant computer systems
KR100211123B1 (ko) 1997-05-23 1999-07-15 윤종용 고속 패킷 스위칭을 위한 다단 상호 연결 망
US6031847A (en) 1997-07-01 2000-02-29 Silicon Graphics, Inc Method and system for deskewing parallel bus channels
US6370200B1 (en) 1997-08-04 2002-04-09 Matsushita Electric Industrial Co., Ltd. Delay adjusting device and method for plural transmission lines
US6442644B1 (en) 1997-08-11 2002-08-27 Advanced Memory International, Inc. Memory system having synchronous-link DRAM (SLDRAM) devices and controller
US6226708B1 (en) 1997-08-18 2001-05-01 Texas Instruments Incorporated Method and system for efficiently programming non-volatile memory
EP1016233A4 (en) 1997-09-19 2000-12-06 Fujitsu Network Communications CONSTANT PHASE CROSS BAR SWITCH
US6157229A (en) 1997-09-29 2000-12-05 Matsushita Electric Industrial Co., Ltd. Skew compensation device
US5889714A (en) 1997-11-03 1999-03-30 Digital Equipment Corporation Adaptive precharge management for synchronous DRAM
US6009547A (en) 1997-12-03 1999-12-28 International Business Machines Corporation ECC in memory arrays having subsequent insertion of content
US7024518B2 (en) 1998-02-13 2006-04-04 Intel Corporation Dual-port buffer-to-memory interface
US6336192B1 (en) 1998-02-16 2002-01-01 Nippon Telegraph And Telephone Corporation Parallel redundancy encoding apparatus
US6105144A (en) 1998-03-02 2000-08-15 International Business Machines Corporation System and method for alleviating skew in a bus
WO1999046775A2 (en) 1998-03-10 1999-09-16 Rambus, Inc. Performing concurrent refresh and current control operations in a memory subsystem
JP4634605B2 (ja) 1998-03-12 2011-02-16 エルピーダメモリ株式会社 データ伝送システム
JP3715429B2 (ja) 1998-04-16 2005-11-09 富士通株式会社 パラレル光送信/光受信モジュール
US6636932B1 (en) 1998-05-27 2003-10-21 Micron Technology, Inc. Crossbar switch and control for data networks switching
US6134167A (en) 1998-06-04 2000-10-17 Compaq Computer Corporation Reducing power consumption in computer memory
US6185663B1 (en) * 1998-06-15 2001-02-06 Compaq Computer Corporation Computer method and apparatus for file system block allocation with multiple redo
US6356610B1 (en) 1998-06-23 2002-03-12 Vlsi Technology, Inc. System to avoid unstable data transfer between digital systems
US6185654B1 (en) 1998-07-17 2001-02-06 Compaq Computer Corporation Phantom resource memory address mapping system
US6445719B1 (en) 1998-08-28 2002-09-03 Adtran Inc. Method, system and apparatus for reducing synchronization and resynchronization times for systems with pulse stuffing
US6334167B1 (en) 1998-08-31 2001-12-25 International Business Machines Corporation System and method for memory self-timed refresh for reduced power consumption
US6611518B1 (en) 1998-09-18 2003-08-26 Samsung Electronics Co., Ltd. Methods and apparatus for flexible device interface port assignment in a data communications switching system
US6138185A (en) 1998-10-29 2000-10-24 Mcdata Corporation High performance crossbar switch
JP2000173289A (ja) 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
US6301244B1 (en) 1998-12-11 2001-10-09 Nortel Networks Limited QoS-oriented one-to-all route selection method for communication networks
US20030001880A1 (en) 2001-04-18 2003-01-02 Parkervision, Inc. Method, system, and computer program product for producing and distributing enhanced media
US6473827B2 (en) 1998-12-22 2002-10-29 Ncr Corporation Distributed multi-fabric interconnect
US6636993B1 (en) 1999-02-12 2003-10-21 Fujitsu Limited System and method for automatic deskew across a high speed, parallel interconnection
US6321345B1 (en) 1999-03-01 2001-11-20 Seachange Systems, Inc. Slow response in redundant arrays of inexpensive disks
US6591339B1 (en) 1999-05-03 2003-07-08 3Ware, Inc. Methods and systems for selecting block sizes for use with disk arrays
US6745363B2 (en) 1999-07-30 2004-06-01 Hewlett-Packard Development Company, Lp Early error detection using ECC
US7592304B2 (en) 1999-10-01 2009-09-22 Dmi Life Sciences, Inc. Metal-binding compounds and uses therefor
JP3573032B2 (ja) 1999-11-09 2004-10-06 日本電気株式会社 ディスクアレイ装置
US6647027B1 (en) 1999-11-10 2003-11-11 Lsi Logic Corporation Method and apparatus for multi-channel data delay equalization
JP2001159970A (ja) 1999-12-03 2001-06-12 Sony Corp 装置間結合装置
US6417713B1 (en) 1999-12-30 2002-07-09 Silicon Graphics, Inc. Programmable differential delay circuit with fine delay adjustment
US7031420B1 (en) 1999-12-30 2006-04-18 Silicon Graphics, Inc. System and method for adaptively deskewing parallel data signals relative to a clock
US6502161B1 (en) 2000-01-05 2002-12-31 Rambus Inc. Memory system including a point-to-point linked memory subsystem
US7266634B2 (en) 2000-01-05 2007-09-04 Rambus Inc. Configurable width buffered module having flyby elements
US20050010737A1 (en) 2000-01-05 2005-01-13 Fred Ware Configurable width buffered module having splitter elements
US7356639B2 (en) 2000-01-05 2008-04-08 Rambus Inc. Configurable width buffered module having a bypass circuit
US6425114B1 (en) 2000-01-31 2002-07-23 Lsi Logic Corporation Systematic skew reduction through buffer resizing
FR2804790B1 (fr) 2000-02-09 2002-04-12 Saint Louis Inst Procede de polarisation d'un materiau ferroelectrique sous forme de cylindre
US7012811B1 (en) 2000-05-10 2006-03-14 Micron Technology, Inc. Method of tuning a multi-path circuit
US6591285B1 (en) 2000-06-16 2003-07-08 Shuo-Yen Robert Li Running-sum adder networks determined by recursive construction of multi-stage networks
US6961347B1 (en) 2000-06-20 2005-11-01 Hewlett-Packard Development Company, L.P. High-speed interconnection link having automated lane reordering
US6681338B1 (en) 2000-06-21 2004-01-20 Rambus, Inc. Method and system for reducing signal skew by switching between multiple signal routing layers
JP2002007201A (ja) 2000-06-21 2002-01-11 Nec Corp メモリシステム、メモリインターフェース及びメモリチップ
US6446174B1 (en) 2000-07-11 2002-09-03 Intel Corporation Computer system with dram bus
JP3758953B2 (ja) 2000-07-21 2006-03-22 富士通株式会社 スキュー補正装置
US6928571B1 (en) 2000-09-15 2005-08-09 Intel Corporation Digital system of adjusting delays on circuit boards
US6553450B1 (en) 2000-09-18 2003-04-22 Intel Corporation Buffer to multiply memory interface
US6369605B1 (en) 2000-09-18 2002-04-09 Intel Corporation Self-terminated driver to prevent signal reflections of transmissions between electronic devices
US6625687B1 (en) 2000-09-18 2003-09-23 Intel Corporation Memory module employing a junction circuit for point-to-point connection isolation, voltage translation, data synchronization, and multiplexing/demultiplexing
US6317352B1 (en) 2000-09-18 2001-11-13 Intel Corporation Apparatus for implementing a buffered daisy chain connection between a memory controller and memory modules
US6658509B1 (en) 2000-10-03 2003-12-02 Intel Corporation Multi-tier point-to-point ring memory interface
JP2002117000A (ja) 2000-10-05 2002-04-19 Hitachi Ltd メモリシステムおよび接続部材
JP2002135234A (ja) 2000-10-20 2002-05-10 Mitsubishi Electric Corp スキュー調整回路
US6934785B2 (en) 2000-12-22 2005-08-23 Micron Technology, Inc. High speed interface with looped bus
US6493250B2 (en) 2000-12-28 2002-12-10 Intel Corporation Multi-tier point-to-point buffered memory interface
US7013361B2 (en) 2001-01-24 2006-03-14 Grass Valley Group Inc. Routing switcher with variable input/output architecture
US7123660B2 (en) 2001-02-27 2006-10-17 Jazio, Inc. Method and system for deskewing parallel bus channels to increase data transfer rates
US6882082B2 (en) 2001-03-13 2005-04-19 Micron Technology, Inc. Memory repeater
US6697974B2 (en) 2001-03-14 2004-02-24 International Business Machines Corporation Method and apparatus for adaptively compensating skews during data transmission on a bus
US6735397B2 (en) 2001-03-14 2004-05-11 Blaze Network Products, Inc. Skew discovery and compensation for WDM fiber communications systems using 8b10b encoding
US6874097B1 (en) 2001-06-01 2005-03-29 Maxtor Corporation Timing skew compensation technique for parallel data channels
JP4542286B2 (ja) 2001-06-06 2010-09-08 富士通株式会社 並列信号自動位相調整回路
US6504848B1 (en) 2001-06-13 2003-01-07 Interdigital Communications Corporation Binary-tree method and system for multiplexing scheduling
US7609695B2 (en) 2001-06-15 2009-10-27 Industrial Technology Research Institute Optimizing switching element for minimal latency
JP2003041305A (ja) 2001-07-27 2003-02-13 Fuji Photo Film Co Ltd 超微粒子、並びに、その製造方法及び製造装置
JP2003076498A (ja) 2001-09-05 2003-03-14 Hitachi Ltd ディスク記憶装置
TW591838B (en) 2001-09-24 2004-06-11 Micro Star Int Co Ltd Power-off instantaneous voltage protector
US7085950B2 (en) 2001-09-28 2006-08-01 Koninklijke Philips Electronics N.V. Parallel data communication realignment of data sent in multiple groups
US6938133B2 (en) 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US20030084397A1 (en) 2001-10-31 2003-05-01 Exanet Co. Apparatus and method for a distributed raid
US7065101B2 (en) 2001-11-15 2006-06-20 International Business Machines Corporation Modification of bus protocol packet for serial data synchronization
US7130317B2 (en) 2001-11-19 2006-10-31 Annadurai Andy P Method and circuit for de-skewing data in a communication system
US6785771B2 (en) 2001-12-04 2004-08-31 International Business Machines Corporation Method, system, and program for destaging data in cache
US7113012B2 (en) 2001-12-20 2006-09-26 Bhavik Amin Skew delay compensator
US6690191B2 (en) 2001-12-21 2004-02-10 Sun Microsystems, Inc. Bi-directional output buffer
US6799235B2 (en) 2002-01-02 2004-09-28 Intel Corporation Daisy chain latency reduction
US6625078B2 (en) 2002-02-11 2003-09-23 United Memories, Inc. Look-ahead refresh for an integrated circuit memory
US6871257B2 (en) 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7110400B2 (en) 2002-04-10 2006-09-19 Integrated Device Technology, Inc. Random access memory architecture and serial interface with continuous packet handling capability
US6996738B2 (en) 2002-04-15 2006-02-07 Broadcom Corporation Robust and scalable de-skew method for data path skew control
US20030208511A1 (en) 2002-05-02 2003-11-06 Earl Leroy D. Database replication system
US6789165B2 (en) 2002-05-10 2004-09-07 International Business Machines Corporation Data storage array method and system
US7149857B2 (en) 2002-05-14 2006-12-12 Micron Technology, Inc. Out of order DRAM sequencer
US7028200B2 (en) 2002-05-15 2006-04-11 Broadcom Corporation Method and apparatus for adaptive power management of memory subsystem
US7734867B1 (en) 2002-05-17 2010-06-08 Hewlett-Packard Development Company, L.P. Data storage using disk drives in accordance with a schedule of operations
US6983354B2 (en) 2002-05-24 2006-01-03 Micron Technology, Inc. Memory device sequencer and method supporting multiple memory device clock speeds
US7180949B2 (en) 2002-06-04 2007-02-20 Lucent Technologies Inc. High-speed chip-to-chip communication interface
KR100463202B1 (ko) 2002-07-02 2004-12-23 삼성전자주식회사 반도체 메모리 장치의 패드 및 주변 회로 레이아웃
US6834023B2 (en) 2002-08-01 2004-12-21 Micron Technology, Inc. Method and apparatus for saving current in a memory device
US6930949B2 (en) 2002-08-26 2005-08-16 Micron Technology, Inc. Power savings in active standby mode
US7551640B1 (en) 2002-09-20 2009-06-23 Cisco Technology, Inc. Method and apparatus for errorless frame timing adjustment
JP3838968B2 (ja) 2002-11-29 2006-10-25 Necインフロンティア株式会社 複数の通信インターフェースを搭載した通信機器、及び無線lanアクセスポイント
US7093076B2 (en) 2002-12-12 2006-08-15 Samsung Electronics, Co., Ltd. Memory system having two-way ring topology and memory device and memory module for ring-topology memory system
US20040153902A1 (en) 2003-01-21 2004-08-05 Nexflash Technologies, Inc. Serial flash integrated circuit having error detection and correction
DE102004014450A1 (de) 2003-03-26 2005-02-10 Infineon Technologies Ag Verfahren zum Messen und Kompensieren von Versatz von Datenübertragungsleitungen
WO2004102403A2 (en) 2003-05-13 2004-11-25 Advanced Micro Devices, Inc. A system including a host connected to a plurality of memory modules via a serial memory interconnect
US20040243769A1 (en) 2003-05-30 2004-12-02 Frame David W. Tree based memory structure
US7200790B2 (en) 2003-07-08 2007-04-03 Sun Microsystems, Inc. Switch level reliable transmission
US6952813B1 (en) 2003-07-30 2005-10-04 Xilinx, Inc. Method and apparatus for selecting programmable interconnects to reduce clock skew
JP3984206B2 (ja) 2003-09-02 2007-10-03 株式会社東芝 マイクロプロセッサー及び映像音声システム
US7149950B2 (en) 2003-09-12 2006-12-12 Hewlett-Packard Development Company, L.P. Assisted memory device for reading and writing single and multiple units of data
US7085943B2 (en) 2003-09-26 2006-08-01 Freescale Semiconductor, Inc. Method and circuitry for controlling supply voltage in a data processing system
US7668271B2 (en) 2003-09-30 2010-02-23 Rambus Inc. Clock-data recovery (“CDR”) circuit, apparatus and method for variable frequency data
US7433258B2 (en) 2003-10-10 2008-10-07 Datasecure Llc. Posted precharge and multiple open-page RAM architecture
US7320080B2 (en) 2003-10-15 2008-01-15 Intel Corporation Power management over switching fabrics
JP3808863B2 (ja) 2003-11-21 2006-08-16 株式会社東芝 複数のデータ伝送路を持つシリアルデータ通信方式
JP4486348B2 (ja) 2003-11-26 2010-06-23 株式会社日立製作所 ドライブの稼働時間を抑止するディスクアレイ
US7913148B2 (en) 2004-03-12 2011-03-22 Nvidia Corporation Disk controller methods and apparatus with improved striping, redundancy operations and interfaces
US7203889B2 (en) 2004-04-01 2007-04-10 Intel Corporation Error correction for memory
US7213103B2 (en) 2004-04-22 2007-05-01 Apple Inc. Accessing data storage systems without waiting for read errors
US20050259692A1 (en) 2004-05-19 2005-11-24 Zerbe Jared L Crosstalk minimization in serial link systems
US7205803B2 (en) 2004-06-29 2007-04-17 Lsi Logic Corporation High speed fully scaleable, programmable and linear digital delay circuit
US7366852B2 (en) 2004-07-29 2008-04-29 Infortrend Technology, Inc. Method for improving data reading performance and storage system for performing the same
US7668272B1 (en) 2004-10-26 2010-02-23 National Semiconductor Corporation Method and apparatus for data transfer between mesochronous clock domains
US7817767B2 (en) 2004-12-23 2010-10-19 Rambus Inc. Processor-controlled clock-data recovery
US7953921B2 (en) 2004-12-28 2011-05-31 Qualcomm Incorporated Directed auto-refresh synchronization
EP1913599A2 (en) 2005-01-21 2008-04-23 RMI Corporation System and method for performing concatenation of diversely routed channels
US7421598B2 (en) 2005-02-09 2008-09-02 International Business Machines Corporation Dynamic power management via DIMM read operation limiter
EP2383661A1 (en) 2005-04-21 2011-11-02 Violin Memory, Inc. Interconnection system
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7457978B2 (en) 2005-05-09 2008-11-25 Micron Technology, Inc. Adjustable byte lane offset for memory module to reduce skew
KR100663361B1 (ko) 2005-05-17 2007-01-02 삼성전자주식회사 지연 회로 및 이를 구비한 반도체 장치
US7836204B2 (en) 2005-06-01 2010-11-16 International Business Machines Corporation Apparatus, system, and method for accessing a preferred path through a storage controller
US7444526B2 (en) 2005-06-16 2008-10-28 International Business Machines Corporation Performance conserving method for reducing power consumption in a server system
JP2007072988A (ja) 2005-09-09 2007-03-22 Hitachi Ltd ディスクアレイ装置及びデータ移動方法並びにプログラム
JP4745169B2 (ja) 2005-09-16 2011-08-10 株式会社東芝 半導体記憶装置
US9047344B2 (en) 2005-10-17 2015-06-02 International Business Machines Corporation Guaranteeing data and metadata referential integrity in content management archival solutions
US20070094445A1 (en) * 2005-10-20 2007-04-26 Trika Sanjeev N Method to enable fast disk caching and efficient operations on solid state disks
US7516267B2 (en) * 2005-11-03 2009-04-07 Intel Corporation Recovering from a non-volatile memory failure
US7783845B2 (en) 2005-11-14 2010-08-24 Sandisk Corporation Structures for the management of erase operations in non-volatile memories
US7653776B2 (en) 2005-12-14 2010-01-26 Apple Inc. Method and apparatus for selectively switching IC ports to card slots through the use of three switches per switch group
US20070162516A1 (en) 2005-12-30 2007-07-12 Microsoft Corporation Computing asynchronous transaction log replication progress based on file change notifications
US7440331B2 (en) 2006-06-01 2008-10-21 Sandisk Corporation Verify operation for non-volatile storage using different voltages
US7490189B2 (en) 2006-06-14 2009-02-10 Sun Microsystems, Inc. Multi-chip switch based on proximity communication
US20080052446A1 (en) 2006-08-28 2008-02-28 Sandisk Il Ltd. Logical super block mapping for NAND flash memory
US20080059869A1 (en) 2006-09-01 2008-03-06 The Regents Of The University Of California Low cost, high performance error detection and correction
US7525356B2 (en) 2006-09-14 2009-04-28 Lsi Corporation Low-power, programmable multi-stage delay cell
US7499317B2 (en) 2006-10-13 2009-03-03 Sandisk Corporation System for partitioned erase and erase verification in a non-volatile memory to compensate for capacitive coupling
US8019940B2 (en) 2006-12-06 2011-09-13 Fusion-Io, Inc. Apparatus, system, and method for a front-end, distributed raid
US7751713B2 (en) 2007-01-19 2010-07-06 Infinera Corporation Communication network with skew path monitoring and adjustment
US8660020B2 (en) 2007-01-19 2014-02-25 Infinera Corporation Communication network with skew compensation
US20080320366A1 (en) 2007-06-25 2008-12-25 Lin Jason T Methods of reading nonvolatile memory
US8041990B2 (en) 2007-06-28 2011-10-18 International Business Machines Corporation System and method for error correction and detection in a memory system
US7508715B2 (en) 2007-07-03 2009-03-24 Sandisk Corporation Coarse/fine program verification in non-volatile memory using different reference levels for improved sensing
US8095763B2 (en) 2007-10-18 2012-01-10 Datadirect Networks, Inc. Method for reducing latency in a raid memory system while maintaining data integrity
US7688638B2 (en) 2007-12-07 2010-03-30 Sandisk Corporation Faster programming of multi-level non-volatile storage through reduced verify operations
US8175113B2 (en) 2008-06-30 2012-05-08 Infinera Corporation Communication network with node bypassed co-routed multi-channel traffic

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080040385A1 (en) 2002-11-01 2008-02-14 Bluearc Uk Limited Apparatus and Method for Hardware-Based File System
US20050246362A1 (en) 2004-05-03 2005-11-03 Borland Devin P System and method for dynamci log compression in a file system

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10664355B2 (en) 2017-05-16 2020-05-26 SK Hynik Inc. Data storage device performing recovery operation after sudden power-off and operating method thereof
KR20190069781A (ko) * 2017-12-12 2019-06-20 연세대학교 산학협력단 듀얼 모듈러 리던던시를 이용한 파이프라인 구조의 오류 복구 모듈 및 방법
KR102022482B1 (ko) * 2017-12-12 2019-09-18 연세대학교 산학협력단 듀얼 모듈러 리던던시를 이용한 파이프라인 구조의 오류 복구 모듈 및 방법
CN109144425A (zh) * 2018-09-07 2019-01-04 郑州云海信息技术有限公司 一种元数据存储方法、装置、设备及计算机可读存储介质

Also Published As

Publication number Publication date
CN101903866A (zh) 2010-12-01
US20090150599A1 (en) 2009-06-11
KR20100091227A (ko) 2010-08-18
CN101903866B (zh) 2013-07-31
EP2232374A4 (en) 2012-01-25
EP2793132B1 (en) 2016-10-12
WO2009067476A3 (en) 2009-07-09
EP2793132A2 (en) 2014-10-22
EP2232374A2 (en) 2010-09-29
EP2232374B1 (en) 2014-05-07
EP2793132A3 (en) 2014-12-03
WO2009067476A2 (en) 2009-05-28
US8452929B2 (en) 2013-05-28

Similar Documents

Publication Publication Date Title
KR101573370B1 (ko) 비휘발성 매체에 데이터를 저장하기 위한 방법 및 시스템
US9727263B2 (en) Method and system for storage of data in a non-volatile media
JP4898457B2 (ja) 不揮発性メモリおよび制御データ管理を伴う方法
US9411717B2 (en) Metadata journaling with error correction redundancy
US8347138B2 (en) Redundant data distribution in a flash storage device
JP3078946B2 (ja) 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US20120284587A1 (en) Super-Endurance Solid-State Drive with Endurance Translation Layer (ETL) and Diversion of Temp Files for Reduced Flash Wear
KR20020009564A (ko) 메모리 시스템
KR20070007264A (ko) 비순차 갱신 블록 관리를 구비한 비휘발성 메모리 및 방법
KR20070007265A (ko) 제어 데이터 관리를 구비한 비휘발성 메모리 및 방법
KR20060134011A (ko) 메모리 플레인 배열을 갖춘 비휘발성 메모리 및 방법
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory
CN114691402A (zh) 包括存储器控制器的存储设备和存储器控制器的操作方法
JP2007519996A (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法

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: 20190503

Year of fee payment: 4