KR101117403B1 - 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법 - Google Patents

메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법 Download PDF

Info

Publication number
KR101117403B1
KR101117403B1 KR1020090089090A KR20090089090A KR101117403B1 KR 101117403 B1 KR101117403 B1 KR 101117403B1 KR 1020090089090 A KR1020090089090 A KR 1020090089090A KR 20090089090 A KR20090089090 A KR 20090089090A KR 101117403 B1 KR101117403 B1 KR 101117403B1
Authority
KR
South Korea
Prior art keywords
data
storage unit
management information
specific pattern
storage
Prior art date
Application number
KR1020090089090A
Other languages
English (en)
Other versions
KR20100077118A (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 KR20100077118A publication Critical patent/KR20100077118A/ko
Application granted granted Critical
Publication of KR101117403B1 publication Critical patent/KR101117403B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

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

Abstract

휘발성의 제1 기억부와, 비휘발성의 제2 기억부와, 제1 기억부를 통해 호스트 장치와 제2 기억부 사이의 데이터 전송을 수행하는 컨트롤러를 구비하는 메모리 시스템에 있어서, 호스트 장치로부터 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 소정의 관리 단위마다 감시하고, 제2 기억부로 퇴출되는 데이터가 특정 패턴인 경우에는, 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정한다.

Description

메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법{MEMORY SYSTEM, CONTROLLER, AND CONTROL METHOD OF THE MEMORY SYSTEM}
(관련 출원의 참조)
본 출원은, 2008년 12월 27일에 출원된 일본 특허 출원 번호 제2008-335543의 우선권의 이익을 주장하며, 그 일본 특허 출원의 모든 내용은 본 출원에 원용된다.
본 발명은 비휘발성 반도체 기억 장치를 이용한 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법에 관한 것이다.
컴퓨터 시스템에 이용되는 외부 기억 장치로서, NAND형 플래시 메모리 등의 비휘발성 반도체 메모리를 탑재한 SSD(Solid State Drive)가 주목받고 있다. 플래시 메모리는 자기 디스크 장치에 비해, 고속, 경량 등의 이점을 갖고 있다.
SSD 내에는, 복수의 플래시 메모리 칩, 호스트 장치로부터의 요구에 따라서 각 플래시 메모리 칩의 리드(read)/라이트(write)를 제어하는 컨트롤러, 각 플래시 메모리 칩과 호스트 장치 사이에서 데이터를 전송하기 위한 버퍼 메모리, 전원 회로, 호스트 장치에 대한 접속 인터페이스 등을 구비하고 있다(예컨대, 특허 문헌 1 참조).
비휘발성 반도체 메모리에는, NAND형 플래시 메모리와 같이, 데이터를 기억시키는 경우에 블록 단위로 한 번 데이터를 소거하고 나서 그 후에 기록하는 것, 페이지 단위로 기록/판독하는 것 등, 소거/기록/판독 단위가 고정되어 있는 것이 있다.
한편, 퍼스널 컴퓨터 등의 호스트 기기가 하드디스크를 비롯한 2차 기억 장치에 대해 데이터를 기록/판독하는 단위는 섹터라고 불린다. 섹터는 반도체 기억 장치의 소거/기록/판독의 단위와는 독립적으로 정해진다.
예컨대, 비휘발성 반도체 메모리의 블록의 크기(블록 사이즈)는 512 kB, 페이지의 크기(페이지 사이즈)는 4 kB인 데 비해, 호스트 기기의 섹터의 크기(섹터 사이즈)는 512 B와 같이 정해져 있다.
이와 같이, 비휘발성 반도체 메모리의 소거/기록/판독의 단위는 호스트 기기의 기록/판독의 단위보다 큰 경우가 있다.
또한, 퍼스널 컴퓨터 등의 호스트 기기가 기록하는 데이터는, 시간적 국소성, 및 영역적 국소성을 겸비하고 있다(예컨대, 비특허 문헌 1 참조). 그 때문에, 데이터를 기록할 때에 외부로부터 지정된 어드레스에 그대로 기록해 가면, 단시간 특정 영역에 재기록되어, 즉 소거 처리가 집중되어, 소거 횟수의 편중이 커진다. 그 때문에, NAND형 플래시 메모리에서는, 데이터 갱신 개소를 균등하게 분산시키는 웨어 레벨링(wear leveling)이라고 불리는 처리가 실행된다(예컨대, 특허 문헌 2 참조).
[특허 문헌 1] 일본 특허 제3,688,835호 공보
[특허 문헌 2] 일본 특허 공개 제2008-146255호 공보
[비특허 문헌 1] David A. Patterson and John L. Hennessy, "Computer Organization and Design: The Hardware/Software Interface", Morgan Kaufmann Pub, 2004/8/31
본 발명의 일 형태에 따르면, 휘발성의 제1 기억부와, 비휘발성의 제2 기억부와, 상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 수행하는 컨트롤러를 구비하는 메모리 시스템에 있어서, 상기 제1 기억부에는, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보가 기억되고, 상기 컨트롤러는 상기 제1 및 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하는 판독 기록 제어 수단과, 상기 판독 기록 제어 수단에 의해, 상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하는 관리 정보 갱신 수단과, 상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 소정의 관리 단위마다 감시하는 데이터 감시 수단을 구비하며, 상기 데이터 감시 수단에 의해, 상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하고, 상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에, 상기 판독 기록 제어 수단은, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있는 경우에, 상기 데이터를 상 기 제2 기억부에 기록하는 처리를 수행하지 않고, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특징으로 하는 메모리 시스템이 제공된다.
또한, 본 발명의 일 형태에 따르면, 휘발성의 제1 기억부를 통해 호스트 장치와 비휘발성의 제2 기억부 사이의 데이터 전송을 수행하는 컨트롤러에 있어서, 상기 제1 기억부에 기억된, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하는 판독 기록 제어 수단과, 상기 판독 기록 제어 수단에 의해, 상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하는 관리 정보 갱신 수단과, 상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 소정의 관리 단위마다 감시하는 데이터 감시 수단을 구비하고, 상기 데이터 감시 수단에 의해, 상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하고, 상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에, 상기 판독 기록 제어 수단은, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있는 경우에, 상기 데이터를 상기 제2 기억부에 기록하는 처 리를 수행하지 않고, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특징으로 하는 컨트롤러가 제공된다.
또한, 본 발명의 일 형태에 따르면, 휘발성의 제1 기억부와, 비휘발성의 제2 기억부를 구비하는 메모리 시스템의 제어 방법에 있어서, 상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 수행하고, 상기 제1 기억부에 기억된, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하며, 상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하고, 상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 소정의 관리 단위마다 감시하며, 상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하며, 상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있으면, 상기 데이터를 상기 제2 기억부에 기록하는 처리를 수행하지 않고, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특 징으로 하는 메모리 시스템의 제어 방법이 제공된다.
본 발명에 따르면, 비휘발성 반도체 메모리에서의 재기록 횟수의 증대에 의한 열화를 방지하는 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법을 제공할 수 있다는 효과를 발휘한다.
웨어 레벨링 처리에서는, 예컨대, 호스트 기기로부터 지정되는 논리 어드레스를, 데이터 갱신 개소가 균등하게 분산되도록 비휘발성 반도체 메모리의 물리 어드레스로 어드레스 변환하고, 데이터의 물리적인 기억 위치를 동적으로 변경함으로써, 비휘발성 반도체 메모리 전체에서의 재기록 횟수를 균일화하여, 국소적인 재기록 횟수의 증대에 의한 열화를 방지하고 있다.
그러나, 종래에서는, 비휘발성 반도체 메모리에서의 재기록 횟수의 증대에 의한 열화를 방지하기 위한 처리로서는 이 웨어 레벨링에 의한 것뿐이었다. 그 때문에, 비휘발성 반도체 메모리의 추가적인 열화 억제 방법이 요망되고 있다.
이하에 첨부 도면을 참조하여, 본 발명의 실시형태에 따른 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법을 상세히 설명한다. 또, 이들 실시형태에 의해 본 발명이 한정되는 것은 아니다.
이하, 본 발명의 실시형태에 대해 도면을 참조하여 설명한다. 또, 이하의 설명에서, 동일한 기능 및 구성을 갖는 요소에 대해서는, 동일 부호를 붙이고, 중복 설명은 필요한 경우에만 한다.
먼저, 본 명세서에서 이용하는 용어에 대해 정의해 둔다.
?물리 페이지: NAND형 플래시 메모리 내부에 있어서 일괄적으로 기록/판독이 가능한 단위.
?논리 페이지: SSD 내부에서 설정되는 기록/판독 단위이며, 1 이상의 물리 페이지를 조합하여 구성된다.
?물리 블록: NAND형 플래시 메모리 내부에서 독립적으로 소거 가능한 최소 단위이며, 복수의 물리 페이지로 구성된다.
?논리 블록: SSD 내부에서 설정되는 소거 단위이며, 1 이상의 물리 블록을 조합하여 구성된다. 논리 블록은 복수의 논리 페이지로 구성된다.
?섹터: 호스트로부터의 최소 액세스 단위. 섹터 사이즈는 예컨대 512 B.
?클러스터: SSD 내부에서 「소형 데이터」를 관리하는 관리 단위. 클러스터 사이즈는 섹터 사이즈 이상이며, 호스트의 OS가 채용하는 파일 시스템의 데이터 관리 단위, 또는 논리 페이지 사이즈와 동일해지도록 정해진다. 예컨대, 클러스터 사이즈의 2 이상의 자연수배가 논리 페이지 사이즈가 되도록 정해져도 좋다.
?트랙: SSD 내부에서 「대형 데이터」를 관리하는 관리 단위. 클러스터 사이즈의 2 이상의 자연수배가 트랙 사이즈가 되도록 정해진다. 예컨대, 트랙 사이즈가 논리 블록 사이즈와 동일해지도록 정해져도 좋다.
?자유 블록(FB): 내부에 유효 데이터를 포함하지 않는, 용도 미할당의 논리 블록. 이하의 CFB, FFB의 2종류가 있다.
?CFB(Complete Free Block; 컴플리트 자유 블록): 재이용을 위해 소거 동작 을 실행할 필요가 있는 FB. 소거 동작 실행 후에는, 논리 블록의 선두에 위치하는 논리 페이지부터 기록하는 것이 가능하다.
?FFB(Fragment Free Block; 플래그먼트 자유 블록): 미기록의 논리 페이지가 남아 있어, 소거 동작을 실행하지 않고서 재이용이 가능한 FB. 나머지의 미기록 상태인 채의 논리 페이지에 기록하는 것이 가능하다.
?불량 블록(BB): NAND형 플래시 메모리 상의, 에러가 많은 등 기억 영역으로서 사용할 수 없는 물리 블록. 예컨대, 소거 동작이 정상적으로 종료되지 않은 물리 블록이 배드 블록(BB)으로서 등록된다.
?기록 효율: 소정 기간 내에, 호스트로부터 기록된 데이터량에 대한, 논리 블록의 소거량의 통계값. 작을수록 NAND형 플래시 메모리의 소모도가 작다.
?유효 클러스터: 논리 어드레스에 대응하는 클러스터 사이즈의 최신 데이터.
?무효 클러스터: 동일 논리 어드레스의 데이터가 다른 장소에 기록되어, 참조되는 일이 없어진 클러스터 사이즈의 데이터.
?유효 트랙: 논리 어드레스에 대응하는 트랙 사이즈의 최신 데이터.
?무효 트랙: 동일 논리 어드레스의 데이터가 다른 장소에 기록되어, 참조되는 일이 없어진 트랙 사이즈의 데이터.
?MLC(Multi Level Cell) 모드: 다중값 기억이 가능한 NAND형 플래시 메모리에 있어서, 통상대로, 상위 페이지 및 하위 페이지를 사용하여 기록을 수행하는 모드. MLC 모드에서 사용하는 1 이상의 물리 블록을 조합하여, MLC 모드의 논리 블록 이 구성된다.
?의사 SLC(Single Level Cell) 모드: 다중값 기억이 가능한 NAND형 플래시 메모리에 있어서, 하위 페이지만을 사용하여 기록을 수행하는 모드. 의사 SLC 모드에서 사용하는 1 이상의 물리 블록을 조합하여, 의사 SLC 모드의 논리 블록이 구성된다. 한번 의사 SLC 모드에서 사용한 물리 블록이라도, 소거 동작 후에는 MLC 모드에서 사용하는 것이 가능하다.
[제1 실시형태]
도 1은 SSD(Solid State Drive)(100)의 구성예를 나타내는 블록도이다. SSD(100)는, ATA 인터페이스(ATA I/F)(2) 등의 메모리 접속 인터페이스를 통해 퍼스널 컴퓨터 또는 CPU 코어 등의 호스트 장치(이하, 호스트라고 약기함)(1)와 접속되어, 호스트(1)의 외부 메모리로서 기능한다. 또한, SSD(100)는 RS232C 인터페이스(RS232C I/F) 등의 통신 인터페이스(3)를 통해, 디버그용/제조 검사용 기기(200)와의 사이에서 데이터를 송수신할 수 있다. SSD(100)는, 비휘발성 반도체 메모리로서의 NAND형 플래시 메모리(이하, NAND 메모리라고 약기함)(10)와, 컨트롤러로서의 드라이브 제어 회로(4)와, 휘발성 반도체 메모리로서의 DRAM(20)과, 전원 회로(5)와, 상태 표시용 LED(6)와, 드라이브 내부의 온도를 검출하는 온도 센서(7)와, 퓨즈(8)를 구비하고 있다.
전원 회로(5)는, 호스트(1)측의 전원 회로에서 공급되는 외부 직류 전원으로부터 복수의 상이한 내부 직류 전원 전압을 생성하고, 이들 내부 직류 전원 전압을 SSD(100) 내의 각 회로에 공급한다. 또한, 전원 회로(5)는, 외부 전원의 시동을 검 지하고, 파워온 리셋 신호를 생성하여, 드라이브 제어 회로(4)에 공급한다. 퓨즈(8)는, 호스트(1)측의 전원 회로와 SSD(100) 내부의 전원 회로(5) 사이에 설치된다. 외부 전원 회로로부터 과전류가 공급된 경우 퓨즈(8)가 절단되어, 내부 회로의 오동작을 방지한다.
NAND 메모리(10)는, 이 경우, 4병렬 동작을 수행하는 4개의 병렬 동작 요소(10a~10d)를 가지며, 4개의 병렬 동작 요소(10a~10d)는, 4개의 채널(ch0~ch3)에 의해 드라이브 제어 회로(4)에 접속되어 있다. 각 병렬 동작 요소(10a~10d)는, 뱅크 인터리브가 가능한 복수의 뱅크(이 경우, 4뱅크, Bank0~Bank3)에 의해 구성되어 있고, 각 뱅크는, 복수의 NAND 메모리 칩(이 경우, 2 메모리 칩, Chip0, Chip1)에 의해 구성되어 있다. 각 메모리 칩은, 예컨대, 각각 복수의 물리 블록을 포함하는 플레인 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)에 상태 표시용 신호를 공급하고, 전원 회로(5)로부터의 파워온 리셋 신호를 받아, 리셋 신호 및 클록 신호를 그 드라이브 제어 회로(4) 내 및 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)로 구성된 다. 적층 게이트 구조는, 반도체 기판 상에 게이트 절연막을 개재하여 형성된 전하 축적층(부유 게이트 전극), 및 전하 축적층 상에 게이트 간 절연막을 개재하여 형성된 제어 게이트 전극을 포함하고 있다. 메모리 셀 트랜지스터(MT)는, 부유 게이트 전극에 축적되는 전자의 수에 따라서 임계치 전압이 변하고, 이 임계치 전압의 차이에 따라서 데이터를 기억한다. 메모리 셀 트랜지스터(MT)는, 1비트를 기억하도록 구성되어 있어도 좋고, 다중값(2비트 이상의 데이터)을 기억하도록 구성되어 있어도 좋다.
또한, 메모리 셀 트랜지스터(MT)는, 부유 게이트 전극을 갖는 구조에 한정되지 않고, MONOS(Metal-Oxide-Nitride-Oxide-Silicon)형 등, 전하 축적층으로서의 질화막 계면에 전자를 트랩시킴으로써 임계값을 조정할 수 있는 구조여도 좋다. MONOS 구조의 메모리 셀 트랜지스터(MT)에 대해서도 마찬가지로, 1비트를 기억하도록 구성되어 있어도 좋고, 다중값(2비트 이상의 데이터)을 기억하도록 구성되어 있어도 좋다.
각 NAND 스트링에 있어서, (q+1)개의 메모리 셀 트랜지스터(MT)는, 선택 트랜지스터(ST1)의 소스와 선택 트랜지스터(ST2)의 드레인 사이에, 각각의 전류 경로가 직렬 접속되도록 배치되어 있다. 즉, 복수의 메모리 셀 트랜지스터(MT)는, 인접하는 것들끼리 확산 영역(소스 영역 또는 드레인 영역)을 공유하는 형태로 Y방향으로 직렬 접속된다.
그리고, 최상위 드레인측에 위치하는 메모리 셀 트랜지스터(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)와의 사이에서 데이터를 송수신한다. 데이터 액세스용 버스(101)에는, 데이터 작업 영역 및 펌웨어 전개 영역으로서 사용되는 SRAM(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 컨트롤러(119)를 구비하고 있다. 제2 ECC 회로(118)는 제2 정정 부호를 인코딩하고, 또한, 제1 에러 정정 부호를 인코딩 및 디코딩한다. 제1 ECC 회로(112)는 제2 에러 정정 부호를 디코딩한다. 제1 에러 정정 부호, 제2 에러 정정 부호는, 예컨대 허밍 부호, BCH(Bose Chaudhuri Hocqenghem) 부호, RS(Reed Solomon) 부호, 또는 LDPC(Low Density Parity Check) 부호 등이며, 제2 에러 정정 부호의 정정 능력은 제1 에러 정정 부호의 정정 능력보다 높게 한다. 이러한 에러 정정에 관한 기술에 대해서는, 예컨대 동 출원인에 의한 국제 특허 출원 PCT/JP2008/063344, 또는 PCT/JP2008/063345에 개시되어 있으며, 이들의 모든 내용은 본 출원에 있어서 원용된다.
도 1에 도시한 바와 같이, NAND 메모리(10)에서는, 4개의 병렬 동작 요소(10a~10d)가 각 복수 비트의 4채널(4 ch)을 통해, 드라이브 제어 회로(4) 내부의 NAND 컨트롤러(113)에 병렬 접속되어 있어, 4개의 병렬 동작 요소(10a~10d)를 병렬 동작시키는 것이 가능하다. 또한, 각 채널의 NAND 메모리(10)는, 뱅크 인터리브가 가능한 4개의 뱅크로 분할되어 있고, 각 메모리 칩의 플레인 0 및 플레인 1에 대해서도, 동시에 액세스하는 것이 가능하다. 따라서, 1채널에 대해, 최대 8물리 블록(4 뱅크×2 플레인), 거의 동시에 기록 등의 처리를 실행할 수 있다.
도 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)에 대해 요구하는 기능의 제공[호스트로부터의 라이트(Write) 요구, 캐시 플러시(Cache Flush) 요구, 리드(Read) 요구 등의 각종 커맨드에 대한 응답]과, 호스트(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)로부터의 데이터를 「큰 단위」인 트랙 단위로 관리한다. 이와 같이 NAND 메모리(10) 내의 블록을 각 관리 영역에 할당하여 관리하는 기술에 대해서는, 예컨대, 동 출원인에 의한 국제 특허 출원 PCT/JP08/073950, PCT/JP08/067600에 개시되어 있으며, 이들의 모든 내용은 본 출원에 있어서 원용된다.
다음으로, 도 5의 각 구성 요소의 구체적인 기능 구성에 대해 상세히 설명한다. 호스트(1)는 SSD(100)에 대해, 리드 또는 라이트할 때에는, ATA 인터페이스를 통해 논리 어드레스로서의 LBA(Logical Block Addressing)를 입력한다. LBA는 도 6에 도시하는 바와 같이, 섹터(사이즈: 512 B)에 대해 0으로부터의 일련 번호를 붙인 논리 어드레스이다. 본 실시형태에서는, 도 5의 각 구성 요소인 WC(21), RC(22), FS(12), IS(13), MS(11)의 관리 단위로서, LBA의 하위 (s+1)번째 비트부터 상위의 비트열로 구성되는 클러스터 어드레스와, LBA의 하위 (s+t+1)번째 비트부터 상위의 비트열로 구성되는 트랙 어드레스를 정의한다. 이 실시형태에서는, 트랙과 논리 블록의 사이즈는 동일하게 한다. 논리 블록이란, NAND 메모리(10)의 칩 상의 물리 블록을 복수 조합하여 구성되는 가상적인 블록이며, 이 실시형태에서는, 논리 블록은 하나의 물리 블록을 병렬 채널수만큼(이 경우, 도 1에 도시하는 바와 같이 4 ch) 통합한 단위를 말한다. 논리 페이지도 마찬가지이며, 물리 페이지를 4 ch분 통합한 단위를 말한다. 또한, 논리 블록은, 뱅크 인터리브를 유효 이용하기 위해서, 동일한 뱅크에 속하는 물리 블록에서 선택된다.
?리드 캐시(RC)(22)
RC(22)는 호스트(1)로부터의 리드 요구에 대해, NAND 메모리(10)[FS(12), IS(13), MS(11)]로부터의 리드 데이터를 일시적으로 보존하기 위한 영역이다. 호스트(1)로의 데이터 전송은 기본적으로 RC(22)로부터 이루어진다. 또, WC(21)로부터 NAND 메모리(10)에 데이터를 기록할 때에는, 동일 논리 어드레스의 RC(22) 상의 데이터를 무효로 한다.
?라이트 캐시(WC)(21)
WC(21)는 호스트(1)로부터의 Write 요구에 대해, 호스트(1)로부터의 Write 데이터를 일시적으로 보존하기 위한 영역이다. WC(21) 상의 데이터는 클러스터 단위로 관리되고, 기록과 유효 데이터는 섹터 단위로 관리된다. WC(21)의 리소스가 부족한 경우, WC(21)의 기억 데이터를 NAND(10)로 퇴출시킨다. 호스트(1)로부터 RC(22) 상의 데이터와 동일한 논리 어드레스에 대한 기록이 수행되는 경우, 그 최신 데이터는 WC(21) 상에 보존된다. 그 때문에, 동일한 논리 어드레스에 대응하는 데이터가 WC(21), RC(22), NAND 메모리(10) 상에 있는 경우에는, 데이터의 새로움은 WC(21), RC(22), NAND 메모리(10)의 순이 되기 때문에, 호스트(1)에 반환하는 데이터도 WC(21) 상의 데이터를 우선한다.
?메인 스토리지 영역(MS)(11)
MS(11)는 트랙 단위로 데이터가 관리되며, 대부분의 사용자 데이터가 저장된다. WC(21) 상에서 유효 클러스터가 많은 트랙(고밀도 트랙)은, WC(12)로부터 직접 MS(11)에 기록된다. 그 외에, MS(11)에는, FS(12), IS(13)에서 관리할 수 없게 된 데이터가 입력된다. MS(11)에 입력된 트랙과 동일 LBA의 트랙에 대해서는, 논리 블록 내에서 무효화하고, 이 논리 블록을 해방한다. MS(11)에 입력된 트랙과 동일 LBA의 트랙에 속하는 클러스터에 대해서는, 논리 블록 내에서 무효화하고, 논리 블록 내의 모든 클러스터가 무효로 된 논리 블록은 해방한다. MS(11)는 MLC 모드의 복수의 논리 블록으로 구성된다. 이 실시형태에서는, 트랙과 논리 블록의 사이즈는 동일하게 하고 있기 때문에, FS(12)나 IS(13)에서 수행되는 추기 처리나, IS(13)에서 수행되는 컴팩션(compaction)(유효 클러스터만을 수집하여 새로운 논리 블록을 만들고, 무효 클러스터 부분을 해방하는 처리)은 MS(11)에서는 불필요해진다. 만일 트랙 사이즈가 논리 블록 사이즈보다 작은 경우에는, FS(12)나 IS(13)에서 수행되는 추기 처리나, IS(13)에서 수행되는 컴팩션을 MS(11)에 적용해도 좋다.
?전단 스토리지 영역(FS)(12)
FS(12)는 클러스터 단위로 데이터가 관리되는 FIFO 구조의 버퍼이며, 입력은 복수의 클러스터를 통합한 논리 페이지 단위로 실행된다. FS(12)에는, WC(21) 상에서 유효 클러스터수가 적은 트랙(저밀도 트랙)이 최초로 기록된다. FS(12)는 데이터의 기록 순서로 논리 블록이 배열된 FIFO 구조로 되어 있다. FS(12)에 존재하는 클러스터와 동일 LBA의 클러스터가 FS(12)에 입력된 경우, FS(12) 내의 클러스터를 무효화하는 것만으로 좋으며, 재기록 동작을 수반하지 않는다. FS(12)에 입력된 클러스터와 동일 LBA의 클러스터에 대해서는, 논리 블록 내에서 무효화하고, 논리 블록 내의 모든 클러스터가 무효로 된 논리 블록은 해방한다. FS(12)의 FIFO 구조의 최후까지 도달한 논리 블록에 저장된 클러스터는, 호스트(1)로부터 재기록될 가능성이 낮은 클러스터라고 간주하여, 논리 블록과 함께 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) 내의 클러스터를 무효화하는 것만으로 좋으며, 재기록 동작을 수반하지 않는다. IS(13)에서는, FS(12)와 마찬가지로, 데이터가 기록된 순서[FS(12)로부터 이동된 순서]가 오래된 논리 블록부터 배열된 리스트 구조를 취하지만, 컴팩션을 수행하는 점이 FS(12)와 상이하다. IS(13)의 용량이 관리 테이블의 사정으로 포화된 경우에는, 컴팩 션[IS(13)로부터 유효 클러스터를 수집하여 IS(13)에 다시 기록하는 것]이나 조각 모음(defrag)[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은 데이터 관리부(120)가 도 5에 도시한 각 구성 요소를 제어 관리하기 위한 관리 테이블을 도시하는 도면이다. DRAM(20)을 관리하기 위한 테이블로서는, RC 관리 테이블(23), WC 트랙 테이블(24), WC 트랙 정보 테이블(25), WC 고밀도 트랙 정보 테이블(26), WC 저밀도 트랙 정보 테이블(27) 등이 있다. NAND 메모리(10)를 관리하기 위한 테이블로서는, 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 논리-물리 변환 테이블(40) 등이 있다. NAND 메모리(10)를 관리하기 위한 테이블은, 포워드 룩업 어드레스 변환에서 참조하는 테이블, 리버스 룩업 어드레스 변환에서 참조하는 테이블로 나뉜다. 포워드 룩업 어드레스 변환이란, 데이터의 LBA로부터 실제로 데이터가 기억되어 있는 논리 블록 어드레스+클러스터 위치를 구하는 것이다. 리버스 룩업 어드레스 변환이란, 논리 블록 어드레스+클러스터 위치로부터 데이터의 LBA를 구하는 것이다.
?RC 관리 테이블(23)
RC 관리 테이블(23)은 NAND 메모리(10)로부터 RC(22)에 전송된 데이터를 관리하기 위한 것이다.
?WC 트랙 테이블(24)
WC(21) 상에 기억된 데이터에 관한 WC 트랙 정보를 LBA로부터 룩업하기 위한 해시 테이블이며, LBA의 트랙 어드레스의 LSB 수비트를 인덱스로 하고, 인덱스마다 복수의 엔트리(태그)를 갖는다. 각 태그에는, LBA 트랙 어드레스와 이 트랙 어드레스에 대응하는 WC 트랙 정보에의 포인터가 기억되어 있다.
?WC 트랙 정보 테이블(25)
WC 트랙 정보 테이블(25)에는, 액세스가 있었던 WC 트랙 정보의 신구(新舊) 순서를 LRU(Least Recently Used)에 의해 양방향 리스트로 관리하기 위한 WC 트랙 LRU 정보 테이블(25a)과, 비어 있는 WC 트랙 정보의 번호를 관리하는 WC 트랙 공백 정보 테이블(25b)이 있다. WC(21)로부터 NAND로 데이터를 퇴출시킬 때에, WC 트랙 LRU 정보 테이블(25a)을 이용하여 가장 이전에 액세스된 트랙을 추출한다.
WC 트랙 정보는 WC(21) 내에 존재하는 복수의 트랙 중 하나에 대응한다.
WC 트랙 정보에는,
(1) WC(21) 내에 존재하는 트랙 어드레스, 트랙 내의 WC(21) 상의 유효 클러스터의 개수, 각 클러스터가 유효한지의 여부의 정보, 각 클러스터가 WC(21)의 어디에 존재하는지를 나타내는 WC 내 클러스터 위치 정보,
(2) 1클러스터에 포함되는 복수의 섹터 중 어느 섹터에 유효 데이터를 유지하고 있는지를 나타내는 정보(섹터 비트맵),
(3) 트랙의 상태 정보(유효, 무효, ATA로부터의 데이터 전송중, NAND에 기록중 등)
등이 포함되어 있다. 또, 상기 WC 트랙 정보에서는, 유효 클러스터가 존재하는 기억 위치에서 자(自)트랙 내에 존재하는 클러스터 어드레스의 LSB (t) 비트를 관리하도록 하였으나, 클러스터 어드레스의 관리 방법은 임의이며, 예컨대 자트랙 내에 존재하는 클러스터 어드레스의 LSB (t) 비트 자체를 관리하도록 해도 좋다(도 6 참조).
?WC 고밀도 트랙 정보 테이블(26)
MS(11)에 기록하게 되는 고밀도(트랙 내에서 유효 클러스터수가 소정 퍼센트 이상)의 트랙 정보를 관리하기 위한 것으로, 고밀도 트랙에 관한 WC 트랙 정보와 그 개수를 관리하고 있다.
?WC 저밀도 트랙 정보 테이블(27)
FS(12)에 기록하게 되는 저밀도(트랙 내에서 유효 클러스터수가 소정 퍼센트 미만)의 트랙 정보를 관리하기 위한 것으로, 저밀도 트랙의 클러스터수의 합계를 관리하고 있다.
?트랙 테이블(30)(포워드 룩업)
LBA의 트랙 어드레스로부터 트랙 정보를 취득하기 위한 테이블이다. 트랙 정보로서는,
(1) 논리 블록 어드레스(트랙의 데이터가 기억되어 있는 논리 블록을 나타내는 정보임)
(2) 클러스터 디렉토리 번호[트랙 내의 데이터의 적어도 일부가 FS(12) 또는 IS(13)에 기억되어 있는 경우에 유효해지는 정보이며, 트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우에, 트랙마다 존재하는 클러스터 디렉토리 테이블의 테이블 번호를 나타내는 정보임]
(3) FS/IS 클러스터수[이 트랙 내의 클러스터가 몇 개 FS(12) 또는 IS(13)에 기억되어 있는지를 나타내는 정보이며, 조각 모음할지의 여부를 결정하기 위해서 사용함)
등이 포함되어 있다.
?클러스터 디렉토리 테이블(31)(포워드 룩업)
트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우에, 그 논리 블록까지 찾아가기 위한 중간적인 테이블이며, 트랙별로 구비되어 있다. 각 클러스터 디렉토리 테이블(31)에 등록되는 클러스터 디렉토리 정보는, 클러스터 테이블(32)의 테이블 번호를 나타내는 정보(클러스터 테이블 번호 정보)의 배열로 이루어진다. LBA의 클러스터 어드레스의 LSB (t) 비트 중의 상위 수비트이며, 하나의 클러스터 디렉토리 테이블(31) 중에 배열되어 있는 복수의 클러스터 테이블 번호 정보로부터 하나의 정보를 선택한다.
이 클러스터 디렉토리 테이블(31)로서는, 기록 시각을 기준으로 하여, 클러스터 디렉토리 정보(클러스터 테이블 번호 정보의 배열)의 신구 순서를, 대응하는 트랙 어드레스와 함께, LRU(Least Recently Used)에 의해 양방향 리스트로 관리하기 위한 클러스터 디렉토리 LRU 테이블(31a)과, 비어 있는 클러스터 디렉토리를, 대응하는 트랙 어드레스와 함께, 양방향 리스트로 관리하는 클러스터 디렉토리 공백 정보 테이블(31b)이 있다.
?클러스터 테이블(32)(포워드 룩업)
클러스터 디렉토리 테이블(31)과 관련하여, 트랙 내의 데이터가 FS(12) 또는 IS(13)에 기억되어 있는 경우에, 어떤 논리 블록의 어느 클러스터 위치에 데이터가 기억되어 있는지를 관리하는 테이블이다. 트랙 테이블(30)로부터 클러스터 디렉토리 테이블(31)을 경유하여 간접 참조된다. 실체는, 복수 클러스터분의 논리 블록 어드레스+클러스터 위치의 배열이다. LBA의 클러스터 어드레스의 LSB (t) 비트 중의 하위 수비트이며, 하나의 클러스터 테이블(32) 중에 배열되어 있는 복수의 (논리 블록 어드레스+클러스터 위치)로부터 하나의 정보를 선택한다. 후술하는 클러스터 블록 정보의 번호와 그 중의 클러스터 위치의 정보도 배열로서 갖는다.
?클러스터 블록 정보 테이블(33)(리버스 룩업)
클러스터 블록이란, 논리 블록 중 클러스터 단위로 데이터를 기억하는 것을 말한다. 클러스터 블록 정보는 FS(12), IS(13)의 논리 블록을 관리하기 위한 정보이며, 논리 블록 내에 어떠한 클러스터가 들어 있는지를 나타내는 정보이다. 클러스터 블록 정보끼리를 양방향 리스트로 하여 FS(12), IS(13) 내의 FIFO의 순서로 연결된다.
클러스터 블록 정보는,
(1) 논리 블록 어드레스
(2) 유효 클러스터수
(3) 상기 논리 블록에 포함되는 클러스터의 LBA
를 갖는다.
클러스터 블록 정보 테이블(33)은 사용되고 있지 않은 클러스터 블록 정보를 관리하는 공백 정보 관리용 클러스터 블록 정보 테이블(33a), FS(12)에 포함되는 클러스터 블록 정보를 관리하는 FS용 클러스터 블록 정보 테이블(33b), IS(13)에 포함되는 클러스터 블록 정보를 관리하는 IS용 클러스터 블록 정보 테이블(33c)을 가지며, 각 테이블(33a~33c)은 양방향 리스트로서 관리되어 있다. 리버스 룩업 어드레스 변환의 주된 용도는 IS(13)의 컴팩션이며, 컴팩션 대상의 논리 블록에 어떠한 클러스터가 기억되어 있는지를 조사하고, 데이터를 다른 장소에 다시 기록하기 위해서 사용한다. 따라서, 본 실시형태에서는, 리버스 룩업 어드레스 변환은 클러스터 단위로 데이터를 기억하고 있는 FS(12), IS(13)만을 대상으로 하고 있다.
?논리-물리 변환 테이블(40)(포워드 룩업)
논리-물리 변환 테이블(40)은 논리 블록 어드레스와 물리 블록 어드레스의 변환, 수명에 관한 정보를 관리하기 위한 테이블이다. 논리 블록 어드레스마다, 상기 논리 블록에 소속되는 복수의 물리 블록 어드레스를 나타내는 정보, 해당 논리 블록 어드레스의 소거 횟수를 나타내는 소거 횟수 정보, 클러스터 블록 정보의 번호 등의 정보를 갖고 있다. 어떤 LBA의 데이터를 다른 장소에 다시 기록하기 위해서는, 원래의 클러스터 블록 내의 LBA를 무효로 해야 하여, LBA로부터 클러스터 블록을 추적할 필요가 있다. 그 때문에, 논리-물리 변환 테이블(40)에서 관리하는 논리 블록의 관리 정보에 클러스터 블록 정보의 식별자를 기억하고 있다.
(스냅샷, 로그)
상기 각 관리 테이블에서 관리되는 관리 정보에 의해, 호스트(1)에서 사용되는 LBA와, SSD(100)에서 사용되는 논리 NAND 어드레스(논리 블록 어드레스+오프셋)와, NAND 메모리(10)에서 사용되는 물리 NAND 어드레스(물리 블록 어드레스+오프셋)와의 사이를 대응시킬 수 있으며, 호스트(1)와 NAND 메모리(10) 사이에서 데이터를 교환하는 것이 가능해진다.
상기 각 관리 테이블 중 NAND 관리용 테이블[도 7의 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 논리-물리 변환 테이블(40) 등]은, 비휘발성 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 로그의 내용을 필요에 따라 마스터 테이블에 반영시키고, 또한 DRAM 로그의 내용을 NAND 메모리(10)에 보존하여 비휘발화한다. 스냅샷을 NAND 메모리(10)에 보존하는 것은, 정상적인 전원 차단 시퀀스 시에 DRAM(20) 상에 로그의 보존 영역이 부족한 경우 등으로 한다. 로그 또는 스냅샷이 NAND 메모리(10)에 다 기록된 시점에서, 관리 테이블의 비휘발화가 완료된다. 이와 같이 관리 정보를 비휘발화하는 기술에 대해서는, 예컨대, 동 출원인에 의한 국제 특허 출원 PCT/JP2009/052597에 개시되어 있으며, 이들의 모든 내용은 본 출원에 원용된다.
?리드(Read) 처리
다음으로, 판독 처리의 개요에 대해 설명한다. ATA 커맨드 처리부(121)로부터, 리드 커맨드 및 판독 어드레스로서의 LBA가 입력되면, 데이터 관리부(120)는 RC 관리 테이블(23)과 WC 트랙 테이블(24)을 검색함으로써, WC(21) 또는 RC(22)에 LBA에 대응하는 데이터가 존재하고 있는지의 여부를 탐색하여, 캐시 히트인 경우에, 해당 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) 상의 데이터를 취득한다.
?라이트(Write) 처리
[WC(21)에서의 처리]
다음으로, 기록 처리의 개요에 대해 설명한다. 기록 처리에서는, ATA 커맨드 처리부(121)로부터 Write 커맨드 및 기록 어드레스로서의 LBA가 입력되면, LBA에 의해 지정된 데이터를 WC(21)에 기록한다. WC(21)에 빈 영역이 없는 경우에는, DRAM 관리용 각종 관리 테이블을 참조하여 WC(21)로부터 데이터를 퇴출시키고, NAND 메모리(10)에 기록하여, 빈 영역을 작성한다. 트랙 내의 유효 클러스터수가 소정 퍼센트 미만인 트랙은 저밀도 트랙으로 하고, 클러스터 사이즈 데이터로서 FS(12)를 퇴출처로 한다. FS(12)가 퇴출처인 경우에는, 트랙 내의 유효 클러스터를 논리 페이지 단위로 기록한다.
트랙 내의 유효 클러스터수가 소정 퍼센트 이상인 트랙은 고밀도 트랙으로 하고, 트랙 사이즈의 데이터로서 MS(11)를 퇴출처로 한다. MS(11)가 퇴출처인 경우에는, 트랙 사이즈의 데이터인 채로 논리 블록 전체에 기록한다. 기록 대상의 논리 블록수가 복수인 경우에는, 배속 모드나 뱅크 인터리브를 이용하여 전송 효율을 올린다. WC(21)에 기록된 데이터에 따라서, 또한 NAND 메모리(10)에의 데이터 퇴출에 따라서, DRAM 관리용 각종 관리 테이블을 갱신한다.
[MS(11)에의 기록]
MS(11)에의 기록은 도 9에 도시하는 바와 같이, 다음의 절차로 실행된다.
1. DRAM(20) 상에 트랙의 데이터 이미지를 작성(구멍 메움 처리)한다. 즉, WC(21)에 존재하지 않는 클러스터, WC(21)에 전(全) 섹터를 유지하고 있지 않은 클러스터에 관해서는, NAND 메모리(10)로부터 판독하여, WC(21)의 데이터와 통합한다.
2. MS(11)용으로, 논리 블록(트랙 블록)을 CFB로부터 확보한다. 트랙 블록이란, 논리 블록 중 트랙 단위로 데이터를 기억하는 것을 말한다.
3. 작성한 트랙의 데이터 이미지를 확보한 논리 블록에 기록한다.
4. 트랙의 LBA로부터 트랙 정보를 조사하고, 트랙 정보와 기록한 논리 블록에 대응하는 논리 블록 어드레스를 관련시켜, NAND 관리용의 필요한 테이블에 등록한다.
5. WC(21), NAND 메모리(10)의 오래된 데이터를 무효화한다.
[FS(12)에의 기록]
FS(12)에의 기록은, DRAM(20) 상에 클러스터의 데이터 이미지를 작성(구멍 메움 처리)하고, 새롭게 확보하는 논리 블록(클러스터 블록)에 대해 논리 페이지 단위의 기록을 의사 SLC 모드를 사용하여 수행한다. 확보하는 논리 블록은, 기록하는 데이터 이미지 이상의 기록 가능한 논리 페이지를 갖는 FFB(플래그먼트 자유 블록)을 우선하고, 없는 경우에는 CFB(컴플리트 자유 블록)을 사용한다. FS(12)에의 기록은 도 10에 도시하는 바와 같이, 이하의 절차로 실행된다.
WC(21)로부터 FS(12)에 저밀도 트랙의 데이터를 기록하기 위한 논리 블록(클러스터 블록)을 FS 입력 버퍼(이하, FSIB)라고 부른다.
1. WC(21)로부터 입력된 저밀도 트랙 내의 총 데이터량이 작은 경우, 즉 유효 클러스터수가 소정의 임계값보다 적은 경우에는, 그것을 기록할 수 있는 FFB를 확보하여 FSIB로 한다.
2. WC(21)로부터 받은 저밀도 트랙 내의 총 데이터량이 큰 경우, 즉 유효 클러스터수가 소정의 임계값 이상인 경우에는, CFB를 확보하여 FSIB로 한다. 이때, 병렬로 기록할 수 있는 복수의 논리 블록을 확보하여 FSIB로 한다.
3. DRAM(20) 상에서, 기록하는 클러스터의 데이터 이미지를 작성한다. 즉, WC(21)에 전 섹터를 유지하고 있지 않은 클러스터에 관해서는, WC(21) 상에 존재하지 않는 섹터의 데이터를 NAND 메모리(10)로부터 판독하여, WC(21) 상의 섹터의 데이터와 통합한다.
4. WC(21) 상의 클러스터와, 작업 영역 상에 만든 클러스터 이미지를 FSIB에 기록한다.
5. FSIB를 FS(12)의 리스트에 추가한다.
6. 기록한 트랙을 클러스터 디렉토리 LRU 테이블(31a)의 말미에 다시 삽입한다.
[FS(12)로부터 IS(13)로의 이동]
FS(12) 관리하의 논리 블록수가 소정의 최대 논리 블록수를 초과하고 있는 경우에는, 도 11에 도시하는 바와 같이, FS(12)로부터 오버플로잉된 논리 블록을 그대로 IS(13)로 이동시킨다. 한번의 처리 단위로 이동하는 논리 블록수는 오버플로잉된 논리 블록 내의 유효 클러스터수에 따라 이하의 규칙으로 결정된다.
?오버플로잉된 논리 블록 내의 클러스터수가 MLC 모드의 1논리 블록분의 경계에 가까워지도록, FS(12)의 가장 오래된 논리 블록부터 이동하는 논리 블록을 추가한다. MLC 모드의 1논리 블록분의 경계에 가깝게 하는 것은, 컴팩션 후의 논리 블록에, 가능한 한 많은 유효 클러스터를 수용하는 것을 목적으로 한다.
?클러스터수가 IS(13)에서 동시에 컴팩션할 수 있는 클러스터수를 초과하는 경우에는, IS(13)에서 동시에 컴팩션할 수 있는 클러스터수 이하가 되는 블록수로 한다.
?이동 블록수에는 상한값을 설정한다.
[IS(13)에서의 컴팩션과 조각 모음]
IS(13)에서는, IS 관리하의 논리 블록수가 최대 논리 블록수를 초과한 경우에, MS(11)로의 데이터 이동(조각 모음 처리)과, 컴팩션 처리에 의해, 관리하의 논리 블록수를 최대수 이하로 억제한다. 데이터의 소거 단위(논리 블록)와, 데이터의 관리 단위(클러스터)가 상이한 경우, NAND 메모리(10)의 재기록이 진행되면, 무효 데이터에 의해, 논리 블록은 구멍난 상태가 된다. 이러한 구멍난 상태의 논리 블록이 증가하면, 실질적으로 사용 가능한 논리 블록이 적어져, NAND 메모리(10)의 기억 영역을 유효 이용할 수 없기 때문에, 유효 클러스터를 수집하여, 다른 논리 블록에 다시 기록하는 것을 컴팩션이라고 한다. 조각 모음 처리란, FS(12), IS(13)의 클러스터를 트랙으로 통합하여, MS(11)로 퇴출시키는 처리를 말한다.
이어서, 본 실시형태의 주요부에 대해, 즉, NAND 메모리에서의 관리 단위의 크기를 갖는 특정 패턴의 데이터가 호스트로부터 기록되고, 또한 판독되는 경우의 처리에 대해 설명한다.
도 12는 본 실시형태에 따른 메모리 시스템의 주요부의 기능 구성을 도시하는 블록도이다. 메모리 시스템(SSD)(100)은, 호스트(1)와의 인터페이스가 되는 ATA 인터페이스(호스트 I/F)(2)와, NAND 메모리(10)와, DRAM(20)과, 컨트롤러(130)를 구비한다.
NAND 메모리(10)에는, 사용자 데이터를 기억하는 MS(11), FS(12), IS(13) 등의 사용자 데이터 기억부(201)와, NAND 메모리(10) 상의 소정의 기억 영역에 스냅샷으로서 기억되며, 도 7에 도시한 관리 테이블 중에서 DRAM 관리용 테이블을 제외한 NAND 관리용의 각종 관리 테이블[도 7의 트랙 테이블(30), 클러스터 디렉토리 테이블(31), 클러스터 테이블(32), 클러스터 블록 정보 테이블(33), 논리-물리 변환 테이블(40) 등과, DRAM(20) 상의 마스터 테이블(204)의 갱신 전후의 차분 정보인 로그]이 기억되어 있다.
DRAM(20)에는, WC(21)와, RC(22)와, DRAM(20) 상에 전개된 NAND 관리 테이블(202)인 마스터 테이블(204)과, WC(21) 상에 기록된 특정 패턴의 데이터를 그 기록 위치와 함께 기억하는 데이터 패턴 기억부(206)가 기억된다. 마스터 테이블(204)은, 전술한 바와 같이, 포워드 룩업 어드레스 변환을 수행하기 위한 포워드 룩업 테이블(204a)과, 리버스 룩업 어드레스 변환을 수행하기 위한 리버스 룩업 테이블(204b)을 갖는다.
컨트롤러(130)는 판독 기록 제어부(210)와, 관리 정보 갱신부(211)와, 데이터 감시부(212)를 갖는다. 판독 기록 제어부(210)는, 마스터 테이블(204) 및 데이터 패턴 기억부(206)에 기초하여, 호스트(1)와 DRAM(20) 사이의 데이터의 판독/기록과, DRAM(20)과 NAND 메모리(10) 사이의 데이터의 판독/기록을 수행한다.
관리 정보 갱신부(211)는, 데이터의 기록 처리 등에 의해, 도 7에 나타내는 DRAM 관리용 테이블과 NAND 관리용 테이블에 변경이 발생했을 때에, DRAM 관리용 테이블과 NAND 관리용 테이블에 그 변경을 반영하고, 그 NAND 관리용 테이블을 NAND 메모리(10)의 NAND 관리 테이블(202)에 보존하는 처리를 수행한다. 또한, 데이터 감시부(212)에 의해 NAND 메모리(10)의 관리 사이즈의 크기의 특정 패턴의 데이터가 WC(21)에 기록된 것이 검출되면, 그 내용을 데이터 패턴 기억부(206)에 기억한다.
데이터 감시부(212)는, 호스트(1)로부터 WC(21)에 기록된 데이터가 특정 패턴인지의 여부를 감시하고, 특정 패턴이 검출된 경우에는 관리 정보 갱신부(211)에 그 결과를 출력한다. 이 데이터 감시부(212)는 하드웨어로 구성되는 것이어도 좋 고, 소프트웨어로 실현되는 것이어도 좋다.
또, 이하에서는, 특정 패턴인지의 여부를 판정하는 데이터의 크기로서, NAND 메모리(10)에서의 관리 단위의 크기인 트랙을 단위로 하고, 특정 패턴으로서, 트랙 내의 모든 비트가 「0」(이하, all 0이라고 함)인 경우를 예로 들기로 한다.
데이터 패턴 기억부(206)는, 전술한 바와 같이 어떤 어드레스로부터 트랙의 크기의 범위에, 모든 데이터의 비트가 「0」으로 되어 있는 것을 나타내는 정보가 기억되어 있다. 그런데, 도 7에서 도시한 바와 같이, NAND 메모리(10) 내의 데이터의 관리는 NAND 관리용 테이블에서 이루어지고, DRAM(20) 내의 데이터의 관리는 DRAM 관리용 테이블에서 이루어진다. 그리고, 통상, DRAM(20)에는, NAND 관리용 테이블과 DRAM 관리용 테이블이 전개되어 있는 상태에 있으며, 호스트(1)로부터 기록 지시가 있었던 데이터를 WC(21) 상에 기록하면, DRAM 관리용 테이블에는 그 데이터의 DRAM(20) 상에서의 저장 위치가 기억된다. 그리고, 상술한 WC(21)로부터 NAND 메모리(10)로의 퇴출 절차에 따라 NAND 메모리(10)에 기록된 후에, NAND 관리용 테이블에는, 기록된 데이터의 저장 위치가 기억된다.
이 예에서는, 트랙 단위로 데이터의 비트가 all 0으로 되어 있는 경우에, NAND 메모리(10)에의 기록을 수행하지 않도록 하고 있기 때문에, 트랙 단위로 데이터를 관리하는 테이블에서 WC(21)에 기록된 데이터가 all 0인지의 여부를 기억할 수 있다. 이러한 테이블로는, 도 7에 있어서의 WC 트랙 정보 테이블(25)이 대응한다. 그래서, 이 WC 트랙 정보 테이블(25)에 트랙 내의 데이터가 all 0인지의 여부를 나타내는 플래그(특정 패턴 식별 정보)를 마련함으로써, WC 트랙 정보 테이 블(25)을 데이터 패턴 기억부(206)로 할 수 있다.
도 13은 WC 트랙 정보의 구성의 일례를 나타내는 도면이다. 상술한 바와 같이, WC 트랙 정보 테이블(25)은 WC 트랙 정보 LRU 테이블(25a)과, WC 트랙 정보 공백 테이블(25b)을 갖고 있다. WC 트랙 정보 LRU 테이블(25a)은, LRU 리스트의 헤드를 선두로, WC 액세스가 있었던 WC 트랙 정보(250)를 LRU를 이용한 신구의 순서로 양방향 리스트로 관리하고 있다. WC 트랙 정보 공백 테이블(25b)도, 마찬가지로, 프리 리스트의 헤드를 선두로, 비어 있는 WC 트랙 정보(250)를 양방향 리스트로 관리하고 있다.
WC 트랙 정보 LRU 테이블(25a)과 WC 트랙 정보 공백 테이블(25b)의 WC 트랙 정보(250)는, 이전의 WC 트랙 정보와 다음의 WC 트랙 정보에의 포인터인 양방향 링크(251)와, 트랙 내의 몇 개의 클러스터가 WC(21)에 존재하고, WC(21) 상의 어디에 존재하는지를 나타내는 WC 내 클러스터 위치 정보(252)와, 트랙의 상태를 나타내는 트랙 상태 정보(253)와, 클러스터 내의 유효 섹터를 나타내는 섹터 비트맵(254)과, all 0인지의 여부를 나타내는 all 0 상태 플래그(255)를 갖고 있다. 이 all 0 상태 플래그(255)는 WC 트랙 내의 데이터가 all 0인 경우에는 유효하고, 그렇지 않은 경우에는 무효하다. 또, WC 트랙 정보(250)의 all 0 상태 플래그(255)의 초기값은 유효로 설정되어 있다.
판독 기록 제어부(210)는, 데이터 패턴 기억부(206)에 특정 데이터 패턴이라고 해서 기억된 WC(21) 상의 데이터에 대해서는, WC(21)로부터 NAND 메모리(10)로의 퇴출 처리 시에, NAND 메모리(10)에의 기록(논리 블록에의 대응)을 수행하지 않 도록 하는 기능을 더 갖고 있다. 또한, 판독 기록 제어부(210)는, all 0인 트랙의 어드레스가 판독되면, LBA로부터 트랙 테이블(30)이 참조되지만, 이때, 트랙 테이블(30) 내의 해당하는 트랙 어드레스에는, 후술하는 바와 같이 무효 어드레스가 대응하기 때문에, 이 무효 어드레스의 판독에 의해, all 0을 반환하게 된다.
관리 정보 갱신부(211)는, WC(21), RC(22), NAND 메모리(10) 상에 기억되는 데이터의 마스터 테이블(204)에의 반영 처리를 수행하고, NAND 관리 테이블(202)에의 기록 처리도 수행하는 것으로 한다. 그리고, 관리 정보 갱신부(211)는, 데이터 감시부(212)에서 특정 패턴의 데이터라고 판정된 데이터가 WC(21)에 기록되면, 데이터 패턴 기억부(206)에 특정 데이터 패턴이 기록된 것을 기억한다. 여기서는, 그 기록된 데이터(트랙)를 관리하는 WC 트랙 정보 테이블(25)의 WC 트랙 정보의 all 0 상태 플래그(255)를 유효하게 하는 처리를 수행한다. 또, 하나라도 트랙 내에 0이 아닌 데이터가 포함되는 경우에는, all 0 상태 플래그(255)는 무효로 된다.
또한, 관리 정보 갱신부(211)는, all 0 상태 플래그(255)가 유효로 설정된 데이터의 NAND 메모리(10)로의 퇴출 처리를 수행하는 경우에는, 그 데이터의 LBA로부터 구해지는 트랙 어드레스에 대응하는 트랙 정보를 트랙 테이블(30)로부터 취득하고, 이 트랙 정보에서 상기 트랙 어드레스에 대응하는 논리 블록 어드레스의 값을 무효 어드레스로 설정하는 처리를 수행한다. 이때, 이전에 할당되어 있던 논리 블록을 해방하고, 또한, 동일 트랙 내에서 FS(12)/IS(13)에 저장되어 있던 데이터(클러스터)도 해방하는 기능도 갖는다.
또, 무효 어드레스로서, 메모리 시스템 내에서 사용되는 하드웨어가 존재하 지 않는 특수한 어드레스 공간을 설정해도 좋다. 또한, 무효 어드레스가 아니라, DRAM(20)에 미리 준비된 특정 패턴이 기록된 영역의 어드레스를 설정해도 좋다.
여기서, 기록 요구가 있었던 데이터가 트랙 내에서 all 0인 경우의 기록 처리에 대해 상세하게 설명한다.
[호스트(1)로부터 WC(21)에의 all 0 데이터의 기록]
도 14는 호스트로부터 WC에의 all 0 데이터의 기록 처리 절차의 일례를 나타내는 흐름도이다.
1. 호스트(1)로부터 SSD(100)에의 데이터의 기록이 지시되면[ATA 커맨드 처리부(121)로부터, 라이트 커맨드 및 기록 어드레스로서의 LBA가 입력되면](단계 S11), 판독 기록 제어부(210)는, LBA에 의해 지정된 WC(21) 상의 영역에 데이터를 기록한다(단계 S12). WC(21)에 전송된 데이터가 all 0인 경우에는, ATA 커맨드 처리부(121)로부터 데이터가 all 0이라는 취지가 컨트롤러(130)에 전달된다[컨트롤러(130) 내의 처리].
2. 이때, 데이터 감시부(212)는, ATA 인터페이스(호스트 I/F)(2)로부터 DRAM(20)에 전송되는 데이터를 감시하여, 1트랙분의 데이터가 all 0인지의 여부를 판정한다(단계 S13).
3. 관리 정보 갱신부(211)는, WC(21) 상에 데이터가 기록된 것에 따른 DRAM 관리용 테이블[WC 트랙 정보 테이블(25)]의 갱신 처리를 수행한다. 이때, 상기 2에서 1트랙분의 데이터가 all 0인 경우에는, WC 트랙 정보(250)의 all 0 상태 플래그(255)를 유효로 하고(단계 S14), 처리가 종료된다. 그 외의 경우에는, all 0 상 태 플래그(255)를 무효로 하고(단계 S15), 처리가 종료된다.
[WC(21)로부터 MS(11)에의 all 0 데이터의 기록]
도 15는 WC로부터 MS에의 all 0 데이터의 기록 처리 절차의 일례를 나타내는 흐름도이다.
1. WC(21)에 빈 영역이 없어져, WC(21)에 기록된 all 0의 데이터(트랙)가 MS(11)로의 퇴출 대상이 되면, 「그 트랙의 모든 섹터가 WC(21) 상에 정렬되어 있고, 또한, all 0이다」라고 하는 조건을 만족하는지 확인한다(단계 S31).
2. 상기 조건을 만족하는 경우(단계 S31에서 Yes인 경우)에는, 관리 정보 갱신부(211)는, NAND 관리용 테이블의 트랙 테이블(30)을 조작하여, 그 트랙의 데이터가 기억되어 있는 논리 블록 어드레스에 무효값을 설정한다(단계 S32). 또한, 이전에 상기 트랙의 어드레스에 할당되어 있던 논리 블록을 해방한다(단계 S33). 마찬가지로, 상기 트랙과 동일한 트랙 내에서, FS(12), IS(13)에 저장되어 있던 데이터도 해방한다(단계 S34). 한편, 상기 조건을 만족하지 않는 경우에는, 상기한 퇴출 시퀀스에 따라서, 퇴출 처리가 수행된다(단계 S36).
3. 판독 기록 제어부(210)는, WC(21)에 기억된 all 0의 데이터가 저장된 트랙의 NAND 메모리(10)에의 기록은 수행하지 않고(단계 S35), 처리가 종료된다.
다음으로, 데이터의 NAND 메모리(10)로부터의 판독 처리에 대해 상세하게 설명한다. 도 16은 리드 처리의 개요를 나타내는 도면이고, 도 17은 데이터의 NAND 메모리로부터의 판독 처리 절차의 일례를 나타내는 흐름도이다. 여기서는, 트랙 테이블(30)의 트랙 정보(302)에 무효 어드레스가 설정되어 있는 것으로 한다.
ATA 커맨드 처리부(121)로부터, 리드 커맨드 및 판독 어드레스로서의 LBA가 입력되면(단계 S51), 컨트롤러(130)는 RC 관리 테이블(23)과 WC 트랙 테이블(24)을 검색한다. 지정된 LBA가 RC(22) 또는 WC(21)에서 히트한 경우(단계 S52에서 Yes인 경우)에는, 히트한 RC(22) 또는 WC(21)로부터 데이터를 호스트(1)에 반환한다(단계 S53). 또한, 지정된 LBA가 RC(22) 또는 WC(21)에서 히트하지 않는 경우(단계 S52에서 No인 경우)에는, 컨트롤러(130)는 NAND 관리용 테이블의 트랙 테이블(30)로부터 LBA의 트랙 어드레스에 대응하는 트랙 정보를 취득한다(단계 S54). 그 후, 트랙 내의 데이터가 all 0인지의 여부로 처리가 나뉜다(단계 S55).
처음에, 트랙 내의 데이터가 all 0이 아닌 경우(단계 S55에서 No인 경우)에 대해 설명한다. 이 경우에는, 단계 S54에서 트랙 어드레스에 대응하는 트랙 정보로서, 트랙 정보(301)를 취득한 것으로 한다. 이 트랙 정보(301)에서는, 상기 트랙 어드레스에 논리 블록 X가 대응하고 있으며, 이에 따라, 논리 블록 X가 구해진다(단계 S56). 그 후, 컨트롤러(130)는, 트랙 어드레스와 LBA의 하위 비트를 이용하여, 논리 블록 X 내의 더 상세한 논리 어드레스를 얻는다(단계 S57). 그리고, MS(11) 상의 데이터를 취득하여, RC(22)를 통해 호스트(1)에 반환하고(단계 S58), 처리가 종료된다.
다음으로, 트랙 내의 데이터가 all 0인 경우(단계 S55에서 Yes인 경우)에 대해 설명한다. 이 경우에는, 단계 S54에서 트랙 어드레스에 대응하는 트랙 정보로서, 트랙 정보(302)를 취득한 것으로 한다. 이 트랙 정보(302)는, 상기 트랙 어드레스에 무효 어드레스가 대응하고 있다(단계 S59). 즉, 컨트롤러(130)는, 트랙 테 이블(30)의 트랙 정보(302)의 무효 어드레스를 판독함으로써, all 0의 데이터를 RC(22)를 통해 호스트(1)에 반환하게 된다(단계 S60). 이상에 의해, 처리가 종료된다.
또, 상술한 설명에서는, 트랙 내의 데이터의 비트가 all 0인 경우를 예로 들어 설명하였으나, 이것에 한정되지 않고, 트랙 내의 데이터의 비트가 all 1인 경우여도 좋고, 트랙 내의 데이터의 비트가 all 0 또는 all 1인 경우에, NAND 메모리(10)에 실제 기록을 수행하지 않도록 해도 좋다.
또한, 상술한 설명에서는, 트랙 내의 데이터가 all 0인 경우를 예로 들어 설명하였으나, NAND 메모리(10)의 어드레스의 관리 단위와 일치하는 크기이면 다른 단위로 동일한 처리를 수행해도 좋다. 예컨대, 상술한 예에서는, 트랙 단위와, 트랙보다 작은 클러스터 단위로 NAND 메모리(10)를 관리하고 있다. 그 때문에, 클러스터를 단위로 하고, 클러스터 내의 데이터의 비트가 all 0인 경우 및/또는 all 1인 경우에, NAND 메모리(10)에의 실제 기록을 수행하게 하지 않도록 할 수도 있다.
또한, 상술한 설명에서는, 데이터 감시부(212)를, 호스트 I/F(2)와 DRAM(20) 사이에 흐르는 데이터를 감시하도록 설치하였으나, DRAM(20)[WC(21)] 상에 기록된 패턴을 조사하는 것이나, DRAM(20)-NAND 컨트롤러 사이에 흐르는 데이터를 감시하는 것이어도 좋다.
또한, 상술한 설명에서는, WC(21) 상의 all 0의 데이터를 MS(11)에 기록할 때에, 그 트랙의 모든 섹터가 WC(21) 상에 정렬되어 있고, 또한 all 0이라고 하는 조건을 만족하는 경우에, NAND 메모리(10)에의 기록을 수행하지 않도록 하였으나, 그 트랙의 섹터가 모두 WC(21) 상에 정렬되어 있지 않은 경우라도, NAND 메모리(10)로부터 판독하여 구멍 메움 처리를 수행한 결과가 all 0인 경우에는, 마찬가지로 NAND 메모리(10)에의 기록을 수행하지 않도록 해도 좋다.
본 실시형태에 따르면, WC(21)로부터 NAND 메모리(10)에 데이터를 기록할 때에, 기록하는 데이터가 NAND 메모리(10)에서의 어드레스 관리 단위의 크기와 동일하고, 특정 데이터 패턴인 경우에는, 그 데이터를 NAND 메모리(10)에 기록하지 않고, 관리 정보에 특정 데이터 패턴(all 0)인 것을 기억시키도록 했기 때문에, NAND 메모리(10)에 그 데이터를 기록하는 경우에 비해 처리를 고속화할 수 있다. 또한, 이후의 판독에서, 그 어드레스에 대응하는 데이터를 NAND 메모리(10)로부터 판독하지 않고, 관리 정보로부터 특정 데이터 패턴(all 0)인 것을 식별할 수 있기 때문에, NAND 메모리(10)로부터 판독하는 경우에 비해 처리를 고속화할 수도 있다. 그 결과, 메모리 시스템의 성능을 향상시킬 수 있다는 효과를 갖는다.
또한, WC(21)에 기록된 데이터가 어떤 특정 데이터 패턴인 경우에는, NAND 메모리(10)에 데이터를 기록하지 않기 때문에, 소거 횟수를 저감할 수 있다. 또한, NAND 메모리(10)에 본래 기록해야 할 데이터를 기록하지 않기 때문에 NAND가 해방되고, FB가 증가하며, NAND 메모리(10) 중의 개개의 물리 블록을 사용하지 않는 시간이 증가하여 릴렉세이션(relaxation) 효과가 향상된다. 그 결과, NAND 메모리(10)의 수명을 연명화시킬 수 있다는 효과를 갖는다.
[제2 실시형태]
도 18은 SSD(100)를 탑재한 퍼스널 컴퓨터(1200)의 일례를 나타내는 사시도 이다. 퍼스널 컴퓨터(1200)는, 본체(1201) 및 표시 유닛(1202)을 구비하고 있다. 표시 유닛(1202)은 디스플레이 하우징(1203)과, 이 디스플레이 하우징(1203)에 수용된 표시 장치(1204)를 구비하고 있다.
본체(1201)는 케이스(1205)와, 키보드(1206)와, 포인팅 디바이스인 터치 패드(1207)를 구비하고 있다. 케이스(1205) 내부에는, 메인 회로 기판, ODD(Optical Disk Device) 유닛, 카드 슬롯, 및 SSD(100) 등이 수용되어 있다.
카드 슬롯은, 케이스(1205)의 주벽(周壁)에 인접하여 마련된다. 주벽에는, 카드 슬롯에 대향하는 개구부(1208)가 형성된다. 사용자는 이 개구부(1208)를 통해 케이스(1205)의 외부로부터 추가 디바이스를 카드 슬롯에 착탈하는 것이 가능하다.
SSD(100)는 종래의 HDD를 대신하여, 퍼스널 컴퓨터(1200) 내부에 실장된 상태로 사용해도 좋고, 퍼스널 컴퓨터(1200)가 구비하는 카드 슬롯에 삽입된 상태로, 추가 디바이스로서 사용해도 좋다.
도 19는 SSD를 탑재한 퍼스널 컴퓨터의 시스템 구성예를 나타내고 있다. 퍼스널 컴퓨터(1200)는 CPU(1301), 노스 브리지(north bridge; 1302), 메인 메모리(1303), 비디오 컨트롤러(1304), 오디오 컨트롤러(1305), 사우스 브리지(south bridge: 1309), BIOS-ROM(1310), SSD(100), ODD 유닛(1311), 임베디드 컨트롤러/키보드 컨트롤러 IC(EC/KBC)(1311), 및 네트워크 컨트롤러(1312) 등을 구비하고 있다.
CPU(1301)는 퍼스널 컴퓨터(1200)의 동작을 제어하기 위해서 설치된 프로세서이며, SSD(100)로부터 메인 메모리(1303)에 로드되는 오퍼레이팅 시스템(OS)을 실행한다. 또한, ODD 유닛(1311)이, 장전된 광 디스크에 대해 판독 처리 및 기록 처리 중 적어도 하나의 처리를 실행 가능하게 한 경우에, CPU(1301)는 이들 처리를 실행한다.
또한, CPU(1301)는, BIOS-ROM(1310)에 저장된 시스템 BIOS(Basic Input 0utput System)도 실행한다. 또한, 시스템 BIOS는, 퍼스널 컴퓨터(1200) 내의 하드웨어 제어를 위한 프로그램이다.
노스 브리지(1302)는 CPU(1301)의 로컬 버스와 사우스 브리지(1309) 사이를 연결하는 브리지 디바이스이다. 노스 브리지(1302)에는, 메인 메모리(1303)를 액세스 제어하는 메모리 컨트롤러도 내장되어 있다.
또한, 노스 브리지(1302)는 AGP(Accelerated Graphics Port) 버스(1314) 등을 통해 비디오 컨트롤러(1304)와의 통신, 및 오디오 컨트롤러(1305)와의 통신을 실행하는 기능도 갖고 있다.
메인 메모리(1303)는 프로그램이나 데이터를 일시적으로 기억하고, CPU(1301)의 작업 영역으로서 기능한다. 메인 메모리(1303)는 예컨대 DRAM으로 구성된다.
비디오 컨트롤러(1304)는 퍼스널 컴퓨터(1200)의 디스플레이 모니터로서 사용되는 표시 유닛(1202)을 제어하는 비디오 재생 컨트롤러이다.
오디오 컨트롤러(1305)는 퍼스널 컴퓨터(1200)의 스피커(1306)를 제어하는 오디오 재생 컨트롤러이다.
사우스 브리지(1309)는 LPC(Low Pin Count) 버스 상의 각 디바이스, 및 PCI(Peripheral Component Interconnect) 버스(1315) 상의 각 디바이스를 제어한다. 또한, 사우스 브리지(1309)는 각종 소프트웨어 및 데이터를 저장하는 기억 장치인 SSD(100)를 ATA 인터페이스를 통해 제어한다.
퍼스널 컴퓨터(1200)는 섹터 단위로 SSD(100)에 액세스한다. ATA 인터페이스를 통해, 기록 커맨드, 판독 커맨드, 플래시 커맨드 등이 SSD(100)에 입력된다.
또한, 사우스 브리지(1309)는 BIOS-ROM(1310) 및 ODD 유닛(1311)을 액세스 제어하기 위한 기능도 갖고 있다.
EC/KBC(1311)는 전력 관리를 위한 임베디드 컨트롤러와, 키보드(KB)(1206) 및 터치 패드(1207)를 제어하기 위한 키보드 컨트롤러가 집적된 1칩 마이크로 컴퓨터이다.
이 EC/KBC(1311)는 사용자에 의한 파워 버튼의 조작에 따라서 퍼스널 컴퓨터(1200)의 전원을 ON/OFF하는 기능을 갖고 있다. 네트워크 컨트롤러(1312)는 예컨대 인터넷 등의 외부 네트워크와의 통신을 실행하는 통신 장치이다.
본 발명에 따르면, 비휘발성 반도체 메모리에서의 재기록 횟수의 증대에 의한 열화를 방지하는 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법을 제공할 수 있다는 효과를 발휘한다.
한층 더한 효과나 변형예는, 당업자에 의해 용이하게 도출할 수 있다. 따라서, 본 발명의 보다 광범위한 형태는, 이상과 같이 나타내고 또한 기술한 특정한 상세 및 대표적인 실시형태에 한정되는 것이 아니다. 따라서, 첨부된 클레임 및 그 균등물에 의해 정의되는 총괄적인 발명의 개념의 정신 또는 범위에서 일탈하지 않 고서, 여러 가지 변경이 가능하다.
도 1은 SSD의 구성예를 나타내는 블록도이다.
도 2a는 NAND 메모리 칩에 포함되는 1개의 물리 블록의 구성예를 나타내는 등가 회로도이다.
도 2b는 예컨대 1개의 메모리 셀 트랜지스터(MT)에 2비트를 기억하는 4치 데이터 기억 방식에서의 임계값 분포를 도시하는 모식도이다.
도 3은 드라이브 제어 회로의 하드웨어적인 내부 구성예를 나타내는 블록도이다.
도 4는 프로세서의 기능 구성예를 나타내는 블록도이다.
도 5는 NAND 메모리 및 DRAM 내에 형성된 기능 구성을 도시하는 블록도이다.
도 6은 LBA 논리 어드레스를 도시하는 도면이다.
도 7은 데이터 관리부 내의 관리 테이블의 구성예를 나타내는 도면이다.
도 8은 스냅샷과 로그의 생성 형태를 개념적으로 도시하는 도면이다.
도 9는 MS에의 기록 절차를 나타내는 도면이다.
도 10은 FS에의 기록을 나타내는 도면이다.
도 11은 FS로부터 IS로의 블록 이동을 나타내는 도면이다.
도 12는 본 실시형태에 따른 메모리 시스템의 주요부의 기능 구성을 도시하는 블록도이다.
도 13은 WC 트랙 정보의 구성의 일례를 나타내는 도면이다.
도 14는 호스트로부터 WC에의 all 0 데이터의 기록 처리 절차의 일례를 나타 내는 흐름도이다.
도 15는 WC로부터 MS에의 all 0 데이터의 기록 처리 절차의 일례를 나타내는 흐름도이다.
도 16은 리드 처리의 개요를 나타내는 도면이다.
도 17은 데이터의 NAND 메모리로부터의 판독 처리 절차의 일례를 나타내는 흐름도이다.
도 18은 SSD를 탑재한 퍼스널 컴퓨터의 전체도이다.
도 19는 SSD를 탑재한 퍼스널 컴퓨터의 시스템 구성예를 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
1 : 호스트 2 : 호스트 I/F
100 : SSD 10 : NAND 메모리
20 : DRAM 21 : WC
22 : RC 206 : 데이터 패턴 기억부
204 : 마스터 테이블 204a : 포워드 룩업 테이블
204b : 리버스 룩업 테이블 130 : 컨트롤러
210 : 판독 기록 제어부 211 : 관리 정보 갱신부
212 : 데이터 감시부 201: 사용자 데이터 기억부
202 : NAND 관리 테이블

Claims (20)

  1. 휘발성의 제1 기억부와,
    비휘발성의 제2 기억부와,
    상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 수행하는 컨트롤러
    를 구비하는 메모리 시스템에 있어서,
    상기 제1 기억부에는, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보가 기억되고,
    상기 컨트롤러는,
    상기 제1 및 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하는 판독 기록 제어 수단과,
    상기 판독 기록 제어 수단에 의해, 상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하는 관리 정보 갱신 수단과,
    상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 미리 정해진 관리 단위마다 감시하는 데이터 감시 수단
    을 구비하며,
    상기 데이터 감시 수단에 의해, 상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하고,
    상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에,
    상기 판독 기록 제어 수단은, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있는 경우에, 상기 데이터를 상기 제2 기억부에 기록하는 처리를 수행하지 않고,
    상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특징으로 하는 메모리 시스템.
  2. 제1항에 있어서, 상기 판독 기록 제어 수단은, 상기 호스트 장치로부터 지정된 논리 어드레스가 상기 제2 관리 정보에서 상기 무효 어드레스값에 대응하고 있는 경우에, 상기 제2 기억부의 그 논리 어드레스에 대응한 기억 위치로부터 판독하는 처리를 수행하지 않고, 상기 무효 어드레스값에 대응한 상기 특정 패턴을 상기 제1 기억부를 통해 상기 호스트 장치로 반환하는 것을 특징으로 하는 메모리 시스템.
  3. 제1항 또는 제2항에 있어서, 상기 특정 패턴은, 상기 관리 단위의 크기의 데이터의 비트가 모두 0과 모두 1 중 하나 이상인 것을 특징으로 하는 메모리 시스템.
  4. 제1항 또는 제2항에 있어서, 상기 관리 정보 갱신 수단은, 상기 무효 어드레스값으로서, 그 메모리 시스템 내에서 사용되는 하드웨어가 존재하지 않는 어드레스값을 지정하는 것을 특징으로 하는 메모리 시스템.
  5. 제1항 또는 제2항에 있어서, 상기 데이터 감시 수단은 상기 호스트 장치와 상기 제1 기억부 사이에 흐르는 데이터를 감시하는 것을 특징으로 하는 메모리 시스템.
  6. 제1항 또는 제2항에 있어서, 상기 데이터 감시 수단은 상기 제1 기억부에 기록된 데이터를 감시하는 것을 특징으로 하는 메모리 시스템.
  7. 제1항 또는 제2항에 있어서, 상기 데이터 감시 수단은 상기 제1 기억부와 상기 컨트롤러 사이에 흐르는 데이터를 감시하는 것을 특징으로 하는 메모리 시스템.
  8. 제1항 또는 제2항에 있어서, 상기 제1 기억부는 DRAM이고,
    상기 제2 기억부는 NAND형 플래시 메모리인 것을 특징으로 하는 메모리 시스 템.
  9. 휘발성의 제1 기억부를 통해 호스트 장치와 비휘발성의 제2 기억부 사이의 데이터 전송을 수행하는 컨트롤러에 있어서,
    상기 제1 기억부에 기억된, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하는 판독 기록 제어 수단과,
    상기 판독 기록 제어 수단에 의해, 상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하는 관리 정보 갱신 수단과,
    상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 미리 정해진 관리 단위마다 감시하는 데이터 감시 수단
    을 구비하고,
    상기 데이터 감시 수단에 의해, 상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하며,
    상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에,
    상기 판독 기록 제어 수단은, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있는 경우에, 상기 데이터를 상기 제2 기억부에 기록하는 처리를 수행하지 않고,
    상기 관리 정보 갱신 수단은, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특징으로 하는 컨트롤러.
  10. 제9항에 있어서, 상기 판독 기록 제어 수단은, 상기 호스트 장치로부터 지정된 논리 어드레스가 상기 제2 관리 정보에서 상기 무효 어드레스값에 대응하고 있는 경우에, 상기 제2 기억부의 그 논리 어드레스에 대응한 기억 위치로부터 판독하는 처리를 수행하지 않고, 상기 무효 어드레스값에 대응한 상기 특정 패턴을 상기 제1 기억부를 통해 상기 호스트 장치로 반환하는 것을 특징으로 하는 컨트롤러.
  11. 제9항 또는 제10항에 있어서, 상기 특정 패턴은 상기 관리 단위의 크기의 데이터의 비트가 모두 0과 모두 1 중 하나 이상인 것을 특징으로 하는 컨트롤러.
  12. 제9항 또는 제10항에 있어서, 상기 관리 정보 갱신 수단은, 상기 무효 어드레스값으로서, 그 메모리 시스템 내에서 사용되는 하드웨어가 존재하지 않는 어드레스값을 지정하는 것을 특징으로 하는 컨트롤러.
  13. 제9항 또는 제10항에 있어서, 상기 데이터 감시 수단은 상기 호스트 장치와 상기 제1 기억부 사이에 흐르는 데이터를 감시하는 것을 특징으로 하는 컨트롤러.
  14. 제9항 또는 제10항에 있어서, 상기 데이터 감시 수단은 상기 제1 기억부에 기록된 데이터를 감시하는 것을 특징으로 하는 컨트롤러.
  15. 제9항 또는 제10항에 있어서, 상기 데이터 감시 수단은 상기 제1 기억부와 상기 컨트롤러 사이에 흐르는 데이터를 감시하는 것을 특징으로 하는 컨트롤러.
  16. 휘발성의 제1 기억부와, 비휘발성의 제2 기억부를 구비하는 메모리 시스템의 제어 방법에 있어서,
    상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 수행하고,
    상기 제1 기억부에 기억된, 호스트 장치로부터 지정된 논리 어드레스와 상기 제1 기억부에서의 기억 위치를 대응시켜 관리하는 제1 관리 정보와, 상기 논리 어드레스와 상기 제2 기억부에서의 기억 위치를 대응시켜 관리하는 제2 관리 정보를 이용하여 상기 호스트 장치와 상기 제1 기억부 사이의 데이터의 판독/기록과, 상기 제1 기억부와 상기 제2 기억부 사이의 데이터의 판독/기록을 수행하며,
    상기 데이터의 상기 제1 또는 제2 기억부 상에서의 저장 위치에 변경이 있었 던 경우에, 상기 제1 또는 제2 관리 정보를 갱신하고,
    상기 호스트 장치로부터 상기 제1 기억부에 기록되는 데이터가 특정 패턴을 갖고 있는지를 미리 정해진 관리 단위마다 감시하며,
    상기 특정 패턴의 데이터가 상기 제1 기억부에 기록되었다고 판정된 경우에, 상기 데이터에 대응하는 상기 제1 관리 정보에, 특정 패턴인 것을 나타내는 특정 패턴 식별 정보를 첨부하고,
    상기 제1 기억부에 기록된 데이터를 상기 제2 기억부로 퇴출시키는 경우에, 상기 데이터에 상기 특정 패턴 식별 정보가 첨부되어 있으면, 상기 데이터를 상기 제2 기억부에 기록하는 처리를 수행하지 않고, 상기 데이터에 대응하는 상기 제2 관리 정보에, 상기 제2 기억부에서 사용되지 않는 무효 어드레스값을 설정하는 것을 특징으로 하는 메모리 시스템의 제어 방법.
  17. 제16항에 있어서, 상기 호스트 장치로부터 지정된 논리 어드레스가, 상기 제2 관리 정보에서 상기 무효 어드레스값에 대응하고 있는 경우에, 상기 제2 기억부의 그 논리 어드레스에 대응한 기억 위치로부터 판독하는 처리를 수행하지 않고, 상기 무효 어드레스값에 대응한 상기 특정 패턴을 상기 제1 기억부를 통해 상기 호스트 장치로 반환하는 것을 특징으로 하는 메모리 시스템의 제어 방법.
  18. 제16항 또는 제17항에 있어서, 상기 특정 패턴은, 상기 관리 단위의 크기의 데이터의 비트가 모두 0과 모두 1 중 하나 이상인 것을 특징으로 하는 메모리 시스 템의 제어 방법.
  19. 제16항 또는 제17항에 있어서, 상기 무효 어드레스값으로서, 그 메모리 시스템 내에서 사용되는 하드웨어가 존재하지 않는 어드레스값을 지정하는 것을 특징으로 하는 메모리 시스템의 제어 방법.
  20. 제16항 또는 제17항에 있어서, 상기 호스트 장치와 상기 제1 기억부 사이에 흐르는 데이터를 감시하는 것을 특징으로 하는 메모리 시스템의 제어 방법.
KR1020090089090A 2008-12-27 2009-09-21 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법 KR101117403B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008335543A JP5317689B2 (ja) 2008-12-27 2008-12-27 メモリシステム
JPJP-P-2008-335543 2008-12-27

Publications (2)

Publication Number Publication Date
KR20100077118A KR20100077118A (ko) 2010-07-07
KR101117403B1 true KR101117403B1 (ko) 2012-04-16

Family

ID=42286285

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090089090A KR101117403B1 (ko) 2008-12-27 2009-09-21 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법

Country Status (3)

Country Link
US (1) US8327065B2 (ko)
JP (1) JP5317689B2 (ko)
KR (1) KR101117403B1 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP4533968B2 (ja) 2007-12-28 2010-09-01 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
JP2009205555A (ja) * 2008-02-28 2009-09-10 Toshiba Corp メモリシステム
JP4729062B2 (ja) 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
JP4439569B2 (ja) * 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP2011128998A (ja) 2009-12-18 2011-06-30 Toshiba Corp 半導体記憶装置
WO2011099963A1 (en) * 2010-02-10 2011-08-18 Hewlett-Packard Development Company, L.P. Identifying a location containing invalid data in a storage media
JP5404483B2 (ja) 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
JP2012008651A (ja) 2010-06-22 2012-01-12 Toshiba Corp 半導体記憶装置、その制御方法および情報処理装置
JP5382060B2 (ja) 2010-07-09 2014-01-08 株式会社デンソー ガスセンサ素子およびガスセンサ
US8713067B1 (en) * 2010-07-09 2014-04-29 Open Invention Network, Llc Stable file system
JP5553309B2 (ja) * 2010-08-11 2014-07-16 国立大学法人 東京大学 データ処理装置
JP2012128644A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128645A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP2012128643A (ja) 2010-12-15 2012-07-05 Toshiba Corp メモリシステム
JP5405513B2 (ja) 2011-03-22 2014-02-05 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法、及びプログラム
JP5754316B2 (ja) * 2011-09-15 2015-07-29 株式会社デンソー 電子制御装置
US9009396B2 (en) * 2011-09-23 2015-04-14 Avalanche Technology, Inc. Physically addressed solid state disk employing magnetic random access memory (MRAM)
US9251059B2 (en) 2011-09-23 2016-02-02 Avalanche Technology, Inc. Storage system employing MRAM and redundant array of solid state disk
US9329989B2 (en) 2011-12-30 2016-05-03 SanDisk Technologies, Inc. System and method for pre-interleaving sequential data
US8775722B2 (en) 2011-12-30 2014-07-08 Sandisk Technologies Inc. Storing data in parallel in a flash storage device using on chip page shifting between planes
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
JP5586718B2 (ja) 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
JP5813589B2 (ja) * 2012-07-13 2015-11-17 株式会社東芝 メモリシステムおよびその制御方法
US20140219021A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Data protection for unexpected power loss
US9892798B2 (en) 2012-09-11 2018-02-13 Seagate Technology Llc Data protection for unexpected power loss
KR102025341B1 (ko) 2012-12-04 2019-09-25 삼성전자 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템 및 메모리 컨트롤러의 동작 방법
US9817766B1 (en) * 2012-12-28 2017-11-14 EMC IP Holding Company LLC Managing relocation of slices in storage systems
US20140250277A1 (en) * 2013-03-04 2014-09-04 Kabushiki Kaisha Toshiba Memory system
JP2014211800A (ja) * 2013-04-19 2014-11-13 株式会社東芝 データ記憶装置、ストレージコントローラおよびデータ記憶制御方法
JP5649709B2 (ja) * 2013-10-29 2015-01-07 株式会社東芝 メモリシステム、不揮発性記憶装置、不揮発性記憶装置の制御方法およびプログラム
KR102252419B1 (ko) * 2014-01-09 2021-05-14 한국전자통신연구원 플래시 메모리 장치를 위한 주소변환 시스템 및 그 방법
US9569117B2 (en) 2014-03-11 2017-02-14 Kabushiki Kaisha Toshiba Memory system controlling interleaving write to memory chips
US9305665B2 (en) * 2014-03-31 2016-04-05 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US20150339069A1 (en) * 2014-05-22 2015-11-26 Kabushiki Kaisha Toshiba Memory system and method
CN105373338A (zh) * 2014-08-20 2016-03-02 深圳市中兴微电子技术有限公司 一种flash的控制方法和控制器
JP2015053075A (ja) * 2014-11-10 2015-03-19 株式会社東芝 メモリシステム、情報処理装置および記憶装置
US9870836B2 (en) 2015-03-10 2018-01-16 Toshiba Memory Corporation Memory system and method of controlling nonvolatile memory
KR102595233B1 (ko) * 2016-03-24 2023-10-30 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그것의 동작 방법
JP2016177822A (ja) * 2016-04-28 2016-10-06 株式会社東芝 メモリシステム
JP2018073040A (ja) 2016-10-27 2018-05-10 東芝メモリ株式会社 メモリシステム
KR102588113B1 (ko) 2016-11-07 2023-10-16 삼성전자주식회사 스토리지 장치를 포함하는 사용자 장치 및 그것의 트림 관리 방법
JP2018142240A (ja) * 2017-02-28 2018-09-13 東芝メモリ株式会社 メモリシステム
JP7109949B2 (ja) * 2018-03-23 2022-08-01 キオクシア株式会社 メモリシステム及びメモリシステムの制御方法
US11847321B2 (en) * 2021-12-14 2023-12-19 Cloud Linux Software, Inc. Systems and methods for adjusting storage volume size of an application instance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990032660A (ko) * 1997-10-20 1999-05-15 김영환 시스템 메모리 제어장치
KR20050028049A (ko) * 2002-07-29 2005-03-21 소니 가부시끼 가이샤 복합 기억회로 및 동(同)복합 기억회로를 가지는 반도체장치
JP2007011929A (ja) * 2005-07-04 2007-01-18 Nidec Sankyo Corp 不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラム
US20080130156A1 (en) 2006-09-13 2008-06-05 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with nonvolatile memory for storage of failure-related data

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05342891A (ja) 1992-06-10 1993-12-24 Toshiba Corp 不揮発性半導体記憶装置
JPH1011360A (ja) 1996-06-24 1998-01-16 Toshiba Corp キャッシュメモリ
JP3688835B2 (ja) 1996-12-26 2005-08-31 株式会社東芝 データ記憶システム及び同システムに適用するデータ転送方法
JP2000285019A (ja) 1999-03-31 2000-10-13 Nec Ibaraki Ltd キャッシュ制御回路
JP2006163801A (ja) * 2004-12-07 2006-06-22 Canon Inc 情報記録再生装置
JP2008146255A (ja) 2006-12-07 2008-06-26 Sony Corp 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法
JP2009064238A (ja) * 2007-09-06 2009-03-26 Hitachi Ulsi Systems Co Ltd メモリシステム
JP4672742B2 (ja) * 2008-02-27 2011-04-20 株式会社東芝 メモリコントローラおよびメモリシステム
JP4675984B2 (ja) * 2008-02-29 2011-04-27 株式会社東芝 メモリシステム
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US8706950B2 (en) * 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4691123B2 (ja) * 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
US8276043B2 (en) * 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP4643667B2 (ja) * 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4653817B2 (ja) * 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
JP4551940B2 (ja) * 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
US8484432B2 (en) * 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
JP4762261B2 (ja) * 2008-03-12 2011-08-31 株式会社東芝 メモリシステム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990032660A (ko) * 1997-10-20 1999-05-15 김영환 시스템 메모리 제어장치
KR20050028049A (ko) * 2002-07-29 2005-03-21 소니 가부시끼 가이샤 복합 기억회로 및 동(同)복합 기억회로를 가지는 반도체장치
JP2007011929A (ja) * 2005-07-04 2007-01-18 Nidec Sankyo Corp 不揮発性メモリのデータ更新方法、制御装置、及びデータ更新プログラム
US20080130156A1 (en) 2006-09-13 2008-06-05 Hitachi Global Storage Technologies Netherlands B.V. Disk drive with nonvolatile memory for storage of failure-related data

Also Published As

Publication number Publication date
US20100169553A1 (en) 2010-07-01
JP2010157133A (ja) 2010-07-15
JP5317689B2 (ja) 2013-10-16
US8327065B2 (en) 2012-12-04
KR20100077118A (ko) 2010-07-07

Similar Documents

Publication Publication Date Title
KR101117403B1 (ko) 메모리 시스템, 컨트롤러 및 메모리 시스템의 제어 방법
JP5198245B2 (ja) メモリシステム
KR101186788B1 (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
US8868842B2 (en) Memory system, method of controlling memory system, and information processing apparatus
KR101079890B1 (ko) 메모리 시스템
KR101102634B1 (ko) 메모리 시스템
KR101066937B1 (ko) 메모리 시스템 및 그 데이터 소거 방법
US9201717B2 (en) Memory system
KR101079936B1 (ko) 메모리 시스템
KR101075923B1 (ko) 메모리 시스템
KR101067457B1 (ko) 메모리 시스템
US20130275650A1 (en) Semiconductor storage device

Legal Events

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

Payment date: 20150120

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 8