KR101200240B1 - 메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치 - Google Patents

메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치 Download PDF

Info

Publication number
KR101200240B1
KR101200240B1 KR1020117005595A KR20117005595A KR101200240B1 KR 101200240 B1 KR101200240 B1 KR 101200240B1 KR 1020117005595 A KR1020117005595 A KR 1020117005595A KR 20117005595 A KR20117005595 A KR 20117005595A KR 101200240 B1 KR101200240 B1 KR 101200240B1
Authority
KR
South Korea
Prior art keywords
data
cache memory
management
management units
memory
Prior art date
Application number
KR1020117005595A
Other languages
English (en)
Other versions
KR20110050505A (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 KR20110050505A publication Critical patent/KR20110050505A/ko
Application granted granted Critical
Publication of KR101200240B1 publication Critical patent/KR101200240B1/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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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
    • 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
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

WC 재원 사용량은 상한(Clmt)보다 작은 AF(Auto Flush) 임계값(Caf)과 비교되고, WC 재원 사용량이 AF 임계값(Caf)을 넘으면, NAND 메모리(10)의 정리 상태가 확인된다. NAND 메모리(10)의 정리가 충분히 진행되었으면, 데이터는 일찌기 라이트 캐시(WC)(21)로부터 NAND 메모리(10)로 추방되어, 후속 기록 커맨드에 대한 응답이 향상된다.

Description

메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치{MEMORY SYSTEM, METHOD OF CONTROLLING MEMORY SYSTEM, AND INFORMATION PROCESSING APPARAUTS}
본 발명은, 비휘발성 반도체 메모리를 포함하는 메모리 시스템에 관한 것이다.
컴퓨터 시스템에 이용되는 외부 기억 장치로서, NAND형 플래시 메모리와 같은 비휘발성 반도체 메모리를 탑재한 SSD(Solid State Drive)가 주목받고 있다. 플래시 메모리는, 자기 디스크 장치와 비교하여, 고속, 경량과 같은 이점을 갖는다. SSD는, 복수의 플래시 메모리 칩들, 호스트 장치로부터의 요구에 대응하여 각 플래시 메모리 칩의 판독/기록 제어를 하는 컨트롤러, 각 플래시 메모리 칩과 호스트 장치 간의 데이터 전송을 하기 위한 버퍼 메모리, 전원 회로, 호스트 장치에 대한 접속 인터페이스를 포함한다(예컨대, 특허 문헌 1: 일본 특허 제3688835호 참조).
NAND형 플래시 메모리와 같은, 비휘발성 반도체 기억 소자에 데이터가 기억되는 경우에, 블록이라고 불리는 단위로 한번 데이터를 소거하고 나서 기록을 하고, 페이지라고 불리는 단위로 판독/기록을 하고, 또는 소거/판독/기록의 단위가 고정된다. 한편, 퍼스널 컴퓨터(PC) 등의 호스트 장치에 의하여 하드 디스크와 같은 이차 기억 장치에 대하여 데이터의 판독/기록을 하는 단위를 섹터라고 불린다. 섹터는, 반도체 기억 소자의 소거/판독/기록의 단위와는 독립적으로 설정된다. 통상적으로, 블록, 페이지, 섹터의 사이즈는, 블록 > 페이지 > 섹터의 관계를 갖는다.
이와 같이, 반도체 기억 소자의 소거/판독/기록의 단위는, 일부 경우들에서 호스트 장치의 판독/기록의 단위보다도 크다. 이러한 반도체 기억 소자를 이용하여 하드 디스크와 같은 PC의 이차 기억 장치를 구성하는 경우, 호스트 장치로서의 PC로부터 작은 사이즈의 데이터는, 반도체 기억 소자의 블록 사이즈 및 페이지 사이즈에 적합시킨 후 어드레스 변환을 받을 필요가 있다.
또한, 이러한 플래시 메모리를 이용하여 대용량의 이차 기억 장치를 구성하는 경우, 특허 문헌 2(PCT 국제 출원의 일본 번역문 제2007-528079호)에 설명된 바와 같이, 플래시 메모리와 호스트 장치 간에 캐시 메모리를 개재시켜, 플래시 메모리에서의 기록 횟수(소거 횟수)를 감소시킨다.
본 발명의 일 태양은, 캐시 메모리; 캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리; 비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 수단; 캐시 메모리의 재원 사용량이, 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작은 경우 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방(flush)하는 제1 추방 처리를 수행하는 제1 추방 제어 수단; 및 캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지, 캐시 메모리의 데이터를 비휘발성 반도체 메모리에 추방하고, 및 캐시 메모리의 재원 사용량이 제2 임계값을 초과하고 또한 정리 수단에 의한 정리가 종료하지 않은 경우, 정리 수단에 의한 정리가 종료된 후, 캐시 메모리의 데이터를 비휘발성 반도체 메모리에 추방하는 제2 추방 처리를 수행하는 제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은 WC에서의 관리 구조를 도시하는 도면이다.
도 18은 WC 트랙 정보 테이블을 도시하는 도면이다.
도 19는 WC 고밀도 트랙 정보 테이블을 도시하는 도면이다.
도 20은 WC 재원명(파라미터명)과 자동 추방(Auto Flush, AF) 임계값과 상한 간의 관계를 도시하는 도면이다.
도 21은 본 발명에 따른 주요부의 구성을 도시하는 기능 블록도이다.
도 22는 WC 재원 사용량이 상한을 초과하는 경우의 동작 순서를 도시하는 흐름도이다.
도 23은 AF 임계값 < WC 재원 사용량 < 상한인 경우의 동작 순서를 도시하는 흐름도이다.
도 24는 WC 재원 사용량이 상한을 초과하는 경우의, 또다른 동작 순서를 도시하는 흐름도이다.
도 25는 SSD가 탑재되는 PC의 전체 도면이다.
도 26은 SSD가 탑재되는 PC의 시스템 구성예의 도면이다.
캐시 메모리에 호스트 장치로부터 기록하는 경우, 캐시 메모리가 다 차면, 데이터는 캐시 메모리로부터 플래시 메모리로 추방(flush)된 후, 캐시 메모리에 데이터가 기록된다. 그러나, 캐시 메모리가 거의 차게 된 후 데이터 추방이 수행되면, 호스트 장치로부터의 기록 요구가 데이터 추방 동안 대기하고 있어, 호스트 장치 측에서 볼 때 응답성이 좋은 이차 기억 장치를 구성할 수 없다.
또한, 상술된 바와 같이, 데이터 소거 단위(블록)와 데이터 관리 단위가 상이하면, 플래시 메모리의 재기록의 진행에 따라, 무효(최신이 아닌) 데이터에 의해서, 블록들은 구멍이 있는 상태(porous)가 된다. 이러한 구멍이 있는 상태의 블록들이 증가하면, 실질적으로 사용 가능한 블록들이 감소하고, 플래시 메모리의 기억 영역이 유효하게 이용될 수 없다. 따라서, 유효한 최신 데이터를 모아, 상이한 블록에 데이터를 재기록하는 컴팩션(compaction)이라고 불리는 플래시 메모리의 정리 처리가 행해진다.
그러나, 종래의 캐시 메모리의 추방 처리로서는, 플래시 메모리 측의 정리 상태를 고려하지 않아, 플래시 메모리 측의 정리가 진행되지 않았던 경우는, 플래시 메모리에의 기록에 시간이 걸린다. 결과적으로, 호스트 측의 기록 커맨드에 대한 응답성이 저하될 수도 있다.
본 발명에 따른 메모리 시스템의 예시적인 실시예들을 첨부 도면들을 참조하여 이하에 상세히 설명한다. 본 발명은 이들 실시예들에 제한되지 않는다.
본 발명의 실시예들을 도면들을 참조하여 이하에 설명한다. 다음 설명에서, 동일한 기능들 및 구성들을 갖는 구성 요소들은 동일한 도면 부호들 및 기호들에 의하여 나타낸다. 필요시만 구성 요소들을 중복 설명한다.
우선, 본 명세서에서 사용되는 용어를 정의한다.
물리 페이지: 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)에 추방하는 처리이다.
이어서, 본 실시예의 주요부를 보다 상세히 설명한다. 상술한 SSD에서, NAND 메모리(10)의 기록에 시간이 걸리고, 기록 횟수에 제한이 있고, 기록의 크기의 단위가 고정인 등의 이유로, 랜덤 액세스 가능한 고속인 메모리로서의 DRAM(20) 상에 WC(21)를 설치하여, WC(21)에 일시적으로 데이터를 기억하고 나서, NAND 메모리(10)에 데이터를 기록한다. 또한, 상술한 바와 같이, NAND 메모리(10)에의 기록 횟수(소거 횟수)를 감소시키기 위하여, WC(21)에서의 데이터에 관하여, 큰 데이터(고밀도 트랙)을 MS(11)에, 작은 데이터(저밀도 트랙)을 FS(12)에 기록하도록 기억부의 전환 제어가 행해진다.
또한, NAND 메모리(10)에 데이터가 기록되고, 각 기억부의 재원(용량과 관리테이블의 엔트리들수와 같은)이 부족해진 경우에는, 컴팩션과 조각 모음과 같은 NAND 메모리(10)의 정리가 각 기억부의 재원을 확보하기 위하여 수행된다. 유사한 방식으로, WC(21)에 관해서도, 재원(데이터 기억 영역과 관리 테이블의 엔트리들수와 같은)이 한계를 초과하면, 상술된 바와 같이, NAND 메모리(10)에 데이터가 추방되어, WC(21)의 재원을 확보한다. 이 때 추방 조건으로서 자주 이용되는 조건은, 호스트(1)로부터의 다음 기록을 위하여 충분한 WC(21)에서의 빈 재원을 확보한다는 조건이다. 이 조건에서, 호스트(1)로부터 WC(21)에의 기록을 항상 수신하도록 함으로써, 단일 기록 커맨드에의 응답이 향상하지만, NAND 메모리(10)의 정리는 진행되지 않고, NAND 메모리(10)에의 기록에 시간이 걸리면, 후속의 기록 커맨드에의 응답은 저하된다.
따라서, 본 실시예에서, WC(21)로부터 NAND 메모리(10)에의 추방을 일찌기 수행하기 위하여 임계값(자동 추방(Auto Flush, AF) 임계값)이 설정된다. NAND 메모리(10)에서의 정리(컴팩션 및 조각 모음과 같은)가 충분히 진행된 경우에는, WC(21)로부터 NAND 메모리(10)에 일찌기 데이터를 추방함으로써, NAND 메모리(10)에서의 정리가 빨리 시작되어, WC(21)로부터의 후속 추방이 고속으로 수행될 수 있다. 그 결과, WC(21)의 많은 재원들(메모리 영역 및 관리 테이블의 엔트리와 같은)이 확보될 수 있어서, 후속의 기록 커맨드에 대한 응답이 향상된다.
이하, WC(21)에서의 추방 처리에 관해서 상세히 설명한다. 우선, 도 17을 참조하여 WC(21)의 관리 구조를 보다 상세히 설명한다. 본 실시예에서, 도 1에 도시된 바와 같이, NAND 메모리(10)의 각 병렬 동작 요소들(10a~10d)는 뱅크 인터리브 가능한 4개의 뱅크들(Bank0~Bank3)을 포함한다. 각 메모리 칩은, 병렬 동작 가능한 플레인(0) 및 플레인(1)의 2개의 플레인들을 포함한다.
본 실시예에서, 도 17에 도시된 바와 같이, LBA에의 NAND 메모리(10)의 뱅크/플레인의 할당이 수행된다. 구체적으로, LBA의 트랙 어드레스의 LSB의 제1 비트에 플레인(P)이 할당되고, LBA의 트랙 어드레스의 LSB의 제2 및 제3 비트에 뱅크(B)가 할당된다. 각 뱅크가 2개 칩들로 구성되면, LSB의 제4 비트에 칩(C)이 할당된다.
LBA의 트랙 어드레스에서의 플레인(P)에 할당된 비트들수, 뱅크(B)에 할당된 비트들수, 및 칩(C)에 할당된 비트들수는 여기에 한정되지 않고, NAND 메모리(10)에서의 플레인들, 뱅크들, 칩들의 수에 따라 적절히 변경될 수 있다는 것은 물론이다.
본 실시예에서, LBA의 이러한 트랙 어드레스에의 플레인/뱅크/칩 할당은 NAND 메모리(10)에서의 MS(11)에의 기록에서만 사용된다. 이 경우, 병렬 기록은 큰 사이즈의 데이터의 순차 기록시 최대로 사용될 수 있다.
FS(12)와 IS(13)에의 기록시, LBA의 트랙 어드레스에의 플레인/뱅크/칩 할당은 유사한 방식으로 수행될 수도 있고, 또는 LBA의 트랙 어드레스에의 플레인/뱅크/칩 할당은 FS(12), IS(13) 및 MS(11) 중 하나에 수행되지 않을 수도 있다. LBA의 트랙 어드레스에의 플레인/뱅크/칩 할당이 수행되지 않으면, 논리 블록의 사용 상황에 따라 할당이 동적으로 수행된다.
WC 트랙 테이블(24)은, 상술된 바와 같이, WC(21) 상에 기억된 데이터에 관한 WC 트랙 정보를 LBA로부터 룩업(look up)하는, 예컨대 해시 테이블이며, 각각이, LBA의 트랙 어드레스의 플레인/뱅크 할당 비트들(P, B)을 포함하는 LSB의 수 비트인 g개 인덱스들 각각에 대하여 n개(way)의 엔트리들(태그들)을 포함한다. 각 태그는, LBA의 트랙 어드레스와, 이 트랙 어드레스에 대응하는 WC 트랙 정보에의 포인터를 기억한다. 따라서, WC(21)에서, (gxn)개 상이한 트랙들이 캐시될 수 있다. WC 트랙 테이블(24)의 갱신에 따라서, WC 트랙 테이블(24)의 각 인덱스에 대한 빈 엔트리들수(또는 사용된 엔트리들수)(α1)가 계수되고, 이들 빈 엔트리들수(α1)는 WC(21)의 추방을 트리거하기 위한 하나의 파라미터(WC 재원 사용량)로 된다.
WC 트랙 정보 테이블(25)은, 도 18에 도시된 바와 같이, WC 트랙 정보를, 예컨대 LRU를 사용하여 양방향 링크 리스트에 의하여 관리하기 위한 WC 트랙 LRU 정보 테이블(25a)과, 빈 WC 트랙 정보를, 예컨대 양방향 링크 리스트로서 관리하는 WC 트랙 빈 정보 테이블(25b)을 포함한다.
WC 트랙 정보는, 상술된 바와 같이,
(1) WC(21)에 존재하는 트랙 내의 유효 클러스터들수를 나타내는 정보와, 풀(full) 클러스터들수(각각이 섹터 데이터로 찬 클러스터들수)를 나타내는 정보,
(2) LBA의 LSB 측의 수 비트(s 비트)인 클러스터내 오프셋에 기초로 하여 작성되며, 1 클러스터에 포함된 복수의 섹터들 중 유효한 데이터를 기억하는 섹터를 나타내는 정보(섹터 비트맵),
(3) 트랙 상태 정보(예컨대, 유효, 무효, ATA로부터의 데이터 전송 동안, 및 NAND 메모리에 기록 동안),
(4) 트랙 단위에 올 제로(all-zero) 데이터가 포함되는 지의 여부를 식별하는 정보, 및
(5) 클러스터 위치 정보: (도 17 및 도 18에 도시된 바와 같이, LBA의 트랙내 클러스터 인덱스(t 비트)에 대응하는 클러스터 영역 번호를 인덱스로 한 (2t-1)개 클러스터 영역이 확보되고, 각 클러스터 영역에, 클러스터 데이터가 존재하는 WC(21)에서의 위치를 나타내는 클러스터 위치 정보가 기억된다. 빈 클러스터에 대응하는 클러스터 영역 번호의 클러스터 영역에는, 무효값이 기억된다)
를 포함한다.
WC(21)에서, 상술된 바와 같이, 최대 (gxn)개의 상이한 트랙들이 캐시될 수 있고, WC 트랙 LRU 정보 테이블(25a)에 의해서, WC(21)에 사용되는 트랙에 관한 정보가 관리된다. 한편, WC 트랙 빈 정보 테이블(25b)은, WC(21)에 캐시될 수 있는 최대 트랙들수(gxn)에 관한 빈 WC 트랙 정보를 관리한다. WC 트랙 LRU 정보 테이블(25a)에 등록된 WC 트랙 정보수가 d개이면, WC 트랙 빈 정보 테이블(25b)은 ((gxn)-d)개의 빈 WC 트랙 정보를 관리한다. WC 트랙 빈 정보 테이블(25b)에 대하여 준비되어 있는 WC 트랙 정보는, WC 트랙 LRU 정보 테이블(25a)에서 사용된 WC 트랙 정보의 영역을 WC(21)에 확보하기 위한 것이며, 새로운 트랙을 관리하기 시작할 때, 도 18에 도시된 각종 정보를 기억한다. 즉, WC(21)에서 새로운 트랙 정보를 관리할 필요가 생긴 경우, WC 트랙 빈 정보 테이블(25b)로부터 하나의 트랙 정보를 확보하여, 확보된 WC 트랙 정보에 요구되는 정보를 기억하여 WC 트랙 LRU 정보 테이블(25a)의 링크에 재접속한다. 새롭게 확보된 WC 트랙 정보에 대응하는 트랙 어드레스와 같은 정보는 WC 트랙 테이블(24)에 등록되고, 또한 고밀도 트랙의 경우는 도 19에 도시된 WC 고밀도 트랙 정보 테이블(26)에 등록된다.
WC 트랙 빈 정보 테이블(25b)로부터 새로운 WC 트랙 정보가 확보될 때마다(도 18에 도시된 WC 트랙 빈 정보 테이블(25b)로부터 WC 트랙 정보의 하나의 리스크가 제거될 때 마다), 도 18에 도시된 WC(21)에서의 WC 트랙 정보의 빈 수를 나타내는 WC 트랙 정보의 빈 수(α2)가 1 감소되고(-1), WC(21)로부터 NAND 메모리(10)에의 추방 발생 등에 의해서, WC 트랙 LRU 정보 테이블(25a)에 등록된 WC 트랙 정보가 해제되어 WC 트랙 빈 정보 테이블(25b)에 복귀될 때마다, WC 트랙 정보의 빈 수(α2)가 1 증가된다(+1). 물론, WC 트랙 정보의 빈 수(α2)에 대신해서 WC(21)에 사용된 WC 트랙 정보의 사용수가 관리될 수 있다. WC 트랙 정보의 빈 수(또는 WC(21)에 사용된 WC 트랙 정보수)(α2)는 WC(21)의 추방을 트리거하기 위한 하나의 파라미터(WC 재원 사용량)가 된다.
도 17에 도시된 WC 클러스터 영역 관리 테이블(29)은, 각 트랙내의 빈 클러스터 영역을 관리하기 위한 것으로, 빈 클러스터 영역 번호를 FIFO 구조, 양방향 링크 리스트 등에 의하여 관리한다. 또한, WC 클러스터 영역 관리 테이블(29)에 의하여 클러스터 영역의 총 빈 수가 관리된다. 클러스터 영역의 최대 사용수는 WC(21)의 캐시 용량에 대응한다. 예컨대, 32 MB의 WC(21)의 경우는, 클러스터 영역의 사용수의 최대값은 32 MB에 대응하는 클러스터들수이다. 클러스터 영역의 총 빈 수가 0인 경우는, 클러스터 영역의 사용수의 최대값에 대응한다. 빈 클러스터 영역(또는 사용된 클러스터 영역들)의 총 수(α3)는, WC(21)의 추방을 트리거하기 위한 하나의 파라미터(WC 재원 사용량)로 된다.
도 19는 WC 고밀도 트랙 정보 테이블(26)을 도시한다. WC 고밀도 트랙 정보 테이블(26)은, MS(11)에 기록될 유효 클러스터들수가 많은 고밀도 트랙에 관한 트랙정보를, LBA의 트랙 어드레스의 뱅크 번호(B)를 인덱스로 하여 관리하기 위한 해시 테이블이며, 각 인덱스마다 m개의 엔트리들(ways)을 포함한다. 확실하게 병렬로 기록이 수행될 수 있는 각 뱅크에 대하여 WC(21) 상의 고밀도 트랙이 관리되어, WC(21)로부터 MS(11)에의 추방을 수행할 때 트랙 검색에 요하는 시간을 단축할 수 있다. 또한, 이 WC 고밀도 트랙 정보 테이블(26)에 의해서, MS(11)에 기록될 트랙들수는, 각 뱅크에서 값 m까지 규제되어, WC(21)로부터 NAND 메모리(10)에의 최대 추방 시간을 억제할 수 있다. WC 고밀도 트랙 정보 테이블(26)에서의 동일한 인덱스에는, 배속 모드로 기록이 수행될 수 있는 트랙들(플레인(0 및 1))이 있을 수도 있다. WC 고밀도 트랙 정보 테이블(26)에서의 엔트리들수를 계수함으로써, 뱅크 번호마다, 고밀도 트랙 정보수가 관리된다. 각 뱅크에 대하여 고밀도 트랙 정보수(α4)는, WC(21)의 추방을 트리거하기 위한 하나의 파라미터(WC 재원 사용량)로 된다.
WC 저밀도 트랙 정보 테이블(27)(도 7 참조)은, FS(12)에 기록될 저밀도 트랙 정보를 관리하기 위한 것으로, 저밀도 트랙의 클러스터들수의 합계값을 관리한다. 저밀도 트랙의 클러스터들수의 합계값(α5)은, WC(21)의 추방을 트리거하기 위한 하나의 파라미터(WC 재원 사용량)로 된다.
도 20은, WC(21)의 추방을 트리거하기 위한 복수의 파라미터들(WC 재원 사용량들)과, 2개의 임계값들(AF 임계값(Caf) 및 상한(Clmt)) 간의 관계를 도시하는 도면이다. 도 20에 도시된 바와 같이, 상술된 바와 같이, WC(21)의 추방을 트리거하기 위한 파라미터들은 다음을 포함한다.
WC 클러스터 영역(빈 클러스터 영역들의 총수)(α3)
뱅크 마다의 고밀도 트랙 정보의 수(α4)(MS에의 트랙들수(α4))
저밀도 트랙의 클러스터들수의 합계값(α5)(FS에의 클러스터들수(α5) 혹은 FS에의 클러스터 데이터량(α5))
WC 트랙 정보의 수(α2)(WC 트랙 정보의 빈 수)(α2)
WC 트랙 테이블의 인덱스 마다의 사용된 엔트리들수(또는 빈 엔트리들수)(α1)
풀(full) 트랙들수(α6).
WC(21)의 추방을 트리거하기 위한 파라미터들(α1~α6)을 또한 WC 재원 사용량이라고도 부른다.
풀 트랙들수(α6)는, 각각이 섹터들 및 클러스터들로 찬 트랙들수이다. 즉, 풀 트랙은, WC 트랙 정보 내의 풀 클러스터들수가 클러스터 영역 번호의 수인 2t 개가 되는 트랙이다. 데이터 관리부(120)는 풀 트랙들수를 계수하는 전용의 카운터(도시하지 않음)를 포함한다.
파라미터들(α1~α6) 각각에는, WC(21)의 추방 처리를 위한 2개의 임계값들(AF 임계값(Caf) 및 상한(Clmt))이 설정되어 있다. 도 20에 있어서, 각 파라미터들(α1~α6)에 대하여 설정되어 있는 최대값(max)은, 각 파라미터들(α1~α6)이 취할 수 있는 실질적인 최대값을 나타내며, 기본적으로 WC(21)의 추방을 트리거하는 임계값로서의 의미는 없다.
상한(Clmt)은, 파라미터들(α1~α6)이 이 값 이상이 되면, 다음 기록 요구가 수신될 수 없는 가능성을 나타내는 임계값이다. 상한(Clmt)을 초과하는 경우, 호스트(1)로부터의 기록 요구를 대기하게 할 수도 있다. 따라서, 상한(Clmt)은, 호스트(1)로부터의 다음 기록 요구를 기다리게 하기 위한 임계값으로서 간주될 수 있다. 파라미터들(α1~α6) 중 어느 하나가 상한(Clmt)을 넘으므로, 다음 기록 요구를 기다리게 하고 있는 동안, NAND 메모리(10)의 정리가 종료되면, WC(21)로부터 NAND 메모리(10)에 데이터가 추방되어, 파라미터가 상한(Clmt) 이하이도록 한다. 모든 파라미터들(α1~α6)이 상한(Clmt) 이하기 되면, 호스트(1)로부터의 다음 기록 요구가 수신된다. 파라미터들(α1~α6) 중 어느 하나가 상한(Clmt)을 넘으므로 다음 기록 요구를 기다리게 하고 있는 동안, NAND 메모리(10)의 정리가 종료되어 있지 않은 경우는, NAND 메모리(10)의 정리가 우선되고, NAND 메모리(10)에의 추방이 수행되지 않는다. NAND 메모리(10)의 정리가 종료된 후, 데이터가 WC(21)로부터 NAND 메모리(10)에 추방되어, 파라미터를 상한(Clmt) 이하이도록 한다. 그 후 호스트(1)로부터의 다음 기록 요구가 수신된다.
AF 임계값(Caf)은 자동 추방 처리를 수행하기 위한 임계값이다. 자동 추방 처리는, 호스트(1)로부터의 플러시(flush) 커맨드에 상관없이 수행되고, 상황에 따라서 데이터 관리부(120)의 판단에 의해서 WC(21)의 데이터의 일부 또는 모두를 NAND 메모리(10)에 추방하는 처리이다. 자동 추방 처리는, 호스트(1)로부터의 기록 커맨드 종료 후에 수행되는 처리이며, 선행하여 WC(21)에 특정 빈 영역을 생성함으로써 기록 성능을 전체적으로 향상시키기 위한 처리이다. 파라미터들(α1~α6) 중 어느 하나가 AF 임계값(Caf) 이상으로 되면, 자동 추방 처리가 수행되어, 일찌기 WC(21)로부터의 데이터를 NAND 메모리(10)에 추방한다. 따라서, 통상은, AF 임계값(Caf) < 상한(Clmt) < 최대값(max)의 관계가 만족된다. 파라미터들(α1~α6) 중 어느 하나가 AF 임계값(Caf)을 초과하면, NAND 메모리(10)의 정리 상태가 확인되고, NAND 메모리(10)의 정리가 종료되면 자동 추방 처리가 수행된다. 파라미터들(α1~α6) 중 임의 하나가 AF 임계값(Caf)을 넘어도, NAND 메모리(10)의 정리가 종료되지 않으면, WC(21)는 여전히, 호스트(1)로부터의 기록 요구를 기다리게 할 수 없는 상황이 아니므로, NAND 메모리(10)의 정리가 우선된다.
다음, 각 파라미터들(α1~α6)에 대하여 최대값(max), 상한(Clmt), 및 AF 임계값(Caf)을 설명한다.
WC 클러스터 영역의 최대값(max)(빈 클러스터 영역들의 총 수)(α3)인 값(Z)은 WC(21)의 용량이다. WC(21)가 32MB의 용량을 갖는 경우는, Z = 32MB이다. WC 클러스터 영역(빈 클러스터 영역들의 총 수)(α3)의 AF 임계값(Caf)은, 예컨대 최대값(max)의 반인 Z/2에 설정된다. α3의 상한(Clmt)은, 호스트(1)로부터의 단일 데이터 전송 사이즈를 고려하여 결정된다. 예컨대, 값(Z)의 약 7/8 내지 15/16에 α3의 상한(Clmt)이 설정된다.
WC 트랙 정보의 수(α2)의 최대값(max)은, WC 트랙 테이블(24)의 총 엔트리들수이며, 이 경우 (g×n)이다. α2의 AF 임계값(Caf)은, 예컨대 최대값(max)의 반인 (g×n)/2에 설정된다. WC 트랙 정보의 수(α2)의 상한(Clmt)은, 도 20에 설정되어 있지 않지만, (g×n) 보다 작고, (g×n)/2 보다 큰 적절한 값에 설정될 수 있다.
WC 트랙 테이블의 인덱스 마다에 대한 사용된 엔트리들수(α1)의 최대값(max)은 값(n)이다(도 17 참조). α1의 AF 임계값(Caf)은, 도 20에 설정되어 있지 않아도, 예컨대 최대값(max)의 반인 약 n/2에 설정될 수 있다. α1의 상한(Clmt)은 나머지 하나(WC 트랙 테이블(24)의 최종 엔트리(way)만 남아 있는 상태)에 설정된다.
풀 트랙들수(α6)에 관해서는, AF 임계값(Caf)(= y)만이 설정되어 있다. 풀 트랙들수(α6)가 증가하여도, 다른 파라미터들이 비어 있으면, 호스트로부터의 다음 기록 요구에 응답할 수 있으므로, 풀 트랙들수(α6)의 상한(Clmt)이 설정되지 않는다.
이어서, MS에 대한 트랙들수(뱅크 마다)(α4)의 최대값(max)은, 도 19에 도시된 WC 고밀도 트랙 정보 테이블(26)의 엔트리들(way)수인 값(m)이다. 이 수 값(m)은, WC(21)의 전체 데이터를 NAND 메모리(10)에 추방하는 명령으로서 플러시 커맨드를 처리하는 데 요하는 시간을 고려하여 결정된다. 또한, FS에의 클러스터들수(α5)(FS에의 클러스터 데이터량(α5))의 최대값(Q)은, FS(12)에 추방될 저밀도 트랙의 클러스터들수(또는 클러스터 데이터량)의 합계값의 최대값이다. 이 Q의 수 값은 또한, 플러시 커맨드를 처리하는 데 요하는 시간, NAND 메모리(10) 측의 재원 사용량(FS(12)에의 기록을 억제함으로써 FS(12) 및 IS(13)용의 블록들수와, FS(12) 및 IS(13)용 관리 테이블량의 증대를 억제) 등을 고려하여 결정된다. 플러시 캐맨드를 실행할 때, 고밀도 트랙은 MS(11)에 추방될 필요가 있고, 저밀도 트랙은 FS(12)에 추방될 필요가 있다.
상술된 바와 같이, 본 실시예에서 트랙 사이즈는 논리 블록 사이즈와 동일하다. 논리 블록은, NAND 메모리(10)의 칩 상의 복수의 물리 블록들을 조합하여 구성된 가상 블록이다. 이 실시예에서, 논리 블록은, 도 1에 도시된 4개의 병렬 동작 요소들(10a~10d) 내의 각 물리 블록이 한 번 4ch 병렬 동작하게 하는 단위이다. 도 19에 도시된 WC 고밀도 트랙 정보 테이블(26)에서, 하나의 뱅크의 하나의 엔트리에 하나의 트랙 어드레스가 등록되고, 하나의 뱅크의 하나의 트랙의 추방은, 하나의 논리블록을 NAND 메모리(10)에(트랙이 고밀도 트랙이기 때문에, 정확하게는 MS(11)에) 한 번 기록하는 것에 대응한다.
한편, 본 실시예에서, FS(12)는 의사 SLC 모드로 동작하고, FS(12)에서의 논리 블록 사이즈는 4치의 MLC 모드로 동작하고 있는 MS(11)에서의 논리 블록 사이즈의 반이다. 그러나, 의사 SLC 모드에서의 기록은 MLC 모드보다 수 배 빠르다.
플러시 커맨드 처리에 요하는 시간(Tfl)은, 고밀도 트랙을 MS(11)에 추방하는 소요 시간(Ta)과, 저밀도 트랙을 FS(12)에 추방하는 소요 시간(Tb)과, 로그의 기록 처리와 같은 다른 처리에 요하는 시간(Tc)(고정값)의 합계이다. 즉, Tfl= Ta+Tb+Tc의 관계가 만족된다. 고밀도 트랙을 MS(11)에 추방하는 소요 시간(Ta)은, 4 뱅크들을 갖는 뱅크 인터리브를 이용한 경우를 상정하여, 4×(한 번의 기록 소요시간(고정값)×(기록 횟수)(u1))이다. 저밀도 트랙을 FS(12)에 추방하는 소요 시간(Tb)은, (한 번의 기록 소요 시간(고정값))×(기록 횟수(u2))이다. 플러시 커맨드 처리에 요하는 시간(Tfl)을 플러시 커맨드 처리에 요하는 특정 최악(최대) 시간(Tflmax)(고정값) 시간 이내로 억제하기 위하여, 다음의 식(이 경우, 예컨대 u1 = u2)에 의하여 기록 횟수(u1 및 u2)가 획득될 수 있다:
Tflmax(고정값) = Ta(= 4×(한 번의 기록 소요 시간(고정값))×(기록 횟수(u1)))+Tb(= (한 번의 기록 소요 시간(고정값))×기록 횟수(u2)))+Tc(고정값)
이러한 방식으로 획득된 u1은, MS에의 트랙들수(α4)(각 뱅크에 대한)의 최대값(max)으로서의 값 m이다. WC 고밀도 트랙 정보 테이블(26)의 way 수(m)는 이러한 방식으로 결정된다. 또한, 플러시 커맨드 처리에 대한 최악 시간(Tflmax)을 만족하는 FS(12)에의 기록 횟수(u2)도 결정되므로, 값((FS(12)에의 논리 블록의 단일의 기록 사이즈)×(기록 횟수(u2))을 구함으로써 FS에의 클러스터 데이터량(α5)의 최대값(max)로서의 값(Q)(MB)이 획득될 수 있다.
MS로의 트랙들수(뱅크마다)(α4)의 AF 임계값(Caf)은, 예컨대 최대값(m)의 반인 m/2에 설정된다. 자동 추방 처리에서, 4트랙들을 MS(11)에 기록하고 있는 동안, 나머지 4트랙들을 호스트(1)로부터 WC(21)에 기록하는 더블 버퍼링 방식으로 병렬 처리가 수행될 수 있다. α4의 상한(Clmt)은, 예컨대 값(m)의 약 6/8~7/8에 설정된다. 상한(Clmt)은, 최대값(max)으로부터 나머지 영역, 즉 호스트 장치로부터의 단일 데이터 전송 사이즈를 유지함으로써, 데이터를 NAND 메모리(10)에 추방하지 않고 다음 기록 요구를 수신할 수 있는 양을 고려하여 설정된다.
FS로의 클러스터들수(FS에의 클러스터 데이터량)(α5)의 AF 임계값(Caf)은, 예컨대 최대값(Q)의 1/4인 약 Q/4에 설정된다. 예컨대, Q/4는, FS(12)에 기록이 병렬로 수행되면, 호스트(1)로부터 WC(21)에의 기록 속도와 유사한 속도가 획득될 수 있는 값이다. α5의 상한(Clmt)은, 예컨대 값(Q)의 약 6/8 ~ 7/8에 설정된다. α5의 상한(Clmt)은, α4와 유사한 방식으로, 최대값(max)로부터 나머지 영역, 즉 호스트 장치로부터의 단일 데이터 전송 사이즈를 유지함으로써, 데이터를 NAND 메모리(10)에 추방하지 않고 다음 기록 요구를 수신할 수 있는 양을 고려하여 설정된다.
도 21은 본 실시예에 따른 주요부의 기능 구성을 도시하는 블럭도이다. 상술된 바와 같이, NAND 메모리(10)는, 사용자 데이터를 기억하는 MS(11), FS(12) 및 IS(13)를 포함하는 사용자 데이터 기억부를 포함한다. DRAM(20)에는, WC(21)이 포함된다. 데이터 관리부로서의 컨트롤러(120)는, 호스트(1)로부터의 데이터를 WC(21)에 기록하는 제어를 실행하는 WC 기록 제어부(210)와, WC(21)로부터 NAND 메모리(10)에 데이터를 추방하는 제어를 실행하는 WC 추방 제어부(211)와, WC(21)로부터 추방된 데이터를 NAND 메모리(10)에 기록하는 제어를 실행하는 NAND 기록 제어부(213)와, NAND 메모리(10)에서의 논리 블록들의 정리(컴팩션, 조각 모음, FS(12)로부터 IS(13)로의 데이터 재배치와 같은)를 실행하는 NAND 정리부(212)를 포함한다. NAND 정리부(212)는, NAND 메모리(10)에서의 정리 처리의 상태를 나타내는 NAND 정리 상태 신호(현재 정리 처리를 실행 중인지 또는 종료되었는 지를 나타내는 신호)를, WC 기록 제어부(210) 및 WC 추방 제어부(211)에 순차 보낸다. WC 기록 제어부(210) 및 WC 추방 제어부(211)는, NAND 정리 상태 신호에 기초하여 NAND 메모리(10)에서의 블록 정리 상태를 판단한다.
(NAND 메모리의 정리)
NAND 정리부(212)에 의하여 수행된 NAND 메모리(10)의 정리를 설명한다. NAND 메모리(10)의 정리는, IS(13)의 관리 하의 논리 블록들수를 특정 임계값 이하로 하기 위한 컴팩션/조각 모음 처리, NAND 관리 테이블들(클러스터 디렉토리 테이블(31) 및 클러스터 테이블(32)과 같은)의 엔트리들수를 특정 임계값 이하로 하기 위한 조각 모음 처리, 및 FS(12)로부터 IS(13)로의 데이터 재배치를 포함한다.
IS(13)의 관리 하의 논리 블록들수 및 NAND 관리 테이블들의 엔트리들수와 같은, NAND 메모리(10)를 정리할때 고려되는 파라미터들을, 총칭하여 NAND 재원 사용량이라고 부른다. NAND 정리부(212)는, 각 NAND 재원 사용량이 임계값을 초과하면, NAND 메모리(10)의 정리를 실행하고, 처리가 실행 중인 것을 나타내는 NAND 정리 상태 신호를 WC 기록 제어부(210) 및 WC 추방 제어부(211)에 보낸다.
(컴팩션)
컴팩션 처리는 IS(13)에서 수행된 처리이다. 컴팩션 처리에서, IS(13)의 관리 하의 논리 블록들수가 특정 임계값을 넘었을 때에, 유효한 최신의 클러스터 데이터를 모아, 상이한 논리 블록에 재기록하고, 무효 클러스터를 해제한다. 본 실시예에서, 트랙 사이즈는 논리 블록 사이즈와 동일하므로, MS(11)에 컴팩션이 발생하지 않는다. 그러나, 트랙 사이즈가 논리 블록 사이즈와 상이하면, MS(11)에서도 컴팩션이 발생한다. 이러한 경우에서, MS(11)에서의 컴팩션을 포함하여 NAND 메모리(10)의 정리가 수행될 필요가 있다.
(조각 모음)
조각 모음 처리는, IS(13)의 관리 하의 논리 블록들수가 특정 임계값(논리 블록들의 최대수)을 넘으면, 또는 클러스터 디렉토리 테이블(31) 및 클러스터 테이블(32)과 같은 FS(12)와 IS(13) 관리용의 테이블들의 엔트리들수가 특정 임계값을 넘으면, IS(13)에서의 유효 클러스터들을 선택하여, 이들을 트랙에 통합하여, MS(11)에 추방하는 처리이다. IS(13)에서의 유효 클러스터들을 트랙으로 통합할 때, 동일한 트랙에 포함된 FS(12)와 IS(13)에서의 유효 데이터는 DRAM(20)으로 판독되고, 트랙의 데이터 이미지를 생성한다.
다음, NAND 메모리(10)에의 추방을 포함하는 WC(21)에서의 기록 처리를 설명한다. WC(21)에서, WC(21) 상의 데이터가 NAND 메모리(10)에 추방되어, 기록 커맨드에 의하여 재원 사용량이 상한(Clmt)을 일시적으로 초과하는 경우를 제외하고, WC(21)의 모든 재원 사용량들은 항상 상한(Clmt) 이하이다. 또한, 호스트(1)로부터의 요구를 기다리게 하는 경우를 제외하고, WC 재원 사용량들이 AF 임계값(Caf) 이하가 될 때까지 추방이 계속된다. 구체적으로는, 이하와 같은 제어가 실행된다.
(WC 재원 사용량 > 상한(Clmt)의 경우)
우선, 호스트(1)로부터 WC(21)에의 데이터 기록 종료후, WC 재원 사용량이 상한(Clmt)을 넘는 경우의 처리를 도 22에 도시된 흐름도를 참조하여 설명한다. WC 추방 제어부(211)는, 호스트(1)로부터의 데이터 기록 종료 후(단계 S600), WC 재원 사용량들(α1~α6)의 상태를 판정한다. WC 재원 사용량들(α1~α6) 중 어느 하나가 상한(Clmt)을 넘고(단계 S610에서 Yes), 또한 호스트(1)로부터 다음의 기록 요구가 아직 오지 않았으면(단계 S620에서 No), 다음과 같은 처리가 실행된다. WC 추방 제어부(211)는, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리 상태를 확인한다(단계 S630). NAND 메모리(10)의 정리가 종료되면, WC 추방 제어부(211)는, 상한(Clmt)을 넘는 요인으로서 WC(21)의 데이터를 MS(11) 및 FS(12)의 어느 하나 또는 양쪽에 추방하여, 모든 WC 재원 사용량들(α1~α6)을 상한(Clmt) 이하로 설정한다(단계 S640). 추방 대상의 트랙은, 예컨대, 가장 오래된 트랙으로부터 순서대로 LRU에 의하여 우선적으로 선택함으로써, 또는 WC 재원 사용량을 상한(Clmt) 이하로 억제하기 위한 처리 속도를 우선하면서 추방 트랙을 선택함으로써 결정된다.
WC 추방 제어부(211)는, 모든 WC 재원 사용량들(α1~α6)이 상한(Clmt) 이하가 된 시점에서, 호스트(1)로부터 다음의 기록 요구가 왔는 지의 여부를 판정한다(단계 S650). 다음 기록 요구가 호스트(1)로부터 아직 오지 않았을 때, WC 추방 제어부(211)는, WC 재원 사용량들(α1~α6)이 AF 임계값(Caf) 이하가 될 때까지 추방을 계속한다. 구체적으로, WC 추방 제어부(211)는, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리 상태를 확인한다(단계 S660). NAND 메모리(10)의 정리가 종료되면, WC 추방 제어부(211)는, AF 임계값(Caf)을 넘는 요인으로서 WC(21)의 데이터를 MS(11) 및 FS(12) 중 어느 하나 또는 양쪽에 추방하여, 모든 WC 재원 사용량들(α1~α6)을 AF 임계값(Caf) 이하로 설정한다(단계 S670). 추방 대상의 트랙은, 예컨대, 기록 효율이 좋은 풀 트랙을 우선적으로 추방함으로써, 혹은 LRU에 의하여 가장 오래된 트랙으로부터 순서대로 우선적으로 선택함으로써 결정된다.
한편, WC 추방 제어부(211)는, 모든 WC 재원 사용량들(α1~α6)이 상한(Clmt) 이하로 된 시점에서, 호스트(1)로부터 다음의 기록 요구가 왔으면(단계 S650에서 Yes), 혹은 NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리가 종료되지 않으면(단계 S660에서 No), 호스트(1)로부터 요구 혹은 NAND 메모리(10)의 정리를 우선하고, 자동 추방 처리를 실행하지 않는다. NAND 메모리(10)의 정리가, 호스트(1)로부터의 다음 기록 커맨드를 수신하기 전에 NAND 정리 상태 신호에 의하여 종료된 것이 확인되면(단계 S665), 자동 추방 처리가 실행된다(단계 S670).
또한, WC 추방 제어부(211)는, 호스트(1)로부터의 데이터 기록 종료 후, WC 재원 사용량들(α1~α6) 중 어느 하나가 상한(Clmt)을 넘고, 호스트(1)로부터 다음 기록 요구가 왔으면(단계 S620의 Yes), 다음과 같은 처리를 실행한다. WC 추방 제어부(211)는 호스트(1)로부터의 다음 기록 요구를 대기하게 하고(단계 S680), NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리 상태를 확인한다(단계 S690). NAND 메모리(10)의 정리가 종료되면, WC 추방 제어부(211)는 상한(Clmt)을 넘는 요인으로서 WC(21)이 데이터를 MS(11) 및 FS(12) 중 어느 하나 또는 양쪽에 추방하여, 모든 WC 재원 사용량들(α1~α6)을 상한(Clmt) 이하로 설정한다(단계 S700). 다음, WC 추방 제어부(211)는, 모든 WC 재원 사용량들(α1~α6)이 상한(Clmt) 이하가 되는 시점에서, 호스트(1)로부터 기록 요구를 수신한다(단계 S710). 그러나, WC 추방 제어부(211)는, 호스트(1)로부터의 다음의 기록 요구를 기다리게 하는 동안, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리가 종료되지 않는다고 판단한 경우는(단계 S690에서 No), NAND 메모리(10)의 정리를 우선하고, NAND 메모리(10)의 정리가 종료될 때 까지 대기한다. WC 추방 제어부(211)가 NAND 메모리(10)의 정리의 종료를 확인하면, WC 추방 제어부(211)는 상한(Clmt)을 넘는 요인으로서 WC(21)의 데이터를 MS(11) 및 FS(12) 중 어느 하나 또는 양쪽에 추방하여, 모든 WC 재원 사용량들(α1~α6)을 상한(Clmt) 이하이도록 설정한다(단계 S700). 다음, 모든 WC 재원 사용량들(α1~α6)이 상한(Clmt) 이하가 된 시점에서, WC 추방 제어부(211)는 호스트(1)로부터 기록 요구를 수신한다(단계 S710).
(AF 임계값(Caf) < WC 재원 사용량 < 상한(Clmt)의 경우)
다음, 호스트(1)로부터 WC(21)에의 데이터 기록 종료 후, WC 재원 사용량이 상한(Clmt)을 넘지 않으나, AF 임계값(Caf)을 넘는 경우의 처리를 도 23에 도시된 흐름도에 따라 설명한다. WC 추방 제어부(211)는, 호스트(1)로부터의 데이터 기록 종료 후(단계 S800), WC 재원 사용량들(α1~α6) 중 어느 하나가 AF 임계값(Caf)을 넘는 경우(단계 S810), 호스트(1)로부터 다음 기록 요구가 왔으면(단계 S820), 자동 추방 처리를 실행하지 않고, 호스트(1)로부터의 다음의 기록 요구를 수신한다(단계 S825).
그러나, 호스트(1)로부터 다음의 기록 요구가 오지 않았던 경우, 다음과 같은 처리가 실행된다. WC 추방 제어부(211)는, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리 상태를 확인한다(단계 S830). NAND 메모리(10)의 정리가 종료되면, WC 추방 제어부(211)는, AF 임계값(Caf)을 넘는 요인으로서 WC(21)의 데이터를 MS(11) 및 FS(12) 중 어느 하나 또는 양쪽에 추방하여, 모든 WC 재원 사용량들(α1~α6)을 AF 임계값(Caf) 이하이도록 설정한다(단계 S840). 추방 대상의 트랙은, 예컨대, 기록 효율이 좋은 풀 트랙을 우선적으로 추방함으로써, 또는 LRU에 의하여 가장 오래된 트랙으로부터 순서대로 우선적으로 선택함으로써 결정된다.
한편, WC 추방 제어부(211)는, WC 재원 사용량들(α1~α6) 중 어느 하나가 AF 임계값(Caf)을 넘어도, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리가 종료되지 않는다고 판단한 경우는(단계 S830에서 No), WC 추방 제어부(211)는 NAND 메모리(10)의 정리를 우선하고, 자동 추방 처리를 실행하지 않는다. 호스트(1)로부터 다음 기록 요구를 수신하기 전에, NAND 정리 상태 신호에 의해서 NAND 메모리(10)의 정리가 종료된 것을 확인하면(단계 S850), 자동 추방 처리가 실행된다(단계 S840). 이러한 방식으로, NAND 메모리(10)의 정리가 기록 후에 종료되면, 자동 추방 처리가 실행되어, WC(21)에서 미리 빈 영역을 일찌기 유지할 수 있다.
(다른 실시예)
상기에서, 우선, 호스트(1)로부터 WC(21)에의 데이터 기록 종료 후, WC 재원 사용량들(α1~α6)이 상한(Clmt)을 초과하고, 다음 기록 요구가 호스트(1)로부터 왔고, NAND 메모리(10)의 정리가 종료되지 않은 경우, 다음의 기록 요구를 기다리게 하면서 NAND 메모리(10)의 정리를 실행하고, NAND 메모리(10)의 정리의 종료 후, 추방 처리가 실행된다. 그러나, 다음과 같은 제어도 실행될 수 있다.
도 24는, 호스트(1)로부터 WC(21)로의 데이터 기록 후, WC 재원 사용량이 상한(Clmt)을 초과할 때의 처리의 다른 실시예를 도사하는 흐름도이다. 도 24에서, 도 22의 단계 S680 내지 S710은 단계 S900 내지 S970로 대체되고, 단계 S600 내지 S670은 도 22와 도 24 간에서 공통이다.
즉, 상기 조건들(호스트(1)로부터 WC(21)로의 데이터 기록 종료 후(단계 S600), WC 재원 사용량들(α1~α6)이 상한(Clmt)을 초과할 때(단계 S610), 다음 기록 요구가 호스트(1)로부터 왔을 때(단계 S620), 및 NAND 메모리(10)의 정리가 종료되지 않을 때(단계 S900))이 만족되는 경우, 호스트(1)로부터 다음 기록 요구가 수신될 때 WC 재원 사용량들(α1~α6)이 최대값(max)을 넘는 지의 여부가 판정된다(단계 S930). 다음, WC 재원 사용량들(α1~α6)이, 호스트(1)로부터의 다음 기록 요구가 수신되어도 최대값(max)을 초과하지 않는 경우, WC(21)의 데이터를 NAND 메모리(10)에 추방하지 않고 호스트(1)로부터의 다음 기록 요구가 수신되고(단계 S970), 데이터가 WC(21)에 기록되게 된다.
한편, 단계 S930에서, WC 재원 사용량들(α1~α6)이 최대값(max)을 초과하는 것이 판정되는 경우, 호스트(1)로부터의 다음 기록 요구가 기다리고 있고(단계 S940), 추방 처리가 실행되어, NAND 메모리(10)의 정리 후(단계 S950), WC 재원 사용량들(α1~α6) 모두가 상한(Clmt) 이하가 된다(단계 S960). 그 후, 호스트(1)로부터의 다음 기록 요구가 수신되고(단계 S970), 데이터가 WC(21)에 기록되게 된다.
단계 S900에서, NAND 메모리(10)의 정리가 종료되는 경우, 호스트(1)로부터의 다음 기록 요구가 대기하고 있고(단계 S910), 추방 처리가 실행되어, WC 재원 사용량들(α1~α6) 모두가 상한(Clmt) 이하가 된다(단계 S920). 그 후, 호스트(1)로부터의 다음 기록 요구가 수신되고(단계 S970), 데이터가 WC(21)에 기록되게 된다.
본 실시예에서, 호스트(1)로부터 WC(21)에의 데이터 기록 후, 즉 데이터의 기록 전에, WC(21)로부터 NAND 메모리(10)에의 추방이 수행된다. 그러나, WC(21)에의 데이터 기록과, NAND 메모리(10)에의 추방이 병렬로 실행될 수 있다.
이러한 방식으로, 본 실시예에 따르면, WC 재원 사용량이 상한(Caf)보다 작은 AF 임계값(Caf)과 비교되고, WC 재원 사용량이 AF 임계값(Caf)을 초과하면, NAND 메모리(10)의 정리 상태가 확인된다. NAND 메모리(10)의 정리가 충분히 진행되었던 경우, 그 시간이 유효하게 활용되어, 일찌기 WC(21)로부터 NAND 메모리(10)에 데이터를 추방하여, NAND 메모리(10)의 정리가 일찍 시작될 수 있고, 따라서 후속의 WC(21)로부터의 추방도 고속으로 행할 수 있게 된다. 그 결과, WC(21)의 많은 재원들(메모리 영역 및 관리 테이블의 엔트리와 같은)이 확보될 수 있어, 후속의 기록 커맨드에 대한 응답이 향상될 수 있고, 따라서 호스트로부터의 기록 요구에 대한 응답이 전반적으로 향상될 수 있다. 또한, 이 실시예에서, 복수의 WC 재원 사용량들(α1~α6)이 준비되고, WC 재원 사용량들(α1~α6) 마다, 상한(Clmt)과 AF 임계값(Caf)이 준비된다. WC 재원 사용량들(α1~α6) 중 어느 하나가 상한(Clmt) 또는 그 대응하는 AF 임계값(Caf)을 넘은 경우, 상한(Clmt) 또는 AF 임계값(Caf)을 넘은 원인으로서 데이터가 추방되어, WC 재원 사용량들을 상한(Clmt) 또는 AF 임계값(Caf) 이하로 할 때의 추방 처리가 효율좋고 고속으로 실행될 수 있다.
(제2 실시예)
도 25은, 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)에 포함된 카드 슬롯에 삽입된 상태로 추가 장치로서 사용될 수 있다.
도 26은, 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)는, 예컨대 인터넷 등의 외부 네트워크와의 통신을 실행하는 통신 장치이다.
부가적인 이점들 및 변형들이 당업자에게 용이하게 행해질 것이다. 따라서, 본 발명은 그 광범위한 태양에서 여기서 도시되고 설명된 대표적인 실시예들과 특정 상테들에 제한되지 않는다. 따라서, 첨부된 청구 범위 및 그 등가물들에 의하여 정의되는 바와 같은 개괄적인 신규한 개념의 사상 또는 범위로부터 벗어나지 않고, 다양한 변경이 행해질 수도 있다.

Claims (33)

  1. 메모리 시스템으로서,
    캐시 메모리;
    캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리;
    비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리에서의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 수단;
    캐시 메모리의 재원 사용량이 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는(flush) 제1 추방 처리를 수행하는 제1 추방 제어 수단; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하고, 캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료되지 않은 경우, 정리 수단에 의한 정리가 종료된 후, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제2 추방 처리를 수행하는 제2 추방 제어 수단
    을 포함하는 메모리 시스템.
  2. 제 1 항에 있어서, 상기 제2 추방 제어 수단은, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 제2 추방 처리를 수행하고, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있는 경우, 기록 요구를 수신하기 전에 제2 추방 처리를 수행하는 것인 메모리 시스템.
  3. 제 2 항에 있어서, 상기 제1 추방 제어 수단은, 제2 추방 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 제1 추방 처리를 수행하는 것인 메모리 시스템.
  4. 제 1 항에 있어서, 상기 제1 추방 제어 수단은, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 제1 추방 처리를 수행하고, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있는 경우, 제1 추방 처리를 수행하지 않고 기록 요구를 수신하는 것인 메모리 시스템.
  5. 제 1 항에 있어서,
    상기 제1 추방 제어 수단과 상기 제2 추방 제어 수단은 캐시 메모리에서의 복수의 재원 사용량들을 감시하고,
    상기 제1 추방 제어 수단은, 재원 사용량들 중 임의의 하나가 재원 사용량들 각각에 대하여 설정된 제1 임계값을 초과하는 경우, 제1 추방 처리를 수행하고,
    상기 제2 추방 제어 수단은, 재원 사용량들 중 임의의 하나가 재원 사용량들 각각에 대하여 설정된 제2 임계값을 초과하는 경우, 제2 추방 처리를 수행하는 것인 메모리 시스템.
  6. 제 5 항에 있어서,
    상기 비휘발성 반도체 메모리는 데이터 소거의 단위로서 복수의 물리 블록들을 포함하고, 복수의 물리 블록들 각각은 데이터 판독 및 데이터 기록의 단위로서 복수의 물리 페이지들을 포함하고, 하나 이상의 물리 블록들과 연관된 논리 블록은 제1 관리 기억 영역, 제2 관리 기억 영역, 및 제3 관리 기억 영역 각각에 할당되고,
    상기 제1 추방 제어 수단 및 상기 제2 추방 제어 수단은, 캐시 메모리에 기록된 섹터 단위들의 복수의 데이터를, 제1 관리 단위들의 데이터로서 제1 관리 기억 영역에 추방하고, 캐시 메모리에 기록된 섹터 단위들의 복수의 데이터를, 제1 관리 단위들의 2배 이상의 정수배 크기인 제2 관리 단위들의 데이터로서 제2 관리 기억 영역에 추방하고,
    상기 정리 수단은,
    제1 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 기억 영역에 등록된 가장 오래된 논리 블록을 제3 관리 기억 영역에 재배치하는 제1 처리;
    제3 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 단위들의 복수의 유효 데이터를 선택하여, 선택된 유효 데이터를 새로운 논리 블록에 카피하는 제2 처리; 및
    제3 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 단위들의 복수의 유효 데이터를 제2 관리 단위들의 데이터로 통합하고, 제2 관리 단위들의 데이터를 제2 관리 기억 영역에 추방하는 제3 처리
    를 실행하는 것인 메모리 시스템.
  7. 제 6 항에 있어서, 상기 캐시 메모리의 재원 사용량은, 캐시 메모리에 기록된 제1 관리 단위들의 유효 데이터수, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수, 제1 관리 단위들의 데이터와 유효 섹터가 완전히 포함되는 제2 관리 단위들의 데이터수, 및 캐시 메모리에서의 미사용된 웨이(way)들수 중 하나 이상을 포함하는 것인 메모리 시스템.
  8. 제 6 항에 있어서, 상기 제1 추방 제어 수단 및 상기 제2 추방 제어 수단은, 캐시 메모리에 기록된 데이터를 비휘발성 반도체 메모리에 추방할 때, 특정 비보다 작은 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 저밀도 데이터를 제1 관리 기억 영역에 추방하고, 특정 비보다 큰 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 고밀도 데이터를 제2 관리 기억 영역에 추방하는 것인 메모리 시스템.
  9. 제 8 항에 있어서, 상기 캐시 메모리의 재원 사용량은, 캐시 메모리에 기록된 제1 관리 단위들의 유효 데이터수, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수, 제1 관리 단위들의 데이터와 유효 섹터가 완전히 포함되는 제2 관리 단위의 데이터수, 캐시 메모리에서의 미사용된 웨이들수, 특정 비보다 큰 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 데이터수, 및 특정 비보다 작은 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위의 데이터에 포함된 제1 관리 단위들의 데이터수 중 하나 이상을 포함하는 것인 메모리 시스템.
  10. 제 7 항에 있어서, 상기 제1 추방 제어 수단과 상기 제2 추방 제어 수단은,
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 캐시 메모리에 기록된 데이터에 대응하는 제2 관리 단위들의 어드레스, 및 엔트리들 각각에 대하여 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 데이터에 관한 관리 정보의 기억 위치를 나타내는 포인터 정보를 기억하는 제1 관리 테이블; 및
    포인터 정보에 의하여 나타낸 관리 정보이며, 제1 관리 단위들의 어드레스와 연관시키면서 제1 관리 단위들의 데이터의 기억 위치를 나타내는 제1 정보, 제1 관리 단위들의 어드레스 범위에 포함된 복수의 섹터들 간의 유효 데이터를 확보하는 섹터를 나타내는 제2 정보, 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 유효 데이터수를 나타내는 제3 정보, 및 제2 관리 단위들의 어드레스 범위에 포함되며 유효 섹터가 완전히 포함된 제1 관리 단위들의 데이터수를 나타내는 제4 정보를 포함하고, 제2 관리 단위들의 각 어드레스에 대하여 캐시 메모리에 기록된 데이터의 시간순과, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수를 관리하는 제2 관리 테이블
    을 참조함으로써 제1 추방 처리와 제2 추방 처리를 수행하는 것인 메모리 시스템.
  11. 제 9 항에 있어서, 상기 제1 추방 제어 수단과 상기 제2 추방 제어 수단은,
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 캐시 메모리에 기록된 데이터에 대응하는 제2 관리 단위들의 어드레스, 및 엔트리들 각각에 대하여 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 데이터에 관한 관리 정보의 기억 위치를 나타내는 포인터 정보를 기억하는 제1 관리 테이블;
    포인터 정보에 의하여 나타낸 관리 정보이며, 제1 관리 단위들의 어드레스와 연관시키면서 제1 관리 단위들의 데이터의 기억 위치를 나타내는 제1 정보, 제1 관리 단위들의 어드레스 범위에 포함된 복수의 섹터들 간의 유효 데이터를 확보하는 섹터를 나타내는 제2 정보, 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 유효 데이터수를 나타내는 제3 정보, 및 제2 관리 단위들의 어드레스 범위에 포함되며 유효 섹터가 완전히 포함된 제1 관리 단위들의 데이터수를 나타내는 제4 정보를 포함하고, 제2 관리 단위들의 각 어드레스에 대하여 캐시 메모리에 기록된 데이터의 시간순과, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수를 관리하는 제2 관리 테이블;
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 엔트리들 각각에 대하여 고밀도 데이터에 대응하는 제2 관리 단위들의 어드레스를 기억하는 제3 관리 테이블; 및
    저밀도 데이터에 대응하는 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 총 데이터수를 관리하는 제4 관리 테이블
    을 참조함으로써 제1 추방 처리와 제2 추방 처리를 수행하는 것인 메모리 시스템.
  12. 제 11 항에 있어서,
    상기 비휘발성 반도체 메모리는 복수의 채널 병렬 동작 요소들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 복수의 메모리 칩들을 포함하고, 상기 복수의 메모리 칩들 각각은 물리 블록들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 인터리브 동작을 수행할 수 있는 물리 블록들을 각각이 포함하는 복수의 뱅크들을 포함하고,
    상기 제1 관리 테이블 내지 상기 제4 관리 테이블은, 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록과 동일한 사이즈를 갖는 제2 관리 단위들의 데이터를 관리하고,
    상기 제3 관리 테이블은, 제2 관리 단위들의 어드레스의 최하위 측의 하나 내지 복수의 비트들이 할당되는 뱅크 어드레스를 인덱스로서 사용하는 것인 메모리 시스템.
  13. 제 11 항에 있어서,
    상기 비휘발성 반도체 메모리는 복수의 채널 병렬 동작 요소들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 복수의 메모리 칩들을 포함하고, 상기 복수의 메모리 칩들 각각은 병렬 동작을 수행할 수 있는 복수의 플레인(plane)들을 포함하고, 상기 플레인들 각각은 물리 블록들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 인터리브 동작을 수행할 수 있는 물리 블록들을 각각이 포함하는 복수의 뱅크들을 포함하고,
    상기 제1 관리 테이블 내지 상기 제4 관리 테이블은, 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록과 동일한 사이즈를 갖는 제2 관리 단위들의 데이터를 관리하고,
    상기 제3 관리 테이블은, 제2 관리 단위들의 어드레스의 최하위 측의 하나 내지 복수의 비트들이 할당되는 플레인 어드레스의 상위 측의 하나 내지 복수의 비트들이 할당되는 뱅크 어드레스를 인덱스로서 사용하는 것인 메모리 시스템.
  14. 제 1 항에 있어서, 상기 제2 임계값은, 캐시 메모리로부터 비휘발성 반도체 메모리에 데이터 추방을 수행하지 않고, 캐시 메모리로의 단일 데이터 전송을 수신할 수 있는 값에 설정되는 것인 메모리 시스템.
  15. 메모리 시스템으로서,
    캐시 메모리;
    캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리;
    비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 수단;
    캐시 메모리의 재원 사용량이 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 추방 제어 수단; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 처리;
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 정리 수단에 의한 정리가 종료되지 않고, 기록 요구가, 캐시 메모리의 재원 사용량이 제2 임계값보다 큰 허용치로서 최대값에 도달하지 않는 범위 내에서 처리될 수 있는 경우, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하지 않고 캐시 메모리에 데이터 기록을 수행하는 제2 처리; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 정리 수단에 의한 정리가 종료되지 않고, 기록 요구가, 캐시 메모리의 재원 사용량이 최대값에 도달하지 않는 범위 내에서 처리될 수 없는 경우, 정리 수단에 의한 정리가 종료되고, 캐시 메모리에서의 데이터가 비휘발성 반도체 메모리에 추방된 후, 캐시 메모리에 데이터 기록을 수행하는 제3 처리
    를 수행하는 제2 추방 제어 수단
    을 포함하는 메모리 시스템.
  16. 제 15 항에 있어서, 상기 제2 추방 제어 수단은, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 제1 처리를 수행하고, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있는 경우, 제2 처리 또는 제3 처리를 수행하는 것인 메모리 시스템.
  17. 캐시 메모리, 및 캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리를 포함하는 메모리 시스템의 제어 방법으로서,
    비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리에서의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 처리 수행 단계;
    캐시 메모리의 재원 사용량이, 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 추방 처리 수행 단계; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하고, 캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료되지 않은 경우, 정리 수단에 의한 정리가 종료된 후, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제2 추방 처리 수행 단계
    를 포함하는 메모리 시스템의 제어 방법.
  18. 제 17 항에 있어서,
    캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 제2 추방 처리가 수행되고,
    캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있는 경우, 기록 요구를 수신하기 전에 제2 추방 처리가 수행되는 메모리 시스템의 제어 방법.
  19. 제 18 항에 있어서, 상기 제1 추방 처리는, 제2 추방 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 수행되는 것인 메모리 시스템의 제어 방법.
  20. 제 17 항에 있어서,
    상기 제1 추방 처리는, 캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있지 않은 경우, 수행되고,
    캐시 메모리에의 데이터 기록 처리가 수행된 후 기록 요구가 대기하고 있는 경우, 제1 추방 처리를 수행하지 않고 기록 요구가 수신되는 것인 메모리 시스템의 제어 방법.
  21. 제 17 항에 있어서,
    상기 캐시 메모리에서의 복수의 재원 사용량들이 감시되고,
    재원 사용량들 중 임의의 하나가 재원 사용량들 각각에 대하여 설정된 제1 임계값을 초과하는 경우, 제1 추방 처리가 수행되고,
    재원 사용량들 중 임의의 하나가 재원 사용량들 각각에 대하여 설정된 제2 임계값을 초과하는 경우, 제2 추방 처리가 수행되는 것인 메모리 시스템의 제어 방법.
  22. 제 21 항에 있어서,
    상기 비휘발성 반도체 메모리는 데이터 소거의 단위로서 복수의 물리 블록들을 포함하고,
    상기 복수의 물리 블록들 각각은 데이터 판독 및 데이터 기록의 단위로서 복수의 물리 페이지들을 포함하고,
    하나 이상의 물리 블록들과 연관된 논리 블록은 제1 관리 기억 영역, 제2 관리 기억 영역, 및 제3 관리 기억 영역 각각에 할당되고,
    상기 제1 추방 처리와 상기 제2 추방 처리는,
    캐시 메모리에 기록된 섹터 단위들의 복수의 데이터를, 제1 관리 단위의 데이터로서 제1 관리 기억 영역에 추방하는 단계; 및
    캐시 메모리에 기록된 섹터 단위들의 복수의 데이터를, 제1 관리 단위들의 2배 이상의 정수배 크기인 제2 관리 단위들의 데이터로서 제2 관리 기억 영역에 추방하는 단계
    를 포함하고,
    상기 정리 처리는,
    제1 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 기억 영역에 등록된 가장 오래된 논리 블록을 제3 관리 기억 영역에 재배치하는 제1 처리;
    제3 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 단위들의 복수의 유효 데이터를 선택하여, 선택된 유효 데이터를 새로운 논리 블록에 카피하는 제2 처리; 및
    제3 관리 기억 영역에서의 논리 블록들수가 허용치를 초과하는 경우, 제1 관리 단위들의 복수의 유효 데이터를 제2 관리 단위들의 데이터로 통합하고, 제2 관리 단위들의 데이터를 제2 관리 기억 영역에 추방하는 제3 처리
    를 포함하는 것인 메모리 시스템의 제어 방법.
  23. 제 22 항에 있어서, 상기 캐시 메모리의 재원 사용량은, 캐시 메모리에 기록된 제1 관리 단위들의 유효 데이터수, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수, 제1 관리 단위들의 데이터와 유효 섹터가 완전히 포함되는 제2 관리 단위들의 데이터수, 및 캐시 메모리에서의 미사용된 웨이들수 중 하나 이상을 포함하는 것인 메모리 시스템의 제어 방법.
  24. 제 22 항에 있어서, 상기 제1 추방 처리와 상기 제2 추방 처리는, 캐시 메모리에 기록된 데이터를 비휘발성 반도체 메모리에 추방할 때,
    특정 비보다 작은 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 저밀도 데이터를 제1 관리 기억 영역에 추방하는 단계; 및
    특정 비보다 큰 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 고밀도 데이터를 제2 관리 기억 영역에 추방하는 처리
    를 포함하는 것인 메모리 시스템의 제어 방법.
  25. 제 24 항에 있어서, 상기 캐시 메모리의 재원 사용량은, 캐시 메모리에 기록된 제1 관리 단위들의 유효 데이터수, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수, 제1 관리 단위들의 데이터와 유효 섹터가 완전히 포함되는 제2 관리 단위의 데이터수, 캐시 메모리에서의 미사용된 웨이들수, 특정 비보다 큰 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위들의 데이터수, 및 특정 비보다 작은 제1 관리 단위들의 유효 데이터를 포함하는 제2 관리 단위의 데이터에 포함된 제1 관리 단위들의 데이터수 중 하나 이상을 포함하는 것인 메모리 시스템의 제어 방법.
  26. 제 23 항에 있어서, 상기 제1 추방 처리와 상기 제2 추방 처리는,
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 캐시 메모리에 기록된 데이터에 대응하는 제2 관리 단위들의 어드레스, 및 엔트리들 각각에 대하여 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 데이터에 관한 관리 정보의 기억 위치를 나타내는 포인터 정보를 기억하는 제1 관리 테이블; 및
    포인터 정보에 의하여 나타낸 관리 정보이며, 제1 관리 단위들의 어드레스와 연관시키면서 제1 관리 단위들의 데이터의 기억 위치를 나타내는 제1 정보, 제1 관리 단위들의 어드레스 범위에 포함된 복수의 섹터들 간의 유효 데이터를 확보하는 섹터를 나타내는 제2 정보, 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 유효 데이터수를 나타내는 제3 정보, 및 제2 관리 단위들의 어드레스 범위에 포함되며 유효 섹터가 완전히 포함된 제1 관리 단위들의 데이터수를 나타내는 제4 정보를 포함하고, 제2 관리 단위들의 각 어드레스에 대하여 캐시 메모리에 기록된 데이터의 시간순과, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수를 관리하는 제2 관리 테이블
    을 참조하는 단계를 포함하는 것인 메모리 시스템의 제어 방법.
  27. 제 25 항에 있어서, 상기 제1 추방 처리와 상기 제2 추방 처리는,
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 캐시 메모리에 기록된 데이터에 대응하는 제2 관리 단위들의 어드레스, 및 엔트리들 각각에 대하여 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 데이터에 관한 관리 정보의 기억 위치를 나타내는 포인터 정보를 기억하는 제1 관리 테이블;
    포인터 정보에 의하여 나타낸 관리 정보이며, 제1 관리 단위들의 어드레스와 연관시키면서 제1 관리 단위들의 데이터의 기억 위치를 나타내는 제1 정보, 제1 관리 단위들의 어드레스 범위에 포함된 복수의 섹터들 간의 유효 데이터를 확보하는 섹터를 나타내는 제2 정보, 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 유효 데이터수를 나타내는 제3 정보, 및 제2 관리 단위들의 어드레스 범위에 포함되며 유효 섹터가 완전히 포함된 제1 관리 단위들의 데이터수를 나타내는 제4 정보를 포함하고, 제2 관리 단위들의 각 어드레스에 대하여 캐시 메모리에 기록된 데이터의 시간순과, 캐시 메모리에 기록된 제2 관리 단위들의 유효 데이터수를 관리하는 제2 관리 테이블;
    제2 관리 단위들의 어드레스의 하위 수 비트가 각각에 할당되는 복수의 인덱스들, 및 인덱스들 각각에 대하여 복수의 웨이들을 포함하는 엔트리들을 포함하고, 엔트리들 각각에 대하여 고밀도 데이터에 대응하는 제2 관리 단위들의 어드레스를 기억하는 제3 관리 테이블; 및
    저밀도 데이터에 대응하는 제2 관리 단위들의 어드레스 범위에 포함된 제1 관리 단위들의 총 데이터수를 관리하는 제4 관리 테이블
    을 참조하는 단계를 포함하는 것인 메모리 시스템의 제어 방법.
  28. 제 27 항에 있어서,
    상기 비휘발성 반도체 메모리는 복수의 채널 병렬 동작 요소들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 복수의 메모리 칩들을 포함하고,
    상기 복수의 메모리 칩들 각각은 물리 블록들을 포함하고,
    상기 복수의 채널 병렬 동작 요소들 각각은 인터리브 동작을 수행할 수 있는 물리 블록들을 각각이 포함하는 복수의 뱅크들을 포함하고,
    상기 제1 관리 테이블 내지 상기 제4 관리 테이블은, 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록과 동일한 사이즈를 갖는 제2 관리 단위들의 데이터를 관리하고,
    상기 제3 관리 테이블은, 제2 관리 단위들의 어드레스의 최하위 측의 하나 내지 복수의 비트들이 할당되는 뱅크 어드레스를 인덱스로서 사용하는 것인 메모리 시스템의 제어 방법.
  29. 제 27 항에 있어서,
    상기 비휘발성 반도체 메모리는 복수의 채널 병렬 동작 요소들을 포함하고, 상기 복수의 채널 병렬 동작 요소들 각각은 복수의 메모리 칩들을 포함하고,
    상기 복수의 메모리 칩들 각각은 병렬 동작을 수행할 수 있는 복수의 플레인들을 포함하고,
    상기 플레인들 각각은 물리 블록들을 포함하고,
    상기 복수의 채널 병렬 동작 요소들 각각은 인터리브 동작을 수행할 수 있는 물리 블록들을 각각이 포함하는 복수의 뱅크들을 포함하고,
    상기 제1 관리 테이블 내지 상기 제4 관리 테이블은, 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록과 동일한 사이즈를 갖는 제2 관리 단위들의 데이터를 관리하고,
    상기 제3 관리 테이블은, 제2 관리 단위들의 어드레스의 최하위 측의 하나 내지 복수의 비트들이 할당되는 플레인 어드레스의 상위 측의 하나 내지 복수의 비트들이 할당되는 뱅크 어드레스를 인덱스로서 사용하는 것인 메모리 시스템의 제어 방법.
  30. 제 17 항에 있어서, 상기 제2 임계값은, 캐시 메모리로부터 비휘발성 반도체 메모리에 데이터 추방을 수행하지 않고, 캐시 메모리로의 단일 데이터 전송을 수신할 수 있는 값에 설정되는 것인 메모리 시스템의 제어 방법.
  31. 캐시 메모리, 및 상기 캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리를 포함하는 메모리 시스템의 제어 방법으로서,
    비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리에서의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 처리 수행 단계;
    캐시 메모리의 재원 사용량이, 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 추방 처리 수행 단계; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 처리;
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 정리 수단에 의한 정리가 종료되지 않고, 기록 요구가, 캐시 메모리의 재원 사용량이 제2 임계값보다 큰 허용치로서 최대값에 도달하지 않는 범위 내에서 처리될 수 있는 경우, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하지 않고 캐시 메모리에 데이터 기록을 수행하는 제2 처리; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 정리 수단에 의한 정리가 종료되지 않고, 기록 요구가, 캐시 메모리의 재원 사용량이 최대값에 도달하지 않는 범위 내에서 처리될 수 없는 경우, 정리 수단에 의한 정리가 종료되고, 캐시 메모리에서의 데이터가 비휘발성 반도체 메모리에 추방된 후, 캐시 메모리에 데이터 기록을 수행하는 제3 처리
    를 수행하는 제2 추방 처리 수행 단계
    를 포함하는 메모리 시스템의 제어 방법.
  32. 제 31 항에 있어서,
    캐시 메모리에의 데이터 기록 처리가 수행된 후, 기록 요구가 대기하고 있지 않은 경우, 제1 처리가 수행되고,
    캐시 메모리에의 데이터 기록 처리가 수행된 후, 기록 요구가 대기하고 있는 경우, 제2 처리 또는 제3 처리가 수행되는 것인 메모리 시스템의 제어 방법.
  33. 정보 처리 장치로서,
    CPU:
    주 기억 메모리; 및
    외부 기억 장치
    를 포함하고,
    상기 외부 기억 장치는,
    캐시 메모리;
    캐시 메모리를 경유하여 데이터가 기록되는 비휘발성 반도체 메모리;
    비휘발성 반도체 메모리의 재원 사용량이 특정값을 초과한 경우에, 비휘발성 반도체 메모리에서의 데이터를 정리함으로써 비휘발성 반도체 메모리의 재원을 증가시키는 정리 수단;
    캐시 메모리의 재원 사용량이, 제1 임계값을 초과하고, 제1 임계값보다 큰 제2 임계값보다 작고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제1 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제1 추방 처리를 수행하는 제1 추방 제어 수단; 및
    캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료된 경우, 캐시 메모리의 재원 사용량이 제2 임계값 이하가 될 때까지, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하고, 캐시 메모리의 재원 사용량이 제2 임계값을 초과하고, 또한 정리 수단에 의한 정리가 종료되지 않은 경우, 정리 수단에 의한 정리가 종료된 후, 캐시 메모리에서의 데이터를 비휘발성 반도체 메모리에 추방하는 제2 추방 처리를 수행하는 제2 추방 제어 수단
    을 포함하는 것인 정보 처리 장치.
KR1020117005595A 2008-12-27 2009-12-28 메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치 KR101200240B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2008335568A JP5221332B2 (ja) 2008-12-27 2008-12-27 メモリシステム
JPJP-P-2008-335568 2008-12-27
PCT/JP2009/071918 WO2010074352A1 (en) 2008-12-27 2009-12-28 Memory system, method of controlling memory system, and information processing apparatus

Publications (2)

Publication Number Publication Date
KR20110050505A KR20110050505A (ko) 2011-05-13
KR101200240B1 true KR101200240B1 (ko) 2012-11-09

Family

ID=42287929

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117005595A KR101200240B1 (ko) 2008-12-27 2009-12-28 메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치

Country Status (7)

Country Link
US (1) US8868842B2 (ko)
EP (1) EP2350835A4 (ko)
JP (1) JP5221332B2 (ko)
KR (1) KR101200240B1 (ko)
CN (1) CN102150140B (ko)
TW (1) TWI428745B (ko)
WO (1) WO2010074352A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942675B2 (en) 2018-01-19 2021-03-09 SK Hynix Inc. Memory system and operating method thereof

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ITMI20071012A1 (it) * 2007-05-18 2008-11-19 St Microelectronics Srl Dispositivo di memoria migliorato a veloce programmazione
JP5032371B2 (ja) * 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
JP2009211233A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US10430338B2 (en) 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US8868831B2 (en) 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
JP5279785B2 (ja) * 2010-09-17 2013-09-04 株式会社東芝 コントローラ、記憶装置、およびプログラム
JP5066241B2 (ja) 2010-09-24 2012-11-07 株式会社東芝 メモリシステム
IL208641A0 (en) * 2010-10-12 2010-12-30 Eci Telecom Ltd Method for accelerating start up of a computerized system
US8516194B2 (en) 2010-11-22 2013-08-20 Micron Technology, Inc. Systems and methods for caching data with a nonvolatile memory cache
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP5535128B2 (ja) * 2010-12-16 2014-07-02 株式会社東芝 メモリシステム
JP2012141946A (ja) * 2010-12-16 2012-07-26 Toshiba Corp 半導体記憶装置
JP2012128815A (ja) * 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
JP2012128816A (ja) 2010-12-17 2012-07-05 Toshiba Corp メモリシステム
CN102065146B (zh) * 2011-01-05 2014-06-18 上海聚欣网络科技有限公司 用于优化嵌入式终端在p2p应用中的存储效率的方法与设备
JP5295286B2 (ja) * 2011-02-23 2013-09-18 株式会社日立製作所 記憶装置およびそれを搭載した計算機
WO2013005343A1 (en) * 2011-07-01 2013-01-10 Renesas Electronics Corporation Apparatus and method for a marker guided data transfer between a single memory and an array of memories with unevenly distributed data amount in an simd processor system
US8463948B1 (en) * 2011-07-01 2013-06-11 Intel Corporation Method, apparatus and system for determining an identifier of a volume of memory
TWI467372B (zh) * 2011-07-06 2015-01-01 Phison Electronics Corp 指令執行方法、記憶體控制器與記憶體儲存裝置
JP2013065150A (ja) * 2011-09-16 2013-04-11 Toshiba Corp キャッシュメモリ装置、プロセッサ、および情報処理装置
US10592416B2 (en) 2011-09-30 2020-03-17 Oracle International Corporation Write-back storage cache based on fast persistent memory
US9448922B2 (en) 2011-12-21 2016-09-20 Intel Corporation High-performance storage structures and systems featuring multiple non-volatile memories
JP2013137674A (ja) * 2011-12-28 2013-07-11 Toshiba Corp メモリシステム
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
US9251055B2 (en) 2012-02-23 2016-02-02 Kabushiki Kaisha Toshiba Memory system and control method of memory system
US8990477B2 (en) 2012-04-19 2015-03-24 Sandisk Technologies Inc. System and method for limiting fragmentation
TWI459201B (zh) * 2012-04-27 2014-11-01 Toshiba Kk Information processing device
JP5914148B2 (ja) * 2012-05-07 2016-05-11 株式会社バッファローメモリ Ssd(ソリッドステートドライブ)装置
US8392428B1 (en) * 2012-09-12 2013-03-05 DSSD, Inc. Method and system for hash fragment representation
JP6056453B2 (ja) * 2012-12-20 2017-01-11 富士通株式会社 プログラム、データ管理方法および情報処理装置
KR20140099737A (ko) 2013-02-04 2014-08-13 삼성전자주식회사 존-기반 조각모음 방법 및 그것을 이용한 유저 장치
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
US20140250277A1 (en) * 2013-03-04 2014-09-04 Kabushiki Kaisha Toshiba Memory system
US20140281194A1 (en) 2013-03-15 2014-09-18 Seagate Technology Llc Dynamically-sizeable granule storage
US9588886B2 (en) 2013-03-15 2017-03-07 Seagate Technology Llc Staging sorted data in intermediate storage
US9703701B2 (en) 2013-03-28 2017-07-11 Hewlett Packard Enterprise Development Lp Address range transfer from first node to second node
WO2014158168A1 (en) 2013-03-28 2014-10-02 Hewlett-Packard Development Company Data flush of group table
TWI537734B (zh) * 2013-06-18 2016-06-11 群聯電子股份有限公司 資料保護方法、記憶體控制器與記憶體儲存裝置
JP6021759B2 (ja) 2013-08-07 2016-11-09 株式会社東芝 メモリシステムおよび情報処理装置
US9798655B2 (en) * 2013-09-20 2017-10-24 Oracle International Corporation Managing a cache on storage devices supporting compression
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
JP2015130135A (ja) * 2014-01-09 2015-07-16 株式会社東芝 データ配信装置、及びデータ配信方法
JP6248808B2 (ja) * 2014-05-22 2017-12-20 富士通株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及び、情報処理装置の制御プログラム
US9239757B2 (en) * 2014-05-30 2016-01-19 Sandisk Technologies Inc. Method and apparatus for relocating data in non-volatile memory
CN105320621A (zh) * 2014-08-04 2016-02-10 株式会社东芝 存储器系统以及信息处理装置
US9690655B2 (en) 2014-09-30 2017-06-27 EMC IP Holding Company LLC Method and system for improving flash storage utilization by predicting bad m-pages
US20160093397A1 (en) * 2014-09-30 2016-03-31 Emc Corporation Method and system for improving flash storage utilization using read-threshold tables
US10691531B2 (en) 2014-12-04 2020-06-23 Western Digital Technologies, Inc. Systems and methods for multi-zone data tiering for endurance extension in solid state drives
TWI512461B (zh) * 2014-12-25 2015-12-11 Prophetstor Data Services Inc 用於混合式儲存設備的固態硬碟快取系統
CN104731674B (zh) * 2015-02-02 2020-09-01 北京忆恒创源科技有限公司 使用mlc nvm存储电子系统固件的方法与设备
US9414079B1 (en) * 2015-03-23 2016-08-09 Kyocera Document Solutions Inc. Interleaving encoding
CN104980680B (zh) * 2015-06-30 2017-11-03 银江股份有限公司 一种视频数据存取的方法
JP6757128B2 (ja) * 2015-09-25 2020-09-16 富士通デバイス株式会社 遊技機用記憶装置
US9747041B2 (en) 2015-12-23 2017-08-29 Intel Corporation Apparatus and method for a non-power-of-2 size cache in a first level memory device to cache data present in a second level memory device
KR20180011376A (ko) * 2016-07-21 2018-02-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP2018041204A (ja) * 2016-09-06 2018-03-15 東芝メモリ株式会社 メモリ装置及び情報処理システム
US10133667B2 (en) 2016-09-06 2018-11-20 Orcle International Corporation Efficient data storage and retrieval using a heterogeneous main memory
CN107870872B (zh) * 2016-09-23 2021-04-02 伊姆西Ip控股有限责任公司 用于管理高速缓存的方法和设备
US10331573B2 (en) 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
US10198203B2 (en) * 2016-11-15 2019-02-05 Samsung Electronics Co., Ltd. Method of operating memory device using pseudo-random functions, memory device using the same and memory system including the device
US10095417B1 (en) 2016-12-13 2018-10-09 EMC IP Holding Company LLC Method and system for improving flash storage read performance in partially programmed blocks
US10002086B1 (en) * 2016-12-20 2018-06-19 Sandisk Technologies Llc Multi-channel memory operations based on bit error rates
US11069418B1 (en) 2016-12-30 2021-07-20 EMC IP Holding Company LLC Method and system for offline program/erase count estimation
US10289550B1 (en) 2016-12-30 2019-05-14 EMC IP Holding Company LLC Method and system for dynamic write-back cache sizing in solid state memory storage
US10338983B2 (en) 2016-12-30 2019-07-02 EMC IP Holding Company LLC Method and system for online program/erase count estimation
KR20180093153A (ko) * 2017-02-09 2018-08-21 에스케이하이닉스 주식회사 데이터 저장 장치의 동작 방법
US10290331B1 (en) 2017-04-28 2019-05-14 EMC IP Holding Company LLC Method and system for modulating read operations to support error correction in solid state memory
US10403366B1 (en) 2017-04-28 2019-09-03 EMC IP Holding Company LLC Method and system for adapting solid state memory write parameters to satisfy performance goals based on degree of read errors
US10803039B2 (en) 2017-05-26 2020-10-13 Oracle International Corporation Method for efficient primary key based queries using atomic RDMA reads on cache friendly in-memory hash index
KR101974731B1 (ko) * 2017-08-14 2019-05-02 성균관대학교산학협력단 플래시 스토리지 장치 및 플래시 스토리지 장치에 데이터를 기록하는 방법
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US10802766B2 (en) 2017-09-29 2020-10-13 Oracle International Corporation Database with NVDIMM as persistent storage
US20190243787A1 (en) * 2018-02-05 2019-08-08 Micron Technology, Inc. Memory Systems having Controllers Embedded in Packages of Integrated Circuit Memory
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US11416395B2 (en) 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10929139B2 (en) * 2018-09-27 2021-02-23 Qualcomm Incorporated Providing predictive instruction dispatch throttling to prevent resource overflows in out-of-order processor (OOP)-based devices
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
KR20210016188A (ko) 2019-08-01 2021-02-15 삼성전자주식회사 스토리지 장치 및 스토리지 장치의 동작 방법
KR20210027563A (ko) * 2019-08-28 2021-03-11 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
US11914482B2 (en) * 2020-11-20 2024-02-27 Pelatro Pte. Ltd. System and method for robust, efficient, adaptive streaming replication application protocol with dancing recovery for high-volume distributed live subscriber datasets
US11929121B2 (en) 2022-03-09 2024-03-12 Micron Technology, Inc. Storing one data value by programming a first memory cell and a second memory cell

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058840A (ja) 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07146820A (ja) * 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5542066A (en) * 1993-12-23 1996-07-30 International Business Machines Corporation Destaging modified data blocks from cache memory
JP2000089983A (ja) * 1998-09-10 2000-03-31 Casio Comput Co Ltd データ保存装置及びデータ保存方法
SG141212A1 (en) * 1998-11-24 2008-04-28 Niksun Inc Apparatus and method for collecting and analyzing communications data
JPH11288387A (ja) * 1998-12-11 1999-10-19 Fujitsu Ltd ディスクキャッシュ装置
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7590803B2 (en) * 2004-09-23 2009-09-15 Sap Ag Cache eviction
JP2007199905A (ja) 2006-01-25 2007-08-09 Toshiba Corp 半導体記憶装置の制御方法
JP4768504B2 (ja) 2006-04-28 2011-09-07 株式会社東芝 不揮発性フラッシュメモリを用いる記憶装置
JP2008152464A (ja) 2006-12-15 2008-07-03 Toshiba Corp 記憶装置
US7657701B2 (en) * 2007-01-03 2010-02-02 The General Electric Company System and method of flash memory wear leveling using distributed write cycles
US7783839B2 (en) * 2007-01-08 2010-08-24 International Business Machines Corporation Using different algorithms to destage different types of data from cache
KR100823171B1 (ko) 2007-02-01 2008-04-18 삼성전자주식회사 파티션된 플래시 변환 계층을 갖는 컴퓨터 시스템 및플래시 변환 계층의 파티션 방법
JP5026102B2 (ja) 2007-02-07 2012-09-12 株式会社日立製作所 ストレージ制御装置及びデータ管理方法
JP2008299441A (ja) 2007-05-29 2008-12-11 Hitachi Ltd ストレージシステム及びこれを用いたデータの管理方法
JP4564520B2 (ja) 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
JP4538034B2 (ja) 2007-09-26 2010-09-08 株式会社東芝 半導体記憶装置、及びその制御方法
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
KR101077339B1 (ko) 2007-12-28 2011-10-26 가부시끼가이샤 도시바 반도체 기억 장치
US7865658B2 (en) * 2007-12-31 2011-01-04 Sandisk Il Ltd. Method and system for balancing host write operations and cache flushing
JP4489127B2 (ja) 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP4675984B2 (ja) 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
JP2009211234A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP5010505B2 (ja) 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4653817B2 (ja) 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
US8276043B2 (en) 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP4498426B2 (ja) 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP4745356B2 (ja) 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
JP4551940B2 (ja) 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
JP4691123B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP2009211215A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
US8285954B2 (en) 2008-03-01 2012-10-09 Kabushiki Kaisha Toshiba Memory system managing a plurality of logs
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 株式会社東芝 メモリシステム
JP2010176646A (ja) 2009-02-02 2010-08-12 Toshiba Information Systems (Japan) Corp メモリシステムおよびメモリシステムのインターリーブ制御方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007058840A (ja) 2005-07-29 2007-03-08 Sony Corp 記憶装置、コンピュータシステム、および記憶システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10942675B2 (en) 2018-01-19 2021-03-09 SK Hynix Inc. Memory system and operating method thereof

Also Published As

Publication number Publication date
CN102150140A (zh) 2011-08-10
CN102150140B (zh) 2014-07-23
JP5221332B2 (ja) 2013-06-26
EP2350835A1 (en) 2011-08-03
TWI428745B (zh) 2014-03-01
EP2350835A4 (en) 2012-09-05
US20110238899A1 (en) 2011-09-29
JP2010157142A (ja) 2010-07-15
TW201102816A (en) 2011-01-16
US8868842B2 (en) 2014-10-21
KR20110050505A (ko) 2011-05-13
WO2010074352A1 (en) 2010-07-01

Similar Documents

Publication Publication Date Title
KR101200240B1 (ko) 메모리 시스템, 메모리 시스템의 제어 방법, 및 정보 처리 장치
KR101186788B1 (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
KR101117403B1 (ko) 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법
KR101095765B1 (ko) 메모리 시스템 및 그 제어 방법
KR101079890B1 (ko) 메모리 시스템
KR101067457B1 (ko) 메모리 시스템
KR101066937B1 (ko) 메모리 시스템 및 그 데이터 소거 방법
US9201717B2 (en) Memory system
KR101079936B1 (ko) 메모리 시스템
KR101102634B1 (ko) 메모리 시스템
JP5039177B2 (ja) 半導体記憶装置
KR101075923B1 (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: 20151012

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee