KR101102155B1 - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR101102155B1
KR101102155B1 KR1020097018033A KR20097018033A KR101102155B1 KR 101102155 B1 KR101102155 B1 KR 101102155B1 KR 1020097018033 A KR1020097018033 A KR 1020097018033A KR 20097018033 A KR20097018033 A KR 20097018033A KR 101102155 B1 KR101102155 B1 KR 101102155B1
Authority
KR
South Korea
Prior art keywords
log
update log
update
management information
data
Prior art date
Application number
KR1020097018033A
Other languages
English (en)
Other versions
KR20090117929A (ko
Inventor
준지 야노
히데노리 마쯔자끼
고스께 하쯔다
히로끼 마쯔다이라
Original Assignee
가부시끼가이샤 도시바
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20090117929A publication Critical patent/KR20090117929A/ko
Application granted granted Critical
Publication of KR101102155B1 publication Critical patent/KR101102155B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • GPHYSICS
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • 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/1474Saving, restoring, recovering or retrying in transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Library & Information Science (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

본 발명은 데이터 기입 중에 프로그램 에러가 발생한 경우에도 확실하게 관리 정보를 복원할 수 있는 메모리 시스템을 제공한다. 갱신전 로그의 "로그 기입 (1)" 후, 데이터 기입을 행하고 있을 때에 프로그램 에러가 발생한 경우에(데이터 기입 에러), 메모리 시스템은 데이터 재기입 처리에 대응하는 갱신전 로그를 취득하지 않고, 다시 데이터 기입을 행한다. 데이터 기입을 종료한 후에, 메모리 시스템은 갱신후 로그를 생성하지 않고, 갱신후 로그 대신에 스냅샷을 취득하여 처리를 종료한다.
갱신전 로그, 갱신후 로그, 쇼트 브레이크, 데이터 복원, 스냅샷

Description

메모리 시스템{MEMORY SYSTEM}
본 발명은 비휘발성 반도체 저장 장치를 이용하는 메모리 시스템에 관한 것이다.
일부 퍼스널 컴퓨터(PC)는 하드디스크 장치를 보조 기억 장치로서 이용한다. 이러한 PC에서는, 하드디스크 장치에 저장되는 데이터가 어떠한 장해에 의해 무효 화되어 버리는 것을 방지하기 위해 백업을 하는 기술이 알려져 있다. 예를 들어, 하드디스크 장치의 데이터를 변경하는 동작이 검출되면, 변경 전의 데이터의 백업 카피인 스냅샷을 취하고, 그 데이터에 대해 행해진 변경에 대한 로그가 생성된다. 그 후, 소정의 시간마다, 새로운 스냅샷을 취하고, 새로운 스냅샷을 취하기 전의 로그를 무효로 하고, 새로운 로그를 생성하는 처리가 반복된다(예를 들어, 미국특허출원공개 제2006/0224636호 참조). 어떤 이유로 데이터가 무효로 되어 버렸을 경우에는, 스냅샷과 로그를 참조하여 그 데이터를 복원할 수 있다. 이러한 로그로는 통상적으로 갱신전 로그(pre-update log)와 갱신후 로그(post-update log) 2가지 유형이 있다. 갱신전 로그는, 데이터의 갱신 전에 데이터가 어떻게 갱신될지를 나타내는 갱신 계획으로서 생성되는 로그이다. 반면, 갱신후 로그는, 데이터를 실제로 갱신한 후에 데이터의 갱신을 승인하기 위한 로그이다.
최근, 비휘발성 반도체 저장 장치인 NAND형 플래시 메모리의 용량이 극적으로 증가되고 있다. 그 결과, 이 NAND형 플래시 메모리를 갖는 메모리 시스템을 보조 기억 장치로서 포함하는 퍼스널 컴퓨터가 제품화되고 있다. 그러나, 이러한 NAND형 플래시 메모리를 보조 기억 장치로 하는 퍼스널 컴퓨터에 저장되는 데이터의 백업에 대하여, 하드디스크 장치를 보조 기억 장치로 하는 퍼스널 컴퓨터에 저장되는 데이터의 백업의 경우와 동일하게 상기 미국특허출원공개 제2006/0224636호에 개시된 기술을 적용할 수는 없다. 그것은, NAND형 플래시 메모리의 용량을 증가시키는 데에, 1개의 메모리 셀에 2 비트 이상의 복수의 데이터(다치 데이터)를 저장할 수 있는 다치 메모리 기술이 사용되고 있기 때문이다.
다치 메모리를 구성하는 메모리 셀은, 채널 영역 상에 게이트 절연막, 부유 게이트 전극, 게이트간 절연막 및 제어 게이트 전극이 차례로 적층된 적층 게이트 구조를 갖는 전계 효과 트랜지스터 구조를 가지며, 부유 게이트 전극에 축적되는 전자의 수에 따라 복수의 임계값 전압을 설정할 수 있다. 이 복수의 임계값 전압에 기초하여 다치 저장을 행할 수 있도록 하기 위해, 1개의 데이터에 대응하는 임계값 전압의 분포를 매우 좁게 할 필요가 있다.
예를 들어, 4치를 저장할 수 있는 다치 메모리로는, 1개의 메모리 셀에 하위 페이지와 상위 페이지를 포함하고, 각각의 페이지에 1 비트의 데이터를 기입함으로써 2 비트(4치)를 저장하는 다치 메모리가 있다. 이러한 다치 메모리의 데이터 기입 방법에서, 제1 메모리 셀의 하위 페이지에 데이터를 기입한 후, 제1 메모리 셀에 인접하는 메모리 셀(제2 메모리 셀)의 하위 페이지에 데이터를 기입한다. 이 인접 메모리 셀에 데이터를 기입한 후, 제1 메모리 셀의 상위 페이지에 데이터를 기입한다(예를 들어, JP-A 2004-192789호(공개) 참조).
그러나, 이러한 다치 메모리에서는, 먼저 데이터가 기입된 제1 메모리 셀의 임계값 전압이, 제1 메모리 셀과 인접하고, 나중에 데이터가 기입되는 제2 메모리 셀의 임계값 전압 때문에 변동하게 된다. 그러므로, 다치 메모리에서는, 소정의 메모리 셀의 상위 페이지에 데이터가 기입되고 있는 동안, 예를 들어 전원의 이상 차단 등에 의해 기입이 중단되면, 먼저 데이터가 기입된 하위 페이지의 데이터도 또한 파괴되는, 하위 페이지 데이터 파괴가 발생하게 된다.
그러므로, NAND형 플래시 메모리를 채용한 메모리 시스템에 로그를 저장하여 백업을 취하는 상기 종래의 기술을 적용했을 경우에는, 로그의 기입 중에 전원의 이상 차단이 발생하면, 현재 기입되고 있는 로그 및 이미 저장되어 있는 로그조차 파괴되어 버린다는 점에서 문제가 있다.
데이터의 기입을 행하고 있는 도중에 프로그램 에러가 발생한 경우에는, 데이터의 재기입을 행한다. 그러나, 통상적으로, 이러한 경우에서의 로그의 생성 방법, 특히 로그의 기입 중에 다시 전원의 이상 차단이 발생한 경우의 리셋 동안의 처리를 포함하는 로그 생성 방법에 대해서는 고려되지 않았다.
본 발명의 일 양상에 따르면, 메모리 시스템은, 휘발성의 제1 저장부와, 다치 데이터를 저장할 수 있는 메모리 셀을 포함하는 비휘발성의 제2 저장부와, 제1 저장부를 통하여 호스트 장치와 제2 저장부 사이에서 데이터 전송을 행하고, 메모리 시스템의 기동 동작 동안 제2 저장부에 저장된 데이터의 저장 위치를 포함하는 관리 정보를 제1 저장부에 저장하고, 저장된 관리 정보를 갱신하면서 저장된 관리 정보에 기초하여 제1 및 제2 저장부에서의 데이터 관리를 행하는 컨트롤러를 포함한다. 컨트롤러는, 소정의 조건이 만족되었을 때에 제1 저장부에 저장된 관리 정보를 스냅샷으로서 제2 저장부에 저장하고, 갱신전 로그를 관리 정보에 변경이 발생하기 전에 저장되는 관리 정보의 갱신 차분 정보로서 그리고 갱신후 로그를 관리 정보에 변경이 발생한 후에 저장되는 관리 정보의 갱신 차분 정보로서 제2 저장부에 저장하는 관리 정보 저장부와, 기동 동작 동안 갱신전 로그 또는 갱신후 로그가 제2 저장부에 존재하는 경우에는 스냅샷과 갱신전 로그 또는 갱신후 로그에 기초하여 제1 저장부에서 관리 정보의 복원을 행하고, 기동 동작 동안 갱신전 로그 및 갱신후 로그가 제2 저장부에 존재하지 않는 경우에는 스냅샷에 기초하여 제1 저장부에서 관리 정보의 복원을 행하는 관리 정보 복원부를 포함한다. 관리 정보 저장부는, 갱신전 로그의 저장 후 갱신 처리로서 제2 저장부에 데이터 기입이 행해지고 있는 도중에 프로그램 에러가 발생한 경우에는, 데이터 기입을 다시 행한 후 새로운 로그의 기입을 행하지 않고 스냅샷을 저장한다.
본 발명의 또 다른 양상에 따르면, 메모리 시스템은, 휘발성의 제1 저장부와, 다치 데이터를 저장할 수 있는 메모리 셀을 포함하는 비휘발성의 제2 저장부와, 제1 저장부를 통하여 호스트 장치와 제2 저장부 사이에서 데이터 전송을 행하고, 메모리 시스템의 기동 동작 동안 제2 저장부에 저장된 데이터의 저장 위치를 포함하는 관리 정보를 제1 저장부에 저장하고, 저장된 관리 정보를 갱신하면서 저장된 관리 정보에 기초하여 제1 및 제2 저장부에서의 데이터 관리를 행하는 컨트롤러를 포함한다. 컨트롤러는, 소정의 조건이 만족되었을 때에 제1 저장부에 저장된 관리 정보를 스냅샷으로서 제2 저장부에 저장하고, 갱신전 로그를 관리 정보에 변경이 발생하기 전에 저장되는 관리 정보의 갱신 차분 정보로서 그리고 갱신후 로그를 관리 정보에 변경이 발생한 후에 저장되는 관리 정보의 갱신 차분 정보로서 제2 저장부에 저장하는 관리 정보 저장부와, 기동 동작 동안 갱신전 로그 또는 갱신후 로그가 제2 저장부에 존재하는 경우에는 스냅샷과 갱신전 로그 또는 갱신후 로그에 기초하여 제1 저장부에서 관리 정보의 복원을 행하고, 기동 동작 동안 갱신전 로그 및 갱신후 로그가 제2 저장부에 존재하지 않는 경우에는 스냅샷에 기초하여 제1 저장부에서 관리 정보의 복원을 행하는 관리 정보 복원부를 포함한다. 관리 정보 저장부는, 갱신전 로그의 저장 후, 갱신 처리로서 제2 저장부로의 데이터 기입이 행해지고 있는 도중에 프로그램 에러가 발생한 경우에는, 데이터의 재기입 처리에 대응하는 갱신전 로그를 다시 저장하고, 재기입 처리의 완료 후에는, 재기입 처리에 대응하는 갱신후 로그를 저장한 후, 프로그램 에러가 발생하기 전에 저장된 갱신전 로그에 대응하는 갱신후 로그를 저장한다.
도 1은 본 발명의 실시형태에 따른 메모리 시스템의 구성의 일례를 나타내는 블록도.
도 2는 NAND 메모리의 임의의 블록의 구성의 일례를 나타내는 회로도.
도 3A는 DRAM의 기능 구성의 모식도이고, 도 3B는 NAND 메모리의 기능 구성 의 모식도.
도 4는 메모리 시스템에서 저장되는 데이터를 관리하는 층 구조의 일례를 나타내는 도면.
도 5는 캐시 관리 정보의 일례를 나타내는 도면.
도 6은 논리 NAND 관리 정보의 일례를 나타내는 도면.
도 7은 NAND내 논리 물리 변환 정보 테이블의 일례를 나타내는 도면.
도 8은 관리 정보 저장 영역에 저장되는 관리 정보 저장 정보의 내용의 일례를 모식적으로 나타내는 도면.
도 9는 로그의 일례를 나타내는 도면.
도 10은 도 1에 도시된 드라이브 제어부의 기능 구성의 일례를 나타내는 블록도.
도 11은 도 10에 도시된 데이터 관리부의 기능 구성의 일례를 나타내는 블록도.
도 12는 메모리 시스템의 관리 정보의 저장 처리 절차의 일례를 나타내는 플로차트.
도 13은 갱신전 로그와 갱신후 로그의 저장 처리를 설명하기 위한 도면.
도 14는 메모리 시스템의 관리 정보의 복원 처리 절차의 일례를 나타내는 플로차트.
도 15A 내지 도 15D는 메모리 셀의 데이터와 메모리 셀의 임계값 전압 간의 관계와, NAND 메모리에 대한 기입 순서의 일례를 나타내는 도면.
도 16A 내지 도 16C는 관리 정보의 복원에 사용되는 로그의 선택 방법을 설명하기 위한 도면(1).
도 17A 내지 도 17C는 관리 정보의 복원에 사용되는 로그의 선택 방법을 설명하기 위한 다른 도면(2).
도 18은 평상 시에서의 갱신전후 로그의 생성 방법을 설명하는 도면.
도 19는 데이터 기입 에러가 발생한 경우의 로그의 생성 방법의 일례를 설명하는 도면.
도 20은 데이터 기입 에러가 발생한 경우의 로그의 생성 방법의 또 다른 일례를 설명하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
10: 메모리 시스템 11: DRAM
12: NAND 메모리 13 : 전원 회로
14: 드라이브 제어부 15: 버스
31: DRAM 관리층 32: 논리 NAND 관리층
33: 물리 NAND 관리층 41: 캐시 관리 정보
42: 관리 정보 42a: 논리 페이지 관리 정보
42b: 논리 블록 관리 정보 43: NAND내 논물 변환 정보
45, 46, 50, 51, 60, 61: 로그 저장용 블록 111: 일시 저장 영역
112: 작업 영역 125: 데이터 저장 영역
126: 관리 정보 저장 영역 141: 데이터 관리부
151: 데이터 전송 처리부 152: 관리 정보 관리부
153: 관리 정보 기입부 154: 관리 정보 저장부
155: 관리 정보 복원부 156: 로그 저장 블록 개방부
210: 스냅샷 220: 로그
220A: 갱신전 로그 220B: 갱신후 로그
230: 세컨드 포인터 240: 루트 포인터
(본 발명을 수행하기 위한 최량의 모드)
이하, 본 발명에 따른 메모리 시스템의 예시적인 실시형태를 첨부되는 도면을 참조하여 상세하게 설명한다. 본 발명은 이들 실시형태에 의해 한정되지 않는다.
(실시형태)
본 발명의 제1 실시형태에 따른 메모리 시스템은 비휘발성 반도체 저장 장치를 포함하고, 예를 들어 퍼스널 컴퓨터와 같은 호스트 장치의 보조 기억 장치(SSD: 고상 드라이브)로서 사용된다. 이 메모리 시스템은, 호스트 장치로부터 기입이 요구된 데이터를 저장하고, 호스트 장치로부터 판독 요구가 있었던 데이터를 판독하여 호스트 장치에 데이터를 출력하는 기능을 갖는다. 도 1은 본 발명의 제1 실시형태에 따른 메모리 시스템(10)의 구성의 일례를 나타내는 블록도이다. 이 메모리 시스템(10)은 제1 저장부로서의 DRAM(Dynamic Random Access Memory)(11)과, 제2 저장부로서의 NAND형 플래시 메모리(이하, "NAND 메모리"라고 함)(12)와, 전원 회 로(13)와, 드라이브 제어부(14)를 포함한다.
DRAM(11)은 데이터 전송용, 관리 정보 기록용 또는 작업 영역용의 저장부로서 사용된다. 구체적으로는, DRAM(11)이 데이터 전송용의 저장부로서 사용되는 경우, 호스트 장치로부터 기입 요구가 있었던 데이터를 데이터가 NAND 메모리(12)에 기입되기 전에 일시적으로 저장하기 위해 사용되고, DRAM(11)은 호스트 장치로부터 판독 요구가 있었던 데이터를 NAND 메모리(12)로부터 판독하여 판독된 데이터를 일시적으로 저장하기 위해 사용된다. 또한, DRAM(11)이 관리 정보 기록용의 저장부로서 사용되는 경우, DRAM(11)은, DRAM(11) 및 NAND 메모리(12)에 저장되는 데이터의 저장 위치를 관리하기 위한 관리 정보를 저장하기 위해 사용된다. DRAM(11)이 작업 영역용의 저장부로서 사용되는 경우, DRAM(11)은, 관리 정보를 복원할 때에 사용되는 갱신전 로그 및 갱신후 로그(갱신전 로그 및 갱신후 로그)의 전개(expansion) 시 등에 사용된다.
NAND 메모리(12)는 데이터를 저장하기 위한 저장부로서 사용된다. 구체적으로는, NAND 메모리(12)는, 호스트 장치에 의해 지정된 데이터를 저장하거나, DRAM(11)에 의해 관리되는 관리 정보를 백업용으로 저장한다. 이 도 1에서는, 4개의 채널(120A 내지 120D)을 포함하는 NAND 메모리(12)가 일례로서 도시되어 있다. 채널들(120A 내지 120D) 각각은 두 개의 패키지(121)를 포함하고, 이 패키지 각각은 소정 사이즈의 저장 용량(예를 들면, 2GB)을 갖는 8개의 칩(122)을 포함한다. 채널(120A 내지 120D)은 드라이브 제어부(14)와 버스(15A 내지 15D)를 통하여 접속되어 있다.
전원 회로(13)는 외부 전원을 받고, 이 외부 전원으로부터 메모리 시스템(10)의 각부에 공급하기 위한 복수의 내부 전원을 생성한다. 전원 회로(13)는 외부 전원의 상태, 즉 상승 에지 또는 하강 에지를 검지하고, 이 검지된 상태에 기초하여 파워 온 리셋 신호를 생성하고, 이 파워 온 리셋 신호를 드라이브 제어부(14)에 출력한다.
드라이브 제어부(14)는 DRAM(11)과 NAND 메모리(12)를 제어한다. 상세한 것은 후술하지만, 드라이브 제어부(14)는, 전원 회로(13)로부터의 파워 온 리셋 신호에 따라 관리 정보의 복원 처리나 관리 정보의 저장 처리를 행한다. 드라이브 제어부(14)는 ATA 인터페이스(I/F)를 통하여 호스트 장치와의 사이에서 데이터를 송수신하고, RS232C I/F를 통하여 디버그용 장치와의 사이에서 데이터를 송수신한다. 또한, 드라이브 제어부(14)는 메모리 시스템(10)의 외부에 제공되는 상태 표시용 LED의 온/오프를 제어하기 위한 제어 신호를 출력한다.
NAND 메모리(12)의 구성에 대해서 이하에 설명한다. NAND 메모리(12)는 데이터 소거의 단위인 복수의 블록(소거 단위 영역)을 기판 상에 배열하여 구성된다. 도 2는 NAND 메모리의 임의의 블록의 구성의 일례의 회로도이다. 도 2에서, 좌우 방향을 X방향으로 설정하고, X방향과 수직인 방향을 Y방향으로 설정한다.
NAND 메모리(12)의 각 블록 BLK는 X방향을 따라 차례로 배열된 (m+1)개(m은 0 이상의 정수)의 NAND 스트링 NS를 포함한다. 각 NAND 스트링 NS는 Y방향으로 서로 인접하는 메모리 셀 트랜지스터들 MT 사이에서 확산 영역(소스 영역 또는 드레인 영역)을 공유하는 (n+1)개(n은 0 이상의 정수)의 메모리 셀 트랜지스터 MT0 내 지 MTn을 갖는다. 또한, 메모리 셀 트랜지스터 MT0 내지 MTn은 Y방향으로 직렬로 접속되어 있다. 또한, 이 (n+1)개의 메모리 셀 트랜지스터 MT0 내지 MTn의 열의 양단에 선택 트랜지스터 ST1 및 ST2가 배치되어 있다.
각 메모리 셀 트랜지스터 MT0 내지 MTn은 반도체 기판 상에 형성된 적층 게이트 구조를 갖는 MOSFET(Metal 0xide Semiconductor Field Effect Transistor)이다. 적층 게이트 구조는 반도체 기판 상에 게이트 절연막을 개재시켜 형성된 전하 축적층(부유 게이트 전극)과, 이 전하 축적층 상에 게이트간 절연막을 개재시켜 형성된 제어 게이트 전극을 포함한다. 또한, 메모리 셀 트랜지스터 MT0 내지 MTn은 부유 게이트 전극에 축적되는 전자의 수에 따라 임계값 전압이 변화하고, 이 임계값 전압의 차이에 따라 2 비트 이상의 데이터를 저장할 수 있는 다치 메모리이다. 제1 실시형태에서는, 메모리 셀 트랜지스터 MT가 이 다치 메모리인 것으로 가정한다.
각 NAND 스트링 NS의 메모리 셀 트랜지스터 MT0 내지 MTn의 제어 게이트 전극에는 각각 워드선 WL0 내지 WLn이 접속되어 있다. 각 NAND 스트링 NS의 메모리 셀 트랜지스터 MTi(i=0 내지 n)는 동일한 워드선 WLi(i=0 내지 n)에 의해 공통 접속되어 있다. 즉, 블록 BLK 내에서 동일 행에 있는 메모리 셀 트랜지스터 MTi의 제어 게이트 전극은 동일한 워드선 WLi에 접속된다. 동일한 워드선 WLi에 접속되는 (m+1)개의 메모리 셀 트랜지스터 MTi의 그룹은 1개의 페이지를 구성하는 단위이다. NAND 메모리(12)에서는, 이 페이지 단위로 데이터의 기입과 판독이 행하여진다.
1개의 블록 BLK 내의 (m+1)개의 선택 트랜지스터 ST1의 드레인에는 각각 비트선 BL0 내지 BLm이 접속된다. 각 NAND 스트링 NS의 선택 트랜지스터 ST1의 게이트에는 선택 게이트선 SGD가 공통 접속된다. 선택 트랜지스터 ST1의 소스는 메모리 셀 트랜지스터 MT0의 드레인과 접속되어 있다. 마찬가지로, 1개의 블록 BLK 내의 (m+1)개의 선택 트랜지스터 ST2의 소스에는 소스선 SL이 공통 접속된다. 각 NAND 스트링 NS의 선택 트랜지스터 ST2의 게이트에는 선택 게이트선 SGS가 공통 접속된다. 선택 트랜지스터 ST2의 드레인은 메모리 셀 트랜지스터 MTn의 소스와 접속되어 있다.
또한, 도시되어 있지 않으나, 1개의 블록 BLK 내의 비트선 BLj(j=0 내지 m)는 다른 블록 BLK의 비트선 BLj와의 사이에서 선택 트랜지스터 ST1의 드레인을 공통으로 접속하고 있다. 즉, 블록들 BLK 내에서 동일 열에 있는 NAND 스트링 NS는 동일한 비트선 BLj에 의해 접속된다.
다음으로, DRAM(11)과 NAND 메모리(12)의 기능 구성에 대해서 설명한다. 도 3A는 DRAM(11)의 기능 구성의 모식도이고, 도 3B는 NAND 메모리(12)의 기능 구성의 모식도이다. 도 3A에 도시된 바와 같이, DRAM(11)은, 호스트 장치로부터 기입 요구가 있었던 데이터가 저장되는 라이트 캐시 영역(write cache area)과, 호스트 장치로부터 판독 요구가 있었던 데이터가 저장되는 리드 캐시 영역(read cache area)과, DRAM(11) 및 NAND 메모리(12)에 저장되는 데이터의 저장 위치를 관리하기 위한 관리 정보가 저장되는 일시 저장 영역(111)과, 관리 정보를 복원할 때에 사용되는 작업 영역(112)을 포함한다.
도 3B에 도시된 바와 같이, NAND 메모리(12)는 호스트 장치로부터 기입 요구가 있었던 데이터가 저장되는 데이터 저장 영역(125)과, DRAM(11)의 일시 저장 영역(111)에서 관리되는 관리 정보가 저장되는 관리 정보 저장 영역(126)을 포함한다. 이 예에서는, NAND 메모리(12)에서의 데이터의 기입 및 판독 단위를 페이지 사이즈 단위로 설정한다. 소거 단위는 블록 사이즈 단위로 설정한다. 그 때문에, 블록 사이즈 단위로 관리되는 NAND 메모리(12)의 각 블록을 저장하기 위한 영역을 페이지 사이즈 단위의 영역으로 더 분할한다.
이하에서, DRAM(11)의 일시 저장 영역(111)에서 관리되는 관리 정보에 대해서 설명한다. 도 4는 메모리 시스템(10)에서 저장되는 데이터를 관리하는 층 구조의 일례를 나타내는 도면이다. 여기에서, 이 데이터는 호스트 장치로부터 기입 요구 또는 판독 요구가 있었던 데이터인 것으로 가정한다. 이 메모리 시스템(10)에서, 데이터 관리는, DRAM 관리층(31), 논리 NAND 관리층(32) 및 물리 NAND 관리층(33)의 3층 구조에 의해 행해진다. DRAM 관리층(31)은 캐시의 역할을 하는 DRAM(11)에서의 데이터 관리를 행한다. 논리 NAND 관리층(32)은 NAND 메모리(12)에서의 논리적인 데이터 관리를 행한다. 물리 NAND 관리층(33)은 NAND 메모리(12)에서의 물리적인 데이터 관리, NAND 메모리(12)의 수명 연장 처리 등을 행한다.
DRAM(11)의 라이트 캐시 영역 WC와 리드 캐시 영역 RC에서는, 호스트 장치의 어드레스 관리 방법에 의해 관리되는 논리 어드레스(이하, "LBA(Logical Block Address)"라고 함)에 의해 지정된 데이터가 DRAM(11) 상의 소정의 범위의 물리 어드레스(이하, "DRAM내 물리 어드레스"라고 함)에 저장된다. DRAM 관리층(31) 내에 서의 데이터는, 저장될 데이터의 LBA와 DRAM내 물리 어드레스 사이의 대응 관계와, 페이지 중의 섹터 사이즈 단위의 데이터의 유무를 나타내는 섹터 플래그를 포함하는 캐시 관리 정보(41)에 의해 관리된다.
도 5는 캐시 관리 정보(41)의 일례를 테이블 방식으로 도시한다. 캐시 관리 정보(41)는 DRAM(11)의 한 페이지 사이즈의 영역 1개에 대하여 1 엔트리로 한다. 엔트리 수는 라이트 캐시 영역 WC와 리드 캐시 영역 RC에 들어가는 페이지 수 이하이다. 각 엔트리에는 페이지 사이즈의 데이터의 LBA와, DRAM내 물리 어드레스와, 이 페이지를 섹터 사이즈로 분할하여 얻은 각 영역에서의 유효 데이터의 위치를 나타내는 섹터 플래그가 관련지어져 있다.
NAND 메모리(12)에서는, DRAM(11)으로부터의 데이터가 NAND 메모리(12) 상의 소정의 범위의 물리 어드레스(이하, "NAND내 물리 어드레스"라고 함)에 저장된다. 다치 메모리로 형성된 NAND 메모리(12)에서는, 재기입가능 횟수에 제약이 있기 때문에, NAND 메모리(12)를 구성하는 각 블록 사이에서의 재기입가능 횟수가 균등화되도록 드라이브 제어부(14)에 의해 제어되고 있다. 즉, 드라이브 제어부(14)는, NAND 메모리(12) 내의 어느 NAND내 물리 어드레스에 기입된 데이터를 갱신할 때, 업데이트할 데이터가 포함되는 블록 중 갱신이 필요한 부분을 반영시킨 데이터를 원래의 블록과는 상이한 블록에 기입하고, 원래의 블록은 무효화하도록 하여, NAND 메모리(12)를 구성하는 블록들 사이에서의 재기입 횟수가 균등화되도록 제어하고 있다.
상술한 바와 같이, NAND 메모리(12)에서는, 데이터의 기입 및 판독 처리에서 와, 소거 처리에서는 처리 단위가 상이하다. 데이터의 갱신 처리에서는, 갱신 전의 데이터의 위치(블록)와 갱신 후의 데이터의 위치(블록)가 상이하다. 따라서, 제1 실시형태에서는, NAND내 물리 어드레스 이외에 NAND 메모리(12) 내에서 독자적으로 사용되는 NAND내 논리 어드레스(이하, "NAND내 논리 어드레스"라고 함)가 제공된다.
따라서, 논리 NAND 관리층(32) 내에서의 데이터는, DRAM(11)으로부터 수신된 페이지 사이즈 단위의 데이터의 LBA와, 수신된 데이터가 저장되는 NAND 메모리(12)의 논리적인 페이지 위치를 나타내는 NAND내 논리 어드레스 사이의 관계와, NAND 메모리(12)에서의 소거 단위로서의 블록과 사이즈가 일치하는 논리적인 블록의 어드레스 범위를 나타내는 관계를 나타내는 논리 NAND 관리 정보(42)에 의해 관리된다. 복수의 논리 블록의 집합을 하나의 논리 블록으로서 설정할 수 있다. 물리 NAND 관리층(33)에서의 데이터는, NAND 메모리(12)에서의 NAND내 논리 어드레스와 NAND내 물리 어드레스 간의 대응 관계를 포함하는 NAND내 논리 어드레스 물리 어드레스 변환 정보(이하, "논물 변환 정보(logical-physical conversion address)"라고 함)(43)에 의해 관리된다.
도 6은 논리 NAND 관리 정보의 일례를 테이블 방식으로 도시한다. 도 7은 NAND내 논물 변환 정보(43)의 일례를 테이블 방식으로 도시한다. 도 6에 도시된 바와 같이, 논리 NAND 관리 정보(42)는 논리 페이지 관리 정보(42a)와 논리 블록 관리 정보(42b)를 포함한다. 논리 페이지 관리 정보(42a)는 한 페이지 사이즈의 논리적인 영역 1개에 대하여 1개의 엔트리로 갖는다. 각 엔트리는 한 페이지 사이 즈의 데이터의 LBA와, NAND내 논리 어드레스와, 이 페이지가 유효한지의 여부를 나타내는 페이지 플래그를 포함한다. 논리 블록 관리 정보(42b)는, NAND 메모리(12)의 1 블록 사이즈의 영역에 대하여 설정되는 NAND내 물리 어드레스를 포함한다. 도 7에 도시된 바와 같이, NAND내 논물 변환 정보(43)에서는, NAND 메모리(12)의 NAND내 물리 어드레스와 NAND내 논리 어드레스가 관련지어져 있다.
이러한 종류의 관리 정보를 사용함으로써, 호스트 장치에서 사용되는 LBA와, NAND 메모리(12)에서 사용되는 NAND내 논리 어드레스와, NAND 메모리(12)에서 사용되는 NAND내 물리 어드레스의 대응관계를 확립할 수 있다. 이것은, 호스트 장치와 메모리 시스템(10) 사이에서의 데이터 교환을 가능하게 한다.
DRAM 관리층(31)에 의해 관리되는 관리 정보는 전원 오프 등에 의해 소실되므로, 이 관리 정보를 휘발성 테이블이 호출할 수 있다. 반면, 논리 NAND 관리층(32) 및 물리 NAND 관리층(33)에 의해 관리되는 관리 정보가 전원 오프 등에 의해 소실된 경우, 이 소실된 관리 정보는 메모리 시스템(10)의 성공적인 기동에 지장을 주어, 전원 오프 등이 발생했을 때조차 관리 정보를 저장하여 두는 수단이 필요하다. 따라서, 이 관리 정보는 비휘발성 테이블이라고도 불린다.
이 비휘발성 테이블은 NAND 메모리(12)에 저장되어 있는 데이터를 관리한다. 이 비휘발성 테이블이 존재하지 않으면, NAND 메모리(12)에 저장되어 있는 정보에 액세스할 수 없거나, 또는 영역 내에 저장된 데이터가 소거된다. 따라서, 이 비휘발성 테이블은 갑작스런 전원 오프 등에 대비하여 최신 정보로 저장될 필요가 있다. 따라서, 제1 실시형태에서는, NAND 메모리(12)의 관리 정보 저장 영역(126)에 는 적어도 비휘발성 테이블을 포함하는 관리 정보가 최신 상태로 저장되어 있다. 이하에, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장되는 관리 정보 저장 정보에 대해서 설명한다. 이하 설명에서는 비휘발성 테이블만이 관리 정보 저장 영역(126)에 저장되는 것으로 가정한다.
도 8은 관리 정보 저장 영역에 저장되는 관리 정보 저장 정보의 내용의 일례의 모식도이다. 이 관리 정보 저장 영역(126)에는, 어느 시점에서의 비휘발성 테이블의 내용인 스냅샷(210)과, 다음으로 스냅샷을 취하기 전까지의 비휘발성 테이블의 내용의 갱신 차분 정보이며 갱신 전에 취득된 갱신전 로그(이하, "전 로그"라고 함)(220A)와, 이 갱신전 로그(220A)와 동일한 내용의 로그 정보이며 갱신 후에 저장된 갱신후 로그(이하, "후 로그"라고 함)(220B)와, 스냅샷(210)의 위치(블록), 이 스냅샷(210)에 대하여 취득된 갱신전 로그(220A)의 위치(블록), 및 이 스냅샷(210)에 대하여 취득된 갱신후 로그(220B)의 위치(블록)를 나타내는 세컨드 포인터(230)와, 세컨드 포인터(230)가 저장되는 위치(블록)를 나타내는 루트 포인터(240)를 포함하는 관리 정보 저장 정보가 저장된다. 스냅샷(210)은, DRAM(11)의 일시 저장 영역(111)에 저장되는 관리 정보들 중 적어도 비휘발성 테이블을 포함하는 관리 정보를 소정의 시점에서 저장함으로써 취득된 정보이다.
스냅샷(210), 갱신전 로그(220A), 갱신후 로그(220B), 세컨드 포인터(230), 및 루트 포인터(240)는 각각 상이한 블록에 저장된다. 이들 블록의 크기는 소거 단위인 물리 블록과 동일한 크기이다. 스냅샷(210)은 스냅샷 저장용 블록에 저장된다. 스냅샷(210)은, NAND 메모리(12)의 관리 정보 저장 영역(126) 내의 비휘발 성 테이블인 논리 NAND 관리 정보(42)와 NAND내 논물 변환 정보(43)를 포함한다. 새로운 스냅샷(210)이 저장되면, 이 스냅샷(210)은 이전에 저장되어 있던 스냅샷(210)과는 다른 블록에 저장된다.
갱신전 로그(220A) 및 갱신후 로그(220B)는, 데이터 기입 처리 등에 수반하여, 비휘발성 테이블의 내용에 변경이 있었을 경우 내용이 갱신된 후의 비휘발성 테이블과 스냅샷(210)(또는 스냅샷(210) 및 이미 생성된 로그) 간의 차분 정보이다. 구체적으로는, 스냅샷(210)이 취해진 후의 최초의 갱신전 로그(220A) 및 최초의 갱신후 로그(220B)는 비휘발성 테이블과 스냅샷(210) 간의 차분 정보이다. 스냅샷(210)이 취해진 후의 두 번째 이후의 갱신전 로그(220A)는 이미 생성된 갱신전 로그(220A)와 스냅샷(210)을 합한 것과, 비휘발성 테이블 간의 차분 정보이다. 스냅샷(210)이 취해진 후의 두 번째 이후의 갱신후 로그(220B)는 이미 생성된 갱신후 로그(220B)와 스냅샷(210)을 합한 것과, 비휘발성 테이블 간의 차분 정보이다.
갱신전 로그(220A)는 관리 정보가 실제로 갱신되기 전에 생성되는 정보이다. 따라서, 데이터의 기입 처리 등이 행하여짐으로써 관리 정보가 실제로 갱신되기 전에, 관리 정보가 어떻게 갱신될지에 관한 갱신 계획에 기초하여 갱신전 로그(220A)가 생성된다.
갱신후 로그(220B)는 관리 정보가 실제로 갱신된 후에 생성되는 정보이다. 따라서, 데이터의 기입 처리 등이 행하여짐으로써 관리 정보가 실제로 갱신된 후에, 실제의 관리 정보를 이용하여 갱신후 로그(220B)가 생성된다.
갱신전 로그(220A) 및 갱신후 로그(220B)는 각각 로그 저장용 블록에 저장된 다. 갱신전 로그(220A) 및 갱신후 로그(220B)는 스냅샷의 세대가 바뀌어도, 1회 기입 방식으로 동일한 로그 저장용 블록에 기입된다.
도 9는 로그의 일례를 나타내는 도면이다. 갱신전 로그(220A)와 갱신후 로그(220B)는 동일한 정보를 갖고 있기 때문에, 갱신전 로그(220A)를 로그의 일례로 하여 설명한다. 갱신전 로그(220A)는 변경 대상의 관리 정보로 되는 대상 정보와, 그 대상 정보 중의 변경 대상으로 되는 엔트리인 대상 엔트리와, 그 대상 엔트리 중의 변경 대상으로 되는 항목인 대상 항목과, 그 대상 항목의 변경의 내용인 변경 내용을 포함한다. 갱신전 로그(220A) 및 갱신후 로그(220B)는 스냅샷(210)에 대한 갱신 차분 정보이기 때문에, 갱신전 로그(220A) 및 갱신후 로그(220B)는 새로운 스냅샷(210)의 저장으로 쇄신된다.
세컨드 포인터(230)는 세컨드 포인터 저장용 블록에 저장된다. 세컨드 포인터(230)는 스냅샷(210), 갱신전 로그(220A), 갱신후 로그(220B)의 저장 위치를 나타내는 블록의 선두 어드레스를 나타내는 것이면 된다. 세컨드 포인터(230)는 스냅샷(210)이 새롭게 저장된 경우나, 또는 스냅샷 저장용 블록 또는 로그 저장용 블록이 변경된 경우에 갱신된다. 갱신전 로그(220A)와 갱신후 로그(220B)의 포인터는, 세컨드 포인터 저장용 블록에 저장하는 대신 스냅샷(210)에 저장될 수 있다.
세컨드 포인터(230)는, 스냅샷 저장용 블록에 액세스하기 위한 스냅샷 액세스 정보와, 갱신전 로그(220A) 및 갱신후 로그(220B)의 각 로그 저장용 블록에 액세스하기 위한 로그 액세스 정보와, 다음 세컨드 포인터가 저장되는 페이지 위치를 나타내는 넥스트 포인터를 포함한다. 세컨드 포인터(230)는 이 넥스트 포인터에 의해 링크드 리스트 방식의 정보로 변경된다. 루트 포인터(240)에 의해 지시된 세컨드 포인터 저장용 블록의 선두 페이지로부터 넥스트 포인터를 따라감으로써, 최신의 세컨드 포인터(230)에 도달하는 것이 가능해진다. 링크드 리스트 방식 대신, 세컨드 포인터 저장용 블록의 선두 페이지로부터 세컨드 포인터(230)를 차례로 1회 기입 방식으로 저장할 수 있다.
루트 포인터(240)는 제1 루트 포인터 저장용 블록에 저장된다. 루트 포인터(240)는 세컨드 포인터(230)가 저장되어 있는 세컨드 포인터 저장용 블록에 액세스하기 위한 정보이며, 메모리 시스템(10)의 기동 시에, 관리 정보를 복원하기 위한 처리 시에 최초로 판독되는 정보이다. 이 루트 포인터(240)는 세컨드 포인터 저장용 블록이 변경되는 경우에 변경된다. 루트 포인터(240)는 루트 포인터 저장용 블록에, 예를 들어 블록의 선두 페이지로부터 차례로 1회 기입 방식으로 저장된다. 이러한 경우에는, 루트 포인터 저장용 블록 내의 미기입 페이지의 하나 앞의 페이지가 최신 정보를 갖게 된다. 따라서, 미기입 페이지의 최상위 페이지를 검색함으로써, 최신의 루트 포인터(240)를 검색하는 것이 가능하다. 세컨드 포인터(230)의 경우와 같이, 링크드 리스트를 이용하는 것 또한 가능하다.
루트 포인터(240)는 NAND 메모리(12) 내의 고정 영역(1261)에 저장된다. 스냅샷(210), 갱신전 로그(220A), 갱신후 로그(220B) 및 세컨드 포인터(230)는 NAND 메모리(12) 내의 가변 영역(1262)에 저장된다. 고정 영역(1261)은, NAND 메모리 내에 있어서, 논리 NAND 관리층(32)에 의해 관리되는 논리 블록과, 물리 NAND 관리층(33)에 의해 관리되는 물리 블록 간의 관계가 고정되어 있는 보호 영역이며, 재 기입이나 기입이 거의 발생하지 않는 갱신 빈도가 낮으며 메모리 시스템(10)을 가동시키는데 필요한 정보가 저장되는 영역이다.
가변 영역(1262)은, 고정 영역(1261)을 제외한 NAND 메모리(12)의 영역에 있어서, 논리 NAND 관리층(32)에 의해 관리되는 논리 블록과, 물리 NAND 관리층(33)에 의해 관리되는 물리 블록 간의 관계가 가변인 영역이며, 웨어 레벨링(wear leveling)의 대상으로 되는 영역이다.
이하에, 드라이브 제어부(14)의 기능에 대해서 설명한다. 도 10은 드라이브 제어부(14)의 기능 구성의 일례를 나타내는 블록도이다. 드라이브 제어부(14)는, 데이터 관리부(141), ATA 코맨드 처리부(142), 시큐리티 관리부(143), 부트 로더(144), 초기화 관리부(145) 및 디버그 서포트부(146)를 포함한다. 데이터 관리부(141)는 DRAM(11)과 NAND 메모리(12) 사이의 데이터 전송 및 NAND 메모리(12)에 관한 각종 기능의 제어를 행한다. ATA 코맨드 처리부(142)는 ATA 인터페이스로부터 받은 지시에 기초하여 데이터 관리부(141)와 협동하여 데이터 전송 처리를 행한다. 시큐리티 관리부(143)는 데이터 관리부(141) 및 ATA 코맨드 처리부(142)와 협동하여 각종 시큐리티 정보를 관리한다. 부트 로더(144)는 전원 온 시에, 각종 관리 프로그램(펌웨어)을 NAND 메모리(12)로부터 도시하지 않은 메모리(예를 들어, SRAM(스태틱 RAM))에 로딩한다. 초기화 관리부(145)는 드라이브 제어부(14) 내의 컨트롤러나 회로의 초기화를 행한다. 디버그 서포트부(146)는 외부로부터 RS232C 인터페이스를 통하여 공급된 디버그 데이터를 처리한다.
도 11은 데이터 관리부(141)의 기능 구성의 일례의 블록도이다. 데이터 관 리부(141)는 데이터 전송 처리부(151), 관리 정보 관리부(152) 및 관리 정보 복원부(155)를 포함한다. 데이터 전송 처리부(151)는 DRAM(11)과 NAND 메모리(12) 사이에서 데이터 전송을 행한다. 관리 정보 관리부(152)는 DRAM(11) 및 NAND 메모리(12)에 저장되는 데이터의 변경에 따라 관리 정보의 변경 및 저장을 행한다. 관리 정보 복원부(155)는 전원 온 등 동안에 저장된 관리 정보에 기초하여 최신의 관리 정보를 복원한다.
관리 정보 관리부(152)는 관리 정보 기입부(153)와, 관리 정보 저장부(154)를 포함한다. 관리 정보 기입부(153)는, 데이터 전송 처리부(151)에 의한 DRAM(11) 또는 NAND 메모리(12)에서 저장되는 데이터의 변경 처리에 따라 관리 정보의 갱신이 필요할 경우에, DRAM(11)에 저장되어 있는 관리 정보의 갱신을 행한다.
관리 정보 저장부(154)는, 메모리 시스템(10)이 소정의 조건을 만족했을 때, 관리 정보를 스냅샷(210)으로서, 관리 정보 중 갱신될 정보를 갱신전 로그(220A)로서, 및 관리 정보 중 갱신된 정보를 갱신후 로그(220B)로서, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장한다. 관리 정보 저장부(154)는, 스냅샷(210), 갱신전 로그(220A) 또는 갱신후 로그(220B)의 저장에 따라 세컨드 포인터(230)의 기입 위치가 변경될 경우에는, 이 세컨드 포인터(230)에 갱신 처리를 적용한다.
스냅샷(210)의 저장은, 메모리 시스템(10)에 관한 소정의 조건이 만족될 때 관리 정보 저장부(154)에 의해 행해진다. 스냅샷(210)의 저장은, 예를 들면, NAND 메모리(12)의 관리 정보 저장 영역(126) 중의 로그(220)(갱신전 로그(220A)와 갱신 후 로그(220B))를 저장하기 위해 제공된 로그 저장 영역이 꽉 차버리게 된(즉, 영역이 데이터로 가득차게 된) 경우에 행해진다.
로그(220)(갱신전 로그(220A)와 갱신후 로그(220B))의 저장은, DRAM(11)에 저장되어 있는 관리 정보(비휘발성 테이블)의 갱신을 수반하는 NAND 메모리(12) 상의 데이터 갱신 시(NAND 메모리(12)에서의 데이터 기입이 필요할 경우)에 관리 정보 관리부(152)에 의해 행하여진다.
관리 정보 복원부(155)는, 메모리 시스템(10)에 전원이 턴 온되면, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장되어 있는 관리 정보 저장 정보에 기초하여 관리 정보의 복원 처리를 행한다. 구체적으로는, 관리 정보 복원부(155)는, 고정 영역(1261) 중의 루트 포인터(240), 가변 영역(1262) 중의 세컨드 포인터(230), 스냅샷(210), 갱신전 로그(220A), 갱신후 로그(220B)를 차례로 따라가, 최신 스냅샷(210)에 대응하는 갱신전 로그(220A) 및 갱신후 로그(220B)가 존재하는지의 여부를 판정한다. 갱신전 로그(220A)나 갱신후 로그(220B)가 존재하지 않을 경우에는, 관리 정보 복원부(155)는, 스냅샷 저장용 블록의 스냅샷(210)을 관리 정보로서 DRAM(11)에 복원한다. 갱신전 로그(220A) 및 갱신후 로그(220B)가 존재할 경우에는, 이것은 프로그램 에러나 쇼트 브레이크(전원의 이상 차단) 등의 이상 종료가 발생했음을 의미하며, 관리 정보 복원부(155)는, 스냅샷 저장용 블록으로부터 스냅샷(210)을 취득하고, 로그 저장용 블록으로부터 갱신전 로그(220A) 및 갱신후 로그(220B)를 취득하여, DRAM(11) 상에서 스냅샷(210)에 갱신전 로그(220A) 및 갱신후 로그(220B)를 반영시켜 관리 정보(비휘발성 테이블)의 복원을 행한다.
이하에서, 관리 정보 관리부(152)에 의한 메모리 시스템(10)의 관리 정보의 저장 처리에 대해서 설명한다. 도 12는 메모리 시스템(10)의 관리 정보의 저장 처리 절차의 일례의 플로차트이다. 도 13은 갱신전 로그와 갱신후 로그의 저장 처리를 설명하기 위한 도면이다. 메모리 시스템(10)이 호스트 장치와 접속되어, 호스트 장치의 보조 기억 장치로서 동작하고 있고, 호스트 장치(메모리 시스템(10))가 기동 상태에 있고, 이 기동 상태 전의 메모리 시스템(10)의 정지 전에 스냅샷(210)이 저장되어 있는 것으로 가정한다.
우선, 호스트 장치(메모리 시스템(10))는, 호스트 장치(메모리 시스템(10))의 전회 종료 시에 저장된 스냅샷(210)에 기초하여, 기동된 상태에 있다(스텝 S11). 그 후, 필요에 따라 호스트 장치로부터 NAND 메모리(12)에 데이터의 판독 또는 기입이 행하여진다. 관리 정보 관리부(152)는 소정의 스냅샷 저장 조건을 만족하는지의 여부를 판정한다(스텝 S12). 스냅샷 저장 조건을 만족하지 않을 경우(스텝 S12에서 "아니오"의 경우), 관리 정보 관리부(152)는 관리 정보의 갱신을 수반하는 지시(NAND 메모리로의 데이터 기입 지시)를 받았는지의 여부를 판정한다(스텝 S13). 관리 정보의 갱신을 수반하는 지시를 받지 않았을 경우(스텝 S13에서 "아니오" 경우)에는, 관리 정보 관리부(152)는 스텝 S12로 되돌아간다.
관리 정보의 갱신을 수반하는 지시를 받았을 경우(스텝 S13에서 "예"의 경우)에는, 관리 정보 관리부(152)는 그 지시를 실행함으로써 관리 정보가 어떻게 갱신될지를 나타내는 갱신 계획을 결정한다(스텝 S14). 관리 정보 관리부(152)는 그 갱신 계획을 NAND 메모리(12)의 관리 정보 저장 영역(126)의 로그 저장용 블록에 갱신전 로그(220A)로서 저장한다(스텝 S15).
로그 저장용 블록에 갱신전 로그(220A)가 저장되어 있지 않을 경우에는, 이 갱신 계획(갱신전 로그)은, 관리 정보가 갱신된 때의 비휘발성 테이블과 스냅샷 저장용 블록에 저장되어 있는 스냅샷(210) 사이의 차분 정보이다. 로그 저장용 블록에 로그(220)(이하, 과거 갱신전 로그(220A)라고 함)가 이미 저장되어 있을 경우에는, 이 갱신 계획(로그)은, 관리 정보가 갱신된 때의 비휘발성 테이블과, 스냅샷(210)과 과거 갱신전 로그(220A)를 합한 것 사이의 차분 정보이다. 구체적으로는, 도 13에 도시된 바와 같이, X 번째 데이터의 기입 처리로서 데이터 기입(X)을 행하기 전에, 이 데이터 기입(X)에 대응하는 갱신전 로그(X)가 NAND 메모리(12) 내에 갱신전 로그(220A)로서 저장된다. 이 때, 갱신전 로그(220A)로서 예를 들어 정보 y1이 저장된다. 갱신전 로그(220A)는, 예를 들어 갱신전 로그(220A)(갱신 계획)를 DRAM(11) 상에 기록한 후, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된다.
이어서, 논리 NAND 관리층(32)은, 스텝 S13에서 받은 지시(예를 들어 사용자 데이터의 NAND 메모리(12)의 데이터 저장 영역(125)으로의 기입(X) 처리)를 실행한다(스텝 S16).
그 후, 실행된 처리에 따라, DRAM(11)에 저장되어 있는 관리 정보가 갱신된다. 관리 정보 저장부(154)는, 관리 정보 중의 갱신된 정보를 갱신후 로그(220B)로서 NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장한다. 갱신후 로그(220B)가 로그 저장용 블록에 저장되어 있지 않을 경우, 갱신후 로그(220B)는 현 시점의 비휘발성 테이블과 스냅샷 저장용 블록에 저장되어 있는 스냅샷(210) 사이의 차분 정보이다. 로그 저장용 블록에 갱신후 로그(220B)(이하, 과거의 갱신후 로그(220B)라고 함)가 이미 저장되어 있을 경우에는, 갱신후 로그(220B)는 현시점의 비휘발성 테이블과, 스냅샷(210)과 과거 로그를 합한 것 사이의 차분 정보이다.
데이터 기입(X)에 대응하는 갱신후 로그(220B)(X)가 NAND 메모리(12) 내에 갱신후 로그(220B)로서 저장된다. 이 때, 갱신후 로그(220B)로서 예를 들어 정보 y1이 저장된다. 갱신후 로그(220B)로서 저장되는 정보 y1은 갱신전 로그(220A)로서 저장되는 정보 y1과 동일한 정보이다(단계 S17). 그 후, 관리 정보 관리부(152)는 스텝 S12로 되돌아간다.
스냅샷 저장 조건을 만족하지 않을 경우(스텝 S12에서 "아니오"의 경우) 그리고 관리 정보의 갱신을 수반하는 지시를 받았을 경우(스텝 S13에서 "예"의 경우)에는, 스텝 S14 내지 S17의 처리가 행하여진다. 즉, X 번째 데이터의 기입 처리와 마찬가지로 (X+1) 번째 데이터의 기입 처리가 행하여진다. (X+1) 번째 데이터의 기입 처리로서 데이터 기입(X+1)을 행하기 전에, 이 데이터 기입(X+1)에 대응하는 갱신전 로그(X+1)가 NAND 메모리(12) 내에 갱신전 로그(220A)로서 저장된다. 이 때, 갱신전 로그(220A)로서 예를 들어 정보 y2가 저장된다. NAND 메모리(12) 내의 데이터 저장 영역(125)에 데이터 기입(X+1)이 행하여진다. 데이터 기입(X+1)에 대응하는 갱신후 로그(X+1)가 NAND 메모리(12) 내에 갱신후 로그(220B)로서 저장된다. 이 때, 갱신후 로그(220B)로서 예를 들어 정보 y2가 저장된다. 갱신후 로그(220B)로서 저장되는 정보 y2는 갱신전 로그(220A)로서 저장되는 정보 y2와 동일 한 정보이다.
스텝 S12에서 스냅샷 저장 조건을 만족할 경우(스텝 S12에서 "예"의 경우)에는, 관리 정보 관리부(152)는, DRAM(11)의 일시 저장 영역(111) 내의 적어도 비휘발성 테이블을 포함하는 관리 정보를 스냅샷(210)으로서 NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장한다(스텝 S18). 관리 정보 관리부(152)는, 메모리 시스템(10)의 종료가 지시되었는지의 여부를 판정한다(스텝 S19). 메모리 시스템(10)의 종료가 지시되지 않은 경우, 관리 정보 관리부(152)는 스텝 S12로 되돌아간다. 메모리 시스템(10)의 종료가 지시된 경우, 처리가 종료된다.
이하에, 관리 정보 복원부(155)에 의한 메모리 시스템(10)의 관리 정보의 복원 처리에 대해서 설명한다. 도 14는 메모리 시스템(10)의 관리 정보의 복원 처리 절차의 일례의 플로차트이다. 도 15A 내지 도 15D는 메모리 셀의 데이터와 메모리 셀의 임계값 전압 간의 관계와, NAND 메모리에서의 기입 순서에 관한 일례의 도면이다. 상술한 바와 같이, 메모리 시스템(10)이 호스트 장치와 접속되어, 호스트 장치의 보조 기억 장치로서 동작한다.
우선, 쇼트 브레이크로부터의 회복 등으로 인해 호스트 장치의 전원이 턴 온되어, 메모리 시스템(10)에 기동 지시가 내려진다(스텝 S31). 관리 정보 복원부(155)는 NAND 메모리(12)의 관리 정보 저장 영역(126) 중의 루트 포인터(240) 및 세컨드 포인터(230)를 차례로 판독하여(스텝 S32), 스냅샷(210)과 갱신전후 로그(갱신전 로그(220A) 및 갱신후 로그(220B))가 저장되어 있는 블록들의 어드레스를 취득하고(스텝 S33), 스냅샷(210)을 취득한다(스텝 S34).
그 후, 관리 정보 복원부(155)는 NAND 메모리(12) 중의 갱신전 로그(220A) 및 갱신후 로그(220B)를 참조하여, 쇼트 브레이크가 발생했는지의 여부를 판정한다(스텝 S35). 예를 들어, 갱신전 로그(220A) 및 갱신후 로그(220B)가 NAND 메모리(12) 중에 존재할 경우, 관리 정보 복원부(155)는 쇼트 브레이크가 발생한 것으로 판단한다. 쇼트 브레이크가 발생했는지의 여부의 판단은, 예를 들어, 갱신전 로그(220A)와 갱신후 로그(220B)를 비교함으로써 행해질 수도 있다. 제1 실시형태에서는, 갱신전 로그(220A)와 갱신후 로그(220B)가 동일한 정보를 저장하고 있다. 이 때문에, 예를 들어 갱신전 로그(220A)로서 저장되어 있는 페이지의 수와 갱신후 로그(220B)로서 저장되어 있는 페이지의 수가 서로 일치하지 않을 경우에는, 쇼트 브레이크가 발생했음을 의미한다. 또한, 쇼트 브레이크의 발생은, ECC 에러의 유무, 갱신전 로그(220A)로서 저장되어 있는 페이지의 데이터, 갱신후 로그(220B)로서 저장되어 있는 페이지의 데이터에 기초하여 판단될 수 있다.
쇼트 브레이크가 발생한 경우(스텝 S35에서 "예"의 경우), 관리 정보 복원부(155)는, NAND 메모리(12) 내의 최신의 갱신전 로그(220A)와 최신의 갱신후 로그(220B)에 기초하여, 쇼트 브레이크가 발생한 타이밍을 확인한다(스텝 S36).
또한, 관리 정보 복원부(155)는, 쇼트 브레이크가 발생한 타이밍이 갱신후 로그(220B)의 저장 동안이었는지의 여부를 판단한다(스텝 S37). 예를 들어, 갱신후 로그(220B) 내의 최후 페이지가 기입되고 있었던 경우, 이 최후 페이지를 판독할 수는 없다. 그러므로, 갱신후 로그(220B)의 저장 중에 쇼트 브레이크가 발생한 것으로 판단된다. 갱신전 로그(220A) 내의 최후 페이지가 기입되고 있었던 경우, 이 최후 페이지를 판독할 수는 없다. 그러므로, 갱신전 로그(220A)의 저장 중에 쇼트 브레이크가 발생한 것으로 판단된다. 갱신전 로그(220A) 내의 최후 페이지에는 로그가 기입되어 있고 갱신후 로그(220B) 내의 최후 페이지에는 로그가 기입되어 있지 않을 경우에는, 데이터의 기입 도중에 쇼트 브레이크가 발생한 것으로 판단된다.
쇼트 브레이크가 발생한 타이밍이 갱신후 로그(220B)의 저장 중이었다고 판단한 경우(스텝 S37에서 "예"의 경우)에, 관리 정보 복원부(155)는 최신의 갱신전 로그(220A)를 선택한다(스텝 S38). 한편, 관리 정보 복원부(155)는, 쇼트 브레이크가 발생한 타이밍이 갱신후 로그(220B)의 저장 중이 아니었다고 판단한 경우(스텝 S37에서 "아니오"의 경우)에, 관리 정보 복원부(155)는 저장이 완료되어 있는 최신의 갱신후 로그(220B)를 선택한다(스텝 S39). 환언하면, 갱신전 로그(220A) 내의 최후 페이지가 기입 도중이었을 경우 또는 갱신전 로그(220A) 내의 최후 페이지에는 로그가 기입되어 있고 또한 갱신후 로그(220B) 내의 최후 페이지에는 로그가 기입되어 있지 않을 경우에, 최신의 갱신후 로그(220B)가 선택된다.
그 후, 관리 정보 복원부(155)는, 선택한 로그(갱신전 로그(220A) 또는 갱신후 로그(220B))를 로그 저장용 블록으로부터 취득하고, DRAM(11)의 작업 영역(112)에 로그를 전개한다(스텝 S40). 관리 정보 복원부(155)는, 스냅샷(210)에 대하여 오래된 로그로부터 차례로 로그를 반영시켜 관리 정보(비휘발성 테이블)를 복원하여(스텝 S41), 관리 정보의 복원 처리가 종료된다.
한편, 쇼트 브레이크가 발생하지 않은 경우(스텝 S35에서 "아니오"의 경우) 에는, 관리 정보 복원부(155)는 DRAM(11)의 일시 저장 영역(111)에 관리 정보를 복원하고, 관리 정보 복원 처리가 종료된다.
도 15A 내지 도 15D는 메모리 셀의 데이터와 메모리 셀의 임계값 전압 간의 관계와, NAND 메모리에서의 기입 순서에 관한 일례의 도면이다. 우선, 소거 동작을 행하면 메모리 셀의 데이터는 "0"으로 설정된다. 다음으로, 도 15A에 도시된 바와 같이, 하위 페이지에서의 기입을 행하면, 메모리 셀의 데이터는 데이터 "0"과 데이터 "2"로 변경된다. 도 15B에 도시된 바와 같이, 상위 페이지에의 기입 전에, 실제 데이터의 임계값 전압 이하의 데이터가 인접 셀에 기입된다. 그리하면, 이 셀에 기입된 데이터에 의해, 데이터 "2"의 임계값 전압의 분포가 커진다. 그 후, 상위 페이지의 데이터가 기입되면, 메모리 셀의 데이터는, 도 15C에 도시된 바와 같이, 원래의 임계값 전압을 갖는 데이터 "0" 내지 "3"으로 변경된다. 제1 실시형태에서는, 메모리 셀의 데이터는 임계값 전압이 낮은 쪽으로부터 높은 쪽으로 정의되어 있다.
NAND 메모리(12)로의 기입 처리에 대해서 설명한다. 도 15D에 도시된 바와 같이, 블록 내에 있어서, 소스선에 가까운 메모리 셀로부터 페이지마다 기입 동작이 행하여진다. 도 15D에서는, 설명의 편의상, 4개의 워드선이 도시되어 있다.
첫 번째 기입(①로 표시됨) 시, 메모리 셀(1)의 하위 페이지에 1 비트의 데이터가 기입된다. 두 번째 기입(②로 표시됨) 시, 메모리 셀(1)과 워드선 방향으로 인접한 메모리 셀(2)의 하위 페이지에 1 비트의 데이터가 기입된다. 세 번째 기입(③으로 표시됨) 시, 메모리 셀(1)과 비트 방향으로 인접한 메모리 셀(3)의 하 위 페이지에 1 비트의 데이터가 기입된다. 네 번째 기입(④로 표시됨) 시, 메모리 셀(1)과 대각으로 인접한 메모리 셀(4)의 하위 페이지에 1 비트의 데이터가 기입된다.
다섯 번째 기입(⑤로 표시됨) 시, 메모리 셀(1)의 상위 페이지에 1 비트의 데이터가 기입된다. 여섯 번째 기입(⑥으로 표시됨) 시, 메모리 셀(1)과 워드선 방향으로 인접한 메모리 셀(2)의 상위 페이지에 1 비트의 데이터가 기입된다. 일곱 번째 기입(⑦로 표시됨) 시, 메모리 셀(3)과 비트 방향으로 인접한 메모리 셀(5)의 하위 페이지에 1 비트의 데이터가 기입된다. 여덟 번째 기입(⑧로 표시됨) 시, 메모리 셀(3)과 대각으로 인접한 메모리 셀(6)의 하위 페이지에 1 비트의 데이터가 기입된다.
아홉 번째 기입(⑨로 표시됨) 시, 메모리 셀(3)의 상위 페이지에 1 비트의 데이터가 기입된다. 열 번째 기입(⑩으로 표시됨) 시, 메모리 셀(3)과 워드선 방향으로 인접한 메모리 셀(4)의 상위 페이지에 1 비트의 데이터가 기입된다. 열한 번째 기입(⑪로 표시됨) 시, 메모리 셀(5)과 비트 방향으로 인접한 메모리 셀(7)의 하위 페이지에 1 비트의 데이터가 기입된다. 열두 번째 기입(⑫로 표시됨) 시, 메모리 셀(5)과 대각으로 인접한 메모리 셀(8)의 하위 페이지에 1 비트의 데이터가 기입된다.
열세 번째 기입(⑬로 표시됨) 시, 메모리 셀(5)의 상위 페이지에 1 비트의 데이터가 기입된다. 열네 번째 기입(⑭로 표시됨) 시, 메모리 셀(5)과 워드 방향으로 인접한 메모리 셀(6)의 상위 페이지에 1 비트의 데이터가 기입된다. 열다섯 번째 기입(⑮로 표시됨) 시, 메모리 셀(7)의 상위 페이지에 1 비트의 데이터가 기입된다. 열여섯 번째 기입(
Figure 112009053049330-pct00001
으로 표시됨) 시, 메모리 셀(7)과 워드 방향으로 인접한 메모리 셀(8)의 상위 페이지에 1 비트의 데이터가 기입된다.
다음으로, 관리 정보의 복원에 사용하는 로그의 선택 방법의 구체적인 예에 대해서 설명한다. 도 16A 내지 도 16C는 관리 정보의 복원에 사용되는 로그의 선택 방법을 설명하기 위한 도면이다. 도 16A 내지 도 16C에서는, 갱신전 로그 및 갱신후 로그가 각각, 갱신전 로그의 로그 저장용 블록(각 도면의 좌측 블록; 이하, 갱신전 로그용 블록이라고 함)과 갱신후 로그의 로그 저장용 블록(각 도면의 우측 블록; 이하, 갱신후 로그용 블록이라고 함)에 페이지마다 저장된 상태를 나타내고 있다. 도 16A 내지 도 16C에서의 1개의 물리 블록 내의 페이지는 도 15A 내지 도 15D에 대응한다. 즉, 페이지 1 내지 4, 7 및 8, 11 및 12는 도 15A 내지 도 15D에 도시된 하위 페이지이다. 페이지 5 및 6, 9 및 10, 13 내지 16은 도 15A 내지 도 15D에 도시된 상위 페이지이다. 갱신전 로그용 블록 및 갱신후 로그용 블록에서는, 블록 내의 각 행이 페이지 1에 대응한다. 도 16A 내지 도 16C에서는, 설명의 편의를 위해 페이지를 하위 페이지와 상위 페이지로 분리하였다. 이들 하위 페이지와 상위 페이지를 합한 것이 1개의 물리 블록을 형성한다.
도 16A 내지 도 16C에서는, 정상적으로 저장된 로그를 로그 x1로 나타내고, 쇼트 브레이크에 기인하여 파괴된 로그를 로그 y1로 나타내며, 현재 기입되고 있는 로그를 로그 z1로 나타낸다. 로그 z1의 기입 중에 쇼트 브레이크가 발생하여 로그 y1이 파괴되어 있으므로, 로그 z1의 페이지에 대응하는 메모리 셀과 로그 y1의 페 이지에 대응하는 메모리 셀은 동일하다. 로그 y1의 페이지가 하위 측의 페이지(하위 페이지)이고, 로그 z1의 페이지가 상위 측의 페이지(상위 페이지)이다. 각 블록의 로그들(페이지들) 중, 원으로 둘러싸인 로그가 관리 정보의 복원에 사용하는 로그로서 선택되는 로그이다.
도 16A는 평상 시(전원의 이상 차단이 발생하지 않고 전원이 턴 오프된 경우)의 갱신전 로그와 갱신후 로그의 도면이다. 도 16B 및 도 16C는 쇼트 브레이크가 발생한 경우의 갱신전 로그와 갱신후 로그의 도면이다.
도 16A에서는, 스냅샷(210)을 저장하지 않고 메모리 시스템(10)의 전원을 턴 오프로 한 경우에, NAND 메모리(12)에 저장되어 있는 갱신전 로그 및 갱신후 로그를 나타내고 있다. 도 16A의 경우, 하위 페이지(페이지 1 내지 4)에만 데이터를 기입하고 있으므로, 하위 페이지의 기입 중에 쇼트 브레이크가 발생한다 하더라도, 하위 페이지 데이터 파괴는 발생하지 않는다. 도 16A에 나타낸 바와 같이, 제1 실시형태에서는, 갱신전 로그와 갱신후 로그를 각각 상이한 블록의 동일 페이지에 저장한다. 그러므로, 평상 시에 전원이 턴 오프로 되면, 갱신전 로그의 최후 페이지와 갱신후 로그의 최후 페이지는 동일한 페이지 위치에 있게 된다. 따라서, 이 경우, 갱신전 로그를 이용하여 관리 정보가 복원된다. 도 16A에 나타낸 임계값 시의 경우는, 갱신전 로그 대신에 갱신후 로그를 이용하여 관리 정보를 복원시킬 수 있다.
도 16B는, 갱신전 로그로서 2개의 페이지에 걸쳐 "로그 기입 (1)"을 행한 후, 갱신후 로그로서 2개의 페이지에 걸친 "로그 기입 (1)"을 행하고 있는 동안에, 페이지 1째의 기입 중에 쇼트 브레이크가 발생한 경우를 나타내고 있다. 도 16B에 나타낸 바와 같이, 갱신후 로그의 상위 페이지(페이지 5)로의 기입 중에 쇼트 브레이크가 발생하면, 기입 중인 상위 페이지에 대응하는 하위 페이지(갱신후 로그의 페이지 2)에서 하위 페이지 데이터 파괴가 발생한다. 즉, 도 16B의 경우, 갱신후 로그의 저장 중에 쇼트 브레이크가 발생하고 있으므로, 갱신후 로그 측의 블록에 로그 y1(예를 들어 페이지 2)이 발생한다. 이 경우, 갱신후 로그 측의 블록에는 "로그 기입 (1)"에 대응하는 로그 z1이 저장된다. 또한, 갱신전 로그 측의 블록에는 "로그 기입 (1)"에 대응하는 갱신전 로그가 2개의 페이지에 걸쳐 이미 저장되어 있다. 이 때문에, 로그가 파괴되지 않은 갱신전 로그를 이용하여 관리 정보가 복원된다.
도 16C에서는, 갱신전 로그로서 "로그 기입 (1)"을 행한 후, 갱신전 로그에 대응하는 데이터 기입 시에 에러가 발생하고, 데이터 기입의 재기입 처리에 대응하는 갱신전 로그로서 "로그 기입 (2)"가 행하여지고 있다. 또한, 도 16C에서는, 데이터 기입의 재기입에 대응하는 갱신후 로그로서 "로그 기입 (2)"를 행하고 있는 동안에 쇼트 브레이크가 발생하고 있다. 도 16C에 나타낸 바와 같이, 갱신후 로그의 상위 페이지(페이지 5)로의 기입 중에 쇼트 브레이크가 발생하면, 기입되고 있는 상위 페이지에 대응하는 하위 페이지(후 로그의 페이지 2)에서 하위 페이지 데이터 파괴가 발생한다. 즉, 도 16C의 경우, 갱신후 로그의 저장 중에 쇼트 브레이크가 발생하고 있으므로, 갱신후 로그 측의 블록에 로그 y1이 발생한다. 이 경우에 있어서, 갱신전 로그 측의 블록에는 "로그 기입 (1)"에 대응하는 로그 x1과, " 로그 기입 (2)"에 대응하는 로그 x1이 저장된다. 한편, 갱신후 로그 측의 블록에는 "로그 기입 (2)"에 대응하는 로그 z1이 저장된다. 따라서, 로그가 파괴되어 있지 않은 갱신전 로그를 이용하여 관리 정보가 복원된다.
도 18은 평상 시에서의 전후 로그의 생성 방법을 설명하는 도면이다. 도 19는 데이터 기입 에러가 발생한 경우의 로그의 생성 방법의 일례를 설명하는 도면이다. 도 18은 도 16A의 경우에 대응하며, 갱신전 로그의 "로그 기입 (1)" 후에, 데이터 기입이 프로그램 에러 등 없이 완료되고, 이어서 갱신후 로그의 "로그 기입 (1)"이 행하여진 것을 나타내고 있다. 한편, 도 19는 도 16C의 경우에 대응한다. 갱신전 로그의 "로그 기입 (1)" 후, 데이터 기입을 행하고 있을 때에 프로그램 에러(데이터 기입 에러, 예를 들어 데이터 기입 영역의 소거 동작이 정상적으로 종료되지 않고 데이터 기입 영역이 배드 블록으로 변경된 경우)가 발생했다. 따라서, 데이터 재기입 처리에 대응하는 갱신전 로그로서 "로그 기입 (2)"를 행하고, 데이터 기입을 행하고 있다. 또한, 데이터 기입의 재기입 처리에 대응하는 갱신후 로그로서 "로그 기입 (2)"를 행하고 있다. 도 16C에서는 이 때에 쇼트 브레이크가 발생하고 있다. 쇼트 브레이크가 발생하지 않을 경우에는, 도 19에 나타낸 바와 같이, 갱신후 로그로서의 "로그 기입 (2)"에 이어서, 갱신전 로그의 "로그 기입 (1)"에 대응하는 갱신후 로그의 "로그 기입 (1)"을 행하여 처리가 종료된다.
다음으로, 관리 정보의 복원에 사용되는 로그의 선택 방법의 또 다른 구체적인 예에 대해 설명한다. 도 17A 내지 도 17C는 관리 정보의 복원에 사용되는 로그의 선택 방법을 설명하기 위한 도면이다. 도 17A 내지 도 17C에서는, 도 16A 내지 도 16C와 마찬가지로, 갱신전 로그 및 갱신후 로그가 각각 갱신전 로그의 로그 저장용 블록(각 도면의 좌측 블록, 이하, 갱신전 로그용 블록이라고 함)과 갱신후 로그의 로그 저장용 블록(각 도면의 우측 블록, 이하, 갱신후 로그용 블록이라고 함)에 페이지마다 저장된 상태를 나타내고 있다. 도 17A 내지 도 17C에서는, 갱신전 로그 및 갱신후 로그에 대하여 각각 2개의 블록이 예시되고 있다. 1개의 블록 내의 페이지는 도 15A 내지 도 15C에 대응하고 있는 것으로 한다. 블록 내의 각 행이 1개의 페이지에 대응하고 있다. 도 17A 내지 도 17C에서는, 간단히 도시하기 위해, 하위 페이지와 상위 페이지의 구별을 생략하고, 1 개의 블록의 페이지 수를 8로 설정한다. 하지만, 페이지 기입의 순서 등의 기입 처리의 상세에 대해서는 도 15A 내지 도 16C에서 도시된 것과 동일한 설정 하에 설명될 수 있다.
도 17A 내지 도 17C에서는, 도 16A 내지 도 16C와 마찬가지로, 정상적으로 저장된 로그를 로그 x1로 나타내고, 쇼트 브레이크에 기인하여 파괴된 로그를 로그 y1로 나타내며, 기입 중인 로그를 로그 z1로 나타낸다. 로그 z1의 기입 중에 쇼트 브레이크가 발생하여 로그 y1이 파괴되어 있으므로, 로그 z1의 페이지에 대응하는 메모리 셀과 로그 y1의 페이지에 대응하는 메모리 셀은 동일한 정보를 포함한다. 각 블록의 로그들(페이지들) 중, 원으로 둘러싸인 로그가 관리 정보의 복원에 사용되는 로그로서 선택되는 로그이다.
도 17A에서는, 갱신후 로그로서 2개의 블록(2개의 페이지)에 걸친 "로그 기입 (1)" 중 1 블록째로의 로그 기입을 행하고 있는 동안에, 쇼트 브레이크가 발생한 경우를 나타내고 있다. 이 경우에 있어서, 갱신후 로그 측의 블록에는 1 블록 째의 최후 페이지에 "로그 기입 (1)"에 대응하는 로그 z1이 저장된다. 갱신후 로그의 저장 중에 쇼트 브레이크가 발생하고 있으므로, 갱신후 로그 측의 블록에 로그 y1이 생성된다. 한편, 갱신전 로그 측의 블록에는 갱신전 로그로서 2개의 블록(2개의 페이지)에 걸친 "로그 기입 (1)"이 이미 행하여지고 있다. 이 때문에, 로그가 파괴되어 있지 않은 갱신전 로그를 이용하여 관리 정보가 복원되게 된다.
도 17B는, 갱신전 로그로서 2개의 블록(2개의 페이지)에 걸친 "로그 기입 (1)" 중 2 블록째로의 로그 기입을 행한 후, 이 로그에 대응하는 데이터 기입 시에 에러가 발생하고, 데이터 기입의 재기입 처리에 대응하는 갱신전 로그로서 "로그 기입 (2)"가 행하여지고 있다. 또한, 도 17B에서는, 데이터 기입의 재기입 처리에 대응하는 갱신후 로그로서 "로그 기입 (2)"를 행하고 있는 동안에 쇼트 브레이크가 발생한 경우를 나타내고 있다. 이 경우에 있어서, 갱신후 로그 측의 블록에는 1 블록째의 최후 페이지에 "로그 기입 (2)"에 대응하는 로그 z1이 저장된다. 갱신후 로그의 저장 중에 쇼트 브레이크가 발생하고 있으므로, 갱신후 로그 측의 블록에 로그 y1이 발생한다. 이 때문에, 로그가 파괴되어 있지 않은 갱신전 로그를 이용하여 관리 정보가 복원되게 된다.
도 17C는, 갱신전 로그로서 2개의 블록(2개의 페이지)에 걸친 "로그 기입 (1)" 중 2 블록째로의 로그 기입을 행한 후, 이 로그에 대응하는 데이터 기입 시에 에러가 발생하고, 데이터 기입의 재기입 처리에 대응하는 갱신전 로그로서 "로그 기입 (2)"가 행하여지고 있다. 또한, 도 17C에서는, 데이터 기입의 재기입 처리에 대응하는 갱신후 로그로서 "로그 기입 (2)"를 행하고, 갱신후 로그로서 2개의 페이 지에 걸친 "로그 기입 (1)" 중 1 페이지째로의 로그 기입을 행하고 있는 동안에 쇼트 브레이크가 발생한 경우를 나타내고 있다. 이 경우에 있어서, 갱신후 로그 측의 블록에는 2 블록째의 선두 페이지에 "로그 기입 (1)"에 대응하는 로그 z1이 저장된다. 갱신후 로그의 저장 중에 쇼트 브레이크가 발생하고 있지만, 2 블록째의 선두 페이지의 저장 중에 쇼트 브레이크가 발생하고 있으므로, 로그 y1이 생성하지 않는다. 로그가 파괴되어 있지 않은 갱신전 로그를 이용하여 관리 정보가 복원된다.
도 16A 내지 도 17C에서는 원으로 일괄한(bracketed) 갱신전 로그를 관리 정보의 복원에 사용하는 것으로 했다. 단, 도 16A 내지 도 17C에 있어서 가위표로 표시된 갱신전 로그도 이미 저장된 갱신전 로그이므로 복원에 사용할 수 있다. 따라서, 원으로 둘러싸인 갱신전 로그에 더하여 가위표로 표시된 갱신전 로그를 관리 정보의 복원에 사용할 수도 있다.
본 실시형태에서는, 도 19를 참조하여 설명한 바와 같이, 데이터의 기입 중에 프로그램 에러가 발생한 경우에는, 재기입 처리에 대응하는 갱신전후 로그를 생성하고, 또한 에러가 발생한 기입 처리에 대응하는 갱신전후 로그를 생성한다. 이에 의해, 로그의 정합성을 확보하면서 쇼트 브레이크 판정 처리 등을 행하고 있다. 이것은, 데이터 기입 중에 프로그램 에러가 발생한 경우에조차도 확실하게 관리 정보를 복원할 수 있게 한다.
도 19에서는, 프로그램 에러의 발생에 따라, 갱신전 로그 및 갱신후 로그를 이중으로(redundantly) 취득하고 있기 때문에, 쇼트 브레이크 판정 처리 등이 복잡 해진다. 따라서, 본 실시형태에서는, 프로그램 에러가 발생한 경우의 또 다른 처리 방법에 대해서 도 20을 참조하여 설명한다.
도 20은 데이터 기입 에러가 발생한 경우의 로그의 생성 방법의 또 다른 일례를 설명하는 도면이다. 도 20에 나타낸 바와 같이, 갱신전 로그의 "로그 기입 (1)" 후, 데이터 기입을 행하고 있을 때에 프로그램 에러가 발생한 경우에(데이터 기입 에러), 데이터 재기입 처리에 대응하는 갱신전 로그를 취득하지 않고, 다시 데이터 기입을 행한다. 그리고, 데이터 기입을 종료한 후에, 갱신후 로그를 생성하지 않고, 갱신후 로그 대신에 스냅샷을 취득하여 처리를 종료한다.
이와 같이, 갱신전 로그를 저장하고 데이터 기입을 실패했을 경우에, 재기입을 행한 후에, 갱신후 로그를 생성하지 않고 스냅샷을 저장하여 처리를 종료한다.
본 실시형태에 따르면, 갱신전 로그 저장 후 그리고 갱신후 로그의 저장 전에 프로그램 에러가 발생한 경우, 에러 대응 수단으로 인한 관리 정보의 갱신을 로그에 저장하지 않고 스냅샷을 저장한다. 따라서, 쇼트 브레이크 발생 시의 복원 처리를 간소화할 수 있고, 로그 관리를 단순화할 수 있다. 즉, 갱신전 로그로서 이미 기입된 갱신 예정에 포함되지 않은 처리가 발생한 경우에는,스냅샷을 다시 취하기 때문에, 복잡한 로그 관리를 행할 필요가 없고, 스냅샷을 이용하여 확실하게 관리 정보를 복원하는 것이 가능해진다.
전하 축적층은 부유 게이트형에 한정되지 않아, MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor) 구조와 같은 실리콘 질화막을 포함하는 전하 트랩형 및 그 밖의 방식이어도 된다.
상술한 바와 같이, 본 발명에 의하면, 데이터 기입 중에 프로그램 에러가 발생한 경우에도 확실하게 관리 정보를 복원할 수 있다는 효과를 발휘한다.
추가의 이점 및 변경은 당업자들에게 쉽게 일어날 수 있다. 따라서, 더 광범위한 양상에서의 본 발명은 특정 상세사항 및 본 명세서에서 설명되고 도시된 대표적인 실시형태에 한정되지 않는다. 따라서, 첨부되는 특허청구범위 및 그 동등물에 의해 정의되는 일반적인 발명의 개념의 취지 또는 범위를 벗어나지 않고 각종 변경이 행해질 수 있다.

Claims (11)

  1. 휘발성의 제1 저장부;
    다치 데이터를 저장할 수 있는 메모리 셀을 포함하는 비휘발성의 제2 저장부; 및
    상기 제1 저장부를 통하여 호스트 장치와 상기 제2 저장부 사이에서 데이터 전송을 행하고, 메모리 시스템의 기동 동작 동안 상기 제2 저장부에 저장된 데이터의 저장 위치를 포함하는 관리 정보를 상기 제1 저장부에 저장하고, 상기 저장된 관리 정보를 갱신하면서 상기 제1 및 제2 저장부에서 데이터 관리를 행하는 컨트롤러
    를 포함하며,
    상기 컨트롤러는,
    소정의 조건이 만족되었을 때에 상기 제1 저장부에 저장된 관리 정보를 스냅샷으로서 상기 제2 저장부에 저장하고, 상기 관리 정보의 갱신 차분 정보이며 상기 관리 정보에 변경이 발생하기 전에 저장되는 갱신전 로그(pre-log)와, 상기 관리 정보의 갱신 차분 정보이며 상기 관리 정보에 변경이 발생한 후에 저장되는 갱신후 로그(post-log)를 상기 제2 저장부에 저장하는 관리 정보 저장부; 및
    기동 동작 동안 상기 갱신전 로그 또는 상기 갱신후 로그가 상기 제2 저장부에 존재하는 경우에는 상기 스냅샷과 상기 갱신전 로그 또는 상기 갱신후 로그에 기초하여 상기 제1 저장부에서 관리 정보의 복원을 행하고, 기동 동작 동안 상기 갱신전 로그 및 상기 갱신후 로그가 상기 제2 저장부에 존재하지 않을 경우에는 상기 스냅샷에 기초하여 상기 제1 저장부에서 관리 정보의 복원을 행하는 관리 정보 복원부
    를 포함하며,
    상기 관리 정보 저장부는, 상기 갱신전 로그의 저장 후, 갱신 처리로서 상기 제2 저장부로의 데이터 기입이 행해지고 있는 도중에 프로그램 에러가 발생한 경우에는, 상기 데이터 기입을 다시 행한 후, 새로운 로그의 기입을 행하지 않고 상기 스냅샷을 저장하는 메모리 시스템.
  2. 제1항에 있어서, 상기 관리 정보 저장부는, 상기 갱신전 로그의 저장 후, 갱신 처리로서 상기 제2 저장부로의 데이터 기입이 이루어지고 있는 도중에 프로그램 에러가 발생한 경우에는, 새로운 갱신전 로그 및 새로운 갱신후 로그의 기입을 행하지 않고 상기 스냅샷을 저장하는 메모리 시스템.
  3. 제2항에 있어서, 상기 제2 저장부는,
    스냅샷을 저장하기 위한 스냅샷 저장 영역;
    갱신전 로그를 저장하기 위한 갱신전 로그 저장 영역;
    갱신후 로그를 저장하기 위한 갱신후 로그 저장 영역; 및
    상기 스냅샷 저장 영역, 상기 갱신전 로그 저장 영역 및 상기 갱신후 로그 저장 영역의 저장 위치를 나타내는 포인터를 저장하는 포인터 저장 영역
    을 포함하는 메모리 시스템.
  4. 제3항에 있어서, 상기 스냅샷 저장 영역, 상기 갱신전 로그 저장 영역, 상기 갱신후 로그 저장 영역 및 상기 포인터 저장 영역 각각은 데이터 소거 단위로서 블록을 포함하는 메모리 시스템.
  5. 제4항에 있어서, 상기 갱신전 로그 및 상기 갱신후 로그 각각은 페이지 단위로 1회 기입 방식으로 상기 갱신전 로그 저장 영역과 상기 갱신후 로그 저장 영역에 기입되고, 상기 페이지 단위는 블록 사이즈보다 작으며, 매번 상기 갱신전 로그와 상기 갱신후 로그는 차분 정보로서 취득되는 메모리 시스템.
  6. 제1항에 있어서,
    상기 제1 저장부는 DRAM이고,
    상기 제2 저장부는 NAND형 플래시 메모리인 메모리 시스템.
  7. 휘발성의 제1 저장부;
    다치 데이터를 저장할 수 있는 메모리 셀을 포함하는 비휘발성의 제2 저장부; 및
    상기 제1 저장부를 통하여 호스트 장치와 상기 제2 저장부 사이에서 데이터 전송을 행하고, 메모리 시스템의 기동 동작 동안 상기 제2 저장부에 저장된 데이터의 저장 위치를 포함하는 관리 정보를 상기 제1 저장부에 저장하고, 상기 저장한 관리 정보를 갱신하면서 상기 제1 및 제2 저장부에서의 데이터 관리를 행하는 컨트롤러
    를 포함하며,
    상기 컨트롤러는,
    소정의 조건이 만족되었을 때에 상기 제1 저장부에 저장된 관리 정보를 스냅샷으로서 상기 제2 저장부에 저장하고, 상기 관리 정보의 갱신 차분 정보이며 상기 관리 정보에 변경이 발생하기 전에 저장되는 갱신전 로그와, 상기 관리 정보의 갱신 차분 정보이며 상기 관리 정보에 변경이 발생한 후에 저장되는 갱신후 로그를 상기 제2 저장부에 저장하는 관리 정보 저장부; 및
    상기 갱신전 로그 또는 상기 갱신후 로그가 기동 동작 동안 상기 제2 저장부에 존재하는 경우에는 상기 스냅샷과 상기 갱신전 로그 또는 상기 갱신후 로그에 기초하여 상기 제1 저장부에서 관리 정보의 복원을 행하고, 상기 갱신전 로그 및 상기 갱신후 로그가 기동 동작 동안 상기 제2 저장부에 존재하지 않을 경우에는 상기 스냅샷에 기초하여 상기 제1 저장부에서 관리 정보의 복원을 행하는 관리 정보 복원부
    를 포함하며,
    상기 관리 정보 저장부는, 상기 갱신전 로그의 저장 후, 갱신 처리로서 상기 제2 저장부로의 데이터 기입이 행해지고 있는 도중에 프로그램 에러가 발생한 경우에는, 상기 데이터의 재기입 처리에 대응하는 갱신전 로그를 다시 저장하고, 상기 재기입 처리의 완료 후에는, 상기 재기입 처리에 대응하는 갱신후 로그를 저장한 후, 상기 프로그램 에러가 발생하기 전에 저장된 상기 갱신전 로그에 대응하는 갱신후 로그를 저장하는 메모리 시스템.
  8. 제7항에 있어서, 상기 제2 저장부는,
    스냅샷을 저장하기 위한 스냅샷 저장 영역;
    갱신전 로그를 저장하기 위한 갱신전 로그 저장 영역;
    갱신후 로그를 저장하기 위한 갱신후 로그 저장 영역; 및
    상기 스냅샷 저장 영역, 상기 갱신전 로그 저장 영역 및 상기 갱신후 로그 저장 영역의 저장 위치를 나타내는 포인터를 저장하는 포인터 저장 영역
    을 포함하는 메모리 시스템.
  9. 제8항에 있어서, 상기 스냅샷 저장 영역, 상기 갱신전 로그 저장 영역, 상기 갱신후 로그 저장 영역 및 상기 포인터 저장 영역 각각은 데이터 소거 단위로서 블록을 포함하는 메모리 시스템.
  10. 제9항에 있어서, 상기 갱신전 로그 및 상기 갱신후 로그 각각은 페이지 단위로 1회 기입 방식으로 상기 갱신전 로그 저장 영역과 상기 갱신후 로그 저장 영역에 기입되고, 상기 페이지 단위는 블록 사이즈보다 작으며, 매번 상기 갱신전 로그와 상기 갱신후 로그는 차분 정보로서 취득되는 메모리 시스템.
  11. 제7항에 있어서,
    상기 제1 저장부는 DRAM이고,
    상기 제2 저장부는 NAND형 플래시 메모리인 메모리 시스템.
KR1020097018033A 2008-03-01 2009-02-10 메모리 시스템 KR101102155B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JPJP-P-2008-051455 2008-03-01
JP2008051455A JP2009211215A (ja) 2008-03-01 2008-03-01 メモリシステム
PCT/JP2009/052600 WO2009110305A1 (en) 2008-03-01 2009-02-10 Memory system

Publications (2)

Publication Number Publication Date
KR20090117929A KR20090117929A (ko) 2009-11-16
KR101102155B1 true KR101102155B1 (ko) 2012-01-02

Family

ID=41055866

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097018033A KR101102155B1 (ko) 2008-03-01 2009-02-10 메모리 시스템

Country Status (7)

Country Link
US (1) US8108594B2 (ko)
EP (1) EP2260389A4 (ko)
JP (1) JP2009211215A (ko)
KR (1) KR101102155B1 (ko)
CN (1) CN101681317B (ko)
TW (1) TW200947214A (ko)
WO (1) WO2009110305A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
JP5317690B2 (ja) * 2008-12-27 2013-10-16 株式会社東芝 メモリシステム
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128645A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
US9251055B2 (en) 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
JP5813589B2 (ja) * 2012-07-13 2015-11-17 株式会社東芝 メモリシステムおよびその制御方法
GB2507287A (en) * 2012-10-24 2014-04-30 Ibm Associating restore points of a program with execution states and data stored in memory.
US9454474B2 (en) 2013-03-05 2016-09-27 Western Digital Technologies, Inc. Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
KR102565918B1 (ko) * 2016-02-24 2023-08-11 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작방법
CN106897338A (zh) 2016-07-04 2017-06-27 阿里巴巴集团控股有限公司 一种针对数据库的数据修改请求处理方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999032977A1 (fr) 1997-12-22 1999-07-01 Tdk Corporation Systeme de memoire flash

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09244933A (ja) * 1996-03-05 1997-09-19 Nippon Telegr & Teleph Corp <Ntt> データベースバックアップ方法及び装置
KR100390853B1 (ko) * 2000-06-07 2003-07-10 차상균 주 메모리 트랜잭션 처리 시스템에서 병렬적 회복 연산을 위한 디퍼런셜 로깅 방법 및 장치
JP3896077B2 (ja) * 2002-09-11 2007-03-22 株式会社東芝 計算機システムおよびファイル管理方法
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
JP4248510B2 (ja) * 2005-03-24 2009-04-02 株式会社東芝 計算機システム、ディスク装置およびデータ更新制御方法
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7275140B2 (en) * 2005-05-12 2007-09-25 Sandisk Il Ltd. Flash memory management method that is resistant to data corruption by power loss
JP2009205555A (ja) * 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
WO2009107507A1 (en) * 2008-02-29 2009-09-03 Kabushiki Kaisha Toshiba Memory system
EP2111583A4 (en) * 2008-02-29 2010-06-02 Toshiba Kk MEMORY SYSTEM
CN101681316A (zh) * 2008-03-01 2010-03-24 株式会社东芝 存储器系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999032977A1 (fr) 1997-12-22 1999-07-01 Tdk Corporation Systeme de memoire flash

Also Published As

Publication number Publication date
CN101681317B (zh) 2011-09-28
TW200947214A (en) 2009-11-16
KR20090117929A (ko) 2009-11-16
JP2009211215A (ja) 2009-09-17
US8108594B2 (en) 2012-01-31
EP2260389A1 (en) 2010-12-15
WO2009110305A1 (en) 2009-09-11
EP2260389A4 (en) 2012-11-21
US20100153626A1 (en) 2010-06-17
CN101681317A (zh) 2010-03-24

Similar Documents

Publication Publication Date Title
KR101102155B1 (ko) 메모리 시스템
US20210232326A1 (en) Memory system storing management information and method of controlling same
KR101099804B1 (ko) 메모리 시스템
KR101103110B1 (ko) 메모리 시스템
US8285954B2 (en) Memory system managing a plurality of logs
JP2010152514A (ja) メモリシステム
KR101103201B1 (ko) 메모리 시스템
JP4551938B2 (ja) メモリシステム
JP2009211202A (ja) メモリシステム
JP2009211188A (ja) メモリシステム
JP2009211213A (ja) メモリシステム
JP2009211218A (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
LAPS Lapse due to unpaid annual fee