KR101329937B1 - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR101329937B1
KR101329937B1 KR1020110082376A KR20110082376A KR101329937B1 KR 101329937 B1 KR101329937 B1 KR 101329937B1 KR 1020110082376 A KR1020110082376 A KR 1020110082376A KR 20110082376 A KR20110082376 A KR 20110082376A KR 101329937 B1 KR101329937 B1 KR 101329937B1
Authority
KR
South Korea
Prior art keywords
block
data
storage area
storage
unit
Prior art date
Application number
KR1020110082376A
Other languages
English (en)
Other versions
KR20120031434A (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 KR20120031434A publication Critical patent/KR20120031434A/ko
Application granted granted Critical
Publication of KR101329937B1 publication Critical patent/KR101329937B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0634Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control

Abstract

일 실시형태에 따르면, 메모리 시스템은 비휘발성 반도체 메모리, 블록 관리 유닛, 및 전사 유닛을 포함한다. 반도체 메모리는 제1 모드와 제2 모드 양 모드로 데이터가 기록될 수 있는 복수의 블록을 포함한다. 블록 관리 유닛은 유효 데이터를 내부에 저장하지 않은 블록을 프리 블록으로서 관리한다. 전사 유닛은 블록 관리 유닛이 관리하는 프리 블록의 수가 미리 정해진 임계치 이하인 경우, 유효 데이터를 내부에 저장하는 하나 이상의 사용 블록을 전사원 블록으로서 선택하여, 그 전사원 블록에 저장된 유효 데이터를 제2 모드로 프리 블록에 전사한다.

Description

메모리 시스템{MEMORY SYSTEM}
<관련 출원과의 상호 참조>
본 출원은 2010년 9월 24일자로 출원한 일본 특허 출원 제2010-214221호에 기초하여, 이것에 대해 우선권을 주장한다.
본 명세서에서 설명하는 실시형태들은 개괄적으로 메모리 시스템에 관한 것이다.
NAND 플래시 메모리의 용량을 확장시키는 기술로서, 다치 기록(MLC: Multi-Level Cell) 방식이 있다. 본 개시에서는, MLC 방식의 플래시 메모리를 MLC 플래시 메모리라고 칭하고, 2치 기록(SLC: Single-Level Cell) 방식의 플래시 메모리를 SLC 플래시 메모리라고 칭한다. SLC 방식(이하, SLC 모드라고 함)에서는, 기록 단위인 1 셀에 1 비트가 기록된다. 한편, MLC 방식(이하, MLC 모드라고 함)에서는, 1 셀에 N 비트(N>1)를 기록할 수 있다. 따라서, 예를 들어 2 비트 기록의 MLC 플래시 메모리에서는 1 셀이 4치를 나타낼 수 있고, 3 비트 기록의 MLC 플래시 메모리에서는 1 셀이 8치를 나타낼 수 있다.
소정의 저장 영역에 비교적 대량의 정보량을 저장할 수 있는 플래시 메모리는 동일한 저장 영역에 비교적 소량의 정보량을 저장할 수 있는 플래시 메모리보다 체적 당 기록 용량을 크게 할 수 있어, 저장 용량 당 비용을 절감할 수 있다는 장점이 있다. 반면에, 소정의 저장 영역에 비교적 소량의 정보량을 저장할 수 있는 플래시 메모리는 동일한 저장 영역에 비교적 대량의 정보량을 저장할 수 있는 플래시 메모리와 비교해서 기록 및 판독을 위한 액세스 시간이 짧고 신뢰성이 높다는 장점이 있다.
실시형태들의 목적은 SLC 플래시 메모리의 장점과 MLC 플래시 메모리의 장점을 상황에 따라 얻는 것이다.
일반적으로, 일 실시형태에 따르면, 메모리 시스템은 비휘발성 반도체 메모리, 제1 저장 유닛, 제2 저장 유닛, 제3 저장 유닛, 제1 수신 유닛, 취득 유닛, 제1 기록 유닛, 선택 유닛, 제2 기록 유닛, 관리 정보 업데이트 유닛, 제2 수신 유닛, 및 판독 유닛을 포함한다. 비휘발성 반도체 메모리는 복수의 제1 저장 영역을 포함하고, 상기 복수의 제1 저장 영역에 포함되며 유효 데이터가 저장되지 않은 하나 이상의 제2 저장 영역과, 상기 복수의 제1 저장 영역에 포함되며 호스트로부터 수신된 데이터를 내부에 복사 및 저장함으로써 취득되는 복수의 제3 저장 영역과, 제3 저장 영역에 저장되거나 또는 제4 저장 영역에 저장된 데이터를 내부에 복사 및 저장함으로써 취득되는 복수의 제4 저장 영역을 구비할 수 있다. 유효 데이터는 논리 어드레스와 연관된 물리 어드레스에 저장된 데이터이다. 논리 어드레스는 호스트로부터 지정된 어드레스이다. 물리 어드레스는 반도체 메모리의 저장 영역에서 데이터 저장 위치를 나타낸다. 제1 저장 유닛은 복수의 제1 저장 영역 중 어느 영역이 제2 저장 영역인지를 나타내는 제1 관리 정보를 내부에 저장한다. 제2 저장 유닛은 복수의 제1 저장 영역 중 어느 영역이 제3 저장 영역인지를 나타내는 제2 관리 정보를 내부에 저장한다. 제3 저장 유닛은 복수의 제1 저장 유닛 중 어느 영역이 제4 저장 유닛인지 나타내는 제3 관리 정보를 내부에 저장한다. 제1 수신 유닛은 호스트에 의해 기록 요구된 데이터인 기록 요구 데이터를 수신한다. 취득 유닛은 제1 기억 관리 정보에 기초하여 하나 이상의 제2 저장 영역 중에서 하나의 제2 저장 영역을 취득한다. 제1 기록 유닛은 상기 취득 유닛에 의해 취득된 제2 저장 유닛에 기록 요구 데이터를 제1 모드로 기록한다. 제2 저장 영역의 개수가 제1 임계치 이하인 경우에, 선택 유닛은 제2 관리 정보에 기초하여 복수의 제3 저장 영역 중에서 하나 이상의 저장 유닛을 선택하거나, 제3 관리 정보에 기초하여 복수의 제4 저장 영역 중에서 하나 이상의 저장 영역을 선택한다. 제2 기록 유닛은 상기 선택 유닛에 의해 선택된 저장 유닛에 저장된 유효 데이터를, 상기 취득 유닛에 의해 취득된 제2 저장 유닛에 제2 모드로 기록한다. 제2 기록 유닛이 유효 데이터를 기록할 경우, 관리 정보 업데이트 유닛은 선택된 저장 영역을 제2 관리 정보 또는 제3 관리 정보에서 삭제하고, 그 선택된 저장 영역을 제1 관리 정보에 추가한다. 제2 수신 유닛은 호스트로부터 데이터의 판독 요구를 수신한다. 판독 유닛은 판독 요구에 의해 판독 요구된 데이터가 제3 저장 영역에 기록된 경우, 제1 모드로 데이터를 판독하고, 판독 요구에 의해 판독 요구된 데이터가 제4 저장 유닛에 기록된 경우 제2 모드로 데이터를 판독한다. 제1 모드에서의 기록 속도 또는 판독 속도는 제2 모드에서보다 빠르다. 제1 모드에서 동일한 저장 영역에 기록될 수 있는 최대 정보량은 제2 모드에서보다 적다.
메모리 시스템에 의하면, SLC 플래시 메모리의 장점과 MLC 플래시 메모리의 장점을 상황에 따라 얻는 것이 가능하다.
도 1은 제1 실시형태의 블록의 사용예를 도시하는 도면(l)이다.
도 2는 제1 실시형태의 블록의 사용예를 도시하는 도면(2)이다.
도 3은 제1 실시형태의 블록의 사용예를 도시하는 도면(3)이다.
도 4는 제1 실시형태의 퍼스널 컴퓨터의 외관도이다.
도 5는 제1 실시형태의 메모리 시스템의 블록도이다.
도 6은 제1 실시형태의 어드레스 변환 테이블의 데이터 구조예이다.
도 7은 제1 실시형태의 리버스 테이블의 예를 나타내는 도면이다.
도 8은 제1 실시형태에서 데이터가 기록될 경우의 맵핑 업데이트의 설명도(업데이트 전)이다.
도 9는 제1 실시형태에서 데이터가 기록될 경우의 맵핑 업데이트의 설명도(업데이트 후)이다.
도 10은 제1 실시형태에서 데이터가 삭제될 경우의 맵핑 업데이트의 설명도(삭제 전)이다.
도 11은 제1 실시형태에서 데이터가 삭제될 경우의 맵핑 업데이트의 설명도(삭제 후)이다.
도 12는 제1 실시형태에서 데이터가 전사될 경우의 맵핑 업데이트의 설명도(전사 전)이다.
도 13은 제1 실시형태에서 데이터가 전사될 경우의 맵핑 데이터의 설명도(전사 후)이다.
도 14는 제1 실시형태에서 데이터 기록 요구가 수신될 경우의 개략 흐름도이다.
도 15는 제1 실시형태에서의 사용 블록 삭감 처리의 개략 흐름도(1)이다.
도 16a는 제1 실시형태에서의 사용 블록 삭감 처리의 개략 흐름도(2)이다.
도 16b는 제1 실시형태에서의 사용 블록 삭감 처리의 개략 흐름도(3)이다.
도 17은 제1 실시형태에서의 전사원 블록 그룹 선택 처리의 개략 흐름도(1)이다.
도 18은 제1 실시형태에서의 전사원 블록 그룹 선택 처리의 개략 흐름도(2)이다.
도 19는 제1 실시형태에서의 전사원 블록 그룹 선택 처리의 개략 흐름도(3)이다.
도 20은 제1 실시형태에서의 랜덤 기록의 시뮬레이션 결과를 나타내는 도면이다.
도 21은 제2 실시형태의 메모리 시스템의 블록도이다.
도 22는 제2 실시형태에서의 사용 블록 삭감 처리의 실행의 개략 흐름도이다.
이하, 첨부 도면을 참조하여 다양한 실시형태들에 대해 설명한다.
먼저, 제1 실시형태에 따른 메모리 시스템(1)에 대하여, 도면을 참조하여 상세하게 설명한다. 도 1∼도 3은 제1 실시형태에 따른 블록의 사용예를 도시하는 도면이다.
제1 실시형태에서 사용되는 NAND 플래시 메모리는 데이터를 기록하는 동작 모드를 변경할 수 있는 플래시 메모리(112)이다. 예컨대, 데이터를 기록하는 동작 모드를 변경할 수 있는 플래시 메모리는 MLC 플래시 메모리다. 동작 모드로서는, 제1 동작 모드와 제2 동작 모드를 이용한다. 제1 동작 모드에서는, 소정의 저장 영역에 기록된 정보량이 제2 동작 모드에서보다 적다(즉, 제2 동작 모드에서는 소정의 저장 영역에 기록된 정보량이 제1 동작 모드에서보다 많다). 예컨대, 제2 동작 모드는 제1 동작 모드에서보다 1 셀에 기록될 수 있는 비트의 수가 많은 모드이다. 더 상세한 예에 있어서, 제1 동작 모드는 SLC 모드 혹은 MLC 모드이다. 제2 동작 모드는 제1 동작 모드에서보다 1 셀에 기록될 수 있는 비트의 수가 많은 MLC 모드이다. 이하의 설명에서는 제1 동작 모드를 SLC 모드라고 하고, 제2 동작 모드를 MLC 모드라고 하기로 한다. 다만, MLC 모드는 단일 모드에 한정되지 않고 복수의 MLC 모드일 수도 있다. 예컨대, MLC 모드는 4치 모드와 8치 모드 간에 변경될 수 있다.
MLC 플래시 메모리(112)뿐만 아니라 NAND 플래시 메모리도 저장 영역이 복수의 블록(제1 저장 영역)을 포함한다. 블록이란 미리 정해진 저장 영역의 단위로서, 데이터 소거 단위이다. 그러므로, 데이터를 블록에 새롭게 기록할 경우, 그 블록에 있는 데이터는 미리 일괄적으로 소거되어야 한다.
각 블록은 복수의 페이지를 포함한다. 데이터는 페이지 단위로 기록 및 판독된다. 데이터를 페이지에 기록하는 순서에는 규칙이 있다. 그렇기 때문에, 블록 단위로 데이터를 소거한 후, 데이터를 특정 페이지 순서로 블록에 기록해야 한다. 즉, 데이터가 블록에 기록된 후에, 블록에 있는 데이터를 소거하지 않고 데이터를 특정 페이지에 덮어쓰기가 불가능하며, 블록으로부터 데이터를 소거한 후에라도 데이터를 블록 내의 랜덤 페이지에 기록하는 것이 불가능하다.
각 NAND 플래시 메모리의 동작 모드는 각 블록마다 독립적으로 설정될 수 있다. 그러나, 블록 내의 각 페이지의 동작 모드는 같아야 한다. 따라서, 동작 모드는 페이지 단위로 전환될 수 없다. 즉, 블록 내의 페이지에 데이터가 기록된 후에는 그 블록 내의 데이터가 일괄 소거될 때까지 블록의 동작 모드는 전환될 수 없다.
블록에 기록될 수 있는 데이터량이 각 동작 모드마다 다르다. 즉, 블록의 용량(이하, 블록 용량이라고 함)은 동작 모드에 따라 변한다. 구체적으로, 각 페이지의 페이지 사이즈는 변하지 않고 페이지의 수는 변한다. 예컨대, 2 비트 기록 방식의 MLC 플래시 메모리의 경우, 2치 모드의 SLC 블록에 있어서 페이지 수와 블록 용량이 4치 모드의 MLC 블록의 1/2배가 된다.
제1 실시형태에서는, 도 1∼도 3에 도시하는 바와 같이, 블록의 종류로서, 유효 데이터가 저장되지 않은 프리 블록(제2 저장 영역)(B_free)과, 유효 데이터가 저장되어 있는 사용 블록이 있다. 사용 블록 중에는, 제1 동작 모드로 기록된 유효 데이터를 내부에 복사 및 저장함으로써 취득된 블록(B_slc)과, 제2 동작 모드로 기록된 데이터를 내부에 복사 및 저장함으로써 취득된 블록(B_mlc)이 있다. 여기서는, 블록(B_slc)을 SLC 블록(B_slc)(제3 저장 영역)이라 하고, 블록(B_mlc)을 MLC 블록(B_mlc)(제4 저장 영역)이라 한다.
블록은 그룹으로 분류되어 관리된다. 예를 들면, 프리 블록(B_free)은 프리 블록 그룹(G_free)으로 분류되어 관리되고, SLC 블록(B_slc)은 SLC 블록 그룹(G_slc)(제5 저장 영역)으로 분류되어 관리되며, MLC 블록(B_mlc)은 MLC 블록 그룹(G_mlc)(제6 저장 영역)으로 분류되어 관리된다.
제1 실시형태에서는, 도 1에 도시한 바와 같이, 호스트 장치로부터 데이터(D1) 기록 요구가 발행될 경우, 그 데이터(D1)는 신규 데이터가 기록될 블록으로서 미리 할당된 프리 블록(B_free)에 SLC 모드로 기록된다. 데이터(D1)가 기록되는 신규 데이터 기록 블록(B_D1)은 SLC 블록 그룹(G_slc)으로서 등록된다. 그 결과, 프리 블록 그룹(G_free)으로 관리되는 프리 블록(B_free)의 수가 1씩 감소되고, 그 대신, SLC 블록 그룹(G_slc)으로 관리되는 SLC 블록(B_slc)의 수가 1씩 증가한다. 이 SLC 모드에서의 데이터 기록은 SLC 블록 그룹(G_slc)으로 관리되는 SLC 블록(B_slc)의 총 데이터 용량에 제한되는 일없이 이루어진다. 다시 말해, 제1 실시형태에서는, SLC 블록(B_slc)의 수는 상한이 없고, 가변적이다. 이에 따라, 제1 실시형태에서는, 가변 길이의 SLC 버퍼가 실현된다. 또한, 제1 실시형태에서는, MLC 플래시 메모리의 총 저장 용량에서 호스트 장치에 제공된 최대 용량인 논리 용량을 감산하여 구한 잉여 용량[일반적으로 오버 프로비저닝(Over-Provisioning)이라고 함] 이상의 총 용량을 갖는 블록의 수를 SLC 블록(B_slc)으로서 관리할 수 있다. 다만, 후술하는 바와 같이, 하한은 프리 블록 그룹(G_free)에 의해서 관리되는 프리 블록(B_free)의 수에 설정될 수 있다.
그 후, 예를 들면 호스트 장치로부터 데이터를 기록함으로써 프리 블록 그룹(G_free)에 속하는 프리 블록(B_free)의 수가 미리 정해진 임계치(Tbf) 이하가 될 경우, 제1 실시형태에서는, 도 2에 도시하는 바와 같이, SLC 블록 그룹(G_slc)에 속하는 SLC 블록(B_slc)의 일부가 선택되고, 유효 데이터로서 이들 SLC 블록(B_slc) 내에 저장된 데이터(이하, 유효 데이터라고 함)를, 미리 전사처 블록(transcription destination block)으로서 할당된 프리 블록(B_free)에 MLC 모드로 기록한다(전사). 유효 데이터가 기록되는 전사처 블록(B_Dts)은 MLC 블록 그룹(G_mlc)으로서 등록된다. 그 결과, 사용 블록의 수가 삭감되고, 프리 블록(B_free)의 수가 증가한다. 여기서, 전사되는 SLC 블록(B_slc)으로서, 블록 용량에 대해 유효 데이터량(유효 데이터율)이 작은 SLC 블록(B_slc)과, 자주 업데이트되는 데이터를 저장하지 않는 SLC 블록(B_slc)을 선택하는 것이 바람직하다.
그 후, 데이터 전사에 의해 MLC 블록 그룹(G_mlc)에 속하는 MLC 블록(B_mlc)의 수가 증가한 상태에서, 프리 블록(B_free)의 수가 미리 정해진 임계치(Tbf) 이하가 되면, 제1 실시형태에서는, 도 3에 도시하는 바와 같이, SLC 블록 그룹(G_slc) 또는 MLC 블록 그룹(G_mlc) 중 하나를 선택하여, 선택된 블록 그룹에 속하는 블록의 일부를 선택하고, 그 선택된 블록 내의 유효 데이터를, 미리 전사처 블록으로서 할당된 프리 블록(B_free)에 MLC 모드로 기록한다(전사). 이 유효 데이터가 기록되는 전사처 블록(B_Dts 또는 B_Dtm)은 MLC 블록 그룹(G_mlc)으로서 등록된다. 그 결과, 사용 블록의 수가 삭감되고, 프리 블록(B_free)의 수가 증가한다. 여기서, 전사 대상 사용 블록으로서, 블록 용량에 대해 유효 데이터량(유효 데이터율)이 작은 블록과, 자주 업데이트되는 데이터를 저장하지 않은 블록을 선택하는 것이 바람직하다. 전사 대상 블록으로서, 예컨대 동일한 동작 모드의 블록을 선택한다. 구체적으로, SLC 블록(B_slc)의 세트 또는 MLC 블록(B_mlc)의 세트가 선택된다.
각 블록 그룹에 속하는 블록의 총 유효 데이터량과 총 유효 데이터율 등의 다양한 파라미터에 기초하여, 어느 블록 그룹을 선택할지를 결정하는 것이 가능하다. 예컨대, 도 1과 도 2에 도시하는 바와 같이, 총 유효 데이터량이 작은 경우에는, 블록 용량의 합계가 작음에도 불구하고 모든 데이터를 기록할 수 있기 때문에, SLC 블록(B_slc)의 비율을 높이는 것이 가능하다. 한편, 도 3에 도시하는 바와 같이, 총 유효 데이터량이 클 경우에는 MLC 블록(B_mlc)의 비율을 높게 하여 블록 용량의 합계를 크게 할 필요가 있다.
더욱이, 호스트로부터 기록된 데이터의 LBA(Logical Block Address)에 국소성(locality)이 있을 경우, 즉 특정 LBA의 범위에 데이터가 집중 기록되는 경우에는, 데이터가 SLC 블록(B_slc)으로부터 MLC 블록(B_mlc)에 전사되기 전에 호스트로부터 데이터가 덮어쓰기되어 SLC 블록(B_slc) 내의 오래된 데이터가 무효 데이터가 될 가능성이 높다. 전술한 바와 같이, SLC 블록 그룹(G_slc) 내의 총 유효 데이터율이 저하될 경우에는 SLC 블록 그룹(G_slc)을 전사 대상으로서 선택하는 것이 바람직하다. 반면에, 예를 들어, 국소성이 이동할 경우, 즉 데이터가 집중 기록되는 LBA 범위가 다른 범위로 이동한 직후에는, 그 데이터가 MLC 블록(B_mlc)에 전사된 후 호스트로부터 데이터가 덮어쓰기되어 MLC 블록(B_mlc) 내의 오래된 데이터가 무효 데이터가 될 가능성이 높다. 전술한 바와 같이, MLC 블록 그룹(G_mlc)의 총 유효 데이터율이 저하될 경우에는 MLC 블록 그룹(G_mlc)을 전사 대상 블록 그룹으로서 선택하는 것이 바람직하다.
여기서, 임계치(Tbf)는 호스트 장치로부터 효율적인 데이터 액세스를 구현하기 위해 실험, 경험 또는 시뮬레이션을 통해 구해진 값이다. 예컨대, 임계치(Tbf)가 지나치게 크면, 소정의 시점에서, 실제로 데이터를 저장하는 블록의 수가 감소하고 총 유효 데이터율이 상승하여 전사 효율이 떨어진다. 임계치(Tbf)는 적어도, 전사 처리를 위해 동시에 할당된 프리 블록의 수이어야 한다.
또한, 데이터 전사를 실행하는 트리거는 임계치(Tbf)를 이용한 방법에 한정되지 않는다. 예를 들면, 정기적으로 데이터 전사를 실행할 수도 있거나, 또는 호스트 장치로부터의 액세스가 없는 시간에 기초하여 데이터 전사를 실행할 수도 있다.
다음으로, 메모리 시스템(1)의 구성 및 동작에 대해 설명한다. 도 4는 제1 실시형태에 따른 메모리 시스템이 탑재될 수 있는 정보 처리 장치의 일례를 도시하는 개략도이다. 도 4에 도시하는 퍼스널 컴퓨터(10)는 주로 본체(11)와, 표시 유닛(12)을 포함한다. 본체(11)는 예컨대 하우징(15)과, 키보드(16)와, 포인팅 디바이스인 터치패드(17)와, 메모리 카드(19) 등이 착탈될 수 있는 카드 슬롯과 USB(Universal Serial Bus) 등의 외부 인터페이스(18)와, 메인 회로 기판, 및 SSD(Solid State Drive)인 메모리 시스템(1)을 포함한다.
메인 회로 기판에는, CPU(Central Processing Unit), ROM(Read Only Memory), RAM(Random Access Memory), 노스브릿지, 및 사우스브릿지 등의 주요 구성요소가 탑재된다. 또한, 본체(11)는 ODD(Optical Disk Drive) 유닛, 각종 외부 인터페이스 등을 포함할 수 있다.
표시 유닛(12)은 디스플레이 하우징(13)과, 이 디스플레이 하우징(13)에 수용된 표시 장치(14)를 포함한다. 도 4에는 노트북형 퍼스널 컴퓨터를 예로서 사용하고 있지만, 제1 실시형태에 따른 메모리 시스템이 탑재될 수 있는 정보 처리 장치는 이것에 한정되지 않는다. 다시 말해, 제1 실시형태 및 이하에 기재하는 다른 실시형태에 따른 메모리 시스템은 플래시 메모리가 스토리지로서 탑재 또는 장착될 수 있는 모든 컴퓨터에 대하여 적용될 수 있다.
도 4에 있어서, 메모리 시스템(1)은 기록 매체로서 재기록 가능한 비휘발성 메모리를 이용한 기억 장치이다. 이 메모리 시스템(1)은 퍼스널 컴퓨터(10)에 내장될 수도 있고 또는 외부 인터페이스(18)를 통해 퍼스널 컴퓨터(10)에 외부 접속될 수도 있다. 이하에, 도면을 참조하여 제1 실시형태에 따른 메모리 시스템(1)을 상세하게 설명한다.
도 5에 도시한 바와 같이, 메모리 시스템(1)은 크게 컨트롤러 유닛(100), 비휘발성 메모리 유닛(110), 버퍼 메모리 유닛(120), 및 인터페이스 유닛(130)을 포함한다. 각 유닛(100∼130)은 버스 또는 포인트투포인트 라인 등의 신호선(140)을 통해 서로 접속될 수 있다. 비휘발성 메모리 유닛(110)에 대해 데이터의 기록 및 판독을 요구하는 퍼스널 컴퓨터나 워크스테이션 등의 호스트 장치(150)가 신호선(140)에 접속될 수도 있다.
인터페이스 유닛(130)은 예컨대 SATA(Serial ATA) 인터페이스이며, 신호선(140)을 통해 호스트 장치(150)와 통신한다. 그러나, 인터페이스 유닛(130)은 SATA 인터페이스에 한정되는 것이 아니며, 병렬 ATA 인터페이스 등의 다양한 인터페이스가 인터페이스 유닛(130)에 적용될 수 있다. 인터페이스 유닛(130)은 호스트 장치(150)로부터 데이터의 판독, 기록, 플러시(flush), 삭제 등의 커맨드(예컨대, SATA TRIM 커맨드)를 수신하고(제1 수신 유닛과 제2 수신 유닛), 이 커맨드 수신 통지를 컨트롤러 유닛(100)에 송신한다. 인터페이스 유닛(130)은 컨트롤러 유닛(100)으로부터의 지시에 따라, 호스트 장치(150)와의 사이에서 데이터를 송수신한다.
버퍼 메모리 유닛(120)으로는, 랜덤 액세스성이 높은 고속의 메모리, 예컨대 SRAM 및 DRAM 등이 이용된다. 버퍼 메모리 유닛(120)이 비휘발성 메모리일 필요는 없다. 버퍼 메모리 유닛(120)은 인터페이스 유닛(130)을 통해 호스트 장치(150)와의 사이에서 송수신된 데이터와, 인터페이스 유닛(130)을 통해 비휘발성 메모리 유닛(110)에 대해 판독 또는 기록된 데이터를 내부에 일시적으로 저장한다. 버퍼 메모리 유닛(120)은 데이터 이외에도, 각종 관리 동작을 위한 정보를 내부에 저장할 수 있다.
비휘발성 메모리 유닛(110)은 하나 이상의 MLC 플래시 메모리(112) 및 NAND 컨트롤러(111)를 포함한다. MLC 플래시 메모리(112)는 예컨대 NAND 플래시 메모리다. 하나의 MLC 플래시 메모리(112)는 단일 칩으로 형성될 수 있다. 통상, 비휘발성 메모리 유닛(110)의 총 저장 용량은 논리 용량(호스트 장치에 제공되는 최대 용량)보다 커야 한다. 그렇기 때문에, 비휘발성 메모리 유닛(110)은 총 저장 용량에 따라 복수의 MLC 플래시 메모리(112)를 포함할 수 있다. 또한, NAND 컨트롤러(111)는 복수의 MLC 플래시 메모리(112)에 대하여 병렬로 데이터를 전송할 수 있는 것이 바람직하다. 이것은 하나의 MLC 플래시 메모리(112)를 이용하여 SSD로서 요구되는 데이터 전송 성능을 만족시킬 수 없는 경우에 유효하다.
도 5로 되돌아가서 설명한다. 컨트롤러 유닛(100)은 사용자 데이터를 관리하고 각 유닛을 제어하는 기능을 갖는다. 컨트롤러 유닛(100)은 이들 기능이 회로로서 구현되는 SoC(System on a Chip)일 수도 있다. 또한, 컨트롤러 유닛(100)은 이들 기능을 구현하기 위한 소프트웨어를 실행하는 범용 하드웨어 프로세서에 의해 구현될 수도 있다.
컨트롤러 유닛(100)은 이들 기능 블록으로서, 어드레스 변환 테이블 저장 유닛(101), 블록 관리 유닛(102), 유효 데이터량 관리 유닛(103), 판독 커맨드 처리 유닛(104), 기록 커맨드 처리 유닛(105), 삭제 커맨드 처리 유닛(106), 블록 삭감 처리 유닛(107), 전사원 블록 그룹 선택 유닛(108), 및 전사원 블록 선택 유닛(109)(전사 유닛)을 포함한다.
어드레스 변환 테이블 저장 유닛(101)은 호스트 장치(150)로부터 지정된 논리 어드레스와 메모리 시스템(1) 내에서의 데이터의 기록 위치와의 사이의 맵핑을 유지하는 어드레스 변환 테이블(101A)을 내부에 저장한다. 호스트 장치(150)가 소정의 논리 어드레스의 데이터를 기록 또는 삭제할 경우, 또는 그 데이터가 메모리 시스템(1)에 전사될 경우, 어드레스 변환 테이블(101A)의 논리 어드레스의 맵핑이 업데이트된다. 그 결과, 새로운 기록 위치에 있는 데이터가 유효 데이터가 되고, 오래된 기록 위치에 있는 데이터는 무효 데이터가 된다. 맵핑이 업데이트될 경우, 각 블록 내의 유효 데이터량의 업데이트는 유효 데이터량 관리 유닛(103)에 통지된다.
블록 관리 유닛(102)은 블록을 분류하여 관리하기 위한 블록 그룹을 관리한다. 블록은 유효 데이터를 내부에 저장하는지의 여부에 따라 프리 블록 또는 사용 블록으로 분류될 수 있다. 또한, 사용 블록은 그 블록에 대한 유효 데이터의 기록 동작 모드에 따라 SLC 블록이나 MLC 블록 중 하나로 분류될 수 있다. 블록 관리 유닛(102)은 유효 데이터가 저장되지 않은 블록을 프리 블록 그룹에 할당하고, SLC 모드로 기록된 유효 데이터를 저장하고 있는 블록을 SLC 블록 그룹에 할당하며, MLC 모드로 기록된 유효 데이터를 저장하는 블록을 MLC 블록 그룹에 할당한다. 블록 관리 유닛(102)은 각 블록 그룹의 관리 정보로서, 각 블록 그룹에 포함되는 블록의 정보와 블록의 수를 유지한다. 프리 블록의 동작 모드는 결정되지 않으며, 프리 블록을 사용을 위해 취득한 후에, 그 사용 목적에 따라 동작 모드가 결정된다. 각 블록 그룹의 관리 정보는 모든 블록이 특정 블록 그룹으로서 일괄 등록되는 것을 가능하게 하는 데이터 구조를 갖는다. 예를 들어, 모든 블록이 SLC 모드에서 사용되는 경우라 해도, 모든 블록을 SLC 블록 그룹으로서 등록할 수 있다. 블록 관리 유닛(102)은 어떤 블록이 어떤 블록 그룹(프리, SLC, 또는 MLC)에 속하는지를 나타내는 정보를 업데이트한다(관리 정보 업데이트 유닛).
유효 데이터량 관리 유닛(103)은 어드레스 변환 테이블(101A)로부터 각 블록의 유효 데이터량의 업데이트 통지를 수신하면, SLC 블록 그룹 및 MLC 블록 그룹에 포함되는 블록의 총 유효 데이터량을 산출한다.
판독 커맨드 처리 유닛(104)은 인터페이스 유닛(130)으로부터 판독 커맨드의 수신 통지를 수신하면, 판독 커맨드가 지정한 논리 어드레스에 대응하는 비휘발성 메모리 유닛(110) 내의 기록 위치에 대해 어드레스 변환 테이블(101A)을 검색하고, 그 기록 위치에 기록된 데이터를 판독하여 버퍼 메모리 유닛(120)에 출력한다(판독 유닛). 이런 식으로, 버퍼 메모리 유닛(120)에는 판독 커맨드가 지정한 범위의 데이터가 일시적으로 저장된다. 그 후, 판독 커맨드 처리 유닛(104)은 버퍼 메모리 유닛(120)에 일시적으로 저장된 데이터를 호스트 장치(150)에 송신하도록 인터페이스 유닛(130)을 제어한다.
기록 커맨드 처리 유닛(105)은 인터페이스 유닛(130)으로부터 기록 커맨드의 수신 통지를 수신하면, 버퍼 메모리 유닛(120) 내의 빈 영역을 확보하고, 호스트 장치(150)로부터 데이터를 수신하도록 인터페이스 유닛(130)을 제어한다. 그 후, 버퍼 메모리 유닛(120)에 충분한 양의 데이터가 축적될 경우, 기록 커맨드 처리 유닛(105)은 버퍼 메모리 유닛(120) 내의 데이터를 신규 데이터가 기록될 블록에 기록한다. 그 후, 기록 커맨드 처리 유닛(105)은 기록된 데이터의 논리 어드레스에 대응하는 기록 위치를 어드레스 변환 테이블(101A)에 등록함으로써 맵핑을 업데이트한다. 또, 기록 커맨드 처리 유닛(105)은 블록 관리 유닛(102)으로부터 신규 데이터가 기록될 블록으로서 프리 블록을 취득하고(취득 유닛), 이 신규 데이터가 기록될 블록을 SLC 블록으로서 사용한다(제1 기록 유닛). 또한, 기록 커맨드 처리 유닛(105)은 블록 관리 유닛(102)으로부터 신규 데이터가 기록될 블록으로서 프리 블록을 취득할 경우, 남아있는 프리 블록의 수가 미리 정해진 임계치보다 작다면, 블록 삭감 처리 유닛(107)에 사용 블록수 삭감 요구를 보낸다.
삭제 커맨드 처리 유닛(106)은 인터페이스 유닛(130)으로부터 삭제 커맨드의 수신 통지를 수신하면, 지정된 논리 어드레스에 대응하는 기록 위치의 데이터를 무효화하도록 어드레스 변환 테이블(101A)의 맵핑을 업데이트한다.
블록 삭감 처리 유닛(107)은 유효 데이터를 내부에 저장한 사용 블록 중, 적어도 하나의 사용 블록[이하, "전사원 블록(transcription source block)"이라고 함]을 선택하고(선택 유닛), 선택된 전사원 블록에 있는 유효 데이터를 프리 블록에 전사한다(제2 기록 유닛). 블록수가 삭감되는 블록 그룹은 전사원 블록 그룹 선택 유닛(108)에 의해 선택된다. 또한, 전사원 블록은 전사원 블록 선택 유닛(109)에 의해서 선택된다.
블록 삭감 처리 유닛(107)은 유효 데이터의 전사 결과로서, 프리 블록이 되는 전사원 블록, 즉 유효 데이터량이 '0'이 되는 전사원 블록을 신규 프리 블록으로서 회수한다. 전사된 데이터의 맵핑은 전사된 데이터의 논리 어드레스에 대응하는 전사처의 기록 위치를 어드레스 변환 테이블(101A)에 등록함으로써 업데이트된다. 여기서, 신규 프리 블록으로서 회수된 전사원 블록의 수와 전사처의 블록(이하, "전사처 블록"이라고 함)으로서 지정된 프리 블록의 수의 차가 사용 블록의 삭감수이다. 전사원 블록으로서, 동일한 동작 모드의 블록들을 선택하는 것이 바람직하다. 전사처 블록으로서 할당된 프리 블록은 MLC 모드로 사용되는 것이 바람직하다.
전사원 블록 그룹 선택 유닛(108)은 SLC 블록 그룹 또는 MLC 블록 그룹 중 하나를 블록수가 삭감되는 것으로서 선택한다. 전사원 블록 그룹 선택 유닛(108)은 예컨대 각 블록 그룹 내 또는 블록 그룹들 중 한 그룹 내의 유효 데이터율에 기초하여, 블록수가 삭감되는 블록 그룹을 선택한다. 전사원 블록 그룹 선택 유닛(108)은 블록 관리 유닛(102)에서 참조된 각 블록 그룹의 블록수와, 유효 데이터량 관리 유닛(103)에서 참조된 각 블록 또는 각 블록 그룹의 유효 데이터량으로부터 블록 그룹 내의 유효 데이터율을 산출할 수 있다. 구체적으로, 전사원 블록 그룹 선택 유닛(108)은 각 블록 그룹의 동작 모드와 블록의 수로부터 각 블록 그룹의 총 용량을 산출하여, 각 블록 그룹의 유효 데이터량을 그 산출된 총 용량으로 나눔으로써 블록 그룹 내의 유효 데이터율을 구할 수 있다.
전사원 블록 선택 유닛(109)은 전사원 블록 그룹 선택 유닛(108)이 선택한 전사원 블록 그룹 중에서 전사원 블록으로서 하나 이상의 사용 블록을 선택한다. 전사원 블록 선택 유닛(109)은 전사원 블록 그룹에 속하는 사용 블록 중, 유효 데이터율이 낮은 블록을 우선적으로 선택한다. 이와 달리, 전사원 블록 선택 유닛(109)은 전사원 블록 그룹 선택 유닛(108)이 전사원 블록 그룹을 선택할 때 이용된 MLC 블록 그룹의 유효 데이터율의 임계치에 기준하여, 이 임계치보다 유효 데이터율이 낮은 사용 블록을 우선적으로 선택할 수도 있다. 더욱이, 전사원 블록 그룹이 SLC 블록 그룹인 경우, 블록을 단순히 FIFO 순으로 선택할 수 있는데, 즉 기록의 시계열 순으로 SLC 블록을 선택할 수도 있다.
이어서, 데이터 관리 단위 및 어드레스 변환 테이블에 대해서 도면을 참조하여 상세하게 설명한다. 일반적으로, 호스트 장치(150)로부터 저장 장치에 액세스할 때의 데이터 관리 단위를 "섹터"라고 부르고, 그 섹터의 사이즈는 512 바이트이다. HDD과 SSD 등의 저장 장치로부터 호스트 장치(150)에 제공되는 저장 영역에는, 그 영역의 선두로부터 순차적으로 각 섹터에 연속적인 논리 어드레스가 제공된다. 일반적으로, 논리 어드레스를 "LBA"(Logical Block Address)으로 부른다.
한편, 제1 실시형태에 따른 메모리 시스템(1) 내부의 데이터 관리 단위는 "클러스터"라고 불린다. 클러스터의 사이즈는 섹터의 사이즈보다 클 수 있다. 클러스터의 사이즈를 섹터의 사이즈보다 크게 할 경우, 어드레스 변환 테이블(101A)에서 엔트리의 수와 처리량을 삭감하는 것이 가능하다. 예컨대, 1 클러스터가 8 섹터를 포함할 경우, 각 클러스터는 논리 어드레스가 8의 배수인 섹터에서 시작하는 연속된 8개의 섹터를 포함한다. 그 결과, 클러스터의 사이즈는 4 KB(kilo byte)이다. 이하의 설명에서는, 메모리 시스템(1) 내부의 데이터 관리 단위가 클러스터이고 각 클러스터의 논리 어드레스가 그 클러스터의 첫번째 섹터의 LBA이며 클러스터 사이즈가 4 KB인 경우를 예로 든다. 그러나, 클러스터 사이즈는 목적 등에 따라 변형될 수 있다. 물론, 데이터의 관리 정보를 저장하기 위한 영역이 충분히 확보될 수 있다면, 클러스터 사이즈는 섹터 사이즈와 같을 수도 있다. 이 경우, 데이터를 섹터 단위로 관리할 수 있다.
블록 내의 각 페이지에는 복수 개의 클러스터 데이터가 기록된다. 전술한 바와 같이, 클러스터 내의 데이터는 연속적인 논리 어드레스를 갖는 섹터 데이터이다. 그러나, 블록 내의 복수의 클러스터 데이터가 반드시 연속 논리 어드레스를 갖는 클러스터 데이터일 필요는 없다. 후술하는 바와 같이, 논리 어드레스와 메모리 시스템(1) 내부의 기록 위치와의 사이의 맵핑은 호스트 장치(150)로부터의 기록 순서 및 메모리 시스템(1) 내부의 전사 순서에 따라 동적으로 결정된다.
그러므로, 논리 어드레스와 기록 위치와의 사이의 맵핑을 관리하기 위한 어드레스 변환 테이블(101A)이 제공된다. 어드레스 변환 테이블(101A)은 논리 어드레스에 대응하는 기록 위치를 등록하고 무효화하며 맵핑을 검색하는 기능을 갖는다. 또한, 어드레스 변환 테이블(101A)은 맵핑이 업데이트될 경우, 그 업데이트된 기록 위치에 대응하는 블록의 블록 식별자(블록의 일련 번호 등)와, 업데이트 전후의 블록 내의 유효 데이터량의 차분을 유효 데이터량 관리 유닛(103)에 통지하는 기능을 갖는다.
맵핑 정보를 유지하는 어드레스 변환 테이블(101A)에는 다양한 데이터 구조를 적용할 수 있다. 도 6은 어드레스 변환 테이블의 단순한 데이터 구조의 일례이다. 도 6에 도시하는 데이터 구조는 논리 용량분의 모든 클러스터의 기록 위치를 내부에 저장할 수 있는 어드레스 변환 테이블(101A)이 논리 어드레스 순으로 각 클러스터의 기록 위치를 유지하는 구조이다. 예컨대, 이 테이블 구조는 메모리 상에 미리 준비되어 있다. 도 6에 도시하는 예에서는, 클러스터 사이즈가 4 KB이고, 각 클러스터 데이터의 선두 논리 어드레스가 8의 배수이며, 기록 위치로서 블록 식별자, 페이지 번호, 및 페이지 내 오프셋 위치를 유지한다.
도 6에 도시하는 데이터 구조의 예에서는, 어드레스 변환 테이블(101A) 내의 모든 엔트리 중에서 기록 위치에 대응하는 엔트리를 검색해야 한다. 그래서 비용이 너무 많이 든다. 이에, 어드레스 변환 테이블(101A)은 기록 위치로부터 논리 어드레스를 고속으로 검색할 수 있는 리버스 테이블(reverse table)을 추가로 유지할 수 있다. 도 7은 리버스 테이블의 예를 도시한다. 도 7에 도시하는 예에 있어서, 리버스 테이블은 각 블록 내의 모든 기록 위치에 대응하는 논리 어드레스를 내부에 기록하는 서브 테이블(101b-1, 101b-2, 등)과, 각 블록에 대응하는 서브 테이블(101b-1, 101b-2, 등)에의 포인터를 갖는 메인 테이블(101a)을 포함한다.
다음으로, 호스트 장치(150)로부터의 요구에 따라 데이터가 기록 및 삭제되고 메모리 시스템(1) 내에 데이터가 전사될 경우에, 어드레스 변환 테이블(101A)에서의 맵핑이 어떻게 업데이트되는지에 대해 도면을 이용하여 상세하게 설명한다. 이 설명에 있어서, 호스트 장치(150)로부터 지정된 기록 데이터의 논리 어드레스가 16인 것으로 한다.
도 8과 도 9는 데이터가 기록될 때에 맵핑의 업데이트를 설명하기 위한 도면이다. 도 8에 도시하는 예에서, 데이터가 아직 기록되지 않은 어드레스 변환 테이블(101A)에, 논리 어드레스 "16"에 대응하는 기록 위치로서, 블록 "C", 페이지 번호 "2" 및 페이지 내 오프셋 위치 "1"이 등록된다. 다른 논리 어드레스에 기록될 데이터를 포함한 페이지 사이즈분의 데이터가 호스트 장치(150)로부터 전송되어 버퍼 메모리 유닛(120)에 축적될 경우, 기록 커맨드 처리 유닛(105)은 버퍼 메모리 유닛(120)에 축적된 페이지 사이즈분의 데이터를, 신규 데이터가 기록될 블록으로서 선택된 블록 "A"의 미기록 페이지 "1"에 기록한다.
데이터가 기록된 후에, 도 9에 도시하는 바와 같이, 어드레스 변환 테이블(101A)에는, 논리 어드레스 "16"에 대응하는 기록 위치로서, 블록 "A", 페이지 "1", 및 페이지 내 오프셋 위치 "0"이 기록 커맨드 처리 유닛(105)에 의해 등록된다. 이에 따라, 어드레스 변환 테이블(101A)이 관리하는 맵핑이 업데이트된다. 그 결과, 오래된 기록 위치의 데이터가 무효 데이터가 되고, 새로운 기록 위치의 데이터가 유효 데이터가 된다.
도 10과 도 11은 데이터가 삭제될 때에 맵핑의 업데이트를 설명하기 위한 도면이다. 데이터 삭제 시의 맵핑 업데이트는 데이터 기록 시의 맵핑 업데이트와 다르며, 블록에 데이터가 기록되지 않고, 어드레스 변환 테이블(101A)에서 논리 어드레스에 대응하는 기록 위치의 무효화만이 이루어진다. 도 10과 도 11에 도시하는 예에서는, 삭제 커맨드 처리 유닛(106)이 데이터가 아직 삭제되지 않은 어드레스 변환 테이블(101A)(도 10 참조)에서, 논리 어드레스 "16"에 대응하는 엔트리의 기록 위치에 무효값(예컨대, 어떤 블록도 나타내지 않는 블록 식별자)을 등록함으로써 맵핑을 무효화한다(도 11 참조). 이에 따라, 블록 "C" 내의 오래된 기록 위치의 데이터가 무효 데이터가 된다.
도 12와 도 13은 SSD 내에서 데이터 전사 시의 맵핑 업데이트를 설명하기 위한 도면이다. 데이터 기록 시의 맵핑 업데이트와 데이터 전사 시의 맵핑 업데이트의 다른 점은 기록/전사될 데이터가 메모리 시스템(1) 내부에 기록되어 있는지의 여부이다.
도 12에 도시하는 예에서는, 데이터 전사 전에, 논리 어드레스 "0", "8" 및 "16"에 대응하는 유효 데이터가 전사원 블록 "E" 및 "F"에 기록되어 있다. 블록 삭감 처리 유닛(107)은 전사원 블록으로서 선택된 사용 블록 내 선두 페이지로부터 올림차순으로, 어드레스 변환 테이블(101A)을 이용하여 각 기록 위치의 데이터가 유효 데이터인지의 여부를 체크한다. 블록 삭감 처리 유닛(107)은 전사원 블록 "E" 및 "F" 내의 체크된 유효 데이터를 순차 판독하여 판독된 데이터를 버퍼 메모리 유닛(120)에 출력한 후, 페이지 사이즈분의 데이터가 버퍼 메모리 유닛(120)에 축적되면, 이 페이지 사이즈분의 데이터를 전사처 블록 "D"에 페이지 단위로 기록함으로써, 전사 대상 유효 데이터를 전사한다.
데이터 전사 후에, 도 13에 도시하는 바와 같이, 블록 삭감 처리 유닛(107)은 전사된 데이터의 논리 어드레스에 대응하는 기록 위치를 어드레스 변환 테이블(101A)에 등록한다. 도 12와 도 13에 도시하는 예에서는, 논리 어드레스 "0", "8" 및 "16"에 대응하는 유효 데이터가 전사처 블록 "D"에 전사되기 때문에, 블록 "D" 내의 위치는 이들 논리 어드레스의 기록 위치로서 어드레스 변환 테이블(101A)에 등록된다. 그 결과, 전사원 블록 "E" 및 "F" 내의 오래된 기록 위치의 데이터는 무효 데이터가 된다.
도 7에 도시한 바와 같이, 어드레스 변환 테이블(101A) 내에 리버스 테이블을 유지하는 경우, 전술한 바와 같이 맵핑 업데이트 시에 리버스 테이블도 업데이트된다.
다음으로, 제1 실시형태에 따른 블록 관리에 대해서, 도 5를 참조하여 상세하게 설명한다. 블록은 프리 블록과 사용 블록으로 분류될 수 있다. 프리 블록에는 유효 데이터가 기록되지 않기 때문에, 차후에 프리 블록을 데이터가 기록되는 블록으로서 할당하는 것이 가능하다. 한편, 사용 블록은 유효 데이터를 갖는다. 이 사용 블록은 그 동작 모드에 따라서 SLC 블록과 MLC 블록으로 분류된다.
블록 관리 유닛(102)은 각 블록을 관리하는 블록 관리 정보(102d) 외에도, 어느 블록이 프리 블록인지 나타내는 정보인 프리 블록 그룹 관리 정보(102a)(제1 관리 정보), 어느 블록이 SLC 블록인지 나타내는 정보인 SLC 블록 그룹 관리 정보(102b)(제2 관리 정보), 및 어느 블록이 MLC 블록인지 나타내는 정보인 MLC 블록 그룹 관리 정보(102c)(제3 관리 정보)를 유지한다. 각 블록 그룹의 관리 정보 부분(102a∼102c)은 각 블록 그룹에 포함된 블록의 정보와, 그 블록의 수를 포함한다.
블록 관리 유닛(102)은 프리 블록 그룹 관리 정보(102a)를 내부에 저장하는 저장 장치(제1 저장 유닛), SLC 블록 그룹 관리 정보(102b)를 저장하는 저장 장치(제2 저장 유닛), MLC 블록 그룹 관리 정보(102c)를 내부에 저장하는 저장 장치(제3 저장 유닛)를 포함할 수 있다. 각 관리 정보 부분은 블록 관리 유닛(102)에 포함된 단일 저장 장치에 저장될 수도 있고, 또는 블록 관리 유닛(102)은 복수의 저장 장치를 구비하여, 서로 다른 저장 장치(저장 유닛)에 각 관리 정보 부분을 저장할 수도 있다.
블록 관리 유닛(102)은 프리 블록을 할당, 프리 블록을 등록, 사용 블록을 등록, 블록 그룹 내의 블록수의 참조, 및 블록 정보의 참조를 실행하는 기능을 갖는다.
사용 블록을 등록하는 기능은 등록 대상으로 지정된 블록의 동작 모드에 따라, 그 블록의 정보를 SLC 블록 그룹 관리 정보(102b) 또는 MLC 블록 그룹 관리 정보(102c)에 추가하고, 그 블록 그룹의 블록수를 하나 추가한다.
프리 블록을 할당하는 기능은 프리 블록 그룹 관리 정보(102a)를 참조하여, 프리 블록 그룹에 포함된 블록을 선택하고, 이 선택된 프리 블록의 정보를 기록 커맨드 처리 유닛(105) 또는 블록 삭감 처리 유닛(107)에 반환한다. 또한, 프리 블록을 할당하는 기능은 선택된 프리 블록의 정보를 프리 블록 그룹 관리 정보(102a)에서 삭제하고, 프리 블록 그룹의 블록수를 하나 삭감한다.
프리 블록을 등록하는 기능은 등록 대상으로 지정된 블록의 동작 모드에 따라, 그 블록의 정보를 SLC 블록 그룹 관리 정보(102b) 또는 MLC 블록 그룹 관리 정보(102c)에서 삭제하고 그 블록 그룹의 블록수를 하나 삭감한다. 그 후, 프리 블록을 등록하는 기능은 프리 블록 그룹 관리 정보(102a)에 그 블록의 정보를 추가하고, 그 블록 그룹의 블록수를 하나 추가한다. 이 기능은 데이터 전사에 의해 유효 데이터가 "0"이 되는 사용 블록을 프리 블록으로서 회수할 때에, 블록 삭감 처리 유닛(107)에 의해 사용된다.
여기서, 각 블록 그룹의 관리 정보의 데이터 구조로서 다양한 형태를 고려할 수 있다. 그러나, 제1 실시형태의 경우, 관리 정보는 전술한 바와 같이, 메모리 시스템(1)에 탑재된 모든 블록이 하나의 블록 그룹에 집중될 경우에도 블록을 관리할 수 있는 데이터 구조를 가질 필요가 있다. 그러한 데이터 구조를 갖는 이유는 동시에 모든 블록을 SLC 블록으로서 사용하는 것을 가능하게 하기 위해서이다. 따라서, 예컨대 가장 단순한 구조를 갖는 그러한 데이터 구조 중 하나는 블록 식별자를 내부에 저장한 노드를 연결하는 리스트 구조이다.
제1 실시형태에서는, NAND 플래시 메모리가 제공하는 하나의 물리 블록을 변형 없이 하나의 블록으로서 사용할 수도 있고, 또는 복수의 물리 블록을 조합하여 하나의 논리 블록을 구성할 수도 있다. 예컨대, 하나의 물리 블록(MLC 모드)의 블록 용량이 1 MB이고, 페이지 사이즈가 8 KB이며, 페이지의 수가 128개라면, 32개의 물리 블록을 조합하여 논리 블록을 구성할 경우, 논리 블록은 블록 용량이 32 MB, 페이지 사이즈가 256 KB, 페이지의 수가 128개인 블록으로서 취급될 수 있다. 이 경우, 각 기능 블록에 사용되는 블록 식별자는 논리 블록의 블록 식별자이다.
복수의 물리 블록을 조합하여 조합된 물리 블록을 하나의 논리 블록으로서 취급하는 것의 장점 중 하나는 총 블록수가 삭감됨으로써 관리해야 할 블록의 정보를 줄일 수 있다는 것이다. 예를 들어, 총 저장 용량이 128 GB인 SSD에서, 물리 블록의 수는 131072(=128×1024)개이다. 한편, 각각 32개의 물리 블록이 조합되는 논리 블록의 수는 4096개이다. 모두 병렬로 액세스될 수 있는 물리 블록을 조합하여 논리 블록을 구성할 경우, 하나의 논리 블록의 액세스 속도를 향상시킬 수 있다.
이어서, 제1 실시형태에 따른 유효 데이터량 관리 유닛(103)에 대해서, 도면을 참조하여 상세하게 설명한다. 유효 데이터량 관리 유닛(103)은 SLC 블록 그룹 및 MLC 블록 그룹에 포함된 블록의 총 유효 데이터량을 산출한다. 유효 데이터량 관리 유닛(103)은 어드레스 변환 테이블(101A)로부터의 업데이트 통지를 트리거로서 이용하여, 맵핑이 업데이트된 블록이 속하는 블록 그룹을 블록 관리 유닛(102)으로부터 검색하고, 업데이트 통지에 포함된 차분 정보를 이용하여 그 블록 그룹의 유효 데이터량을 늘리거나 줄인다. 여기서, 유효 데이터량 관리 유닛(103)은 각 블록마다 유효 데이터량의 정보를 유지할 수 있다. 각 블록 그룹의 유효 데이터량과 마찬가지로, 각 블록의 유효 데이터량은 그 블록의 유효 데이터의 차분 정보를 이용하여 늘어나거나 줄어든다.
유효 데이터량 관리 유닛(103)은 독립적인 기능 유닛이 아닐 수도 있다. 예를 들어, 유효 데이터량 관리 유닛(103)의 기능은 어드레스 변환 테이블(101A)에 포함될 수도 있다. 구체적으로, 어드레스 변환 테이블(101A)이 도 7에 도시한 바와 같은 리버스 테이블을 포함하는 경우, 각 서브 테이블(101b-1, 101b-2, 등)에는 각 블록의 유효 데이터량이 등록될 수 있다. 또는 이와 다르게, 유효 데이터량 관리 유닛(103)의 기능이 블록 관리 유닛(102)에 포함될 수도 있다. 이 경우, 블록 관리 유닛(102)에는 각 블록과 각 블록 그룹의 유효 데이터량에 관한 정보가 등록된다.
이어서, 제1 실시형태에 따른 메모리 시스템(1)의 동작에 대해서, 도면을 참조하여 상세하게 설명한다. 도 14는 호스트 장치(150)로부터 데이터 기록 요구가 발행될 경우의 개략 동작을 나타내는 흐름도이다. 도 14에 도시하는 동작에서는 초기 상태로서, 신규 데이터가 기록될 블록이 할당되는 것으로 한다.
도 14에 나타내는 바와 같이, 기록 커맨드 처리 유닛(105)은 먼저 호스트 장치(150)로부터 인터페이스 유닛(130)에 신규 데이터의 기록 커맨드가 입력되는 것을 대기한다(단계 S101의 NO). 기록 커맨드를 수신하면(단계 S101의 YES), 기록 커맨드 처리 유닛(105)은 버퍼 메모리 유닛(120) 상에 데이터 저장 영역을 확보하고(단계 S102), 그 다음에 호스트 장치(150)로부터 전송된 신규 데이터를 버퍼 메모리 유닛(120)에 확보된 데이터 저장 영역에 저장한다(단계 S103).
이어서, 기록 커맨드 처리 유닛(105)은 버퍼 메모리 유닛(120)에 저장된 미기록 상태의 신규 데이터의 데이터량을 체크하고(단계 S104), 데이터량이 페이지 사이즈 미만일 경우(단계 S104의 NO), 단계 S101로 리턴해서 다음 기록 커맨드를 대기한다. 한편, 데이터량이 페이지 사이즈 이상인 경우(단계 S104의 YES), 기록 커맨드 처리 유닛(105)은 버퍼 메모리 유닛(120) 내의 미기록 데이터로부터 페이지 사이즈분의 데이터를 선택하여, 이 선택된 데이터를, 비휘발성 메모리 유닛(110) 내에 할당되어 있고 신규 데이터가 기록될 블록 내의 페이지에 SLC 모드로 기록한다(단계 S105).
다음으로, 기록 커맨드 처리 유닛(105)은 기록된 데이터의 논리 어드레스와 기록 위치(블록 식별자, 페이지 번호 및 페이지 내 오프셋)를 어드레스 변환 테이블(101A)에 등록함으로써(단계 S106), 맵핑을 업데이트한다. 이때, 유효 데이터량의 변화가 어드레스 변환 테이블(101A)로부터 유효 데이터량 관리 유닛(103)에 통지된다. 그 후, 기록 커맨드 처리 유닛(105)은 기록 데이터가 버퍼 메모리 유닛(120)에 저장되어 있는 영역을 해방시킨다(단계 S107).
이어서, 기록 커맨드 처리 유닛(105)은 데이터가 기록되지 않은 페이지, 즉 신규 데이터가 기록될 블록 내 미기록 페이지가 존재하는지의 여부를 결정한다(단계 S108). 신규 데이터가 기록될 블록의 동작 모드는 SLC 모드이다. 미기록 페이지가 있다면(단계 S108의 NO), 기록 커맨드 처리 유닛(105)은 단계 S104로 리턴해서 버퍼 메모리 유닛(120)에 남아있는 미기록 데이터량을 체크한다. 한편, 미기록 페이지가 존재하지 않은 경우에(단계 S108의 YES), 즉 신규 데이터가 기록될 블록 내 최대 개수의 페이지까지 데이터의 기록이 완료된 경우에, 기록 커맨드 처리 유닛(105)은 신규 데이터가 기록된 블록을 블록 관리 유닛(102)의 SLC 블록 그룹 관리 정보(102b)에 등록한다(단계 S109). 계속해서, 기록 커맨드 처리 유닛(105)은 블록 관리 유닛(102)의 프리 블록 그룹 관리 정보(102a)로 관리된 하나의 프리 블록을 취득하고 그 프리 블록을 신규 데이터가 기록될 다음 블록으로서 할당한다(단계 S110).
다음으로, 기록 커맨드 처리 유닛(105)은 블록 관리 유닛(102)의 프리 블록 관리 정보(102a)에서 프리 블록 그룹 내의 블록수를 참조하여, 프리 블록수가 미리 정해진 임계치(Tbf) 이하인지를 판정한다(단계 S111). 프리 블록수가 미리 정해진 임계치(Tbf)보다 큰 경우(단계 S111의 NO), 기록 커맨드 처리 유닛(105)은 단계 S104로 리턴한다. 한편, 프리 블록수가 미리 정해진 임계치(Tbf) 이하인 경우(단계 S111의 YES), 기록 커맨드 처리 유닛(105)은 블록 삭감 처리 유닛(107)에 사용 블록수 삭감 요구를 발행하고, 사용 블록 삭감 처리를 실행한다(단계 S112). 그 후, 기록 커맨드 처리 유닛(105)은 단계 S104로 리턴한다.
여기서, 미리 정해진 임계치(Tbf)는 블록 삭감 처리 유닛(107)에서 한번에 전사처 블록으로서 확보된 블록수 이상이어야 한다. 적어도 하나의 블록이 전사처 블록으로서 필요하기 때문에, 미리 정해진 임계치(Tbf)는 1 이상이어야 한다.
도 14에 있어서, 단계 S101∼S103의 처리는 단계 S104 이후의 처리와 동시에 실행될 수 있다. 그러나, 데이터가 페이지에 기록되는 단계 S105 이후의 처리를 실행하는데 비교적 긴 시간이 걸린다면, 버퍼 메모리 유닛(120) 상에 데이터 저장 영역을 확보하는 단계 S102에서 충분한 사이즈의 영역이 해방되어 있지 않을 수도 있다. 그래서, 단계 S101∼S103의 처리와 단계 S104 이후의 처리를 동시에 실행할 경우, 버퍼 메모리 유닛(120) 상에 충분한 사이즈의 영역이 해방될 때까지 대기하는 단계를 설정하는 것이 바람직하다.
단계 S104 이후의 처리에서도, 신규 데이터 기록 처리를 수행하는 단계 S104∼S110의 처리를, 사용 블록 삭감 처리를 수행하는 단계 S111∼S112와 병행하여 실행하는 것이 가능하다. 다만, 비휘발성 메모리 유닛에의 데이터 액세스를 병행하여 실행할 수 없는 페이지 판독 동작 또는 페이지 기록 동작이 존재한다면, 이들 동작은 적절한 방법으로 순차적으로 실행되어야 한다.
여기서, 도 14의 단계 S112에 나타낸 사용 블록 삭감 처리에 대해서 설명한다. 사용 블록 삭감 처리에서는, 몇몇 사용 블록에 산재된 유효 데이터를 통합하고 그 유효 데이터를 다른 블록에 전사함으로써, 사용 블록의 수를 줄이고 프리 블록의 수를 늘린다. 예를 들면, 전사원 블록이 M개 있고, M개의 전사원 블록 내에 저장되어 있는 유효 데이터량이 N개의 전사처 블록에 저장될 수 있다면, 사용 블록수를 (M-N)개만큼 삭감할 수 있다. 이 경우, 제1 실시형태에서는, 전사원 블록으로서, 동일한 동작 모드(SLC 모드 또는 MLC 모드)의 사용 블록을 선택한다. 또한, 전사처 블록에는 MLC 모드로 데이터가 전사된다.
이하에서는, 2가지 예의 사용 블록 삭감 처리에 대해 설명한다. 도 15는 복수의 전사원 블록과 복수의 전사처 블록을 통합 설정하는 경우의 예이다. 도 16a는 하나의 전사원 블록과 하나의 전사처 블록을 설정하는 예이다. 도 16b는 도 16a의 변형예이다.
도 15에 도시한 바와 같이, 블록 삭감 처리 유닛(107)이 기록 커맨드 처리 유닛(105)으로부터 사용 블록수 삭감 요구를 수신하면, 블록 삭감 처리 유닛(107)은 먼저 전사원 블록 그룹 선택 유닛(108)으로 하여금 블록 관리 유닛(102)이 관리하는 SLC 블록 그룹과 MLC 블록 그룹 중에서 전사원이 될 블록 그룹, 즉 블록이 삭감될 블록 그룹을 선택하기 위한 전사원 블록 그룹 선택 처리를 실행하게 한다(단계 S121). 계속해서, 블록 삭감 처리 유닛(107)은 전사원 블록 선택 유닛(109)으로 하여금, 선택 블록 그룹 중 전사원이 되는 M(≥1)개의 사용 블록을 전사원 블록으로서 선택하기 위한 처리를 실행하게 한다(단계 S122). 여기서, 예를 들면 MLC 블록 그룹이 전사원 블록 그룹으로서 선택되고, 이 MLC 블록 그룹의 총 유효 데이터율이 V라고 하면, 유효 데이터가 M×V개의 전사처 블록에 저장될 수 있는 M개의 전사원 블록을 선택하는 것이 가능하다. 이 경우, M≥1/(1-V)를 만족하는 정수 M을 선택함으로써, 유효 데이터는 N개의 MLC 블록에 전사되는데 여기서 N은 M-1 이하의 정수이다.
계속해서, 블록 삭감 처리 유닛(107)은 선택된 M개의 전사원 블록의 유효 데이터를 MLC 블록에 저장하는데 필요한 블록수 N을 계산하고, 블록 관리 유닛(102)의 프리 블록 그룹 관리 정보(102a)로 관리되는 프리 블록 그룹으로부터 N개의 프리 블록을 취득하고 그 프리 블록을 전사처 블록으로서 할당한다(단계 S123). 블록수 N은, 예컨대 선택된 M개의 전사원 블록 각각의 유효 데이터량을 유효 데이터량 관리 유닛(103)으로부터 구하고, 구한 유효 데이터량을 합산하여 모든 전사원 블록의 총 유효 데이터량(D)을 산출하며, 구해진 유효 데이터량(D)을 MLC 블록의 블록 용량(Sm)으로 나누어, 구해진 값을 정수로 반올림함으로써 계산될 수 있다.
다음으로, 블록 삭감 처리 유닛(107)은 버퍼 메모리 유닛(120) 상에 적어도 하나의 페이지에 대응하는 데이터 저장 영역을 확보한 다음, 선택된 M개의 전사원 블록에 저장된 1 페이지에 대응하는 유효 데이터를 판독하고 그 판독 유효 데이터를 버퍼 메모리 유닛(120)에 확보된 데이터 저장 영역에 출력한다(단계 S124). 계속해서, 블록 삭감 처리 유닛(107)은 버퍼 메모리 유닛(120) 상에 출력된 유효 데이터를, 전사처 블록으로서 선택된 프리 블록의 페이지에 MLC 모드로 기록한다(단계 S125).
이어서, 블록 삭감 처리 유닛(107)은 M개의 모든 전사원 블록의 유효 데이터가 전사되었는지의 여부를 판정하고(단계 S126), 모든 유효 데이터가 전사되지 않았다면(단계 S126의 NO), 블록 삭감 처리 유닛(107)은 단계 S124로 리턴해서 남아있는 유효 데이터를 페이지 단위로 전사한다. 한편, 모든 유효 데이터가 전사되었다면(단계 S126의 YES), 블록 삭감 처리 유닛(107)은 논리 어드레스에 대응하는 전사처의 기록 위치를 어드레스 변환 테이블(101A)에 등록함으로써 전사된 유효 데이터의 맵핑을 업데이트한다(단계 S127). 이에 따라, 선택된 M개의 전사원 블록 내의 유효 데이터 전부가 무효 데이터가 된다. 계속해서, 블록 삭감 처리 유닛(107)은 데이터의 전사가 이루어진 전사원 블록을 블록 관리 유닛(102)의 프리 블록 그룹 관리 정보(102a)에 등록하고(단계 S128), 새롭게 유효 데이터가 저장되는 전사처 블록을 블록 관리 유닛(102)의 MLC 블록 그룹 관리 정보(102c)에 등록하며(단계 S129), 도 14에 나타내는 동작으로 리턴한다. 이런 식으로, 데이터의 전사가 이루어진 전사원 블록이 프리 블록으로서 회수된다. 그 결과, 사용 블록수가 (M-N)개씩 삭감된다.
한편, 하나의 전사원 블록과 하나의 전사처 블록을 설정하는 경우, 처리 흐름은 도 16a에 나타내는 바와 같다. 블록 삭감 처리 유닛(107)은 기록 커맨드 처리 유닛(105)으로부터 사용 블록수 삭감 요구를 수신하면, 먼저 전사원 블록 그룹 선택 유닛(108)으로 하여금 도 15의 단계 S121에서와 동일한 전사원 블록 그룹 선택 처리를 실행시키고(단계 S141), 그 다음에 총 전사처 블록의 수(Bdstf)에 "0"을 설정한다(단계 S142). 이어서, 블록 삭감 처리 유닛(107)은 전사원 블록 선택 유닛(109)으로 하여금 선택된 블록 그룹에서 전사원 블록으로서 하나의 사용 블록을 선택하게 하고(단계 S143), 유효 데이터의 전사가 이루어진 총 전사원 블록의 수(Bsrc)에 "0"을 설정한다(단계 S144).
다음으로, 블록 삭감 처리 유닛(107)은 블록 관리 유닛(102)의 프리 블록 관리 정보(102a)로 관리된 프리 블록 그룹에서 하나의 프리 블록을 취득하고, 그 프리 블록을 전사처 블록으로서 할당하며(단계 S145), 총 전사처 블록의 수(Bdst)를 1씩 인크리멘트한다(단계 S146). 블록 삭감 처리 유닛(107)이 사용하는 데이터 저장 영역의 적어도 하나의 페이지가 버퍼 메모리 유닛(120)에 할당되는 것으로 한다.
이어서, 블록 삭감 처리 유닛(107)은 선택중인 전사원 블록에 저장된 유효 데이터를 판독하고, 그 판독된 유효 데이터를 버퍼 메모리 유닛(120)에 확보된 데이터 저장 영역에 출력한다(단계 S147). 다음으로, 블록 삭감 처리 유닛(107)은 선택중인 전사원 블록 내의 모든 유효 데이터가 판독되어 버퍼 메모리 유닛(120)에 출력되었는지의 여부를 판정하고(단계 S148), 모든 유효 데이터가 판독되지 않았다면(단계 S148의 NO), 블록 삭감 처리 유닛(107)은 단계 S150으로 이행한다.
단계 S148의 판정 결과로서, 전사원 블록 내의 모든 유효 데이터가 판독되었다면(단계 S148의 YES), 단계 S143에서와 마찬가지로, 블록 삭감 처리 유닛(107)은 전사원 블록 선택 유닛(109)으로 하여금 선택된 블록 그룹에서 전사원으로서 하나의 사용 블록을 선택하게 하고(단계 S149), 단계 S150으로 이행한다. 단계 S149에서 신규 전사원 블록을 선택할 경우, 이 선택 직전에 선택된 전사원 블록은 다시 선택되지 않는 것이 바람직하다.
다음으로, 블록 삭감 처리 유닛(107)은 버퍼 메모리 유닛(120)에 출력된 데이터가 페이지 사이즈 이상인지의 여부를 판정하고(단계 S150), 그 데이터가 페이지 사이즈 이상이 아니면(단계 S150의 NO), 블록 삭감 처리 유닛(107)은 단계 S147로 리턴한다. 한편, 데이터가 페이지 사이즈 이상이면(단계 S150의 YES), 블록 삭감 처리 유닛(107)은 버퍼 메모리 유닛(120)에 출력된 유효 데이터를, 전사처 블록으로서 선택된 프리 블록의 페이지에 MLC 모드로 기록한다(단계 S151).
이어서, 블록 삭감 처리 유닛(107)은 전사된 유효 데이터의 논리 어드레스에 대응하는 전사처의 기록 위치를 어드레스 변환 테이블(101A)에 등록함으로써, 전사된 유효 데이터의 맵핑을 업데이트한다(단계 S152).
다음으로, 블록 삭감 처리 유닛(107)은 단계 S151에서 유효 데이터의 전사가 이루어진 전사원 블록 중, 유효 데이터량이 0이 되는 전사원 블록 전부를 프리 블록 그룹으로서 등록한다(단계 S153). 계속해서, 블록 삭감 처리 유닛(107)은 유효 데이터의 전사가 이루어진 총 전사원 블록의 수(Bsrc)에, 단계 S153에서 프리 블록이 되는 전사원 블록수(프리 블록 증가수)를 가산한다(단계 S154).
이어서, 블록 삭감 처리 유닛(107)은 전사처 블록에 MLC 모드로 최대 개수의 페이지까지 기록이 완료되었는지의 여부를 판정하고(단계 S155), 최대 개수의 페이지까지 데이터 기록이 완료되지 않았다면(단계 S155의 NO), 블록 삭감 처리 유닛(107)은 단계 S147로 리턴한다.
단계 S155의 판정 결과, 전사처 블록에 MLC 모드로 최대 개수의 페이지까지 기록이 완료된 경우(단계 S155의 YES), 블록 삭감 처리 유닛(107)은 전사처 블록을 블록 관리 유닛(102)의 MLC 블록 관리 정보(102c)에 등록한다(단계 S156). 계속해서, 블록 삭감 처리 유닛(107)은 삭감 블록의 수가 미리 정해진 삭감 블록수 이상인지의 여부, 즉 데이터의 전사가 이루어진 총 전사원 블록의 수(Bsrc)로부터 총 전사처 블록의 수(Bdst)를 감산하여 구한 값이 미리 정해진 삭감 블록수 이상인지의 여부를 판정하고(단계 S157), 삭감 블록수가 미리 정해진 삭감 블록수 이상이 아니면(단계 S157의 NO), 블록 삭감 처리 유닛(107)은 단계 S145로 리턴한다. 한편, 삭감 블록수가 미리 정해진 삭감 블록수 이상이면(단계 S157의 YES), 블록 삭감 처리 유닛(107)은 도 14에 도시한 동작으로 리턴한다. 전술한 방식과 같이, 원하는 수의 사용 블록을 삭감할 수 있다.
전사중에 어떤 유형의 문제로 인해 전사처 블록이 판독될 수 없는 경우에는, 유효 데이터와 어드레스 변환 테이블을 롤백(rollback)할 수 있도록 전사전 상태를 세이브하는 것이 가능하다. 도 16b는 도 16a의 변형예이다. 도 16b에서는, 유효 데이터의 복사가 이루어진 전사원 블록이 바로 프리 블록으로서 회수하지 않고, 블록 용량분의 데이터가 전사처 블록에 전사 완료되기까지 전사원 블록을 임시적으로 프리 블록 준비 그룹으로서 보호한다. 데이터가 전사처 블록에 전사 완료되면, 전사전 상태를 세이브할 필요가 없다. 따라서, 전사된 데이터에 대해서 어드레스 변환 테이블이 업데이트된 후에, 데이터 전사가 완료된 전사원 블록을 프리 블록 준비 그룹으로부터 프로 블록으로서 일괄적으로 회수한다.
도 16b의 단계 S141부터 S151까지는 도 16a와 동일하다. 이하, 단계 S160 이후에 관해서 설명한다.
블록 삭감 처리 유닛(107)은 단계 S151에서 유효 데이터의 전사가 이루어진 전사원 블록 중, 유효 데이터의 복사가 완료된 전사원 블록 모두를 프리 블록 준비 그룹으로서 등록한다(단계 S160).
이어서, 블록 삭감 처리 유닛(107)은 전사처 블록에 MLC 모드로 최대 개수의 페이지까지 데이터 기록이 완료되었는지의 여부를 판정하고(단계 S161), 최대 개수의 페이지까지 데이터 기록이 완료되지 않은 경우에는(단계 S161의 NO), 블록 삭감 처리 유닛(107)은 단계 S147로 리턴한다.
단계 S161에서의 판정 결과, 전사처 블록에 MLC 모드로 최대 개수의 페이지까지 데이터 기록이 완료되었다면(단계 S161의 YES), 블록 삭감 처리 유닛(107)은 전사처 블록을 블록 관리 유닛(102)의 MLC 블록 관리 정보(102c)에 등록한다(단계 S162).
다음으로, 블록 삭감 처리 유닛(107)은 전사처 블록에 전사된 유효 데이터의 논리 어드레스에 대응하는 전사처의 기록 위치를 어드레스 변환 테이블(101A)에 등록함으로써, 전사처 블록에 전사된 유효 데이터의 맵핑을 업데이트한다(단계 S163). 그런 다음, 블록 삭감 처리 유닛(107)은 프리 블록 준비 그룹에 포함된 블록을 프리 블록으로서 등록한다(단계 S164). 계속해서, 블록 삭감 처리 유닛(107)은 유효 데이터의 전사가 완료된 총 전사원 블록의 수(Bsrc)에, 단계 S164에서 프리 블록이 된 전사원 블록수를 가산한다(단계 S165).
이어서, 블록 삭감 처리 유닛(107)은 단계 S166으로 이행하고, 도 16a의 단계 S157과 마찬가지로, 삭감 블록수가 미리 정해진 삭감 블록수 이상이 아니면(단계 S166의 NO), 단계 S145로 리턴한다. 한편, 삭감 블록수가 미리 정해진 삭감 블록수 이상이면(단계 S166의 YES), 블록 삭감 처리 유닛(107)은 도 14에 도시한 동작으로 리턴한다.
만약에 도 16a에 도시하는 바와 같이, 전사처 블록이 데이터로 채워지기 전에 전사원 블록을 프리 블록으로서 등록하고, 프리 블록을 재이용하여 소거한다면, 그리고 그 후에 전사처 블록에 문제가 생겨 그 전사처 블록에서 데이터를 판독할 수 없다면, 그 데이터는 소실된다. 한편, 도 16b의 처리의 흐름에 따르면, 전사처 블록이 데이터로 채워질 때까지는 동일한 데이터가 전사원 블록과 전사처 블록 양쪽에 존재한다. 이에 따라, 전사중에 문제가 발생하여 전사처 블록에서 데이터를 판독할 수 없을지라도 원래 데이터가 전사원 블록에 남아있기 때문에, 데이터는 소실되지 않는다. 이와 같이, 도 16b에 도시한 처리 흐름에서는 내장해성을 높일 수 있다.
다음으로, 도 15의 단계 S121과 도 16a 및 도 16b의 단계 S141에 나타내는 전사원 블록 그룹 선택 처리에 대해서 설명한다. 전사원 블록 그룹 선택 처리로서, 몇가지 방법을 생각할 수 있다. 이하에는 그 중 3가지 방법을 예를 들어 설명한다.
도 17은 MLC 블록 그룹의 유효 데이터율이 미리 정해진 임계치보다 낮은 경우에는 MLC 블록 그룹을 우선적으로 전사원 블록 그룹으로서 선택하는 경우의 예이다. 도 18은 SLC 블록 그룹과 MLC 블록 그룹 중에서 유효 데이터율이 낮은 블록 그룹을 전사원 블록 그룹으로서 선택하는 경우의 예이다. 도 19는 도 18에 도시하는 예에, 도 17에 도시하는 MLC 블록 그룹의 블록수(Bm)와 유효 데이터율(Vm)의 제한을 추가한 예이다.
도 17에 도시한 바와 같이, 전사원 블록 그룹 선택 유닛(108)은 블록 관리 유닛(102)의 MLC 블록 관리 정보(102c)를 참조하여 MLC 블록 그룹의 총 블록수(Bm)를 구하고(단계 S201), MLC 블록 그룹에 속하는 MLC 블록 각각의 유효 데이터량을 유효 데이터량 관리 유닛(103)으로부터 구하며, 이 구해진 유효 데이터량을 합산하여 모든 MLC 블록 그룹에서 총 유효 데이터량(Dm)을 산출하며(단계 S202), 계속해서, 이하의 식 1에 나타내는 바와 같이, 전사원 블록 그룹 선택 유닛(108)은 단계 S202에서 구한 총 유효 데이터량(Dm)을, 단계 S201에서 구한 총 블록수(Bm)에 하나의 MLC 블록의 용량(Sm)을 곱하여 구한 값으로 나눔으로써 MLC 블록 그룹의 총 유효 데이터율(Vm)을 산출한다(단계 S203).
Vm = Dm/(Bm*Sm) (1)
이어서, 전사원 블록 그룹 선택 유닛(108)은 MLC 블록 그룹의 총 블록수(Bm)가 미리 정해진 임계치(Tbm) 이하인지의 여부를 판정하고(단계 S204), 총 블록수(Bm)가 임계치(Tbm)보다 큰 경우(단계 S204의 NO), 전사원 블록 그룹 선택 유닛(108)은 계속해서, MLC 블록 그룹의 총 유효 데이터율(Vm)이 미리 정해진 임계치(Tvm)보다 큰지의 여부를 판정한다(단계 S205).
총 블록수(Bm)가 임계치(Tbm) 이하인 경우(단계 S204의 YES), 또는 총 유효 데이터율(Vm)이 임계치(Tvm)보다 큰 경우(단계 S205의 YES), 전사원 블록 그룹 선택 유닛(108)은 SLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S206). 한편, 총 블록수(Bm)가 임계치(Tbm)보다 크고 총 유효 데이터율(Vm)이 임계치(Tvm) 이하인 경우(단계 S204의 NO 및 단계 S205의 NO), 전사원 블록 그룹 선택 유닛(108)은 MLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S207). 이런 식으로, 전사원 블록 그룹을 선택할 경우, 전사원 블록 그룹 선택 유닛(108)은 도 15, 도 16a 또는 도 16b에 도시한 동작으로 리턴하고 처리를 블록 삭감 처리 유닛(107)에 반환한다.
예컨대, 임계치(Tvm)는 모든 블록이 MLC 블록인 경우에서보다 전사 효율이 악화되지 않게 하는 값인 것이 바람직하다. 전사 효율은 호스트에 제공된 논리 용량분의 유효 데이터가 전부 기록되고 그 유효 데이터가 모든 블록에 균등하게 분산되어 저장된 경우에 최악이다. 이 때, 총 저장 용량을 Sall이라 하고, 논리 용량을 Smax라고 하면, 각 블록의 유효 데이터율(V)은 V=Smax<Sall로 표현된다. 여기서, 전사가 이루어질 경우, M개의 전사원 블록[M = 1/(1-V)]을 N개의 전사처 블록(N=M-1)에 전사함으로써, 사용 블록수가 1씩 삭감될 수 있다. 따라서 임계치 Tvm=V일 경우, MLC 블록 그룹의 총 유효 데이터율(Vm)이 임계치(Tvm) 이하라면, 적어도 M개의 전사원 블록이 전사될 경우 사용 블록수를 1씩 삭감할 수 있어, 전술한 최악의 경우보다 전사 효율이 더 악화되지 않는다.
전술한 바와 같이, 도 17에 나타낸 전사원 블록 그룹 선택 유닛(108)에 따르면, 전사 효율이 임계치(Tvm)에 의해 정해지는 값보다 악화되지 않는 범위에서 MLC 블록 그룹의 블록수를 삭감할 수 있어, 삭감된 수의 블록이 SLC 블록으로서 할당될 수 있다.
SLC 블록 그룹과 MLC 블록 그룹 중에서, 유효 데이터율이 낮은 블록 그룹을 전사원 블록 그룹으로서 선택하는 경우, 도 18에 도시하는 바와 같이, 전사원 블록 그룹 선택 유닛(108)은 도 17의 단계 S201∼S203에서와 마찬가지로 총 유효 데이터율(Vm)을 산출한다.
또한, 전사원 블록 그룹 선택 유닛(108)은 블록 관리 유닛(102)의 SLC 블록 관리 정보(102b)를 참조하여 SLC 블록 그룹의 총 블록수(Bs)를 구하고(단계 S221), SLC 블록 그룹에 속하는 MLC 블록 각각의 유효 데이터량을 유효 데이터량 관리 유닛(103)으로부터 구하며, 이 구해진 유효 데이터량을 합산해서 모든 SLC 블록의 총 유효 데이터량(Ds)을 산출하고(단계 S222), 계속해서, 이하의 식 2에 나타내는 바와 같이, 전사원 블록 그룹 선택 유닛(108)은 단계 S222에서 구한 총 유효 데이터량(Ds)을, 단계 S221에서 구한 총 블록수(Bs)에 하나의 SLC 블록의 용량(Ss)을 곱하여 구한 값으로 나눔으로써 SLC 블록 그룹의 총 유효 데이터율(Vs)을 산출한다(단계 S223). 여기서, SLC 모드가 2치 모드이고 MLC 모드가 4치 모드인 경우, SLC 블록의 용량(Ss)은 MLC 블록의 용량(Sm)의 1/2이다.
Vs = Ds/(Bs*Ss) (2)
다음으로, 전사원 블록 그룹 선택 유닛(108)은 단계 S203에서 산출된 MLC 블록 그룹의 총 유효 데이터율(Vm)과, 단계 S223에서 산출된 SLC 블록 그룹의 총 유효 데이터율(Vs)을 비교하고(단계 S224), SLC 블록 그룹의 총 유효 데이터율(Vs)이 MLC 블록 그룹의 총 유효 데이터율(Vm) 이하인 경우(단계 S224의 YES), 전사원 블록 그룹 선택 유닛(108)은 SLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S206). 한편, 총 유효 데이터율(Vs)이 총 유효 데이터율(Vm)보다 큰 경우(단계 S224의 NO), 전사원 블록 그룹 선택 유닛(108)은 MLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S207). 이런 식으로 전사원 블록 그룹을 선택할 경우, 전사원 블록 그룹 선택 유닛(108)은 도 15, 도 16a 또는 도 16b에 도시하는 동작으로 리턴하고 처리를 블록 삭감 처리 유닛(107)에 반환한다.
전술한 바와 같이, 전사원 블록 그룹 선택 유닛(108)의 처리 흐름에 따르면, SLC 블록 그룹과 MLC 블록 그룹 중에서 유효 데이터율이 낮은 블록 그룹이 전사원 블록 그룹으로서 선택된다. 그렇기 때문에, 도 17에 도시한 처리 흐름과 비교해서, 총 유효 데이터율의 계산량은 증가하지만, 전사 효율은 향상될 수 있다.
단순히 SLC 블록의 용량이 MLC 블록의 용량과 같다고 하여 SLC 블록 그룹과 MLC 블록 그룹의 총 유효 데이터율을 산출할 경우, MLC 블록 그룹에 저장될 수 있는 유효 데이터의 절반을 원래 내부에 저장할 수 있는 SLC 블록 그룹이 선택되기 쉽다. 한편, SLC 블록의 용량(Ss)이 MLC 블록의 용량(Sm)의 1/2이라고 하여 SLC 블록 그룹의 총 유효 데이터율을 산출할 경우, SLC 블록 그룹이 선택되기 쉬운 경향을 막을 수 있다.
또한, 도 19에 도시하는 바와 같이, 도 17에 도시하는 MLC 블록 그룹의 블록수(Bm)와 유효 데이터율(Vm)의 제한을 도 18에 도시한 예에 추가할 경우, 전사원 블록 그룹 선택 유닛(108)은 도 17에 도시하는 단계 S201∼S203에서와 마찬가지로, MLC 블록 그룹의 총 유효 데이터율(Vm)을 산출한 다음, 도 17에 도시하는 단계 S204 및 S205에서와 마찬가지로, MLC 블록 그룹의 총 블록수(Bm)가 미리 정해진 임계치(Tbm) 이하인지의 여부를 판정하고(단계 S204), 총 블록수(Bm)가 임계치(Tbm)보다 크다면(단계 S204의 NO), 전사원 블록 그룹 유닛(108)은 계속해서 MLC 블록 그룹의 총 유효 데이터율(Vm)이 미리 정해진 임계치(Tvm)보다 큰지의 여부를 판정한다(단계 S205).
총 블록수(Bm)가 임계치(Tbm) 이하인 경우(단계 S204의 YES), 또는 총 유효 데이터율(Vm)이 임계치(Tvm)보다 큰 경우(단계 S205의 YES), 전사원 블록 그룹 선택 유닛(108)은 SLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S206). 한편, 총 블록수(Bm)가 임계치(Tbm)보다 크고 총 유효 데이터율(Vm)이 임계치(Tvm) 이하인 경우(단계 S204의 NO 및 단계 S205의 NO), 전사원 블록 그룹 선택 유닛(108)은 도 18에 도시하는 단계 S221∼S223에서와 마찬가지로, SLC 블록 그룹의 총 유효 데이터율(Vs)을 산출한다. 그런 다음, 전사원 블록 그룹 선택 유닛(108)은 단계 S203에서 산출된 MLC 블록 그룹의 총 유효 데이터율(Vm)과, 단계 S223에서 산출된 SLC 블록 그룹의 총 유효 데이터율(Vs)을 비교하고(단계 S224), SLC 블록 그룹의 총 유효 데이터율(Vs)이 MLC 블록 그룹의 총 유효 데이터율(Vm) 이하인 경우(단계 S224의 YES), 전사원 블록 그룹 선택 유닛(108)은 SLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S206). 한편, 총 유효 데이터율(Vs)이 총 유효 데이터율(Vm)보다 큰 경우(단계 S224의 NO), 전사원 블록 그룹 선택 유닛(108)은 MLC 블록 그룹을 전사원 블록 그룹으로서 선택한다(단계 S207). 이런 식으로 전사원 블록 그룹을 선택할 경우, 전사원 블록 그룹 선택 유닛(108)은 도 15, 도 16a 또는 도 16b에 도시하는 동작으로 리턴하고, 처리를 블록 삭감 처리 유닛(107)에 반환한다.
도 18에 도시하는 전사원 블록 그룹 선택 처리에서는, 예컨대 MLC 블록 그룹의 총 블록수(Bm)가 1이고 총 유효 데이터량(Dm)이 1 클러스터인 경우, MLC 블록 그룹의 총 유효 데이터율(Vm)이 매우 낮기 때문에, MLC 블록 그룹은 전사원으로서 선택될 수 있다. 이러한 경우에, MLC 블록 그룹을 전사원으로서 선택할지라도 사용 블록수를 삭감할 수 없다. 또한, 총 유효 데이터율(Vs 및 Vm) 양쪽이 거의 100%일 수 있다. 극단적인 예로서, 예를 들어 블록수(Bs 및 Bm) 양쪽이 100이고, 총 유효 데이터율(Vs)이 100%이며, 총 유효 데이터율(Vm)이 99%인 경우가 있다. 이러한 경우에, 도 18에 도시하는 전사원 블록 그룹 선택 처리에서는, MLC 블록 그룹이 전사원으로서 선택된다. 그 결과, 1 블록을 삭감하기 위해서는 100개의 MLC 블록을 전사원으로서 선택하고, 99개의 프리 블록을 전사처로서 선택해야 한다. 따라서 도 19에 도시하는 바와 같이, MLC 블록 그룹의 블록수(Bm)와 유효 데이터율(Vm)에 제한을 추가하여, Vs>Vm의 경우에도, SLC 블록 그룹이 전사원으로서 선택된다.
도 20은 랜덤 기록의 시뮬레이션 결과를 도시한다. 도 20의 X축은 액세스 범위의 사이즈, 즉 국소성(locality)을 나타내고, 그 범위는 0부터 논리 용량까지이다. Y축은 4 KB의 데이터에 대한 랜덤 기록 성능을 나타내고, 그 성능 단위는 IOPS이다. 도 20에서, 실선(L1)은 메모리 시스템(1)의 랜덤 기록 성능을 나타내는 곡선이며, 점선(L2)은 모든 블록을 MLC 모드로 사용하는 통상의 메모리 시스템의 랜덤 기록 성능을 나타내는 곡선이다. 도 20으로부터 명백한 바와 같이, 메모리 시스템(1)에 있어서, 특히 국소성이 높은 범위에서, 통상의 메모리 시스템보다 우수한 랜덤 기록 성능을 얻을 수 있다.
전술한 바와 같이, 제1 실시형태에 따르면, 국소성이 강한 액세스 패턴에서는 자주 업데이트되지 않는 데이터는 MLC 블록으로 분리되고 자주 업데이트되는 데이터는 SLC 블록으로 분리되기 때문에, 장기적인 전사 효율을 향상시키는 것이 가능하다. 총 유효 데이터량이 적은 경우에는, SLC 블록의 무용한 전사를 줄이고 액세스 속도가 고속인 SLC 블록의 캐시 효과를 증대시킬 수 있다. 또한, 프리 블록의 동작 모드를 동적으로 선택함으로써, SLC 플래시 메모리의 장점과 MLC 플래시 메모리의 장점을 상황에 따라 얻는 것이 가능하다.
이어서, 제2 실시형태에 따른 메모리 시스템(2)에 대해서 도면을 참조하여 상세하게 설명한다. 제2 실시형태에서는 프리 블록수가 미리 정해진 임계치(Tbf) 이하인 경우(도 14의 단계 S111의 YES) 외에도, 소정의 시기 동안 데이터의 판독, 기록, 플러시, 및 삭제 등의 커맨드를 호스트 장치(150)로부터 수신하지 않은 경우와, 호스트 장치(150)로부터 데이터의 전사가 요구되지 않은 경우에, 도 14의 단계 S112에 나타내는 사용 블록 삭감 처리의 실행이 트리거된다.
도 21과 도 5를 비교하면 분명한 바와 같이, 제2 실시형태에 따른 메모리 시스템(2)은 도 5에 도시하는 메모리 시스템(1)의 구성과 같고, 타이머(201)를 더 포함한다. 타이머(201)는 업카운터로 구성되며, 카운트값이 미리 정해진 값 이상일 경우, 타이머(201)는 블록 삭감 처리 유닛(107)에 사용 블록 삭감 요구를 보낸다. 블록 삭감 처리 유닛(107)은 이 요구에 따라 도 15, 도 16a 또는 도 16b에 나타내는 사용 블록 삭감 처리를 실행한다.
도 22는 타이머의 카운트값에 기초하여 사용 블록 삭감 처리가 실행될 경우의 개략 동작을 나타내는 흐름도이다. 도 22에 도시한 바와 같이, 블록 삭감 처리 유닛(107)은 타이머(201)를 기동하고(단계 S301), 그 후에 호스트 장치(150)로부터 커맨드를 수신했는지의 여부를 정기적으로 판정한다(단계 S302). 커맨드를 수신하지 않은 경우(단계 S302의 NO), 블록 삭감 처리 유닛(107)은 타이머(201)의 카운트값(H)이 미리 정해진 임계치(Tt) 이상인지의 여부를 판정한다(단계 S303). 카운트값(H)이 임계치(Tt)보다 작다면(단계 S303의 NO), 블록 삭감 처리 유닛(107)은 그대로 단계 S302로 리턴한다. 한편, 카운트값(H)이 임계치(Tt) 이상인 경우(단계 S303의 YES), 블록 삭감 처리 유닛(107)은 타이머(201)를 리셋한다(단계 S304), 그 후, 도 14의 단계 S112에서와 마찬가지로, 블록 삭감 처리 유닛(107)은 사용 블록 삭감 처리를 실행하고(단계 S307), 그런 다음 단계 S302로 리턴한다.
호스트 장치(150)로부터 커맨드를 수신할 경우(단계 S302의 YES), 블록 삭감 처리 유닛(107)은 타이머(201)를 리셋하고(단계 S305), 계속해서 수신된 커맨드가 사용 블록 삭감 요구인지의 여부를 판정한다(단계 S306). 사용 블록 삭감 요구가 아닌 경우(단계 S306의 NO), 블록 삭감 처리 유닛(107)은 그대로 단계 S302로 리턴한다. 한편, 수신된 커맨드가 사용 블록 삭감 요구인 경우(단계 S306의 YES), 블록 삭감 처리 유닛(107)은 도 14의 단계 S112에서와 마찬가지로, 사용 블록 삭감 처리를 실행하고(단계 S307), 그런 다음 단계 S302로 리턴한다.
전술한 바와 같이, 제2 실시형태에 따르면, 호스트로부터 커맨드를 소정 시기 동안 수신하지 못할 경우, 커맨드를 수신하지 못할 기간이 계속될 것으로 예상하여, 그 동안에 사용 블록 삭감 처리를 실행할 수 있다. 또한, 사용 블록 삭감을 지시하는 커맨드에 대해서는, 호스트가 잠시 데이터에 액세스하지 않는다고 파악함에 따라 호스트가 커맨드를 보낼 것을 기대할 수 있다. 따라서, 전체적으로 사용 블록 삭감 처리를 줄일 수 없는 것은 아니지만, 호스트가 데이터에 액세스하지 않는 기간 동안 미리 사용 블록 삭감 처리를 진행시킴으로써, 호스트로부터의 기록과 병행하여 수행되어야 하는 사용 블록 삭감 처리를 줄이고 호스트가 데이터를 기록할 경우 전송 성능의 열화를 억제할 수 있다. 그 밖의 구성, 동작 및 효과는 제1 실시형태와 같기 때문에, 여기서는 상세한 설명을 생략한다.
전술한 적어도 하나의 실시형태의 메모리 사스템에 따르면, 메모리 시스템은 비휘발성 반도체 메모리, 제1 저장 유닛, 제2 저장 유닛, 제3 저장 유닛, 제1 수신 유닛, 취득 유닛, 제1 기록 유닛, 선택 유닛, 제2 기록 유닛, 관리 정보 업데이트 유닛, 제2 수신 유닛, 및 판독 유닛을 포함한다. 비휘발성 반도체 메모리는 복수의 제1 저장 영역을 포함하고, 상기 복수의 제1 저장 영역에 포함되며 유효 데이터가 저장되지 않은 하나 이상의 제2 저장 영역과, 상기 복수의 제1 저장 영역에 포함되며 호스트로부터 수신된 데이터를 내부에 복사 및 저장함으로써 취득되는 복수의 제3 저장 영역과, 제3 저장 영역에 저장되거나 또는 제4 저장 영역에 저장된 데이터를 내부에 복사 및 저장함으로써 취득된 복수의 제4 저장 영역을 구비하는 것이 가능하다. 유효 데이터는 논리 어드레스와 연관된 물리 어드레스에 저장될 수 있다. 논리 어드레스는 호스트로부터 지정된 어드레스이다. 물리 어드레스는 반도체 메모리의 저장 영역에서 데이터 저장 위치를 나타낸다. 제1 저장 유닛은 복수의 제1 저장 영역 중 어느 영역이 제2 저장 영역인지 나타내는 제1 관리 정보를 내부에 저장한다. 제2 저장 유닛은 복수의 제1 저장 영역 중 어느 영역이 제3 저장 영역인지 나타내는 제2 관리 정보를 내부에 저장한다. 제3 저장 유닛은 복수의 제1 저장 영역 중 어느 영역이 제4 저장 영역인지를 나타내는 제3 관리 정보를 내부에 저장한다. 제1 수신 유닛은 호스트에 의해 기록 요구된 데이터인 기록 요구 데이터를 수신한다. 취득 유닛은 제1 관리 정보에 기초하여 하나 이상의 저장 영역으로부터 하나의 제2 저장 영역을 취득한다. 제1 기록 유닛은 그 취득 유닛이 취득한 제2 저장 영역에 기록 요구 데이터를 제1 모드로 기록한다. 제2 저장 영역의 개수가 제1 임계치 이하인 경우, 선택 유닛은 제2 관리 정보에 기초하여 복수의 제3 저장 영역 중에서 하나 이상의 저장 영역을 선택하거나 또는 제3 관리 정보에 기초하여 복수의 제4 저장 영역 중에서 하나 이상의 저장 영역을 선택한다. 제2 기록 유닛은 선택 유닛에 의해 선택된 저장 영역에 저장된 유효 데이터를, 취득 유닛이 취득한 제2 저장 영역에 제2 모드로 저장한다. 제2 기록 유닛이 유효 데이터를 기록할 경우, 관리 정보 업데이트 유닛은 선택된 저장 영역을 제2 관리 정보 또는 제3 관리 정보에서 삭제하고 그 선택된 저장 영역을 제1 관리 정보에 추가한다. 제2 수신 유닛은 호스트로부터 데이터의 판독 요구를 수신한다. 판독 유닛은 판독 요구에 의해 판독 요구된 데이터가 제3 저장 영역에 기록되어 있는 경우 제1 모드로 데이터를 판독하고, 판독 요구에 의해 판독 요구된 데이터가 제4 저장 영역에 기록되어 있는 경우에는 제2 모드로 데이터를 판독한다. 제1 모드에서의 기록 속도 또는 판독 속도는 제2 모드에서보다 빠르다. 제1 모드에서 동일한 저장 영역에 기록될 수 있는 최대 정보량은 제2 모드에서보다 적다. 따라서, SLC 플래시 메모리의 장점과 MLC 플래시 메모리의 장점을 상황에 따라 얻는 것이 가능하다.
소정의 실시형태들에 대해 설명하였지만, 이들 실시형태들은 예시적으로만 제시된 것뿐이며, 본 발명의 범위를 한정시키려는 것이 아니다. 실제, 본 명세서에서 설명한 신규한 실시형태들은 각종의 다른 형태로 구현될 수 있으며, 더욱이 본 명세서에서 설명한 실시형태의 구성에서 다양한 생략, 교체 및 변경이 발명의 요지를 일탈하지 않고 이루어질 수 있다. 이하의 특허청구범위 및 그 동류는 본 발명의 범위 및 요지 내에 있는 그러한 구성 또는 변형을 망라하는 것이다.
1: 메모리 시스템 10: 퍼스널 컴퓨터
100: 컨트롤러 유닛 101: 어드레스 변환 테이블 저장 유닛
101A: 어드레스 변환 테이블 102: 블록 관리 유닛
102a: 프리 블록 그룹 관리 정보 102b: SLC 블록 그룹 관리 정보
102c: MLC 블록 그룹 관리 정보 102d: 블록 관리 정보
103: 유효 데이터량 관리 유닛 104: 판독 커맨드 처리 유닛
105: 기록 커맨드 처리 유닛 106: 삭제 커맨드 처리 유닛
107: 블록 삭감 처리 유닛 108: 전사원 블록 그룹 선택 유닛
109: 전사원 블록 선택 유닛 110: 비휘발성 메모리 유닛
111: NAND 컨트롤러 112: MLC 플래시 메모리
120: 버퍼 메모리 유닛 130: 인터페이스 유닛
140: 신호선 150: 호스트 장치

Claims (6)

  1. 복수의 제1 저장 영역을 포함하고,
    상기 복수의 제1 저장 영역에 포함되며 유효 데이터가 저장되지 않은 하나 이상의 제2 저장 영역과,
    상기 복수의 제1 저장 영역에 포함되며 호스트로부터 수신된 데이터를 내부에 복사 및 저장하여 취득되는 복수의 제3 저장 영역과,
    상기 복수의 제1 저장 영역에 포함되며 제3 저장 영역에 저장되거나 또는 제4 저장 영역에 저장된 데이터를 내부에 복사 및 저장함으로써 취득되는 복수의 제4 저장 영역
    을 구비할 수 있는 비휘발성 반도체 메모리와,
    상기 복수의 제1 저장 영역 중 어느 영역이 제2 저장 영역인지를 나타내는 제1 관리 정보를 내부에 저장하도록 구성된 제1 저장 유닛과,
    상기 복수의 제1 저장 영역 중 어느 영역이 제3 저장 영역인지를 나타내는 제2 관리 정보를 내부에 저장하도록 구성된 제2 저장 유닛과,
    상기 복수의 제1 저장 영역 중 어느 영역이 제4 저장 영역인지를 나타내는 제3 관리 정보를 내부에 저장하도록 구성된 제3 저장 유닛과,
    호스트에 의해 기록 요구된 데이터인 기록 요구 데이터를 수신하도록 구성된 제1 수신 유닛과,
    상기 제1 관리 정보에 기초하여, 상기 하나 이상의 제2 저장 영역 중에서 하나의 제2 저장 영역을 취득하도록 구성된 취득 유닛과,
    상기 기록 요구 데이터를, 상기 취득 유닛에 의해 취득된 제2 저장 영역에 제1 모드로 기록하도록 구성된 제1 기록 유닛과,
    상기 제2 저장 영역의 개수가 제1 임계치 이하인 경우에, 상기 제2 관리 정보에 기초하여, 상기 복수의 제3 저장 영역 중에서 하나 이상의 저장 영역을 선택하거나, 상기 제3 관리 정보에 기초하여, 상기 복수의 제4 저장 영역 중에서 하나 이상의 저장 영역을 선택하도록 구성된 선택 유닛과,
    상기 선택 유닛에 의해 선택된 저장 영역에 저장된 유효 데이터를, 상기 취득 유닛에 의해 취득된 제2 저장 영역에 제2 모드로 기록하도록 구성된 제2 기록 유닛과,
    상기 제2 기록 유닛이 유효 데이터를 기록할 경우에, 선택된 저장 영역을 상기 제2 관리 정보 또는 상기 제3 관리 정보에서 삭제하고, 그 선택된 저장 영역을 상기 제1 관리 정보에 추가하도록 구성된 관리 정보 업데이트 유닛과,
    호스트로부터 데이터의 판독 요구를 수신하도록 구성된 제2 수신 유닛과,
    상기 판독 요구에 의해 판독 요구된 데이터가 상기 제3 저장 영역에 기록되어 있는 경우에는 상기 제1 모드로 데이터를 판독하고, 상기 판독 요구에 의해 판독 요구된 데이터가 상기 제4 저장 영역에 기록되어 있는 경우에는, 상기 제2 모드로 데이터를 판독하도록 구성된 판독 유닛
    을 포함하고,
    상기 유효 데이터는 논리 어드레스와 연관된 물리 어드레스에 저장되는 데이터이고, 상기 논리 어드레스는 호스트로부터 지정된 어드레스이며, 상기 물리 어드레스는 반도체 메모리의 저장 영역에서 데이터 저장 위치를 나타내고,
    상기 제1 모드에서의 기록 속도는 상기 제2 모드에서보다 빠르며,
    상기 제1 모드에서 같은 저장 영역에 기록될 수 있는 최대 정보량은 상기 제2 모드에서보다 적은 것인 메모리 시스템.
  2. 제1항에 있어서, 상기 비휘발성 반도체 메모리는,
    상기 복수의 제3 저장 영역을 포함하는 제5 저장 영역과,
    상기 복수의 제4 저장 영역을 포함하는 제6 저장 영역을 더 포함하고,
    상기 선택 유닛은 상기 제5 저장 영역에서 상기 복수의 제3 저장 영역을 선택하거나 또는 상기 제6 저장 영역에서 상기 복수의 제4 저장 영역을 선택하며,
    상기 제2 기록 유닛은 선택된 저장 영역에 저장된 유효 데이터를 하나의 제2 저장 영역에 기록하고,
    상기 제2 기록 유닛에 의해 기록되는 유효 데이터는 제3 저장 영역에 저장된 데이터로 구성되거나 또는 제4 저장 영역에 저장된 데이터로 구성되는 것인 메모리 시스템.
  3. 제2항에 있어서, 상기 선택 유닛은 상기 제6 저장 영역의 총 유효 데이터율이 미리 정해진 임계치보다 작을 경우, 그 제6 저장 영역에서 제4 저장 영역을 선택하고,
    상기 제6 저장 영역의 총 유효 데이터율은 상기 제6 저장 영역의 총 용량에 대한 그 제6 저장 영역에 저장된 총 유효 데이터량의 비율인 것인 메모리 시스템.
  4. 제2항에 있어서, 상기 선택 유닛은 상기 제5 저장 영역의 총 유효 데이터율이 상기 제6 저장 영역의 총 유효 데이터율보다 작을 경우 상기 제5 저장 영역에 포함된 제3 저장 영역을 선택하고, 상기 제6 저장 영역의 총 유효 데이터율이 상기 제5 저장 영역의 총 유효 데이터율보다 작을 경우 상기 제6 저장 영역에 포함된 제4 저장 영역을 선택하며,
    상기 제5 저장 영역의 총 유효 데이터율은 상기 제5 저장 영역의 총 용량에 대한 그 제5 저장 영역에 저장된 총 유효 데이터량의 비율이고,
    상기 제6 저장 영역의 총 유효 데이터율은 상기 제6 저장 영역의 총 용량에 대한 그 제6 저장 영역에 저장된 총 유효 데이터량의 비율인 것인 메모리 시스템.
  5. 제4항에 있어서,
    상기 제5 저장 영역에 포함된 블록의 동작 모드는 상기 제1 모드이고,
    상기 제6 저장 영역에 포함된 블록의 동작 모드는 상기 제2 모드이며,
    상기 메모리 시스템은, 상기 블록들 각각의 상기 동작 모드에 따른 블록 용량에 기초하여, 상기 제5 저장 영역의 총 유효 데이터율 또는 상기 제6 저장 영역의 총 유효 데이터율을 산출하도록 구성된 데이터량 관리 유닛을 더 포함하는 것인 메모리 시스템.
  6. 제1항에 있어서, 상기 비휘발성 반도체 메모리는 복수의 저장 셀을 포함하는 MLC(Multi-Level Cell) 플래시 메모리이고,
    상기 MLC 플래시 메모리는 셀 당 1 비트 데이터 또는 셀 당 복수 비트 데이터를 내부에 저장하며,
    상기 제1 모드에서, 셀 당 1 비트 데이터는 상기 MLC 플래시 메모리에 2치 모드로 기록되고,
    상기 제2 모드에서, 셀 당 복수 비트 데이터는 상기 MLC 플래시 메모리에 다치 모드로 기록되는 것인 메모리 시스템.
KR1020110082376A 2010-09-24 2011-08-18 메모리 시스템 KR101329937B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2010-214221 2010-09-24
JP2010214221A JP5066241B2 (ja) 2010-09-24 2010-09-24 メモリシステム

Publications (2)

Publication Number Publication Date
KR20120031434A KR20120031434A (ko) 2012-04-03
KR101329937B1 true KR101329937B1 (ko) 2013-11-14

Family

ID=44651135

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110082376A KR101329937B1 (ko) 2010-09-24 2011-08-18 메모리 시스템

Country Status (6)

Country Link
US (9) US8832357B2 (ko)
EP (1) EP2439645B1 (ko)
JP (1) JP5066241B2 (ko)
KR (1) KR101329937B1 (ko)
CN (1) CN102419735B (ko)
TW (1) TWI446168B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10909031B2 (en) 2017-11-29 2021-02-02 Samsung Electronics Co., Ltd. Memory system and operating method thereof

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8886990B2 (en) * 2011-01-27 2014-11-11 Apple Inc. Block management schemes in hybrid SLC/MLC memory
TWI494948B (zh) * 2011-01-31 2015-08-01 Phison Electronics Corp 用於非揮發性記憶體的資料寫入方法、控制器與儲存裝置
JP5674634B2 (ja) 2011-12-28 2015-02-25 株式会社東芝 コントローラ、記憶装置およびプログラム
JP5687639B2 (ja) 2012-02-08 2015-03-18 株式会社東芝 コントローラ、データ記憶装置及びプログラム
JP5687648B2 (ja) 2012-03-15 2015-03-18 株式会社東芝 半導体記憶装置およびプログラム
US9323667B2 (en) * 2012-04-12 2016-04-26 Violin Memory Inc. System and method for managing trim operations in a flash memory system using mapping tables and block status tables
JP5586718B2 (ja) * 2012-06-19 2014-09-10 株式会社東芝 制御プログラム、ホスト装置の制御方法、情報処理装置およびホスト装置
KR102147359B1 (ko) * 2012-06-29 2020-08-24 삼성전자 주식회사 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치
JP6102108B2 (ja) * 2012-07-24 2017-03-29 富士通株式会社 情報処理装置、データ提供方法、及びデータ提供プログラム
KR20140035769A (ko) * 2012-09-14 2014-03-24 삼성전자주식회사 연속 촬영 이미지 데이터를 처리할 수 있는 방법들과 장치들
US9690695B2 (en) * 2012-09-20 2017-06-27 Silicon Motion, Inc. Data storage device and flash memory control method thereof
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103914360B (zh) * 2013-01-05 2017-03-22 北京联想核芯科技有限公司 电子设备和数据备份恢复方法
US8954655B2 (en) * 2013-01-14 2015-02-10 Western Digital Technologies, Inc. Systems and methods of configuring a mode of operation in a solid-state memory
WO2014120193A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L. P. Non-volatile multi-level-cell memory with decoupled bits for higher performance and energy efficiency
US8990458B2 (en) 2013-02-28 2015-03-24 Kabushiki Kaisha Toshiba Controller, semiconductor storage device and method of controlling data writing
US9158678B2 (en) * 2013-03-13 2015-10-13 Kabushiki Kaisha Toshiba Memory address management system and method
TWI506430B (zh) * 2013-03-20 2015-11-01 Phison Electronics Corp 映射資訊記錄方法、記憶體控制器與記憶體儲存裝置
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
KR102140512B1 (ko) * 2013-10-16 2020-08-03 삼성전자주식회사 불휘발성 메모리 장치, 불휘발성 메모리 장치를 포함하는 불휘발성 메모리 시스템 및 불휘발성 메모리 시스템의 동작 방법
JP6139381B2 (ja) * 2013-11-01 2017-05-31 株式会社東芝 メモリシステムおよび方法
IN2013CH05362A (ko) 2013-11-21 2015-05-29 Sandisk Technologies Inc
KR102166924B1 (ko) * 2013-12-26 2020-10-16 삼성전자주식회사 저장 장치의 구동 방법
CN107037984B (zh) * 2013-12-27 2019-10-18 威盛电子股份有限公司 数据储存装置及其数据写入方法
US9305665B2 (en) 2014-03-31 2016-04-05 Kabushiki Kaisha Toshiba Memory system and method of controlling memory system
US9928169B2 (en) * 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9645749B2 (en) 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9691452B2 (en) * 2014-08-15 2017-06-27 Micron Technology, Inc. Apparatuses and methods for concurrently accessing different memory planes of a memory
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9524112B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9563362B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9552166B2 (en) * 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9563370B2 (en) * 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9582203B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9519427B2 (en) * 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9524105B2 (en) * 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9690491B2 (en) * 2014-12-17 2017-06-27 Sandisk Technologies Llc System and method for managing data in a memory device
US9632705B2 (en) 2014-12-17 2017-04-25 Sandisk Technologies Llc System and method for adaptive memory layers in a memory device
JP6320322B2 (ja) * 2014-12-29 2018-05-09 東芝メモリ株式会社 キャッシュメモリ装置及びプログラム
CN105843748B (zh) 2015-01-15 2019-06-11 华为技术有限公司 一种对内存中内存页的处理方法及装置
US9798470B2 (en) 2015-01-23 2017-10-24 Toshiba Memory Corporation Memory system for storing and processing translation information
US10346039B2 (en) * 2015-04-21 2019-07-09 Toshiba Memory Corporation Memory system
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
JP2017011580A (ja) * 2015-06-24 2017-01-12 キヤノン株式会社 通信装置およびその制御方法、プログラム
KR102501751B1 (ko) 2015-09-22 2023-02-20 삼성전자주식회사 메모리 콘트롤러, 불휘발성 메모리 시스템 및 그 동작방법
KR102333220B1 (ko) 2015-09-24 2021-12-01 삼성전자주식회사 불휘발성 메모리 시스템의 동작 방법
US9910594B2 (en) 2015-11-05 2018-03-06 Micron Technology, Inc. Apparatuses and methods for concurrently accessing multiple memory planes of a memory during a memory access operation
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
CN105553727A (zh) * 2015-12-18 2016-05-04 北京奇虎科技有限公司 一种更新配置信息的方法、装置及系统
TWI603193B (zh) * 2016-03-31 2017-10-21 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI614605B (zh) * 2016-03-31 2018-02-11 慧榮科技股份有限公司 資料儲存裝置及其資料維護方法
TWI622923B (zh) * 2016-05-04 2018-05-01 群聯電子股份有限公司 整理指令處理方法、記憶體控制電路單元與記憶體儲存裝置
WO2018002999A1 (ja) * 2016-06-28 2018-01-04 株式会社日立製作所 記憶デバイス及びストレージ装置
CN107766262B (zh) * 2016-08-18 2021-09-14 北京忆恒创源科技股份有限公司 调节并发写命令数量的方法与装置
WO2018051387A1 (ja) * 2016-09-13 2018-03-22 株式会社日立製作所 情報処理システムおよびデータ格納方法
US10509722B2 (en) 2017-08-31 2019-12-17 Micron Technology, Inc. Memory device with dynamic cache management
JP6805110B2 (ja) 2017-11-06 2020-12-23 株式会社日立製作所 ストレージシステム及びその制御方法
TWI687809B (zh) * 2018-02-13 2020-03-11 點序科技股份有限公司 快閃記憶體儲存裝置與寫入管理方法
KR20190099570A (ko) * 2018-02-19 2019-08-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
JP6968016B2 (ja) * 2018-03-22 2021-11-17 キオクシア株式会社 ストレージデバイスおよびコンピュータシステム
TWI679538B (zh) * 2018-03-31 2019-12-11 慧榮科技股份有限公司 資料儲存系統之控制單元以及邏輯至物理映射表更新方法
US10761773B2 (en) * 2018-04-02 2020-09-01 Micron Technology, Inc. Resource allocation in memory systems based on operation modes
US10762967B2 (en) 2018-06-28 2020-09-01 Apple Inc. Recovering from failure in programming a nonvolatile memory
US10755787B2 (en) 2018-06-28 2020-08-25 Apple Inc. Efficient post programming verification in a nonvolatile memory
KR20200006829A (ko) * 2018-07-11 2020-01-21 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
KR102634631B1 (ko) * 2018-07-11 2024-02-08 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP2020035128A (ja) * 2018-08-29 2020-03-05 キオクシア株式会社 メモリシステム
KR102593541B1 (ko) * 2018-11-29 2023-10-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10915444B2 (en) * 2018-12-27 2021-02-09 Micron Technology, Inc. Garbage collection candidate selection using block overwrite rate
CN109815166B (zh) * 2018-12-28 2020-10-09 深圳市德明利技术股份有限公司 一种存储数据的动态回收处理方法及存储装置
US10936455B2 (en) 2019-02-11 2021-03-02 Apple Inc. Recovery of data failing due to impairment whose severity depends on bit-significance value
CN111562880A (zh) * 2019-02-14 2020-08-21 英韧科技(上海)有限公司 一种数据存储装置、系统及数据写入方法
TWI698749B (zh) * 2019-03-13 2020-07-11 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN109979508A (zh) * 2019-03-15 2019-07-05 合肥沛睿微电子股份有限公司 固态硬盘装置与相关的固态硬盘控制电路
CN109992525A (zh) * 2019-04-01 2019-07-09 合肥沛睿微电子股份有限公司 快闪存储器控制器
US11023150B2 (en) 2019-07-01 2021-06-01 International Business Machines Corporation Block mode toggling using hybrid controllers
US10949126B2 (en) * 2019-07-25 2021-03-16 ScaleFlux, Inc. Solid-state storage device speed performance and endurance through host-side data classification and embedded write caching
US10915394B1 (en) 2019-09-22 2021-02-09 Apple Inc. Schemes for protecting data in NVM device using small storage footprint
CN111159058B (zh) * 2019-12-27 2022-03-04 深圳大普微电子科技有限公司 一种磨损均衡方法、装置及非易失性的存储设备
US10971215B1 (en) 2020-02-24 2021-04-06 Western Digital Technologies, Inc. Dynamically adjust data transfer speed for non-volatile memory die interfaces
KR20210128780A (ko) * 2020-04-17 2021-10-27 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 저장 장치
CN111722804B (zh) 2020-06-12 2022-07-08 浪潮电子信息产业股份有限公司 一种非易失内存调度的方法、系统、设备及可读存储介质
US11550657B1 (en) 2021-09-01 2023-01-10 Apple Inc. Efficient programming schemes in a nonvolatile memory
JP2023039459A (ja) * 2021-09-09 2023-03-22 キオクシア株式会社 メモリシステムおよび方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US20040268098A1 (en) 2003-06-30 2004-12-30 Yoav Almog Exploiting parallelism across VLIW traces
US7363421B2 (en) * 2005-01-13 2008-04-22 Stmicroelectronics S.R.L. Optimizing write/erase operations in memory devices
US20060179236A1 (en) * 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
JP4866117B2 (ja) * 2006-03-22 2012-02-01 パナソニック株式会社 不揮発性記憶装置、そのデータ書き込み方法、不揮発性記憶システム及びメモリコントローラ
KR100855467B1 (ko) 2006-09-27 2008-09-01 삼성전자주식회사 이종 셀 타입을 지원하는 비휘발성 메모리를 위한 맵핑장치 및 방법
KR100771521B1 (ko) 2006-10-30 2007-10-30 삼성전자주식회사 멀티 레벨 셀을 포함하는 플래시 메모리 장치 및 그것의데이터 쓰기 방법
KR20090090330A (ko) * 2006-11-14 2009-08-25 램버스 인코포레이티드 저 에너지 메모리 컴포넌트
KR100875539B1 (ko) * 2007-01-17 2008-12-26 삼성전자주식회사 프로그램 방식을 선택할 수 있는 메모리 시스템
US8370562B2 (en) 2007-02-25 2013-02-05 Sandisk Il Ltd. Interruptible cache flushing in flash memory systems
TW200841343A (en) 2007-04-02 2008-10-16 Apacer Technology Inc A data storage device consisting of NAND (Not-AND) flash memory and its data storing method
JP2008257773A (ja) * 2007-04-02 2008-10-23 Toshiba Corp 不揮発性半導体記憶装置、不揮発性半導体記憶装置の制御方法、不揮発性半導体記憶システム、及びメモリカード
JP2008276733A (ja) * 2007-04-06 2008-11-13 Toshiba Corp メモリシステム
US20080282024A1 (en) * 2007-05-09 2008-11-13 Sudeep Biswas Management of erase operations in storage devices based on flash memories
US7743203B2 (en) * 2007-05-11 2010-06-22 Spansion Llc Managing flash memory based upon usage history
JP5087347B2 (ja) * 2007-09-06 2012-12-05 株式会社日立製作所 半導体記憶装置及び半導体記憶装置の制御方法
US8200904B2 (en) 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
TWI397912B (zh) 2008-02-13 2013-06-01 Genesys Logic Inc 調整存取效能的快閃記憶體儲存裝置
JP4510107B2 (ja) * 2008-03-12 2010-07-21 株式会社東芝 メモリシステム
TWI425523B (zh) * 2008-03-25 2014-02-01 Asmedia Technology Inc 混合型快閃儲存裝置及其操作方法
TWI437429B (zh) 2008-06-04 2014-05-11 A Data Technology Co Ltd 多通道混合密度記憶體儲存裝置及其控制方法
US8407400B2 (en) 2008-11-12 2013-03-26 Micron Technology, Inc. Dynamic SLC/MLC blocks allocations for non-volatile memory
JP4461187B1 (ja) * 2008-12-24 2010-05-12 株式会社東芝 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法
JP2010152778A (ja) * 2008-12-26 2010-07-08 Hitachi Ulsi Systems Co Ltd 半導体記憶装置
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US20100169540A1 (en) 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
TWI385527B (zh) 2009-02-10 2013-02-11 Phison Electronics Corp Mlc nand型快閃記憶體儲存系統及其控制器與存取方法
US8438361B2 (en) * 2010-03-10 2013-05-07 Seagate Technology Llc Logical block storage in a storage device
KR101635446B1 (ko) * 2010-05-25 2016-07-04 삼성전자주식회사 반도체 메모리 장치의 블록 병합 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5671388A (en) 1995-05-03 1997-09-23 Intel Corporation Method and apparatus for performing write operations in multi-level cell storage device

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10909031B2 (en) 2017-11-29 2021-02-02 Samsung Electronics Co., Ltd. Memory system and operating method thereof
US11630766B2 (en) 2017-11-29 2023-04-18 Samsung Electronics Co., Ltd. Memory system and operating method thereof

Also Published As

Publication number Publication date
US20120079167A1 (en) 2012-03-29
EP2439645B1 (en) 2020-01-22
TW201214116A (en) 2012-04-01
US11579773B2 (en) 2023-02-14
US20170109050A1 (en) 2017-04-20
KR20120031434A (ko) 2012-04-03
US20240126433A1 (en) 2024-04-18
US9910597B2 (en) 2018-03-06
US11216185B2 (en) 2022-01-04
EP2439645A1 (en) 2012-04-11
US20180188963A1 (en) 2018-07-05
US10871900B2 (en) 2020-12-22
US11893238B2 (en) 2024-02-06
TWI446168B (zh) 2014-07-21
US20220100377A1 (en) 2022-03-31
US10877664B2 (en) 2020-12-29
JP2012068986A (ja) 2012-04-05
JP5066241B2 (ja) 2012-11-07
US20200409555A1 (en) 2020-12-31
CN102419735A (zh) 2012-04-18
US20180356984A1 (en) 2018-12-13
US10055132B2 (en) 2018-08-21
CN102419735B (zh) 2015-02-25
US20230152969A1 (en) 2023-05-18
US8832357B2 (en) 2014-09-09
US20140379968A1 (en) 2014-12-25

Similar Documents

Publication Publication Date Title
US11579773B2 (en) Memory system and method of controlling memory system
US10789162B2 (en) Memory system and method for controlling nonvolatile memory
JP6967986B2 (ja) メモリシステム
US10282288B2 (en) Memory system and method for controlling nonvolatile memory
US9384123B2 (en) Memory system
US20130275650A1 (en) Semiconductor storage device
US11042305B2 (en) Memory system and method for controlling nonvolatile memory
JP6139381B2 (ja) メモリシステムおよび方法
KR20100115090A (ko) 버퍼를 고려한 가비지 컬렉션 기법
JP2019148913A (ja) メモリシステム
JP6721765B2 (ja) メモリシステムおよび制御方法
US20230081829A1 (en) Apparatus and method for improving read performance in a system
JP2019016386A (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
FPAY Annual fee payment

Payment date: 20161017

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181018

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20191016

Year of fee payment: 7