KR101277382B1 - 메모리 시스템 - Google Patents

메모리 시스템 Download PDF

Info

Publication number
KR101277382B1
KR101277382B1 KR1020110013664A KR20110013664A KR101277382B1 KR 101277382 B1 KR101277382 B1 KR 101277382B1 KR 1020110013664 A KR1020110013664 A KR 1020110013664A KR 20110013664 A KR20110013664 A KR 20110013664A KR 101277382 B1 KR101277382 B1 KR 101277382B1
Authority
KR
South Korea
Prior art keywords
free block
list
unit
block
order rule
Prior art date
Application number
KR1020110013664A
Other languages
English (en)
Other versions
KR20110098623A (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 KR20110098623A publication Critical patent/KR20110098623A/ko
Application granted granted Critical
Publication of KR101277382B1 publication Critical patent/KR101277382B1/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
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Abstract

일 실시형태에 따르면, 메모리 시스템은 비휘발성 메모리, 관리 유닛, 순서 규칙 유지 유닛, 위치 정보 기억 유닛, 리스트 선택 유닛, 블록 선택 유닛, 기록 유닛 및 갱신 유닛을 포함한다. 상기 관리 유닛은 프리 블록을 나타내는 프리 블록 리스트를 비휘발성 메모리의 각 기억 영역마다 유지한다. 상기 순서 규칙 유지 유닛은 프리 블록 리스트의 순서를 결정하는데 이용되는 정보인 순서 규칙을 유지한다. 상기 위치 정보 기억 유닛은 순서 규칙에서 프리 블록 리스트의 위치를 나타내는 위치 정보를 기억한다. 상기 리스트 선택 유닛은 위치 정보가 나타내는 위치에 대응하는 프리 블록 리스트를 선택하고, 상기 블록 선택 유닛은 그로부터 프리 블록을 선택한다. 상기 갱신 유닛은 리스트 선택 후에, 위치 정보 기억 유닛에 기억된 위치 정보를, 후속해서 선택되는 프리 블록 리스트의 위치를 나타내는 위치 정보로 갱신한다.

Description

메모리 시스템{MEMORY SYSTEM}
관련 출원과의 상호 참조
본 출원은 2010년 2월 26일자로 출원한 일본 특허 출원 제2010-43299호에 기초하고 이에 대해 우선권을 주장하며, 이 우선권의 전체 내용은 인용에 의해 본 명세서에 원용된다.
본 명세서에 기재되는 실시형태들은 개괄적으로, 비휘발성 반도체 메모리를 포함하는 메모리 시스템에 관한 것이다.
컴퓨터 등에 이용되는 외부 기억 장치로서, NAND 플래시 메모리와 같은 비휘발성 반도체 메모리를 기억 매체로서 사용하는 SSD(Solid State Drive)가 주목받고 있다. SSD는 기계적 동작을 포함하지 않기 때문에, 종래부터 이용되는 자기 디스크 장치보다 내충격성, 랜덤 판독 동작 및 소비전력 면에서 우수하다.
한편, NAND 플래시 메모리의 기록 속도는 자기 디스크 장치보다 저속이다. 그렇기 때문에, SSD에서 복수의 NAND 플래시 메모리 칩을 병렬로 액세스 가능하도록 접속하고, NAND 플래시 메모리 자체도 칩 내 복수 영역에서 동시 기록 동작을 가능하게 하도록 구성하여, 전송 성능을 향상시키고 있다.
SSD의 실용상 데이터 전송 속도를 향상시키기 위해서는, 전술한 바와 같이 구성되는 하드웨어의 병렬도(parallelism)를 최대한 이용하는 것이 필요하다. 이러한 이유에서, 호스트로부터 수신된 기록 데이터를 일시 축적하는 버퍼 메모리를 준비하고, 충분한 양의 데이터가 버퍼 메모리에 축적된 후에 데이터를 분할하여, 그 데이터를 복수의 NAND 플래시 메모리 칩에 병렬로 기록한다.
NAND 플래시 메모리의 기억 영역은 블록이라고 불리는 단위로 분할되고, 이 NAND 플래시 메모리에 대한 데이터 소거 동작은 블록 단위로 이루어진다. 즉, NAND 플래시 메모리에 대한 데이터 기록 동작은, 블록 내의 데이터를 일괄 소거하고 새로운 데이터를 미리 정해진 순서로 해당 블록에 기록함으로써 이루어진다.
그런데, NAND 플래시 메모리는 최대 소거 횟수에 제약이 있다는 특징을 갖는다. 예컨대, 임의의 블록의 소거 횟수가 미리 정해진 값 이상이 되면, 그 블록은 고갈되어 데이터 기억 실패의 가능성이 높아진다. 이 고갈로 인해 데이터를 기억할 수 없게 된 블록의 수가 증가하면, SSD의 전체 데이터 기억 용량이 감소하고, 미리 정해진 표기 용량을 제공할 수 없을 경우 SSD는 고장나게 된다. SSD의 전체 수명을 연장시키기 위해서는, 모든 블록을 균등하게 사용하고 각 블록의 소거 횟수를 평준화하는 메커니즘이 필요하다.
전술한 바와 같이, 실용적으로 SSD를 사용하기 위해서는, 액세스 시간, 특히 기록 동작 시의 병렬도를 활용하여, 전송 성능을 유지하며 블록들 간 소거 횟수를 평준화할 필요가 있다. 데이터 기록 시 병렬도를 확보하고 블록들 간의 소거 횟수를 평준화하는 데에는 데이터가 기록되는 블록을 선택하는 블록 할당 방법이 중요하다.
예컨대, 하드 디스크에서와 같이, 각 어드레스에 물리적인 기억 영역을 고정적으로 할당하는 방법을 SSD에 적용한다면, SSD에서 각 어드레스에는 블록이 고정적으로 할당된다. 그러나, 이 경우, 다음과 같은 두 가지 문제가 생긴다.
첫번째 문제는 특정 어드레스에 대응하는 블록에 기록된 데이터를 반복적으로 덮어쓸 경우에 발생하는 것이다. 그 어드레스에 대응하는 블록에서 일괄적인 데이터 소거 및 기록이 반복되기 때문에, 해당 블록만 소거 횟수가 증가하여 해당 블록의 수명이 다른 블록보다 줄어든다.
두번째 문제는 각각 병렬 기록이 불가능한 1 이상의 블록에 할당된 어드레스에 대하여, 복수의 기록 데이터가 수신된 경우에 생기는 것이다. 이 경우, 데이터가 개별 블록에 순차 기록되어 전송 성능은 열화된다.
이와 같이, 실용적으로 SSD를 사용하기 위해서는 액세스 시, 특히 기록 시의 병렬도를 확보하여 전송 성능을 유지하고, 블록들 간의 소거 횟수를 평준화할 필요가 있다.
일반적으로, 일 실시형태에 따르면, 메모리 시스템은 비휘발성 메모리, 관리 유닛, 순서 규칙 유지 유닛, 위치 정보 기억 유닛, 리스트 선택 유닛, 블록 선택 유닛, 기록 유닛 및 갱신 유닛을 포함한다. 상기 비휘발성 메모리는 각각 데이터 소거 단위인 복수의 블록을 각각 포함하는 복수의 기억 영역을 포함한다. 비휘발성 메모리는 상이한 기억 영역에 포함된 블록에 대해 병렬 기록이 가능하도록 구성된다. 상기 관리 유닛은 유효 데이터가 기억되어 있지 않은 블록인 프리 블록(free block)을 나타내는 프리 블록 리스트를 각 기억 영역마다 유지한다. 상기 순서 규칙 유지 유닛은 프리 블록 리스트의 순서를 결정하는데 이용되는 정보인 순서 규칙을 유지한다. 상기 위치 정보 기억 유닛은 순서 규칙에서 프리 블록 리스트의 위치를 나타내는 위치 정보를 기억한다. 상기 리스트 선택 유닛은 위치 정보가 나타내는 위치에 대응하는 프리 블록 리스트를 선택한다. 상기 블록 선택 유닛은 리스트 선택 유닛이 선택한 프리 블록 리스트로부터 프리 블록을 선택한다. 상기 기록 유닛은 블록 선택 유닛이 선택한 프리 블록에 데이터를 기록한다. 상기 갱신 유닛은 리스트 선택 유닛에 의해 프리 블록 리스트가 선택된 후에, 위치 정보 기억 유닛에 기억된 위치 정보를, 후속해서 선택되는 프리 블록 리스트의 위치를 나타내는 위치 정보로 갱신한다.
본 발명에 따른 메모리 시스템은 비휘발성 반도체 메모리에 대하여, 기록 시의 병렬도를 확보하여 전송 성능을 유지하고, 블록들 간의 소거 횟수를 평준화할 수 있다는 효과를 발휘한다.
도 1은 각 실시형태에 따른 메모리 시스템이 적용될 수 있는 컴퓨터의 일례를 나타내는 개략도이다.
도 2는 각 실시형태에 적용될 수 있는 SSD의 구성예를 나타내는 블록도이다.
도 3의 (a)와 (b)는 칩의 일례의 구성을 상세하게 도시하는 도면이다.
도 4의 (a)와 (b)는 어드레스와 블록 간의 연관성을 설명하는 위한 개략도이다.
도 5는 각 실시형태에 따른 데이터 기록 프로세스의 일례를 나타내는 흐름도이다.
도 6은 순서 규칙을 설명하기 위한 개략도이다.
도 7은 뱅크-칩-플레인 구성을 나타내는 개략도이다.
도 8은 병렬 기록이 가능한 프리 블록의 선택 프로세스의 일례를 나타내는 흐름도이다.
도 9는 복수의 물리 블록을 항상 일괄 사용하는 예를 나타내는 개략도이다.
도 10의 (a)와 (b)는 미리 정해진 주기에서 어드레스 기록을 수행하는 예를 나타내는 개략도이다.
도 11은 제2 실시형태에 따른 순서 규칙 작성 방법을 나타내는 개략 흐름도이다.
도 12의 (a)∼(c)는 단주기(short period)를 배열하여 새로운 순서 규칙을 작성하는 예를 나타내는 개략도이다.
도 13의 (a)와 (b)는 제2 실시형태에 따른 미리 정해진 주기의 어드레스의 기록 예를 나타내는 개략도이다.
도 14는 플레인 수가 많은 경우에 제2 실시형태에 따른 순서 규칙의 일례를 나타내는 개략도이다.
도 15는 뱅크-칩-플레인 구성의 순서 규칙의 일례를 나타내는 개략도이다.
도 16의 (a)∼(c)는 2진 난수 시퀀스를 이용하여 순서 규칙을 산출하는 예를 나타내는 개략도이다.
도 17은 제3 실시형태의 제1 방법의 순서 규칙을 스킵하는 프로세스의 일례를 나타내는 흐름도이다.
도 18은 제3 실시형태의 제1 방법의 순서 규칙을 스킵하는 예를 나타내는 개략도이다.
도 19는 제3 실시형태의 제2 방법의 순서 규칙을 스킵하는 프로세스의 일례를 나타내는 흐름도이다.
도 20의 (a)와 (b)는 제3 실시형태의 제2 방법의 순서 규칙을 스킵하는 예를 나타내는 개략도이다.
도 21의 (a)와 (b)는 제3 실시형태의 제2 방법의 순서 규칙을 스킵하는 다른 예를 나타내는 개략도이다.
도 22는 제3 실시형태의 변형예에 따른 순서 규칙의 일례를 나타내는 개략도이다.
<각 실시형태에 공통되는 구성>
이하, 도면을 참조하여 메모리 시스템의 실시형태들에 대하여 상세히 설명한다. 그러나, 본 발명이 이들 실시형태에 한정되는 것은 아니다. 도 1은 각 실시형태에 따른 메모리 시스템이 적용될 수 있는 컴퓨터(200)의 일례의 외관을 도시한다. 도 1에 예시하는 컴퓨터(200)는 휴대할 수 있도록 소형·경량으로 구성되는 소위 포터블 컴퓨터이다. 컴퓨터(200)는 본체(201)와, 표시 유닛(202)을 포함한다. 표시 유닛(202)은 디스플레이 하우징(203)과, 이 디스플레이 하우징(203)에 수용된 표시 장치(204)를 포함한다.
본체(201)는 케이싱(205)과, 키보드(206)와, 포인팅 디바이스에 해당하는 터치 패드(207)를 포함한다. 케이싱(205) 내부에는, 메인 회로 기판, ODD(Optical Disk Drive) 유닛, 카드 슬롯, 및 SSD(100)가 수용된다. 메인 회로 기판에는 CPU(Central Processing Unit), ROM(Read Only Memory), 및 RAM(Random Access Memory)와 같은 컴퓨터(200)의 주요 구성요소가 탑재된다. ODD 유닛은 CD(Compact Disk)나 DVD(Digital Versatile Disk)와 같은 광 디스크에 대해 데이터 판독/기록 동작을 수행한다.
카드 슬롯은 케이싱(205)의 주위 벽에 인접하게 설치된다. 주위 벽에는, 카드 슬롯에 대향하는 개구부(208)가 형성된다. 사용자는 이 개구부(208)를 통해, 케이싱(205)의 외부로부터 추가 디바이스를 카드 슬롯에 삽입할 수 있다.
SSD(100)는 재기록 가능한(rewritable) 비휘발성 반도체 메모리를 이용하는 기억 장치이다. SSD(100)는 종래의 HDD(Hard Disk Drive) 대신에, 예컨대 OS(Operating System)나 각종 프로그램을 기억하기 위해서, 컴퓨터(200)에 실장된 상태로 사용될 수 있다. 그러나, 이것에 한정되지 않고, SSD(100)는 컴퓨터(200)에 포함된 카드 슬롯에 삽입된 상태로 추가 디바이스로서 사용될 수 있다.
도 2는 각 실시형태에 적용될 수 있는 SSD(100)의 일례의 구성을 도시한다. 개략적으로 SSD(100)는 제어 유닛(130), 인터페이스 유닛(120), 버퍼 메모리(121) 및 비휘발성 메모리 유닛(122)을 갖는다. 이 제어 유닛(130), 인터페이스 유닛(120), 버퍼 메모리(121) 및 비휘발성 메모리 유닛(122)은 버스(110) 등의 신호선에 접속되어 서로 데이터를 교환할 수 있도록 구성된다.
인터페이스 유닛(120)은 호스트 기기와 통신한다. 전술한 도 1과 도 2의 예에서는 호스트 기기로서 컴퓨터(200)가 접속된다. 이하에서는, 컴퓨터(200)를 호스트 기기(200)로서 기술한다. 인터페이스 유닛(120)은 호스트 기기(200)로부터 리드(read), 라이트(write) 또는 플래시(flash) 커맨드를 수신하고, 제어 유닛(130)에 그 커맨드 수신을 통지한다. 인터페이스 유닛(120)은 제어 유닛(130)으로부터의 지시에 따라, 호스트 기기(200)와 데이터를 교환한다.
버퍼 메모리(121)는 DRAM(Dynamic RAM) 등의 휘발성 메모리로 구성된다. 버퍼 메모리(121)는 인터페이스 유닛(120)과 호스트 기기(200) 사이에서 교환되는 데이터나, 비휘발성 메모리 유닛(122)에 대해 판독 또는 기록되는 데이터를 일시적으로 기억한다. 그러나, 이것에 한정되지 않고, SSD(100)의 각종 관리용 정보도 버퍼 메모리(121)에 기억될 수 있다.
비휘발성 메모리 유닛(122)은 데이터를 재기록할 수 있고 기억된 내용이 전원 공급 정지 시에도 소거되지 않는 메모리이다. 예컨대, 호스트 기기(200)로부터 송신되는 사용자 데이터는 이 비휘발성 메모리 유닛(122)에 기억된다. 그러나, 이것에 한정되지 않고, 비휘발성 메모리 유닛(122)은 사용자 데이터 외에도 SSD(100)의 각종 관리용 정보를 기억할 수 있다.
비휘발성 메모리 유닛(122)은 비휘발성 메모리 기억 매체인 NAND 플래시 메모리의 칩(123)과, NAND 플래시 메모리를 제어하는 NAND 컨트롤러(도시 생략)를 구비한다. 각 칩(123)은 독립적인 액세스 제어가 가능한 기억 영역인 복수의 플레인을 구비할 수 있다. 도 3의 (a)와 (b)는 비휘발성 메모리 유닛(122)의 칩(123)의 일례의 구성을 상세하게 도시한다. 이 예에 있어서, 칩(123)은 플레인 #0과 플레인 #1의 2개의 플레인을 갖고, 각 플레인은 미리 정해진 기억 용량을 갖는 복수의 블록 #0, #1,…, #n을 갖는다.
칩(123)에서 물리적인 기억 영역으로서 기능하는 물리 블록이 칩(123)의 데이터 소거 단위이다. 복수의 물리 블록을 모아 1 논리 블록으로서 취급할 수도 있다. 이 경우에, 이 논리 블록이 데이터 소거 단위가 된다. 이하에서는, 물리 블록과 논리 블록을 서로 구별하지 않고 간단히 블록이라고 표현한다.
칩(123)의 임의의 블록에 데이터를 기록할 경우, 해당 블록에서 블록 단위로 데이터를 소거하고, 새로운 데이터를 그 해당 블록에 기록한다. 따라서, 칩(123)에 대한 데이터 기록 동작은 실질적으로는 블록 단위로 수행된다.
NAND 플래시 메모리의 칩(123)에 있어서, 플레인은 칩 내에서 병렬적으로 액세스가 가능하도록 구성된다. 예컨대, 도 3의 (a)에 예시하는 바와 같이, 번호 #0이 부여된 칩(123)에 있어서, 플레인 #0에 속하는 블록 #0과, 플레인 #1에 속하는 블록 #2에 병렬 액세스가 가능하다. 한편, 도 3의 (b)에 예시하는 바와 같이, 같은 번호 #0의 칩(123)에서, 플레인 #0에 속하는 블록 #0 및 블록 #2에는 병렬 액세스가 불가능하다.
NAND 플래시 메모리에 있어서, 총 기억 용량으로서, 호스트 기기(200)에 제공된 기억 용량보다 더 많은 기억 용량이 준비된다. 따라서, 임의의 시점에서, 유효 데이터가 기억되어 있는 블록과, 유효 데이터가 기억되어 있지 않은 블록이 존재한다. 유효 데이터가 기억되어 있지 않은 블록을 프리 블록(free block)이라고 부른다. 그리고, 유효 데이터가 기억되어 있는 블록을 액티브 블록(active block)이라고 부른다.
다시 도 2를 참조하면, 제어 유닛(130)은 블록 관리 유닛(131), 데이터 판독 유닛(132), 데이터 기록 유닛(133), 데이터 관리 유닛(134) 및 NAND 드라이버(135)의 각 기능을 갖는다. 제어 유닛(130)은 인터페이스 유닛(120)을 통한 호스트 기기(200)와의 통신을 제어하거나, 버퍼 메모리(121) 및 비휘발성 메모리 유닛(122)에 기억된 데이터의 관리 또는 기록/ 판독을 제어한다.
제어 유닛(130)의 각 기능은 회로로서 구현된 SoC(System on a Chip)으로서 구성될 수 있다. 그러나, 이것에 한정되지 않고, 제어 유닛(130)의 하드웨어로서 범용 프로세서를 이용하여, 이들 기능을 범용 프로세서 상에서 동작하는 소프트웨어로서 실현할 수도 있다.
제어 유닛(130)에 있어서, 데이터 관리 유닛(134)은, 호스트 기기(200)와 그 데이터 관리 유닛 간에 사용되는, 데이터의 기억 위치를 나타내는 어드레스와, 비휘발성 메모리 유닛(122)에서의 실제 기억 영역인 블록 위치와의 대응 관계를 관리한다. 이 어드레스는 호스트 기기(200)와 SSD(100) 사이에서 이용되는 어드레스이다. 어드레스와 블록은 데이터의 기록 시에 동적으로 연관된다.
도 4의 (a)와 (b)를 이용하여, 데이터 관리 유닛(134)에 있어서의 어드레스와 블록 간의 연관성에 대해 설명한다. 예컨대, 도 4의 (a)에 예시하는 바와 같이, 호스트 기기(200)가 지정하는 데이터의 어드레스가 어드레스 A0, A1,…이고, 비휘발성 메모리 유닛(122)에서의 소정의 플레인의 블록 위치가 블록 B0, B1,…이라고 한다. 또한, 1 어드레스가 지정하는 데이터의 사이즈는 1 블록의 기억 용량과 같다고 한다.
여기서, 어드레스 A1에 대응하는 블록에 유효 데이터가 기억되어 있고, 비휘발성 메모리 유닛(122)에서 어드레스 A1로서 실제로 사용되는 기억 영역이 블록 B1인 경우에 관해서 생각한다. 이 경우, 블록 B1이 액티브 블록이며, 예컨대 이 블록 B1에 인접한 블록 B2가 프리 블록이다.
도 4의 (a)의 상태에서, 호스트 기기(200)로부터, 어드레스 A1의 데이터를 덮어쓰라고 지시하는 커맨드를 수신하는 것을 상정한다. 동일한 어드레스의 데이터를 덮어쓸 경우, 데이터 덮어쓰기 프로세스는 블록 단위로 실행된다. 데이터 관리 유닛(134)은 1 프리 블록(예컨대, 블록 B2)을 할당하고, 할당된 프리 블록에 호스트 기기(200)로부터 수신된 데이터를 기록한다. 프리 블록에 대해 데이터를 기록한 후에, 데이터 관리 유닛(134)은 호스트 기기(200)가 지정한 어드레스 A1과, 데이터가 실제로 기록되는 블록 B2를 연관시킨다.
그 결과, 도 4의 (b)에 예시하는 바와 같이, 블록 B2가 액티브 블록이 된다. 덮어쓰기 전에 어드레스 A1의 데이터가 기억되어 있는 블록 B1에 있어서, 기억된 데이터가 무효가 되기 때문에, 그 블록 B1은 프리 블록이 된다. 전술한 바와 같이, SSD에서는 데이터가 동일한 어드레스 A1로서 지정된 데이터일지라도, 실제 기억 영역으로서 사용되는 블록은 데이터가 기록될 때마다 변한다.
다시 도 2를 참조하면, 데이터 판독 유닛(132)은 비휘발성 메모리 유닛(122)으로부터의 데이터 판독을 제어한다. 데이터 기록 유닛(133)은 비휘발성 메모리 유닛(122)에 대한 데이터의 기록을 제어한다. NAND 드라이버(135)는 데이터 판독 유닛(132)이나 데이터 기록 유닛(133)의 요구에 따라, 비휘발성 메모리 유닛(122)에 대해 데이터를 판독하거나 데이터를 기록하도록 비휘발성 메모리 유닛(122)의 NAND 컨트롤러(도시 생략)를 제어한다.
블록 관리 유닛(131)은 프리 블록 관리 유닛(140) 및 프리 블록 선택 유닛(150)을 구비하며, 비휘발성 메모리 유닛(122)에서의 프리 블록을 관리하고 데이터의 기록 시에 사용되는 프리 블록을 선택한다. 프리 블록 관리 유닛(140)은 유효 데이터가 기억되지 않은 블록에 해당하는 프리 블록을 나타내는 정보인 프리 블록 리스트를 유지하여 관리한다. 예컨대, 프리 블록 관리 유닛(140)은, 비휘발성 메모리 유닛(122)의 프리 블록을 관리하는 구조체로서, 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n을 각 플레인마다 유지한다. 비휘발성 메모리 유닛(122)의 프리 블록은 해당 프리 블록이 속하는 플레인에 대응하는 프리 블록 리스트 141m에 기초하여, 프리 블록 관리 유닛(140)에 의해 관리된다.
프리 블록 리스트 141m은 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411∼141n 중 임의의 프리 블록 리스트를 나타낸다고 한다.
프리 블록 리스트 141m은 예컨대 각 프리 블록에 대응하는 블록 식별자를 포함하는 블록 정보를 노드로서, 프리 블록 리스트에 링크하는 형태를 가질 수 있다. 프리 블록 리스트에 프리 블록을 링크하는 순서에 대해서는 단순한 FIFO(First In First Out)를 사용할 수도 있고 또는 프리 블록의 소거 횟수에 따라 프리 블록을 정렬하는 순서로 프리 블록을 링크할 수도 있다. 또한, 병렬 기록이 불가능한 복수의 플레인에 대해서는 프리 블록을 1 프리 블록 리스트에 모아 프리 블록을 관리할 수도 있다.
프리 블록 선택 유닛(150)은 비휘발성 메모리 유닛(122)에 데이터를 기록할 경우에, 순서 규칙에 따라 비휘발성 메모리 유닛(122)의 프리 블록을 선택한다. 프리 블록 선택 유닛(150)은 순서 규칙 연산 유닛(151), 위치 정보 갱신 유닛(152), 순서 규칙 유지 유닛(153) 및 위치 정보 기억 유닛(154)을 갖는다.
순서 규칙 유지 유닛(153)은 순서 규칙을 유지한다. 순서 규칙은 프리 블록 리스트의 순서를 결정하는데 이용되는 정보이며, 테이블 형식이나 연산 형식에 의해 정의된다. 이와 다르게, 순서 규칙을 테이블 형식 및 연산 형식 이외의 다른 형식으로도 정의할 수 있다. 순서 규칙 유지 유닛(153)을 기억 장치나 기억 영역(도시 생략)의 일부로 구성할 수도 있다. 순서 규칙 연산 유닛(151)은 순서 규칙에 기초하여 순서 시퀀스를 연산한다. 순서 시퀀스는 순서 규칙에 기초하여 작성된 프리 블록 리스트의 순서를 나타내는 정보이다. 예컨대, 순서 시퀀스는 프리 블록 리스트의 식별자가 순서대로 배열되어 있는 정보이다. 프리 블록 리스트는 순서 시퀀스와 후술하는 위치 정보에 기초하여 선택된다.
위치 정보 기억 유닛(154)은 위치 정보를 기억한다. 위치 정보는 순서 규칙에 따라 프리 블록 리스트의 순서 시퀀스가 작성될 경우에 그 순서 시퀀스 상에서의 위치를 나타내는 정보이다. 즉, 위치 정보는 순서 규칙에 기초하여 결정되는 프리 블록 리스트의 순서를 나타내는 정보이다. 위치 정보 갱신 유닛(152)은 위치 정보 기억 유닛(154)에 기억되는 위치 정보를 갱신한다. 예컨대, 위치 정보 갱신 유닛(152)은 순서 규칙 연산 유닛(151)에 의해 프리 블록 리스트가 선택된 후에, 위치 정보를, 후속해서 선택되는 프리 블록 리스트를 나타내는 위치 정보로 갱신한다.
다음으로, 도 5의 흐름도를 이용하여 각 실시형태에 따른 데이터 기록 프로세스를 대하여 개략적으로 설명한다. 각 실시형태에서는, 데이터의 기록 시에 호스트 기기(200)로부터 수신된 기록 데이터가 일시적으로 버퍼 메모리(121)에 저장된다. 버퍼 메모리(121)에 충분한 양의 데이터가 저장된 후에, 버퍼 메모리(121)로부터 기록 데이터가 판독되어 복수의 프리 블록에 병렬로 기록된다.
도 5에 있어서, 인터페이스 유닛(120)이 호스트 기기(200)로부터 라이트 커맨드를 대기하여 그 라이트 커맨드를 수신하면(단계 S10), 인터페이스 유닛(120)은 제어 유닛(130)에 라이트 커맨드 수신을 통지한다(단계 S11). 라이트 커맨드는 기록 데이터의 기록 어드레스를 나타내는 정보를 포함한다.
이 라이트 커맨드 수신 통지를 수신한 후에, 다음 단계 S12에서, 제어 유닛(130)의 데이터 기록 유닛(133)은 버퍼 메모리(121) 상에 호스트 기기(200)로부터 송신된 기록 데이터를 수신하는 영역을 확보한다. 그리고, 데이터 기록 유닛(133)은 인터페이스 유닛(120)에 대해, 버퍼 메모리(121) 상에 확보된 영역에, 호스트 기기(200)로부터 송신된 기록 데이터를 수신할 것을 지시한다. 다음 단계 S13에서, 인터페이스 유닛(120)은 호스트 기기(200)로부터 송신된 기록 데이터를 수신하고, 수신된 기록 데이터를 단계 S12에서 버퍼 메모리(121) 상에 확보된 영역에 저장한다.
다음 단계 S14에서, 데이터 기록 유닛(133)은 버퍼 메모리(121) 상에 저장되어 있는 기록 데이터 양을 확인하고, 그 버퍼 메모리(121) 상에 미리 정해진 양의 기록 데이터가 저장되어 있는지의 여부를 판정한다. 버퍼 메모리(121)에 저장된 기록 데이터 양이 미리 정해진 양 미만이라고 판정될 경우, 프로세스는 단계 S10에 복귀되고, 데이터 기록 유닛(133)은 호스트 기기(200)로부터 커맨드를 대기한다.
한편, 단계 S14에서, 버퍼 메모리(121)에 미리 정해진 양의 데이터가 저장되어 있다고 판정될 경우, 프로세스는 단계 S15로 이행된다. 단계 S15에서, 데이터 기록 유닛(133)은 버퍼 메모리(121)에 저장된 기록 데이터를 기록하는데 필요한 프리 블록 수를 계산한다.
다음 단계 S16에서, 데이터 기록 유닛(133)은 단계 S15에서 계산된 필요한 수의 프리 블록의 제공을 프리 블록 관리 유닛(140)에 요구한다. 데이터 기록 유닛(133)이 프리 블록 관리 유닛(140)에 프리 블록 제공을 요구할 경우, 프로세스는 각 실시형태의 특징인 단계 S17로 이행된다. 단계 S17에서, 프리 블록 관리 유닛(140)은 데이터 기록 유닛(133)으로부터의 요구를 수신하고, 병렬 기록이 가능한 필요한 수의 프리 블록의 그룹을 프리 블록 리스트 1411, 1412,…, 141m, …, 141n에서 추출한다. 프리 블록 관리 유닛(140)은 추출된 프리 블록을 나타내는 정보를 데이터 기록 유닛(133)에 반환한다.
다음 단계 S18에서, 데이터 기록 유닛(133)은 버퍼 메모리(121) 상의 기록 데이터를, 프리 블록 관리 유닛(140)으로부터 취득된 정보가 나타내는 프리 블록에 병렬로 기록할 것을 NAND 드라이버(135)에 요구한다. 다음 단계 S19에서, NAND 드라이버(135)는 비휘발성 메모리 유닛(122)의 NAND 컨트롤러(도시 생략)를 제어하고, 데이터 기록 유닛(133)으로부터 요구되는 기록 데이터의 병렬 기록을 실행한다.
단계 S19에서 프리 블록에 기록 데이터가 기록되면, 다음 단계 S20에서, 데이터 기록 유닛(133)은 기록된 데이터의 어드레스와 블록과의 대응 관계를 데이터 관리 유닛(134)에 등록한다. 다음 단계 S21에서, 데이터 관리 유닛(134)은 등록 전에, 즉 단계 S19에서의 기록 전에, 기록 데이터의 기록이 지시되는 어드레스와 연관된 액티브 블록을 프리 블록으로서 프리 블록 관리 유닛(140)에 통지한다.
다음 단계 S22에서, 프리 블록 관리 유닛(140)은 단계 S21에 있어서 데이터 관리 유닛(134)으로부터 통지된 프리 블록이 속하는 플레인에 대응하는 프리 블록 리스트 141m을 특정하고, 특정된 프리 블록 리스트 141m와, 데이터 관리 유닛(134)으로부터 통지된 프리 블록을 링크한다.
<제1 실시형태>
다음에, 본 발명의 제1 실시형태에 대하여 설명한다. 이후, 제1 실시형태의 특징인 프리 블록 선택 프로세스(도 5의 단계 S17)에 대하여 상세히 설명한다.
프리 블록 관리 유닛(140)이 병렬 기록이 가능한 프리 블록의 그룹을 선택할 경우, 프리 블록 관리 유닛(140)은 그 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n에서, 미리 정해진 순서 규칙에 따라 프리 블록 리스트 141m을 선택하고, 선택된 프리 블록 리스트 141m으로부터 프리 블록을 취득한다.
순서 규칙은, 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n 중에서 프리 블록 리스트 141m이 선택되면, 그 순서 규칙에 기초하여 연산된 순서 시퀀스가 나타내는 순서로, 병렬 기록이 가능한 프리 블록의 그룹이 취득될 수 있는 규칙인 것이 바람직하다.
예컨대, 도 6에 도시하는 바와 같이, 비휘발성 메모리 유닛(122)의 칩의 수가 4이고 칩 #0∼칩 #3 각각의 플레인 수가 2인 경우에 대해서 고려한다. 이 경우, 플레인 P0∼플레인 P7의 총 8개의 플레인이 존재하고, 8 플레인에서 병렬 기록이 가능하다. 각 플레인에서 1 프리 블록이 선택되면, 최대 8 병렬 기록이 가능하다.
또, 도 6에 있어서, 각각의 사각형은 블록을 나타내고, 각 사각형에 적힌 숫자는 그 블록과 동적으로 연관된 어드레스를 나타낸다. 도 6에서, 화살표는 블록에 대한 데이터의 기록 방향 또는 프리 블록 취득 방향을 나타낸다. 이것은 특별한 기재가 없는 한 이후에 설명하는 도면들에도 적용될 수 있다.
예컨대, 식별자 "0"∼"7"은 플레인 P0∼P7에 대응하는 프리 블록 리스트 141m, 141m+1,…, 및 141m+7과 연관되고, 이 식별자들은 미리 정해진 순서로 배열되며, 그 식별자 시퀀스에 의해 표현되고 길이가 8인 순서 규칙은 수식 1에 나타내는 바와 같이 작성된다. 이 순서 규칙은 미리 작성되어 순서 규칙 유지 유닛(153)에 유지된다.
{0, 1, 2, 3, 4, 5, 6, 7} (1)
수식 1에 나타낸 순서 규칙이 순환 반복되면, 임의의 위치에서 프리 블록 리스트의 선택이 시작되더라도, 최대 8 병렬 기록이 가능한 프리 블록을 선택할 수 있다. 예컨대, 순서 규칙 상의 식별자 "4"가 나타내는 위치로부터 프리 블록 리스트의 선택이 시작되는 경우, 식 2가 나타내는 바와 같이, 식별자 "4"의 위치로부터 프리 블록 리스트의 선택을 시작할 수 있고, 선택 위치가 식별자 "7"의 위치로부터 식별자 "0"의 위치로 순환적으로 되돌아갈 수 있으며, 식별자 "3"의 위치까지 프리 블록 리스트를 순차적으로 선택할 수 있다.
{4, 5, 6, 7, 0, 1, 2, 3} (2)
다음으로, 병렬 기록이 가능한 플레인의 그룹에 제약이 있는 경우에 대해서 고려한다. 이 경우, 병렬 기록이 불가능한 플레인들 사이에서 순서 규칙에 따른 순서 시퀀스 상의 거리가 가능한 한 떨어지도록 순서 규칙을 작성할 수 있다.
예컨대, 도 7에 도시하는 바와 같이, 비휘발성 메모리 유닛(122)의 칩 수가 4이고 각 칩(123) 내의 플레인 수가 2이며, 칩(123)을 2개씩 그룹화하여 2개의 뱅크 3001(뱅크 B0) 및 뱅크 3002(뱅크 B1)를 구성하는 경우에 대해서 고려한다. 이하에서는, 이러한 구성을 뱅크-칩-플레인 구성이라 부른다. 이 뱅크-칩-플레인 구성에 있어서, 동일한 뱅크에 속하는 칩에는 병렬 기록이 불가능하다는 제약이 있다. 따라서, 이 경우에 있어서, 최대 병렬도, 즉 병렬 기록이 가능한 최대의 블록 수는 4이다.
도 7에 있어서, 칩(123)은 각 뱅크에서 칩 C0 및 C1로서 구별되며, 각 칩(123) 내의 플레인은 플레인 P0 및 P1로서 구별된다.
도 7에서, 각 플레인은 "B(뱅크 번호) C(뱅크 내 칩 번호) P(칩 내 플레인 번호)"로서 표기된다. 예컨대, 뱅크 B0에 속하는 칩 C0 내의 플레인 P0은 "B0C0P0"으로서 표기된다. 하기의 수식 3이 나타내는 순서 규칙을 작성하는 것을 고려할 수 있다. 수식 3이 나타내는 순서 규칙에서는 각각의 뱅크에서 칩 하나를 선택하여 최대 4 병렬 기록을 실현한다.
{B0C0P0, B0C0P1, B1C0P0, B1C0P1, B0C1P0, B0C1P1, B1C1P0, B1C1P1} (3)
수식 (3)에 나타낸 순서 규칙에서는, 플레인 P0으로부터 프리 블록의 취득이 시작될 경우, 최대 4 병렬 기록이 가능하도록 프리 블록을 취득할 수 있다. 예컨대, 플레인 B1C0P0으로부터 프리 블록의 취득이 시작될 경우, 플레인 B1C0P0, 플레인 B1C0P1, 플레인 B0C1P0, 플레인 B0C0P1의 순서로 프리 블록을 취득할 수 있다.
한편, 플레인 P1로부터 프리 블록의 취득이 시작될 경우에는, 3 병렬 기록만 가능한 프리 블록을 취득할 수 있다. 예컨대, 플레인 B0C0P1로부터 프리 블록의 취득이 시작될 경우, 플레인 B0C0P1, 플레인 B1C0P0, 플레인 B1C0P1의 순서로 취득된 프리 블록에 병렬 기록이 가능하다. 그러나, 다음 플레인 B0C1P0이, 프리 블록의 선택이 시작된 플레인 B0C0P1과 동일한 뱅크 내의 상이한 칩의 플레인이기 때문에, 그 플레인 B0C1P0에 속하는 프리 블록 및 플레인 B0C0P1로부터 취득된 프리 블록에는 병렬 기록이 불가능하다.
병렬 기록이 가능한 플레인의 그룹에 제약이 있는 경우에서처럼, 순서 규칙은 항상 최대 병렬도로 프리 블록이 취득될 수 있는 순서 규칙이 될 수 없다.
다음으로, 제1 실시형태에 따른 프리 블록 취득 프로세스에 대하여 상세하게 설명한다. 도 8은 블록 관리 유닛(131)에 의해 병렬 기록이 가능한 프리 블록의 선택 프로세스를 나타내는 흐름도이다. 도 8의 흐름도에 따른 프로세스는 전술한 도 5의 흐름도에서의 단계 S17의 프로세스에 대응한다. 이하의 설명에서는 도 5의 단계 S16에서 데이터 기록 유닛(133)으로부터 필요한 r개의 프리 블록이 요구된 것으로 한다. 또한, 순서 규칙은 미리 정해진 순서 규칙으로서 이미 결정된 것으로 한다.
먼저, 블록 관리 유닛(131)은 위치 정보 기억 유닛(154)으로부터 위치 정보 Pos를 취득하고(단계 S30), 취득된 위치 정보 Pos가 나타내는 위치의 프리 블록 리스트 141m에서 프리 블록의 선택이 시작될 때의 최대 병렬도 q를 계산한다(단계 S31).
최대 병렬도 q는 전술한 병렬 기록이 가능한 플레인의 그룹에 대한 제약과, 프리 블록 선택 프로세스의 시작 위치에 종속된다. 즉, 최대 병렬도 q는 비휘발성 메모리 유닛(122)에서의 칩(123)의 구성 또는 뱅크에 기초한 칩(123)의 운용에 종속된다.
이 제약이나 운용에 관한 정보는 블록 관리 유닛(131)의 ROM(Read Only Memory)(도시 생략) 또는 비휘발성 메모리 유닛(122)에 미리 저장될 수 있다. 그러나, 이것에 한정되지 않고, 그 제약이나 운용을 호스트 기기(200)측에서 동적으로 설정할 수 있는 경우에, 호스트 기기(200)로부터 인터페이스 유닛(120)을 통해 제약이나 운용이 제공될 수도 있다. 블록 관리 유닛(131)은 위치 정보 Pos와, 제약이나 운용을 나타내는 정보에 기초하여, 최대 병렬도 q를 계산한다.
다음 단계 S32에서, 블록 취득 수 rb 및 리스트 선택 횟수 i가 각각 0으로 초기화되고, 프로세스는 단계 S33으로 이행된다.
단계 S33에서, 블록 관리 유닛(131)은 순서 규칙 연산 유닛(151)에 위치 정보 Pos를 전달한다. 순서 규칙 연산 유닛(151)은 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n 중에서, 위치 정보 Pos와, 순서 규칙 유지 유닛(153)에 유지된 미리 정해진 순서 규칙에 따라, 리스트 선택 횟수 i에 대응하는 1 프리 블록 리스트 141m을 선택한다. 이하, 특별한 기재가 없는 한, 이 리스트 선택 횟수 i에 대응하는 프리 블록 리스트 141m을 프리 블록 리스트 L(i)로서 기술한다. 선택된 프리 블록 리스트 L(i)는 블록 관리 유닛(131)에 반환된다.
블록 관리 유닛(131)은 순서 규칙 연산 유닛(151)으로부터 반환된 프리 블록 리스트 L(i)에 프리 블록이 남아 있는지의 여부를 확인한다. 그 프리 블록 리스트 L(i)에 프리 블록이 남아 있지 않다고 판정될 경우, 프로세스는 단계 S37로 이행된다. 이 경우, 그 프리 블록 리스트 L(i)로부터 프리 블록을 취득할 수 없다.
한편, 단계 S34에서, 프리 블록 리스트 L(i)에 프리 블록이 남아 있다고 판정될 경우, 프로세스는 단계 S35로 이행된다. 단계 S35에서는, 프리 블록 선택 유닛(150)이 프리 블록 리스트 L(i)로부터 프리 블록 B(i)를 선택한다. 블록 관리 유닛(131)은 선택된 프리 블록 B(i)를 취득한다. 다음 단계 S36에서, 블록 관리 유닛(131)은 블록 취득 수 rb를 1씩 증가시킨다. 다음 단계 S37에서, 프리 블록 선택 유닛(150)은 리스트 선택 횟수 i를 1씩 증가시키고 리스트 선택 횟수를 계수한다.
다음 단계 S38에서, 위치 정보 갱신 유닛(152)은 위치 정보 기억 유닛(154)에 유지되어 있는 위치 정보 Pos를, 순서 규칙에 기초한 순서 시퀀스 상의 다음 위치를 나타내는 위치 정보 Pos로 갱신한다. 이 때, 다음 위치가 순서 규칙에 기초한 순서 시퀀스 상에서의 최종 위치에서 벗어날 경우에는, 위치 정보 갱신 유닛(120)은 다음 위치를 순서 규칙에 기초한 순서 시퀀스의 선두로 설정한다.
프로세스는 단계 S39로 이행되고, 블록 관리 유닛(131)은 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하는지의 여부를 판정한다. 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달한다고 판정될 경우, 도 8의 흐름도에 기초한 일련의 프로세스가 종료되고, 프로세스는 도 5의 단계 S18로 이행된다.
한편, 단계 S39에서, 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하지 않는다고 판정될 경우, 프로세스는 단계 S40으로 이행된다. 단계 S40에서, 블록 관리 유닛(131)은 리스트 선택 횟수 i가 최대 병렬도 q에 도달하는지의 여부를 판정한다. 리스트 선택 횟수 i가 최대 병렬도 q에 도달하지 않는다고 판정될 경우, 프로세스는 단계 S33에 복귀되고, 다음 프리 블록 리스트 L(i)에 관련된 프로세스가 실행된다.
한편, 리스트 선택 횟수 i가 최대 병렬도 q에 도달한다고 판정될 경우에는, 도 8의 흐름도에 기초한 일련의 프로세스가 종료되고, 프로세스는 도 5의 단계 S18로 이행된다. 즉, 이 경우에는, 취득된 프리 블록 수가 필요 수에 도달하지 않고, 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n 중에서, 병렬 기록이 가능한 프리 블록의 그룹을 취득할 수 없다. 따라서, 프리 블록 선택 프로세스가 종료된다.
제1 실시형태에 따르면, 나타내는 순서로 프리 블록 리스트를 선택하면 병렬 기록이 가능한 프리 블록의 그룹을 취득할 수 있도록 순서 규칙이 작성된다. 따라서, 호스트 기기로부터 특정 어드레스에 대한 기록이 반복되더라도, 순서 규칙에 따라 프리 블록을 취득함으로써 플레인들 간에 블록 취득 횟수의 차이를 억제할 수 있고, 소거 횟수가 특정 블록에 집중되는 것을 피할 수 있다.
또한, 복수의 상이한 어드레스에 대한 기록 데이터가 버퍼 메모리에 축적되는 경우에, 기록 동작이 특정 플레인에 집중되는 것을 피하여, 가능한 한 많은 플레인에 대해 병렬 기록을 수행할 수 있다. 따라서, 우수한 전송 성능을 유지할 수 있다.
이상의 설명에서는 프리 블록이나 액티브 블록 등의 관리 단위가 칩 고유의 물리 블록인 것으로 설명했지만, 본 발명은 이 예에 한정되지 않는다. 예컨대, 도 9에 예시하는 바와 같이, 항상 복수의 물리 블록을 모아 사용할 경우, 복수의 블록이 모여진 논리적인 블록을 관리 단위로서 사용할 수도 있다.
도 9에 있어서, 뱅크-칩-플레인 구성은 전술한 도 7의 구성과 같다. 도 9에서는, 뱅크 B0 및 뱅크 B1의 각 뱅크에서, 칩 C0 및 칩 C1의 번호가 대응하는 플레인들이 수집되어 관리된다. 뱅크 B0의 예에서는, 칩 C0의 플레인 P0과 칩 C1의 플레인 P0이 수집되어 플레인 P0'으로서 관리된다. 마찬가지로, 칩 C0의 플레인 P1과 칩 C1의 플레인 P1이 수집되어 플레인 P1'으로서 관리된다.
이 경우, 뱅크 B0의 플레인 P0' 및 플레인 P1'과, 뱅크 B1의 플레인 P0' 및 플레인 P1'에 의해 4 병렬 기록이 가능하다. 이들 뱅크 B0의 플레인 P0' 및 플레인 P1'과, 뱅크 B1의 플레인 P0' 및 플레인 P1'에 대하여, 순서 규칙을 적용할 수 있다.
<제2 실시형태>
다음에, 제2 실시형태에 대해서 설명한다. 제2 실시형태에서는 최대 병렬 기록을 가능하게 하는 프리 블록의 그룹이 취득될 수 있는 순서로 모든 프리 블록 리스트가 한번씩 배열되는 순서 규칙을 순서 규칙의 단주기로서 정의한다. 단주기를 미리 정해진 순서로 배열함으로써, 새로운 장주기(long period)의 순서 규칙이 작성된다.
제1 실시형태에서 설명한 프리 블록 선택 방법에서는, 기록 데이터의 어드레스 패턴에 따라, 프리 블록 리스트들 간에 프리 블록 수 및 액티브 블록 수가 다를 수 있다. 이것은, 소정의 어드레스 A가 덮어쓰여질 경우, 기록 전에 어드레스 A와 연관된 액티브 블록 B1과, 기록을 위해 취득된 프리 블록 B2가 동일한 플레인에 속할 필요가 없기 때문이다.
구체적으로, 액티브 블록 B1과 프리 블록 B2가 다른 플레인에 속해 있는 경우, 프리 블록 리스트에서의 프리 블록 수는 액티브 블록 B1이 속한 플레인에 대응하는 프리 블록 리스트에서 1씩 증가하고, 프리 블록 B2가 속한 플레인에 대응하는 프리 블록 리스트에서는 1씩 감소한다.
일반적인 이용 방법에서는, 기록 어드레스가 확률적으로 분산되기 때문에, 프리 블록 리스트들 간에 프리 블록 수의 차이가 그다지 크지 않는 것으로 한다. 그러나, 제1 실시형태에 설명한 순서 규칙에서는, 기록 요구의 어드레스에 특정 패턴이 존재하는 경우에, 특정 프리 블록 리스트에 프리 블록이 집중하여, 다른 프리 블록 리스트의 프리 블록이 고갈될 수 있다. 이 경우, 블록 관리 유닛(131)이 프리 블록을 선택할 때의 병렬도가 저하되고 전송 성능은 열화된다.
예컨대 SSD(100)로부터 호스트 기기(200)에 제공되는 용량 전체에 대해 선두 어드레스로부터 기록이 이루어지는 경우[전면 시퀀셜 라이트(full-scale sequential write)라고 부름], 특정 주기의 어드레스에 대응하는 액티브 블록이 특정 플레인에 집중된다. 이것에 대해 도 10의 (a)를 이용하여 상세하게 설명한다. 플레인 수가 8인 경우, 어드레스가 "block size×8"에 대응하는 액티브 블록이 플레인 0에 집중된다. 도 10의 (a)의 예에서는, 예컨대 어드레스 A0, A8, A16,…에 대응하는 액티브 블록이 플레인 P0에 집중된다. 이것은 다른 플레인에 대해서도 적용될 수 있다.
여기서, 어드레스가 "block size×8"이 되는 기록이 반복되는 경우에 대해서 고려한다. 이 경우, 기록에 사용되는 프리 블록[도 10의 (a)에서 어둡게 표시]이 플레인 P0∼P7의 전체 플레인에서 선택된다. 한편, 기록 후에 해방되는 액티브 블록은 플레인 P0에 집중된다. 따라서, 도 10의 (b)에 예시하는 바와 같이, 액티브 블록이 해방된 후에, 프리 블록도 플레인 P0에 집중된다.
특정 플레인에 속하는 액티브 블록에 연관되는 어드레스에 주기성이 존재하면, 그 주기로 어드레스를 덮어쓸 기록 패턴에 대하여, 기록 시에 병렬도를 유지하거나 블록들 간의 소거 횟수를 평준화하는 것이 어려워질 수 있다.
제2 실시형태에 있어서, 전술한 제1 실시형태에 따른 순서 규칙은, 주기성이 최소화되거나 주기가 길어지도록 변경된다. 도 11은 제2 실시형태에 따른 시퀀스 순서 작성 방법의 예를 개략적으로 나타내는 흐름도이다.
먼저, 제1 실시형태에서와 마찬가지로 순서 규칙을 작성하여, 단주기로서 정의한다(단계 S50). 다음으로, 단계 S50에서 작성된 단주기에서 순서 규칙에 기초한 순서를 일부 변경하여 다른 단주기를 작성한다(단계 S51). 마지막으로, 단계 S50에서 작성된 단주기와, 단계 S51에서 작성된 다른 단주기를 미리 정해진 순서로 복수회 배열하여 새로운 순서 규칙을 작성한다(단계 S52). 이 새로운 순서 규칙은 원래의 순서 규칙보다 주기가 긴 장주기 순서 규칙이다. 즉, 장주기 순서 규칙은 복수의 상이한 단주기의 순서 규칙에 기초하여 작성된다.
단계 S52에서는, 단주기 및 다른 단주기를 각각 복수회 사용할 수도 있고, 같은 단주기를 복수회 연속적으로 사용할 수도 있다. 단계 S51에서, 단주기 내에서 프리 블록 리스트를 변경하여 작성할 수 있는 다른 단주기가 다수 존재한다. 그러나, 단계 S52에서 새로운 순서 규칙을 작성할 때에, 생각할 수 있는 모든 단주기를 사용할 필요는 없다.
다음으로, 제2 실시형태에 대해 구체적인 예를 이용하여 설명한다. 먼저, 제1 예로서, 병렬 기록이 가능한 플레인 수가 2인 경우에 대해 설명한다. 이하에서는, 플레인을 플레인 Px(x는 0 이상의 정수)로서 또는 단순히 Px로서 기재하고, 어드레스를 어드레스 Ax로서 또는 단순히 Ax로서 기재한다.
도 12의 (a)를 참조하여, 병렬 기록이 가능한 플레인의 수가 2인 경우, 이하에 단주기 A 및 단주기 B로서 나타내는 두 가지의 단주기가 순서 규칙의 단주기로서 존재한다. 각 단주기의 순서 규칙은 미리 작성되어 순서 규칙 유지 유닛(153)에 유지될 수 있다.
단주기 A: {P0, P1}
단주기 B: {P1, P0}
단주기 A 및 단주기 B를 배열하여 새로운 순서 규칙을 작성한다. 도 12의 (b)는 단주기 A와 단주기 B 각각을 4회 사용하고, 8 단주기를 이용하여 길이 16의 순서 규칙이 작성되는 예를 나타낸다. 도 12의 (c)를 참조하면, 전술한 경우의 순서 규칙은 수식 4에 나타낸 바와 같다. 위치 정보 갱신 유닛(152)은 단주기 A와 단주기 B가 배열되어 있는 새로운 순서 규칙에 따라 위치 정보를 갱신한다.
{P0,P1, P1,P0, P1,P0, P0,P1, P1,P0, P0,P1, P0,P1, P1,P0} (4)
이 수식 4에 기초한 순서 규칙에 따라, 전술한 전면 시퀀셜 라이트가 이루어지는 경우, 각 블록에 대해 어드레스가 도 13의 (a)에 예시하는 바와 같이 할당된다. 즉, 플레인 P0과 P1의 선두 블록에는, 순서 규칙에 따라, 플레인 P0, 플레인 P1의 순서로 어드레스 A0과 A1이 할당된다. 후속 블록에는, 플레인 P1, 플레인 P0의 순서로 어드레스 A2와 A3이 할당된다. 이후, 순서 규칙에 따라서, 어드레스 A4, A5,…가 순차 할당된다.
이후에, 어드레스가 "block size×k"가 되는 주기적인 기록이 이루어지는 경우의 예를 도 13의 (b)에 도시하며, 이 도면은 k=2인 경우의 예와, k=4인 경우의 예와, k=8인 경우의 예를 나타낸다.
k=2인 경우, 전면 시퀀셜 라이트 시에 할당된 어드레스 중 어드레스 A0, A2, A4,…에 대응하는 블록이 해방된다. k=4인 경우, 전면 시퀀셜 라이트 시에 할당된 어드레스 중 어드레스 A0, A4, A8,…에 대응하는 블록이 해방된다. 또한, k=8인 경우, 전면 시퀀셜 라이트 시에 할당된 어드레스 중 어드레스 A0, A8, A16,…에 대응하는 블록이 해방된다.
k=2, k=4 및 k=8 각각이, 해방된 블록이 속하는 플레인에 의해 나타나면, 다음의 수식 5∼7이 성립된다.
k=2: {P0, P1, P1, P0, P1, P0, P0, P1,…} (5)
k=4: {P0, P1, P1, P0,…} (6)
k=8: {P0, P1,…} (7)
이들 수식 5∼7에 나타내는 바와 같이, 병렬 기록이 가능한 플레인 수의 배수의 주기로 기록이 이루어지더라도, 기록 전 액티브 블록이 특정 플레인에 집중되는 것이 억제된다. 그러나, 어드레스 주기가 순서 규칙의 길이의 배수가 되는 경우(이 예의 경우, k=16)에는, 기록 전 액티브 블록이 특정 플레인에 집중된다.
다음으로, 순서 규칙 연산 유닛(151)에서의 순서 규칙 연산 방법에 대해 설명한다. 순서 규칙 연산 유닛(151)의 형태로서는, 미리 작성된 순서 규칙을 유지하는 테이블을 이용하는 테이블 방식과, 연산에 의해 순서 규칙을 산출하는 연산 방식의 두 가지 방식을 생각할 수 있다.
테이블 방식에서는, 순서 규칙을 갖는 단주기들을 배열하여 작성된 새로운 순서 규칙이 순서 규칙 테이블에 미리 유지된다. 순서 규칙 연산 유닛(151)은 프리 블록 리스트 선택 시, 이 순서 규칙 유지 유닛(153)에서의 위치 정보 Pos가 나타내는 순서 규칙에 따른 순서 시퀀스 상에서의 위치를 참조하여, 프리 블록 리스트의 식별자를 검색한다.
연산 방식은 순서 규칙 연산 유닛(151)이 위치 정보 Pos로부터 연산을 통해 프리 블록 식별자를 생성하여, 순서 규칙을 작성하는 방법이다. 예컨대, 플레인 수가 2, 길이가 16인 순서 규칙의 예에서는 이하의 수식 8에 예시하는 연산으로 플레인을 결정할 수 있다.
수식 8은 프로그램 언어로서 일반적으로 이용되는 C 언어에 기초한 연산 시퀀스를 기술한다. C 언어에서는 2진수 표기는 할 수 없다. 그러나, 수식 8에서는 "0b"를 프리픽스로서 부가하여, "0b"에 후속하는 "0" 및 "1"이 2진수를 나타낸다. 예컨대, "0b10010110"은 16진 표기의 "0x96"과 같아진다. 수식 8에서, 콜론(:)으로 구분된 각 행의 선두에 기술되는 숫자는 각각 행 번호를 나타낸다. 행 번호 "1"∼"5"가 나타내는 5행을 모아 수식 8을 구성한다. 이중 슬래시(//) 다음의 내용은 각 행에 대한 설명이다.
1: pattern=0b10010110; //단주기의 순서를 나타내는 2진수
2: y=pos/2; //단주기의 순서
3: x=pos%2; //단주기들 중에서 단주기의 순서
4: period_id=(pattern>>y)&0b1; //사용되는 단주기
5: plane_id=period_id^x; //단주기 식별자와 단주기 내에서의 순서와의 배타적 논리합 (8)
수식 8에서, 값 pos는 위치 정보를 나타내는 값으로서, 0부터 15까지의 범위 내의 값을 갖는다. 값 period_id는 단주기를 나타내는 값으로서, 값 0은 단주기 A를 나타내고, 값 1은 단주기 B를 나타내는 것으로 한다. 값 plane_id는 이 순서로 선택되는 플레인의 번호를 나타낸다. 수식 8의 예에서는 단주기 A 및 단주기 B에서의 순서 규칙이 5번째 행의 수식으로 표현된다.
다음으로, 병렬 기록이 가능한 플레인의 수가 많은 경우에 대해 설명한다. 병렬 기록이 가능한 플레인 수가 많은 경우, 순서가 변경된 단주기의 수도 증가한다. 이 때, 단주기를 조합하여 순서 규칙을 작성할 경우, 생각할 수 있는 모든 단주기를 사용할 필요는 없다. 또한, 프리 블록 리스트의 선택 시작 위치가 단주기 도중에 있는 경우에, 상이한 단주기들에 걸쳐 프리 블록 리스트를 선택할 수도 있다. 이 경우에도 병렬도를 최대로 유지하도록 단주기를 선택하여 그 단주기를 배열하는 것이 바람직하다.
일례로서, 플레인 수가 8이고, 플레인들 사이의 병렬 기록에 대한 제약이 없는 경우에 대해 고려한다. 이 경우, 생각할 수 있는 단주기의 수는 8이다.
이어지는 수식 9와 수식 10이 나타내는 단주기(플레인에 대응하는 프리 블록 리스트의 식별자가 나타냄)를 수식 9와 수식 10의 순서로 배열하면, 수식 9가 나타내는 단주기와 수식 10이 나타내는 단주기에 걸쳐 프리 블록 리스트를 선택할 경우, 플레인 P7의 프리 블록 리스트가 연속해서 선택된다. 이러한 이유로, 이 2개의 단주기에 걸쳐 병렬 기록이 가능한 블록의 그룹을 선택할 수 없다.
{0, 1, 2, 3, 4, 5, 6, 7} (9)
{7, 0, 1, 2, 3, 4, 5, 6} (10)
그렇게, 단주기가 선택되어 배열되므로, 연속해서 선택되는 위치에서의 프리 블록 리스트의 식별자가 같아지지 않는다. 이에 따라, 프리 블록 리스트의 선택이 단주기에 걸쳐 이루어지는 경우에도 병렬 기록이 가능한 프리 블록의 그룹을 선택할 수 있다.
예컨대, 이하의 수식 11과 수식 12가 나타내는 단주기에 대해 고려한다. 수식 12가 나타내는 순서 규칙은 수식 11이 나타내는 순서 규칙에 대하여, 순서를 7씩 진행시켜 얻은 순서 규칙으로서 생각할 수 있다. 이들 수식 11과 수식 12가 나타내는 단주기를 수식 11과 수식 12의 순서로 배열하면, 연속해서 선택이 이루어지는 수식 11의 말미의 식별자와, 수식 12의 선두의 식별자가 서로 다르다. 그렇기 때문에, 수식 11이 나타내는 단주기와 수식 12가 나타내는 단주기들에 걸쳐 선택이 이루어지는 경우에도, 병렬 기록이 가능한 프리 블록의 그룹을 선택할 수 있다. 단주기들에 걸쳐 선택이 이루어지는 경우에도 병렬도 7로 병렬 기록이 가능한 프리 블록의 그룹을 선택할 수 있다.
{0, 1, 2, 3, 4, 5, 6, 7} (11)
{1, 2, 3, 4, 5, 6, 7, 0} (12)
도 14는 플레인 수가 8(플레인 P0∼플레인 P7)이고 플레인들 간에 병렬 기록에 대한 제약이 없는 경우의 순서 규칙의 예를 나타낸다. 플레인 P0∼P7은 상이한 프리 블록 리스트의 식별자 P0∼P7과 연관된다. 도 14의 예에서는, 식별자 P0을 선두로 이용하고 식별자 P7을 말미로 이용하는 순서 규칙 {P0, P1, P2, P3, P4, P5, P6, P7}에 기초한 단주기 A와, 그 단주기 A에 대해 순서 규칙 상의 순서를 7씩 진행시켜 얻은 단주기 B, C, …, H를 배열하여, 새로운 순서 규칙을 작성한다. 순서 규칙의 상이한 단주기들을 배열함으로써, 프리 블록이 특정 플레인에 집중되는 것을 억제할 수 있다.
도 14의 예에서는, 새로운 순서 규칙에 있어서, 각 단주기 A∼H가 각각 4회씩 반복해서 배열되어, 전체 단주기 수가 32가 되고, 길이는 256이 된다. 이와 같이 같은 단주기를 복수회 반복해서 배열할 수 있다. 같은 단주기가 반복되는 범위에서는 8 병렬 기록이 가능하다.
상이한 단주기들에 걸쳐 프리 블록 리스트가 선택될 때의 병렬도가 최대가 되도록, 개별 단주기 A∼H를 배열하는 것이 바람직하다. 도 14의 예에서는 상이한 단주기들이 서로 인접해 있는 경우, 프리 블록 리스트의 선택 순서로 단주기들의 순서 규칙에서의 순서가 7씩 진행하도록 단주기의 순서 규칙이 작성된다. 이 경우, 단주기들에 걸쳐서 프리 블록 리스트가 선택되는 경우에서도 병렬도 7로 병렬 기록이 가능한 프리 블록 그룹을 선택할 수 있다.
다음으로, 제1 실시형태에 있어서 도 7을 이용하여 설명한 뱅크-칩-플레인 구성에서 병렬 기록에 제약이 있는 경우에 제2 실시형태를 적용한 예에 대해서 설명한다. 이 경우, 전술한 바와 같이, 프리 블록 취득이 시작되는 플레인에 따라 최대 병렬도가 변한다.
도 15는 뱅크-칩-플레인 구성에서의 순서 규칙의 일례를 나타낸다. 도 15의 예에서는, 뱅크 수가 4(B0∼B3)이고, 각 뱅크 내의 칩 수가 2(C0과 C1)이며, 각 칩 내의 플레인 수가 2(P0과 P1)이고, 총 플레인 수가 16이다. 이 경우, 같은 뱅크 내의 상이한 칩에 대해 병렬 기록이 불가능함을 나타내는 제약이 있기 때문에, 최대 병렬도는 8이다.
도 15에 있어서, 각 플레인에 대응하는 프리 블록 리스트의 식별자를, 뱅크 번호, 칩 번호 및 플레인 번호를 조합하여 "B0C0P0"으로서 표현된다.
도 15의 예에 있어서, 단주기 내에서 플레인 번호, 뱅크 번호 및 칩 번호의 순서로 변경하여 각 단주기의 순서 규칙을 작성함으로써, 병렬도를 최대화한다. 예컨대, 단주기 A의 순서 규칙은 {B0C0P0, B0C0P1, B1C0P0, B1C0P1, B2C0P0, B2C0P1, B3C0P0, B3C0P1, B0C1P0, B0C1P1, B1C1P0, B1C1P1, B2C1P0, B2C1P1, B3C1P0, B3C1P1}이다.
도 15에 예시하는 순서 규칙에서는, 도 7을 이용하여 설명한 예와 마찬가지로, 플레인 P0에서부터 프리 블록의 취득이 시작되는 경우에는, 8 병렬 기록이 가능하다. 한편, 플레인 P1로부터 프리 블록의 취득이 시작되는 경우에는, 같은 뱅크 내의 상이한 칩의 플레인 P0과 P1에 대해 병렬 기록이 불가능함을 나타내는 제약이 있기 때문에, 병렬 기록이 7 병렬 기록으로 제한된다.
단주기 A의 뱅크 번호 및 칩 번호를 변경하지 않고 플레인 번호만 변경한 단주기 B를 준비한다. 주기적인 어드레스에 대한 기록으로 인해 특정 뱅크에 프리 블록이 집중되는 것을 막기 위해, 개별 단주기 A와 B에 대해 뱅크 순서가 변경된 단주기 C∼H를 준비한다. 뱅크 순서가 상이한 단주기들에 걸쳐 선택이 이루어지는 경우에 병렬도가 5 또는 6으로 제한되기 때문에, 뱅크 번호 순서가 동일한 단주기를 연속해서 배열하여, 새로운 순서 규칙을 작성한다. 구체적으로, 단주기 A와, 그 단주기 A와 뱅크 번호 순서가 동일한 단주기 B가 연속으로 배열된다. 마찬가지로, 단주기 C 및 단주기 D, 단주기 E 및 단주기 F, 단주기 G 및 단주기 H가 각각 연속으로 배열된다.
이상의 설명에서는, 단주기들이 미리 정해진 횟수만큼 배열되는 순서 규칙을 테이블 방식 또는 연산 방식으로 미리 작성하지만, 본 발명은 이 예에 한정되지 않는다. 예컨대, 난수를 이용하여 순서 규칙을 동적으로 산출할 수도 있다.
도 16의 (a)∼(c)는 2진 난수 시퀀스를 이용하여 순서 규칙을 산출하는 예를 나타낸다. 도 16의 (a)∼(c)의 예에서는, 2진 난수 시퀀스를 이용하여 각 단주기에서 난수의 값이 0이면, 시퀀스 순서가 단주기 A로서 산출되고, 2진 난수 시퀀스를 이용하여 난수의 값이 1이면 시퀀스 순서가 단주기 B로서 산출된다. 순서 규칙을 2진 난수 시퀀스에 따라 산출할 경우, 2진 난수 시퀀스가 의사 난수이면, 순서 규칙의 길이는 "의사 난수의 주기×플레인 수"가 된다. 따라서, 특정 플레인에 속하는 액티브 블록과 연관된 어드레스에 주기성이 존재하더라도, 대응 어드레스의 액티브 블록이 특정 플레인에 집중되는 주기가 매우 길어지나, 이것은 문제가 되지 않는다.
난수를 이용하여 순서 규칙을 산출하는 경우에도, 전술한 경우와 마찬가지로, 순서 규칙 연산 유닛(151)의 형태로서, 테이블 방식과 연산 방식을 생각할 수 있다. 테이블 방식에서는, 순서 규칙 유지 유닛(153)에 난수 테이블을 순서 규칙으로서 유지할 수 있다.
연산 방식의 경우, 순서 규칙 연산 유닛(151)에는 난수 연산기를 준비할 수 있으며, 난수를 이용해 사용될 단주기를 연산할 수 있다. 예컨대, 이하의 수식 13에 나타내는 연산에 의해, 난수에 기초한 플레인을 결정할 수 있다. 수식 13의 각 값과 방식의 의미는 전술한 수식 8의 것과 공통되기 때문에, 여기서는 설명을 반복하지 않는다.
1: y=pos/2; //단주기의 순서
2: x=pos%2; //단주기들 가운데 단주기의 순서
3: period_id=rand()&0b1; //난수에 기초하여, 사용될 단주기를 결정
4: plane_id=period_id^x; //단주기 식별자와 단주기 내에서의 순서와의 배타적 논리합 (13)
제2 실시형태에 따르면, 순서 규칙을 갖는 단주기들을 미리 정해진 순서로 배열하여, 주기가 긴 새로운 순서 규칙을 작성한다. 그렇기 때문에, 호스트 기기로부터의 기록 어드레스에 주기성이 존재하는 경우에도, 프리 블록 리스트들 간에 프리 블록 수 및 액티브 블록 수의 차이를 억제할 수 있다. 또한, 제2 실시형태에서는 단주기 배열 시에 병렬도를 최대가 되도록 구성하기 때문에, 전송 성능이 유지될 수 있다.
<제3 실시형태>
다음에, 본 발명의 제3 실시형태에 대해서 설명한다. 전술한 제2 실시형태에서는, 프리 블록 리스트의 선택 시에 순서 규칙의 주기성을 숨기기 위하여 순서 규칙 유지 유닛에 유지된 순서 규칙을 길게 한다. 제3 실시형태는 위치 정보 갱신 방법을 변경하여 동일한 효과를 달성한다.
제3 실시형태는 현재 상황이 미리 정해진 조건과 일치할 경우 순서 규칙의 소정의 순서를 스킵한다. 순서 규칙의 스킵 조건으로서, 다양한 조건을 적용할 수 있다. 다음으로, 위치 정보 갱신 수가 미리 정해진 수에 도달하는 경우에 순서 규칙을 스킵하는 제1 방법과, 각 플레인마다, 프리 블록 취득 수가 미리 정해진 수에 도달하는 경우에 순서 규칙을 스킵하는 제2 방법에 대하여 설명한다. 순서 규칙의 스킵 조건은, 예컨대 프리 블록 선택 유닛(150)에 대하여 미리 결정된 것으로 한다.
먼저, 위치 정보 갱신 수가 미리 정해진 수에 도달하는 경우에 순서 규칙을 스킵하는 제1 방법에 대하여 도 17을 이용하여 설명한다. 도 17의 흐름도는 전술한 도 5의 흐름도에서의 단계 S17의 프로세스에 대응한다. 도 17의 흐름도는 스킵 프로세스가 추가되어 있다는 점에서 제1 실시형태에서 기술한 도 8의 흐름도와 다르다.
도 17의 흐름도에 있어서, 소정의 시점에서의 위치 정보 갱신 수가 위치 정보 갱신 수 tPos로서 설정되고, 그 초기값은 0으로서 설정된다. 순서 규칙의 스킵 여부를 판정하는데 이용되는 위치 정보 갱신 수 tPos의 임계값은 미리 결정된 값인 스킵 임계값 sPos로서 설정된다. 또한, 도 5의 단계 S16에서 데이터 기록 유닛(133)으로부터 필요한 r개의 프리 블록이 요구되고 순서 규칙이 미리 정해진 순서 규칙으로서 이미 결정되는 것으로 한다.
먼저, 블록 관리 유닛(131)은 위치 정보 기억 유닛(154)으로부터 위치 정보 Pos를 취득하고(단계 S60), 취득된 위치 정보 Pos가 나타내는 위치의 프리 블록 리스트 141m에서 프리 블록의 선택이 시작될 때의 최대 병렬도 q를 계산한다(단계 S61). 최대 병렬도 q의 계산 방법이 도 8의 단계 S31에서 설명한 방법과 공통되기 때문에, 여기서는 설명을 반복하지 않는다.
다음 단계 S62에서, 블록 관리 유닛(131)은 블록 취득 수 rb 및 리스트 선택 횟수 i를 각각 0으로 초기화하고, 프로세스를 단계 S63으로 이행시킨다. 단계 S63에서, 순서 규칙 연산 유닛(151)은 블록 관리 유닛(131)으로부터 전달된 위치 정보 Pos와 미리 정해진 순서 규칙에 따라, 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n으로부터 1 프리 블록 리스트 L(i)을 선택하고, 선택된 프리 블록 리스트 L(i)을 블록 관리 유닛(131)에 반환한다.
블록 관리 유닛(131)은 순서 규칙 연산 유닛(151)으로부터 반환된 프리 블록 리스트 L(i)에 프리 블록이 남아 있는지의 여부를 확인한다. 프리 블록 리스트 L(i)에 프리 블록이 남아 있지 않다고 판정될 경우, 프로세스는 단계 S67로 이행된다.
한편, 단계 S64에서, 프리 블록 리스트 L(i)에 프리 블록이 남아 있다고 판정될 경우, 프로세스는 단계 S65로 이행된다. 단계 S65에서, 프리 블록 선택 유닛(150)은 프리 블록 리스트 L(i)로부터 프리 블록 B(i)를 선택한다. 블록 관리 유닛(131)은 선택된 프리 블록 B(i)를 취득한다. 다음 단계 S66에서, 블록 관리 유닛(131)은 블록 취득 수 rb를 1씩 증가시킨다. 다음 단계 S67에서, 프리 블록 선택 유닛(150)은 리스트 선택 횟수 i를 1씩 증가시키고 리스트 선택 횟수 i를 계수한다.
다음 단계 S68에서, 위치 정보 기억 유닛(154)은 위치 정보 기억 유닛(154)에 유지되어 있는 위치 정보 Pos를, 순서 규칙에 기초한 순서 시퀀스 상에서의 다음 위치를 나타내는 위치 정보 Pos로 갱신한다. 이 때, 다음 위치가 순서 규칙에 기초한 순서 시퀀스 상에서의 최종 위치에서 벗어날 경우에, 위치 정보 갱신 유닛(152)은 다음 위치를 순서 규칙에 기초한 순서 시퀀스의 선두에 설정한다.
위치 정보 Pos가 갱신되면, 프로세스는 단계 S69로 이행되고, 프리 블록 선택 유닛(150)은 위치 정보 갱신 수 tPos를 1씩 증가시킨다. 다음 단계 S70에서, 프리 블록 선택 유닛(150)은 위치 정보 갱신 수 tPos가 스킵 임계값 sPos 이상인지의 여부를 판정한다.
위치 정보 갱신 수 tPos가 스킵 임계값 sPos 이상이라고 판정될 경우, 프로세스는 단계 S71로 이행되고, 위치 정보 갱신 유닛(152)에 의해 위치 정보 갱신 수 tPos가 0으로 초기화되며, 프로세스는 단계 S67에 복귀된다. 단계 S70에서의 판정에 의해 프로세스가 단계 S67로 복귀되고 위치 정보 갱신 수 tPos에 기초한 순서 규칙의 스킵이 실행된다.
한편, 단계 S70에서, 위치 정보 갱신 수 tPos가 스킵 임계값 sPos 미만이라고 판정될 경우, 프로세스는 단계 S72로 이행된다. 단계 S72에서, 블록 관리 유닛(131)은 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하는지의 여부를 판정한다. 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달한다고 판정될 경우, 도 17의 흐름도에 기초한 일련의 프로세스는 종료되고 프로세스는 도 5의 단계 S18에 이행된다.
한편, 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하지 않는다고 판정될 경우, 프로세스는 단계 S73에 이행된다. 단계 S73에서, 블록 관리 유닛(131)은 리스트 선택 횟수 i가 최대 병렬도 q에 도달하는지의 여부를 판정한다. 리스트 선택 횟수 i가 최대 병렬도 q에 도달하지 않는다고 판정될 경우, 프로세스는 단계 S63으로 복귀되고, 다음 프리 블록 리스트 L(i)에 관한 프로세스가 실행된다.
한편, 리스트 선택 횟수 i가 최대 병렬도 q에 도달한다고 판정될 경우에는, 도 17의 흐름도에 기초한 일련의 프로세스가 종료되고, 프로세스는 도 5의 단계 S18로 이행된다.
도 18은 전술한 도 17의 흐름도에 기초한 프로세스에 따라 순서 규칙의 스킵이 이루어지는 예를 나타낸다. 도 18에서, 플레인 수가 8이고, 8 병렬 기록이 가능하다. 원래의 순서 규칙은 단주기 {0, 1, 2, 3, 4, 5, 6, 7}만이 반복되는 순서 시퀀스이다. 도 18은 스킵 임계값 sPos가 32 블록으로서 설정되고 위치 정보 갱신 수 tPos가 32가 되는 경우에, 위치 정보 Pos를 다음 위치로 갱신하고 순서 규칙을 스킵하는 예를 나타낸다.
도 18의 예에서, 원래 순서 규칙의 순서 시퀀스에 있어서 32번째 플레인 P7로부터 프리 블록이 취득되면, 다음 33번째 플레인 P0으로부터의 프리 블록의 취득이 스킵된다. 또한, 위치 정보 갱신 수 tPos가 0으로 초기화되고 위치 정보 갱신 수 tPos의 누적이 재개되며, 위치 정보 갱신 수 tPos가 32가 되면, 위치 정보 Pos는 다음 위치로 갱신되며 순서 규칙이 스킵된다. 이 경우, 원래의 순서 규칙의 순서 시퀀스에서의 66번째 플레인 P1로부터의 프리 블록의 취득이 스킵된다.
구체적으로, 먼저, 원래의 순서 규칙의 순서 시퀀스에서의 32번째 플레인 P7로부터 프리 블록을 취득할 때에, 위치 정보 갱신 수 tPos가 32가 되고, 도 17의 흐름도에 있어서 프로세스가 단계 S70에서 단계 S71을 통해 단계 S67로 복귀된다. 단계 S68에서 위치 정보 Pos가 갱신되고, 단계 S69∼단계 S73의 프로세스를 통해 프로세스는 단계 S63으로 복귀된다. 단계 S70의 판정에 의해 프리 블록의 취득 없이 위치 정보 Pos는 갱신되고, 순서 규칙이 스킵된다.
프리 블록 리스트들 간에 스킵 빈도를 평준화하기 위해서, 스킵 임계값 sPos를 순서 규칙의 길이의 배수로 설정하는 것이 바람직하다. 즉, 스킵 임계값 sPos를 순서 규칙의 길이의 배수로 설정할 경우, 순서 규칙의 길이에 대응하는 수의 프리 블록이 취득된다면, 다음 플레인을 스킵하고, 스킵된 플레인의 다음 플레인으로부터, 다시 순서 규칙의 길이에 해당하는 수의 프리 블록을 취득한다. 이에 따라, 스킵 위치에서 순서 규칙이 1 플레인씩 시프트되고, 블록들 간에 소거 횟수가 평준화된다.
한편, 스킵 임계값 sPos가 (순서 규칙의 길이의 배수)-1로 설정되면, 특정 프리 블록 리스트에서만 스킵이 발생하는데, 이것은 바람직하지 못하다.
다음으로, 제3 실시형태에서의 제2 방법을 도 19의 흐름도를 이용하여 설명한다. 이 방법은 각 플레인마다, 프리 블록 취득 수가 미리 정해진 수에 도달할 때에 순서 규칙을 스킵한다. 도 19의 흐름도에 기초한 프로세스는, 스킵 프로세스가 실행되는 타이밍이 다르다는 점을 제외하고는 전술한 제1 방법에 따른 도 17의 흐름도에 기초한 프로세스와 실질적으로 같다. 즉, 이 제2 방법에서는 각 플레인마다 스킵 빈도를 제어하기 위하여 순서 규칙의 스킵 조건의 결정이 각 플레인마다 실행된다.
이 방법에는 각 프리 블록 리스트 L마다 블록 취득 스코어 t[L]이 도입된다. t[L]은 프리 블록 리스트로부터 블록이 취득될 때 스코어 증가값 w[L] 단위로 증가한다. t[L]이 스킵 임계값 s[L]에 도달하면, 프리 블록 리스트 L의 순서가 스킵된다. 스코어 증가값 w[L], 블록 취득 스코어 t[L], 및 스킵 임계값 s[L]은 각 플레인마다 블록 관리 유닛(131)에 유지된다.
먼저, 블록 관리 유닛(131)은 위치 정보 기억 유닛(154)으로부터 위치 정보 Pos를 취득하고(단계 S80), 취득된 위치 정보 Pos가 나타내는 위치의 프리 블록 리스트 141m에서 프리 블록의 선택이 시작될 때의 최대 병렬도 q를 계산한다(단계 S81). 최대 병렬도 q의 계산 방법은 도 8의 단계 S31에서 설명한 방법과 공통되기 때문에, 여기서는 설명을 반복하지 않는다.
다음 단계 S82에서, 블록 취득 수 rb 및 리스트 선택 횟수 i가 각각 0으로 초기화되고, 프로세스는 단계 S8로 이행된다. 단계 S83에서, 순서 규칙 연산 유닛(151)은 블록 관리 유닛(131)으로부터 전달된 위치 정보 Pos와 미리 정해진 순서 규칙에 따라, 프리 블록 관리 유닛(140)이 관리하는 프리 블록 리스트 1411, 1412, …, 141m, …, 및 141n으로부터 1 프리 블록 리스트 L(i)을 선택하고, 선택된 프리 블록 리스트 L(i)를 블록 관리 유닛(131)에 반환한다.
다음 단계 S84에서, 프리 블록 선택 유닛(150)은 블록 취득 스코어 t[L(i)]와 스킵 임계값 s[L(i)]를 비교하고, 블록 취득 스코어 t[L(i)]가 스킵 임계값 s[L(i)] 이상인지의 여부를 판정한다. 블록 취득 스코어 t[L(i)]가 스킵 임계값 s[L(i)] 이상이라고 판정될 경우, 단계 S93에서, 블록 취득 스코어 t[L(i)]로부터 스킵 임계값 s[L(i)]를 감산하여 얻은 값이 새로운 블록 취득 스코어 t[L(i)]로서 설정되고, 프로세스는 단계 S89로 이행된다. 블록 취득 스코어 t[L(i)]가 스킵 임계값 s[L(i)] 이상이라고 판정될 경우 프로세스가 단계 S89로 이행되기 때문에, 프리 블록 리스트 L(i)에 대응하는 플레인에서 순서 규칙이 스킵된다.
한편, 단계 S84에서, 블록 취득 스코어 t[L(i)]가 스킵 임계값 s[L(i)] 미만이라고 판정될 경우, 프로세스는 단계 S85로 이행된다. 단계 S85에서, 블록 관리 유닛(131)은 순서 규칙 연산 유닛(151)으로부터 반환된 프리 블록 리스트 L(i)에 프리 블록이 남아 있는지의 여부를 확인한다. 프리 블록 리스트 L(i)에 프리 블록이 남아 있지 않다고 판정될 경우, 프로세스는 단계 S89로 이행된다.
한편, 단계 S85에서, 프리 블록 리스트 L(i)에 프리 블록이 남아 있다고 판정될 경우, 프로세스는 단계 S86으로 이행된다. 단계 S86에서, 프리 블록 선택 유닛(150)은 프리 블록 리스트 L(i)로부터 프리 블록 B(i)를 선택한다. 블록 관리 유닛(131)은 선택된 프리 블록 B(i)를 취득한다.
다음 단계 S87에서, 블록 취득 수 rb가 1씩 증가한다. 다음 단계 S88에서, 프리 블록 선택 유닛(150)은 블록 취득 스코어 t[L(i)]에 스코어 증가값 w[L(i)]를 가산하여 얻은 값을 새로운 블록 취득 스코어 t[L(i)]로서 설정한다. 프로세스는 단계 S89로 이행되고, 프리 블록 선택 유닛(150)은 리스트 선택 횟수 i를 1씩 증가시키고 리스트 선택 횟수 i를 계수한다.
다음 단계 S90에서, 위치 정보 갱신 유닛(152)은 위치 정보 기억 유닛(154)에 유지되어 있는 위치 정보 Pos를, 순서 규칙에 기초한 순서 시퀀스 상에서의 다음 위치를 나타내는 위치 정보 Pos로 갱신한다. 이 때, 다음 위치가 순서 규칙에 기초한 순서 시퀀스 상에서의 최종 위치를 벗어날 경우에, 위치 정보 갱신 유닛(152)은 다음 위치를 순서 규칙에 기초한 순서 시퀀스의 선두로서 설정한다.
위치 정보 Pos가 갱신되면, 프로세스는 단계 S91로 이행되고, 블록 관리 유닛(131)은 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하는지의 여부를 판정한다. 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달한다고 판정될 경우, 도 19의 흐름도에 기초한 일련의 프로세스가 종료되고, 프로세스는 도 5의 단계 S18로 이행된다.
한편, 단계 S91에서 블록 취득 수 rb가 필요한 프리 블록 수 r에 도달하지 않는다고 판정될 경우에, 프로세스는 단계 S92에 이행된다. 단계 S92에서, 블록 관리 유닛(131)은 리스트 선택 횟수 i가 최대 병렬도 q에 도달하는지의 여부를 판정한다. 리스트 선택 횟수 i가 최대 병렬도 q에 도달하지 않는다고 판정될 경우, 프로세스는 단계 S83으로 복귀되고, 다음 프리 블록 리스트 L(i)에 관한 프로세스가 실행된다.
한편, 리스트 선택 횟수 i가 최대 병렬도 q에 도달한다고 판정될 경우에는, 도 19의 흐름도에 기초한 일련의 프로세스가 종료되고, 프로세스는 도 5의 단계 S18로 이행된다.
복수의 프리 블록 리스트 L이 동일한 값의 스코어 증가값 w[L]과 스킵 임계값 s[L]을 갖는 경우, 블록 취득 스코어 s[L]의 초기값도 동일한 값(예컨대 0)으로 설정되면, 복수의 프리 블록 리스트의 스킵이 동일한 타이밍에서 이루어지기 때문에, 이것은 바람직하지 못하다. 이러한 이유로, 블록 취득 스코어 s[L]의 초기값은 각 프리 블록 리스트 L마다 상이한 값으로서 설정될 수 있다.
도 20의 (a)와 (b)는 전술한 도 19의 흐름도에 기초한 프로세스에 따라 순서 규칙 상에서의 스킵이 이루어지는 예를 나타낸다. 도 20의 (a)는 플레인 P0∼P7 각각에 설정되는 블록 취득 스코어 t[L]의 초기값과, 스코어 증가값 w[L]과, 스킵 임계값 s[L]을 나타낸다. 도 20의 (b)는 전술한 도 18과 마찬가지로, 플레인 수가 8이고 8 병렬 기록이 가능하며 원래의 순서 규칙이 단주기 {0, 1, 2, 3, 4, 5, 6, 7}만이 반복되는 순서 시퀀스가 되는 예를 나타낸다.
도 20의 (a)의 예에서, 스코어 증가값 w[L]은 1로 고정되고, 스킵 임계값 s[L]은 플레인마다 변할 수 있다. 블록 취득 스코어 t[L]은 각 플레인에서의 프리 블록 취득 수를 나타내고, 스킵 임계값 s[L]은 순서 규칙의 스킵이 발생하는 플레인에서의 프리 블록 취득 수를 나타낸다.
도 20의 (a)의 예에서는, 스킵 임계값 s[L]이 플레인 P6에서만 8로 설정되고, 다른 플레인에서는 32로 설정된다. 그렇기 때문에, 도 20의 (b)에 예시하는 바와 같이, 플레인 P6은 다른 플레인에 대하여 스킵 빈도를 높일 수 있다.도 20의 (b)의 예에서는 플레인 P6에 있어서, 단주기가 16회 반복될 경우 스킵이 2회 발생한다. 한편, 다른 플레인에서는 스킵의 발생 빈도가 1 이하가 된다.
블록 취득 스코어 t[L]의 초기값으로서, 각 플레인마다 상이한 값이 설정될 수 있다. 도 20의 (a)의 예에서는 개별 플레인 P0∼P7에 있어서, 스킵 임계값 s[L](=32)을 플레인 수(=8)로 나누어 얻은 값(=4)만큼 블록 취득 스코어 t[L]의 초기값을 시프트한다. 이에 따라, 플레인 P6을 제외한 7개의 플레인에서는 4 단주기씩 스킵의 단계가 시프트된다. 예컨대, 도 20의 (b)의 예에서는, 플레인 P0의 스킵이 블록 취득 스코어 t[P0]의 초기값 28에 대해 5번째 단주기에서 발생하고, 플레인 P1의 스킵은 블록 취득 스코어 t[P1]의 초기값 24에 대하여 9번째 단주기에서 발생한다. 마찬가지로, 플레인 P2의 스킵은 블록 취득 스코어 t[P2]의 초기값 20에 대해 13번째 단주기에서 발생한다.
도 21의 (a)와 (b)는 전술한 도 20의 (a)와 (b)의 예와는 반대로, 스킵 임계값 s[L]이 고정되고 스코어 증가값 w[L]이 각 플레인마다 변할 수 있는 예를 나타낸다. 도 21의 (a)에 예시하는 바와 같이, 스킵 임계값 s[L]이 100으로 고정되고 오직 플레인 P6의 스코어 증가값 w[L]만이 25가 되며, 다른 플레인의 스코어 증가값은 3이 된다. 블록 취득 스코어 t[L]의 초기값은 스킵 임계값 s[L](=100)을 플레인 수(=8)로 나누어 얻은 값(=12.5)에 기초하여 시프트된다. 이 경우, 스코어 증가값 w[L]이 상승할 때 스킵 빈도가 증가하는 것을 알 수 있다.
제3 실시형태에 따르면, 규칙 순서가 복잡하지 않고 긴 주기를 갖지 않더라도, 순서 규칙의 주기는 길고 불규칙하게 보이며, 프리 블록 리스트의 선택에 있어서의 주기성이 숨겨질 수 있다.
예컨대, 특정 플레인만 총 블록 수나 프리 블록 수가 작은 경우에, 스킵 임계값 s[L]이 작은 값에 설정되거나 스코어 증가값 w[L]이 큰 값에 설정된다면, 프리 블록 취득 빈도를 억제할 수 있다. 이에 따라, 각 블록마다 소거 횟수를 평준화하거나, 또는 각 플레인마다 나머지 프리 블록 수를 평준화하는 것을 기대할 수 있다.
<제3 실시형태의 변형예>
다음에, 제3 실시형태의 변형예에 대해서 설명한다. 제3 실시형태의 변형예는 제2 실시형태와 제3 실시형태를 조합한 예이다. 도 22는 전술한 도 15의 예에 이용되는 것으로서, 뱅크 수가 4이고 각 뱅크 내의 칩 수가 2이며, 각 칩 내의 플레인 수가 2이고 총 플레인 수가 16인 뱅크-칩-플레인 구성이 제3 실시형태의 변형예에 적용된 예를 나타낸다.
제2 실시형태에서 설명한 도 15의 예에서는 뱅크 순서가 변경되는 단주기도 순서 규칙에 포함되기 때문에, 순서 규칙이 매우 길고 복잡하다. 한편, 도 22에 예시하는 제3 실시형태의 변형예에 따른 순서 규칙에서는, 뱅크 순서 변경 효과가 스킵에 의해 실현되기 때문에, 순서 규칙은 2개의 단주기 A와 B를 조합한 단순한 구성을 갖는다.
구체적으로는, 제2 실시형태에서 도 15를 이용하여 설명한 바와 같이, 순서 규칙 연산 유닛(151)은 플레인 번호, 뱅크 번호, 칩 번호의 순서로 단주기를 변경하고, 각각의 단주기의 순서 규칙을 작성한다. 예컨대, 단주기 A의 순서 규칙은 예컨대 {B0C0P0, B0C0P1, B1C0P0, B1C0P1, B2C0P0, B2C0P1, B3C0P0, B3C0P1, B0C1P0, B0C1P1, B1C1P0, B1C1P1, B2C1P0, B2C1P1, B3C1P0, B3C1P1}이 된다. 단주기 B는 단주기 A의 뱅크 번호 및 칩 번호를 변경하지 않고 단주기 A의 플레인 번호만 변경하여 작성된 것이다.
전술한 바와 같이, 순서 규칙 연산 유닛(151)은 테이블 방식, 연산 방식, 또는 난수를 이용한 방식에 의해 얻은 순서대로 단주기 A와 단주기 B를 배열하여 새로운 순서 규칙을 작성한다. 이에 따라, 단주기의 수가 8이고 길이가 128인 순서 규칙이 작성된다.
한편, 전술한 제3 실시형태의 제1 방법 또는 제2 방법에 의해, 프리 블록이 예컨대 128 블록이 취득될 때마다 순서 규칙이 스킵되도록 설정된다. 이런 식으로, 순서 규칙이 스킵될 때마다 뱅크 순서 변경 효과를 실현할 수 있다.
전술한 바와 같이, 호스트 기기로부터 특정 어드레스에 대한 기록이 반복될 경우, 플레인들 간에 프리 블록 취득 횟수의 차이가 억제될 수 있고, 소거 횟수가 특정 블록에 집중되는 것을 피할 수 있다.
가능한 한 많은 플레인에 대해 병렬 기록이 이루어지기 때문에, 복수의 상이한 어드레스에 대한 기록 데이터가 버퍼 메모리에 축적될 경우에, 특정 플레인에 기록이 집중되는 것을 억제할 수 있고, 우수한 전송 성능을 유지할 수 있다.
단주기들이 배열되어 순서 규칙의 주기가 길어진다. 그렇기 때문에, 호스트 기기로부터의 기록 어드레스에 주기성이 존재하는 경우에도, 프리 블록 리스트들 간에 프리 블록 수 및 액티브 블록 수의 차이를 억제할 수 있다. 단주기들이 배열될 경우, 병렬도가 최대로 구현되기 때문에, 전송 성능을 유지할 수 있다.
소정의 실시형태들에 대해서 기술하였지만, 이들 실시형태는 예로만 제시된 것이며, 본 발명의 범위를 한정하려고 의도된 것이 아니다. 사실상, 여기에 설명한 신규한 실시형태들은 다양한 기타 형태로 구현될 수 있으며, 또한, 여기에 설명한 실시형태들의 형태에 있어서 다양한 생략, 대체 및 변경이 본 발명의 기술 사상에서 벗어나지 않고 이루어질 수 있다. 이하의 특허청구범위 및 그 동류는 본 발명의 범위 및 사상 내에 있다면 그러한 형태 또는 변형을 포함하는 것이다.
100: SSD 120: 인터페이스 유닛
121: 버퍼 메모리 122: 비휘발성 메모리 유닛
123: 칩 130: 컨트롤 유닛
131: 블록 관리 유닛 132: 데이터 판독 유닛
133: 데이터 기록 유닛 134: 데이터 관리 유닛
135: NAND 드라이버 140: 프리 블록 관리 유닛
1411∼141n: 프리 블록 리스트 150: 프리 블록 선택 유닛
151: 순서 규칙 연산 유닛 152: 위치 정보 갱신 유닛
153: 순서 규칙 유지 유닛 154: 위치 정보 기억 유닛

Claims (15)

  1. 삭제
  2. 메모리 시스템에 있어서,
    각각 데이터 소거 단위인 복수의 블록을 각각 포함하는 복수의 기억 영역을 포함하며, 상이한 기억 영역에 포함된 블록에 대해 병렬 기록이 가능하도록 구성되는 비휘발성 메모리와,
    유효 데이터가 기억되어 있지 않은 블록인 프리 블록(free block)을 나타내는 프리 블록 리스트를 각 기억 영역마다 유지하는 관리 유닛과,
    상기 프리 블록 리스트의 순서를 결정하는데 이용되는 정보인 순서 규칙을 유지하는 순서 규칙 유지 유닛과,
    상기 순서 규칙에서 상기 프리 블록 리스트의 위치를 나타내는 위치 정보를 기억하는 위치 정보 기억 유닛과,
    상기 위치 정보가 나타내는 위치에 대응하는 프리 블록 리스트를 선택하는 리스트 선택 유닛과,
    상기 리스트 선택 유닛이 선택한 프리 블록 리스트로부터 프리 블록을 선택하는 블록 선택 유닛과,
    상기 블록 선택 유닛이 선택한 프리 블록에 데이터를 기록하는 기록 유닛과,
    상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택된 후에, 상기 위치 정보 기억 유닛에 기억된 위치 정보를, 후속해서 선택되는 프리 블록 리스트의 위치를 나타내는 위치 정보로 갱신하는 갱신 유닛
    을 포함하고,
    상기 블록 선택 유닛은 상기 프리 블록의 선택 시에, 상기 블록 선택 유닛에서 결정된 미리 정해진 조건이 만족될 경우, 프리 블록의 선택을 스킵하고,
    상기 갱신 유닛은 상기 블록 선택 유닛이 상기 프리 블록의 선택을 스킵할 경우에 상기 위치 정보를 추가적으로 갱신하는 것인 메모리 시스템.
  3. 제2항에 있어서, 상기 블록 선택 유닛은 상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택된 횟수를 각 프리 블록 리스트마다 계수하고, 상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택되고 그 선택된 리스트를 계수한 횟수가 임계값 이상인 경우에, 프리 블록 리스트에서의 프리 블록의 선택을 스킵하는 것인 메모리 시스템.
  4. 제2항에 있어서, 상기 블록 선택 유닛은 상기 갱신 유닛이 상기 위치 정보를 갱신한 횟수를 계수하고, 계수된 횟수가 임계값 이상인 경우에 상기 프리 블록의 선택을 스킵하는 것인 메모리 시스템.
  5. 제2항에 있어서, 상기 위치 정보 기억 유닛은, 복수의 상이한 순서 규칙을 이용하여 작성된 장주기 순서 규칙에 기초하여 결정된 프리 블록 리스트의 순서를 나타내는 위치 정보를 기억하는 것인 메모리 시스템.
  6. 제5항에 있어서, 상기 리스트 선택 유닛은 상기 복수의 상이한 순서 규칙과 상기 위치 정보를 이용한 연산을 통해 프리 블록 리스트를 선택하는 것인 메모리 시스템.
  7. 제5항에 있어서, 상기 순서 규칙 유지 유닛은 미리 작성된 장주기 순서 규칙을 유지하고,
    상기 리스트 선택 유닛은 상기 순서 규칙 유지 유닛에 유지되는 장주기 순서 규칙을 참조하여, 프리 블록 리스트를 선택하는 것인 메모리 시스템.
  8. 제5항에 있어서, 상기 리스트 선택 유닛은 난수를 이용하여 동적으로 상기 장주기 순서 규칙을 작성하고, 작성된 장주기 순서 규칙을 이용하여 프리 블록 리스트를 선택하는 것인 메모리 시스템.
  9. 메모리 시스템에 있어서,
    각각 데이터 소거 단위인 복수의 블록을 각각 포함하는 복수의 기억 영역을 포함하고, 상이한 기억 영역에 포함된 블록에 대해 병렬 기록이 가능하도록 구성되는 비휘발성 메모리와,
    유효 데이터가 기억되어 있지 않은 블록인 프리 블록을 나타내는 프리 블록 리스트를 각 기억 영역마다 유지하는 관리 유닛과,
    상기 프리 블록 리스트의 순서를 결정하는데 이용되는 정보인 순서 규칙을 유지하는 순서 규칙 유지 유닛과,
    상기 순서 규칙에서 상기 프리 블록 리스트의 위치를 나타내는 위치 정보를 기억하는 위치 정보 기억 유닛과,
    상기 위치 정보가 나타내는 위치에 대응하는 프리 블록 리스트를 선택하는 리스트 선택 유닛과,
    상기 리스트 선택 유닛이 선택한 프리 블록 리스트로부터 프리 블록을 선택하는 블록 선택 유닛과,
    상기 블록 선택 유닛이 선택한 프리 블록에 데이터를 기록하는 기록 유닛과,
    상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택된 후에, 상기 위치 정보 기억 유닛에 기억된 위치 정보를, 후속해서 선택되는 프리 블록 리스트의 위치를 나타내는 위치 정보로 갱신하는 갱신 유닛
    을 포함하고,
    상기 위치 정보 기억 유닛은 복수의 상이한 순서 규칙을 이용하여 작성된 장주기 순서 규칙에 기초하여 결정된 각 프리 블록 리스트의 순서를 나타내는 위치 정보를 기억하는 것인 메모리 시스템.
  10. 제9항에 있어서, 상기 블록 선택 유닛은 상기 프리 블록의 선택 시에, 상기 블록 선택 유닛에서 결정된 미리 정해진 조건이 만족될 경우, 프리 블록의 선택을 스킵하고,
    상기 갱신 유닛은 상기 블록 선택 유닛이 상기 프리 블록의 선택을 스킵할 경우에 상기 위치 정보를 추가적으로 갱신하는 것인 메모리 시스템.
  11. 제10항에 있어서, 상기 블록 선택 유닛은 상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택된 횟수를 각 프리 블록 리스트마다 계수하고, 상기 리스트 선택 유닛에 의해 프리 블록 리스트가 선택되고 그 선택된 리스트를 계수한 횟수가 임계값 이상인 경우에, 프리 블록 리스트에서의 프리 블록의 선택을 스킵하는 것인 메모리 시스템.
  12. 제10항에 있어서, 상기 블록 선택 유닛은 상기 갱신 유닛이 상기 위치 정보를 갱신한 횟수를 계수하고, 계수된 횟수가 임계값 이상인 경우에 상기 프리 블록의 선택을 스킵하는 것인 메모리 시스템.
  13. 제9항에 있어서, 상기 리스트 선택 유닛은 상기 복수의 상이한 순서 규칙과 상기 위치 정보를 이용한 연산을 통해 프리 블록 리스트를 선택하는 것인 메모리 시스템.
  14. 제9항에 있어서, 상기 순서 규칙 유지 유닛은 미리 작성된 장주기 순서 규칙을 유지하고,
    상기 리스트 선택 유닛은 상기 순서 규칙 유지 유닛에 유지되는 장주기 순서 규칙을 참조하여, 프리 블록 리스트를 선택하는 것인 메모리 시스템.
  15. 제9항에 있어서, 상기 리스트 선택 유닛은 난수를 이용하여 동적으로 상기 장주기 순서 규칙을 작성하고, 작성된 장주기 순서 규칙을 이용하여 프리 블록 리스트를 선택하는 것인 메모리 시스템.
KR1020110013664A 2010-02-26 2011-02-16 메모리 시스템 KR101277382B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2010-043299 2010-02-26
JP2010043299A JP4987997B2 (ja) 2010-02-26 2010-02-26 メモリシステム

Publications (2)

Publication Number Publication Date
KR20110098623A KR20110098623A (ko) 2011-09-01
KR101277382B1 true KR101277382B1 (ko) 2013-06-20

Family

ID=44490625

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110013664A KR101277382B1 (ko) 2010-02-26 2011-02-16 메모리 시스템

Country Status (5)

Country Link
US (1) US8583856B2 (ko)
JP (1) JP4987997B2 (ko)
KR (1) KR101277382B1 (ko)
CN (1) CN102169461B (ko)
TW (1) TWI464586B (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5609683B2 (ja) * 2011-01-31 2014-10-22 ソニー株式会社 メモリ装置およびメモリシステム
JP6139065B2 (ja) * 2012-05-31 2017-05-31 株式会社東芝 映像処理装置及び映像処理方法
JP6041610B2 (ja) * 2012-10-02 2016-12-14 キヤノン株式会社 情報処理装置及びその制御方法、並びに、そのプログラムと記憶媒体
TWI479492B (zh) * 2012-11-20 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
CN103034603B (zh) * 2012-12-07 2014-06-18 天津瑞发科半导体技术有限公司 多通道闪存卡控制装置及其控制方法
JP5994647B2 (ja) * 2013-01-11 2016-09-21 三菱電機株式会社 データ記録装置、及びデータ記録方法
JP5804584B1 (ja) * 2014-10-30 2015-11-04 ウィンボンド エレクトロニクス コーポレーション Nand型フラッシュメモリのプログラム方法
CN105117169B (zh) * 2015-08-20 2018-07-06 浪潮(北京)电子信息产业有限公司 一种优化的磁盘空间管理的方法及装置
JP6414852B2 (ja) * 2015-12-14 2018-10-31 東芝メモリ株式会社 メモリシステムおよび制御方法
KR102601211B1 (ko) 2016-06-01 2023-11-10 삼성전자주식회사 빠른 재사용 메모리 블록 검출 방법 및 이를 이용한 메모리 블록 관리 방법
KR101963629B1 (ko) * 2016-07-07 2019-03-29 고려대학교 산학협력단 메모리 관리 시스템 및 그 방법
JP7010667B2 (ja) * 2017-11-06 2022-01-26 キオクシア株式会社 メモリシステムおよび制御方法
US11126368B2 (en) * 2019-04-30 2021-09-21 Western Digital Technologies, Inc. Systems and methods for finding a last good page in NAND open block
US11599298B1 (en) * 2021-09-23 2023-03-07 Western Digital Technologies, Inc. Storage system and method for prediction-based pre-erase of blocks to improve sequential performance

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122923A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP2007334413A (ja) * 2006-06-12 2007-12-27 Sony Corp 記憶装置
KR20090106421A (ko) * 2008-02-29 2009-10-08 가부시끼가이샤 도시바 메모리 시스템
KR20090117937A (ko) * 2008-03-01 2009-11-16 가부시끼가이샤 도시바 메모리 시스템

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994002898A1 (en) * 1992-07-24 1994-02-03 Microsoft Corporation Computer method and system for allocating and freeing memory
US5623654A (en) * 1994-08-31 1997-04-22 Texas Instruments Incorporated Fast fragmentation free memory manager using multiple free block size access table for a free list
CN100343826C (zh) * 2003-04-29 2007-10-17 华为技术有限公司 一种实现内存管理的方法
US9213627B2 (en) * 2005-12-21 2015-12-15 Nxp B.V. Non-volatile memory with block erasable locations
WO2007081638A2 (en) * 2005-12-21 2007-07-19 Sandisk Corporation Non-volatile memories and methods with adaptive file handling in a directly mapped file storage system
JP4171749B2 (ja) * 2006-04-17 2008-10-29 Tdk株式会社 メモリコントローラおよびフラッシュメモリシステム
WO2008087634A1 (en) * 2007-01-18 2008-07-24 Sandisk Il Ltd. A method and system for facilitating fast wake-up of a flash memory system
JP5010505B2 (ja) * 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
US20090271564A1 (en) * 2008-04-25 2009-10-29 Hitachi, Ltd. Storage system
CN101339808B (zh) * 2008-07-28 2011-02-09 华中科技大学 存储块的擦除方法及装置
CN101354681B (zh) * 2008-09-23 2010-12-01 美商威睿电通公司 存储器系统、非易失性存储器的磨损均衡方法及装置
US20100174845A1 (en) * 2009-01-05 2010-07-08 Sergey Anatolievich Gorobets Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques
JP4666080B2 (ja) * 2009-02-09 2011-04-06 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000122923A (ja) * 1998-07-13 2000-04-28 Sony Corp 記録装置および記録方法、再生装置および再生方法、記録媒体、並びにプログラム記録媒体
JP2007334413A (ja) * 2006-06-12 2007-12-27 Sony Corp 記憶装置
KR20090106421A (ko) * 2008-02-29 2009-10-08 가부시끼가이샤 도시바 메모리 시스템
KR20090117937A (ko) * 2008-03-01 2009-11-16 가부시끼가이샤 도시바 메모리 시스템

Also Published As

Publication number Publication date
JP2011180773A (ja) 2011-09-15
TWI464586B (zh) 2014-12-11
US20110213913A1 (en) 2011-09-01
US8583856B2 (en) 2013-11-12
KR20110098623A (ko) 2011-09-01
CN102169461B (zh) 2014-01-08
TW201205289A (en) 2012-02-01
CN102169461A (zh) 2011-08-31
JP4987997B2 (ja) 2012-08-01

Similar Documents

Publication Publication Date Title
KR101277382B1 (ko) 메모리 시스템
US8261041B2 (en) Memory management device for accessing cache memory or main memory
JP5603997B2 (ja) ストレージ装置及びデータ制御方法
US20130232296A1 (en) Memory system and control method of memory system
Lee et al. FAST: An efficient flash translation layer for flash memory
US8825946B2 (en) Memory system and data writing method
KR20040023643A (ko) 플래시 메모리장치 및 그것에 기억된 데이터의 머지방법
US20140181378A1 (en) Control device, control method, and program
US8112589B2 (en) System for caching data from a main memory with a plurality of cache states
JP2013097416A (ja) 記憶装置および計算機
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
CN110532200B (zh) 一种基于混合内存架构的内存系统
US9870826B2 (en) Memory apparatus and data access method thereof by using multiple memories for lifetime extension
TWI450271B (zh) 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
JP2004151962A (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
JP6050794B2 (ja) フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置
JP6618941B2 (ja) 管理装置、情報処理装置および管理方法
JP2013196161A (ja) 半導体記憶装置の制御方法
KR20200126155A (ko) 명령 머지 동작을 수행하는 반도체 메모리 장치 및 그 동작 방법
KR100998212B1 (ko) Nand 플래시 메모리의 버퍼 접근 방법
JP4434171B2 (ja) メモリコントローラ及びフラッシュメモリシステム
KR20160057296A (ko) 링크드 리스트 어레이 하드웨어를 포함하는 장치와 이를 포함하는 시스템
JP2013200726A (ja) 半導体記憶装置
JP5694212B2 (ja) 管理情報生成方法およびメモリシステム
JPH0282332A (ja) 索引ファイルのインデックス用入出力バッファ方式

Legal Events

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

Payment date: 20160520

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee