KR20080002646A - 불휘발성 반도체 메모리를 구비하는 메모리 시스템 - Google Patents

불휘발성 반도체 메모리를 구비하는 메모리 시스템 Download PDF

Info

Publication number
KR20080002646A
KR20080002646A KR1020070064437A KR20070064437A KR20080002646A KR 20080002646 A KR20080002646 A KR 20080002646A KR 1020070064437 A KR1020070064437 A KR 1020070064437A KR 20070064437 A KR20070064437 A KR 20070064437A KR 20080002646 A KR20080002646 A KR 20080002646A
Authority
KR
South Korea
Prior art keywords
data
memory
row address
write
page
Prior art date
Application number
KR1020070064437A
Other languages
English (en)
Other versions
KR100884429B1 (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 KR20080002646A publication Critical patent/KR20080002646A/ko
Application granted granted Critical
Publication of KR100884429B1 publication Critical patent/KR100884429B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • 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
    • 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/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Human Computer Interaction (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명은, 불휘발성 반도체 메모리(11)와 컨트롤러(12)를 구비한다. 불휘발성 반도체 메모리(11)는, 각각이 데이터를 유지 가능한 메모리 셀(MC)을 포함하는 복수의 메모리 블록(BLK0~BLKn)을 구비한다. 각각의 메모리 블록(BLK0~BLKn) 내의 데이터는 일괄하여 소거된다. 각각의 메모리 블록(BLK0~BLKn) 내에서, 데이터는, 복수의 메모리 셀(MC)의 집합인 페이지 단위로 일괄하여 기입된다. 컨트롤러(12)는, 불휘발성 반도체 메모리(11)에 대하여 기입 데이터 및 제1 로우 어드레스를 전송하고, 또한 전송한 상기 제1 로우 어드레스의 변경 명령과, 그 제1 로우 어드레스와는 상이한 제2 로우 어드레스를 발행한다. 불휘발성 반도체 메모리(11)는, 변경 명령이 발행되지 않을 때에는, 제1 로우 어드레스에 대응하는 페이지에 기입 데이터를 기입하고, 변경 명령이 발행되었을 때에는, 제2 로우 어드레스에 대응하는 페이지에 기입 데이터를 기입한다.
로우 어드레스, 메모리 블록, 메모리 셀, 연산 처리 장치, 기입 데이터, 플래시 메모리

Description

불휘발성 반도체 메모리를 구비하는 메모리 시스템{MEMORY SYSTEM WITH NONVOLATILE SEMICONDUCTOR MEMORY}
도 1은 본 발명의 제1 실시 양태에 따른 메모리 시스템의 블록도.
도 2는 본 발명의 제1 실시 양태에 따른 메모리 카드에서의 신호 핀에 대한 신호 할당을 도시하는 다이어그램.
도 3은 본 발명의 제1 실시 양태에 따른 메모리 카드가 구비하는 카드 컨트롤러의 블록도.
도 4은 본 발명의 제1 실시 양태에 따른 플래시 메모리의 블록도.
도 5는 본 발명의 제1 실시 양태에 따른 플래시 메모리의 데이터 기입 방법을 도시하는 플로우차트로서, 카드 컨트롤러에서의 처리를 도시하는 도면.
도 6은 본 발명의 제1 실시 양태에 따른 플래시 메모리의 카드 컨트롤러가 출력하는 신호의 타이밍차트.
도 7은 본 발명의 제1 실시 양태에 따른 플래시 메모리의 데이터 기입 방법을 도시하는 플로우차트로서, NAND형 플래시 메모리에서의 처리를 도시하는 도면.
도 8 및 도 9는 본 발명의 제1 실시 양태에 따른 메모리 시스템의 블록도로서, 데이터의 기입 시의 모습을 도시하는 도면.
도 10은 본 발명의 제2 실시 양태에 따른 플래시 메모리의 데이터 기입 방법 을 도시하는 플로우차트.
도 11 내지 도 14는 본 발명의 제2 실시 양태에 따른 메모리 시스템의 블록도로서, 데이터의 집약 시의 모습을 도시하는 도면.
도 15는 본 발명의 제3 실시 양태에 따른 플래시 메모리의 데이터 집약 방법을 도시하는 플로우차트로서, 카드 컨트롤러에서의 처리를 도시하는 도면.
도 16은 본 발명의 제3 실시 양태에 따른 플래시 메모리의 데이터 기입 방법을 도시하는 플로우차트로서, NAND형 플래시 메모리에서의 처리를 도시하는 도면.
도 17 내지 도 19는 본 발명의 제3 실시 양태에 따른 메모리 시스템의 블록도로서, 데이터의 집약 시의 모습을 도시하는 도면.
도 20은 본 발명의 제2, 제3 실시 양태에 따른 메모리 시스템이 구비하는 NAND형 플래시 메모리의 메모리 공간을 도시하는 개념도.
도 21은 플래시 메모리의 블록도.
도 22는 플래시 메모리의 블록도로서, 데이터의 집약의 모습을 도시하는 도면.
도 23은 본 발명의 제2, 제3 실시 양태의 변형예에 따른 플래시 메모리의 블록도로서, 데이터의 집약의 모습을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
1 : 메모리 카드
2 : 호스트 기기
11 : NAND형 플래시 메모리
12 : 카드 컨트롤러
13 : 신호 핀
14 : 버스 인터페이스
21 : 호스트 인터페이스 모듈
26 : 버퍼
23 : 플래시 컨트롤러
[특허 문헌 1] 일본 특개 2006-092169호 공보
본 출원은, 일본 특허 출원 제2006-182631호(2006년 6월 30일)에 기초한 것으로서, 그 우선권을 주장하며, 그 전체 내용이 본 명세서에서 참조로서 인용된다.
본 발명은, 메모리 시스템 및 카드 컨트롤러에 관한 것이다. 예를 들면, 불휘발성의 반도체 메모리와, 그 동작을 제어하는 카드 컨트롤러를 구비한 메모리 시스템에 관한 것이다.
NAND형 플래시 메모리에서는, 데이터는 복수의 메모리 셀에 대하여 일괄하여 기입된다. 이 일괄 기입의 단위는 페이지라고 불린다. 최근의 NAND형 플래시 메모리의 대용량화에 수반하여, 페이지 사이즈는 커져 오고 있다.
그러나, 호스트 기기로부터의 액세스 단위는 반드시 페이지 단위라고는 한정 되지 않는다. 예를 들면 기입 동작의 경우, 기입 데이터의 종단 위치가 페이지 경계가 아닌 경우가 있다. 그리고, 호스트 기기로부터 연속한 어드레스에서 다시 기입 액세스가 이루어질 가능성이 높다. 이것은, 호스트 기기가 큰 데이터를 한번에 플래시 메모리로 보낼 수 없어, 복수회로 분할하여 데이터를 기입하는 등의 이유 때문이다.
이 때, 종래의 NAND형 플래시 메모리에서는, 동일한 컬럼 위치에 대하여 2회 기입을 행하는 오버라이트를 하지 않는 한, 동일 페이지에 기입을 행하는 것이 일반적으로는 허가되어 있다. 따라서, 이러한 경우에는 문제는 발생하지 않는다.
그러나, 최근에는 메모리 셀의 미세화나 다치화(multi-level)에 수반하여, 동일 페이지에 복수회의 기입을 행하는 것이 신뢰성 상 문제로 되고, 이러한 동작이 금지되어 있는 NAND형 플래시 메모리도 증가하고 있다.
상기한 바와 같은 호스트 기기의 액세스를 예측하여 NAND형 플래시 메모리의 제어 시스템에서는, 연속하는 기입 액세스가 페이지의 종단 위치가 아닌 곳에서 종료하는 경우, 그 페이지의 데이터를 다른 메모리 블록에 기입하는 것이 행해지고 있다. 메모리 블록이란 메모리 셀의 집합으로서, 데이터의 소거 단위로 된다. 이 때, 미리 기입 종료 어드레스가 호스트 기기로부터 통지되지 않는 경우나, 호스트 기기로부터의 데이터 전송이 어떠한 이유에 의해 중단된 경우에는, 페이지 사이즈분의 데이터를 버퍼에 축적해 두는 기술이 알려져 있다. 이러한 기술은, 예를 들면 특허 문헌 1 등에 개시되어 있다. 본 방법의 경우, 최종적으로 데이터 사이즈가 페이지 사이즈에 충족하지 않았던 경우에는, 별도의 메모리 블록에 해당 데이터 를 기입한다.
그러나 본 방법으로는, 최종적으로 데이터 사이즈가 확정될 때까지 데이터의 기입을 행할 수 없어, 시간의 손실이 야기된다고 하는 문제가 있다.
본 발명은, 데이터의 기입 속도를 향상할 수 있는 메모리 시스템, 및 카드 컨트롤러를 제공한다.
본 발명의 하나의 양태에 따른 메모리 시스템은, 각각이 데이터를 유지 가능한 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 불휘발성 반도체 메모리 - 각각의 메모리 블록 내의 데이터는 일괄하여 소거되고, 각각의 상기 메모리 블록 내에서, 상기 데이터는, 복수의 상기 메모리 셀의 집합인 페이지 단위로 일괄하여 기입됨 -; 및
상기 불휘발성 메모리에 대하여 기입 데이터 및 제1 로우 어드레스를 전송하고, 또한 전송한 상기 제1 로우 어드레스의 변경 명령과, 그 제1 로우 어드레스와는 상이한 제2 로우 어드레스를 발행하는 컨트롤러 - 상기 불휘발성 반도체 메모리는, 상기 변경 명령이 발행되지 않을 때에는, 상기 제1 로우 어드레스에 대응하는 상기 메모리 셀에 상기 기입 데이터를 기입하고, 상기 변경 명령이 발행되었을 때에는, 상기 제2 로우 어드레스에 대응하는 상기 메모리 셀에 상기 기입 데이터를 기입함 - 를 구비한다.
본 발명의 하나의 양태에 따른 불휘발성 반도체 메모리를 제어하는 카드 컨 트롤러는, 호스트 기기에 접속 가능하게 되고, 상기 호스트 기기로부터 기입 데이터 및 제1 로우 어드레스를 수신하는 호스트 인터페이스와,
각각이 데이터를 유지 가능한 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 상기 불휘발성 반도체 메모리에 대하여, 상기 기입 데이터를 전송하고, 또한 상기 제1 로우 어드레스의 변경 명령과, 그 제1 로우 어드레스와는 상이한 제2 로우 어드레스를 발행하는 연산 처리 장치를 구비하고, 상기 메모리 블록 내의 데이터는 일괄하여 소거되고, 상기 각각의 상기 메모리 블록 내에서, 상기 기입 데이터는, 복수의 상기 메모리 셀의 집합인 페이지 단위로 일괄하여 기입되고, 상기 연산 처리 장치는, 상기 변경 명령에 의해, 상기 불휘발성 반도체 메모리에 대하여 상기 기입 데이터를 상기 제2 로우 어드레스에 대응하는 상기 페이지에 기입하도록 명령한다.
<실시예>
<제1 실시 양태>
본 발명의 제1 실시 양태에 따른 메모리 시스템에 대하여, 도 1을 이용하여 설명한다. 도 1은, 본 실시 양태에 따른 메모리 시스템의 블록도이다.
도시하는 바와 같이 메모리 시스템은, 메모리 카드(1) 및 호스트 기기(2)를 구비하고 있다. 호스트 기기(2)는, 버스 인터페이스(14)를 통하여 접속되는 메모리 카드(1)에 대하여 액세스를 행하기 위한 하드웨어 및 소프트웨어를 구비하고 있다. 메모리 카드(1)는, 호스트 기기(2)에 접속되었을 때에 전원 공급을 받아 동작하고, 호스트 기기(2)로부터의 액세스에 따른 처리를 행한다.
메모리 카드(1)는, 호스트 기기(2)와 버스 인터페이스(14)를 통하여 정보의 수수를 행한다. 메모리 카드(1)는, NAND형 플래시 메모리 칩(간단히 NAND형 플래시 메모리, 또는 플래시 메모리라고 부르는 경우가 있음)(11), 플래시 메모리 칩(11)을 제어하는 카드 컨트롤러(12), 및 복수의 신호 핀(제1 핀 내지 제9 핀)(13)을 구비하고 있다.
복수의 신호 핀(13)은, 카드 컨트롤러(12)와 전기적으로 접속되어 있다. 복수의 신호 핀(13)에서의 제1 핀 내지 제9 핀에 대한 신호의 할당은, 예를 들면 도 2에 도시하는 바와 같이 되어 있다. 도 2는, 제1 핀 내지 제9 핀과, 그들에 할당된 신호를 나타내는 표이다.
데이터 0 내지 데이터 3은, 제7 핀, 제8 핀, 제9 핀, 및 제1 핀에 각각 할당되어 있다. 제1 핀은, 또한, 카드 검출 신호에 대해서도 할당되어 있다. 또한, 제2 핀은 커맨드에 할당되고, 제3 핀 및 제6 핀은 접지 전위 Vss에, 제4 핀은 전원 전위 Vdd에, 제5 핀은 클럭 신호에 할당되어 있다.
또한, 메모리 카드(1)는, 호스트 기기(2)에 설치된 슬롯에 대하여 삽입 및 제거 가능하도록 형성되어 있다. 호스트 기기(2)에 설치된 호스트 컨트롤러(도시하지 않음)는, 이들 제1 핀 내지 제9 핀을 통하여 메모리 카드(1) 내의 카드 컨트롤러(12)와 각종 신호 및 데이터를 통신한다. 예를 들면, 메모리 카드(1)에 데이터가 기입될 때에는, 호스트 컨트롤러는, 기입 커맨드를, 제2 핀을 통하여 카드 컨트롤러(12)에 시리얼인 신호로서 송출한다. 이 때, 카드 컨트롤러(12)는, 제5 핀에 공급되어 있는 클럭 신호에 응답하여, 제2 핀에 부여되는 기입 커맨드를 받아들 인다.
여기서, 전술한 바와 같이, 기입 커맨드는, 제2 핀만을 이용하여 카드 컨트롤러(12)에 시리얼로 입력된다. 커맨드의 입력에 할당되어 있는 제2 핀은, 도 2에 도시하는 바와 같이, 데이터 3용의 제1 핀과 접지 전위 Vss용의 제3 핀 사이에 배치되어 있다. 복수의 신호 핀(13)과 그에 대한 버스 인터페이스(14)는, 호스트 기기(2) 내의 호스트 컨트롤러와 메모리 카드(1)가 통신하는 데에 사용된다.
이에 대하여, 플래시 메모리(11)와 카드 컨트롤러(12) 사이의 통신은, NAND형 플래시 메모리용의 인터페이스에 의해 행해진다. 따라서, 여기서는 도시하지 않지만, 플래시 메모리(11)와 카드 컨트롤러(12)는 예를 들면 8비트의 입출력(I/O)선에 의해 접속되어 있다.
예를 들면, 카드 컨트롤러(12)가 플래시 메모리(11)에 데이터를 기입할 때에는, 카드 컨트롤러(12)는, 이들 I/O선을 통하여 데이터 입력 커맨드 80H, 컬럼 어드레스, 페이지 어드레스, 데이터, 및 프로그램 커맨드 10H를 플래시 메모리(11)에 순차적으로 입력한다. 여기서, 커맨드 80H의 "H"는 16진수를 나타내는 것으로, 실제로는 "10000000"과 같은 8비트의 신호가, 8비트의 I/O선에 패러렐로 부여된다. 즉, 이 NAND형 플래시 메모리용의 인터페이스에서는, 복수 비트의 커맨드가 패러렐로 부여된다.
또한, NAND형 플래시 메모리용의 인터페이스에서는, 플래시 메모리(11)에 대한 커맨드와 데이터가 동일한 I/O선을 공용하여 통신되어 있다. 이와 같이, 호스트 기기(2) 내의 호스트 컨트롤러와 메모리 카드(1)가 통신하는 인터페이스와, 플 래시 메모리(11)와 카드 컨트롤러(12)가 통신하는 인터페이스는 상이하다.
다음으로, 도 1에 도시하는 메모리 카드(1)가 구비하는 카드 컨트롤러의 내부 구성에 대하여 도 3을 이용하여 설명한다. 도 3은 카드 컨트롤러(12)의 블록도이다.
카드 컨트롤러(12)는, 플래시 메모리(11) 내부의 물리 상태(예를 들면, 어느 곳의 물리 블록 어드레스에, 몇번째의 논리 섹터 어드레스 데이터가 포함되어 있는지, 혹은, 어느곳의 블록이 소거 상태인지)를 관리한다. 카드 컨트롤러(12)는, 호스트 인터페이스 모듈(21), MPU(22), 플래시 컨트롤러(23), ROM(24), RAM(25), 및 버퍼(26)를 갖는다.
호스트 인터페이스 모듈(21)은, 카드 컨트롤러(12)와 호스트 기기(2) 사이의 인터페이스 처리를 행한다.
MPU(22)는, 메모리 카드(1) 전체의 동작을 제어한다. MPU(22)는, 예를 들면 메모리 카드(1)가 전원 공급을 받았을 때에, ROM(24)에 저장되어 있는 펌웨어(제어 프로그램)를 RAM(25) 상에 읽어내서 소정의 처리를 실행함으로써, 각종 테이블을 RAM(25) 상에 작성한다. 또한 MPU(22)는, 호스트 기기(2)로부터 기입 커맨드, 읽어내기 커맨드, 소거 커맨드를 수취하고, 플래시 메모리(11)에 대하여 소정의 처리를 실행하거나, 버퍼(26)를 통한 데이터 전송 처리를 제어하거나 한다.
ROM(24)은, MPU(22)에 의해 제어되는 제어 프로그램 등을 저장한다. RAM(25)은, MPU(22)의 작업 에리어로서 사용되고, 제어 프로그램이나 각종 테이블(표)을 기억한다. 플래시 컨트롤러(23)는, 카드 컨트롤러(12)와 플래시 메모 리(11) 사이의 인터페이스 처리를 행한다.
버퍼(26)는, 호스트 기기(2)로부터 보내져 오는 데이터를 플래시 메모리(11)에 기입할 때에, 일정량의 데이터(예를 들면, 1페이지분)를 일시적으로 기억하거나, 플래시 메모리(11)로부터 읽어내어지는 데이터를 호스트 기기(2)에 송출할 때에, 일정량의 데이터를 일시적으로 기억하거나 한다.
다음으로, NAND형 플래시 메모리(11)의 내부 구성에 대하여 간단히 설명한다. 도 4는 NAND형 플래시 메모리(11)의 블록도이다. 도시하는 바와 같이 NAND형 플래시 메모리(11)는, 메모리 셀 어레이(30) 및 페이지 버퍼(31)를 구비하고 있다.
메모리 셀 어레이(30)는, 복수의 메모리 셀 블록 BLK0~BLKn(n은 2이상의 자연수)을 포함하고 있다. 또한 이하에서는 메모리 셀 블록 BLK0~BLKn을 단순히 메모리 블록 BLK라고 부르는 경우가 있다. 또한, 데이터의 소거는 메모리 블록 BLK 단위로 행해진다. 즉, 동일 메모리 셀 블록 BLK 내의 데이터는 일괄하여 소거된다. 메모리 셀 블록 BLK의 각각은, 복수의 메모리 셀 MC를 구비하고 있다. 각 메모리 셀은, 전하 축적층(예를 들면 플로팅 게이트와 컨트롤 게이트를 포함하는 적층 게이트를 구비한 MOS 트랜지스터이다. 또한 메모리 셀 블록 BLK 내에는, 복수의 워드선, WLO, WL1, …(이하 워드선 WL이라고 부름)과, 워드선 WL과 직교하는 비트선 BLO, BL1, …(이하 비트선 BL이라고 부름)이 설치되어 있다. 그리고, 동일 행에 있는 메모리 셀 MC는 동일한 워드선에 공통 접속되어 있다. 또한, 동일 열에 있는 메모리 셀 MC는, 복수의 메모리 셀 단위로 비트선 BL에 공통 접속되어 있다. 또한, 데이터의 기입 및 읽어내기는 복수의 메모리 셀의 집합마다 행해지고, 이 메 모리 셀의 집합을 1페이지라고 부른다. 또한, 읽어내기 시 및 기입 시에서, 로우 어드레스에 의해서 어느 하나의 워드선 WL이 선택되고, 컬럼 어드레스에 의해서 어느 하나의 비트선 BL이 선택된다. 도 4의 예이면, 플래시 메모리(11)의 각 페이지는, 2112바이트(512바이트분의 데이터 기억부×4+1O바이트 분의 용장부×4+24바이트 분의 관리 데이터 기억부)를 갖고 있고, 각 메모리 블록 BLK는 예를 들면 128페이지를 포함하고 있다.
페이지 버퍼(31)는, 플래시 메모리(11)에의 데이터 입출력을 행하고, 데이터를 일시적으로 유지한다. 페이지 버퍼(31)가 유지 가능한 데이터 사이즈는, 각 메모리 블록 BLK의 페이지 사이즈와 마찬가지로 2112바이트(2048바이트+64바이트)이다. 데이터 기입 등의 시에, 페이지 버퍼(11)는, 플래시 메모리(11)에 대한 데이터 입출력 처리를, 자신의 기억 용량에 상당하는 1페이지분의 단위로 실행한다. 또한, 이하에서는 설명을 간단화하기 위해, 용장부 및 관리 데이터 기억부에 대해서는 생략하고, 1페이지의 데이터 사이즈가 2048바이트인 것으로서 설명을 행한다.
다음으로, 상기 구성의 메모리 시스템에서의 데이터의 기입 방법에 대하여 설명한다. 우선, 도 5를 이용하여 카드 컨트롤러(12)가 주체로 되어 행하는 처리에 대하여 설명한다. 도 5는, 카드 컨트롤러(12)에서의 처리를 도시하는 플로우차트이다.
도시하는 바와 같이, 우선 카드 컨트롤러(12)는 호스트 기기(2)로부터 데이터의 기입 명령과, NAND형 플래시 메모리(11)에서 데이터를 기입할 어드레스를 수 신한다(스텝 S10). 계속해서 카드 컨트롤러(12)는, 호스트 기기(2)로부터 기입 데이터를 수신한다(스텝 S11). 그리고 카드 컨트롤러(12)는, 플래시 메모리(11)에 대하여 제1 기입 명령, 기입 데이터, 및 어드레스를 출력한다. 플래시 메모리(11)는, 제1 기입 명령을 수신함으로써, 기입 동작이 개시되는 것을 인식한다. 단, 실제로 데이터가 메모리 셀 MC에 기입되는 것은, 후술하는 제2 기입 명령이 부여된 시점이다.
다음으로, 카드 컨트롤러(12)의 MCU(22)는, 호스트 기기(2)로부터 기입 액세스의 종료, 또는 중단 명령이 있는지의 여부를 판정한다(스텝 S13). 없는 경우에는(스텝 S13, 아니오), MCU(22)는 제2 기입 명령을 플래시 메모리(11)에 출력한다(스텝 S14). 스텝 S14에서, 플래시 메모리는 카드 컨트롤러(12)로부터 계속된 데이터가 전송되거나, 제2 기입 명령, 혹은, 리세트 명령을 대기한다.
스텝 S13에서 종료 명령 또는 중단 명령이 부여되고 있던 경우에는(스텝 S13, 예), 플래시 메모리(11)에 전송된 기입 데이터가, 플래시 메모리(11)에서의 페이지 사이즈를 충족시키고 있는지의 여부를, MCU(22)가 판정한다(스텝 S15). 즉, 기입 데이터의 데이터 사이즈가 2048바이트인지 그 미만인지를 판정한다. 충족시키고 있던 경우, 즉 데이터 사이즈가 2048바이트이었던 경우에는(스텝 S16, 예), MCU(22)는 제2 기입 명령을 플래시 메모리(11)에 출력한다(스텝 S17). 충족시키고 있지 않은 경우, 즉 데이터 사이즈가 2048바이트 미만이었던 경우에는(스텝 S16, 아니오), MCU(22)는 로우 어드레스 변경 명령과, 새로운 로우 어드레스를 발행하여, 이것을 플래시 메모리(11)에 출력한다(스텝 S18). 그리고 스텝 S17의 처리를 행한다.
이상의 처리에서, 카드 컨트롤러(12)로부터 플래시 메모리(11)에 부여되는 신호에 대하여 도 6을 이용하여 설명한다. 도 6은, 카드 컨트롤러(12)가 플래시 메모리(11)에 출력하는 신호의 타이밍 차트로서, 상단은 종료 또는 중단 명령이 없는 경우(스텝 S13, 아니오), 혹은 기입 데이터가 페이지 사이즈를 충족시키고 있던 경우(스텝 S16, 예)에 출력되는 신호이다. 또한 하단에 나타내는 신호는, 기입 데이터가 페이지 사이즈를 충족시키고 있지 않았던 경우(스텝 S16, 아니오)에 출력되는 신호이다.
도시하는 바와 같이, 어떠한 경우에도 우선 시각 t0에서 제1 기입 명령이 출력되고, 그 후 어드레스(로우 어드레스 및 컬럼 어드레스) 및 기입 데이터가, 각각 시각 t1, t2에서 순차적으로 출력된다. 그 후, 종료 또는 중단 명령이 없는 경우, 혹은 기입 데이터가 페이지 사이즈를 충족시키고 있던 경우에는, 시각 t4에서 제2 기입 명령이 출력되어, 일련의 신호의 흐름은 종료한다. 한편, 기입 데이터가 페이지 사이즈를 충족시키고 있지 않은 경우에는, 페이지 사이즈를 충족시키고 있는 경우에 비하여 데이터량이 적으므로, 시각 t4보다도 빠른 시각 t3에서 데이터의 전송은 종료한다. 그리고 기입 데이터에 이어서, 시각 t3에서 로우 어드레스 변경 명령이 출력되고, 시각 t5에서 새로운 로우 어드레스가 출력된다. 그 후, 시각 t6에서 제2 기입 명령이 출력된다. 후자의 경우, 유효로 되는 로우 어드레스는 시각 t1에서 출력되는 로우 어드레스가 아니라, 시각 t5에서 출력되는 새로운 로우 어드레스이다. 그리고 새로운 로우 어드레스는, 최초의 로우 어드레스가 해당하는 메 모리 블록 BLK와는 상이한 메모리 블록 BLK에 해당하는 어드레스이다.
다음으로 도 7을 이용하여 NAND형 플래시 메모리(11)가 주체로 되어 행하는 처리에 대하여 설명한다. 도 7은, 플래시 메모리(11)에서의 처리를 도시하는 플로우차트이다. 도시하는 바와 같이, 우선 플래시 메모리(11)는 카드 컨트롤러(12)로부터 제1 기입 명령, 기입 데이터, 및 어드레스를 수신한다(스텝 S20). 그리고, 로우 어드레스 변경 명령 및 새로운 로우 어드레스를 수신하고 있는지의 여부를 판정한다(스텝 S21). 로우 어드레스 변경 명령 및 새로운 로우 어드레스를 수신하고 있지 않은 경우에는(스텝 S22, 아니오), 카드 컨트롤러(12)로부터 제2 기입 명령을 수신한 후(스텝 S23), 스텝 S20에서 수신한 로우 어드레스와 컬럼 어드레스에서 지정되는 메모리 셀 MC에 데이터를 기입한다(스텝 S24). 스텝 S22에서 로우 어드레스 변경 명령을 수신하고 있던 경우에는(스텝 S22, 예), 제2 기입 명령을 수신한 후(스텝 S25), 스텝 S20에서 수신한 컬럼 어드레스와, 로우 어드레스 변경 명령의 다음에 수신한 새로운 로우 어드레스에서 지정되는 메모리 셀 MC에 데이터를 기입한다(스텝 S26).
상기한 기입 동작의 모양을, 도 8 및 도 9를 이용하여 설명한다. 도 8 및 도 9는 메모리 시스템의 블록도로서, 도 8은 종료 또는 중단 명령이 없는 경우(스텝 S13, 아니오), 혹은 기입 데이터가 페이지 사이즈를 충족시키고 있던 경우(스텝 S16, 예)에 대하여 도시하고 있고, 도 9는 기입 데이터가 페이지 사이즈를 충족시키고 있지 않았던 경우(스텝 S16, 아니오)에 대하여 도시하고 있다. 또한, 도 8 및 도 9에서는, 1페이지의 데이터 사이즈가 2048바이트이고, 카드 컨트롤러(12)는 512바이트 단위의 데이터를 플래시 메모리(11)에 전송하는 경우를 도시하고 있으며, 도면 중에서 사선으로 나타낸 영역은 기입 데이터를 나타낸다.
우선 도 8에 대하여 설명한다. 도시하는 바와 같이, 호스트 기기(2)로부터 부여되는 기입 데이터는 카드 컨트롤러(12)의 버퍼(26)에 저장된다. 또한, 어드레스가 카드 컨트롤러(12)에 부여된다. 그렇게 하면, 카드 컨트롤러(12)는 버퍼(26) 내의 기입 데이터를, 페이지 버퍼(31)에 전송한다. 도 8에서는, 각각이 512바이트의 데이터 사이즈를 갖는 4개의 데이터, 즉 2048바이트의 기입 데이터가 페이지 버퍼(31)에 전송되고 있는 모습을 도시하고 있다. 또한, 카드 컨트롤러(12)는 상기 스텝 S12에서 로우 어드레스를, 플래시 메모리(11) 내의 로우 디코더(32)에 전송한다. 로우 디코더(32)는, 스텝 S12에서 부여된 로우 어드레스에 기초하여, 어느 하나의 워드선 WL을 선택한다. 도 8에서는 메모리 블록 BLK0 내의 워드선 WL이 선택된다. 그리고, 제2 기입 명령에 응답하여, 페이지 버퍼(31) 내의 기입 데이터가, 로우 디코더(32)에 의해 선택된 워드선 WL에 접속되는 메모리 셀 MC에 기입된다.
다음으로 도 9에 대하여 설명한다. 도 9에서는, 각각이 512바이트의 데이터 사이즈를 갖는 4개의 데이터, 즉 2048바이트의 기입 데이터가, 메모리 블록 BLK0의 2페이지에 순차적으로 기입되고, 계속해서, 연속한 어드레스에 대하여 각각이 512바이트의 데이터 사이즈를 갖는 3개의 데이터, 즉, 1536바이트의 기입 데이터가 메모리 블록 BLK0에 기입되도록, 페이지 버퍼(31)에 전송되어 있는 모습을 도시하고 있다. 여기서는 도 8의 경우와 상이한 점에 대해서만 설명한다. 스텝 S12에서 플래시 메모리(11)에 부여된 로우 어드레스는, 메모리 블록 BLK0에서의 워드선 WL에 상당하고 있었다고 가정한다. 카드 컨트롤러(12)의 MCU(22)는, 버퍼(26)(즉 페이지 버퍼(31)) 내의 데이터가 페이지 사이즈 미만(1536바이트<2048바이트)이라고 판정한 후, 로우 어드레스 변경 명령을 플래시 메모리(11)에 출력하고, 다시 새로운 로우 어드레스를 발행하여 로우 디코더(32)에 출력한다. 이 새로운 로우 어드레스는, 메모리, 블록 BLK1 내의 워드선 WL에 상당한다고 가정한다. 그렇게 하면 로우 디코더(32)는, 새로운 로우 어드레스에 기초하여, 메모리 블록 BLK0이 아니라 메모리 블록 BLK1 내의 워드선 WL을 선택한다. 그리고, 제2 기입 명령에 응답하여, 페이지 버퍼(31) 내의 1536바이트의 기입 데이터가, 로우 디코더(32)에 의해 선택된 워드선 WL에 접속되는 메모리 셀 MC에 기입된다.
상기 구성의 메모리 시스템이면, 하기의 효과가 얻어진다.
(1) 데이터의 기입 속도를 향상할 수 있다.
본 실시 양태에 따른 메모리 시스템이면, 페이지 버퍼(31) 내의 데이터가 페이지 사이즈보다도 작은 경우에는, 지금까지 데이터를 기입하고 있던 메모리 블록 BLK와는 상이한 메모리 블록 BLK에 기입하고 있다. 즉, 페이지 버퍼 내의 데이터가 페이지 사이즈에 도달할 때까지, 기입 동작을 대기할 필요가 없다. 따라서, 기입 속도를 향상할 수 있다. 즉, 기입 로우 어드레스를 변경하기 위해 리세트 명령을 발행하고 데이터를 재입력하여 기입을 행하는 것을 회피하고, 컨트롤러의 버퍼에 페이지 사이즈분의 데이터가 저장되는 것을 대기하고나서 기입한다고 하는 방법을 취하는 경우에 비하면, 로우 어드레스 변경을 이용한 본 방식이라면 페이지 사이즈분의 데이터를 컨트롤러의 버퍼에 저장해 둘 필요가 없어, 곧 NAND형 플래시 메모리에 데이터를 전송할 수 있기 때문에 기입 속도를 향상할 수 있다.
또한 본 실시 양태에 따른 메모리 시스템이면, 카드 컨트롤러(12)는 로우 어드레스 변경 명령과, 새로운 로우 어드레스를 발행한다. 그리고 플래시 메모리(11)는, 로우 어드레스 변경 명령이 부여되었을 때에는, 새로운 로우 어드레스에 기초하여 메모리 셀 어레이(30)의 로우 방향을 선택한다. 따라서, 페이지 버퍼(31)에 전송한 데이터를 서로 다른 메모리 블록 BLK에 고속으로 기입할 수 있다.
이 점, 카드 컨트롤러(12)가 로우 어드레스 변경 명령을 갖지 않는 경우에는, 페이지 버퍼(31) 내의 데이터를 상이한 메모리 블록 BLK에 기입하고자 하면, 카드 컨트롤러로부터 페이지 버퍼에의 재차의 데이터의 전송을 해야만 한다. 구체적으로 설명하면, 로우 어드레스를 변경하는 경우에는, 우선 기입 명령을 캔슬하기 위해 카드 컨트롤러는 리세트 명령을 출력한다. 다음으로 제1 기입 명령을 발행하여, 새로운 로우 어드레스를 지정한다. 다음으로 카드 컨트롤러는 페이지 버퍼에 데이터를 재입력한다. 마지막으로 제2 기입 명령을 발행한다. 이와 같이, 페이지 버퍼에의 재차의 전송이 필요로 되어, 이것이 시간의 로스로 된다. 본 실시 양태이면, 데이터의 재전송이 불필요해지기 때문에, 데이터의 기입 속도를 향상할 수 있다.
<제2 실시 양태>
다음으로, 본 발명의 제2 실시 양태에 따른 메모리 시스템에 대하여 설명한다. 본 실시 양태는, 상기 제1 실시 양태에 따른 구성에서, 1페이지 미만의 데이터 사이즈를 갖는 복수의 데이터를 집약하여 1페이지를 구성하는(이것을 이하 데이 터의 집약이라고 부름) 방법에 관한 것이다. 도 1O은, 본 실시 양태에 따른 메모리 시스템에서의, 데이터의 집약 방법의 플로우차트이다. 또한, 본 실시 양태에 따른 NAND형 플래시 메모리(11)는, 제1 실시 양태에서 설명한 도 8 및 도 9에 도시하는 구성에서, 데이터 캐시를 더 구비하고 있다. 데이터 캐시는 페이지 버퍼와 마찬가지로 페이지 단위의 데이터를 일시적으로 유지한다.
도시하는 바와 같이, 우선 카드 컨트롤러(12)의 MCU(22)는 읽어내기 명령을 플래시 메모리(11)에 출력한다(스텝 S30). 이 읽어내기 명령은, 통상의 단순한 데이터를 읽어낸다는 취지의 명령이 아니라, 데이터의 집약 명령의 일부로서의 읽어내기 명령이어도 된다. 읽어내기 명령과 함께, 카드 컨트롤러(12)로부터 어드레스가 플래시 메모리(11)에 부여된다. 다음으로 플래시 메모리(11)는, 스텝 S30에서 부여된 어드레스에 대응하는 페이지를 선택하여, 데이터를 페이지 단위로 데이터 버퍼에 읽어낸다(스텝 S31). 그 후, 페이지 버퍼에 읽어내어진 데이터는 데이터 캐시에 전송된다(스텝 S32). 계속해서 데이터 캐시에 전송된 데이터는 카드 컨트롤러(12)의 버퍼(26)에 전송된다(스텝 S33).
상기 스텝 S30 내지 S33의 모습을 도 11에 도시한다. 도 11은 카드 컨트롤러(12) 및 플래시 메모리(11)의 블록도이다. 도시하는 바와 같이, 메모리 블록 BLK0에는 2페이지분의 데이터 사이즈, 즉 4096바이트의 데이터 사이즈를 갖는 데이터 D1이 유지되고, 메모리 블록 BLK1에는 페이지 사이즈 미만의 데이터 사이즈, 예를 들면 1536바이트의 데이터 사이즈를 갖는 데이터 D2가 유지되고, 메모리 블록 BLKn에는 페이지 사이즈 미만의 데이터 사이즈, 예를 들면 512바이트의 데이터 사 이즈를 갖는 데이터 D3이 유지된다. 이러한 구성에서, 1536바이트의 데이터 D2와 512바이트의 데이터 D3을 집약하여, 2048바이트, 즉 1페이지의 사이즈를 갖는 데이터로서, 메모리 블록 BLK0에 베껴 쓰는 경우를 예로 설명한다.
도시하는 바와 같이, 카드 컨트롤러(12)로부터 읽어내기 명령이 부여되면, 로우 디코더(32)는 예를 들면 메모리 블록 BLK1 중 어느 하나의 워드선 WL을 선택한다. 그 결과, 페이지 버퍼(31)에는, 데이터 D2가 포함되는 페이지의 데이터가, 페이지 단위로 읽어내어진다. 페이지 단위로 읽어내어진 데이터를, 이하 페이지 데이터라고 부르는 경우가 있다. 이 시점에서 읽어내어진 페이지 데이터는, 1536바이트의 데이터 D2 이외에, (2048-1536)=512바이트의 불필요한 데이터가 포함된다. 계속해서, 데이터 버퍼에 읽어내어진 페이지 데이터 중의 데이터 D2는, 데이터 캐시(33)에 전송되고, 다시 버퍼(26)에 전송된다.
도 10으로 되돌아가서 설명을 계속한다. 스텝 S33 후, 카드 컨트롤러(12)의 MCU(22)는, 버퍼(26)에 전송된 데이터 D2에 대하여 에러 검출을 행하고, 에러가 검출된 경우에는 에러 정정을 행한다. 또한 플래시 메모리(11)는 카드 컨트롤러(12)가 에러 검출 및 에러 정정을 행하고 있는 동안에, 스텝 S31과는 상이한 데이터를 페이지 단위로 페이지 버퍼(31)에 읽어낸다(스텝 S34).
상기 스텝 S34의 모습을 도 12에 도시한다. 도시하는 바와 같이, 로우 디코더(32)는 예를 들면 메모리 블록 BLKn 중 어느 하나의 워드선 WL을 선택한다. 그 결과, 페이지 버퍼(31)에는, 512바이트의 데이터 D3이 포함되는 페이지의 데이터가, 페이지 단위로 읽어내어진다. 또한, 스텝 S34에서 선택되는 워드선 WL에 대응 하는 로우 어드레스는, 스텝 S30에서 부여되어도 되고, 카드 컨트롤러(12)가 에러 검출 및 에러 정정을 행하기 전의 어느 하나의 시점에서 부여된다. 이 때, 데이터 D2와 집약하여 1페이지분의 데이터 사이즈로 하기 위해, 어느 쪽의 데이터(여기서는 데이터 D3)를 읽어내는 것이 적절할지는, 카드 컨트롤러(12)가 판단한다. 즉, 카드 컨트롤러(12)는 어느 쪽의 영역의 어떠한 데이터가 저장되어 있는지를 테이블로서 유지하고 있으므로, 이 테이블을 참조하여, 적절한 데이터를 선택한다. 또한, 도 12의 예에서는 메모리 블록 BLK0과는 상이한 메모리 블록 BLKn으로부터 데이터를 읽어내고 있지만, 동일한 메모리 블록 BLK0 내의 별도의 페이지로부터 읽어내어도 된다.
도 10으로 되돌아가서 설명을 계속한다. 스텝 S34 후, 플래시 메모리는 스텝 S34에서 페이지 버퍼(31)에 읽어내어진 데이터 중, 필요한 데이터만을 데이터 캐시(33)에 전송한다(스텝 S35). 이 때, 데이터 캐시(33)에는 스텝 S32에서 전송된, 페이지 사이즈 미만의 데이터가 유지되어 있다. 즉, 데이터 캐시(33)에는 빈 영역이 있다. 바꿔 말하면, 스텝 S32에서는 페이지 단위로 데이터가 읽어내어지기 때문에, 필요한 데이터 이외에, 이 데이터와 동일 페이지에 있는 불필요한 데이터도 데이터 캐시(33)에는 유지되어 있다. 마찬가지로 스텝 S34에서도 데이터는 페이지 단위로 읽어내어지므로, 불필요한 데이터도 함께 데이터 버퍼에 읽어내어진다. 따라서 스텝 S35에서는, 스텝 S34에서 읽어내어진 페이지 단위의 데이터 중, 필요한 데이터만을, 데이터 캐시(33)에서 불필요한 데이터가 유지되어 있는 영역에 전송한다. 그 결과, 데이터 캐시(33)에는, 스텝 S32에서 읽어내어진 페이지 사이 즈 미만의 데이터와, 스텝 S34에서 읽어내어진 페이지 사이즈 미만의 데이터가 유지되고, 양자를 합쳐서 정확히 1페이지와 동일한 데이터 사이즈로 된다(스텝 S36). 즉, 2개의 데이터가 페이지 사이즈로 집약된다. 그 후, 스텝 S35에서 데이터 캐시(33)에 전송된 데이터가, 메모리 컨트롤러(12)의 버퍼(26)에 전송된다(스텝 S37). 그리고 MCU(22)가 에러 검출 및 에러 정정을 행한다(스텝 S38).
상기 스텝 S35 내지 S38의 모습을 도 13에 도시한다. 도시하는 바와 같이, 데이터 버퍼(31)에 읽어내어진 데이터 D3을 포함하는 페이지 데이터 중 필요한 데이터 D3만이, 데이터 캐시(33)에 전송된다. 즉, 데이터 캐시(33)에는 1536바이트의 데이터 D3이 유지되어 있기 때문에, 남은 512바이트 분의 빈 영역이 있다. 따라서, 이 빈 영역에, 512바이트의 데이터 D3이 전송된다. 그 결과, 데이터 캐시(33)에는 데이터 D2와 데이터 D3이 유지되고, 데이터 D2와 데이터 D3을 합한 데이터 사이즈는, 정확히 1페이지의 데이터 사이즈 2048바이트로 된다. 그리고, 데이터 캐시(33) 내의 데이터 D3은 버퍼(26)에 전송된다.
다시 도 10으로 되돌아가서 설명을 계속한다. 스텝 S38 후, MCU(22)는 어느 하나의 데이터에서 에러를 검출하고, 검출한 에러를 정정한 경우에는(스텝 S39, 예), 정정된 데이터를 데이터 캐시(33)에 전송한다(스텝 S40). 이 때, MCU(22)는 정정된 데이터만을 데이터 캐시(33)에 전송하고, 정정 전의 데이터와 치환한다. 그리고, 플래시 메모리(11)는 데이터 캐시(33)에 유지되는 데이터를, 페이지 단위로 메모리 셀 MC에 기입한다(스텝 S41).
상기 스텝 S39 내지 S41의 모습을 도 14에 도시한다. 도시하는 바와 같이, 데이터의 정정이 있었던 경우에는, 데이터 캐시(33) 내의 데이터가 정정 후의 데이터로 치환된다. 그리고, 데이터 캐시(33) 내의 데이터(데이터 D2와 데이터 D3이 집약된 2048바이트의 데이터)가 데이터 버퍼(33)에 전송되고, 다시 메모리 셀 어레이(30)에 기입된다. 즉, 로우 디코더(32)는, 메모리 블록 BLK0에서, 데이터 D1에 연속한 어드레스에 대응하는 워드선 WL을 선택한다. 이에 의해, 데이터 D2, D3이 메모리 블록 BLK0의 동일 페이지 내에 기입된다. 또한, 로우 디코더(32)가 워드선 WL을 선택하기 위한 로우 어드레스는, 스텝 S41에서 카드 컨트롤러(12)로부터 로우 디코더(32)에 부여되어 있어도 되고, 스텝 S30 또는 스텝 S40에서 부여되어도 된다.
상기한 바와 같은 메모리 시스템이면, 하기의 (2)의 효과가 얻어진다.
(2) 페이지 사이즈 미만의 데이터의 집약을 간편하게 하여, 고속화할 수 있다.
본 실시 양태에 따른 메모리 시스템에서는, 페이지 버퍼(31)와 데이터 캐시(33) 사이에서, 페이지 단위 미만의 단위로 데이터의 수수를 행하고 있다. 따라서, 데이터의 집약을 간편하게 하여, 데이터의 집약 속도를 고속화할 수 있다.
페이지 버퍼와 데이터 캐시 사이의 데이터의 수수는, 페이지 사이즈 단위로 행해지는 것이 일반적이었다. 그러나 이 방법이면, 페이지 사이즈 미만의 데이터를 1페이지로 집약하는 처리는, 카드 컨트롤러(12)에서의 버퍼(26)에서 행할 필요가 있었다. 또한, 예를 들면 2회의 읽어내기 동작으로 읽어내어진 2개의 데이터를 집약하는 경우에는, 데이터 캐시는 나중에 읽어내어진 데이터를 유지하고, 먼저 읽 어내어진 데이터는 유지할 수 없다. 따라서, 읽어낸 데이터에서의 오류의 유무에 관계없이, 집약 후의 데이터는, 카드 컨트롤러(12)의 버퍼(26)로부터 데이터 캐시(33)에 전송되어야 한다. 이 전송이, 집약 처리에서 시간의 로스로 된다.
그러나 본 실시 양태이면, 페이지 버퍼(31)와 데이터 캐시(33) 사이에서, 페이지 단위 미만의 단위로 데이터의 수수를 행하고 있다. 즉, 데이터 캐시(33) 상에서 복수의 데이터를 1페이지로 집약할 수 있다. 따라서, 데이터에 오류가 있었던 경우에는, 정정된 데이터를 버퍼(26)로부터 데이터 캐시(33)에 전송할 필요가 있지만, 오류가 없었던 경우에는 전송은 불필요하다. 따라서, 데이터의 집약 처리를 간편하게 하여, 고속화할 수 있다.
<제3 실시 양태>
다음으로, 본 발명의 제3 실시 양태에 따른 메모리 시스템에 대하여 설명한다. 본 실시 양태는, 상기 제2 실시 양태에 따른 방법을 데이터의 기입 시에 적용한 것이다. 즉, 데이터의 기입 시에 기입 데이터가 페이지 사이즈 미만의 데이터 사이즈이었던 경우에, 데이터의 집약을 행함으로써 기입할 데이터를 페이지 사이즈로 하는 방법에 관한 것이다. 우선, 도 15를 이용하여 카드 컨트롤러(12)가 주체로 되어 행하는 처리에 대하여 설명한다. 도 15는, 카드 컨트롤러(12)에서의 처리를 도시하는 플로우차트이다.
도시하는 바와 같이, 스텝 S10 내지 S17의 처리는 상기 제1 실시 양태와 마찬가지이므로 설명은 생략한다. 스텝 S15의 판정의 결과, 기입 데이터의 데이터 사이즈가 페이지 사이즈 미만이었던 경우(스텝 S16, 아니오), 카드 컨트롤러(12)의 MCU(22)는 기입 캔슬 명령을 플래시 메모리(11)에 출력한다(스텝 S50). 기입 캔슬 명령이란, 플래시 메모리(11)에 대하여 이후의 기입 동작을 중지시키는 명령이다. 계속해서 MCU(22)는, 플래시 메모리(11)에 데이터의 읽어내기 명령을 출력한다(스텝 S51). 읽어내기 명령과 함께, 읽어낼 데이터의 어드레스도, MCU(22)로부터 플래시 메모리(11)에 부여된다. 스텝 S51에서 읽어낼 데이터는, 스텝 S15, S16에서 페이지 사이즈에 충족하지 않았던다고 판정된 기입 데이터와 집약함으로써, 정확히 1페이지 사이즈로 되는 데이터이다.
그리고, 플래시 메모리(11)에서 데이터가 읽어내어지면, 그 읽어낸 데이터에 대하여 MCU(22)는 에러 검출 및 에러 정정을 행한다(스텝 S52). 그 후, 에러 정정을 행하였던 데이터만을 플래시 메모리(11)에 전송하고, 다시 플래시 메모리(11)에 대하여, 데이터 캐시(33) 내의 데이터의 기입을 명령한다(스텝 S53).
다음으로 도 16을 이용하여 NAND형 플래시 메모리(11)가 주체로 되어 행하는 처리에 대하여 설명한다. 본 실시 양태에서는, 상기 스텝 S50에서 기입 캔슬 명령이 출력되었을 때의 동작에 대하여 설명한다. 그 밖의 동작은 제1 실시 양태와 마찬가지이다. 도 16은, 플래시 메모리(11)에서의 처리를 도시하는 플로우차트이다.
도시하는 바와 같이, 우선 플래시 메모리(11)는 카드 컨트롤러(12)로부터 기입 캔슬 명령을 수신한다(스텝 S60). 기입 캔슬 명령을 수신하면, 플래시 메모리(11)는 데이터의 기입을 중지하고, 데이터 캐시(33) 내의 데이터를 그대로 유지한다(스텝 S61). 그리고, 카드 컨트롤러(12)로부터 스텝 S51에서 부여되는 읽어내기 명령에 기초하여, 데이터를 페이지 단위로 페이지 버퍼(31)에 읽어낸다(스텝 S62). 그리고, 페이지 버퍼(31)에 읽어내어진 데이터 중, 필요한 데이터만을 데이터 캐시(33)에 전송한다(스텝 S35). 그 결과, 데이터 캐시(33)에는, 페이지 사이즈 미만의 기입 데이터와, 스텝 S62에서 읽어내어진 페이지 사이즈 미만의 데이터가 유지되고, 양자를 합쳐서 정확히 1페이지와 동일한 데이터 사이즈로 된다(스텝 S36). 즉, 2개의 데이터가 페이지 사이즈로 집약된다. 그 후, 스텝 S35에서 데이터 캐시(33)에 전송된 데이터가, 메모리 컨트롤러(12)의 버퍼(26)에 전송된다(스텝 S37). 스텝 S35 내지 S37의 처리는, 제2 실시 양태에서 설명한 바와 같다.
그 후, 데이터에 관하여 오류 정정이 있는 경우에는, MCU(22)로부터 정정 후의 데이터를 수신(스텝 S63)한 후, 데이터 캐시(33) 내의 데이터를 당초의 로우 어드레스에 대응하는 페이지에 기입한다(스텝 S41).
상기한 기입 동작의 모습을, 도 17 내지 도 19를 이용하여 설명한다. 도 17은 메모리 시스템의 블록도이며, 도 18 및 도 19는 메모리 카드의 블록도이다. 또한, 도 17 내지 도 19에서는, 1페이지의 데이터 사이즈가 2048바이트로서, 카드 컨트롤러(12)는 512바이트 단위의 데이터를 플래시 메모리(11)에 전송하는 경우를 도시하고 있고, 도면 중에서 사선으로 나타낸 영역은 기입 데이터를 나타낸다. 도 17에 도시하는 바와 같이, 메모리 블록 BLKn에는 페이지 사이즈 미만의 데이터 사이즈, 예를 들면 512바이트의 데이터 사이즈의 데이터 D4가 기입되어 있는 상황에서, 2페이지분의 데이터 사이즈(2048×2=4096바이트)를 갖는 데이터 D5 및 페이지 사이즈 미만의 데이터 사이즈, 예를 들면 1536바이트의 데이터 D6이 순차적으로 메모리 블록 BLK0에 기입되는 경우를 가정한다. 그리고, 데이터 D5는 이미 메모리 블록 BLK0에 기입되고, 데이터 D5에 연속한 어드레스에 데이터 D6이 기입되는 경우를 고려한다.
우선 도 17에 도시하는 바와 같이, 데이터 D6은 페이지 사이즈 미만이므로, MCU(22)는 기입 캔슬 명령을 플래시 메모리(11)에 출력한다. 그러면, 플래시 메모리(11)의 로우 디코더(32)는 워드선 WL의 비선택으로 하고, 데이터 캐시(33)에 전송된 데이터 D6의 메모리 블록 BLK0에의 기입 동작이 중지된다.
다음으로 도 18에 도시하는 바와 같이, MCU(22)는 플래시 메모리(11)에 대하여 예를 들면 메모리 블록 BLKn으로부터 데이터 D4의 읽어내기 명령과 어드레스를 출력한다. 이에 응답하여 플래시 메모리(11)는, 메모리 블록 BLKn으로부터 데이터 D4가 포함되는 페이지의 데이터를 페이지 단위로 데이터 버퍼(31)에 읽어낸다. 또한, 데이터 버퍼(31)에 읽어낸 페이지 데이터 중, 512바이트의 데이터 사이즈의 데이터 D4만을 데이터 캐시(33)에 전송한다. 이 때, 데이터 캐시(33)에는 1536바이트의 데이터 D6가 유지되어 있기 때문에, 남은 512바이트 분의 빈 영역이 있다. 따라서, 이 빈 영역에, 512바이트의 데이터 D4가 전송된다. 그 결과, 데이터 캐시(33)에서는 데이터 D6과 데이터 D4가 집약되어, 합쳐서 정확히 1페이지의 데이터 사이즈로 된다. 또한 데이터 캐시(33) 내의 데이터 D4는, 카드 컨트롤러(12)의 버퍼(26)에 전송되어, 오류 검출 및 오류 정정이 행해진다.
그 후 도 19에 도시하는 바와 같이, 오류 정정이 행해진 경우에는 정정된 데이터가 데이터 캐시(33)에 덧씌워져, 데이터 캐시(33)에 유지되는 데이터 D6과 데이터 D4가, 메모리 블록 BLK0에서의 동일 페이지 내에 기입된다. 데이터 D4와 데 이터 D6이 기입되는 페이지는, 당초 데이터 D6이 기입되어야 하였던, 데이터 D5에 연속한 어드레스에 대응하는 영역이다.
상기 구성의 메모리 시스템이면, 제2 실시 양태에서 설명한 (2)의 효과 외에, 하기의 (3)의 효과가 얻어진다.
(3) 데이터의 집약 처리를 효율화할 수 있다.
본 실시 양태에 따른 메모리 시스템이면, 페이지 버퍼(31)와 데이터 캐시(33) 사이에서의 페이지 단위 미만의 단위에서의 데이터의 수수를 이용하여, 데이터의 기입 시에 데이터의 집약을 행하고 있다. 데이터의 집약 처리를 효율적으로 행할 수 있다.
상기한 바와 같이, 본 발명의 제1 내지 제3 실시 양태에 따른 구성이면, NAND형 플래시 메모리의 동작 속도를 향상할 수 있다. 또한, 상기 제2, 제3 실시 양태에서 데이터의 집약을 행할 때에, 어느 쪽의 데이터를 읽어내어 집약하면 정확히 1페이지분의 데이터 사이즈로 되는지 등의 정보는, 카드 컨트롤러(12) 자신이 예를 들면 RAM(25) 등에 테이블로서 유지하고 있다. 즉, 카드 컨트롤러(12)는 어느 어드레스에 어떠한 데이터 사이즈의 데이터가 기입되어 있는지를 파악하고 있으므로, 그 중의 어느 쪽인가 적절한 것을 선택하여 읽어내기 명령을 내면 된다.
또한, 상기 제2, 제3 실시 양태는, 파일 시스템에 응용함으로써 보다 현저한 효과가 얻어진다. 이하, 파일 시스템에 대하여 간단히 설명한다. 파일 시스템이란, 메모리에 기록되어 있는 파일(데이터)을 관리하는 방식의 것이다. 이하에서는 FAT(File Allocation Table) 파일 시스템을 예로 들어 설명한다. 파일 시스템에서 는, 메모리에서의 파일이나 폴더 등의 디렉토리 정보의 작성 방법, 파일이나 폴더 등의 이동 방법이나 삭제 방법, 데이터의 기록 방식, 관리 영역의 장소나 이용 방법 등이 정해진다. 도 20은, 상기 실시 양태에 따른 NAND형 플래시 메모리(11)의 메모리 공간의 개념도이다.
도시하는 바와 같이 메모리 공간은, 개략적으로는 유저 데이터 영역(40) 및 관리 영역(41)으로 나누어진다. 유저 데이터 영역(40)은, 유저에 의해 기입되는 정미의 데이터를 저장하는 영역이다.
관리 영역(41)은, 예를 들면 부트 영역(42), 파티션 정보 영역(43), FAT1(44), 및 FAT2(45), 및 루트 디렉토리 엔트리 영역(46)을 포함하고 있다. 부트 영역(42)은, 예를 들면 부트 정보를 기억한다. 파티션 정보 영역(43)은 파티션 정보를 기억한다. FAT1 및 FAT2는, 데이터가 어느 쪽의 어드레스에 기억되어 있는지를 기억한다. 이하, FAT1, FAT2에 대하여 간단히 설명한다.
유저 데이터 영역(40)은, 클러스터라고 불리는 복수의 영역을 포함하고 있다. 그리고, 기입되는 데이터가 클러스터 사이즈보다 큰 경우, 클러스터 단위로 분할되어 기억된다. 이 때, 데이터가 기입되는 클러스터는 연속하지 않은 경우가 있다. 즉, 1개의 데이터가 장소적으로 떨어진 클러스터에 기입된다. 이 때에, 데이터가 어느 클러스터로 분할되어 기입되었는지를 관리하기 위한 관리 데이터가, FAT1, FAT2에 기억된다.
루트 디렉토리 엔트리 영역(46)은, 루트 디렉토리 엔트리의 정보를 기억한다. 그리고, 파일명 또는 폴더명, 파일 사이즈, 속성 및 파일의 갱신 일시 등과 함께, FAT1, FAT2로 나타내어진 어느 클러스터가 파일의 선두 클러스터인지를 나타내는 플래그를 기억한다.
상기 관리 영역 내의 각 데이터(이하 관리 데이터라고 부름), 특히 FAT1, FAT2는, 빈번하게 갱신이 행해지는 데이터로서, 또한 그 데이터 사이즈는 작아, 1페이지에 미치지 못하는 데이터 사이즈인 것이 통상이다. NAND형 플래시 메모리에서는 데이터의 덧씌우기가 금지되어 있기 때문에, 이와 같이 빈번하게 갱신되는 데이터는, 어느 쪽인가의 소거 메모리 블록(이것을 캐시 블록이라고 부름)에 일시적으로 기입된다. 그리고, 데이터가 갱신될 때마다, 캐시 블록에 순차적으로 기입되어 간다. 그리고 소정의 타이밍에서, 캐시 블록 내의 최신의 데이터가, 별도의 메모리 블록에 베껴 쓰여진다(이것을 캐시의 철수라고 부름). 이 캐시의 철수의 고속화의 관점으로부터도, 상기 실시 양태에 따른 방법을 이용하는 것이 바람직하다. 이 점에 대해, 이하 설명한다.
도 21은 메모리 블록 BLK0의 개념도이다. 도시하는 바와 같이 메모리 블록 BLKO은 128페이지를 구비하고, 각 페이지에서의 512바이트 단위마다 어드레스 "000", "001", "002", … "1FF"가 할당되어 있는 것으로 한다. 이 메모리 블록 BLK0에 대하여, 5회의 기입 A~E가 행해진 경우를 생각한다. 기입 A는, 어드레스 "000"에 대한 512바이트의 데이터의 기입이다. 기입 B는, 어드레스 "005"에 대한 1024바이트의 데이터의 기입이다. 기입 C는, 어드레스 "03F"에 대한 2048바이트의 데이터의 기입이다. 기입 D는, 어드레스 "000"에 대한 1024바이트의 데이터의 기입이다. 기입 E는, 어드레스 "003"에 대한 1024바이트의 데이터의 기입이다. 이 들 기입 데이터는 예를 들면 관리 데이터 등의 빈번하게 갱신이 있는 데이터로서, 우선 캐시 블록에 기입되는 것이라고 가정한다.
우선, 종래 방법에 의한 캐시의 철수에 대하여 도 22를 이용하여 설명한다. 도 22는 캐시 블록과 메모리 블록 BLK0의 개념도로서, 캐시의 철수의 모습을 도시하고 있다.
우선, 기입 A가 캐시 블록의 페이지 1에서 행해진다. 다음으로, 기입 B가 캐시 블록의 페이지2에서 행해진다. 다음으로, 기입 C가 캐시 블록의 페이지 3, 4에 걸쳐 행해진다. 계속해서, 기입 D가 캐시 블록의 페이지 6에서 행해진다.
그 후, 캐시의 철수가 행해진다. 우선, 어드레스 "000"에 기입될 데이터는, 기입 D에서 기입된 데이터이다. 즉, 기입 A에서 기입된 데이터는 기입 D에서의 데이터에 덧씌우기된 것으로 되어, 불필요하게 된다. 따라서, 우선 캐시 블록의 페이지 5로부터 데이터를 읽어낸다. 다음으로, 메모리 블록 BLK0의 어드레스 "002"에는 갱신이 이루어지지 않았으므로, 원래의 데이터를 그대로 사용하기 위해, 메모리 블록 BLK0의 어드레스 "002"의 데이터를 읽어낸다. 또한, 어드레스 "003"의 데이터는 기입 E에서 기입된 데이터이므로, 캐시 블록의 페이지 6으로부터 데이터를 읽어낸다. 이상의 3회의 데이터의 읽어내기의 결과, 메모리 블록 BLK0의 페이지1에 기입할 데이터가 집약된다.
다음으로, 상기 실시 양태를 적용한 경우의 캐시의 철수에 대하여 도 23을 이용하여 설명한다. 도 23은 캐시 블록과 메모리 블록 BLK0의 개념도로서, 캐시의 철수의 모습을 도시하고 있다.
우선, 종래와 마찬가지로, 기입 A가 캐시 블록의 페이지 1에서 행해진다. 다음으로, 기입 B가 캐시 블록의 페이지 2에서 행해진다. 다음으로, 기입 C가 캐시 블록의 페이지 3, 4에 걸쳐 행해진다. 계속해서, 기입 D가 캐시 블록의 페이지6에서 행해진다. 이 기입 동작 시에 종래 방법과 상이한 것은, 캐시 블록에의 기입이, 메모리 블록 BLK0 내의 데이터와 집약된 1페이지 사이즈의 데이터로서 행해지는 점이다.
즉, 페이지 1에의 기입 시에는, 기입 A에서 부여되는 512바이트의 데이터와, 메모리 블록 BLK0으로부터 어드레스 "001"~"003"의 1536바이트의 데이터가 집약되어, 페이지 1에 기입된다. 페이지 2 이후에의 기입 시에도 마찬가지이다. 페이지 6에의 기입 시에는, 기입 E에서 부여되는 512바이트의 데이터와, 캐시 블록으로부터의 데이터 D와 어드레스 "002"의 데이터가 집약된다.
그 후, 캐시의 철수가 행해진다. 메모리 블록 BLK0의 페이지 1에 대응하는 데이터는, 캐시 블록의 페이지 1, 5, 6에 유지되어 있다. 이 중, 최신의 데이터를 유지하고 있는 페이지 6이 읽어내어지고, 메모리 블록 BLK0의 페이지 1에 기입된다. 또한, 캐시 블록의 페이지 2의 데이터가, 메모리 블록 BLK0의 페이지 2에 베껴 쓰여진다.
즉, 본 실시 양태를 이용한 경우에는, 캐시 블록에 데이터를 기입하는 시점에서, 기입 데이터와, 원래의 메모리 블록 내의 다른 데이터를 집약하여 1페이지 사이즈의 데이터로 하고, 이 데이터를 캐시 블록에 기입하고 있다. 따라서, 캐시의 철수 시에는, 페이지 단위로 데이터가 갱신된다. 따라서, 캐시의 철수 시에서 의 읽어내기 동작은, 1페이지당 1회이면 되어, 캐시의 철수를 고속화할 수 있다.
또한, 메모리 블록 BLK0과 캐시 블록과의 대응은, 도 22의 경우에는 512바이트의 영역마다 대응을 취해야만 하여, 그 정보량은 방대하다. 그러나 상기 실시 양태를 적용한 도 23의 경우에는 페이지 단위로 대응을 취하면 되어, 대응 정보를 적게 할 수 있다.
또한, 상기 캐시의 철수나 대응 관계의 점뿐만 아니라, 호스트 기기로부터의 읽어내기의 관점으로부터도, 상기 방법이 바람직하다. 즉, FAT의 갱신 등, 파일 시스템의 조작을 효율적으로 행하기 위해서는, 호스트 기기에서는, 데이터를 어느 정도 통합하여 미리 읽어들여 두는 것이 일반적으로 행해지고 있다. 즉, 플래시 메모리에서는 FAT 영역 등에서, 데이터 사이즈가 작은 랜덤한 기입이 발생함과 함께, 이들을 통합하여 일정한 큰 데이터량에서의 읽어내기가 발생하는 경우가 있다. 이러한 경우에서도, 본 실시 양태에 따른 방법이면, 데이터 사이즈가 작은 데이터가 페이지 단위로 통합되어 있기 때문에, 읽어내기 동작은 1페이지당 1회이면 되어, 동작 속도를 향상시킬 수 있다.
당 분야의 업자라면 부가적인 장점 및 변경들을 용이하게 생각해 낼 것이다. 따라서, 광의의 관점에서의 본 발명은 본 명세서에 예시되고 기술된 상세한 설명 및 대표 실시예들에 한정되는 것은 아니다. 따라서, 첨부된 청구 범위들 및 그 등가물들에 의해 정의된 바와 같은 일반적인 발명적 개념의 정신 또는 범위로부터 벗어나지 않고 다양한 변경이 가능하다.
본 발명에 따르면, 데이터의 기입 속도를 향상할 수 있고, 페이지 사이즈 미만의 데이터의 집약을 간편하게 하여, 고속화할 수 있으며, 데이터의 집약 처리를 효율화할 수 있다.

Claims (16)

  1. 각각이 데이터를 유지 가능한 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 불휘발성 반도체 메모리 - 각각의 메모리 블록 내의 데이터는 일괄하여 소거되고, 각각의 상기 메모리 블록 내에서, 상기 데이터는, 복수의 상기 메모리 셀의 집합인 페이지 단위로 일괄하여 기입됨 -; 및
    상기 불휘발성 메모리에 대하여 기입 데이터 및 제1 로우 어드레스를 전송하고, 또한 전송한 상기 제1 로우 어드레스의 변경 명령과, 그 제1 로우 어드레스와는 상이한 제2 로우 어드레스를 발행하는 컨트롤러 - 상기 불휘발성 반도체 메모리는, 상기 변경 명령이 발행되지 않을 때에는, 상기 제1 로우 어드레스에 대응하는 상기 메모리 셀에 상기 기입 데이터를 기입하고, 상기 변경 명령이 발행되었을 때에는, 상기 제2 로우 어드레스에 대응하는 상기 메모리 셀에 상기 기입 데이터를 기입함 -
    를 구비하는 메모리 시스템.
  2. 제1항에 있어서,
    상기 컨트롤러는, 상기 기입 데이터의 데이터 사이즈가 페이지 사이즈 미만인 경우에, 상기 변경 명령 및 상기 제2 로우 어드레스를 발행하고,
    상기 제2 로우 어드레스는, 상기 제1 로우 어드레스에 대응하는 상기 메모리 블록과 상이한 상기 메모리 블록에 대응하는 메모리 시스템.
  3. 제1항에 있어서,
    상기 컨트롤러는, 상기 불휘발성 반도체 메모리에 대하여, 제1 기입 명령, 상기 제1 로우 어드레스, 상기 기입 데이터, 및 제2 기입 명령을 순차적으로 출력하고,
    상기 변경 명령을 발행할 때에는, 상기 기입 데이터를 상기 불휘발성 반도체 메모리에 출력한 후, 상기 변경 명령 및 상기 제2 로우 어드레스를 순차적으로, 상기 불휘발성 반도체 메모리에 출력하고,
    상기 제2 기입 명령은, 상기 제2 로우 어드레스가 출력된 후에, 상기 불휘발성 반도체 메모리에 출력되고,
    상기 제1 기입 명령은, 상기 불휘발성 반도체 메모리에 대하여, 데이터의 기입 동작이 개시되는 것을 인식시키는 명령이며,
    상기 제2 기입 명령은, 상기 불휘발성 반도체 메모리에 대하여 상기 기입 데이터를 상기 메모리 셀 블록에 기입시키는 명령인 메모리 시스템.
  4. 제1항에 있어서,
    상기 컨트롤러는, 호스트 기기로부터 상기 데이터의 기입 액세스의 종료 또는 중단 명령을 수신하였을 때에, 상기 데이터의 데이터 사이즈가 페이지 사이즈 미만인지의 여부를 판정하는 메모리 시스템.
  5. 제1항에 있어서,
    상기 기입 데이터는, FAT 파일 시스템에서의 관리 데이터인 메모리 시스템.
  6. 각각이 데이터를 유지 가능한 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 상기 불휘발성 반도체 메모리 - 각각의 메모리 블록 내의 데이터는 일괄하여 소거되고, 각각의 상기 메모리 블록 내에서, 상기 데이터는, 복수의 상기 메모리 셀의 집합인 페이지 단위로 일괄하여 기입됨 -; 및
    상기 불휘발성 반도체 메모리의 동작을 제어하는 컨트롤러
    를 구비하고,
    상기 불휘발성 반도체 메모리는,
    상기 메모리 블록;
    상기 메모리 블록과의 사이에서 상기 페이지 단위에 의해 데이터를 수수하고, 1페이지분의 데이터를 유지 가능한 제1 버퍼 회로; 및
    상기 제1 버퍼 회로 및 상기 컨트롤러 사이에서 1페이지분의 데이터 사이즈 이하의 데이터 단위에 의해 데이터를 수수하고, 1페이지분의 데이터를 유지 가능한 제2 버퍼 회로를 포함하는 메모리 시스템.
  7. 제6항에 있어서,
    상기 컨트롤러는, 상기 불휘발성 반도체 메모리에 대하여 데이터의 읽어내기 명령 및 제1 로우 어드레스 및 제2 로우 어드레스를 발행하고,
    상기 불휘발성 반도체 메모리는, 상기 제1 로우 어드레스에 대응하고, 또한 상기 페이지 사이즈 미만의 제1 데이터를 포함하는 제1 페이지 데이터를 상기 제2 버퍼 회로에 읽어내고, 또한 상기 제2 로우 어드레스에 대응하며, 또한 상기 페이지 사이즈 미만의 제2 데이터를 포함하는 제2 페이지 데이터를 상기 제1 버퍼 회로에 읽어내고,
    상기 제1 버퍼 회로는, 상기 제2 페이지 데이터 중의 상기 제2 데이터만을, 상기 제2 버퍼 회로에서 상기 제1 데이터 이외를 유지하는 영역에 전송하는 메모리 시스템.
  8. 제7항에 있어서,
    상기 제2 버퍼 회로는, 상기 제1 데이터와 상기 제2 데이터를 상기 컨트롤러에 전송하고,
    상기 컨트롤러는, 전송된 상기 제1 데이터 및 제2 데이터에 대해, 에러의 검출을 행하고, 상기 에러가 검출된 경우에 에러 정정을 행하여, 상기 에러 정정이 행해진 적어도 상기 제1, 제2 데이터 중 어느 하나를 상기 제2 버퍼 회로에 전송하고,
    상기 컨트롤러에서 상기 에러 정정이 행해진 경우, 에러 정정된 상기 적어도 제1, 제2 데이터 중 어느 하나가 상기 불휘발성 반도체 메모리에 기입되는 메모리 시스템.
  9. 제8항에 있어서,
    상기 에러의 검출의 결과, 상기 에러가 검출되지 않은 경우에는, 상기 컨트롤러는 상기 제2 버퍼 회로에 상기 제2 데이터를 전송하지 않고,
    상기 제2 버퍼 회로에 유지되는 상기 제1, 제2 데이터가, 상기 불휘발성 반도체 메모리에 기입되는 메모리 시스템.
  10. 제6항에 있어서,
    상기 컨트롤러는, 데이터의 기입 시에 제1 로우 어드레스를 발행함과 함께, 상기 제2 버퍼 회로에 대하여 제1 데이터를 전송하고,
    상기 컨트롤러는, 상기 제2 버퍼 회로에 전송한 상기 제1 데이터의 데이터 사이즈가 페이지 사이즈 미만인 경우에, 기입 중지 명령, 데이터의 읽어내기 명령, 및 제2 로우 어드레스를 발행하고,
    상기 불휘발성 반도체 메모리는, 상기 기입 중지 명령에 응답하여 상기 제1 데이터를 상기 제2 버퍼 회로에 유지하면서 기입 동작을 중단하고, 상기 읽어내기 명령에 응답하여, 상기 제2 로우 어드레스에 대응하고 또한 상기 페이지 사이즈 미만의 제2 데이터를 포함하는 페이지 데이터를 상기 제1 버퍼 회로에 읽어내고,
    상기 제1 버퍼 회로는, 상기 페이지 데이터 중의 상기 제2 데이터만을, 상기 제2 버퍼 회로에서 상기 제1 데이터 이외를 유지하는 영역에 전송하고,
    상기 제2 버퍼 회로는 상기 제1, 제2 데이터를, 상기 제1 로우 어드레스에 대응하는 페이지에 일괄하여 기입하는 메모리 시스템.
  11. 제10항에 있어서,
    상기 제2 버퍼 회로는, 상기 제1 버퍼 회로로부터 전송된 상기 제2 데이터를 상기 컨트롤러에 전송하고,
    상기 컨트롤러는, 전송된 상기 제2 데이터에 대해 에러의 검출을 행하고, 상기 에러가 검출된 경우에 에러 정정을 행하여, 상기 에러 정정이 행해진 상기 제2 데이터를 상기 제2 버퍼 회로에 전송하고,
    상기 제2 버퍼 회로에 유지된 상기 제1 데이터와, 상기 컨트롤러로부터 상기 제2 버퍼 회로에 전송된 상기 제2 데이터가 상기 불휘발성 반도체 메모리에 기입되는 메모리 시스템.
  12. 제11항에 있어서,
    상기 에러의 검출의 결과, 상기 에러가 검출되지 않은 경우에는, 상기 컨트롤러는 상기 제2 버퍼 회로에 상기 제2 데이터를 전송하지 않고,
    상기 제2 버퍼 회로에 유지되는 상기 제1, 제2 데이터가, 상기 불휘발성 반도체 메모리에 기입되는 메모리 시스템.
  13. 호스트 기기에 접속 가능하게 되고, 상기 호스트 기기로부터 기입 데이터 및 제1 로우 어드레스를 수신하는 호스트 인터페이스; 및
    각각이 데이터를 유지 가능한 메모리 셀을 포함하는 복수의 메모리 블록을 구비한 상기 불휘발성 반도체 메모리에 대하여, 상기 기입 데이터를 전송하고, 또한 상기 제1 로우 어드레스의 변경 명령과, 그 제1 로우 어드레스와는 상이한 제2 로우 어드레스를 발행하는 연산 처리 장치
    를 구비하고,
    상기 메모리 블록 내의 데이터는 일괄하여 소거되고, 각각의 상기 메모리 블록 내에서, 상기 기입 데이터는, 복수의 상기 메모리 셀의 집합인 페이지 단위로 일괄하여 기입되고, 상기 연산 처리 장치는, 상기 변경 명령에 의해, 상기 불휘발성 반도체 메모리에 대하여 상기 기입 데이터를 상기 제2 로우 어드레스에 대응하는 상기 페이지에 기입하도록 명령하는 불휘발성 반도체 메모리를 제어하는 카드 컨트롤러.
  14. 제13항에 있어서,
    상기 연산 처리 장치는, 상기 기입 데이터의 데이터 사이즈가 페이지 사이즈 미만인 경우에, 상기 변경 명령 및 상기 제2 로우 어드레스를 발행하고,
    상기 제2 로우 어드레스는, 상기 제1 로우 어드레스에 대응하는 상기 메모리 블록과 상이한 상기 메모리 블록에 대응하는 불휘발성 반도체 메모리를 제어하는 카드 컨트롤러.
  15. 제13항에 있어서,
    상기 연산 처리 장치는, 상기 불휘발성 반도체 메모리에 대하여, 제1 기입 명령, 상기 제1 로우 어드레스, 상기 기입 데이터, 및 제2 기입 명령을 순차적으로 출력하고,
    상기 변경 명령을 발행할 때에는, 상기 기입 데이터를 상기 불휘발성 반도체 메모리에 출력한 후, 상기 변경 명령 및 상기 제2 로우 어드레스를 순차적으로, 상기 불휘발성 반도체 메모리에 출력하고,
    상기 제2 기입 명령은, 상기 제2 로우 어드레스가 출력된 후에, 상기 불휘발성 반도체 메모리에 출력되고,
    상기 제1 기입 명령은, 상기 불휘발성 반도체 메모리에 대하여, 데이터의 기입 동작이 개시되는 것을 인식시키는 명령이고,
    상기 제2 기입 명령은, 상기 불휘발성 반도체 메모리에 대하여 상기 기입 데이터를 상기 메모리 셀 블록에 기입시키는 명령인 불휘발성 반도체 메모리를 제어하는 카드 컨트롤러.
  16. 제13항에 있어서,
    상기 연산 처리 장치는, 상기 호스트 기기로부터 상기 데이터의 기입 액세스의 종료 또는 중단 명령을 수신하였을 때에, 상기 데이터의 데이터 사이즈가 페이지 사이즈 미만인지의 여부를 판정하는 불휘발성 반도체 메모리를 제어하는 카드 컨트롤러.
KR1020070064437A 2006-06-30 2007-06-28 불휘발성 반도체 메모리를 구비하는 메모리 시스템 KR100884429B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2006182631A JP5002201B2 (ja) 2006-06-30 2006-06-30 メモリシステム
JPJP-P-2006-00182631 2006-06-30

Publications (2)

Publication Number Publication Date
KR20080002646A true KR20080002646A (ko) 2008-01-04
KR100884429B1 KR100884429B1 (ko) 2009-02-19

Family

ID=39011388

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070064437A KR100884429B1 (ko) 2006-06-30 2007-06-28 불휘발성 반도체 메모리를 구비하는 메모리 시스템

Country Status (5)

Country Link
US (2) US7937523B2 (ko)
JP (1) JP5002201B2 (ko)
KR (1) KR100884429B1 (ko)
CN (1) CN101097543B (ko)
TW (1) TWI358020B (ko)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI103329B1 (fi) * 1997-12-22 1999-06-15 Nordberg Lokomo Oy Tapa leukamurskaimen kulutusleuan kiinnittämiseksi ja leukamurskain
WO2008102610A1 (ja) * 2007-02-23 2008-08-28 Panasonic Corporation メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
JP5032155B2 (ja) * 2007-03-02 2012-09-26 株式会社東芝 不揮発性半導体記憶装置、及び不揮発性半導体記憶システム
US7962683B2 (en) * 2007-08-15 2011-06-14 Silicon Motion, Inc. Flash memory, and method for operating a flash memory
US8185685B2 (en) 2007-12-14 2012-05-22 Hitachi Global Storage Technologies Netherlands B.V. NAND flash module replacement for DRAM module
JP4653817B2 (ja) * 2008-03-01 2011-03-16 株式会社東芝 メモリシステム
KR101067457B1 (ko) 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4592774B2 (ja) * 2008-03-01 2010-12-08 株式会社東芝 メモリシステム
TWI385519B (zh) * 2008-04-18 2013-02-11 Phison Electronics Corp 資料寫入方法及使用此方法的快閃儲存系統與其控制器
JP4649503B2 (ja) * 2008-08-13 2011-03-09 株式会社東芝 半導体装置
TWI413984B (zh) * 2008-10-16 2013-11-01 Silicon Motion Inc 快閃記憶體裝置以及資料更新方法
US8549209B2 (en) * 2008-11-04 2013-10-01 Mosaid Technologies Incorporated Bridging device having a configurable virtual page size
US8244960B2 (en) * 2009-01-05 2012-08-14 Sandisk Technologies Inc. Non-volatile memory and method with write cache partition management methods
US8700840B2 (en) * 2009-01-05 2014-04-15 SanDisk Technologies, Inc. Nonvolatile memory with write cache having flush/eviction methods
US8094500B2 (en) * 2009-01-05 2012-01-10 Sandisk Technologies Inc. Non-volatile memory and method with write cache partitioning
CN101859605B (zh) * 2009-04-10 2013-05-01 国民技术股份有限公司 一种使用瑕疵闪存的方法
TWI435215B (zh) * 2009-08-26 2014-04-21 Phison Electronics Corp 下達讀取指令與資料讀取方法、控制器與儲存系統
JP5657242B2 (ja) 2009-12-09 2015-01-21 株式会社東芝 半導体装置及びメモリシステム
TWI416331B (zh) * 2009-12-23 2013-11-21 Phison Electronics Corp 用於快閃記憶體的資料寫入方法及其控制器與儲存裝置
JP5708216B2 (ja) * 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
JP5768654B2 (ja) * 2011-10-25 2015-08-26 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
CN103680610A (zh) * 2012-09-03 2014-03-26 北京兆易创新科技股份有限公司 差分存储NAND Flash存储器写操作的方法及装置
KR102133573B1 (ko) 2013-02-26 2020-07-21 삼성전자주식회사 반도체 메모리 및 반도체 메모리를 포함하는 메모리 시스템
CA2901757A1 (en) * 2013-03-07 2014-09-12 Charles I. Peddle High speed flash controllers
US9069660B2 (en) * 2013-03-15 2015-06-30 Apple Inc. Systems and methods for writing to high-capacity memory
US20150095551A1 (en) * 2013-09-30 2015-04-02 Micron Technology, Inc. Volatile memory architecutre in non-volatile memory devices and related controllers
JP6107625B2 (ja) * 2013-12-02 2017-04-05 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよびその記憶制御方法
US9460019B2 (en) * 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
JP2016028319A (ja) * 2014-07-08 2016-02-25 富士通株式会社 アクセス制御プログラム、アクセス制御装置及びアクセス制御方法
KR20170008339A (ko) * 2015-07-13 2017-01-24 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US11809727B1 (en) * 2016-04-27 2023-11-07 Pure Storage, Inc. Predicting failures in a storage system that includes a plurality of storage devices
US11112990B1 (en) 2016-04-27 2021-09-07 Pure Storage, Inc. Managing storage device evacuation
CN109582235B (zh) * 2018-11-27 2021-12-21 杭州宏杉科技股份有限公司 管理元数据存储方法及装置
CN109815711B (zh) * 2018-12-21 2020-12-25 航天信息股份有限公司 一种存储设备、数据存储方法和数据读取方法
KR20210142974A (ko) * 2020-05-19 2021-11-26 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법
JP2022047855A (ja) 2020-09-14 2022-03-25 キオクシア株式会社 メモリシステム
CN113409849A (zh) * 2021-05-21 2021-09-17 芯天下技术股份有限公司 一种降低编程功耗的方法、装置、存储介质和终端
CN113409852A (zh) * 2021-06-17 2021-09-17 芯天下技术股份有限公司 一种提高闪存编程效率的方法、装置、存储介质和终端
CN113409850A (zh) * 2021-06-17 2021-09-17 芯天下技术股份有限公司 一种提高编程效率的方法、装置、存储介质和终端

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4680647A (en) * 1983-09-26 1987-07-14 Pioneer Electronic Corporation Method for recording and reproducing video format signal
US5371885A (en) * 1989-08-29 1994-12-06 Microsoft Corporation High performance file system
FR2710445B1 (fr) * 1993-09-20 1995-11-03 Sgs Thomson Microelectronics Circuit de redondance dynamique pour mémoire en circuit intégré.
GB2285524B (en) 1994-01-11 1998-02-04 Advanced Risc Mach Ltd Data memory and processor bus
US6047352A (en) * 1996-10-29 2000-04-04 Micron Technology, Inc. Memory system, method and predecoding circuit operable in different modes for selectively accessing multiple blocks of memory cells for simultaneous writing or erasure
JPH11224492A (ja) 1997-11-06 1999-08-17 Toshiba Corp 半導体記憶装置、不揮発性半導体記憶装置及びフラッシュメモリ
JPH11242630A (ja) * 1997-12-26 1999-09-07 Mitsubishi Electric Corp ベースバンドic
JP2000067582A (ja) * 1998-08-14 2000-03-03 Texas Instr Inc <Ti> メモリシステムおよび電子装置の動作方法
US6449193B1 (en) * 2000-12-28 2002-09-10 Texas Instruments Incorporated Burst access memory system
JP3979486B2 (ja) 2001-09-12 2007-09-19 株式会社ルネサステクノロジ 不揮発性記憶装置およびデータ格納方法
US6850438B2 (en) * 2002-07-05 2005-02-01 Aplus Flash Technology, Inc. Combination nonvolatile memory using unified technology with byte, page and block write and simultaneous read and write operations
US6944063B2 (en) * 2003-01-28 2005-09-13 Sandisk Corporation Non-volatile semiconductor memory with large erase blocks storing cycle counts
JP2005063038A (ja) 2003-08-08 2005-03-10 Sony Corp データ処理装置、その方法、そのプログラムおよび記録媒体
CN100349138C (zh) 2003-08-08 2007-11-14 倚天资讯股份有限公司 非挥发性存储器存取系统及其循环使用存取空间方法
WO2005050453A1 (ja) 2003-11-18 2005-06-02 Matsushita Electric Industrial Co., Ltd. ファイル記録装置
JP2005332125A (ja) 2004-05-19 2005-12-02 Victor Co Of Japan Ltd メモリコントローラ及び共有メモリシステム
JP4253272B2 (ja) * 2004-05-27 2009-04-08 株式会社東芝 メモリカード、半導体装置、及び半導体メモリの制御方法
KR100568115B1 (ko) * 2004-06-30 2006-04-05 삼성전자주식회사 점진적 머지 방법 및 그것을 이용한 메모리 시스템
JP4713867B2 (ja) * 2004-09-22 2011-06-29 株式会社東芝 メモリコントローラ,メモリ装置及びメモリコントローラの制御方法
US7366826B2 (en) * 2004-12-16 2008-04-29 Sandisk Corporation Non-volatile memory and method with multi-stream update tracking
JP4738038B2 (ja) 2005-03-25 2011-08-03 株式会社東芝 メモリカード
KR100634457B1 (ko) * 2005-07-04 2006-10-16 삼성전자주식회사 단일의 페이지 버퍼 구조로 멀티-비트 및 단일-비트프로그램 동작을 수행하는 플래시 메모리 장치

Also Published As

Publication number Publication date
US20080046639A1 (en) 2008-02-21
TW200819976A (en) 2008-05-01
JP5002201B2 (ja) 2012-08-15
US7937523B2 (en) 2011-05-03
TWI358020B (en) 2012-02-11
US20110185225A1 (en) 2011-07-28
KR100884429B1 (ko) 2009-02-19
JP2008009942A (ja) 2008-01-17
CN101097543A (zh) 2008-01-02
CN101097543B (zh) 2010-06-23

Similar Documents

Publication Publication Date Title
KR100884429B1 (ko) 불휘발성 반도체 메모리를 구비하는 메모리 시스템
US10997065B2 (en) Memory system and operating method thereof
KR101165429B1 (ko) 반도체 기억장치 및 그 액세스 방법 및 메모리 제어 시스템
KR100874998B1 (ko) 반도체 집적 회로 장치의 데이터 기록 방식
US8356134B2 (en) Memory device with non-volatile memory buffer
US8797821B2 (en) Card controller controlling semiconductor memory including memory cell having charge accumulation layer and control gate
US10466908B2 (en) Memory system that buffers data before writing to nonvolatile memory
US9025376B2 (en) Nonvolatile memory device and related method of operation
US7814264B2 (en) Memory card, semiconductor device, and method of controlling semiconductor memory
US8098523B2 (en) Semiconductor memory device with memory cell having charge accumulation layer and control gate and memory system
CN102436406A (zh) 半导体装置及其数据存取方法
US11803223B2 (en) Open channel solid state drive, nonvolatile memory system including the same and method of power loss protection of open channel solid state drive
JP5329689B2 (ja) メモリコントローラ、不揮発性記憶装置
US8271721B2 (en) Data writing method and data storage device
US8209464B2 (en) Management method, management apparatus, and controller for memory data access
JP2008084184A (ja) メモリコントローラ
US20050204115A1 (en) Semiconductor memory device, memory controller and data recording method
US20080109588A1 (en) Memory Card and Method of Driving the Same
US11966327B2 (en) Memory system

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20130118

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee