KR20070003673A - 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법 - Google Patents

플래시 메모리를 이용한 메모리 카드 및 그 제어 방법 Download PDF

Info

Publication number
KR20070003673A
KR20070003673A KR1020060060629A KR20060060629A KR20070003673A KR 20070003673 A KR20070003673 A KR 20070003673A KR 1020060060629 A KR1020060060629 A KR 1020060060629A KR 20060060629 A KR20060060629 A KR 20060060629A KR 20070003673 A KR20070003673 A KR 20070003673A
Authority
KR
South Korea
Prior art keywords
block
memory
centralized management
blocks
management information
Prior art date
Application number
KR1020060060629A
Other languages
English (en)
Other versions
KR100757128B1 (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 KR20070003673A publication Critical patent/KR20070003673A/ko
Application granted granted Critical
Publication of KR100757128B1 publication Critical patent/KR100757128B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1417Boot up procedures
    • 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
    • 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/20Initialising; Data preset; Chip identification
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Debugging And Monitoring (AREA)

Abstract

메모리는, 관리 정보를 포함하는 복수개의 블록과, 각 블록의 상기 관리 정보를 집중한 집중 관리 블록을 구비한다. 제어부는, 기동 시에 메모리 내의 집중 관리 블록을 검출하고, 이 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 메모리 내의 복수개의 블록으로부터 관리 정보를 검색하고, 이 검색된 관리 정보를 메모리의 집중 관리 블록에 기입한다.
플래시 메모리, 메모리 카드, 집중 관리 블록, 관리 정보, 시스템 기동

Description

플래시 메모리를 이용한 메모리 카드 및 그 제어 방법{MEMORY CARD USING FLASH MEMORY AND CONTROLLING METHOD THEREOF}
도 1은 본 발명의 실시 형태에 따른 동작을 도시한 플로우차트.
도 2는 본 발명의 실시 형태에 따른 메모리 카드에 탑재되는 디바이스류의 개략 구성을 도시한 사시도.
도 3은 호스트와 도 2에 도시한 메모리 카드를 포함하는 구성을 도시한 블록도.
도 4는 호스트가 상정하고 있는 플래시 메모리와, 실제로 사용하는 플래시 메모리와의 관계를 도시한 도면.
도 5는 호스트측 시스템과 메모리 카드의 각 커뮤니케이션 계층을 도시한 도면.
도 6a, 도 6b는 호스트측으로부터 보내져 오는 커맨드의 포맷을 도시한 도면.
도 7은 호스트측이 상정하고 있는 블록 기입 조작과, 메모리 카드측이 실제로 행하는 기입 처리를 대비하여 도시한 도면.
도 8은 대블록 카드 내의 NAND 형 플래시 메모리의 블록 포맷의 일례를 도시한 도면.
도 9는 도 8과는 상이한 블록 포맷의 예를 도시한 도면.
도 10은 본 실시 형태의 메모리 카드에 대하여 호스트가 기입을 행할 때의 신호의 예를 도시한 타이밍차트.
도 11은 본 실시 형태의 메모리 카드 내의 플래시 메모리에 대하여, 해당 메모리 카드 내의 컨트롤러가 기입을 행할 때의 신호의 예를 도시한 타이밍차트.
도 12a, 도 12b는 플래시 메모리 상의 데이터 블록 및 집중 관리 블록의 개략 구성을 도시한 도면.
도 13은 도 12b에 도시한 집중 관리 블록의 포맷의 일례를 도시한 도면.
도 14는 도 13에 도시한 주요한 정보에 관한 설명을 도시한 도면.
도 15는 도 14에 도시한 관리 페이지 0에 있어서의 각 컬럼의 포맷의 일례를 도시한 도면.
도 16은 집중 관리 블록의 위치를 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
1 : 메모리 카드
2 : PCB 기판
3 : NAND형 플래시 메모리
4 : 컨트롤러
5 : 인터페이스부
6 : 호스트 인터페이스부
7 : 버퍼
8 : CPU
9 : ROM
10 : RAM
20 : 호스트
[특허문헌 1] 일본 특허공개 평9-198884호 공보
본 출원은 2005년 7월 1일자로 선출원된 일본 특허출원 2005-193958호를 우선권 주장하는 것으로, 그 전체 내용이 여기에 참조로서 개시되어 있다.
본 발명은 예를 들면 NAND 플래시 메모리를 이용한 메모리 카드 및 그 기동시의 제어 방법에 관한 것이다.
NAND 플래시 메모리를 사용하는 시스템은, 시스템 기동 시에 메모리 내의 각 블록의 데이터를 스캔하여, 각종 정보를 얻을 필요가 있다. 이들 정보로서는, 그 블록이 에러를 갖는 블록(이하, "배드 블록"이라 함)인지의 여부, 공백 블록인지의 여부, 기입되어 있는 데이터의 논리 블록 어드레스는 무엇인가 등이다. 그러나, 최근, 메모리 내에 이들 정보를 집중적으로 관리하는 집중 관리 블록을 형성하고, 이 집중 관리 블록에 메모리 내의 전체 블록의 각종 정보를 일괄적으로 기입해 두는 방법이 고려되고 있다(특허문헌 1 참조).
이 집중 관리 블록을 형성함으로써, 기동 시에 집중 관리 블록을 검출하고, 이 집중 관리 블록으로부터 데이터를 판독함으로써, 메모리 내의 전체 블록을 스캔하지 않고 메모리 전체의 정보를 얻는 것이 가능해진다.
그러나, 집중 관리 블록의 판독 시에 정정 불가능한 에러가 발생하여, 집중 관리 블록의 정보를 판독할 수 없는 경우, 시스템을 기동하는 것이 불가능하게 된다. 이 경우, 대부분의 블록이 정상임에도 불구하고, 메모리 카드를 사용하는 것이 곤란해지기 때문에, 사용자로서는 대단히 불편하다. 따라서, 집중 관리 블록에 에러가 있는 경우에도, 시스템을 확실하게 기동하는 것이 가능한 메모리 카드 및 그 제어 방법이 요구되고 있다.
본 발명의 제1 양태에 따른 메모리 카드는, 관리 정보를 포함하는 복수개의 블록과, 각 블록의 상기 관리 정보를 집중한 집중 관리 블록을 갖는 메모리와, 기동 시에 상기 메모리 내의 상기 집중 관리 블록을 검출하는 제어부를 구비하며, 이 제어부는, 상기 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 상기 블록으로부터 상기 관리 정보를 검색하고, 이 검색된 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 것을 특징으로 한다.
또한, 본 발명의 제2 양태에 따른 메모리 카드의 제어 방법은, 기동 시에 메모리 내의 집중 관리 블록을 검출하는 단계와, 이 집중 관리 블록이 에러를 포함하 는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 블록으로부터 관리 정보를 검색하는 단계와, 검색된 상기 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명의 제3 양태에 따른 메모리 카드의 제어 방법은, 기동 시에 메모리 내의 집중 관리 블록을 검출하는 단계와, 검출된 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 블록으로부터 관리 정보를 검색하는 단계와, 검색된 상기 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 단계와, 검출된 집중 관리 블록이 에러를 포함하지 않은 경우, 상기 집중 관리 블록에 전체 블록의 관리 정보가 기록되어 있는지를 판별하는 단계와, 전체 블록의 관리 정보가 기록되어 있지 않은 경우, 상기 제약 시간보다 짧은 시간 동안, 상기 메모리의 나머지 블록으로부터 관리 정보를 검색하고, 검색된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 단계를 포함하는 것을 특징으로 한다.
<실시 형태>
이하, 본 발명의 실시 형태에 관하여 도면을 참조하여 설명하겠다.
도 2는 본 발명의 실시 형태에 따른 메모리 카드에 탑재되는 디바이스류의 개략 구성을 도시한 사시도이다.
메모리 카드(1)는, PCB(Printed Circuit Board) 기판(2)과, 이 PCB(Printed Circuit Board) 기판(2) 위에 배치된 NAND형 플래시 메모리(3) 및 컨트롤러(4)에 의해 구성되어 있다. 컨트롤러(4)는 CPU(Central Processing Unit)(8)이나 ROM(Read-Only Memory)(9) 등의 기능 블록을 갖고 있다. 각 디바이스의 상세에 대해서는 후술한다. 또한, NAND형 플래시 메모리(3)는 1개의 메모리 셀에 1비트의 정보를 기억하는 2치 메모리이어도 되고, 1개의 메모리 셀에 1비트보다 많은 정보(예를 들면, 2비트)를 기억하는 다치 메모리이어도 된다. 또한, 도 2는 PCB 기판(2) 위에 NAND형 플래시 메모리(3) 및 컨트롤러(4)가 배치된 경우를 도시하고 있지만, NAND형 플래시 메모리(3) 및 컨트롤러(4)는 동일한 LSI(Large-scale Integration) 기판 위에 배치되어도 된다.
이하의 설명에서 사용하는 용어 "논리 블록 어드레스", "물리 블록 어드레스"는 각각 블록 자체의 논리 어드레스, 물리 어드레스를 의미한다. 또한, "논리 어드레스", "물리 어드레스"는 주로 블록 자체의 논리 어드레스, 물리 어드레스를 의미하지만, 블록 단위보다도 작은 분해능의 단위에 상당하는 어드레스인 경우도 있을 수 있음을 나타내고 있다.
도 3은 호스트와 상기 메모리 카드를 포함하는 구성을 도시한 블록도이다. 도 3에서, 도 2와 동일 부분에는 동일 부호를 붙이고 있다.
호스트 기기(이하, 호스트라 함)(20)는 접속되는 메모리 카드를 액세스하기 위한 하드웨어 및 소프트웨어(시스템)을 구비하고 있다. 이 호스트(20)는 메모리 카드 내부의 물리 상태(어느 곳의 물리 블록 어드레스에, 몇번째의 논리 섹터 어드레스 데이터가 포함되어 있는지, 또는 어느 곳의 블록이 소거 상태인지)를 관리하고, 메모리 카드 내의 플래시 메모리를 직접 제어한다.
또한, 호스트(20)는 소거 시의 소거 블록 사이즈가 16kByte로 정해져 있는 NAND형 플래시 메모리를 사용하는 것을 전제로 하고, 16kByte 단위로 논리·물리 어드레스의 할당을 행하고, 대부분의 경우, 논리 어드레스 16kByte에 관하여 순차적으로 라이트 액세스 또는 리드 액세스를 행한다(해당하는 커맨드를 발행한다).
메모리 카드(1)는 호스트(20)에 접속되었을 때에 전원을 공급받아서 동작하고, 호스트(20)로부터의 액세스에 따른 처리를 행한다. 이 메모리 카드(1)는 상술한 바와 같이 NAND형 플래시 메모리(3) 및 컨트롤러(4)를 갖고 있다.
NAND형 플래시 메모리(3)는 소거 시의 블록 사이즈(소거 블록 사이즈)가 예를 들면 256kByte로 정해진 불휘발성 메모리이며, 예를 들면 16kByte 단위로 데이터의 기입·판독을 행하도록 되어 있다. 이 NAND형 플래시 메모리(3)는 예를 들면 0.09㎛ 프로세스 기술을 이용하여 제작된다. 즉 NAND형 플래시 메모리(3)의 디자인 규칙은 0.1㎛ 미만으로 되어 있다.
컨트롤러(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페이지분)를 일시적으로 기억하거나, NAND형 플래시 메모리(3)로부터 판독되는 데이터를 호스트(20)로 송출할 때에, 일 정량의 데이터를 일시적으로 기억하기도 한다.
CPU(8)는 메모리 카드(1) 전체의 동작을 담당하는 것이다. 이 CPU(8)는 예를 들면 메모리 카드(1)가 전원을 공급받았을 때에, ROM(9) 내에 저장되어 있는 펌웨어(제어 프로그램)을 RAM(10) 상에 로드하여 소정의 처리를 실행한다. 즉 CPU(8)는 각종 테이블을 RAM(10) 상에 작성하거나, 호스트(20)로부터 기입 커맨드, 판독 커맨드, 소거 커맨드를 수신하여 NAND형 플래시 메모리(3) 상의 해당 영역을 액세스하거나, 버퍼(7)를 통하여 데이터 전송 처리를 제어하기도 한다.
ROM(9)은 CPU(8)에 의해 사용되는 제어 프로그램 등을 저장하는 메모리이다. RAM(10)은 CPU(8)의 작업 에리어로서 사용되고, 제어 프로그램이나 각종 테이블을 기억하는 휘발성 메모리이다.
도 4는 호스트(20)가 상정하고 있는 플래시 메모리와, 실제로 사용하는 플래시 메모리(즉 메모리 카드(1) 내의 NAND형 플래시 메모리(3))와의 데이터 배치의 차이를 도시하고 있다.
호스트(20)가 상정하고 있는 플래시 메모리에 있어서, 각 페이지는 528Byte(512Byte분의 데이터 기억부 + 16Byte분의 용장분)를 갖고 있으며, 32페이지분이 1개의 소거 단위(즉 16kByte + 0.5kByte(여기서, k는 1024))로 된다. 이하에서는 이와 같은 플래시 메모리를 탑재한 카드를, "소블록 카드"라고 칭하는 경우가 있다.
한편, 실제로 사용하는 플래시 메모리(3)에 있어서, 각 페이지는 2112Byte(예를 들면 512Byte분의 데이터 기억부×4 + 10Byte분의 용장분×4 + 24Byte분의 관리 데이터 기억부)를 갖고 있으며, 128페이지분이 1개의 소거 단위(즉 256kByte + 8kByte)로 된다. 이하에서는, 이와 같은 플래시 메모리(3)를 탑재한 카드를, "대블록 카드"라고 칭하는 경우가 있다. 또한, 이하의 설명에서는, 편의상, 소블록 카드의 소거 단위를 16kByte라고 부르고, 대블록 카드의 소거 단위를 256kByte라고 부른다.
또한, 호스트(20)가 상정하고 있는 플래시 메모리와, 실제로 사용하는 플래시 메모리(3)는 각각 플래시 메모리에 대하여 데이터를 입출력하기 위한 페이지 버퍼를 구비하고 있다. 호스트(20)가 상정하고 있는 플래시 메모리에 구비되는 페이지 버퍼의 기억 용량은 528Byte(512Byte + 16Byte)이다. 한편, 실제로 사용하는 플래시 메모리(3)에 구비되는 페이지 버퍼의 기억 용량은 2112Byte(2048Byte + 64Byte)이다. 데이터를 기입할 때 등에 있어서, 각 페이지 버퍼는 플래시 메모리에 대한 데이터 입출력 처리를, 자신의 기억 용량에 상당하는 1페이지분의 단위로 실행한다.
도 4에 도시한 예는, 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈의 16배인 경우를 도시하고 있다. 그러나, 본 실시 형태는 이것에 한정되지 않고, 대략 정수배이라면 다른 배율이 되도록 구성하는 것도 가능하다.
대블록 카드를 실용상 유효한 제품으로 하기 위해서는, 도 4에 도시한 플래시 메모리(3)의 기억 용량은 1G비트 이상인 것이 바람직하다. 플래시 메모리(3)의 기억 용량이 예를 들면 1G비트인 경우, 256kByte 블록(소거 단위)의 수는 512개로 된다.
또한, 도 4에서는 소거 단위가 256kByte 블록인 경우를 예시하고 있지만, 소거 단위가 예를 들면 128kByte 블록으로 되도록 구축하는 것도 실용상 유효하다. 이 경우, 128kByte 블록의 수는 1024개로 된다.
또한, 도 4에 도시한 예는 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈보다도 큰 경우를 도시하고 있다. 그러나, 본 실시 형태는 이것에 한정되지 않고, 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈보다도 작은 것으로서 구성하는 것도 가능하다.
도 5는 호스트(20)측 시스템 및 메모리 카드(1)(대블록 카드)의 각 커뮤니케이션 계층을 도시한 도면이다.
호스트(20)측의 시스템은 어플리케이션 소프트(21), 파일 시스템(22), 드라이버 소프트(23), 및 소블록 카드 물리 액세스층(24)을 갖는다. 한편, 메모리 카드(1)(대블록 카드)는 소블록 카드 물리 액세스층(11), 소블록 카드 물리·소블록 카드 논리 변환층(12), 소블록 카드 물리·대블록 카드 물리 변환층(13), 및 대블록 카드 물리 액세스층(14)을 갖는다.
예를 들면 호스트(20)측의 어플리케이션 소프트(21)가 파일의 기입을 파일 시스템(22)에 요구하면, 파일 시스템(22)은 소블록 카드의 논리 블록 어드레스에 기초하여 순차적인 섹터 기입을 드라이버 소프트(23)에 지시한다. 이것을 수신하여, 드라이버 소프트(23)는 소블록 카드의 논리 블록 어드레스에 기초한 각 16kByte 블록마다의 순차적인 기입을 실현한다. 이 때, 드라이버 소프트(23)는 논리·물리 블록 변환을 행하고, 소블록 카드 물리 액세스층(24)을 통하여, 소블록 카드의 물리 블록 어드레스에 의한 랜덤 기입 커맨드를 대블록 카드에 대하여 발행하고, 데이터 전송을 행한다.
또한, 라이트 액세스에 있어서는, 소블록 카드의 경우나 대블록 카드의 경우나, 프로토콜 상, (1) 커맨드, (2) 페이지 어드레스(로우 어드레스), (3) 컬럼 어드레스, (4) 데이터, (5) 프로그램 확인 커맨드와 같은 순서로 정보의 송수신이 행해지는 것이 전제로 되어 있다.
대블록 카드측에 있어서의 소블록 카드 물리 액세스층(11)은 호스트(20)로부터 소블록 카드의 물리 블록 어드레스에 의한 기입 커맨드를 수신하면, 물리 블록 어드레스나 데이터 외에, 이것에 부수된 부수 데이터에 포함되어 있는 논리 블록 어드레스를 취득한다.
소블록 카드 물리·소블록 카드 논리 변환층(12)은 데이터 판독 시 등에 있어서, 소블록 카드의 물리 블록 어드레스(16kByte 블록분에 대응)로부터 소블록 카드의 논리 블록 어드레스(16kByte 블록분에 대응)로의 변환 처리를 행하기 위한 제1 테이블을 갖고 있다. 변환층(12)은 소블록 카드 물리 액세스층(11)이 기입 커맨드를 수신하여 소블록 카드의 논리 블록 어드레스를 취득했을 때, 이것을 상기 제1 테이블에 반영시킨다. 물리 블록 어드레스에 관해서도, 상기 제1 테이블에 반영시킨다.
소블록 카드 논리·대블록 카드 물리 변환층(13)은 데이터 판독 시 등에 있 어서, 소블록 카드의 논리 블록 어드레스(순차적인 16kByte 블록×16개분에 대응)로부터 대블록 카드의 물리 블록 어드레스(256kByte 물리 블록분에 대응)로의 변환 처리를 행하기 위한 제2 테이블을 갖고 있다. 변환층(12)은 소블록 카드 물리 액세스층(11)이 기입 커맨드를 수신하여 소블록 카드의 논리 블록 어드레스를 취득했을 때, 이것을 상기 제2 테이블에 반영시킨다.
대블록 카드 물리 액세스층(14)은 소블록 카드 물리 액세스층(11)이 기입 커맨드를 수신하여 취득한 소블록 카드의 논리 블록 어드레스에 기초하여, 플래시 메모리(3) 내부의 데이터 배치를 결정하고, 256kByte 물리 블록 내에 있어서 2kByte(1페이지) 단위로 순차적으로 16kByte분의 데이터를 기입한다. 또한, 대블록 카드 물리 액세스층(14)은 취득한 소블록 카드의 논리 블록 어드레스나 물리 블록 어드레스를 플래시 메모리(3) 내부에 있어서의 관리 데이터 영역 내의 소정의 영역에 저장한다.
이와 같이 호스트(20)는 소블록 카드의 물리 블록 어드레스에 기초한 커맨드를 발행하기 때문에, 대블록 카드측은 소블록 카드의 물리 블록 어드레스에 대응하는 데이터가 어느 256kByte 물리 블록 중에 존재하는지 알 수 있도록 관리한다. 구체적으로는, 16kByte 블록마다 소블록 카드의 논리·물리 블록 어드레스의 대응 관계를 관리함과 아울러, 소블록 카드가 연속된 256kByte 블록분의 논리 블록 어드레스에 대응하는 데이터가 대블록 카드 내의 어느 256kByte 물리 블록에 저장되어 있는지를 알 수 있도록 관리한다.
도 6은 호스트(20)측에서 보내져 오는 커맨드의 포맷을 도시한 도면이다. 호스트(20)측으로부터 보내져 오는 커맨드의 패킷은 도 6a에 도시한 바와 같이, 커맨드 종별 정보(여기선, "기입"), 어드레스(물리 블록 어드레스), 데이터(콘텐츠 등의 실제 데이터 및 부수 데이터(512Byte+16Byte))와 같은 각종 정보를 포함하고 있다.
이와 같은 포맷의 패킷에 있어서는, 도 6b에 도시한 바와 같이, 부수 데이터 16Byte 중의 소정의 위치에 소블록 카드의 "논리 블록 어드레스"(액세스 대상으로 되는 16kByte 블록에 대응하는 논리 어드레스)가 배치되어 있다. 대블록 카드는 커맨드 종별 정보, 물리 블록 어드레스, 데이터를 취득하는 외에도, 특히 상기 "논리 블록 어드레스"를 취득한다. 또한, 이 "논리 블록 어드레스"는 판독 커맨드의 경우에는 부가되지 않는다.
도 7은 호스트(20)측이 상정하고 있는 블록 기입 조작과, 메모리 카드(1)(대블록 카드)측이 실제로 행하는 기입 처리를 대비하여 도시한 도면이다.
호스트(20)측(도 7의 좌측)에서는, 소블록 카드의 논리 어드레스에 기초한 16kByte 블록 단위의 순차적인 기입 조작의 발생 시에, 소블록 카드의 물리 블록 어드레스에 의한 16kByte 블록 단위의 랜덤 기입 조작을 행한다.
한편, 대블록 카드측(도 7의 우측)에서는, 호스트(20)측으로부터 기입 커맨드를 수신한 경우, 소블록 카드의 논리 블록 어드레스에 기초한 16kByte 블록 단위의 데이터를 플래시 메모리(3) 내에 순차적으로 기입한다.
전술한 바와 같이, 호스트(20)는 소블록의 물리 어드레스에 의한 16Byte 단위의 랜덤 기입 조작을 행한다. 이와 같은 랜덤 기입 조작에서는, 일반적으로 대 블록(256kByte)의 일부만을 재기록하기 위한 처리가 많이 발생한다. NAND형 플래시 메모리에서는, 블록 단위로밖에 소거를 행할 수 없기 때문에, 블록의 일부만을 재기록하는 경우에는 재기록할 새로운 데이터를 소거 완료된 새로운 블록에 기입하고, 새로운 데이터로 재기록할 예전 데이터를 포함하는 예전 블록으로부터, 재기록되지 않는 나머지 데이터를 새로운 블록에 카피할 필요가 있다. 이와 같이, 블록의 일부만을 재기록하는 처리는 재기록되지 않는 데이터의 카피 동작(이하, "부대적인 데이터 카피"라 함)을 동반하기 때문에, 블록의 일부만을 재기록하는 처리가 많이 발생하면, 오버헤드가 매우 증대된다. 따라서, 본 실시 형태에서는, 호스트(20)측으로부터 얻어지는 논리 어드레스의 순서에 따라서, 대블록 카드측에서 물리 어드레스를 재차 할당함으로써, 블록의 일부만을 기입하는 처리가 발생하는 것을 저감하여, 오버헤드의 증대를 억제하고 있다.
도 8은 대블록 카드 내의 NAND형 플래시 메모리(3)의 블록 포맷(소거 단위인 256kByte 물리 블록분)의 일례를 도시하고 있다.
대블록 카드에서는, 소거 단위인 256kByte 물리 블록 중에, 호스트(20)측이 관리하는 단위인 16kByte에 상당하는 데이터를 기입하기 위한 블록(이하, 호스트 관리 블록이라 함)이 16개분 포함되어 있다. 데이터 기입 시에는, 소블록 카드의 논리 블록 어드레스의 순으로 개개의 데이터가 배치된다.
각 호스트 관리 블록은 8개의 페이지로 구성된다. 각 페이지는 512Byte 데이터 영역을 4개 포함함과 아울러, 각 데이터 영역에 대응하는 10Byte ECC 영역을 포함하고 있다. 또한, 페이지 내의 최후의 512Byte 데이터 영역(4번째의 512Byte 데이터 영역) 뒤에는, 24Byte 관리 데이터 영역도 형성된다. 이로 인해, 페이지 내의 최후의 10Byte ECC 영역은 4번째의 512Byte 데이터 영역과 24Byte 관리 데이터 영역 양쪽 모두에 대응하는 구성으로 되어 있다.
소거 단위인 256kByte 물리 블록에 포함되는 128개의 24Byte 관리 데이터 영역 중에서, 예를 들면 최후의 24Byte 관리 데이터 영역에는 호스트(20)측으로부터 보내져 오는 커맨드로부터 취득된 물리 블록 어드레스에 상당하는 어드레스 정보, 및 논리 블록 어드레스에 상당하는 어드레스 정보가 통합하여 저장되도록 되어 있다. 이들 어드레스 정보는 도 5에서 설명한 소블록 카드 물리·소블록 카드 논리 변환층(12)이 갖는 제1 테이블과, 소블록 카드 논리·대블록 카드 물리 변환층(13)이 갖는 제2 테이블을 작성할 때에 사용된다.
도 9는 도 8과는 상이한 블록 포맷의 예를 도시한 도면이다.
도 9에 도시한 블록 포맷은 도 8의 블록 포맷과 비교하면, 각 페이지에 있어서의 ECC0, ECC1, ECC2의 영역의 배치 위치가 상이하다. 다만, 각 페이지에 있어서의 유저 데이터의 기억 용량은 도 8에 도시한 블록 포맷과 도 9에 도시한 블록 포맷에서는 동일하다. 즉 도 8에 도시한 블록 포맷은 각 페이지에 2048Byte(512Byte+512Byte+512Byte+512Byte)의 기억 영역이 형성되어 있으며, 도 9에 도시한 블록 포맷은 각 페이지에 2048Byte(518Byte+518Byte+518Byte+494Byte)의 기억 영역이 형성되어 있다. 이하에서는, 도 9에 도시한 블록 포맷을 채용한 경우를 전제로 하여 설명한다.
도 10은 본 실시 형태의 메모리 카드(1)에 대하여 호스트(20)가 기입을 행할 때의, 해당 메모리 카드(1)의 I/O 핀 및 R/B 핀의 신호의 예를 도시한 타이밍차트이다.
호스트(20)는 메모리 카드가 16kByte의 소거 블록 사이즈를 갖는 불휘발성 메모리라고 가정하여 메모리 카드를 제어하고 있다. 예를 들면, 메모리 카드에 대한 기입 시에, 호스트(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비트(모든 I/O 핀의 합계 528바이트)의 데이터를 순차로 시프트 인한다. 데이터의 시프트 인이 완료되면, 호스트(20)는 프로그램 커맨드 10H를 I/O 핀(1∼8)에 입력한다. 이에 응답하여 메모리 카드는 그 R/B 핀에 로우 레벨의 신호를 출력하고, 메모리 카드가 비지 상태이라는 것을 나타낸다. 그 후, 소정 기간 후에 R/B 핀에 하이 레벨의 신호를 출력함으로써 메모리 카드가 레디 상태로 되었음을 나타낸다.
그러나, 도 10에 있어서의 R/B 핀의 상태는 어디까지나 호스트(20)에 대하여 메모리 카드(1)가 어떠한 상태인지를 나타내는 것이다. 요컨데, 도 10에서, 프로그램 커맨드 10H의 입력에 응답하여, R/B 핀이 비지 상태(즉 로우 레벨을 출력)를 나타낸다고 하더라도, 내부에서 NAND형 플래시 메모리(3)에 대한 기입 동작(즉 페이지 버퍼로부터 메모리 셀 어레이에의 데이터 전송)이 실제로 행해지고 있다고는 할 수 없다. 또한, R/B 핀이 레디 상태로 복귀했다고 하더라도, 내부에서 NAND형 플래시 메모리(3)에 대한 기입 동작이 실제로 완료되었다고는 할 수 없다.
도 11은 본 실시 형태의 메모리 카드(1) 내의 NAND형 플래시 메모리(3)에 대하여, 해당 메모리 카드(1) 내의 컨트롤러(4)가 기입을 행할 때의, NAND형 플래시 메모리(3)의 I/O 핀 및 R/B 핀의 신호의 예를 도시한 타이밍차트이다.
컨트롤러(4)는 NAND형 플래시 메모리(3)가 256kByte의 소거 블록 사이즈를 갖는 불휘발성 메모리라고 인식하고 있다. 예를 들면, NAND형 플래시 메모리(3)에 대한 기입 시에, 컨트롤러(4)는 시리얼 데이터 인풋 커맨드 80H를 I/O 핀(1∼8)에 입력한다. 다음으로, 컨트롤러(4)는 컬럼 어드레스 C/A 및 페이지 어드레스 P/A를, I/O 핀(1∼8)에 입력한다. 또한, 여기서, 컬럼 어드레스 C/A 및 페이지 어드레스 P/A는 컨트롤러(4)가 NAND형 플래시 메모리(3)에 대하여 상정하고 있는 실제 물리 어드레스 공간에 있어서의 컬럼 어드레스 및 페이지 어드레스이다. 따라서, 도 10에 있어서의 컬럼 어드레스 C/A 및 페이지 어드레스 P/A와는 반드시 일치하지는 않는다.
또한, 컨트롤러(4)는 기입 데이터를, 개개의 I/O 핀(1∼8)에 대하여, 2112회 입력한다. 구체적으로는, 컨트롤러(4)는 라이트 인에이블 핀에의 입력 신호를 2112회 클록킹하면서, 각각의 I/O 핀에 대하여 2112 비트(모든 I/O 핀의 합계 2112바이트)의 데이터를 순차로 시프트 인한다. 데이터의 시프트 인이 완료되면, 컨트 롤러(4)는 프로그램 커맨드 10H를 I/O 핀(1∼8)에 입력한다. 이것에 응답하여 메모리 카드는 그 R/B 핀에 로우 레벨의 신호를 출력하여, 메모리 카드가 비지 상태이라는 것을 나타낸다. 그 후, 소정 시간 후에 R/B 핀에 하이 레벨의 신호를 출력함으로써, 메모리 카드가 레디 상태로 되었음을 나타낸다. 도 11에 있어서의 R/B 핀의 상태는 컨트롤러(4)에 대하여 NAND형 플래시 메모리(3)가 실제로 어떠한 상태인지를 나타내고 있다.
또한, 상기 도 10 및 도 11은 컬럼 어드레스 C/A 및 페이지 어드레스 P/A의 입력을 각각 하나의 사이클로 나타내고 있지만, 메모리 카드(1)의 용량 또는 NAND형 플래시 메모리(3)의 용량에 따라서, 적절히 2사이클 이상이 되는 경우도 있다.
상기 도 10 및 도 11로부터 알 수 있는 바와 같이, 메모리 카드가 비지 상태로 있을 수 있는 시간에는 제약이 있다. 이로 인해, 그 동안에 데이터 기입을 행하고, 소정 기간 후에는 해당 메모리 카드가 레디 상태로 되었음을 호스트측에 나타내어야만 한다.
이하의 설명에서는, 호스트(20)가 상정하고 있는 플래시 메모리에 있어서의 물리 블록 어드레스, 논리 블록 어드레스를 각각 "xPBA", "xLBA"라고 약칭하고, 플래시 메모리(3)에 있어서의 물리 블록 어드레스를 "PBA"라고 약칭하기로 한다.
본 실시 형태에서는, 호스트(20)가 상정하고 있는 플래시 메모리의 데이터 기억 영역을 복수개의 존으로 나누고, 각 존에 번호를 부여하여 관리한다. 구체적으로는, 물리 블록 어드레스 xPBA1∼1023에 대응하는 1024개의 블록 군을 Zone0, 물리 블록 어드레스 xPBA1024∼2047에 대응하는 1024개의 블록 군을 Zone1, 물리 블록 어드레스 xPBA2048∼3071에 대응하는 1024개의 블록 군을 Zone2, …와 같이 정의하고, 각 존에 1000개의 xLBA를 대응시킨다. 또한, 물리 블록 어드레스 xPBA0에는 해당 메모리 카드(1)에 관한 CIS(Card Information Structure)(후술)을 기억하는 블록을 대응시킨다.
도 12a, 도 12b는 플래시 메모리(3) 상의 데이터 블록 및 집중 관리 블록의 개략 구성을 각각 대비하여 도시하고 있다.
도 12a에 도시한 데이터 블록(1 물리 블록분)은 도 9에도 도시한 바와 같이, 128개의 데이터 페이지로 구성된다. 이와 같은 데이터 블록은 플래시 메모리(3) 상에 복수개 존재하고, 유저 데이터(사용자가 읽기/쓰기 하는 것이 가능한 문서, 정지 화상, 동화상 등의 데이터)를 기억하기 위하여 사용된다. 또한, 개개의 데이터 블록에 있어서의 예를 들면 최종 데이터 페이지 내의 소정 영역에는 해당 데이터 블록의 PBA에 대응하는 xPBA 및 xLBA의 정보가 기억되어 있으며, 어드레스 변환 테이블을 작성할 때에 이용된다.
한편, 도 12b에 도시한 집중 관리 블록(1 물리 블록분)은 1개의 CIS(Card Information Structure) 페이지 및 복수개의 관리 페이지 0, 1, 2, 3, …로 구성된다. 이 집중 관리 블록은 해당 플래시 메모리(3) 상에 1개만 존재한다. 이 집중 관리 블록은 플래시 메모리(3)에 관한 여러 가지 관리 정보(기본적으로는 사용자가 자유롭게 읽기/쓰기 할 수 없으며, 플래시 메모리(3)의 기동 시 등에 호스트나 컨트롤러가 사용하는 정보)를 일괄적으로 기억하는 특별한 블록이며, 전체 물리 영역 중에서도 로버스트 특성(robustness)이 가장 높은 영역에 형성된다. 즉 집중 관리 블록은 전체 물리 영역 중에서도 가장 ECC 에러 수가 적은 영역에 형성된다.
집중 관리 블록 중의 CIS 페이지는 예를 들면 플래시 메모리(3)가 소정의 메모리 카드의 물리 포맷 사양에 따라서 포맷팅되어 있는지의 여부를 구분하기 위하여 사용되는 페이지이다. 관리 페이지 0, 1, 2, 3, …은 개개의 데이터 블록이 각각 속해 있는 존의 번호(Zone No.)나 개개의 데이터 블록의 에러에 관한 스테이터스(status)를 기억하는 페이지이다. 이 관리 페이지는 테이블 작성 대상 존으로서 미리 지정되어 있는 존에 해당하는 데이터 블록 군의 PBA를 파악하기 위하여 사용되고, 어드레스 변환 테이블을 작성할 때에 이용된다.
도 13은 도 12에 도시되는 집중 관리 블록의 포맷의 일례를 도시하고 있다. 도 14는 도 13에 도시되는 주요한 정보에 관한 설명을 정리한 것이다. 또한, 도 15는 도 14에 도시되는 관리 페이지 0에 있어서의 각 컬럼의 포맷의 일례를 도시하고 있다. 이하, 도 13∼도 15를 참조하여, CIS 페이지 및 관리 페이지 0, 1, 2, 3, …의 상세를 설명한다.
도 13의 CIS 페이지에는 "CIS", "CIS-PBA", "식별 번호", "ID", "공백 BLK", "ECC", "Mode", "Max PBA", "Max PPA", "1034B" , "4B" 등으로 표시된 여러 가지 영역이 있다. 영역 "CIS"는 호스트(20)에 읽히게 할 카드 정보 구조 데이터(CIS 데이터)를 기억하는 영역이다. 영역 "CIS-PBA"는 호스트(20) 측에서 본, CIS 데이터의 저장 위치를 나타내는 물리 어드레스(xPBA)를 기억하는 영역이다(호스트(20)가 CIS 데이터의 재기록을 행한 경우에 대응할 수 있도록 하기 위하여, 해당 물리 어드레스가 기억된다). 영역 "식별 번호"는 메모리 카드(1)의 식별 번호를 기억하 는 영역이다. 영역 "ID"는 해당 페이지에 쓰여 있는 데이터의 종류 및 배드 블록 속성을 기억하는 영역이다. 영역 "공백 BLK"는 데이터가 소거 완료인 공백 블록의 PBA를 기억하는 영역이다. 영역 "ECC"는 컬럼 어드레스 0-517의 정보에 대응하는 ECC, 컬럼 어드레스 528-1045의 정보에 대응하는 ECC, 및 컬럼 어드레스 1056-2101의 정보에 대응하는 ECC를 기억하는 영역이다. 영역 "Mode", "Max PBA", "Max PPA", "1034B", "4B"는 디버그 시에 사용되는 각종 정보를 기억하는 영역이다(여기서는, 상세한 설명을 생략함).
한편, 도 13 중의 관리 페이지 0, 1, 2, 3, …에는 "Assign & Status", "ID", "ECC", "19B", "4B" 등으로 표시된 복수개의 영역이다. 영역 "Assign & Status"은 데이터 블록마다, 해당 데이터 블록에 어사인되어 있는 존의 번호(Zone No.) 및 해당 데이터 블록에 ECC 에러가 몇개 존재하는지를 나타내는 스테이터스(Status)를 기억하는 영역이다. 영역 "ID"는 해당 페이지에 쓰여 있는 데이터의 종류 및 배드 블록 속성을 기억하는 영역이다. 영역 "ECC"는 컬럼 어드레스 0-517의 정보에 대응하는 ECC, 컬럼 어드레스 528-1045의 정보에 대응하는 ECC, 컬럼 어드레스 1056-1573의 정보에 대응하는 ECC, 및 컬럼 어드레스 1584-2101의 정보에 대응하는 ECC를 기억하는 영역이다. 영역 "19B" 및 "4B"는 공백 영역(미사용 영역)이다.
예를 들면, 전체 관리 페이지 0, 1, 2, 3, … 중의 관리 페이지 0에 주목하면, 도 15에 도시한 바와 같이, 관리 페이지 0을 구성하는 개개의 컬럼 col.0, col.1, col.2, … 에는 개개의 데이터 블록을 식별하는 PBA0, PBA1, PBA2, … 에 대응하는 영역이 형성되고, 각 영역(1Byte분)에는 상술한 존 번호(Zone No.)(7bit 중의 상기 6bit) 및 스테이터스(Status)(2bit)의 조합이 기억되어 있다.
그런데, 상술한 바와 같이, 집중 관리 블록의 판독 시에 정정 불가능한 에러가 발생하여, 집중 관리 블록의 정보를 판독할 수 없는 경우, 집중 관리 블록을 다시 작성할 필요가 있다. 이로 인해, 메모리 내의 각종 정보를 얻기 위하여, 메모리 내의 전체 블록을 스캔할 필요가 있다. 그러나, 시스템의 기동 시에 제약 시간이 설정되어 있는 시스템이 있고, 스캔 시간이 이 제약 시간보다도 긴 경우, 시스템을 기동할 수 없게 된다는 문제가 발생한다.
예를 들면, 1페이지의 크기가 (2048+64)Byte이고, 1블록이 128페이지이고, 전부 8192 블록으로 이루어지는 NAND 플래시 메모리를 사용하는 시스템을 생각해 보자. 이 시스템은 집중 관리 블록에 메모리 전체의 공백 블록의 위치를 나타내는 정보를 기입하고 있다고 하면, 이 관리 정보의 판독이 불가능하게 된 경우, 8192 블록 전체를 스캔하여 공백 블록인지의 여부를 체크할 필요가 있다. 1블록의 스캔에 필요한 시간을 100μs라고 하면, 전체 블록을 스캔하기 위하여 약 820ms의 시간이 걸리게 된다.
만일, 이 시스템의 기동 시에 설정된 제약 시간이 500ms 이내이라고 하면, 이 제약 시간 내에 모든 블록의 관리 정보를 판독하는 것은 곤란하다. 따라서, 관리 정보의 판독이 불가능하게 된 시점에서 시스템을 기동하는 것이 불가능하게 된다. 이 경우, 대부분의 블록이 정상임에도 불구하고, 메모리 카드를 사용하는 것이 곤란해진다.
따라서, 본 실시 형태에서는, 도 1에 도시한 바와 같은 동작에 의해, 관리 블록을 재구축함으로써, 시스템의 기동을 가능하게 하고 있다. 도 1은 예를 들면 메모리 카드(1)의 컨트롤러(4)의 동작을 도시하고 있다.
이하, 도 1을 참조하여 메모리 카드의 기동 시의 동작에 관하여 설명한다.
도 3에 도시한 바와 같이, 메모리 카드(1)가 호스트(20)에 장착되고, 호스트(20)에 의해 메모리 카드(1)가 기동되면(S11), 플래시 메모리(3) 내의 집중 관리 블록이 검출된다(S12). 이 집중 관리 블록의 검출은 예를 들면 다음과 같이 행해진다.
도 16에 도시한 바와 같이, 제품 출하 시에, 플래시 메모리(3)의 기억 영역은 복수개의 에리어(Area0∼3)로 프리포맷되어 있다. 1개의 에리어는 예를 들면 1024개의 블록을 포함하고 있다. 각 에리어는 집중 관리 블록이 존재하는지의 여부를 나타내는 정보를 기억하는 특정 페이지를 포함하는 데이터 블록(이하, 마킹 블록이라 함)을 갖고 있다. 즉 각 에리어에는 1개의 마킹 블록이 형성되어 있다. 예를 들면, 특정 페이지(page0)를 구성하는 모든 컬럼의 값이 "0"인 경우, 해당 특정 페이지가 속해 있는 에리어에는 집중 관리 블록은 존재하지 않고, 컬럼의 값이 "1"로 되어 있는 것이 1개라도 존재하는 경우, 해당 특정 페이지가 속해 있는 에리어에는 집중 관리 블록이 존재하는 것을 표시하도록 정의되어 있다. 도 16에 도시한 예의 경우, Area1에 집중 관리 블록이 존재한다.
컨트롤러(4)는 집중 관리 블록을 검색할 때, 각 에리어에 포함되는 마킹 블록을 찾고, 그 마킹 블록에 포함되는 특정 페이지를 참조함으로써, 집중 관리 블록 을 검색한다.
집중 관리 블록이 검출되면, 집중 관리 블록 내의 정보가 판독된다(S13). 이 판독 시에 예를 들면 ECC 에러 등, 정정 불가능한 에러가 발생했는지의 여부가 판단된다(S14). 그 결과, 에러가 발생한 경우, 집중 관리 블록이 재구축된다. 즉 플래시 메모리(3)의 각 블록이 스캔되고, 각 블록으로부터 관리 정보가 판독된다. 이 판독된 관리 정보는 예를 들면 도 3에 도시한 버퍼(7)에 보유된다. 이러한 동작은 플래시 메모리(3) 내의 블록수가 예를 들면 8192개인 경우, 그 절반인 4096개분에 대해 반복된다(S15). 이와 같이 하여, 플래시 메모리(3)내의 전반의 블록으로부터 관리 정보가 검색되면, 버퍼(7) 내에 보유된 관리 정보가 플래시 메모리(3)의 집중 관리 블록에 기입된다(S16).
그 후, 플래시 메모리(3) 내의 나머지 4096 블록을 스캔하고, 이들 블록으로부터 관리 정보를 판독한다(S17). 이 판독된 관리 정보는 버퍼(7) 내에 보유된다. 후반의 4096 블록으로부터 관리 정보가 판독되면, 버퍼(7) 내의 관리 정보가 플래시 메모리(3)의 집중 관리 블록에 기입된다(S18).
그런데, 후반의 4096 블록의 스캔 중에 시스템이 설정된 제약 시간에 도달하면 기동 불가능하게 된다. 그 후, 시스템을 재차 기동하면(S11), 집중 관리 블록이 검색되고(S12), 집중 관리 정보가 판독된다(S13). 그 후, 판독 에러가 발생했는지의 여부가 판별된다(S14). 이 경우, 상기 전반 4096 블록의 데이터는 집중 관리 블록에 이미 기록되고, 이 기록은 정상적으로 종료되어 있다. 이로 인해, ECC 에러는 발생하고 있지 않다. 따라서, 제어가 스텝 S19로 이행되고, 집중 관리 블 록에 전체 블록의 관리 정보가 기록되어 있는지의 여부가 판별된다. 이 경우, 전체 블록의 절반의 블록의 관리 정보만이 기록되어 있기 때문에, 제어가 상기 스텝 S17로 이행되고, 나머지 4096 블록이 스캔되고, 관리 정보가 검색된다. 이 검색된 관리 정보는 버퍼(17)에 기억되고, 검색이 종료되면, 버퍼(17)에 보유된 관리 정보가 플래시 메모리(3)의 집중 관리 블록에 기입된다(S18). 후반의 스캔은 전체 블록의 절반의 블록을 스캔하면 된다. 이로 인해, 시스템에 설정된 제약 시간의 범위 내에서, 후반의 관리 정보를 검색할 수 있다. 따라서, 후반의 스캔하는 동안에 타임 아웃하는 것을 회피할 수 있다.
구체적으로는, 1 블록의 스캔에 요하는 시간이 예를 들면 100μs이고, 이 시스템의 기동 시에 설정된 제약 시간이 예를 들면 500ms인 것으로 한 경우, 8192개의 블록의 절반인 4096개의 블록을 스캔하기 위하여 필요한 시간은 약 410ms이다. 따라서, 전반의 블록 스캔 및 후반의 블록 스캔은 제약 시간 내에서 종료된다. 이로 인해, 타임 아웃을 회피할 수 있다.
이와 같이 하여, 검색한 관리 정보를 집중 관리 블록에 기입하고, 집중 관리 블록을 재구축한 상태에서 시스템을 기동할 수 있다(S20).
또한, 상기 실시 형태에 있어서, 블록 스캔은 시스템에 설정된 제약 시간보다 약간 짧고, 전반, 후반 모두 전체 블록 수의 절반인 4096 블록으로 하였다. 그러나, 이것에 한정되지 않고, 1 블록의 스캔에 필요한 시간이나, 시스템 기동 시의 제약 시간에 따라서, 스캔 대상의 블록 수를 적게 해도 된다. 예를 들면, 제약 시간이 메모리(3)의 전체 블록 수의 절반 이하의 블록 수를 스캔하는데 필요한 시간 으로 설정되어 있는 경우, 1회의 스캔으로, 관리 정보를 판독 가능한 블록 수는 4096개 이하로 된다. 따라서, 메모리(3)의 전체 블록을 스캔하기 위한 횟수가 증가하기 때문에, 정상적으로 기동할 때까지의 재기동 횟수가 늘어나게 되지만, 재기동 불능으로 되는 것을 회피할 수 있다.
상기 실시 형태에 따르면, 시스템의 기동 시에 집중 관리 정보의 판독이 불가능하게 된 경우, 시스템에 설정된 제약 시간 내에서, 플래시 메모리(3)의 블록을 스캔하여 관리 정보를 판독하고, 판독한 관리 정보를 집중 관리 블록에 기입하고 있다. 이로 인해, 집중 관리 정보의 판독이 불가능하게 된 경우에도, 몇번이나 시스템을 재기동하여 각 블록의 관리 정보를 검색하고, 집중 관리 블록에 기입함으로써, 집중 관리 정보를 복구할 수 있어, 시스템의 재기동 불능을 회피할 수 있다.
본 발명은 이상에서 살펴본 바와 같이 바람직한 실시 형태를 들어 기술하고 설명하였으나, 상기한 실시 형태에 한정되지 아니하며 본 발명의 정신을 벗어나지 않는 범위 내에서 당해 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 다양한 변경과 수정이 가능할 것이다.
본 발명에 따르면, 집중 관리 블록에 에러가 있는 경우에도, 시스템을 확실하게 기동하는 것이 가능한 메모리 카드 및 그 제어 방법을 제공할 수 있다.

Claims (20)

  1. 관리 정보를 포함하는 복수개의 블록과, 각 블록의 상기 관리 정보를 집중한 집중 관리 블록을 갖는 메모리와,
    기동 시에 상기 메모리 내의 상기 집중 관리 블록을 검출하는 제어부를 구비하며,
    상기 제어부는, 상기 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 상기 블록으로부터 상기 관리 정보를 검색하고, 그 검색된 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 메모리 카드.
  2. 제1항에 있어서,
    복수개의 정보를 기억하는 버퍼를 더 구비하고,
    상기 제어부는, 상기 제약 시간보다 짧은 시간 동안에, 상기 메모리 내의 복수개의 상기 블록으로부터 관리 정보를 검출하여 상기 버퍼에 기억시키고, 상기 버퍼에 기억된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 메모리 카드.
  3. 제1항에 있어서,
    상기 제어부는, 기동 시에 상기 집중 관리 블록에 전체 블록의 관리 정보가 기록되어 있지 않은 경우, 상기 제약 시간보다 짧은 시간 동안에, 상기 메모리의 나머지 블록으로부터 관리 정보를 검색하여 상기 버퍼에 기억시키고, 상기 버퍼에 기억된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 메모리 카드.
  4. 제1항에 있어서,
    상기 집중 관리 블록은, 상기 블록이 정상인지의 여부를 나타내는 제1 정보를 포함하는 메모리 카드.
  5. 제1항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이상으로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 절반의 블록을 스캔하는 메모리 카드.
  6. 제1항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이하로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 전체 블록수의 절반 이하의 블록을 스캔하는 메모리 카드.
  7. 제1항에 있어서,
    상기 에러는, 정정 불가능한 에러인 메모리 카드.
  8. 제1항에 있어서,
    상기 메모리는 NAND형 플래시 메모리인 메모리 카드.
  9. 기동 시에 메모리 내의 집중 관리 블록을 검출하는 단계와,
    상기 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 블록으로부터 관리 정보를 검색하는 단계와,
    검색된 상기 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 단계를 포함하는 메모리 카드의 제어 방법.
  10. 제9항에 있어서,
    복수개의 정보를 기억하는 버퍼를 더 구비하고,
    상기 제약 시간보다 짧은 시간 동안에, 상기 메모리 내의 복수개의 상기 블록으로부터 관리 정보를 검출하여 상기 버퍼에 기억시키고, 상기 버퍼에 기억된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 메모리 카드의 제어 방법.
  11. 제9항에 있어서,
    상기 기동 시에 상기 집중 관리 블록에 전체 블록의 관리 정보가 기록되어 있지 않은 경우, 상기 제약 시간보다 짧은 시간 동안에, 상기 메모리의 나머지 블록으로부터 관리 정보를 검색하여 상기 버퍼에 기억시키고, 상기 버퍼에 기억된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 메모리 카드의 제어 방법.
  12. 제9항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이상으로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 절반의 블록을 스캔하는 메모리 카드의 제어 방법.
  13. 제9항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이하로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 전체 블록수의 절반 이하의 블록을 스캔하는 메모리 카드의 제어 방법.
  14. 제9항에 있어서,
    상기 집중 관리 블록은, 상기 블록이 정상인지의 여부를 나타내는 제1 정보를 포함하는 메모리 카드의 제어 방법.
  15. 제9항에 있어서,
    상기 에러는, 정정 불가능한 에러인 메모리 카드의 제어 방법.
  16. 기동 시에 메모리 내의 집중 관리 블록을 검출하는 단계와,
    검출된 집중 관리 블록이 에러를 포함하는 경우, 시스템에 설정된 제약 시간 내에서, 상기 메모리 내의 복수개의 블록으로부터 관리 정보를 검색하는 단계와,
    검색된 상기 관리 정보를 상기 메모리의 상기 집중 관리 블록에 기입하는 단계와,
    검출된 집중 관리 블록이 에러를 포함하지 않은 경우, 상기 집중 관리 블록에 전체 블록의 관리 정보가 기록되어 있는지를 판별하는 단계와,
    전체 블록의 관리 정보가 기록되어 있지 않은 경우, 상기 제약 시간보다 짧은 시간 동안, 상기 메모리의 나머지 블록으로부터 관리 정보를 검색하고, 검색된 복수개의 관리 정보를 상기 메모리 내의 상기 집중 관리 블록에 기입하는 단계를 포함하는 메모리 카드의 제어 방법.
  17. 제16항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이상으로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 절반의 블록을 스캔하는 메모리 카드의 제어 방법.
  18. 제16항에 있어서,
    상기 제약 시간은, 상기 메모리의 전체 블록을 스캔하는데 필요한 시간의 절반 이하로 설정되고, 상기 제어부는, 집중 관리 블록이 에러를 포함하는 경우, 상기 메모리의 전체 블록수의 절반 이하의 블록을 스캔하는 메모리 카드의 제어 방법.
  19. 제16항에 있어서,
    상기 집중 관리 블록은, 상기 블록이 정상인지의 여부를 나타내는 제1 정보를 포함하는 메모리 카드의 제어 방법.
  20. 제16항에 있어서,
    상기 에러는, 정정 불가능한 에러인 메모리 카드의 제어 방법.
KR1020060060629A 2005-07-01 2006-06-30 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법 KR100757128B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00193958 2005-07-01
JP2005193958A JP2007011872A (ja) 2005-07-01 2005-07-01 メモリカードとその制御方法

Publications (2)

Publication Number Publication Date
KR20070003673A true KR20070003673A (ko) 2007-01-05
KR100757128B1 KR100757128B1 (ko) 2007-09-10

Family

ID=37591158

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060060629A KR100757128B1 (ko) 2005-07-01 2006-06-30 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법

Country Status (4)

Country Link
US (1) US7519876B2 (ko)
JP (1) JP2007011872A (ko)
KR (1) KR100757128B1 (ko)
TW (1) TW200715195A (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4460967B2 (ja) 2004-07-23 2010-05-12 株式会社東芝 メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007011872A (ja) 2005-07-01 2007-01-18 Toshiba Corp メモリカードとその制御方法
KR100780963B1 (ko) * 2006-11-03 2007-12-03 삼성전자주식회사 메모리 카드 및 메모리 카드의 구동 방법
US7861139B2 (en) 2007-01-26 2010-12-28 Micron Technology, Inc. Programming management data for NAND memories
JP5142685B2 (ja) 2007-11-29 2013-02-13 株式会社東芝 メモリシステム
KR101492116B1 (ko) * 2008-01-24 2015-02-09 삼성디스플레이 주식회사 커넥터 및 이를 갖는 표시장치
TWI467579B (zh) * 2011-01-14 2015-01-01 Mstar Semiconductor Inc 電子裝置及其記憶體控制方法以及相關電腦可讀取儲存媒體
JP7143735B2 (ja) * 2018-11-15 2022-09-29 Tdk株式会社 メモリコントローラ、及びメモリシステム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69421103T2 (de) * 1993-01-22 2000-06-08 Matsushita Electric Ind Co Ltd Programmgesteuertes Prozessor
JPH06332795A (ja) * 1993-05-18 1994-12-02 Sansei Denshi Japan Kk 電気的消去可能な不揮発性メモリの制御方法及びシステム
JP3472008B2 (ja) 1996-01-16 2003-12-02 株式会社東芝 フラッシュメモリ管理方法
US6330028B1 (en) * 1996-02-15 2001-12-11 Casio Computer Co., Ltd. Electronic image pickup device which is operable even when management information related to recording/reproducing image data is not readable
JP3718578B2 (ja) * 1997-06-25 2005-11-24 ソニー株式会社 メモリ管理方法及びメモリ管理装置
JPH11185459A (ja) * 1997-12-24 1999-07-09 Sony Corp 記録システム、記録装置
KR100429179B1 (ko) * 1998-07-01 2004-06-16 엘지전자 주식회사 광기록매체의결함영역관리장치및그방법
US6407949B1 (en) 1999-12-17 2002-06-18 Qualcomm, Incorporated Mobile communication device having integrated embedded flash and SRAM memory
IT1318979B1 (it) * 2000-10-06 2003-09-19 St Microelectronics Srl Architettura di memoria a semiconduttore
JP4323707B2 (ja) * 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
TW539950B (en) 2000-12-28 2003-07-01 Sony Corp Data recording device and data write method for flash memory
KR100416029B1 (ko) * 2001-06-26 2004-01-24 삼성전자주식회사 시프트 리던던시 회로를 갖는 반도체 메모리 장치
JP2003140980A (ja) 2001-10-31 2003-05-16 Hitachi Ltd 記録装置
US6707749B2 (en) 2002-08-14 2004-03-16 Intel Corporation Enabling an interim density for top boot flash memories
KR20040038262A (ko) * 2002-10-31 2004-05-08 주식회사 현대시스콤 플래시 디스크를 이용한 멀티 부팅 방법
US7330409B2 (en) * 2003-01-13 2008-02-12 Samsung Electronics Co., Ltd. Disc with temporary defect management area, and disc defect management method and apparatus therefor
JP3912355B2 (ja) 2003-10-14 2007-05-09 ソニー株式会社 データ管理装置、データ管理方法、不揮発性メモリ、不揮発性メモリを有する記憶装置及びデータ処理システム
JP4460967B2 (ja) 2004-07-23 2010-05-12 株式会社東芝 メモリカード、不揮発性半導体メモリ、及び半導体メモリの制御方法
JP2007011872A (ja) 2005-07-01 2007-01-18 Toshiba Corp メモリカードとその制御方法

Also Published As

Publication number Publication date
TW200715195A (en) 2007-04-16
US7519876B2 (en) 2009-04-14
JP2007011872A (ja) 2007-01-18
US20070005875A1 (en) 2007-01-04
KR100757128B1 (ko) 2007-09-10
TWI317099B (ko) 2009-11-11

Similar Documents

Publication Publication Date Title
US7404031B2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
US7898862B2 (en) Memory card, semiconductor device, and method of controlling memory card
JP3708047B2 (ja) フラッシュメモリの管理方法
KR100757128B1 (ko) 플래시 메모리를 이용한 메모리 카드 및 그 제어 방법
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
US8166258B2 (en) Skip operations for solid state disks
US8166233B2 (en) Garbage collection for solid state disks
US7890732B2 (en) Memory card and semiconductor device
US8230160B2 (en) Flash memory storage system and flash memory controller and data processing method thereof
US7245539B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
KR100687151B1 (ko) 메모리 카드, 반도체 장치, 및 반도체 메모리의 제어 방법
US8392797B2 (en) Error correcting controller, flash memory chip system, and error correcting method thereof
US20120254511A1 (en) Memory storage device, memory controller, and data writing method
US8589619B2 (en) Data writing method, memory controller, and memory storage apparatus
JP2014038593A (ja) オンチップのnand型フラッシュメモリおよびその不良ブロック管理方法
JPWO2005083573A1 (ja) 半導体メモリ装置
US20110145481A1 (en) Flash memory management method and flash memory controller and storage system using the same
US8819387B2 (en) Memory storage device, memory controller, and method for identifying valid data
US20120110300A1 (en) Data management method, memory controller and memory storage apparatus
US7657697B2 (en) Method of controlling a semiconductor memory device applied to a memory card
US20130067141A1 (en) Data writing method, and memory controller and memory storage apparatus using the same
JP2012037971A (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: 20110727

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20120821

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee