KR101066937B1 - 메모리 시스템 및 그 데이터 소거 방법 - Google Patents
메모리 시스템 및 그 데이터 소거 방법 Download PDFInfo
- Publication number
- KR101066937B1 KR101066937B1 KR20090016983A KR20090016983A KR101066937B1 KR 101066937 B1 KR101066937 B1 KR 101066937B1 KR 20090016983 A KR20090016983 A KR 20090016983A KR 20090016983 A KR20090016983 A KR 20090016983A KR 101066937 B1 KR101066937 B1 KR 101066937B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- management table
- storage unit
- table group
- logical
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/14—Circuits for erasing electrically, e.g. erase voltage switching circuits
- G11C16/16—Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or control data
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)
Abstract
DRAM(20) 및 NAND 메모리(10)에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, NAND 메모리(10)에 기억되는 관리 테이블군이 구비된다. 이 관리 테이블군을 이용하여 DRAM(20) 및 NAND 메모리(10)에 기억된 데이터를 관리하는 데이터 관리부(120)는, 호스트 장치로부터의 소거 명령을 수신하여, 호스트 장치로부터 액세스 가능한 통상 LBA 영역과, 호스트 장치로부터 액세스 불가능한 특수 LBA 영역 중, 특수 LBA 영역에 대응된 데이터를 한 곳에 수집하고, 그 후 DRAM(20)에 전개된 관리 테이블군을 초기화한다.
Description
본 출원은, 2008년 3월 1일에 출원된 일본 특허 출원 번호 2008-51474의 우선권 이익을 갖고, 그 일본 특허 출원의 모든 내용은 본 출원에서 원용된다.
본 발명은 비휘발성 반도체 메모리를 구비한 메모리 시스템 및 그 데이터 소거 방법에 관한 것이다.
최근, 유지된 전하량에 따라 정보를 기억하는 플래시 메모리 등의 비휘발성 반도체 메모리가 널리 알려져 있다. 또, 최근에는 NAND형 플래시 메모리의 대용량화가 진행되어, 이 NAND형 플래시 메모리를 2차 기억 장치로 하는 퍼스널 컴퓨터가 제품화되고 있다.
NAND형 플래시 메모리는, 기록을 행하기 전에 소거 처리가 필요한 반도체 메모리이며, 그 수명은 재기록 횟수에 따라 달라진다. NAND형 플래시 메모리의 데이터의 기록/소거는, 기판-제어 게이트 사이에 고전압을 인가하여, 부유 게이트에 전자를 주입/방출시킴으로써 행해진다. 따라서, 기록 처리/소거 처리를 다수회 행하면 부유 게이트 주위의 게이트 산화막이 열화하여, 부유 게이트에 주입한 전자가 빠져, 기록 데이터가 파괴될 가능성이 있다.
또, 퍼스널 컴퓨터 등의 컴퓨터가 기록하는 데이터는, 시간적 국소성 및 영역적 국소성을 갖고 있다(예를 들어, 비특허문헌 1 참조). 이 성질에 의해, 데이터를 기록할 때 외부로부터 지정된 어드레스에 따라서 그대로 기록하면, 특정 영역에 대한 재기록 처리와, 특정 영역에서의 소거 처리가 집중하여, 각 기억 소자에서의 열화 상태의 편중이 커진다. 이 때문에, 이 종류의 NAND형 플래시 메모리에서는, 반도체 메모리 내의 모든 메모리 셀의 소거 횟수가 대략 같아지도록, 데이터 갱신 개소를 반도체 메모리 내에서 균등하게 분산시키는 웨어 레벨링(wear leveling)이라 불리는 처리가 행해진다.
이와 같이, NAND형 플래시 메모리 등의 비휘발성 반도체 메모리를 사용한 2차 기억 장치에서는, 하드 디스크를 사용한 2차 기억 장치에 비해, 메모리 셀의 관리에 충분한 배려가 필요하며, 하드 디스크를 사용한 2차 기억 장치에는 없는 여러가지 기술이 필요하다.
특허문헌 1 : 일본 특허 공개 평 8-279295호 공보
비특허문헌 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 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제2 기억부에 기억되는 관리 테이블군과, 상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 행하고, 상기 제1 기억부에 전개된 상기 관리 테이블군을 갱신하면서, 그 관리 테이블군에 기초하여 상기 제1 및 제2 기억부에서의 데이터를 관리하는 컨트롤러를 포함하고, 상기 제2 기억부는, 상기 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능하고, 상기 컨트롤러는, 상기 호스트 장치로부터의 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하고, 그 후 상기 관리 테이블군을 초기화하는 것을 특징으로 하는 메모리 시스템이 제공된다.
또, 본 발명의 한 형태에 의하면, 휘발성 반도체 메모리로 구성되는 제1 기억부와, 비휘발성 반도체 메모리로 구성되는 제2 기억부와, 상기 제1 및 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제2 기억부에 기억되는 관리 테이블군과, 상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 행하고, 상기 제1 기억부에 전개된 상기 관리 테이블 군을 갱신하면서, 그 관리 테이블군에 기초하여 상기 제1 및 제2 기억부에서의 데이터를 관리하는 컨트롤러를 포함하고, 상기 제2 기억부는, 상기 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능하고, 상기 컨트롤러는, 상기 호스트 장치로부터의 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하고, 그 후 상기 관리 테이블군을 초기화하며, 상기 제1 논리 어드레스 영역에 대응된 데이터를 삭제하는 것을 특징으로 하는 메모리 시스템이 제공된다.
또, 본 발명의 한 형태에 의하면, 휘발성 반도체 메모리로 구성되는 제1 기억부와, 비휘발성 반도체 메모리로 구성되고, 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능한 제2 기억부를 갖는 메모리 시스템의 데이터 소거 방법으로서, 상기 호스트 장치로부터의 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하는 단계와, 상기 제1 및 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제1 기억부에 전개되어 있는 관리 테이블군을 초기화하는 단계를 포함하는 것을 특징으로 하는 데이터 소거 방법이 제공된다.
이하에 첨부 도면을 참조하여, 본 발명의 실시형태에 따른 메모리 시스템을 상세히 설명한다. 이하에 나타내는 실시형태에 의해 본 발명이 한정되는 것은 아니다. 또, 이하의 설명에서, 동일한 기능 및 구성을 갖는 요소에는 동일한 부호를 붙이고, 중복 설명은 필요한 경우에만 한다.
우선, 본 명세서에서 사용하는 용어에 관해 정의해 둔다.
ㆍ물리 페이지 : NAND 메모리 칩 내부에서 일괄적으로 기록/독출이 가능한 단위. 물리 페이지 사이즈는, 예를 들어 4 kB. 단, 주데이터(사용자 데이터 등)에 대하여 SSD 내에서 부가되는 에러 정정 부호 등의 용장 비트는 포함하지 않는 것으로 한다. 통상 4 kB+용장 비트(예를 들어 수십 B)가 동시에 메모리 셀에 기록되는 단위가 되지만, 설명의 편의상 상기와 같이 정의한다.
ㆍ논리 페이지 : SSD 내에서 설정되는 기록/독출 단위이며, 1 이상의 물리 페이지에 대응되어 있다. 논리 페이지 사이즈는, 예를 들어 8비트 노멀 모드에서는 4 kB, 32비트 배속ㆍ모드에서는 32 kB. 단, 용장 비트는 포함하지 않는 것으로 한다.
ㆍ물리 블록 : NAND 메모리 칩 내부에서 독립적으로 소거 가능한 최소 단위를 말하며, 복수의 물리 페이지로 구성된다. 물리 블록 사이즈는, 예를 들어 512 kB. 단, 주데이터에 대하여 SSD 내에서 부가되는 에러 정정 부호 등의 용장 비트는 포함하지 않는 것으로 한다. 통상, 512 kB+용장 비트(예를 들어 수십 kB)가 동시에 소거되는 단위가 되지만, 설명의 편의상 상기와 같이 정의한다.
ㆍ논리 블록 : SSD 내에서 설정되는 소거 단위이며, 1 이상의 물리 블록에 대응되어 있다. 논리 블록 사이즈는, 예를 들어 8비트 노멀 모드에서는 512 kB, 32 비트 배속 모드에서는 4 MB. 단, 용장 비트는 포함하지 않는 것으로 한다.
ㆍ섹터 : 호스트로부터의 최소 액세스 단위. 섹터 사이즈는 예를 들어 512B.
ㆍ클러스터 : SSD 내에서 「작은 데이터」를 관리하는 관리 단위. 클러스터 사이즈는 섹터 사이즈 이상이며, 클러스터 사이즈의 2 이상의 자연수배가 논리 페이지 사이즈가 되도록 정해진다.
ㆍ트랙 : SSD 내에서 「큰 데이터」를 관리하는 관리 단위. 클러스터 사이즈의 2 이상의 자연수배가 트랙 사이즈가 되도록, 그리고 트랙 사이즈의 2 이상의 자연수배가 논리 블록 사이즈가 되도록 정해진다.
ㆍ프리 블록(FB) : 용도 미할당의 NAND형 플래시 메모리상의 논리 블록. 용도 할당 시 소거하고 나서 사용한다.
ㆍ배드 블록(BB) : NAND형 플래시 메모리 상의, 오류가 많은 등 기억 영역으로서 사용할 수 없는 물리 블록. 예를 들어, 소거 동작이 정상적으로 종료하지 않은 물리 블록이 배드 블록(BB)으로서 등록된다.
ㆍ기록 효율 : 소정 기간내에서의 호스트로부터 기록한 데이터량에 대한 논리 블록의 소거량의 통계치. 작을수록 NAND형 플래시 메모리의 소모도가 작다.
ㆍ유효 클러스터 : 논리 어드레스에 대응하는 최신 데이터를 유지하고 있는 클러스터.
ㆍ무효 클러스터 : 동일 논리 어드레스의 클러스터가 다른 기억 영역에 기록되어, 참조되는 것이 없어진 데이터를 유지하고 있는 클러스터.
ㆍ유효 트랙 : 논리 어드레스에 대응하는 최신 데이터를 유지하고 있는 트 랙.
ㆍ무효 트랙 : 동일 논리 어드레스의 트랙이 다른 기억 영역에 기록되어, 참조되는 것이 없어진 데이터를 유지하고 있는 트랙.
ㆍ컴팩션 : 관리 대상 내의 논리 블록으로부터 유효 클러스터나 유효 트랙만을 추출하여 새로운 논리 블록에 다시 기록하는 것.
[제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)를 갖고, 1개의 병렬 동작 요소는 2개의 NAND 메모리 패키지를 갖는다. 각 NAND 메모리 패키지는 적층된 복수의 NAND 메모리 칩(예를 들어 1 칩=2 GB)으로 구성되어 있다. 도 1의 경우, 각 NAND 메모리 패키지는 적층된 4장의 NAND 메모리 칩으로 구성되어 있고, NAND 메모리(10)는 64 GB의 용량을 갖는다. 각 NAND 메모리 패키지가 적층된 8장의 NAND 메모리 칩으로 구성되어 있는 경우, NAND 메모리(10)는 128 GB의 용량을 갖게 된다.
DRAM(20)은 호스트 장치(1)와 NAND 메모리(10) 사이에서의 데이터 전송용 캐쉬 및 작업 영역용 메모리로서 기능한다. 또, DRAM(20) 대신 FeRAM(Ferroelectric Random Access Memory), PRAM(Phase-change Random Access Memory), MRAM(Magnetoresistive Random Access Memory)을 사용해도 된다. 드라이브 제어 회로(4)는, 호스트 장치(1)와 NAND 메모리(10) 사이에서 DRAM(20)을 통해 데이터 전송을 제어하고, SSD(100) 내의 각 구성 요소를 제어한다. 또, 드라이브 제어 회로(4)는, 상태 표시용 LED(6)에 스테이터스 표시용 신호를 공급하고, 전원 회로(5)로부터의 파워온 리셋 신호를 받아, 리셋 신호 및 클록 신호를 자(自)회로 내 및 SSD(100) 내의 각 부에 공급하는 기능도 갖고 있다.
각 NAND 메모리 칩은 데이터 소거 단위인 물리 블록을 복수 배열하여 구성되어 있다. 도 2의 (a)는 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)에 접속된다.
도 2의 (b)는 예를 들어 1개의 메모리 셀 트랜지스터(MT)에 2비트를 기억하는 4치 데이터 기억 방식에서의 임계값 분포를 나타내는 모식도이다. 4치 데이터 기억 방식에서는, 상위 페이지 데이터 "x"와 하위 페이지 데이터 "y"로 정의되는 4치 데이터 "xy" 중 어느 하나를 메모리 셀 트랜지스터(MT)에 유지할 수 있다.
이 4치 데이터 "xy"는, 메모리 셀 트랜지스터(MT)의 임계값 전압 순으로, 예를 들어 데이터 "11", "01", "00", "10"이 할당된다. 데이터 "11"은 메모리 셀 트랜지스터(MT)의 임계값 전압이 마이너스인 소거 상태이다.
하위 페이지 기록 동작에서는, 데이터 "11"(소거 상태)의 메모리 셀 트랜지스터(MT)에 대해 선택적으로, 하위 비트 데이터 "y"의 기록에 의해 데이터 "10"이 기록된다. 상위 페이지 기록전의 데이터 "10"의 임계값 분포는, 상위 페이지 기록후의 데이터 "01"과 데이터 "00"의 임계값 분포의 중간 정도에 위치하고 있고, 상위 페이지 기록후의 임계값 분포보다 넓어도 된다. 상위 페이지 기록 동작에서는, 데이터 "11"의 메모리 셀과 데이터 "10"의 메모리 셀에 대해, 각각 선택적으로 상위 비트 데이터 "x"가 기록되고, 데이터 "01" 및 데이터 "00"이 기록된다.
도 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 오류 정정 부호의 정정 능력보다 높은 것으로 한다.
도 1 및 도 3에 나타낸 바와 같이, NAND 메모리(10)에서는 4개의 병렬 동작 요소(10a∼10d)가 각 8비트의 4채널(4ch)을 통해, 드라이브 제어 회로(4) 내부의 NAND 컨트롤러(112)에 병렬 접속되어 있다. 4개의 병렬 동작 요소(10a∼10d)를 단독 동작시킬지, 병렬 동작시킬지, NAND 메모리 칩이 구비하는 배속 모드(Multi Page Program/Multi Page Read/Multi Block Erase)를 사용하는지의 여부의 조합에 의해, 하기 3종류의 액세스 모드가 제공된다.
(1) 8비트 노멀 모드
1ch만 동작시키고 8비트 단위로 데이터를 전송하는 모드이다. 물리 페이지 사이즈(4 kB)로 기록/독출이 행해진다. 또, 물리 블록 사이즈(512 kB)로 소거가 행해진다. 1개의 물리 블록에 대하여 1개의 논리 블록이 대응되고, 논리 블록 사이즈는 512 kB가 된다.
(2) 32비트 노멀 모드
4ch 병렬로 동작시키고 32비트 단위로 데이터를 전송하는 모드이다. 물리 페이지 사이즈×4(16 kB)로 기록/독출이 행해진다. 또, 물리 블록 사이즈×4(2 MB)로 소거가 행해진다. 4개의 물리 블록에 대하여 1개의 논리 블록이 대응되고, 논리 블록 사이즈는 2 MB가 된다.
(3) 32비트 배속 모드
4ch 병렬로 동작시키고, NAND 메모리 칩의 배속 모드를 이용하여 기록/독출을 행하는 모드이다. 물리 페이지 사이즈×4×2(32 kB)로 기록/독출이 행해진다. 또, 물리 블록 사이즈×4×2(4 MB)로 소거가 행해진다. 8개의 물리 블록에 대하여 1개의 논리 블록이 대응되고, 논리 블록 사이즈는 4 MB가 된다.
4ch 병렬 동작하는 32비트 노멀 모드 또는 32비트 배속 모드에서는, 병렬 동작하는 4 또는 8물리 블록이 NAND 메모리(10)로서의 소거 단위가 되고, 병렬 동작하는 4 또는 8물리 페이지가 NAND 메모리(10)로서의 기록 단위 및 독출 단위가 된다. 이하의 동작에서는 기본적으로 32비트 배속 모드를 사용하고, 예를 들어 1 논리 블록=4 MB=2i 트랙=2j 페이지=2k 클러스터 =2l 섹터로서 설명한다(i, j, k, l은 자연수이고, i<j<k<l의 관계가 성립한다).
32비트 배속 모드로 액세스되는 논리 블록은 4 MB 단위이며, 8개(2×4ch)의 물리 블록(1 물리 블록=512 kB)이 대응되어 있다. 물리 블록 단위로 관리되는 배드 블록(BB)이 발생하면 그 배드 블록(BB)은 사용할 수 없으므로, 그와 같은 경우에는 논리 블록에 대응된 8개의 물리 블록의 조합이 배드 블록(BB)을 포함하지 않도록 변경된다.
도 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(120)에 로드한다. 초기화 관리부(124)는 드라이브 제어 회로(4) 내의 각 컨트롤러/회로를 초기화한다. 디버그 지원부(125)는 외부로부터 RS 232C 인터페이스를 통해 공급된 디버그용 데이터를 처리한다. 주로, 데이터 관리부(120), ATA 커맨드 처리부(121) 및 보안 관리부(122)는 SRAM(114)에 기억되는 각 관리 프로그램을 프로세서(104)가 실행함으로써 실현되는 기능부이다.
본 실시형태에서는, 주로 데이터 관리부(120)가 실현하는 기능에 관해 설명한다. 데이터 관리부(120)는, ATA 커맨드 처리부(121)가 기억 디바이스인 NAND 메모리(10)나 DRAM(20)에 대하여 요구하는 기능의 제공[호스트 장치로부터의 라이트(Write) 요구, 캐쉬 플러쉬(Cache Flush) 요구, 리드(Read) 요구 등의 각종 커맨드에 대한 응답]과, 어드레스 영역과 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)로부터의 라이트 데이터를 일시 보존하고, RC(22)는 NAND 메모리(10)로부터의 리드 데이터를 일시 보존한다. 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)로부터의 데이터를 「큰 단위」인 트랙 단위로 장기간 기억한다. 예를 들어, 기억 용량은 MS>IS, FS>WC의 관계가 된다.
작은 관리 단위를 NAND 메모리(10)의 기억 영역 모두에 적용하면, 후술하는 관리 테이블의 사이즈가 비대해져 DRAM(20)에 수용되지 않기 때문에, 작은 관리 단위로 관리하는 것은, 최근 기록된지 얼마 안된 데이터와, NAND 메모리(10)로의 기록 효율이 나쁜 작은 데이터만으로 하도록 NAND 메모리(10)의 각 스토리지를 구성하고 있다. 이와 같이 「작은 단위」와 「큰 단위」라는 2개의 데이터 관리 단위를 병용하는 기술이, 동출원인에 의한 국제 특허 출원 PCT2008/JP/073950에 개시되어 있다. 이 국제 특허 출원의 모든 내용은 본 출원에서 원용된다.
도 6은 WC(21)로부터 NAND 메모리(10)로의 기록 처리(WR 처리)에 관한 보다 상세한 기능 블록도를 나타내는 도면이다. FS(12)의 전단에는 WC(21)로부터의 데이터를 버퍼링하는 FS 입력 버퍼(FSIB; 12a)가 설치되어 있다. 또, MS(11)의 전단에는 WC(21), FS(12) 또는 IS(13)로부터의 데이터를 버퍼링하는 MS 입력 버퍼(MSIB; 11a)가 설치되어 있다. 또, MS(11)에는 트랙 전단 스토리지 영역(TFS; 11b)이 형성되어 있다. TFS(11b)는 MSIB(11a)와 MS(11) 사이에 개재된 FIFO(First in First out) 구조를 갖는 버퍼이며, TFS(11b)에 기록된 데이터는 MSIB(11a)로부터 직접 MS(11)에 기록되는 데이터보다 갱신 빈도가 높은 데이터이다. MS(11), MSIB(11a), TFS(11b), FS(12), FSIB(12a) 및 IS(13)에는 NAND 메모리(10) 내의 각 논리 블록 중 어느 하나가 할당되어 있다.
다음으로, 도 5, 도 6의 각 구성 요소의 구체적인 기능 구성에 관해 상세히 설명한다. 호스트 장치(1)는 SSD(100)에 대하여 리드 또는 라이트할 때에는, ATA 인터페이스를 통해 논리 어드레스로서의 LBA(Logical Block Addressing)를 입력으로 한다. LBA는, 도 7에 나타내는 바와 같이, 섹터(사이즈 : 512B)에 대하여 0부터의 일련 번호를 붙인 논리 어드레스이다. 본 실시형태에서는, 도 5의 각 구성 요소인 WC(21), RC(22), FS(12), IS(13), MS(11)의 관리 단위로서, LBA의 하위 (l-k+1)비트로부터 상위 비트열로 구성되는 논리 클러스터 어드레스와, LBA의 하위 (l-i+1)비트로부터 상위 비트열로 구성되는 논리 트랙 어드레스를 정의한다. 1 클러스터=2(l-k) 섹터이고, 1 트랙=2(k-i) 클러스터이다.
ㆍ리드 캐쉬(RC; 22)
RC(22)에 관해 설명한다. RC(22)는, ATA 커맨드 처리부(121)로부터의 리드 요구에 대해, NAND 메모리(10)[FS(12), IS(13), MS(11)]로부터의 리드 데이터를 일시적으로 보존하기 위한 영역이다. RC(22)는, 본 실시형태에서는 예를 들어, m-라인, n-웨이(m은 2(k-i) 이상의 자연수, n은 2 이상의 자연수) 세트 어소시에이티브 방식(set associative)으로 관리되고, 1 엔트리에 1 클러스터분의 데이터를 유지할 수 있다. 논리 클러스터 어드레스의 LSB (k-i)비트로 라인이 결정된다. RC(22)는 풀 어소시에이티브 방식으로 관리되어도 되고, 단순한 FIFO 방식으로 관리되어도 된다.
ㆍ라이트 캐쉬(WC; 21)
WC(21)에 관해 설명한다. WC(21)는, ATA 커맨드 처리부(121)로부터의 라이트 요구에 대하여, 호스트 장치(1)로부터의 라이트 데이터를 일시적으로 보존하기 위한 영역이다. m-라인, n-웨이(m은 2(k-i) 이상의 자연수, n은 2 이상의 자연수) 세트 어소시에이티브 방식으로 관리되고, 1 엔트리에 1 클러스터분의 데이터를 유지할 수 있다. 논리 클러스터 어드레스의 LSB (k-i)비트로 라인이 결정된다. 예를 들어, 웨이1∼웨이n의 순서로 기록 가능한 웨이가 검색된다. 또, WC(21)에 등록되어 있는 트랙은 가장 오래전에 갱신된 순서를 알 수 있도록 후술하는 WC 트랙 관리 테이블(24)의 FIFO 구조에 의해 LRU(Least Recently Used)로 관리된다. WC(21)는 풀 어소시에이티브 방식으로 관리되어도 된다. 또, WC(21)는 RC(22)와 라인수, 웨이수가 서로 달라도 된다.
라이트 요구에 의해 기록된 데이터는 일단 WC(21) 상에 저장된다. WC(21)로부터 NAND 메모리(10)에 방출하는 데이터의 결정 방법은 이하의 룰에 따른다.
(i) 태그에 따라 결정된 라인의 기록 가능한 웨이가 최후의(본 실시형태에서는 n개째의) 빈 웨이였던 경우, 즉 최후의 빈 웨이가 사용되는 경우는, 그 라인에 등록된 트랙 중, LRU에 기초하여 가장 오래전에 갱신된 트랙을 방출하여 확정한다.
(ii) WC(21)에 등록되어 있는 상이한 트랙의 개수가 소정 개수를 초과한 경우, LRU 순으로 해당 트랙에 속하는 WC 중의 클러스터수가 소정 개수 미만인 트랙의 방출을 확정한다.
이상의 방침으로 방출하는 트랙을 결정한다. 그 때, 방출하는 것은 동일 트랙에 포함되는 모든 데이터이며, 방출되는 데이터량이 예를 들어 트랙 사이즈의 50%를 초과하면 MS(11)에, 초과하지 않으면 FS(12)에 방출한다.
또한 (i)의 조건으로 트랙 방출이 발생할 때, MS(11)에 방출하는 경우는, 방출되는 트랙수가 2i개(원래 2i개 이상일 때에는 2i+1개)가 될 때까지, WC(21) 내의 트랙 중 상기 방출되는 데이터량이 트랙 사이즈의 50%를 초과하는 조건을 만족하는 트랙을 상기 (i)의 방침으로 선택하여 방출 후보에 추가한다. 바꾸어 말하면, 방출되는 트랙이 2i개 미만인 경우, WC 중의 트랙의 오래된 것부터 2i개가 될 때까지, 2(k-i-1)개 이상 유효 클러스터를 갖는 트랙을 선택하여 방출 후보에 추가한다.
또, (i)의 조건으로 트랙 방출이 발생할 때, FS(12)에 방출하는 경우는, 방 출되는 클러스터수가 2k개가 될 때까지 WC(21) 내의 트랙 중 LRU 순으로 상기 방출되는 데이터량이 트랙 사이즈의 50% 미만인 조건을 만족하는 트랙을 찾아 그 클러스터를 방출 후보에 추가한다. 바꾸어 말하면, WC 중의 트랙을 오래된 순으로 거슬러 올라가 2(k-i-1)개 미만의 유효 클러스터만 갖는 트랙으로부터 클러스터를 추출하고, 유효 클러스터수가 2(k-i-1)개가 되면 이들 클러스터를 FSIB(12a)에 논리 블록 단위로 방출한다. 단, 2(k-i-1)개 발견되지 않은 경우는 FSIB(12a)에 논리 페이지 단위로 방출한다. FS(12)로의 방출을 논리 블록 단위로 할지, 논리 페이지 단위로 할지의 유효 클러스터수의 임계값은, 2(k-i-1)개라는 1 논리 블록분의 값으로 한정되는 것은 아니고, 1 논리 블록분보다 약간 적은 값이어도 된다.
또, ATA 커맨드 처리부(121)로부터의 캐쉬 플러쉬 요구에서는, WC(21)의 내용이 모두 상기와 동일한 조건[방출되는 데이터량이 트랙 사이즈의 50%를 초과하면 MS(11)에, 초과하지 않으면 FS(12)에]이며, FS(12) 또는 MS(11)에 대하여 방출된다.
ㆍ전단(前段) 스토리지 영역(FS; 12)
다음으로 FS(12)에 관해 설명한다. FS(12)는 클러스터 단위로 데이터가 관리되는 FIFO이다. FS(12)는, 이것을 통과하는 데이터는 후단의 IS(13)보다 갱신 빈도가 높다고 간주하기 위한 버퍼이다. 즉, FS(12)의 FIFO 구조에서는, FIFO를 통과중인 유효 클러스터(최신 클러스터)는 호스트로부터의 동일한 어드레스에 대한 재기 록이 있었던 경우 무효화되기 때문에, FS(12)를 통과중인 클러스터는, FS(12)로부터 IS(13)나 MS(11)에 방출된 클러스터보다 갱신 빈도가 높다고 간주할 수 있다.
FS(12)를 설치함으로써, 후단의 IS(13)에서의 컴팩션 처리에 갱신 빈도가 높은 데이터가 섞이게 될 가능성을 줄인다. 무효화에 의해 오래된 클러스터를 유지하고 있던 논리 블록 자체가 갖는 유효 클러스터수가 0이 된 경우, 그 논리 블록은 개방되어 프리 블록(FB)에 할당된다. 또, 논리 블록이 무효화된 경우, 새로운 프리 블록(FB)을 취득하여 FS(12)에 할당한다.
WC(21)로부터 FS(12)에 대하여 클러스터 데이터의 이동이 발생하면, 그 클러스터는 FSIB(12a)에 할당된 논리 블록에 대하여 기록된다. FSIB(12a) 중에 모든 페이지의 기록이 완료된 블록이 존재하는 경우, 후술하는 CIB 처리에 의해 그러한 블록은 FSIB(12a)에서 FS(12)로 이동한다. 이 FSIB(12a)에서 FS(12)로의 이동 시에, FS(12)의 블록수가 FS(12)로서 허용되는 소정의 상한치를 초과하면, 가장 오래된 블록이 FS(12)로부터 IS(13) 또는 MS(11)에 방출되게 된다. 예를 들어, 트랙 내의 유효 클러스터의 비율이 50% 이상인 트랙은 MS(11)[TFS(11b)]로 기록되고, 유효 클러스터가 남은 블록은 IS(13)로 이동한다.
NAND 메모리(10) 내의 구성 요소간의 데이터 이동에는 이동(Move)과 카피(Copy) 2가지가 있다. 이동은 후술하는 관리 테이블의 포인터를 바꾸기만 하고, 실제 데이터의 재기록은 행하지 않는 방법이다. 카피는 한쪽 구성 요소에 저장되어 있는 데이터를 페이지 단위, 트랙 단위, 블록 단위로 다른쪽 구성 요소에 실제로 재기록하는 방법이다.
ㆍ중단(中段) 스토리지 영역(IS; 13)
다음으로 IS(13)에 관해 설명한다. IS(13)는 FS(12)와 마찬가지로 클러스터 단위로 데이터가 관리된다. 전술한 바와 같이, IS(13)에 저장된 데이터는 갱신 빈도가 낮은 데이터로 간주될 수 있다. FS(12)로부터 IS(13)에 대하여 논리 블록의 이동(Move), 즉 FS(12)로부터의 방출이 발생하면, 이전 FS(12)의 관리 대상이었던 방출 대상 논리 블록은 포인터를 바꿈으로써 IS(13)의 관리 대상 블록이 된다. 이 FS(12)로부터 IS(13)로의 논리 블록의 이동에 의해, IS(13)의 블록수가 IS(13)로서 허용되는 소정의 상한치를 초과하면, 즉 IS 내의 기록 가능한 프리 블록(FB)의 수가 임계값을 밑돌면, IS(13)로부터 MS(11)로의 데이터 방출 및 컴팩션 처리가 실행되어, IS(13)의 블록수는 규정치로 되돌아간다.
IS(13)에서는, 트랙 내의 유효 클러스터수를 사용하여 이하와 같은 방출 처리 및 컴팩션 처리를 실행한다.
ㆍ트랙을 트랙 내의 유효 클러스터수×유효 클러스터 계수[트랙이 MS(11) 내에서 무효 트랙이 존재하는 논리 블록에 존재하는지의 여부에 따라 가중되는 수이며, 존재하는 쪽이 존재하지 않는 경우보다 수가 크다] 순으로 소트하여, 그 곱셈 값이 큰 트랙 2i+1개(2 논리 블록분)를 수집하여 논리 블록 사이즈의 자연수배로 하여 MSIB(11a)에 방출한다.
ㆍ유효 클러스터수가 가장 적은 2개의 논리 블록의 합계 유효 클러스터수가 예를 들어, 소정 설정값인 2k개(1 논리 블록분) 이상인 경우는, 위의 단계를 반복한 다[IS 내의 2개의 논리 블록으로부터 프리 블록(FB)을 만들 수 있게 될 때까지 하기 위해)].
ㆍ유효 클러스터수가 적은 논리 블록부터 순서대로 클러스터를 2k개 수집하여 IS(13) 내에서 컴팩션을 행한다.
여기서는 유효 클러스터수가 가장 적은 2개의 논리 블록을 선택하는 것으로 했지만, 이 수는 2개에 한정되지 않고, 2개 이상의 수이면 된다. 또, 소정의 설정값은 선택되는 논리 블록수보다 1개 적은 논리 블록수에 수용 가능한 클러스터수 이하이면 된다.
ㆍ메인 스토리지 영역(MS; 11)
다음으로 MS(11)에 관해 설명한다. MS(11)는 트랙 단위로 데이터를 관리한다. MS(11)에 저장된 데이터는 갱신 빈도가 낮다고 간주될 수 있다. WC(21), FS(12), IS(13)로부터 MS(11)에 대하여 트랙 데이터의 카피 또는 이동이 발생하면, 그 트랙은 MSIS(11a)에 할당된 논리 블록에 대하여 기록된다. 한편, 트랙 중의 일부의 데이터(클러스터)만이 WC 등으로부터 기록되는 경우에는, 기존의 MS 중의 트랙 데이터와 새로운 데이터를 머지하여 새로운 트랙 데이터를 만든 다음 MSIB(11a)에 기록하는, 후술하는 수동 머지가 행해진다. MS(11) 내에 무효 트랙이 축적되고, MS(11)에 할당되어 있는 논리 블록의 개수가 MS(11)로서 허용되는 블록수의 상한치를 초과하는 상황이 발생하면, 컴팩션 처리를 행하여 무효 프리 블록(FB)을 만든다.
MS(11)의 컴팩션 처리는 예를 들어 논리 블록 내의 유효 트랙수에만 주목한 이하의 방법을 실시한다.
ㆍ유효 트랙이 적은 논리 블록부터 순서대로 무효 트랙을 합하여 무효 프리 블록(FB)이 만들어질 때까지 선택한다.
ㆍ선택한 논리 블록에 수용된 트랙을, WC(21), FS(12), IS(13) 내의 데이터와 통합하는 수동 머지를 행하면서 컴팩션을 실행한다.
ㆍ2i 트랙 통합 가능한 논리 블록은 TFS(11b)에 출력되고(2i 트랙 MS 컴팩션), 2i 트랙에 미치지 않는 개수의 트랙은 MSIB(11a)에 출력되어(2i 트랙 미만 컴팩션), 보다 많은 무효 프리 블록(FB)을 만든다.
TFS(11b)는 트랙 단위로 데이터가 관리되는 FIFO이다. TFS(11b)는, 이 TFS를통과하는 데이터는 후단의 MS(11)보다 갱신 빈도가 높다고 간주하기 위한 버퍼이다. 즉, TFS(11b)의 FIFO 구조에서는, FIFO를 통과중인 유효 트랙(최신 트랙)은, 호스트로부터의 동일한 어드레스에 대한 재기록이 있었던 경우 무효화되기 때문에, TFS(11b)를 통과중인 트랙은 TFS(11b)로부터 MS(11)에 방출된 트랙보다 갱신 빈도가 높다고 간주될 수 있다.
도 8은 데이터 관리부(120)가 도 5 및 도 6에 나타낸 각 구성 요소를 제어 관리하기 위한 관리 테이블을 나타내는 도면이다. 데이터 관리부(120)는, 전술한 바와 같이, ATA 커맨드 처리부(121)와 NAND 메모리(10) 간의 교량 역할하는 기능을 가지며, DRAM(20)에 기억된 데이터를 관리하는 DRAM층 관리부(120a)와, NAND 메모 리(10)에 기억된 데이터를 관리하는 논리 NAND층 관리부(120b)와, NAND 메모리(10)를 물리 기억 디바이스로서 관리하는 물리 NAND층 관리부(120c)로 구성된다. RC 클러스터 관리 테이블(23), WC 트랙 관리 테이블(24), WC 클러스터 관리 테이블(25)은, DRAM층 관리부(120a)에 의해 제어된다. 트랙 관리 테이블(30), FS/IS 관리 테이블(40), MS 논리 블록 관리 테이블(35), FS/IS 논리 블록 관리 테이블(42), FS/IS 내 클러스터 관리 테이블(44)은 논리 NAND층 관리부(120b)에 의해 관리된다. 논리-물리 변환 테이블(50)은 물리 NAND층 관리부(120c)에 의해 관리된다.
RC(22)는 역(逆)색인 테이블인 RC 클러스터 관리 테이블(23)에 의해 관리된다. 역색인 테이블에서는, 기억 디바이스의 위치로부터 그 위치에 기억되어 있는 논리 어드레스를 검색할 수 있다. WC(21)는 역색인 테이블인 WC 클러스터 관리 테이블(25) 및 정(正)색인 테이블인 WC 트랙 관리 테이블(24)에 의해 관리된다. 정색인 테이블에서는, 논리 어드레스로부터 그 논리 어드레스에 대응하는 데이터가 존재하는 기억 디바이스 위치를 검색할 수 있다.
NAND 메모리(10) 내의 FS(12)[FSIB(12a)], IS(13), MS(11)[TFS(11b), MSIB(11a)]는, 트랙 관리 테이블(30), FS/IS 관리 테이블(40), MS 논리 블록 관리 테이블(35), FS/IS 논리 블록 관리 테이블(42), FS/IS 내 클러스터 관리 테이블(44)에 의해 그 논리 어드레스가 관리된다. 또, NAND 메모리(10) 내의 FS(12)[FSIB(12a)], IS(13), MS(11)[TFS(11b), MSIB(11a)]는 논리-물리 변환 테이블(50)에 의해 논리 어드레스와 물리 어드레스가 변환된다. 이러한 각 관리 테이블은 NAND 메모리(10) 상의 영역에 기억되어 있고, SSD(100)의 초기화 시에 NAND 메 모리(10)로부터 DRAM(20) 상에 판독되어 사용된다.
ㆍRC 클러스터 관리 테이블(23) (역색인)
먼저, 도 9를 사용하여 RC 클러스터 관리 테이블(23)에 관해 설명한다. RC(22)는, 전술한 바와 같이, 논리 클러스터 어드레스 LSB (k-i)비트로 인덱스되는 n-웨이 세트 어소시에이티브 방식으로 관리된다. RC 클러스터 관리 테이블(23)은, RC(클러스터 사이즈×m-라인×n-웨이; 22)의 각 엔트리의 태그를 관리하기 위한 테이블이며, 각 태그는 복수 비트의 상태 플래그(23a)와, 논리 트랙 어드레스(23b)로 구성되어 있다. 상태 플래그(23a)에는, 해당 엔트리를 사용해도 되는지 아닌지(유효/무효)를 나타내는 Valid 비트 외에, 해당 엔트리가 NAND 메모리(10)로부터의 독출 대기인지 아닌지를 나타내는 비트, 해당 엔트리가 ATA 커맨드 처리부(121)로의 독출 대기인지 아닌지를 나타내는 비트 등이 포함된다. RC 클러스터 관리 테이블(23)은, DRAM(20) 상의 태그 기억 위치로부터 LBA에 일치하는 논리 트랙 어드레스를 검색하는 역색인 테이블로서 기능한다.
ㆍWC 클러스터 관리 테이블(25) (역색인)
다음으로, 도 10을 사용하여 WC 클러스터 관리 테이블(25)에 관해 설명한다. WC(21)는, 전술한 바와 같이, 논리 클러스터 어드레스 LSB (k-i)비트로 인덱스되는 n-웨이 세트 어소시에이티브 방식으로 관리된다. WC 클러스터 관리 테이블(25)은, WC(클러스터 사이즈×m-라인×n-웨이; 21)의 각 엔트리의 태그를 관리하기 위한 테이블이며, 각 태그는 복수 비트의 상태 플래그(25a)와, 섹터 위치 비트맵(25b)와, 논리 트랙 어드레스(25c)로 구성되어 있다.
상태 플래그(25a)에는, 해당 엔트리를 사용해도 되는지 아닌지(유효/무효)를 나타내는 Valid 비트 외에, 해당 엔트리가 NAND 메모리(10)로의 방출 대기인지 아닌지를 나타내는 비트, 해당 엔트리가 ATA 커맨드 처리부로부터의 기록 대기인지 아닌지를 나타내는 비트 등이 포함된다. 섹터 위치 비트맵(25b)은, 1 클러스터에 포함되는 2(l-k) 섹터 중 어느 섹터에 유효한 데이터를 유지하고 있는지를 2(l-k) 비트로 전개하여 나타내는 것이다. 이 섹터 위치 비트맵(25b)에 의해, WC(21)에서 LBA와 동일한 섹터 단위의 관리를 행할 수 있다. WC 클러스터 관리 테이블(25)은, DRAM(20) 상의 태그 기억 위치로부터 LBA에 일치하는 논리 트랙 어드레스를 검색하는 역색인 테이블로서 기능한다.
ㆍWC 트랙 관리 테이블(24) (정색인)
다음으로, 도 11을 사용하여 WC 트랙 관리 테이블(24)에 관해 설명한다. WC 트랙 관리 테이블(24)은 WC(21) 상에 저장되어 있는 클러스터를 트랙 단위로 통합한 정보를 관리하는 것이며, FIFO 기능을 갖는 링크드 리스트 구조에 의해 트랙간의 WC(21)에 등록된 순서(LRU)를 표현하고 있다. WC(21)에서 마지막으로 갱신된 순서에 의해 LRU를 표현하도록 해도 된다. 각 리스트의 엔트리는, 논리 트랙 어드레스(24a), 해당 논리 트랙 어드레스에 포함되는 WC(21) 중 유효 클러스터수(24b), 웨이-라인 비트맵(24c) 및 다음 엔트리에 대한 포인터를 나타내는 넥스트 포인터(24d)로 구성되어 있다. WC 트랙 관리 테이블(24)은 논리 트랙 어드레스(24a)로부터 소요 정보를 얻기 때문에, 정색인 테이블로서 기능한다.
웨이-라인 비트맵(24c)은, WC(21) 중에서 해당 논리 트랙 어드레스에 포함되는 유효 클러스터가 WC(21) 중의 m×n 엔트리 가운데 어느 엔트리에 저장되어 있는지를 나타내는 맵 정보이며, 유효 클러스터가 저장되어 있는 엔트리에서는 Valid 비트가 "1"로 되어 있다. 이 웨이-라인 비트맵(24c)은, 예를 들어 (1 비트(Valid)+log2n 비트(n-웨이))×m 비트(m-라인)로 구성되어 있다. WC 트랙 관리 테이블(24)은 링크드 리스트 구조를 갖고 있고, WC(21) 중에 존재하는 논리 트랙 어드레스에 관한 정보만이 엔트리되어 있다.
ㆍ트랙 관리 테이블(30) (정색인)
다음으로, 도 12를 사용하여 트랙 관리 테이블(30)에 관해 설명한다. 트랙 관리 테이블(30)은, 논리 트랙 어드레스 단위로 MS(11) 상의 논리적인 데이터 위치를 관리하기 위한 테이블이며, 클러스터 단위로 FS(12)나 IS(13)에 데이터가 유지되어 있는 경우에는, 이들에 관한 기본 정보와, 상세 정보에 대한 포인터도 유지하고 있다. 논리 트랙 어드레스(30a)를 인덱스로 한 배열 형식으로 구성된다. 논리 트랙 어드레스(30a)를 인덱스로 한 각 엔트리는, 클러스터 비트맵(30b), 논리 블록 ID(30c)+논리 블록 내 트랙 위치(30d), 클러스터 테이블 포인터(30e), FS 클러스터수(30f), IS 클러스터수(30g) 등의 정보로 구성되어 있다. 트랙 관리 테이블(30)은, 논리 트랙 어드레스를 인덱스로 하여, 그 논리 트랙 어드레스에 대응하는 논리 트랙이 기억되어 있는 논리 블록 ID(기억 디바이스 위치에 대응) 등의 소요 정보를 얻기 때문에, 정색인 테이블로서 기능한다.
클러스터 비트맵(30b)은, 1개의 논리 트랙 어드레스 범위에 속하는 2(k-i)개의 클러스터를 클러스터 어드레스 오름차순으로 예를 들어 8분할한 비트맵이며, 8개의 각 비트는, 2(k-i-3)개의 클러스터 어드레스에 대응하는 클러스터가 MS(11)에 존재하는지, FS(12) 또는 IS(13)에 존재하는지를 나타낸다. 비트가 "0"인 경우는 그 검색 대상 클러스터가 확실하게 MS(11) 내에 존재하는 것을 나타내고, 비트가 "1"인 경우는 그 클러스터가 FS(12) 또는 IS(13)에 존재할 가능성이 있는 것을 나타낸다.
논리 블록 ID(30c)은, 해당 논리 트랙 어드레스에 대응하는 논리 트랙이 기억되어 있는 논리 블록 ID를 식별하기 위한 정보이다. 논리 블록 내 트랙 위치(30d)는, 논리 블록 ID(30c)로 지정된 논리 블록 중에서의 해당 논리 트랙 어드레스(30a)에 대응하는 트랙의 기억 위치를 나타내는 것이다. 1 논리 블록은 최대 2i개의 유효 트랙으로 구성되기 때문에, 논리 블록 내 트랙 위치(30d)는 i 비트로 2i개의 트랙 위치를 식별한다.
클러스터 테이블 포인터(30e)는 링크드 리스트 구조를 갖는 FS/IS 관리 테이블(40)의 각 리스트의 선두 엔트리에 대한 포인터이다. 클러스터 비트맵(30b)의 검색에서, 해당 클러스터가 FS(12)/IS(13)에 존재할 가능성이 있는 것을 나타낸 경우, 클러스터 테이블 포인터(30e)를 사용하여 FS/IS 관리 테이블(40)의 검색을 실행한다. FS 클러스터수(30f)는 FS(12) 내에 존재하는 유효 클러스터수를 나타낸다. IS 클러스터수(30g)는 IS(13) 내에 존재하는 유효 클러스터수를 나타낸다.
ㆍFS/IS 관리 테이블(40) (정색인)
다음으로, 도 13을 사용하여 FS/IS 관리 테이블(40)에 관해 설명한다. FS/IS 관리 테이블(40)은, 논리 클러스터 단위로 FS(12)[FSIB(12a)도 포함] 또는 IS(13)에 유지되어 있는 데이터의 위치를 관리하기 위한 테이블이다. 도 13에 나타내는 바와 같이, 논리 트랙 어드레스마다 독립된 링크드 리스트 형식으로 구성되고, 각 리스트의 선두 엔트리에 대한 포인터는, 전술한 바와 같이 트랙 관리 테이블(30)의 클러스터 테이블 포인터(30e) 필드에 유지되어 있다. 도 13에서는, 2개의 논리 트랙 어드레스분의 링크드 리스트가 나타나 있다. 각 엔트리는, 논리 클러스터 어드레스(40a), 논리 블록 ID(40b), 논리 블록 내 클러스터 위치(40c), FS/IS 블록 ID(40d), 넥스트 포인터(40e)로 구성되어 있다. FS/IS 관리 테이블(40)은, 논리 클러스터 어드레스(40a)로부터, 그 논리 클러스터 어드레스에 대응하는 논리 클러스터가 기억되어 있는 논리 블록 ID(40b), 논리 블록 내 클러스터 위치(40c)(기억 디바이스 위치에 대응) 등의 소요 정보를 얻기 때문에, 정색인 테이블로서 기능한다.
논리 블록 ID(40b)는, 해당 논리 클러스터 어드레스(40a)에 대응하는 논리 클러스터가 기억되어 있는 논리 블록 ID를 식별하기 위한 정보이다. 논리 블록 내 클러스터 위치(40c)는, 논리 블록 ID(40b)로 지정된 논리 블록 중에서의 해당 논리 클러스터 어드레스(40a)에 대응하는 클러스터의 기억 위치를 나타내는 것이다. 1 논리 블록은 최대 2k개의 유효 클러스터로 구성되기 때문에, 논리 블록 내 클러스터 위치(40c)는 k비트로 2k 위치를 식별한다. FS/IS 블록 ID(40d)는, 후술하는 FS/IS 논리 블록 관리 테이블(42)의 인덱스인 FS/IS 블록 ID가 등록되어 있다. FS/IS 블록 ID는 FS(12) 또는 IS(13)에 소속되는 논리 블록을 식별하기 위한 정보이며, 이 FS/IS 관리 테이블(40)에서의 FS/IS 블록 ID(40d)는, 후술하는 FS/IS 논리 블록 관리 테이블(42)과의 링크를 위해 등록되어 있다. 넥스트 포인터(40e)는 논리 트랙 어드레스마다 링크되는 동일한 리스트 내의 다음 엔트리에 대한 포인터를 나타낸다.
ㆍMS 논리 블록 관리 테이블(35) (역색인)
다음으로, 도 14를 사용하여 MS 논리 블록 관리 테이블(35)에 관해 설명한다. MS 논리 블록 관리 테이블(35)은, MS(11)에 사용되고 있는 논리 블록에 관한 정보(어떤 논리 트랙이 기억되어 있는지, 추기 가능한지 등)를 일원 관리하기 위한 테이블이다. MS 논리 블록 관리 테이블(35)에는, FS(12)[FSIB(12)도 포함], IS(13)에 소속되는 논리 블록에 관한 정보도 등록되어 있다. MS 논리 블록 관리 테이블(35)은 논리 블록 ID(35a)를 인덱스로 한 배열 형식으로 구성되고, 엔트리수는 128 GB의 NAND 메모리(10)의 경우는 32K 엔트리까지 가질 수 있다. 각 엔트리는, 2i 트랙분의 트랙 관리 포인터(35b), 유효 트랙수(35c), 기록 가능 선두 트랙(35d), Valid 플래그(35e)로 구성되어 있다. 이 MS 논리 블록 관리 테이블(35)은, 기억 디바이스 위치에 대응하는 논리 블록 ID(35a)으로부터, 이 논리 블록에 기억되어 있는 논리 트랙 어드레스 등의 소요 정보를 얻기 때문에, 역색인 테이블로서 기능한다.
트랙 관리 포인터(35b)는, 논리 블록 ID(35a)로 지정되는 해당 논리 블록 내의 2i개의 트랙 위치마다 대응하는 논리 트랙 어드레스를 유지한다. 이 논리 트랙 어드레스를 사용하여, 논리 트랙 어드레스를 인덱스로 하는 트랙 관리 테이블(30)을 검색할 수 있다. 유효 트랙수(35c)는, 논리 블록 ID(35a)로 지정되는 해당 논리 블록에 기억되어 있는 트랙 중의 유효한 것의 개수(최대 2i개)를 나타낸다. 기록 가능 선두 트랙 위치(35d)는 논리 블록 ID(35a)로 지정되는 해당 논리 블록이 추기중의 블록이었던 경우에서의 추기 가능한 트랙 선두 위치(0∼2i-1, 추기 종료시는 2i)를 나타낸다. Valid 플래그(35e)는, 해당 논리 블록 엔트리가 MS(11)(MSIB(11a)도 포함)로서 관리되는 경우에 "1"이다.
ㆍFS/IS 논리 블록 관리 테이블(42) (역색인)
다음으로, 도 15를 사용하여 FS/IS 논리 블록 관리 테이블(42)에 관해 설명한다. FS/IS 논리 블록 관리 테이블(42)은, FS/IS 블록 ID(42a)를 인덱스로 한 배열 형식으로 구성되고, FS(12) 또는 IS(13)로서 이용되고 있는 논리 블록에 관한 정보[논리 블록 ID와의 대응, FS/IS 내 클러스터 관리 테이블(44)로의 인덱스, 추기 가능한지 등]를 관리하기 위한 테이블이다. FS/IS 논리 블록 관리 테이블(42)은, 주로 FS/IS 관리 테이블(40) 중의 FS/IS 블록 ID(40d)를 사용하여 액세스된다. 각 엔트리는, 논리 블록 ID(42b), 블록 내 클러스터 테이블(42c), 유효 클러스터수(42d), 기록 가능 선두 페이지(42e), Valid 플래그(42f)로 구성되어 있다. 이 FS/IS 논리 블록 관리 테이블(42)은 기억 디바이스 위치에 대응하는 FS/IS 블록 ID(42a)로부터, 이 논리 블록에 기억되어 있는 논리 클러스터 등의 소요 정보를 얻기 때문에, 역색인 테이블로서 기능한다.
논리 블록 ID(42b)에는, MS 논리 블록 관리 테이블(35)에 등록된 논리 블록 중에서, FS(12)[FSIB(12a)도 포함], IS(13)에 소속되어 있는 논리 블록에 대응하는 논리 블록 ID가 등록된다. 블록 내 클러스터 테이블(42c)에는, 논리 블록 중의 각 클러스터 위치에 어떤 논리 클러스터 어드레스로 지정되는 논리 클러스터가 기록되어 있는지를 나타내는 후술하는 FS/IS 내 클러스터 관리 테이블(44)에의 인덱스가 등록된다. 유효 클러스터수(42d)는, FS/IS 블록 ID(42a)로 지정되는 해당 논리 블록에 기억되어 있는 클러스터 중 유효한 것의 개수(최대 2k개)를 나타낸다. 기록 가능 선두 페이지 위치(42e)는, FS/IS 블록 ID(42a)로 지정되는 해당 논리 블록이 추기중의 블록이었던 경우에서의 추기 가능한 선두 페이지 위치(0∼2j-1, 추기 종료시는 2j)를 나타낸다. Valid 플래그(42f)는, 이 논리 블록 엔트리가 FS(12)[FSIB(12a)도 포함] 또는 IS(13)로서 관리되는 경우에 "1"이다.
ㆍFS/IS 내 클러스터 관리 테이블(44) (역색인)
다음으로, 도 16을 사용하여 FS/IS 내 클러스터 관리 테이블(44)에 관해 설명한다. FS/IS 내 클러스터 관리 테이블(44)은, FS(12) 또는 IS(13)로서 이용되고 있는 논리 블록 중의 각 클러스터 위치에 어떤 논리 클러스터가 기록되어 있는지를 나타내는 테이블이다. 1 논리 블록당, 2j 페이지×2(k-j) 클러스터=2k개의 엔트리를 가지며, 해당 논리 블록 내의 클러스터 위치의 0번째∼2k-1번째에 대응하는 정보가 연속 영역에 배치된다. 또한 이 2k개의 정보를 포함하는 테이블이 FS(12) 및 IS(13)에 소속되는 논리 블록수(P개)분만큼 유지되어 있고, FS/IS 논리 블록 관리 테이블(42)의 블록 내 클러스터 테이블(42c)은 이 P개의 테이블에 대한 위치 정보(포인터)로 되어 있다. 연속 영역에 배치되는 각 엔트리(44a)의 위치는 1 논리 블록 중의 클러스터 위치를 나타내고, 또 각 엔트리(44a)의 내용은 해당 클러스터 위치에 어떤 논리 클러스터가 기억되어 있는지를 식별할 수 있도록, FS/IS 관리 테이블(40)에서 관리되는 해당 논리 클러스터 어드레스를 포함하는 리스트로의 포인터가 등록되어 있다. 즉, 엔트리(44a)는, 링크드 리스트의 선두를 지시하는 것이 아니라, 링크드 리스트 중의 해당 논리 클러스터 어드레스를 포함하는 1개의 리스트로의 포인터가 등록되어 있다.
ㆍ논리-물리 변환 테이블(50) (정색인)
다음으로, 도 17을 이용하여 논리-물리 변환 테이블(50)에 관해 설명한다. 논리-물리 변환 테이블(50)은 논리 블록 ID(50a)를 인덱스로 한 배열 형식으로 구성되고, 엔트리수는 128 GB의 NAND 메모리(10)의 경우는, 최대 32K 엔트리까지 가질 수 있다. 논리-물리 변환 테이블(50)은 논리 블록 ID와 물리 블록 ID의 변환, 수명에 관한 정보를 관리하기 위한 테이블이다. 각 엔트리는 물리 블록 어드레스(50b), 소거 횟수(50c), 독출 횟수(50d)로 구성된다. 이 논리-물리 변환 테이블(50)은 논리 블록 ID로부터 물리 블록 ID(물리 블록 어드레스) 등의 소요 정보를 얻기 때문에, 정색인 테이블로서 기능한다.
물리 블록 어드레스(50b)는, 1개의 논리 블록 ID(50a)에 소속되는 8개의 물리 블록 ID(물리 블록 어드레스)를 나타낸다. 소거 횟수(50c)는, 해당 논리 블록 ID의 소거 횟수를 나타낸다. 배드 블록(BB) 관리는 물리 블록(512 kB) 단위로 행해지지만, 소거 횟수의 관리는 32비트 배속 모드에 따른 1 논리 블록(4 MB) 단위로 관리된다. 독출 횟수(50d)는 해당 논리 블록 ID의 독출 횟수를 나타낸다. 소거 횟수(50c)는, 예를 들어 NAND형 플래시 메모리의 재기록 횟수를 평준화하는 웨어 레벨링 처리에서 이용될 수 있다. 독출 횟수(50d)는 리텐션 특성이 열화한 물리 블록에 유지되는 데이터를 재기록하는 리프레시 처리에서 이용될 수 있다.
웨어 레벨링 처리에 관해서는, 예를 들어 동출원인에 의한 국제 특허 출원 PCT/JP2008/066508 및 PCT/JP2008/066507에 개시되어 있다. 리프레시 처리에 관해서는, 예를 들어 동출원인에 의한 국제 특허 출원 PCT/JP2008/067597에 개시되어 있다. 이러한 국제 특허 출원의 모든 내용은 본 출원에서 원용된다.
도 8에 나타낸 관리 테이블을 관리 대상마다 정리하면 다음과 같다.
RC 관리 : RC 클러스터 관리 테이블
WC 관리 : WC 클러스터 관리 테이블, WC 트랙 관리 테이블
MS 관리 : 트랙 관리 테이블(30), MS 논리 블록 관리 테이블(35)
FS/IS 관리 : 트랙 관리 테이블(30), FS/IS 관리 테이블(40), MS 논리 블록 관리 테이블(35), FS/IS 논리 블록 관리 테이블(42), FS/IS 내 클러스터 관리 테이블(44)
MS 구조 관리 테이블(도시하지 않음)에서, MS(11), MSIB(11a), TFS(11b)를 포함한 MS 영역의 구조를 관리하고, 구체적으로는, MS(11), MSIB(11a), TFS(11b)에 할당한 논리 블록 등을 관리한다. 또, FS/IS 구조 관리 테이블(도시하지 않음)에서, FS(12), FSIB(12a), IS(13)를 포함한 FS/IS 영역의 구조를 관리하고, 구체적으로는, FS(12), FSIB(12a), IS(13)에 할당한 논리 블록 등을 관리한다.
ㆍ리드 처리
다음으로, 도 18에 나타내는 흐름도를 참조하여 독출 처리에 관해 설명한다. ATA 커맨드 처리부(121)로부터, 리드 커맨드 및 독출 어드레스로서의 LBA가 입력되면, 데이터 관리부(120)는, 도 9에 나타낸 RC 클러스터 관리 테이블(23)과 도 10에 나타낸 WC 클러스터 관리 테이블(25)을 검색한다(단계 S100). 구체적으로는, LBA의 클러스터 어드레스의 LSB (k-i)비트(도 7 참조)에 대응하는 라인을 RC 클러스터 관리 테이블(23)과 WC 클러스터 관리 테이블(25)에서 선택하여, 선택한 라인의 각 웨이에 엔트리되어 있는 논리 트랙 어드레스(23b, 25c)를 LBA의 트랙 어드레스와 비교하고(단계 S110), 일치한 웨이가 존재하는 경우는 캐쉬 히트로 하고, 히트한 RC 클러스터 관리 테이블(23) 또는 WC 클러스터 관리 테이블(25)의 해당 라인, 해당 웨이에 대응하는 WC(21) 또는 RC(22)의 데이터를 독출하여, ATA 커맨드 처리부(121)로 보낸다(단계 S115).
데이터 관리부(120)는, RC(22) 또는 WC(21)에서 히트하지 않은 경우는(단계 S110), 검색 대상 클러스터가 NAND 메모리(10)의 어디에 저장되어 있는지를 검색한다. 데이터 관리부(120)는, 우선 도 12에 나타낸 트랙 관리 테이블(30)을 검색한 다(단계 S120). 트랙 관리 테이블(30)은, 논리 트랙 어드레스(30a)로 인덱스되어 있기 때문에, LBA로 지정된 논리 트랙 어드레스에 일치하는 논리 트랙 어드레스(30a)의 엔트리만을 체크한다.
우선, 체크하고자 하는 LBA의 논리 클러스터 어드레스에 기초하여 클러스터 비트맵(30b)으로부터 대응하는 비트를 선택한다. 대응하는 비트가 "0"을 나타내고 있으면, 그 클러스터는 확실하게 MS 내에 최신 데이터가 존재하고 있는 것을 의미한다(단계 S130). 이 경우는, 이 트랙이 존재하는 논리 블록 ID 및 트랙 위치를, 동일한 논리 트랙 어드레스(30a)의 엔트리 중의 논리 블록 ID(30c)와 논리 블록 내 트랙 위치(30d)에서 얻고, 또한 LBA의 클러스터 어드레스의 LSB (k-i)비트를 이용하여 트랙 위치로부터의 오프셋을 산출함으로써, NAND 메모리(10) 내의 해당 클러스터 어드레스에 대응하는 클러스터 데이터가 저장되어 있는 위치를 산출할 수 있다. 구체적으로는, 논리 NAND층 관리부(120b)에서는, 상기와 같이 하여 트랙 관리 테이블(30)로부터 취득한 논리 블록 ID(30c)와 논리 블록 내 트랙 위치(30d)와, LBA의 논리 클러스터 어드레스의 LSB (k-i)비트를 물리 NAND층 관리부(120c)에 제공한다.
물리 NAND층 관리부(120c)에서는, 논리 블록 ID(30c)에 대응하는 물리 블록 어드레스(물리 블록 ID)를, 논리 블록 ID를 인덱스로 하고 있는 도 17에 나타내는 논리-물리 변환 테이블(50)로부터 취득하고(단계 S160), 또한 취득한 물리 블록 ID 중의 트랙 위치(트랙 선두 위치)를 논리 블록 내 트랙 위치(30d)로부터 산출하고, 또한 LBA의 클러스터 어드레스의 LSB (k-i)비트로부터, 상기 산출한 물리 블록 ID 중의 트랙 선두 위치로부터의 오프셋을 산출함으로써, 물리 블록 중의 클러스터 데이터를 취득할 수 있다. NAND 메모리(10)의 MS(11)로부터 취득된 클러스터 데이터는 RC(22)를 통해 ATA 커맨드 처리부(121)로 보내진다(단계 S180).
한편, LBA의 클러스터 어드레스에 기초하는 클러스터 비트맵(30b)의 검색에서, 대응하는 비트가 "1"을 나타낸 경우는, 그 클러스터가 FS(12) 또는 IS(13)에 저장되어 있을 가능성이 있다(단계 S130). 이 경우는, 트랙 관리 테이블(30)의 해당하는 논리 트랙 어드레스(30a)의 엔트리 중의 클러스터 테이블 포인터(30e)의 엔트리를 추출하고, 이 포인터를 사용하여 FS/IS 관리 테이블(40)의 해당하는 논리 트랙 어드레스에 대응하는 링크드 리스트를 순서대로 검색한다(단계 S140). 구체적으로는, 해당하는 논리 트랙 어드레스의 링크드 리스트 중의 LBA의 논리 클러스터 어드레스에 일치하는 논리 클러스터 어드레스(40a)의 엔트리를 검색하여, 일치하는 논리 클러스터 어드레스(40a)의 엔트리가 존재한 경우는(단계 S150), 일치한 리스트 중의 논리 블록 ID(40b) 및 논리 블록 내 클러스터 위치(40c)를 취득하고, 전술한 바와 동일하게 하여, 논리-물리 변환 테이블(50)을 사용하여 물리 블록 중의 클러스터 데이터를 취득한다(단계 S160, S180). 구체적으로는, 취득한 논리 블록 ID에 대응하는 물리 블록 어드레스(물리 블록 ID)를, 논리-물리 변환 테이블(50)로부터 취득하고(단계 S160), 또한 취득한 물리 블록 ID 중의 클러스터 위치를, 논리 블록 내 클러스터 위치(40c)의 엔트리로부터 취득한 논리 블록 내 클러스터 위치로부터 산출함으로써, 물리 블록 중의 클러스터 데이터를 취득할 수 있다. NAND 메모리(10)의 FS(12) 또는 IS(13)로부터 취득된 클러스터 데이터는 RC(22)를 통해 ATA 커맨드 처리부(121)로 보내진다(단계 S180).
이 FS/IS 관리 테이블(40)의 검색에 의해, 검색 대상 클러스터가 존재하지 않는 경우는(단계 S150), 다시 트랙 관리 테이블(30)의 엔트리를 검색하여 MS(11) 상의 위치를 확정한다(단계 S170).
ㆍ라이트 처리
다음으로, 도 19에 나타내는 흐름도를 참조하여 기록 처리에 관해 설명한다. FUA(DRAM 캐쉬를 바이패스하여 NAND에 직접 기록한다)가 아닌 라이트 커맨드에 의해 기록된 데이터는 반드시 일단 WC(21) 상에 저장되고, 그 후 조건에 따라 NAND 메모리(10)에 기록되게 된다. 기록 처리에서는, 방출 처리, 컴팩션 처리가 발생할 가능성이 있다. 이 실시형태에서는, 기록 처리를 라이트 캐쉬 플래시 처리(이하 WCF 처리)와, 클린 입력 버퍼 처리(이하 CIB 처리)의 2 스테이지로 크게 분할하고 있다. 단계 S300부터 단계 S320까지는, ATA 커맨드 처리부(121)로부터의 라이트 요구부터 WCF 처리까지를 나타내고, 단계 S330∼최종 단계까지가 CIB 처리를 나타낸다.
WCF 처리는, WC(21)에 있는 데이터를 NAND 메모리(10)[FS(12)의 FSIB(12a) 또는 MS(11)의 MSIB(11a)]에 카피하는 처리이며, ATA 커맨드 처리부(121)로부터의 라이트 요구 또는 캐쉬 플러쉬 요구 단체(單體)는 이 처리만으로 완결될 수 있다. 이에 의해 처리가 시작된 ATA 커맨드 처리부(121)의 라이트 요구의 처리 지연을 최대 WC(21)의 용량분의 NAND 메모리(10)로의 기록 시간에 한정할 수 있게 된다.
CIB 처리는, WCF 처리에 의해 기록된 FSIB(12a)의 데이터를 FS(12)로 이동하 는 처리와, WCF 처리에 의해 기록된 MSIB(11a)의 데이터를 MS(11)로 이동하는 처리를 포함한다. CIB 처리를 시작하면, 연쇄적으로 NAND 메모리(10) 내의 각 구성 요소[FS(12), IS(13), MS(11) 등] 간의 데이터 이동이나 컴팩션 처리가 발생할 가능성이 있고, 처리 전체에 필요한 시간은 상태에 따라 크게 변한다.
우선, WCF 처리에 관해 상세하게 설명한다. ATA 커맨드 처리부(121)로부터, Write 커맨드 및 기록 어드레스로서의 LBA가 입력되면, DRAM층 관리부(120)는, 도 10에 나타낸 WC 클러스터 관리 테이블(25)을 검색한다(단계 S300, S305). WC(21)의 상태는, 도 10에 나타낸 WC 클러스터 관리 테이블(25)의 상태 플래그(25a)(예를 들어 3비트)에 의해 규정되어 있다. 상태 플래그(25a)는, 가장 전형적으로는 Invalid(사용 가능)→ATA로부터의 기록 대기→Valid(사용 불가)→NAND로의 방출 대기→Invalid(사용 가능)와 같은 순서로 상태가 변화되어 간다. 우선, LBA의 클러스터 어드레스 LSB (k-i)비트로부터 기록처의 라인을 결정하고, 결정한 라인의 n개의 웨이를 검색한다. 결정한 라인의 n개의 웨이 가운데, 입력된 LBA와 동일한 논리 트랙 어드레스(25c)가 저장되어 있는 경우는(단계 S305), 이 엔트리에 덮어쓰기하여 이 엔트리를 클러스터 기록용으로 확보한다[Valid(사용 불가)→ATA로부터의 기록 대기].
그리고, DRAM층 관리부(120a)는, 해당 엔트리에 대응하는 DRAM 어드레스를 ATA 커맨드 처리부(121)에 통지한다. ATA 커맨드 처리부(121)에 의한 기록이 종료하면, WC 클러스터 관리 테이블(25)의 해당 엔트리의 상태 플래그(25a)를 Valid(사용 불가)로 하고, 또한 섹터 위치 비트맵(25b) 및 논리 트랙 어드레스(25c) 필드에 소요 데이터를 등록한다. 또, WC 트랙 관리 테이블(24)을 갱신한다. 구체적으로는, WC 트랙 관리 테이블(24)의 각 리스트 중에 이미 등록이 완료된 논리 트랙 어드레스(24a)와 동일한 LBA 어드레스가 입력된 경우는, 해당하는 리스트의 WC 클러스터수(24b), 웨이-라인 비트맵(24c)을 갱신하고, 해당 리스트가 최신 리스트가 되도록 넥스트 포인터(24d)를 변경한다. 또, WC 트랙 관리 테이블(24)의 각 리스트 중에 등록이 완료된 논리 트랙 어드레스(24a)와 상이한 LBA 어드레스가 입력된 경우는, 새로운 논리 트랙 어드레스(24a), WC 클러스터수(24b), 웨이-라인 비트맵(24c), 넥스트 포인터(24d)의 각 엔트리를 갖는 리스트를 새롭게 작성하여 최신 리스트로서 등록한다. 이상과 같은 테이블 갱신을 행하여 기록 처리가 완료된다(단계 S320).
한편, 결정한 라인의 n개의 웨이중에, 입력된 LBA와 동일한 논리 트랙 어드레스(25c)가 저장되지 않은 경우는, NAND 메모리로의 방출이 필요한지 아닌지를 판단한다(단계 S305). 즉, 우선 결정한 라인중의 기록 가능한 웨이가 최후 n개째 웨이인지 아닌지를 판단한다. 기록 가능한 웨이란, Invalid(사용 가능)의 상태 플래그(25a)를 갖는 웨이이거나, 또는 Valid(사용 불가)이고 또한 NAND로의 방출 대기의 상태 플래그(25a)를 갖는 웨이이다. 상태 플래그(25a)가 NAND로의 방출 대기라는 것은, 방출이 시작되어 방출 종료 대기인 것을 의미한다. 그리고, 기록 가능한 웨이가 최후 n개째 웨이가 아닌 경우이고, 또한 기록 가능한 웨이가 Invalid(사용 가능)의 상태 플래그(25a)를 갖는 웨이인 경우는, 이 엔트리를 클러스터 기록용으로 확보한다[Invalid(사용 가능)→ATA로부터의 기록 대기]. 그리고, 해당 엔트리에 대응하는 DRAM 어드레스를 ATA 커맨드 처리부(121)에 통지하여, ATA 커맨드 처리 부(121)에 의해 기록을 실행시킨다. 그리고, 상기와 마찬가지로 WC 클러스터 관리 테이블(25) 및 WC 트랙 관리 테이블(24)을 갱신한다(단계 S320).
또, 기록 가능한 웨이가 최후 n개째 웨이가 아닌 경우이고, 또한 기록 가능한 웨이가 Valid(사용 불가)이며 NAND로의 방출 대기의 상태 플래그(25a)를 갖는 웨이인 경우는, 이 엔트리를 클러스터 기록용으로 확보한다[Valid(사용 불가)이고 또한 NAND로의 방출 대기→Valid(사용 불가)이고 또한 NAND로의 방출 대기이고 또한 ATA로부터의 기록 대기]. 그리고, 방출이 종료하면, 상태 플래그(25a)를 ATA로부터의 기록 대기로 하고, 또한 해당 엔트리에 대응하는 DRAM 어드레스를 ATA 커맨드 처리부(121)에 통지하여, ATA 커맨드 처리부(121)에 의해 기록을 실행시킨다. 그리고, 상기와 마찬가지로 WC 클러스터 관리 테이블(25) 및 WC 트랙 관리 테이블(24)을 갱신한다(단계 S320).
이상의 처리는, ATA 커맨드 처리부(121)로부터의 기록 요구가 입력되었을 때, 방출 처리를 트리거하지 않아도 되는 경우이다. 한편, 이후의 설명은, 기록 요구가 입력된 시점 후에 방출 처리를 트리거하는 경우이다. 단계 S305에서, 결정한 라인중의 기록 가능한 웨이가 최후 n개째 웨이인 경우는, 전술한 WC(21)로부터 NAND 메모리(10)에 방출하는 데이터의 결정 방법 중 (i) 항목에서 설명한 조건, 즉
(i) 태그에 따라 결정된 라인의 기록 가능한 웨이가 최후의(본 실시형태에서는 n개째) 빈 웨이인 경우, 즉 최후의 빈 웨이가 사용되는 경우는, 그 라인에 등록된 트랙 중 LRU에 기초하여 가장 오래전에 갱신된 트랙을 방출 확정하는 것에 기초하여 방출하는 트랙, 즉 WC(21) 내 엔트리를 선택한다.
DRAM층 관리부(120a)는, 이상의 방침으로 방출하는 트랙을 결정하면, 전술한 바와 같이, 그 때 방출하는 것은 동일 트랙에 포함되는 WC(21) 중의 전체 클러스터이며, 방출되는 클러스터량이 트랙 사이즈의 50%를 초과하면, 즉 방출 확정 트랙 중 WC 중에 유효 클러스터수가 2(k-i-1)개 이상 있는 경우는 MSIB(11a)에 방출하고(단계 S310), 초과하면, 즉 방출 확정 트랙 가운데 WC 중에 유효 클러스터수가 2(k-i-1)개 미만인 경우는 FSIB(12a)에 방출한다(단계 S315). WC(21)로부터 MSIB(11a)로의 방출, WC(21)로부터 FSIB(12a)로의 방출에 대한 상세한 내용은 후술한다. 선택된 방출 엔트리의 상태 플래그(25a)는 Valid(사용 불가)로부터 NAND 메모리(10)로의 방출 대기로 이행된다.
이 방출처의 판정은 WC 트랙 관리 테이블(24)을 사용하여 실행된다. 즉, WC 트랙 관리 테이블(24)에는, 논리 트랙 어드레스마다, 유효한 클러스터수를 나타내는 WC 클러스터수(24b)의 엔트리가 등록되어 있고, 이 WC 클러스터수(24b)의 엔트리를 참조함으로써 WC(21)로부터의 방출처를 FSIB(12a), MSIB(11a) 중 어느 것으로 할지 결정한다. 또, 해당 논리 트랙 어드레스에 소속되는 모든 클러스터가 비트맵 형식으로 웨이-라인 비트맵(24c)에 등록되어 있기 때문에, 방출 시에는 이 웨이-라인 비트맵(24c)을 참조함으로써, 방출해야 할 각 클러스터의 WC(21)에서의 기억 위치를 용이하게 알 수 있다.
또, 상기 기록 처리중 또는 기록 처리후, 전술한 하기 조건,
(ii) WC(21)에 등록되어 있는 트랙의 수가 소정 개수를 초과한 경우,
가 성립한 경우도, 상기와 동일하게 하여 NAND 메모리(10)로의 방출 처리를 실행한다.
WC→MSIB (Copy)
다음으로, 상기 유효 클러스터수[유효 클러스터수가 2(k-i-1)개 이상]에 기초한 판정에 의해 WC(21)로부터 MSIB(11a)로의 방출이 발생했을 때에는, 전술한 바와 같이 다음과 같은 절차를 실행한다(단계 S310).
1. WC 클러스터 관리 테이블(25)을 참조하고, 방출되는 클러스터에 대응하는 태그 중의 섹터 위치 비트맵(25b)을 참조하여, 섹터 위치 비트맵(25b)이 모두 "1"이 아닌 경우는, NAND 메모리(10)에 포함되는 동일 클러스터 중의 섹터와 머지하는, 후술하는 트랙 내 섹터 빈 곳 채우기를 실행한다. 또, 트랙 중의 WC(21) 내에 존재하지 않는 클러스터는 NAND 메모리(10)로부터 독출하여 머지하는, 수동 머지 처리를 실행한다.
2. 방출 확정 트랙이 2i개 미만인 경우, WC(21) 중의 트랙의 오래된 것부터 2i개가 될 때까지 2(k-i-1)개 이상 유효 클러스터를 갖는 방출 확정 트랙을 추가한다.
3. 카피되는 트랙이 2i개 이상이면, 2i개씩을 세트로 하여, MSIB(11a)에 대하여 논리 블록 단위로 기록한다.
4. 2i개 세트로 할 수 없었던 트랙은 MSIB(11a)에 대하여 트랙 단위로 기록한다.
5. 카피 종료후에 이미 FS, IS, MS 상에 존재했던 클러스터, 트랙 중 카피된 트랙에 속하는 것은 무효화한다.
이러한 WC(21)로부터 MSIB(11a)로의 카피 처리에 따르는 각 관리 테이블의 갱신 처리에 관해 설명한다. WC 클러스터 관리 테이블(25) 중의 방출된 트랙에 소속되는 WC(21) 중의 전체 클러스터에 대응하는 엔트리 중의 상태 플래그(25a)는 Invalid로 되고, 그 후 이들 엔트리에 대한 기록이 가능해진다. 또, WC 트랙 관리 테이블(24) 중의 방출된 트랙에 대응하는 리스트는, 예를 들어 직전 리스트의 넥스트 포인터(24d)가 변경 또는 삭제되어 무효화된다.
한편, WC(21)로부터 MSIB(11a)에 대한 트랙 이동이 발생하면, 이에 따라 트랙 관리 테이블(30) 및 MS 논리 블록 관리 테이블(35)이 갱신된다. 우선, 트랙 관리 테이블(30)의 인덱스인 논리 트랙 어드레스(30a)를 검색함으로써, 이동된 트랙에 대응하는 논리 트랙 어드레스(30a)가 이미 등록되어 있는지 아닌지를 판정한다. 이미 등록되어 있는 경우는, 해당 인덱스의 클러스터 비트맵(30b)[MS(11)측으로의 이동이기 때문에, 해당 비트를 모두 "0"으로 한다], 논리 블록 ID(30c)+논리 블록 내 트랙 위치(30d) 필드를 갱신한다. 이동된 트랙에 대응하는 논리 트랙 어드레스(30a)가 미등록인 경우는, 해당하는 논리 트랙 어드레스(30a)의 엔트리에 대하여, 클러스터 비트맵(30b), 논리 블록 ID(30c)+논리 블록 내 트랙 위치(30d)를 등록한다. 또, 트랙 관리 테이블(30)의 변경에 따라, MS 논리 블록 관리 테이블(35)에서의 논리 블록 ID(35a), 해당 트랙 관리 포인터(35b), 유효 트랙수(35c), 기록 가능 선두 트랙(35d) 등의 엔트리를 필요에 따라 갱신한다.
다른 영역[FS(12)이나 IS(13)] 등으로부터 MS(11)에 대하여 트랙 기록이 발생한 경우, 또는 MS(11) 내부의 컴팩션 처리에 의한 MS 내 트랙 기록이 발생한 경우, 기록 대상 트랙에 포함되는 WC(21) 내 유효 클러스터도 동시에 MS에 기록된다. WC(21)로부터 MS(11)에의 기록으로서 이러한 수동적 머지도 존재한다. 그와 같은 수동적 머지가 행해진 경우, 이들 클러스터는 WC(21) 상에서 삭제(무효화)되게 된다.
WC→FSIB (Copy)
이어서, 상기 유효 클러스터수[유효 클러스터수가 2(k-i-1)개 미만]에 기초한 판정에 따라 WC(21)로부터 FSIB(12a)로의 방출이 발생했을 때에는, 전술한 바와 같이 다음과 같은 절차를 실행한다.
1. WC 클러스터 관리 테이블(25)에서의 방출되는 클러스터에 대응하는 태그 중의 섹터 위치 비트맵(25b)을 참조하여, 섹터 위치 비트맵(25b)이 모두 "1"이 아닌 경우는, NAND 메모리(10)에 포함되는 동일 클러스터 중의 섹터와 머지하는, 클러스터 내 섹터 빈 곳 채우기를 실행한다.
2. WC내의 트랙을 오래된 순으로 거슬러 올라가 2(k-i-1)개 미만의 유효 클러스터만 갖는 트랙으로부터 클러스터를 추출하고, 유효 클러스터수가 2k개가 되면 그러한 전체 클러스터는 FSIB(12a)에 논리 블록 단위로 기록한다.
3. 2k개 발견되지 않은 경우에는, 유효 클러스터수가 2(k-i-1)개 미만인 모든 트랙을 필요한 논리 페이지수만큼 FSIB(12a)에 기록한다.
4. 카피 종료 후에 이미 FS, IS 상에 존재했던 클러스터 중 카피된 것과 동일한 것은 무효화한다.
이러한 WC(21)로부터 FSIB(12a)로의 카피 처리에 따르는 각 관리 테이블의 갱신 처리에 관해 설명한다. WC 클러스터 관리 테이블(25) 중의 방출된 트랙에 소속되는 WC(21) 중의 전체 클러스터에 대응하는 엔트리 중의 상태 플래그(25a)는 Invalid로 되고, 그 후 이들 엔트리에 대한 기록이 가능해진다. 또, WC 트랙 관리 테이블(24) 중의 방출된 트랙에 대응하는 리스트는, 예를 들어 직전 리스트의 넥스트 포인터(24d)가 변경 또는 삭제되어 무효화된다. 한편, WC(21)로부터 FSIB(12a)에 대한 클러스터 이동이 발생하면, 이에 따라 트랙 관리 테이블(30)의 클러스터 테이블 포인터(30e), FS 클러스터수(30f) 등을 갱신하고, FS/IS 관리 테이블(40)의 논리 블록 ID(40b), 논리 블록 내 클러스터 위치(40c) 등을 갱신한다. 원래 FS(12)에 존재하지 않았던 클러스터는, FS/IS 관리 테이블(40)의 링크드 리스트에의 리스트가 추가된다. 이 갱신에 따라, MS 논리 블록 관리 테이블(35), FS/IS 논리 블록 관리 테이블(42) 및 FS/IS 내 클러스터 관리 테이블(44)의 해당 개소를 갱신한다.
CIB 처리
상기와 같은 WCF 처리가 종료하면, 이어서 논리 NAND층 관리부(120b)는, WCF 처리에 의해 기록된 FSIB(12a)의 데이터를 FS(12)로 이동하는 처리와, WCF 처리에 의해 기록된 MSIB(11a)의 데이터를 MS(11)로 이동하는 처리 등을 포함하는 CIB 처리를 실행한다. CIB 처리를 시작하면, 전술한 바와 같이, 연쇄적으로 각 블록 간의 데이터 이동이나 컴팩션 처리가 발생할 가능성이 있어, 처리 전체에 필요한 시간은 상태에 따라 크게 변화한다. 이 CIB 처리에서는, 기본적으로는 우선 MS(11)에서의 CIB 처리가 행해지고(단계 S330), 이어서 FS(12)에서의 CIB 처리가 행해지고(단계 S340), 이어서 다시 MS(11)에서의 CIB 처리가 행해지고(단계 S350), 이어서 IS(13)에서의 CIB 처리가 행해지고(단계 S360), 마지막으로 다시 MS(11)에서의 CIB 처리가 행해진다(단계 S370). FS(12)로부터 MSIB(11a)로의 방출 처리, 또는 FS(12)로부터 IS(13)로의 방출 처리, 또는 IS(13)로부터 MSIB(11a)로의 방출 처리 시에, 절차에 루프가 발생하면, 상기 순서대로 되지 않는 경우도 있다. MS(11), FS(12) 및 IS(13)에서의 CIB 처리를 따로따로 설명한다.
MS(11)의 CIB 처리
우선, MS(11)에서의 CIB 처리에 관해 설명한다(단계 S330). WC(21), FS(12), IS(13)로부터 MS(11)에 대하여 트랙 데이터의 이동이 발생하면, 그 트랙 데이터는 MSIB(11a)에 기록된다. MSIB(11a)로의 기록이 완료된 후에는, 전술한 바와 같이, 트랙 관리 테이블(30)을 갱신하여 트랙이 배치되는 논리 블록 ID(30c)와 블록 내 트랙 위치(30d) 등을 변경한다(Move). MSIB(11a)에 새로운 트랙 데이터가 기록된 경우, 원래 MS(11) 또는 TFS(11b)에 존재했던 트랙 데이터는 무효화된다. 이 무효화 처리는, MS 논리 블록 관리 테이블(35)에서의 오래된 트랙 정보가 보존되어 있던 논리 블록의 엔트리로부터 트랙을 무효화함으로써 실현한다. 구체적으로는, MS 논리 블록 관리 테이블(35)의 해당 엔트리 중의 트랙 관리 포인터(35b) 필드 중의 해당 트랙의 포인터가 삭제되어, 유효 트랙수가 -1 된다. 이 트랙 무효화에 의해 1 논리 블록 중의 모든 트랙이 무효가 된 경우는, Valid 플래그(35e)가 무효화된다. 이러한 무효화 등에 의해, MS(11)의 블록은 무효 트랙을 포함한 것이 발생하고, 이것이 반복되면 블록의 이용 효율이 저하되어, 사용 가능한 논리 블록이 부족해지는 경우가 있다.
데이터 관리부(120)는, 이러한 사태가 발생하여, MS(11)에 할당되어 있는 논리 블록의 개수가 MS(11)로서 허용되는 블록수의 상한치를 초과하는 상황이 발생하면, 컴팩션 처리를 행하여 무효 프리 블록(FB)을 만든다. 무효 프리 블록(FB)은 물리 NAND층 관리부(120c)에 반환된다. 그리고, 논리 NAND층 관리부(120b)는, MS(11)에 할당되어 있는 논리 블록의 개수를 줄인 후, 새롭게 기록 가능한 프리 블록(FB)을 물리 NAND층 관리부(120c)로부터 취득한다. 컴팩션 처리란, 컴팩션 대상 논리 블록이 갖는 유효 클러스터를 새로운 논리 블록에 수집하거나, 또는 컴팩션 대상 논리 블록 중의 유효 트랙을 다른 논리 블록에 카피하거나 함으로써, 물리 NAND층 관리부(120c)에 반환되는 무효 프리 블록(FB)을 만들어, 논리 블록의 이용 효율을 향상시키기 위한 처리이다. 컴팩션을 행할 때에는, 컴팩션 대상이 된 트랙 영역에 대하여, WC, FS, IS 상의 유효한 클러스터가 존재하는 경우, 이들을 모두 머지하는 수동 머지를 실행한다. 또, TFS(11b)에 등록되어 있는 논리 블록은 컴팩션 대상에 포함시키지 않는다.
이하에, MSIB(11a)에 풀(full) 블록이 존재하는 경우를 발생 조건으로 한, MSIB(11a)로부터 MS(11) 또는 TFS(11b)로의 방출과 컴팩션 처리의 일례에 관해 구체적으로 설명한다.
1. MS 논리 블록 관리 테이블(35)의 Valid 플래그(35e)를 참조함으로써, MS(11) 내에 무효가 된 논리 블록이 존재하는 경우, 그 블록을 무효 프리 블록(FB)으로 한다.
2. MSIB(11a)에서 풀이 된 논리 블록을 MS(11)에 방출한다. 구체적으로는, 전술한 MS 구조 관리 테이블(도시하지 않음)을 갱신하여, 해당 논리 블록을 MSIB 관리하에서 MS 관리하로 옮긴다.
3. MS(11)에 할당되어 있는 논리 블록의 개수가 MS(11)로서 허용되는 블록수의 상한치를 초과하는 상황이 발생하는지의 여부를 판단하여, 발생하고 있는 경우에 이하의 MS 컴팩션을 실행한다.
4. MS 논리 블록 관리 테이블(35)의 유효 트랙수(35c) 필드 등을 참조함으로써, TFS(11b)에 포함되지 않는 논리 블록 중 무효가 된 트랙을 갖는 것을, 유효 트랙수로 소트한다.
5. 유효 트랙수가 적은 논리 블록으로부터, 트랙을 수집하여 컴팩션을 실시한다. 이 때, 우선 1 논리 블록분(2i 트랙)씩 카피하여 컴팩션을 실시한다. 컴팩션 대상 트랙이 WC(21), FS(12), IS(13)에 유효 클러스터를 갖는 경우에는 이들도 머지한다.
6. 컴팩션원(元)의 논리 블록을 무효 프리 블록(FB)으로 한다.
7. 컴팩션하여 유효한 2i 트랙으로 구성된 1 논리 블록이 생기면, TFS(11b)의 선두로 이동시킨다.
8. 논리 블록 내의 유효 트랙을 다른 논리 블록에 카피하여, 무효 프리 블록(FB)을 만들 수 있는 경우는, 2i 트랙 미만 개수의 유효 트랙을 MSIB(11a)에 대해 트랙 단위로 추기 기록한다.
9. 컴팩션원(元)의 논리 블록을 무효 프리 블록(FB)으로 한다.
10. MS(11)에 할당되어 있는 논리 블록의 개수가 MS(11)로서 허용되는 블록수의 상한치를 밑돌면 MS 컴팩션 처리를 종료한다.
FS(12)의 CIB 처리
다음으로, FS(12)에서의 CIB 처리에 관해 설명한다(단계 S340). WC(21)로부터 FSIB(12a)로의 클러스터 기록 처리에 의해 전체 페이지의 기록이 완료된 논리 블록이 FSIB(12a) 중에 만들어진 경우, FSIB(12a) 중의 이들 블록은 FSIB(12a)로부터 FS(12)에 대하여 이동한다. 이 이동에 따라 복수의 논리 블록으로 구성되는 FIFO 구조의 FS(12)로부터 오래된 논리 블록이 방출되는 상황이 발생한다.
FSIB(12a)로부터 FS(12)에 대한 방출 및 FS(12)로부터의 블록 방출은 구체적으로는 다음과 같이 실현된다.
1. FS/IS 논리 블록 관리 테이블(42)의 Valid 플래그(42f) 등을 참조함으로써, FS(12) 내에 무효가 된 논리 블록이 존재하는 경우, 그 블록을 무효 프리 블록(FB)으로 한다.
2. FSIB(12a)에서 풀이 된 블록을 FS(12)에 방출한다. 구체적으로는, 전술한 FS/IS 구조 관리 테이블(도시하지 않음)을 갱신하여, 해당 블록을 FSIB 관리하에서 FS 관리하로 옮긴다.
3. FS(12)에 할당되어 있는 논리 블록의 개수가 FS(12)로서 허용되는 블록수의 상한치를 초과하는 상황이 발생하는지의 여부를 판단하여, 발생하고 있는 경우에 이하의 방출을 실행한다.
4. 우선 방출 대상의 가장 오래된 논리 블록 중의 클러스터 데이터 가운데 IS(13)로 이동하지 않고 직접 MS(11)로 이동해야 하는 것을 결정한다(실제로는 MS의 관리 단위가 트랙이기 때문에, 트랙 단위로의 결정).
(가) 방출 대상 논리 블록 중의 유효 클러스터를 페이지의 선두부터 순서대로 스캔한다.
(나) 클러스터가 속하는 트랙이 FS 중에 유효 클러스터를 몇 개 보유하고 있는지를 트랙 관리 테이블(30)의 FS 클러스터수(30f) 필드를 참조하여 검색한다.
(다) 트랙 내 유효 클러스터수가 소정의 임계값(예를 들어 2k-i개의 50%) 이상이었던 경우, 그 트랙을 MS로의 방출 후보로 한다.
5. MS(11)에 방출해야 하는 트랙을 MSIB(11a)에 대하여 기록한다.
6. 방출 트랙이 남아 있는 경우 다시 MSIB(11)로의 방출을 실행한다.
7. 상기 2∼4의 처리후에도 방출 대상 논리 블록에 유효한 클러스터가 존재하고 있는 경우, 이 논리 블록을 IS(13)로 이동시킨다.
FS(12)로부터 MSIB(11a)로의 방출이 발생했을 때에는, 그 직후 MS(11)에서의 전술한 CIB 처리가 실행된다(단계 S350).
IS(13)의 CIB 처리
다음으로, IS(13)에서의 CIB 처리에 관해 설명한다(단계 S360). 상기 FS(12)로부터 IS(13)로의 블록 이동에 의해 논리 블록이 IS(13)에 추가되지만, 이에 따라 복수개의 논리 블록으로 구성되는 IS(13)에 대하여 관리 가능한 블록수의 상한을 초과하는 상황이 발생한다. 이러한 상황이 발생한 경우, IS(13)에서는, 우선 MS(11)로의 1∼복수개의 논리 블록의 방출을 행한 후, IS 컴팩션을 실행한다. 구체적으로는, 다음과 같은 절차를 실행한다.
1. IS(13)에 포함되는 트랙을 트랙 내의 유효 클러스터수×유효 클러스터 계수로 소트하여, 그 곱셈 값이 큰 트랙 2i+1개(2 논리 블록분)를 수집하여 MSIB(11a)에 방출한다.
2. 유효 클러스터수가 가장 적은 2i+1개의 논리 블록의 합계 유효 클러스터수가 예를 들어, 소정의 설정값인 2k개(1 논리 블록분) 이상 있는 경우는, 위의 단계를 반복한다.
3. 상기 방출을 행한 후, 유효 클러스터수가 적은 논리 블록으로부터 순서대로 클러스터를 2k개 수집하여 IS(13) 내에서 컴팩션을 행한다.
4. 컴팩션원(元)의 논리 블록 중 유효 클러스터가 없어진 것을 무효 프리 블록(FB)으로서 반환한다.
IS(13)로부터 MSIB(11a)로의 방출이 발생했을 때에는, 그 직후 MS(11)에서의 전술한 CIB 처리가 실행된다(단계 S370).
도 20은 각 구성 요소간의 데이터의 흐름에서의 입력과 출력의 조합 및 그 데이터의 흐름이 무엇을 트리거로 하여 발생하는지를 나타내는 도면이다. FS(12)는, 기본적으로는, WC(21)로부터의 클러스터 방출에 의해 데이터가 기록되지만, WC(21)로부터 FS(12)로의 방출에 부수하여 클러스터 내 섹터의 빈 곳을 채워야 하는 경우는(클러스터 빈 곳 채우기), FS(12), IS(13), MS(11)로부터의 데이터가 카피된다. WC(21)에서는, WC 클러스터 관리 테이블(25)의 태그 중의 섹터 위치 비트맵(25b)에 의해 해당 클러스터 어드레스 중의 2(l-k)개의 섹터의 유무를 식별시킴으로써 섹터(512B) 단위의 관리를 하는 것이 가능하다. 이에 비해, NAND 메모리(10)에서의 기능 요소인 FS(12), IS(13)의 관리 단위는 클러스터이며, MS(11)의 관리 단위는 트랙이다. 이와 같이, NAND 메모리(10)에서의 관리 단위는 섹터보다 크기 때문에, WC(21)로부터 NAND 메모리(10)에 대하여 데이터를 기록할 때, 기록되는 데이터와 동일한 클러스터 어드레스의 데이터가 NAND 메모리(10) 중에 존재하는 경우, WC(21)로부터 NAND 메모리(10)에 기록되는 클러스터 중의 섹터와, NAND 메모리(10) 중에 존재하는 동일 클러스터 어드레스 내의 섹터를 머지하고 나서, NAND 메모리(10)에 기록할 필요가 있다.
이 처리가, 도 20에 나타낸 클러스터 내 섹터 빈 곳 채우는 처리(클러스터 빈 곳 채우기)와, 트랙 내 섹터 빈 곳 채우는 것(트랙 빈 곳 채우기)이며, 이러한 처리를 하지 않으면 데이터를 제대로 독출할 수 없게 된다. 따라서, WC(21)로부터 FSIB(12a) 또는 MSIB(11a)에 데이터를 방출할 때에는, WC 클러스터 관리 테이블(25)을 참조하고, 방출되는 클러스터에 대응하는 태그 중의 섹터 위치 비트맵(25b)을 참조하여, 섹터 위치 비트맵(25b)이 모두 "1"이 아닌 경우는, NAND 메모리(10)에 포함되는 동일 클러스터 또는 동일 트랙 중의 섹터와 머지하는, 클러스터내 섹터 빈 곳을 채우거나 또는 트랙 내 섹터 빈 곳 채우기를 실행한다. 이 처리에는, DRAM(20)의 작업 영역이 사용되고, DRAM(20)의 작업 영역으로부터 MSIB(11a)에 기록되거나, FSIB(12a)에 기록되거나 한다.
IS(13)는, 기본적으로는 FS(12)로부터의 블록 방출에 의해 데이터가 기록되거나(Move), IS 내부의 컴팩션에 의해 데이터가 기록된다. MS(11)는 모든 개소로부터 데이터가 기록될 수 있다. 그 때, MS(11)는, 트랙 단위로밖에 데이터를 기록할 수 없기 때문에, MS 자신의 데이터에 의한 빈 곳 채우기가 발생할 수 있다. 또, 트랙 단위의 기록을 행할 때에는, 다른 블록에 있는 단편화된 데이터도 수동 머지에 의해 기록되게 된다. 또한 MS(11)는 MS 컴팩션에 의한 기록도 있다. 수동 머지에서는, WC(21), FS(12) 또는 IS(13)의 3개의 구성 요소 중 1개의 구성 요소로부터 MS(11)로의 트랙 방출 또는 논리 블록 방출(2i 트랙분의 방출)이 발생했을 때, 1개의 구성 요소에서의 방출 대상 트랙(또는 논리 블록)에 포함되는 다른 2개의 구성 요소내의 유효 클러스터 및 MS(11) 내의 유효 클러스터가 DRAM(20)의 작업 영역에 모여, DRAM(20)의 작업 영역으로부터 1 트랙분의 데이터로서 MSIB(11a)에 기록된다.
다음으로, 메모리 시스템에 관한 본 실시형태의 주요부에 관해, 도 21 및 도 22의 각 도면을 참조하여 설명한다.
다음으로, 메모리 시스템에 관한 본 실시형태의 주요부에 관해, 도 21∼도 24의 각 도면을 참조하여 설명한다.
퍼스널 컴퓨터에서는, 2차 기억 장치의 기억 영역을 초기화하고자 하는 경우나, 퍼스널 컴퓨터 그 자체를 폐기하고자 하는 경우 등의 요구가 있다. 이러한 요구에 응답하기 위해, 하드 디스크를 사용한 2차 기억 장치에서는, 물리적인 포맷 처리(이하 「물리 포맷」이라 한다), 또는 논리적인 포맷 처리(이하 「논리 포맷」이라 한다) 등의 기술을 이용하여, 2차 기억 장치 내의 데이터를 소거하는 것이 행해진다.
상기와 같은 요구는, 필연적으로 비휘발성 반도체 메모리를 사용한 2차 기억 장치에 대해서도 행해진다. 하드 디스크를 사용한 2차 기억 장치와 같이, 소거 횟수나 기록 횟수를 관리할 필요가 적은 경우는, 기억 영역을 물리적으로 구별하여 관리하더라도 영향이 적기 때문에, 소거하는 영역과, 소거하면 안되는 영역의 구별도 용이해진다.
한편, 비휘발성 반도체 메모리를 사용한 2차 기억 장치에서는, 전술한 바와 같이, 기억 영역의 전체 영역을 유효하게 활용한 데이터 기록이 행해지기 때문에, 기억 데이터가 기억 영역의 전체 영역에 걸쳐 산재되며, 소거하는 영역과, 소거하면 안 되는 영역의 구별도 용이하지 않고, 기억 영역을 관리하는 관리 테이블이 복잡하기도 하여, 비휘발성 반도체 메모리를 사용한 2차 기억 장치에 적용할 수 있는 소거 기술이 요구되고 있다.
이러한 지견에 기초하여, 이하 비휘발성 반도체 메모리를 사용한 2차 기억 장치에 기억되는 데이터를 효율적으로 소거하는 기술에 관해 설명한다.
(데이터 관리 기능의 계층 구조)
도 21은 SSD(100) 내부에 설치된 데이터 관리 기능의 계층 구조를 나타내는 도면이다. 데이터 관리부(120)는, 도 21에 나타내는 바와 같은, ATA층 관리부(70), DRAM층 관리부(120a), 논리 NAND층 관리부(120b) 및 물리 NAND층 관리부(120c)에 의한 각 기능부를 갖고 있다. ATA층 관리부(70)는, 호스트 장치(1)로부터의 라이트 요구/리드 요구 등의 각종 요구에 응답하기 위해, ATA 커맨드 처리부(121)와 데이터 관리부(120) 사이의 인터페이스로서 기능하고, SSD(100) 내부에서의 커맨드 플로우 제어, 데이터 플로우 제어, 시스템 제어 등의 제어 처리를 행한다. DRAM층 관리부(120a)는, ATA층 관리부(70)와 논리 NAND층 관리부(120b) 사이에 개재되어, DRAM층 관리부(120a)에 설치된 WC(21) 및 RC(22)를 관리한다. 논리 NAND층 관리부(120b)는, DRAM층 관리부(120a)와 물리 NAND층 관리부(120c) 사이에 개재되어, 논리 NAND층 관리부(120b)에 설치된 FS(12), IS(13) 및 MS(11)를 관리한다. 물리 NAND층 관리부(120c)는, NAND 드라이버(80), 카피 드라이버(82), ECC 드라이버(84) 등의 각종 드라이버를 제어하고, 물리 블록의 관리 및 전원 단절 대책 등의 처리를 실행한다.
NAND 드라이버(80)는, 도 3에 나타내는 NAND 컨트롤러(113)를 제어한다. 카피 드라이버(82)는 카피 컨트롤러(도시 생략)를 제어한다. 카피 컨트롤러는, 한쪽 구성 요소에 저장되어 있는 데이터를, 페이지 단위, 트랙 단위, 블록 단위로 다른쪽 구성 요소에 실제로 재기록하는 카피 동작에 있어서, NAND 메모리(10)와 DRAM(20) 사이에서 데이터 전송 등의 처리를 실행한다. ECC 드라이버(84)는, ECC 컨트롤러(도시 생략)를 제어한다. ECC 컨트롤러는, NAND 메모리(10)로부터의 데이터 독출을 포함하는 동작에 있어서, 예를 들어 제1 ECC 회로(112)를 제어한다.
(NAND 메모리의 기억 영역)
도 22는 호스트 장치(1)에서 본 NAND 메모리(10)의 기억 영역의 구분을 모식적으로 나타내는 도면이다. NAND 메모리(10)의 기억 영역은, 도 22에 나타내는 바와 같이, 통상 LBA 영역(90; 제1 논리 어드레스 영역)과, 특수 LBA 영역(92; 제2 논리 어드레스 영역)으로 구분된다. 여기서, 통상 LBA 영역(90)은 호스트 장치(1)로부터의 커맨드(리드 커맨드/라이트 커맨드 등)에 의해 액세스 가능한 LBA 영역(논리 어드레스 영역)인 데 비해, 특수 LBA 영역(92)은 호스트 장치(1)로부터 생성되는 통상 커맨드로는 액세스할 수 없는 LBA 영역이다. 특수 LBA 영역(92)은 SSD(100) 내부에 전개되는 펌웨어(FW)를 구성하는 모듈이 생성하는 커맨드에 의해 액세스하는 것이 가능하다.
이러한 통상 LBA 영역 및 특수 LBA 영역에 관해, 구체예를 사용하여 설명한다. 지금, SSD(100) 영역의 사이즈(소위 디스크 용량)를 예를 들어 64 GB로 한다면, 이 64 GB의 영역은 사용자 영역이다. 한편, SSD(100)에는, 호스트 장치(1)로부터 액세스할 수 있는 해당 64 GB의 영역(사용자 영역) 이외에, SSD(100)의 내부 정보를 보존하기 위한 영역으로서, 소정 사이즈(예를 들어, 1 논리 블록분 정도)의 영역(비사용자 영역)이 LBA 상에 맵된다. 이 64GB의 영역이 통상 LBA 영역이며, 소정사이즈의 영역이 특수 LBA 영역이다.
특수 LBA 영역(92)은, 예를 들어 SSD(100)를 관리하는 관리 데이터, SMART(Self-Monitoring Analysis and Reporting Technology) 정보 등을 보존하기 위해 사용된다. 이 특수 LBA 영역(92)에 저장되는 관리 데이터는, 통상 LBA 영역(90)에 저장되는 사용자 데이터와 동일한 관리 방식으로 취급되고, 통상 LBA 영역이 맵될 수 있는 모든 논리 블록에 할당될 수 있다. 즉, 논리 NAND층 관리부(120b)에서 보면, 논리 어드레스 차이를 제외하고 처리 차이는 없다. 또, 당연하지만, 특수 LBA 영역은 웨어 레벨링 처리 대상도 된다.
(특수 LBA 영역을 마련한 취지)
여기서, 상기와 같은 특수 LBA 영역을 마련한 취지에 관해 설명한다. 전술한 바와 같이, 하드 디스크를 이용한 2차 기억 장치에서는, 물리 포맷 및 논리 포맷을 이용하여, 사용자 영역의 초기화 처리가 행해진다. 본 실시형태에 따른 SSD(100)에서도, 이들 물리 포맷 및 논리 포맷의 기능을 실현하기 위해, 상기 특수 LBA 영역이라는 개념을 도입하여, 해당 개념에 기초하는 영역을 NAND 메모리(10)에 마련하도록 한 것이다.
특수 LBA 영역(92)에 저장되는 데이터는, 통상 LBA 영역(90)에 저장되는 사용자 데이터와 동일한 관리 방식으로 취듭될 수 있으므로, 내부적인 관리 데이터를 특수 LBA 영역에 할당함으로써, 관리 데이터용으로 특별한 관리 알고리즘을 구축할 필요가 없어진다. 그러나, 특수 LBA 영역(90)에 할당되는 관리 데이터의 종류에 따 라서는, 물리 포맷 및 논리 포맷 시에 소거 대상으로 하고 싶지 않은 경우가 있다.
(특수 LBA 영역을 마련한 소거 처리)
다음으로, 특수 LBA 영역을 이용한 소거 처리에 관해, 도 23 및 도 24를 사용하여 설명한다. 여기서, 도 23은 하드 디스크를 사용한 2차 기억 장치에서의 논리포맷에 해당하는 처리를 행하는 경우의 일례로서 나타내는 흐름도이고, 도 24는 하드 디스크를 사용한 2차 기억 장치에서의 물리 포맷에 해당하는 처리를 행하는 경우의 일례로서 나타내는 흐름도이다. 이후의 설명에서는, 논리 포맷에 해당하는 처리를 「의사 소거 처리」라 호칭하고, 물리 포맷에 해당하는 시퀀스 및 처리를 「물리 소거 처리」라 호칭한다.
(특수 LBA 영역을 마련한 소거 처리-의사 소거 처리)
도 23에서, 호스트 장치(1)로부터 ATA층 관리부(70)에 의사 소거 처리의 처리 명령이 전달된 경우, 우선 데이터 관리부(120)는 특수 LBA 영역의 컴팩션이 필요한지 아닌지의 판정 처리를 실행한다(단계 ST101). 환언하면, 데이터 관리부(120)는, 특수 LBA 영역에 속하는 유효 데이터가 소정수의 논리 블록 내에 모두 포함되어 있는지 아닌지를 판정한다. 여기서 소정수의 논리 블록이란, 특수 LBA 영역에 속하는 모든 데이터를 저장하기 위해 필요한 최소한의 논리 블록 개수를 말한다.
특수 LBA 영역에 속하는 유효 데이터가 소정수보다 많은 논리 블록 중에 산재되어 있는 경우는, 이들 유효 데이터가 소정수의 논리 블록 내에 수속되도록, 유효 데이터를 다시 기록할(컴팩션) 필요가 있다. 한편, 특수 LBA 영역에 속하는 유 효 데이터가 이미 소정수의 논리 블록 내에 수속되어 있는 경우는 유효 데이터를 다시 기록할 필요는 없다.
특수 LBA 영역에 속하는 데이터를 저장하기 위한 논리 블록이 미리 정해져 있는 경우는, 이 논리 블록 내에 특수 LBA 영역에 속하는 모든 유효 데이터가 포함되어 있는지 아닌지를 판정하도록 해도 된다. 또, 특수 LBA 영역에 속하는 데이터의 컴팩션용으로 미리 논리 블록을 확보해 두는 경우는 단계 ST101을 생략하고, 유효 데이터가 산재되어 있는지 아닌지에 관계없이, 이후의 컴팩션 처리를 반드시 행하도록 해도 된다.
특수 LBA 영역의 컴팩션 처리가 필요하다고 판단한 경우(단계 ST101, Yes),데이터 관리부(120)는 컴팩션 처리를 실행한다(단계 ST102). 구체적으로는, 데이터 관리부(120)는 특수 LBA 영역의 컴팩션용으로 프리 블록(FB)을 취득하고, 이 프리 블록(FB) 내의 데이터를 소거한다. 그 후, 데이터 관리부(120)는, 특수 LBA 영역에 속하는 유효 데이터를 수집하여, 컴팩션용 논리 블록에 다시 기록한다. 또, 데이터 관리부(120)는 컴팩션에 따라 관리 테이블을 갱신한다. 단계 ST102에서의 컴팩션은 논리 블록의 이용 효율 향상을 도모하는 것은 아니기 때문에, 컴팩션원(元)의 논리 블록 내의 전체 데이터가 무효 데이터가 되었는지 아닌지의 판정이나, 전체 데이터가 무효 데이터가 되었을 때의 프리 블록(FB)으로서의 등록 작업 등은 행하지 않아도 된다.
특수 LBA 영역의 컴팩션 처리 종료 후, 데이터 관리부(120)는 관리 테이블의 초기화 처리를 실행한다(단계 ST103). 구체적으로는, 데이터 관리부(120)는, 호스 트 장치(1)에서 보이는 통상 LBA 영역에 대하여, DRAM(20)의 작업 영역에 전개되어 있는 상술한 각 관리 테이블, 특히 논리 NAND층 관리부(120b)가 관리하는 각 관리 테이블을 초기화한다. 환언하면, 데이터 관리부(120)는, 통상 LBA 영역에서의 논리 어드레스와 논리 블록 ID와의 대응 관계를 초기화한다.
통상 LBA 영역에 대하여 DRAM(20) 상의 관리 테이블 초기화를 행한 후, 데이터 관리부(120)는 스냅샷을 보존하고(단계 ST104), 처리를 종료한다. 여기서 스냅샷이란, DRAM 상의 각 관리 테이블[특히, 논리 NAND층 관리부(120b) 및 물리 NAND층 관리부(120c)가 관리하는 관리 테이블군]의 내용을 NAND 메모리(10)에 카피한 것이다. 스냅샷은 호스트 장치(1)로부터 스탠바이 요구 등을 수신한 경우에 NAND 메모리(10)의 소정 영역에 저장되는 것이며, 상술한 WCF 처리, CIB 처리를 포함하는 복잡한 기록 처리를 필요로 하지 않는다. 따라서, 스냅샷은 물리 NAND층 관리부(120c)의 관리하에 있으면 되고, LBA와 관련될 필요는 없다.
한편, 특수 LBA 영역의 컴팩션 처리가 필요하지 않다고 판단한 경우(단계 ST101, No), 단계 ST102의 컴팩션 처리를 실행하지 않고, 상기 단계 ST103, ST104의 처리를 수행하여 본 흐름을 종료한다.
(특수 LBA 영역을 마련한 소거 처리-물리 소거 처리)
물리 소거 처리에 관해서는 도 24를 사용하여 설명한다. 도 24에 나타내는 바와 같이, 단계 ST201∼ST203의 처리는 의사 소거 처리의 경우와 동일한 처리가 되기 때문에, 중복 설명을 생략한다.
단계 ST203에 의한 관리 테이블의 초기화 처리의 종료 후, 데이터 관리 부(120)는, 통상 LBA 영역에 대응된 전체 논리 블록의 데이터 소거 처리를 실행한다(단계 ST204). 이에 따라, 사용자 데이터를 포함하는 정보는 완전히 삭제된다. 한편, 데이터 관리부(120)는 특수 LBA 영역에 대응된 논리 블록을 데이터 소거 처리의 대상외로 한다.
통상 LBA 영역에 대응된 전체 논리 블록의 데이터 소거 처리의 종료 후, 데이터 관리부(120)는 최대 블록수의 통지 처리를 실행한다(단계 ST205). 여기서, 최대블록수란, 프리 블록(FB)으로서 사용 가능한 논리 블록의 수를 의미한다. 구체적으로는, 데이터 소거 처리를 실행한 물리 NAND층 관리부(120c)가 논리 NAND층 관리부(120b)에 대하여 최대 블록수를 통지한다.
그 후, 데이터 관리부(120)는 의사 소거 처리 시와 동일하게 스냅샷을 보존하고(단계 ST206) 처리를 종료한다.
(특수 LBA 영역에 관한 보충 설명)
여기서, 상술한 특수 LBA 영역에 관한 약간의 보충 설명을 더한다. 특수 LBA 영역은 의사 소거 처리 및 물리 소거 처리에서 소거되면 안 되는 영역이기 때문에, 산재되어 있는 특수 LBA 영역에 대응된 유효 데이터를 소정의 논리 블록에 수집해 둠으로써(컴팩션 처리), 소거 커맨드시에 일일이 특수 LBA 영역인지 아닌지의 대비 처리가 불필요하게 된다. 이에 따라 소거 처리를 효율화할 수 있다.
또, 특히 물리 소거 처리 시에, 논리 블록의 데이터 소거 처리에는 수 ms 정도의 비교적 긴 시간이 필요하기 때문에, 산재되어 있는 특수 LBA 영역에 대응된 유효 데이터를 소정의 논리 블록에 수집해 둠으로써(컴팩션 처리), 보다 짧은 시간 에서의 데이터 소거를 실현하는 것이 가능해진다.
의사 소거 또는 물리 소거에 의한 각 처리에서는, 현시점에서 관리하는 모든 사용자 데이터 영역에 대한 관리 테이블의 초기화 처리가 행해지기 때문에, 이후 이미 기록된 사용자 데이터에 대한 독출은 불가능해진다.
의사 소거 처리와 물리 소거 처리의 차이는 실제로 데이터가 기록된 논리 블록에 대해 소거 처리를 실시하는지의 여부에 있다. 즉, 의사 소거 처리에서는 관리 테이블의 정보만 초기화되고, 물리 소거 처리에서는 관리 테이블의 정보를 비롯해, 특수 LBA 영역의 데이터를 제외한 전체 데이터가 소거된다.
또, 상기 처리에서, DRAM(20)에 전개된 관리 테이블의 초기화 처리가 행해진 후, 해당 초기화된 관리 테이블은 NAND 메모리(10)에 스냅샷하여 저장된다. 이에 따라, 데이터 관리부(120)는, 소거 처리 종료 후의 기동 시에는 스냅샷을 DRAM(20) 상에 전개하고, 초기화된 관리 테이블에 기초하여 호스트 장치(1)와의 사이에서 데이터 전송을 관리한다.
의사 소거 및 물리 소거의 각 대상이 되는 LBA 영역이란, 상술한 바와 같이, 호스트 장치(1)에서 볼 수 있는 LBA 영역이며, 특수 LBA 영역은 이에 포함되지 않는다. 그 때문에, 논리 NAND층 관리부(120b)는 의사 소거 및 물리 소거의 실행 시에는, 특수 LBA 영역만을 수집한 논리 블록을 작성하고(컴팩션), 이 논리 블록만 삭제 대상에서 제외되도록 물리 NAND층 관리부(120c)에 지시한다.
이상 설명한 바와 같이, 본 실시형태에 따른 SSD(100)에 의하면, 특수 LBA 영역에 속하는 유효 데이터가 기억 영역의 전체 영역에 걸쳐 광범위하게 산재되어 있는 경우라 하더라도, 데이터의 효율적인 소거가 가능해진다.
[제2 실시형태]
도 25는 SSD(100)을 탑재한 퍼스널 컴퓨터(200)의 일례를 나타내는 사시도이다. 퍼스널 컴퓨터(200)는 본체(201) 및 표시 유닛(202)을 포함한다. 표시 유닛(202)은 디스플레이 하우징(203)과 이 디스플레이 하우징(203)에 수용된 표시 장치(204)를 포함한다.
본체(201)는 케이스(205)와, 키보드(206)와, 포인팅 디바이스인 터치 패드(207)를 포함한다. 케이스(205) 내부에는 메인 회로 기판, ODD(Optical Disk Device) 유닛, 카드 슬롯 및 SSD(100) 등이 수용되어 있다.
카드 슬롯은 케이스(205)의 주벽에 인접하여 설치되어 있다. 주벽에는 카드 슬롯에 대향하는 개구부(208)가 형성되어 있다. 사용자는, 이 개구부(208)를 통하여 케이스(205)의 외부에서 추가 디바이스를 카드 슬롯에 착탈하는 것이 가능하다.
SSD(100)는, 종래의 HDD의 치환으로서, 퍼스널 컴퓨터(200) 내부에 실장된 상태로서 사용해도 되고, 퍼스널 컴퓨터(200)가 구비하는 카드 슬롯에 삽입한 상태에서 추가 디바이스로서 사용해도 된다.
도 26은 SSD(100)을 탑재한 퍼스널 컴퓨터(200)의 시스템 구성예를 나타낸다. 퍼스널 컴퓨터(200)는 CPU(301), 노스 브릿지(north bridge)(302), 주메모리(303), 비디오 컨트롤러(304), 오디오 컨트롤러(305), 사우스 브릿지(south bridge)(309), BIOS-ROM(310), SSD(100), ODD 유닛(311), 임베디드 컨트롤러/키보드 컨트롤러 IC(EC/ kBC; 311) 및 네트워크 컨트롤러(312) 등을 포함한다.
CPU(301)는 퍼스널 컴퓨터(200)의 동작을 제어하기 위해서 설치된 프로세서이며, SSD(100)로부터 주메모리(303)에 로드되는 오퍼레이팅 시스템(OS)을 실행한다. 또한, ODD 유닛(311)이, 장전된 광디스크에 대하여 독출 처리 및 기록 처리의 적어도 하나의 처리의 실행을 가능하게 한 경우에, CPU(301)는 이들 처리를 실행한다.
또, CPU(301)는 BIOS-ROM(310)에 저장된 시스템 BlOS(Basic Input Output System)도 실행한다. 시스템 BIOS는 퍼스널 컴퓨터(200) 내의 하드웨어 제어를 위한 프로그램이다.
노스 브릿지(302)는, CPU(301)의 로컬 버스와 사우스 브릿지(309) 사이를 접속하는 브릿지 디바이스이다. 노스 브릿지(302)에는 주메모리(303)를 액세스 제어하는 메모리 컨트롤러도 내장되어 있다.
또, 노스 브릿지(302)는, AGP(Accelerated Graphics Port) 버스 등을 통해 비디오 컨트롤러(304)와의 통신 및 오디오 컨트롤러(305)와의 통신을 실행하는 기능도 갖고 있다.
주메모리(303)는 프로그램이나 데이터를 일시적으로 기억하고, CPU(301)의 작업 영역으로서 기능한다. 주메모리(303)는 예를 들어 DRAM으로 구성된다.
비디오 컨트롤러(304)는 퍼스널 컴퓨터(200)의 디스플레이 모니터로서 사용되는 표시 유닛(202)을 제어하는 비디오 재생 컨트롤러이다.
오디오 컨트롤러(305)는 퍼스널 컴퓨터(200)의 스피커를 제어하는 오디오 재생 컨트롤러이다.
사우스 브릿지(309)는 LPC(Low Pin Count) 버스 상의 각 디바이스 및 PCI(Peripheral Component Interconnect) 버스 상의 각 디바이스를 제어한다. 또, 사우스 브릿지(309)는 각종 소프트웨어 및 데이터를 저장하는 기억 장치인 SSD(100)을, ATA 인터페이스를 통해 제어한다.
퍼스널 컴퓨터(200)는 섹터 단위로 SSD(100)에의 액세스를 행한다. ATA 인터페이스를 통해, 기록 커맨드, 독출 커맨드, 플래시 커맨드 등이 SSD(100)에 입력된다.
또, 사우스 브릿지(309)는 BIOS-ROM(310) 및 ODD 유닛(311)을 액세스 제어하기 위한 기능도 갖고 있다.
EC/KBC(311)는 전력 관리를 위한 임베디드 컨트롤러와, 키보드(KB; 206) 및 터치 패드(207)를 제어하기 위한 키보드 컨트롤러가 집적된 1 칩 마이크로 컴퓨터이다.
이 EC/KBC(311)는 사용자에 의한 파워 버튼의 조작에 따라 퍼스널 컴퓨터(200)의 전원을 온/오프하는 기능을 갖고 있다. 네트워크 컨트롤러(312)는, 예를 들어 인터넷 등의 외부 네트워크와의 통신을 실행하는 통신 장치이다.
또 다른 효과나 변형예는 당업자에 의해 용이하게 도출할 수 있다. 따라서, 본 발명의 보다 광범위한 형태는 이상과 같이 개시하고 또한 기술한 특정한 상세한 설명 및 대표적인 실시형태에 한정되지 않는다. 따라서, 첨부 특허청구범위 및 그 균등물에 의해 정의되는 총괄적인 발명의 개념의 정신 또는 범위에서 일탈하지 않고, 다양한 변경이 가능하다.
본원 발명은 상기 실시형태에 한정되지 않고, 실시 단계에서는 그 요지를 일탈하지 않는 범위에서 다양하게 변형하는 것이 가능하다.
또한, 상기 실시형태에는 여러 단계의 발명이 포함되어 있고, 개시되는 복수의 구성 요건에서의 적절한 조합에 의해 다양한 발명이 추출될 수 있다.
예를 들어, 실시형태에 개시한 전체 구성 요건에서 몇가지 구성 요건이 삭제되더라도, 발명이 해결하고자 하는 과제를 해결할 수 있고, 발명의 효과를 얻을 수 있는 경우에는, 이 구성 요건이 삭제된 구성이 발명으로서 추출될 수 있다.
또, 상기 실시형태에서는, 클러스터 사이즈의 2 이상의 자연수배가 논리 페이지 사이즈와 같다고 하여 설명했지만, 반드시 이에 한정되는 것은 아니다. 예를 들어, 클러스터 사이즈는 논리 페이지 사이즈와 같아도 되고, 복수의 논리 페이지를 조합하여, 논리 페이지 사이즈의 2 이상의 자연수배로 해도 된다.
또한, 클러스터 사이즈는, 퍼스널 컴퓨터 등의 호스트 장치(1) 상에서 동작하는 OS(Operating System)의 파일 시스템의 관리 단위와 같은 사이즈로 해도 된다.
또, 상기 실시형태에서는, 트랙 사이즈의 2 이상의 자연수배가 논리 블록 사이즈와 같다고 하여 설명했지만, 반드시 이에 한정되는 것은 아니다.
예를 들어, 트랙 사이즈는 논리 블록 사이즈와 같아도 되고, 복수의 논리 블록을 조합하여, 논리 블록 사이즈의 2 이상의 자연수배로 해도 된다.
트랙 사이즈가 논리 블록 사이즈 이상인 경우, MS(11)의 컴팩션 처리는 불필요해지고, TFS(11b)를 삭제해도 된다.
도 1은 SSD의 구성예를 나타내는 블록도이다.
도 2는 NAND 메모리 칩에 포함되는 1개의 블록의 구성예와, 4치 데이터 기억 방식에서의 임계값 분포를 나타내는 도면이다.
도 3은 드라이브 제어 회로의 하드웨어적인 내부 구성예를 나타내는 블록도이다.
도 4는 프로세서의 기능 구성예를 나타내는 블록도이다.
도 5는 NAND 메모리 및 DRAM 내에 형성된 기능 구성을 나타내는 블록도이다.
도 6은 WC로부터 NAND 메모리로의 기록 처리에 관한 보다 상세한 기능 블록도이다.
도 7은 LBA 논리 어드레스를 나타내는 도면이다.
도 8은 데이터 관리부 내의 관리 테이블의 구성예를 나타내는 도면이다.
도 9는 RC 클러스터 관리 테이블의 일례를 나타내는 도면이다.
도 10은 WC 클러스터 관리 테이블의 일례를 나타내는 도면이다.
도 11은 WC 트랙 관리 테이블의 일례를 나타내는 도면이다.
도 12는 트랙 관리 테이블의 일례를 나타내는 도면이다.
도 13은 FS/IS 관리 테이블의 일례를 나타내는 도면이다.
도 14는 MS 논리 블록 관리 테이블의 일례를 나타내는 도면이다.
도 15는 FS/IS 논리 블록 관리 테이블의 일례를 나타내는 도면이다.
도 16은 FS/IS 내 클러스터 관리 테이블의 일례를 나타내는 도면이다.
도 17은 논리-물리 변환 테이블의 일례를 나타내는 도면이다.
도 18은 독출 처리의 동작예를 나타내는 흐름도이다.
도 19는 기록 처리의 동작예를 나타내는 흐름도이다.
도 20은 각 구성 요소간의 데이터의 흐름에서의 입력과 출력의 조합 및 그 발생 요인을 나타내는 도면이다.
도 21은 SSD 내부에 설치된 데이터 관리 기능의 계층 구조를 나타내는 도면이다.
도 22는 NAND 메모리의 기억 영역의 구분을 모식적으로 나타내는 도면이다.
도 23은 의사 소거 처리를 나타내는 흐름도이다.
도 24는 물리 소거 처리를 나타내는 흐름도이다.
도 25는 퍼스널 컴퓨터의 일례를 나타내는 사시도이다.
도 26은 퍼스널 컴퓨터의 시스템 구성예를 나타내는 도면이다.
<도면의 주요 부분에 대한 부호의 설명>
1 : 호스트 장치 2: ATA I/F
3 : RS 232C I/F 4: 드라이브 제어 회로
5 : 전원 회로 6 : LED
7 : 온도 센서 8 : 퓨즈
10 : NAND 메모리 100 : SSD
20 : DRAM 200 : 디버그/제조 검사용 기기
Claims (20)
- 휘발성 반도체 메모리로 구성되는 제1 기억부와,비휘발성 반도체 메모리로 구성되는 제2 기억부와,상기 제1 및 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제2 기억부에 기억되는 관리 테이블군과,상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 행하고, 상기 제1 기억부에 전개된 상기 관리 테이블군을 갱신하면서, 그 관리 테이블군에 기초하여 상기 제1 및 제2 기억부에서의 데이터를 관리하는 컨트롤러를 포함하고,상기 제2 기억부는, 상기 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능하고,상기 컨트롤러는, 상기 호스트 장치로부터 상기 제2 기억부의 데이터를 소거하라는 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하고, 그 후 상기 관리 테이블군을 초기화하는 것을 특징으로 하는 메모리 시스템.
- 제1항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 관리 테이블군을 초기화하고, 그 초기화된 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제1항에 있어서, 상기 관리 테이블군은, 상기 제1 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제1 관리 테이블군과, 상기 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제2 관리 테이블군을 포함하고,상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군을 초기화하고, 그 초기화된 제2 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제3항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제1 논리 어드레스 영역에 대응하는 개소를 초기화하고, 그 초기화된 제2 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제4항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제2 논리 어드레스 영역에 대응하는 개소를 초기화하지 않는 것을 특징으로 하는 메모리 시스템.
- 제1항에 있어서, 상기 컨트롤러는, 상기 제2 논리 어드레스 영역에 SMART 정보를 관련시키는 것을 특징으로 하는 메모리 시스템.
- 제1항에 있어서, 상기 휘발성 반도체 메모리는 DRAM이고, 상기 비휘발성 반도체 메모리는 NAND형 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
- 휘발성 반도체 메모리로 구성되는 제1 기억부와,비휘발성 반도체 메모리로 구성되는 제2 기억부와,상기 제1 및 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제2 기억부에 기억되는 관리 테이블군과,상기 제1 기억부를 통해 호스트 장치와 상기 제2 기억부 사이의 데이터 전송을 행하고, 상기 제1 기억부에 전개된 상기 관리 테이블군을 갱신하면서, 그 관리 테이블군에 기초하여 상기 제1 및 제2 기억부에서의 데이터를 관리하는 컨트롤러를 포함하고,상기 제2 기억부는, 상기 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능하고,상기 컨트롤러는, 상기 호스트 장치로부터 상기 제2 기억부의 데이터를 소거하라는 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하고, 그 후 상기 관리 테이블군을 초기화하며, 상기 제1 논리 어드레스 영역에 대응된 데이터를 소거하는 것을 특징으로 하는 메모리 시스템.
- 제8항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 관리 테이블군을 초기화하고, 그 초기화된 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제8항에 있어서, 상기 관리 테이블군은, 상기 제1 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제1 관리 테이블군과, 상기 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제2 관리 테이블군을 포함하고,상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군을 초기화하고, 그 초기화된 제2 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제10항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제1 논리 어드레스 영역에 대응하는 개소를 초기화하고, 그 초기화된 제2 관리 테이블군을 상기 제2 기억부에 보존하는 것을 특징으로 하는 메모리 시스템.
- 제11항에 있어서, 상기 컨트롤러는, 상기 소거 명령을 수신하였을 때, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제2 논리 어드레스 영역에 대응하는 개소를 초기화하지 않는 것을 특징으로 하는 메모리 시스템.
- 제8항에 있어서, 상기 휘발성 반도체 메모리는 DRAM이고, 상기 비휘발성 반도체 메모리는 NAND형 플래시 메모리인 것을 특징으로 하는 메모리 시스템.
- 휘발성 반도체 메모리로 구성되는 제1 기억부와, 비휘발성 반도체 메모리로 구성되고, 호스트 장치로부터 액세스 가능한 제1 논리 어드레스 영역에 대응된 데이터와, 상기 호스트 장치로부터 액세스 불가능한 제2 논리 어드레스 영역에 대응된 데이터를 기억하는 것이 가능한 제2 기억부를 갖는 메모리 시스템의 데이터 소거 방법으로서,상기 호스트 장치로부터 상기 제2 기억부의 데이터를 소거하라는 소거 명령을 수신하여, 상기 제2 논리 어드레스 영역에 대응된 데이터를 상기 제2 기억부 내의 소정 영역에 수집하는 단계와,상기 제1 및 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하며, 상기 제1 기억부에 전개되어 있는 관리 테이블군을 초기화하는 단계를 포함하는 것을 특징으로 하는 데이터 소거 방법.
- 제14항에 있어서, 상기 제2 기억부에서, 상기 제1 논리 어드레스 범위에 대 응하는 데이터를 소거하는 단계를 더 포함하는 것을 특징으로 하는 데이터 소거 방법.
- 제14항에 있어서, 초기화된 상기 관리 테이블군을 상기 제2 기억부에 보존하는 단계를 더 포함하는 것을 특징으로 하는 데이터 소거 방법.
- 제14항에 있어서, 상기 제2 논리 어드레스 영역에 대응된 데이터를, 상기 제2 기억부 내의 소정 영역에 수집해야 하는지의 여부를 판단하는 단계를 더 포함하는 것을 특징으로 하는 데이터 소거 방법.
- 제14항에 있어서, 상기 관리 테이블군은, 상기 제1 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제1 관리 테이블군과, 상기 제2 기억부에 기억된 데이터의 저장 위치를 포함하는 관리 정보를 유지하는 제2 관리 테이블군을 포함하고,상기 관리 테이블군을 초기화하는 단계에서, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군을 초기화하는 것을 특징으로 하는 데이터 소거 방법.
- 제18항에 있어서, 상기 관리 테이블군을 초기화하는 단계에서, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제1 논리 어드레스 영역에 대응하는 개소를 초기화하는 것을 특징으로 하는 데이터 소거 방법.
- 제19항에 있어서, 상기 관리 테이블군을 초기화하는 단계에서, 상기 제1 기억부에 전개된 상기 제2 관리 테이블군에서의 상기 제2 논리 어드레스 영역에 대응하는 개소를 초기화하지 않는 것을 특징으로 하는 데이터 소거 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008051474A JP4551940B2 (ja) | 2008-03-01 | 2008-03-01 | メモリシステム |
JPJP-P-2008-051474 | 2008-03-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20090094195A KR20090094195A (ko) | 2009-09-04 |
KR101066937B1 true KR101066937B1 (ko) | 2011-09-23 |
Family
ID=41054784
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20090016983A KR101066937B1 (ko) | 2008-03-01 | 2009-02-27 | 메모리 시스템 및 그 데이터 소거 방법 |
Country Status (3)
Country | Link |
---|---|
US (3) | US8407402B2 (ko) |
JP (1) | JP4551940B2 (ko) |
KR (1) | KR101066937B1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5317689B2 (ja) * | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP5221332B2 (ja) * | 2008-12-27 | 2013-06-26 | 株式会社東芝 | メモリシステム |
JP5317690B2 (ja) * | 2008-12-27 | 2013-10-16 | 株式会社東芝 | メモリシステム |
JP5198245B2 (ja) | 2008-12-27 | 2013-05-15 | 株式会社東芝 | メモリシステム |
EP2396729B1 (en) | 2009-02-12 | 2019-05-22 | Toshiba Memory Corporation | Memory system and method of controlling memory system |
US8489804B1 (en) | 2009-09-14 | 2013-07-16 | Marvell International Ltd. | System for using dynamic random access memory to reduce the effect of write amplification in flash memory |
KR101547328B1 (ko) * | 2009-09-25 | 2015-08-25 | 삼성전자주식회사 | 강유전체 메모리 소자 및 그 동작 방법 |
JP2012141946A (ja) * | 2010-12-16 | 2012-07-26 | Toshiba Corp | 半導体記憶装置 |
JP5595965B2 (ja) | 2011-04-08 | 2014-09-24 | 株式会社東芝 | 記憶装置、保護方法及び電子機器 |
JP5624510B2 (ja) | 2011-04-08 | 2014-11-12 | 株式会社東芝 | 記憶装置、記憶システム及び認証方法 |
US20150261631A1 (en) * | 2014-03-12 | 2015-09-17 | Kabushiki Kaisha Toshiba | Memory system and memory controller |
JP5734492B1 (ja) | 2014-05-08 | 2015-06-17 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
KR101633442B1 (ko) * | 2014-10-10 | 2016-06-24 | 윈본드 일렉트로닉스 코포레이션 | 반도체 메모리 장치, 반도체 시스템 및 독출 방법 |
CN104469503B (zh) * | 2014-11-20 | 2019-04-26 | 青岛海信电器股份有限公司 | 一种电子设备及其外部设备的初始化方法、装置 |
US10455045B2 (en) | 2016-09-06 | 2019-10-22 | Samsung Electronics Co., Ltd. | Automatic data replica manager in distributed caching and data processing systems |
US10467195B2 (en) | 2016-09-06 | 2019-11-05 | Samsung Electronics Co., Ltd. | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system |
KR102567140B1 (ko) | 2017-11-24 | 2023-08-16 | 삼성전자주식회사 | 데이터 관리 방법 및 이를 수행하는 저장 장치 |
KR102144124B1 (ko) * | 2019-04-22 | 2020-08-13 | 고려대학교 산학협력단 | 하이브리드 메인 메모리 시스템의 비휘발성 메모리의 데이터 관리 방법 및 장치 |
JP7558745B2 (ja) | 2020-10-12 | 2024-10-01 | キオクシア株式会社 | メモリシステム及び情報処理システム |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030075356A (ko) * | 2002-03-18 | 2003-09-26 | 삼성전기주식회사 | 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법 |
JP2005250619A (ja) | 2004-03-02 | 2005-09-15 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置およびその書き換え方法 |
KR20070070121A (ko) * | 2005-12-28 | 2007-07-03 | 실리콘 스토리지 테크놀로지 인크 | 통합 메모리 및 컨트롤러 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4086083B2 (ja) | 1991-11-28 | 2008-05-14 | 株式会社日立製作所 | フラッシュメモリを備えた情報機器 |
US5787445A (en) * | 1996-03-07 | 1998-07-28 | Norris Communications Corporation | Operating system including improved file management for use in devices utilizing flash memory as main memory |
US5745418A (en) * | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
US6000006A (en) * | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
US6405329B1 (en) * | 1999-07-27 | 2002-06-11 | Dell Usa, L.P. | Method and apparatus for HDD time stamp benchmark and installation identification |
JP3666344B2 (ja) | 2000-03-07 | 2005-06-29 | ヤマハ株式会社 | 電子機器 |
JP4772214B2 (ja) * | 2001-06-08 | 2011-09-14 | ルネサスエレクトロニクス株式会社 | 不揮発性記憶装置及びその書き換え制御方法 |
JP4206688B2 (ja) * | 2002-04-15 | 2009-01-14 | ソニー株式会社 | データ処理装置及びデータ処理方法 |
JP2005149135A (ja) * | 2003-11-14 | 2005-06-09 | Seiko Epson Corp | 電子機器、初期化方法及び初期化プログラム |
JP4209820B2 (ja) | 2004-07-15 | 2009-01-14 | 株式会社ハギワラシスコム | メモリカードシステム及び該メモリカードシステムで使用されるライトワンス型メモリカード、ホストシステムと半導体記憶デバイスとからなるシステム |
JP2006039966A (ja) * | 2004-07-27 | 2006-02-09 | Toshiba Corp | メモリカードおよびメモリカードに搭載されるカード用コントローラ並びにメモリカードの処理装置 |
WO2006126445A1 (ja) * | 2005-05-23 | 2006-11-30 | Matsushita Electric Industrial Co., Ltd. | メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法 |
US7509474B2 (en) * | 2005-06-08 | 2009-03-24 | Micron Technology, Inc. | Robust index storage for non-volatile memory |
US7831783B2 (en) * | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
US7861122B2 (en) * | 2006-01-27 | 2010-12-28 | Apple Inc. | Monitoring health of non-volatile memory |
KR101185617B1 (ko) * | 2006-04-04 | 2012-09-24 | 삼성전자주식회사 | 외부 메모리의 부하를 줄일 수 있는 웨어 레벨링 기법에의한 플래시 파일 시스템의 동작 방법 |
KR100845137B1 (ko) * | 2006-10-02 | 2008-07-09 | 삼성전자주식회사 | 메모리 장치의 배드 블록 주소를 번역하는 방법, 메모리장치의 배드 블록 주소를 번역하는 장치 및 이를 포함하는메모리 장치 컨트롤러 |
-
2008
- 2008-03-01 JP JP2008051474A patent/JP4551940B2/ja not_active Expired - Fee Related
-
2009
- 2009-02-27 US US12/394,720 patent/US8407402B2/en not_active Expired - Fee Related
- 2009-02-27 KR KR20090016983A patent/KR101066937B1/ko not_active IP Right Cessation
-
2013
- 2013-03-01 US US13/782,006 patent/US8677059B2/en not_active Expired - Fee Related
-
2014
- 2014-01-23 US US14/162,444 patent/US9021190B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030075356A (ko) * | 2002-03-18 | 2003-09-26 | 삼성전기주식회사 | 고 용량 플래시 메모리 카드 시스템에서의 데이터 운영 방법 |
JP2005250619A (ja) | 2004-03-02 | 2005-09-15 | Matsushita Electric Ind Co Ltd | 不揮発性記憶装置およびその書き換え方法 |
KR20070070121A (ko) * | 2005-12-28 | 2007-07-03 | 실리콘 스토리지 테크놀로지 인크 | 통합 메모리 및 컨트롤러 |
Also Published As
Publication number | Publication date |
---|---|
US8407402B2 (en) | 2013-03-26 |
KR20090094195A (ko) | 2009-09-04 |
US8677059B2 (en) | 2014-03-18 |
JP2009211228A (ja) | 2009-09-17 |
US20130179630A1 (en) | 2013-07-11 |
US20090228642A1 (en) | 2009-09-10 |
US9021190B2 (en) | 2015-04-28 |
US20140136772A1 (en) | 2014-05-15 |
JP4551940B2 (ja) | 2010-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101066937B1 (ko) | 메모리 시스템 및 그 데이터 소거 방법 | |
KR101067457B1 (ko) | 메모리 시스템 | |
KR101079890B1 (ko) | 메모리 시스템 | |
KR101102634B1 (ko) | 메모리 시스템 | |
KR101101655B1 (ko) | 메모리 시스템 | |
KR101075923B1 (ko) | 메모리 시스템 | |
KR101186788B1 (ko) | 메모리 시스템 및 메모리 시스템의 제어 방법 | |
JP5317689B2 (ja) | メモリシステム | |
JP5198245B2 (ja) | メモリシステム | |
KR101079936B1 (ko) | 메모리 시스템 | |
JP4691123B2 (ja) | メモリシステム | |
US20090222617A1 (en) | Memory system | |
JP5178857B2 (ja) | メモリシステム | |
KR20090110923A (ko) | 메모리 시스템 | |
JP2009211224A (ja) | メモリシステム | |
JP2009211230A (ja) | メモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
LAPS | Lapse due to unpaid annual fee |