KR19990023469A - 불휘발성 반도체 메모리의 제어방법 - Google Patents

불휘발성 반도체 메모리의 제어방법 Download PDF

Info

Publication number
KR19990023469A
KR19990023469A KR1019980032271A KR19980032271A KR19990023469A KR 19990023469 A KR19990023469 A KR 19990023469A KR 1019980032271 A KR1019980032271 A KR 1019980032271A KR 19980032271 A KR19980032271 A KR 19980032271A KR 19990023469 A KR19990023469 A KR 19990023469A
Authority
KR
South Korea
Prior art keywords
terminal
block
connector
storage medium
logical
Prior art date
Application number
KR1019980032271A
Other languages
English (en)
Other versions
KR100365385B1 (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
Priority claimed from JP9214561A external-priority patent/JPH10124384A/ja
Application filed by 니시무로 타이죠, 가부시기가이샤 도시바 filed Critical 니시무로 타이죠
Publication of KR19990023469A publication Critical patent/KR19990023469A/ko
Application granted granted Critical
Publication of KR100365385B1 publication Critical patent/KR100365385B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • 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
    • 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
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • 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/22Safety or protection circuits preventing unauthorised or accidental access to memory cells
    • G11C16/225Preventing erasure, programming or reading when power supply voltages are outside the required ranges
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/14Power supply arrangements, e.g. power down, chip selection or deselection, layout of wirings or power grids, or multiple supply levels
    • G11C5/143Detection of memory cassette insertion or removal; Continuity checks of supply or ground lines; Detection of supply variations, interruptions or levels ; Switching between alternative supplies
    • 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/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0664Virtualisation aspects at device level, e.g. emulation of a storage device or system
    • 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

Abstract

본 발명은 메모리카드의 삽입/빼냄시의 안정성을 향상시킨다.
전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서, 상기 기억매체는 GND단자와 전원단자와 제어단자와 데이터 입출력단자를 갖추고, 상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 접속되는 기능을 갖추고, 상기 기억매체가 상기 커넥터로 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 GND단자와 제어단자가 상기 커넥터의 대응하는 단자에 접속된다.

Description

불휘발성 반도체 메모리의 제어방법
본 발명은, 불휘발성 반도체 메모리 시스템의 제어방법에 관한 것으로, 특히 불휘발성 반도체 메모리카드의 제어에 사용되는 것이다.
근래, 도 1에 나타낸 바와 같은 플래시 메모리카드가 디지탈 스틸 카메라나 PDA 등의 휴대정보기기의 기억매체로서 주목되고 있다. 플래시 메모리로서 NAND형 플래시 메모리로 불리는 플래시 메모리가 사용되고 판매가 되고 있다.
이 메모리카드는 도 1에 나타낸 바와 같이 박형(薄型)의 플라스틱 패키지(1)에 작은 홈이 설치되어 있고 그 홈에 22핀의 평면전극을 갖는 플래시 메모리(2)가 매립되어 있다. 본 플래시 메모리카드는 전용의 커넥터를 매개로 호스트(host) 시스템에 전기적으로 접속되어 데이터의 입출력을 행한다는 것이다.
이들 메모리카드는 커넥터를 매개로 신호의 교환을 행하기 때문에, 메모리카드의 각 단자와 커넥터의 단자와의 접촉이 불완전한 경우에는, 오동작하는 가능성이 커진다. 이 때문에, 메모리카드의 각 단자와 정보처리기기의 커넥터의 단자가 확실하게 접촉하고 있는지 아닌지를 확인하는 방법이 고안되어 왔다.
특히, 종래의 메모리카드를 이용한 제어시스템에서는, 메모리카드의 각 단자와 커넥터의 대응하는 단자는 동시에 접속/절단되고 있었기 때문에, 삽입/빼냄시에 있어서, 접속/절단의 타이밍의 작은 오차가 발생한다. 이 때문에, 예컨대, 전원이 공급되고 있는 상태에서, 코맨드 래치 인에이블(command latch enable) 신호 등의 제어신호가 부정(不定)하게 되면, 의도하지 않은 기입 또는 소거 코맨드 등이 입력되어 데이터를 파괴할 가능성이 있어 메모리카드와 커넥터의 삽입·빼냄제어에는 세심한 주의가 필요하였다.
플래시 메모리로서 16M비트의 NAND형 플래시 메모리의 경우를 예로 들면, 도 2에 나타낸 바와 같이, 플래시 메모리는 512개의 물리적인 메모리블록으로 분할되어 있다. 이 블록은 소거시의 최소단위로 되고 있다. 1블록은 더욱이 16페이지로 분할된다. 1페이지는 기입 및 독출의 기본적인 단위로 된다. 1페이지는 264바이트로 구성되고, 그 중 256바이트는 유저데이터(user data)영역(데이터부), 나머지 8바이트(용장부)는 에러정정부호 및 관리정보 등의 격납(용장부)에 사용된다.
이에 대해, 퍼스컴측에서는, 데이터는 도 3에 나타낸 논리블록에 의해 관리된다. 논리블록(LBA: Logical Block Address)이 500개 설정되어 있고, 1개의 논리블록은 연속한 8섹터(sector)에 상당(相當)한다. 즉, 논리블록(0)은 논리섹터(0~7)를 의미한다.
통상, 퍼스컴 등에서는 데이터가 섹터(512바이트) 단위로 관리되기 때문에, 본 메모리카드에서도 512바이트 단위로의 데이터관리를 기본으로 해야하고, 물리블록의 2페이지를 쌍으로 하여 논리블록의 1섹터분의 데이터를 기억시킨다. 데이터의 구체적인 격납방법을 도 4에 나타낸다.
미사용의 정상블록은 데이터부와 용장부도 FFh로 설정되어 있다. 하기에 각각의 바이트의 의미에 대해 설명한다. Data Area-1은 512바이트 데이터중 전반(前半)의 0~255바이트의 데이터가 격납된다. Data Area-2에는 512바이트 데이터중 후반의 256~511바이트의 데이터가 격납된다. User Data Area의 데이터는 유저에 해방(解放)되어 있고 사용방법은 유저에 일임된다. Data Status Area는 데이터가 정상인지 아닌지를 나타낸다. 통상은 FFh이지만, 정상이 아닌 데이터가 기입되어 있는 경우에 00h가 설정된다. Block Status Area는 블록이 불량인지 아닌지를 나타낸다. 통상은 FFh이지만, 불량블록인 경우 00h(초기 불량블록), F0h (후발 불량블록)이 설정된다. 2비트 이상 0이었던 경우는 불량블록인 것으로 판단한다. 또한, 본 데이터는 동일 블록내에서는 모두 동일치를 기입한다. Block Address Area-1는 블록의 논리어드레스정보를 나타낸다. 또한, 1논리블록을 구성하는 8섹터에는 512의 물리블록중 1물리블록이 상당하기 때문에, 본 데이터는 동일 블록내에서는 모두 동일치가 기입되는 것으로 된다. 마찬가지로서, Block Address Area-2는 Block Address Area-1의 데이터와 같은 내용이 쓰여져 있다. ECC Area-1은 우수(偶數) 페이지 데이터(256바이트)의 3바이트 ECC코드이다. ECC Area-2는 기수(奇數) 페이지 데이터(256바이트)의 3바이트 ECC코드이다.
64M비트 NAND형 플래시 메모리의 경우를 예로 들면, 도 5에 나타낸 바와 같이, 플래시 메모리는 1024개의 물리적인 메모리블록으로 분할되어 있다. 이 블록은 소거시의 최소단위로 되고 있다. 1블록은 또 16페이지로 분할된다. 1페이지는 기입 및 독출의 기본적인 단위로 된다. 1페이지는 528바이트로 구성되고, 그 중 512바이트는 유저데이터영역(데이터부), 나머지 16바이트(용장부)는 에러정정부호 및 관리정보 등의 격납(용장부)에 사용된다. 논리블록은 도 6에 나타낸 바와 같이, 1000개로 설정되어 있고 1개의 논리블록은 연속한 16섹터에 상당한다. 즉, 논리블록0은 논리섹터0~15를 의미한다. 64M비트 NAND형 플래시 메모리의 데이터 격납방법을 도 7에 나타낸다.
이와 같은 메모리카드의 제어에서는, 데이터갱신시는 소거완료영역에 갱신데이터를 기입, 원래의 데이터가 존재하는 영역을 소거한다는 추가기입방식을 채용하고 있기 때문에, 어느 논리블록에 대응하는 데이터가 존재하는 물리블록은 고정이 아니라 항상 메모리내를 이동하고 있다. 따라서, 도 8에 나타낸 바와 같이 물리블록의 용장부에는 자체가 어느 논리블록에 대응하는 데이터를 보지하고 있는가를 나타내는 논리블록 어드레스정보를 기억하고 있다. 여기에서, 도 4 및 도 7중의 Block Address Area-1 및 Block Address Area-2가 대응하는 논리블록 어드레스에 상당한다.
그러므로, 통상은 전원투입시에 모든 물리블록의 그 논리블록 어드레스정보 격납영역을 서치(search)하고, 시스템 RAM상에 논리블록과 물리블록의 변환테이블을 만든다. 한번 테이블을 작성한 후에는 그 테이블을 참조하면 논리블록에 대응하는 물리블록이 즉시 판단가능하기 때문에 모든 블록의 서치동작은 전원투입시에 1회 행해진다. 당연한 것이지만, 데이터의 갱신을 행하고, 대응하는 물리블록의 위치가 변화한 경우, 메모리 시스템은 논리번지/물리번지 변환테이블의 갱신작업을 행하고 다음의 억세스에 준비하는 것으로 된다.
그러나, 종래의 메모리 시스템에 있어서는, 상기 논리번지/물리번지 변환테이블에 요하는 RAM영역이 팽대(膨大)하게 되어 버린다는 제1문제점이 있었다. 이하에 그 내용을 상세히 설명한다.
종래의 16M비트 NAND형 플래시 메모리의 논리번지/물리번지 변환테이블을 도 9에 나타낸다. 상술한 바와 같이, 1논리블록분의 데이터, 즉 연속한 8섹터분의 데이터는 플래시 메모리중의 512블록중 어느 물리블록에 존재한다. 512개의 물리블록에서 1개의 블록을 선택하는데에는 9비트가 필요하게 된다. 소프트웨어의 편리성을 배려하여 오프셋(offset)이 그대로 물리블록을 지시하는 방식으로 테이블을 구성하면, 1논리블록에 대해 2바이트, 합계 1KB의 RAM영역이 필요하게 된다. 예컨대, 논리블록5의 정보가 격납되어 있는 물리블록의 번지는 테이블의 선두에서부터 오프셋 5워드(10바이트)째로 격납된다.
이와 같이, 종래 이용되고 있었던 방법에 있어서는, 논리번지/물리번지 변환테이블이 필요로 하는 RAM영역이 대단히 크다는 문제점이 있었다. 통상적으로 잘 이용되는 범용 CPU에서는 내장 RAM으로서 1KB 정도의 RAM을 탑재하고 있는 것이 일반적이다. 따라서, 종래는 논리번지/물리번지 변환테이블만으로 1KB를 사용할 필요가 있으므로 내장 RAM만으로는 시스템구성을 할 수 없기 때문에, 외부의 RAM을 시스템으로서 갖추는 것이 조건으로 되어 비용증가의 큰 요인으로 되고 있었다.
도 10에 종래의 64M비트 NAND형 플래시 메모리의 논리번지/물리번지 변환테이블을 나타낸다. 이 경우, 1논리블록분의 데이터, 즉 연속한 16섹터분의 데이터는 플래시 메모리중의 1024블록중 어느 물리블록에 존재한다. 1024개의 물리블록으로부터 1개의 물리블록을 선택하는데에는 10비트가 필요하게 되기 때문에, 합계 2KB의 RAM영역이 필요하게 된다. 이 때문에, 16비트 NAND형 플래시 메모리와 마찬가지로 방대한 RAM영역이 필요하게 된다.
이 문제는 플래시 메모리의 용량이 커질수록 심각하게 된다. 예컨대, 1G비트의 시대가 되면 블록의 수는 8192개로 되기 때문에, 16KB의 RAM용량이 필요하게 된다.
또, 메모리 용량이 더욱 증가하면, 플래시 메모리의 물리블록의 용장부에 논리어드레스를 격납할 수 없다는 제2문제가 발생한다. 도 7에 나타낸 16M비트 NAND형 플래시 메모리의 물리블록의 용장부의 Block Address Area에는 자체가 어느 논리블록에 대응하는 데이터를 보지하고 있는가를 나타내는 논리블록 어드레스정보가 격납된다. 각 물리블록의 용장부의 Block Address Area의 구조를 도 11에 나타낸다. 도 11중에서 우수 페이지의 262바이트 및 기수 페이지의 259바이트째의 D4~D7의 4비트와 우수 페이지의 263바이트 및 기수 페이지의 260바이트째의 D0의 1비트는 1고정치로 된다. 따라서, 격납가능한 블록어드레스의 최대치는 BA0~BA 10으로 표현되는 2047이다. 512M비트의 NAND형 플래시 메모리에서는 물리블록이 4096개 존재하기 때문에 Block Address Area의 기술방법을 변경하지 않는 한, 어드레스를 격납할 수 없다. 종래의 플래시 메모리와 용장부의 제어방법을 다르게 하기 위해, 호스트가 2종류의 프로그램을 준비하지 않는 한, 광범위의 용량의 플래시 메모리를 제어할 수 없으므로 호스트 시스템의 프로그램 격납영역의 용량을 압박하는 문제가 발생한다.
다음에, 플래시 메모리의 기입, 소거에 대해 간단히 서술한다. 플래시 메모리의 기입은 페이지단위로 일괄적으로 실행된다. 64M비트 NAND형 EEPROM의 경우는 1페이지 528바이트이다. 또 소거는 블록단위로 실행된다. 64M비트 NAND형 EEPROM은 16페이지로 1블록을 구성한다. 이와 같이 NAND EEPROM에서는 기입과 소거의 단위가 다르다. 따라서 어느 페이지만을 소거하여 데이터를 갱신하는 일은 발생할 수 없다.
플래시 메모리카드를 퍼스컴에서 사용하는 경우에는, 일반적으로 DOS지배하의 드라이브로서 취급된다. 도 12에 종래의 DOS포맷 파라미터(format parameter)를 나타낸다. 여기에서는, 도 12a로서 클러스터 사이즈(cluster size)4KB의 경우, 도 12b로서 클러스터 사이즈가 8KB의 경우를 나타내고 있다. 클러스터란 DOS의 파일관리의 기본최소단위로, 파일 사이즈가 매우 작아도 1개의 클러스터분의 용량은 점유한다. 파일 사이즈가 큰 경우는, 복수개의 클러스터의 체인(chain)으로서 관리되고, 그 관리정보는 FAT(File Allocation Table)에 격납된다. 클러스터의 사이즈나 FAT의 관리방법 등은 부트섹터(boot sector)라 불리는 섹터내에서 관리된다. 1개의 디바이스가 복수개의 드라이브로서 관리되는 경우는, 마스트(master) 부트섹터에 정보가 격납된다. 파일의 기입으로서는 OS로부터 클러스터단위로 기입명령이 발행된다.
클러스터 사이즈가 4KB인 경우를 도 12a에 나타낸다. 논리섹터0에 마스터 부트섹터, 논리섹터16에 부트섹터, 논리섹터17~22에 FAT, 논리섹터23~28에 FAT의 복사본(copy), 논리섹터29~44에 디렉토리(directory), 논리섹터45 이후에 파일데이터영역이 배치되어 있다.
클러스터 사이즈가 8KB인 경우를 도 12b에 나타낸다. 논리섹터0에 마스터 부트섹터, 논리섹터16에 부트섹터, 논리섹터17~19에 FAT, 논리섹터20~22에 FAT의 복사본, 논리섹터23~38에 디렉토리, 논리섹터39 이후에 파일데이터영역이 배치되어 있다.
먼저, 도 13을 이용하여 클러스터 사이즈 4KB의 경우를 예로 종래의 개서(改書) 시퀀스를 설명한다. 클러스터 사이즈가 4KB이기 때문에, 연속한 8섹터분의 기입명령이 OS로부터 발행된다. 이때 논리섹터의 45~52(클러스터A)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료 신영역(新領域)을 찾고, 논리섹터32~44까지를 원래 블록으로부터 신영역 NAND Block C로 복사한다.
2) 논리섹터45~47의 신데이터를 신영역 NAND Block C로 기입한다.
3) 원래 블록 NAND Block A를 소거한다.
4) 논리번지/물리번지 변환테이블의 갱신.
5) 소거완료 신영역을 찾고, 논리섹터48~52의 신데이터를 신영역 NAND Block D로 기입한다.
6) 원래 블록 NAND Block B의 논리섹터53~63의 데이터를 신영역 NAND Block D로 복사한다.
7) 원래 블록 NAND Block A를 소거한다.
8) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부에서 봐서 8섹터의 개서를 실시한 경우, 실제 디바이스로서는 논리섹터32~63의 합계 32섹터(32페이지)의 기입동작과, NAND Block A, NAND Block B의 합계 2블록에 대한 소거동작이 실시된 것으로 된다.
다음에, 도 14를 이용하여 클러스터B에 대한 기입시퀀스를 설명한다. 이 경우 논리섹터의 53~60(클러스터B)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료 신영역을 찾고, 논리섹터48~52까지를 원래 블록 NAND Block B로부터 신영역 NAND Block C로 복사한다.
2) 논리섹터53~60의 신데이터를 신영역 NAND Block C로 기입한다.
3) 논리섹터61~63까지를 원래 블록 NAND Block B로부터 신영역 NAND Block C로 복사한다.
4) 원래 블록 NAND Block B를 소거한다.
5) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부에서 봐서 8섹터의 개서를 실시한 경우, 실제 디바이스로서는 논리섹터의 48~63의 합계 16섹터(16페이지)의 기입동작과 NAND Block B의 1블록에 대한 소거동작이 실시된 것으로 된다.
다음에, 도 15를 이용하여 클러스터 사이즈 8KB의 경우를 예로 종래의 기입시퀀스를 설명한다. 클러스터 사이즈는 8KB이기 때문에, 연속한 16섹터분의 기입명령이 OS로부터 발행된다. 이때 논리섹터의 39~54(클러스터A)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료 신영역을 찾고, 논리섹터32~38까지를 원래 블록 NAND Block A로부터 신영역 NAND Block C로 복사한다.
2) 논리섹터39~47의 신데이터를 신영역 NAND Block C로 기입한다.
3) 원래 블록 NAND Block A를 소거한다.
4) 논리번지/물리번지 변환테이블의 갱신.
5) 소거완료 신영역을 찾고, 논리섹터48~54의 신데이터를 신영역 NAND Block D로 기입한다.
6) 원래 블록 NAND Block B의 논리섹터55~63의 데이터를 신영역 NAND Block D로 복사한다.
7) 원래 블록 NAND Block B를 소거한다.
8) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부에서 봐서 16섹터의 개서를 실시한 경우, 실제 디바이스로서는 섹터32~63의 합계 32섹터(32페이지)의 기입동작과, NAND Block A, NAND Block B의 합계 2블록에 대한 소거동작이 실시된 것으로 된다.
상기 클러스터가 4KB인 것과 8KB인 경우를 같은 8KB의 데이터가 기입되는 경우를 상정(想定)하여 비교하면, 클러스터 사이즈가 4KB인 경우는 2회의 기입으로 처리가 분할되어 합계 48섹터의 기입 및 3블록분의 소거동작이 발생한다. 이에 대해, 클러스터 사이즈가 8KB인 경우는 1회의 기입으로 처리가 집약되어 합계 32섹터의 기입 및 2블록분의 소거동작이 발생하는 것으로 된다.
이와 같이 종래의 메모리 시스템은, 외부에서 봐서 변경된 섹터수에 비교하여, 실제로 디바이스상에서 실행된 기입동작 및 소거동작이 매우 많아지기 때문에, 외부에서 본 개서속도가 늦어진다는 제2문제점이 있었다.
다음에, 종래의 메모리 시스템에서 파일 소거 코맨드 실행시의 동작에 대해 설명한다. 통상 DOS의 파일시스템에 있어서는, 파일 소거 코맨드 실행시에 디렉토리상에 해당 파일이 무효라는 취지의 마킹(marking)을 행하고, 해당 파일이 점유하고 있었던 메모리영역을 FAT(File Allocation Table)상으로 개방한다. 따라서, 파일본체의 데이터부분은 플래시 메모리상에 소거되지 않고 남아 있다. 소거 코맨드 실행시의 관리영역과 데이터영역의 관계를 도 16에 나타낸다. 도 16에 있어서, 예컨대 File-1과 File-4의 소거 코맨드를 실행한 경우, 관리영역의 File-1과 File-4가 개방되어 del mark가 마킹된다. 이때 데이터영역에 있어서는 File-1, File-4는 소거되지 않는다.
이 때문에, 그 후의 기입 코맨드 실행시에 상기 개방된 영역에 대해 새로운 파일의 데이터부분이 기입될 때에, 먼저 플래시 메모리의 소거동작이 필요하게 된다. 이 때문에, 파일기입시에 반드시 플래시 메모리의 소거동작을 따르는 파일기입속도를 열화시킨다는 제3문제점이 발생한다.
도 4에 나타낸 ECC Area-1은 우수 페이지 데이터(256바이트)의 3바이트 ECC코드이다. ECC Area-2는 기수 페이지 데이터(256바이트)의 3바이트 ECC코드이다.
여기에서, ECC(Error Correction Code)란 에러정정을 위한 부호를 가르킨다. 시스템은 이 에러정정용의 부호를 이용하여, 독출한 데이터에 에러가 있는지 없는지를 판정하고, 에러가 존재하는 경우, 에러를 정정할 수 있다. 필요한 에러정정능력은 플래시 메모리 자체의 신뢰성, 예컨대 메모리의 셀구조에 의존한다. 플래시 메모리에는 복수의 데이터기억방법이 있는 바, 이들 플래시 메모리를 예컨대 디지탈 스틸 카메라나 PDA 등의 시스템에 이용한 경우의 에러정정에 대해 생각한다.
예컨대, 제1플래시 메모리카드는 도 17에 나타낸 바와 같이 메모리셀의 임계치에 응한 0과 1의 2치의 값을 보지하고, 1페이지(256바이트)에 대해 1비트에러정정용의 부호를 가지게 한다. 또, 제2플래시 메모리카드는 도 18에 나타낸 바와 같이 메모리셀의 임계치에 응한 0, 1, 10 및 11의 4치(2비트분)의 값을 보지하고, 1개의 메모리셀이 파괴되면 2비트분의 데이터가 파괴되는 가능성이 있기 때문에, 1페이지(256바이트)에 대해 2비트 에러정정용의 부호를 가지게 한다. 1비트 에러정정용과 2비트 에러정정용에서는 부호의 생성, 에러의 검출 및 정정에 관해서는 알고리즘이 다르다.
종래의 시스템(예컨대, 디지탈 스틸 카메라나 PDA 등)에서는 도 19에 나타낸 바와 같이 1종류의 에러정정 알고리즘만 탑재하고 있었다. 이 때문에, 상기 제1 및 제2중 어느 하나의 플래시 메모리카드 밖에 읽혀지지 않는다는 제4문제점이 발생하여 플래시 메모리의 시장에서의 범용성을 높이는 데에 장해가 되고 있었다.
본 발명의 제1실시예에 관한 발명은, 메모리카드의 삽입/빼냄시의 동작의 안정성을 향상시키는 메모리 시스템의 제어방법을 제공하는데 있다.
더욱이, 제2, 제5, 제6실시예에 관한 발명은, 상기 제1문제점을 감안하여 이루어진 것으로, 논리번지/물리번지 변환테이블에 필요하게 되는 RAM의 용량을 저감하고, 범용 CPU의 내장 RAM만으로 플래시 메모리를 제어하는 방법을 제공하며, 이에 따라, 종래 필요했던 외부 RAM이 필요없게 되어, 큰 비용절감을 실현하는 것을 목적으로 한다.
더욱이, 본 발명의 제3실시예에 관한 발명은, 상기 제2문제점을 감안하여 이루어진 것으로, 물리블록에 있어서, DOS상의 파일관리의 기본단위인 클러스터의 구획이 소거의 단위로 되는 블록을 걸치지 않도록 하는 방법을 제공하고, 데이터의 고속기입을 실현하는 것을 목적으로 한다.
또, 본 발명의 제4실시예에 관한 발명은, 상기 제3문제점을 감안하여 이루어진 것으로, 소거 코맨드 실행시에 물리블록의 관리영역을 해방하는 동시에, 그 데이터영역의 소거도 행함으로써, 그 후의 기입 코맨드 실행시의 처리속도의 향상을 실현하는 것을 목적으로 한다.
더욱이, 본 발명의 제7실시예에 관한 발명은, 상기 제4문제점을 감안하여 이루어진 것으로 2치/다치(多値) 등의 2종류의 플래시 메모리카드중 어느 하나 또는 복수의 플래시 메모리가 지원가능한 시스템을 제공함에 있다.
도 1은 메모리카드의 외관도이고,
도 2는 플래시 메모리의 물리블록구성을 나타낸 도면,
도 3은 퍼스컴의 데이터를 나타내는 도면,
도 4는 플래시 메모리의 데이터 격납방법을 나타낸 도면,
도 5는 플래시 메모리의 물리블록구성을 나타낸 도면,
도 6은 플래시 메모리의 물리블록구성을 나타낸 도면,
도 7은 플래시 메모리의 데이터 격납방법을 나타낸 도면,
도 8은 종래예의 논리·물리블록 변환테이블을 나타낸 도면,
도 9는 종래의 메모리 시스템에서의 논리어드레스와 물리어드레스의 변환테이블의 구성을 나타낸 도면,
도 10은 64M비트 NAND형 비플래시 메모리 시스템에서의 논리어드레스와 물리어드레스의 변환테이블의 구성을 나타낸 도면,
도 11은 플래시 메모리의 블록어드레스의 데이터배치를 나타낸 도면,
도 12는 종래의 DOS포맷의 파라메타를 나타낸 도면,
도 13은 종래의 개서(改書) 시퀀스를 나타낸 도면,
도 14는 종래의 개서 시퀀스를 나타낸 도면,
도 15는 종래의 개서 시퀀스를 나타낸 도면,
도 16은 종래의 소거 코맨드 실행시의 관리영역과 데이터영역의 관계를 나타낸 도면,
도 17은 플래시 메모리의 격납데이터예를 나타낸 도면,
도 18은 플래시 메모리의 격납데이터예를 나타낸 도면,
도 19는 종래의 시스템을 나타낸 도면,
도 20은 본 발명의 메모리 시스템에 이용하는 메모리카드의 외관을 나타낸 도면,
도 21은 도 20의 카드의 각 단자의 신호명을 나타낸 도면,
도 22는 본 발명의 메모리 시스템의 제어방법을 이용한 메모리 시스템의 메인 플로우챠트를 나타낸 도면,
도 23은 메모리카드의 전원전압과 외관의 관계를 나타낸 도면,
도 24는 메모리카드의 전원전압의 전기적 검지방법을 나타낸 도면,
도 25는 5V전용 커넥터의 외관도,
도 26은 3.3V전용 커넥터의 외관도,
도 27은 5V 및 3.3V전용 커넥터의 외관도,
도 28은 메모리카드의 삽입·빼냄 검지방법을 나타낸 도면,
도 29는 메모리카드가 PC카드 아답터에 대응한 경우의 삽입·빼냄 검지방법을 나타낸 도면,
도 30은 본 발명의 메모리 시스템에서의 ECC데이터구성을 나타낸 도면,
도 31은 본 발명의 메모리 시스템에서 ECC코드를 산출하기 위한 조건을 나타낸 도면,
도 32는 본 발명의 메모리 시스템에서 전원투입시의 제어 플로우챠트,
도 33은 본 발명의 메모리 시스템에서 논리어드레스/물리어드레스 변환테이블 작성의 플로우챠트,
도 34는 본 발명의 메모리 시스템에서 논리어드레스/물리어드레스 변환테이블의 구성을 나타낸 플로우챠트,
도 35는 본 발명의 메모리 시스템에서 독출시의 플로우챠트,
도 36은 본 발명의 메모리 시스템에서 기입시의 플로우챠트,
도 37은 본 발명의 DOS포맷의 파라메타를 나타낸 도면,
도 38은 본 발명의 개서 시퀀스를 나타낸 도면,
도 39는 본 발명의 개서 시퀀스를 나타낸 도면,
도 40은 본 발명의 개서 시퀀스를 나타낸 도면,
도 41은 본 발명의 소거 코맨드 실행시의 관리영역과 데이터영역의 관계를 나타낸 도면,
도 42는 본 실시예에 의한 논리블록-물리블록 변환테이블의 예를 나타낸 도면,
도 43은 본 실시예에 의한 논리블록-물리블록 변환테이블의 작성예를 나타낸 도면,
도 44는 실시예의 논리·물리블록 변환테이블을 나타낸 도면,
도 45는 실시예에서의 물리블록 어드레스의 표현방법을 나타낸 도면,
도 46은 종래의 불량블록과 용장(冗長)블록의 치환을 행한 경우의 실시예를 설명하기 위한 도면,
도 47은 불량블록과 용장블록의 치환의 종래예를 설명하기 위한 도면,
도 48은 존(zone) 분할제어를 전제로 불량블록과 용장블록의 치환을 행한 경우의 실시예를 설명하기 위한 도면,
도 49는 본 발명의 PC카드 아답터의 구성을 나타낸 도면,
도 50은 플래시 메모리카드를 PC카드 아답터에 삽입한 때의 플로우챠트를 나타낸 도면,
도 51은 본 발명의 제7실시예에 관한 플래시 메모리의 DOS포맷의 파라메타를 나타낸 도면, 및
도 52는 ECC부호영역의 사용방법을 나타낸 도면이다.
상기 목적을 달성하는 수단으로서, 본 발명의 제1실시예에 관한 발명에서는, 일본 특개평 8-90969호 공보 및 일본 특원평 8-202509호에 개시된 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용한 이하의 제1~제9메모리 시스템의 제어방법을 제공한다.
첫째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 GND단자와 제어단자가 상기 커넥터의 대응하는 단자에 접속되는 메모리 시스템의 제어방법을 제공한다.
둘째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 기억매체의 GND단자와 제어단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에부터 절단되는 메모리 시스템의 제어방법을 제공한다.
셋째로, 제1 및 제2메모리 시스템의 제어방법에 있어서, 상기 제어단자가 코맨드 래치 인에이블신호인 메모리 시스템의 제어방법을 제공한다.
넷째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자에 접속되고, 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 제2제어단자가 상기 커넥터의 대응하는 단자에 접속되는 메모리 시스템의 제어방법을 제공한다.
다섯째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 제2제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되고, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되는 메모리 시스템의 제어방법을 제공한다.
여섯째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자에 접속되고, 상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속됨에 앞서, 상기 기억매체의 제2제어단자가 상기 커넥터의 대응하는 단자에 접속되고, 상기 기억매체의 모든 단자가 삽입된 후, 상기 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자에 접속되는 메모리 시스템의 제어방법을 제공한다.
일곱째로, 상술한 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용하여 상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자로부터 절단되고, 상기 기억매체의 전원단자와 제2제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되고, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 전원단자가 상기 커넥터의 대응하는 단자로부터 절단되는 메모리 시스템의 제어방법을 제공한다.
여덟째로, 제7메모리 시스템의 제어방법에 있어서, 상기 기억매체의 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자로부터 절단되고 나서부터 상기 기억매체의 전원단자가 상기 커넥터의 대응하는 단자로부터 절단되기까지의 사이에, 상기 기억매체가 기입 또는 소거동작의 리세트를 완료하는 메모리 시스템의 제어방법을 제공한다.
아홉째로, 제4 내지 제8메모리 시스템의 제어방법에 있어서, 상기 제1제어단자로 전달되는 신호는 코맨드를 거두어들이기 위한 신호이고, 상기 제2제어단자로 전달되는 신호는 데이터 출력단자를 비활성화하는 신호인 메모리 시스템의 제어방법을 제공한다.
다음에, 상기 목적을 달성하는 수단으로서, 본 발명의 제2실시예에 관한 발명에서는, 시스템이 관리하는 논리블록과, 복수의 메모리셀에 의해 구성되고 상기 논리블록에 대응하는 데이터를 기억하는 물리블록과, 상기 물리블록중에 포함되고 상기 대응하는 논리블록의 어드레스를 기억하는 용장부와, 상기 물리블록이 적어도 2 이상으로 구성되는 물리블록영역를 구비하고, 상기 논리블록과 상기 물리블록영역와의 대응관계를 관리하기 위한 논리번지/물리번지 변환테이블을 작성하는 메모리 시스템의 제어방법을 제공한다.
또, 상기 메모리 시스템의 제어방법에 있어서, 메모리 억세스시에 상기 논리번지/물리번지 변환테이블을 참조하여 상기 논리블록에 대응하는 물리블록영역의 어드레스를 독출하고, 상기 물리블록영역을 구성하는 적어도 2 이상의 물리블록의 상기 용장부에 기억되는 대응하는 논리블록의 어드레스를 독출함으로써, 상기 논리블록과 대응하는 물리블록을 선택하는 메모리 시스템의 제어방법을 제공한다.
더욱이, 상기 논리번지/물리번지 변환테이블을 전원투입시에 작성하는 메모리 시스템의 제어방법을 제공한다.
또, 상기 목적을 달성하는 수단으로서, 본 발명의 제3실시예에 관한 발명에서는, 데이터의 고속개서를 실현하는 수단으로서 본 발명에서는 시스템이 관리하는 파일과 적어도 1이상의 상기 파일을 기억하는 복수의 블록을 갖추고, 상기 블록내에서 상기 파일의 선두가 상기 블록의 선두부와 일치하도록 배치되는 것을 특징으로 하는 메모리 시스템의 제어방법을 제공한다.
더욱이, 상기 블록은 소거시의 최소단위인 것을 특징으로 하는 메모리 시스템의 제어방법을 제공한다.
또, 상기 목적을 달성하는 수단으로서, 본 발명의 제4실시예에 관한 발명에서는, 시스템이 관리하는 파일과, 상기 파일의 내용을 기억하는 데이터영역과, 상기 파일과 데이터영역의 대응관계를 기억하는 관리영역을 갖추고, 상기 파일의 소거를 행할 시에, 상기 관리영역에 대응하는 데이터영역이 빈영역이라는 취지를 마크하고, 대응하는 상기 데이터영역의 소거를 행하는 것을 특징으로 하는 메모리 시스템의 제어방법을 제공한다. 또, 소거 영역의 데이터의 고속기입을 실현하는 제2수단으로서, 본 발명에서는 시스템이 관리하는 파일과, 상기 파일의 내용을 기억하는 데이터영역과, 상기 파일과 데이터영역의 대응관계를 기억하는 관리영역을 갖추고, 상기 파일의 소거을 행할 시에, 상기 관리영역에 대응하는 데이터영역이 빈영역이라는 취지를 마크하여 두고, 메모리 시스템에 입력되는 신호에 기초하여 상기 관리영역의 내용을 검지하여 대응하는 데이터영역의 소거를 행하는 것을 특징으로 하는 메모리 시스템의 제어방법을 제공한다.
더욱이, 상기 목적을 달성하는 수단으로서, 본 발명의 제5실시예에 관한 발명에서는, 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록에 이 시스템이 관리하는 상기 논리블록과의 대응붙인 정보를 기억시키고, 상기 논리블록과 상기 물리블록과의 대응관계를 관리하기 위한 테이블을 상기 시스템의 RAM상에 유지함에 있어서, 상기 논리블록과 상기 물리블록의 대응관계중 호스트로부터의 억세스에 응하여 필요한 영역만의 대응관계를 상기 시스템내의 상기 RAM상에 순차적으로 작성하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법을 제공한다.
더욱이, 상기 목적을 달성하는 수단으로서, 본 발명의 제6실시예에 관한 발명에서는, 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 불휘발성 반도체 메모리에 의한 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록에, 이 시스템이 관리하는 논리블록 어드레스와의 대응붙인 정보를 기억시키고, 상기 물리블록과 상기 논리어드레스와의 대응관계를 관리하기 위한 어드레스 변환 테이블을 이 시스템의 RAM상에 작성함에 있어서, 적어도 1개 이상의 상기 물리블록을 각각 집합함으로써 복수의 영역을 구성하고, 소정의 상기 논리블록의 어드레스범위의 데이터는 소정의 상기 영역내에 격납되도록 제어하고, 상기 불휘발성 반도체 메모리에 대한 억세스시에, 해당하는 상기 논리블록 어드레스의 데이터가 격납되어 있는 상기 영역에 대응하는 상기 어드레스 변환테이블을 필요에 따라 작성하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법을 제공한다. 또, 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 불휘발성 메모리에 의한 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록의 기억영역에 이 시스템이 관리하는 상기 논리블록과의 대응붙인 정보를 기억시키고, 상기 논리블록과 플래시 메모리의 물리블록과의 대응관계를 관리하기 위한 테이블을 이 시스템의 RAM상에 형성하는 제어방법으로, 1개 혹은 복수개의 상기 물리블록으로 구성되는 영역을 상기 플래시 메모리의 셀어레이상에 확보하고, 메모리 억세스시마다 억세스대상으로 되는 상기 영역에 대해 그 영역을 구성하는 물리블록의 기억영역을 서치하는 논리블록과 물리블록과의 대응관계를 관리하는 상기 테이블을 이 시스템의 RAM상에 작성하고, 그 테이블을 사용함으로써 논리블록에 대응하는 물리블록을 선택가능하게 한 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법을 제공한다.
더욱이, 상기 목적을 달성하는 수단으로서, 본 발명의 제7실시예에 관한 발명에서는, 본체에 대해 수종류의 메모리장치가 착탈에 의해 교환가능하게 된 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 상기 본체에 장착된 상기 메모리장치에 따라 상기 본체가 갖는 수종류의 에러정정수단중 대응하는 것을 선택하여 에러정정을 행하게 하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법을 제공한다.
(실시형태)
본 발명의 메모리 시스템의 제어방법에 대해 구체적인 실시예를 이하에 설명한다.
도 20에 본 플래시 메모리카드를 나타내고, 도 21에 그 카드에서 평면전극중의 각 핀의 신호명칭을 기록한다.
도 22에 본 플래시 메모리카드를 사용하기 위한 제어에 관한 메인 플로우(ma in flow)를 나타내고, 이후 각 행정의 동작에 대해 설명한다.
스텝A의 삽입검지에 대해 이하에 설명한다.
종래의 기술에서 설명된 바와 같이, 메모리카드에 대한 처리를 시작하기 위해서는, 정상으로 커넥터에 삽입되어 있는 것이 전제조건으로 된다. 불완전한 삽입상태에서 메모리카드로 억세스를 행하면 물리적 또는 데이터적인 파괴를 일으킬 수 있기 때문이다. 따라서 본 발명의 메모리 시스템의 제어플로우에서는 메모리카드가 정상적으로 삽입되어 있는지를 검출하는 수단을 갖고 있다. 이 수단으로서 기구적인 것, 전기적인 것 등이 있다.
예컨대, 커넥터에 검출용 스위치를 설치하고, 스위치는 메모리카드가 정상인 접촉위치에 보지된 후에 시스템에 대해 검출신호를 보내는 위치(예컨대 커넥터의 최내부)로 배치되는 것이다.
또, 삽입을 검지하는 것이 아니라, 시스템기구로서 메모리카드가 정상인 위치에 보지되도록 보정하는 것으로, 예컨대 메모리카드 삽입구에 덮개가 있어, 덮개가 닫혀짐에 의해 메모리카드를 정위치로 집어넣는 방법 등도 있다.
또, 전기적으로 메모리카드의 삽입을 검지하는 수단을 이용하여도 좋다.
다음에, 스텝B의 전원전압검지에 대해 이하에 상세히 설명한다.
본 메모리카드는 5V전원전압과 3.3V전원전압이 있지만, 3.3V전원전압작동의 메모리카드에 5V의 전원이 인가되면, 전압파괴 등의 문제가 발생할 가능성이 있다. 이것을 회피하기 위해, 시스템은 전원전압을 검지하고 있다. 검지방법으로서 외관으로 판단하는 방법과, 전기적으로 판단하는 방법이 고려된다.
도 23에 외관으로 판단하는 방법예를 나타낸다. 도 23a에 나타낸 바와 같이 5V제품은 상단의 좌측의 절단부를 취하고, 도 23b에 나타낸 바와 같이 3.3V제품은 상단의 후측에 절단부를 설치한다. 이에 의해 눈으로 봐서 용이하게 전원전압의 판별이 가능하다.
도 24에 전기적으로 전원전압을 검지하는 방법예를 나타낸다. 여기에서는 17핀을 사용하여 전원전압을 검지한다. 예컨대, 5V제품은 도 24a에 나타낸 바와 같이 17핀을 전기적으로 플로우팅(floating)상태로 하고, 3.3V제품에서는 도 24에 나타낸 바와 같이 17핀을 메모리카드의 커넥터표면에서 VCC라인과 단락시킨다. 시스템측에서는 17핀을 저항을 매개로 VSS로 풀다운(pull down)한다. 시스템측에서 12핀 및 22핀을 VCC로 하여 3.3V를 공급한다. 이 단계에서는 전원전압단자에 5V를 인가하지 않는다. 시스템측은 17핀의 레벨을 모니터하고, L레벨이면 5V제품, H레벨이면 3.3V제품으로 판별한다. 이 판별결과에 따라 정규의 전원전위가 전원전압단자에 인가된다.
또, 커넥터를 연구함으로써 전기적으로 검지를 생략할 수 있다. 예컨대, 도 25에 5V제품의 전용 시스템의 예를 나타낸다. 5V전용 시스템에는 3.3V제품이 삽입되지 않도록 절단부 검출기구부착의 커넥터를 사용하여도 좋다. 이 경우 5V제품의 메모리카드에서는 동시에 이면(裏面)삽입이 방지된다. 또 3.3V제품에 관해서는 이면삽입되지만 전기적인 접촉은 방지할 수 있다. 도 25는 설명을 이해하기 쉽게 하기 위해 간략화되어 있지만 실제로는 하기배치를 하고 있다. 5V전원이 항상 커넥터로 공급되고 있는 시스템의 경우, 메모리카드의 단자가 커넥터단자와 접촉하기 전에 절단부를 이용한 오삽입 방지기구가 기능할 필요가 있다. 예컨대 오삽입 방지기구가 커넥터 입구주위에 있어, 오삽입시는 전기적인 접촉이 일어나지 않도록 하는 등이 고려된다.
도 26에 3.3V전용 시스템의 경우의 예를 나타낸다. 3.3V전용 시스템은 5V제품이 삽입되지 않도록 절단부 검출기구부착의 커넥터를 사용한다. 이 경우 3.3V제품에서는 동시에 이면삽입이 방지된다. 또 5V제품에 관해서는 이면삽입되지만 전기적인 접촉은 방지할 수 있다.
도 27에는 5V 및 3.3V의 겸용 시스템의 예를 나타낸다. 겸용 시스템의 경우, 당연한 것이지만, 5V 혹은 3.3V제품중 어느 것도 시스템에 삽입되기 때문에, 3.3V제품에 5V전원이 인가되지 않도록 배려되고 있다. 즉 메모리카드가 삽입된 시점에서 5V의 전원이 출력되고 있어서는 안된다. 전기적으로 전원전압을 검지하여 5V제품인 것이 명확히 되기까지 5V가 디바이스로 인가되지 않도록 제어한다.
셋째로, 스텝C의 용량검지에 대해 설명한다.
플래시 메모리카드에는 기억용량 또는 인터페이스 사양이 다른 복수종류의 것이 있다. 시스템에 메모리카드가 삽입된 시에는 디바이스의 메이커 코드(maker code) 및 디바이스 코드(device code) 등을 판별하고, 상정외의 코드인 경우는 새로운 억세스를 하지 않도록 한다. 또, 메이커 코드, 디바이스 코드 등의 독출에는 정규의 전원전압을 투입한다.
넷째로, 스텝D의 물리포맷확인에 대해 설명한다.
메모리카드에서는 데이터를 기억하기 위한 물리포맷이 이루어져 있는 바, 메모리카드가 시스템으로 삽입된 시는 그 물리포맷을 확인하고, 혹시 서포트외의 포맷이 되어 있는 경우에는, 데이터를 파괴하는 일없이 리젝트한다. 또, 미지의 물리포맷제품이 삽입된 경우에, 시스템이 재차 물리포맷을 실행하는 것은 플래시 메모리의 선천성 및 후천성 불량블록에 대한 처리가 불완전하게 되는 위험성이 있기 때문에, 주의가 필요하다. 예컨대 16M비트의 NAND형 플래시 메모리를 예로 생각하면, 플래시 메모리는 512개의 물리적인 블록으로 분할되어 있고, 선두블록에는 물리포맷의 형식이나 카드의 속성정보가 기입되어 있다. 나머지 블록은 데이터영역으로서 사용되기 때문에, 선두블록의 데이터를 판별함으로써, 지원가능한 물리포맷이 되어 있는지 어떤지를 판별하여도 좋다.
다섯째로, 스텝E의 논리포맷은 메모리카드를 DOS상의 디바이스로서 억세스 가능하게 하기 위해 행해진다. 메모리카드의 논리포맷이 지원되어 있는지 어떤지를 확인할 필요도 있다. DOS의 클러스터의 단락과 NAND 플래시 메모리의 물리적인 블록의 구획을 일치시키면, 보다 고속의 동작이 가능하게 된다.
여섯째로, 스텝F의 각 동작은 시스템의 메모리 억세스동작을 나타내고, 독출, 기입, 소거동작의 것이다.
일곱째로, 스텝G의 빼냄검지는 전술한 삽입검지와 마찬가지로, 빼냄의 검지도 행하는 것이다. 빼냄이 검지된 경우, 메모리 시스템은 그 동작을 종료한다.
다음에, 상술한 메모리카드의 제어 플로우에 있어서, 메모리카드의 삽입·빼냄을 전기적으로 검지하는 방법으로서, 일본 특개평 8-90969호 공보 및 일본 특원평 8-202509호에 개시된다. 메모리카드(기억매체)의 단자와 순차적으로 접속되는 커넥터단자를 이용한 메모리 시스템의 제어방법을 이하에 설명한다.
먼저, 이 커넥터를 이용한 메모리 시스템에 있어서, 메모리카드의 삽입/빼냄을 검지하는 방법을 도 28을 참조하여 설명한다.
커넥터 1핀 및 10핀 단자를 VSS에 접속하고, 커넥터 11핀 단자를 VCC레벨로 풀업(pull up)한다. 메모리카드의 11핀 단자가 커넥터단자와 접촉하고 있지 않는 경우, 커넥터단자의 전위레벨은 풀업저항에 의해 H레벨로 되어 있다. 메모리카드의 11핀이 커넥터단자와 접촉하면 1핀 및 10핀을 매개로 VSS와 접속되기 때문에 L레벨로 천이(遷移)된다. 따라서 11핀의 커넥터단자의 전위가 L로 천이됨으로써 삽입을, 또 L로부터 H로 천이됨으로써 빼냄을 전기적으로 검출할 수 있다. 11핀을 사용하여 전기적으로 삽입을 검지하기 위해서는 11핀이 커넥터단자와 접촉하고 있으면, 11핀 이외의 단자도 커넥터단자와 접촉하고 있는 것을 보증할 수 있다는 전제조건이 필요하다. 또 시스템의 요구사양을 만족하도록 풀업저항의 값을 조정하면 좋다.
다음에, 상술한 커넥터를 이용한 메모리 시스템에 있어서, 메모리카드의 삽입·빼냄시의 제어방법을 이하에 상세히 설명한다. 본 실시예에서는 보다 실제적인 것으로서 활선(活線)삽입·빼냄을 예로 설명한다. 활선삽입·빼냄이란 전원이 커넥터로 공급된 상태하에서 메모리카드의 삽입·빼냄을 행하는 것이다. 메모리의 오동작이나 전기적인 파괴를 방지하는 외에 하기와 같은 주의가 필요하다.
전원이 공급되고 있는 상태에서 제어신호(/CE, /WE, CLE 등)나 I/O핀이 부정한 상태로 되면, 의도하지 않은 기입 또는 소거 코맨드 등이 입력될 가능성이 있다. 또 전원이 공급되고 있는 상태에서, /CE=L, /RE=L로 되면 디바이스는 데이터 출력상태로 된다. 이때 시스템측도 마찬가지로 데이터 출력상태로 되면 데이터 버스(data bus)상에서 충돌이 일어나서 디바이스에 바람직하지 않은 영향을 줄 가능성이 있다. 또 일반적으로 CMOS 디바이스에서는 전원전압 이상의 전위가 I/O핀으로 인가되면, 전류가 유입(流入) 래치업(latch up) 등을 일으킬 가능성이 있다. 이후, 실례를 들면서 상기 주의사항의 회피방법예를 나타낸다. 예컨대 커넥터단자의 접촉 및 이탈에 관해 순번을 정하고, 연속으로 접촉, 이탈을 행함으로써 활선삽입·빼냄을 실현할 수 있다. 예컨대 하기의 4단계 시퀀스는 시스템측의 제한사항이 적고, PC카드 아답터(adapter) 등의 사용에도 적합하다. 커넥터의 접촉순서 혹은 시스템측에서의 제한사항은 아래의 표로 나타낸다.
(표 1)
시스템측 설정조건
접촉순 접촉핀
제1단계 VSS(1,10), CLE, ALE, /WP 메모리로 억세스하고 있지 않을 시, 각 제어신호(/CE, /WE, /RE, CLE, ALE 등)는 비활성상태로 보지되어 있을 것
제2단계 VCC, /CE, /RE, /WE.
제3단계 제1, 2, 3단계 이상의 핀
제4단계 11핀
이 경우, 제1단계에서는 VSS단자를 접촉시킴으로써, 칩의 접지레벨을 확정시키고, CLE단자를 L레벨(비활성상태)로 고정함으로써, 이후의 시퀀스로 노이즈 등에 의해 잘못된 코맨드가 투입되어 디바이스가 잘못소거되는 등의 문제를 회피한다. 제2단계에서는 /CE단자가 H(비활성상태)로 고정됨으로써 디바이스의 출력핀은 Hi-Z상태로 되고, 시스템측의 버스 제어상태에 관계치않고, 버스상에서의 데이터의 충돌이 회피된다. 제3단계에 있어서는, 제2단계에서 VCC는 소정레벨에 도달하고 있기 때문에, 출력핀을 매개로 버스 라인상으로부터 전류가 유입 등의 문제가 회피된다. 제4단계에서는 최후로 11핀이 접촉한다. 11핀은 앞서 나타낸 바와 같이 삽입·빼냄 검지단자로서 가능하다.
상기 4단계 시퀀스에 의한 활선삽입·빼냄의 외에 2단계 시퀀스에서의 활선삽입·빼냄도 가능하다. 이때, 커넥터의 접촉순서 혹은 시스템측에서의 제한사항은 아래의 표로 나타낸다.
(표 2)
커넥터접촉 시퀀스 시스템측 설정조건
접촉순서 접촉핀
제1단계 VSS(1,10), CLE, ALE, /WP 메모리로 억세스하고 있지 않을 시, 각 제어신호(/CE, /WE, /RE, CLE, ALE 등)는 비활성상태로 보지되어 있을 것.I/O핀은 Hi-z상태로 보지되어 있을 것.
제2단계 제1단계에서 접촉하는 이외의 핀
이 경우는 제1단계에서 VSS단자를 접촉시킴으로써 칩의 접지레벨을 확정시키고, CLE단자를 L레벨(비활성상태)로 고정함으로써, 이후의 시퀀스에서 노이즈 등에 의해 잘못된 코맨드가 투입되어 디바이스가 잘못소거되는 등의 문제를 회피한다. 또, 제2단계에 있어서 VCC, /CE, I/O핀 등에 대해서는 완전히 동시에 접촉하는 것은 현실적으로는 될 수 없고, 접촉 타이밍에 의도적이지 않은 오차가 발생할지도 모르지만, 시스템측에서 I/O버스를 Hi-z로 보지하고 있으면, 버스상에서의 데이터의 충돌, 전류의 유입 등은 회피된다.
또, 상기 4단계접촉 시퀀스용 커넥터를 PC카드 타입의 아답터에 대해서도 적용할 수 있다. PC카드로는 카드검출핀으로서 -CD1, -CD2의 2핀이 정의되어 있고 시스템측에서는 양핀을 풀업한 상태로 PC카드의 삽입·빼냄을 검지하는 것이 일반적이다. PC카드 아답터에서의 -CD1핀 및 -CD2핀의 신호생성방법으로서 도 29에 나타낸 바와 같이 메모리카드의 11핀을 사용하는 경우를 예로 기록한다. 이 경우의 퍼스컴의 표준적인 시퀀스를 하기에 나타낸다. PC카드 아답터만 퍼스컴에 삽입되어 있는 경우, 퍼스컴은 어떤 카드도 삽입되어 있지 않은 것으로 판단한다. 메모리카드가 삽입될 시, 4단계접촉 시퀀스 커넥터에서는 먼저 VSS(1, 10핀)가 최초로 접촉한다. 이 단계에서 퍼스컴으로부터 GRD레벨이 공급되고 있다. 연속접속이 진행하여, 모든 핀이 접속된 후, 최후에 11핀이 접속된다. 이 단계에서 -CD1과 -CD2의 레벨이 L로 떨어지고, 퍼스컴측은 카드삽입을 확인하고, 초기화처리로 들어가 퍼스컴측으로부터 전원이 투입된다.
다음에, 메모리카드로의 억세스중에 빼냄을 행한 경우의 처리에 대해 설명한다. 본 행위는 기본적으로는 금지사항이기 때문에, 억세스 램프 등에 의해 유저에게 억세스중인 것을 알리는 수단을 갖추는 것 등이 당연히 고려된다. 그러나, 소거동작 또는 기입동작중에 메모리카드가 잘못 빼내어진 경우, 억세스중의 블록이하의 데이터가 파괴될 가능성이 있다. 이 때문에, 이하에 나타낸 시퀀스는 선택중의 블록이하의 데이터가 보호될 가능성을 높이는 것이다. 이하에, 4단계빼냄 시퀀스의 커넥터를 예로 설명한다.
빼냄시는 상술한 접촉 시퀀스와 역의 순번으로 이탈시키는 것으로 된다. 먼저 11핀을 사용하여 메모리카드의 빼냄을 검지한다. 다음에 쓰기방지신호 /WP를 인에이블로 하고, 소거 또는 기입동작을 리세트한다. 리세트에 필요한 시간은 소거모드시에 최대 1.5초 이하이다. 리세트동작을 정상으로 행하기 위해서는, 메모리카드에 전원이 공급되고 내부의 로직이 정상으로 동작하고 있을 필요가 있다. 4단계이탈 시퀀스를 사용하는 경우, VCC핀이 이탈하는 단계 이전에 리세트동작을 완료시키고, 또 제3단계의 I/O핀 등이 이탈하기 전에 리세트 동작이 완료되는 것이 이상적이다.
또, 2단계이탈 시퀀스도 상기 2단계삽입 시퀀스와 역의 순번으로 이탈시킴으로써 실현가능하다.
더욱이, 상기 4단계접촉/이탈 시퀀스의 제3단계와 제4단계를 동시에 행하는 3단계접촉/시퀀스도, 활선삽입·빼냄시의 데이터보호에 대해 유효하다.
이상으로 설명한 바와 같이 본 발명의 메모리 시스템의 제어방법에 의하면, 메모리카드 삽입·빼냄시에 있어서, 메모리카드의 삽입/빼냄시의 동작의 안정성의 향상, 또 활선삽입·빼냄시의 데이터의 보호가 가능하게 된다.
다음에, 본 발명의 제2실시예에 대해 상세히 설명한다.
본 실시예는 논리번지/물리번지 변환테이블에 필요한 RAM영역의 용량의 삭감을 행한 플래시 메모리카드에 대해서이다.
먼저, 반복으로 되지만 본 발명의 메모리 시스템의 물리블록의 구조와 논리블록의 관계에 대해 설명한다.
본 발명의 메모리 시스템 물리블록구조 및 물리블록내의 데이터구성은, 종래 기술의 항에서 설명한 것과 마찬가지로, 도 2 및 도 4에 나타내어진다. 이하에, 도 4를 이용하여 본 발명의 메모리 시스템에서 물리블록내의 각각의 바이트의 의미를 설명한다.
Data Area-1은 512바이트 데이터중 전반의 0~255바이트에 데이터가 격납된다. Data Area-2에는 512바이트 데이터중 후반의 255~511바이트에 데이터가 격납된다. User Data Area의 데이터는 유저에 해방되어 있고 사용방법은 유저에게 일임된다. Data Status Area는 데이터가 정상인지 아닌지를 나타낸다. 통상은 FF h이지만, 정상이 아닌 데이터가 기입되어 있는 경우에 00h가 설정된다. Block Status Area는 블록이 불량인지 아닌지를 나타낸다. 통상은 FFh이지만, 불량블록의 경우, 00h(초기 불량블록), F0h(후발 불량블록)가 설정된다. 2핀 이상 0이었던 경우는 불량블록으로 판단한다. 또한, 본 데이터는 동일블록내에서는 모두 같은 값을 기입한다. Block Address Area-1은 블록의 논리 어드레스정보를 나타낸다. 또한, 1논리블록을 구성하는 8섹터에는 512의 물리블록중 1물리블록이 상당하기 때문에, 본 데이터는 동일 블록내에서는 모두 같은 값이 기입되는 것으로 된다. 마찬가지로 하여, Block Address Area-2는 Block Address Area-1의 데이터와 같은 내용이 쓰여져 있다. ECC Area-1은, 우수 페이지 데이터(256바이트)의 3바이트 ECC코드이다. ECC Area-2는, 기수 페이지 데이터(256바이트)의 3바이트 ECC코드이다.
여기에서, ECC에 대해 설명한다. 본 실시예에서는 256바이트(2048비트)단위의 데이터에 대해 ECC부호를 생성한다. 1비트 정정의 기능을 가지게 하기 위해, 256바이트에 대해 22비트의 ECC데이터를 사용하고 있다. 256바이트는 도 30에 나타낸 바와 같이, 데이터로 늘어선 것이다.
즉, 1Byte째의 입력의 bit0가 2048bit의 1bit째(어드레스; 00000000 000)로 되고,
256Byte째의 입력의 bit7가 2048bit의 2048bit째(어드레스; 11111111 111)로 된다.
ECC코드[라인 패러티(line parity)와 칼럼 패러티(column parity)]는 도 31에 나타낸 조건을 만족하는 1024비트의 기수 패러티로서 산출된다.
칼럼 패러티 -CP0~CP5는 1바이트(8비트)로 데이터가 입력될 때마다 갱신된다. ECC부호의 생성을 소프트웨어로 행하는 경우는, 1바이트의 입력(256가지)에 대해서의 칼럼 패러티 계산결과를 미리 시스템내의 ROM상에 갖는 방법이 고려된다. 이 방법에 의해, 비트단위의 연산이 불필요하게 되고, 계산시간을 크게 단축할 수 있다. 또 바이트의 입력(256가지)에 대해서의 칼럼 패러티 계산결과를 전원투입시 일괄하여 계산하고, RAM상에 보지하는 방법도 고려된다. 전안(前案)에 비교하여 ROM이 없어도 해결되지만, 대신에 RAM영역이 필요하게 된다.
도 32는 본 발명의 제2실시예에 관한 플래시 메모리카드의 전원투입시의 제어 플로우챠트이다. 이하에 플로우에 따라 설명한다.
(스텝S1) 커넥터에 메모리카드가 삽입된 것을 받아서, 전원전압의 검지를 행한다.
(스텝S2) 메모리카드의 ID코드를 독출하고, 기억용량을 인식한다.
(스텝S3) 만약 시스템이 지원하고 있지 않는 ID코드가 독출되면 리젝트한다.
(스텝S4) 물리포맷의 확인을 행한다. 물리번지의 선두블록의 정보를 읽는다.
(스텝S5) 만약 시스템이 지원하고 있지 않는 포맷이 되어 있으면 리젝트한다.
(스텝S6) 논리번지/물리번지 변환테이블을 만듬과 더불어, 다음의 기입동작에서 기입을 행하기 위한 소거완료영역을 선택한다.
도 33에 상기 스텝S6에 나타낸 전원투입시에 작성하는 논리번지/물리번지 변환테이블의 작성의 플로우챠트를 나타낸다.
(스텝S1) 논리번지/물리번지 변환테이블이 수용되는 RAM영역을 리세트한다.
(스텝S2) 다음의 데이터 기입에 사용되는 소거완료의 블록을 기억하는 테이블영역을 리세트한다.
(스텝S3) 물리블록의 1로부터 서치를 개시한다.
(스텝S4) 블록의 용장부를 독출한다.
(스텝S5) 소정영역의 데이터를 원래의 그 블록이 정상인 블록인지 아닌지를 판단한다. 불량블록의 경우 이하에 이은 처리가 불필요하게 되고, 다음의 블록의 서치를 이행(移行)한다.
(스텝S6) 소거완료의 영역인지 아닌지를 판단한다.
(스텝S7) 소거완료의 블록이면 다음의 기입의 때에 사용하는 블록의 후보로서 테이블상에 격납한다.
(스텝S8) 소거완료의 영역이 아니면, 논리어드레스정보영역을 추출한다. 이때, 패러티체크를 행하여 타당성을 확인한다.
(스텝S9) 상기 내용을 기초로 논리번지/물리번지 변환테이블을 작성한다.
(스텝S10) 물리블록번호의 카운트업.
(스텝S11) 512블록을 서치하면 종료.
이 플로우에 따라 작성된 논리번지/물리번지 변환테이블을 도 34에 나타낸다. 도 34에 나타낸 물리블록영역(Physical Block Area)이란 연속한 2개의 물리블록의 집합체를 의미한다. 예컨대, 물리블록영역0은 물리블록0과 물리블록1을 나타낸다. 본 테이블에서는 1개의 논리블록에 대해 1개의 물리블록영역을 할당하고 있다. 예컨대, 논리블록0에 대해, 물리블록영역5가 할당되어 있는 경우, 물리블록의 10 혹은 11이 실제의 논리블록0의 데이터를 기억하고 있는 것으로 된다. 따라서, 실제로 억세스할 시에는, 물리블록10 및 11의 용장부의 논리어드레스와의 관련을 나타내는 데이터영역을 검색하고, 어느 것이 논리블록0의 데이터를 실제로 격납하고 있는가를 판단할 필요가 있다. 그러나 극히 한정된 영역을 독출할뿐이므로, 메모리 억세스의 성능에 미치는 영향은 거의 없다.
이때, 물리블록영역은 전체에 256개(512/2) 존재하고, 8비트의 데이터로써 기술하는 것이 가능하게 된다. 소프트웨어의 편리성에 배려하여 오프셋이 그대로 물리블록을 지시하는 모양으로 테이블을 구성하면, 1블록에 대해 1바이트, 계 0.5KB의 RAM영역이 필요하게 된다. 예컨대, 논리블록5의 정보가 격납되어 있는 물리블록영역의 번지는 테이블의 선두로부터 오프셋 5바이트째로 격납된다.
이 0.5KB의 RAM용량은 종래 필요했던 1KB의 RAM용량에 대해 반으로 된다. 범용 CPU는 통상 1KB정도의 RAM영역을 갖고 있지만, 본 실시예에 의해 얻어진 0.5KB의 RAM영역의 삭감은 대단히 큰 역할을 한다.
즉 비용증가를 일으키는 외부 RAM을 설치하지 않고도, 본 실시예에 의해 얻어진 0.5KB의 빈영역을 사용함으로써 시스템을 구성하는 것이 가능하게 되고 비용절감을 예측할 수 있다.
또, 상기 실시형태에 한하지 않고, 물리블록영역으로서 4물리블록을 정의 하여도 좋고, 또 큰 블록수를 상정하여도 상관없다.
도 35는 본 실시예에 관한 플래시 메모리카드의 독출시의 동작 플로우챠트이다. 이하에 플로우에 따라 설명한다.
(스텝S1) 독출을 행하는 선두섹터 어드레스와 전송섹터수를 호스트로부터 받는다.
(스텝S2) 독출범위가 타당한 범위인지 검정한다.
(스텝S3) 섹터를 논리블록으로 변환. 16M비트 제품의 경우는 1블록 8섹터구성이기 때문에 8로 나누는 것으로 된다.
(스텝S4) 논리번지/물리번지 변환테이블을 참조하고, 해당 논리블록이 존재하는 물리블록영역을 얻는다.
(스텝S5) 블록영역에 있는 2개의 물리블록의 논리어드레스정보영역을 조사하여, 어느 것이 호스트의 지정한 논리블록의 데이터를 격납하고 있는가를 조사한다.
(스텝S6) 특정된 물리블록으로부터 1섹터분의 데이터를 독출한다. 예컨대 섹터번호가 0일때는, 물리블록의 선두 2페이지의 데이터를 읽고, 예컨대 섹터번호가 7일때는, 물리블록의 최종 2페이지의 데이터를 읽는다. 1개의 물리블록중에서, 8개의 섹터의 데이터가 순번으로 늘어서 있다.
(스텝S7) 독출한 데이터에 대해 에러체크를 행하고, 에러가 없는지 확인한다.
(스텝S8) 에러가 검출되면, 정정가능한지 아닌지를 판단한다.
(스텝S9) 에러가 검출되고, 역시 또 정정가능한 경우 데이터를 정정한다.
(스텝S10) 호스트가 요구한 섹터수를 독출하면 종료한다.
(스텝S11) 다음의 독출섹터가 물리블록의 경계를 지났는지 아닌지를 판단한다. 예컨대, 섹터7에서 8로 이행하는 경우, 데이터는 각각 다른 물리블록으로 존재하기 때문에, 새로운 논리번지/물리번지 변환테이블을 재차 참조한다.
(스텝S12) 동일 블록내에서 독출을 계속하는 경우는, 독출하는 페이지를 카운트업한다.
(스텝S13) 다른 블록으로 이동하는 경우는, 논리블록을 카운트업하고, 페이지의 카운트도 리세트한다.
다음에, 본 실시예의 기입시의 동작에 대해 설명한다.
기입은 기본적으로 다음의 3부분의 처리로 대별(大別)된다. 예컨대, 논리섹터3을 개서하는 경우의 예를 설명한다. 갱신은 섹터3만이지만, 섹터0으로부터 7의 8섹터분의 데이터는 동일 블록상에 존재하기 때문에, 1블록에 대한 처리가 필요하게 된다.
첫째로, 논리섹터0, 1 및 2에 관해서는, 데이터의 갱신이 없기 때문에, 논리섹터0, 1 및 2의 데이터는 원래 격납되어 있던 논리블록으로부터 새롭게 기입을 행하는 물리블록으로 복사된다.
둘째로, 논리섹터3은 갱신하기 때문에, 원래의 데이터를 복사할 필요가 없이 호스트로부터 주어진 데이터를 새롭게 기입을 행하는 블록으로 기입한다.
셋째로, 논리섹터4~7은 데이터의 갱신이 없기 때문에, 논리섹터4~7의 데이터는 원래 격납되어 있던 물리블록으로부터 새롭게 기입을 행하는 물리블록으로 복사한다.
이상과 같이, 1블록에 대해 복사/갱신데이타기입/복사의 동작이 기본으로 된다. 물론, 기입이 섹터0~7가 다양한 경우는 1블록분 모두의 데이터가 갱신되기 때문에, 복사동작이 불필요하게 되는 것은 자명하다. 이하에 나타낸 플로우챠트의 분기는 주로 이것으로부터 기입하는 섹터가 갱신데이터인가 아니면 복사동작인가를 판별하면서 진행하는 것으로 된다.
도 36은 본 실시예에 관한 플래시 메모리카드의 기입시의 동작 플로우챠트이다. 이하에 플로우에 따라 설명한다.
(스텝S1) 호스트로부터 데이터의 갱신을 행하는 선두섹터번지와 전송섹터수를 받는다.
(스텝S2) 논리블록번호로 변환하고, 논리번지/물리번지 변환테이블을 참조한다. 독출동작과 마찬가지로 논리블록영역의 2개의 블록으로부터 실제로 물리블록을 선택한다. 여기에서 선택한 블록으로부터 복사해야할 데이터를 끌어올리는 것으로 된다.
(스텝S3) 물리블록의 선두로부터 처리를 개시한다.
(스텝S4) 블록전반의 복사동작인가 아니면 데이터의 갱신인가를 판단한다.
(스텝S5) 복사라면, 원래 블록으로부터 데이터를 독출하고, 신블록으로 기입을 실행한다.
(스텝S6) 다음의 섹터의 처리로 이행한다.
(스텝S7) (스텝S4)에서 갱신영역으로 판단되면, 호스트로부터 받은 갱신데이터를 기초로 기입을 행한다.
(스텝S8) 다음의 섹터의 처리로 이행한다.
(스텝S9) 호스트가 요구하는 섹터수 기입인가 확인한다.
(스텝S10) (스텝S9)에서 요구한 수의 기입이 종료한 것으로 판단된 경우, 블록의 경계인지 아닌지를 판단한다. 미기입의 영역이 남아 있으면, 블록후반의 복사동작으로 이행. 블록경계라면, 이 이상 복사동작을 실행할 필요가 없다.
(스텝S11) 원래 블록으로부터 데이터를 독출하여, 신블록으로 기입한다.
(스텝S12) 다음의 섹터의 처리로 이행한다.
(스텝S13) (스텝S4)에서 호스트가 요구하는 섹터수의 기입이 종료하여 있지 않은 경우는 반드시 기입이 필요하지만, 블록경계라면, 다음의 물리블록에 대한 처리로 이행한다.
(스텝S14) 다음에 블록처리로 이행 또는 처리를 종료하기 전에, 기입을 행한 결과를 기초로 논리번지/물리번지 변환테이블의 갱신을 행하고, 더욱이 원데이터가 존재했던 물리블록을 소거하고, 다음의 처리에서의 새로운 기입영역으로서의 후보영역으로서 등록한다.
(스텝S15) 다음의 블록의 처리로 이행한다.
이상으로 설명한 바와 같이, 본 실시예의 메모리 시스템의 제어방법에 의하면, RAM영역의 큰 삭감을 실현할 수 있다. 이것은, 종래의 메모리카드 시스템은 논리번지/물리번지 변환테이블에서 필요한 RAM용량이 크므로, 범용 CPU의 내장 RAM만으로는 시스템을 구성할 수 없고, 외부 RAM을 설치하는 것이 조건으로 되어 있던 것에 대해, 본 발명의 메모리카드 시스템은 논리번지/물리번지 변환테이블로서 필요한 RAM의 용량을 저감하고, 범용 CPU의 내장 RAM만 제어가능하게 한 플래시 메모리를 제어하는 방법을 이용하기 때문이다. 이에 의해, 종래 필요했던 외부 RAM이 불필요하게 되어, 큰 비용삭감을 실현하는 것이 가능하게 된다.
다음에, 본 발명의 제3실시예에 대해 상세히 설명한다.
본 실시예는 DOS포맷형식으로 이용한 경우에 데이터의 개서동작을 고속화한 플래시 메모리카드에 대해서이다.
도 37에 본 실시예에 의한 DOS포맷 파라메타를 나타낸다. 여기에서는, 도 37a로서 클러스터 사이즈4KB의 경우, 도 37b로서 클러스터 사이즈가 8KB인 경우를 나타내고 있다. 클러스터 사이즈가 4KB인 경우, 논리섹터0에 마스터 부트섹터, 논리섹터19에 부트섹터, 논리섹터20~25에 FAT, 논리섹터26~31에 FAT의 복사, 논리섹터32~47에 디렉토리, 논리섹터48 이후에 파일데이터영역이 배치되어 있다. 클러스터 사이즈가 8KB인 경우, 논리섹터0에 마스터 부트섹터, 논리섹터25에 부트섹터, 논리섹터26~28에 FAT, 논리섹터29~31에 FAT의 복사, 논리섹터32~47에 디렉토리, 논리섹터48 이후에 파일데이터영역이 배치되어 있다. 이와 같이, 클러스터 사이즈가 4KB 및 8KB인 경우에도, 클러스터의 구획이 물리적인 블록의 구획을 걸치지 않도록 파라메타가 설정되어 있다. 이것은, DOS포맷 파라메타의 내에 부트섹터의 배치되는 장소를 조정함으로써 실현할 수 있다.
먼저, 도 38을 이용하여 클러스터 사이즈4KB의 경우를 예로 기입 시퀀스를 설명한다. 클러스터 사이즈는 4KB이기 때문에, 연속한 8섹터분의 기입명령이 OS로부터 발행된다. 이때 논리섹터의 48~55(클러스터A)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료영역을 찾고, 논리섹터48~55까지의 신데이터를 신영역 NAND Block C로 기입한다.
2) 논리섹터56~63의 원데이터를 신영역 NAND Block C로 복사한다.
3) 원래 블록 NAND Block B를 소거한다.
4) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부로부터 봐서 8섹터의 개서를 실시한 경우, 실제 디바이스로서는, 논리섹터48~63의 합계 16섹터(16페이지)의 기입동작과, NAND Block B의 1블록에 대한 소거동작이 실시된 것으로 된다.
다음에, 도 39를 이용하여 또 클러스터B에 대한 기입 시퀀스를 설명한다. 이 경우 논리섹터56~63(클러스터B)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료신영역을 찾고, 논리섹터48~55까지의 원데이터를 신영역 NAND Block C로 복사한다.
2) 논리섹터56~63의 신데이터를 신영역 NAND Block C로 기입한다.
3) 원래 블록 NAND Block B를 소거한다.
4) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부로부터 봐서 8섹터의 개서를 실시한 경우, 실제 디바이스로서는 논리섹터48~63의 합계 16섹터(16페이지)의 기입동작과, NAND Block B의 1블록에 대한 소거동작이 실시된 것으로 된다.
다음에, 도 40을 이용하여 클러스터 사이즈는 8KB이기 때문에, 연속한 16섹터분의 기입명령이 OS로부터 발행된다. 이때 논리섹터의 48~63(클러스터A)에 대한 기입(데이터갱신)이 발생한다.
1) 소거완료신영역을 찾고, 논리섹터48~63까지의 신데이터를 신영역 NAND Bl ock C로 기입한다.
2) 원래 블록 NAND Block B를 소거한다.
3) 논리번지/물리번지 변환테이블의 갱신.
따라서, 외부로부터 봐서 16섹터의 개서를 실시한 경우, 실제 디바이스로서는 논리섹터48~63의 합계 16섹터(16페이지)의 기입동작과, NAND Block B의 1블록에 대한 소거동작이 실시된 것으로 된다.
상기 클러스터가 4KB인 것과 8KB인 경우를 같은 8KB의 데이터가 기입되는 경우를 상정하고 비교하면, 클러스터 사이즈가 4KB인 경우는 2회의 기입으로 처리가 분할되어 합계 32섹터의 기입 및 2블록분의 소거동작이 발생한다. 이에 대해, 클러스터 사이즈가 8KB인 경우는 1회의 기입으로 처리가 집약되어 합계 16섹터의 기입 및 1블록분의 소거동작이 발생하는 것으로 된다.
도 12~도 15에 나타낸 종래의 메모리 시스템의 개서속도와 비교하면, 클러스터가 4KB인 경우에는 8KB의 데이터를 갱신하는데 48섹터의 기입 및 3블록분의 소거동작이 발생하고 있던 것이, 32섹터의 기입 및 2블록분의 소거동작으로 되고, 시간적으로 2/3으로 단축된 것으로 된다.
또, 클러스터가 8KB인 경우에는, 8KB의 데이터를 갱신하는데 32섹터의 기입 및 2블록분의 소거동작이 발생하고 있던 것이, 16섹터의 기입 및 1블록분의 소거동작으로 되고, 시간적으로 1/2로 단축된 것으로 된다.
이와 같이, DOS의 파일관리의 단위인 클러스터의 구획이 플래시 메모리의 물리적인 블록의 경계를 걸치지 않도록 함으로써, 개서속도의 고속화가 예상된다.
또, 클러스터의 사이즈에 주목하면 클러스터가 4KB인 경우에는, 8KB의 데이터를 갱신하는데 32섹터의 기입 및 2블록분의 소거동작이 발생하고 있던 것이, 클러스터가 8KB인 경우에는 16섹터의 기입 및 1블록분의 소거동작으로 되고, 시간적으로 1/2로 된다. 즉, 클러스터의 사이즈를 플래시 메모리의 물리블록의 사이즈와 같이 함으로써 보다 고속의 기입이 가능하게 된다. 물론, 클러스터의 사이즈가 플래시 메모리의 물리블록의 사이즈의 정수배의 경우도 마찬가지의 효과를 얻을 수 있다.
다음에, 본 발명의 제4실시예에 대해 상세히 설명한다.
본 실시예는 소거후의 기입 코맨드 실행시의 처리속도를 향상시킨 플래시 메모리카드에 대해서이다.
본 실시예의 플래시 메모리카드 시스템은, 통상 DOS의 파일 시스템에서의 파일소거와 다르고, 디렉토리상에 해당 파일이 무효라는 취지의 마킹을 행하고, 해당 파일이 점유하고 있던 메모리영역을 FAT(File Allocation Table)상으로 개방할 뿐만 아니라, 파일본체의 데이터부분을 플래시 메모리상에서 소거하는 것을 특징으로 한다. 즉 파일의 소거명령시에, 개방된 클러스터의 영역에 대한 소거동작을 실시한다.
도 41에 소거 코맨드 실행시의 관리영역과 데이터영역의 관계를 나타낸다. 도 41에 있어서, 예컨대 File-1과 File-4의 소거 코맨드를 실행한 경우, 관리영역의 File-1과 File-4가 개방되고 del mark가 마킹되고, 더욱이 데이터영역에 있어서 File-1과 File-4가 기억되어 있던 영역은 소거된다.
따라서, 다음에 새로운 파일기입명령이 발생한 때에 선택되는 클러스터는 이미 소거완료이기 때문에, 바로 기입이 가능하게 되고, 파일기입속도가 향상된다. 일반적으로 플래시 메모리에 있어서는 기입보다 소거쪽이 시간이 걸리기 때문에, 본 실시예에 의해 달성되는 파일기입속도의 향상효과는 현저하다.
또 본 실시예에서 효과가 가장 현저하게 나타나는 조건은 상술한 제3실시예로부터 이해하는 방법으로, 클러스터 사이즈와 플래시 메모리의 블록 사이즈를 일치시킨 경우이다. 클러스터 사이즈가 플래시 메모리의 블록 사이즈보다 작은 경우는 블록의 일부분을 소거하는 것으로 되지만, 처리가 더욱 번잡해지고, 사양상 블록의 일부분만이 소거되어 있는 상태를 허용하지 않는 경우도 있다.
클러스터 사이즈와 블록 사이즈가 일치하고 있으면, 단순히 블록을 소거함에 의해 클러스터를 개방할 수 있다. 물론 클러스터 사이즈가 물리블록 사이즈의 정수배인 경우도 마찬가지의 효과가 얻어진다.
또, 본 실시예는 그 주지를 바꾸지 않는 범위에서 다양하게 확장이 가능하다. 예컨대, 본 실시예에서는 파일소거시에 데이터영역의 해당하는 클러스터의 소거동작을 실행했지만, 소거동작의 실행 타이밍은 그것에 한하지 않는다. 예컨대, 포맷동작을 실행하는 시점에서 모든 클러스터의 소거동작을 실행하여도 좋다. 물론 메모리카드의 출하시점에서 데이터영역의 클러스터를 소거완료의 상태로 출하하여도 좋다. 통상적으로 메모리카드의 출하시에는 메모리카드의 출하시험을 실시한다. 이 테스트종료시에 디렉토리 및 FAT의 개서에 의해 파일이 없는 상태로 할뿐만 아니라, 본 실시예와 같이 데이터영역의 소거동작을 실행하여 두면, 엔드 유저(end user)의 손에 도달한 시점에서 유저가 손을 보지 않고도 고속의 파일기입을 기대할 수 있다.
더욱이 예컨대 디지탈 스틸 카메라 등에서 사용하는 경우를 고려하면, 카메라상에서의 파일의 소거, 재포맷 등의 화상파일의 소거를 따르는 동작시에 있어서, FAT 등의 개서뿐만 아니라, 파일본체가 격납되어 있던 클러스터영역의 소거를 동시에 실행하면, 그후의 화상기입 시퀀스에 있어서, 고속기입이 가능하게 되고, 사진이나 동화(動畵)의 입력 등이 가능하게 된다. 이때에는, 클러스터 사이즈가 디바이스의 블록 사이즈의 정수배이고, 클러스터의 구획이 블록 사이즈와 일치하고 있다면 파일본체부분의 소거가 용이하게 된다. 또 디지탈 카메라 등에서 전원의 투입시 등에 자동적으로 불필요한 파일부분을 소거하도록 하여도 좋다. 이렇게 하면, 퍼스컴상에서 단순히 FAT 등의 갱신에 의해 파일소거가 되어 있던 메모리카드에 대해서도, 유저의 손을 번거롭게 하지 않고 기입고속화가 이루어진다. 또 그 타이밍은 전원투입시에 뿐만 아니라 언제라도 상관없다. 또, 본 발명은 컴퓨터 시스템상 등에서 본 메모리카드를 사용하는 경우도 마찬가지의 수단에 의해 기입의 고속화가 이루어진다.
또, 본 실시예에 의하면, 데이터의 개서시에 발생하는 소거 및 기입횟수를 줄이는 것이 가능하기 때문에, 일반적으로 개서횟수에 제한이 있는 플래시 메모리를 사용하는 경우에는 메모리의 수명을 늘이는 효과도 가진다.
이상에 서술한 바와 같이, 본 실시예의 메모리 시스템의 제한방법에 의하면, DOS의 파일관리의 단위인 클러스터의 구획이 플래시 메모리의 물리적인 블록의 경계를 걸치지 않도록 함으로써, 데이터의 개서시에 발생하는 소거 및 기입횟수를 줄이는 것이 가능하기 때문에, 개서속도의 고속화가 가능하게 된다. 더욱이, 일반적으로 개서횟수에 제한이 있는 플래시 메모리를 사용하는 경우에는 메모리의 수명을 늘이는 것도 가능하게 된다.
다음에, 본 발명의 제5실시예에 대해 상세히 설명한다.
본 실시예는 논리번지/물리번지 변화테이블에 필요한 RAM영역의 용량의 삭감을 행한 플래시 메모리카드에 대해서이다.
본 실시예에서는 논리번지/물리번지 변화테이블을 작성할 때에, 호스트로부터의 억세스를 2종류로 분류한다. 예컨대, 케이스1은 논리블록500개의 내에서 전반의 250개의 논리블록을 억세스하고 있는 상태, 케이스2는 논리블록500개의 내에서 후반의 250개의 논리블록을 억세스하고 있는 상태로 한다. 케이스1의 경우, 논리번지/물리번지 변환테이블에는 전반 250블록분의 테이블을 보지시키고, 상기 케이스2의 경우는, 논리번지/물리번지 변환테이블은 후반 250블록분의 테이블을 보지시킨다. 케이스1의 경우의 테이블의 상태를 도 42로 나타내고, 케이스2의 경우의 테이블의 상태를 도 42로 나타낸다.
어느 순간, 테이블상에 논리블록의 전반 250개분의 테이블이 존재하고 있었다고 하면, 호스트로부터의 억세스범위가 논리블록의 후반 0~249라면, 기존의 테이블을 사용하여 논리블록-물리블록의 대응을 검색할 수 있다.
마찬가지로 어느 순간, 테이블상에 논리블록의 후반 250개분의 테이블이 존재하고 있었다고 하면, 호스트로부터의 억세스범위가 논리블록의 후반 250~499라면, 기존의 테이블을 사용하여 논리블록-물리블록의 대응을 검색할 수 있다.
다음에, 어느 순간, 테이블에 논리블로의 전반 250개분의 테이블이 존재하고 있었다고 하고, 호스트로부터의 억세스범위가 논리블록의 후반 250~499라면, 기존의 테이블을 사용하여 논리블록-물리블록의 대응을 검색할 수 없다. 따라서, 이 경우는 논리블록의 후반 250개분에 상당하는 논리번지/물리번지 변환테이블을 만들어 고친다. 이에는 플래시 메모리의 전영역의 두 번의 참조가 필요하게 된다.
마찬가지로, 어느 순간, 테이블상에 논리블록의 후반 250개분의 테이블이 존재하고 있었다고 하고, 호스트로부터의 억세스범위가 논리블록의 전반 0~249라면, 기존의 테이블을 사용하여 논리블록-물리블록의 대응을 검색할 수 없다. 따라서, 이 경우는 논리블록의 전반 250개분에 상당하는 논리번지/물리번지 변환테이블을 만들어 고친다. 이에는 플래시 메모리의 두 번의 참조가 필요하게 된다.
이와 같이, 호스트로부터 억세스한 영역에 상당하는 논리번지/물리번지 변환테이블이 RAM상에 없다면 다시 플래시 메모리의 전영역을 참조하여 필요한 논리번지/물리번지 변환테이블을 만들어 고친다.
이 경우의 논리번지/물리번지 변환테이블 작성의 플로우챠트를 도 43에 나타낸다.
(스텝S0) 억세스의 최초에 이미 필요한 논리번지/물리번지 변환테이블의 유무를 확인하고 필요하면 테이블작성 루틴으로 이행.
(스텝S1) 논리번지/물리번지 변환테이블이 들어가는 RAM영역을 리세트한다.
(스텝S2) 물리블록의 선두로부터 서치를 개시한다.
(스텝S3) 블록의 용장부를 독출한다.
(스텝S4) 소정영역의 데이터를 원본으로 그 블록이 정상인 블록인가 아닌가를 판단한다.
불량블록의 경우 이하에 따른 처리는 불필요하게 되고, 다음의 블록의 서치로 이행한다.
(스텝S5) 소거완료의 영역인가 어떤가를 판단한다.
(스텝S6) 소거완료의 블록이라면 다음의 기입때에 사용하는 블록의 후보로서 테이블상에 격납한다.
(스텝S7) 소거완료의 영역이 아니라면, 논리어드레스 정보영역을 추출한다.
(스텝S8) 상기 내용을 기초로 논리번지/물리번지 변환테이블을 작성한다.
(스텝S9) 물리블록번호의 카운트업.
모든 블록을 서치하면 종료.
이상과 같은 동작에서 필요에 따라 논리번지/물리번지 변환테이블을 작성한다.
또 본 발명은 상기 실시예에 한정되지 않는다. 주지를 일탈하지 않는 범위에서 다양한 변경이 가능하다.
예컨대 본 실시예에서는 플래시 메모리를 전반, 후반의 2분할했지만, 분할의 수는 2개로 한정되지 않고, 임의의 수로 분할할 수 있다.
또 본 실시예에서는 플래시 메모리를 전반, 후반의 같은 크기로 분할했지만, 본 발명은 이에 한정하지 않는다. 이와 같이 분할의 갯수, 또는 크기는 자유도를 갖는다.
3개 이상의 영역으로 분할한 때, 항상 1개만의 테이블을 보지할 필요는 없다. 예컨대 본 플래시 메모리카드가 DOS의 디바이스로서 화상파일 등을 격납하는 경우를 고려해 본다. 통상적으로 디바이스의 선두에는 파일의 관리영역, 즉 마스터 부트섹터, 파티션(partition) 부트섹터, 파일할당 테이블(file allocation table; FAT), 디렉토리 영역이 존재한다. 이들의 파일관리영역은 파일의 갱신이 행해지기도 하고, 억세스될 때 빈번히 억세스되는 영역이다. 이 경우 이 파일관리영역에 상당하는 영역을 1개의 영역, 이외의 파일데이터 격납영역을 2분할한다. 파일관리영역에 상당하는 영역의 논리번지/물리번지 변환테이블은 항상 보지하도록 하여도 좋고, 이 경우, 논리 어드레스의 후반수분에 파일을 기입하는 동작을 행할 때, 파일관리영역과 논리 어드레스 후반의 테이블을 서로 빈번히 만들어 고칠 필요가 없게 되기 때문에 성능의 열화가 방지된다. 여기에서 파일의 관리영역으로 기술했지만, 파일관리영역 이상의 영역에 대해 테이블을 항상 보지하면 마찬가지의 효과가 얻어진다.
이상에서 서술한 바와 같이 본 발명예에 의하면, 논리블록과 물리블록의 대응관계의 모두를 RAM상에 항상 보지하는 것이 아니라, 호스트로부터의 억세스에 따라서 필요한 영역만의 대응관계를 시스템내의 RAM상으로 순차적으로 작성하기 때문에, 전영역의 대응관계를 항상 RAM상에 보지하는 경우에 비해 시스템으로서 최소한 필요한 RAM영역을 저감할 수 있고, 이것까지 불가능했던 범용 CPU의 내장 RAM만으로 메모리를 제어하는 것이 가능하게 되어 외부 RAM을 갖고 있던 종래의 케이스에 대해 큰 비용삭감이 가능하게 된다.
다음에, 본 발명의 제6실시예에 대해 상세히 설명한다.
본 실시예는 논리번지/물리번지 변환테이블에 필요한 RAM영역의 용량의 삭감을 행한 플러시 메모리카드에 대해서이다.
본 실시예에서는 플러시 메모리의 물리블록 어드레스를 복수의 논리적인 영역[이하, 존(zone)이라 부름]으로 분할한다. 이때 각 존에 할당되는 물리블록수, 즉 존마다 용량은 균일하거나 불균일하더라도 상관없다. 또 존의 수는 1개이거나 복수개이더라도 상관없다. 또 우수개이거나 기수개이더라도 상관없다.
도 44는 16M비트 NAND형 플래시 메모리를 2개의 균등한 용량의 존으로 분할한 경우의 물리블록의 구조와 논리 어드레스와 물리 어드레스의 관계를 나타낸 도면이다.
호스트가 그 플래시 메모리를 제어하는 경우에, 필요하게 되는 논리블록수는 500개로 정의되고, 논리블록 어드레스0~499의 값을 취한다. 물리블록의 용장부에는 자체가 어느 논리블록에 대응하는 데이터를 보지하고 있는가를 나타내는 논리블록 어드레스정보가 격납되지만, 본 실시예에서는 논리블록 어드레스는 존마다 0에서부터 연속으로 부여된다. 따라서, 존1에는 논리블록 어드레스0~249가 할당되고, 각각의 논리블록은 물리블록 어드레스0~255의 256개의 물리블록의 어느 것에 대응한다. 또 물리블록의 용장부에 격납되는 논리블록 어드레스는 0~249중 어느 것이 격납된다. 또, 존2에는 논리블록 어드레스250~499가 할당되고, 각각의 논리블록은 물리블록 어드레스256~511의 256개의 물리블록의 어느 것에 대응한다. 또 물리블록의 용장부에 격납되는 논리블록 어드레스는 0~249중 어느 것이 격납된다.
데이터갱신시의 추가기입방식은 갱신대상으로 되는 논리블록 어드레스를 포함하는 존내에서 행해지고, 어느 논리블록에 대응하는 데이터가 존재하는 물리블록은 고정이 아니라, 항상 각 존내에서 이동하고 있다.
본 실시예에서는 통상은 전원투입시에, 존내의 전물리블록의 용장부에 격납된 논리블록 어드레스정보를 서치하고, 시스템 RAM상에 논리블록과 물리블록의 변환테이블을 작성하지만, RAM상에 작성하는 존은 어느 존에 대해 행하여도 상관없다. 통상, 그 플래시 메모리가 DOS관리하에서 사용되는 경우, 관리정보인 FAT나, 디렉토리영역 등이 최초의 존에 두어지기 때문에, 선두의 존에 대해 테이블을 작성하면 효율이 좋다. 또 RAM상에 작성하는 테이블은 1존에 제한되지 않고, RAM용량이 허용되는 것이라면, 복수의 존분을 작성하여도 상관없다.
호스트로부터 억세스요구에 대한 변환테이블의 작성과정에 대해 이하에 설명한다. 물리블록 어드레스0~255를 포괄하는 영역을 설정하고, 존1이라 부른다. 또 물리블록 어드레스256~511를 포괄하는 영역을 설정하고, 존2라 부르는 것으로 한다. 호스트는 현재 RAM상에 작성되어 있는 변환테이블이 어느 존의 것인가를 기억하고 있다.
RAM상에 존1의 변환테이블이 작성되어 있고, 논리블록 어드레스128에 대한 억세스요구가 온 경우의 수순을 이하에 설명한다.
(1) 논리블록 어드레스128-250×(n-1)250으로 되는 n을 구하면 n=1인 것으로부터, 존1의 변환테이블이 필요하다는 것이 이해된다.
(2) RAM상에 있는 변환테이블이 존1이기 때문에, 테이블의 작성은 행해지지 않는다.
(3) 변환테이블상의 어드레스는 0~249의 값을 취하기 때문에, 호스트가 요구한 논리블록 어드레스128로부터 변환테이블상의 참조해야할 어드레스를 구한다. 128-250×(1-1)=128로부터, 변환테이블상의 어드레스128에 대응하는 물리블록 어드레스에 대해 억세스하면 좋다.
(4) 개서가 발생한 경우는 변화테이블을 갱신하고, 다음의 억세스에 준비한다.
다음에, RAM상에 존1의 변환테이블이 작성되어 있고, 논리블록 어드레스324에 대한 억세스요구가 온 경우의 수순을 이하에 설명한다.
(1) 논리블록 어드레스 324-250×(n-1)250으로 되는 n을 구하면 n2인 것으로부터, 존2의 변환테이블이 필요하다는 것이 이해된다.
(2) RAM상에 있는 변환테이블이 존1이기 때문에, 존2에 포괄된 물리블록 어드레스256~511의 용장부의 논리블록 어드레스정보를 서치하고, RAM상에 존2의 변환테이블의 작성을 행한다.
(3) 변환테이블상의 어드레스는 0~249의 값을 취하기 때문에, 호스트가 요구한 논리블록 어드레스324로부터 변환테이블상의 참조해야할 어드레스를 구한다. 324-250×(2-1)=74로부터, 변환테이블상의 어드레스74에 대응하는 물리블록 어드레스에 대해 억세스하면 좋다.
(4) 개서가 발생한 경우는 변환테이블을 갱신하고, 다음의 억세스에 준비한다.
이상과 같이, 억세스하는 논리블록에 따라서, 변환테이블을 작성하는 것으로, 종래보다 RAM영역을 용이하게 작게하는 것이 가능하다. 시스템 RAM상에 존2의 테이블이 작성되어 있는 경우도, 마찬가지의 과정으로 용이하게 목적의 어드레스로 억세스할 수 있다.
논리번지/물리번지 변환테이블을 작성할 때에, RAM상에 논리블록과 물리블록의 변환테이블을 작성하지만, 이때 작성하는 존NO.가 알려져 있기 때문에, 변환테이블상의 물리블록 어드레스는 0~255의 값을 취하면 좋다. 실제로 물리블록에 억세스할 때는, OFFSET으로서 변환테이블상의 물리어드레스에 256×존No.를 더하는 것으로 용이하게 플래시 메모리로 입력해야할 새로운 물리블록 어드레스를 얻을 수 있다.
16M비트 NAND형 플래시 메모리를 이용한 경우, 종래의 제어방법에서는 물리블록 어드레스를 표현하기 위해 9비트가 필요하고, 소프트의 편리성에서는 2바이트를 쓰고 있었다. 본 실시예에서는 도 45에 나타낸 바와 같이, 물리블록 어드레스를 나타내는데에는 8비트이면 좋고, 1바이트로 족하다. 따라서, 종래의 1k바이트가 필요했던 RAM용량은 반으로 절약할 수 있다. 논리블록 어드레스가 증가하면, 당연히 논리번지/물리번지 변환테이블의 용량은 그와 함께 증가하기 때문에, 본 실시예의 효과는 플래시 메모리의 용량이 커지는 만큼 크게 공헌한다.
또, 본 실시예에 의하면, 도 11에 나타낸 물리블록의 용장부의 Block Address Area에 격납가능한 블록 어드레스로 대용량의 플래시 메모리 시스템을 제어 가능하게 한다. 즉, 1개의 존을 상기 용장부의 Block Address Area로 격납가능한 블록 어드레스치의 물리블록으로 구성되도록 분할하면, 대용량의 논리어드레스에 대응가능하게 된다.
도 46은, 16M비트 NAND형 플래시 메모리를 4개의 규등한 용량의 존으로 분할한 경우의 물리블록의 구조를 나타낸 도면이다.
호스트가 그 플래시 메모리를 제어하는 경우에, 필료하게 되는 논리블록수는 500개로 정의되고, 논리블록 어드레스0~499의 값으로 된다. 물리블록의 용장부에는 자체가 어느 논리블록에 대응하는 데이터를 보지하고 있는가를 나타내는 논리블록 어드레스정보가 격납되지만, 본 실시예에서는 논리블록 어드레스는, 존마다 0에서부터 연속하여 부여된다. 이들의 논리블록 어드레스에 대응하는 물리블록 어드레스는 하기와 같이 된다. 존1에는 논리블록 어드레스0~124가 할당되고, 각각의 논리블록은 물리블록 어드레스0~127의 128개의 물리블록중 어느 것에 대응한다. 존2에는 논리블록 어드레스125~249가 할당되고, 각각의 논리블록은 물리블록 어드레스128~255의 128개의 물리블록중 어느 것에 대응한다. 존3에는 논리블록 어드레스126~374가 할당되고, 각각의 논리블록은 물리블록 어드레스256~383의 128개의 물리블록중 어느 것에 대응한다. 존4에는 논리블록 어드레스384~499가 할당되고, 각각의 논리블록은 물리블록 어드레스384~511의 128개의 물리블록중 어느 것에 대응한다.
데이터갱신시의 추가기입방식은 기입요구의 발생한 논리블록이 존재하는 존내만에서 행해지고, 어느 논리블록 어드레스에 대응하는 데이터가 격납된 물리블록 어드레스는 고정이 아니라, 항상 존내에서 이동하고 있다. 각각의 물리블록의 용장부에는 자체가 어느 논리블록 어드레스의 데이터를 보지하고 있는가를 나타내는 논리블록 어드레스정보를 격납하고 있다.
상술한 바와 같이, 각 존에는 125개의 논리블록이 할당되고, 또 128개의 물리블록이 할당된다. 이상과 같이 물리블록을 4개의 존으로 분할한 경우에도, 2개의 존으로 분할한 때와 마찬가지의 효과를 가진다.
다음에, 본 실시예의 리던던시(redundancy) 동작에 대해, 상기 물리블록 4개의 존으로 분할한 경우를 예로 설명한다.
본 실시예의 설명에 앞서, 존분할을 행하지 않는 종래의 플래시 메모리의 리던던시 동작에 대해, 16M비트 NAND형 플래시 메모리를 예로 설명한다. 도 2에 나타낸 바와 같이, 16M비트의 NAND형 플래시 메모리는512개의 물리블록을 가지지만, 도 3에 나타낸 바와 같이, 호스트로부터 본 논리블록은 500개로 규정된다. 또 PC카드 ATA 인터페이스를 용이하게 구축하기 위해 정보를 격납하기 위한 1블록, 추가기입방식을 채용하고 있기 위한 1블록이 필요하게 된다. 따라서 본 플래시 메모리를 제어하는 경우 502개의 블록이 필요하게 된다. 따라서 16M비트의 NAND형 플래시 메모리에서는 10개까지의 불량블록의 존재는 허용된다.
그러나, 플래시 메모리에는 개서횟수의 상한이 존재하고, 사용중에 불량블록이 발생하는 수가 있고, 충분한 기억영역을 확보하기 위해 불량블록이 발생한 경우의 치환장소으로서 기입, 소거가능한 유효블록을 가져다 둘필요가 있다. 또, 10개 이상의 불량블럭을 갖는 플래시 메모리에 대해서는 출하시의 용량이 충분하지 않은 점때문에 출하할 수 없고, 제품수율을 내린다는 문제도 발생한다.
이 때문에, 유효블록수를 많이 확보하고, 사용중의 불량블록의 발생에 준비함과 더불어, 출하시의 제품수율을 향상시키기 위해, 16M비트 NAND형 플래시 메모리로는 512개의 본체블록의 밖에 복수의 용장블록이 설치되어 있다. 이 용장블록은 출하전에 용장회로에 의해 512개의 본체블록중에 발생하고 있는 불량블록과, 하드적으로 치환된다. 용장회로를 사용하면 용장블록은 불량블록의 어드레스로 할당된다. 하드적인 치환후에는 불량블록이 존재한 어드레스를 선택하면, 치환된 용장블록이 선택되어진다. 여기에서, 용장블록은 무한히 있을리가 없기 때문에, 출하시에 치환되지 않았는 불량블록은, 선천성 블량블록으로서 취급된다. 이 선천성 블량블록과 후천성 불량블록은 상기 유효블록에 의해 구제된다.
통상, 본체블록과 용장블록과의 치환을 행하는 경우, 용장회로를 사용하고, 하드적으로 치환이 행해지지만, 도 47에 나타낸 바와 같이, 치환작업의 편리성때문에, 블록 어드레스가 작은 불량블록에서부터 차레를 따라 연속적으로, 혹은 블록 어드레스가 큰 불량블록에서부터 차례를 따라 연속적으로 치환이 행해진다. 따라서, 블록의 치환후는, 블록 어드레스의 작은 쪽으로부터, 혹은 블록 어드레스의 큰 쪽으로부터 연속적으로 기입, 소거 가능한 블록이 존재하고 있다.
이와 같이, 종래의 플래시 메모리의 제어방법에서는, 상술한 바와 같이 512개의 물리블록에 대해 논리블록이 500개, PC카드 ATA 인터페이스를 용이하게 구축하기 위해 정보를 격납하기 위해 1블록, 추가 기입방식을 채용하고 있기 위해 빈영역으로서 1블록이 필요했기 때문에, 도합 502개의 개서가능한 블록이 있으면 제어가능했다. 따라서, 종래의 제어방법에서는 512개의 물리블록에 대해 10개의 블량블록이 허용되고 있었다.
다음에, 본 실시예의 리던던시 동작에 대해 설명한다. 존1에 대해 고려하면, PC카드 ATA 인터페이스를 용이하게 구축하기 위해 정보를 격납하기 위해 1블록, 추가 기입방식을 채용하기 위해 빈영역으로서 1블록이 필요하게 된다. 따라서, 125개의 논리블록에 대해, 127개의 개서 가능한 물리블록이 필요하게 되고, 존재에서 허용되는 개서 불가능한 불량블록은 1개까지로 된다. 존2~4에 대해서는 추가 기입용의 빈블록으로서 1블록이 여분으로 필요하다는 것으로부터 126개의 개서 가능한 물리블록이 필요하게 되고, 존내에서 허용된다. 개서 불가능한 불량블록고은 2개까지로 된다. 이하, 설명을 용이하게 하기 위해, 1~4존에 대해, 허용되는 불량블록수는 각각 1개로 한다. 따라서, 종래 제어방법에서 허용된 불량블록수의 스펙(spec)에 대해 대단히 엄해진다.
도 46에 나타낸 16M비트 NAND형 플래시 메모리에 있어서, 예컨대 블록 어드레스2, 5, 129, 131, 132, 385, 389의 7블록이 불량블록이고, 이 플래시 메모리는 4개의 용장블록을 갖고 있게 한다. 도 46에 나타낸 바와 같이, 용장회로를 사용하여 종래와 같이 블록 어드레스가 작은 불량블록에서부터의 순서로 용장블록과 치환된 경우, 치환후의 불량블록은 물리블록 어드레스132, 385, 389의 3개의 블록으로 되고, 이들은 선천성블록으로 하고, 그 블록의 용장부에 선천성 불량블록의 마크가 붙여진다. 여기에서, 종래의 제어방법에서는 선천성 불량블록이 10개까지 허용되었기 때문에, 그 플래시 메모리를 제어하는데에 특별한 문제가 없다. 그러나 존으로 분할하여 제어하는 것을 제공한 경우, 존4에는 물리블록 어드레스385, 389의 2개의 불량블록이 존재하기 때문에 제어를 행하지 않고, 이 제품은 출하될 수 없게 된다.
이와 같이, 본 실시예의 플래시 메모리에 있어서, 불량블록이 있었던 경우, 본체의 불량블록과 용장블록과의 치환을 종래의 플래시 메모리와 마찬가지로, 단순히 치환작업의 편리성 때문에, 블록 어드레스가 작은 불량블록에서부터의 순서로 연속적으로, 혹은 블록 어드레스가 큰 불량블록에서부터의 순서로 연속적으로 치환을 행하면, 필요한 좋은 블록을 확보할 수 없고, 사용할 수 없는 존이 발생할 가능성이 높아진다.
이 때문에, 본 실시예에서는, 플래시 메모리가 존으로 분할되어 제어되는 경우, 모든 존이 유효블록수를 만족하도록, 각 존에 존재하는 불량블록과 용장블록과의 치환을 행한다.
도 48은 존마다 존재하는 불량블록이, 각존에서 허용되는 불량블록수를 초과하지 않도록, 용장블록과의 치환을 행한 경우의 물리블록의 상태를 나타낸 도면이다. 도 48의 플래시 메모리도 도 46에 나타낸 것과 마찬가지로, 블록 어드레스2, 5, 129, 131, 132, 385, 389의 7블록의 불량블록과 4개의 용장블록을 가지고 있다. 종래의 치환방법에서는 출하할 수 없었던 것이지만, 양품으로서 출하할 수 있게 된다. 치환수순의 일례를 이하에 설명한다.
(1) 존1~존4까지를 서치하고, 이하의 변수의 값을 구한다.
*불량물리블록 어드레스의의 추출을 행한다.
Z(n)BA(m) (n=1~4, m=1~각각의 존내의 불량블록수)
*존마다 불량블록수를 구한다.
Z(n)BN(n=1~4)
(2) Z(n)BN의 n=1~4중 1개라도 용장블록을 모두 사용하여도 유효블록수를 만족시키지 않는 것이 있으면, 치환을 행하지 않고 작업을 종료한다.
(3) Z(n)BA의 n=1~4중, 최고치의 큰 n을 추출한다.
(4) (3)에서 추출된 n에 대해
Z(n)BA(m) (m=1~존내의 불량블록수)의 내, 블록 어드레스정보가 격납되어 있는 가장 작던지 큰 m에 대해 Z(n)BA(m)에 격납된 물리블록 어드레스에 해당하는 블록을 용장블록과 치환한다.
(5) Z(n)BN=Z(n)BN-1
(6) (3)에서 선택된 m에 대해
Z(n)BA(m)의 블록 어드레스정보를 삭제한다.
(7) (3)~(6)을 반복한다. 용장블록을 사용하려면, (9)의 처리로 옮긴다.
(8) Z(n)BN(n=1~4)가 같으려면 가장 작던지 가장 큰 n의 존에 대해 (3)~(7)을 반복한다.
(9) Z(n)BN(n=1~4)를 체크하여, 스펙을 초과하는 n이 존재하면 불량품으로 한다.
(10) 종료
당연히, 본체블록과 용장블록의 치환수순은 여러가지로 고려된다. 본 실시예에서는 4개의 존으로 분할된 경우를 예로 설명했지만, 좆이, 2개 혹은 기수로 분할되는 경우도 고려된다. 또 분할된 존의 용량(블록수)가 다른 경우도 고려된다. 어느 경우에 있어서도, 본 실시예는 본체블록과 용장블록을 치환하는 경우, 치환작업후의 각 존에 존재하는 불량블록의 갯수가 각각의 존에서 허용되는 불량블록수를 초과하지 않도록 각각의 존에 존재하는 블량블록수를 감시하면서 용장블록과의 치환을 행하는 것인 바, 본 실시예의 취지를 이탈하지 않는 범위에서 치환의 수순은 달라도 상관없다.
이상으로 서술된 바와 같이 실시에 의하면, 논리블록과 플래시 메모리의 물리블록이 1대1로 대응부착되어 있는 테이블을 사용하는 경우에 비해, 억세스 대상으로 되는 존단위로 테이블을 작성하기 때문에, 테이블에 필요로 하는 RAM영역을 저감할 수 있고, 이때까지 불가능했던 범용 CPU의 내장 RAM만으로 메모리를 제어하는 것이 가능하게 되고, 외부 RAM을 갖고 있던 종래의 케이스에 대해 크게 비용삭감이 가능하게 되고, 특히 물리블록수가 많은 불휘발성 반도체 메모리의 제어에 효과가 크다. 또, 물리블록의 용장부의 Block Address Area에서 결정된 비트수로 대용량의 논리어드레스에 대응할 수 있다.
또, 본 실시예에 의하면, 복수의 물리블록을 논리적인 복수의 존으로 할당하고, 존마다 논리블록과 물리블록의 변환테이블을 작성하고, 메모리 억세스를 행하는 제어방법을 행하는 시스템으로 사용되는 플래시 메모리에 있어서, 본체의 불량블록과 용장블록을 치환하는 경우, 종래 어드레스가 작은(큰) 쪽으로부터 연속적으로 치환하여 온 것에 대해, 본 발명에서는 치환후의 각 존에 존재하는 불량블록의 갯수가 각각의 존에서 허용되는 불량블록수를 초과하지 않도록, 각각의 존에 존재하는 불량블록수를 감시하면서 치환을 행하기 때문에, 사용불가능한 존을 가지기 때문에 출하할 수 없게 되는 제품이 줄고, 제품수율이 향상된다.
다음에, 본 발명의 제7실시예에 대해 상세히 설명한다.
본 실시예는 2치/다치 등의 어느 타입에도 지원가능한 플래시 메모리 카드에 대해서이다.
도 49는 본 실시예를 PC카드 아답터에 적응시킨 도면이다. 플래시 메모리카드(101A)는 도 17에 나타내어진 2치 대응의 것이고, 플래시 메모리카드(101B)는 도 18에 나타내어진 4치 대응의 것이다. PC카드 아답터(102)는 플래시 메모리카드(101A, 101B)의 데이터를 퍼스컴으로 전송하기 위한 것이다. PC카드 아답터(102)는 PC카드 슬롯용의 68핀의 커넥터 및 플래시 메모리카드용의 커넥터를 구비하고 있다. 내부에는 플래시 메모리카드의 제어 및 PC카드 슬롯과의 전기적인 인터페이스를 취하기 위한 콘트롤러(103) 및 콘트롤러내부의 CPU용의 발진자(104), 버퍼용의 RAM(105) 등이 있다. 콘트롤러(103)중에는 본 발명에 직접적으로 관계되는 2종류의 에러정정용의 회로, ECC회로1 및 ECC회로2가 있다.
도 50에 전원투입시의 제어예를 나타낸다.
(스텝S1) 전원전압검지
본 메모리카드에는 5V전원전압과, 3.3V전원전압의 제품이 있지만, 3.3V전원전압동작의 메모리카드에 5V의 전원이 인가되면, 전압파괴 등의 문제가 발생할 가능성이 있다. 이것을 회피하기 위해, 시스템은 전원전압을 검지하고 있다.
(스텝S2, 3) ID체크
플래시 메모리에는 기억용량 또는 인터페이스사양이 다른 복수종류의 것이 있다. 시스템에 메모리카드가 삽입된 시에는, 디바이스의 메이커코드 및 디바이스코드 등을 판별하여 상정외의 코드의 경우는 새로운 억세스는 하지 않도록 한다. 또 메이커코드, 디바이스코드 등의 독출에는 정규의 전원전압을 투입한다.
(스텝S4~8) ECC의 체크
여기에서는 ECC의 방식에 대해서 체크를 행한다.
이하에, ECC방식을 인식시키는 방법의 일례를 나타낸다. 제1방법은 상기 스텝S2, 3과 마찬가지로 디바이스코드에 의해 판별하는 방법이 있다. 예컨대, 같은 용량의 플래시 메모리이더라도 메모리구성에 의해 디바이스코드를 바꾸면 좋다.
도 51은 본 실시예의 16M비트 플래시 메모리의 데이터부와 용장부의 구성을 나타낸 도면이다. 도 4에 나타낸 종래의 것과 다른 점은, 용장부의 User Data Area가 ECC Flag Area와 ECC Area-3으로 할당되어 있는 점이다. 도 51에 나타낸 바와 같이 ECC의 부호를 격납하는 영역으로서 ECC Area-1에서부터 3까지의 3개의 영역을 정의하고 있다. 상기 3개의 영역의 사용방법을 도 52를 이용하여 설명한다. 여기에서는 ECC Flag Area바이트중에 ECC의 방식에 관한 정보를 기억시켜 둔다. 예컨대, ECC방식1의 경우 Flag 데이터로서는 AAh, ECC방식2의 경우는 55h로 정의하여 둔다.
ECC방식1에 기초하여, 플래시 메모리카드의 경우, ECC Area-1에는 우수페이지 데이터(256바이트)의 3바이트 ECC코드가, ECC Area-2는 기수페이지 데이터(256바이트)의 3바이트 ECC코드 들어오고, ECC Area-3은 공백이다. ECC Area-1 및 2는 각각 256바이트의 데이터의 내, 2비트의 에러를 정정할 수 있다.
ECC방식2에 기초하여, 플래시 메모리카드의 경우, ECC Area-1, ECC Area-2, ECC Area-3으로 512바이트에 대한 ECC부호가 분산하여 기억된다. 이 경우 512바이트의 데이터의 내, 2비트의 에러를 정정할 수 있다.
도 49의 PC카드 아답터(102)내의 콘트롤러(103)는 플래시 메모리카드가 아답터로 삽입되는 ECC Flag Area를 독출하고, ECC방식을 판별한다.
도 49중에서는 ECC방식1 및 ECC방식2 각각에 대응한 부호발생 및 에러검출회로가 선택된다. 콘트롤러중의 CPU는 호스트와 버퍼용 RAM과 플래시 메모리간의 데이터의 흐름을 제어한다. 또 도 49중의 ECC회로는 반드시 하드웨어일 필요성은 없고, ECC부호의 생성 등 전체를 소프트웨어로 실행하는 것도 물론 가능하다.
또 본 발명은 상기 실시예에 한정되지 않는다. 발명의 주지를 일탈하지 않는 범위에서 다양한 변경이 가능하다.
상기 실시예에서는 2종류의 ECC방식의 존재를 가정했지만, 방식은 2종류로는 한정되지 않는다. 3종류이상의 ECC방식을 설정할 수 있다.
또, ECC방식의 선택에는 ECC를 사용하지 않는다는 선택도 포함된다. 신뢰성이 매우 높은 플래시 메모리카드나 음성분야 등의 데이터로 특히 높은 신뢰성이 필요하지 않는 분야 등에서는 ECC가 필수는 아니다. 이 경우, 상기 ECC Flag Area의 내용이 FFh이라면 ECC를 사용하고 있지 않다고 정의하여도 좋다.
또, 상기 실시예에서는 플래시 메모리마다 ECC의 방식을 정의했지만, 본 발명은 이에 한정하지 않는다. 예컨대, 섹터단위 혹은 블록단위 등 임의의 단위로 ECC의 방식을 절환해도 좋다. 이 경우, 단순히 전원투입시에 ECC방식을 판별하는 것이 아니라 전술의 소정단위로 억세스할 때마다 ECC의 방식을 절환하여도 좋다. 또 예컨대, ECC의 방식1로 독출된 데이터를 방식2로 변환하여 재격납하는 동작도 상정가능하다.
또 상기 실시예에서는 PC카드 아답터를 예로 설명했지만, 본 실시예는 PC카드 아답터에 한정하지 않는다. 예컨대, 디지탈 스틸 카메로나 PDA, 워드프로세서, 응성녹음기 등 각종기기에 대해서도 마찬가지로 논의할 수 있다. 이와 같이 본 실시예를 사용하면, 매우 넓은 사용범위의 플래시 메모리카드를 1개의 시스템에서 사용가능하게 된다.
이상으로 서술한 바와 같이, 본 실시예에 의하면, 에러정정 알고리즘이 다른 복수의 플래시 메모리카드를 1개의 시스템이 취급가능하게 되기 때문에, 비약적으로 범용성이 향상된다.
본 발명에 의하면, 전자기기의 커넥터에 대해 기억매체를 삽입/빼냄할 때에, 양자의 소위 각각의 핀의 접촉, 분리에 일정의 순서를 가지도록 했기 때문에, 동작의 안정성의 향상과 데이터의 보호가 확실하게 행해진다.
더욱이, 본 발명에 의하면 논리어드레스와 물리어드레스를 변환테이블로 변환할 때에, 1개의 논리블록에 대해 복수개의 물리블록을 할당하도록 했기 때문에, 테이블이 필요로 하는 RAM영역을 저감하는 것이 가능하게 된다.
더욱이 본 발명에 의하면, 클러스터의 구획이 소거단위로 되는 블록을 걸치지 않도록 했기 때문에, 데이터변환시에 발생하는 소거동수(同數) 및 기입동수를 줄일 수 있다.
더욱이, 본 발명에 의하면, 소거 코맨드 실행시에 물리블록의 관리영역을 개방함과 동시에, 그 데이터영역의 소거도 행하는 것으로 했기 때문에, 그후의 기입 코맨드 실행시의 처리속도를 향상하는 것이 가능하게 된다.
더욱이 본 발명에 의하면, 논리블록과 물리블록의 대응관계중의 필요한 영역의 대응관계만을 순차적으로 작성하도록 했기 때문에, 최저로 필요한 RAM영역을 저감할 수 있다.
더욱이, 본 발명에 의하면, 불량블록을 용장블록으로 치환할 때에, 논리적인 존의 각각에 있어서, 치환후에는 각 존에 존재하는 불량블록수가 소정치를 초과하지 않도록 했기 때문에, 제품의 수율을 향상시킬 수 있다.
더욱이 본 발명에 의하면, 사용하는 기억매체의 종류에 따라서 에러정정 알고리즘을 선택하도록 했기 때문에, 각 종의 기억매체를 사용할 수 있고, 범용성이 향상된다.

Claims (29)

  1. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제어단자 및 데이터 입출력단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 접속되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속되기에 앞서, 상기 기억매체의 GND단자와 제어단자가 상기 커넥터의 대응하는 단자에 접속되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  2. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제어단자 및 데이터 입출력단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 절단되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 기억매체의 GND단자와 제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  3. 제1항에 있어서, 상기 제어단자로 전달되는 신호가 코맨드 래치 인에이블신호인 것을 특징으로 하는 메모리 시스템의 제어방법.
  4. 제2항에 있어서, 상기 제어단자로 전달되는 신호가 코맨드 래치 인에이블신호인 것을 특징으로 하는 메모리 시스템의 제어방법.
  5. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제1제어단자, 제2제어단자 및 데이터 입출력단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 접속되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속되기에 앞서, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자에 접속되고,
    상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속되기에 앞서, 상기 제2제어단자가 상기 커넥터의 대응하는 단자에 접속되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  6. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제1제어단자, 제2제어단자 및 데이터 입출력단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 접속되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 제2제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되고,
    상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  7. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제1제어단자, 제2제어단자, 데이터 입출력단자 및 삽입·빼냄 검지용 단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 접속되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터에 삽입되는 경우, 상기 기억매체의 전원단자 및 상기 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속되기에 앞서, 상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자에 접속되고,
    상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자에 접속되기에 앞서, 상기 기억매체의 제2제어단자가 상기 커넥터의 대응하는 단자에 접속되며,
    상기 기억매체의 모든 단자가 삽입된 후, 상기 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자에 접속되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  8. 전자기기에 커넥터를 매개로 삽입되어 메모리기능을 부가하는 기억매체를 이용한 메모리 시스템에 있어서,
    상기 기억매체는 GND단자, 전원단자, 제1제어단자, 제2제어단자, 데이터 입출력단자 및 삽입·빼냄 검지용 단자를 갖추고 있고,
    상기 커넥터는 상기 기억매체의 각 단자와 순차적으로 절단되는 기능을 갖추고 있으며,
    상기 기억매체가 상기 커넥터로부터 빼내어지는 경우, 상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자로부터 절단되고,
    상기 기억매체의 전원단자와 제2제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 데이터 입출력단자가 상기 커넥터의 대응하는 단자로부터 절단되며,
    상기 기억매체의 GND단자와 제1제어단자가 상기 커넥터의 대응하는 단자로부터 절단되기에 앞서, 상기 기억매체의 전원단자가 상기 커넥터의 대응하는 단자로부터 절단되는 것을 특징으로 하는 메모리 시스템의 제어방법.
  9. 제8항에 있어서, 상기 기억매체의 삽입·빼냄 검지용 단자가 상기 커넥터의 대응하는 단자로부터 절단되고 나서 상기 기억매체의 전원단자가 상기 커넥터의 대응하는 단자로부터 절단되기까지의 사이에, 상기 기억매체는 기입 또는 소거동작의 리세트를 완료하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  10. 제5항에 있어서, 상기 제1제어단자로 전달되는 신호는 코맨드를 거두어들이기 위한 신호이고, 상기 제2제어단자로 전달되는 신호는 데이터 출력단자를 비활성화하는 신호인 것을 특징으로 하는 메모리 시스템의 제어방법.
  11. 제6항에 있어서, 상기 제1제어단자로 전달되는 신호는 코맨드를 거두어들이기 위한 신호이고, 상기 제2제어단자로 전달되는 신호는 데이터 출력단자를 비활성화하는 신호인 것을 특징으로 메모리 시스템의 제어방법.
  12. 제7항에 있어서, 상기 제1제어단자로 전달되는 신호는 코맨드를 거두어들이기 위한 신호이고, 상기 제2제어단자로 전달되는 신호는 데이터 출력단자를 비활성화하는 신호인 것을 특징으로 메모리 시스템의 제어방법.
  13. 제8항에 있어서, 상기 제1제어단자로 전달되는 신호는 코맨드를 거두어들이기 위한 신호이고, 상기 제2제어단자로 전달되는 신호는 데이터 출력단자를 비활성화하는 신호인 것을 특징으로 메모리 시스템의 제어방법.
  14. 시스템이 관리하는 논리블록과,
    복수의 메모리셀에 의해 구성되고, 상기 논리블록에 대응하는 데이터를 기억하는 물리블록과,
    상기 물리블록내에 포함되고, 상기 대응하는 논리블록의 어드레스를 기억하는 용장부와,
    상기 물리블록이 적어도 2 이상으로 구성되는 물리블록영역을 구비하고, 상기 논리블록과 상기 물리블록영역의 대응관계를 관리하기 위한 논리번지/물리번지 변환테이블을 작성하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  15. 제14항에 있어서, 메모리 억세스시에, 상기 논리번지/물리번지 변환테이블을 참조하여 상기 논리블록에 대응하는 물리블록영역의 어드레스를 독출하고, 상기 물리블록영역을 구성하는 적어도 2 이상의 물리블록의 상기 용장부에 기억되는 대응하는 논리블록의 어드레스를 독출함으로써, 상기 논리블록과 대응하는 물리블록을 선택하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  16. 제14항에 있어서, 전원 투입시에, 상기 논리번지/물리번지 변환테이블을 작성하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  17. 제1소정단위에 의해 관리되는 파일을 제2소정단위로 분할된 기억영역에 있어서 기억하는 반도체 기억장치에 있어서,
    상기 제1소정단위의 경계가 상기 제2소정단위의 경계상에 배치되도록 제어하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  18. 제17항에 있어서, 상기 제2소정단위가 소거단위인 것을 특징으로 하는 메모리 시스템의 제어방법.
  19. 시스템이 관리하는 파일과,
    상기 파일의 내용을 기억하는 데이터영역과,
    상기 파일과 데이터영역의 대응관계를 기억하는 관리영역을 갖추고,
    상기 파일의 소거를 행할 때에, 상기 관리영역에 대응하는 데이터영역이 빈영역이라는 취지를 마크하고, 대응하는 상기 데이터영역의 소거를 행하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  20. 시스템이 관리하는 파일과,
    상기 파일의 내용을 기억하는 데이터영역과,
    상기 파일과 데이터영역의 대응관계를 기억하는 관리영역을 갖추고,
    상기 파일의 소거를 행할 때에, 상기 관리영역에 대응하는 데이터영역이 빈영역이라는 취지를 마크해 두고, 메모리 시스템으로 입력되는 신호에 기초하여 상기 관리영역의 내용을 검지하여 대응하는 데이터영역의 소거를 행하는 것을 특징으로 하는 메모리 시스템의 제어방법.
  21. 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록에 이 시스템이 관리하는 상기 논리블록과의 대응붙인의 정보를 기억시키며,
    상기 논리블록과 상기 물리블록과의 대응관계를 관리하기 위한 테이블을 상기 시스템의 RAM상에 보지할 때에,
    상기 논리블록과 상기 물리블록의 대응관계중 호스트로부터의 억세스에 따라 필요한 영역만의 대응관계를 상기 시스템내의 상기 RAM상에 순차적으로 작성하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법
  22. 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록에 이 시스템이 관리하는 상기 논리블록과의 대응붙인의 정보를 기억시키며,
    상기 논리블록과 상기 물리블록과의 대응관계를 관리하기 위한 테이블을 상기 시스템의 RAM상에 보지할 때에,
    상기 논리블록과 상기 물리블록의 대응관계 모두를 상기 RAM상에 상시 보지하지 않고, 호스트로부터의 억세스에 따라 필요한 영역만의 대응관계를 이 시스템내의 상기 RAM상에 순차적으로 작성하는 것을 특징으로 하는 불휘발성 반도체 메모리의 제어방법.
  23. 제21항에 있어서, 상기 물리블록을 구성하는 불휘발성 반도체 메모리가 플래시 메모리인 것을 특징으로 하는 불휘발성 반도체 메모리의 제어방법.
  24. 제22항에 있어서, 상기 물리블록을 구성하는 불휘발성 반도체 메모리가 플래시 메모리인 것을 특징으로 하는 불휘발성 반도체 메모리의 제어방법.
  25. 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 불휘발성 반도체 메모리에 의한 셀어레이를 복수개의 물리블록으로 분할하고,
    상기 각 물리블록에 이 시스템이 관리하는 논리블록 어드레스와의 대응붙인 정보를 기억시키며, 상기 물리블록과 상기 논리어드레스의 대응관계를 관리하기 위한 어드레스 변환테이블을 이 시스템의 RAM상에 작성할 때에,
    적어도 1개 이상의 상기 물리블록을 각각 집합시킴으로써 복수의 영역을 구성하고,
    소정의 상기 논리블록의 어드레스범위의 데이터는 소정의 상기 영역내에 격납되도록 제어하고, 상기 불휘발성 반도체 메모리에 대한 억세스시에 해당하는 상기 논리블록 어드레스의 데이터가 격납되어 있는 상기 영역에 대응하는 상기 어드레스 변환테이블을 필요에 따라 작성하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법.
  26. 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 불휘발성 메모리에 의한 셀어레이를 복수개의 물리블록으로 분할하고, 상기 각 물리블록의 기억영역에 이 시스템이 관리하는 상기 논리블록과의 대응붙인 정보를 기억시키며, 상기 논리블록과 플래시 메모리의 물리블록과의 대응관계를 관리하기 위한 테이블을 이 시스템의 RAM상에 형성하는 제어방법으로, 1개 혹은 복수개의 상기 물리블록으로 구성되는 영역을 상기 플래시 메모리의 셀어레이상에 확보하고, 메모리 억세스시마다 억세스대상으로 되는 상기 영역에 대해, 그 영역을 구성하는 물리블록의 기억영역을 서치하여 논리블록과 물리블록의 대응관계를 관리하는 상기 테이블을 이 시스템의 RAM상에 작성한 후, 그 테이블을 사용함으로써 논리블록에 대응하는 물리블록을 선택가능하게 한 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법.
  27. 제25항에 있어서, 결함셀을 포함하는 불량물리블록을 선택적으로 용장물리블록으로 치환하는 기능을 갖추고, 상기 영역의 각각에 대해 불량물리블록수가 소정 갯수 이하로 되도록 상기 치환작업을 관리하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법.
  28. 제26항에 있어서, 결함셀을 포함하는 불량물리블록을 선택적으로 용장물리블록과 치환하는 기능을 갖추고, 상기 영역의 각각에 대해 불량물리블록수가 소정 갯수 이하로 되도록 상기 치환작업을 관리하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법.
  29. 본체에 대해 수종류의 메모리장치가 착탈에 의해 교환가능하게 된 불휘발성 반도체 메모리 시스템의 제어방법에 있어서, 상기 본체에 장착된 상기 메모리장치에 따라, 상기 본체가 갖는 수종류의 에러정정수단중 대응하는 것을 선택하여 에러정정을 행하게 하는 것을 특징으로 하는 불휘발성 반도체 메모리 시스템의 제어방법.
KR10-1998-0032271A 1997-08-08 1998-08-08 불휘발성반도체메모리의제어방법 KR100365385B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP9214561A JPH10124384A (ja) 1996-08-28 1997-08-08 不揮発性半導体メモリの制御方法
JP97-214561 1997-08-08
JP11909998A JP4079506B2 (ja) 1997-08-08 1998-04-28 不揮発性半導体メモリシステムの制御方法
JP98-119099 1998-04-28

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0034590A Division KR100438012B1 (ko) 1997-08-08 2002-06-20 불휘발성 반도체 메모리 시스템의 제어방법

Publications (2)

Publication Number Publication Date
KR19990023469A true KR19990023469A (ko) 1999-03-25
KR100365385B1 KR100365385B1 (ko) 2003-04-08

Family

ID=26456898

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-1998-0032271A KR100365385B1 (ko) 1997-08-08 1998-08-08 불휘발성반도체메모리의제어방법
KR10-2002-0034590A KR100438012B1 (ko) 1997-08-08 2002-06-20 불휘발성 반도체 메모리 시스템의 제어방법

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR10-2002-0034590A KR100438012B1 (ko) 1997-08-08 2002-06-20 불휘발성 반도체 메모리 시스템의 제어방법

Country Status (6)

Country Link
US (6) US6845438B1 (ko)
EP (2) EP1533703A3 (ko)
JP (1) JP4079506B2 (ko)
KR (2) KR100365385B1 (ko)
CA (1) CA2245271C (ko)
TW (1) TW392173B (ko)

Families Citing this family (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4079506B2 (ja) 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
JP3544476B2 (ja) * 1998-09-11 2004-07-21 富士通株式会社 メモリ管理テーブル作成方法
JP3389186B2 (ja) 1999-04-27 2003-03-24 松下電器産業株式会社 半導体メモリカード及び読み出し装置
JP3249959B2 (ja) * 1999-10-12 2002-01-28 株式会社ソニー・コンピュータエンタテインメント 可搬型記憶装置及びメモリカード
RU2257609C2 (ru) * 1999-10-21 2005-07-27 Мацусита Электрик Индастриал Ко., Лтд. Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти
US6377500B1 (en) 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US8341332B2 (en) * 2003-12-02 2012-12-25 Super Talent Electronics, Inc. Multi-level controller with smart storage transfer manager for interleaving multiple single-chip flash memory devices
US8266367B2 (en) * 2003-12-02 2012-09-11 Super Talent Electronics, Inc. Multi-level striping and truncation channel-equalization for flash-memory system
US8037234B2 (en) * 2003-12-02 2011-10-11 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
US6426893B1 (en) * 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
CN1314031C (zh) * 2000-02-21 2007-05-02 特科2000国际有限公司 便携式数据存储装置
JP3942807B2 (ja) * 2000-06-06 2007-07-11 株式会社ルネサステクノロジ ブロックアラインメント機能付き半導体記憶装置
US7295443B2 (en) 2000-07-06 2007-11-13 Onspec Electronic, Inc. Smartconnect universal flash media card adapters
US6438638B1 (en) 2000-07-06 2002-08-20 Onspec Electronic, Inc. Flashtoaster for reading several types of flash-memory cards with or without a PC
JP2002091806A (ja) * 2000-09-20 2002-03-29 Olympus Optical Co Ltd ファイルシステム
JP2002132456A (ja) * 2000-10-20 2002-05-10 Sony Corp 情報記録装置、情報再生装置、情報記録方法、情報再生方法、および情報記録媒体、並びにプログラム提供媒体
US6763424B2 (en) * 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
JP4812192B2 (ja) * 2001-07-27 2011-11-09 パナソニック株式会社 フラッシュメモリ装置、及び、それに記憶されたデータのマージ方法
TW539946B (en) * 2001-08-07 2003-07-01 Solid State System Company Ltd Window-based flash memory storage system, and the management method and the access method thereof
US6948026B2 (en) 2001-08-24 2005-09-20 Micron Technology, Inc. Erase block management
KR100437609B1 (ko) * 2001-09-20 2004-06-30 주식회사 하이닉스반도체 반도체 메모리 장치의 어드레스 변환 방법 및 그 장치
KR100449708B1 (ko) 2001-11-16 2004-09-22 삼성전자주식회사 플래시 메모리 관리방법
JP2004062328A (ja) * 2002-07-25 2004-02-26 Renesas Technology Corp Nand型フラッシュメモリを搭載したフラッシュストレージメディア
US7627229B2 (en) * 2002-07-26 2009-12-01 Fujifilm Corporation Moving image recording apparatus and method of recording moving image
EP1556868B1 (en) * 2002-10-28 2007-09-05 SanDisk Corporation Automated wear leveling in non-volatile storage systems
US7234036B1 (en) * 2002-10-28 2007-06-19 Sandisk Corporation Method and apparatus for resolving physical blocks associated with a common logical block
US6901498B2 (en) * 2002-12-09 2005-05-31 Sandisk Corporation Zone boundary adjustment for defects in non-volatile memories
JP2005108304A (ja) 2003-09-29 2005-04-21 Toshiba Corp 半導体記憶装置及びその制御方法
US20090193184A1 (en) * 2003-12-02 2009-07-30 Super Talent Electronics Inc. Hybrid 2-Level Mapping Tables for Hybrid Block- and Page-Mode Flash-Memory System
US20090204872A1 (en) * 2003-12-02 2009-08-13 Super Talent Electronics Inc. Command Queuing Smart Storage Transfer Manager for Striping Data to Raw-NAND Flash Modules
US8176238B2 (en) * 2003-12-02 2012-05-08 Super Talent Electronics, Inc. Command queuing smart storage transfer manager for striping data to raw-NAND flash modules
JP3892851B2 (ja) * 2004-02-04 2007-03-14 株式会社東芝 メモリカード及び半導体装置
JPWO2005083573A1 (ja) * 2004-02-27 2007-11-29 松下電器産業株式会社 半導体メモリ装置
KR101115843B1 (ko) * 2004-05-06 2012-03-09 파나소닉 주식회사 반도체 메모리장치
JP4710274B2 (ja) * 2004-08-02 2011-06-29 ソニー株式会社 メモリ装置、メモリ装置の制御方法およびデータ処理システム
US20110029723A1 (en) * 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
KR100876084B1 (ko) * 2007-02-13 2008-12-26 삼성전자주식회사 플래시 저장 장치로 삭제 정보를 전달할 수 있는 컴퓨팅시스템
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
JP4643315B2 (ja) 2005-03-11 2011-03-02 株式会社東芝 半導体集積回路装置
US7644092B2 (en) * 2005-05-03 2010-01-05 Kabushiki Kaisha Toshiba System for managing data on memory device using file system
TWI275101B (en) * 2005-05-24 2007-03-01 Prolific Technology Inc Flash memory storage system
US8429326B2 (en) * 2005-09-12 2013-04-23 Mediatek Inc. Method and system for NAND-flash identification without reading device ID table
US7702821B2 (en) 2005-09-15 2010-04-20 Eye-Fi, Inc. Content-aware digital media storage device and methods of using the same
US7681109B2 (en) * 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US7644251B2 (en) * 2005-12-19 2010-01-05 Sigmatel, Inc. Non-volatile solid-state memory controller
TW200734875A (en) * 2006-03-08 2007-09-16 Quanta Comp Inc System and method for detecting peripheral device
JP4840975B2 (ja) * 2006-03-31 2011-12-21 株式会社リコー フェードインメモリと情報記録方法および情報再生方法
JP2008009527A (ja) * 2006-06-27 2008-01-17 Toshiba Corp メモリシステム
JP4182993B2 (ja) * 2006-06-30 2008-11-19 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4956068B2 (ja) * 2006-06-30 2012-06-20 株式会社東芝 半導体記憶装置およびその制御方法
US20080148132A1 (en) * 2006-10-26 2008-06-19 Mavila Rajith K Error detection and correction scheme for multi-level cell NAND flash
WO2008063647A2 (en) * 2006-11-24 2008-05-29 Sandforce Inc. Delaying an operation that reduces a lifetime of memory
US7818701B1 (en) * 2006-12-22 2010-10-19 Cypress Semiconductor Corporation Memory controller with variable zone size
JP4978224B2 (ja) * 2007-02-08 2012-07-18 カシオ計算機株式会社 光電変換装置及びそれを備えた表示パネル
KR100817087B1 (ko) 2007-02-13 2008-03-27 삼성전자주식회사 플래시 메모리를 구비하는 스토리지 장치에서의 버퍼 캐시운용 방법
KR100882740B1 (ko) * 2007-02-22 2009-02-09 삼성전자주식회사 맵 히스토리 기반의 불휘발성 메모리의 매핑 방법 및 저장장치
TW200839620A (en) * 2007-03-16 2008-10-01 Realtek Semiconductor Corp Card reader controller and its method of detecting interferences
US7984173B2 (en) * 2007-05-30 2011-07-19 Red Hat, Inc. Channel bundling
JP4794530B2 (ja) * 2007-10-26 2011-10-19 ルネサスエレクトロニクス株式会社 半導体装置および携帯電話
KR101449524B1 (ko) 2008-03-12 2014-10-14 삼성전자주식회사 스토리지 장치 및 컴퓨팅 시스템
US7637061B2 (en) * 2008-03-13 2009-12-29 Plinths And Caissons, Llc Grave marker grid support system
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
US7996736B2 (en) * 2008-10-26 2011-08-09 Sandisk 3D Llc Bad page marking strategy for fast readout in memory
US7899967B2 (en) * 2008-11-24 2011-03-01 Mediatek Inc. Systems for accessing memory card and methods for accessing memory card by a control unit
US8386736B2 (en) * 2008-12-18 2013-02-26 Spansion Llc Rapid memory buffer write storage system and method
US8392687B2 (en) 2009-01-21 2013-03-05 Micron Technology, Inc. Solid state memory formatting
US20100286962A1 (en) * 2009-05-05 2010-11-11 Cheng Uei Precision Industry Co., Ltd. System and method of recording measurement data
JP5746230B2 (ja) * 2010-03-05 2015-07-08 アイファイ インコーポレイテッド エンドレスメモリ
JP5077385B2 (ja) 2010-04-15 2012-11-21 株式会社デンソー 車両用ナビゲーション装置
US8429391B2 (en) 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
KR101936311B1 (ko) * 2010-12-03 2019-01-09 삼성전자주식회사 데이터 처리 방법
JP5221699B2 (ja) 2011-03-23 2013-06-26 株式会社東芝 半導体記憶装置
JP5451682B2 (ja) 2011-05-20 2014-03-26 株式会社東海理化電機製作所 フラッシュメモリ装置
JP5382084B2 (ja) 2011-10-07 2014-01-08 株式会社デンソー 車両用装置
EP2798500A1 (en) * 2011-12-29 2014-11-05 Memory Technologies LLC Method for erasing data entity in memory module
US8924636B2 (en) 2012-02-23 2014-12-30 Kabushiki Kaisha Toshiba Management information generating method, logical block constructing method, and semiconductor memory device
JP2013200584A (ja) * 2012-03-23 2013-10-03 Sony Corp 電子機器
TWI486767B (zh) * 2012-06-22 2015-06-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US8914670B2 (en) 2012-11-07 2014-12-16 Apple Inc. Redundancy schemes for non-volatile memory using parity zones having new and old parity blocks
JP6300202B2 (ja) * 2014-03-03 2018-03-28 パナソニックIpマネジメント株式会社 メモリカード及びメモリカード制御装置
US9710199B2 (en) * 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
USD786878S1 (en) * 2015-12-04 2017-05-16 Capital One Services, Llc Payment card chip
CN109901956A (zh) * 2017-12-08 2019-06-18 英业达科技有限公司 内存整体测试的系统及其方法
US11593258B2 (en) 2019-11-26 2023-02-28 Micron Technology, Inc. Enhanced filesystem support for zone namespace memory
WO2021134414A1 (en) * 2019-12-31 2021-07-08 Micron Technology, Inc. Mobile storage random read performance estimation enhancements
CN112486854B (zh) * 2020-12-28 2022-08-23 潍柴动力股份有限公司 与非型闪存Nand Flash存储管理方法及装置
US11733927B2 (en) * 2021-11-30 2023-08-22 Microsoft Technology Licensing, Llc Hybrid solid-state drive

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3432795A (en) 1967-02-23 1969-03-11 Sylvania Electric Prod Electrical connector having facile engagement means
US3828327A (en) * 1973-04-30 1974-08-06 Ibm Simplified storage protection and address translation under system mode control in a data processing system
FR2553541B1 (fr) * 1983-10-17 1992-02-28 Inst Nat Rech Inf Automat Dispositif et procede pour le stockage rapide et stable d'informations
JPS60160491A (ja) * 1984-01-31 1985-08-22 Toshiba Corp Icカードとicカード発行装置
US4794524A (en) * 1984-07-03 1988-12-27 Zilog, Inc. Pipelined single chip microprocessor having on-chip cache and on-chip memory management unit
JPS61148551A (ja) * 1984-12-24 1986-07-07 Hitachi Ltd アドレス変換方式
JPH0690872B2 (ja) 1986-08-18 1994-11-14 東京電気株式会社 メモリ−カ−ド装置
JP2511950B2 (ja) 1987-03-27 1996-07-03 三菱電機株式会社 インタ−フエイス回路
US4980816A (en) * 1987-12-18 1990-12-25 Nec Corporation Translation look-aside buffer control system with multiple prioritized buffers
JPH01296482A (ja) 1988-05-24 1989-11-29 Mitsubishi Electric Corp メモリカード
JPH0769759B2 (ja) 1988-09-08 1995-07-31 三菱電機株式会社 メモリカード用接続機構
US5404476A (en) * 1989-02-10 1995-04-04 Nec Corporation Multiprocessing system having a single translation lookaside buffer with reduced processor overhead
CA2014799A1 (en) * 1989-05-08 1990-11-08 John W. Whisler System and method for reading and writing disks formatted for an operating system foreign to the host computer
US5210855A (en) * 1989-06-09 1993-05-11 International Business Machines Corporation System for computer peripheral bus for allowing hot extraction on insertion without disrupting adjacent devices
JPH0484216A (ja) 1990-07-26 1992-03-17 Toshiba Corp 半導体ディスク装置のデータ消去方法
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5317697A (en) 1991-07-31 1994-05-31 Synernetics Inc. Method and apparatus for live insertion and removal of electronic sub-assemblies
DE69223099T2 (de) * 1991-08-09 1998-06-10 Toshiba Kawasaki Kk Aufzeichnungsgerät für eine Speicherkarte
US5438573A (en) 1991-09-13 1995-08-01 Sundisk Corporation Flash EEPROM array data and header file structure
US5471604A (en) * 1992-10-30 1995-11-28 Intel Corporation Method for locating sector data in a memory disk by examining a plurality of headers near an initial pointer
US5430857A (en) * 1993-01-04 1995-07-04 Intel Corporation Method and apparatus for translating logical addresses into physical addresses using odd/even translation tables
JP2856621B2 (ja) * 1993-02-24 1999-02-10 インターナショナル・ビジネス・マシーンズ・コーポレイション 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
DE4339179A1 (de) 1993-04-06 1994-10-13 Hewlett Packard Co Verfahren und Vorrichtung zum Verhindern einer Signalverstümmelung auf einem gemeisamen Bus eines Computers
US5463772A (en) * 1993-04-23 1995-10-31 Hewlett-Packard Company Transparent peripheral file systems with on-board compression, decompression, and space management
US5790979A (en) * 1993-05-10 1998-08-04 Liedtke; Jochen Translation method in which page-table progression is dynamically determined by guard-bit sequences
JP3085824B2 (ja) * 1993-05-20 2000-09-11 富士写真フイルム株式会社 メモリ制御装置
US5329491A (en) * 1993-06-30 1994-07-12 Intel Corporation Nonvolatile memory card with automatic power supply configuration
US5479628A (en) * 1993-10-12 1995-12-26 Wang Laboratories, Inc. Virtual address translation hardware assist circuit and method
US5386402A (en) * 1993-11-29 1995-01-31 Kabushiki Kaisha Toshiba Access control apparatus and address translation method for disk storage device
US5555391A (en) * 1993-12-23 1996-09-10 Unisys Corporation System and method for storing partial blocks of file data in a file cache system by merging partial updated blocks with file block to be written
JP2556285B2 (ja) 1994-02-15 1996-11-20 ダイソー株式会社 塩素化ポリエチレン系架橋組成物の製法
JP2609431B2 (ja) 1994-09-22 1997-05-14 山一電機株式会社 メモリカード
US5636347A (en) 1994-09-27 1997-06-03 Intel Corporation Computer card insertion detection circuit
JPH08137634A (ja) * 1994-11-09 1996-05-31 Mitsubishi Electric Corp フラッシュディスクカード
JPH08211973A (ja) 1995-01-26 1996-08-20 Mitsubishi Electric Corp Pcカード
JP3706167B2 (ja) 1995-02-16 2005-10-12 株式会社ルネサステクノロジ 半導体ディスク装置
US5644731A (en) 1995-07-07 1997-07-01 Sun Microsystems, Inc. Method and apparatus for hot plugging/unplugging a sub-system to an electrically powered system
US6081878A (en) * 1997-03-31 2000-06-27 Lexar Media, Inc. Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US5717951A (en) * 1995-08-07 1998-02-10 Yabumoto; Kan W. Method for storing and retrieving information on a magnetic storage medium via data blocks of variable sizes
JP3604466B2 (ja) 1995-09-13 2004-12-22 株式会社ルネサステクノロジ フラッシュディスクカード
JPH0981459A (ja) * 1995-09-19 1997-03-28 Hitachi Ltd アドレス変換バッファ装置
JP3727982B2 (ja) 1995-09-28 2005-12-21 キヤノン株式会社 フラッシュrom管理方法及び装置
JPH09185551A (ja) 1996-01-08 1997-07-15 Mitsubishi Electric Corp 半導体記憶装置
JPH09198201A (ja) 1996-01-16 1997-07-31 Toshiba Corp 半導体ディスク装置およびその書換回数管理方法
JPH09231339A (ja) * 1996-02-27 1997-09-05 Mitsubishi Electric Corp メモリカード
JP3197815B2 (ja) 1996-04-15 2001-08-13 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 半導体メモリ装置及びその制御方法
JPH09319645A (ja) 1996-05-24 1997-12-12 Nec Corp 不揮発性半導体記憶装置
US5832525A (en) * 1996-06-24 1998-11-03 Sun Microsystems, Inc. Disk fragmentation reduction using file allocation tables
JP2843306B2 (ja) * 1996-08-02 1999-01-06 山一電機株式会社 Icメモリーカードにおける保護装置
JPH1049257A (ja) 1996-08-05 1998-02-20 Yokogawa Electric Corp 情報処理装置
US5937423A (en) * 1996-12-26 1999-08-10 Intel Corporation Register interface for flash EEPROM memory arrays
JP3588231B2 (ja) 1997-08-04 2004-11-10 東京エレクトロンデバイス株式会社 データ処理システム及びブロック消去型記憶媒体
JP4079506B2 (ja) 1997-08-08 2008-04-23 株式会社東芝 不揮発性半導体メモリシステムの制御方法
US6278678B1 (en) * 1999-02-12 2001-08-21 Sony Corporation Editing apparatus, editing method, and recording medium
JP3524428B2 (ja) * 1999-04-20 2004-05-10 東京エレクトロンデバイス株式会社 記憶装置、記憶システム、メモリ管理方法及び記録媒体
US6301646B1 (en) * 1999-07-30 2001-10-09 Curl Corporation Pointer verification system and method
US7318117B2 (en) * 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
RU2257609C2 (ru) * 1999-10-21 2005-07-27 Мацусита Электрик Индастриал Ко., Лтд. Устройство доступа к полупроводниковой карте памяти, компьютерно-считываемый носитель записи, способ инициализации и полупроводниковая карта памяти
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
US7003771B1 (en) * 2000-06-08 2006-02-21 International Business Machines Corporation Logically partitioned processing system having hypervisor for creating a new translation table in response to OS request to directly access the non-assignable resource
US6684289B1 (en) * 2000-11-22 2004-01-27 Sandisk Corporation Techniques for operating non-volatile memory systems with data sectors having different sizes than the sizes of the pages and/or blocks of the memory
JP4037605B2 (ja) * 2000-12-04 2008-01-23 株式会社東芝 不揮発性メモリユニットのコントローラ、同コントローラを有するメモリシステム及び不揮発性メモリユニットの制御方法
JP3579389B2 (ja) * 2001-11-30 2004-10-20 株式会社東芝 ディスクアレイ装置及び同装置におけるデータ復旧方法
JP4206688B2 (ja) * 2002-04-15 2009-01-14 ソニー株式会社 データ処理装置及びデータ処理方法
US7076634B2 (en) * 2003-04-24 2006-07-11 International Business Machines Corporation Address translation manager and method for a logically partitioned computer system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
CN101268449B (zh) * 2005-09-22 2012-04-04 松下电器产业株式会社 数据记录装置以及数据记录方法

Also Published As

Publication number Publication date
US6845438B1 (en) 2005-01-18
US20100023680A1 (en) 2010-01-28
US20080059695A1 (en) 2008-03-06
EP0896280A2 (en) 1999-02-10
KR100365385B1 (ko) 2003-04-08
US8756401B2 (en) 2014-06-17
EP1533703A2 (en) 2005-05-25
TW392173B (en) 2000-06-01
JP4079506B2 (ja) 2008-04-23
KR100438012B1 (ko) 2004-07-02
EP0896280A3 (en) 2004-05-12
US20100138606A1 (en) 2010-06-03
CA2245271A1 (en) 1999-02-08
EP1533703A3 (en) 2007-10-24
CA2245271C (en) 2002-01-01
US20050007865A1 (en) 2005-01-13
US7054991B2 (en) 2006-05-30
JPH11110283A (ja) 1999-04-23
US8230156B2 (en) 2012-07-24
US9009387B2 (en) 2015-04-14
KR20020075310A (ko) 2002-10-04
US20050005059A1 (en) 2005-01-06

Similar Documents

Publication Publication Date Title
KR100365385B1 (ko) 불휘발성반도체메모리의제어방법
US8312554B2 (en) Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus
US7404031B2 (en) Memory card, nonvolatile semiconductor memory, and method of controlling semiconductor memory
US9158476B2 (en) Method for switching operation mode, memory controller and memory storage apparatus
US20120110243A1 (en) Data writing method, memory controller, and memory storage apparatus
US9235501B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
US9383929B2 (en) Data storing method and memory controller and memory storage device using the same
CN102053796A (zh) 闪存储存系统、闪存控制器与数据处理方法
CN102890655A (zh) 存储器储存装置、其存储器控制器与有效数据识别方法
CN103678162B (zh) 系统数据储存方法、存储器控制器与存储器储存装置
JP2007293917A (ja) メモリシステムの制御方法
CN102446137A (zh) 数据写入方法、存储器控制器与存储器储存装置
CN102053920B (zh) 数据写入方法及闪存控制器与闪存存储系统
CN102543184A (zh) 存储器储存装置、其存储器控制器与数据写入方法
CN110162493B (zh) 存储器管理方法及使用所述方法的储存控制器
CN102591738A (zh) 数据管理方法、存储器控制器与嵌入式存储器储存装置
CN110442300B (zh) 整理指令记录方法、存储器控制电路单元与存储装置
CN112988069A (zh) 存储器管理方法、存储器存储装置及存储器控制器
CN102043724A (zh) 用于闪存的区块管理方法、控制器与存储系统
CN102467459A (zh) 数据写入方法、存储器控制器与存储器储存装置
CN106326131B (zh) 存储器管理方法、存储器控制电路单元及存储器存储装置
JP2006040484A (ja) フラッシュメモリモジュール

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
A107 Divisional application of patent
AMND Amendment
J201 Request for trial against refusal decision
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20121205

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20131204

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20141204

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20151118

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee