KR100630980B1 - 메모리 카드 및 반도체 장치 - Google Patents

메모리 카드 및 반도체 장치 Download PDF

Info

Publication number
KR100630980B1
KR100630980B1 KR1020040075362A KR20040075362A KR100630980B1 KR 100630980 B1 KR100630980 B1 KR 100630980B1 KR 1020040075362 A KR1020040075362 A KR 1020040075362A KR 20040075362 A KR20040075362 A KR 20040075362A KR 100630980 B1 KR100630980 B1 KR 100630980B1
Authority
KR
South Korea
Prior art keywords
address
block
memory
card
data
Prior art date
Application number
KR1020040075362A
Other languages
English (en)
Other versions
KR20050079210A (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 KR20050079210A publication Critical patent/KR20050079210A/ko
Application granted granted Critical
Publication of KR100630980B1 publication Critical patent/KR100630980B1/ko

Links

Images

Classifications

    • 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/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • 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/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators

Abstract

메모리 카드(1)가 제어기(4)와 비휘발성 메모리(3)를 포함한다. 제어기(4)는 제1 소거 블록 사이즈를 갖는 반도체 메모리의 제1 어드레스와 상기 제1 소거 블록 사이즈와는 다른 제2 소거 블록 사이즈를 갖는 반도체 메모리의 제2 어드레스 간의 대응을 관리한다. 비휘발성 반도체 메모리(3)는 제2 소거 블록 사이즈를 갖는 메모리이다. 제어기(4)는 제2 어드레스에 의해 비휘발성 반도체 메모리(3)에 대한 액세스를 실행한다.
메모리 카드, 플래시 메모리, 블록 카드, 기입/소거 단위

Description

메모리 카드 및 반도체 장치{MEMORY CARD AND SEMICONDUCTOR DEVICE}
도 1은 본 발명의 일 실시 형태에 따른 메모리 카드에 탑재되는 장치들의 배치의 개략 투시도.
도 2는 본 발명의 일 실시 형태에 따른 호스트와 메모리 카드를 포함하는 구성을 나타내는 블록도.
도 3은 호스트가 상정하고 있는 플래시 메모리와 실제로 사용하는 플래시 메모리 간의 데이터 배치의 차이를 나타내는 도면.
도 4는 호스트와 메모리 카드(큰 블록 카드)의 통신 계층을 나타내는 도면.
도 5a 및 도 5b는 호스트 측으로부터 전달되는 커맨드의 포맷들을 나타내는 도면.
도 6은 호스트 측이 상정하고 있는 블록 기입 조작과 메모리 카드(큰 블록 카드) 측이 실제로 행하는 기입 처리를 대비하는 도면.
도 7a 및 도7b는 큰 블록 카드 내의 플래시 메모리의 (소거 단위인 256 kbyte 물리적 블록 분에 대한) 블록 포맷을 나타내는 도면.
도 8은 제어기 내의 RAM 상에 작성되는 각종의 테이블을 나타내는 도면.
도 9는 각각의 테이블의 작성 처리의 흐름도.
도 10은 기입 액세스 처리의 흐름도.
도 11은 도 10에 도시된 스텝 B3에 있어서의 데이터 기입 처리의 상세사항을 도시하는 흐름도.
도 12는 도 11에 도시된 흐름도의 단계 C1에서의 처리의 개략도.
도 13은 도 11에 도시된 흐름도의 단계 C2에서의 처리의 개략도.
도 14는 도 11에 도시된 흐름도의 단계 C3에서의 처리의 개략도.
도 15a 및 도 15b는 도 1l에 도시된 흐름도의 단계 C4의 처리의 개략도.
도 16은 판독 액세스에 대한 처리의 흐름도.
도 17은 소거 액세스에 대한 처리의 흐름도.
도 18은 본 발명의 실시 형태에 따른 메모리 카드에 대하여 호스트가 기입을 행할 때 해당 메모리 카드의 I/O 핀과 R/B 핀의 신호들의 타이밍도.
도 19는 본 발명의 실시 형태에 따른 메모리 카드 내의 비휘발성 메모리에 대하여 해당 메모리 카드 내의 제어기가 기입을 행할 때 메모리 카드 내의 비휘발성 메모리의 I/0 핀과 R/B 핀의 신호들의 타이밍도.
도 20은 본 발명의 실시 형태에 따른 메모리 카드의 사용 방법의 개략도.
<도면의 주요 부분에 대한 부호의 설명>
1: 메모리 카드(큰 블록 카드)
2: PCB 기판
3: NAND 형 플래시 메모리
4: 제어기
5: 메모리 인터페이스부
6: 호스트 인터페이스
7: 버퍼
8: CPU
9: ROM
10: RAM
11: 작은 블록 카드 물리적 액세스층
12: 작은 블록 카드 물리적/ 작은 블록 카드 논리 변환층
13: 작은 블록 카드 논리적/ 큰 블록 카드 물리적 변환층
14: 큰 블록 카드 물리적 액세스층
20: 호스트 기기
21: 애플리케이션 소프트웨어
22: 파일 시스템
23: 드라이버 소프트웨어
24: 작은 블록 카드 물리적 액세스층
30: 24 byte 관리 데이터 영역
100: 메모리 카드(작은 블록 카드)
본 발명은, 비휘발성 반도체 메모리를 탑재한 메모리 카드에 관한 것으로, 특히 NAND 형 플래시 메모리를 탑재한 메모리 카드 및 이 메모리 카드에 탑재되는 반도체 장치에 관한 것이다.
각종의 플래시 메모리 카드 중의 몇몇은 호스트가 메모리 카드의 물리적 상태(어느 물리적 블록 어드레스에 어느 논리 섹터 어드레스가 포함되어 있는가, 혹은, 어느 블록이 소거 상태에 있는가)를 관리하도록 구성되었다. 이러한 메모리 카드인 경우, 호스트는 메모리 카드 내의 플래시 메모리를 직접 제어한다. 호스트는, 플래시 메모리의 기입 단위나 소거 단위를 상정하고, 소정의 블록 사이즈를 소거 단위로 하여 기입 액세스나 소거 액세스를 행한다.
최근에 소거 단위의 블록 사이즈를 이전보다 크게 한 메모리 카드가 주목받고 있다.
일본 특허 공개 공보 제2002-133877호에는 메모리 셀로부터의 데이터를 부분 소거할 때의 소거 사이즈를 가변시키고 더 큰 영역으로부터 데이터를 소거하는 경우에도 소거 시간을 짧게 할 수 있는 기술이 개시되어 있다.
액세스 대상이 되는 메모리 카드의 플래시 메모리의 기입 단위나 소거 단위가 변하는 경우(예를 들면, 소거 단위의 블록 사이즈가 커진 경우)에 어떤 수단을 취하지 않는다면, 호스트는 그 메모리 카드에 액세스할 수 없게 된다.
이 문제는 메모리 카드 내에 변환 제어기를 탑재함으로써 해결될 수 있다. 그러나, 플래시 메모리의 내부 상태를 호스트의 지시대로 유지하고자 한다면, 호스트가 플래시 메모리에 대해 기입 액세스 및 소거 액세스를 실행할 때마다 플래시 메모리 상에서 소거 단위로 데이터를 재기입하는 것이 필요해진다. 따라서, 기입 및 소거의 내부 동작 부하가 현저히 증가하는 문제가 생긴다. 상기 문헌도 마찬가지의 문제를 안고 있다.
본 발명의 한 특징에 따라서, 제1 소거 블록 사이즈를 갖는 반도체 메모리의 제1 어드레스와 상기 제 l 소거 블록 사이즈와는 다른 제2 소거 블록 사이즈를 갖는 반도체 메모리의 제2 어드레스 간의 대응을 관리하는 프로그램을 저장한 메모리와, 이 메모리에 저장된 프로그램을 실행하는 프로세서를 포함하는 반도체 장치가 제공된다.
본 발명의 또다른 특징에 따라서, 제1 소거 블록 사이즈를 갖는 반도체 메모리의 제1 어드레스와 제1 소거 블록 사이즈 이외의 제2 소거 블록 사이즈를 갖는 반도체 메모리의 제2 어드레스 간의 대응을 관리하는 제어기와, 제2 소거 블록 사이즈를 갖는 비휘발성 반도체 메모리를 포함하고,이 제어기는 제2 어드레스를 이용하여 비휘발성 반도체 메모리에 대한 액세스를 실행하는 메모리 카드가 제공되다.
명세서에 통합되고 이것의 부분을 이루는 첨부 도면은, 본 발명의 실시 형태를 예시하고, 이상 설명한 일반 설명과 이하에서 제시되는 실시 형태들에 대한 설명과 함께 본 발명의 원리를 설명해 준다.
이하, 도면을 참조하여, 본 발명의 실시 형태들이 설명된다.
도 1은 본 발명의 일 실시 형태에 따른 메모리 카드에 탑재되는 장치들의 배치의 투시도이다.
메모리 카드(1)는 PCB(Printed Circuit Board) 기판(2)을 포함하는데, 이 기판상에는 NAND 형 플래시 메모리(3) 및 제어기(4)가 도1에 도시된 바와 같이 배치되어 있다. 제어기(4)는, CPU(Central Processing Unit)(8) 및 ROM(Read-Only Memory)(9) 등의 기능 블록이 탑재되어 있다. 각각의 디바이스는 후에 상세히 진술한다. NAND 형 플래시 메모리(3)는 1개의 메모리 셀에 1 비트의 정보를 기억하는 2치 메모리를 포함할 수 있다. NAND 형 플래시 메모리(3)는 1개의 메모리 셀에 1 비트보다 많은 정보(예를 들면 2 비트)를 기억하는 다치 메모리를 포함할 수도 있다. NAND 형 플래시 메모리(3) 및 제어기(4)는 동일한 LSI(large-scale integration) 기판 위에 배치될 수도 있다.
이하의 설명에서 사용하는 용어들인, "논리 블록 어드레스", "물리적 블록 어드레스"는 각각 블록 자체의 논리 어드레스와 물리적 어드레스를 의미하는 것이다. 또한, "논리 어드레스" 및 "물리적 어드레스"는 주로 블록 자체의 논리 어드레스 및 물리적 어드레스를 의미하는 것이기는 하지만, 블록 단위보다도 더 작은 분해능 단위에 상당하는 어드레스를 의미할 수도 있다.
도 2는 호스트 기기와 상기 메모리 카드를 포함하는 구성을 나타내는 블록도이다. 도 1의 것과 동일한 소자들은 동일한 참조 부호로 표시된다.
호스트 기기(이하, 호스트라 칭한다)(20)는 자신에게 접속되는 메모리 카드에 대하여 액세스를 행하기 위한 하드웨어 및 소프트웨어(시스템)를 포함하고 있다. 이 호스트(20)는 메모리 카드 내부의 물리적 상태(어느 물리적 블록 어드레스에 어느 논리 섹터 어드레스가 포함되어 있는지, 혹은, 어는 블록이 소거 상태에 있는가)를 관리한다. 호스트(20)는 메모리 카드의 플래시 메모리를 직접 제어한다.
호스트(20)는 16 kbyte의 소거 블록 사이즈를 갖는 NAND 형 플래시 메모리를 사용하는 것을 전제로 하여, 16 kbyte 단위로 플래시 메모리에 대한 논리/물리적 어드레스의 할당을 행한다. 대부분의 경우, 16 kbyte의 논리 어드레스에 관하여 순차적으로 기입 액세스 혹은 판독 액세스를 실행한다 (즉, 해당 커맨드를 발행한다).
메모리 카드(1)는 호스트(20)에 접속되었을 때에 전원 공급을 받아 동작하고, 호스트(20)로부터의 액세스에 상응하는 처리를 행한다. 이 메모리 카드(1)는 앞서 설명한 바와 같이 NAND 형 플래시 메모리(3) 및 제어기(4)를 갖는다.
NAND 형 플래시 메모리(3)는 소거 블록 사이즈(소거 단위의 블록 사이즈)가 256 kbyte인 비휘발성 반도체 메모리이다. 예를 들면, 16 kbyte 단위로 데이터가 메모리(3)에 기입되거나 또는 메모리(3)로부터 판독된다. 이 NAND 형 플래시 메모리(3)는 예를 들면 0.09 μm 프로세스 기술을 이용하여 제작된다. 즉, NAND 형 플래시 메모리(3)의 디자인 룰은 0.1 μm 미만으로 되어있다.
제어기(4)는 상술한 CPU(8) 및 ROM(9) 이외에도, 메모리 인터페이스(5), 호스트 인터페이스(6), 버퍼(7), 및 RAM(Random Access Memory)(10)을 포함한다.
메모리 인터페이스(5)는 제어기(4)와 NAND 형 플래시 메모리(3) 사이의 인터페이스 처리를 행한다. 호스트 인터페이스(6)는 제어기(4)와 호스트(20) 사이의 인터페이스 처리를 행한다.
버퍼(7)는 호스트(20)로부터 전달되는 데이터를 NAND 형 플래시 메모리(3)에 기입할 때에, 일정량의 데이터(예를 들면 1 페이지분)을 일시적으로 기억한다. 또한, 버퍼(7)는 메모리(3)로부터 판독되는 데이터를 호스트(20)로 전달할 때, 일정량의 데이터를 일시적으로 기억한다.
CPU(8)는 메모리 카드(1)의 전체 동작을 제어한다. 메모리 카드(1)가 전원 공급을 받았을 때에, 이 CPU(8)는 ROM(9)에 저장되어 있는 펌웨어(후술하는 제어 프로그램)을 RAM(l0) 상에 로드하여 소정의 처리를 실행한다. 그에 따라 CPU(8)은 각종의 테이블(후술)을 RAM(l0) 상에 작성하고, 호스트(20)로부터 기입 커맨드, 판독 커맨드, 및 소거 커맨드를 수신하고, NAND 형 플래시 메모리(3) 상의 이들의 해당 영역들에 대한 액세스를 실행하고, 버퍼(7)를 통한 데이터 전송을 제어한다.
ROM(9)은 CPU(8)에 의해 사용되는 제어 프로그램 등을 저장하는 메모리이다. RAM(l0)은 CPU(8)의 작업 영역으로서 사용되어 제어 프로그램이나 각종의 테이블을 기억하는 메모리이다.
도 3은 호스트(20)가 상정하고 있는 플래시 메모리와 실제로 사용하는 플래시 메모리(즉, 메모리 카드(1)의 NAND 형 플래시 메모리(3))사이의 데이터 배치의 차이를 나타내고 있다.
호스트(20)가 상정하고 있는 플래시 메모리에서는, 각 페이지는 528 byte(512 byte 분의 데이터 기억부 + 16 byte 분의 용장부)를 갖고 있고, 32 페이지 분이 1개의 소거 단위(즉, 16 kbyte + 0.5 kbyte(여기서, k는 1024))가 된다. 이하에서는, 이러한 플래시 메모리를 탑재한 카드를 "작은 블록 카드" 라고 칭하는 경우가 있다.
실제로 사용하는 플래시 메모리(3)에서는, 각 페이지는 2112 byte(512 byte 분의 데이터 기억부 × 4 + 10 byte 분의 용장부 × 4 + 24 byte 분의 관리 데이터 기억부) 를 갖고 있고, 128 페이지 분이 1개의 소거 단위(즉, 256 kbyte + 8 kbyte)가 된다. 이하에서는, 이러한 플래시 메모리(3)를 탑재한 카드를 "큰 블록 카드" 라고 칭하는 경우가 있다. 또, 편의상, 작은 블록 카드의 소거 단위를 16 kbyte 로 하고, 큰 블록 카드의 소거 단위를 256 kbyte 로 하자.
호스트(20)가 상정하고 있는 플래시 메모리와 실제로 사용하는 플래시 메모리(3)는, 각각, 플래시 메모리에 대한 데이터 입/출력을 행하기 위한 페이지 버퍼를 구비하고 있다. 호스트(20)가 상정하고 있는 플래시 메모리의 페이지 버퍼의 기억 용량은 528 byte(512 byte+ 16 byte)이고, 실제로 사용하는 플래시 메모리(3)의 페이지 버퍼의 기억 용량은 2112 byte(2048 byte + 64 byte)이다. 예를 들어, 데이터 기입 모드에서는, 각 페이지 버퍼는 자신의 기억 용량에 대응하는 각 페이지에 대해 플래시 메모리에 대한 데이터 입출력 처리를 실행한다.
도 3의 예에서는, 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈의 16배인 경우를 도시했다. 본 발명은 이 배율에만 한정되는 것은 아니다. 전자가 후자에 대해 실질적인 정수 배이면 이 사이즈들은 변화될 수 있다.
큰 블록 카드를 실용적으로 만들기 위해서는, 도 3에 도시한 플래시 메모리(3)의 기억 용량이 1 기가비트 이상인 것이 바람직하다. 플래시 메모리(3)의 기억 용량이 예를 들면 1 기가비트인 경우 256 kbyte 블록(소거 단위)의 수는 512 개가 된다.
도 3에 있어서는 소거 단위가 256 kbyte 블록이다. 소거 단위를 128 kbyte 블록이 되도록 구축하는 것도 실용적인데, 이 경우 128 kbyte 블록의 수는 1024 개가 된다.
도 3에서, 실제상 사용되는 플래시 메모리(3)의 소거 블록 사이즈는 호스트(20)에 의해 상정된 플래시 메모리의 것보다 더 크다. 그러나, 본 발명은 이 경우에만 제한되지는 않는다. 실제상 사용되는 플래시 메모리(3)의 소거 블록 사이즈는 호스트(20)에 의해 상정된 플래시 메모리의 크기보다 더 작을 수 있다.
도 4는 호스트(20)측 시스템 및 메모리 카드(1)(큰 블록 카드)의 통신 계층을 나타내는 도면이다.
호스트(20)는, 애플리케이션 소프트웨어(21), 파일 시스템(22), 드라이버 소프트웨어(23), 및 작은 블록 카드 물리적 액세스층(24)을 포함한다. 메모리 카드(1)(큰 블록 카드)는, 작은 블록 카드 물리적 액세스층(11), 작은 블록 카드 물리적/작은 블록 카드 논리 변환층(12), 작은 블록 카드 논리/큰 블록 카드 물리적 변환층(13), 및 큰 블록 카드 물리적 액세스층(14)을 포함한다.
애플리케이션 소프트웨어(21)가 데이터를 파일에 기입할 것을 파일 시스템(22)에 요구하였다면, 파일 시스템(22)은 작은 블록 카드의 논리 블록 어드레스에 기초하여 데이터를 순차적으로 섹터에 기입할 것을 드라이버 소프트웨어(23)에게 지시한다. 작은 블록 카드의 논리 블록 어드레스에 기초하여 16 kbyte 블록마다 순차 기입을 실현하기 위해서, 드라이버 소프트웨어(23)는 논리/물리적 블록 변환들을 행하여, 작은 블록 카드의 물리적 블록 어드레스를 표시하는 랜덤 기입 커맨드를 작은 블록 카드 물리적 액세스 층(24)을 통하여 큰 블록 카드에 대하여 발행하고, 데이터 전송을 행한다.
기입 액세스에 있어서는, 작은 블록 카드와 큰 블록 카드 모두의 경우에, 프로토콜 기준으로 (1) 커맨드, (2) 페이지 어드레스(로우 어드레스), (3) 컬럼 어드레스, (4) 데이터, 및 (5) 프로그램 확인 커맨드의 순서로 정보가 전달되는 것을 전제로 하고 있다.
호스트(20)로부터, 작은 블록 카드의 물리적 블록 어드레스를 표시하는 기입 커맨드를 받으면, 작은 블록 카드 물리적 액세스 층(11)은 물리적 블록 어드레스와 데이터뿐만이 아니라 이것에 부수하는 데이터에 포함된 논리 블록 어드레스도 취득한다.
작은 블록 카드 물리적/작은 블록 카드 논리 변환층(12)은 데이터판독 모드에서 작은 블록 카드의 물리적 블록 어드레스(16 kbyte 블록분에 대응)를 작은 블록 카드의 논리 블록 어드레스(16 kbyte 블록분에 대응)로 변환하기 위한 제1 테이블을 갖고 있다. 물리적 액세스층(11)이 기입 커맨드에 응답하여 작은 블록 카드의 논리 블록 어드레스를 취득했을 때, 변환층(12)은 이것을 상기 제1 테이블에 반영시킨다. 변환층(12)은 물리적 블록 어드레스도 상기 제1 테이블에 반영시킨다.
작은 블록 카드 논리/큰 블록 카드 물리적 변환층(13)은 데이터 판독 모드에서 작은 블록 카드의 논리 블록 어드레스(순차 16 kbyte 블록 × 16 개수분에 대 응)를 큰 블록 카드의 물리적 블록 어드레스(256 kbyte물리적 블록분에 대응)로 변환하기 위한 제2 테이블을 갖고 있다. 변환층(12)은, 물리적 액세스층(11)이 기입 커맨드를 받아 작은 블록 카드의 논리적 블록 어드레스 취득했을 때에는, 이것을 상기 제2 테이블에 반영시킨다.
큰 블록 카드 물리적 액세스층(14)은, 작은 블록 카드 물리적 액세스층(11)이 취득한 작은 블록 카드의 논리 블록 어드레스에 기초하여 플래시 메모리(3) 내부의 데이터 위치를 결정하고, 256 kbyte 물리적 블록내에 (각각의 페이지에 대해) 2 kbyte 단위로 순차적으로 16 kbyte 분의 데이터를 기입한다. 층(14)은, 작은 블록 카드의 논리 블록 어드레스와 물리적 블록 어드레스를 플래시 메모리(3) 내부의 관리 데이터 영역 내의 소정 영역에 저장한다.
호스트(20)는 작은 블록 카드의 물리적 블록 어드레스에 기초하는 커맨드를 발행하기 때문에, 큰 블록 카드는 어느 256 kbyte 물리적 블록이 작은 블록 카드의 물리적 블록 어드레스에 대응하는 데이터를 갖는 지를 알도록 관리한다. 구체적으로는, 호스트(20)는 16 kbyte 블록마다 작은 블록 카드의 논리적/물리적 블록 어드레스들 사이의 대응 관계를 관리하고, 큰 블록 카드 내의 어느 256 kbyte 물리적 블록이 작은 블록 카드의 순차적 256 kbyte 블록분의 논리 블록 어드레스들에 대응하는 데이터를 저장하는지를 알도록 관리한다.
또한, 호스트(20)는 소거 단위가 16 kbyte 블록인 것을 전제로 하나, 실제로는 그 소거 단위가 256 kbyte 물리적 블록인 큰 블록 카드에 대한 액세스를 실행한다. 큰 블록 카드는 호스트(20)가 사용하고 있는 제어 알고리즘과 물리적 포맷에 맞추어 유연하게 액세스에 응답한다. 새로운 기입 조작이 16 kbvte의 논리 블록 어드레스에 의해 실행되었을 때, 그 이전에 동일한 논리 블록 어드레스에 의해 기입되었을 작은 블록 카드의 16 kbyte 물리적 블록 어드레스에 대응하는 블록(이하, 구 할당 논리 블록으로 지칭)의 데이터 소거된다는 제어 알고리즘을 감안하여, 호스트(20)는 구 할당 논리 블록이 소거 상태인 것을 에뮬레이트한다. 그러나, 실제로는, 큰 블록 카드 측에서는 16 kbyte 블록 분의 데이터가 소거되지 않는다. 이에 의해, 플래시 메모리(3)에 대한 물리적 조작에 관한 오버헤드 비용이 대폭 감축될 수 있다.
도 5a 및 도 5b는 호스트(20)로부터 전송되는 커맨드의 포맷을 나타내는 도면이다.
호스트(20)로부터 전달되는 커맨드 포맷들의 패킷은, 도 5a에 도시된 바와 같이, 커맨드 종별 정보(여기서는 "기입" 정보), 어드레스(물리적 블록 어드레스), 및 데이터(실제 콘텐츠 데이터 및 부수 데이터(512 byte + 16 byte)등의 각종 정보를 포함하고 있다.
이러한 포맷의 패킷에 있어서는, 작은 블록 카드의 논리 블록 어드레스( 즉, 액세스 대상이 되는 16 byte 블록에 대응하는 논리 어드레스)가 16byte의 부수 데이터에서 소정 위치에 배치되어 있다. 큰 블록 카드는, 커맨드 종별 정보, 물리적 블록 어드레스, 및 데이터를 취득할 뿐만이 아니라, 특히 앞서 설명된 논리 블록 어드레스를 취득한다.
도 6은 호스트(20) 측이 상정하고 있는 블록 기입 조작과 메모리 카드(1)(큰 블록 카드)가 실제로 행하는 기입 처리를 대비하는 도면이다.
작은 블록 카드의 논리 어드레스에 기초하여 16 kbyte 블록마다 순차 기입 조작이 실행되었을 때, 호스트(20)는(도6의 좌측에 있음) 작은 블록 카드의 물리적 블록 어드레스에 기초하여 16 kbyte 블록 단위로 무작위적 기입 조작을 행한다. 이는 데이터가 16 kbyte 블록마다 구 할당 논리 블록으로부터 소거된다는 것을 전제하고 있다.
호스트(20)로부터 기입 커맨드를 수신하였을 때, 큰 블록 카드(도6의 우측에 있음)는 작은 블록 카드의 논리 블록 어드레스에 기초하여 16 kbyte 블록마다 데이터를 플래시 메모리(3) 내에 순차로 데이터를 기입한다. 상기 전제에 따라서, 큰 블록 카드는 호스트(20)에게 작은 블록 카드 내의 구 할당 논리 블록도 소거 상태에 있는 것을 통지한다. 만약, 호스트(20)가 구 할당 논리 블록에 대한 판독 액세스를 실행한다면, 큰 블록 카드는 이 액세스에 응답하여 호스트(20)에게 이 블록은 소거 상태에 있음을 통지한다. 또한, 큰 블록 카드는, 필요에 따라, 호스트(20)에게 작은 블록 카드의 논리 블록 어드레스에 할당되지 않은 작은 블록 카드의 물리적 블록이 소거 상태에 있는 것을 통지한다.
상술한 바와 같이, 호스트(20)는 작은 블록 카드의 물리적 어드레스에 기초하여 16 byte 단위로 무작위의 기입 조작을 행한다. 무작위 기입 조작은 일반적으로 큰 블록(256 kbyte)의 일부만의 데이터를 재기입하기 위해 빈번한 조작들을 야기한다. NAND 형 플래시 메모리에서, 데이터는 블록마다 소거될 수는 없다. 블록의 일부만의 데이터를 재기입 하기 위해서는, 새로운 데이터를 데이터가 소거되었 던 신 블록에 기입하고, 구 블록으로부터 신 블록으로, 기입되지 않을 그 밖의 데이터를 복사할 필요가 있다. 블록의 일부만의 데이터를 재기입하는 처리는 재기입되지 않을 데이터의 복사 동작(이하, "관련 데이터 복사"라고 칭한다)을 부수한다. 재기입 동작이 빈번하게 실행되면, 오버헤드 비용이 매우 증대된다.
본 실시 형태에서는, 호스트(20)로부터 획득되는 논리 어드레스의 순서에 따라서, 물리적 어드레스가 큰 블록 카드 측에서 재 할당된다. 이 재 할당은 블록의 일부만의 데이터의 재기입 동작의 회수를 저감하여, 오버헤드 비용의 증대를 방지한다.
도 7a 및 도 7b는 각각 큰 블록 카드 내의 NAND 형 플래시 메모리(3)의 블록 포맷(소거 단위인 256 kbyte 물리적 블록분)을 나타내는 도면과, 최후의 24 byte 관리 데이터 영역의 상세 사항을 보여주는 도면이다.
큰 블록 카드에서는, 256 kbyte 물리적 블록이, 호스트(20)가 관리하는 단위인 16 kbyte 데이터를 기입하기 위한 16개의 블록(이하, 호스트 관리 블록으로 칭한다)을 포함하고 있다. 데이터 기입 모드에서, 작은 블록 카드의 논리 블록 어드레스의 순으로 데이터 아이템들이 배치된다.
각 호스트 관리 블록은 8개의 페이지로 구성된다. 각 페이지는 네 개의 512 byte 데이터 영역과, 각 데이터 영역에 대응하는 10 byte ECC 영역을 포함하고 있다. 또한, 각 페이지는 최후의 512 byte 데이터 영역 (4번째의 512 byte 데이터 영역) 후에 24 byte 관리 데이터 영역을 포함한다. 따라서, 최후의 10 byte ECC 영역은 네번째의 512 byte 데이터 영역과 24 byte 관리 데이터 영역의 양쪽에 가해 진다.
256 kbyte 물리적 블록에 포함되는 128개의 24 byte 관리 데이터 영역 중에서, 최후의 24 byte 관리 데이터 영역(30)은 호스트(20)로부터 전달되는 커맨드에 의해 취득된 물리적 블록 어드레스에 상당하는 어드레스 정보(이하, "호스트 관리 물리적 어드레스"로 칭한다)와 논리 블록 어드레스에 상당하는 어드레스 정보(이하, "호스트 관리 논리 블록 어드레스"라 칭함)를 통합하여 저장한다.
구체적으로는, 16 kbyte 데이터가 16 kbyte 호스트 관리 블록에 기입될 때마다, 대응하는 호스트 관리 물리적 어드레스(예를 들면 l0 bit 분)가 관리 데이터 영역(30) 내의 소정의 영역에 저장된다. 이에 의해, 16개의 16 kbyte 호스트 관리 블록들에 대응하는 16개의 호스트 관리 물리적 어드레스가 관리 데이터 영역(30) 내의 소정의 영역에 저장된다. 16개의 16 kbyte 호스트 관리 블록에 대응하는 순차 16개의 논리 블록 어드레스 중에서, 선두의 논리 블록 어드레스(예를 들면 10 bit 분)가 호스트 관리 논리 어드레스로서 관리 데이터 영역(30) 내의 소정의 영역에 저장된다.
상기 구성에 있어서, CPU(8)는 각 256 byte 블록 내의 최종 영역(512 byte + 24 byte + 10 byte의 영역)의 정보를 판독하고, 그 중의 24 byte 관리 데이터를 참조하는 것에 의해 256 byte 블록에 대응하는 16 블록 분의 "호스트 관리 논리 블록 어드레스" 및 "호스트 관리 물리적 어드레스"를 획득한다.
각 256 byte 블록 내에 저장된 "호스트 관리 물리적 어드레스" 및 "호스트 관리 논리 블록 어드레스"는 도 4에 도시된 제1 테이블과 제2 테이블을 작성할 때 사용된다.
도8은 제어기(4)의 RAM(10)에서 생성된 각종 테이블들의 도면이다.
제1 테이블은 "작은 블록 카드 논리/물리적 블록 어드레스" 테이블(31)에 상당하고, 제2 테이블은 "작은 블록 카드 논리 블록 어드레스/큰 블록 카드 물리적 블록 어드레스" 테이블(32)에 상당한다. 데이터 관리 영역(30)(도 7a 및 도7b)에 저장되어 있는 "호스트 관리 논리 블록 어드레스" 및 "호스트 관리 물리적 어드레스" 를 이용하여 테이블 (31) 및 (32)는 RAM(l0) 상에 작성된다.
테이블(31)은, 데이터 판독 모드에서, 작은 블록 카드의 물리적 블록 어드레스(16 kbyte 블록 분에 대응)를 작은 블록 카드의 논리 블록 어드레스(16 kbyte 블록 분에 대응)로 변환하는 데에 사용된다.
테이블(32)은 데이터 판독 모드에서 작은 블록 카드의 논리 블록 어드레스(순차 16 kbyte 블록 × 16)를 큰 블록 카드의 물리적 블록 어드레스(256 kbyte 물리적 블록 분에 대응)로 변환하기 위해서 사용된다.
이하에서, 도 9의 흐름도를 참조하여, 각종 테이블의 작성 처리의 흐름을 설명한다.
호스트(20)로부터 전원공급을 받으면(단계 Al), 메모리 카드(l)(큰 블록 카드)는 CPU(8)의 동작을 개시하고, ROM(9) 중에 저장되어 있는 제어 프로그램(작은 블록 카드에 있어서의 물리적/논리 블록 어드레스와 플래시 메모리(3)에 있어서의 물리적 블록 어드레스 간의 대응을 관리하기 위한 프로그램) 등을 RAM(l0)상에 로드하고 프로그램을 실행한다(단계 A2).
다음에, CPU(8)는, 플래시 메모리(3)의 관리 데이터 영역(30) 내에 저장되어 있는 "호스트 관리 논리 블록 어드레스" 및 "호스트 관리 어드레스"를 이용함으로써, RAM(l0) 상에 "작은 블록 카드 논리/물리적 블록 어드레스" 테이블(31)과 "작은 블록 카드 논리 블록 어드레스/큰 블록 카드 물리적 블록 어드레스" 테이블(32)을 작성한다(단계 A3). 그 후, CPU(8)는 호스트(20)로부터의 커맨드 대기 상태가 되고(단계 A4), 제어 프로그램에 따라서, 기입 액세스, 판독 액세스, 및 소거 액세스에 대한 각 처리를 행한다.
이하, 도 10의 흐름도를 참조하여, 기입 액세스에 대한 처리 흐름을 설명한다.
호스트(20)로부터, 예를 들면, 16 kbyte 블록에 대한 기입 커맨드를 받으면(단계 Bl), CPU(8)는 작은 블록 카드의 물리적 블록 어드레스나 데이터뿐만이 아니라 이것에 부수하는 데이터에 포함되고 있는 논리 블록 어드레스도 취득한다(단계 B2).
CPU(8)는 취득한 작은 블록 카드의 논리 블록 어드레스의 순으로 16 kbyte 데이터를 256 kbyte 물리적 블록에 기입하고, 작은 블록 카드의 논리 블록 어드레스와 물리적 블록 어드레스에 상당하는 "호스트 관리 논리 블록 어드레스" 및 "호스트 관리 물리적 어드레스"를 관리 데이터 영역(30) 내의 소정의 영역에 저장한다(단계 B3). CPU(8)는 취득한 작은 블록 카드의 논리 블록 어드레스 및 물리적 블록 어드레스를 RAM(l0) 상의 테이블 (31, 32)에 반영한다 (단계 B4).
마지막으로, CPU(8)는 호스트에게 기입 처리의 완료를 통지한다(단계 B5).
이하, 도 11의 흐름도 및 도 12 내지 도 15의 개념도를 참조하여, 도 10에 도시되는 단계 B3에 있어서의 데이터 기입 처리의 상세 사항에 대하여 설명한다.
CPU(8)는 데이터 기입 모드에서, 목표 논리 블록 어드레스(16 kbyte 블록분에 대응)가 선행하는 논리 블록 어드레스(16 kbyte 블록분에 대응)에 연속하는 것인 지의 여부를 판정한다(도 11의 단계 C1). 즉, 도 12에 도시된 바와 같이, 데이터가 물리적 블록 X1 및 그 이전 물리적 블록들에 기입되었을 때, CPU(8)는 데이터가 다음으로 기입되어야 하는 물리적 블록이 상기 물리적 블록 X1에 계속되는 16 kbyte 물리적 블록 X2에 해당하는 지의 여부를 판정한다.
물리적 블록이 16kbyte 물리적 블록 X2에 해당한다면, CPU(8)는 큰 블록 카드의 256 kbyte 물리적 블록 내에, 먼저 기입한 16 kbyte 데이터에 계속해서, 16 kbyte 데이터를 기입한다 (도 11의 단계 C2). 즉, CPU(8)는 도 13에 도시된 바와 같이, 16 kbyte 물리적 블록 X2에 데이터 기입을 행한다.
물리적 블록이 16kbyte 물리적 블록 X2에 해당하지 않는다면, CPU(8)는 큰 블록 카드의 256 kbyte 물리적 블록 내의 후반 데이터에 관하여 관련 데이터 복사를 실행한다(도 11의 단계 C3). 즉, 도 14에 도시된 바와 같이, 목표 256 kbyte 물리적 블록에 대응하는 구 256 kbyte 블록은, (i) 데이터를 상기 물리적 블록 X1 및 그 이전 물리적 블록들에 기입(갱신)함으로써 불필요해진 구 데이터를 갖는 구 할당 16 kbyte 논리 블록군의 물리적 영역 Y1과, (ii) 데이터 갱신이 없기 때문에 유효하게 남아 있는 유효 데이터를 갖는 물리적 영역 Y2 의 둘 모두를 포함한다. 그래서, CPU(8)는 이 물리적 블록 Y2의 데이터를, 목표인 256 kbyte 물리적 블록 내의 물리적 블록 X1 후에 계속되는 물리적 영역 Y3에 복사한다. 이 복사 후에, CPU(8)는 불필요해진 구 256 kbyte 블록으로부터 데이터를 소거한다.
이후, CPU(8)는 큰 블록 카드가 새로운 256 kbyte 물리적 블록(그 데이터는 소거되어 있음)으로 데이터를 기입하고 대기한다(단계 C4). 데이터가 기입될 영역이 256 kbyte 물리적 블록의 선두인지의 여부에 의해서, 처리가 달라진다. 이 영역이 블록의 선두이라면, 도 15a에 도시된 바와 같이, CPU(8)는 선두 위치에 있는 물리적 블록 Z1에 16 kbyte 데이터를 기입한다. 이 영역이 선두가 아니라면, CPU(8)는 큰 블록 카드의 256 kbyte 물리적 블록의 전반부에 대해 관련 데이터 복사를 실시한다. 즉, 도 15b에 도시된 바와 같이, CPU(8)는, 256 kbyte 물리적 블록의 선두에서 물리적 영역 Z3의 직전까지의 위치까지 구 할당 16 kbyte 논리 블록군의 데이터를 복사한다. 그 후, 물리적 영역 X3에 16 kbyte 데이터를 기입한다.
이하, 도 16의 흐름도를 참조하여, 판독 액세스에 대한 처리의 흐름을 설명한다.
CPU(8)는, 호스트(20)로부터, 예를 들어, 16 kbyte 블록에 대한 판독 커맨드를 받으면 (단계 Dl), 그 커맨드에 부가되어 있는 작은 블록 카드의 물리적 블록 어드레스를 취득한다(단계 D2).
다음에, CPU(8)는 테이블(31)을 참조하고, 취득한 물리적 블록 어드레스로부터 작은 블록 카드의 논리 블록 어드레스를 얻는다(단계 D3). CPU(8)는 테이블(32)을 참조하고, 취득한 논리 블록 어드레스로부터 큰 블록 카드의 물리적 블록 어드레스를 얻는다(단계 D4).
마지막으로, CPU(8)는 얻어진 큰 블록 카드의 물리적 블록 어드레스에 해당하는 물리적 영역으로부터 데이터를 판독하여, 그것을 호스트(20)로 반송한다(단계 D5).
이하, 도 17의 흐름도를 참조하여, 소거 액세스에 대한 처리의 흐름을 설명한다.
CPU(8)는, 호스트(20)로부터, 예를 들면 16 kbyte 블록에 대한 소거 커맨드를 받으면(단계 El), 필요가 있을 때, 이 블록이 소거 상태에 있는 것을 표시하는 정보를 RAM(l0) 상의 소정 영역에 기록한다(단계 E2).
또, 이 단계 E2의 처리는 생략해도 된다. CPU(8)가 단계 E2의 처리를 행하면, 이는 전원 오프 혹은 온 되었을 때 호스트(20)로부터 발행된, 소거 상태의 확인 요구에 정확하게 응답할 수 있다.
마지막으로, CPU(8)는 실제로는 지정된 이 블록에 대한 소거 처리를 행하지 않고서, 호스트(20)에게 데이터가 소거되었다는 것을 통지한다 (단계 E3).
도 18은 본 실시 형태의 메모리 카드(1)에 대하여 호스트(20)가 기입을 행할 때의, 해당 메모리 카드(1)의 I/O 핀과 R/B 핀의 신호들의 타이밍 도이다.
호스트(20)는 메모리 카드가 16 kbyte의 소거 블록 사이즈를 갖는 비휘발성 메모리라고 가정하여 메모리 카드를 제어하고 있다. 예를 들면, 호스트(20)가 메모리 카드에 데이터를 기입할 때, 호스트(20)는 직렬 데이터 입력 커맨드 80H(H는 16 진수임을 표시)를 I/O 핀 (1 내지 8)로 보낸다. 다음에, 호스트(20)는 컬럼 어드레스 C/A 및 페이지 어드레스 P/A를, I/O 핀 (1 내지 8)로 입력한다. 컬럼 어드 레스 C/A 및 페이지 어드레스 P/A는 호스트(20)가 메모리 카드(1)에 대하여 상정하고 있는 가상 물리적 어드레스 공간에서의 컬럼 어드레스 및 페이지 어드레스이다.
호스트(20)는 또한 기입 데이터를, I/O 핀 (1 내지 8)의 개개에 대하여, 528회 입력한다. 구체적으로는, 호스트(20)는 기록 인에이블 핀으로의 신호 입력들을 528회 클록킹하면서, 각각의 I/O 핀에 대하여 528 bit (모든 I/O 핀 합계로 528 byte)의 데이터를 순차 시프트 인(shift in)한다. 데이터의 시프트 인이 완료하면, 호스트(20)는 프로그램 커맨드 10H를 I/O 핀 (1 내지 8)로 입력한다. 이 커맨드에 응답하여, 메모리 카드는 그 R/B 핀에 로우 레벨의 신호를 출력하여, 메모리 카드가 비지 상태인 것을 표시한다. 소정 기간 뒤에 메모리 카드가 R/B 핀에 하이 레벨의 신호를 출력함으로써 메모리 카드가 레디 상태인 것을 표시한다.
도 18에 있어서의 R/B 핀의 상태는 호스트(20)에서 봤을 때 메모리 카드(1)가 어떠한 상태에 있는 지를 나타내는 것임을 주의하라. 즉, 메모리 카드가 도 18에 있어서 프로그램 커맨드 10H에 응답하여 R/B 핀이 비지 상태임을 표시(로우 레벨 신호 출력)했다고 해도, 데이터가 메모리 카드의 NAND 형 플래시 메모리(3)에 대해 실제적으로 항상 기입되고 있지는 않다(즉, 페이지 버퍼로부터 메모리 셀 어레이로 데이터 전송이 항상 일어나지는 않는다). R/B 핀이 레디 상태에 복귀했다고 해도, 데이터가 메모리 카드의 NAND 형 플래시 메모리(3)에 대해 실제적으로 항상 기입 완료되지는 않는다.
도 19는, 본 실시 형태의 메모리 카드(1) 내의 NAND 형 플래시 메모리(3)에 대하여, 메모리 카드(1) 내의 제어기(4)가 NAND 형 플래시 메모리(3)로 기입을 행 할 때, NAND 형 플래시 메모리(3)의 I/O 핀과 R/B 핀들의 신호들의 타이밍 도이다.
제어기(4)는 NAND 형 플래시 메모리(3)는 256 kbyte의 소거 블록 사이즈를 갖는 비휘발성 메모리라고 인식하고 있다. 예를 들면, 제어기(4)가 데이터를 NAND 형 플래시 메모리(3)에 기입할 때, 제어기(1)는 직렬 데이터 입력 커맨드 80H(H는 16진수를 표시)를 I/O 핀 (1 내지 8)로 보낸다. 다음에, 제어기(4)는 컬럼 어드레스 C/A 및 페이지 어드레스 P/A를, I/O 핀 (1 내지 8)로 입력한다. 컬럼 어드레스 C/A 및 페이지 어드레스 P/A는, 제어기(1)가 NAND 형 플래시 메모리(3)에 대하여 상정하고 있는 가상 물리적 어드레스 공간에서의 컬럼 어드레스 및 페이지 어드레스이다. 따라서, 도 19에 있어서의 컬럼 어드레스 C/A 및 페이지 어드레스 P/A는 도18에 도시된 것에 반드시 대응하지는 않는다.
제어기(4)는 또한 기입 데이터를 I/O 핀 (1 내지 8)의 개개에 대하여 2112회 입력한다. 구체적으로는, 제어기(4) 기록 인에이블 핀으로의 신호 입력을 2112회 클록킹하면서, 각각의 I/O 핀에 대하여 2112 비트(모든 I/O 핀 합계로 2112 바이트)의 데이터를 순차 시프트 인한다. 데이터의 시프트 인이 완료하면, 제어기(4)는 프로그램 커맨드 10H를 I/O 핀 (1 내지 8)로 보낸다. 이 커맨드에 응답하여, 메모리 카드는, 그 R/B 핀에 로우 레벨의 신호를 출력하여 메모리 카드가 비지 상태인 것을 표시한다. 소정 기간 뒤에 메모리 카드가 R/B 핀에 하이 레벨의 신호를 출력함으로써 메모리 카드가 레디 상태인 것을 표시한다.
도 19에 있어서의 R/B 핀의 상태는, 제어기(4)에서 보았을 때 NAND 형 플래시 메모리(3)가 어떠한 상태에 있는 지를 나타낸다.
도 18 및 도 19는 컬럼 어드레스 C/A 및 페이지 어드레스 P/A의 각각을 1개의 주기로 나타내고 있다. 그러나, 메모리 카드(1)의 용량 또는 NAND 형 플래시 메모리(3)의 용량에 따라서, 2 주기 이상 요구되는 경우도 있다.
도 20은 본 실시 형태의 메모리 카드(1)의 사용 방법을 개략 도시한 도면이다.
예를 들면, 호스트(20)에 미리 탑재되어 있는 제어기가 16 kbyte의 소거 블록 단위를 갖는 작은 블록 카드(100)의 사용을 전제하고 있다. 메모리 카드 내에 적절한 제어기를 내장하지 않고서 256 kbyte의 소거 블록 단위를 갖는 메모리를 사용하여 큰 블록 카드를 실현하면, 소거 단위가 다른 것으로 인해 정확한 액세스가 이뤄지지 않을 수 있다. 256 kbyte의 소거 블록 단위를 갖는 메모리용의 제어기(4)를 포함하는 큰 블록 카드를 실현하면, 호스트 기기(20)에 삽입된 작은 블록 카드를 사용하는 것이 가능하게 된다.
본 발명의 지금까지의 실시 형태에 따르면, 작은 블록 카드에 액세스하게 되어 있는 호스트 측으로부터 전해지는 기입 커맨드에 부수되어 있는 정보로부터 순차적 논리 블록 어드레스들을 얻고, 이후 큰 블록 카드의 물리적 블록 내에 작은 블록 카드의 논리 블록 어드레스의 순으로 데이터를 배치함으로써, 데이터 배치의 최적화를 실현되고 기입 모드에서의 오버헤드의 감축을 실현하고 있다. 또한, 작은 블록 카드의 물리적/논리 블록 어드레스 및 큰 블록 카드의 물리적 블록 어드레스 간의 대응 관계를 관리함으로써, 작은 블록 카드와 큰 블록 카드 간의 정합성을 효율적으로 유지할 수 있다. 더나아가, 호스트로부터의 소거 커맨드에 대하여, 그것을 실제로 큰 블록 카드의 소거 블록 사이즈의 일부에 반영시키는 것은 아니고(소거 블록이 소거 상태에 부분적으로 설정되지 않는다), 마치 메모리 카드 내의 해당 소거 블록으로부터 데이터가 소거된 것처럼 CPU는 작동한다. 따라서 큰 블록 카드의 내부 작동 부하가 감소될 수 있다.
이상에서 상세히 설명되었듯이, 본 발명의 실시형태에 따르면, 서로 다른 소거 블록 사이즈를 갖는 메모리를 상정하여 이루지는 액세스를 효율적으로 처리할 수 있는 반도체 장치 및 메모리 카드를 제공하는 것이 가능하다.
추가의 이점 및 변형들이 당업자에 의해 쉽게 이뤄질 수 있다. 따라서, 본 발명은 넓은 범위로 볼 때, 여기 도시되고 설명된 특정 사항들 및 대표적 실시예들에만 한정되지는 않는다. 그러므로, 본 청구범위 및 그 균등물에 의해 정의된 일반적 발명 사상의 정신 및 범위를 벗어나지 않고서 여러 가지의 변형들이 이뤄질 수 있다.

Claims (14)

  1. 제1 소거 블록 사이즈를 갖는 반도체 메모리의 제1 어드레스와 상기 제1 소거 블록 사이즈와는 다른 제2 소거 블록 사이즈를 갖는 반도체 메모리의 제2 어드레스 간의 대응을 관리하는 프로그램을 저장하는 메모리와,
    상기 메모리에 저장된 상기 프로그램을 실행하는 프로세서
    를 포함하는 반도체 장치.
  2. 제1항에 있어서, 상기 제2 소거 블록 사이즈는 상기 제1 소거 블록 사이즈보다 큰 반도체 장치.
  3. 제1 소거 블록 사이즈를 갖는 반도체 메모리의 제1 어드레스와 상기 제1 소거 블록 사이즈와는 다른 제2 소거 블록 사이즈를 갖는 반도체 메모리의 제2 어드레스 간의 대응을 관리하는 제어기와,
    상기 제2 소거 블록 사이즈를 갖는 비휘발성 반도체 메모리
    를 포함하고,
    상기 제어기는, 상기 제2 어드레스를 이용하여 상기 비휘발성 반도체 메모리에 대한 액세스를 실행하는 메모리 카드.
  4. 제3항에 있어서, 상기 제어기는,
    상기 대응을 관리하는 프로그램을 저장한 ROM과,
    상기 ROM에 저장된 상기 프로그램을 실행하는 CPU
    를 포함하는 메모리 카드.
  5. 제3항에 있어서, 상기 제1의 어드레스는 물리적 블록 어드레스 및 논리 블록 어드레스를 포함하는 메모리 카드.
  6. 제5항에 있어서, 상기 제어기는, 상기 물리적 블록 어드레스 및 논리 블록 어드레스 중의 적어도 일부를 상기 비휘발성 반도체 메모리 상에 저장하여 관리하는 메모리 카드.
  7. 제5항에 있어서, 상기 제어기는, 상기 제1 어드레스의 상기 논리 블록 어드레스들이 상기 제2 소거 불록의 물리적 블록에서 연속하도록 하기 위해, 상기 제1 어드레스와 상기 제2 어드레스 간의 대응을 관리하는 메모리 카드.
  8. 제5항에 있어서, 상기 제어기는, 외부로부터의 블록 소거 지시에 응답하여, 상기 데이터가 소거되었다는 것을 표시하나 상기 비휘발성 반도체 메모리로부터 데이터를 소거하지는 않는 메모리 카드.
  9. 제3항에 있어서, 상기 제2 소거 블록 사이즈는 상기 제1 소거 블록 사이즈보 다 큰 메모리 카드.
  10. 제3항에 있어서, 상기 제2 소거 블록 사이즈는, 상기 제1 소거 블록 사이즈의 실질적으로 정수배인 메모리 카드.
  11. 제3항에 있어서, 상기 제2 소거 블록 사이즈는 16 kbyte 이고, 상기 제2 소거 블록 사이즈는 256 kbyte인 메모리 카드.
  12. 제3항 내지 제11항 중의 어느 한 항에 있어서, 상기 비휘발성 반도체 메모리는 NAND 형 플래시 메모리인 메모리 카드.
  13. 제3항 내지 제11항 중의 어느 한 항에 있어서, 상기 비휘발성 반도체 메모리는 0.1 μm보다 작은 디자인 룰을 갖는 메모리 카드.
  14. 제3항 내지 제11항 중의 어느 한 항에 있어서, 상기 비휘발성 반도체 메모리는 1 기가비트 또는 그 이상의 용량을 갖는 메모리 카드.
KR1020040075362A 2004-02-04 2004-09-21 메모리 카드 및 반도체 장치 KR100630980B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2004-00028101 2004-02-04
JP2004028101A JP3892851B2 (ja) 2004-02-04 2004-02-04 メモリカード及び半導体装置

Publications (2)

Publication Number Publication Date
KR20050079210A KR20050079210A (ko) 2005-08-09
KR100630980B1 true KR100630980B1 (ko) 2006-10-04

Family

ID=34805903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040075362A KR100630980B1 (ko) 2004-02-04 2004-09-21 메모리 카드 및 반도체 장치

Country Status (5)

Country Link
US (2) US20050172068A1 (ko)
JP (1) JP3892851B2 (ko)
KR (1) KR100630980B1 (ko)
CN (2) CN1652253A (ko)
TW (1) TWI261254B (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4751037B2 (ja) 2004-06-22 2011-08-17 株式会社東芝 メモリカード
US20070061499A1 (en) * 2005-09-09 2007-03-15 Rudelic John C Methods and apparatus for providing a virtual flash device
JP2007233838A (ja) 2006-03-02 2007-09-13 Toshiba Corp メモリシステムの制御方法
JPWO2007116476A1 (ja) * 2006-03-31 2009-08-20 株式会社日立超エル・エス・アイ・システムズ メモリカードおよびデータの書き込み方法
KR100739256B1 (ko) 2006-05-12 2007-07-12 주식회사 하이닉스반도체 소거 동작시 메모리 셀 블록의 크기를 선택적으로 변경하는기능을 가지는 플래시 메모리 장치 및 그 소거 동작 방법
JP2008024411A (ja) * 2006-07-20 2008-02-07 Toshiba Elevator Co Ltd エレベータ制御装置
JP4945186B2 (ja) * 2006-07-28 2012-06-06 株式会社東芝 記憶装置およびこれを含むメモリシステム
US7711889B2 (en) * 2006-07-31 2010-05-04 Kabushiki Kaisha Toshiba Nonvolatile memory system, and data read/write method for nonvolatile memory system
JP4970078B2 (ja) * 2007-02-21 2012-07-04 株式会社東芝 不揮発性メモリシステム
JP2008269499A (ja) * 2007-04-24 2008-11-06 Kyoto Software Research Inc バッドブロックマークの保存方法
JP5412769B2 (ja) * 2008-09-03 2014-02-12 富士通株式会社 フラッシュメモリ制御装置、フラッシュメモリ制御方法及びフラッシュメモリ制御プログラム
US8316201B2 (en) * 2008-12-18 2012-11-20 Sandisk Il Ltd. Methods for executing a command to write data from a source location to a destination location in a memory device
KR101559843B1 (ko) 2009-03-25 2015-10-15 삼성전자 주식회사 저항체를 이용한 비휘발성 메모리 장치
US9128632B2 (en) 2009-07-16 2015-09-08 Netlist, Inc. Memory module with distributed data buffers and method of operation
TWI446350B (zh) * 2009-12-08 2014-07-21 Silicon Motion Inc 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器
US8443263B2 (en) 2009-12-30 2013-05-14 Sandisk Technologies Inc. Method and controller for performing a copy-back operation
CN105706064B (zh) 2013-07-27 2019-08-27 奈特力斯股份有限公司 具有本地分别同步的内存模块
US9519577B2 (en) 2013-09-03 2016-12-13 Sandisk Technologies Llc Method and system for migrating data between flash memory devices
US9442670B2 (en) 2013-09-03 2016-09-13 Sandisk Technologies Llc Method and system for rebalancing data stored in flash memory devices
US8891303B1 (en) 2014-05-30 2014-11-18 Sandisk Technologies Inc. Method and system for dynamic word line based configuration of a three-dimensional memory device
US9645749B2 (en) * 2014-05-30 2017-05-09 Sandisk Technologies Llc Method and system for recharacterizing the storage density of a memory device or a portion thereof
JP6235423B2 (ja) 2014-06-30 2017-11-22 東芝メモリ株式会社 半導体装置
US9665311B2 (en) 2014-09-02 2017-05-30 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9524112B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by trimming
US9563362B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Host system and process to reduce declared capacity of a storage device by trimming
US9582203B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
US9519427B2 (en) 2014-09-02 2016-12-13 Sandisk Technologies Llc Triggering, at a host system, a process to reduce declared capacity of a storage device
US9582193B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device in a multi-storage-device storage system
US9652153B2 (en) 2014-09-02 2017-05-16 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
US9563370B2 (en) 2014-09-02 2017-02-07 Sandisk Technologies Llc Triggering a process to reduce declared capacity of a storage device
US9552166B2 (en) 2014-09-02 2017-01-24 Sandisk Technologies Llc. Process and apparatus to reduce declared capacity of a storage device by deleting data
US9582202B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by moving data
US9582220B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device in a multi-storage-device storage system
US9582212B2 (en) 2014-09-02 2017-02-28 Sandisk Technologies Llc Notification of trigger condition to reduce declared capacity of a storage device
US9524105B2 (en) 2014-09-02 2016-12-20 Sandisk Technologies Llc Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
JP2016167523A (ja) 2015-03-09 2016-09-15 株式会社東芝 半導体装置および電子機器
US9606737B2 (en) 2015-05-20 2017-03-28 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to extend life of flash-based storage devices and preserve over-provisioning
US9639282B2 (en) 2015-05-20 2017-05-02 Sandisk Technologies Llc Variable bit encoding per NAND flash cell to improve device endurance and extend life of flash-based storage devices
JP2017022241A (ja) 2015-07-09 2017-01-26 株式会社東芝 半導体装置及び電子機器
US9946473B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive
US9946483B2 (en) 2015-12-03 2018-04-17 Sandisk Technologies Llc Efficiently managing unmapped blocks to extend life of solid state drive with low over-provisioning
US10976947B2 (en) * 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
JP3105092B2 (ja) * 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
JPH06266596A (ja) * 1993-03-11 1994-09-22 Hitachi Ltd フラッシュメモリファイル記憶装置および情報処理装置
JP3183993B2 (ja) * 1993-03-31 2001-07-09 株式会社東芝 ディスク制御システム
JPH07160439A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd データ記憶装置及び主制御装置
US5603001A (en) * 1994-05-09 1997-02-11 Kabushiki Kaisha Toshiba Semiconductor disk system having a plurality of flash memories
JPH09319645A (ja) * 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
JPH10177797A (ja) * 1996-12-17 1998-06-30 Toshiba Corp 半導体記憶装置
JP4079506B2 (ja) * 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
US6854000B2 (en) * 1997-12-27 2005-02-08 Canon Kabushiki Kaisha Image forming apparatus and control method for the same
JP2000076117A (ja) * 1998-08-31 2000-03-14 Kano Densan Hongkong Yugenkoshi 電子機器及びその制御方法及び記憶媒体
JP3797649B2 (ja) * 1999-05-31 2006-07-19 シャープ株式会社 不揮発性半導体記憶装置
JP2001167586A (ja) 1999-12-08 2001-06-22 Toshiba Corp 不揮発性半導体メモリ装置
JP3627915B2 (ja) 2000-05-30 2005-03-09 シャープ株式会社 ブートブロックフラッシュメモリ制御回路、およびそれを備えたicメモリカードと半導体記憶装置、並びにブートブロックフラッシュメモリの消去方法
KR100422445B1 (ko) * 2001-06-01 2004-03-12 삼성전자주식회사 선택적 배속동작 모드를 갖는 불휘발성 반도체 메모리 장치
JP2002133877A (ja) 2001-09-03 2002-05-10 Toshiba Corp 不揮発性半導体記憶装置
JP2003122630A (ja) 2001-10-12 2003-04-25 Tdk Corp メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム及びフラッシュメモリの制御方法
KR100466980B1 (ko) * 2002-01-15 2005-01-24 삼성전자주식회사 낸드 플래시 메모리 장치
JP4034971B2 (ja) * 2002-01-21 2008-01-16 富士通株式会社 メモリコントローラおよびメモリシステム装置
US6906961B2 (en) * 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
JP4751037B2 (ja) * 2004-06-22 2011-08-17 株式会社東芝 メモリカード
JP4406339B2 (ja) 2004-09-21 2010-01-27 株式会社東芝 コントローラ、メモリカード及びその制御方法

Also Published As

Publication number Publication date
CN102354299A (zh) 2012-02-15
US20080082737A1 (en) 2008-04-03
CN102354299B (zh) 2014-07-09
JP2005222228A (ja) 2005-08-18
US7890732B2 (en) 2011-02-15
CN1652253A (zh) 2005-08-10
TW200527433A (en) 2005-08-16
KR20050079210A (ko) 2005-08-09
US20050172068A1 (en) 2005-08-04
TWI261254B (en) 2006-09-01
JP3892851B2 (ja) 2007-03-14

Similar Documents

Publication Publication Date Title
KR100630980B1 (ko) 메모리 카드 및 반도체 장치
US7379334B2 (en) Memory card, semiconductor device, and method of controlling memory card
US7814264B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
US7404031B2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
US8166258B2 (en) Skip operations for solid state disks
KR100526879B1 (ko) 플래쉬 파일 시스템
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
US7917690B2 (en) Method of controlling card-shaped memory device
WO2005103903A1 (ja) 不揮発性記憶システム
JP4843222B2 (ja) 半導体記憶装置の制御方法、メモリカード、及びホスト機器
JP2007011872A (ja) メモリカードとその制御方法
US7969781B2 (en) Method of controlling memory system
JP2005115562A (ja) フラッシュrom制御装置
JP4498341B2 (ja) メモリシステム
KR100627872B1 (ko) 낸드 플래시 메모리의 데이터 기입 방법

Legal Events

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

Payment date: 20110811

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20120907

Year of fee payment: 7

LAPS Lapse due to unpaid annual fee