KR101269366B1 - 메모리 시스템 및 메모리 시스템의 제어 방법 - Google Patents

메모리 시스템 및 메모리 시스템의 제어 방법 Download PDF

Info

Publication number
KR101269366B1
KR101269366B1 KR1020117018641A KR20117018641A KR101269366B1 KR 101269366 B1 KR101269366 B1 KR 101269366B1 KR 1020117018641 A KR1020117018641 A KR 1020117018641A KR 20117018641 A KR20117018641 A KR 20117018641A KR 101269366 B1 KR101269366 B1 KR 101269366B1
Authority
KR
South Korea
Prior art keywords
free block
chip
plane
block management
margin
Prior art date
Application number
KR1020117018641A
Other languages
English (en)
Other versions
KR20110107845A (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 KR20110107845A publication Critical patent/KR20110107845A/ko
Application granted granted Critical
Publication of KR101269366B1 publication Critical patent/KR101269366B1/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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • 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
    • 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/7211Wear leveling

Abstract

동일한 뱅크 번호, 동일한 칩 번호, 및 동일한 플레인 번호를 갖는 논리 블록을 프리 블록으로서 각각 관리하기 위한 복수의 프리 블록 관리 리스트들, 및 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여 선택된 프리 블록 관리 리스트들로부터 프리 블록을 취득하는 프리 블록 선택 유닛이 제공되어, 기록 효율을 향상시킨다.

Description

메모리 시스템 및 메모리 시스템의 제어 방법{MEMORY SYSTEM AND METHOD OF CONTROLLING MEMORY SYSTEM}
본 발명은, 비휘발성 반도체 메모리를 포함하는 메모리 시스템에 관한 것이다.
비휘발성 반도체 메모리의 예들로서, NAND형 플래시 메모리와 동일한 방식으로, 데이터를 기억하는 경우에 블록 단위로 한번 데이터를 소거하고 나서 기록을 수행하는 비휘발성 반도체 메모리, 및 페이지 단위로 기록 및 판독을 수행하는 비휘발성 반도체 메모리와 같은, 소거, 기록, 및 판독의 단위가 고정되어 있는 비휘발성 반도체 메모리들을 포함한다.
한편, 퍼스널 컴퓨터(PC)와 같은 호스트 기기가 하드 디스크와 같은 2차 기억 장치에 데이터를 기록하고, 2차 기억 장치로부터 데이터를 판독하는 단위를 섹터라고 부른다. 섹터는, 반도체 기억 장치의 소거, 기록, 및 판독의 단위와는 독립적으로 정해진다. 통상, 호스트 기기의 섹터의 크기(섹터 크기)는, 비휘발성 반도체 메모리의 블록의 크기(블록 크기) 또는 페이지의 크기(페이지 크기)보다 작다.
따라서, 비휘발성 반도체 메모리를 이용하여 하드 디스크와 같은 PC의 2차 기억 장치가 구성되는 경우, 호스트 기기로서의 PC로부터의 작은 크기의 데이터를, 비휘발성 반도체 메모리의 블록 크기 및 페이지 크기에 그 크기를 적합화시킴으로써 기록할 필요가 있다.
PC와 같은 호스트 기기에 의하여 기록된 데이터는, 시간적 국소성 및 영역적 국소성 모두를 갖는다(예컨대, 비특허 문헌 1: David A. Patterson과 John L. Hennessy, "Computer Organization and Design : The Hardware/Software Interface", Morgan Kaufmann Pub, 2004/8/31 참조). 따라서, 데이터가 기록될 때, 외부에서 지정된 어드레스에 데이터가 직접 기록되면, 특정한 영역에 재기록, 즉 소거 처리가 일시적으로 집중되어, 소거 횟수의 치우침이 증가된다. 그러므로, NAND형 플래시 메모리에서, 데이터 갱신 개소들을 균등하게 분산시키는 웨어 레벨링(wear leveling)이라고 불리는 처리가 수행된다. 웨어 레벨링 처리에서, 예컨대 호스트 기기로부터 지정된 논리 어드레스는, 데이터 갱신 개소가 균등하게 분산되는 비휘발성 반도체 메모리의 물리 어드레스로 변환된다.
NAND형 플래시 메모리를 이용하여 대용량의 2차 메모리 장치가 구성되는 경우, 어드레스 변환을 수행할 때 데이터 관리의 단위가 작으면(예컨대, 페이지 크기), 관리 테이블의 크기는 커지고, 2차 메모리 장치의 컨트롤러의 주 기억 메모리에 수용될 수 없어, 어드레스 변환이 고속으로 수행될 수 없다는 문제점이 발생된다. 따라서, 2차 메모리 장치로서의 NAND형 플래시 메모리의 용량이 커지기 때문에, 관리 테이블의 크기가 따라서 커지고, 따라서 관리 테이블의 용량을 가능한 많이 감소시키는 방법이 요망되고 있다.
본 발명의 일 태양에 따르면, 복수의 메모리 칩들을 포함하는 복수의 채널 병렬 동작 요소들을 갖는 비휘발성 반도체 메모리로서, 각 메모리 칩은 병렬로 동작할 수 있는 복수의 플레인(plane)들로 분할되고, 각 플레인은 데이터 소거 단위로서의 복수의 물리 블록들을 포함하고, 병렬로 동작된 각 채널 병렬 동작 요소들에서의 메모리 칩들은, 채널 병렬 동작 요소들에 걸쳐 각각이 레디/비지(ready/busy) 신호를 공유하는 복수의 뱅크들로 분할되는 것인 상기 비휘발성 반도체 메모리; 및 병렬로 동작된 채널 병렬 동작 요소들로부터 선택된 물리 블록들과 연관된 논리 블록에 기초하여 프리 블록을 관리하고, 플레인들, 뱅크들, 또는 채널 병렬 동작 요소들에 의한 병렬 동작을 제어하는 컨트롤러를 포함하고, 상기 컨트롤러는, 동일한 뱅크 번호, 동일한 칩 번호, 및 동일한 플레인 번호를 갖는 논리 블록들이 프리 블록들로서 각각 관리되는 복수의 프리 블록 관리 리스트들; 및 상기 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 선택된 프리 블록 관리 리스트들로부터 프리 블록을 취득하는 프리 블록 선택 유닛을 포함한다.
도 1은 SSD의 구성예의 블록도이다.
도 2는 NAND 컨트롤러와 NAND 메모리 간의 접속 모드를 도시하는 도면이다.
도 3은 NAND 컨트롤러의 내부 구성예의 블록도이다.
도 4는 NAND 메모리의 물리적 구성을 도시한 도면이다.
도 5는 프로세서의 기능 구성예의 블록도이다.
도 6은 데이터 관리 유닛의 기능 구성의 블록도이다.
도 7은 뱅크들에 의한 병렬 동작이 없는 비교예에서의 논리 블록 구성의 개념도이다.
도 8은 뱅크들에 의한 병렬 동작이 있는 비교예에서의 논리 블록 구성의 개념도이다.
도 9는 본 발명의 제1 실시예에 따른 FB 관리 유닛의 구성예를 도시하는 도면이다.
도 10은 FB 관리 리스트를 도시한 도면이다.
도 11은 제1 실시예에 따른 논리 블록의 구성의 개념도이다.
도 12는 리저브 영역(reserve area)과 마진 영역(margin area)의 개념도이다.
도 13은 본 발명의 제2 실시예에 따른 FB 관리 유닛의 구성예를 도시하는 도면이다.
도 14는 마진 테이블을 도시하는 도면이다.
도 15는 플레인 마진들과 칩 마진들의 설명도이다.
도 16은 본 발명의 제3 실시예에 따른 배속 우선도 모드의 제어 과정의 흐름도이다.
도 17은 마진 테이블의 등록 데이터의 예를 설명하는 도면이다.
도 18은 제3 실시예에 따른 뱅크 우선도 모드의 제어 과정의 흐름도이다.
도 19는 본 발명의 제4 실시예에 따른 PC의 외관의 사시도이다.
도 20은 제4 실시예에 따른 PC의 기능 구성예를 도시하는 도면이다.
플래시 메모리의 셀들의 열화에 관해서는, 호스트 기기로부터의 기록 데이터량에 대하여 필요한 플래시 메모리의 블록의 소거량이 중요한 요인이 된다. 호스트 기기로부터의 기록 데이터량에 대한 블록의 소거량을 기록 효율이라고 칭하고, 그 값이 작을 수록 더 좋다. 통상, NAND형 플래시 메모리에서, 블록의 소거 처리 및 기록 처리에 긴 시간을 요한다. 따라서, 기록 효율이 나쁘다라는 것은, 호스트 기기로부터의 데이터 기록량에 대하여 블록의 소거와 소거된 블록에의 기록이 많다는 것을 의미하고, 결과적으로 플래시 메모리의 속도 성능이 나빠진다. 이와 같이, 플래시 메모리에 대한 기록 데이터량을, 블록의 소거량에 가깝게 하여 기록 효율을 향상시키기 위한 방법이 요망되어 왔다.
따라서, 소거 단위인 복수의 물리 블록들이 조합된 가상 블록의 개념을 도입하여(예컨대, 특허 문헌 1: 일본 특허 공표 제2007-517325호 공보 참조), 가상 블록 단위들로 병렬로 소거/기록/판독을 수행함으로써, 기록 효율의 향상과 병렬 처리에 의한 고속화가 실현된다.
그러나, 물리 블록들에 의한 가상 블록의 구성 방법, 즉 물리 블록들의 조합 방법은 제약이 있다. 가상 블록의 크키가 너무 크면, 소량의 데이터를 기억하고자 하여도 너무 많은 물리 블록들이 쓸데없이 사용되어, 기록 효율이 열화된다.
본 발명에 따른 메모리 시스템의 예시적인 실시예들을 첨부된 도면들을 참조하여 이하에 상세히 설명한다. 본 발명은 본 실시예들에 한정되지 않는다.
[제1 실시예]
도 1은, SSD(solid state drive)(100)의 구성예의 블록도이다. SSD(l00)는, 컨트롤러로서의 드라이브 제어 회로(4), 비휘발성 반도체 메모리로서의 NAND형 플래시 메모리(이하, "NAND 메모리")(10), 비휘발성 반도체 메모리로서의 DRAM(dynamic random access memory)(20), 및 ATA 인터페이스(ATA I/F, advanced technology attachment interface)(2)와 같은 메모리 접속 인터페이스를 포함한다. SSD(l00)는, ATA I/F(2)를 통해 PC 혹은 CPU(central processing unit) 코어와 같은 호스트 기기(이하, "호스트")(1)에 접속되어, 호스트 기기(1)의 외부 메모리로서 기능한다.
NAND 메모리(10)는, 호스트(1)에 의해서 지정된 사용자 데이터를 기억하고, DRAM(20)으로 관리되는 관리 정보를 백업용으로 기억한다. NAND 메모리(10)는, 복수의 메모리 셀들이 매트릭스로 배열된 메모리 셀 어레이를 갖고, 개개의 메모리 셀은 상위 페이지와 하위 페이지를 사용함으로써 다중값들을 기억할 수 있다. NAND 메모리(10)는 복수의 메모리 칩들을 포함하고, 각 메모리 칩은, 데이터 소거의 단위인 복수의 물리 블록들을 배열하여 구성된다. NAND 메모리(10)는 각 물리 페이지마다 데이터를 기록하고 판독한다. 물리 블록은 복수의 물리 페이지들을 포함한다. 도 1에서, NAND 메모리(10)는, 4개 채널들(4ch : ch0 내지 ch3)을 통해, 드라이브 제어 회로(4)에서의 NAND 컨트롤러(113)에 병렬 접속되어 있고, 4개 채널 병렬 동작 요소들(10a 내지 10d)을 병렬 동작시킬 수 있다. 채널수는 4개에 한하지 않고, 임의수의 채널들이 사용될 수 있다.
DRAM(20)은, 데이터 전송용, 관리 정보 기억용 또는 작업 영역용 기억 유닛으로서 사용된다. 구체적으로는, 데이터 전송용의 기억 유닛(데이터 전송용 캐시)으로서, DRAM(20)은, 호스트(1)로부터 기록 요청된 데이터를 NAND 메모리(10)에 기록하기 전에 이 데이터를 일시적으로 기억하고, 또는 호스트(1)로부터 판독 요청된 데이터를 NAND 메모리(10)로부터 판독하여 이 데이터를 일시적으로 기억하기 위하여 사용된다. 관리 정보 기억용 기억 유닛으로서, DRAM(20)은, NAND 메모리(10)에 기억될 데이터의 위치를 관리하기 위한 관리 정보(NAND 메모리(10)에 기억된 각종 관리 테이블들이 기동시에 로딩된 마스터 테이블, 관리 테이블의 변경 및 차분 정보인 로그 등)를 기억하기 위하여 사용된다.
드라이브 제어 회로(4)는, 호스트(1)와 NAND 메모리(10) 간에 DRAM(20)을 통해 데이터 전송 제어를 수행하고, SSD(100) 내의 각 구성 요소들을 제어한다.
드라이브 제어 회로(4)는, 데이터 액세스 버스(101) 및 회로 제어 버스(102)를 포함한다. 회로 제어 버스(102)에는, 드라이브 제어 회로(4) 전체를 제어하는 프로세서(104)가 접속되어 있다. 회로 제어 버스(102)에는, NAND 메모리(10)에 기억된 각 관리 프로그램들(FW: 펌웨어)을 부팅하는 부트 프로그램이 기억된 부트 ROM(l05)이 ROM 컨트롤러(106)를 통해 접속되어 있다.
ATA 인터페이스 컨트롤러(ATA 컨트롤러)(111), NAND 컨트롤러(113), 및 DRAM 컨트롤러(114)는, 데이터 액세스 버스(101)와 회로 제어 버스(102)의 양측에 접속되어 있다. ATA 컨트롤러(11l)는 ATA 인터페이스(2)를 통해 호스트(1)에 및 호스트(1)로부터 데이터를 전송한다. 데이터 액세스 버스(101)에는, 데이터 작업 영역 및 펌웨어 전개 영역으로서 사용되는 SRAM(static random access memory)(l15)이 SRAM 컨트롤러(116)를 통해 접속되어 있다. NAND 메모리(10)에 기억된 펌웨어가 기동시, 펌웨어는 부트 ROM(l05)에 기억된 부트 프로그램에 의해서 SRAM(115)에 전송된다.
DRAM 컨트롤러(114)는, 프로세서(104)와 DRAM(20) 간의 인터페이스 처리 등을 실행한다. NAND 컨트롤러(113)는, 프로세서(104)와 NAND 메모리(10) 간의 인터페이스 처리, NAND 메모리(10)와 DRAM(20) 간의 데이터 전송 제어, 에러 정정 코드의 인코드/디코드 처리 등을 실행한다.
도 2는, NAND 컨트롤러(113)와 NAND 메모리(10) 간의 접속 모드를 도시한다. NAND 메모리(10)는, 채널 병렬 동작 요소들(10a 내지 1Od)을 포함한다. 각 채널 병렬 동작 요소들(1Oa 내지 1Od)은, 뱅크 인터리브를 수행할 수 있는 복수의 뱅크들(도 2에서, 4개의 뱅크들, 뱅크 0 내지 뱅크 3)을 포함하고, 각 채널 병렬 동작 요소들(1Oa 내지 1Od) 내의 각 뱅크는, 복수의 메모리 칩들(도 2에서, 2개의 메모리 칩들, 칩 0 및 칩 1)을 포함한다.
도 2에 도시된 바와 같이, NAND 컨트롤러(113)는 복수의 채널들을 포함하고, 각 채널은 각 뱅크에 대하여 컨트롤 I/O 신호(Ctrl I/O)를 공유하는 메모리 칩들을 4개의 칩 인에이블 신호들(CE)에 의하여 개별적으로 제어한다. NAND 컨트롤러(113)는 채널들에 걸쳐 4개의 레디/비지(ready/busy) 신호들(RyBy)을 공유하여, 레디/비지 신호(RyBy)를 공유하는 각 채널의 메모리 칩들이 동시에 동작하도록 제어한다. 레디/비지 신호(RyBy)를 공유하는 메모리 칩군을 뱅크라고 부르고, 복수의 뱅크들은 독립적으로 기록/판독/소거 동작들을 수행할 수 있다.
도 3은 NAND 컨트롤러(113)의 내부 구성예이다. NAND 컨트롤러(113)는, 각 채널이 독립적으로 동작하도록, DMA 컨트롤러(DMAC)(50), 오류 정정 회로(ECC)(51), 및 커맨드 발행을 하는 NAND 인터페이스(NAND I/F)(52)를 포함한다. 각 NAND I/F(52)에는, 4개 뱅크들에 대한 CE 신호(CE0 내지 CE3) 제어선들이 접속되어, 액세스될 뱅크에 대응하는 CE 신호들(CE0 내지 CE3)을 제어한다. NAND 컨트롤러(113)는, 4개 뱅크들을 독립적으로 동작시키기 위해서, 각 뱅크마다 공통 접속된 RyBy 신호를 감시하여 뱅크의 상태를 제어하는 4개의 뱅크 컨트롤러들(BANK-C)(53)을 포함한다. BANK-C(53)는, 각 뱅크들에 대한 요청들을 큐잉(queuing)하는 기능을 가져, 각 뱅크에 대하여 요청이 있는 경우 채널의 사용권을 확보하여, 자신의 BANK-C(53)에 의하여 관리되는 뱅크에 대한 판독/기록/소거 요청들을 실행한다.
도 4는, NAND 메모리(10)의 상세한 내부 구성을 설명한다. 도 4에서, 채널수를 (M+1)개로서 나타내고, 뱅크수를 N+1개로서 나타내고, 칩수를 K+1개로서 나타낸다. 도 4에 도시된 바와 같이, 예컨대 각 메모리 칩들(칩 0 내지 칩 K)은, 각각이 복수의 물리 블록들을 포함하는 플레인 O 및 플레인 1의 2개의 영역(district)들로 분할되어 있다. 플레인 0 및 플레인 1은, 서로 독립된 주변 회로들(예컨대, 로우 디코더, 컬럼 디코더, 페이지 버퍼, 및 데이터 캐시)을 포함하고, 배속 모드를 사용함으로써 소거, 기록 및 판독을 동시에 수행할 수 있다. 1 메모리 칩 내의 플레인수는 2개에 한하지 않고, 임의이다. 도 4를 확대하여 도시한 바와 같이, 1개의 메모리 칩은 복수의 물리 블록들을 포함한다(도 4에서, X+1개의 물리 블록들).
이와 같이, NAND 메모리(10)에서, 복수의 채널들에 의한 병렬 동작, 복수의 뱅크들에 의한 병렬 동작, 및 복수의 플레인들을 이용하는 배속 모드에서의 병렬 동작이 수행될 수 있고, 채널수가 4, 뱅크수가 4, 플레인수가 2인 경우, 최대 32개의 물리 블록들이 병렬로 동작될 수 있다.
도 5는, 프로세서(104)에 의하여 실현되는 펌웨어의 기능 구성예의 블록도이다. 프로세서(104)에 의해 실현되는 펌웨어의 기능들은, 크게는, 데이터 관리 유닛(DM: data manager)(120), ATA 커맨드 처리 유닛(121)(AM: ATA manager), 시큐리티 관리 유닛(122), 부트 로더(123), 및 초기화 관리 유닛(124)으로 분류된다.
데이터 관리 유닛(120)은, NAND 컨트롤러(113), DRAM 컨트롤러(114) 등을 통해, NAND 메모리(10)와 DRAM(20) 간의 데이터 전송, 및 NAND 메모리(10)의 각종 기능들을 제어한다. ATA 커맨드 처리 유닛(121)은, ATA 컨트롤러(111) 및 DRAM 컨트롤러(114)를 통해, 데이터 관리 유닛(120)과 협동하여 DRAM(20)과 호스트(1) 간의 데이터 전송을 수행한다. 시큐리티 관리 유닛(122)은, 데이터 관리 유닛(120) 및 ATA 커맨드 처리 유닛(121)과 협동하여 각종 시큐리티 정보를 관리한다.
부트 로더(123)는, 파워가 온되면, 관리 프로그램들(펌웨어)을 NAND 메모리(10)로부터 SRAM(l15)에 로딩한다. 초기화 관리 유닛(124)은 드라이브 제어 회로(4) 내의 각 컨트롤러들 및 회로들의 초기화를 수행한다.
데이터 관리 유닛(120)은, 예컨대, ATA 커맨드 처리 유닛(121)이 기억 디바이스로서 NAND 메모리(10)와 DRAM(20)을 요청하는 기능의 제공(호스트(1)로부터의 기록 요청, 캐시 플러시 요청, 및 판독 요청과 같은 각종 커맨드들에 응답하여), 호스트(1)로부터 주어지는 논리 어드레스와 NAND 메모리(10) 간의 대응 관계의 관리, 스냅샷 및 로그에 의한 관리 정보의 보호, DRAM(20) 및 NAND 메모리(10)를 이용하여 고속이며 고효율성의 데이터 판독 및 기록 기능들의 제공, 및 NAND 메모리(10)의 신뢰성의 확보의 신뢰성의 확보를 수행한다.
데이터 관리 유닛(120)에서, 도 6에 도시된 바와 같이, 다층의 관리 구성이 채용되고, 데이터 관리 유닛(120)은, 상층으로부터 순서대로, ATA층 관리 유닛(120a), DRAM층 관리 유닛(120b), 논리층 관리 유닛(120c), 및 물리층 관리 유닛(120d)을 포함한다.
ATA층 관리 유닛(120a)은, ATA 커맨드 처리 유닛(121)으로부터의 요청을 접수하여 이 요청에 응답하고, 요청을 적절한 하위층 관리 유닛에 통지한다. DRAM층 관리 유닛(120b)은, DRAM 관리 테이블(30)을 사용하여 DRAM(20) 상의 데이터를 관리한다.
호스트(1)는, SSD(1OO)에 대하여, Read 또는 Write 요청을 발행할 때, ATA 인터페이스(2)를 통해 논리 어드레스로서의 LBA(logical block addressing) 및 데이터 크기를 입력한다. LBA는, 섹터들(크기: 512B)에 0부터의 일련 번호들을 붙힌, 0부터의 일련 번호를 갖는 논리 어드레스이다. NAND 메모리(10) 내의 복수의 물리 블록들을 조합하여, 논리 블록이라고 불리는 가상 블록이 구성된다. 논리 블록을 구성하는 개개의 물리 블록은 병렬로 동작할 수 있고, 소거, 기록 및 판독이 동시에 수행된다. 본 발명의 본 실시예에서, 논리 블록은 기본적으로는, 상이한 채널들로부터 하나의 물리 블록을 선택함으로써 구성된다. 논리 블록을 구성하는 물리 블록들을 조합하는 방법의 상세는 후술한다.
논리층 관리 유닛(120c)은, 각종 논리층 관리 테이블들(31)을 사용하여 NAND 메모리(10) 상의 데이터를 관리하고,
LBA와 논리 블록 간의 대응의 관리;
DRAM(20)으로부터 NAND 메모리(10)로의 데이터 기록 제어;
NAND 메모리(10)로부터 DRAM(20)으로의 데이터 판독 제어; 및
NAND 메모리(10) 내의 사용자 데이터의 정리
를 실행한다.
물리층 관리 유닛(120d)은, 각종 물리층 관리 테이블들(32)을 사용하여 NAND 메모리(10)를 관리하고, 논리 블록의 제공, 비휘발성 정보의 관리, NAND 컨트롤러(113)의 제어 등을 실행한다. 구체적으로는, 물리층 관리 유닛(120d)은,
프리 블록, 배드(bad) 블록, 및 액티브 블록의 관리;
논리 블록과 물리 블록 간의 대응의 관리;
물리적 에러의 관리;
웨어 레벨링 및 리프레시;
비휘발성 관리 정보(스냅샹, 로그)의 관리; 및
NAND 컨트롤러(113)의 제어
를 실행한다.
프리 블록(FB)은, 내부에 유효 데이터를 포함하지 않고, 용도 미할당의 논리 블록이다. 액티브 블록(AB)은, 용도가 할당된 논리 블록이다. 배드 블록(BB)은 많은 오류들로 인하여 기억 영역으로서 사용될 수 없는 물리 블록이다. 예컨대, 소거 동작이 정상적으로 종료되지 않은 물리 블록이 배드 블록(BB)으로서 등록된다.
호스트(1)에 의하여 사용된 LBA는, 도 6에 도시된 각 관리 테이블들(30, 31, 32)에 의하여 관리된 관리 정보에 의해서, SSD(l00)에 의하여 사용되는 논리 NAND 어드레스(논리 블록 어드레스 등)와, NAND 메모리(10)에 의하여 사용된 물리 NAND 어드레스(물리 블록 어드레스 등)와 연관될 수 있고, 호스트(1)와 NAND 메모리(10) 간에 데이터가 전송될 수 있다. 이 방식으로 LBA와 논리 NAND 어드레스를 연관시키고, 논리 NAND 어드레스와 물리 NAND 어드레스를 연관시키는 기술은, 예컨대 국제 특허 출원 제PCT/JP09/052598호에 개시되어 있으며, 그 전체 내용이 본 출원에서 사용되었다.
다음에, 본 실시예의 주요부를 설명한다. 본 장치에서, 채널들에 의한 병렬 동작, 뱅크들에 의한 병렬 동작, 및 플레인들을 이용하는 배속 모드에 의한 병렬 동작이 수행될 수 있고, 이 병렬 동작들을 이용하여 물리 블록들이 병렬 처리될 수 있다. 본 실시예에서, 각 병렬 동작들을 효율적으로 수행하여 기록 효율을 향상시키기 위해서, 논리 블록을 구성하는 물리 블록들을 조합하는 방법이 최적화된다.
먼저, 비교예에 따른 논리 블록의 구성 방법을 설명한다. 예컨대, 도 4에 도시된 물리적 구성을 갖는 SSD에 관하여, 항상 최대 병렬도가 확보될 수 있도록, 논리 블록이 구성되는 것을 고려한다. 비교예에서, 최대 병렬도가 우선적으로 확보되는 경우 물리 블록의 선택의 제약을 도 7 및 도 8을 참조하여 설명한다.
(비교예)
비교예에 따른 SSD에서는, 논리 블록을 구성하는 물리 블록들을 조합하는 방법에 관해서 (1) 내지 (3)의 제약이 부여된다.
(1) 채널 병렬 동작 요소들(1Oa 내지 1Od)로부터 선택될 물리 블록들은, 동일한 칩 번호(chip 0 내지 chip K)를 갖는 메모리 칩에 속하는 물리 블록이다.
(2) 채널 내에서는, 플레인 0 및 플레인 1의 조합일 것.
(3) 각 뱅크 내에서 제약들 (1) 및 (2)를 만족시킬 것.
제약들 (1) 내지 (3)이 만족되면, 채널들, 플레인들 및 뱅크들에 의한 병렬동작들이 수행될 수 있다. 뱅크들에 의한 병렬 동작이 없는 경우와, 뱅크들에 의한 병렬 동작들이 있는 경우를 서로 비교한다. 뱅크들에 의한 병렬 동작이 없는 경우는, 도 7에 도시된 바와 같이, 제약들 (1) 및 (2)를 만족하면서, 동일한 칩 번호를 갖는 모든 채널들로부터 2개의 물리 블록들(플레인 0/플레인 l)이 선택되어, 논리 블록을 구성한다. 도 7에서, 채널수 및 플레인수에 대하여 물리 블록들로 하나의 논리 블록(LBLK0)이 구성되고, 마찬가지로 물리 블록들로 하나의 논리 블록(LBLK1)이 구성된다. 논리 블록의 이러한 구성예는, 예컨대 국제 특허 출원 제PCT/JP09/052595호에 개시되어 있고, 그 전체 내용이 본 출원에서 사용되었다.
한편, 뱅크들에 의한 병렬 동작들이 있는 경우, 도 8에 도시된 바와 같이, 모든 뱅크들(뱅크 0 내지 뱅크 N)에 대하여, 동일한 칩 번호의 모든 채널들로부터 2개의 물리 블록들(플레인 0/플레인 l)이 선택되어, 논리 블록을 구성한다. 도 8에서, 채널수, 플레인수 및 뱅크수에 대하여 물리 블록들로 하나의 논리 블록(LBLK0)이 구성되고, 동일한 방식으로 물리 블록들로 하나의 논리 블록(LBLK1)이 구성된다. 따라서, 뱅크들에 의한 병렬 동작들이 있는 경우는, 병렬 동작이 없는 경우와 비교하여, 논리 블록을 구성하는(즉, 동시에 동작하는) 물리 블록수가 뱅크수의 배로 증가한다.
상술된 바와 같이, 논리 블록과 물리 블록 간의 대응은, 물리층 관리 유닛(120d)에 의하여 관리된다. 논리 블록은, 프리 블록(FB), 액티브 블록(AB) 등을 포함하나, 유효 데이터를 내부에 포함하지 않는, 용도 미할당의 프리 블록(FB)은, FB 관리 리스트에 따라 관리된다. FB 관리 리스트는, 프리 블록(FB)이 되는 순서로 소팅(sorting)된 FIFO 형식의 리스트이며, 각 엔트리에는, 논리 블록 ID가 유지된다. 논리층 관리 유닛(120c)으로부터 반환된 프리 블록(FB)은 FB 관리 리스트의 최후에 추가되고, 논리층 관리 유닛(120c)에 논리 블록을 전송할 때는, FB 관리 리스트에서의 선두 논리 블록이 취해진다. FB 관리 리스트에서, 모든 논리 블록들의 소거 횟수와 소거들 간 간격들을 대략 동일하게 하는 웨어 레벨링이 수행된다.
뱅크들에 의한 병렬 동작이 없는 경우는, FB 관리 리스트가 하나의 리스트로 구성되어도 문제는 적다. 그러나, 뱅크들에 의한 병렬 동작들이 있는 경우는, 논리 블록을 구성하는(즉, 동시에 동작하는) 물리 블록수가 뱅크수의 배로 증가하기 때문에, 소량의 데이터를 기억하고자 하는 경우라도 쓸데없이 많은 물리 블록들이 사용되어, 기록 효율이 악화된다. 기록 효율의 악화는, 메모리 셀에 대한 소거 및 기록 횟수의 증가를 의미하고, 따라서 시스템 전체로서의 수명이 감소될 수도 있다. 따라서, 기록 속도(=병렬도) 및 기록 효율은 트레이트 오프(trade off)의 관계에 있다.
따라서, 본 실시예에서, 논리 블록을 구성하는 물리 블록수의 증가를 억제하고, 기록 요청의 처리에 필요한 논리 블록수에 따라 병렬도가 제어된다. 병렬도가 불필요한 경우는, 기록 효율을 우선한다. 따라서, 본 실시예에 따른 SSD(100)는 복수의 FB 관리 리스트들을 포함하고, 각 FB 관리 리스트에서, 동일한 뱅크 번호, 칩 번호, 및 플레인 번호를 갖는 논리 블록들이 관리된다. 본 실시예에 따른 SSD(l00)의 논리 블록 구성 방법, 및 병렬도 제어 방법을 이하에 상세히 설명한다.
도 9는, 프리 블록(FB)를 관리하는 FB 관리 유닛(40)의 구성을 도시한다. FB 관리 유닛(40)은, 복수의 FB 리스트들(50-1 내지 50-L)을 포함하는 FB 관리 리스트(5O), FB 선택 유닛(42), 및 FB 제공 유닛(43)을 포함하고, 예컨대, 물리층 관리 유닛(120d)에 의하여 제공된 기능 블록으로서 실현된다. FB 제공 유닛(43)은, 논리층 관리 유닛(120c) 등으로부터의 요청에 응답하여, 논리 블록수와 같은 요구되는 정보를 FB 선택 유닛(42)에 통지한다. FB 선택 유닛(42)은, FB 제공 유닛(43)으로부터 통지된 논리 블록수에 기초하여 FB 관리 리스트(50)에서의 FB 리스트들(50-1 내지 50-L)로부터 요구되는 논리 블록수(논리 블록 ID)를 선택하고, 선택된 하나 또는 복수의 논리 블록 ID들을 FB 제공 유닛(43)에 통지한다. FB 제공 유닛(43)은, 통지된 하나 또는 복수의 논리 블록 ID들을 프리 블록(FB)으로서 논리층 관리 유닛(120c)에 통지한다.
도 10은, FB 관리 리스트(50)를 구성하는 복수의 FB 리스트들(50-1 내지 50-L)을 도시한다. 각 FB 리스트들(50-1 내지 50-L)에는, 동일한 뱅크 번호/칩 번호/플레인 번호를 갖는 논리 블록들의 논리 블록 ID가 들어가 있다. FB 리스트들(50-1 내지 50-L)은, 반환 FB 리스트(50a)와 할당 FB 리스트(50b)를 포함하는 2단 구성을 갖는다. 각 엔트리에는, 논리 블록 ID가 기록되어 있다.
반환 FB 리스트(50a)는 소거 시간 순으로 정렬되어 있고, 이 리스트의 선두에는 소거 횟수가 더 적은 논리 블록이 위치된다. 이것은, 짧은 시간 간격으로 소거 동작이 반복되는 것을 막기 위한 것이다. 논리층 관리 유닛(120c)으로부터 반환된 불필요한 논리 블록은, 반환 FB 리스트(50a)의 최후에 추가되고, 특정 기간 동안 유지된다. 반환 FB 리스트(50a)로부터 압출된 논리 블록은, 소거 횟수에 따라 할당 FB 리스트(50b)의 도중에 삽입된다. FB 선택 유닛(42)은, 논리 블록을 취득할 때, 할당 FB 리스트(50b)의 선두로부터 논리 블록을 추출하여, 이 논리 블록을 할당한다. 할당 FB 리스트(50b)로부터 추출된 FB로서의 논리 블록은, 용도가 할당된 액티브 블록(AB)으로서 등록된다.
FB 리스트들은 반환 FB 리스트(50a)와 할당 FB 리스트(50b)를 갖는 2단 구성을 가지므로, 모든 논리 블록들의 소거 횟수와 소거 간격이 대략 동일해지도록, 소거될 논리 블록이 균등하게 분산될 수 있다(웨어 레벨링). NAND형 플래시 메모리의 수명은, 소거 횟수는 물론, 소거 간격에 의존하고, 그 간격이 길어짐에 따라, 보유 특성이 향상되고, 수명이 연장될 수 있다는 것이 알려져 있다. 이것은, 소거 간격이 짧으면, 보유 특성이 나빠지고, 수명이 감소된다는 것을 나타낸다. 기록이 짧은 간격으로 수행되어도, 대응하는 소거가 장기간 동안 수행되지 않으면 보유 특성이 회복된다는 것도 알려져 있다. 이러한 웨어 레벨링 처리에 관련된 기술은, 예컨대 국제 특허 출원 제PCT/JP08/066508호에 개시되어 있고, 그 전체 내용이 본 출원에서 사용되었다.
본 실시예에서, 도 11에 도시된 바와 같이, 논리 블록은, 각 채널들로부터 동일한 뱅크 번호/칩 번호/플레인 번호를 갖는 물리 블록들을 모아 구성된다. 즉, 본 실시예에서, 논리 블록을 구성하는 물리 블록들을 조합하는 방법에 관해서, 이하의 (1) 내지 (4)의 제약들이 정해져 있다.
(1) 각 채널의 하나의 물리 블록을 선택하는 것.
(2) 동일한 칩 번호에 속하는 물리 블록들로부터 각 채널의 물리 블록을 선택하는 것.
(3) 각 채널의 물리 블록을, 동일한 플레인 번호에 속하는 물리 블록들로부터 선택하는 것.
(4) 동일 뱅크 내의 물리 블록을 선택하는 것.
따라서, 논리 블록은, 뱅크마다, 칩마다, 플레인마다 분류될 수 있다. 도 10에 도시된 바와 같이, 각 FB 리스트들(50-1 내지 50-L)은, 동일한 뱅크 번호/칩 번호/플레인 번호를 갖는 논리 블록들의 리스트로서 구성된다.
FB 선택 유닛(42)은, FB 제공 유닛(43)으로부터의 요청에 따라, FB 리스트들(50-1 내지 50-L)로부터 병렬 동작 가능한 하나 또는 복수의 프리 블록들(FB)을 취득하기 위한 리스트들의 조합을 결정한다. 도 11에 도시되는 논리 블록 구성의 경우, FB 선택 유닛(42)은, 최대 병렬도가 요구될 때 배속 모드를 고려하여, 다음을 선택한다.
(1) 하나의 뱅크 내의 동일 칩 번호를 갖는 플레인 0 및 플레인 1의 논리 블록. 따라서, FB 선택 유닛(42)은, 뱅크 O에 관해서는, 예컨대, 플레인 0에 속하는 채널들에 대하여 "chip a"에 속하는 하나의 논리 블록(LBLK0)과, 플레인 1에 속하는 채널들에 대하여 "chip a"에 속하는 하나의 논리 블록(LBLKl)을 선택하여, 2개의 논리 블록들을 선택한다.
(2) 모든 뱅크들에 관하여 상술된 바와 같은 동일한 처리를 수행함으로써 2 x 뱅크수 (N+1)개에 대한 논리 블록들(LBLK0 내지 LBLK2N+1). 이에 따라, 2 x 뱅크수 (N+1)개에 대한 논리 블록들(LBLK0 내지 LBLK2N+1)에 대한 병렬 기록이 수행될 수 있다.
한편, FB 선택 유닛(42)은, FB 제공 유닛(43)으로부터 하나의 논리 블록이 요청되면, FB 리스트들(50-1 내지 50-L)로부터 하나의 리스트를 선택하여, 선택된 리스트로부터 프리 블록(FB)을 취득하여, 예컨대 논리 블록들(LBLK0 내지 LBLK2N+1)로부터 하나의 논리 블록을 선택한다. 따라서, 요청된 병렬도에 따라서 실제 기록에 사용되는 병렬도가 결정될 수 있기 때문에, 소량의 데이터가 기록되는 경우라도 기록 효율은 나빠지지 않는다.
FB 제공 유닛(43)이 요청하는 논리 블록수는, 최대 병렬도에 대응하는 논리 블록수, 또는 최소수의 논리 블록인 1개에 한하지 않고, 1개로부터 최대 병렬도에 따른 논리 블록수까지의 임의값이 취해질 수 있다. FB 선택 유닛(42)은, 요청된 임의의 논리 블록수에 따라서, FB 리스트들(50-1 내지 50-L)로부터 리스트를 선택하여, 선택된 리스트로부터 프리 블록(FB)을 취득한다.
FB 리스트들(50-1 내지 50-L)로부터 FB를 취득하는 리스트를 선택하기 위한 알고리즘을 다음에 설명한다. 이하에서는, 2개의 알고리즘들(제1 알고리즘 및 제2 알고리즘)에 관해서 설명한다.
제1 알고리즘에서, 각 뱅크/칩/플레인에서 생성된 배드 블록(BB)수(BB 수)에 역으로 대응하는 값(예컨대, BB수의 역수), 각 뱅크/칩 플레인에서 사용 가능한 논리 블록수(프리 블록(FB)수와 액티브 블록(AB)수의 총합), 및 각 FB 리스트들에 속하는 블록수로 가중된 라운드 로빈(round-robin) 방식에 의하여, 프리 블록(FB)을 취득하는 리스트(뱅크/칩/플레인)이 선택된다. 즉, BB수가 적을 수록 프리 블록(FB)을 취득하는 확률이 증가하도록 가중된 라운드 로빈법이 채용된다. 배드 블록(BB)은, 많은 오류들에 의하여 기억 영역으로서 사용될 수 없는 물리 블록이며, 예컨대 소거 동작이 정상적으로 종료되지 않은 물리 블록이 배드 블록(BB)으로서 등록된다.
갱신 데이터의 기록에 따라 유효 데이터가 없는 액티브 블록(AB)은, 프리 블록(FB)으로서 등록되고, 다시 액티브 블록(AB)으로서 재이용되는 것을 대기한다. BB수가 많아진 뱅크/칩/플레인에서, 이용 가능한 논리 블록수(프리 블록(FB)수와 액티브 블록(AB)수의 총합)가 감소된다. 이용 가능한 논리 블록수에 불구하고 동일한 확률로 프리 블록(FB)이 취득되면, 배드 블록(BB)의 빈번한 발생으로 인하여 논리 블록수가 감소되는 FB 리스트(50)에서 재이용까지의 간격이 줄어든다. NAND형 플래시 메모리에서, 재이용 간격(완화 시간(relaxation time))의 단축은, 수명을 단축시키기 때문에 회피되어야 한다. BB수로 가중된 라운드 로빈 방식에서는, 논리 블록수에 상관없이 완화 시간이 평준화될 수 있다.
제2 알고리즘에서, 뱅크들 사이에서 그리고 뱅크에서 독립된 라운드 로빈 방식이 채용된다. 뱅크들 간에 비가중 라운드 로빈 방식이 채용되어, 매회 상이한 뱅크의 프리 블록(FB)이 취득될 수 있다. 뱅크들 간에 우선도 순위가 제공되지 않으므로(매회 상이한 뱅크의 프리 블록이 취득될 수 있다), 최저 뱅크수의 병렬도가 달성될 수 있다. 뱅크 내에서, 제1 알고리즘에서와 같이, 프리 블록(FB)을 취득하는 리스트(칩/플레인)는, 각 뱅크/칩/플레인에서 생성된 BB수에 역으로 대응한 값(예컨대, BB수의 역수), 각 뱅크/칩/플레인에서 사용 가능한 논리 블록수, 및 각 FB 리스트들에 속하는 블록수로 가중된 라운드 로빈법에 의하여 선택된다. 따라서, 뱅크에서, BB수가 더 작은 칩 및 플레인으로부터 프리 블록(FB)을 취득하는 기회가 증가하고, 완화 시간이 평준화될 수 있다.
제2 알고리즘이 채용되면, 다음이 이점들을 더 얻을 수 있다. 논리 블록이 하나씩 취득되면, 뱅크 0 → 뱅크 1 → 뱅크 2 → 뱅크 3 → ...→ 뱅크 N(N은 뱅크 번호의 최대값)의 순으로, 매회 상이한 뱅크들로부터 프리 블록(FB)이 취득될 수 있고, 이것은 중요한 정보를 이중화(duplicate)하는 경우에 효과적이다. 도 2에 도시된 바와 같이, 뱅크가 상이하면, 물리 메모리 칩이 상이하고, 따라서 RyBy0 내지 RyBy3에 공통 접속된 신호선이 상이하게 된다. 즉, RyBy 신호선들 중 하나가 파괴되어 동작할 수 없어도, 백업 측으로부터 데이터가 판독될 수 있다. 따라서, 중요한 정보가 이중화되는 경우, 중요한 정보가 동일 메모리 칩에 물리적으로 이중화되는 경우와 비교하여 신뢰성이 향상될 수 있다.
이중화가 요구되는 정보로서, 예컨대, 로그 및 스냅샷과 같은 SSD(l00) 상에서 동작하는 펌웨어의 비휘발성 관리 정보가 고려될 수 있다. 이것은, 정보의 이들 피스들(pieces)이 소실되면, NAND 메모리(10)에 기록된 데이터가 정상적으로 판독될 수 없기 때문이다. 이중화가 필요한 이러한 관리 정보를 기억하는 메모리 칩이 선택되어야 하는 경우, 제2 알고리즘을 채용함으로써 하나의 논리 블록에 대하여 프리 블록(FB)을 취득하는 것만으로, 신뢰성 향상이 예상될 수 있다.
다음 값은 라운드 로빈의 가중값을 위하여 채용될 수 있다. NAND 메모리(10)는 일반적으로, 호스트(1)로부터 볼 수 있는 사용자 데이터 기억 영역(리저브 영역) 외에, 호스트(1)로부터 볼 수 없는 기억 영역(마진 영역)을 포함한다. 리저브 영역은 호스트(1)에 의하여 사용된 논리 어드레스로서 LBA에 의하여 지정될 수 있다. 마진 영역은, DRAM(20)으로부터 리저브 영역으로의 데이터 전송시에 버퍼 영역으로서 사용되고, 또는 관리 정보(논리층 관리 테이블들(31)과 물리층 관리 테이블(32)을 포함하는)를 기억하기 위한 것이다.
리저브 영역은, 사용자로부터 볼 수 있는 SSD의 용량과 동일한 용량을 가지므로, 리저브 영역의 용량은, 배드 블록(BB)이 생성되어도, 항상 일정하게 유지될 필요가 있다. 따라서, 배드 블록(BB)수가 증가됨에 따라, 마진 영역은 전체 SSD로서 감소된다. 하나의 논리 블록에 포커스를 맞추어 고려해 보면, 이 하나의 논리 블록은, 논리 블록이 마진 영역과 리저브 영역 중 어느 것에 속하는 SSD의 사용에 대응하는 시간에 따라 변한다. 리저브 영역으로서 사용된 논리 블록은 리저브 블록으로 불리고, 마진 영역으로서 사용된 논리 블록은 마진 블록으로 불린다.
예컨대, 관리 정보를 기억하기 위하여 사용된 논리 블록이 해제되어 프리 블록 리스트로 반환되고, 그 후, 사용자 데이터를 기억하기 위한 논리 블록으로서 할당되면, 논리 블록은, 관리 정보를 기억하기 위하여 사용되는 시점에서 마진 블록들 중 하나이나, 사용자 데이터를 기억하기 위하여 사용되는 시점에서 리저브 블록들 중 하나가 된다. 또한, 프리 블록 리스트에 블록이 유지되는 상태에서, 예외적인 상황을 제외하고, 하나의 블록이 마진 블록과 리저브 블록 중 어느 것에 대응하는지가 지정될 수 없다.
마진 블록수 또는 미사용 마진 블록수가 FB 리스트들(50-1 내지 50L) 각각에 대하여 관리되면, 칩과 플레인으로부터 더 적은 BB수로 프리 블록(FB)을 취득하는 기회는, 마진 블록수 또는 미사용 마진 블록수로 가중된 라운드 로빈법으로 사용함으로써 프리 블록(FB)을 취득하기 위하여 리스트(칩/플레인)를 선택함으로써 뱅크에서 증가될 수 있다. 마진 블록수는, 마진 영역에 속하는 액티브 블록(AB)수와 프리 블록(FB)수의 총합이다. 미사용 마진 블록수는 마진 영역에 속하는 프리 블록(FB)수이다.
하나의 FB 리스트에서의 마진 블록수와 미사용 마진 블록수는 다음의 방식으로 취득된다. 즉, 마진 영역와 리저브 영역의 합계를 냄으로써 취득된 NAND 메모리(10)의 전체 메모리 용량을 FB 리스트들의 총수로 나누고, 나눈 결과를 하나의 논리 블록의 메모리 용량으로 나눠, 하나의 FB 리스트에 들어갈 수 있는 논리 블록수(D)를 도출한다.
도 12는 하나의 FB 리스트에서의 마진/리저브 블록들의 할당을 개념적으로 도시한다. 리저브 영역은 항상 특정 용량을 확보하는 것이 필요하므로, 하나의 FB 리스트에 들어갈 수 있는 논리 블록수(D)에서 리저브 블록용 미리 결정된 수(D1)를 감산하여 취득된 논리 블록수(D2)는, 배드 블록(BB)이 없는 경우 마진 블록들용이 된다. FB 리스트에 대응하는 뱅크/칩/플레인에서의 배드 블록(BB)수(D3)가 논리 블록수(D2)에서 감산되면, 마진 블록수(D4)가 취득될 수 있다. 또한, 마진 블록수(D4)에서 관리 영역 또는 버퍼 영역으로서 사용되는 마진 블록수를 순차 감산함으로써, 미사용 마진 블록수가 취득될 수 있다.
따라서, 프리 블록은, 각 FB 리스트에 대하여 마진 블록수 또는 미사용 마진 블록수로 가중된 라운드 로빈 방식에 따라 프리 블록(FB)을 취득하기 위하여 리스트를 선택함으로써 배드 블록들을 덜 가지고 뱅크/칩/플레인으로부터 우선적으로 취득될 수 있다.
본 실시예예 따라, 복수의 FB 관리 리스트들이 제공된다. 각 FB 관리 리스트에서, 동일한 뱅크 번호/칩 번호/플레인 번호를 갖는 논리 블록들이 관리되고, FB 선택 유닛(42)은 논리층 관리 유닛(120c)으로부터의 요청에 응답하여, 요구되는 논리 블록(프리 블록(FB))을 취득한다. 따라서, 큰 병렬도가 필요할 때는 다중 병렬 처리에 의하여 고속화가 실현되고, 작은 병렬도로 충분한 경우는, 기록 효율에 우선한 처리가 수행될 수 있다.
[제2 실시예]
도 13은 본 발명의 제2 실시예를 도시하고 있으며, 도 9의 FB 관리 유닛(40) 내에, 병렬 동작 가능한 프리 블록(FB)수를 계산하는 FB 병렬도 계산 유닛(45)이 추가된다.
논리층 관리 유닛(120c)은, FB 제공 유닛(43)에 프리 블록(FB)을 요청하기 전에, FB 병렬도 계산 유닛(45)에 병렬 동작 가능한 현재의 프리 블록(FB)수의 계산을 요청한다. FB 병렬도 계산 유닛(45)은, 논리층 관리 유닛(120c)으로부터의 요청에 응답하여, 현재 병렬 동작 가능한 프리 블록(FB)수를 계산한다. 병렬 동작 가능한 프리 블록(FB)수는 다음 과정에 따라 계산된다.
(1) 뱅크 내에서의 병렬도를 계산한다.
(2) 모든 뱅크들에 대하여 각 뱅크들에서 계산된 병렬도를 가산한다.
뱅크에서의 병렬도(얼마나 많은 프리 블록들(FB)이 뱅크 내에서 동시에 사용될 수 있는지)는, 뱅크 내의 프리 블록(FB)에서 동일 칩 번호를 갖는 플레인 0과 플레인 1의 쌍이 존재하는 지의 여부(배속 모드로 동작 가능한 플레인들 쌍이 존재하는 지의 여부)로 결정된다. 특정 뱅크 내에서 동일 칩 번호를 갖는 플레인 0과 플레인 1의 쌍이 존재하면, 이 쌍은 배속 모드로 병렬 동작이 가능하므로, 병렬도는 2이다. 플레인 0과 플레인 1 중 하나만이 존재하는 경우는, 병렬도는 1이고, 뱅크에 프리 블록(FB)이 없는 경우는, 병렬도는 O 이다.
FB 병렬도 계산 유닛(45)은, 계산된 병렬 동작 가능한 프리 블록(PB)수를 논리층 관리 유닛(120c)에 통지한다. 논리층 관리 유닛(120c)은, 통지 결과(병렬도)에 따라서 자신의 처리를 변경할 수 있다. 예컨대, 병렬도가 충분히 확보될 수 있는 경우는, 대량의 데이터가 먼저 모아져 기록 처리를 실행한다.
제2 실시예에서, 가능한 병렬도가 계산되어, 논리층 관리 유닛(120c)에 통지되므로, 논리층 관리 유닛(120c)은, 통지 결과에 따라서 자신의 처리를 변경함으로써 효율 좋은 처리를 수행할 수 있어, 기록 효율이 향상된다.
[제3 실시예]
본 발명의 제3 실시예에서, 제2 실시예의 특정 처리 내용을 설명한다. 제3 실시예에서, 물리층 관리 유닛(120d)이 논리층 관리 유닛(120c)에 의하여 요청된 병렬도 n을 확보하는 경우, 배속에 우선도를 부여함으로써 병렬도를 확보하는 배속 우선도 모드, 및 뱅크 병렬도에 우선도를 부여함으로써 병렬도를 확보하는 뱅크 우선도 모드의 2가지 모드들이 전환될 수 있다.
도 13에 도시된 FB 병렬 계산 유닛(45)은 도 14에 도시된 마진 테이블을 갖는다. 도 14에 도시된 바와 같이, 각 뱅크에 대하여 배속 모드가 사용될 때 칩의 마진에 관련된 정보, 및 배속 모드를 사용하지 않고 정규 모드가 사용될 때 플레인의 마진에 관련된 정보가 마진 테이블에 등록된다. 마진 테이블은 매회 갱신되고, 등록된 데이터가 갱신되어야 하는 이벤트가 발생한다.
도 10에 도시된, 동일한 뱅크 번호/칩 번호/플레인 번호를 갖는 논리 블록의 리스트로서 형성된 FB 리스트들(50-1 내지 50-L) 중 하나에서의 현재 프리 블록(FB)수가 "플레인 마진"으로서 정의된다. 하나의 FB 리스트(50-1)에서의 프리 블록(FB)수가, 예컨대 20이면, FB 리스트에 의하여 유지된 플레인 마진은 20이다. 칩을 구성하는 2개의 "플레인 마진"이 X와 Y인 것으로 가정되면, 더 작은 "플레인 마진"이 칩의 "칩 마진"으로서 정의된다. 하나의 칩의 플레인 0의 플레인 마진이 20이고, 동일 칩에서의 플레인 1의 플레인 마진이 15이면, 칩의 칩 마진은 15이다.
마진 테이블에서의 배속 모드 관점의 칼럼에서, 뱅크에 속하는 칩들에서 어느 칩이 최고 칩 마진을 갖는 지(칩 번호)와, 칩 마진의 값(이하, "배속 동작시 뱅크 마진")을 나타내는 정보가 유지된다. 마진 테이블에서의 정규 모드 관점의 칼럼에서, 뱅크에 속하는 플레인들에서 어느 칩의 플레인이 최고 마진을 갖는 지(칩 번호/플레인 번호)와, 플레인 마진의 값(이하, "정규 동작시 뱅크 마진")을 나타내는 정보가 유지된다. 배속 우선도 모드에서의 뱅크들 간의 선택 우선도는 배속 동작시 뱅크 마진에 기초하여 결정되고, 뱅크 우선도 모드에서의 뱅크들 간의 선택 우선도는 정규 동작시 뱅크 마진에 기초하여 결정된다.
예컨대, 뱅크 0에서 각 칩들과 각 플레인들에서의 플레인 마진과 칩 마진이 도 15에 도시된 상태에 있으면, 뱅크 0에서 최고 칩 마진을 갖는 칩은 20의 칩 마진을 갖는 칩 3이고, 뱅크 0에서 최고 플레인 마진을 갖는 플레인은 30의 플레인 마진을 갖는 칩 0의 플레인 1이다. 따라서, 마진 테이블에서 뱅크 0의 배속 모드 관점의 칼럼에서, 칩 3을 나타내는 칩 번호와 마진의 값 20이 등록되고, 정규 모드 관점의 칼럼에서, 칩 0/플레인 1을 나타내는 칩 번호/플레인 번호와 마진의 값 30이 등록된다.
상위층으로서 논리층 관리 유닛(120c)이 FB 제공 유닛(43)에게 프리 블록(FB)을 선택하기를 요청하는 경우, 논리층 관리 유닛(120c)은 먼저, FB 병렬도 계산 유닛(45)에게 현재 선택 가능한 병렬도의 최고값을 질문하고, 그 후 FB 선택 유닛(42)에게 FB 제공 유닛(43)을 통하여 최고값을 초과하지 않는 병렬도를 갖는 블록을 할당할 것을 요청한다. FB 선택 유닛(42)은, 논리층 관리 유닛(120c)으로부터 프리 블록(FB)을 할당하도록 요청받을 때, 지정된 병렬도를 갖는 할당이 항상 수행될 수 있는 상태에 있다.
FB 병렬도 계산 유닛(45)에 의한 병렬도 계산이 제2 실시예에 설명된 바와 같이 동일한 방식으로 다음의 과정에 따라 수행된다.
(a) 다음의 방식으로 뱅크 0의 병렬도를 계산
(a-1) 배속 동작시 마진이 0보다 크면, 뱅크 0의 병렬도를 2로서 지정
(a-2) 배속 동작시 마진이 0이고, 정규 동작시 마진이 0보다 크면, 뱅크 0의 병렬도를 1로서 지정
(a-3) 배속 동작/정규 속도시 마진들이 모두 0이면, 뱅크 0의 병렬도를 0으로서 지정
(b) 뱅크 0과 동일한 방식으로 뱅크들 1 내지 N의 병렬도들을 계산
(c) (a)와 (b)에서 계산된 각 뱅크들의 병렬도들의 총합은 제 시간의 시점에서 블록을 선택하기 위하여 병렬도로서 지정되고, 병렬도의 논리층 관리 유닛(120c)에 통지된다.
배속에 우선도를 부여함으로써 병렬도를 확보하는 배속 우선도 시스템을 도 16을 참조하여 다음에 설명한다. 배속 동작의 실행은 동일한 뱅크와 칩에서 그러나 상이한 플레인에서 프리 블록(FB)의 쌍에 관하여 제한된다. 여기서, 병렬도 n을 갖는 블록의 할당이 논리층 관리 유닛(120c)으로부터 요청된다고 가정된다.
도 12의 FB 선택 유닛(42)은 도 14에 도시된 마진 테이블을 참조하여, 배속 동작시 최대 마진을 갖는 뱅크를 선택하고, 배속 동작시 선택된 뱅크의 마진에 대응하는 칩의 2개의 플레인들에 속하는 각 하나, 총 2개의 프리 블록들(FB)을 선택한다(단계 S100). FB 선택 유닛(42)은, 선택된 프리 블록들(FB)의 총합이 Int(n/2)*2에 도달했는 지의 여부를 판정한다(단계 S110). Int(n/2)*2는, 정수값을 취득하기 위하여 나눗셈 n/2의 결과로 소수점 후 숫자를 버리는(truncating) 동작을 나타낸다. 예컨대, n=3이면, Int(n/2)=1이고, 따라서 Int(n/2)*2 = 2이다. 단계 S110의 판정 결과가 Yes이면, 과정은 단계 S125로 진행한다. 단계 S110의 판정 결과가 No이면, 과정은 단계 S120으로 진행한다.
단계 S120에서, FB 선택 유닛(42)이 마진 테이블을 참조하여, 배속 동작시 마진이 0이 아닌 뱅크가 있는 지의 여부를 판정한다(단계 S120). 배속 동작시 마진이 0이 아닌 뱅크가 있으면, FB 선택 유닛(42)은, 단계 S100에서 이미 선택된 뱅크 이외의 뱅크들로부터 배속 동작시 최대 마진을 갖는 뱅크를 선택하고, 배속 동작시 선택된 뱅크의 마진에 대응하는 칩의 2개의 플레인들에 속하는 각 하나의 프리 블록들(FB), 총 2개의 프리 블록들(FB)을 선택한다(S100).
단계 S100 내지 단계 S120의 과정들은, 선택된 프리 블록(FB)들의 총합이 Int(n/2)*2에 도달하거나, 배속 동작시 마진이 0이 아닌 뱅크가 존재하지 않을 때까지 반복된다.
단계 S125에서, FB 선택 유닛(42)은, 선택된 프리 블록들(FB)의 총합이 논리층 관리 유닛(120c)으로부터 요청된 병렬도 n에 도달하는 지의 여부를 결정한다. 선택된 프리 블록들(FB)의 총합이 병렬도 n에 도달하면, 처리는 종료된다.
단계 S125의 판정이 No이면, FB 선택 유닛(42)은 마진 테이블을 참조하여, 비선택된 뱅크들로부터의 정규 동작시 최대 마진을 갖는 뱅크를 선택하고, 정규 동작시 선택된 뱅크의 마진에 대응하는 칩/플레인에 속하는 하나의 프리 블록(FB)을 선택한다(단계 S130). 이하, 단계 S130 및 S140의 처리는, 선택된 프리 블록들의 총합이 병렬도 n에 도달할 때까지 비선택된 뱅크들에 대하여 반복된다. 선택된 프리 블록들의 총합이 n에 도달하면, 선택 처리는 종료된다.
예컨대, 마진 테이블이 도 17에 도시된 상태에 있다고 가정한다. 도 17에서, 뱅크 0에서, 칩 0은 배속 동작시 최대 마진을 나타내고, 그 마진은 15이고, 칩 0/플레인 1은 정규 동작시 최대 마진을 나타내고, 그 마진은 20이다. 뱅크 1에서, 칩 2는 배속 동작시 최대 마진을 나타내고, 그 마진은 10이고, 칩 2/플레인 0은 정규 동작시 최대 마진을 나타내고, 그 마진은 30이다. 뱅크 2에서, 배속 동작시 최대 마진은 0이고, 칩 3/플레인 1은 정규 동작시 최대 마진을 나타내고, 그 마진은 27이다. 뱅크 3에서, 배속 동작시 최대 마진은 0이고, 칩 2/플레인 0은 정규 동작시 최대 마진을 나타내고, 그 마진은 9이다.
이러한 테이블 상태의 경우에서, 논리층 관리 유닛(120c)은 병렬도 n=5를 요청하고, 프리 블록(FB)은 배속에 우선도를 부여함으로써 선택된다고 가정한다. 배속 동작시 최대 마진 15를 갖는 뱅크 0이 먼저 선택되고, 뱅크 0의 칩 0의 플레인들 0 및 1로부터 각 하나, 총 2개의 프리 블록들(FB)이 선택된다(단계 S100). 이 상태에서, 단계 S110 및 S120에서의 판정들이 No이면, 배속 동작시 최대 마진 10을 갖는 뱅크 1이 뱅크 0 이외의 뱅크들 1 내지 3에서 선택되고, 뱅크 1의 칩 2의 플레인들 0 및 1로부터 각 하나, 총 2개의 프리 블록들(FB)이 선택된다(단계 S100). 이 상태에서, 선택된 프리 블록들수는 4개이고, 단계 S110에서의 판정이 Yes이고, 단계 S125에서의 판정이 No이고, 과정은 단계 S130으로 진행한다.
단계 S130에서, FB 선택 유닛(42)은 비선택된 뱅크들 2 및 3으로부터 정규 동작시 최대 마진 27을 갖는 뱅크 2를 선택하고, 뱅크 2의 칩 3의 플레인 1로부터 하나의 프리 블록(FB)을 선택한다. 선택된 프리 블록수는 이 상태에서 5개가 되고, 단계 S140에서의 판정이 Yes이므로, 선택 처리는 종료된다.
결과로서, 프리 블록들(FB)은, 뱅크 0의 칩 0의 플레인들 0 및 1, 뱅크 1의 칩 2의 플레인들 0 및 1, 및 뱅크 2의 칩 3의 플레인 1로부터 각각 하나의 프리 블록들(FB)이 선택되고, 배속에 우선도를 부여함으로써 병렬도 5가 달성될 수 있다.
또한, 도 17에 도시된 테이블 상태의 경우, 논리층 관리 유닛(120c)은 병렬도 n=3을 요청하고, 프리 블록(FB)이 배속에 우선도를 부여함으로써 선택되는 경우, 배속 동작시 최대 마진을 갖는 뱅크 0이 먼저 선택되고, 뱅크 0의 칩 0의 플레인들 0 및 1로부터 각 하나, 총 2개의 프리 블록들(FB)이 선택된다(단계 S100). 이상태에서, 선택된 프리 블록수는 2개이고, 단계 S110에서의 판정이 Yes이고, 단계 S125에서의 판정이 No이고, 과정은 단계 S130으로 진행한다. 단계 S130에서, 정규 동작시 최대 마진 30을 갖는 뱅크 1은 비선택된 뱅크들 2 및 3으로부터 선택되고, 뱅크 1의 칩 2의 플레인 0으로부터 하나의 프리 블록(FB)이 선택된다. 선택된 프리 블록수는 이 상태에서 3개이고, 단계 S140에서의 판정이 Yes이므로, 선택 과정이 종료된다.
그 결과, 뱅크 0의 칩 0의 플레인들 0 및 1과 뱅크 1의 칩 2의 플레인 0으로부터 프리 블록들(FB)이 각각 하나 선택되고, 배속에 우선도를 부여함으로써 병렬도 3이 달성될 수 있다.
뱅크 병렬도에 우선도를 부여함으로써 병렬도를 확보하는 뱅크 병렬도 우선 도 시스템을 도 18을 참조하여 다음에 설명한다. 여기서, 병렬도 n을 갖는 블록의 할당이 논리층 관리 유닛(120c)으로부터 요청된다고 가정한다.
FB 선택 유닛(42)은 마진 테이블을 참조하여, 정규 동작시 마진이 0이 아닌 뱅크수 m을 계산한다(단계 S200). FB 선택 유닛(42)은, 논리층 관리 유닛(120c)에 의하여 지정된 병렬도 n과 m을 비교한다(단계 S210). m≥n 이면, FB 선택 유닛(42)은 단계들 S220 내지 S230의 처리를 실행하고, m<n 이면, 단계들 S250 내지 S280의 처리를 실행한다.
m≥n 이면, FB 선택 유닛(42)은 마진 테이블을 참조하여, 모든 뱅크들로부터 정규 동작시 최대 마진을 갖는 뱅크를 선택하고, 정규 동작시 선택된 뱅크의 마진에 대응하는 칩/플레인에 속하는 하나의 프리 블록(FB)을 선택한다(단계 S220). FB 선택 유닛S(42)은, 선택된 프리 블록들(FB)의 총합이 논리층 관리 유닛(120c)으로부터 요청된 병렬도 n에 도달했는 지의 여부를 판정한다(단계 S230). 총합이 병렬도 n에 도달하지 않았으면, FB 선택 유닛(42)은, 선택된 프리 블록들의 총합이 병렬도 n에 도달할 때까지, 비선택된 뱅크들에 대하여 단계들 S220 및 S230의 처리를 반복한다. 선택된 프리 블록들의 총합이 n에 도달하면, FB 선택 유닛(42)은 선택 처리를 종료한다.
m<n 이면, FB 선택 유닛(42)은 마진 테이블을 참조하여 모든 뱅크들로부터 배속 동작시 최대 마진을 갖는 뱅크를 선택하고, 배속 동작시 선택된 뱅크의 마진에 대응하는 칩의 2개의 플레인들에 속하는 각 하나, 총 2개의 프리 블록들(FB)을 선택한다(단계 S250). FB 선택 유닛(42)은, 선택된 프리 블록들(FB)의 총합이 2(n-m)에 도달했는지의 여부를 판정한다(단계 S260). 총합이 2(n-m)에 도달하지 않았으면, FB 선택 유닛(42)은 비선택된 뱅크들로부터 배속 동작시 최대 마진을 갖는 뱅크를 선택하고, 배속 동작시 선택된 뱅크의 마진에 대응하는 칩의 2개의 플레인들에 속하는 각 하나, 총 2개의 프리 블록들(FB)을 선택한다(단계 S250). 단계들 S250 및 S260의 처리는, 선택된 프리 블록들(FB)의 총합이 2(n-m)에 도달할 때까지 반복된다.
선택된 프리 블록들(FB)의 총합이 2(n-m)에 도달했으면, FB 선택 유닛(42)은 마진 테이블을 참조하여, 정규 동작시 비선택된 뱅크들 중 최대 마진을 갖는 뱅크을 선택하고, 정규 동작시 선택된 뱅크의 마진에 대응하는 칩/플레인에 속하는 하나의 프리 블록(FB)을 선택한다(단계 S270). 이후, 단계들 S270 및 S280의 처리는, 선택된 프리 블록들의 총합이 병렬도 n에 도달할 때까지 비선택된 뱅크들에 대하여 반복된다. 선택된 프리 블록들의 총합이 n에 도달하면(단계 S280), 선택 처리는 종료된다.
도 17에 도시된 테이블 상태에서, 논리층 관리 유닛(120c)으로부터 병렬도 n=3이 요청되어, 뱅크 병렬도에 우선도를 부여함으로써 프리 블록(FB)을 선택한다고 가정한다. 도 17에 도시된 테이블 상태에서, 정규 동작시 마진이 0이 아닌 뱅크수 m=4이므로, 단계 S210에서 m≥n이 확립된다. 정규 동작시 최대 마진을 갖는 뱅크 1이 먼저 선택되고, 뱅크 1의 칩 2의 플레인 0으로부터 하나의 프리 블록(FB)이 선택된다(단계 S220). 다음 뱅크 2가 선택되고, 뱅크 2의 칩 3의 플레인 1로부터 하나의 프리 블록(FB)이 선택되고, 뱅크 0이 선택되고, 뱅크 0의 칩 0의 플레인 1로부터 하나의 프리 블록(FB)이 선택됨으로써, 3개의 프리 블록들이 선택되고, 병렬도 n=3이 달성된다.
도 17에 도시된 테이블 상태에서, 논리층 관리 유닛(120c)으로부터 병렬도 n=5가 요청되어, 뱅크 병렬도에 우선도를 부여함으로써 프리 블록(FB)을 선택하는 것으로 가정한다. 뱅크수 m=4이므로, 단계 S210에서 m<n이 확립된다. 단계 S250에서, 배속 동작시 최대 마진을 갖는 뱅크 0이 선택되고, 뱅크 0의 칩 0의 플레인들 0 및 1로부터 각 하나, 총 2개의 프리 블록들(FB)이 선택된다. 이 선택 스테이지에서, 단계 S260의 판정이 Yes이고, 단계들 S270 및 S280의 처리를 3회 반복함으로써 비선택된 뱅크들 1 내지 3(뱅크 1의 칩 2의 플레인 0, 뱅크 2의 칩 3의 플레인 1, 및 뱅크 3의 칩 2의 플레인 0)으로부터 프리 블록(FB)이 각 하나씩 선택된다. 따라서, 총 5개의 프리 블록들(FB)이 선택되어, 병렬도 n=5가 달성될 수 있게 된다.
뱅크 병렬도에 우선도를 부여하는 경우에, 단계들 S250 및 S260의 처리는, 뱅크 병렬도에 의하여 제공되지 않은 부분에 대하여 배속 모드를 사용하도록 수행된다. 즉, 4개 뱅크들과 2개 플레인들의 구성에서 병렬도 5가 요청되는 경우, 뱅크 병렬도에 우선도가 부여되는 경우, 배속 모드는 하나의 뱅크에 대하여만 사용되고, 정규 모드는 남아있는 3개의 뱅크들에 대하여 사용된다. 4개의 뱅크들과 2개의 플레인들의 구성에서 병렬도 5가 요청되는 경우, 배속 모드에 우선도가 부여되면, 배속 모드는 가능한 많이 2개의 뱅크들에서 사용되고, 정규 모드는 남아있는 하나의 뱅크에서 사용된다.
따라서, 제3 실시예에서, 정규 동작시 뱅크 마진과 배속 동작시 뱅크 마진이 등록되어 있는 마진 테이블을 사용함으로써 병렬도 n이 확보되는 경우, 2개의 모드들, 즉 배속 모드에 우선도를 부여함으로써 병렬도를 확보하기 위한 배속 우선도 모드, 및 뱅크 병렬도에 우선도를 부여함으로써 병렬도를 확보하기 위한 뱅크 우선도 모드가 전환될 수 있다. 배속 모드가 사용되는 경우, 정규 모드에서보다 더 큰 병렬도를 확보하는 확률이 증가한다. 따라서, 요구된 병렬도가 작은 경우, 정규 모드에 우선도를 부여함으로써 뱅크 병렬도 우선도 시스템이 사용되고, 요청된 병렬도가 큰 경우, 배속 우선도 시스템이 사용된다. 다음, 뱅크가 작은 병렬도로 동작되는 경우, 배속 동작을 수행할 수 있는 많은 세트의 논리 블록들이 유지될 수 있다. 뱅크가 실제로 큰 병렬도로 동작되는 경우, 배속 동작을 많은 횟수 연속으로 수행하는 확률이 증가하고, 큰 데이터의 기록 처리가 고속으로 수행될 수 있다.
제3 실시예에서, 현재 프리 블록(FB)수가 마진 테이블에서 마진으로서 등록되어, 마진에 기초하여 배속 우선도 모드에서 또는 뱅크 우선도 모드에서 FB 리스트를 선택한다. 그러나, 제1 실시예에서 설명된 배드 블록들(BB)수에 역으로 대응하는 값(예컨대, BB수의 역수), 각 뱅크/칩/플레인에서 사용 가능한 논리 블록수, 또는 마진 블록들 또는 미사용 마진 블록들수가 마진으로서 지정되어, 마진에 따라 배속 우선도 모드 또는 뱅크 우선도 모드에서 FB 리스트를 선택할 수 있다.
[제4 실시예]
도 19는, SSD(l00)가 탑재된 PC(1200)의 일례의 사시도이다. PC(1200)는, 본체(1201) 및 표시 유닛(1202)을 포함한다. 표시 유닛(1202)은 디스플레이 하우징(1203)과, 디스플레이 하우징(1203)에 수용된 표시 장치(1204)를 포함한다.
본체(120l)는 섀시(1205), 키보드(1206), 및 포인팅 장치로서 터치 패드(1207)를 포함한다. 섀시(1205)는, 메인 회로 기판, 광 디스크 장치(ODD, optical disk device) 유닛, 카드 슬롯, 및 SSD(1OO)를 포함한다.
카드 슬롯은, 섀시(1205)의 둘레 벽에 인접하도록 제공된다. 둘레 벽은 카드 슬롯에 대향하는 개구부(l208)를 갖는다. 사용자는, 개구부(1208)를 통하여 섀시(1205) 외부에서 추가 디바이스를 카드 슬롯으로 삽입 및 카드 슬롯으로부터 제거할 수 있다.
SSD(l00)는, 종래의 하드 디스크 드라이브(HDD) 대신에, PC(1200) 내에 실장된 상태로 사용될 수 있고, 또는 카드 슬롯에 삽입된 상태로 추가 디바이스로서 사용될 수 있다.
도 20은, SSD(100)가 탑재된 PC(1200)의 시스템 구성예의 개략도이다. PC(1200)는, CPU(1301), 노스 브리지(1302), 주 메모리(1303), 비디오 컨트롤러(1304), 오디오 컨트롤러(1305), 사우스 브리지(1309), BIOS-ROM(basic input/output system read-only memory)(1310), SSD(100), ODD 유닛(1311), 임베디드 컨트롤러/키보드 컨트롤러 IC(EC/KBC)(1312), 및 네트워크 컨트롤러(1313)를 포함한다.
CPU(1301)는, PC(1200)의 동작을 제어하기 위한 프로세서이며, SSD(l00)로부터 주 메모리(1303)에 로딩된 운영 체제(OS)를 실행한다. 또한, ODD 유닛(1311)이 탑재된 광 디스크 상에 판독 처리 및 기록 처리 중 하나 이상을 실행할 수 있는 경우에, CPU(1301)는 이 처리를 실행한다.
또한, CPU(1301)는 BIOS-ROM(1310)에 기억된 시스템 BIOS를 실행한다. 시스템 BIOS는, PC(1200)의 하드웨어 제어를 위한 컴퓨터 프로그램이다.
노스 브리지(1302)는 CPU(1301)의 로컬 버스와 사우스 브리지(1309)를 접속하는 브리지 디바이스이다. 노스 브리지(1302)는 주 메모리(1303)에의 액세스를 제어하는 메모리 컨트롤러를 갖는다.
또한, 노스 브릿지(1302)는, AGP(acce1erated graphics port) 버스 등을 통해 비디오 컨트롤러(1304)와의 통신, 및 오디오 컨트롤러(1305)와의 통신을 실행하는 기능을 갖는다.
주 메모리(1303)는, 컴퓨터 프로그램과 데이터를 내부에 일시적으로 기억하고, CPU(1301)의 작업 영역으로서 기능한다. 주 메모리(1303)는, 예컨대 DRAM으로 구성된다.
비디오 컨트롤러(1304)는, PC(1200)의 디스플레이 모니터로서 사용되는 표시유닛(1202)을 제어하는 비디오 재생 컨트롤러이다.
오디오 컨트롤러(1305)는 PC(1200)의 스피커(1306)를 제어하는 오디오 재생 컨트롤러이다.
사우스 브리지(1309)는 LPC(low pin count) 버스(1314) 상의 각 디바이스, 및 PCI(pripheral component interconnect) 버스(1315) 상의 각 디바이스를 제어한다. 또한, 사우스 브리지(1309)는, 각종 소프트웨어 및 데이터를 기억하는 메모리 장치인 SSD(l00)를, ATA 인터페이스를 통해 제어한다.
PC(1200)는 섹터 단위로 SSD(l00)에 액세스한다. ATA 인터페이스를 통해, 기록 커맨드, 판독 커맨드, 캐시 플러시 커맨드 등이 SSD(l00)에 입력된다.
사우스 브리지(1309)는, BIOS-ROM(1310) 및 ODD 유닛(1311)에의 액세스를 제어하는 기능을 갖는다.
EC/KBC(1312)는, 전력 관리를 위한 임베디드 컨트롤러와, 키보드(1206) 및 터치 패드(1207)를 제어하기 위한 키보드 컨트롤러가 집적화된 원 칩(one-chip) 마이크로컴퓨터이다.
EC/KBC(1312)는, 사용자에 의한 파워 버튼의 조작에 기초하여 PC(1200)의 전원을 온/오프하는 기능을 갖는다. 네트워크 컨트롤러(1313)는, 예컨대 인터넷 등의 외부 네트워크와의 통신을 실행하는 통신 장치이다.
부가적인 이점 및 변형은 당업자에 의해서 용이하게 도출될 것이다. 따라서, 본 발명의 보다 광범한 양태는, 여기에 도시되고 설명된 특정한 상세 및 대표적인 실시예에 한정되지 않는다. 따라서, 첨부의 청구항 및 그 균등물에 의해서 정의되는 총괄적인 발명의 개념의 정신 또는 범위에서 일탈하지 않고, 여러가지 변경이 가능할 수도 있다.

Claims (30)

  1. 메모리 시스템으로서,
    복수의 메모리 칩들을 포함하는 복수의 채널 병렬 동작 요소들을 갖는 비휘발성 반도체 메모리로서, 각 메모리 칩은 병렬로 동작할 수 있는 복수의 플레인들로 분할되고, 각 플레인은 데이터 소거 단위로서 복수의 물리 블록들을 포함하고, 병렬로 동작된 각 채널 병렬 동작 요소들에서의 메모리 칩들은, 채널 병렬 동작 요소들에 걸쳐 각각이 레디/비지(ready/busy) 신호를 공유하는 복수의 뱅크들로 분할되는 것인 상기 비휘발성 반도체 메모리; 및
    병렬로 동작된 채널 병렬 동작 요소들로부터 선택된 물리 블록들과 연관된 논리 블록에 기초하여 프리 블록을 관리하고, 플레인들, 뱅크들, 또는 채널 병렬 동작 요소들에 의한 병렬 동작을 제어하는 컨트롤러
    를 포함하고,
    상기 컨트롤러는,
    동일한 뱅크 번호, 동일한 칩 번호, 및 동일한 플레인 번호를 갖는 논리 블록들이 프리 블록들로서 각각 관리되는 복수의 프리 블록 관리 리스트들; 및
    상기 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 선택된 프리 블록 관리 리스트들로부터 프리 블록를 취득하는 프리 블록 선택 유닛
    을 포함하는 것인 메모리 시스템.
  2. 제 1 항에 있어서, 상기 프리 블록 선택 유닛은, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 하나의 뱅크에 속하고 하나의 칩에 속하는 더 작은 배드(bad) 블록수를 갖는 하나의 플레인에 대응하는 프리 블록 관리 리스트가 우선하여 선택되는 것인 메모리 시스템.
  3. 제 1 항에 있어서, 상기 프리 블록 선택 유닛은, 뱅크들 간의 우선도들을 설정하지 않고 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하고, 뱅크에서의 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 하나의 뱅크에 속하고 하나의 칩에 속하는 더 작은 배드 블록수를 갖는 하나의 플레인에 대응하는 프리 블록 관리 리스트가 우선하여 선택되는 것인 메모리 시스템.
  4. 제 3 항에 있어서, 상기 프리 블록 선택 유닛은, 배드 블록수에 역으로 대응하는 값으로 가중된 라운드 로빈(round robin)을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  5. 제 3 항에 있어서, 상기 프리 블록 선택 유닛은, 프리 블록 관리 리스트에 들어간 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  6. 제 3 항에 있어서, 상기 프리 블록 선택 유닛은, 프리 블록과 액티브 블록으로서 사용 가능한 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  7. 제 3 항에 있어서, 상기 프리 블록 선택 유닛은, 비휘발성 반도체 메모리의 기억 영역 중, 호스트측에서 사용될 논리 어드레스에 의하여 지정될 수 있는 리저브(reserved) 영역을 제외하고, 프리 블록과 액티브 블록으로서 사용 가능한 마진(margin) 영역에 속하는 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  8. 제 3 항에 있어서, 상기 프리 블록 선택 유닛은, 비휘발성 반도체 메모리의 기억 영역 중, 호스트측에서 사용될 논리 어드레스에 의하여 지정될 수 있는 리저브 영역을 제외하고, 프리 블록과 액티브 블록으로서 사용 가능한 마진 영역에 속하는 논리 블록들의 프리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  9. 제 1 항에 있어서, 병렬 동작 가능한 프리 블록수를 계산하는 프리 블록 병렬도 계산 유닛을 더 포함하는 메모리 시스템.
  10. 제 9 항에 있어서, 병렬로 동작하는 프리 블록수인 병렬도가 지정되는 경우, 상기 프리 블록 선택 유닛은, 각 플레인들의 병렬 동작에 우선도가 부여되는 제1 모드, 및 뱅크들의 병렬 동작에 우선도가 부여되는 제2 모드 사이를 전환할 수 있고, 상기 프리 블록 관리 리스트들로부터 선택된 모드에 대응하는 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  11. 제 10 항에 있어서, 상기 프리 블록 선택 유닛은, 제1 모드의 뱅크들 간의 선택 우선도를 나타내는 정보의 제1 피스(piece)와, 제2 모드의 뱅크들 간의 선택 우선도를 나타내는 정보의 제2 피스가 각 뱅크에 대하여 등록되어 있는 테이블을 포함하고, 상기 프리 블록 선택 유닛은, 상기 테이블에 등록된 정보에 따라 프리 블록 관리 리스트들로부터 선택된 모드에 대응하는 요구되는 프리 블록 관리 리스트수를 선택하는 것인 메모리 시스템.
  12. 제 11 항에 있어서, 플레인 마진은 뱅크에 속하는 각 칩의 각 플레인에서의 프리 블록수로서 설정되고, 칩 마진은 동일한 칩에 포함된 복수의 플레인들의 플레인 마진들의 최소값으로서 설정되고,
    상기 정보의 제1 피스는, 뱅크에 속하는 칩들의 최대 칩 마진을 갖는 칩과, 칩 마진의 최대값을 식별하기 위한 정보를 포함하고,
    상기 정보의 제2 피스는, 뱅크에 속하는 각 칩의 플레인들의 최대 플레인 마진을 갖는 칩에서의 플레인과, 플레인 마진의 최대값을 식별하기 위한 정보를 포함하는 것인 메모리 시스템.
  13. 제 12 항에 있어서, 상기 제1 모드가 실행되어야 하는 경우, 상기 프리 블록 선택 유닛은, 상기 정보의 제1 피스에 포함된 칩보다 테이블에 등록된 상기 정보의 제2 피스에 포함된 칩의 플레인을 우선하여 선택하고, 더 큰 플레인 마진 또는 칩 마진을 갖는 칩의 플레인 또는 칩을 우선하여 선택하고,
    상기 제2 모드가 실행되어야 하는 경우, 상기 프리 블록 선택 유닛은, 상기 정보의 제2 피스에 포함된 칩의 플레인보다 테이블에 등록된 상기 정보의 제1 피스에 포함된 칩을 우선하여 선택하고, 더 큰 플레인 마진 또는 칩 마진을 갖는 칩의 플레인 또는 칩을 우선하여 선택하는 것인 메모리 시스템.
  14. 복수의 메모리 칩들을 포함하는 복수의 채널 병렬 동작 요소들을 갖는 비휘발성 반도체 메모리를 제어하기 위한 메모리 시스템의 제어 방법으로서, 각 메모리 칩은 병렬로 동작할 수 있는 복수의 플레인들로 분할되고, 각 플레인은 데이터 소거 단위로서 복수의 물리 블록들을 포함하고, 병렬로 동작된 각 채널 병렬 동작 요소들에서의 메모리 칩들은, 채널 병렬 동작 요소들에 걸쳐 각각이 레디/비지 신호를 공유하는 복수의 뱅크들로 분할되어, 플레인들, 뱅크들, 또는 채널 병렬 동작 요소들에 의한 병렬 동작이 수행될 수 있는 것인 상기 메모리 시스템의 제어 방법은,
    병렬로 동작된 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록으로서의 프리 블록을, 복수의 프리 블록 관리 리스트들에서 동일한 뱅크 번호, 동일한 칩 번호, 및 동일한 플레인 번호를 갖는 프리 블록으로서 각각 관리하는 단계; 및
    상기 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 선택된 프리 블록 관리 리스트들로부터 프리 블록을 취득하는 단계
    를 포함하는 메모리 시스템의 제어 방법.
  15. 제 14 항에 있어서, 프리 블록을 취득하는 경우, 상기 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 하나의 뱅크에 속하고 하나의 칩에 속하는 더 작은 배드 블록수를 갖는 하나의 플레인에 대응하는 프리 블록 관리 리스트가 우선하여 선택되는 단계를 포함하는 메모리 시스템의 제어 방법.
  16. 제 14 항에 있어서, 프리 블록을 취득하는 경우, 상기 뱅크들 간의 우선도들을 설정하지 않고 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하고, 뱅크에서의 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 하나의 뱅크에 속하고 하나의 칩에 속하는 더 작은 배드 블록수를 갖는 하나의 플레인에 대응하는 프리 블록 관리 리스트가 우선하여 선택되는 단계를 포함하는 메모리 시스템의 제어 방법.
  17. 제 16 항에 있어서, 프리 블록을 취득하는 경우, 배드 블록수에 역으로 대응하는 값으로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  18. 제 16 항에 있어서, 프리 블록을 취득하는 경우, 프리 블록 관리 리스트에 들어간 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  19. 제 16 항에 있어서, 프리 블록을 취득하는 경우, 프리 블록과 액티브 블록으로서 사용 가능한 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  20. 제 16 항에 있어서, 프리 블록을 취득하는 경우, 비휘발성 반도체 메모리의 기억 영역 중, 호스트측에서 사용될 논리 어드레스에 의하여 지정될 수 있는 리저브 영역을 제외하고, 프리 블록과 액티브 블록으로서 사용 가능한 마진 영역에 속하는 논리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  21. 제 16 항에 있어서, 프리 블록을 취득하는 경우, 비휘발성 반도체 메모리의 기억 영역 중, 호스트측에서 사용될 논리 어드레스에 의하여 지정될 수 있는 리저브 영역을 제외하고, 프리 블록과 액티브 블록으로서 사용 가능한 마진 영역에 속하는 논리 블록들의 프리 블록수로 가중된 라운드 로빈을 이용하여, 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  22. 제 14 항에 있어서, 병렬 동작 가능한 프리 블록수를 계산하는 단계를 더 포함하는 메모리 시스템의 제어 방법.
  23. 제 22 항에 있어서, 프리 블록을 취득하는 경우, 병렬로 동작하는 프리 블록수인 병렬도가 지정되는 경우,
    각 플레인들의 병렬 동작에 우선도가 부여되는 제1 모드, 및 뱅크들의 병렬 동작에 우선도가 부여되는 제2 모드 간에 전환을 가능하게 하는 단계; 및
    상기 프리 블록 관리 리스트들로부터 선택된 모드에 대응하는 요구되는 프리 블록 관리 리스트수를 선택하는 단계
    를 포함하는 메모리 시스템의 제어 방법.
  24. 제 23 항에 있어서, 프리 블록을 취득하는 경우, 제1 모드의 뱅크들 간의 선택 우선도를 나타내는 정보의 제1 피스, 및 제2 모드의 뱅크들 간의 선택 우선도를 나타내는 정보의 제2 피스가 각 뱅크에 대하여 등록되어 있는 테이블에 등록된 정보에 따라, 상기 프리 블록 관리 리스트들로부터 선택된 모드에 대응하는 요구되는 프리 블록 관리 리스트수를 선택하는 단계를 포함하는 메모리 시스템의 제어 방법.
  25. 제 24 항에 있어서, 플레인 마진은 뱅크에 속하는 각 칩의 각 플레인에서의 프리 블록수로서 설정되고, 칩 마진은 동일한 칩에 포함된 복수의 플레인들의 플레인 마진들의 최소값으로서 설정되고,
    상기 정보의 제1 피스는, 뱅크에 속하는 칩들의 최대 칩 마진을 갖는 칩과, 칩 마진의 최대값을 식별하기 위한 정보를 포함하고,
    상기 정보의 제2 피스는, 뱅크에 속하는 각 칩의 플레인들의 최대 플레인 마진을 갖는 칩의 플레인과, 플레인 마진의 최대값을 식별하기 위한 정보를 포함하는 것인 메모리 시스템의 제어 방법.
  26. 제 25 항에 있어서, 프리 블록을 취득하는 경우,
    상기 제1 모드가 실행되어야 하는 경우, 상기 정보의 제1 피스에 포함된 칩보다 테이블에 등록된 상기 정보의 제2 피스에 포함된 칩의 플레인을 우선하여 선택하고, 더 큰 플레인 마진 또는 칩 마진을 갖는 칩의 플레인 또는 칩을 우선하여 선택하는 단계; 및
    상기 제2 모드가 실행되어야 하는 경우, 상기 정보의 제2 피스에 포함된 칩의 플레인보다 테이블에 등록된 상기 정보의 제1 피스에 포함된 칩을 우선하여 선택하고, 더 큰 플레인 마진 또는 칩 마진을 갖는 칩의 플레인 또는 칩을 우선하여 선택하는 단계
    를 포함하는 메모리 시스템의 제어 방법.
  27. 복수의 메모리 칩들을 포함하는 복수의 채널 병렬 동작 요소들을 갖는 비휘발성 반도체 메모리를 제어하는 컨트롤러로서, 각 메모리 칩은 병렬로 동작할 수 있는 복수의 플레인들로 분할되고, 각 플레인은 데이터 소거 단위로서 복수의 물리 블록들을 포함하고, 병렬로 동작된 각 채널 병렬 동작 요소들에서의 메모리 칩들은, 채널 병렬 동작 요소들에 걸쳐 각각이 레디/비지 신호를 공유하는 복수의 뱅크들로 분할되어, 플레인들, 뱅크들 또는 채널 병렬 동작 요소들에 의한 병렬 동작이 수행될 수 있는 것인 상기 컨트롤러는,
    병렬로 동작된 채널 병렬 동작 요소들로부터 선택된 복수의 물리 블록들과 연관된 논리 블록으로서의 프리 블록을, 동일한 뱅크 번호, 동일한 칩 번호 및 동일한 플레인 번호를 갖는 프리 블록으로서 각각 관리하기 위한 복수의 프리 블록 관리 리스트들; 및
    상기 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 선택된 프리 블록 관리 리스트들로부터 프리 블록을 취득하는 프리 블록 선택 유닛
    을 포함하는 컨트롤러.
  28. 제 27 항에 있어서, 상기 프리 블록 선택 유닛은, 뱅크들 간의 우선도들을 설정하지 않고 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하고, 뱅크에서의 프리 블록 관리 리스트들로부터 요구되는 프리 블록 관리 리스트수를 선택하여, 하나의 뱅크에 속하고 하나의 칩에 속하는 더 작은 배드 블록수를 갖는 하나의 플레인에 대응하는 프리 블록 관리 리스트가 우선하여 선택되는 것인 컨트롤러.
  29. 제 1 항에 기재된 상기 메모리 시스템을 포함하는 퍼스널 컴퓨터.
  30. 제 3 항에 기재된 상기 메모리 시스템을 포함하는 퍼스널 컴퓨터.
KR1020117018641A 2009-02-12 2010-02-12 메모리 시스템 및 메모리 시스템의 제어 방법 KR101269366B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2009030299 2009-02-12
JPJP-P-2009-030299 2009-02-12
PCT/JP2010/052480 WO2010093056A1 (en) 2009-02-12 2010-02-12 Memory system and method of controlling memory system

Publications (2)

Publication Number Publication Date
KR20110107845A KR20110107845A (ko) 2011-10-04
KR101269366B1 true KR101269366B1 (ko) 2013-05-29

Family

ID=42561893

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117018641A KR101269366B1 (ko) 2009-02-12 2010-02-12 메모리 시스템 및 메모리 시스템의 제어 방법

Country Status (7)

Country Link
US (1) US8463986B2 (ko)
EP (1) EP2396729B1 (ko)
JP (1) JP5323199B2 (ko)
KR (1) KR101269366B1 (ko)
CN (1) CN102317925B (ko)
TW (1) TWI432961B (ko)
WO (1) WO2010093056A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9484104B2 (en) 2014-03-04 2016-11-01 Samsung Electronics Co., Ltd. Nonvolatile memory system with block managing unit and method of operating the same

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
KR20140027859A (ko) 2012-08-27 2014-03-07 삼성전자주식회사 호스트 장치 및 이를 포함하는 시스템
CN102880570B (zh) * 2012-09-05 2016-04-27 记忆科技(深圳)有限公司 固态硬盘的加权磨损均衡方法及系统
JP5994647B2 (ja) * 2013-01-11 2016-09-21 三菱電機株式会社 データ記録装置、及びデータ記録方法
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
WO2015083225A1 (ja) * 2013-12-02 2015-06-11 富士通株式会社 情報処理装置、ストレージ、及びアクセス制御方法
US9582201B2 (en) 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
TWI595632B (zh) * 2015-02-23 2017-08-11 Toshiba Kk Memory system
US10055267B2 (en) * 2015-03-04 2018-08-21 Sandisk Technologies Llc Block management scheme to handle cluster failures in non-volatile memory
US20170017420A1 (en) * 2015-07-15 2017-01-19 Innovium, Inc. System And Method For Enabling High Read Rates To Data Element Lists
KR20180083082A (ko) * 2017-01-12 2018-07-20 에스케이하이닉스 주식회사 정정 및 방어가 가능한 메모리 장치 및 메모리 모듈
JP6765321B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
JP2018163434A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 メモリシステム
CN108469946B (zh) * 2018-03-31 2021-04-20 深圳忆联信息系统有限公司 一种用于提高ssd写入效率的组块方法和装置
CN109445697A (zh) * 2018-10-22 2019-03-08 郑州云海信息技术有限公司 一种组块方法及装置
KR20210106119A (ko) * 2020-02-20 2021-08-30 에스케이하이닉스 주식회사 메모리 시스템
JP7457248B2 (ja) 2020-05-27 2024-03-28 株式会社バッファロー 記憶装置
US11556279B2 (en) * 2020-08-21 2023-01-17 Samsung Electronics Co., Ltd. System device, and method for memory interface including reconfigurable channel
CN112612722A (zh) * 2020-12-28 2021-04-06 深圳忆联信息系统有限公司 变长的数据管理方法、装置、计算机设备及存储介质
WO2022212205A1 (en) * 2021-03-29 2022-10-06 Micron Technology, Inc. Sideband communication management

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001167586A (ja) 1999-12-08 2001-06-22 Toshiba Corp 不揮発性半導体メモリ装置
US7020739B2 (en) 2000-12-06 2006-03-28 Tdk Corporation Memory controller, flash memory system having memory controller and method for controlling flash memory device
US6895464B2 (en) * 2002-06-03 2005-05-17 Honeywell International Inc. Flash memory management system and method utilizing multiple block list windows
US7383375B2 (en) 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7433993B2 (en) 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US20050144363A1 (en) 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
JP2005209058A (ja) * 2004-01-26 2005-08-04 Megawin Technology Co Ltd フラッシュメモリの読み書きの制御方法
US7395385B2 (en) * 2005-02-12 2008-07-01 Broadcom Corporation Memory management for a mobile multimedia processor
US7506098B2 (en) * 2006-06-08 2009-03-17 Bitmicro Networks, Inc. Optimized placement policy for solid state storage devices
KR20090088858A (ko) * 2006-10-12 2009-08-20 쌘디스크 코포레이션 최악의 경우 제어 데이터 관리를 사용하는 비휘발성 메모리 및 관리 방법
CN101149703A (zh) * 2007-10-10 2008-03-26 中兴通讯股份有限公司 一种固定内存的管理方法
JP2009110053A (ja) 2007-10-26 2009-05-21 Toshiba Corp メモリシステム
JP4533968B2 (ja) 2007-12-28 2010-09-01 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
JP4461170B2 (ja) 2007-12-28 2010-05-12 株式会社東芝 メモリシステム
JP2009211192A (ja) 2008-02-29 2009-09-17 Toshiba Corp メモリシステム
JP4489127B2 (ja) 2008-02-29 2010-06-23 株式会社東芝 半導体記憶装置
JP4691123B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP2009211233A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP5010505B2 (ja) 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP4653817B2 (ja) 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
JP4551940B2 (ja) 2008-03-01 2010-09-29 株式会社東芝 メモリシステム
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4498426B2 (ja) 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP2009211234A (ja) 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4675985B2 (ja) 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
US8276043B2 (en) 2008-03-01 2012-09-25 Kabushiki Kaisha Toshiba Memory system
JP4745356B2 (ja) 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
JP4762261B2 (ja) 2008-03-12 2011-08-31 株式会社東芝 メモリシステム
JP4439569B2 (ja) 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP5253901B2 (ja) 2008-06-20 2013-07-31 株式会社東芝 メモリシステム
CN101329655B (zh) * 2008-07-31 2011-09-28 北京天碁科技有限公司 一种内存管理方法和内存管理装置
JP5404483B2 (ja) 2010-03-17 2014-01-29 株式会社東芝 メモリシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9484104B2 (en) 2014-03-04 2016-11-01 Samsung Electronics Co., Ltd. Nonvolatile memory system with block managing unit and method of operating the same

Also Published As

Publication number Publication date
TWI432961B (zh) 2014-04-01
KR20110107845A (ko) 2011-10-04
EP2396729A1 (en) 2011-12-21
JP5323199B2 (ja) 2013-10-23
US20110302361A1 (en) 2011-12-08
CN102317925B (zh) 2014-07-23
US8463986B2 (en) 2013-06-11
EP2396729B1 (en) 2019-05-22
JP2012517627A (ja) 2012-08-02
CN102317925A (zh) 2012-01-11
TW201042647A (en) 2010-12-01
WO2010093056A1 (en) 2010-08-19
EP2396729A4 (en) 2014-06-18

Similar Documents

Publication Publication Date Title
KR101269366B1 (ko) 메모리 시스템 및 메모리 시스템의 제어 방법
US8266396B2 (en) Memory system comprising blocks operable in parallel
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
JP7366795B2 (ja) メモリシステムおよび制御方法
JP6250613B2 (ja) 装置における電源管理のためのリソース割当及び解除
KR100441587B1 (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
JP5728672B2 (ja) ハイブリッドメモリ管理
JP5823875B2 (ja) 固体メモリフォーマッティング
JP5221332B2 (ja) メモリシステム
US20130227246A1 (en) Management information generating method, logical block constructing method, and semiconductor memory device
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
JP2011070365A (ja) メモリシステム
KR100988388B1 (ko) 플래시 메모리 장치의 성능 향상 방법 및 이를 수행하는 플래시 메모리 장치
JP2023044518A (ja) メモリシステムおよび方法
JP2013200741A (ja) 半導体記憶装置、その制御方法及び情報処理装置
US10713163B2 (en) Set aware system data and mapping tables
US20230376223A1 (en) Memory system and controlling method
JP2013200722A (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: 20160421

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170420

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180427

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 7