KR100769402B1 - 메모리 카드 - Google Patents

메모리 카드 Download PDF

Info

Publication number
KR100769402B1
KR100769402B1 KR1020060026848A KR20060026848A KR100769402B1 KR 100769402 B1 KR100769402 B1 KR 100769402B1 KR 1020060026848 A KR1020060026848 A KR 1020060026848A KR 20060026848 A KR20060026848 A KR 20060026848A KR 100769402 B1 KR100769402 B1 KR 100769402B1
Authority
KR
South Korea
Prior art keywords
data
block
address
write
memory
Prior art date
Application number
KR1020060026848A
Other languages
English (en)
Other versions
KR20060103219A (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 KR20060103219A publication Critical patent/KR20060103219A/ko
Application granted granted Critical
Publication of KR100769402B1 publication Critical patent/KR100769402B1/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
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47BTABLES; DESKS; OFFICE FURNITURE; CABINETS; DRAWERS; GENERAL DETAILS OF FURNITURE
    • A47B23/00Bed-tables; Trays; Reading-racks; Book-rests, i.e. items used in combination with something else
    • A47B23/002Bed-tables; Trays; Reading-racks; Book-rests, i.e. items used in combination with something else supported only by a person
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47CCHAIRS; SOFAS; BEDS
    • A47C27/00Spring, stuffed or fluid mattresses or cushions specially adapted for chairs, beds or sofas
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

메모리 카드는, 복수의 기입 단위 영역으로 이루어지는 복수의 제1 영역 및 복수의 제2 영역을 갖는 제1 메모리를 포함한다. 연산부는, 호스트 기기에 의해서 첨부된 어드레스를 갖는 기입 데이터를 제1 메모리에 기입하는 지시를 내린다. 제2 메모리는, 전회에 기입된 데이터의 어드레스와 연속하는 어드레스를 기대치로 하고, 기입 요구시에 기대치가 아닌 어드레스를 기억한다. 제1 카운터는, 기대치가 아닌 어드레스의 기입 데이터의 기입 요구가 있었던 횟수를, 어드레스마다 센다. 제3 메모리는, 제1 카운터에서의 값이 제1 설정치에 도달한 어드레스를 기억한다. 연산부는, 제3 메모리가 기억하는 어드레스의 기입 데이터의 기입 요구가 왔을 때, 이 어드레스에 상관 없이, 제2 영역의 데이터가 기입되어 있지 않은 부분에 기입 데이터를 기입하는 지시를 내린다.
메모리 카드, 컨트롤러, 버퍼, 카운터, NAND 플래쉬 메모리, 메모리 I/F, 호스트 I/F, 호스트

Description

메모리 카드{MEMORY CARD}
도 1은, 본 발명의 일 실시 형태에 따른 메모리 카드에 탑재되는 디바이스류의 개략 구성을 도시하는 사시도.
도 2는, 호스트와 메모리 카드를 포함하는 구성을 도시하는 블록도.
도 3은, 호스트가 상정하고 있는 플래시 메모리와 실제로 사용하는 플래시 메모리의 데이터 배치의 차이를 도시하는 도면.
도 4는, 호스트 및 메모리 카드의 각 커뮤니케이션 계층을 도시하는 도면.
도 5a 및 도 5b는, 호스트가 발행하는 커맨드의 포맷을 도시하는 도면.
도 6은, 호스트가 상정하고 있는 블록 기입 조작과, 메모리 카드가 실제로 행하는 기입 처리를 대비하여 도시하는 도면.
도 7은, 본 실시 형태에 따른 메모리 카드의 플래시 메모리의 메모리 공간의 일부, RAM의 일부, 카운터를 도시하는 도면.
도 8은, 본 실시 형태에 따른 메모리 카드의 기입 동작을 도시하는 플로우차트.
도 9 내지 도 32는, 각각 플래시 메모리의 각 부의 1개의 상태를 도시하는 도면.
<도면의 주요 부분에 대한 간단한 설명>
1: 메모리 카드
3: NAND 플래쉬 메모리
4: 컨트롤러
5: 메모리 I/F
6. 호스트 I/F
7: 버퍼
8: CPU
9: ROM
10: RAM
20: 호스트
[특허 문헌 1] 일본 특허 공개 공보 제2005-089896호
<관련 출원>
본 발명은 일본 특허 출원 2005-089896(2005년 3월 25일)에 기초한 것으로서, 그 우선권을 주장하며, 그 전체 내용이 본 명세서에서 참조로서 인용된다.
본 발명은, 메모리 카드에 관한 것으로, 예를 들면, 메모리 카드에의 데이터의 기입 방식에 관한 것이다.
현재, 음악 데이터나 화상 데이터의 기록 미디어로서 플래시 메모리 등의 불휘발성 반도체 메모리를 이용한 메모리 카드가 사용되고 있다. 메모리 카드를 이용하는 호스트 기기 내의 어플리케이션 등으로부터의 기입 요구에 따라서, 파일 시스템이, 메모리 카드에 기억되는 데이터를 관리한다.
파일 시스템은, 기입되는 데이터를 클러스터 단위의 크기로 분할하고, 분할된 각 데이터에 논리 어드레스(Logical Block Address(LBA))를 할당하고, LBA순서대로, 기입되어 있지 않은 클러스터에 데이터를 할당한다. 이 할당에 따라서, 메모리 카드는, 메모리에 실제로 데이터를 기입한다. 클러스터는, 데이터를 기억하는 것, 및 관리용 데이터를 기억하는 것으로 분류된다.
또한, 메모리 카드의 컨트롤러는, 데이터를 판독할 때의 효율성의 관점으로부터, 소정의 범위에 걸쳐 연속하는 LBA(예를 들면 LBA0 내지 15 등)의 데이터를, 관리 단위로서의 하나의 블록에 할당한다.
클러스터의 관리 데이터 기억용 부분의 테이블(예를 들면 FAT(File Allocation Table)에, 어느 데이터가 어느 클러스터에 할당되어 있는지가 기재된다. 파일이 판독될 때, 이 정보를 트레이스함으로써, 원래의 데이터가 복원된다. 또한, 관리 데이터로서, 파일명 또는 폴더명, 파일 사이즈, 속성 및 파일의 갱신 일시 등의 디렉토리 엔트리(directory entry(DIR))도 있다.
이들 관리용 데이터(상기 예의 FAT 및 DIR 등)는, 이상과 같은 특성으로부터, 데이터의 기입 동안에, 정기적으로 갱신된다.
한편, 메모리 카드의 플래시 메모리는, 1) 데이터의 기입은 페이지 단위로 행하여지고, 2) 데이터의 소거는 블록이라고 불리는 복수의 페이지를 통합한 단위로 행하여진다고 하는 특징을 갖는다. 이 때문에, 일반적으로, 기입 완료된 페이지를 갖는 블록 내에 포함되는 페이지 내의 데이터가 갱신되는 경우, 「이전(移轉) 기입」이라고 불리는 처리가 행하여진다. 이전 기입에서는, 기입되는 데이터(신 데이터)가 데이터가 기입되어 있지 않은 신 블록에 기입되고, 구 데이터(신 데이터로 재기입되는 데이터)를 포함하는 구 블록으로부터, 재기입되지 않는 잔여 데이터가 신 블록에 카피된다. 이 때문에, 1 페이지의 기입에 상당한 시간이 걸리는 경우가 있다.
상기한 바와 같이, 파일 시스템은, LBA(예를 들면 LBA0 내지 15 등)의 데이터를 1개의 블록에 할당한다. 이 때문에, 비연속의 LBA의 데이터가 기입될 때마다, 이 LBA가 속하는 LBA 군의 데이터가 포함된 블록을 이전하는 작업이 필요하게 된다. 이것은, 기입 속도의 저하로 연결된다.
LBA가 비연속으로 되는 타이밍으로서, 관리용 데이터의 갱신을 예로 들 수 있다. 이들은, 정기적으로 갱신되기 때문에, 이전 기입이 정기적으로 발생한다.
관리용 데이터의 갱신 시의 이전 기입을 회피하기 위해, 추기 전용(이전 기입의 필요성이 발생하지 않는) 캐쉬 블럭을 설정하는 것이 행하여진다. 그러나, 이 경우, 파일 시스템은, 어느 LBA의 데이터가, 캐쉬 블럭에의 기입에 적절한지(갱신이 빈번하게 발생하는지)를 판단할 필요가 있다. 즉, 메모리 카드에 대하여 이루어진 논리 포맷 상에서, 관리용 데이터(FAT, DIR)의 LBA가 어느 것인지가 판단될 필요가 있다.
이를 위한 방법으로서, 소정의 관리용 데이터를 기억하는 MBS(Master Boot Sector)나 파일 관리용 데이터의 내용을 해석하는 것이 생각된다. 그러나, 해석을 위해, 이들 데이터를 판독하는 시간, 판독된 데이터를 저장하기 위한 버퍼, 이들을 해석하는 시간 등의 여분의 시간 및 자원이 필요해진다.
본 발명의 제1 시점에 따른 메모리 카드는, 복수의 기입 단위 영역으로 이루어지는 복수의 제1 영역 및 복수의 제2 영역을 갖는 제1 메모리와, 호스트 기기에 의해서 첨부된 어드레스를 갖는 기입 데이터를 상기 제1 메모리에 기입하는 지시를 내리는 연산부와, 전회에 기입된 데이터의 어드레스와 연속하는 어드레스를 기대치로 하여, 기입 요구시에 상기 기대치가 아닌 상기 어드레스를 기억하는 제2 메모리와, 상기 기대치가 아닌 상기 어드레스의 상기 기입 데이터의 기입 요구가 있었던 횟수를, 상기 어드레스마다 세는 제1 카운터와, 상기 제1 카운터에서의 값이 제1 설정치에 도달한 상기 어드레스를 기억하는 제3 메모리를 구비하고, 상기 연산부는, 상기 제3 메모리가 기억하는 상기 어드레스의 상기 기입 데이터의 기입 요구가 왔을 때, 이 어드레스에 상관없이, 상기 제2 영역의 데이터가 기입되어 있지 않은 부분에 상기 기입 데이터를 기입하는 지시를 내리는 것을 특징으로 한다.
(실시예)
이하에 본 발명의 실시 형태에 대하여 도면을 참조하여 설명한다. 또한, 이하의 설명에서, 대략 동일한 기능 및 구성을 갖는 구성 요소에 대해서는, 동일 부 호를 붙이고, 중복 설명은 필요한 경우에만 행한다.
[1] 구성
도 1은, 본 발명의 일 실시 형태에 따른 메모리 카드에 탑재되는 디바이스류의 개략 구성을 도시하는 사시도이다. 도 1에 도시되는 바와 같이, 본 실시 형태에 따른 메모리 카드(1)는, PCB(Printed Circuit Board) 기판(2)과, 기판(2) 위에 배치된 NAND형 플래시 메모리(이하, 플래시 메모리라고 칭함)(3) 및 컨트롤러(4)를 갖는다.
컨트롤러(4)에는, CPU(Central Processing Unjt)(8)나 ROM(Read Only Memory)(9) 등의 기능 블록이 탑재되어 있다. 각 디바이스의 상세에 대해서는 후술한다. 또한, 플래시 메모리(3)는, 1개의 메모리 셀에 1 비트의 정보를 기억하는 2치 메모리이어도 되고, 1개의 메모리 셀에 1 비트보다 많은 정보(예를 들면 2 비트)를 기억하는 다치 메모리이어도 된다.
또한, 도 1에서는, 기판(2) 위에 플래시 메모리(3) 및 컨트롤러(4)가 배치된 경우를 도시하였지만, 플래시 메모리(3) 및 컨트롤러(4)는, 동일한 LSI(Large-scale Integration) 기판 위에 배치되어도 된다.
이하의 설명에서 사용하는 용어 「논리 블록 어드레스(LBA)」,「물리 블록 어드레스」는, 각각, 블록 자체의 논리 어드레스, 물리 어드레스를 의미하는 것이다. 또한, 「논리 어드레스」,「물리 어드레스」는, 주로, 블록 자체의 논리 어드레스, 물리 어드레스를 의미하는 것이기는 하지만, 블록 단위보다도 미세한 분해능의 단위에 상당하는 어드레스인 경우도 있을 수 있다는 것을 나타내는 것이다.
플래시 메모리의 메모리 영역은, 통상의 데이터 기억용 통상 블록과, 캐쉬 블록을 포함하고 있다. 기입하는 데이터가, 통상 블록과 캐쉬 블럭에 어떠한 법칙으로 할당되는지에 대해서는, 항목 [1-2] 기입 동작에서 상술한다.
도 2는, 호스트 기기와 메모리 카드를 포함하는 구성을 도시하는 블록도이다. 도 2에 도시되는 바와 같이, 호스트 기기(이하, 호스트라고 칭함)(20)는, 접속되는 메모리 카드에 대하여 액세스를 행하기 위한 하드웨어 및 소프트웨어(시스템)을 구비하고 있다. 호스트(20)는, 메모리 카드(1) 내부의 물리 상태(어느 물리 블록 어드레스에, 몇번째의 논리 섹터 어드레스 데이터가 포함되어 있는지, 혹은, 어느 블록이 소거 상태인지)를 관리하고, 메모리 카드(1) 내의 플래시 메모리(3)를 직접 제어하는 것으로서 구축되어 있다.
또한, 호스트(20)는, 소거 시의 소거 블럭 사이즈가 16kB로 정해져 있는 플래시 메모리(3)를 사용하는 것을 전제로 하여, 16kB 단위로 논리·물리 어드레스의 할당을 행한다. 대부분의 경우, 호스트(20)는, 논리 어드레스 16kB분에 관해서 시퀀셜하게 라이트 액세스 혹은 리드 액세스를 행한다(해당하는 커맨드를 발행한다).
메모리 카드(1)는, 호스트(20)에 접속되었을 때에 전원 공급을 받아 동작하고, 호스트(20)로부터의 액세스에 따른 처리를 행한다.
플래시 메모리(3)는, 불휘발성 메모리로서, 그 소거 시의 소거 블록 사이즈(소거 단위의 블럭 사이즈)가 256kB로 정해져 있다. 플래시 메모리(3)에의 데이터의 기입, 및 플래시 메모리(3)로부터의 데이터의 판독은, 예를 들면 16kB 단위로 행하여진다. 플래시 메모리(3)는, 예를 들면 0.09㎛ 프로세스 기술을 이용하여 제 작된다. 즉, 플래시 메모리(3)의 디자인 룰은 0.1㎛ 미만이다.
컨트롤러(4)는, CPU(8) 및 ROM(9) 이외에, 메모리 인터페이스부(5), 호스트 인터페이스부(6), 버퍼(7), 및 RAM(Random Access Memory)(10)을 탑재하고 있다.
메모리 인터페이스부(5)는, 컨트롤러(4)와 플래시 메모리(3) 사이의 인터페이스 처리를 행한다. 호스트 인터페이스부(6)는, 컨트롤러(4)와 호스트(20) 사이의 인터페이스 처리를 행한다.
버퍼(7)는, 호스트(20)로부터 보내져오는 데이터를 플래시 메모리(3)에 기입할 때에, 일정량의 데이터(예를 들면 1 페이지분)를 일시적으로 기억한다. 또한, 버퍼(7)는, 플래시 메모리(3)로부터 판독되는 데이터를 호스트(20)에 송출할 때에, 일정량의 데이터를 일시적으로 기억한다.
CPU(연산부)(8)는, 메모리 카드(1) 전체의 동작을 담당한다. CPU(8)는, 예를 들면, 메모리 카드(1)가 전원 공급을 받았을 때에, ROM(9) 내에 저장되어 있는 펌웨어(제어 프로그램)를 RAM(10) 상에 로드하여, 소정의 처리를 실행한다. CPU(8)는, 펌웨어에 따라서, 각종의 테이블을 RAM(10) 상에서 작성하거나, 호스트(20)로부터 기입 커맨드, 판독 커맨드, 소거 커맨드를 받아 플래시 메모리(3) 상의 해당 영역에 대한 액세스를 실행하거나, 버퍼(7)를 통한 데이터 전송 처리를 제어하거나 한다.
ROM(9)은, CPU(8)에 의해 사용되는 제어 프로그램 등을 저장한다. RAM(10)은, 휘발성 메모리로서, CPU(8)의 작업 에리어로서 사용되고, 제어 프로그램이나 각종의 테이블을 기억한다.
또한, RAM(10)은, 후술하는 캐쉬 블럭의 관리용 영역 cp, ep(RAMcp, RAMep)를 갖는다. RAMcp, RAMep는, 예를 들면 각각 8개의 기억 단위를 갖는다. RAMcp는, 캐쉬 블럭에 기입하는 후보의 LBA를 저장하고 있다.
cp 카운터 ctcp, ep 카운터 ctep는, RAMcp, RAMep 내의 LBA의 상태에 따라서, 계수를 행한다. RAMcp, RAMep, cp 카운터 ctcp, ep 카운터 ctep의 상세한 동작에 대해서는, 항목〔2] 기입 동작에서 설명한다.
도 3은, 호스트가 상정하고 있는 플래시 메모리와, 실제로 사용하는 플래시 메모리(즉, 메모리 카드 내의 플래시 메모리)의 데이터 배치의 차이를 도시하는 도면이다.
호스트(20)가 상정하고 있는 플래시 메모리는, 각 페이지는 528B(512B분의 데이터 기억부+16B분의 용장부)를 갖고 있고, 32 페이지분이 1개의 소거 단위(즉, 16kB+0.5kB(여기서, k는 1024))이다. 이하에서는, 이 1개의 소거 단위를 소 블록이라 칭하고, 이러한 플래시 메모리를 탑재한 카드를, 「소 블록 카드」라고 칭하는 경우가 있다.
한편, 실제로 사용하는 플래시 메모리(3)에서는, 각 페이지는 2112B(예를 들면 512B분의 데이터 기억부×4+10B분의 용장부×4+24B분의 관리 데이터 기억부)를 갖고 있고, 128 페이지분이 1개의 소거 단위(즉, 256kB+8kB)로 된다. 이하에서는, 이 1개의 소거 단위를 대 블록이라 칭하고, 이러한 플래시 메모리(3)를 탑재한 카드를, 「대 블록 카드」라고 칭하는 경우가 있다. 또한, 이하의 설명에서는, 편의상, 소 블록 카드의 소거 단위를 16kB라고 부르고, 대 블록 카드의 소거 단위를 256kB라고 부른다.
또한, 호스트(20)가 상정하고 있는 플래시 메모리와, 실제로 사용하는 플래시 메모리(3)는, 각각, 플래시 메모리에의 데이터 입출력을 행하기 위한 페이지 버퍼를 갖추고 있다. 호스트(20)가 상정하고 있는 플래시 메모리에 구비되는 페이지 버퍼의 기억 용량은, 528B(512B+16B)이다. 한편, 실제로 사용하는 플래시 메모리(3)에 구비되는 페이지 버퍼의 기억 용량은, 2112B(2048B+64B)이다. 데이터 기입 등의 때에는, 각 페이지 버퍼는, 플래시 메모리에 대한 데이터 입출력 처리를, 자신의 기억 용량에 상당하는 1 페이지분의 단위로 실행한다.
도 3의 예에서는, 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블럭 사이즈의 16배인 경우를 도시하였지만, 본 발명은 이것에 한정되지 않고, 대략 정수 배이면 다른 배율로 되도록 구성하는 것도 가능하다.
메모리 카드(1)를 실용상 유효한 제품으로 하기 위해서는, 도 3에 도시한 플래시 메모리(3)의 기억 용량은 1Gb 이상인 것이 바람직하다. 플래시 메모리(3)의 기억 용량이 예를 들면 1Gb인 경우, 256kB 블록(소거 단위)의 수는, 512개로 된다.
또한, 도 3에서는 소거 단위가 256kB 블록인 경우를 예시하고 있지만, 소거 단위가 예를 들면 128kB 블록으로 되도록 구축하는 것도 실용상 유효하다. 이 경우, 128kB 블록의 수는, 1024개로 된다.
또한, 도 3의 예에서는, 실제로 사용하는 플래시 메모리(3)의 소거 블록 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈보다도 큰 경우를 도시하였지만, 본 발명은 이것에 한정되지 않는다. 예를 들면, 실제로 사용하는 플래시 메모리(3)의 소거 블럭 사이즈가, 호스트(20)가 상정하고 있는 플래시 메모리의 소거 블록 사이즈보다도 작아도 된다.
도 4는, 호스트 및 메모리 카드의 각 커뮤니케이션 계층을 도시하는 도면이다. 도 4에 도시한 바와 같이, 호스트(20)의 시스템은, 어플리케이션 소프트(21), 파일 시스템(22), 드라이버 소프트(23), 및 소 블록 물리 액세스층(24)을 갖는다. 한편, 메모리 카드(1)의 시스템은, 소 블록 물리 액세스층(11), 소 블록 물리·소 블록 논리 변환층(12), 소 블록 논리·대 블록 물리 변환층(13), 및 대 블록 물리 액세스층(14)을 갖는다.
예를 들면, 호스트(20) 측의 어플리케이션 소프트(21)가 파일의 기입을 파일 시스템(22)에 요구하면, 파일 시스템(22)은, 소 블록의 논리 블록 어드레스(소 블록 논리 어드레스)에 기초하여 시퀀셜한 섹터 기입을 드라이버 소프트(23)에 지시한다. 이것을 받아, 드라이버 소프트(23)는, 소 블록 논리 어드레스에 기초하는 16kB 블록마다의 시퀀셜한 기입을 실현하기 위한 동작을 행한다. 즉 드라이버 소프트(23)는, 논리 블록 어드레스·물리 블록 어드레스 변환을 행하고, 다음으로, 소 블록 물리 액세스층(24)을 통하여, 소 블록의 물리 블록 어드레스(소 블록 물리 어드레스)에 의한 랜덤한 기입 커맨드를 메모리 카드(1)에 대하여 발행하여, 데이터 전송을 행한다.
또한, 라이트 액세스에서는, 소 블록에 기초를 둔 경우에도 대 블록에 기초를 둔 경우에도, 프로토콜 상, (1) 커맨드, (2) 페이지 어드레스(로우 어드레스), (3) 컬럼 어드레스, (4) 데이터, (5) 프로그램 확인 커맨드라는 순서로 정보의 송수신이 행하여지는 것이 전제로 되어 있다.
메모리 카드(1)의 소 블록 물리 액세스층(11)은, 호스트(20)로부터 소 블록 물리 어드레스에 의한 기입 커맨드를 받으면, 소 블록 물리 어드레스나 데이터 외에, 이것에 부수하는 부수 데이터에 포함되어 있는 소 블록 논리 어드레스를 취득한다.
소 블록 물리·소 블록 논리 변환층(12)은, 제1 테이블을 갖는다. 제1 테이블은, 데이터 판독 등의 때에 소 블록 물리 어드레스(16kB 블록분에 대응)로부터 소 블록 논리 어드레스(16kB 블록분에 대응)로의 변환 처리를 행하기 위해 이용된다.
변환층(12)은, 소 블록 물리 액세스층(11)이 기입 커맨드를 받아 소 블록 논리 어드레스를 취득하였을 때에는, 이것을 제1 테이블에 반영시킨다. 소 물리 블록 어드레스에 관해서도, 제1 테이블에 반영시킨다.
소 블록 논리·대 블록 물리 변환층(13)은, 제2 테이블을 갖는다. 제2 테이블은, 데이터 판독 등의 때에 소 블록 논리 어드레스(시퀀셜한 16kB 블록×16 갯수분에 대응)로부터 대 블록의 물리 블록 어드레스(대 블록 물리 어드레스(256kB 물리 블록분에 대응))로의 변환 처리를 행하기 위해 이용된다.
변환층(12)은, 소 블록 물리 액세스층(11)이 기입 커맨드를 받아 소 블록 논리 어드레스를 취득하였을 때에는, 이것을 제2 테이블에 반영시킨다.
대 블록 물리 액세스층(14)은, 소 블록 물리 액세스층(11)이 기입 커맨드를 받아 취득한 소 블록 논리 어드레스에 기초하여, 플래시 메모리(3) 내부의 데이터 배치를 결정하고, 256kB 물리 블록(대 물리 블록) 내에서 2kB(1 페이지) 단위로 시퀀셜하게 16kB분의 데이터를 기입한다. 따라서, 소 블록 1개분(16kB)의 기입의 결과, 대 물리 블록 중의 8 페이지분(1페이지=2kB)에 데이터가 기입된다. 또한, 호스트는, 1개의 소 논리 블록마다 1개의 LBA를 부여한다.
또한, 대 블록 물리 액세스층(14)은, 취득한 소 블록 논리 어드레스나 소 물리 블록 어드레스를 플래시 메모리(3) 내부에서의 관리 데이터 영역 내의 소정의 영역에 저장한다.
이와 같이, 호스트(20)는 소 블록 물리 어드레스에 기초하는 커맨드를 발행하기 때문에, 메모리 카드(1)는, 소 블록 물리 어드레스에 대응하는 데이터가 어느 대 물리 블록 중에 존재하는 것인지를 알 수 있도록 관리한다. 구체적으로는, 16kB 블록마다 소 블록 논리·소 블록 물리 어드레스의 대응 관계를 관리함과 함께, 연속한 256kB분의 소 블록의 소 논리 블록 어드레스에 대응하는 데이터가 어느 대 물리 블록에 저장되어 있는지를 알 수 있도록 관리한다.
도 5a 및 도 5b는, 호스트(20)가 발행하는 커맨드의 포맷을 도시하는 도면이다. 도 5a에 도시되는 바와 같이, 호스트(20)가 발행하는 커맨드의 패킷은, 커맨드 종별 정보(여기서는「기입」), 어드레스(물리 블록 어드레스), 데이터(콘텐츠 등의 실제 데이터 및 부수 데이터(512B+16B))라는 각종 정보를 포함하고 있다.
도 5b에 도시되는 바와 같이, 메모리 카드(1)에서는, 「어드레스」는, 소 블록 물리 어드레스에 상당한다. 이러한 포맷의 패킷에서는, 부수 데이터 16B 중의 소정의 위치에 소 블록 논리 어드레스(액세스 대상으로 되는 16kB 블록에 대응하는 논리 어드레스)가 배치되어 있다. 메모리 카드(1)는, 커맨드 종별 정보, 소 물리 블록 어드레스, 데이터를 취득하는 것 외에, 특히 상기의 소 논리 블럭 어드레스를 취득한다. 또한, 소 논리 블록 어드레스는, 판독 커맨드인 경우에는 부가되지 않는다.
도 6은, 호스트(20)가 상정하고 있는 블록 기입 조작과, 메모리 카드(1)가 실제로 행하는 기입 처리를 대비하여 도시하는 도면이다. 도 6에 도시되는 바와 같이, 호스트(20)(동도의 좌측)에서는, 소 블록 논리 어드레스에 기초하는 16kB 블록 단위의 시퀀셜한 기입 조작의 발생 시에, 소 블록 물리 어드레스에 의한 16kB 블록 단위의 랜덤한 기입 조작을 행한다.
한편, 메모리 카드(1)(동도의 우측)에서는, 호스트(20)로부터 기입 커맨드를 받은 경우, 소 블록 논리 어드레스에 기초한 16kB 블록(소 블록) 단위의 데이터를 플래시 메모리(3) 내에 시퀀셜하게 기입한다.
[2] 기입 동작
다음으로, 도 7 내지 도 32를 참조하여, 상기 구성의 호스트의 기입 동작에 대하여 설명한다. 도 7은, 본 실시 형태에 따른 메모리 카드의 플래시 메모리의 메모리 공간의 일부, RAMcp, ep, cp 카운터 ctcp, ctep를 도시하는 도면이다. 도 8은, 본 실시 형태에 따른 메모리 카드의 플래쉬 메모리의 기입 동작을 도시하는 플로우차트이다. 도 9 내지 도 32는, 각각, 플래시 메모리의 메모리 공간의 일부, RAM, 카운터의 1개의 상태를 도시하고 있다.
도 7에 도시되는 바와 같이, 메모리 공간은, 통상 데이터용 블록(통상 블록) n 내지 n+4, 캐쉬용 블록(캐쉬 블록) c, c+1을 포함한다. 각 블록 n 내지 n+4, c, c+1의 1열이 1개의 대 블록(즉, 소거 단위)에 상당한다. 각 대 블록마다 어드레스 n 내지 n+4, c, c+1가 할당된다. 또한, 각 대 블록은, 상기한 바와 같이 128 페이지로 이루어진다.
또한, 상기한 바와 같이, 호스트(20)로부터의 1개의 소 블록의 기입은, 대 블록 중의 8 페이지의 기입에 상당한다. 따라서, 각 대 블록을, 8 페이지마다 구분하여 도시하고 있다. 예를 들면, 각 대 블록의 도면의 최상의 기입 영역의 페이지 어드레스는 0 내지 7이다. 이하, 마찬가지이다.
1개의 대 블록 중의 8 페이지로 이루어지는 범위를 기입 영역(도면에서, 1개의 사각형에 대응)이라 칭하고, 이하, 설명한다. 그리고, 각 기입 영역을 좌표 형식(x, y)에 의해 나타낸다. 예를 들면, 블록 어드레스 n 내의 제8행째의 기입 영역을, (n, 8)의 기입 영역이라 칭한다.
1개의 대 블록(이하, 간단히 블록이라고 기재함)에는, 판독을 쉽게 하는 관점으로부터, 기본적으로, 소 블록 논리 어드레스(이하, LBA라고 기재함)가 연속하는 16개의 소 블록이 기입된다. 또한, 16이라는 수는, 본 실시 형태에서는, 1개의 블록이 16개의 기입 영역을 갖는 것에 대응하고 있다. 따라서, 예를 들면, 어느 블록 어드레스 중의 기입 영역에, LBA2, LBA16의 데이터가 연속하여 기입되는 경우, LBA2의 데이터가 기입된 블록 중에, 빈(기입되어 있지 않은) 기입 영역이 있었다고해도, LBA16의 데이터는, 다른 블록 중의 기입 영역에 기입된다. 이하, 동일 한 블록에 속하는, 연속하는 16개의 LBA를 그룹이라 칭한다.
통상 블록에서는, 동일한 그룹에 속하는 LBA의 데이터를 하나의 블록에 통합하기 위해서, 데이터의 카피가 행하여진다. 한편, 캐쉬 블럭은, 추기 전용 블록이다.
RAMcp, ep는, 각각 8개의 기억 단위(도면 중 1개가 있음)로 이루어진다. 각 기억 단위는, 1개의 LBA의 값을 기억한다. 기억 단위의 수는, 적절히 증감하는 것이 가능하다. 그리고, 각 RAMcp, ep의 각 기억 단위에는, 설명의 편의상, 열을 따라, 순서대로 인덱스 0 내지 8이 할당되어 있다.
RAMcp, RAMep가 기억하는 값을 참조하면서, 컨트롤러(4)는, 소정의 LBA의 데이터를 캐쉬 블록에 할당한다. 어느 LBA가 RAMcp에 등록된 스텝에서는, 이 LBA는 캐쉬 블록에의 기입 대상으로는 안된다. 한편, RAMep는, 캐쉬 블럭에 기입하는 후보의 LBA를 저장하고 있다. RAMep에 LBA가 등록되어 있는 데이터가 갱신되는 경우, 이 LBA의 데이터는, 통상 블록이 아니라, 캐쉬 블록에 기입된다.
cp 카운터 ctcp는, RAMcp의 각 기억 단위에 대하여 설치되고, 후술하는 소정의 동작에 따라서 증가한다. 마찬가지로, ep 카운터 ctep는, RAMep의 각 기억 단위에 대하여 설치되고, 후술하는 소정의 동작에 따라서, 설정치로부터 감소한다.
다음으로, 도 8을 중심으로 이용하여, 각 동작의 구체예를 도 9 내지 도 31을 참조하면서, 기입 동작을 설명한다.
[2-1] 기입 요구
도 8에 도시되는 바와 같이, 호스트(20)로부터, 어느 LBA의 데이터의 기입 요구가 오면(스텝 S1), 컨트롤러(4)는, 이 기입되는 LBA(이하, 기입 LBA)가, RAMep에 등록되어 있는지의 여부를 판단한다(스텝 S2).
다음으로, 컨트롤러(4)는, 해당 LBA가 기대치인지의 여부를 판정한다(스텝 S3). 본 실시 형태인 경우, 「기대치」는, 예를 들면 LBA가, 전회에 기입된 데이터의 LBA와 연속하고 있는 것을 의미한다. LBA가 연속하지 않은 경우, 기입되는 데이터는, 먼저 기입된 데이터와 함께, 1개의 파일을 구성하는 등의 관계성을 갖지 않을 가능성이 있다. 즉, 앞의 기입 데이터의 LBA와 비연속의 LBA의 데이터는, FAT이나 DIR 등의 파일 정보일 가능성이 있다. 따라서, LBA의 연속성이, 이 LBA의 데이터를 캐쉬 블록에 기입하기 위한 판단의 재료의 1개로서 이용된다.
그러나, 본 발명은 이 양태에 한정되지 않는다. 즉, 본 발명의 실시 형태는, 어느 메모리와 그 컨트롤러에서, 컨트롤러가, 어느 법칙에 따라서 기입하는 경우 전반에 적용할 수 있다. 그리고, 이 법칙으로부터 벗어나는(기대치로부터 벗어나는) 데이터의 기입 요구를, 이 데이터를 캐쉬 블럭에 기입하기 위한 판단 재료로서 이용하고 있으면 된다. 따라서, 메모리와 그 컨트롤러의 구성에 따라서는, 예를 들면, 물리 블록 어드레스(Physical Logic Address)를 이용하여 판단하는 것 등도 가능하다.
[2-2] 기입 LBA가 기대치인 경우의 동작
기입 LBA가 기대치인 경우, 이 기입 LBA의 데이터는, 직전의 LBA와 동일한 통상 블록에 기입된다(스텝 S4).
다음으로, 지금까지의 동작을 구체예(도 9)를 따라 설명한다. 도 9는, 기입 영역(n, 1)에 LBA2의 데이터가 기입되어 있는 상태에서, LBA3의 데이터의 기입 요구가 온 경우를 도시하고 있다. LBA3은, RAMep에 등록되어 있지 않고, 직전에 기입된 LBA2와 연속하고 있다. 따라서, 도 9에 도시되는 바와 같이, LBA3의 데이터는, 기입 영역(n, 2)에 기입된다.
[2-3] 기입 LBA가 기대치가 아닌 경우의 동작
도 8의 스텝 S3의 판단이 부정인 경우, 컨트롤러(4)는, 기입 LBA가 RAMcp에 등록되어 있는지의 여부를 판단한다(스텝 S5). 등록되어 있지 않은 경우, 기입 LBA를 RAMcp에 등록함과 함께, 기입 LBA에 관해서 계수를 행하는 cp 카운터 ctcp를 "0"으로 세트한다(스텝 S6). 다음으로, 컨트롤러(4)는, 기입 LBA의 데이터를 통상 블록에 기입한다(스텝 S7). 이때 기입 LBA의 데이터는, 직전에 기입된 LBA의 데이터가 기입된 블록과 서로 다른 블록에 기입된다.
다음으로, 통상 블록의 정리가 행하여진다(스텝 S8). 여기서는, 1개의 블록에 통합되어 있는 복수의 LBA(동일한 그룹의 LBA)의 데이터가 서로 다른 블록에 기입되어 있는 경우에, 이들을 1개의 블록에 통합하는 작업이 행하여진다.
다음으로, 지금까지의 동작을 구체예(도 10 내지 도 15)를 따라 설명한다. 도 10은, 도 9에 계속되는 상태를 도시하고 있고, 도 9의 상태로부터 LBA10, 11, 12의 데이터의 기입 요구가 온 경우를 도시하고 있다. LBA10은, 직전에 기입된 LBA3으로부터의 기대치가 아니고, 또한, RAMcp에 등록되어 있지 않다. 따라서, 도 10에 도시되는 바와 같이, LBA10이 RAMcp에 등록되고, LBA10용 cp 카운터 ctcp가 "0"으로 세트된다.
다음으로, LBA10의 데이터는, 직전에 기입된 LBA3의 데이터가 존재하는 블록과 서로 다른 블럭 n+1 내의 기입 영역(n+1, 1)에 기입된다. 이와 같이, 기대치와 서로 다른 LBA의 데이터 기입이 지시될 때마다, 새로운 블록이 소비된다.
다음으로, LBA11, 12의 기입은, 이들 LBA 값이 LBA10으로부터의 기대치이기 때문에, 스텝 S1 내지 S4(도 9)와 마찬가지의 처리가 행하여진다. 이 결과, LBA11, 12의 데이터는, 각각, 기입 영역(n+1, 2), (n+1, 3)에 기입된다.
도 11은, 도 10에 계속되는 상태를 도시하고 있고, 도 10의 상태로부터, LBA2, 3의 기입 요구가 온 경우를 도시하고 있다. LBA2는, LBA12로부터의 기대치가 아니고, 또한, RAMcp에 등록되어 있지 않다. 따라서, 도 11에 도시되는 바와 같이, LBA2가 RAMcp에 등록되고, LBA10용 cp 카운터 ctcp가 "0"으로 세트된다. 다음으로, LBA2의 데이터는, 직전에 기입된 LBA12의 데이터가 존재하는 블록과 서로 다른 새로운 블록, 즉, 예를 들면 블록 어드레스 n+2 내의 기입 영역(n+2, 1)에 기입된다. 다음으로, LBA3은, LBA2로부터의 기대치이기 때문에, LBA2의 데이터의 기입 영역의 다음 기입 영역(n+2, 2)에 기입된다.
도 12는, 도 11에 계속되는 상태를 도시하고 있고, 도 11의 상태로부터 LBA13, 14, 15의 기입 요구가 온 경우를 도시하고 있다. LBA13은, LBA3으로부터의 기대치가 아니고, 또한, RAMcp에 등록되어 있지 않다. 따라서, 도 12에 도시되는 바와 같이, LBA13이 RAMcp에 등록되고, LBA13용 cp 카운터 ctcp가 "0"으로 세트된다.
다음으로, LBA13의 데이터는, 직전에 기입된 LBA3의 데이터가 존재하는 블록 과 서로 다른 새로운 블록, 즉, 예를 들면 블록 어드레스 n+3 내의 기입 영역(n+3, 1)에 기입된다. 다음으로, LBA14, 15는, LBA13으로부터의 기대치이기 때문에, LBA13의 데이터의 기입 영역의 다음 기입 영역(n+3, 2), (n+3, 3)에 순차적으로 기입된다.
LBA2, 3의 데이터는, 2개의 블록에 분리되어 기입되어 있다. 이 때문에, LBA13, 14, 15의 기입시에, 이들을 하나의 블록에 통합하는 처리가 행하여진다. 즉, LBA2, 3의 구 데이터가 기입되어 있는 블록(이하, 구 어사인 블록이라고 칭함)의 데이터를, LBA2, 3의 최신 데이터가 기입된 블록(이하, 신 어사인 블록이라고 칭함)에 이전하는 처리가 행하여진다.
도 13은, 도 12에 계속되는 상태를 도시하고 있다. 이 예의 경우, LBA2, 3과 동일한 그룹에 속하는 다른 데이터가 없기 때문에, 데이터를 1개의 블록에 통합할 필요는 없고, 단순히 블록 n이 소거될 뿐이다. 이 후, 블록 n은, 임의의 LBA의 데이터가 기입되었을 때에, 클린한 블록(소거 완료된 블록)으로서 기능한다. 이와 같이, 기대치와 서로 다른 LBA의 데이터가 기입될 때마다, 신 어사인 블록이 작성되고, 기입되는 LBA의 데이터를 제외한 데이터가 구 어사인 블록으로부터 신 어사인 블록으로 카피되어, 구 어사인 블록이 소거된다.
또한, RAMcp에 빈 부분이 없는 경우, 등록되어 있는 가장 오래된 LBA(인덱스0에 저장되어 있는 LBA)가 삭제된다.
도 14는, RAMcp에는 빈 부분이 없는 상태에서, 직전에 기입된 데이터의 LBA31과 비연속의 LBA34, 35, 36이 기입되는 경우를 도시하고 있다. 이 경우, 도 15에 도시되는 바와 같이, 인덱스 0 내의 LBA10이 삭제된다. 다음으로, 인덱스 1 내지 7의 LBA가, 각각, 1개 전의 인덱스로 이동된다. 이 결과, 빈 인덱스 7에 LBA34가 등록된다. 그리고, LBA34, 35, 36의 데이터가, 비어 있는 블록 내에 순차적으로 기입된다. 그러나, 바람직하게는, RAMcp에 항상 빈 부분이 있도록, 기대치로부터 벗어날 것으로 예상되는 LBA의 개수 등을 고려하여, RAMcp의 크기를 설정하는 것이 필요하다.
[2-4] 기입 LBA가 cp에 등록되어 있는 경우의 동작
다음으로, 도 8의 스텝 S5의 판정이 긍정인 경우, 컨트롤러(4)는, 기입 LBA용 cp 카운터 ctcp의 값을 증가시킨다(스텝 S9). 다음으로, 컨트롤러(4)는, 증가시킨 cp 카운터 ctcp의 값이 설정치에 도달하였는지의 여부를 판정한다(스텝 S10). 도달되어 있지 않은 경우, 처리는 스텝 S7로 이행하고, 다음으로, 필요에 따라 스텝 S8이 행하여진다.
한편, 스텝 S10의 판정의 결과, 기입 LBA용 cp 카운터 ctcp가 설정치에 도달하였다고 하는 것은, 기입 LBA가, LBA의 연속성을 빈번하게 방해하는 것을 의미한다. 즉, 전형적으로는, 이 LBA의 데이터가 관리용 데이터(예를 들면 FAT, DIR)일 가능성이 높다. 따라서, 이 LBA의 데이터가 차회 이후에 기입될 때에는, 캐쉬 블럭에 기입되어야 하는 것을 나타내기 위해서, 이 LBA가 RAMep에 등록된다(스텝 S11). 동시에, 이 LBA는, RAMcp로부터 삭제된다.
다음으로, 기입 LBA의 데이터가 통상 블록에 기입된다(스텝 S7). 다음으로,필요에 따라, 스텝 S8이 행하여진다.
다음으로, 지금까지의 동작을 구체예(도 16 내지 도 18)를 따라 설명한다. 이하의 구체예에서는, LBA를 RAMep에 넣는 계기로 되는 RAMcp의 설정치는, 2로 되어 있다. 도 16에 도시되는 바와 같이, RAMcp에 등록되어 있는 LBA2용 cp 카운터 ctcp의 값이 1이었던 것으로 한다.
도 16에 도시되는 상태에서, 기대치가 아닌 LBA2의 데이터의 기입 요구가 온 것으로 한다. 그러면, 도 17에 도시되는 바와 같이, LBA2의 cp 카운터 ctcp의 값이 증가한 결과, 설정치에 도달한다. 다음으로, LBA2는, RAMep에 등록되고, RAMcp로부터 삭제된다. 그리고, LBA2의 데이터가 블록 n에 기입된다.
또한, LBA2가 RAMep에 등록되면, LBA2용 ep 카운터 ctep가 초기치로 설정된다. 이 초기치는, 예를 들면 2로 되어 있다. 후술하는 바와 같이, 캐쉬 블록의 정리의 결과, 어느 LBA의 데이터가 새로운 캐쉬 블럭으로 이전할 때마다, 이 카운터의 값이 감소된다. 또한, RAMep에 등록되어 있는 LBA의 데이터가 기입될 때마다, 이 카운터의 값은 설정치로 재설정된다.
다음으로, 도 18에 도시되는 바와 같이, 동일한 그룹에 속하여, 신, 구 어사인 블록에 분리되어 기입되어 있는 LBA10 내지 LBA15의 데이터가 정리된다.
[2-5] 기입 LBA가 ep에 등록되어 있는 경우의 동작
도 8의 스텝 S1에서의 판정의 결과, 기입 LBA가 RAMep에 등록되어 있는 경우, 처리는 스텝 S21로 이행한다. 이것은, 기입 LBA의 데이터는, 캐쉬 블럭에 기입되는 것을 의미한다. 그리고, 이 타이밍에서, 필요에 따라 캐쉬 블록의 정리가 행하여진다. 따라서, 컨트롤러(4)는, 캐쉬 블록의 정리의 필요, 불필요를 판단한 다(스텝 S21). 이 판단은, 예를 들면, 이미 가득찬 캐쉬 블럭이 존재하는 경우 등에, 정리를 행한다고 판단할 수 있다.
[2-5-1] 캐쉬 블록의 정리가 행하여지지 않는 경우의 동작
도 8의 스텝 S21의 판정의 결과, 캐쉬 블록의 정리가 행하여지지 않는 경우, 금회의 기입 LBA의 기입을 이용하여, 필요에 따라 캐쉬 아웃 블록의 정리가 행하여진다. 여기서, 캐쉬 아웃 블록은, 후술하는 소정의 조건을 충족시킴으로써 캐쉬 블록으로부터 추출된 LBA의 데이터를 저장하는 블록이다. 캐쉬 아웃 블록에 관해서는, 후술한다.
우선, 컨트롤러(4)는, 캐쉬 아웃 블록의 유무를 판정한다(스텝 S22). 캐쉬 아웃 블록이 존재하지 않은 경우, 기입 LBA가, 캐쉬 블록 내의, 직전에 기입된 기입 영역의 다음 기입 영역에 기입된다(스텝 S23).
한편, 스텝 S22에서의 판정의 결과, 캐쉬 아웃 블록이 존재하는 경우, 캐쉬 아웃 블록의 정리가 행하여진다. 즉, 캐쉬 아웃 블록을 신 어사인 블록으로서, 이 캐쉬 아웃 블록 내의 LBA와 동일한 그룹의 LBA의 데이터가, 구 어사인 블록으로부터 카피된다(스텝 S24). 그리고, 구 어사인 블록이 소거된다.
이 후, 처리는, 스텝 S23으로 이행하여, 기입 LBA의 데이터가 기입된다. 또한, 스텝 S23과 스텝 S24는 동시에 행하여져도 된다.
다음으로, 구체예(도 19 내지 도 22)를 따라 설명한다. 도 19는, 캐쉬 블록의 정리가 불필요하고, RAMep에 등록되어 있는 LBA2의 데이터의 기입 요구가 오고있는 경우를 도시하고 있다. 이 경우, 도 20에 도시되는 바와 같이, LBA2은 RAMep 에 등록되어 있기 때문에, LBA2의 데이터는, 통상 블록이 아니라, 캐쉬 블록 c에 기입된다.
도 21은, 도 20의 후, LBA16 내지 18, LBA3의 기입 요구가 온 경우를 도시하고 있다. 도 21에 도시되는 바와 같이, LBA16 내지 18의 데이터가 블록 n+1에 기입된 후, LBA3은 RAMep에 등록되어 있기 때문에, LBA3의 데이터는 캐쉬 블록 c에 추기된다. 이 후, LBA의 번호에 따르지 않고서, 캐쉬 블럭에 기입되는 데이터는, 직전에 데이터가 기입된 캐쉬 블럭 내의 기입 영역의 다음 기입 영역에 차례 차례로 기입된다.
도 22는, 캐쉬 블럭의 정리가 불필요하고, 캐쉬 아웃된 LBA6의 데이터를 저장하는 캐쉬 아웃 블록 n+4가 존재하는 경우를 도시하고 있다. 그리고, LBA6과 동일한 그룹에 속하는 LBA10 내지 15의 데이터가 블록(구 어사인 블록에 대응) n+3에 기입되어 있다.
이 때문에, 도 23에 도시되는 바와 같이, LBA10 내지 15의 데이터가, 신 어사인 블록 n+4의 기입 영역(n+4, 5) 내지 (n+4, 10)에 카피되고, 다음으로, 구 어사인 블록 n+3이 소거된다.
[2-5-2] 캐쉬 블럭의 정리가 행하여지는 경우의 동작
도 8의 스텝 S21의 판정의 결과, 캐쉬 블럭의 정리가 행하여지는 경우, 금회의 기입 LBA의 기입을 이용하여, 캐쉬 블록의 정리가 행하여진다. 즉, 캐쉬 블럭 내의, 각 LBA의 최신의 데이터가, 최후에 데이터가 기입된 캐쉬 블럭(신 어사인 캐쉬 블록)에 카피된다. 또한, 동시에, 이전되는 LBA의 ep 카운터 ctep가 감소된다( 스텝 S25). 따라서, 캐쉬 블럭에 기입된 후, 추가로 기입되는 일없이 신 어사인 캐쉬 블록에 계속 카피되는 데이터의 LBA용 ep 카운터 ctep의 값은, 그 때마다 계속 감소된다.
다음으로, 컨트롤러(4)는, ep 카운터 ctep의 값이 감소한 결과, 0으로 된 LBA의 유무를 판정한다(스텝 S26). 컨트롤러(4)는, ep 카운터 ctep의 값이 0으로 된 LBA의 데이터를, 신 어사인 캐쉬 블럭에 기입하지 않고서, 캐쉬 아웃 대상의 후보로서 보류한다. 즉, 이 LBA의 데이터는, 캐쉬 블럭으로부터, 새로운 통상 블록(캐쉬 아웃 블록)에 카피될 후보로 된다.
다음으로, 캐쉬 아웃의 동작을 구체예(도 24, 도 25)를 따라 설명한다. 도 24에 도시되는 바와 같이, 캐쉬 블럭 c에는 비어 있는 기입 영역은 없다. 그리고,이 상태에서, LBA3의 데이터의 기입 요구가 온 것으로 한다. 그러면, 캐쉬 블럭 c에는 기입할 수 없기 때문에, 캐쉬 블럭의 정리가 필요하다.
다음으로, 도 25에 도시되는 바와 같이, 기입 요구가 있었던 LBA3 이외의 LBA(여기서는, LBA2만)의 최신의 데이터(여기서는, 기입 영역(c, 15)의 데이터)가, 구 어사인 캐쉬 블럭 c로부터 캐쉬 블럭 c+1로 카피된다. 여기서, 신 어사인 캐쉬 블록 c+1에 카피되는 LBA3의 ep 카운터 ctep의 값이 감소하지만, 0으로는 되지 않는다. 이 때문에, LBA3의 데이터는, 캐쉬 아웃의 대상으로는 안된다.
다음으로, 구 어사인 캐쉬 블럭 c가 소거된다. 다음으로, LBA3이 신 어사인 캐쉬 블록 c+1에 기입된다.
[2-5-2-1] 캐쉬 아웃 블록이 존재하지 않은 경우의 동작
여기서, 컨트롤러(4)는, 이미 캐쉬 아웃된 다른 LBA의 데이터를 저장하는 캐쉬 아웃 블록의 유무를 판정한다(스텝 S27). 캐쉬 아웃 블록이 설정되어 있지 않은 경우, 컨트롤러(4)는, 새롭게 캐쉬 아웃 블록을 준비하고, 그 중에, 캐쉬 아웃 대상의 LBA의 데이터를 기입한다(스텝 S28).
또한, 스텝 S28의 처리 후, 구 데이터에 의해 차지되고 있는 캐쉬 블럭(구 어사인 캐쉬 블럭)이 소거된다. 이 후, 기입 LBA의 데이터가, 신 어사인 캐쉬 블록에 기입된다(스텝 S23). 기입 LBA의 데이터의 기입과 함께, 기입 LBA의 ep 카운터 ctep의 값은, 초기치로 설정된다. 또한, 스텝 S28과 스텝 S23은, 동시에 행하여져도 된다.
다음으로, 지금까지의 동작을 구체예(도 26, 도 27)를 따라 설명한다. 도 26에 도시되는 바와 같이, 캐쉬 블럭 c에는 비어 있는 기입 영역은 없다. 그리고, 이 상태에서, LBA3의 데이터의 데이터의 기입 요구가 온 것으로 한다. 이 때문에, 캐쉬 블록 c의 정리가 필요하다. 여기서, LBA6의 ep 카운터 ctep의 값은 1이다.
이 경우, 우선, 도 27에 도시되는 바와 같이, LBA2, 3의 최신의 데이터가, 구 어사인 캐쉬 블록 c로부터 신 어사인 캐쉬 블록 c+1에 카피된다. 여기서, LBA6을 캐쉬 블럭 c+1에 카피하려고 하면, LBA6의 ep 카운터 ctep의 값은 0으로 된다. 이 때문에, LBA6의 데이터는, 캐쉬 아웃의 대상의 후보로 된다.
그리고, 캐쉬 아웃 블록이 존재하지 않기 때문에, 블록 n+1을 캐쉬 아웃 블록으로 하여, LBA6의 데이터가 블록 n+1에 기입된다. 다음으로, 캐쉬 블럭 c가 소거된다. LBA6은 RAMep로부터 삭제되고, LBA2, LBA3의 ep 카운터 ctep의 값은 감소 된다.
[2-5-2-2] 캐쉬 아웃 블록이 존재하는 경우의 동작
스텝 S27의 판단의 결과, 캐쉬 아웃 블록이 이미 존재하고 있는 경우, 캐쉬 아웃 대상의 후보의 LBA의 데이터는, 캐쉬 아웃되지 않고서, 신 어사인 캐쉬 블럭으로 카피된다(스텝 S29). 이것은, 메모리 영역의 크기의 제한으로부터, 캐쉬 아웃 블록의 존재를 1개로 설정하고 있기 때문이다.
메모리 영역의 용량이 허용되면, 이미 캐쉬 아웃 블록이 존재하고 있어도, 추가 캐쉬 아웃 블록을 준비하고, 여기에 캐쉬 아웃 대상의 후보의 LBA의 데이터를 기입하는 것도 가능하다. 다음으로, 처리는, 스텝 S23으로 이행한다. 또한, 스텝 S29와 스텝 S23은, 동시에 행하여져도 된다.
다음으로, 지금까지의 동작을 구체예(도 28 내지 도 32)를 따라 설명한다. 도 28은, 도 26과 달리, LBA6을 캐쉬 아웃하려고 했을 때에, 캐쉬 아웃 블록(블록 n+4)이 이미 존재하고 있는 경우를 도시하고 있다. 이 경우, 도 29에 도시되는 바와 같이, LBA6의 데이터는, 캐쉬 아웃되지 않고서, 신 어사인 캐쉬 블록 c+1에 기입된다. 다음으로, 구 어사인 캐쉬 블럭 c가 소거된다. LBA6은, 차회의 캐쉬 블록의 정리시에, 캐쉬 아웃된다.
상기 설명에서는, 캐쉬 블럭에 기입된 후, 추가 기입 요구가 없는 LBA의 데이터를, ep 카운터 ctep를 이용하여 선별하여, 통상 블록에 기입하는 방법이 취해지고 있다. 이것에 대하여, 간단히, RAMep에의 LBA의 등록을, 퍼스트인·퍼스트 아웃으로 행할 수도 있다. 이것에 대하여, 도 30 내지 도 32를 이용하여 설명한 다.
도 30에 도시되는 바와 같이, RAMep에는 빈 영역이 없고, 또한, cp 카운터 ctcp의 LBA0을 나타내는 값은 1이다. 이 상태에서, RAMep에 미등록의 LBA0의 데이터의 기입 요구가 있었던 것으로 한다.
이 경우, 도 31에 도시되는 바와 같이, 가장 먼저 등록되어 있는 LBA2가, RAMep로부터 제외된다. 그리고, LBA2의 데이터가, 직전에 기입된 LBA12로부터의 기대치가 아니기 때문에, 소거 완료된 블록 n에 기입된다. 그리고, RAMep의 각 인덱스의 값이, 1개 적은 인덱스로 순차적으로 이동되어, RAMep의 인덱스 7에 LBA0이 등록된다. 또한, LBA0은, RAMcp로부터 삭제된다.
다음으로, 도 32에 도시되는 바와 같이, LBA10 내지 LBA12의 데이터가, 구 어사인 블록 n+1로부터, 신 어사인 블록 n으로 카피되어, 구 어사인 블록 n+1이 소거된다. 그리고, 기입 LBA0의 데이터가, 블록 n+2에 기입된다.
본 발명의 일 실시 형태에 따른 메모리 카드에 따르면, 직전에 기입된 데이터의 LBA로부터의 기대치가 아닌 LBA의 데이터의 기입 요구가 있었던 경우, 이 LBA가 기억됨과 함께, 기대치가 아닌 LBA의 데이터의 기입 요구가 있었던 횟수가 계수된다. 그리고, 기대되지 않는 타이밍에서의 기입 요구가 소정 수에 도달하는 LBA의 데이터는, 추기 전용 캐쉬 블럭에 기입된다. 이 때문에, 이전 처리의 빈발을 일으키는 데이터를, 그 내용을 해석하지 않고 미리 선별할 수 있다. 따라서, 이전 처리의 횟수의 저하에 의해, 높은 기입 속도를 실현 가능한 메모리 카드를 얻을 수 있다.
당업자라면, 추가의 이점 및 변형은 용이하게 생각되어 질 것이다. 따라서, 보다 넓은 관점에서 본 발명은 본 명세서에 예시되고 기술된 특정 세부 내용 및 대표적 실시형태에 제한되지 않는다. 따라서, 첨부된 특허청구범위 및 그 등가물에 의해 정의된 바와 같이 전체적인 발명의 사상 및 권리범위를 벗어나지 않고 다양한 변형이 이루어질 수 있다.
본 발명의 일 실시 형태에 따른 메모리 카드에 따르면, 이전 처리의 빈발을 일으키는 데이터를, 그 내용을 해석하지 않고 준비에 선별할 수 있다. 따라서, 이전 처리의 횟수의 저하에 의해, 높은 기입 속도를 실현 가능한 메모리 카드를 얻을 수 있다.

Claims (8)

  1. 복수의 기입 단위 영역으로 이루어지는 복수의 제1 영역 및 복수의 제2 영역을 갖는 제1 메모리와,
    호스트 기기에 의해서 첨부된 어드레스를 갖는 기입 데이터를 상기 제1 메모리에 기입하는 지시를 내리는 연산부와,
    전회에 기입된 데이터의 어드레스와 연속하는 어드레스를 기대치로 하여, 기입 요구시에 상기 기대치가 아닌 상기 어드레스를 기억하는 제2 메모리와,
    상기 기대치가 아닌 상기 어드레스의 상기 기입 데이터의 기입 요구가 있었던 횟수를, 상기 어드레스마다 세는 제1 카운터와,
    상기 제1 카운터에서의 값이 제1 설정치에 도달한 상기 어드레스를 기억하는 제3 메모리
    를 구비하고, 상기 연산부는, 상기 제3 메모리가 기억하는 상기 어드레스의 상기 기입 데이터의 기입 요구가 왔을 때, 이 어드레스에 상관 없이, 상기 제2 영역의 데이터가 기입되어 있지 않은 부분에 상기 기입 데이터를 기입하는 지시를 내리는 메모리 카드.
  2. 제1항에 있어서,
    상기 연산부가, 기대치가 아닌 상기 어드레스를 갖는 상기 기입 데이터를, 상기 제1 영역의 데이터가 기입되어 있지 않은 부분에 기입하는 지시를 내리는 메모리 카드.
  3. 제1항에 있어서,
    상기 메모리 카드가, 상기 기입 데이터가 상기 제2 영역에 기입될 때마다 이 기입 데이터의 상기 어드레스에 관한 값을 초기치로 설정하는 제2카운터를 더 구비하는 메모리 카드.
  4. 제3항에 있어서,
    상기 연산부가, 상기 제2 영역의 1개가 기억하고 있는 각각의 상기 어드레스마다의 최신의 상기 기입 데이터를 상기 제2 영역의 1개인 신 제2 영역에 카피하는 지시를 내리고,
    상기 제2 카운터가, 상기 신 제2 영역에 카피된 상기 기입 데이터의 상기 어드레스에 관한 값을 변화시키는 메모리 카드.
  5. 제4항에 있어서,
    상기 연산부가, 상기 제2 카운터에서의 값이 제2 설정치에 도달한 상기 어드레스의 상기 기입 데이터를 상기 제1 영역의 1개에 카피하고,
    상기 제2 설정치에 도달한 상기 어드레스의 상기 기입 데이터가 카피된 후, 카피된 상기 기입 데이터의 상기 어드레스가 상기 제3 메모리로부터 삭제되는 메모리 카드.
  6. 제1항에 있어서,
    상기 제1 영역 및 상기 제2 영역이, 상기 제1 메모리의 데이터 소거 단위인 메모리 카드.
  7. 제1항에 있어서,
    소정 수의 연속하는 어드레스가, 1개의 그룹을 형성하고,
    상기 연산부가, 동일한 그룹에 속하는 복수의 상기 어드레스의 데이터가 2개의 상기 제1 영역에 기입되어 있는 경우에, 상기 2개의 상기 제1 영역의 한쪽인 구 제1 영역에 기입되어 있는 데이터를 상기 2개의 상기 제1 영역의 한쪽인 신 제1 영역에 기입하는 지시를 내리고, 또한 상기 구 제1 영역의 데이터를 삭제하는 지시를 내리는 메모리 카드.
  8. 제7항에 있어서,
    상기 연산부가, 상기 제3 메모리가 기억하는 상기 어드레스의 상기 기입 데이터를, 상기 제2 영역의 데이터가 기입되어 있지 않은 부분에 기입하는 지시를 내리는 메모리 카드.
KR1020060026848A 2005-03-25 2006-03-24 메모리 카드 KR100769402B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2005-00089896 2005-03-25
JP2005089896A JP4738038B2 (ja) 2005-03-25 2005-03-25 メモリカード

Publications (2)

Publication Number Publication Date
KR20060103219A KR20060103219A (ko) 2006-09-28
KR100769402B1 true KR100769402B1 (ko) 2007-10-22

Family

ID=37036544

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060026848A KR100769402B1 (ko) 2005-03-25 2006-03-24 메모리 카드

Country Status (4)

Country Link
US (1) US20060218347A1 (ko)
JP (1) JP4738038B2 (ko)
KR (1) KR100769402B1 (ko)
TW (1) TW200702991A (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5002201B2 (ja) 2006-06-30 2012-08-15 株式会社東芝 メモリシステム
US8533847B2 (en) * 2007-05-24 2013-09-10 Sandisk Il Ltd. Apparatus and method for screening new data without impacting download speed
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
US20100153474A1 (en) * 2008-12-16 2010-06-17 Sandisk Il Ltd. Discardable files
US8205060B2 (en) 2008-12-16 2012-06-19 Sandisk Il Ltd. Discardable files
US8849856B2 (en) * 2008-12-16 2014-09-30 Sandisk Il Ltd. Discardable files
US9104686B2 (en) 2008-12-16 2015-08-11 Sandisk Technologies Inc. System and method for host management of discardable objects
US9020993B2 (en) 2008-12-16 2015-04-28 Sandisk Il Ltd. Download management of discardable files
US9015209B2 (en) * 2008-12-16 2015-04-21 Sandisk Il Ltd. Download management of discardable files
US8375192B2 (en) 2008-12-16 2013-02-12 Sandisk Il Ltd. Discardable files
US20100235329A1 (en) * 2009-03-10 2010-09-16 Sandisk Il Ltd. System and method of embedding second content in first content
US20100333155A1 (en) * 2009-06-30 2010-12-30 Philip David Royall Selectively using local non-volatile storage in conjunction with transmission of content
JP5209793B2 (ja) * 2009-08-21 2013-06-12 パナソニック株式会社 不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム
US8463802B2 (en) 2010-08-19 2013-06-11 Sandisk Il Ltd. Card-based management of discardable files
US8549229B2 (en) 2010-08-19 2013-10-01 Sandisk Il Ltd. Systems and methods for managing an upload of files in a shared cache storage system
US8788849B2 (en) 2011-02-28 2014-07-22 Sandisk Technologies Inc. Method and apparatus for protecting cached streams
US8984032B2 (en) 2011-12-15 2015-03-17 Sandisk Technologies Inc. Method and system for providing storage device file location information
US9152641B2 (en) 2011-12-15 2015-10-06 Sandisk Technologies Inc. Method and system for providing storage device file location information
JP2015138272A (ja) * 2014-01-20 2015-07-30 ソニー株式会社 情報処理装置、情報処理方法、および情報処理プログラム
KR102309471B1 (ko) 2014-12-19 2021-10-07 에스케이하이닉스 주식회사 데이터 처리 시스템 및 데이터 처리 시스템의 동작 방법
US10289561B2 (en) 2017-08-08 2019-05-14 Samsung Electronics Co., Ltd. Nonvolatile memory devices and methods of controlling the same

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR870002591A (ko) * 1985-08-16 1987-08-31 미다 가쓰시게 시리얼 데이터 기억 반도체 메모리
KR20190000930U (ko) * 2017-10-12 2019-04-22 두리기농업회사법인 주식회사 차덖음장치

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6421766B1 (en) * 1998-12-16 2002-07-16 Intel Corporation Method and apparatus for approximated least-recently-used algorithm memory replacement
JP2001318824A (ja) * 2000-05-10 2001-11-16 Nec Miyagi Ltd フラッシュメモリのデータ管理方式およびそのプログラムを記録した記録媒体
US6748491B2 (en) * 2001-04-19 2004-06-08 International Business Machines Corporation Designing a cache using an LRU-LFU array
US7010662B2 (en) * 2002-02-27 2006-03-07 Microsoft Corporation Dynamic data structures for tracking file system free space in a 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
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR870002591A (ko) * 1985-08-16 1987-08-31 미다 가쓰시게 시리얼 데이터 기억 반도체 메모리
KR20190000930U (ko) * 2017-10-12 2019-04-22 두리기농업회사법인 주식회사 차덖음장치

Also Published As

Publication number Publication date
US20060218347A1 (en) 2006-09-28
JP2006268776A (ja) 2006-10-05
JP4738038B2 (ja) 2011-08-03
KR20060103219A (ko) 2006-09-28
TW200702991A (en) 2007-01-16

Similar Documents

Publication Publication Date Title
KR100769402B1 (ko) 메모리 카드
CN1223945C (zh) 改进的闪速文件系统
US20200310961A1 (en) Memory system and method for controlling nonvolatile memory
CN109144887B (zh) 存储器系统及控制非易失性存储器的控制方法
KR100389867B1 (ko) 플래시 메모리 관리방법
US6587915B1 (en) Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same
KR101612922B1 (ko) 메모리 시스템 및 메모리 시스템 관리 방법
JP4773342B2 (ja) 不揮発性記憶装置及びデータ書込み方法
KR100874702B1 (ko) 플래시 메모리 파일 시스템을 효율적으로 관리하기 위한장치 드라이버 및 방법
US7818489B2 (en) Integrating data from symmetric and asymmetric memory
CN108604165B (zh) 存储装置
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US20060179263A1 (en) Flash memory device and associated data merge method
KR20110117099A (ko) 메모리 장치에서 맵핑 어드레스 테이블을 유지관리하는 방법
US20050246480A1 (en) System and method capable of sequentially writing data to a flash memory
KR102349999B1 (ko) 반도체 장치 및 그 동작 방법
EP3752905B1 (en) Append only streams for storing data on a solid state device
KR20010110073A (ko) 블록 얼라인먼트 기능을 갖는 반도체 기억 장치
JP2008009527A (ja) メモリシステム
KR101017067B1 (ko) 낸드 플래시 메모리를 위한 지역성 기반의 가비지 컬렉션기법
CA2758235A1 (en) Device and method for storage, retrieval, relocation, insertion or removal of data in storage units
KR20080038368A (ko) 데이터 파일을 직접 저장하는 재프로그램가능 비휘발성메모리에 파일 데이터의 인덱싱
JP4242245B2 (ja) フラッシュrom制御装置
US7969781B2 (en) Method of controlling memory system
US10861580B2 (en) Memory system for controlling nonvolatile memory

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: 20110920

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20120924

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee