KR101186788B1 - 메모리 시스템 및 메모리 시스템의 제어 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 제어 방법 Download PDF

Info

Publication number
KR101186788B1
KR101186788B1 KR1020117005594A KR20117005594A KR101186788B1 KR 101186788 B1 KR101186788 B1 KR 101186788B1 KR 1020117005594 A KR1020117005594 A KR 1020117005594A KR 20117005594 A KR20117005594 A KR 20117005594A KR 101186788 B1 KR101186788 B1 KR 101186788B1
Authority
KR
South Korea
Prior art keywords
log
storage means
data
block
management
Prior art date
Application number
KR1020117005594A
Other languages
English (en)
Other versions
KR20110050504A (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 KR20110050504A publication Critical patent/KR20110050504A/ko
Application granted granted Critical
Publication of KR101186788B1 publication Critical patent/KR101186788B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

시스템 기동 후 최초의 차분 로그가 제2 기억 수단에 기록되기 전에, 시스템이 동작하고 있다는 것을 나타내는 제1 로그가 제2 기억 수단에 기록되고, 정상적인 시스템 정지 시에, 시스템이 정지하는 것을 나타내는 제2 로그가 차분 로그에 계속해서 제2 기억 수단에 기록되고, 시스템 기동시, 제2 기억 수단에서의 제1 및 제2 로그들의 기록 상태에 기초하여, 이전회 정상적인 시스템 정지가 수행되었는지, 또는 부정한 전원 차단 시퀀스가 수행되었는 지의 여부가 판정되어, 부정한 전원 차단을 용이하고 신뢰성있게 검출한다.

Description

메모리 시스템 및 메모리 시스템의 제어 방법{MEMORY SYSTEM AND METHOD OF CONTROLLING MEMORY SYSTEM}
본 발명은 비휘발성 반도체 메모리를 포함하는 메모리 시스템 및 메모리 시스템의 제어 방법에 관한 것이다.
일부 퍼스널 컴퓨터(PC)는 하드 디스크 장치를 2차 기억 장치로서 채용한다. 이러한 PC에서, 하드 디스크 장치에 저장되었던 데이터를, 어떠한 장해에 의해 무효로 되는 것을 방지하기 위하여 백업(back up)하는 기술이 알려져 있다. 예를 들면, 하드 디스크 장치 내의 데이터의 변경 동작이 검출되면, 변경 전의 데이터의 백업 카피로서 스냅샷(sanpshot)이 취해져, 데이터에 행해진 변경의 로그(log)가 생성된다. 다음, 소정 시간마다 새로운 스냅샷이 취해지고, 새로운 스냅샷이 취해지기 전의 과거에 취해진 로그를 무효로 하고, 새로운 로그를 생성하는 처리가 반복된다(예를 들면, 특허 문헌 1: 미국 특허 출원 공개 제2006/0224636호의 명세서 참조). 이러한 이유로 데이터가 무효로 된 경우, 스냅샷과 로그를 참조하여 데이터를 복원할 수 있다.
최근, 비휘발성 반도체 기억 장치로서의 NAND형 플래시 메모리의 용량이 급격히 증가해 왔다. 그 결과, NAND형 플래시 메모리를 탑재한 메모리 시스템으로서의 SSD(Solid State Drive)가 주목받고 있다. 플래시 메모리는, 자기 디스크 장치와 비교하여, 고속 및 경량과 같은 이점을 갖는다. 그러나, NAND형 플래시 메모리를 2차 기억 장치로서 갖는 이러한 PC에 기억된 데이터의 백업에, 하드 디스크 장치를 2차 기억 장치로서 갖는 PC에 기억된 데이터의 백업의 경우와 같이, 특허 문헌 1에 개시된 기술을 적용할 수 없다. 이것은, NAND형 플래시 메모리의 용량을 증가시키기 위하여, 하나의 메모리 셀에 2비트 이상의 복수의 데이터(다치 데이터)가 저장될 수 있는 다중값 메모리 기술이 채용되고 있기 때문이다(예를 들면, 특허 문헌 2 : 일본 특허 출원 공개 제2004-192789호 참조).
본 발명의 일 태양은, 휘발성인 제1 기억 수단; 비휘발성이며, 제1 기억 수단에 접속되는 제2 기억 수단; 제2 기억 수단에서 논리 어드레스가 데이터 기억 위치에 연관되는 관리 테이블에 기초하여, 제2 기억 수단으로부터의 데이터 판독 및 제2 기억 수단으로의 데이터 기록을 수행하는 판독/기록 제어 수단; 제1 기억 수단에 관리 테이블을 전송하고, 제1 기억 수단 상의 관리 테이블을 갱신하는 경우가 발생하면, 관리 테이블의 갱신 전후의 차분 정보를 차분 로그로서 제1 기억 수단에 기억하는 로그 제어 수단; 제1 조건이 성립될 때에, 차분 로그를 제2 기억 수단에 기억하고, 제1 기억 수단에 기억된 관리 테이블에 차분 로그를 반영하는 커밋(commit) 처리를 실행하는 로그 반영 수단; 시스템 기동 후 로그 반영 수단이 차분 로그를 제2 기억 수단에 기억하기 전에, 제1 로그를 제2 기억 수단에 기억하고, 정상적인 시스템 정지가 수행될 때, 제2 로그를 제2 기억 수단에 기억하는 동작 상태 관리 수단; 및 제2 기억 수단에 기억된 제1 로그, 차분 로그, 및 제2 로그 중 하나 이상을 검출하고, 정상적인 시스템 정지가 수행되었는 지의 여부를 판정하는 관리 정보 복원 수단을 포함하는 메모리 시스템을 제공하는 것이다.
도 1은 SSD의 구성예의 블록도이다.
도 2a 및 도 2b는, NAND 메모리 칩에 포함되는 1개의 블록의 구성예와, 4치 데이터 기억 시스템에서의 임계값 분포를 도시하는 도면이다.
도 3은 드라이브 제어 회로의 하드웨어 내부 구성예의 블록도이다.
도 4는 프로세서의 기능 구성예의 블록도이다.
도 5는 NAND 메모리 및 DRAM(Dynamic Random Access Memory) 내에 형성된 기능 구성의 블록도이다.
도 6은 LBA 논리 어드레스를 도시한 도면이다.
도 7은 데이터 관리 수단에서의 관리 테이블들의 구성예를 도시하는 도면이다.
도 8은 스냅샷과 로그의 생성 상태를 개념적으로 도시하는 도면이다.
도 9는 라이트 캐시(write cache, WC)에서의 기록 처리를 도시하는 흐름도이다.
도 10은 WC로부터 주 기억 영역(MS)으로의 기록 처리의 동작 순서를 도시하는 흐름도이다.
도 11은 WC로부터 MS로의 기록 처리의 동작 개념을 도시하는 개략도이다.
도 12는 WC로부터 전단(前段) 기억 영역(FS)으로의 저밀도 트랙의 기록 처리의 동작 순서를 도시하는 흐름도이다.
도 13은 WC로부터 FS로의 저밀도 트랙의 기록 처리의 동작 개념을 도시하는 개략도이다.
도 14는 FS로부터 중단 기억 영역(IS)로의 데이터 재배치의 동작 순서를 도시하는 흐름도이다.
도 15는 FS로부터 IS로의 데이터 재배치의 동작 개념을 도시하는 개략도이다.
도 16은 IS에서의 조각 모음(defragmentation) 처리와 컴팩션(compaction) 처리의 동작 순서를 도시하는 흐름도이다.
도 17은 다른 관리 테이블들을 도시하는 도면이다.
도 18은 본 발명의 주요부의 구성을 도시하는 기능 블록도이다.
도 19는 액티브 로그, 스탠바이 로그, 및 차분 로그를 기억하는 순서를 설명하는 흐름도이다.
도 20a 및 도 20b는 정상 전원 차단 시퀀스가 수행될 때 및 이상 전원 차단이 발생했을 때의 액티브 로그와 스탠바이 로그 각각을 도시하는 도면이다.
도 21은 FFB(Fragment Free Block)를 도시하는 개념도이다.
도 22는 시스템 기동 시 데이터 관리 수단에 의하여 수행되는 처리를 설명하는 흐름도이다.
도 23은 SSD가 탑재된 PC의 전체도이다.
도 24는 SSD가 탑재된 PC의 시스템 구성예의 도면이다.
다중값 메모리를 구성하는 메모리 셀은, 채널 영역 상에, 게이트 절연막, 부동 게이트 전극, 게이트간 절연막, 및 제어 게이트 전극이 순서대로 적층된 적층 게이트 구조를 갖는 전계 효과 트랜지스터 구조를 갖고, 부동 게이트 전극에 축적되는 전자들수에 따라서 복수의 임계 전압들이 설정될 수 있다. 복수의 임계 전압들에 기초하여 다중값 기억을 가능하게 하기 위해서, 하나의 데이터에 대응하는 임계 전압의 분포를 매우 좁게 해야할 필요가 있다.
PC와 같은 호스트 기기에 의하여 기록된 데이터는, 시간적 국소성 및 영역적 국소성 모두를 갖는다. 따라서, 데이터가 기록될 때, 데이터가 외부로부터 지정된 어드레스에 바로 기록되면, 특정 영역에 재기록, 즉 소거 처리가 일시적으로 집중하여, 소거 횟수의 편향이 증가한다. 따라서, NAND형 플래시 메모리를 이용하는 메모리 시스템에서, 데이터 갱신 개소를 균등하게 분산시키는 웨어 레벨링(wear leveling)이라고 불리는 처리가 행해진다. 웨어 레벨링 처리에서, 예컨대, 호스트 기기에 의하여 지정되는 논리 어드레스는, 데이터 갱신 개소가 균등하게 분산되도록, 비휘발성 반도체 메모리의 물리 어드레스로 변환된다.
이러한 어드레스 변환에서, 외부에서 공급되는 논리 어드레스(LBA)와, NAND형 플래시 메모리에 데이터가 기억되어 있는 위치를 나타내는 물리 어드레스 간의 대응 관계를 나타내는 어드레스 변환 테이블과 같은 관리 테이블을 이용함으로써, 데이터의 기억 위치가 자주 관리된다. 관리 테이블은, 기동 시, 비휘발성 NAND형 플래시 메모리로부터 DRAM(Dynamic Random Access Memory)과 같은 메모리에 로딩되고, 데이터가 기록될 때마다 갱신된다. 어드레스 변환 테이블에서의 대응 관계는, 예컨대 전원 차단이 지나도 대응 관계를 사용하기 위하여, 스냅샷 및 로그와 같은 백업 기술을 사용함으로써 백업될 필요가 있다.
SSD에서, 데이터의 기록 중에 갑자기 전원 차단이 발생된 경우에도(부정한 전원 차단 시에도), 관리 정보의 정합성을 유지하여, 이미 기록되어 있던 데이터를 신뢰성있게 보호해야 한다. 따라서, SSD에서도, 정상적인 전원 차단 시퀀스가 수행되었는 지, 또는 부정한 전원 차단 시퀀스가 수행되었는 지의 여부를 용이하고 신뢰성있게 검출하는 방법이 요구된다.
본 발명에 따른 메모리 시스템의 예시적인 실시예들을 첨부 도면들을 참조하여 이하에 상세히 설명한다. 본 발명은 이들 실시예들에 제한되지 않는다.
본 발명의 실시예들을 도면들을 참조하여 이하에 설명한다. 다음 설명에서, 동일한 기능들 및 구성들을 갖는 구성 요소들은 동일한 도면 부호들 및 기호들에 의하여 나타낸다. 필요시만 구성 요소들을 중복 설명한다.
우선, 본 명세서에서 사용되는 용어를 정의한다.
물리 페이지: NAND형 플래시 메모리에서 일괄하여 기록/판독될 수 있는 단위.
논리 페이지: SSD에 설정되는 기록 및 판독 단위 세트. 논리 페이지는 1이상의 물리 페이지들과 연관된다.
물리 블록: NAND형 플래시 메모리에서 독립적으로 소거 가능한 최소 단위. 물리 블록은 복수의 물리 페이지들을 포함한다.
논리 블록: SSD에 설정되는 소거 단위. 논리 블록은 1 이상의 물리 블록들과 연관된다. 논리 블록은 복수의 논리 페이지들을 포함한다.
섹터: 호스트부터의 최소 액세스 단위. 섹터 사이즈는, 예컨대 512바이트(B)이다.
클러스터: SSD에서 "작은 데이터(fine grained data)"를 관리하는 관리 단위. 클러스터 사이즈는, 섹터 사이즈 이상이며, 호스트의 OS(operating system)가 채용하는 파일 시스템의 데이터 관리 단위, 또는 논리 페이지 사이즈와 동일하도록 설정된다. 예컨대, 클러스터 사이즈는, 클러스터 사이즈의 2 이상의 자연수배의 사이즈가 논리 페이지 사이즈이도록 설정될 수 있다.
트랙: SSD에서 "큰 데이터(coarse grained data)"를 관리하는 관리 단위. 트랙 사이즈는, 클러스터 사이즈의 2 이상의 자연수배의 사이즈가 트랙 사이즈이도록 설정된다. 예컨대, 트랙 사이즈가 논리 블록 사이즈와 동일하도록 설정될 수 있다.
프리 블록(FB): 내부에 유효 데이터를 포함하지 않고, 용도 미할당된 논리 블록. 프리 블록은 다음의 2가지 형태, 즉 CFB(Complete Free Block) 및 FFB(Fragment Free Block)를 포함한다.
컴플리트 프리 블록(Complete Free Block, CFB): 재이용을 위해 소거 동작이수행될 필요가 있는 프리 블록. 소거 동작의 실행 후, 논리 블록의 선두에 위치되는 논리 페이지로부터 기록이 수행될 수 있다.
프래그먼트 프리 블록(Fragment Free Block, FFB): 데이터 미기록의 논리 페이지가 남아 있고, 소거 동작을 실행하지 않고 재이용이 가능한 프리 블록. 나머지의 데이터 미기록의 논리 페이지에 기록하는 것이 가능하다.
배드 블록(Bad Block, BB): NAND형 플래시 메모리 상의, 다수의 오류들로 인하여 기억 영역으로서 사용될 수 없는 물리 블록. 예컨대, 소거 동작이 정상적으로 종료되지 않은 물리 블록이 배드 블록(BB)으로서 등록된다.
기록 효율: 소정 기간에서 호스트로부터 기록된 데이터량에 대하여 논리 블록의 소거량의 통계값. 기록 효율이 작을 수록, NAND형 플래시 메모리의 소모도가 작다.
유효 클러스터: 논리 어드레스에 대응하는 최신 데이터(클러스터 사이즈의 데이터)를 기억하는 클러스터.
무효 클러스터: 동일 논리 어드레스를 갖는 데이터가 상이한 장소에 기록되는 결과로서 참조되지 않을 비최신 데이터(클러스터 사이즈의 데이터)를 기억하는 클러스터.
유효 트랙: 논리 어드레스에 대응하는 최신 데이터(트랙 사이즈의 데이터)를 기억하는 트랙.
무효 트랙: 동일 논리 어드레스를 갖는 데이터가 상이한 장소에 기록되는 결과로서 참조되지 않을 비최신 데이터(트랙 사이즈의 데이터)를 기억하는 트랙.
MLC(Multi Level Cell) 모드: 다중값 기억이 가능한 NAND형 플래시 메모리에 있어서, 통상적으로, 상위 페이지 및 하위 페이지를 사용하여 기록을 하는 모드. MLC 모드의 논리 블록은 MLC 모드에서 사용되는 1 이상의 물리 블록들과 연관시킴으로써 구성된다.
의사 SLC(Single Level Cell) 모드: 다중값 기억이 가능한 NAND형 플래시 메모리에 있어서, 하위 페이지만을 사용하여 기록을 하는 모드. 의사 SLC 모드의 논리 블록은, 의사 SLC 모드에서 사용되는 1 이상의 물리 블록들과 연관시킴으로써 구성된다. 한번 의사 SLC 모드에서 사용된 물리 블록이라도 소거 동작 후 MLC 모드에서 사용될 수 있다.
(제1 실시예)
도 1은, SSD(100)의 구성예의 블록도이다. SSD(100)는, ATA 인터페이스(Advanced Technology Attachment Interface, ATA I/F)(2)와 같은 메모리 접속 인터페이스를 통해 PC 혹은 CPU(Central Processing Unit) 코어와 같은 호스트 장치(이하, 호스트(1)라 한다)(1)와 접속되어, 호스트(1)의 외부 메모리로서 기능한다. SSD(100)는, RS232C IF와 같은 통신 인터페이스(3)를 통해, 디버그 및 제조 검사용 기기(200)로 데이터를 송신하고, 이로부터 데이터를 수신할 수 있다. SSD(100)는, 비휘발성 반도체 메모리로서의 NAND형 플래시 메모리(이하, NAND 메모리라 한다)(10), 컨트롤러로서의 드라이브 제어 회로(4), 휘발성 반도체 메모리로서의 DRAM(20), 전원 회로(5), 상태 표시용 LED(Light Emitting Diode)(6), 드라이브 내의 온도를 검출하는 온도 센서(7), 및 퓨즈(8)를 포함한다.
전원 회로(5)는, 호스트(1) 측의 전원 회로로부터 공급되는 외부 직류(DC) 전원으로부터 복수의 상이한 내부 DC 전원 전압들을 생성하여, 이들 내부 DC 전원 전압들을 SSD(100) 내 각 회로들에 공급한다. 전원 회로(5)는, 외부 전원의 상승 에지를 검출하고, 파워 온 리셋 신호를 생성하고, 이 파워 온 리셋 신호를 드라이브 제어 회로(4)에 공급한다. 호스트(1) 측의 전원 회로와 SSD(100) 내의 전원 회로(5) 사이에 퓨즈(8)가 제공된다. 외부 전원 회로로부터 과전류가 공급된 경우, 퓨즈(8)가 접속 해제되어, 내부 회로들의 오동작을 방지한다.
이 경우, NAND 메모리(10)는, 4 병렬 동작들을 하는 4개의 병렬 동작 요소들(10a ~ 10d)을 포함한다, 이 병렬 동작 요소들(10a ~ 10d)은, 4개의 채널들(ch0 ~ ch3)에 의해서 드라이브 제어 회로(4)에 접속되어 있다. 이 병렬 동작 요소들(10a ~ 10d) 각각은, 뱅크 인터리브가 가능한 복수의 뱅크들(이 경우, 4개 뱅크들(Bank0 ~ Bank3)을 포함한다. 각 뱅크는, 복수의 NAND 메모리 칩들(이 경우, 2개 메모리 칩들(Chip0, Chip1))을 포함한다. 각 메모리 칩은, 예컨대, 각각 복수의 물리 블록들을 포함하는 플레인(plane)(0)과 플레인(1)의 2개의 영역(district)들로 분할되어 있다. 플레인(0) 및 플레인(1)은, 상호 독립된 주변 회로들(예컨대, 로우 디코더, 컬럼 디코더, 페이지 버퍼, 및 데이터 캐시)을 포함하고, 배속 모드를 사용함으로써 동시에 소거, 기록, 및 판독을 할 수 있다. 이러한 방식으로, NAND 메모리(10)의 각 NAND 메모리 칩은, 복수의 채널들에 의한 병렬 동작, 복수의 뱅크들에 의한 뱅크 인터리브 동작, 및 복수의 플레인들을 이용하는 배속 모드에 의한 병렬 동작을 수행할 수 있다. 각 메모리 칩은, 4개의 플레인들로 분할될 수 있고, 또는 분할되지 않고 구성될 수 있다.
DRAM(20)은, 호스트(1)와 NAND 메모리(10) 사이의 데이터 전송용 캐시, 및 작업 영역용 메모리로서 기능한다. DRAM(20)의 작업 영역용 메모리에, 기동 시 등에서 NAND 메모리(10)에 기억된 각종 관리 테이블들을 로딩함으로써 획득된 마스터 테이블(스냅샷), 관리 테이블의 변경 차분인 로그 정보 등이 기억된다. DRAM(20) 대신에, FeRAM(Ferroelectric Random Access Memory), MRAM(Magnetoresistive Random Access Memory), PRAM(Phase change Random Access Memory) 등이 사용될 수 있다. 드라이브 제어 회로(4)는, 호스트(1)와 NAND 메모리(10) 간에 DRAM(20)을 통해 데이터 전송 제어를 하고, SSD(100) 내의 각 구성 요소들을 제어한다. 드라이브 제어 회로(4)는, 상태 표시용 LED(6)에 스테이터스 표시용 신호를 공급한다. 드라이브 제어 회로(4)는 또한, 전원 회로(5)로부터 파워 온 리셋 신호를 수신하여, 리셋 신호 및 클록 신호를 자신의 회로 및 SSD(100) 내의 각 부들에 공급하는 기능을 갖는다.
각 NAND 메모리 칩은, 데이터 소거 단위로서 복수의 물리 블록들을 배치함으로써 구성된다. 도 2a는, NAND 메모리 칩에 포함되는 1개의 물리 블록의 구성예를 도시하는 등가 회로도이다. 각 물리 블록은, X 방향을 따라서 순서대로 배열된 (p+1)개의 NAND 스트링들을 포함한다(p는 0 이상의 정수). 각 (p+1)개의 NAND 스트링들에 포함되는 선택 트랜지스터들(ST1)은, 드레인들이 비트선들(BL0 ~ BLp)에 각각 접속되고, 게이트들이 게이트선(SGD)에 공통으로 접속되어 있도록 되어 있다. 또한, 선택 트랜지스터들(ST2)은, 소스들이 소스선(SL)에 공통 접속되고, 게이트들이 게이트선(SGS)에 공통 접속되어 있도록 되어 있다.
메모리 셀 트랜지스터들(MT) 각각은, 반도체 기판 상에 형성된 적층 게이트 구조를 포함하는 MOSFET(Metal Oxide Semiconductor Field Effect Transistor)을 포함한다. 적층 게이트 구조는, 반도체 기판 상에 게이트 절연막을 개재하여 형성된 전하 축적층(charge storage layer)(부동 게이트 전극), 및 전하 축적층 상에 게이트간 절연막을 개재하여 형성된 제어 게이트 전극을 포함하고 있다. 메모리 셀 트랜지스터(MT)에서, 부동 게이트 전극에 축적되는 전자들수에 따라서 임계 전압이 변화된다. 메모리 셀 트랜지스터(MT)는 이 임계 전압의 차이에 따라서 데이터를 기억한다. 메모리 셀 트랜지스터(MT)는, 1 비트를 기억하도록 구성될 수 있고, 또는 다중값들(2 비트 이상의 데이터)을 기억하도록 구성될 수 있다.
메모리 셀 트랜지스터(MT)는, 부동 게이트 전극을 갖는 구조에 한하지 않고, MONOS(Metal-Oxide-Nitride-Oxide-Silicon)형과 같은, 전하 축적층으로서 질화물막 계면이 전자들을 트랩(trap)하게 함으로써 임계값을 조정할 수 있는 구조일 수 있다. 유사하게, MONOS 구조의 메모리 셀 트랜지스터(MT)는 1 비트를 기억하도록 구성될 수 있고, 또는 다중값들(2 비트 이상의 데이터)을 기억하도록 구성될 수 있다.
NAND 스트링들 각각에서, (q+1)개의 메모리 셀 트랜지스터들(MT)은, 선택 트랜지스터(ST1)의 소스와 선택 트랜지스터(ST2)의 드레인 사이에, 그 전류 경로들이 직렬로 접속되도록 배치되어 있다. 즉, 메모리 셀 트랜지스터들(MT)은, 메모리 셀 트랜지스터들(MT)의 인접하는 것들이 확산 영역(소스 영역 또는 드레인 영역)을 공유하도록, Y 방향으로 직렬 접속된다.
가장 드레인 측에 위치되는 메모리 셀 트랜지스터(MT)로부터 순서대로, 메모리 셀 트랜지스터들(MT)의 제어 게이트 전극들이 워드선들(WL0 ~ WLq)에 각각 접속되어 있다. 따라서, 워드선(WL0)에 접속된 메모리 셀 트랜지스터(MT)의 드레인은 선택 트랜지스터(ST1)의 소스에 접속된다. 워드선(WLq)에 접속된 메모리 셀 트랜지스터(MT)의 소스는 선택 트랜지스터(ST2)의 드레인에 접속되어 있다.
워드선들(WL0 ~ WLq)은, 물리 블록 내의 NAND 스트링들 사이에서, 메모리 셀트랜지스터(MT)의 제어 게이트 전극들을 공통으로 접속하고 있다. 즉, 블록에서 동일 행에 있는 메모리 셀 트랜지스터들(MT)의 제어 게이트 전극들은, 동일한 워드선(WL)에 접속된다. 이 동일한 워드선(WL)에 접속되는 (p+1)개의 메모리 셀 트랜지스터들(MT)은 1 페이지(물리 페이지)로서 취급된다. 각 물리 페이지에 의하여 데이터의 기록 및 데이터의 판독이 행해진다.
비트선들(BL0 ~ BLp)은, 블록들 간에 선택 트랜지스터들(ST1)의 드레인들을 공통으로 접속하고 있다. 즉, 복수의 블록들에서 동일 열에 있는 NAND 스트링들은 동일한 비트선(BL)에 접속된다.
도 2b는, 예컨대, 1개의 메모리 셀 트랜지스터(MT)에 2비트를 기억하는 4치 데이터 기억 모드에서 임계값 분포의 개략도이다. 4치 데이터 기억 모드에서, 상위 페이지 데이터 "x"와 하위 페이지 데이터 "y"로 정의되는 4치 데이터 "xy" 중 어느 하나가 메모리 셀 트랜지스터(MT)에 기억될 수 있다.
4치 데이터 "xy"로서, 메모리 셀 트랜지스터(MT)의 임계 전압들의 순서로, 예컨대 데이터 "11", "01", "00" 및 "10”이 할당된다. 데이터 "11"는, 메모리 셀트랜지스터(MT)의 임계 전압이 음인 소거 상태이다. 데이터의 할당의 규칙은 여기에 한정되지 않는다. 이 구성은, 1개의 메모리 셀 트랜지스터(MT)에 3 비트 이상이 기억되도록 할 수 있다.
하위 페이지 기록 동작에서, 데이터 "11"(소거 상태에서)을 갖는 메모리 셀 트랜지스터(MT)에, 하위 비트 데이터 "y"의 기록에 따라 데이터 "10"이 선택적으로 기록된다. 상위 페이지 기록 전의 데이터 "10"의 임계값 분포는, 상위 페이지 기록 후의 데이터 "01"과 데이터 "00"의 임계값 분포들의 약 중간에 위치되어 있고, 상위 페이지 기록 후의 임계값 분포보다 폭이 넓을 수 있다. 상위 페이지 기록 동작에서, 데이터 "11"의 메모리 셀과 데이터 "10"의 메모리 셀에, 상위 비트 데이터 "x"의 기록이 선택적으로 행해진다. 데이터 "01" 및 데이터 "00"이 메모리 셀들에 기록된다. 의사 SLC 모드에서, 하위 페이지만을 사용하여 기록이 행해진다. 하위 페이지 기록은 상위 페이지 기록보다 고속이다.
도 3은, 드라이브 제어 회로(4)의 하드웨어 내부 구성예를 도시하는 블록도이다. 드라이브 제어 회로(4)는, 데이터 액세스 버스(101), 제1 회로 제어 버스(102), 및 제2 회로 제어 버스(103)를 포함한다. 제1 회로 제어 버스(102)에는, 드라이브 제어 회로(4) 전체를 제어하는 프로세서(104)가 접속되어 있다. 제1 회로 제어 버스(102)에는, NAND 메모리(10)에 기억된 각 관리 프로그램들(FW: 펌웨어)을 부팅하는 부트 프로그램이 저장된 부트 ROM(105)이 ROM 컨트롤러(106)를 통해 접속되어 있다. 제1 회로 제어 버스(102)에는, 도 1에 도시된 전원 회로(5)로부터 파워 온 리셋 신호를 수신하여, 리셋 신호 및 클록 신호를 각 부들에 공급하는 클록 컨트롤러(107)가 접속되어 있다.
제2 회로 제어 버스(103)는, 제1 회로 제어 버스(102)에 접속되어 있다. 제2 회로 제어 버스(103)에는, 도 1에 도시된 온도 센서(7)로부터의 데이터를 수신하기 위한 I2C 회로(108), 상태 표시용 LED(6)에 스테이터스 표시용 신호를 공급하는 병렬 IO(PIO) 회로(109), 및 RS232C I/F(3)를 제어하는 직렬 IO(SIO) 회로(110)가 접속되어 있다.
ATA 인터페이스 컨트롤러(ATA 컨트롤러)(111), 제1 ECC(Error Checking and Correction) 회로(112), NAND 컨트롤러(113), 및 DRAM 컨트롤러(114)는, 데이터 액세스 버스(101)와 제1 회로 제어 버스(102) 모두에 접속되어 있다. ATA 컨트롤러(111)는 ATA 인터페이스(2)를 통해 호스트(1)에 데이터를 전송하고, 호스트(1)로부터 데이터를 수신한다. 데이터 액세스 버스(101)에는, 데이터 작업 영역 및 펌웨어 전개 영역용으로 사용되는 SRAM(Static Random Access Memory)(115)이 SRAM 컨트롤러(116)를 통해 접속되어 있다. NAND 메모리(10)에 기억된 펌웨어가 기동될 때, 부트 ROM(105)에 기억된 부트 프로그램에 의해서 SRAM(115)에 펌웨어가 전송된다.
NAND 컨트롤러(113)는, NAND 메모리(10)와의 인터페이스를 위하여 인터페이스 처리를 하는 NAND I/F(117), 제2 ECC 회로(118), 및 NAND 메모리(10)와 DRAM(20) 사이에서 액세스 제어를 하는 DMA 전송 제어용 DMA(Direct Memory Access) 컨트롤러(119)를 포함한다. 제2 ECC 회로(118)는 제2 정정 부호의 인코드를 행하고, 제1 오류 정정 부호의 인코드 및 디코드를 행한다. 제1 ECC 회로(112)는, 제2 오류 정정 부호의 디코드를 행한다. 제1 오류 정정 부호 및 제2 오류 정정 부호는, 예컨대, 해밍(Hamming) 부호, BCH(Bose Chaudhuri Hocqenghem) 부호, 리드 솔로몬(Reed Solomon, RS) 부호, 혹은 LDPC(Low Density Parity Check) 부호이다. 제2 오류 정정 부호의 정정 능력은, 제1 오류 정정 부호의 정정 능력보다 크다. 이러한 오류 정정에 관한 기술은, 예컨대 국제 특허 출원 제PCT/JP2008/063344호, 또는 국제 특허 출원 제PCT/JP2008/063345호에 기재되어 있고, 그 전체 내용이 본 출원에서 사용되었다.
도 1에 도시된 바와 같이, NAND 메모리(10)에서, 4개의 병렬 동작 요소들(10a~10d)이 각 복수 비트의 4 채널들(4ch)을 통해 드라이브 제어 회로(4) 내의 NAND 컨트롤러(113)에 병렬 접속되어 있어, 4개의 병렬 동작 요소들(10a~10d)을 병렬 동작시키는 것이 가능하다. 각 채널의 NAND 메모리(10)는, 뱅크 인터리브가 가능한 4개의 뱅크들로 분할되어 있고, 각 메모리 칩의 플레인(0) 및 플레인(1)에 동시에 액세스할 수 있다. 따라서, 기록과 같은 처리가 각 채널에 대하여 최대 8 물리 블록들(4 뱅크들 x 2 플레인들)까지 거의 동시에 실행될 수 있다. 이러한 뱅크 인터리브에 관한 기술은, 예컨대 미국 특허 출원 공개 제12/558965호에 개시되어 있고, 그 전체 내용이 본 명세서에 사용되었다.
도 4는, 프로세서(104)에 의해 실현되는 펌웨어의 기능 구성예의 블록도이다. 프로세서(104)에 의하여 실현되는 펌웨어의 기능은, 크게, 데이터 관리부(120), ATA 커맨드 처리부(121), 시큐리티 관리부(122), 부트 로더(123), 초기화 관리부(124), 및 디버그 서포트부(125)로 분류된다.
데이터 관리부(120)는, NAND 컨트롤러(113) 및 제1 ECC 회로(112)를 통해 NAND 메모리(10)와 DRAM(20) 간의 데이터 전송과, NAND 메모리(10)에 관한 각종 기능들을 제어한다. ATA 커맨드 처리부(121)는, ATA 컨트롤러(111) 및 DRAM 컨트롤러(114)를 통해, 데이터 관리부(120)와 협동하여 DRAM(20)과 호스트(1) 간의 데이터 전송 처리를 한다. 시큐리티 관리부(122)는, 데이터 관리부(120) 및 ATA 커맨드 처리부(121)와 협동하여 각종의 시큐리티 정보를 관리한다.
부트 로더(123)는, 전원 온 시에, 관리 프로그램(펌웨어)을 NAND 메모리(10)로부터 SRAM(115)에 로딩한다. 초기화 관리부(124)는, 드라이브 제어 회로(4) 내의 각 컨트롤러들과 회로들의 초기화를 행한다. 디버그 서포트부(125)는, 외부에서 RS232C 인터페이스를 통해 공급된 디버그용 데이터를 처리한다. 주로, 데이터 관리부(120), ATA 커맨드 처리부(121), 및 시큐리티 관리부(122)가, SRAM(115)에 기억된 각종 관리 프로그램들을 실행하는 프로세서(104)에 의하여 실현되는 기능부들이다.
본 실시예에서, 주로, 데이터 관리부(120)에 의하여 실현되는 기능에 관해서 설명한다. 데이터 관리부(120)는 예컨대, ATA 커맨드 처리부(121)가 기억 디바이스들로서 NAND 메모리(10)와 DRAM(20)을 요구하는 기능의 제공(호스트부터의 기록 요구, 캐시 플러시(flush) 요구, 및 판독 요구와 같은 각종 커맨드에 응답하여)과, 호스트(1)로부터 주어지는 논리 어드레스와 NAND 메모리(10)의 물리 어드레스 간의 대응 관계의 관리와, 스냅샷 및 로그에 의한 관리 정보의 보호와, DRAM(20) 및 NAND 메모리(10)를 이용하는 고속이고 효율이 높은 데이터 판독 및 기록 기능들의 제공과, NAND 메모리(10)의 신뢰성의 보증을 실행한다.
도 5는, NAND 메모리(10) 및 DRAM(20) 내에 형성된 기능 블록들의 도면이다. 호스트(1)와 NAND 메모리(10) 사이에, DRAM(20) 상에 구성된 라이트 캐시(WC)(21)와 리드 캐시(RC)(22)가 개재되어 있다. WC(21)는 호스트(1)로부터의 Write 데이터를 일시적으로 기억한다. RC(22)는 NAND 메모리(10)로부터의 Read 데이터를 일시적으로 기억한다. NAND 메모리(10) 내의 블록들은, 기록 동안 NAND 메모리(10)에 대한 소거량을 감소시키기 위하여, 데이터 관리부(120)에 의하여, 전단 기억 영역(FS: Front Storage)(12), 중단 기억 영역(IS: Intermediate Storage)(13), 및 주 기억 영역(MS: Main Storage)(11)의 각 관리 영역들에 할당되어 있다. FS(12)는, WC(21)로부터의 데이터를 클러스터 단위, 즉 "작은 단위"로 관리하고, 단기간 동안 작은 데이터를 기억한다. IS(13)는, FS(12)로부터 넘치는 데이터를 클러스터 단위, 즉 "작은 단위"로 관리하고, 작은 데이터를 장기간 기억한다. MS(11)는, WC(21), FS(12), 및 IS(13)로부터의 데이터를 트랙(track) 단위, 즉 "큰 단위"로 관리한다. 이러한 방식으로 각 관리 영역에 블록들을 할당함으로써 NAND 메모리(10)에서의 블록들을 관리하는 기술은, 예컨대 국제 특허 출원 제PCT/JP08/073950호, 또는 국제 특허 출원 제PCT/JP08/067600호에 개시되어 있으며, 그 전체 내용이 본 출원에 사용되었다.
도 5에 도시된 각 구성 요소들의 구체적인 기능 구성을 상세히 설명한다. 호스트(1)는 SSD(100)에 대하여, Read 또는 Write를 실행할 때, 호스트(1)는 ATA I/F(2)를 통하여 논리 어드레스로서 LBA(Logical Block Addressing)를 입력한다. LBA는, 도 6에 도시된 바와 같이, 섹터들(사이즈: 512B)에 대하여 0부터의 시리얼 번호가 붙혀진 논리 어드레스이다. 본 실시예에서, 도 5에 도시된 구성 요소들인 WC(21), RC(22), FS(12), IS(13), 및 MS(11)에 대한 관리 단위들로서, LBA의 하위 (s+1) 비트번째로부터 순으로 상위의 비트 스트링으로 형성된 클러스터 어드레스와, LBA의 하위 (s+t+1) 비트번째로부터 순으로 상위의 비트 스트링으로 형성된 트랙 어드레스가 정의된다. 본 실시예에서, 트랙과 논리 블록의 사이즈는 동일하다. 논리 블록은, NAND 메모리(10)의 칩 상의 복수의 물리 블록들과 연관된 가상 블록이다. 본 실시예에서, 논리 블록은 병렬 채널들수에 대하여 물리 블록들과 연관된다(이 경우, 도 1에 도시된 바와 같은 4 채널들). 유사한 방식으로, 논리 페이지는 4 채널들에 대하여 물리 페이지들과 연관된다. 논리 블록은, 뱅크 인터리브를 유효하게 이용하기 위해서, 동일한 뱅크에 속하는 물리 블록들로부터 선택된다.
<리드 캐시(RC)(22)>
RC(22)는, 호스트(1)로부터의 판독 요구에 응답하여, NAND 메모리(10)(FS(12), IS(13), MS(11))로부터의 Read 데이터를 일시적으로 기억하기 위한 영역이다. 호스트(1)로의 데이터 전송은, 기본적으로 RC(22)로부터 실행된다. WC(21)로부터 NAND 메모리(10)에의 데이터 기록이 행해질 때, 동일 논리 어드레스의 RC(22) 상의 데이터가 무효가 된다.
<라이트 캐시(WC)(21)>
WC(21)는, 호스트(1)로부터의 기록 요구에 응답하여, 호스트(1)로부터의 Write 데이터를 일시적으로 기억하기 위한 영역이다. WC(21) 상의 데이터는 클러스터 단위로 관리되고, 유효 데이터의 기록 및 관리는 섹터 단위로 행해진다. WC(21)의 재원이 부족해진 경우, WC(21)에 기억된 데이터를 NAND 메모리(10)로 추방한다(flush). 호스트(1)로부터 RC(22) 상의 데이터와 동일한 논리 어드레스에 기록이 행해진 경우, 최신 데이터가 WC(21) 상에 기억된다. 따라서, 동일한 논리 어드레스에 대응하는 데이터가, WC(21), RC(22), NAND 메모리(10) 상에 있는 경우에는, 데이터는, WC(21), RC(22), NAND 메모리(10)의 순으로 새롭기 때문에, WC(21) 상의 데이터가 호스트(1)에 복귀되는 데에 우선된다.
<주 기억 영역(MS)(11)>
MS(11)는 트랙 단위로 데이터의 관리를 행하고, 대부분의 사용자 데이터가 MS(11)에 기억된다. WC(21) 상에 많은 유효 클러스터들을 갖는 트랙(고밀도 트랙)은, WC(12)로부터 바로 MS(11)에 기록된다. 또한, MS(11)에는, FS(12) 및 IS(13)에 의하여 관리될 수 없는 데이터가 입력된다. MS(11)에 입력된 트랙과 동일 LBA의 트랙은 논리 블록 내에서 무효화되고, 이 논리 블록이 해제된다. MS(11)에 입력된 트랙과 동일 LBA의 트랙에 속하는 클러스터는, FS(12)와 IS(13)에서 무효화되고, 모든 클러스터들이 무효화되는 논리 블록이 해제된다. MS(11)는, MLC 모드의 복수의 논리 블록들로 구성된다. 본 실시예에서, 트랙과 논리 블록의 사이즈는 동일하여, FS(12) 또는 IS(13)에서 행해지는 추가 기록 처리와, IS(13)에서 행해지는 컴팩션(유효 클러스터들만을 모아 새로운 논리 블록을 생성하고, 무효 클러스터 부분을 해제하는 처리)은 MS(11)에서 불필요하다. 트랙 사이즈가 논리 블록 사이즈보다 작은 경우는, FS(12)와 IS(13)에서 행해지는 추가 기록 처리와, IS(13)에서 행해지는 컴팩션이 MS(11)에 적용될 수 있다.
<전단 기억 영역(FS)(12)>
FS(12)는 클러스터 단위로 데이터가 관리되는 FIFO(first-in first-out) 구조를 사용하는 버퍼이며, 입력은 복수의 클러스터들이 모여진 논리 페이지의 단위로 행해진다. FS(12)에는, WC(21) 상에서 유효 클러스터들수가 작은 트랙(저밀도 트랙)이 최초로 기록된다. FS(12)는 데이터의 기록 순서로 논리 블록들이 배열된 FIFO 구조를 갖는다. FS(12)에 존재하는 클러스터와 동일 LBA의 클러스터가 FS(12)에 입력된 경우, FS(12) 내의 클러스터를 무효화하는 것으로 충분하고, 재기록이 수행되지 않는다. FS(12)에 입력된 클러스터와 동일 LBA의 클러스터는 논리 블록 내에서 무효화되고, 논리 블록 내의 모든 클러스터들이 무효화되는 논리 블록이 해제된다. FS(12)의 FIFO 구조의 최후까지 도달한 논리 블록에 기억된 클러스터는, 호스트(1)로부터 재기록되는 가능성이 낮은 클러스터로서 간주되고, 논리 블록 전체로서는 IS(13)의 관리 하에 IS(13)에 재위치된다. 본 실시예에서, FS(12)는 기록의 고속화를 위하여 의사 SLC 모드의 복수의 논리 블록들로 구성된다. FS(12)는, MLC 모드의 복수의 논리 블록들로 구성될 수 있다. 갱신 빈도가 높은 데이터는 FS(12)를 통과할 때 무효화되고, 갱신 빈도가 낮은 데이터만이 FS(12)로부터 넘쳐, FS(12)는 갱신 빈도가 높은 데이터로부터 갱신 빈도가 낮은 데이터를 구분할 수 있다. 결과적으로, 후속단의 IS(13)에서 컴팩션이 빈번히 발생하는 가능성을 저감시킬 수 있다.
<중단 기억 영역(IS)(13)>
IS(13)은 재기록될 가능성이 낮은 클러스터를 기억하기 위한 버퍼이며, FS(12)와 동일한 방식으로 클러스터 단위로 데이터의 관리가 행해진다. IS(13)에 존재하는 클러스터와 동일 LBA의 클러스터가 FS(12)와 IS(13)에 입력된 경우, IS(13) 내의 클러스터를 무효화하는 것으로 충분하고, 재기록이 수행되지 않는다. FS(12)와 유사한 방식으로, IS(13)는, 데이터가 처음 기록된 논리 블록으로부터(FS(12)로부터 처음 재위치된 논리 블록으로부터) 순서대로 논리 블록들이 배치되는 리스트(list) 구조를 갖지만, IS(13)은 컴팩션을 수행하며, 이것은 FS(12)와는 상이하다. IS(13)의 용량이 포화되거나, FS(12)와 IS(13)에 대한 관리 테이블들이 포화되면, 컴팩션(IS(13)로부터 유효 클러스터들을 모아, IS(13)에 재기록하는 것) 또는 조각 모음(FS(12) 및 IS(13)의 클러스터들을 트랙으로 통합하고, 이것을 MS(11)로 추방하는 것)이 행해진다. 본 실시예에서, IS(13)는 MLC 모드와 의사 SLC 모드의 논리 블록들의 혼합으로 구성된다. 즉, FS(12)로부터 IS(13)로 재위치된 블록은 의사 SLC 모드의 논리 블록이지만, IS(13) 내에서 컴팩션을 수행할 때, MLC 모드의 논리 블록에 블록이 재기록된다. FS(12)가 MLC 모드의 논리 블록들로 구성되는 경우는, IS(13)도 MLC 모드의 논리 블록들만으로 구성된다.
도 7은, 도 5에 도시된 각 구성 요소들을 제어 관리하기 위한 데이터 관리부(120)를 위한 관리 테이블들을 도시하는 도면이다. DRAM(20)을 관리하기 위한 테이블은, RC 관리 테이블(23), WC 트랙 테이블(24), WC 트랙 정보 테이블(25), WC 고밀도 트랙 정보 테이블(26), 및 WC 저밀도 트랙 정보 테이블(27)을 포함한다. NAND 메모리(10)를 관리하기 위한 테이블은, 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 이론-물리 변환 테이블(40)을 포함한다. NAND 메모리(10)를 관리하기 위한 테이블은, 포워드(forward) 룩업 어드레스 변환에 참조하는 테이블, 및 리버스(reverse) 룩업 어드레스 변환에 참조하는 테이블로 나누어진다. 포워드 룩업 어드레스 변환은, 데이터의 LBA로부터 데이터가 실제로 기억되는 (논리 블록 어드레스 + 클러스터 위치)를 획득하는 것이다. 리버스 룩업 어드레스 변환은, (논리 블록 어드레스 + 클러스터 위치)로부터 데이터의 LBA를 획득하는 것이다.
<RC 관리 테이블(23)>
RC 관리 테이블(23)은, NAND 메모리(10)로부터 RC(22)에 전송되는 데이터를 관리하기 위한 것이다.
<WC 트랙 테이블(24)>
WC 트랙 테이블(24)은, WC(21) 상에 기억된 데이터에 관한 WC 트랙 정보를 LBA로부터 룩업하기 위한 해시(hash) 테이블이며, LBA의 트랙 어드레스의 LSB(Least Significant Bit)의 수 비트인 각 인덱스에 대한 복수의 엔트리들(태그들)을 포함한다. 각 태그는 LBA 트랙 어드레스와, 트랙 어드레스에 대응하는 WC 트랙 정보에의 포인터를 기억한다.
<WC 트랙 정보 테이블(25)>
WC 트랙 정보 테이블(25)은, 액세스된 WC 트랙 정보의 시간 순서를 LRU(Least Recently Used)를 이용하여 양방향 링크 리스트로 관리하기 위한 WC 트랙 LRU 정보 테이블(25a)과, 비어 있는 WC 트랙 정보 번호를 관리하는 WC 트랙 빈 정보 테이블(25b)을 포함한다. WC(21)로부터 NAND 메모리(10)에 데이터가 추방되면, WC 트랙 LRU 정보 테이블(25a)을 이용함으로써 가장 오래된 액세스된 트랙이 취해진다.
WC 트랙 정보는 WC(21) 내에 존재하는 복수의 트랙들 중 하나에 대응한다.
WC 트랙 정보는 다음을 포함한다.
(1) WC(21) 내에 존재하는 트랙 어드레스, 트랙 내의 WC(21) 상의 유효 클러스터들수, 각 클러스터가 유효한 지의 여부를 나타내는 정보, 및 각 클러스터의 WC(21)에서의 위치를 나타내는 WC 내 클러스터 위치 정보,
(2) 하나의 클러스터에 포함되는 복수의 섹터들 중 유효한 데이터를 기억하는 섹터를 나타내는 정보(섹터 비트맵), 및
(3) 트랙 상태 정보(예컨대, 유효, 무효, ATA로부터의 데이터 전송 중, 및 NAND 메모리에 기록 중). WC 트랙 정보에서, 유효 클러스터가 존재하는 기억 위치에서 자신의 트랙 내에 존재하는 클러스터 어드레스의 LSB(t) 비트가 관리되나, 클러스터 어드레스의 관리 방법은 임의적이다. 예컨대, 자신의 트랙 내에 존재하는 클러스터 어드레스의 LSB(t) 비트 자체가 관리될 수 있다(도 6 참조).
<WC 고밀도 트랙 정보 테이블(26)>
WC 고밀도 트랙 정보 테이블(26)은, MS(11)에 기록될 고밀도(트랙 내에서 유효 클러스터들수가 특정 퍼센트 이상) 트랙 정보를 관리하기 위한 것으로, 고밀도트랙에 관한 WC 트랙 정보와 그 갯수를 관리하고 있다.
<WC 저밀도 트랙 정보 테이블(27)>
WC 저밀도 트랙 정보 테이블(27)은, FS(12)에 기록될 저밀도(트랙 내에서 유효 클러스터들수가 특정 퍼센트 미만) 트랙 정보를 관리하기 위한 것으로, 저밀도트랙의 총 클러스터들수를 관리하고 있다.
<트랙 테이블(30)(포워드 룩업)>
트랙 정보(30)는 LBA의 트랙 어드레스로부터 트랙 정보를 취득하기 위한 테이블이다. 트랙 정보는 다음을 포함한다.
(1) 논리 블록 어드레스(트랙의 데이터가 기억되어 있는 논리 블록을 나타내는 정보),
(2) 클러스터 디렉토리 번호(트랙 내의 데이터의 적어도 일부가 FS(12) 또는 IS(13)에 기억되어 있는 경우에 유효가 되는 정보이며, 트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억된 경우에, 트랙마다 존재하는 클러스터 디렉토리 테이블의 테이블 번호를 나타내는 정보, 및
(3) FS/IS 클러스터들수(FS(12) 또는 IS(13)에 기억된 트랙에서의 클러스터들수를 나타내며, 조각 모음을 실행하는 지의 여부를 판정하기 위하여 사용되는 정보)
<클러스터 디렉토리 테이블(31)(포워드 룩업)>
클러스터 디렉토리 테이블(31)은 트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우에, 논리 블록까지 추적하기 위한 중간 테이블이다. 클러스터 디렉토리 테이블(31)은 각 트랙에 대하여 제공되어 있다. 각 클러스터 디렉토리 테이블(31)에 등록된 클러스터 디렉토리 정보는, 클러스터 테이블(32)의 테이블 번호를 나타내는 정보(클러스터 테이블 번호 정보)의 배열로 이루어진다. LBA의 클러스터 어드레스의 LSB(t) 비트의 상위 수 비트에 의하여, 하나의 클러스터 디렉토리 테이블(31)에 배열되어 있는 복수의 클러스터 테이블 번호 정보 중으로부터 하나의 정보가 선택된다.
클러스터 디렉토리 테이블(31)은, 기록 시각을 기준으로 하여, 클러스터 디렉토리 정보(클러스터 테이블 번호 정보의 배열)의 시간 순서를, 대응하는 트랙 어드레스와 함께, LRU를 사용하여 양방향 링크 리스트로 관리하기 위한 클러스터 디렉토리 LRU 테이블(31a)과, 비어 있는 클러스터 디렉토리를, 대응하는 트랙 어드레스와 함께, 양방향 링크 리스트로 관리하는 클러스터 디렉토리 빈 정보 테이블(31b)을 포함한다.
<클러스터 테이블(32)(포워드 룩업)>
클러스터 테이블(32)은 클러스터 디렉토리 테이블(31)과 관련되고, 트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우에, 데이터가 기억된 논리 블록에서의 클러스터 위치를 관리하는 테이블이다. 클러스터 테이블(32)은 트랙 테이블(30)로부터 클러스터 디렉토리 테이블(31)을 경유하여 간접 참조된다. 클러스터 테이블(32)은 실제로, 복수의 클러스터들에 대한 (논리 블록 어드레스 + 클러스터 위치)의 배열이다. LBA의 클러스터 어드레스의 LSB(t) 비트의 하위 수 비트로, 하나의 클러스터 테이블(32) 내에 배열되어 있는 복수의 (논리 블록 어드레스 + 클러스터 위치) 중에서 하나의 정보가 선택된다. 클러스터 테이블(32)은 또한 클러스터 블록 정보 번호와 그 내의 클러스터 위치에 관한 정보도 배열로서 포함한다.
<클러스터 블록 정보 테이블(33)(리버스 룩업)>
클러스터 블록은, 논리 블록들 중 클러스터 단위로 데이터를 기억하는 블록이다. 클러스터 블록 정보는, FS(12) 및 IS(13)의 논리 블록들을 관리하기 위한 정보이며, 논리 블록들 내에 존재하는 클러스터 형태를 나타내는 정보이다. 복수의 클러스터 블록 정보는 양방향 링크 리스트로서 FS(12) 및 IS(13) 내의 FIFO의 순서로 연결된다.
클러스터 블록 정보는 다음을 포함한다.
(1) 논리 블록 어드레스,
(2) 유효 클러스터들수, 및
(3) 논리 블록에 포함되는 클러스터의 LBA.
클러스터 블록 정보 테이블(33)은, 사용되고 있지 않은 정보를 관리하는 클러스터 블록 정보 테이블(33a), FS(12)에 대한 클러스터 블록 정보 테이블(33b), 및 IS(13)에 대한 클러스터 블록 정보 테이블(33c)을 포함한다. 클러스터 블록 정보 테이블(33a)은 사용되지 않은 클러스터 블록 정보를 관리하고, 클러스터 블록 정보 테이블(33b)은 FS(12)에 포함된 클러스터 블록 정보를 관리하고, 클러스터 블록 정보 테이블(33c)은 IS(13)에 포함된 클러스터 블록 정보를 관리한다. 클러스터 블록 정보 테이블들(33a ~ 33c) 각각은 양방향 링크 리스트로서 관리되어 있다. 리버스 룩업 어드레스 변환의 주된 용도는 IS(13)의 컴팩션이다. 리버스 룩업 어드레스 변환은 컴팩션 대상으로서 논리 블록에 기억된 클러스터의 형태를 검사하여, 데이터를 상이한 장소에 재기록하는 데 사용된다. 따라서, 본 실시예에서, 리버스 룩업 어드레스 변환은 클러스터 단위로 데이터를 기억하고 있는 FS(12) 및 IS(13)만을 대상으로 하고 있다.
<논리-물리 변환 테이블(40)(포워드 룩업)>
논리-물리 변환 테이블(40)은, 논리 블록 어드레스와 물리 블록 어드레스 간의 변환 및 수명에 관한 정보를 관리하기 위한 테이블이다. 논리-물리 변환 테이블(40)은, 각 논리 블록 어드레스에 대하여, 논리 블록에 속하는 복수의 물리 블록 어드레스들을 나타내는 정보, 논리 블록 어드레스의 소거 횟수를 나타내는 정보, 및 클러스터 블록 정보 번호에 대한 정보를 포함한다. 어떤 LBA의 데이터를 상이한 장소에 재기록하기 위해서는, 원래의 클러스터 블록 내의 LBA가 무효로 될 필요가 있어, LBA로부터 클러스터 블록을 추적할 필요가 있다. 따라서, 논리-물리 변환 테이블(40)에 의하여 관리되는 논리 블록의 관리 정보에, 클러스터 블록 정보의 식별자가 기억된다.
(스냅샷 및 로그)
각 관리 테이블로 관리되는 관리 정보로, 호스트(1)에서 사용되는 LBA와, SSD(100)에서 사용되는 논리 NAND 어드레스(논리 블록 어드레스 + 오프셋)와, NAND 메모리(10)에서 사용되는 물리 NAND 어드레스(물리 블록 어드레스 + 오프셋)가 서로 연관될 수 있어, 호스트(1)와 NAND 메모리(10) 간의 데이터의 교환이 수행될 수 있다.
상기 관리 테이블들 중 도 7에 도시된 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 및 논리-물리 변환 테이블(40)과 같은 NAND 메모리 관리용 테이블들은, 비휘발성 NAND 메모리(10)의 특정 영역에 기억되어 있다. 기동시에, NAND 메모리(10)에 기억된 각 관리 테이블은 휘발성 DRAM(20)의 작업 영역에 로딩되고, 데이터 관리부(120)에 의하여 사용되어, 각 관리 테이블이 갱신된다. DRAM(20) 상에 로딩된 각 관리 테이블을 마스터 테이블이라고 부른다. 이 마스터 테이블은, 전원이 끊어지더라도, 전원이 끊어지기 전의 상태로 복원되어야 하여, 마스터 테이블을 비휘발성 NAND 메모리(10)에 기억하는 시스템이 필요하다. 스냅샷은, NAND 메모리(10) 상의 비휘발성 관리 테이블의 전체를 나타낸다. DRAM(20)에 로딩된 마스터 테이블을 바로 NAND 메모리(10)에 기억하는 동작을 "스냅샷을 취한다"라고도 표현한다. 로그는, 관리 테이블의 변경 차분을 나타낸다. 마스터 테이블의 모든 갱신에 대하여 스냅샷이 취해지면, 처리 속도가 느려지고, NAND 메모리(10)에서의 기록 횟수가 증가하여, 통상은 변경 차분으로서의 로그만이 NAND 메모리(10)에 기록된다. 로그를 마스터 테이블에 반영하는 동작과, 이것을 NAND 메모리(10)에 기억하는 것을 "커밋(commit)"으로도 표현한다.
도 8은, 데이터 갱신시에, 스냅샷과 로그의 갱신 상태를 나타내는 도면이다. 데이터 관리부(120)가 데이터를 갱신할 때, 마스터 테이블에 가한 변경이 DRAM(20) 상의 로그(이하, "DRAM 로그"라고 부른다)에 축적된다. 관리 테이블의 형태에 따라, 마스터 테이블이 직접 갱신되고, 갱신 내용이 DRAM 로그에 축적되거나, 갱신 내용이 마스터 테이블을 직접 변경하지 않고 DRAM 로그 상에 확보된 변경 영역에 기록된다. 데이터의 판독 또는 데이터 기록을 할 때, 마스터 테이블 외에, 축적된 DRAM 로그도 참조된다.
데이터 갱신이 안정된 후, 로그의 커밋이 행해진다. 커밋 처리에서, DRAM 로그의 내용이 필요에 따라 마스터 테이블에 반영되고, 또한 NAND 메모리(10)에 기억되어 비휘발화된다. 스냅샷은, 정상적인 전원 차단 시퀀스에서, 및 로그에 대한 기억 영역이 부족해진 경우와 같은 때에, NAND 메모리(10)에 기억된다. 로그 또는 스냅샷의 NAND 메모리(10)에의 기록이 종료된 시점에서, 관리 테이블을 비휘발화하는 처리가 완료된다. 이러한 방식으로 관리 정보를 비휘발화하는 기술은, 예컨대 국제 특허 출원 제PCT/JP209/052597호에 개시되어 있고, 그 전체 내용이 본 출원에서 사용되었다.
<판독 처리>
판독 처리를 간략히 설명한다. ATA 커맨드 처리부(121)로부터 판독 커맨드 및 판독 어드레스로서의 LBA가 입력되면, 데이터 관리부(120)는, RC 관리 테이블(23)과 WC 트랙 테이블(24)을 검색하여, WC(21) 또는 RC(22)에 LBA에 대응하는 데이터가 존재하는 지의 여부를 검사한다. 캐시 히트의 경우, 데이터 관리부(120)는 LBA에 대응하는 WC(21) 또는 RC(22)의 데이터를 판독하여, 이 데이터를 ATA 커맨드 처리부(121)에 보낸다.
데이터 관리부(120)는, RC(22) 또는 WC(21)에 히트가 존재하지 않으면, 검색 대상으로서 데이터가 NAND 메모리(10)의 어느 부분에 기억되어 있는 지를 검색한다. 데이터가 MS(11)에 기억되어 있는 경우는, 데이터 관리부(120)는, LBA→ 트랙테이블(30)→ 논리-물리 변환 테이블(40)을 추적하여, MS(11)상의 데이터를 취득한다. 한편, 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우는, 데이터 관리부(120)는, LBA→ 트랙 테이블(30) → 클러스터 디렉토리 테이블(31)→ 클러스터 테이블(32)→ 논리-물리 변환 테이블(40)을 추적하여, FS(12) 또는 IS(13) 상의 데이터를 취득한다.
<기록 처리>
(WC(21)에서의 처리)
다음, 기록 처리의 개요에 관해서 도 9에 도시된 흐름도에 따라 설명한다. 기록 처리에서, ATA 커맨드 처리부(121)로부터 기록 커맨드 및 기록 어드레스로서의 LBA가 입력되면(단계 S100), 데이터 관리부(120)는 LBA에 의하여 지정된 데이터를 WC(21)에 기록한다. 구체적으로는, 데이터 관리부(120)는 WC(21)에 기록 요구에 대응하는 빈 영역이 있는 지의 여부를 판정하고(단계 S110), WC(21)에 빈 영역이 있으면 LBA에 의하여 지정된 데이터를 WC(21)에 기록한다(단계 S150).
한편, WC(21)이 기록 요구에 대응하는 빈 영역을 갖지 않으면, 데이터 관리부(120)는 NAND 메모리(10)에 데이터를 기록하기 위하여, DRAM 관리용 각종 관리 테이블들을 참조하여 WC(21)로부터 데이터를 추방하여, 빈 영역을 생성한다. 구체적으로, 데이터 관리부(120)는 트랙들 내의 유효 클러스터들수를 검사하여(단계 S120), 트랙 내 유효 클러스터들수가 소정 퍼센트 미만인 트랙을 저밀도 트랙으로서 판정하고, 데이터를 클러스터 사이즈 데이터로서 추방처로서 FS(12)에 추방한다(단계 S140). 추방처가 FS(12)인 경우, 트랙 내의 유효 클러스터가 논리 페이지단위로 기록된다.
단계 S120에서의 판정에서, 트랙 내의 유효 클러스터들수가 소정 퍼센트 이상인 것으로 판정되면, 이 트랙은 고밀도 트랙으로서 판정되고, 트랙 사이즈 데이터로서 MS(11)를 추방처로 하여 추방된다(단계 S130). 추방처가 MS(11)이면, 트랙 사이즈의 데이터대로 논리 블록 전체에 기록된다. 기록 대상으로서의 복수의 논리 블록들이 있으면, 배속 모드 또는 뱅크 인터리브를 이용하여 전송 효율이 상승된다.
이러한 방식으로, WC(21)에 빈 영역을 생성한 후, LBA에 의하여 지정된 데이터가 WC(21)에 기록된다(단계 S150). DRAM 관리용 각종 관리 테이블들이 WC(21)에 기록된 데이터에 따라서, 또한 NAND 메모리(10)에의 데이터 추방에 따라서, 갱신된다.
(WC(21)로부터 MS(11)에의 기록)
다음, WC(21)로부터 MS(11)에의 고밀도 트랙의 기록 처리를 도 10 및 도 11에 따라 설명한다. 도 10은 그 동작 순서를 도시하는 흐름도이고, 도 11은 그 동작 개념을 설명하는 개략도이다.
MS(11)로의 기록을 다음의 순서로 실행한다. 데이터 관리부(120)는, 추방 대상인 고밀도 트랙 외에 뱅크 인터리브를 사용함으로써 기록이 병행하여 수행될 수 있는 복수의 고밀도 트랙들을 선택할 수 있다.
1. 데이터 관리부(120)는 DRAM(20) 상에 트랙의 데이터 이미지를 작성한다(패딩(padding) 처리)(단계 S200). 구체적으로, WC(21)에 존재하지 않는 클러스터 및 WC(21)에 모든 섹터들을 유지하지 않는 클러스터는, NAND 메모리(10)로부터 판독되어, WC(21)의 데이터와 통합된다.
2. 데이터 관리부(120)는 MS(11)용으로, 논리 블록(트랙 블록)을 CFB로부터 확보한다(단계 S210). 트랙 블록은, 논리 블록들 중 트랙 단위로 데이터를 기억하는 블록이다.
3. 데이터 관리부(120)는, 단계 S210에서 확보된 논리 블록에 단계 S200에서 작성된 트랙의 데이터 이미지를 기록한다(단계 S220).
4. 데이터 관리부(120)는 트랙의 LBA로부터 트랙 정보를 조사하여, 트랙 정보와, 기록된 논리 블록에 대응하는 논리 블록 어드레스를 연관시키고, NAND 메모리 관리용의 요구되는 테이블에 등록한다(단계 S230).
5. 데이터 관리부(120)는 WC(21) 및 NAND 메모리(10)에 오래된 데이터를 무효화한다(단계 S240). 구체적으로, 데이터 관리부(120)는, WC(21)에서의 캐시 데이터를 MS(11)로 추방되게 하고, 단계 S200에서의 패딩 처리에 사용되는 NAND 메모리(10)에서의 데이터를, 이들을 무효화시키기 위하여 관리 테이블 상의 유효 상태로부터 무효 상태이도록 한다.
(WC(21)로부터 FS(12)에의 기록)
다음, WC(21)로부터 FS(12)에의 저밀도 트랙의 기록 처리를 도 12 및 도 13에 따라 설명한다. 도 12는 그 동작 순서를 나타내는 흐름도이며, 도 13은 그 동작 개념을 나타내는 개략도이다.
FS(12)로의 기록은, DRAM(20) 상의 클러스터의 데이터 이미지를 작성(패딩 처리)하고, 새롭게 확보된 논리 블록(클러스터 블록)에 논리 페이지 단위의 기록을 의사 SLC 모드를 사용하여 행함으로써 수행된다. 확보되는 논리 블록으로서, 기록될 데이터 이미지 이상의 기록이 가능한 논리 페이지를 갖는 FFB(Fragment Free Block)를 우선한다. FFB가 없으면, CFB(Complete Free Block)가 사용된다. FS(12)에서의 기록은 다음의 순서로 실행된다.
WC(21)로부터 FS(12)에 저밀도 트랙의 데이터를 기록하기 위한 논리 블록(클러스터 블록)을 FS 입력 버퍼(FS Input Buffer, FSIB)로 부른다. 데이터 관리부(120)는 다른 저밀도 트랙들을 포함할 수 있어, 기록될 클러스터 데이터량이, 추방 대상인 저밀도 트랙 외에 의사 SLC 모드의 논리 블록 경계와 일치한다.
1. 데이터 관리부(120)는 WC(21)로부터 입력된 저밀도 트랙 내의 총 데이터량을 판정한다(단계 S300). 판정된 총 데이터량이 작은 경우, 즉 유효 클러스터들수가 특정 임계값 보다도 작은 경우, 데이터 관리부(120)는, 데이터가 기록될 수 있는 FFB를 확보하여, FSIB로 한다(단계 S310).
2. 데이터 관리부(120)는, WC(21)로부터 입력된 저밀도 트랙 내의 총 데이터량이 크다라고 판정하면, 즉 유효 클러스터들수가 특정 임계값 이상이면, 데이터 관리부(120)는 CFB를 확보하여, FSIB로 한다(단계 S320). 이 때, 병렬로 데이터를 기록할 수 있는 복수의 논리 블록들이 확보되어, FSIB로 한다.
3. 데이터 관리부(120)는 DRAM(20) 상에, 기록될 클러스터의 데이터 이미지를 작성한다(단계 S330). 구체적으로, WC(21)에 모든 섹터들을 유지하지 않는 클러스터에 관해서는, 데이터 관리부(120)는 WC(21) 상에 존재하지 않는 섹터의 데이터를 NAND 메모리(10)로부터 판독하여, WC(21)상의 섹터들의 데이터와 통합한다.
4. 데이터 관리부(120)는 WC(21) 상의 클러스터와, 작업 영역 상에 작성된 클러스터 이미지를 FSIB에 기록한다(단계 S340).
5. 데이터 관리부(120)는 이 FSIB 상의 클러스터 블록 정보를 FS용의 클러스터 블록 정보 테이블(33b)에 추가한다(단계 S350).
6. 데이터 관리부(120)는 FSIB에 기록된 저밀도 트랙 상의 클러스터 디렉토리 정보를, 대응하는 트랙 어드레스와 함께 클러스터 디렉토리 LRU 테이블(31a)의 말미에 재삽입한다(단계 S360).
(FS(12)로부터 IS(13)로의 재배치)
다음, FS(12)로부터 IS(13)로의 데이터 재배치를 도 14 및 도 15에 따라 설명한다. 도 14는 그 동작 순서를 나타내는 흐름도이고, 도 15는 그 동작 개념을 도시하는 개략도이다.
데이터 관리부(120)는, FS(12)의 관리 하의 논리 블록들수가 논리 블록들의 특정 최대수를 넘는 지의 여부를 판정한다(단계 S400). 도 15에 도시된 바와 같이, (12)의 관리 하의 논리 블록들수가 논리 블록들의 특정 최대수를 넘으면, 데이터 관리부(120)는 FS(12)로부터 넘친 논리 블록을 그대로 IS(13)에 재배치한다. 본 실시예에서, FS(12)는 의사 SLC 모드의 복수의 논리 블록들로 구성되고, 의사 SLC 모드의 논리 블록이 FS(12)로부터 IS(13)로 그대로 재배치된다. 하나의 처리 단위로 재배치될 논리 블록들수는, 넘친 논리 블록 내의 유효 클러스터들수 등에 따라서, 이하의 룰로 결정된다(단계 S410).
넘친 논리 블록 내의 총 클러스터들수가 MLC 모드의 하나의 논리 블록의 경계에 가깝도록, 즉 하나의 논리 블록에 대한 클러스터들수(2t) 또는 그 다수(m x 2t: m은 자연수)에 가깝도록, FS(12)의 가장 오래된 논리 블록으로부터, 재배치되는 논리 블록이 추가된다. 예컨대, 넘친 논리 블록에서의 클러스터들수가 2t 와 2t+1 사이의 값이면, 재배치 대상으로서의 논리 블록들수는, 클러스터들수가 2t+1에 가깝도록(2t+1을 포함) 증가된다. 클러스터들 수는, 컴팩션 후 논리 블록에 가능한 많은 유효 클러스터들을 수용하기 위하여 MLC 모드의 하나의 논리 블록의 경계에 가깝도록 된다.
클러스터들수가, IS(13)에서 동시에 컴팩션될 수 있는 클러스터들수(z)를 넘는 경우는, 클러스터들수가 이 클러스터들수(z) 이하이도록, 논리 블록들수가 설정된다.
이 상한은 하나의 처리에서 재배치될 논리 블록들수에 설정된다. 이 한계는 IS(13)의 관리 하에 논리 블록들수의 일시적인 증가를 방지하기 위하여 설정된다.
이러한 방식으로 결정된 재배치 대상으로서의 논리 블록들은 FS(12)에서 IS(13)으로 재배치된다(단계 S420).
(IS(13)에서의 컴팩션 및 조각 모음)
다음, IS(13)에서의 컴팩션 처리와 조각 모음 처리를 도 16에 도시된 흐름도를 따라 설명한다.
데이터 관리부(120)는, IS(13)의 관리 하의 논리 블록들수가 논리 블록들수의 특정 최대수를 넘는 지의 여부를 판정한다(단계 S500). IS(13)의 관리 하의 논리 블록들수가 최대 논리 블록들수를 넘는 경우에, 데이터 관리부(120)는 MS(11)에의 데이터 재배치(조각 모음 처리)를 실행하고, IS(13)의 관리 하의 논리 블록들수를 최대 논리 블록들수 이하로 억제하기 위한 컴팩션 처리를 실행한다(단계 S510). 데이터 소거 단위(논리 블록)와, 데이터 관리 단위(클러스터)가 상이한 경우, NAND 메모리(10)의 재기록의 진행에 따라, 논리 블록들은 무효인 데이터에 의해서 구멍이 있는 상태가 된다. 이러한 구멍이 있는 상태의 논리 블록들이 증가하면, 실질적으로 사용 가능한 논리 블록들이 줄어들어, NAND 메모리(10)의 기억 영역을 유효하게 이용할 수 없다. 따라서, 유효 클러스터들을 모아, 상이한 논리 블록에 재기록하는 컴팩션이라고 불리는 처리가 실행된다. 조각 모음 처리는 FS(12) 및 IS(13)의 클러스터들을 트랙에 통합하여, MS(11)에 추방하는 처리이다.
이어서, 본 실시예의 주요부를 보다 상세히 설명한다. NAND 메모리 관리용 테이블들은, 도 17에 도시된 바와 같이, 도 7에 도시된 관리 테이블들 외에, 컴플리트-프리-블록(Complete-Free-Block) 관리 테이블(CFB 관리 테이블)(300), 프래그먼트-프리-블록(Fragment-Free-Block) 관리 테이블(FFB 관리 테이블)(310), 액티브-블록 관리 테이블(AB 관리 테이블)(320), 및 배드-블록 관리 테이블(BB 관리 테이블)(330)을 포함한다.
CFB 관리 테이블(300)은 CFB를 관리하기 위한 테이블이다. CFB는, 사용하기 직전에 논리 블록을 소거하고, 소거된 상태로부터 기록된 FB이며, 데이터는 논리 블록의 선두에 위치된 논리 페이지로부터 기록될 수 있다. 본 실시예에서, CFB는 MS(11), FS(12) 및 IS(13)에서 사용된다. CFB 관리 테이블(300)은, 반환 리스트와 취득 리스트의 2종 구조를 포함한다. 반환 FIFO 리스트는, 특정 기간 동안 사용되지 않은 논리 블록들을 유지하고 논리 블록들을 해제하기 위한 리스트로, 소거 시각에서 소트된다. 할당 리스트는, CFB의 획득 요구를 받은 때 공급되고, 소거 횟수 순으로 소트된다(소거 횟수가 작은 논리 블록이 리스트의 선두에 위치된다). 반환 리스트(220a)로부터 압출된 블록은, 소거 횟수에 따라서 할당 리스트의 중간에 삽입된다. CFB의 할당이 요구되면, 데이터 관리부(120)는, 할당 리스트의 선두로부터 CFB를 추출하여 이 CFB를 할당한다.
FFB 관리 테이블(310)은, FFB를 관리하기 위한 것이다. FFB는, 무효 데이터가 논리 페이지의 중간까지 기록되어도, 나머지 논리 페이지가 소거 상태에 있는 것인 논리 블록이며, 나머지의 논리 페이지에 데이터가 추가적으로 기록될 수 있다. FFB는, FS(12)와 IS(13)에서 사용된다. FFB 관리 테이블(310)에서, FFB로서 사용되는 논리 블록 어드레스는 비어 있는 논리 페이지들수 마다 양방향 링크 리스트로서 관리된다. FFB 관리 테이블(310)은, 데이터가 기록된 논리 페이지(유효 페이지)를, 데이터가 미기록된 논리 페이지(미사용 페이지)로부터 구별하기 위한 정보를 관리한다.
AB 관리 테이블(320)은, FB로부터 MS(11), FS(12) 및 IS(13)에 용도가 할당된 논리 블록들(액티브 블록들(AB))의 리스트이며, 각 엔트리는 논리 블록 어드레스를 유지한다. 먼저 등록된 논리 블록이 선두에 위치된다. AB 관리 테이블은, 예컨대, 리프레시 처리용으로 사용된다.
BB 관리 테이블(330)은, 논리 블록을 구성하는 개개의 물리 블록 단위로 배드 블록(BB)들을 관리하기 위한 것이다. 예컨대, 데이터 소거가 정상적으로 종료되지 않은 물리 블록은 BB 관리 테이블(330)에서 배드 블록(BB)으로서 등록된다.
도 18은, 본 실시예의 주요부의 기능 구성의 블록도이다. NAND 메모리(10)는, 사용자 데이터를 기억하는, MS(11), FS(12) 및 IS(13)와 같은 유저 데이터 기억부(201), NAND 메모리(10) 상의 특정 기억 영역에 스냅샷으로서 기억된, 도 7 및 도 17에 도시된 관리 테이블들에 DRAM 관리용 테이블들을 제외하는 NAND 메모리 관리용 각종 관리 테이블들(도 7의 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 논리-물리 변환 테이블(40), CFB 관리 테이블(300), FFB 관리 테이블(310), AB 관리 테이블(320), 및 BB 관리 테이블(330))(202), 및 NAND 관리 테이블(202)에서와 같이 NAND 메모리(10) 상의 특정 기억 영역(비휘발 로그 영역)에 기억된, NAND 관리 테이블(202)의 갱신 전후의 차분 정보로서의 차분 로그, 액티브 로그, 및 스탠바이 로그를 포함하는 NAND 로그(203)를 기억한다.
DRAM(20)은, WC(21)과 RC(22)로서 기능하는 영역을 포함한다. 또한, DRAM(20)은, DRAM(20) 상에 로딩된 NAND 관리 테이블(202)인 마스터 테이블(204)이 기억되는 영역을 포함한다. 또한, DRAM(20)은, 마스터 테이블(204)이 갱신되는 경우 갱신 전후의 차분 정보인 차분 로그를 포함하는 차분 로그, 액티브 로그 및 스탠바이 로그를 포함하는 DRAM 로그(205)가 기억되는 영역을 포함한다.
데이터 관리부로서의 컨트롤러(120)는, 판독 및 기록 제어부(210), 로그 제어부(211), 로그 반영부(212), 동작 상태 관리부(213), 및 관리 정보 복원부(214)를 포함한다. 본 발명의 각 실시예의 각 기능 블록은 하드웨어와 소프트웨어의 조합 중 임의 하나 또는 이 조합에 의하여 실현될 수 있다. 따라서, 각 기능 블록을, 각 기능 블록이 하드웨어와 소프트웨어 중 임의의 것인 것을 명확히 하도록 그 기능의 관점으로부터 이하에 개괄적으로 설명한다. 이것은, 이러한 기능들이 하드웨어 또는 소프트웨어로서 실현되는 지에 따라 전체 시스템에 부과되는 설계 제약 또는 특정 실시예에 따른다. 당업자는 각 특정 실시예에 대한 각종 방법에 의하여 이들 기능들을 실현할 수 있고, 이러한 실현을 결정하는 것은 본 발명의 범위 내에 포함된다.
판독 및 기록 제어부(210)는, 마스터 테이블(204) 및 DRAM 로그(205)에 기초하여 판독 및 기록을 제어한다. 예컨대, 판독 및 기록 제어부(210)는, 호스트(1)로부터 호스트 I/F(2)를 경유하여 입력된 논리 어드레스 및 커맨드에 따라, DRAM(20)(WC(21))에의 데이터 기록 및 DRAM(20)(RC(22))으로부터의 데이터 판독을 실행한다. 또한, 예컨대, 판독 및 기록 제어부(210)는, 논리-물리 변환 테이블(40) 등에 기초하여 DRAM(20)(WC(21))으로부터 NAND 메모리(10)로의 데이터 기록, 및 NAND 메모리(10)로부터 DRAM(20)(RC(22))으로의 데이터 판독을 수행한다.
로그 제어부(211)는, 예컨대 다음을 실행한다.
NAND 메모리(10)에 기억된 각종 NAND 관리 테이블들(스냅샷들)(202)을 시스템 기동 시에 마스터 테이블(204)로서 DRAM(20)에 전송하는 처리;
판독 및 기록 제어부(210)가 NAND 메모리(10)에의 데이터 기록을 수행할 때와 같은, 마스터 테이블(204)을 갱신하는 이벤트가 발생할 때, 마스터 테이블(204)의 갱신 전후의 차분 정보인 차분 로그를 DRAM 로그(205)에 축적 기억하는 처리; 및
정상적인 전원 차단 시퀀스가 발생한 경우, 또는 DRAM(20) 상의 로그의 기억 영역(DRAM 로그(205)를 기억하기 위한 영역)이 부족된 경우와 같은, 특정 조건이 성립될 때, DRAM(20) 상의 마스터 테이블을 NAND 메모리(10)에 스냅샷으로서 기억하기 위한 스냅샷 처리.
로그 반영부(212)는, DRAM(20)에서의 로그량(DRAM 로그(205)의 양)이 특정 양에 도달할 때, 또는 갱신된 관리 테이블들(마스터 테이블(204)) 간에 정합성이 획득되는 시점에 도달하는 때와 같은, 특정 조건이 성립될 때, NAND 메모리(10)에서의 논리 블록들을 포함하는 NAND 로그(비휘발성 로그)(203)에 DRAM 로그(205)를 추가하여 기억하고, DRAM 로그(205)를 마스터 테이블(204)에 반영하는 커밋 처리를 실행한다. 스냅샷 처리 또는 커밋 처리가 실행되면, DRAM(20) 상에 축적되었던 DRAM 로그(205)는 무효화된다. 로그 기억용으로 사용되는 논리 블록은, 고속화를 위해의사 SLC 모드의 논리 블록일 수 있다.
동작 상태 관리부(213)는, 시스템 기동후 로그 반영부(212)가 제1 차분 로그를 NAND 로그(203)에 기록하기 전에, 시스템이 동작하는 것을 나타내는 액티브 로그가 NAND 로그(203)에 기록되며, 정상적인 시스템 정지 시, 시스템이 정지하는 것을 나타내는 스탠바이 로그가 차분 로그 또는 액티브 로그에 계속해서 NAND 로그(203)에 기록되는 것인 부정한 전원 차단을 검출하기 위한 로그 기록 처리를 실행한다.
관리 정보 복원부(214)는,
시스템 기동시, NAND 로그(203)에서의 액티브 로그, 차분 로그, 및 스탠바이 로그 중 하나 이상을 검출하고, 액티브 로그 및 스탠바이 로그의 기록 상태에 기초하여, 이전회 정상적인 시스템 정지가 행해지는 지 또는 부정한 전원 차단 시퀀스가 행해지는 지를 판단하는 처리; 및
부정한 전원 차단 시퀀스가 행해진 것이라고 판단될 때, 모든 FFB들이 해제되어, 해제된 모든 FFB들이 그 후 CFB로서 사용되도록, 관리 테이블을 변경하는 처리
를 실행한다.
도 19는 액티브 로그, 스탠바이 로그, 및 차분 로그를 기억하는 순서를 도시하는 흐름도이다. 동작 상태 관리부(213)는, 시스템으로서 SSD(100)가, 전원 모드 정보로서, SSD가 동작하고 있는 액티브 상태, 또는 SSD가 정지하고 있는 스탠바이 상태에 있는 지의 여부를 관리한다.
전원 온 직후(전력이 전원 회로(5)에 공급되고, 내부 전원 및 파워 온 리셋 신호가 생성되고, 드라이브 제어 회로(4)가 초기화되어, 시스템이 개시), 동작 상태 관리부(213)는 SSD(100)의 동작 상태를 스탠바이 상태로서 인식하는(단계 S1100) 것으로 가정한다.
전원 온 후(스탠바이 상태), 데이터 관리부(120)가 호스트(1)로부터 NAND 메모리(10)를 액세스하는 가능성을 갖는 커맨드를 수신하면(예컨대, 초기화 완료시, 활성화 요구시, 및 데이터 액세스 요구시), 동작 상태 관리부(213)는 NAND 로그(203)에 액티브 로그를 기억하고, 그 후 SSD(100)의 동작 상태를 액티브 상태로 바꾼다(단계 S1101).
NAND 메모리(10)에의 데이터 기록이 실행되는 경우와 같은, 마스터 테이블(204)이 갱신될 필요가 있는 이벤트가 발생되는 경우, 로그 제어부(211)는, 마스터 테이블(204)의 갱신 전후의 차분 정보인 차분 로그를 DRAM 로그(205)에 축적한다(단계 S1102).
특정 조건이 성립되면, 로그 반영부(212)는, NAND 메모리(10)의 논리 블록들을 포함하는 NAND 로그(203)에 DRAM 로그(205)(차분 로그)를 추가로 기억하고, 마스터 테이블(204)에 DRAM 로그(205)를 반영하기 위한 커밋 처리를 수행한다(단계 S1103).
호스트(1)로부터 정지 요구(스탠바이 요구) 시, 동작 상태 관리부(213)는, NAND 메모리(10)에 WC(21) 상의 데이터를 기록하여 데이터를 비휘발화하는 추방 처리를 수행한다. 추방 처리와 함께, 로그 제어부(211)는, 마스터 테이블(204)의 갱신 전후의 차분 정보인 차분 로그를 DRAM 로그(205)에 축적한다(단계 S1104).
로그 반영부(212)는, NAND 메모리(10)의 논리 블록들을 포함하는 NAND 로그(203)에 DRAM 로그(205)(차분 로그)를 추가로 기억하고, DRAM 로그(205)를 마스터 테이블(204)에 반영하기 위한 커밋 처리를 수행한다. 또한, 특정 조건이 성립되면, 로그 제어부(211)는 스냅샷 처리를 수행한다(단계 S1105).
동작 상태 관리부(213)는, SSD(100)의 동작 상태를 스탠바이 상태로 바꾸고, 스탠바이 로그를 차분 로그에 계속해서 NAND 로그(203)에 기억한다. SSD(100)는, 스탠바이 로그가 정상적으로 기록된 후 정상 전원 차단 시퀀스를 수행할 수 있다(단계 S1106).
도 20a는 정상적인 전원 차단 시퀀스가 실행된 경우, 다음 시스템 기동 시의 NAND 로그(203)의 상태를 도시하고, 도 20b는 부정한 전원 차단이 발생되었던 경우, 다음 시스템 기동 시의 NAND 로그(203)의 상태를 도시한다.
도 20a에 도시된 바와 같이, 정상적인 전원 차단의 경우는, 최초에 액티브 로그가 기록되고, 이어서 차분 로그가 기록되고(차분 로그는 존재하지 않을 수도 있다), 마지막으로 스탠바이 로그가 기록된다. 이러한 방식으로, 정상적인 시퀀스의 경우, 데이터는 스탠바이 상태에서 갱신되지 않는다. 정상적인 전원 차단 시퀀스는, 호스트(1)로부터 정지 요구를 받고 나서 행해지기 때문에, 액티브 상태에서의 전원 차단이 실행되지 않는다.
관리 정보 복원부(214)는, 전원 온 후의 초기화 처리에서, NAND 메모리(10)로부터 NAND 로그(203)를 판독하고, 그 내용을 전방으로부터 주사한다. 통상은, 이 내용은 액티브 로그로부터 시작하여, 다음에 차분 로그, 다음에 스탠바이 로그의 순이며, 그 후 이 시퀀스가 반복되고, 최후로 이 내용은 스탠바이 로그에 의하여 종료된다. 관리 정보 복원부(214)는, 최초에 액티브 로그가 기록되고, 마지막으로 스탠바이 로그가 기록되는 경우에, 정상적인 전원 차단 시퀀스가 실행된다고 판정한다.
한편, 도 20b에 도시된 바와 같이, 부정한 전원 차단의 경우는, 액티브 로그만이 존재하고, 마지막으로 스탠바이 로그가 기록되지 않는다. 즉, 액티브 로그를 기억함으로써, "NAND 메모리(10)에는 기록이 행해지나, 로그의 커밋은 종료되지 않는다"는 부정한 전원 차단이 검출될 수 있다. 관리 정보 복원부(214)는, 최후의 로그가 스탠바이 로그가 아닌 것(액티브 로그 또는 차분 로그)을 인식하면, 부정한 전원 차단이 있었다고 판정한다.
액티브 로그가 없고, 스탠바이 로그만이 있는 경우, 전원 온 후 NAND 로그(203)에 제1 차분 로그를 기록하기 전에, 부정한 전원 차단이 발생한 경우, 이전의 정상적인 전원 차단으로 인한 스탠바이 로그가 마지막으로 기록되고, 따라서 부정한 전원 차단이 정상적인 전원 차단으로부터 구별될 수 없다. 따라서, 본 실시예에서와 같이 액티브 로그와 스탠바이 로그 모두를 사용함으로써 단순한 구성으로 부정한 전원 차단을 검출할 수 있다.
관리 정보 복원부(214)가 부정한 전원 차단이 발생했다라고 판정될 때 행해지는 처리를 다음에 설명한다. MLC NAND 메모리에서, 이미 데이터가 기록되어 있는 물리 블록에 상위 페이지가 추가되면, 과거에 기록된 하위 페이지의 내용이 상실될 수도 있고, SLC/MLC NAND 메모리에 한하지 않는 NAND 메모리에서, 하나의 물리 페이지에 관하여 기록이 행해진 후에, 물리 블록 내의 데이터가 판독되지 않을 수도 있다. 이들 가능성에 대처하기 위해서, 본 실시예에서, 도 21에 도시된 바와 같이, 논리 페이지의 중간까지 무효인 데이터가 기록되어도, 나머지 논리 페이지가 소거 상태에 있는 것인 논리 블록인 FFB가 채용된다. FFB에서, 나머지 논리 페이지에 대하여 추가 기록이 행해진다. FFB는, 본 실시예에서, FS(12)와 IS(13)에서 채용된다. FS(12)와 IS(13)로서 관리되는 FFB에서의 무효 데이터는, 처음에는, FS(12) 및 IS(13)에서 무효인 데이터이나, WC(21)로부터 MS(11)와 같은 다른 장소에 재기록되어, 논리 블록에서 무효화된다.
FFB에의 추가 기록을 실현하기 위하여, 각 논리 블록에 대하여 도 7에 도시되는 클러스터 블록 정보 테이블(33)에서, 소거 후 데이터가 기록되었던 논리 페이지(유효 페이지)를, 데이터가 기록되지 않았던 미사용 페이지를 구별하기 위한 정보(FFB 관리 테이블(310)에서 관리되는 FFB 관리 정보)가 관리되고 있다. FFB 관리 정보는, SSD(100)의 전원 차단을 지나도 정보가 사용될 수 있도록, NAND 메모리(10)에 FFB 관리 정보가 기록되어, FFB 관리 정보가 비휘발화되는 것이 요구된다.
그러나, FFB에의 데이터 기록과, FFB 관리 정보의 NAND 메모리(10)에의 기록으로 정보가 비휘발화(커밋)되는 동안, 부정한 전원 차단이 발생하면, 문제가 발생한다. 구체적으로는, 미사용 페이지를 갖는 FFB에서의 특정 논리 페이지에 데이터가 기록된 후, FFB 관리 정보 내의 논리 페이지에 데이터가 기록되었다는 것이 NAND 메모리(10)에 커밋되기 전에, 부정한 전원 차단이 발생하면, 다음 회 SSD 개시시, 실제로는 FFB에 데이터가 기록되었지만, FFB 관리 정보는 미기록 상태에 있다. 이 상태에서, 논리 페이지는 관리 상은 미기록(미사용)으로 간주되고, 따라서 논리 페이지에 새롭게 데이터를 기록하고자 시도되고, 기록 오류(데이터 왜곡(garbling))가 발생할 수도 있다.
따라서, 로그 또는 스냅샷이 NAND 메모리(10)에 기록된 시점에서, 관리 테이블이 비휘발화된다. 로그나 스냅샷이 NAND 메모리(10)에 기록되기 전에 부정한 전원 차단 시퀀스가 실행된 경우, 다음번 기동 시, 이전회의 커밋 시점으로 관리 테이블의 상태가 복귀된다. 관리 테이블의 상태가 복귀되지만, NAND 메모리(10)에서의 FFB의 추가 기록 상태는 복귀되지 않는다는 것이 주목되어야 한다.
도 22는 시스템 기동 시 데이터 관리부(120)에 의하여 실행된 처리를 도시하는 흐름도이다.
관리 정보 복원부(214)는, 시스템 기동시 NAND 로그(203)에서의 액티브 로그, 차분 로그, 및 스탠바이 로그 중 적어도 하나를 검출하고, 액티브 로그 및 스탠바이 로그의 기록 상태에 기초하여 이전회 정상적인 시스템 정지가 실행되었는지 부정한 전원 차단이 실행되었는 지를 판정한다(단계 S1200).
정상적인 시스템 정지가 실행된다고 판정되면(단계 S1200에서 Yes), 관리 정보 복원부(214)는, 최근의 스냅샷 및 차분 로그에 기초하여 관리 테이블들(마스터 테이블(204) 및 DRAM 로그(205))을 복원한다(단계 S1201).
부정한 전원 차단이 수행되었다고 판정되면(단계 S1200에서 No), 관리 정보 복원부(214)는 FFB 관리 정보를 편집하고, 다음에 데이터가 기록될 때, 논리 블록을 소거하고 나서 기록이 수행되도록 변경한다. 구체적으로는, 관리 정보 복원부(214)는, 부정한 전원 차단 후의 기동 시, 모든 FFB를 CFB에 재배치하는 처리, 즉 FFB 관리 테이블(310)에서 관리되는 모든 논리 블록들(논리 블록 어드레스들)을 CFB 관리 테이블(300)의 제어하로 재배치하는 처리를 실행한다. 따라서, FFB의 기록 상태와 FFB 관리 정보 간의 부정합이 해소된다(단계 S1202).
모든 FFB들을 CFB에 재배치하는 처리를 실행한 후, 관리 정보 복원부(214)는, 최근 스냅샷 및 차분 로그에 기초하여 관리 테이블들(마스터 테이블(204) 및 DRAM 로그(205))을 복원한다(단계 S1203).
로그 반영부(212)는, 복원된 마스터 테이블(204)과 DRAM 로그(205)에 기초하여 스냅샷을 다시 취한다(단계 S1204).
FFB에는, 추가 기록 이전에는 무효 데이터만 기억되므로, 논리 블록이 CFB에 재배치되어 그 후 소거되어도, 문제는 발생되지 않는다. 또한, CFB의 경우도, 부정한 전원 차단이 발생한 경우, 관리 테이블과 NAND 메모리(10)의 CFB의 상태 간에 부정합이 발생하고, 데이터가 CFB에 기록되었으나, CFB 관리 정보는 여전히 미기록 상태에 있는 사태가 발생한다. 그러나, 기록 직전에 CFB에 소거가 행해지므로, 상술된 기록 오류는 발생하지 않는다. 또한, 부정한 전원 차단이 검출된 경우, 스냅샷이 다시 취해져, 비휘발성 정보를 안정 상태로 복귀시킨다.
본 실시예에서, 동작 상태 관리부(213)와 관리 정보 복원부(214)를 추가함으로써, 부정한 전원 차단의 검출과, FFB의 기록 상태와 FFB 관리 정보 간의 부정합의 해소가 실현된다.
본 실시예에 따른 SSD(100)에서, 시스템 기동후 제1 차분 로그가 NAND 로그(203)에 기록되는 전에, 시스템이 동작하고 있다는 것을 나타내는 액티브 로그가 NAND 로그(203)에 기록되고, 정상적인 시스템 정지 시, 시스템이 정지하는 것을 나타내는 스탠바이 로그가 차분 로그에 계속해서 NAND 로그(203)에 추가 기록된다. 시스템 기동 시, NAND 로그(203) 내의 액티브 로그 및 스탠바이 로그의 기록 상태에 기초하여, 이전회 정상적인 시스템 정지가 행해졌는 지 또는 부정한 전원 차단이 발생되었는 지의 여부가 판단되어, 부정한 전원 차단을 간편하고 또한 확실하게 검출할 수 있다.
또한, 본 실시예에 따른 SSD(100)에서, 부정한 전원 차단이 검출되면, FFB가 CFB의 제어 하에 재배치되므로, FFB의 기록 상태와 FFB 관리 정보 간의 부정합이 해소되어, 기록 오류 발생을 미연에 막을 수 있다. 따라서, NAND형 플래시 메모리를 사용하여 고 신뢰성으로 메모리 시스템을 구성할 수 있다.
(제2 실시예)
도 23은, SSD(100)가 탑재된 PC(1200)의 예의 사시도이다. PC(1200)는 본체(1201) 및 표시 유닛(1202)을 포함한다. 표시 유닛(1202)은, 디스플레이 하우징(1203)과, 이 디스플레이 하우징(1203)에 수용된 표시 장치(1204)를 포함한다.
본체(1201)는, 섀시(chassis)(1205), 키보드(1206), 포인팅 장치로서 터치 패드(1207)를 포함한다. 섀시(1205)는 그 내부에 메인 회로 기판, ODD(Optical Disk Device) 유닛, 카드 슬롯, 및 SSD(100)를 포함한다.
카드 슬롯은, 섀시(1205)의 주변 벽에 인접하도록 마련된다. 주변 벽은 카드 슬롯을 마주보는 개구부(1208)를 갖는다. 사용자는, 이 개구부(1208)를 통하여 섀시(1205)의 외부로부터 추가 디바이스를 카드 슬롯에 대하여 삽입 및 제거할 수 있다.
SSD(100)는, 종래의 하드 디스크 드라이브(HDD) 대신에, PC(1200)에 탑재된 상태에서 사용될 수 있고, 또는 PC(1200)에 포함된 카드 슬롯에 삽입된 상태로 추가 장치로서 사용될 수 있다.
도 24는, SSD(100)가 탑재된 PC(1200)의 시스템 구성예의 도면이다. PC(1200)는, CPU(1301), 노스 브리지(1302), 주 메모리(1303), 비디오 컨트롤러(1304), 오디오 컨트롤러(1305), 사우스 브리지(1309), BIOS-ROM(Basic Input/Output System Read-Only Memory)(1310), SSD(100), ODD 유닛(1311), 임베디드 컨트롤러/키보드 컨트롤러 IC(EC/KBC)(1312), 및 네트워크 컨트롤러(1313)를 포함한다.
CPU(1301)는, PC(1200)의 동작을 제어하기 위한 프로세서이며, SSD(100)로부터 주 메모리(1303)에 로딩되는 운영 체제(Operating System)(OS)를 실행한다. 또한, ODD 유닛(1311)은 탑재된 광 디스크에 판독 처리 및 기록 처리 중 적어도 하나를 실행할 수 있는 경우에, CPU(1301)는 처리를 실행한다.
또한, CPU(1301)는, BIOS-ROM(1310)에 기억된 시스템 BIOS(Basic Input Output System)를 실행한다. 시스템 BIOS는, PC(1200)의 하드웨어 제어를 위한 컴퓨터 프로그램이다.
노스 브리지(1302)는, CPU(1301)의 로컬 버스를 사우스 브리지(1309)에 접속시키는 브리지 장치이다. 노스 브리지(1302)는, 주 메모리(1303)에의 액세스를 제어하는 메모리 컨트롤러를 갖는다.
또한, 노스 브리지(1302)는, AGP(Accelerated Graphics Port) 버스 등을 통해 비디오 컨트롤러(1304)와의 통신 및 오디오 컨트롤러(1305)와의 통신을 실행하는 기능을 갖는다.
주 메모리(1303)는, 컴퓨터 프로그램과 데이터를 일시적으로 기억하고, CPU(1301)의 작업 영역으로서 기능한다. 주 메모리(1303)는, 예컨대 DRAM으로 구성된다.
비디오 컨트롤러(1304)는, PC(1200)의 디스플레이 모니터로서 사용되는 표시 유닛(1202)을 제어하는 비디오 재생 컨트롤러이다.
오디오 컨트롤러(1305)는, PC(1200)의 스피커(1306)를 제어하는 오디오 재생 컨트롤러이다.
사우스 브리지(1309)는, LPC(Low Pin Count) 버스(1314) 상의 각 장치, 및 PCI(Peripheral Component Interconnect) 버스(1315) 상의 각 장치를 제어한다. 또한, 사우스 브리지(1309)는, 각종 소프트웨어 및 데이터를 기억하는 메모리 장치인 SSD(100)를, ATA 인터페이스를 통해 제어한다.
PC(1200)는 섹터 단위로 SSD(100)에 액세스한다. ATA 인터페이스를 통해 기록 커맨드, 판독 커맨드, 플러시(flush) 커맨드 등이 SSD(100)에 입력된다.
사우스 브리지(1309)는, BIOS-ROM(1310), 및 ODD 유닛(1311)에의 액세스를 제어하는 기능을 갖는다.
EC/KBC(1312)는, 전력 관리를 위한 임베디드 컨트롤러와, 키보드(KB)(1206) 및 터치 패드(1207)를 제어하기 위한 키보드 컨트롤러가 통합된 1칩 마이크로컴퓨터이다.
EC/KBC(1312)는, 사용자에 의한 파워 버튼의 조작에 기초하여 PC(1200)를 ON/OFF하는 기능을 갖는다. 네트워크 컨트롤러(1312)는, 예컨대 인터넷 등의 외부 네트워크와의 통신을 실행하는 통신 장치이다.
제2 실시예에 따른 PC(1200)는, SSD(100)에 전력을 공급하고, 또한 SSD(100)에 정지 요구(스탠바이 요구)를 발행한다. PC(1200)로부터 SSD(100)에의 전력 공급이 부정하게 차단되는 경우라도, 기록 오류의 발생을 미연에 막을 수 있다.
부가적인 이점들 및 변형들이 당업자에게 용이하게 행해질 것이다. 따라서, 본 발명은 그 광범위한 태양에서 여기서 도시되고 설명된 대표적인 실시예들과 특정 상테들에 제한되지 않는다. 따라서, 첨부된 청구 범위 및 그 등가물들에 의하여 정의되는 바와 같은 개괄적인 신규한 개념의 사상 또는 범위로부터 벗어나지 않고, 다양한 변경이 행해질 수도 있다.

Claims (30)

  1. 메모리 시스템으로서,
    휘발성인 제1 기억 수단;
    비휘발성이며, 제1 기억 수단에 접속되는 제2 기억 수단;
    제2 기억 수단에서 논리 어드레스가 데이터 기억 위치에 연관되는 관리 테이블에 기초하여, 제2 기억 수단으로부터의 데이터 판독 및 제2 기억 수단으로의 데이터 기록을 수행하는 판독/기록 제어 수단;
    제1 기억 수단에 관리 테이블을 전송하고, 제1 기억 수단 상의 관리 테이블을 갱신하는 경우가 발생하면, 관리 테이블의 갱신 전후의 차분 정보를 차분 로그로서 제1 기억 수단에 기억하는 로그 제어 수단;
    제1 조건이 성립될 때에, 차분 로그를 제2 기억 수단에 기억하고, 제1 기억 수단에 기억된 관리 테이블에 차분 로그를 반영하는 커밋(commit) 처리를 수행하는 로그 반영 수단;
    시스템 기동 후, 로그 반영 수단이 차분 로그를 제2 기억 수단에 기억하기 전에, 제1 로그를 제2 기억 수단에 기억하고, 정상적인 시스템 정지가 수행되는 경우, 제2 로그를 제2 기억 수단에 기억하는 동작 상태 관리 수단; 및
    제2 기억 수단에 기억된 제1 로그, 차분 로그, 및 제2 로그 중 하나 이상을 검출하고, 정상적인 시스템 정지가 수행되었는 지의 여부를 판정하는 관리 정보 복원 수단
    을 포함하는 메모리 시스템.
  2. 제 1 항에 있어서, 상기 로그 반영 수단 및 상기 동작 상태 관리 수단은, 제2 기억 수단에서의 데이터 소거 단위로서 블록들을 포함하는 비휘발성 로그 영역에, 제1 로그, 차분 로그, 및 제2 로그를 추가로 기억하는 것인 메모리 시스템.
  3. 제 2 항에 있어서, 상기 동작 상태 관리 수단은, 시스템 기동 후, 초기화가 종료된 때, 활성화가 요구될 때, 또는 데이터 액세스가 요구될 때의 임의 시점에서, 제1 로그를 비휘발성 로그 영역에 기억하는 것인 메모리 시스템.
  4. 제 2 항에 있어서, 상기 동작 상태 관리 수단은, 시스템 정지 요구가 호스트 장치로부터 수신될 때, 제2 로그를 비휘발성 로그 영역에 기억하는 것인 메모리 시스템.
  5. 제 4 항에 있어서, 상기 동작 상태 관리 수단은, 시스템 정지 요구가 호스트 장치로부터 수신될 때, 제1 기억 수단에서의 데이터를 제2 기억 수단으로 추방하는(flush) 것인 메모리 시스템.
  6. 제 1 항에 있어서, 상기 관리 정보 복원 수단은, 제2 로그가 제2 기억 수단에 기억되어 있지 않을 때, 정상적인 시스템 정지가 수행되지 않는다는 것으로 판정하는 것인 메모리 시스템.
  7. 제 2 항에 있어서, 상기 관리 정보 복원 수단은, 제2 로그가 비휘발성 로그 영역의 말미에 기억되어 있지 않을 때, 정상적인 시스템 정지가 수행되지 않는다는 것으로 판정하는 것인 메모리 시스템.
  8. 제 1 항에 있어서, 상기 제1 조건은, 제1 기억 수단에 기억된 차분 로그량이 특정 값에 도달했던 경우, 및 관리 테이블의 갱신이, 정합성이 달성된 시점에 도달했던 경우 중 하나 이상을 포함하는 것인 메모리 시스템.
  9. 제 1 항에 있어서, 상기 로그 제어 수단은, 제2 조건이 성립될 때, 제1 기억 수단에 기억된 관리 테이블을 제2 기억 수단에 기억하기 위한 스냅샷(snapshot) 처리를 수행하는 것인 메모리 시스템.
  10. 제 9 항에 있어서, 상기 제2 조건은, 정상적인 시스템 정지가 수행되는 경우, 및 제1 기억 수단에서의 차분 로그의 기억 영역이 불충분해지는 경우 중 하나 이상을 포함하는 것인 메모리 시스템.
  11. 제 1 항에 있어서, 상기 로그 반영 수단은, 커밋 처리가 수행된 후에, 제1 기억 수단에 기억된 차분 로그를 무효화하는 것인 메모리 시스템.
  12. 제 9 항에 있어서, 상기 로그 제어 수단은, 스냅샷 처리가 수행된 후에, 제1 기억 수단에 기억된 차분 로그를 무효화하는 것인 메모리 시스템.
  13. 제 1 항에 있어서,
    상기 제2 기억 수단은, 소거 동작을 수행한 후 기록이 선두 페이지(top page)로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하고,
    상기 관리 정보 복원 수단은, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 것인 메모리 시스템.
  14. 제 2 항에 있어서,
    상기 제2 기억 수단은, 소거 동작을 수행한 후 기록이 선두 페이지로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하고,
    상기 관리 정보 복원 수단은, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 것인 메모리 시스템.
  15. 제 6 항에 있어서,
    상기 제2 기억 수단은, 소거 동작을 수행한 후 기록이 선두 페이지로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하고,
    상기 관리 정보 복원 수단은, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 것인 메모리 시스템.
  16. 휘발성인 제1 기억 수단, 및 비휘발성이며, 제1 기억 수단에 접속되는 제2 기억 수단을 포함하는 메모리 시스템을 제어하는 방법으로서,
    제2 기억 수단에서 논리 어드레스가 데이터 기억 위치에 연관되는 관리 테이블에 기초하여, 제2 기억 수단으로부터의 데이터 판독 및 제2 기억 수단으로의 데이터 기록을 수행하는 판독/기록 제어 처리;
    제1 기억 수단에 관리 테이블을 전송하고, 제1 기억 수단 상의 관리 테이블을 갱신하는 경우가 발생하면, 관리 테이블의 갱신 전후의 차분 정보를 차분 로그로서 제1 기억 수단에 기억하는 로그 제어 처리;
    제1 조건이 성립될 때에, 차분 로그를 제2 기억 수단에 기억하고, 제1 기억 수단에 기억된 관리 테이블에 차분 로그를 반영하는 커밋 처리를 실행하는 로그 반영 처리;
    시스템 기동 후, 차분 로그가 제2 기억 수단에 기억되기 전에, 제1 로그를 제2 기억 수단에 기억하고, 정상적인 시스템 정지가 수행되는 경우, 제2 로그를 제2 기억 수단에 기억하는 동작 상태 관리 처리; 및
    제2 기억 수단에 기억된 제1 로그, 차분 로그, 및 제2 로그 중 하나 이상을 검출하고, 정상적인 시스템 정지가 수행되었는 지의 여부를 판정하는 관리 정보 복원 처리
    를 포함하는 메모리 시스템의 제어 방법.
  17. 제 16 항에 있어서, 상기 로그 반영 처리 및 상기 동작 상태 관리 처리는, 제2 기억 수단에서의 데이터 소거 단위로서 블록들을 포함하는 비휘발성 로그 영역에, 제1 로그, 차분 로그, 및 제2 로그를 추가로 기억하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  18. 제 17 항에 있어서, 상기 동작 상태 관리 처리는, 시스템 기동 후, 초기화가 종료된 때, 활성화가 요구될 때, 또는 데이터 액세스가 요구될 때의 임의 시점에서, 제1 로그를 비휘발성 로그 영역에 기억하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  19. 제 17 항에 있어서, 상기 동작 상태 관리 처리는, 시스템 정지 요구가 호스트 장치로부터 수신될 때, 제2 로그를 비휘발성 로그 영역에 기억하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  20. 제 19 항에 있어서, 상기 동작 상태 관리 처리는, 시스템 정지 요구가 호스트 장치로부터 수신될 때, 제1 기억 수단에서의 데이터를 제2 기억 수단으로 추방하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  21. 제 16 항에 있어서, 상기 관리 정보 복원 처리는, 제2 로그가 제2 기억 수단에 기억되어 있지 않을 때, 정상적인 시스템 정지가 수행되지 않는다는 것으로 판정하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  22. 제 17 항에 있어서, 상기 관리 정보 복원 처리는, 제2 로그가 비휘발성 로그 영역의 말미에 기억되어 있지 않을 때, 정상적인 시스템 정지가 수행되지 않는다는 것으로 판정하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  23. 제 16 항에 있어서, 상기 제1 조건은, 제1 기억 수단에 기억된 차분 로그량이 특정 값에 도달했던 경우, 및 관리 테이블의 갱신이, 정합성이 달성된 시점에 도달했던 경우 중 하나 이상을 포함하는 것인 메모리 시스템의 제어 방법.
  24. 제 16 항에 있어서, 상기 로그 제어 처리는, 제2 조건이 성립될 때, 제1 기억 수단에 기억된 관리 테이블을 제2 기억 수단에 기억하기 위한 스냅샷 처리를 수행하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  25. 제 24 항에 있어서, 상기 제2 조건은, 정상적인 시스템 정지가 수행되는 경우, 및 제1 기억 수단에서의 차분 로그의 기억 영역이 불충분해지는 경우 중 하나 이상을 포함하는 것인 메모리 시스템의 제어 방법.
  26. 제 16 항에 있어서, 상기 로그 반영 처리는, 커밋 처리가 수행된 후에, 제1 기억 수단에 기억된 차분 로그를 무효화하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  27. 제 24 항에 있어서, 상기 로그 제어 처리는, 스냅샷 처리가 수행된 후에, 제1 기억 수단에 기억된 차분 로그를 무효화하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  28. 제 16 항에 있어서,
    상기 판독/기록 제어 처리는, 소거 동작을 수행한 후 기록이 선두 페이지로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하는 제2 기억 수단을 관리하는 처리를 포함하고,
    상기 관리 정보 복원 처리는, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  29. 제 17 항에 있어서,
    상기 판독/기록 제어 처리는, 소거 동작을 수행한 후 기록이 선두 페이지로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하는 제2 기억 수단을 관리하는 처리를 포함하고,
    상기 관리 정보 복원 처리는, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
  30. 제 21 항에 있어서,
    상기 판독/기록 제어 처리는, 소거 동작을 수행한 후 기록이 선두 페이지로부터 수행되는 제1 블록, 및 무효 데이터가 페이지의 중간까지 기록되고, 소거 동작을 수행하지 않고 데이터 미기록의 페이지에 기록이 추가로 수행되는 제2 블록을 포함하는 제2 기억 수단을 관리하는 처리를 포함하고,
    상기 관리 정보 복원 처리는, 정상적인 시스템 정지가 수행되지 않았다고 판정되면, 제2 블록을 해제하여 이 제2 블록을 제1 블록으로서 사용하도록 관리 테이블을 변경하는 처리를 포함하는 것인 메모리 시스템의 제어 방법.
KR1020117005594A 2008-12-27 2009-12-28 메모리 시스템 및 메모리 시스템의 제어 방법 KR101186788B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008335559A JP5317690B2 (ja) 2008-12-27 2008-12-27 メモリシステム
JPJP-P-2008-335559 2008-12-27
PCT/JP2009/071920 WO2010074353A1 (en) 2008-12-27 2009-12-28 Memory system and method of controlling memory system

Publications (2)

Publication Number Publication Date
KR20110050504A KR20110050504A (ko) 2011-05-13
KR101186788B1 true KR101186788B1 (ko) 2012-09-27

Family

ID=42287930

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117005594A KR101186788B1 (ko) 2008-12-27 2009-12-28 메모리 시스템 및 메모리 시스템의 제어 방법

Country Status (7)

Country Link
US (1) US8725932B2 (ko)
EP (1) EP2324428B1 (ko)
JP (1) JP5317690B2 (ko)
KR (1) KR101186788B1 (ko)
CN (1) CN102150142B (ko)
TW (1) TWI437431B (ko)
WO (1) WO2010074353A1 (ko)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010186341A (ja) * 2009-02-12 2010-08-26 Toshiba Corp メモリシステム
JP4910035B2 (ja) * 2009-11-13 2012-04-04 株式会社東芝 電子機器および通信制御方法
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
US8576641B1 (en) * 2010-02-26 2013-11-05 Xilinx, Inc. Method of and circuit for providing non-volatile memory in an integrated circuit
IL208641A0 (en) * 2010-10-12 2010-12-30 Eci Telecom Ltd Method for accelerating start up of a computerized system
JP2012108627A (ja) * 2010-11-15 2012-06-07 Toshiba Corp メモリシステム
US8495338B2 (en) 2010-12-03 2013-07-23 Micron Technology, Inc. Transaction log recovery
JP5570406B2 (ja) * 2010-12-14 2014-08-13 株式会社日立製作所 メモリコントローラ、及びデータ記録装置
JP2012128645A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP5535128B2 (ja) 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
JP2012128816A (ja) 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
US8972651B2 (en) 2011-10-05 2015-03-03 Hitachi, Ltd. Storage system and storage method
US9251055B2 (en) 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US9471484B2 (en) 2012-09-19 2016-10-18 Novachips Canada Inc. Flash memory controller having dual mode pin-out
US9015404B2 (en) * 2012-09-28 2015-04-21 Intel Corporation Persistent log operations for non-volatile memory
TWI510903B (zh) * 2012-11-19 2015-12-01 Wistron Corp 電腦系統及資料回復方法
JP6056453B2 (ja) * 2012-12-20 2017-01-11 富士通株式会社 プログラム、データ管理方法および情報処理装置
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
KR102127284B1 (ko) 2013-07-01 2020-06-26 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 관리 방법
US20150095551A1 (en) * 2013-09-30 2015-04-02 Micron Technology, Inc. Volatile memory architecutre in non-volatile memory devices and related controllers
KR102065665B1 (ko) 2013-10-17 2020-01-13 삼성전자 주식회사 더미 워드라인을 포함하는 불휘발성 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작방법
US9007841B1 (en) 2013-10-24 2015-04-14 Western Digital Technologies, Inc. Programming scheme for improved voltage distribution in solid-state memory
JP6264012B2 (ja) * 2013-12-16 2018-01-24 富士通株式会社 制御装置、及び制御プログラム
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
US10223001B2 (en) 2015-03-12 2019-03-05 Toshiba Memory Corporation Memory system
CN106935273B (zh) * 2015-12-30 2020-03-24 北京京存技术有限公司 eMMC测试系统及方法
US10229048B2 (en) 2016-06-29 2019-03-12 Western Digital Technologies, Inc. Unified paging scheme for dense and sparse translation tables on flash storage systems
US10175896B2 (en) 2016-06-29 2019-01-08 Western Digital Technologies, Inc. Incremental snapshot based technique on paged translation systems
US10235287B2 (en) 2016-06-29 2019-03-19 Western Digital Technologies, Inc. Efficient management of paged translation maps in memory and flash
US11216361B2 (en) 2016-06-29 2022-01-04 Western Digital Technologies, Inc. Translation lookup and garbage collection optimizations on storage system with paged translation table
US10353813B2 (en) 2016-06-29 2019-07-16 Western Digital Technologies, Inc. Checkpoint based technique for bootstrapping forward map under constrained memory for flash devices
CN106598768B (zh) * 2016-11-28 2020-02-14 华为技术有限公司 一种处理写请求的方法、装置和数据中心
US10095626B2 (en) * 2017-03-10 2018-10-09 Toshiba Memory Corporation Multibit NAND media using pseudo-SLC caching technique
JP7109949B2 (ja) 2018-03-23 2022-08-01 キオクシア株式会社 メモリシステム及びメモリシステムの制御方法
JP2019185350A (ja) 2018-04-09 2019-10-24 東芝メモリ株式会社 メモリシステム及びメモリシステムの制御方法
US10691358B2 (en) * 2018-06-14 2020-06-23 Silicon Motion, Inc. Memory controller and method capable of using different storing modes to store data units having different data sizes
JP6727472B1 (ja) * 2019-07-26 2020-07-22 三菱電機株式会社 プログラマブルロジックコントローラ、設定ツール、及びプログラム
US11520523B2 (en) 2020-05-26 2022-12-06 Western Digital Technologies, Inc. Data integrity protection of ZNS needs
US11561717B2 (en) 2020-05-26 2023-01-24 Western Digital Technologies, Inc. Data integrity protection of SSDs utilizing streams
KR20210155055A (ko) * 2020-06-15 2021-12-22 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
JP2022052089A (ja) 2020-09-23 2022-04-04 キオクシア株式会社 メモリシステム及びメモリシステムの制御方法
US20230376228A1 (en) * 2022-05-17 2023-11-23 Micron Technology, Inc. Techniques for sequential access operations

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591329B1 (en) 1997-12-22 2003-07-08 Tdk Corporation Flash memory system for restoring an internal memory after a reset event

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69525971T3 (de) 1994-12-29 2013-01-10 Chugai Seiyaku K.K. Verwendung eines pm-1 antikörpers oder eines mh 166 antikörpers zur verstärkung des anti-tumor-effektes von cisplatin oder carboplatin
JP5317381B2 (ja) 1999-08-23 2013-10-16 エントレメッド インコーポレイテッド 高純度2−メトキシエストラジオールの生成方法
JP3692313B2 (ja) * 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US7181611B2 (en) 2002-10-28 2007-02-20 Sandisk Corporation Power management block for use in a non-volatile memory system
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
JP2005024300A (ja) 2003-06-30 2005-01-27 Tanaka Scientific Ltd 蛍光x線分析装置のフローセル
JP2005115857A (ja) * 2003-10-10 2005-04-28 Sony Corp ファイル記憶装置
US20050204115A1 (en) * 2004-01-30 2005-09-15 Kiminori Matsuno Semiconductor memory device, memory controller and data recording method
JP2005242897A (ja) * 2004-02-27 2005-09-08 Oki Electric Ind Co Ltd フラッシュディスク装置
US7814057B2 (en) * 2005-04-05 2010-10-12 Microsoft Corporation Page recovery using volume snapshots and logs
JP2006350572A (ja) * 2005-06-14 2006-12-28 Ricoh Co Ltd 記憶装置、画像形成装置及びシステムデータ管理方法
US7668846B1 (en) * 2005-08-05 2010-02-23 Google Inc. Data reconstruction from shared update log
US7624129B2 (en) * 2006-06-30 2009-11-24 Microsoft Corporation Dual logging of changes to a user preference in a computer device
JP2009020986A (ja) * 2007-07-15 2009-01-29 Hitachi Global Storage Technologies Netherlands Bv ディスク・ドライブ装置及びディスク・ドライブ装置において不揮発性半導体メモリ領域上のデータを管理するテーブルを保存する方法
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4538034B2 (ja) 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
JP4461170B2 (ja) * 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
CN101632068B (zh) * 2007-12-28 2015-01-14 株式会社东芝 半导体存储装置
JP4489127B2 (ja) * 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP4675984B2 (ja) * 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP4653817B2 (ja) * 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
WO2009110303A1 (en) 2008-03-01 2009-09-11 Kabushiki Kaisha Toshiba Memory system
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4551940B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP2009211215A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4643667B2 (ja) * 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4691123B2 (ja) * 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
US8276043B2 (en) * 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
US8706950B2 (en) * 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP4498426B2 (ja) 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
US8484432B2 (en) * 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
JP4762261B2 (ja) * 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
TWI385516B (zh) * 2008-08-12 2013-02-11 Phison Electronics Corp 快閃記憶體儲存系統及其資料寫入方法
US8732388B2 (en) * 2008-09-16 2014-05-20 Micron Technology, Inc. Embedded mapping information for memory devices
JP2010176646A (ja) * 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法
JP2010186341A (ja) * 2009-02-12 2010-08-26 Toshiba Corp メモリシステム
JP5376983B2 (ja) * 2009-02-12 2013-12-25 株式会社東芝 メモリシステム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591329B1 (en) 1997-12-22 2003-07-08 Tdk Corporation Flash memory system for restoring an internal memory after a reset event

Also Published As

Publication number Publication date
EP2324428A4 (en) 2013-01-02
TWI437431B (zh) 2014-05-11
EP2324428B1 (en) 2015-01-21
CN102150142A (zh) 2011-08-10
WO2010074353A1 (en) 2010-07-01
KR20110050504A (ko) 2011-05-13
EP2324428A1 (en) 2011-05-25
TW201102818A (en) 2011-01-16
US8725932B2 (en) 2014-05-13
US20110173380A1 (en) 2011-07-14
CN102150142B (zh) 2013-12-04
JP2010157139A (ja) 2010-07-15
JP5317690B2 (ja) 2013-10-16

Similar Documents

Publication Publication Date Title
KR101186788B1 (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
JP5198245B2 (ja) メモリシステム
JP5317689B2 (ja) メモリシステム
KR101200240B1 (ko) 메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치
US9201717B2 (en) Memory system
KR101066937B1 (ko) 메모리 시스템 및 그 데이터 소거 방법
KR101079890B1 (ko) 메모리 시스템
KR101079936B1 (ko) 메모리 시스템

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150819

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160826

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee