KR960004738B1 - 불휘발성 반도체 메모리 장치 - Google Patents

불휘발성 반도체 메모리 장치 Download PDF

Info

Publication number
KR960004738B1
KR960004738B1 KR1019930005053A KR930005053A KR960004738B1 KR 960004738 B1 KR960004738 B1 KR 960004738B1 KR 1019930005053 A KR1019930005053 A KR 1019930005053A KR 930005053 A KR930005053 A KR 930005053A KR 960004738 B1 KR960004738 B1 KR 960004738B1
Authority
KR
South Korea
Prior art keywords
block
data
unused
pointer
memory device
Prior art date
Application number
KR1019930005053A
Other languages
English (en)
Other versions
KR930020469A (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 KR930020469A publication Critical patent/KR930020469A/ko
Application granted granted Critical
Publication of KR960004738B1 publication Critical patent/KR960004738B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups

Landscapes

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

Abstract

내용 없음.

Description

불휘발성 반도체 메모리 장치
제1도는 본 발명에 관한 불휘발성 반도체메모리 장치의 제1실시예를 도시하는 블록도.
제2도는 제1실시예에 있어서 미사용 블록을 관리하는 테이블의 조작 설명도.
제3a도 내지 제3c도는 제1실시예에 있어서 미사용 블록을 관리하는 테이블의 조작 설명도.
제4도는 제1실시예에 있어서 어드레스 변환용 대조 테이블의 구성도.
제5도는 제1실시예에 있어서 EEPROM 모듈로부터의 데이터 독출 처리를 설명하기 위한 플로우차트.
제6도는 제1실시예에 있어서 EEPROM 모듈에서 데이터 버퍼로의 데이터 독출 처리를 설명하기 위한 플로우차트.
제7도는 제1실시예에 있어서 데이터 버퍼에서 호스트 시스템으로의 데이터 독출 처리를 설명하기 위한 플로우차트.
제8a 및 b도는 제1실시예에 있어서 EEPROM 모듈로의 데이터 기입 처리를 설명하기 위한 플로우차트.
제9도는 제1실시예에 있어서 호스트 시스템에서 데이터 버퍼로의 기입 데이터 전송 처리를 설명하기 위한 플로우차트.
제10도는 제1실시예에 있어서 데이터 버퍼내의 테이타를 EEPROM 모듈에 기입하는 처리를 설명하기 위한 플로우차트.
제11도는 제2실시예에 있어서 EEPROM에서의 기억 영역의 구성도.
제12도는 본 발명에 관한 불휘발성 반도체 메모리 장치의 제2실시예에 있어서 블록으로의 기입을 관리하기 위한 테이블 구성도.
제13a 및 b도는 제2실시예에서 기억 영역으로의 데이터 기입 수순을 도시하는 플로우차트.
제14도는 제2실시예에 있어서 데이터 소거 수순을 도시하는 플로우차트.
제15도는 제2실시예에 있어서 데이터 개서(改書) 수순을 도시하는 플로우차트.
제16도는 제13b도의 데이터 기입 수순중에서 사용되는 서브루틴의 플로우차트.
제17a 내지 f도 및 제18a 내지 f도는 제2실시예에 있어서 데이터 기입에 따른 기억 영역 및 이것을 관리하는 테이블의 상태 변환을 설명하기 위한 도면.
제19도는 본 발명의 제3실시예에서의 포인터와 루트 관리 테이블의 연관 관계도.
제20도는 제3실시예에 있어서 루트관리 테이블의 구성도.
제21a 및 b도는 제3실시예에 있어서 포인터가 기록된 블록을 도시한 도면.
제22도는 제3실시예에서 루트 관리 테이블의 갱신에 따라 발생하는 처리 수순을 도시하는 플로우차트.
제23도는 제3실시예에 있어서 포인터에 블록 위치의 설정 수순을 도시한 플로우차트.
* 도면의 주요부분에 대한 부호의 설명
1 : EEPROM 모듈 2 : 호스트 인터페이스
3 : 데이터 레지스터 4 : 어드레스 레지스터
5 : 카운터 레지스터 6 : 명령 레지스터
7 : 상태 레지스터 8 : 에러 레지스터
9 : 멀티플렉서 10 : 데이터 버퍼
11 : 제어로직 12 : ECC 발생기/체커
13 : 어드레스 발생기 14 : CPU
본 발명은 전기적으로 개서가능한 불휘발성 반도체 메모리 소자 (EEPROM)중 NAND형 EEPROM을 이용한 불휘발성 반도체 메모리 장치에 관한 것이다.
일반적으로 컴퓨터 시스템에서의 개서가능한 기억 장치(또는 기억 소자)는 그 용량에 물리적 한계가 있어서 불필요해진 정보 위에 새로운 정보를 중복 기입해서 사용된다. 개서가능한 기억장치(기억 소자)는 그 중복 기입 방법으로 크게 나누면 2가지로 분류가능하다. 하나의 기억 장치는 RAM이나 하드 디스크, 플로피 디스크 혹은 자기 테이프와 같이 오래된 정보상에 새로운 정보를 그대로 기입할 수 있다. 다른 하나의 기억 장치는 어떤 종류의 광기억 장치나 EEPROM과 같이 중복 기입된 오래된 정보를 한번 소거한 후가 아니면 새로운 정보를 기입할 수 없다.
NAND형 EEPROM의 소거 방법은 2가지가 있다. 제1방법은 예를 들면, 인텔사의 플래시 EEPROM과 같이 칩 전체 정보를 한번에 소거하는 방법이다. 제2방법은 칩의 일부분의 정보만을 선택 소거하는 방법이다.
NAND형 EEPROM에서는 연속해서 데이터를 독출하거나 데이터를 기입하기 위해 구조적으로 연속하는 복수의 기억 셀을 페이지라는 단위로 부른다. 예를 들면, 4M 비트 EEPROM에서는 1페이지는 4096비트의 기억 셀로 구성되어 있다. 구조적으로 연속하는 복수의 페이지는 블록이라는 단위로 불린다. 예를 들면, 4M 비트 EEPROM에서는 8페이지(4K 바이트)분의 기억 셀로 1블럭이 구성된다. NAND형 1에서 1칩의 일부분의 정보만을 선택적으로 소거하는 경우의 단위는 블록과 일치한다.
NAND형 EEPROM은 상기와 같이 데이터의 일부분만을 소거할 수 있어서 자기 디스크 장치에서와 같이 1섹터분의 데이터만을 개서하는 조작이 비교적 용이한 불휘발성 기억 소자이다. 그래서, 기계적 강도에 관한 신뢰성, 저소비 전력, 독출시간의 고속화라는 반도체 메모리의 특징을 살려서 종래의 자기 디스크 장치의 대용으로 사용한다.
그런데, EEPROM은 데이터 독출을 위한 억세스 시간이 고속인 대신 데이터 기입에 시간이 걸린다. 예를 들면, 4M비트 NAND형 EEPROM인 경우, 1블럭의 데이터 독출에 요하는 시간이 약 490μsec인데 비해 1블럭을 소거해서 개서하는 데는 소거에 약 10msec, 데이터 기입에 약 4msec의 시간을 요한다.
또한, 현재 기술로는 데이터의 개서 회수에 제한이 있어서 104내지 105회 정도의 개서 회수가 수명이다. 따라서, 동일 블록에 대해 데이터 중복 기입이 집중되면 칩 전체의 수명이 단축되어 버린다.
또한, OS에 의한 파일 관리와 같이, 일반적으로 파일은 데이터 영역중 빈 영역이면 어디에 기록해도 좋고, 그 장소는 디렉토리와 FAT와 같은 관리 테이블에서 관리된다. 개서 가능 회수에 제한이 있는 EEPROM에 이와 같은 파일 관리를 적용해서, 파일에 관해서는 동일 장소로의 개서가 집중하지 않도록 기입 위치를 분산시키는 것이 용이하다. 그런데, 파일을 기입하거나 개서한 경우에는 반드시 파일 관리 테이블의 내용을 개서해야 하므로, 이들 테이블 데이터기 개서되는 빈도는 각각의 데이터 파일이 개서되는 빈도에 비해 상당히 많다. 특히, 관리 테이블의 내용은 항상 정해진 위치에 기록할 필요가 있다 따라서, EEPROM을 파일 기억 장치에 응용한 경우, 이 관리 테이블 영역에 개서가 집중해서 수명이 짧아질 우려가 있다.
본 발명의 관련 기술은 일본국 특허 출원 제2-292798호 및 제3-167644호에 개시되어 있다.
본 발명은 고속 기입이 가능하고 또 수명이 긴 불휘발성 반도체 메모리 장치를 제공하는 것을 목적으로 한다.
본 발명의 제1불휘발성 반도체 메모리 장치는 복수의 블록으로 분할된 메모리셀 어레이를 갖고 있고, 상기 복수의 블록중 1블럭을 데이터의 최소 소거 단위로서 구성하는 메모리 수단, 상기 복수의 블록중 미사용 블록을 관리하는 관리 수단, 상기 미사용 블록중 데이터가 소거된 블록과 데이터가 미소거된 블록을 식별해서 미소거 블록을 소거하는 소거 수단, 및 상기 관리 수단으로 관리된 미사용 블록중 적어도 하나의 블록에 데이터를 기입하는데, 이 기입된 데이터 내용은 상기 메모리 수단의 다른 블록에 기록된 데이터를 변경한 것으로, 상기 다른 블록에 기록된 데이터가 불필요한 경우에는 상기 다른 블록을 미사용으로 해서 상기 관리 수단으로 통지함과 동시에, 필요한 경우에는 새로운 데이터를 기입하는 블록에 상기 다른 블록에 기록된 데이터중의 필요한 부분을 복사하는 제어 수단을 포함하는 것을 특징으로 한다.
제1불휘발성 반도체 메모리 장치에 따르면 새로운 데이터의 기입은 가능한한 미리 소거된 미사용 블록 영역에 대해 행해진다. 따라서, 본래 기입에 앞서 행할 필요가 있고, 또 어쩔수 없이 억세스 시간을 증대시키는 소거 동작을 생략할 수 있어서 고속 기입이 가능해진다. 동일 데이터를 갱신/변경하는 경우에도 물리적인 기입 위치는 기입할 때마다 변화해서 특정 블록에 대한 기입 회수 증가를 방지할 수 있어 수명이 길어진다.
본 발명의 제2불휘발성 반도체 메모리 장치는 NAND형 EEPROM을 이용한 불휘발성 반도체 메모리 장치로서, 관리 단위가 되는 소정 용량으로 나누어진 복수의 기억 영역을 구비한 메모리 수단, 복수의 상기 기억 영역에 대한 데이터 기입시에 복수 상기 기억 영역이 물리적 혹은 논리적인 배치에 따라 한 방향으로 순환 사용되도록 관리하는 제1관리 수단, 복수의 상기 기억 영역에 기록된 데이터가 소정 시점으로부터 후에 변경되었는지의 여부를 관리하는 제2관리 수단, 및 데이터의 기입에 의해 미리 정해진 조건이 성립한 시점에서 상기 제2관리 수단이 초기화된 시점보다 후에는 데이터가 변경되어 있지 않은 상기 기억 영역을 선택하고, 선택한 기억 영역의 데이터를 다른 기억 영역으로 이동시킴과 동시에 모든 기억 영역의 데이터가 변경된 것으로 간주되는 경우에는 해당 제2관리 수단을 초기화하는 제어 수단을 구비하는 것을 특징으로 한다. 또한, 상기 미리 정해진 조건이 성립한 시점이란 상기 제1관리 수단에서 관리되는 순환 1주기를 그 시점으로 하는 것을 특징을 한다.
제2불휘발성 반도체 메모리 장치에 따르면, 데이터가 복수의 기억 영역에 대해 한방향으로 순환 기입되므로, 기입이 특정 기억 영역에 집중하지 않고 복수의 기억 영역 전체에 균일하게 행해진다. 기입된 후 장기간 변경없이 동일 장소에 있는 데이터는 복수의 기억 영역 전체와 비교한 기입 회수에 불균형이 생기지 않도록 이동되므로, 외관상 기입 영역이 좁아져서 수명이 단축되는 것을 방지한다. 따라서, 동일 기억 장소의 개서 회수에 제한이 있음에도 불구하고 자기 디스크 장치와 수명을 같게 할 수 있어서 용도를 확대할 수 있다. 또 기입된 데이터가 변경되지 않은 기억 영역을 기입 1순환 주기에 선택함으로써, 외관상 기입 영역을 좁히는 것을 한층 효과적으로 방지한다.
본 발명의 제3불휘발성 반도체 메모리 장치는 NAND형 EEPROM을 이용한 불휘발성 반도체 메모리 장치로서, 파일, 상기 파일이 기록된 위치를 관리하는 관리 테이블, 상기 관리 테이블과 상기 관리 테이블이 기록된 위치를 복구 계층으로 계층적으로 나타내도록 구성된 포인터가 기록되는 메모리 수단, 및 상기 메모리 수단 내에 있어서 상기 관리 테이블이 기록되는 위치는 고정되지 않고 상기 복수 계층의 포인터중 근원이 되는 루트 포인터가 기록되는 위치만이 고정되도록 제어하는 제어 수단을 구비하는 것을 특징으로 한다.
제3불휘발성 반도체 메모리 장치에 따르면, 개서 빈도가 높은 관리 테이블의 메모리 수단상에서의 기록위치가 고정되지 않고, 관리 테이블의 위치를 나타내는 포인터가 복수 계층으로 계층화해서 기록되므로, 검색을 위해 고정한 위치에 기록되어야 하는 포인터의 개서 회수가 다른 영역과 동등하게 억제된다. 따라서, 특정 기억 영역에 집중 기입하여 수명을 단축하는 것을 방지할 수 있다.
도면을 참조해서 본 발명에 관한 불휘발성 반도체 메모리 장치의 한 실시예를 설명한다. 본 발명은 NAND형 EEPROM을 이용한 불휘발성 반도체 메모리 장치에 적용된다.
제1도 내지 제10도는 제1실시에를 도시하는 도면이다.
제1도는 본 발명의 제1실시예에 관한 불휘발성 반도체 메모리 장치(이하,「메모리 장치」라 칭한다.)의 전체 구성을 도시하는 블록도이다.
제1도에 있어서, 메모리 수단으로서 사용되는 NAND형 EEPROM 모듈(1)은 복수개의 페이지로 이루어지는 블록으로 분할된 메모리셀 어레이로 구성된다. EEPROM 모듈(1)은 데이터 선으로 연결된 호스트 인터베이스(2)를 통해 도시하지 않은 호스트 시스템에 접속되어 있다. 데이터선 상에는 멀티플레서(9) 및 데이터 버퍼(10)이 설치되어 있다. 호스트 인터페이스(2) 내에는 데이터 레지스터(3), 어드레스 레지스터(4), 카운트 레지스터(5), 명령 레지스터(6), 상태 레지스터(7), 및 에러 레지스터(8)이 설치되어 있다. 또한, 본 장치는 제어 로직(11), ECC(오차 수정 코드(error correction code)발생기/체커(12), 어드레스 발생기(13), 소거 수단 및 제어 수단으로서의 기능이 있는 CPU(14), 작업용 RAM(15), 및 제어 프로그램 ROM(16)으로 이루어진다. 제어 프로그램 ROM(16)에는 데이터 기입 등을 위한 일련의 제어 프로그램이 결합된다.
제1실시예의 메모리 장치는 불휘발성 메모리 영역인 EEPROM 모듈(1)에 기록되는 데이터에 관한 위치부여 및 관리를 위한 관리 테이블을 사용한다. 관리 테이블은 다른 사용자 데이터와 함께 EEPROM 모듈(1)에 기록되나 본 메모리 장치가 기동할 때에 자동적으로 작업용 RAM(15)로 독립된다. 관리 테이블은 EEPROM 모듈(1)에 기입이 될 때마다 그 내용이 갱신되고, 갱신된 관리 테이블은 갱신시 또는 메모리 장치의 사용이 종료한 시점에서 EEPROM 모듈(1)에 기입이 되게 한다.
관리 테이블은 2개로, 한개는 제2도에 그 구성을 도시한 미사용 블록을 관리하기 위한 테이블이다. 다른 하나는 제4도에 도시한 호스트 시스템이 지정해가는 어드레스와 메모리 모듈상의 물리적인 어드레스와의 대조 테이블이다.
먼저, 제2도에 도시하는 미사용 블록을 관리하기 위한 관리 테이블의 한 예를 설명한다. 제2도에 도시하는 바와 같이, 관리 테이블은 복수의 테이블(110,120및 1301∼130m)으로 이루어진다.
관리 테이블의 첫번째 테이블(110)은 미사용 데이타 블럭을 연쇄형상으로 관리하기 위한 테이블로 체인의 선두 블럭의 포인터를 나타낸다. 관리 테이블의 2번째 테이블(120)은 동일 목적의 포인터로 체인 최후미의 포인터를 나타낸다. 관리 테이블의 3번째부터 n+2번째의 테이블은 NAND형 EEPROM 모듈(1)의 물리적인 블럭의 첫번째로부터 n번째에 대응한다. 이들 내용은 3번째 테이블(1301)에 예시한 바와 같이, 다음의 미사용 블럭으로의 포인터(130A1)과 소거 플러그(130B1)로 구성되어 있다. 소거 플래그(130B1)이 "0"인 경우는 소거 종료를 나타내고, "1"인 경우는 미소거를 나타낸다. 관리 테이블의 (m+2)번째의 테이블(130m)중의 포인터(130Am)과 같이 그 내용이 "-1"인 경우에는 체인의 최후미인 것을 나타낸다. 따라서, 본 예에서는 최후미 포인터는 테이블의 (m+2)번째의 테이블(130m)을 포인트하기 위한 내용은(m+2)로 설정된다.
구체적인 예를 이용하여 데이타가 기록될 때의 동작 개요를 설명한다. 여기서 미사용 블럭의 연쇄가 제3a도와 같다고 가정한다.
데이타를 기록하는 경우에는 먼저 테이블(110)의 선두 포인터의 내용을 조사한다. 제3a도에서는 53번째의 테이블(1301)을 포인트하고 있으므로 기입 가능한 NAND형 EEPROM 모듈(1)상의 물리적인 블럭 어드레스는 옵셋 2를 공제한 51로 된다. 블럭(51)에 기입을 행하면 테이블(110)의 값을 테이블(1301)의 포인트보다 앞선 포인터(33)의 테이블(1302)에 다시 설정한다. 그리고, 블럭(51)에 대응하는 테이블(1301)을 이 체인에서 분리한다. 그 결과를 제3b도에 도시한다.
이러한 기입으로 기존의 블럭 데이타가 불필요해진 경우에는 제3c도에 도시하는 바와 같이 테이블 갱신 조작을 행한다. 이 경우, 불필요해진 데이타를 기록하고 있던 것이 블럭(45)였다고 가정한다.
테이블(130m) 이 최후미가 아니고, 블럭(45)가 최후미로 되므로 테이블(130m)의 포인터는 블럭(45)에 대응하는 테이블 번호(47)로 설정된다. 동시에 테이블(120)의 포인터도 151에 47로 다시 설정된다. 그리고, 새롭게 체인에 추가된 테이블(130m+1)의 포인터는 최후미인 것을 나타내는 "1"로 설정하고, 소거 플래그는 데이타가 미소거인 것을 나타내는 "1"로 설정된다.
미사용 블럭의 체인에 추가된 직후의 블럭은 소거되어 있지 않으므로, 독출/기입 억세스가 도중 단절된 때에 체인을 차례로 넘기면서 소거해서 그 블럭에 대응하는 테이블의 소거 플래그를 "0"으로 설정한다.
다음에, 제4도의 대조 테이블을 설명한다. 테이블의 길이(n)은 NAND형 EEPROM 모듈(1)의 1블럭 이하로 한다. 간단하게 하기 위해 EEPROM 모듈(1)이 4M 비트 EEPROM 1개로 구성되었다고 가정하면, 1블럭의 용량은 4K바이트이므로, 블럭 총수는 128개로 되고 대조 테이블의 항목수 n도 128 이하이다.
본 메모리 장치에서는 EEPROM 모듈(1)의 1블럭 용량에 상당하는 데이타량을 단위로 해서 EEPROM 모듈(1)상의 물리적 위치를 부여한다. 즉, 테이블의 1항목은 호스트 시스템에서 지정되는 최초의 4k바이트 분의 데이타가 실제로 기록되는 물리적 위치에 나타낸다. 제4도의 예에서는 테이블의 3번째 항목(203)으로 호스트 시스템이 지정해가는 어드레스(이후, 「논리어드레스」로 기재)의 8k바이트째부터의 4k바이트가, 실제로는 EEPROM 모듈(1)의 101번째의 블럭으로 할당된 것을 나타낸다. 1번째 및 2번째의 항목(201및 202)와 같이 "-1"이 기입된 항목은 그 위치에 대응하는 논리 어드레스로 아직 기입되지 않았기 때문에 물리적인 영역 할당이 행해지지 않은 것을 나타낸다.
다음에, 상기와 같이 구성된 제1실시예의 메모리 장치의 동작을 설명한다.
도시하지 않은 호스트 시스템에서는 제1도의 호스트 인터페이스(2) 내의 어드레스 레지스터(4)에 억세스 개시 어드레스를 카운트 어드레서(5)에 억세스하고자 하는 데이타의 섹터 길이를 설정하고, 마지막으로 명령 레지스터(6)에 독출/기입 등의 명령을 설정하다. 호스트 인터페이스(2)의 명령 레지스터(6)에 억세스 명령이 기입되면, 제어기 내의 CPU(14)는 명령 레지스터(6) 내의 명령을 독립하여 제어 프로그램 ROM(16)에 수납된 명령 실행을 위한 일련의 제어 프로그램을 실행한다.
이하의 설명에서는 호스트 시스템이 지정해가는 색터 길이와 EEPROM 모듈(1)에서의 페이지 길이는 일치한다고 가정한다.
제5도는 EEPROM 모듈(1)에서 데이타를 독출하는 수순을 나타내는 플로우차트이다.
CPU(14)는 호스트 인터페이스(2)에 설정된 개시 어드레스와 관리테이블 내의 어드레스 변환 테이블을 참조해서 독출해야 할 EEPROM 모듈(1) 상의 물리 어드레스를 결정한다.(스텝A1), 다음에, EEPROM 모듈(1)에서 데이타 버퍼(10)으로 데이타를 독출한다(스텝A2). 후술하는 바와 같이 에러 처리 및 데이타 버퍼(10)에서 호스트 시스템으로의 데이타 전송 등을 실행한다(스텝 A3-A5).
제6도는 EEPROM 모듈에서 데이타 버퍼로 데이타를 독출하는 수순을 도시하는 플로우차트이다.
CPU(14)는 EEPROM 모듈(1)을 멀티플렉서(9)를 통해 억세스해서 독출 모드로 설정하고, 데이타 버퍼(10)을 독출 모드로 설정한다. (스텝 B1,B2). 어드레스 발생기 (13)에 독출해야 할 EEPROM 모듈(1)의 물리적인 어드레스를 설정한다.(스텝 B3) 그리고, 데이타 버퍼(10)에 독출한 데이타를 축적해야 할 영역을 결정해서 그 영역의 선두 번지를 데이타 버퍼(10)으로의 기입 어드레스로서 설정한다(스텝 B4). 그후, 제어 로직(11)에 대해 데이타 독출을 위해 결정된 시퀀스를 실행하도록 지령을 보낸다.
제어 로직(11)은 멀티플렉서(9)를 EEPROM 모듈로부터의 독출 데이타가 데이타 버퍼(10)으로 흐르도록 설정하고, 어드레스 발생기(13)의 내용을 인크리멘트하면서 1섹터분의 데이타를 독출한다.(스텝 B5). EEC 발생기/체커(12)를 이들 데이타 및 이것에 부수하여 독출되는 EDD 코드를 사용하여 오류를 검출하도록 제어한다. 1섹터분의 데이타가 독출되면, CPU(14)는 ECC발생기/체커(12)를 체크해서 데이타 오류를 검사한다(스텝 B6). 오류가 검출되지 않은 경우, 또는 검출되어도 정정이 된 경우는 데이타 버퍼(10)에서 호스트 시스템으로 데이타를 전송한다. 만약 정정 불가능한 오류가 검출된 경우에는 호스트 시스템에 대한 데이타 전송은 행하지 않고, CPU(14)는 호스트 인터페이스(2) 내의 상태 레지스터(7)에서의 에러 발생을 나타내는 코드를 설정하고, 에러 레지스터(8)에 에러 내용을 나타내는 코드를 설정해서 호스트 시스템에 명령 실행이 이상하게 종료했음을 통지하고 처리를 종료한다(스텝 B7-B10).
제7도는 데이타 버퍼에서 호스트 시스템으로 데이타를 전송하는 수순을 도시하는 플로우차트이다.
CPU(14)는 데이타 버퍼(10)에 독출한 데이타가 축적된 영역의 선두 번지를 동 버퍼내에서의 독출 어드레스로서 설정하고(스텝 C1,C2), 제어로직(11)에 대해 호스트 시스템에 1섹터분의 데이타를 전송하도록 지령한다. 제어로직(11)은 데이타 버퍼(10)과 호스트 인터페이스(2)를 제어해서 호스트 시스템에 대해 1섹터분의 데이타를 전송한다(스텝C3). 이것이 종료하면 어드레스 레지스터(4)를 1섹터분 진행하고, 카운트레지스터(5)에서 1을 빼고, CPU(14)에 전송 조를 통지한다. 호스트 시스템으로 전송해야 할 데이타가 남아 있는 한, CPU(14)는 이러한 제어를 반복한다. 독출 데이타가 모두 전송되면, CPU(14)는 호스트 인터페이스(2) 내의 상태 레지스터(7)에 에러가 없었음을 나타내는 코드를 설정해서 호스트 시스템으로 명령의 실행이 종료한 것을 통지해서 처리를 종료한다.
제8a도 및 제8b도는 EEPROM 모듈(1)로 데이타를 기입하는 수순을 나타내는 플로우차트이다.
CPU(14)는 호스트 인터페이스(2)에 설정된 개시 어드레스와 관리 테이블 내의 어드레스 변환 테이블을 참조하여 호스트 시스템이 기입하고자하는 어드레스에 할당된 EEPROM 모듈(1)상의 블럭을 산출한다(스텝 D1). 호스트 시스뎀이 지시하는 어드레스에 대응하는 EEPROM 모듈(1)상의 블럭이 할당되어 있고 또 호스트 시스템에서의 요구가 그 블럭 데이타 전부를 개서하지 않는 경우는 블럭내의 개서하지 않는 데이타를 데이타 버퍼(10)으로 독입한다(스텝 D2-D4).
EEPROM 모듈(1)에서 데이타 버퍼(10)으로 데이타를 독출하는 수순은 먼저, 제6도의 플로우차트를 이용해서 설명했다. 블럭내의 중복 기입되지 않는 부분의 데이타가 모두 데이타 버퍼(10)으로 독입될 때까지 제6도의 처리가 반복된다. 다음에 상세히 설명하는 바와 같이 호스트 시스템에서 데이타 버퍼(10)으로의 기입 데이타의 전송, 데이타 버퍼(10)에서 EEPROM 모듈(1)로의 데이타 기입 처리 및 에러 처리등을 실행한다(스텝 D5-D11).
제9도는 호스트 시스템에서 데이타 버퍼로 기입 데이타를 전송하는 수순을 나타낸다.
CPU(14)는 데이타 버퍼(10)을 기입 모드로 설정하고(스텝 E1), 호스트 시스템에서 전송되어오는 데이타가 축적된 데이타 버퍼(10)상의 어드레스를 데이타 버퍼(10)으로의 기입 어드레스로서 설정한다(스텝E2). 그후, CPU(14)는 제어로직(11)에 대해 호스트 시스템에서 1섹터분의 데이타를 전송하도록 지령한다. 제어로직(11)은 데이타 버퍼(10)과 호스트 인터페이스(2)를 제어해서 호스트 시스템에서 1섹터분의 데이타를 수취하고 이것이 종료하면 CPU(14)로 전송 종료를 통지한다(스텝 E3).
제9도의 처리는 호스트 시스템에서 전송해야 할 데이타가 남아있고, 또 데이타 버퍼(10)에 EEPROM 모듈(1)의 기입을 행하고자 하는 블럭용 데이타가 부족한한 계속된다. 호스트 시스템에서의 전송이 종료하면, CPU(14)는 호스트 인터페이스(2)에 설정된 개시 어드레스와 미사용 블럭을 관리하는 테이블을 참조하여 앞서 설명한 바와 같이 미사용 블럭의 체인을 넘겨서 데이타 버퍼에 축적된 1블럭분의 데이타가 기입되어야 할 EEPROM 모듈(1) 상의 미사용 블럭을 결정하여 EEPROM 모듈(1)상에 기입한다.
제10도는 데이타 버퍼내의 데이타 1페이지분을 EEPROM 모듈에 기입하는 수순을 도시한 플로우차트이다.
CPU(14)는 필요하면, EEPROM 모듈(1)과 데이타 버퍼(10)에 초기 설정한 후(스텝F1,F2), 기입하는 페이지의 선두 어드레스를 어드레스 발생기(13)에 설정한다(스텝F3). 데이타 버퍼(10)에 기입되는 데이타의 선두 어드레스를 데이타 버퍼(10)의 독출 어드레스로 설정한다(스텝F4). 그리고, CPU(14)는 제어 로직(11)에 대해 데이타 기입을 위한 결정된 시퀀스를 실행하도록 지령한다. 제어 로직(11)은 데이타 버퍼(10)에서의 기입 데이타가 EEPROM 모듈(1)로 흐르도록 멀티플렉서(9)를 설정하고, 어드레스 발생기(13)의 내용을 인크리먼트하면서 데이타를 기입한다(스텝F5).
CPU(14)는 ECC 발생시/체커(12)를 이들 데이타에서 ECC코드를 생성하도록 제어하고, 데이타와 함께 이 코드도 기록한다(스텝6). 스텝F6까지의 처리는 기입 에러가 발생하던가 또는 1블럭분의 데이타를 기입 종료할 때까지 계속된다(스텝F7). 데이타가 정상적으로 기입 불가능했던 경우에는 에러 처리하고, 1블럭분의 기입되어야 할 EEPROM 모듈(1)상의 블럭을 다시 할당해서, 다시 기입한다. 정상적으로 기입이 종료하면 관리 테이블의 내용이 갱신된다.
호스트 시스템이 요구하는 데이타 모두의 기록이 종료하거나, 에러로부터의 회복이 불가능해서 처리를 중단한 경우는 CPU(14)는 호스트 인터페이스(2) 내의 상태 레지스터(7)에 소정 코드를 설정하고 호스트 시스템에 명령 실행의 종료를 통지한다. 호스트 인터페이스(2)의 명령 레지스터(6)에 억세스 명령이 기입되지 않은 적당한 타이밍에 CPU(14)는 미사용 블럭 관리 테이블의 체인을 넘기면서 미소거 블럭을 차례로 소거해 간다.
상기 제1실시예에서는 EEPROM 모듈은 호스트 인터페이스를 통해 호스트 시스템과 병행해서 동작 가능한 제어기로 제어되는 형태를 취하고 있으나, 호스트 시스템의 CPU에 의해 직접 제어되는 형태라도 좋다.
제11도 내지 제18f도는 본 발명의 제2실시예를 도시하는 도면이다.
제11도는 메모리 수단인 EEPROM 에 있어서의 기억 영역의 구성을 도시한 것이다. 제11도에 있어서, 관리 단위가 되는 용량으로 나누어진 복수의 기억 영역(331-336)은 소거 단위와 동일 혹은 그 정수배로 하면 취급이 간편해지나 이것으로 한정되지 않는다. 제2실시예에서는 이하, 단위 기억 영역을 단지 블럭이라 칭하는데, 이것은 NAND형 EEPROM의 소거 단위인 블럭으로 해석해도 되지만 그것으로 한정되지는 않는다. 각 블럭에 붙은 번호는 각 블럭의 순위를 부여하기 위한 것으로, 물리적인 어드레스 순으로 하는 것이 알기 용이하나 특정 규칙에 따른 논리적인 순위라도 좋다. 이후 간단한 하기 위해, 여기서 설명에 사용하는 메모리 수단은 6개의 블럭으로 구성되어 있는 것으로 한다.
제12도는 상기 블럭(331-336)으로의 기입을 관리하기 위한 테이블이다. 블럭(331-336)의 상태를 나타내는 각 항목(311-336)은 도시한 바와 같이 3개의 플래그(321-323), 즉 유효플래그와 함께 참조함으로써 데이타를 블럭 순위에 따라 한 방향으로 향해 기입하고, 또 순환 사용되도록 관리하기 위한 제1관리 수단으로서의 플래그(이하, 「소기 플래그」또는 「E플래그」)(321). 블럭에 기록된 데이타가 있는 시점에서부터 후에 변경되었는지의 여부를 관리하는 제2관리 수단으로서의 플래그(이하, 「변경 플래그」또는 「C플래그」)(322), 및 블럭에 의미있는 데이타가 기록되어 있는지의 여부를 관리하는 제3관리 수단으로서의 프래그(이하, 「유효 플래그」또는 「V플래그」)(323)으로 구성되어 있다.
제13a도 내지 제18f도를 참조하여 제2실시예의 기입 방식을 설명한다. 기입된 데이타를 독출하기 위해서는 기입한 데이타의 테그(예를 들면, 파일명)과 기입한 위치의 대응을 관리하는 수단이 필요하나, 이것은 통상의 파일 시스템(OS)에서 행해지는 방법을 적용할 수 있으므로 본 실시예에서는 설명을 생략한다.
제13a도 내지 제 13b도는 데이타 기입 수순을 나타내는 플로우차트이고, 제14도는 데이타 소거 수순을 나타내는 플로우차이며, 제15도는 데이타 개서 수순을 나타내는 플로우차트이다. 제17a도 내지 제17f도 및 제18a도 내지 제18f도는 데이타 가입에 의해 제11도에서 도시한 기억 영역과 제12도에서 도시한 그것을 관리하는 테이블의 상태 변화를 동시에 설명하기 위한 도면이다. 제17a도 내지 제17f도 및 제18a도 내지 제18f도의 기억 영역을 나타내는 도면 중 사선의 블럭은 유효한 데이타가 기입되어 있는 영역을 나타내는 것이다.
먼저 메모리 장치가 사용되기 전에는 제17a도에 도시하는 바와 같이 모든 플래그가 "0"으로 초기화된 것으로 한다. 이 상태에서 제1플래그를 기입하는 경우를 설명한다.
제13a도의 스텝 G1에서 필요한 용량이 비어 있는 것을 체크한다. 다음에, 이 방식에서는 의미있는 데이타가 기록되어 있는지의 여부를 관리하는 V플래그와 한 방향으로 향해서 순환 사용을 관리하는 E 플래그의 양쪽이 "0"인 블럭에만 기입을 행하므로 이 조건에 맞는 블럭을 검색한다.(제13a도 스텝G2,G3 제16도 스텝 H1-H4). 조건에 맞는 것이 확인된 후 베1블럭에 데이타를 기입하고(제13a도 스텝 G4-G6), C플러그와 V 플러그를 "1"로 한다(제13a도 스텝G7, 제17b도). 지금 기입한 데이타를 바로 개서하면, 제14도의 수순에 따라 제1블럭의 V 플러그를 "0"으로, E 플러그를 "1"로 변경하고, 첫회의 기입과 같은 수순으로 검색되는 제2블럭에 데이타를 기입한다(제17c도).
상기 조작에 의해 제1블럭은 이론적인 소거 상태로 되나, 전기적인 소거는 별도로 행해야 한다. 백그라운드에서 행해지는 것이 처리 속도면에서 좋으나, 그 방법은 본 실시예의 본질에서 위배되므로 설명은 생략한다. 이하의 설명에서는 데이타가 기입되기 전에 이들 블럭에 전기적인 소거를 종료했다고 가정한다.
이러한 기입 처리를 계속하면, 데이타는 블럭 번호 순으로 메모리 전체에 고르게 기입된 상태, 예를 들면 제17b도에 도시하는 바와 같은 상태로 된다. 여기서 예를 들면, 1 블럭분의 데이타를 기입하고자 하면 빈 영역은 있으나 제13a도의 스텝 G3의 검색에서 실패한다. 검색에 실패했다고 하는 상태는 블럭의 빈 영역에 대한 균일한 기입이 일순한 것을 나타낸다. 따라서, 다음에 단일 방향 기입을 제어하기 위해 모든 블럭에 대한 E 플래그를 "0"으로 클리어한다. (제13a도 스텝 G9, 제17e도).
단일 방향에 의한 고른 기입과 함께 본 실시예를 특징짓는 것은 장기간 도일 장소에 머무르는 데이타를 이동시키는 점이다. 이것을 실현하기 위해서는 이동하기에 적당한 기입 회수에 관련한 타이밍이 필요로 되나, 그 하나로서 E 플래그가 모두 클리어되는 시점을 이용한다. 제 13a도에서는 이 시점에서의 스텝 G10-G13의 처리에서 C 플리그를 검사함으로써 이동 대상 데이타를 선택한다. 제17e도에서는 모든 블럭의 C 플래그가 "1"로 되어 있으나, 이것은 C 플래그를 초기화한 시점에서부터 제17e도의 상태로 될 때까지 모든 블럭이 최저 1회는 개서된다는 것을 나타낸다. 이 경우는 어떤 데이타가 보다 길게 동일 블럭을 점유하고 있는지 판정할 수 없으므로 스텝 G14에서 다시 초기화한다(제17f도). 그후, 이러한 일련의 처리를 기동시킨 제1블럭의 데이타 기입을 실행한다(제13b도 스텝 G24-G28, G6, 제18a도).
또한, 제5블럭의 데이타가 소거되어 제18b도의 상태로 되고, 제2블럭의 기입과 제1블럭의 소기가 있어서 제18c도의 상태로 되었다고 하자. 기입 패턴의 마지막으로서, 이시점에서 제1블럭의 기입을 행하는 경우를 생각한다. 다시 일순 개서했으므로, 기입 가능 영역의 검색에는 실패해서 E 플래그가 모두 클리어 된다(제18d도). 이어서, C 플래그 검사가 행해지나 이번에는 제2블럭의 C 플래그가 "0"이므로, 이블럭의 데이타는 비교적 장기간 개서가 행해지지 않았다고 판단해서 이동 대상으로 한다. 이동전의 기입 가능블럭은 제13a도의 스텝 G15-G20의 수순에 따라 이동 대상 데이타가 들어 있는 블럭을 기점으로 기입이 진행하는 방향으로 순환해서 검색된다. 이 예에서는 제4블럭이 해당하므로, 제2블럭은 여기에 데이타가 복사된 후 소거된다(제13b도 스텝 G21-G23, 제8e도). 따라서, 제17c도의 시점부터 계속 제2블럭을 점유하고 있던 데이타가 이동되어 이 블럭이 개서 가능해진다.
이후의 조작은 제18c도의 시점에서 요구된 1블럭분 데이타를 빈 블럭에 기입하면 되지만, 통상의 기입과 마찬가지로 기입 가능 블럭을 검색해도 실패해 버리는 경우가 있을 수 있다. 즉 제18c도 시점에서 빈 블럭이 정확히 1개밖에 없던 경우이고, 이때에는 빈 블럭으로 이동 대상 데이타가 들어가고, 이동 대상 데이타가 본래 들어있던 블럭의 E 플래그가 "1"로 되어 있으므로 검색에 관계없다. 따라서, 제13b도의 스텝 G27에서 나타내는 바와 같이 E 플래그의 클리어 처리가 필요하다. 이동 대상 데이타가 본래 들어있던 블럭의 E 플래그를 "0"인 상태로 해두는 제어가 가능하다면 이와 같은 일은 없어지나, 그대신 다른 빈 블럭이 있어도 이동 직후의 블럭이 개서가능 블럭으로서 검색되어 백그라운드의 전기적 소거가 충분히 행해지지 않는 경우가 있을 수 있다.
제19도 내지 제23도에 본 발명의 제3실시예를 나타낸다.
제3실시예에서는 불휘발성 반도체 메모리로서 4M 비트 NAND형 EEPROM을 이용한다고 가정한다. 제3실시예의 의 요점을 간략히 설명하기 위해 MS-DOS 정도에 상당하는 기억 영역의 논리적인 관리 단위를 NAND형 EEPROM의 소거 단위인 블럭과 일치시키는 것으로 한다. 본 실시예에서는 사용자 파일, 파일의 기록 위치를 관리하는 테이블 및 그 테이블로의 계층화된 포인터 중 그 위치가 고정되지 않은 것은 기억 영역중의 특정 영역에 기록될 필요가 없으므로, 가능한 한 기억 영역 전체에 분산 기입되도록 제어해야 한다. 그러나, 본 실시예는 파일 위치를 관리하는 테이블이 기억 영역중의 특정 영역에 고정되지 않고 끝나는 수법을 설명하기 위한 것으로, 분산 기입 제어를 전제로 하고 있으나, 상세한 설명은 생략한다.
제20도는 파일이 기록된 위치를 관리하기 위한 테이블 중 하나를 구성하는 블럭의 한예로, 여기서는 임시로 루트 관리 테이블이라 칭한다. 제20도에서 MS-DOS의 FAT와 동일한 구성으로 기억 영역 전체의 블럭 할당 사항을 관리하기 위한 테이블(340)은 본 실시예에서는 사용자 파일뿐만 아니라 파일 관리 테이블이나 그 포인터인 관리 정보가 기록된 위치도 이동하므로 그들 할당도 아울러 관리되는 것으로 한다. 제20도의 포인터(345)는 블럭 할당 정보가 이 블럭내로 수납되지 않은 경우에 사용되는 추가 블럭의 위치나 MS-DOS의 디렉토리에 상당하는 파일명과 그것에 부수하는 정보에 관리 테이블 등의 위치를 나타내는 포인터라고 한다. 즉, 제20도에 도시하는 관리 테이블을 억세스할 수 있으며 파일 관리에 관한 정보는 모두 억세스 가능해진다고 하자.
제21a도 및 제21b도는 루트 관리 테이블이 기록된 위치를 나타내기 위해 기록된 위치를 계측적으로 나타내도록 구성된 포인터가 기록된 블럭의 한 예이다.
제21a도의 페이지(351-358)은 NAND형 EEPROM의 페이지를 나타내는 것으로, 페이지(358)이 소스 측, 페이지(351)이 드레인측의 페이지를 나타낸다. 포인터는 1페이지가 수납되는 정보량으로 하고, NAND형 EEPROM의 기입 루틴에 따라 소스측에서 차례로 기입되어 간다고 하자. 제21a도의 사선 페이지(356-358)은 갱신된 포인터가 기입되어 있는 것을 나타내고, 페이지(351-354)의 "공백(NULL)"은 소거된 상태를 나타낸다. 제21a도의 제1포인터를 수납한 블럭은 페이지(355)의 정보가 루트 관리 테이블의 위치를 나타낸다.
제 21b도의 제m포인터를 수납한 블럭은 제21a도와 동일한 구성으로 제(m-1)포인터의 위치를 나타낸다. 포인터의 수(계층수)를 n으로 한 경우, 제1∼제(n-1) 포인터는 기록 가능한 영역 어디에 기록되어도 좋고, 복수 계층의 포인터를 차례로 넘김으로써 엑세스된다. 제 n포인터(이하, 루트 포인터)만은 기억 영역의 고정 위치에 기록된다. 제19도는 복수 계층에 고정된 포인터의 연관을 도시한다.
제22도는 제3실시예에 관한 파일 관리 방식에 필요한 루트 관리 테이블의 변경에 따라 발생하는 처리 수순을 나타낸 플로우차트이다. 루트 관리 테이블의 내용은 미리 RAM으로 독입되어 전개되어 있고, 갱신은 RAM 상에서 행해진 후에 재기입되는 것으로 한다.
먼저, 파일의 기입 등에서 블럭 할당에 변경이 발생하면, 변경된 루트 관리 테이블을 재기록하는 블럭의 위치를 자신의 블럭 할당 테이블을 참조해서 결정한다(스텝 J1). 다음에 이 위치를 포인터에 설정하고 할당 테이블을 갱신한 후 기입을 행한다(스텝 J2-J5). 제23도의 플로우차트의 스텝 K1-K10은 계층화된 포인터에 블럭 위치를 설정하는 수순을 나타낸다. 이 수순은 계층화된 포인터의 설정 변경을 위해 재귀적으로 호출된다.
다음에 포인터의 계층수 n의 크기 결정 방법을 구체적으로 설명한다. 파일의 기입에 의해 블럭 할당에 변경이 생기면 그때마다 루트 관리 테이블의 내용이 갱신된다. 특정 블럭에 집중 기입되지 않도록 갱신된 테이블 자체도 별도의 블럭에 기입된다. 루트 관리 테이블의 위치가 변화했으므로 제1포인터의 기록 위치도 갱신된다. 포인터의 갱신은 동일 블럭 내에서 8회(8페이지분) 가능하므로 제1포인터를 수납한 블럭은 파일의 기입에 따른 블럭 변경 8회로 1회의 기입이 행해지고 9회째 갱신에서 위치가 변화한다. 제2포인터를 수납한 블럭은 마찬가지로 파일 기입 64회에 1회의 비율로 개서된다고 짐작 가능하다. 여기서, 만약 불휘발성 반도체 메모리 장치의 총 용량을 20M 바이트로 하면, 총 블럭수는 1블럭 용량이 4k 바이트이므로 5120 블럭으로 된다. EEPROM의 개서가능 회수를 C 회로하고, 이들 블럭에 균일하게 기입이 행해진다면
5120×C 블럭
의 개서가 발생가능하다. 파일 1블럭분의 개서에 대해 관리 테이블 1블럭의 개서가 발생한다면, 1회에 2블럭의 개서가 일어나므로 블럭 할당의 변경 발생 회수는 최고로
5120×C÷2=2560×C회
이다.
제n포인터를 기록한 고정 블록의 개서는 블럭 할당의 변경 8n회에 1회 비율로 일어난다. 이 블럭도 최고 C회의 개서가 가능하므로
8n×C=23n×C회
까지의 블럭 할당 변경이면, 고정 블럭의 개서가능 회수가 다른 블럭보다 먼저 한계에 도달하는 일은 없다.
따라서, 필요한 계층수 n은
23n×C=2560×C
n=log22560÷3
≒4
로 된다.
상기와 같이 본 발명의 제3실시예에 따르면, 개서 빈도가 높은 관리 테이블의 메모리 수단 상에서의 기록 위치가 고정되지 않고, 이 관리 테이블의 위치를 나타내는 포인터를 복수 계층으로 계층화해서 기록함으로써 검색을 위해 고정한 위치에 기록되어야 하는 포인터의 개서 회수가 다른 영역과 동등하게 억제되어 특정 기억 영역에 집중 기입하여 수명이 짧아지는 것을 방지할 수 있다.
본 발명은 그 요지를 이탈하지 않는 범위에서 다양하게 변형 실시 가능하다.

Claims (7)

  1. NAND형 EEPROM을 이용한 불휘발성 반도체 메모리 장치에 있어서, 복수의 블럭으로 분할된 메모리셀 어레이를 갖고 있고, 상기 복수의 블럭중 1 블럭을 데이타의 최소 소거 단위로서 구성하는 메모리 수단, 상기 복수의 블럭중 미사용 블럭을 관리하는 관리 수단, 상기 미사용 블럭중 데이타가 소거된 블럭과 데이타가 미소거된 블럭을 식별해서 미소거 블럭을 소거하는 소거수단, 및 상기 관리 수단으로 관리된 미사용 블럭중 적어도 하나의 블럭에 데이타를 기입하는데, 이 기입된 데이타 내용은 상기 메모리 수단의 다른 블럭에 기록된 데이타를 변경한 것으로, 상기 다른 블럭에 기록된 데이타가 불필요한 경우에는 상기 다른 블럭을 미사용으로 해서 상기 관리 수단으로 통지함과 동시에, 필요한 경우에는 새로운 데이타를 기입하는 블럭에 상기 다른 기록된 데이타중의 필요한 부분을 복사하는 제어 수단을 구비하는 것을 특징으로 하는 반도체 메모리 장치.
  2. 제1항에 있어서, 상기 관리 수단은 미사용 블럭이 선택적으로 연쇄하도록 체인을 형성하고, 상기 체인의 최초의 미사용 블럭의 포인터를 격납하는 제1테이블, 상기 체인의 최종 미사용 블럭의 포인터를 격납하는 제2테이블, 및 다음의 미사용 블럭의 포인터와, 해당 블럭이 소거되어 있는지 여부를 나타내는 소거 플래그를 각각 갖는 복수의 제3테이블을 포함하는 것을 특징으로 하는 메모리 장치.
  3. 제2항에 있어서, 제2테이블의 최종 미사용 블럭의 포인터에 의해 포인트되는 미사용 블럭에 대응하는 상기 제3테이블의 최종의 하나의 포인터는 "-1"인 것을 특징으로 하는 메모리 장치.
  4. 제2항에 있어서, 상기 관리 수단은 상기 제어 수단에서 통지된 미사용 블럭을 상기 미사용 블럭의 체인의 최후에 부가하는 수단을 더 포함하는 것을 특징으로 하는 메모리 장치.
  5. 제2항에 있어서, 상기 소거 수단은 관리 수단의 미사용 블럭의 체인을 남겨서 차례로 미사용 블럭의 데이타를 소거하는 수단을 포함하는 것을 특징으로 하는 메모리 장치.
  6. 제1항에 있어서, 상기 소거 수단은 미소거 블럭의 데이타를 소거한 경우에 소거 했다는 취지를 관리수단으로 통지하는 수단을 포함하는 것을 특징으로 하는 메모리 장치.
  7. 제1항에 있어서, 상기 제어 수단은 데이타 기입을 상기 관리 수단의 상기 체인에 연쇄하는 미사용 블럭의 순서에 기초해서 차례로 기입하는 수단을 포함하는 것을 특징으로 하는 메모리 장치.
KR1019930005053A 1992-03-31 1993-03-30 불휘발성 반도체 메모리 장치 KR960004738B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP07794092A JP3485938B2 (ja) 1992-03-31 1992-03-31 不揮発性半導体メモリ装置
JP92-077940 1992-03-31

Publications (2)

Publication Number Publication Date
KR930020469A KR930020469A (ko) 1993-10-19
KR960004738B1 true KR960004738B1 (ko) 1996-04-12

Family

ID=13648065

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930005053A KR960004738B1 (ko) 1992-03-31 1993-03-30 불휘발성 반도체 메모리 장치

Country Status (3)

Country Link
US (2) US5611067A (ko)
JP (1) JP3485938B2 (ko)
KR (1) KR960004738B1 (ko)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
JP2938732B2 (ja) 1993-11-10 1999-08-25 松下電送システム株式会社 メモリ管理装置とこれを用いたファクシミリ装置
JPH07153284A (ja) * 1993-11-29 1995-06-16 Nec Corp 不揮発性半導体記憶装置及びその制御方法
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
JP3539752B2 (ja) * 1994-03-02 2004-07-07 沖電気工業株式会社 半導体記憶装置とメモリ制御方法
JP3784844B2 (ja) * 1994-03-30 2006-06-14 沖電気工業株式会社 半導体記憶装置
JPH0896588A (ja) * 1994-09-28 1996-04-12 Nec Corp 半導体記憶装置
US5845313A (en) * 1995-07-31 1998-12-01 Lexar Direct logical block addressing flash memory mass storage architecture
US8171203B2 (en) * 1995-07-31 2012-05-01 Micron Technology, Inc. Faster write operations to nonvolatile memory using FSInfo sector manipulation
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
US6728851B1 (en) * 1995-07-31 2004-04-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5933847A (en) * 1995-09-28 1999-08-03 Canon Kabushiki Kaisha Selecting erase method based on type of power supply for flash EEPROM
US5987478A (en) * 1995-10-31 1999-11-16 Intel Corporation Virtual small block file manager for flash memory array
US5860082A (en) * 1996-03-28 1999-01-12 Datalight, Inc. Method and apparatus for allocating storage in a flash memory
JP3615299B2 (ja) * 1996-03-29 2005-02-02 三洋電機株式会社 書換え可能romの記憶方法及び記憶装置
JPH09330273A (ja) * 1996-06-10 1997-12-22 Mitsubishi Electric Corp メモリカードおよびメモリカードにおける誤り訂正方法
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
US6275911B1 (en) * 1996-09-20 2001-08-14 Denso Corporation Memory writing device for an electronic device
JP3895816B2 (ja) * 1996-12-25 2007-03-22 株式会社東芝 不揮発性半導体記憶装置とその制御方法、メモリカード、及び記憶システム
US6279069B1 (en) * 1996-12-26 2001-08-21 Intel Corporation Interface for flash EEPROM memory arrays
EP0874368A3 (en) * 1997-04-25 2003-03-19 Sony Corporation Information recording apparatus and method, and information reproducing apparatus and method
JPH10302459A (ja) * 1997-04-28 1998-11-13 Mitsubishi Electric Corp 半導体記憶装置
JP3718578B2 (ja) * 1997-06-25 2005-11-24 ソニー株式会社 メモリ管理方法及びメモリ管理装置
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
JP3680142B2 (ja) * 1997-12-05 2005-08-10 東京エレクトロンデバイス株式会社 記憶装置及びアクセス方法
JP3544859B2 (ja) * 1998-05-11 2004-07-21 富士通株式会社 不揮発性半導体メモリを使用した2次記憶装置
JP3511916B2 (ja) * 1998-11-17 2004-03-29 松下電器産業株式会社 記録再生装置
JP2000173289A (ja) * 1998-12-10 2000-06-23 Toshiba Corp エラー訂正可能なフラッシュメモリシステム
JP2000227871A (ja) * 1999-02-05 2000-08-15 Seiko Epson Corp 不揮発性記憶装置、その制御方法、および、情報記録媒体
US6636941B1 (en) * 2000-01-18 2003-10-21 International Business Machines Corporation Enhanced stable disk storage
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
JP3573706B2 (ja) * 2000-11-15 2004-10-06 富士通株式会社 記憶装置の書き込み/消去方法
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
JP2003030993A (ja) 2001-07-17 2003-01-31 Toshiba Corp 半導体記憶装置
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
GB0123421D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Power management system
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123415D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
JP2003141888A (ja) * 2001-11-01 2003-05-16 Mitsubishi Electric Corp 不揮発性半導体記憶装置
TWI240861B (en) * 2002-01-11 2005-10-01 Integrated Circuit Solution In Data access method and architecture of flash memory
WO2003065210A1 (fr) * 2002-01-31 2003-08-07 Matsushita Electric Industrial Co., Ltd. Appareil de traitement d'informations, appareil de gestion de memoire, procede de gestion de memoire et procede de traitement d'informations
US7231643B1 (en) 2002-02-22 2007-06-12 Lexar Media, Inc. Image rescue system including direct communication between an application program and a device driver
CN101114255A (zh) * 2002-08-29 2008-01-30 松下电器产业株式会社 用于将数据写入快闪存储设备的半导体存储器的装置和方法
JP4129381B2 (ja) 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
KR100490603B1 (ko) * 2002-12-06 2005-05-27 (주) 라모스테크놀러지 플래시 메모리 동작 제어 방법 및 장치
US7154628B2 (en) * 2002-12-17 2006-12-26 Xerox Corporation Job secure overwrite failure notification
JP2003242788A (ja) * 2003-02-10 2003-08-29 Toshiba Corp 不揮発性半導体メモリ装置及びその制御方法
JP4188744B2 (ja) * 2003-04-08 2008-11-26 株式会社ルネサステクノロジ メモリカード
US6973519B1 (en) 2003-06-03 2005-12-06 Lexar Media, Inc. Card identification compatibility
KR100533683B1 (ko) 2004-02-03 2005-12-05 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
EP1733555A4 (en) * 2004-02-23 2009-09-30 Lexar Media Inc SAFE COMPACT FLASH
GB2412194A (en) * 2004-03-19 2005-09-21 Matsushita Electric Ind Co Ltd Reprogramming a non-volatile memory system
US7725628B1 (en) 2004-04-20 2010-05-25 Lexar Media, Inc. Direct secondary device interface by a host
US7370166B1 (en) 2004-04-30 2008-05-06 Lexar Media, Inc. Secure portable storage device
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US7464306B1 (en) * 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7594063B1 (en) * 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
JP4862255B2 (ja) * 2004-09-30 2012-01-25 カシオ計算機株式会社 フラッシュrom制御装置、フラッシュrom制御方法及びプログラム
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
US7523381B2 (en) * 2005-09-01 2009-04-21 Micron Technology, Inc. Non-volatile memory with error detection
US8914557B2 (en) * 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
DE102006013763A1 (de) * 2006-03-24 2007-09-27 Robert Bosch Gmbh Verfahren zum Betreiben einer Speichereinrichtung
JP4513786B2 (ja) * 2006-06-28 2010-07-28 Tdk株式会社 メモリコントローラ、メモリシステム及びメモリ制御方法
KR100859989B1 (ko) * 2006-11-21 2008-09-25 한양대학교 산학협력단 플래시 메모리의 공간정보 관리장치 및 그 방법
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
JP2009003783A (ja) * 2007-06-22 2009-01-08 Toshiba Corp 不揮発性メモリの制御装置及び制御方法及び記憶装置
JP4829202B2 (ja) * 2007-11-02 2011-12-07 株式会社日立製作所 記憶装置及びメモリ制御方法
US8631203B2 (en) * 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US8751770B2 (en) 2008-01-16 2014-06-10 Panasonic Corporation Semiconductor recording apparatus and semiconductor recording system
WO2009129819A1 (en) * 2008-04-21 2009-10-29 Nokia Corporation Method and device for n times writeable memory devices
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US8032707B2 (en) 2008-09-15 2011-10-04 Microsoft Corporation Managing cache data and metadata
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
JP2012178194A (ja) * 2011-02-25 2012-09-13 Renesas Electronics Corp 不揮発性半導体記憶装置
JP5779147B2 (ja) * 2012-07-06 2015-09-16 株式会社東芝 メモリシステム
US9542166B2 (en) 2012-10-30 2017-01-10 Oracle International Corporation System and method for inferring immutability of program variables
JP5664807B2 (ja) * 2014-01-21 2015-02-04 ソニー株式会社 通信装置、通信方法、及び、無線タグ
US11176101B2 (en) * 2018-02-05 2021-11-16 Bank Of America Corporation System and method for decentralized regulation and hierarchical control of blockchain architecture

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3241125A (en) * 1962-05-22 1966-03-15 Ibm Memory allocation
US4685057A (en) * 1983-06-06 1987-08-04 Data General Corporation Memory mapping system
GB8529890D0 (en) * 1985-12-04 1986-01-15 Watson P Garbage collection in computer system
JP2685173B2 (ja) * 1986-05-31 1997-12-03 キヤノン株式会社 メモリ書き込み制御方法
US4912629A (en) * 1986-06-26 1990-03-27 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Real-time garbage collection for list processing using restructured cells for increased reference counter size
US5293560A (en) * 1988-06-08 1994-03-08 Eliyahou Harari Multi-state flash EEPROM system using incremental programing and erasing methods
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
US5095512A (en) * 1988-10-24 1992-03-10 Netexpress Systems, Inc. Method and apparatus for manipulating image data employing an intermediate format
DE69024086T2 (de) * 1989-04-13 1996-06-20 Sundisk Corp EEprom-System mit Blocklöschung
JPH038199A (ja) * 1989-06-05 1991-01-16 Fuji Electric Co Ltd 書き換え可能promのメモリ管理方式
US5023813A (en) * 1989-08-03 1991-06-11 International Business Machines Corporation Non-volatile memory usage
US5200959A (en) * 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
JPH03250498A (ja) * 1990-02-27 1991-11-08 Seiko Epson Corp 不揮発性メモリ装置
JP2584120B2 (ja) * 1990-09-28 1997-02-19 富士写真フイルム株式会社 メモリカードにおけるデータ記録方法およびメモリカードシステム
US5270979A (en) * 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
US5291584A (en) * 1991-07-23 1994-03-01 Nexcom Technology, Inc. Methods and apparatus for hard disk emulation
JPH05233426A (ja) * 1992-02-20 1993-09-10 Fujitsu Ltd フラッシュ・メモリ使用方法
US5357475A (en) * 1992-10-30 1994-10-18 Intel Corporation Method for detaching sectors in a flash EEPROM memory array

Also Published As

Publication number Publication date
JP3485938B2 (ja) 2004-01-13
KR930020469A (ko) 1993-10-19
US5890188A (en) 1999-03-30
US5611067A (en) 1997-03-11
JPH05282889A (ja) 1993-10-29

Similar Documents

Publication Publication Date Title
KR960004738B1 (ko) 불휘발성 반도체 메모리 장치
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
US6034897A (en) Space management for managing high capacity nonvolatile memory
US5953737A (en) Method and apparatus for performing erase operations transparent to a solid state storage system
US6865658B2 (en) Nonvolatile data management system using data segments and link information
US6725321B1 (en) Memory system
US5983312A (en) Simultaneously writing to and erasing two commonly numbered sectors
US6170066B1 (en) Power-off recovery management for sector based flash media managers
JP4960705B2 (ja) マルチブロック単位へのブロックの適応決定論的グループ化
JP3708047B2 (ja) フラッシュメモリの管理方法
KR960005895B1 (ko) 불휘발성 반도체 메모리장치
US7680977B2 (en) Page and block management algorithm for NAND flash
KR101103110B1 (ko) 메모리 시스템
EP1228510A1 (en) Space management for managing high capacity nonvolatile memory
KR100914646B1 (ko) 멀티-플레인 구조의 플래시 메모리 관리 방법
JP2007519996A (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法
JP4235646B2 (ja) メモリコントローラおよびフラッシュメモリシステム
JP2008084184A (ja) メモリコントローラ
JP3822171B2 (ja) 不揮発性半導体メモリ装置及びその制御方法、不揮発性半導体メモリ装置システム及びその制御方法
JP3974149B2 (ja) 不揮発性半導体メモリ装置及び不揮発性半導体メモリの制御方法

Legal Events

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

Payment date: 20090410

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee