KR101103110B1 - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR101103110B1
KR101103110B1 KR1020097017866A KR20097017866A KR101103110B1 KR 101103110 B1 KR101103110 B1 KR 101103110B1 KR 1020097017866 A KR1020097017866 A KR 1020097017866A KR 20097017866 A KR20097017866 A KR 20097017866A KR 101103110 B1 KR101103110 B1 KR 101103110B1
Authority
KR
South Korea
Prior art keywords
pointer
log
block
storage area
storage
Prior art date
Application number
KR1020097017866A
Other languages
English (en)
Other versions
KR20090117926A (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 JP2008051267A external-priority patent/JP2009211188A/ja
Priority claimed from JP2008051378A external-priority patent/JP2009211202A/ja
Application filed by 가부시끼가이샤 도시바 filed Critical 가부시끼가이샤 도시바
Publication of KR20090117926A publication Critical patent/KR20090117926A/ko
Application granted granted Critical
Publication of KR101103110B1 publication Critical patent/KR101103110B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/20Memory cell initialisation circuits, e.g. when powering up or down, memory clear, latent image 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/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • 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

Abstract

메모리 시스템은 휘발성의 제1 저장 유닛, 비휘발성의 제2 저장 유닛 및 제어기를 포함한다. 제어기는 데이터 전송을 실행하고, 제2 저장 유닛에 저장된 데이터의 저장 위치를 포함하는 관리 정보를 제1 저장 유닛 내로 저장하며, 관리 정보의 갱신 동안에 데이터 관리를 실행한다. 제2 저장 유닛은 최신 상태의 관리 정보 및 관리 정보의 저장 위치를 포함하는 관리 정보 저장 정보를 저장하는 관리 정보 저장 영역을 갖는다. 저장 위치 정보는 메모리 시스템의 시작 동작 동안에 제어기에 의해 판독되고, 관리 정보 저장 영역 내의 최신 상태의 관리 정보의 저장 위치를 나타내는 제2 포인터, 및 제2 포인터의 저장 위치를 나타내는 제1 포인터를 포함한다. 제1 포인터는 제2 저장 유닛 내의 고정 영역에 저장되고, 제2 포인터는 제2 저장 유닛 내에서 고정 영역을 제외한 영역에 저장된다.
Figure R1020097017866
관리 정보, 저장 위치 정보, 포인터, 고정 영역, 가변 영역, 스냅샷, 로그

Description

메모리 시스템{MEMORY SYSTEM}
본 발명은 비휘발성 반도체 저장 장치를 이용하는 메모리 시스템에 관한 것이다.
일부 개인용 컴퓨터(PC)는 하드 디스크 장치를 보조 저장 장치로서 이용한다. 이러한 PC에서는, 어떤 고장으로 인해 데이터가 무효로 되지 않게 하기 위해 하드 디스크 장치에 저장되어 있는 데이터를 백업하는 기술이 공지되어 있다. 예를 들어, 하드 디스크 장치 내의 데이터를 변경하는 동작이 검출될 때, 변경 이전의 데이터의 백업 복사본으로서 스냅샷(snapshot)이 저장되고, 그 데이터에 행해진 변경의 로그(log)가 생성된다. 그 다음, 새로운 스냅샷을 저장하는 처리, 새로운 스냅샷이 저장되기 전의 과거에 기록된 로그의 무효화, 및 새로운 로그의 생성은 미리 결정된 시간마다 반복된다(예를 들어, 미합중국 특허 출원 공개 제2006/0224636호 참조). 데이터가 어떤 이유로 인해 무효로 되는 경우에, 그 데이터는 스냅샷 및 로그를 참조함으로써 복원될 수 있다.
최근 몇 년 동안, 비휘발성 반도체 저장 장치로서의 NAND 플래시 메모리의 용량이 극적으로 증가되었다. 결과적으로, 보조 저장 장치로서 NAND 플래시 메모리를 갖는 메모리 시스템을 포함하는 개인용 컴퓨터가 실제로 사용되게 되었다. 그러나, 미합중국 특허 출원 공개 제2006/0224636호에 개시된 기술은 보조 저장 장치로서 하드 디스크 장치를 갖는 개인용 컴퓨터에 저장된 데이터의 백업의 경우에서처럼 보조 저장 장치로서 NAND 플래시 메모리를 갖는 이러한 개인용 컴퓨터에 저장된 데이터의 백업에 적용될 수 없다. 이것은 하나의 메모리 셀 내에 2 비트 이상의 다수의 데이터(다치(multi-value) 데이터)를 저장할 수 있는 다치 메모리 기술이 NAND 플래시 메모리의 용량을 증가시키기 위해 이용되기 때문이다.
다치 메모리를 구성하는 메모리 셀은 게이트 절연막, 부동 게이트 전극, 게이트간 절연막 및 제어 게이트 전극이 채널 영역 상에 순서대로 적층되고, 다수의 임계 전압이 부동 게이트 전극 내에 축적된 전자의 수에 따라 설정될 수 있는 적층 게이트 구조를 갖는 전계 효과 트랜지스터 구조를 갖는다. 다수의 임계 전압에 기초하여 다치 저장을 실행할 수 있게 하기 위해, 하나의 데이터에 대응하는 임계 전압의 분포는 극도로 좁아질 필요가 있다.
예를 들어, 4개의 값을 저장할 수 있는 다치 메모리로서, 하나의 메모리 셀 내에 낮은 순위 페이지 및 높은 순위 페이지를 포함하고, 각 페이지 내에 1 비트 데이터를 기입함으로써 2비트(4개의 값)를 저장하는 다치 메모리가 있다. 이러한 다치 메모리 내에 데이터를 기입하는 방법에서, 데이터가 제1 메모리 셀의 낮은 순위 페이지에 기입된 후, 데이터는 제1 메모리 셀에 인접한 메모리 셀(제2 메모리 셀)의 낮은 순위 페이지에 기입된다. 데이터가 이 인접한 메모리 셀에 기입된 후, 데이터는 제1 메모리 셀의 높은 순위 페이지에 기입된다(예를 들어, JP-A 2004-192789(공개) 참조).
그러나, 이러한 다치 메모리에서, 데이터가 먼저 기입된 제1 메모리 셀의 임계 전압은 데이터가 나중에 기입되고 제1 메모리 셀에 인접한 제2 메모리 셀의 임계 전압 때문에 변동한다. 그러므로, 다치 메모리에서, 데이터가 소정의 메모리 셀의 높은 순위 페이지에 기입되고 있는 동안, 예를 들어 전원 공급의 비정상적인 차단 때문에 기입이 중지되는 경우에, 데이터가 먼저 기입되는 낮은 순위 페이지 내의 데이터도 또한 손상되는 낮은 순위 페이지 손상이 발생할 가능성이 있다.
NAND 플래시 메모리를 포함하는 메모리 시스템에서, 데이터가 저장될 때, 예를 들어 블록이라고 하는 단위로 기입 영역을 일단 소거한 다음에, 페이지라고 하는 단위로 기입을 실행할 필요가 있다. 그러나, 이러한 데이터 기입 이전에 실행된 블록에 대한 소거 횟수가 증가함에 따라, 블록을 구성하는 메모리 셀의 성능저하가 심해진다는 문제가 있다. 그러므로, 보조 저장 장치로서 NAND 플래시 메모리를 갖는 개인용 컴퓨터에서, 블록에 대한 소거 횟수를 억제하기 위해 데이터 관리를 실행할 필요가 있다. 데이터가 위에서 설명된 바와 같이 스냅샷 및 로그에 기초하여 복원될 때, 또한 블록에 대한 소거 횟수를 억제하기 위해 데이터 관리를 실행할 필요가 있다. 특히, NAND 플래시 메모리 내의 데이터 저장 위치를 나타내는 관리 정보의 저장에 관하여, 신뢰성을 개선할 필요가 있다.
본 발명의 실시예에 따른 메모리 시스템은 휘발성의 제1 저장 유닛, 저장된 데이터의 저장 위치를 포함하는 관리 정보를 저장하는 비휘발성의 제2 저장 유닛, 및 비휘발성의 제2 저장 유닛으로부터 관리 정보를 휘발성의 제1 저장 유닛으로 판독 출력(read out)하여 관리 정보를 갱신하는 동안에 데이터 관리를 실행하는 제어기를 포함하고, 비휘발성의 제2 저장 유닛은 저장된 관리 정보의 저장 위치를 나타내는 저장 위치 정보를 저장하고, 저장 위치 정보는 관리 정보의 저장 위치를 나타내는 제2 포인터 및 제2 포인터의 저장 위치를 나타내는 제1 포인터를 포함하며, 제1 포인터는 비휘발성의 제2 저장 유닛 내의 저장 위치가 고정되는 고정 영역 내의 제1 포인터 저장 영역에 저장되고, 제2 포인터는 비휘발성의 제2 저장 유닛 내의 저장 위치가 가변 되는 가변 영역 내의 제2 포인터 저장 영역에 저장된다.
본 발명의 실시예에 따른 메모리 시스템은 휘발성의 제1 저장 유닛, 각각이 데이터 소거 유닛인 복수의 블록들을 포함하고, 저장된 데이터의 저장 위치를 포함하는 관리 정보를 저장하는 비휘발성의 제2 저장 유닛, 및 비휘발성의 제2 저장 유닛으로부터 관리 정보를 휘발성의 제1 저장 유닛으로 판독 출력하여 관리 정보를 갱신하는 동안 데이터 관리를 실행하는 제어기를 포함하고, 비휘발성의 제2 저장 유닛은 미리 결정된 조건이 충족될 때 획득되고, 휘발성의 제1 저장 유닛 내의 관리 정보인 스냅샷을 저장하는 스냅샷 저장 영역, 휘발성의 제1 저장 유닛 내에 저장된 관리 정보에서 변경이 발생할 때, 변경 전과 후의 차이 정보로서 로그들을 저장하는 로그 저장 영역, 및 스냅샷 저장 영역 및 로그 저장 영역의 저장 위치를 나타내는 포인터를 저장하는 포인터 저장 영역을 포함하고, 제어기는 저장될 로그들의 크기에 따라 로그 저장 영역에 대한 블록들을 순차적으로 획득하며, 획득된 제1 블록에, 제1 블록 다음으로 획득될 제2 블록의 위치를 나타내는 다음 블록 포인터를 기록한다.
도 1은 본 발명의 제1 실시예에 따른 메모리 시스템의 구성의 예를 도시한 블록도.
도 2는 NAND 메모리의 임의의 블록의 구성의 예를 도시한 회로도.
도 3A는 DRAM의 기능적 구성의 개략도이고, 도 3B는 NAND 메모리의 기능적 구성의 개략도.
도 4는 메모리 시스템에 저장된 데이터를 관리하는 층 구조의 예를 도시한 도면.
도 5는 캐시 관리 정보 테이블의 예를 도시한 도면.
도 6은 논리적 NAND 관리 정보 테이블의 예를 도시한 도면.
도 7은 NAND 내 논리적-물리적 변환 정보 테이블의 예를 도시한 도면.
도 8은 제1 실시예에 따른, 관리 정보 저장 영역에 저장된 관리 정보 저장 정보의 내용의 예를 도시한 개략도.
도 9는 로그의 예를 도시한 도면.
도 10은 제2 루트 포인터의 예를 도시한 도면.
도 11은 도 1에 도시된 구동 제어 유닛의 기능적 구성의 예를 도시한 블록도.
도 12는 도 11에 도시된 데이터 관리 유닛의 기능적 구성의 예를 도시한 블록도.
도 13은 메모리 시스템의 관리 정보를 위한 저장 처리 절차의 예를 도시한 순서도.
도 14는 메모리 시스템의 관리 정보를 위한 복원 처리 절차의 예를 도시한 순서도.
도 15는 본 발명의 제2 실시예에 따른, 로그를 저장하는 로그 저장 영역의 구조의 예를 도시한 도면.
도 16은 제3 실시예에 따른, 관리 정보 저장 영역에 저장된 관리 정보 저장 정보의 내용의 예를 도시한 개략도.
도 17은 사전 로그(pre-log) 및 사후 로그(post-log)를 위한 저장 처리를 설명하는 도면.
도 18은 제3 실시예에 따른, 메모리 시스템의 관리 정보를 위한 복원 처리 절차의 예를 도시한 순서도.
도 19는 본 발명의 제4 실시예에 따른, 사전 로그를 저장하는 사전 로그 저장 영역 및 사후 로그를 저장하는 사후 로그 저장 영역의 구조 예를 도시한 도면.
도 20은 본 발명의 제5 실시예에 따른, 제1 루트 포인터의 다중화의 예를 도 시한 도면.
도 21은 제5 실시예에 따른, 제2 루트 포인터의 다중화의 예를 도시한 도면.
본 발명에 따른 메모리 시스템의 예시적인 실시예는 첨부 도면을 참조하여 아래에 상세하게 설명된다. 본 발명은 이들 실시예에 의해 제한되지 않는다.
제1 실시예
본 발명의 제1 실시예에 따른 메모리 시스템은 비휘발성 반도체 저장 장치를 포함하고, 개인용 컴퓨터와 같은 호스트 장치의 보조 저장 장치(SSD: Solid State Drive)로서 사용된다. 메모리 시스템은 기입되도록 호스트 장치에 의해 요청된 데이터를 저장하고, 판독되도록 호스트 장치에 의해 요청된 데이터를 판독해서, 그 데이터를 호스트 장치에 출력하는 기능을 갖는다. 도 1은 제1 실시예에 따른 메모리 시스템(10)의 구성 예의 블록도이다. 이 메모리 시스템(10)은 제1 저장 유닛으로서의 DRAM(Dynamic Random Access Memory)(11), 제2 저장 유닛으로서의 NAND 플래시 메모리(이후, "NAND 메모리")(12), 전원 공급 회로(13), 및 제어기로서의 구동 제어 유닛(14)을 포함한다.
DRAM(11)은 데이터 전송, 관리 정보 기록 또는 작업 영역을 위한 저장 유닛으로서 사용된다. 구체적으로, DRAM(11)이 데이터 전송을 위한 저장 유닛으로서 사용될 때, DRAM(11)은 데이터가 NAND 메모리(12)에 기입되기 전에 기입되도록 호스트 장치에 의해 요청된 데이터를 임시로 저장하기 위해 사용되고, DRAM(11)은 NAND 메모리(12)로부터 판독되도록 호스트 장치에 의해 요청된 데이터를 판독하여, 판독된 데이터를 임시로 저장하기 위해 사용된다. DRAM(11)이 관리 정보 기록을 위한 저장 유닛으로서 사용될 때, DRAM(11)은 DRAM(11) 및 NAND 메모리(12)에 저장된 데이터의 저장 위치를 관리하는 관리 정보를 저장하기 위해 사용된다. DRAM(11)이 작업 영역을 위한 저장 유닛으로서 사용될 때, DRAM(11)은 예를 들어, 관리 정보가 복원될 때 사용된 로그의 확장 동안에 사용된다.
NAND 메모리(12)는 데이터를 그 안에 저장하기 위한 저장 유닛으로서 사용된다. 구체적으로, NAND 메모리(12)는 호스트 장치에 의해 지정된 데이터를 그 안에 저장하고, DRAM(11)에 의해 관리된 관리 정보를 백업을 위해 그 안에 저장한다. 도 1에서, 4개의 채널(120A 내지 120D)을 포함하는 NAND 메모리(12)가 예로서 도시되어 있다. 각각의 채널(120A 내지 120D)은 미리 결정된 크기(예를 들어, 2 GB)의 저장 용량을 갖는 8개의 칩(122)을 각각 포함하는 2개의 패키지(121)를 포함한다. 채널(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 메모리(12)의 임의의 블록의 구성의 예를 도시한 회로도이다. 도 2에서, 좌우 방향은 X 방향으로 설정되고, X 방향에 수직인 방향은 Y 방향으로 설정된다.
NAND 메모리(12)의 각 블록 BLK는 X 방향을 따라 순서대로 배열된 (m+1)개의 NAND 스트링(NAND string: NS)을 포함하는데, m은 0 이상의 정수이다. 각각의 NAND 스트링(NS)은 Y 방향으로 서로 인접한 메모리 셀 트랜지스터들(MT) 사이의 확산 영역(소스 영역 또는 드레인 영역)을 공유하는 (n+1)개의 메모리 셀 트랜지스터(MT0 내지 MTn)를 갖는데, n은 0 이상의 정수이다. 더구나, 메모리 셀 트랜지스터(MT0 내지 MTn)는 Y 방향으로 직렬로 접속된다. 게다가, 선택 트랜지스터(ST1 및 ST2)는 일렬의 (n+1)개의 메모리 트랜지스터(MT0 내지 MTn)의 양단에 배열된다.
각 메모리 셀 트랜지스터(MT0 내지 MTn)는 반도체 기판상에 형성된 적층 게이트 구조를 갖는 전계 효과 트랜지스터이다. 적층 게이트 구조는 게이트 절연막을 통해 반도체 기판상에 형성된 전하 축적 층(부동 게이트 전극), 및 게이트간 절연막을 통해 전하 축적 층 상에 형성된 제어 게이트 전극을 포함한다. 더구나, 메 모리 셀 트랜지스터(MT0 내지 MTn)는 임계 전압이 부동 게이트 전극에 축적된 전자의 수에 따라 변하고, 2 비트 이상의 데이터가 임계 전압의 차에 의존하여 저장될 수 있는 다치 메모리이다. 다음 설명에서는, 메모리 셀 트랜지스터(MT0 내지 MTn)가 4개의 값을 저장할 수 있는 다치 메모리인 것으로 가정된다. 그러나, 메모리 셀 트랜지스터(MT0 내지 MTn)는 4개의 값보다 더 많은 값을 저장할 수 있는 다치 메모리일 수 있다.
워드 라인(WL0 내지 WLn)은 각 NAND 스트링(NS)의 메모리 셀 트랜지스터(MT0 내지 MTn)의 제어 게이트 전극에 각각 접속된다. 각각의 NAND 스트링(NS) 내의 메모리 셀 트랜지스터(MTi(i=0 내지 n))는 동일한 워드 라인(i=0 내지 n)에 의해 공통으로 접속된다. 달리 말하면, 블록(BLK) 내의 동일한 행에 존재하는 메모리 셀 트랜지스터(MTi)의 제어 게이트 전극은 동일한 워드 라인(WLi)에 접속된다. 동일한 워드 라인(WLi)에 접속된 (m+1)개의 메모리 셀 트랜지스터(MTi)는 한 페이지로 취급된다. NAND 메모리(12)에서, 데이터의 기입 및 판독은 페이지 단위로 실행된다. 구체적으로, 동일한 워드 라인(WLi)에 접속된 (m+1)개의 메모리 셀 트랜지스터(MTi)의 그룹은 한 페이지를 형성하는 단위이다. 4개의 값을 저장할 수 있는 다치 메모리의 경우에, 동일한 워드 라인(WLi)에 접속된 메모리 셀 트랜지스터(MTi)의 그룹은 2개의 페이지를 형성한다. 데이터가 먼저 기입되는 페이지가 낮은 순위 페이지로서 설정되고, 데이터가 다음에 기입되는 페이지가 높은 순위 페이지로서 설정될 때, NAND 메모리(12)에서, 데이터의 기입 및 판독은 페이지 단위로 실행된다.
비트 라인(BL0 내지 BLm)은 한 블록(BLK) 내의 (m+1) 개의 선택 트랜지스터(ST1)의 드레인에 각각 접속된다. 선택 게이트 라인(SGD)은 각 NAND 스트링(NS)의 선택 트랜지스터(ST1)의 게이트에 공통으로 접속된다. 선택 트랜지스터(ST1)의 소스는 메모리 셀 트랜지스터(MT0)의 드레인에 접속된다. 이와 유사하게, 소스 라인(SL)은 한 블록(BLK) 내의 (m+1)개의 선택 트랜지스터(ST2)의 소스에 공통으로 접속된다. 선택 게이트 라인(SGS)은 각 NAND 스트링(NS)의 선택 트랜지스터(ST2)의 게이트에 공통으로 접속된다. 선택 트랜지스터(ST2)의 드레인은 메모리 셀 트랜지스터(MTn)의 소스에 접속된다.
도면에 도시되지는 않았지만, 한 블럭(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)은 기입되도록 호스트 장치에 의해 요청된 데이터가 저장되는 기입 캐시 영역, 판독되도록 호스트 장치에 의해 요청된 데이터가 저장되는 판독 캐시 영역(RC), DRAM(11) 및 NAND 메모리(12)에 저장된 데이터의 저장 위치를 관리하는 관리 정보가 저장되는 임시 저장 영역(111), 및 관리 정보가 복원될 때 사용된 작업 영역(112)을 포함한다.
도 3B에 도시된 바와 같이, NAND 메모리(12)는 기입되도록 호스트 장치에 의해 요청된 데이터가 저장되는 데이터 저장 영역(125), 및 DRAM(11)의 임시 저장 영역(111)에서 관리된 관리 정보가 저장되는 관리 정보 저장 영역(126)을 포함한다. 이 예에서, NAND 메모리(12) 내의 데이터 기입 및 판독 단위는 페이지 크기 단위로 설정된다. 소거 단위는 블록 크기 단위(예를 들어, 512 KB)로 설정된다. 그러므로, 블록 크기 단위로 관리된 NAND 메모리(12)의 각 블록을 저장하는 영역은 페이지 크기 단위의 영역으로 더욱 나누어진다.
DRAM(11)의 임시 저장 영역(111)에서 관리된 관리 정보는 아래에서 설명된다. 도 4는 메모리 시스템(10)에 저장된 데이터를 관리하는 층 구조의 예를 도시한 도면이다. 여기에서는 이 데이터가 기입 또는 판독되도록 호스트 장치에 의해 요청된 데이터인 것으로 가정된다. 메모리 시스템(10)에서, 데이터 관리는 3층 구조: DRAM 관리층(31), 논리적 NAND 관리층(32) 및 물리적 NAND 관리층(33)에 의해 실행된다. 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 내(intra-DRAM) 물리 주소")에 저장된다. DRAM 관리층(31) 내의 데이터는 저장될 데이터의 LBA와 DRAM 내 물리 주소 사이의 대응 관계, 및 페이지 내에서 섹터 크기 단위로 데이터의 존재 또는 부재를 나타내는 섹터 플래그를 포함하는 캐시 관리 정보(41)에 의해 관리된다.
도 5는 표 방식으로 된 캐시 관리 정보(41)의 예를 도시한 것이다. 캐시 관리 정보(41)는 DRAM(11)의 한 페이지 크기의 한 영역에 대한 하나의 엔트리이다. 엔트리의 수는 기입 캐시 영역(WC) 및 판독 캐시 영역(RC)에 적합한 페이지 수와 같거나 그보다 작다. 각각의 엔트리에, 페이지 크기의 데이터의 LBA, DRAM 내 물리 주소, 및 섹터 크기로 이 페이지를 나누어서 얻은 각 영역 내의 유효 데이터의 위치를 나타내는 섹터 플래그가 관련된다.
NAND 메모리(12)에서, DRAM(11)으로부터의 데이터는 NAND 메모리(12) 상의 미리 결정된 범위 내의 물리적 주소(이후, "NAND 내 물리 주소")에 저장된다. 다치 메모리에 의해 형성된 NAND 메모리(12)에서, 재기입 가능 횟수가 제한되기 때문에, NAND 메모리(12)를 구성하는 블록들 사이의 재기입 횟수는 동등해지도록 구동 제어 유닛(14)에 의해 제어된다. 달리 말하면, NAND 메모리(12) 내의 소정의 NAND 내 물리 주소에 기입된 데이터의 갱신이 실행될 때, 구동 제어 유닛(14)은 갱신될 데이터가 포함되는 블록의 갱신 요구 부분을 반영하는 데이터를 원래의 블록과 다른 블록에 기입하고 원래의 블록을 무효화하기 위해, NAND 메모리(12)를 구성하는 블록들 사이의 재기입 횟수를 동등하게 하도록 제어를 실행한다.
위에서 설명된 바와 같이, NAND 메모리(12)에서, 처리 단위는 데이터를 위한 기입 및 판독 처리와 데이터를 위한 소거 처리에서 서로 다르다. 데이터를 위한 갱신 처리에서, 갱신 전의 데이터의 위치(블록)와 갱신 후의 데이터의 위치(블록)는 서로 다르다. 그러므로, 제1 실시예에서, NAND 메모리(12)에서 독립적으로 사용된 NAND 내 논리 주소(이후, "NAND 내 논리 주소")가 NAND 내 물리 주소 외에 제공된다.
그러므로, 논리적 NAND 관리층(32) 내의 데이터는 수신된 데이터가 저장되는 NAND 메모리(12)의 논리적 페이지 위치를 나타내는 NAND 내 논리 주소와 DRAM(11)으로부터 수신된 페이지 크기 단위의 데이터의 LBA 사이의 관계, 및 NAND 메모리(12) 내의 소거 단위로서 물리 블록의 크기와 일치하는 크기를 갖는 논리 블록의 주소 범위를 나타내는 관계를 나타내는 논리적 NAND 관리 정보(42)에 의해 관리된다. 다수의 물리 블록의 집합은 논리 블록으로서 설정될 수 있다. 물리적 NAND 관리층(33) 내의 데이터는 NAND 메모리(12) 내의 물리 블록의 NAND 내 물리 주소와 논리 블록의 NAND 내 논리 주소 사이의 대응 관계를 포함하는 NAND 내 논리 주소-물리 주소 변환 정보(이후, "논리-물리 변환 정보")에 의해 관리된다.
도 6은 표 방식으로 된 논리적 NAND 관리 정보(42)의 예를 도시한 것이다. 도 7은 표 방식으로 된 NAND 내 논리-물리 변환 정보(43)의 예를 도시한 것이다. 도 6에 도시된 바와 같이, 논리적 NAND 관리 정보(42)는 논리적 페이지 관리 정보(42a) 및 논리적 블록 관리 정보(42b)를 포함한다. 논리적 페이지 관리 정보(42a)는 한 페이지 크기의 한 논리 영역에 대해 하나의 엔트리를 갖는다. 각각의 엔트리는 한 페이지 크기의 데이터의 LBA, NAND 내 논리 주소, 및 이 페이지가 유효한 지의 여부를 나타내는 페이지 플래그를 포함한다. 논리적 블록 관리 정 보(42b)는 NAND 메모리(12)의 한 블록 크기의 논리 영역에 대해 설정된 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)에 저장된 관리 정보 저장 정보의 내용의 예를 도시한 개략도이다. 관리 정보 저장 영역(126)에 저장된 관리 정보 저장 정보는 소정 시점에서의 비휘발성 테이블의 내용으로서의 스냅샷(210), 내용의 변경이 있을 때에 그 내용이 변경되는 비휘발성 테이블과 스냅샷(210)(또는 스냅샷(210) 및 이미 생성된 로그) 사이의 차이 정보로서의 로그(220), 스냅샷(210) 및 이 스냅샷(210)에 관해 처음으로 획득된 로그(220)의 위치(블록)를 나타내는 제2 루트 포인터(230), 및 제2 루트 포인터(230)가 저장되는 위치(블록)를 나타내는 제1 루트 포인터(240)를 포함한다. 스냅샷(210)은 DRAM(11)의 임시 저장 영역(111)에 저장된 관리 정보의 종류들 중 미리 결정된 시점에 최소한 비휘발성 테이블을 포함하는 관리 정보를 저장함으로써 얻은 정보이다.
스냅샷(210), 로그(220), 제2 루트 포인터(230) 및 제1 루트 포인터(240)는 각각 서로 다른 블록에 저장된다. 스냅샷(210), 로그(220), 제2 루트 포인터(230) 및 제1 루트 포인터(240)가 저장되는 블록의 크기는 소거 단위로서의 물리적 블록의 크기와 동일하다. 스냅샷(210)은 스냅샷 저장 블록에 저장된다. 스냅샷(210)은 NAND 메모리(12)의 관리 정보 저장 영역(126) 내의 비휘발성 테이블로서 논리적 NAND 관리 정보(42) 및 NAND 내 논리-물리 변환 정보(43)를 포함한다. 새로운 스냅샷(210)이 저장될 때, 새로운 스냅샷(210)은 이전에 저장된 스냅샷(210)의 블록과 다른 블록에 저장된다.
로그(220)는 전용 로그 저장 블록에 저장된다. 로그(220)는 스냅샷의 생성이 변경되더라도 동일한 로그 저장 블록에 계속 기입된다. 도 9는 로그(220)의 예를 도시한 것이다. 로그(220)는 변경 타깃의 관리 정보가 될 타깃 정보, 타깃 정보 내의 변경 타깃이 될 엔트리로서의 타깃 엔트리, 타깃 엔트리 내의 변경 타깃이 될 아이템으로서의 타깃 아이템, 및 타깃 아이템의 변경 내용으로서의 변경 내용을 포함한다.
제2 루트 포인터(230)는 전용의 제2 루트 포인터 저장 블록에 저장된다. 제2 루트 포인터(230)는 단지, 스냅샷(210) 및 로그(220)의 저장 위치를 나타내는 블록의 최상위 주소를 나타내는 포인터이어야 한다. 그러나, 제2 루트 포인터(230) 내의 스냅샷(210)의 저장 위치를 나타내는 부분은 스냅샷(210)에 포함된 각종 관리 정보(비휘발성 테이블)의 최상위 주소를 나타내는 부분일 수 있다. 제2 루트 포인터(230)는 스냅샷(210)이 새로 저장될 때 갱신된다. 로그(220)의 포인터는 제2 루트 포인터 저장 블록보다는 오히려 스냅샷(210)에 저장될 수 있다.
도 10은 제2 루트 포인터(230)의 예를 도시한 것이다. 한 블록의 크기가 512 KB라고 가정하면, 제2 루트 포인터(230)는 4 KB의 크기를 갖는 한 페이지에 저장된다. 제2 루트 포인터(230)는 스냅샷 액세스 정보, 로그 액세스 정보 및 다음 포인터를 포함한다. 스냅샷 액세스 정보는 스냅샷이 저장되는 블록을 액세스하는 정보이다. 로그 액세스 정보는 로그가 저장되는 블록을 액세스하는 정보이다. 로그 액세스 정보는 참조 스냅샷에 관련된 로그가 저장되는 블록을 지정하는 정보 및 블록 내의 최상위 페이지를 지정하는 정보를 포함한다. 다음 포인터는 다음의 제2 루트 포인터(230)가 저장되는 페이지를 나타내는 인덱스이다. 제2 루트 포인터(230)는 이 다음 포인터에 의해, 링크된 목록 시스템 내의 정보로 변경된다. 제1 루트 포인터(240)에 의해 지정된 제2 루트 포인터 저장 블록의 최상위 페이지로부터 다음 포인터를 추적함으로써 최신의 제2 루트 포인터(230)에 도달하는 것이 가능하다. 링크된 목록 시스템에 대한 대안으로서, 제2 루트 포인터(230)는 제2 루트 포인터 저장 영역의 최상위 페이지부터 순서대로 한번 쓰기(write-once) 방식으로 저장될 수 있다.
제1 루트 포인터(240)는 전용의 제1 루트 포인터 저장 블록에 저장된다. 제1 루트 포인터(240)는 제2 루트 포인터(230)가 저장되는 제2 루트 포인터 저장 블록의 블록(위치)을 액세스하는 정보이고, 메모리 시스템(10)이 시작될 때 관리 정보를 복원하는 처리에서 맨 먼저 판독된 정보이다. 제1 루트 포인터(240)는 제2 루트 포인터가 저장되는 블록이 변경될 때 변경된다. 제1 루트 포인터(240)는 블록의 최상위 페이지부터 순서대로 한번 쓰기 방식으로 제1 루트 포인터 저장 블록에 저장된다. 이러한 경우에, 제1 루트 포인터 저장 블록 내의 기입되지 않은 페이지 바로 전의 페이지는 최신 정보를 갖는다. 그러므로, 기입되지 않은 페이지의 가장 높은 순위 페이지를 검색함으로써 최신의 제1 루트 포인터(240)를 검색하는 것이 가능하다. 제2 루트 포인터(230)에서와 동일한 방식으로, 또한 제1 루트 포인터(240)에 대한 링크된 목록을 사용하는 것이 가능하다.
제1 루트 포인터(240)는 NAND 메모리(12) 내의 고정 영역(1261)에 저장된다. 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)는 NAND 메모리(12) 내의 가변 영 역(1262)에 저장된다. 고정 영역(1261)은 논리적 NAND 관리층(32)에 의해 관리된 논리적 블록과 물리적 NAND 관리층(33)에 의해 관리된 물리적 블록 사이의 관계가 고정되는 NAND 메모리(12) 내의 영역이고, 재기입 및 기입이 거의 일어나지 않는 낮은 갱신 빈도를 갖는 메모리 시스템(10)을 실행하는데 필요한 정보가 저장되는 영역이다. 고정 영역(1261)은 예를 들어, 현재 기입되는 모든 블록이 가득 채워질 때, 관리 정보 저장 영역(126)(NAND 메모리(12)) 내의 다른 블록에 정보(제1 루트 포인터(240))를 기입하기 보다는 오히려 블록 내의 정보를 소거한 후에 동일한 블록의 최상위 페이지부터 정보를 기입하도록 설정된 영역이다. 이 예에서, NAND 메모리(12)는 다치 메모리에 의해 구성된다. 그러나, 제1 루트 포인터(240)의 신뢰성을 개선하기 위해서 순서대로 이진 노드로 NAND 메모리(12)를 사용하는 것이 바람직하다.
가변 영역(1262)은 고정 영역(1261)을 제외한 NAND 메모리(12)의 영역 내에서, 논리적 NAND 메모리 층(32)에 의해 관리된 논리 블록과 물리적 NAND 메모리 층(33)에 의해 관리된 물리 블록 사이의 관계가 변경되는 영역이다. 가변 영역(1262)은 예를 들어, 현재 기입되는 모든 블록이 가득 채워질 때, 관리 정보 저장 영역(126) 내의 가변 영역(1262) 내의 기입 가능한 빈 블록인 다른 블록에 다음 정보를 기입하도록 설정된 영역이다. 가변 영역(1262)은 위에서 설명된 바와 같이 NAND 메모리(12) 내에서 고정 영역(1261)을 제외한 영역이다. 가변 영역(1262)은 관리 정보 저장 영역(126) 내에서 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)가 저장되는 영역 외에, 데이터 저장 영역(125)을 포함한다. 달리 말하면, 고정 영역(1261)을 제외한 NAND 메모리(12) 내의 전체 물리 영역은 가변 영역(1262)이다. 가변 영역(1262)에서, 데이터 저장 영역(125), 및 관리 정보 저장 영역(126) 내에서 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)가 저장되는 영역은 기능적으로 분리된다.
구동 제어 유닛(14)의 기능은 아래에서 설명된다. 도 11은 구동 제어 유닛(14)의 기능적 구성의 예를 도시한 블록도이다. 구동 제어 유닛(14)은 데이터 관리 유닛(141), ATA 명령 처리 유닛(142), 보안 관리 유닛(143), 부트 로더(boot loader)(144), 초기화 관리 유닛(145) 및 디버그 지원 유닛(146)을 포함한다. 데이터 관리 유닛(141)은 DRAM(11)과 NAND 메모리(12) 사이의 데이터 전송, 및 NAND 메모리(12)에 관한 다양한 기능의 제어를 실행한다. ATA 명령 처리 유닛(142)은 ATA 인터페이스로부터 수신된 명령어에 기초하여 데이터 관리 유닛(141)과 협력해서 데이터 전송 처리를 실행한다. 보안 관리 유닛(143)은 데이터 관리 유닛(141) 및 ATA 명령 처리 유닛(142)과 협력해서 여러 종류의 보안 정보를 관리한다. 부트 로더(144)는 전원 온 동안에, NAND 메모리(12)에서 도시되지 않은 메모리(예를 들어, SRAM(Static RAM))로 다양한 관리 프로그램(펌웨어)을 로드한다. 초기화 관리 유닛(145)은 구동 제어 유닛(14) 내의 회로 및 제어기의 초기화를 실행한다. 디버그 지원 유닛(146)은 RS232C 인터페이스를 통해 외부에서 공급된 디버그 데이터를 처리한다.
도 12는 데이터 관리 유닛(141)의 기능적 구성의 예를 도시한 블록도이다. 데이터 관리 유닛(141)은 데이터-전송 처리 유닛(151), 관리-정보 관리 유닛(152), 관리-정보 복원 유닛(155) 및 재기입-블록-등화 처리 유닛(156)을 포함한다. 데이터 전송 처리 유닛(151)은 DRAM(11)과 NAND 메모리(12) 사이의 데이터 전송을 실행한다. 관리 정보 관리 유닛(152)은 DRAM(11) 및 NAND 메모리(12)에 저장된 데이터의 변경에 따른 관리 정보의 변경 및 저장을 실행한다. 관리 정보 복원 유닛(155)은 전원 온 등등의 동안에 저장된 관리 정보에 기초하여 최신 관리 정보를 복원한다. 재기입 블록 등화 처리 유닛(156)은 전체 NAND 메모리에서, 데이터 및 관리 정보 저장 정보가 기입되는 블록 내의 기입 횟수를 동등하게 한다.
관리 정보 관리 유닛(152)은 관리 정보 기입 유닛(153) 및 관리 정보 저장 유닛(154)을 포함한다. 관리 정보 기입 유닛(153)은 데이터 전송 처리 유닛(151)에 의해 DRAM(11) 또는 NAND 메모리(12)에 저장된 데이터에 대한 변경 처리에 따라 관리 정보의 갱신이 필요할 때 DRAM(11)에 저장된 관리 정보의 갱신을 실행한다.
메모리 시스템(10)이 미리 결정된 조건을 충족시킬 때, 관리 정보 저장 유닛(154)은 NAND 메모리(12)의 관리 정보 저장 영역(126) 내에, 스냅샷(210)으로서의 관리 정보, 및 로그(220)로서의 관리 정보에서 갱신될 정보를 저장한다. 제2 루트 포인터(230) 내의 기입 위치, 또는 제2 루트 포인터(230) 및 제1 루트 포인터(240)가 스냅샷(210) 또는 로그(220)의 저장에 따라 변경될 때, 관리 정보 저장 유닛(154)은 제2 루트 포인터(230), 또는 제2 루트 포인터(230) 및 제1 루트 포인터(240)에 갱신 처리를 적용한다.
스냅샷(210)의 저장은 메모리 시스템(10)에 관한 미리 결정된 조건이 충족될 때 관리 정보 저장 유닛(154)에 의해 실행된다. 스냅샷(210)의 저장은 예를 들어, NAND 메모리(12)의 관리 정보 저장 영역(126) 내의 로그(220)를 저장하기 위해 제공된 로그 저장 영역이 가득 채워질 때(즉, 영역이 데이터로 완전히 채워질 때), 실행된다.
로그(220)의 저장은 DRAM(11)에 저장된 관리 정보(비휘발성 테이블)의 갱신을 수반하는 NDNA 메모리(12) 상의 데이터 갱신 동안에(NAND 메모리(12) 내의 데이터 기입이 필요할 때) 관리 정보 저장 유닛(154)에 의해 실행된다.
메모리 시스템(10)의 전원 공급이 온으로 될 때, 관리 정보 복원 유닛(155)은 NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된 관리 정보 저장 정보에 기초하여 관리 정보에 대한 복원 처리를 실행한다. 구체적으로, 관리 정보 복원 유닛(155)은 고정 영역(1261) 내의 제1 루트 포인터(240) 및 가변 영역(1262) 내의 제2 루트 포인터(230) 및 로그(220)를 순서대로 추적하고, 최신 스냅샷(210)에 대응하는 로그(220)가 존재하는지 판정한다. 로그(220)가 존재하지 않을 때, 관리 정보 복원 유닛(155)은 DRAM(11) 내에서, 관리 정보로서 스냅샷 저장 블록의 스냅샷(210)을 복원한다. 로그(220)가 존재할 때, 잠시 중단과 같은 비정상적인 종료가 발생했기 때문에, 관리 정보 복원 유닛(155)은 스냅샷 저장 블록으로부터 스냅샷(210)을 획득하고, 로그 저장 블록으로부터 로그(220)를 획득하며, DRAM(11) 상의 스냅샷(210)에 로그(220)를 반영하여 관리 정보(비휘발성 테이블)의 복원를 실행한다.
재기입 블록 등화 처리 유닛(156)은 NAND 메모리(12) 내의 데이터 저장 영역(125) 내의 한 블록, 및 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)가 저 장되는 관리 정보 저장 영역(126) 내의 블록들이 가변 영역(1262) 내의 그외 다른 사용가능 블록에 재기입될 때, 가변 영역(1262) 내의 블록들의 재기입 횟수가 동일해지도록 재기입 수신지에서 한 블록을 선택한다. 재기입 블록 등화 처리 유닛(156)은 데이터 전송 처리 유닛(151), 관리 정보 관리 유닛(152) 및 관리 정보 저장 유닛(154)에 재기입을 실행하도록 명령한다. 데이터, 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)가 새로운 블록에 기입될 때, 재기입 블록 등화 처리 유닛(156)은 또한, 가변 영역(1262) 내의 블록들의 재기입 횟수가 동일해지도록 재기입 수신지에서 한 블록을 선택한다. 재기입 블록 등화 처리 유닛(156)은 데이터 전송 처리 유닛(151), 관리 정보 관리 유닛(152) 및 관리 정보 저장 유닛(154)에 재기입을 실행하도록 명령한다. 이 경우에, 블록이 가변 영역(1262) 내의 사용 가능 블록인 한, 과거에 데이터 저장 영역(125)으로서 사용된 블록이 있는지, 아니면 스냅샷(210), 로그(220) 및 제2 루트 포인터(230)가 저장된 관리 정보 저장 영역(126) 내의 블록이 있는지의 여부에 관계없이 재기입 수신지에서 블록을 지정하는 것이 가능하다.
관리 정보 관리 유닛(152)에 의해 실행된 메모리 시스템(10)의 관리 정보를 위한 저장 처리는 아래에서 설명된다. 도 13은 메모리 시스템(10)의 관리 정보의 저장 처리 절차의 예를 도시한 순서도이다. 메모리 시스템(10)은 호스트 장치에 접속되고, 호스트 장치의 보조 저장 장치로서 동작하며, 호스트 장치(메모리 시스템(10))는 시작된 상태로 있고, 스냅샵(210)은 이 시작 상태 전의 메모리 시스템(10)의 정지 전에 저장되는 것으로 가정된다.
먼저, 호스트 장치(메모리 시스템(10))는 호스트 장치(메모리 시스템(10))의 마지막 종료시에 저장된 스냅샷(210)에 기초하여 시작 상태로 있다(단계 S11). 그 다음에, 관리 정보 관리 유닛(152)은 미리 결정된 스냅샷 저장 조건이 충족되는지 판정한다(단계 S12). 스냅샷 저장 조건이 충족되지 않을 때(단계 S12에서 "아니오"), 관리 정보 관리 유닛(152)은 관리 정보의 갱신을 수반하는 명령어(로그 저장 조건을 충족시키는 명령어)가 수신되었는지 판정한다(단계 S13). 관리 정보의 갱신을 수반하는 명령어가 수신되지 않을 때(단계 S13에서 "아니오"), 관리 정보 관리 유닛(152)은 단계 S12로 돌아간다.
관리 정보의 갱신을 수반하는 명령어(NAND 메모리(12)에 데이터 기입을 위한 명령어)가 수신될 때(단계 S13에서 "예"), 관리 정보 관리 유닛(152)은 명령어를 실행함으로써 관리 정보가 어떻게 갱신될지 나타내는 갱신 스케줄을 결정한다(단계 S14). 관리 정보 관리 유닛(152)은 로그(220)로서 NAND 메모리(12)의 관리 정보 저장 영역(126)의 로그 저장 블록에 갱신 스케줄을 저장한다(단계 S15). 로그(220)가 로그 저장 블록에 저장되지 않을 때, 갱신 스케줄(로그)은 현시점에서의 비휘발성 테이블과 스냅샷 저장 블록에 저장된 스냅샷(210) 사이의 차이 정보이다. 로그(220)(이후, 과거 로그라 칭함)가 로그 저장 블록에 이미 저장되어 있을 때, 갱신 스케줄(로그)은 현시점에서의 비휘발성 테이블과, 스냅샷(210)과 과거 로그의 조합 사이의 차이 정보이다. 로그(220)는 예를 들어, 로그(220)(갱신 스케줄)가 DRAM(11) 상에 기록된 후, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된다.
그 다음에, 논리적 NAND 관리층(32)은 단계 S13에서 수신된 명령어를 실행한다(단계 S16). 이러한 명령어의 한 예로서, NAND 메모리(12)의 데이터 저장 영역의 미리 결정된 블록 내로의 사용자 데이터를 위한 기입 처리가 있다. 그 후, 관리 정보 관리 유닛(152)은 다시 단계 S12로 돌아간다.
스냅샷 저장 조건이 충족될 때(단계 S12에서 "예"), DRAM(11)의 임시 저장 영역(111) 내의 비휘발성 테이블을 최소한 포함하는 관리 정보는 스냅샷(210)으로서 NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된다(단계 S17). 관리 정보 관리 유닛(152)은 메모리 시스템(10)의 종료가 지시되었는지 판정한다(단계 S18). 메모리 시스템(10)의 종료가 지시되지 않았을 때(단계 S18에서 "아니오"), 관리 정보 관리 유닛(152)은 단계 S12로 돌아간다. 메모리 시스템(10)의 종료가 지시되었을 때(단계 S18에서 "예"), 처리는 종료된다.
관리 정보 복원 유닛(155)에 의해 실행된 메모리 시스템(10)의 관리 정보를 위한 복원 처리가 아래에 설명된다. 도 14는 메모리 시스템(10)의 관리 정보를 위한 복원 처리 절차의 예를 도시한 순서도이다. 상기 설명에서와 같이, 메모리 시스템(10)은 호스트 장치에 접속되고, 호스트 장치의 보조 저장 장치로서 동작한다.
먼저, 호스트 장치의 전원 공급이 온으로 되고, 메모리 시스템(10)에 시작 명령이 내려진다(단계 S31). 관리 정보 복원 유닛(155)은 NAND 메모리(12)의 관리 정보 저장 영역(126) 내의 최신의 제1 루트 포인터를 판독하고, 제2 루트 포인터 저장 블록의 위치를 획득한다(단계 S32). 그 다음에, 관리 정보 복원 유닛(155)은 제2 루트 포인터 저장 블록의 획득된 위치로부터 최신의 제2 루트 포인터를 판독하 고, 스냅샷(210) 및 로그(220)가 저장되는 블록의 주소를 획득한다(단계 S33). 관리 정보 복원 유닛(155)은 단계 S33에서 획득된 NAND 메모리(12) 내의 주소로부터 스냅샷(210)을 판독하고, DRAM(11)의 임시 저장 영역(11) 내의 스냅샷(210)을 복원한다(단계 S34).
그 후, 관리 정보 복원 유닛(155)은 NAND 메모리(12) 내의 로그(220)를 참조하여 잠시 중단이 발생했는지 판정한다(단계 S35). 잠시 중단이 발생하지 않았으면(단계 S35에서 "아니오"), 관리 정보 복원 유닛(155)은 단계 S34에서 DRAM(11)의 임시 저장 영역(111)에서 복원된 스냅샷(210)으로부터 관리 정보를 복원하고(단계 S36), 복원 처리가 종료된다.
다른 한편, 잠시 중단이 발생했을 때(단계 S35에서 "예"), 관리 정보 복원 유닛(155)은 단계 S33에서 획득된 NAND 메모리(12) 내의 주소로부터 로그(220)를 획득하고, DRAM(11)의 작업 영역(112)에서 로그(220)를 확장한다(단계 S37). 관리 정보 복원 유닛(155)은 단계 S34에서 DRAM(11)의 임시 저장 영역(111)에서 복원된 스냅샷(210)에 가장 오래된 것부터 순서대로 로그들을 반영하고, 관리 정보(비휘발성 테이블)를 복원하며(단계 S38), 관리 정보를 위한 복원 처리가 종료된다.
상기 설명된 바와 같이, 제1 실시예에 따르면, 메모리 시스템(10)의 최신 저장 정보로서의 스냅샷(210) 및 로그(220)의 저장 위치를 나타내는 포인터로서, 스냅샷(210) 및 로그(220)의 저장 위치를 나타내는 제2 루트 포인터(230)가 가변 영역(1262)에 제공되고, 제2 루트 포인터(230)의 저장 위치를 나타내는 제1 루트 포인터(240)가 고정 영역(1261)에 제공된다. 결과적으로, 제2 루트 포인터 저장을 위한 모든 블록이 데이터로 가득 채워질 때까지는 제1 루트 포인터(24)를 갱신할 필요가 없다. 더구나, 제2 루트 포인터(230)의 갱신 빈도에 비해 제1 루트 포인터(240)의 갱신 빈도를 상당히 감소시킬 수 있게 된다. 예를 들어, 제2 루트 포인터(230)가 제공되지 않고, 제1 루트 포인터(240)가 스냅샷(210) 및 로그(220)의 저장 위치를 가리키도록 적응될 때, 제1 루트 포인터(240)는 스냅샷(210)이 갱신될 때마다 갱신된다. 결과적으로, 제1 루트 포인트 저장을 위한 블록의 소거 횟수가 증가한다. 한편, 제2 루트 포인터(230)를 제공함으로써, 스냅샷(210)의 갱신 횟수를 제2 루트 포인터(230)의 페이지 수로 나눔으로써 얻어진 수로, 제1 루트 포인트 저장을 위한 블록의 소거 횟수를 억제하는 것이 가능하다. 제1 루트 포인트 저장을 위한 블록의 소거 횟수를 상당히 감소시킬 수 있다. 결과적으로, 고정 영역(1261)을 구성하는 메모리 셀 트랜지스터의 수명을 연장할 수 있다는 효과가 있다. 더욱이, 제1 루트 포인터(240)가 저장되는 제1 루트 포인터 저장을 위한 블록의 재기입 횟수를 억제할 수 있기 때문에, 저장된 데이터로서의 제1 루트 포인터(24)의 신뢰성을 개선할 수 있다는 효과도 있다.
제2 실시예
본 발명에 따른 제2 실시예로서, 로그 저장 영역에 저장된 로그의 크기가 로그 저장 블록의 크기를 초과할 때 로그를 기입하는 처리의 방법이 아래에서 설명된다.
도 15는 제2 실시예에 따른, 로그를 저장하는 로그 저장 영역의 구조의 예를 도시한 도면이다. 도 15에서, 도 8에 도시된 구성요소들 중에서, 제2 루트 포인 터(230) 및 로그(220)만이 도시되고, 그외 다른 구성요소는 생략된다.
로그(220)는 빗금친 부분으로 표시된 각 페이지에 저장된, 예를 들어 로그 저장 블록(45 및 46)을 포함하는 로그 저장 영역에 저장된 로그 정보를 포함한다. 로그 저장 영역을 형성하는 로그 저장 블록의 수는 저장될 로그의 크기(로그 길이)에 의존한다. 로그 저장 영역에서, 로그 저장 블록이 저장될 로그의 크기에 따라 순차적으로 확보되고, 로그가 기입되는 로그 저장 블록의 모든 페이지에 기입될 때, 로그는 다음으로 확보된 로그 저장 블록에 기입된다. 도 15에 도시된 예에서, 로그는 로그 저장 블록(45)의 최상위 페이지부터 순서대로 저장된다. 로그가 로그 저장 블록(45) 내의 모든 페이지에 기입된 후, 로그는 기입을 위한 다음 블록으로서 확보된 로그 저장 블록(46)의 최상위 페이지부터 순차적으로 저장된다.
제2 루트 포인터(230)는 로그(220)의 저장 위치를 나타내는 블록의 최상위 주소를 나타낸다. 구체적으로, 제2 루트 포인터(230)는 로그 저장 블록(45)의 최상위 페이지를 나타낸다.
로그 저장 블록(45)은 로그 저장 블록(46)의 위치를 나타내는 포인터를 그 안에 저장한다. 구체적으로, 로그 저장 블록(45)의 최상위 페이지가 사용될 때, 로그 저장 블록(46)이 확보되고, 로그 저장 블록(46)의 최상위 페이지의 주소를 나타내는 포인터 정보가 로그 저장 블록(45)의 최상위 페이지에 추가된다. 이것은 제2 루트 포인터(230), 로그 저장 블록(45) 및 로그 저장 블록(46)을 순서대로 추적할 수 있게 하고, 스냅샷(210)을 위한 최종 로그에 도달한다. 로그 저장 블록(46)은 다음으로 확보된 로그 저장 블록(도시되지 않음)의 위치를 나타내는 포인 터를 그 안에 저장한다. 로그 저장 블록(46)의 최상위 페이지가 사용될 때, 다음 로그 저장 블록이 확보되고, 다음 로그 저장 블록의 최상위 페이지의 주소를 나타내는 포인터 정보가 로그 저장 블록(46)의 최상위 페이지에 추가된다. 도 15에서, 한 예로서, 로그는 2개의 로그 저장 블록(로그 저장 블록(45 및 46))에 저장된다. 그러나, 로그가 3개 이상의 로그 저장 블록에 저장될 때에도 동일하게 적용된다.
상기 설명된 바와 같이, 제2 실시예에서, 로그 저장 영역이 다수의 로그 저장 블록을 포함할 때, 다음으로 확보된 로그 저장 블록의 위치를 나타내는 포인터 정보는 상이한 로그 저장 블록에 저장된 로그가 포인터를 통해 추적될 수 있도록 로그 저장 블록의 최상위 페이지에 저장된다. 달리 말하면, 로그 저장 영역은 순차적으로 확보된 로그 저장 블록을 포함하고, 로그 저장 블록이 로그 저장 블록들 사이를 나타내는 포인터를 통해 사슬 모양으로 접속되는 구조(이후 로그 사슬이라 칭함)를 갖는다.
제2 실시예에 따르면, 로그 저장 영역에 저장된 로그(220)의 크기가 로그 저장 블록의 크기를 초과할 때에도, 로그 저장 블록을 새로 확보해서 새로운 로그 저장 블록에 로그를 기입할 수 있기 때문에, 로그 저장 블록이 채워질 때마다 스냅샷을 저장하고 제2 루트 포인터(230)를 갱신할 필요가 없다. 따라서, 제2 루트 포인터(230)가 저장되는 제2 루트 포인터 저장 블록 내의 기입이 감소된다. 그러므로, NAND 메모리(12)에 기입하는 회수를 감소시키고, NAND 메모리(12)의 내구적 수명이 감소되지 않게 할 수 있다는 효과가 있다.
로그 저장 블록이 포인터를 확보하는 타이밍은 로그 저장 블록의 최상위 페 이지가 사용되는 시간에 제한되지 않고, 그외 다른 페이지가 사용되는 시간일 수도 있다. 그러므로, 예를 들어, 로그 저장 블록(46)은 로그 저장 블록(45)의 마지막 페이지 내의 로그의 기입이 완료되는 시점에 확보될 수 있고, 로그 저장 블록(46)의 최상위 페이지의 주소를 나타내는 포인터가 제공될 수 있다.
로그 저장 영역 내에 확보될 수 있는 로그 저장 블록의 수에 상한(upper limit)을 제공하는 것이 바람직하다. 이것은 로그(220)의 크기가 미리 결정된 크기를 초과하는 경우에, 스냅샷(210)에 로그(220)를 반영하고 관리 정보를 복원할 필요가 있을 때, 복원 시간이 길기 때문이다. 예를 들어, 로그 저장 영역이 채워질 때, 새로운 스냅샷(210)이 획득될 수 있다.
제3 실시예
제1 및 제2 실시예에서는, 도 8에 도시된 바와 같이, 하나의 로그가 스냅샷에 대해 생성된다. 그러나, 본 발명에 따른 제3 실시예에서는, 다수의 로그가 생성된다.
도 16은 제3 실시예에 따른, 관리 정보 저장 영역에 저장된 관리 정보 저장 정보의 내용의 예를 도시한 개략도이다. 제3 실시예에서, 제1 실시예의 도 8에 도시된 로그(220)는 갱신 전 로그(이후, "사전 로그")(220A)와 갱신 후 로그(이후, "사후 로그")(220B)로 세분화된다. 사전 로그(220A)는 다음번 스냅샷을 저장하기 전의 비휘발성 테이블 내용의 갱신 차이 정보이고, 갱신 전에 획득된다. 사후 로그(220B)는 사전 로그(220A)와 동일한 내용의 로그 정보이고, 갱신 후에 저장된다. 제1 실시예에서와 동일한 구성요소는 동일한 참조 번호와 기호로 표시되고, 구성요 소의 설명은 생략된다.
사전 로그(220A) 및 사후 로그(220B)는 비휘발성 테이블의 내용에 변경이 있을 때 내용이 변경된 후의 비휘발성 테이블과, 데이터 기입 처리 등에 대응하는 스냅샷(210)(또는 스냅샷(210) 및 이미 생성된 로그) 사이의 차이 정보이다. 구체적으로, 스냅샷(210)이 저장된 후의 제1 사전 로그(220A) 및 제1 사후 로그(220B)는 비휘발성 테이블과 스냅샷(210) 사이의 차이 정보이다. 스냅샷(210)이 저장된 후의 제2 또는 그 다음의 사전 로그(220A)는 이미 생성된 사전 로그(220A)와 스냅샷(210)의 조합과 비휘발성 테이블 사이의 차이 정보이다. 스냅샷(210)이 저장된 후의 제2 또는 그 다음의 사후 로그(220B)는 이미 생성된 사후 로그(220B)와 스냅샷(210)의 조합과 비휘발성 테이블 사이의 차이 정보이다. 달리 말하면, 사전 로그(220A) 및 사후 로그(220B)는 동일한 정보를 포함한다. 사전 로그(220A) 및 사후 로그(220B)가 동일한 정보를 포함하는 것으로 설명되지만, 사전 로그(220A) 및 사후 로그(220B)가 반드시 동일한 정보를 포함하는 것은 아니다. 예를 들어, 사전 로그(220A)와 사후 로그(220B) 중의 어느 하나는 차이 정보를 포함하도록 구성될 수 있다.
사전 로그(220A)는 관리 정보가 실제로 갱신되기 전에 생성된 정보이다. 그러므로, 관리 정보가 데이터 기입 처리 등의 실행에 의해 실제로 갱신되기 전에, 사전 로그(220A)는 관리 정보가 어떻게 갱신되는 지에 관한 갱신 스케줄에 기초하여 생성된다. 사후 로그(220B)는 관리 정보가 실제로 갱신된 후에 생성된 정보이다. 그러므로, 사후 로그(220B)는 관리 정보가 기입 데이터 처리 등의 실행에 따 라 관리 정보가 실제로 갱신된 후에 실제 관리 정보를 사용함으로써 생성된다. 사전 로그(220A) 및 사후 로그(220B)는 예를 들어, 도 9에 도시된 내용의 정보를 포함한다.
사전 로그(220A) 및 사후 로그(220B)는 각각 로그 저장 블록에 저장된다. 사전 로그(220A) 및 사후 로그(220B)는 스냅샷의 생성이 변경되더라도 한번 쓰기 방식으로 동일한 로그 저장 블록에 기입된다.
제1 실시예에서의 도 12에 도시된 데이터 관리 유닛(141)의 처리 유닛의 기능 중에서 제1 실시예와의 차이점이 아래에서 설명된다. 메모리 시스템(10)이 미리 결정된 조건을 충족시킬 때, 관리 정보 저장 유닛(154)은 NAND 메모리(12)의 관리 정보 저장 영역(126) 내에, 스냅샷(210)으로서의 관리 정보, 사전 로그(220A)로서 관리 정보에서 갱신될 정보, 및 사후 로그(220B)로서 관리 정보에서 갱신된 정보를 저장한다. 제2 루트 포인터(230) 내의 기입 위치가 스냅샷(210), 사전 로그(220A) 또는 사후 로그(220B)의 저장에 따라 변경될 때, 관리 정보 저장 유닛(154)은 제2 루트 포인터(230)에 갱신 처리를 적용한다.
관리 정보 저장 유닛(154)에 의한 스냅샷(210)의 저장은 아래의 예로서 설명된 3개의 스냅샷 저장 조건 중의 어느 하나가 충족될 때 실행된다:
(1) 대기(standby)(메모리 시스템(10)의 본체의 전력 소모를 최소화하는 명령어), 슬립(sleep)(미리 결정된 시간 동안에 액세스가 없을 때 장치를 정지시키는 명령어), 또는 리셋(메모리 시스템(10)을 재개시하는 명령어)이 수신됨,
(2) NAND 메모리(12)의 관리 정보 저장 영역(126) 내에 사전 로그(220A) 및 사후 로그(220B)를 저장하기 위해 제공된 로그 저장 영역이 데이터로 가득 채워짐,
(3) NAND 메모리(12)의 관리 정보 저장 영역(126) 내에 사전 로그(220A) 및 사후 로그(220B)를 저장하기 위해 제공된 로그 저장 영역이 데이터 기입 및 소거가 실행될 수 없는 결함 영역(불량 블록)으로 변경됨.
관리 정보 저장 유닛(154)이 사전 로그(220A) 및 사후 로그(220B)를 저장하는 타이밍은 DRAM(11)에 저장된 관리 정보(비휘발성 테이블)의 갱신이 관리 정보 기입 유닛(153)에 의해 실행될 시간이다. 구체적으로, 사전 로그(220A) 및 사후 로그(220B)는 데이터를 기입하는 처리 등의 전과 후에 저장된다.
메모리 시스템(10)의 전원 공급이 온으로 될 때, 관리 정보 복원 유닛(155)은 NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된 관리 정보 저장 정보에 기초하여 관리 정보를 위한 복원 처리를 실행한다. 구체적으로, 관리 정보 복원 유닛(155)은 고정 영역 내의 제1 루트 포인터(240), 가변 영역(1262) 내의 제2 루트 포인터(230), 스냅샷(210), 사전 로그(220A) 및 사후 로그(220B)를 순서대로 추적하고, 최신 스냅샷(210)에 대응하는 사전 로그(220A) 및 사후 로그(220B)가 존재하는지 판정한다. 사전 로그(220A) 및 사후 로그(220B)가 존재하지 않을 때, 관리 정보 복원 유닛(155)은 DRAM(11) 내의 관리 정보로서 스냅샷 저장 블록의 스냅샷(210)을 복원한다. 사전 로그(220A) 및 사후 로그(220B)가 존재할 때, 메모리 시스템(10)의 종료는 프로그램 에러 및 잠시 중단(비정상적인 전원 중단)으로 인한 비정상적인 종료이다. 그러므로, 관리 정보 복원 유닛(155)은 스냅샷 저장 블록으로부터 스냅샷(210)을 획득하고, 로그 저장 블록으로부터 사전 로그(220A) 또는 사 후 로그(220B)를 획득하며, DRAM(11) 상의 스냅샷(210)에 사전 로그(220A) 또는 사후 로그(220B)를 반영하여 관리 정보(비휘발성 테이블)의 복원를 실행한다.
관리 정보 관리 유닛(152)에 의해 실행된 메모리 시스템(10)의 관리 정보를 위한 저장 처리는 아래에서 설명된다. 단순하게 설명하기 위해, 제1 실시예에서의 도 13의 순서도에서, 사전 로그(220A)와 동일한 내용을 갖는 사후 로그(220B)를 기입하는 처리는 단계 S16에서의 명령어의 실행 후에 실행된다. 이 처리는 구체적으로 아래에 설명된다.
도 17은 사전 로그 및 사후 로그를 위한 저장 처리를 설명하는 도면이다. 사전 로그(220A)가 로그 저장 블록에 저장되어 있지 않을 때, 단계 S14에서 결정될 갱신 스케줄(사후 로그)은 관리 정보가 갱신될 때의 비휘발성 테이블과 스냅샷 저장 블록에 저장된 스냅샷(210) 사이의 차이 정보이다. 사전 로그(220A)(이후, 과거의 사전 로그(220A))가 로그 저장 블록에 이미 저장되어 있을 때, 갱신 스케줄(사후 로그)은 관리 정보가 갱신될 때의 비휘발성 테이블과, 스냅샷(210)과 과거의 사전 로그(220A)의 조합 사이의 차이 정보이다. 구체적으로, 도 17에 도시된 바와 같이, 데이터 기입 (X)가 X번째 데이터를 위한 기입 처리로서 실행되기 전에, 데이터 기입 (X)에 대응하는 사전 로그 (X)는 사전 로그(220A)로서 NAND 메모리(12)에 저장된다. 이때, 예를 들어, 정보 y1은 사전 로그(220A)로서 저장된다. 사전 로그(220A)는 예를 들어, 사전 로그(220A)(갱신 스케줄)가 DRAM(11) 상에 기록된 후에, NAND 메모리(12)의 관리 정보 저장 영역(126)에 저장된다.
그 다음에, 논리적 NAND 관리층은 단계 S13에서 수신된 명령어(예를 들어, NAND 메모리(12)의 데이터 저장 영역(125)에 사용자 데이터를 기입하는 처리 (X))를 실행한다(단계 S16).
그 후, DRAM(11)에 저장된 관리 정보는 실행된 처리에 따라 갱신된다. 관리 정보 저장 유닛(154)은 사후 로그(220B)로서 NAND 메모리(12)의 관리 정보 저장 영역(126) 내의 관리 정보에 갱신된 정보를 저장한다. 사후 로그(220B)가 로그 저장 블록에 저장되어 있지 않을 때, 사후 로그(220B)는 현 시점에서의 비휘발성 테이블과 스냅샷 저장 블록에 저장된 스냅샷(210) 사이의 차이 정보이다. 사후 로그(220B)(이후, 과거의 사후 로그(220B))가 로그 저장 블록에 이미 저장되어 있을 때, 사후 로그(220B)는 현 시점에서의 비휘발성 테이블과, 스냅샷(210)과 과거의 로그의 조합 사이의 차이 정보이다.
따라서, 데이터 기입 (X)에 대응하는 사후 로그(220B) (X)는 사후 로그(220B)로서 NAND 메모리(12)에 저장된다. 이때, 정보 y1은 사후 로그(220B)로서 저장된다. 사후 로그(220B)로서 저장된 정보 y1은 사전 로그(220A)로서 저장된 정보 y1과 동일하다.
그 후, 스냅샷 저장 조건이 충족되지 않고(단계 S12에서 "아니오"), 관리 정보의 갱신을 수반하는 명령어가 수신될 때(단계 S13에서 "예"), 상기 설명된 처리가 실행된다. 달리 말하면, X번째 데이터를 위한 기입 처리와 동일한 방식으로, (X+1)번째 데이터를 위한 기입 처리가 실행된다. 데이터 기입 (X+1)이 (X+1)번째 데이터를 위한 기입 처리로서 실행되기 전에, 데이터 기입 (X+1)에 대응하는 사전 로그 (X+1)은 사전 로그(220A)로서 NAND 메모리(12)에 저장된다. 예를 들어, 정보 y2는 사전 로그(220A)로서 저장된다. 데이터 기입 (X+1)은 NAND 메모리(12) 내의 데이터 저장 영역(125)에서 실행된다. 더욱이, 데이터 기입 (X+1)에 대응하는 사후 로그 (X+1)은 사후 로그(220B)로서 NAND 메모리(12)에 저장된다. 예를 들어, 정보 y2는 사후 로그(220B)로서 저장된다. 사후 로그(220B)로서 저장된 정보 y2는 사전 로그(220A)로서 저장된 정보 y2와 동일한다. 상기 설명된 바와 같이, 사전 로그(220A) 및 사후 로그(220B)가 저장된다.
관리 정보 복원 유닛(155)에 의해 실행된 메모리 시스템(10)의 관리 정보를 위한 복원 처리가 아래에서 설명된다. 도 18은 제3 실시예에 따른, 메모리 시스템(10)의 관리 정보를 위한 복원 처리 절차의 예를 도시한 순서도이다. 제1 및 제2 실시예에서와 같이, 메모리 시스템(10)은 호스트 장치에 접속되고, 호스트 장치의 보조 저장 장치로서 동작한다.
제1 실시예에서의 도 14의 단계 S31 내지 S34에서 설명된 바와 같이, 호스트 장치의 전원 공급은 예를 들어, 잠시 중단으로부터의 회복에 따라 온으로 되고, 메모리 시스템(10)에 시작 명령이 내려진다. 관리 정보 복원 유닛(155)은 NAND 메모리(12)의 관리 정보 저장 영역 내의 제1 루트 포인터(240) 및 제2 루트 포인터(230)를 순서대로 판독하고, 스냅샷(210) 및 사전과 사후 로그(사전 로그(220A) 및 사후 로그(220B))가 저장되는 블록의 주소를 획득하며, 스냅샷(210)을 획득한다(단계 S51 내지 S54).
그 후, 관리 정보 복원 유닛(155)은 NAND 메모리(12) 내의 사전 로그(220A) 및 사후 로그(220B)를 참조하여, 잠시 중단이 발생했는지 판정한다(단계 S55). 예 를 들어, 사전 로그(220A) 및 사후 로그(220B)가 NAND 메모리(12)에 존재할 때, 잠시 중단이 발생한 것으로 판정된다. 잠시 중단이 발생했는 지의 판정은 예를 들어, 사전 로그(220A) 및 사후 로그(220B)의 비교에 의해 실행될 수 있다. 제3 실시예에서, 사전 로그(220A) 및 사후 로그(220B)는 동일한 정보를 저장한다. 그러므로, 예를 들어, 사전 로그(220A)로서 저장된 페이지 수와 사후 로그(220B)로서 저장된 페이지 수가 서로 일치하지 않을 때, 잠시 중단이 발생한 것으로 판정할 수 있다. 잠시 중단의 발생은 ECC 에러의 존재 또는 부재, 사전 로그(220A)로서 저장된 페이지의 데이터, 및 사후 로그(220B)로서 저장된 페이지의 데이터에 기초하여 판정될 수 있다.
잠시 중단이 발생했을 때(단계 S55에서 "예"), 관리 정보 복원 유닛(155)은 NAND 메모리(12) 내의 최신 사전 로그(220A) 및 최신 사후 로그(220B)에 기초하여, 잠시 중단이 발생한 타이밍을 조사한다(단계 S56).
더욱이, 관리 정보 복원 유닛(155)은 잠시 중단이 발생한 타이밍이 사후 로그(220B)의 저장 동안인지 판정한다(단계 S57). 예를 들어, 사후 로그(220B) 내의 마지막 페이지가 기입되고 있을 때, 이 마지막 페이지는 판독될 수 없다. 그러므로, 잠시 중단이 사후 로그(220B)의 저장 동안에 발생한 것으로 판정된다. 사전 로그(220A) 내의 마지막 페이지가 기입되고 있을 때, 이 마지막 페이지는 판독될 수 없다. 그러므로, 잠시 중단이 사전 로그(220A)의 저장 동안에 발생한 것으로 판정된다. 로그가 사전 로그(220A) 내의 마지막 페이지에 기입되고, 로그가 사후 로그(220B)의 마지막 페이지에 기입되지 않을 때, 잠시 중단이 데이터 기입 동안에 발생한 것으로 판정된다.
잠시 중단이 발생한 타이밍이 사후 로그(220B)의 저장 동안인 것으로 관리 정보 복원 유닛(155)이 판정할 때(단계 S57에서 "예"), 관리 정보 복원 유닛(155)은 최신 사전 로그(220A)를 선택한다(단계 S58). 한편, 잠시 중단이 발생한 타이밍이 사후 로그(220B)의 저장 동안이 아닌 것으로 관리 정보 복원 유닛(155)이 판정할 때(단계 S57에서 "아니오"), 관리 정보 복원 유닛(155)은 저장되도록 완성된 최신 사후 로그(220B)를 선택한다(단계 S59). 달리 말하면, 사전 로그(220A) 내의 마지막 페이지가 기입되고 있을 때, 또는 로그가 사전 로그(220A) 내의 마지막 페이지에 기입되고, 로그가 사후 로그(220B) 내의 마지막 페이지에 기입되지 않을 때, 최신 사후 로그(220B)가 선택된다.
그 후, 관리 정보 복원 유닛(155)은 선택된 로그(사전 로그(220A) 또는 사후 로그(220B))를 로그 저장 블록으로부터 획득하고, DRAM(11)의 작업 영역(112) 내에서 로그를 확장한다(단계 S60). 관리 정보 복원 유닛(155)은 가장 오래된 것부터 순서대로 스냅샷(210)에 로그를 반영하고, 관리 정보(비휘발성 테이블)를 복원하며(단계 S61), 관리 정보의 복원 처리가 종료된다.
한편, 잠시 중단이 발생하지 않을 때(단계 S55에서 "아니오"), 관리 정보는 DRAM(11)의 관리 정보 저장 영역(111)에서 복원되고, 관리 정보 복원 처리가 종료된다.
관리 정보 복원 유닛(155)은 잠시 중단으로 인한 로그 손상의 존재 또는 부재에 상관없이, 사전 로그(220A)와 사후 로그(220B) 중의 하나를 선택하고, 사전 로그(220A)로서 저장된 페이지의 수 및 사후 로그(220B)로서 저장된 페이지의 수에 기초하여 관리 정보를 복원한다. 예를 들어, 사전 로그(220A)로서 저장된 페이지 수와 사후 로그(220B)로서 저장된 페이지 수가 동일할 때, 관리 정보 복원 유닛(155)은 사전 로그(220A)를 선택하고, 관리 정보를 복원한다. 사전 로그(220A)로서 저장된 페이지 수가 사후 로그(220B)로서 저장된 페이지 수보다 클 때, 관리 정보 복원 유닛(155)은 사후 로그(220B)를 선택하고, 관리 정보를 복원한다.
상기 설명된 바와 같이, 사전 로그(220A) 및 사후 로그(220B)가 처리 실행 전과 후에 생성될 때라도, 제1 및 제2 실시예의 기술을 적용함으로써, NAND 메모리(12) 내의 제1 루트 포인터(240) 및 제2 루트 포인터(230)의 기입 횟수를 감소시키고, NAND 메모리(12)의 내구 수명이 감소되지 않게 하며, 관리 정보의 저장 동안의 신뢰성을 개선하는 것이 가능하다.
제4 실시예
본 발명에 따른 제4 실시예로서, 각각 사전 로그 저장 영역 및 사후 로그 저장 영역에 저장된 로그의 크기가 각 로그 저장 영역의 로그 저장 블록의 크기를 초과할 때 로그를 기입하는 처리 방법이 설명된다.
도 19는 제4 실시예에 따른, 사전 로그를 저장하는 사전 로그 저장 영역 및 사후 로그를 저장하는 사후 로그 저장 영역의 구조의 예를 도시한 도면이다. 도 15에서와 같이, 도 16에 도시된 구성요소들 중에서, 제2 루트 포인터(230), 사전 로그(220A) 및 사후 로그(220B)가 도시되고, 그외 다른 구성요소들은 생략된다.
도 19에 도시된 바와 같이, 사전 로그(220A)를 저장하는 사전 로그 저장 영 역 및 사후 로그(220B)를 저장하는 사후 로그 저장 영역은 아래에 설명된 로그 저장 영역들 사이에 제공된 포인터를 제외하면, 도 15에 도시된 로그 저장 영역의 구조와 동일한 구조를 갖는다. 사전 로그(220A)를 저장하는 사전 로그 저장 영역은 예를 들어, 2개의 로그 저장 블록으로서 로그 저장 블록(50 및 51)을 포함한다. 로그 저장 블록(50)은 로그 저장 블록(50) 다음에 확보된 로그 저장 블록(51)의 위치를 나타내는 포인터(도면에서, 로그 저장 블록(50)의 최상위 페이지에서 로그 저장 블록(51)의 최상위 페이지로 가리키는 화살표)를 그 안에 포함한다. 사후 로그(220B)를 저장하는 사후 로그 저장 영역은 예를 들어, 2개의 로그 저장 블록으로서 로그 저장 블록(60 및 61)을 포함한다. 로그 저장 블록(60)은 로그 저장 블록(60) 다음에 확보된 로그 저장 블록(61)의 위치를 나타내는 포인터(도면에서, 로그 저장 블록(60)의 최상위 페이지에서 로그 저장 블록(61)의 최상위 페이지로 가리키는 화살표)를 그 안에 포함한다. 제2 루트 포인터(230)는 사전 로그 저장 영역 내의 로그 저장 블록(50)의 최상위 페이지, 및 사후 로그 저장 영역 내의 로그 저장 블록(60)의 최상위 페이지를 나타낸다.
도 19에서, 각각 사전 로그 저장 영역 및 사후 로그 저장 영역에 제공된 로그 사슬 구조 이외에, 사전 로그 저장 영역 내의 로그 저장 블록(50)은 사후 로그 저장 영역 내의 로그 저장 블록(61)의 위치를 나타내는 포인터(도면에서, 로그 저장 블록(50)의 최상위 페이지에서 로그 저장 블록(61)의 최상위 페이지로 가리키는 화살표)를 갖는다. 사후 로그 저장 영역 내의 로그 저장 블록(60)은 사전 로그 저장 영역 내의 로그 저장 블록(51)의 위치를 나타내는 포인터(도면에서, 로그 저장 블록(60)의 최상위 페이지에서 로그 저장 블록(51)의 최상위 페이지로 가리키는 화살표)를 갖는다.
사전 로그 저장 영역 내에서 다음으로 확보된 로그 저장 블록인 로그 저장 블록(51)의 위치를 나타내는 포인터 이외에, 사전 로그 저장 영역 내의 로그 저장 블록(50)은 로그 저장 블록(51)을 확보하는 순서와 동일한 순서로 사후 로그 저장 영역에서 확보된(이 경우에, 로그 저장 블록(51)이 두 번째로 확보되기 때문에 두 번째로 확보된) 로그 저장 블록, 즉 로그 저장 블록(61)의 위치를 나타내는 포인터를 갖는다. 이와 유사하게, 사후 로그 저장 영역 내에서 다음으로 확보된 로그 저장 블록인 로그 저장 블록(61)의 위치를 나타내는 포인터 이외에, 사후 로그 저장 영역 내의 로그 저장 블록(60)은 로그 저장 블록(61)을 확보하는 순서와 동일한 순서로 사후 로그 저장 영역에서 확보된(이 경우에, 로그 저장 블록(61)이 두 번째로 확보되기 때문에 두 번째로 확보된) 로그 저장 블록, 즉 로그 저장 블록(61)의 위치를 나타내는 포인터를 갖는다.
상기 설명된 바와 같이, 사전 로그(220A) 및 사후 로그(220B)가 동일한 내용의 로그 정보를 저장하기 때문에, 사전 로그(220A) 및 사후 로그(220B)는 잠시 중단과 같은 비정상적인 일이 발생하지 않는 한, 동일한 로그 정보를 저장한다. 그러므로, 로그 저장 블록(50)의 각 페이지에 저장된 로그는 로그 저장 블록(60)의 대응하는 페이지에 저장된 로그와 동일하다. 로그 저장 블록(51)의 각 페이지에 저장된 로그는 로그 저장 블록(61)의 대응하는 페이지에 저장된 로그와 동일하다. 그러므로, 사전 로그 저장 영역 내의 로그 저장 블록(50)은 로그 저장 블록(51)의 위치를 나타내는 포인터 이외에 사후 로그 저장 영역 내의 로그 저장 블록(61)의 위치를 나타내는 포인터를 갖는다. 따라서, 로그 저장 블록(50)은 로그 저장 블록(51)의 로그 정보와 동일한 로그 정보를 저장하는 로그 저장 블록(61)의 위치를 백업으로서 확보한다. 이와 유사하게, 사후 로그 저장 영역 내의 로그 저장 블록(60)은 로그 저장 블록(61)의 위치를 나타내는 포인터 이외에 사전 로그 저장 영역 내의 로그 저장 블록(51)의 위치를 나타내는 포인터를 갖는다. 따라서, 로그 저장 블록(60)은 로그 저장 블록(61)의 로그 정보와 동일한 로그 정보를 저장하는 로그 저장 블록(51)의 위치를 백업으로서 확보한다. 도면에 도시되지는 않았지만, 로그 저장 블록(50)은 사전 로그 저장 영역 내의 로그 저장 블록(51) 다음으로 확보된 로그 저장 블록의 위치를 나타내는 포인터를 갖고, 사후 로그 저장 영역 내의 로그 저장 블록(61) 다음으로 확보된 로그 저장 블록의 위치를 나타내는 포인터를 갖는다. 이와 유사하게, 도면에 도시되지는 않았지만, 로그 저장 블록(61)은 사후 로그 저장 영역 내의 로그 저장 블록(61) 다음으로 확보된 로그 저장 블록의 위치를 나타내는 포인터를 갖고, 사전 로그 저장 영역 내의 로그 저장 블록(51) 다음으로 확보된 로그 저장 블록의 위치를 나타내는 포인터를 갖는다. 도 19에서, 한 예로서, 로그는 사전 로그 저장 영역 및 사후 로그 저장 영역의 각 영역 내의 2개의 로그 저장 블록(로그 저장 블록(50 및 51) 및 로그 저장 블록(60 및 61))에 저장된다. 그러나, 로그가 사전 로그 저장 영역 및 사후 로그 저장 영역의 각 영역 내의 3개 이상의 로그 저장 블록에 저장될 때에도 동일하게 적용된다.
상기 설명된 바와 같이, 포인터는 사전 로그 저장 영역 및 사후 로그 저장 영역 내의 로그 저장 블록에서 두 배로 된다. 이것은 로그가 잠시 중단 등에 의해 손상될 때라도 로그의 복원를 용이하게 실행할 수 있게 한다. 예를 들어, 로그 저장 블록(51)에 기입하는 동안에 잠시 중단이 발생하고, 기입되고 있는 페이지 내의 로그 데이터 및 그것의 낮은 순위 페이지가 손상될 때, 로그 저장 블록(50)의 로그 저장 블록(61)에 대한 포인터를 사용함으로써 로그 저장 블록(61)으로부터 로그를 얻을 수 있다. 그러므로, 로그 저장 블록(51)의 로그를 용이하게 복원할 수 있다. 상기 설명된 바와 같이, 포인터가 두 배로 되기 때문에, 어느 타이밍에 잠시 중단이 발생하든 로그 정보가 손실되지 않게 할 수 있다. 사전 로그(220A) 및 사후 로그(220B) 중의 어느 하나를 사용함으로써 잠시 중단이 발생하기 전의 상태로 메모리 시스템(10)을 용이하게 복원할 수 있다.
제5 실시예
상기 설명된 실시예에서, 제2 루트 포인터 및 제1 루트 포인터를 다중화하고 저장하는 것이 가능하다.
도 20은 본 발명의 제5 실시예에 따른 제1 루트 포인터의 다중화 예를 도시한 도면이다. 제1 루트 포인터(240A 내지 240C)는 NAND 메모리의 관리 정보 저장 영역의 고정 영역(1261) 내의 3개의 상이한 블록에 저장된다. 이 경우에, 제1 루트 포인터의 갱신이 실행될 때, 각 블록의 기입은 240A, 240B 및 240C의 순서로 실행된다. 제1 루트 포인터 저장 블록이 데이터로 가득 채워질 때, 이 블록을 소거하고, 소거된 블록 내에, 새로운 제2 루트 포인터 저장 블록의 위치를 나타내는 제1 루트 포인터(240)를 기입하는 처리가 실행된다. 이 경우에, 상기 설명된 경우에 서와 같이, 소거 및 기입 처리는 한 블록씩 순서대로 실행된다. 블록의 소거 및 기입 처리가 실행될 때, 제1 루트 포인터를 제1 루트 포인터(240A 내지 240C)로서 3배로 함으로써, 제1 루트 포인터(240)가 한 블록에만 저장되는 상태를 짧게 할 수 있다. 제1 루트 포인터가 3배로 되지만, 제1 루트 포인터는 두 배로 될 수 있고, 또는 4배 이상의 다중화가 제1 루트 포인터에 적용될 수 있다. 제1 루트 포인터(240)를 4배 이상으로 다중화시킴으로써 제1 루트 포인터(240)를 확실하게 두 배로 할 수 있다.
도 21은 본 발명의 제5 실시예에 따른 제2 루트 포인터의 다중화의 예를 도시한 도면이다. 도 21에 도시된 바와 같이, 제2 루트 포인터(230A 및 230B)는 NAND 메모리(12)의 관리 정보 저장 영역(126)의 가변 영역(1262) 내의 2개의 상이한 블록에 저장된다.
예를 들어, 2개의 제2 루트 포인터(230A 및 230B)를 저장하는 블록 내의 동일한 페이지 위치에 동일한 정보가 저장되는 것으로 가정된다. 제2 루트 포인터(230A 및 230B)를 저장하는 타이밍으로서, 제2 루트 포인터(230A)는 스냅샷이 저장되기 전에 저장되고, 제2 루트 포인터(230B)는 스냅샷의 저장이 종료된 후에 저장된다. 이러한 저장 규칙을 설정함으로써, 제2 루트 포인터(230A 및 230B)가 저장되는 블록의 페이지 수가 서로 다를 때, 잠시 중단이 발생했다고 판정할 수 있고, NAND 메모리(12)의 로그(220)를 조사하지 않고 잠시 중단 동안에 시작 처리를 실행할 수 있다. 제2 루트 포인터는 상기 설명에서 두 배로 된다. 그러나, 3배 이상의 다중화가 제 루트 포인터에 적용될 수 있다.
제2 루트 포인터(230)가 다중화될 때, 다중화된 각각의 제2 루트 포인터(230)가 저장되는 블록의 위치를 나타내는 정보는 제1 루트 포인터(240)에 저장된다.
제5 실시예에 따르면, 제1 루트 포인터(240) 및 제2 루트 포인터(230)가 다중화되기 때문에, 각종 정보가 손실되지 않게 할 수 있다는 효과가 있다.
상기 설명에서, 제2 루트 포인터(230)는 스냅샷(210), 사전 로그(220A) 및 사후 로그(220B)의 저장 위치를 나타내는 포인터로서 제공되고, 제1 루트 포인터(240)는 제2 루트 포인터(230)의 저장 위치를 나타내는 포인터로서 제공된다. 그러므로, 포인터는 2 단계로 제공된다. 그러나, 예를 들어, 포인터는 한 단계로 제공될 수 있다.
사전 로그(220A) 및 사후 로그(220B)의 최상위 포인터는 제2 루트 포인터 저장 블록보다는 오히려 스냅샷(210)에 저장될 수 있다.
상기 설명에서, 전하 축적 층은 부동 게이트 형에 제한되지 않고, MONOS(Metal-Oxide-Nitride-Oxide-Semiconductor) 구조와 같은 질화 규소 막 및 기타 시스템을 포함하는 전하 트랩(trap) 형일 수 있다.
상기 설명된 바와 같이, 본 발명에 따르면, 다치 메모리를 포함하는 NAND 플래시 메모리를 갖는 메모리 시스템에서, NAND 플래시 메모리에 저장된 데이터의 저장 위치를 나타내는 관리 정보를 저장하면서 데이타 복원의 신뢰성을 개선할 수 있다는 효과가 있다.
추가 장점 및 변경은 본 분야에 숙련된 기술자들에게 용이하게 생각날 수 있 을 것이다. 그러므로, 광범위한 측면에서의 본 발명은 여기에서 도시되고 설명된 특정 상세 및 각 실시예에 제한되지 않는다. 따라서, 다양한 변경은 첨부된 청구범위 및 그 등가물에 의해 정의된 일반적인 발명의 개념의 정신 또는 범위를 벗어나지 않고서 이루어질 수 있다.

Claims (20)

  1. 메모리 시스템으로서,
    휘발성의 제1 저장 유닛,
    저장된 데이터의 저장 위치를 포함하는 관리 정보를 저장하는 비휘발성의 제2 저장 유닛, 및
    상기 비휘발성의 제2 저장 유닛으로부터 상기 관리 정보를 상기 휘발성의 제1 저장 유닛으로 판독 출력(read out)하여 상기 관리 정보를 갱신하는 동안에 데이터 관리를 실행하는 제어기
    를 포함하고,
    상기 비휘발성의 제2 저장 유닛은 저장된 상기 관리 정보의 저장 위치를 나타내는 저장 위치 정보를 저장하고,
    상기 저장 위치 정보는 상기 관리 정보의 상기 저장 위치를 나타내는 제2 포인터 및 상기 제2 포인터의 저장 위치를 나타내는 제1 포인터를 포함하며,
    상기 제1 포인터는 상기 비휘발성의 제2 저장 유닛 내의 저장 위치가 고정되는 고정 영역 내의 제1 포인터 저장 영역에 저장되고,
    상기 제2 포인터는 상기 비휘발성의 제2 저장 유닛 내의 저장 위치가 가변 되는 가변 영역 내의 제2 포인터 저장 영역에 저장되는, 메모리 시스템.
  2. 제1항에 있어서, 상기 제어기는 미리 결정된 조건이 충족될 때, 상기 휘발성의 제1 저장 유닛에 저장된 상기 관리 정보를 상기 비휘발성의 제2 저장 유닛에 저장하여 상기 제2 포인터를 갱신하는, 메모리 시스템.
  3. 제2항에 있어서,
    상기 제어기는 상기 제2 포인터가 상기 제2 포인터 저장 영역 내에 기입될 수 없을 때, 상기 제1 포인터를 갱신하는, 메모리 시스템.
  4. 제1항에 있어서, 상기 제어기는 상기 제1 포인터를 판독하고 상기 제2 포인터의 상기 저장 위치를 획득한 후 상기 제2 포인터를 판독하고, 상기 관리 정보를 상기 휘발성의 제1 저장 유닛으로 판독 출력하는 경우에 상기 관리 정보의 상기 저장 위치를 획득하는, 메모리 시스템.
  5. 제2항에 있어서,
    상기 비휘발성의 제2 저장 유닛은
    상기 휘발성의 제1 저장 유닛에 저장된 상기 관리 정보를 포함하는 스냅샷(snapshot)을 저장하는 스냅샷 저장 영역, 및
    갱신 전과 후의 상기 관리 정보의 차이 정보를 나타내는 로그(log)들을 저장하는 로그 저장 영역을 포함하고,
    상기 제어기는 상기 미리 결정된 조건이 충족될 때, 상기 스냅샷 저장 영역 또는 상기 로그 저장 영역 내의 상기 스냅샷 또는 상기 로그를 저장하는, 메모리 시스템.
  6. 제5항에 있어서, 상기 제어기는 상기 로그 저장 영역이 상기 로그들로 가득 차면, 상기 스냅샷 저장 영역에 상기 스냅샷을 저장하는, 메모리 시스템.
  7. 제5항에 있어서, 상기 비휘발성의 제2 저장 유닛은 각각이 데이터 소거 유닛인 복수의 블록들을 포함하고,
    상기 제어기는 저장될 상기 로그의 크기에 따라 상기 로그 저장 영역에 대한 블록들을 순차적으로 획득하고, 획득된 제1 블록에 상기 제1 블록 다음에 획득될 제2 블록의 위치를 나타내는 다음 블록 포인터를 기록하는, 메모리 시스템.
  8. 제7항에 있어서,
    상기 로그 저장 영역은
    상기 관리 정보가 갱신되기 전에 저장되는 로그인 갱신전(pre-update) 로그를 저장하는 갱신전 로그 저장 영역,
    상기 갱신전 로그의 내용과 동일한 내용을 갖고, 상기 관리 정보가 갱신된 후에 저장되는 로그인 갱신후(post-update) 로그를 저장하는 갱신 후 로그 저장 영역을 포함하고,
    상기 제어기는
    저장될 상기 갱신전 로그 또는 상기 갱신후 로그의 크기에 따라 순차적으로 그리고 동일한 수로 상기 갱신전 로그 저장 영역 및 상기 갱신후 로그 저장 영역에 대한 상기 블록들을 획득하고,
    획득된 제3 블록에, 상기 갱신전 로그 저장 영역 내의 상기 제3 블록 다음으로 획득될 제4 블록의 위치를 나타내는 제1 다음 블록 포인터를 기록하고,
    획득된 제5 블록에, 상기 갱신후 로그 저장 영역 내의 상기 제5 블록 다음으로 획득될 제6 블록의 위치를 나타내는 제2 다음 블록 포인터를 기록하고,
    상기 제3 블록에, 상기 제6 블록의 위치를 나타내는 제3 다음 블록 포인터를 기록하며,
    상기 제5 블록에, 상기 제4 블록의 위치를 나타내는 제4 다음 블록 포인터를 기록하는, 메모리 시스템.
  9. 제2항에 있어서,
    상기 비휘발성의 제2 저장 유닛은 각각이 데이터 소거 유닛인 복수의 블록들을 포함하고,
    상기 제어기는 상기 제1 포인터 저장 영역 내의 블록이 데이터로 가득 차면, 상기 블록의 데이터가 소거된 후 상기 블록에 새로운 버전의 제1 포인터를 기입하는, 메모리 시스템.
  10. 제9항에 있어서,
    상기 제1 포인터는 다중화되어 상기 제1 포인터 저장 영역 내의 상이한 블록들에 저장되고,
    상기 제어기는 상기 제1 포인터가 갱신되면, 상기 제1 포인터 저장 영역 내의 각각의 다중화된 블록들 내에 순서대로 상기 제1 포인터를 기록하는, 메모리 시스템.
  11. 제10항에 있어서, 상기 제어기는 상기 제1 포인터 저장 영역 내의 상기 블록이 데이터로 가득 차면, 상기 다중화된 블록들의 각각에 대해 순서대로, 상기 제1 포인터 저장 영역 내의 상기 블록의 데이터를 소거한 후에, 상기 블록에 새로운 버전의 제1 포인터를 기입하는 처리를 실행하는, 메모리 시스템.
  12. 제2항에 있어서,
    상기 비휘발성의 제2 저장 유닛은 각각이 데이터 소거 유닛인 복수의 블록들을 포함하고,
    상기 제2 포인터는 다중화되어 상기 제2 포인터 저장 영역 내의 상이한 블록들에 저장되며,
    상기 제1 포인터는 상기 제2 포인터 저장 영역 내의 다중화된 상기 블록들 모두의 저장 위치들을 나타내는, 메모리 시스템.
  13. 제1항에 있어서,
    상기 휘발성의 제1 저장 유닛은 DRAM(Dynamic Random Access Memory)이고,
    상기 비휘발성의 제2 저장 유닛은 NAND형 플래시 메모리인, 메모리 시스템.
  14. 메모리 시스템으로서,
    휘발성의 제1 저장 유닛,
    각각이 데이터 소거 유닛인 복수의 블록들을 포함하고, 저장된 데이터의 저장 위치를 포함하는 관리 정보를 저장하는 비휘발성의 제2 저장 유닛, 및
    상기 비휘발성의 제2 저장 유닛으로부터 상기 관리 정보를 상기 휘발성의 제1 저장 유닛으로 판독 출력하여 상기 관리 정보를 갱신하는 동안 데이터 관리를 실행하는 제어기
    를 포함하고,
    상기 비휘발성의 제2 저장 유닛은
    미리 결정된 조건이 충족될 때 획득되고, 상기 휘발성의 제1 저장 유닛 내의 상기 관리 정보인 스냅샷을 저장하는 스냅샷 저장 영역,
    상기 휘발성의 제1 저장 유닛 내에 저장된 상기 관리 정보에서 변경이 발생할 때, 상기 변경 전과 후의 차이 정보로서 로그들을 저장하는 로그 저장 영역, 및
    상기 스냅샷 저장 영역 및 상기 로그 저장 영역의 저장 위치를 나타내는 포인터를 저장하는 포인터 저장 영역을 포함하고,
    상기 제어기는 저장될 상기 로그들의 크기에 따라 상기 로그 저장 영역에 대한 블록들을 순차적으로 획득하며,
    획득된 제1 블록에, 상기 제1 블록 다음으로 획득될 제2 블록의 위치를 나타내는 다음 블록 포인터를 기록하는, 메모리 시스템.
  15. 제14항에 있어서,
    상기 로그 저장 영역은
    상기 관리 정보가 갱신되기 전에 저장된 로그인 갱신전 로그를 저장하는 갱신전 로그 저장 영역과,
    상기 갱신전 로그의 내용과 동일한 내용을 갖고, 상기 관리 정보가 갱신된 후에 저장된 로그인 갱신후 로그를 저장하는 갱신후 로그 저장 영역을 포함하고,
    상기 제어기는
    저장될 상기 갱신전 로그 또는 상기 갱신후 로그의 크기에 따라 순차적으로 그리고 동일한 수로 상기 갱신전 로그 저장 영역 및 상기 갱신후 로그 저장 영역에 대한 블록들을 획득하고,
    획득된 제3 블록에, 상기 갱신전 로그 저장 영역 내의 상기 제3 블록 다음으로 획득될 제4 블록의 위치를 나타내는 제1 다음 블록 포인터를 기록하고,
    획득된 제5 블록에, 상기 갱신후 로그 저장 영역 내의 상기 제5 블록 다음으로 획득될 제6 블록의 위치를 나타내는 제2 다음 블록 포인터를 기록하고,
    상기 제3 블록에, 상기 제6 블록의 위치를 나타내는 제3 다음 블록 포인터를 기록하며,
    상기 제5 블록에, 상기 제4 블록의 위치를 나타내는 제4 다음 블록 포인터를 기록하는, 메모리 시스템.
  16. 제14항에 있어서,
    상기 포인터 저장 영역은 제1 포인터 저장 영역 및 제2 포인터 저장 영역을 포함하고, 상기 제2 포인터 저장 영역은 상기 스냅샷 저장 영역 및 상기 로그 저장 영역의 상기 저장 위치를 나타내는 제2 포인터를 포함하고, 상기 제1 포인터 저장 영역은 상기 제2 포인터의 저장 위치를 나타내는 제1 포인터를 포함하며,
    상기 제1 포인터 저장 영역은 블록들을 포함하고, 블록의 위치가 상기 비휘발성의 제2 저장 유닛 내에 고정되는 고정 영역 내에 제공되고,
    상기 제어기는 상기 제1 포인터 저장 영역 내의 블록이 데이터로 가득 차면, 상기 블록의 데이터가 소거된 후 상기 블록에 새로운 버전의 제1 포인터를 기입하는, 메모리 시스템.
  17. 제16항에 있어서,
    상기 제1 포인터는 다중화되어 상기 제1 포인터 저장 영역 내의 상이한 블록들에 저장되고,
    상기 제어기는 상기 제1 포인터가 갱신되면, 상기 제1 포인터 저장 영역 내의 각각의 다중화된 블록들 내에 순서대로 상기 제1 포인터를 기록하는, 메모리 시스템.
  18. 제17항에 있어서, 상기 제어기는 상기 제1 포인터 저장 영역 내의 상기 블록이 데이터로 가득 차면, 다중화된 상기 블록들의 각각에 대해 순서대로, 상기 제1 포인터 저장 영역 내의 상기 블록의 데이터를 소거한 후에, 상기 블록에 새로운 버전의 제1 포인터를 기입하는 처리를 실행하는, 메모리 시스템.
  19. 제14항에 있어서,
    상기 포인터 저장 영역은 제1 포인터 저장 영역 및 제2 포인터 저장 영역을 포함하고, 상기 제2 포인터 저장 영역은 상기 스냅샷 저장 영역 및 상기 로그 저장 영역의 상기 저장 위치를 나타내는 제2 포인터를 포함하고, 상기 제1 포인터 저장 영역은 상기 제2 포인터의 저장 위치를 나타내는 제1 포인터를 포함하며,
    상기 제2 포인터 저장 영역은 블록들을 포함하고, 블록의 위치가 상기 비휘발성의 제2 저장 유닛 내에서 가변되는 가변 영역 내에 제공되고,
    상기 제2 포인터는 다중화되어 상기 제2 포인터 저장 영역 내의 상이한 블록들에 저장되며,
    상기 제1 포인터는 상기 제2 포인터 저장 영역 내의 다중화된 상기 블록들 모두의 저장 위치들을 나타내는, 메모리 시스템.
  20. 제14항에 있어서,
    상기 휘발성의 제1 저장 유닛은 DRAM(Dynamic Random Access Memory)이고,
    상기 비휘발성의 제2 저장 유닛은 NAND형 플래시 메모리인, 메모리 시스템.
KR1020097017866A 2008-02-29 2009-02-10 메모리 시스템 KR101103110B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2008051267A JP2009211188A (ja) 2008-02-29 2008-02-29 メモリシステム
JPJP-P-2008-051267 2008-02-29
JP2008051378A JP2009211202A (ja) 2008-02-29 2008-02-29 メモリシステム
JPJP-P-2008-051378 2008-02-29
PCT/JP2009/052590 WO2009107506A1 (en) 2008-02-29 2009-02-10 Memory system

Publications (2)

Publication Number Publication Date
KR20090117926A KR20090117926A (ko) 2009-11-16
KR101103110B1 true KR101103110B1 (ko) 2012-01-04

Family

ID=41602091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097017866A KR101103110B1 (ko) 2008-02-29 2009-02-10 메모리 시스템

Country Status (6)

Country Link
US (3) US8438343B2 (ko)
EP (2) EP2309392A1 (ko)
KR (1) KR101103110B1 (ko)
CN (1) CN101681313A (ko)
TW (1) TWI418983B (ko)
WO (1) WO2009107506A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8285970B2 (en) * 2008-11-06 2012-10-09 Silicon Motion Inc. Method for managing a memory apparatus, and associated memory apparatus thereof
CN101887461A (zh) * 2010-06-29 2010-11-17 苏州佳世达电通有限公司 档案存取方法及其电子装置
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128816A (ja) 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
US9092486B2 (en) * 2014-01-02 2015-07-28 Advanced Micro Devices, Inc. Extensible I/O activity logs
US10430092B1 (en) * 2014-07-28 2019-10-01 Rambus Inc. Memory controller systems with nonvolatile memory for storing operating parameters
EP3754508B1 (en) * 2015-12-30 2023-03-22 Huawei Technologies Co., Ltd. Access request processing method and apparatus, and computer system
CN108431783B (zh) 2015-12-30 2020-09-18 华为技术有限公司 访问请求处理方法、装置及计算机系统
CN106897338A (zh) 2016-07-04 2017-06-27 阿里巴巴集团控股有限公司 一种针对数据库的数据修改请求处理方法及装置
KR20180030319A (ko) * 2016-09-13 2018-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20180030329A (ko) * 2016-09-13 2018-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20190004094A (ko) * 2017-07-03 2019-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN108376121B (zh) * 2018-03-01 2021-10-22 曲阜师范大学 一种Flash存储器的数据存储方法
CN111181874B (zh) * 2018-11-09 2023-10-10 深圳市中兴微电子技术有限公司 一种报文处理方法、装置及存储介质
CN114442958B (zh) * 2022-01-28 2023-08-11 苏州浪潮智能科技有限公司 一种分布式存储系统的存储优化方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285600A (ja) * 2005-03-31 2006-10-19 Tokyo Electron Device Ltd 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2778786B2 (ja) * 1990-03-02 1998-07-23 富士通株式会社 データ更新・復元処理方式
US5404485A (en) 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
JP3072722B2 (ja) 1997-06-20 2000-08-07 ソニー株式会社 フラッシュメモリを用いるデータ管理装置及びデータ管理方法並びにフラッシュメモリを用いる記憶媒体
JPH11203191A (ja) * 1997-11-13 1999-07-30 Seiko Epson Corp 不揮発性記憶装置、不揮発性記憶装置の制御方法、および、不揮発性記憶装置を制御するプログラムを記録した情報記録媒体
JP4085478B2 (ja) * 1998-07-28 2008-05-14 ソニー株式会社 記憶媒体及び電子機器システム
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
JP2003280825A (ja) 2002-03-22 2003-10-02 Fujitsu Ltd ストレージシステム
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
US7440966B2 (en) * 2004-02-12 2008-10-21 International Business Machines Corporation Method and apparatus for file system snapshot persistence
US7814057B2 (en) 2005-04-05 2010-10-12 Microsoft Corporation Page recovery using volume snapshots and logs
US8244958B2 (en) * 2005-05-09 2012-08-14 Sandisk Il Ltd. Method and system for facilitating fast wake-up of a flash memory system
US7509474B2 (en) * 2005-06-08 2009-03-24 Micron Technology, Inc. Robust index storage for non-volatile memory
US8055833B2 (en) * 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US7366887B2 (en) * 2005-07-11 2008-04-29 Lenovo (Singapore) Pte. Ltd. System and method for loading programs from HDD independent of operating system
JP5076411B2 (ja) * 2005-11-30 2012-11-21 ソニー株式会社 記憶装置、コンピュータシステム
US7761740B2 (en) * 2007-12-13 2010-07-20 Spansion Llc Power safe translation table operation in flash memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285600A (ja) * 2005-03-31 2006-10-19 Tokyo Electron Device Ltd 記憶装置、メモリ管理装置、メモリ管理方法及びプログラム

Also Published As

Publication number Publication date
US9043564B2 (en) 2015-05-26
CN101681313A (zh) 2010-03-24
US20110185107A1 (en) 2011-07-28
KR20090117926A (ko) 2009-11-16
US8438343B2 (en) 2013-05-07
US8738867B2 (en) 2014-05-27
EP2111583A4 (en) 2010-06-02
TWI418983B (zh) 2013-12-11
TW200951717A (en) 2009-12-16
WO2009107506A1 (en) 2009-09-03
US20140208013A1 (en) 2014-07-24
EP2111583A1 (en) 2009-10-28
US20130290659A1 (en) 2013-10-31
EP2309392A1 (en) 2011-04-13

Similar Documents

Publication Publication Date Title
KR101103110B1 (ko) 메모리 시스템
US11573712B2 (en) Memory system storing management information and method of controlling same
US8285954B2 (en) Memory system managing a plurality of logs
KR101099804B1 (ko) 메모리 시스템
KR101102155B1 (ko) 메모리 시스템
KR101103201B1 (ko) 메모리 시스템
JP2009211202A (ja) メモリシステム
JP2009211188A (ja) メモリシステム
JP2009211218A (ja) メモリシステムおよび瞬断判定方法
JP2009211213A (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