[go: up one dir, main page]

KR970008188B1 - 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 - Google Patents

플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 Download PDF

Info

Publication number
KR970008188B1
KR970008188B1 KR1019940007261A KR19940007261A KR970008188B1 KR 970008188 B1 KR970008188 B1 KR 970008188B1 KR 1019940007261 A KR1019940007261 A KR 1019940007261A KR 19940007261 A KR19940007261 A KR 19940007261A KR 970008188 B1 KR970008188 B1 KR 970008188B1
Authority
KR
South Korea
Prior art keywords
data
memory
address
block
information
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Lifetime
Application number
KR1019940007261A
Other languages
English (en)
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 JP12240193A external-priority patent/JPH06332806A/ja
Priority claimed from JP5174372A external-priority patent/JPH0728690A/ja
Priority claimed from JP17561993A external-priority patent/JPH0736759A/ja
Application filed by 가부시끼가이샤 히다찌세이사꾸쇼, 가나이 쯔또무, 히다찌게이요 엔지니어링 가부시끼가이샤, 히다찌초엘에스아이 엔지니어링 가부시끼가이샤, 시게나가 야스히꼬, 스즈끼 진이찌로 filed Critical 가부시끼가이샤 히다찌세이사꾸쇼
Application granted granted Critical
Publication of KR970008188B1 publication Critical patent/KR970008188B1/ko
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1433Saving, restoring, recovering or retrying at system level during software upgrading
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06COMPUTING OR CALCULATING; 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/068Hybrid storage device
    • 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/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/785Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes
    • G11C29/789Masking faults in memories by using spares or by reconfiguring using programmable devices with redundancy programming schemes using non-volatile cells or latches
    • 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/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/312In storage controller
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

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

Abstract

없음.

Description

플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
제1도는 본 발명에 관한 제1실시예의 반도체 파일시스템(카드)의 블럭도.
제2도는 본 발명의 제1의 실시예의 카드의 회로도.
제3도는 본 발명의 제1의 실시예의 카드의 회로도.
제4도는 본 발명의 제1의 실시예의 호스트와의 접속도.
제5도는 본 발명의 제1의 실시예의 카드컨트롤러의 블럭도.
제6도는 본 발명의 제1의 실시예의 데이타레지스터부의 블럭도.
제7도는 본 발명의 제1의 실시예의 로컬어드레스 생성부의 블럭도.
제8도는 본 발명의 제1의 실시예의 제어부의 블럭도.
제9도는 본 발명의 제1의 실시예의 섹터라이트시의 데이타흐름의 설명도.
제10도는 본 발명의 제1의 실시예의 섹터라이트시의 타이밍도.
제11도는 본 발명의 제1의 실시예의 PSRAM섹터리드시의 데이타흐름의 설명도.
제12도는 본 발명의 제1의 실시예의 FLASH섹터리드시의 데이타흐름의 설명도.
제13도는 본 발명의 제1의 실시예의 FLASH 및 PSRAM 섹터리드시의 타이밍도.
제14도는 본 발명의 제1의 실시예의 MASKROM섹터리드시의 데이타흐름의 설명도.
제15도는 본 발명의 제1의 실시예의 MASKROM섹터리드시의 타이밍도.
제16도는 본 발명의 제1의 실시예의 멀티전송에서의 물리섹터번호 전환동작의 설명도.
제17도는 본 발명의 제1의 실시예의 멀티전송의 타이밍도.
제18도는 본 발명의 제1의 실시예의 로컬어드레스 생성동작의 설명도.
제19도는 본 발명의 제1의 실시예의 로컬어드레스 생성동작의 설명도.
제20도는 본 발명의 제1의 실시예의 마이컴 어드레스맵의 설명도.
제21도는 본 발명의 제1의 실시예의 파일영역의 물리어드레스맵의 설명도.
제22도는 본 발명의 제1의 실시예의 파일영역 로컬어드레스 생성순서의 설명도.
제23도는 본 발명의 제1의 실시예의 PSRAM의 물리어드레스맵의 설명도.
제24도는 본 발명의 제1의 실시예의 PSRAM로컬어드레스 생성순서의 설명도.
제25도는 본 발명의 제1의 실시예의 데이타버스 전환부의 블럭도.
제26도는 본 발명의 제1의 실시예의 논리섹터테이블의 설명도.
제27도는 본 발명의 제1의 실시예의 물리섹터테이블의 설명도.
제28도는 본 발명의 제1의 실시예의 가비지컬렉션의 설명도.
제29도는 본 발명의 제1의 실시예의 소거관리테이블의 설명도.
제30도는 본 발명의 제1의 실시예의 블럭플래그테이블의 설명도.
제31도는 본 발명의 제1의 실시예의 섹터라이트전송후의 내부처리 흐름도.
제32도는 본 발명의 제1의 실시예의 블럭스테이터스테이블의 설명도.
제33도는 본 발명의 제1의 실시예의 전원차단시의 처리의 설명도.
제34도는 본 발명의 제1의 실시예의 전원투입시의 처리의 설명도.
제35도는 본 발명의 제1의 실시예의 전원차단시의 시퀀스흐름을 도시한 도면.
제36도는 본 발명의 제1의 실시예의 섹터전송전 처리의 시퀀스흐름을 도시한 도면.
제37도는 본 발명의 제1의 실시예의 FLASH섹터리드 전송중의 시퀀스흐름을 도시한 도면.
제38도는 본 발명의 제1의 실시예 MASKROM섹터리드 전송중의 시퀀스흐름을 도시한 도면.
제39도는 본 발명의 제1의 실시예의 PSRAM섹터라이트 전송중의 시퀀스흐름을 도시한 도면.
제40도는 본 발명의 제1의 실시예의 섹터전송종료처리의 시퀀스흐름을 도시한 도면.
제41도는 본 발명의 제1의 실시예의 섹터전송종료후의 내부처리의 시퀀스흐름을 도시한 도면.
제42도는 본 발명의 제1의 실시예의 가비지컬렉션의 시퀀스흐름을 도시한 도면.
제43도는 본 발명의 제1의 실시예의 PSRAM리프레시제어부의 블럭도.
제44도는 본 발명의 제1의 실시예의 인터럽트신호 생성동작의 설명도.
제45도는 본 발명의 제1의 실시예의 MCC핀의 설명도.
제46도는 본 발명의 제1의 실시예의 FLASH메모리의 소거시간 감시흐름도.
제47도는 본 발명의 제1의 실시예의 FLASH메모리의 라이트시간 감시흐름도.
제48도는 본 발명의 제1의 실시예의 액세스가 빠른 FLASH와 느린 FLASH의 혼재 사용예의 설명도.
제49도는 본 발명의 제2의 실시예의 캐시메모리의 데이타를 일정시간마다 라이트백하는 실시예의 구성도.
제50도는 본 발명의 제2의 실시예에 관한 플래시메모리의 블럭도.
제51도는 본 발명의 제2의 실시예에 있어서의 제어프로그램의 메인루틴의 흐름도.
제52도는 본 발명의 제2의 실시예에 있어서의 제어프로그램의 액세스루틴의 흐름도.
제53도는 본 발명의 제2의 실시예에 있어서의 기존파일의 갱신을 고속화하는 예의 흐름도.
제54도는 본 발명의 제2의 실시예에 있어서의 하드웨어 인터럽트대응의 메인루틴의 흐름도.
제55도는 본 발명의 제2의 실시예에 있어서의 전원차단 대응의 메인루틴의 흐름도.
제56도는 본 발명의 제2의 실시예에 있어서의 변환테이블의 세이브를 실행하는 예의 흐름도.
제57도는 본 발명의 제2의 실시예에 있어서의 라이트시간에 의한 열화진단을 실행하는 플레시메모리시스템의 블럭도.
제58도는 본 발명의 제2의 실시예에 있어서의 라이트시간에 의한 열화진단을 실행하는 예의 라이트액세스의 흐름도.
제59도는 본 발명의 제2의 실시예에 있어서의 미전송파일 갱신시의 처리를 도시한 흐름도.
제60도는 본 발명의 제2의 실시예에 있어서의 변환테이블의 설명도.
제61도는 본 발명의 제3의 실시예의 구성도.
제62도는 본 발명의 제3의 실시예에 있어서의 메모리블럭 관리테이블과 메모리맵의 대응예를 도시한 설명도.
제63도는 본 발명의 제3의 실시예에 있어서의 리드동작의 처리순서를 도시한 흐름도.
제64도는 본 발명의 제3의 실시예에 있어서의 라이트동작의 처리순서를 도시한 흐름도.
제65도는 본 발명의 제3의 실시예에 있어서의 라이트동작이 다른 처리순서를 도시한 흐름도.
제66도는 본 발명의 제3의 실시예에 있어서의 대체블럭의 등록처리순서를 도시한 흐름도.
제67도는 본 발명의 제3의 실시예에 있어서의 초기화작업의 처리순서를 도시한 흐름도.
제68도는 본 발명의 제3의 실시예의 제1의 변형예의 구성도.
제69도는 본 발명의 제3의 실시예의 제1의 변형예의 메모리블럭 관리테이블의 예를 도시한 설명도.
제70도는 본 발명의 제3의 실시예의 제1의 변형예의 라이트시의 처리순서를 도시한 흐름도.
제71도는 본 발명의 제3의 실시예의 제2의 변형예의 구성도.
제72도는 본 발명의 제3의 실시예의 제3의 변형예의 구성도.
제73도는 본 발명의 제3의 실시예의 호스트시스템의 구성도.
제74도는 제3의 실시예에 있어서의 에러메시지의 출력예를 도시한 설명도.
제75도는 본 발명의 제3의 실시예의 제4의 변형예의 구성도.
제76도는 본 발명의 제3의 실시예에 있어서의 반도체디스크의 재구성을 도시한 흐름도.
제77도는 본 발명의 제3의 실시예에 있어서의 초기화정보영역의 내용을 도시한 설명도.
제78도는 본 발명의 제3의 실시예에 있어서의 초기화정보영역설정의 흐름도.
제79도는 본 발명의 제3의 실시예에 있어서의 에러정보레지스터를 도시한 설명도.
제80도는 본 발명의 제3의 실시예에 있어서의 인터럽트응답정보를 도시한 흐름도.
제81도는 본 발명의 제3의 실시예에 있어서의 에러정보레지스터의 다른 예를 도시한 설명도.
제82도는 플래시메모리를 주기억으로 한 정보처리장치의 제4실시예의 개략적인 구성도.
제83도는 본 발명의 제4의 실시예에 있어서의 컨트롤러의 구성도.
제84도는 본 발명의 제4의 실시예에 있어서의 컨트롤러의 동작 흐름도.
제85도는 본 발명의 제4의 실시예에 있어서의 미스히트시에 고속화를 도모하기 위한 컨트롤러의 동작을 설명하는 흐름도.
제86도는 본 발명의 제4의 실시예에 있어서의 라인액세스방식의 플래시메모리의 동작설명도.
제87도는 본 발명의 제4의 실시예에 있어서의 플래시메모리를 사용한 주기억시스템의 구성도.
제88도는 본 발명의 제4의 실시예에 있어서의 플래시메모리를 사용한 주기억시스템의 컨트롤러의 구성도.
제89도는 본 발명의 제4의 실시예에 있어서의 컨트롤러의 동작을 설명하는 흐름도.
제90도(A) 및 제90(B)는 라인액세스의 플래시메모리의 직렬버퍼와 캐시메모리사이의 데이타전송의 설명도.
제91도는 직렬버퍼내의 어드레스설정가능한 플래시메모리를 사용한 경우의 컨트롤러의 동작을 설명하는 흐름도.
제92도는 라이트금지수단의 실현수단의 구성예의 설명도.
제93도는 본 발명에 있어서의 라이트백하는 처리의 고속화를 도모하는 제4의 실시예의 제1의 변형예를 도시한 개략도.
제94도는 제93도의 제어회로(4105)의 처리흐름을 도시한 도면.
제95도는 본 발명의 있어서의 라이트백하는 처리의 고속화를 도모하는 제4의 실시예의 다른 변형예를 도시한 개략도.
제96도는 제95도의 제어회로(4105)의 처리흐름을 도시한 도면.
제97도는 메모리사이즈가 524288바이트의 플래시메모리를 개략적으로 도시한 도면.
제98도는 본 발명을 실현하는 시스템의 제4의 실시예의 구성을 도시한 도면.
제99도는 본 발명의 제4의 실시예의 효과의 1예를 도시한 도면.
제100도는 제94도 및 제96도의 처리흐름을 조합한 처리흐름을 도시한 흐름도.
제101도는 본 발명의 제4의 실시예에 있어서의 어드레스어레이의 데이타유지를 실현하는 실시예의 구성도.
제102도는 제101도의 실시예에 있어서의 컨트롤러가 실행하는 어드레스어레이의 데이타세이브의 동작흐름을 도시한 도면.
제103도는 제101도의 실시예에 있어서의 컨트롤러가 실행하는 어드레스어레이 및 캐시메모리의 데이타복귀의 동작흐름을 도시한 도면.
본 발명은 플래시메모리를 정보처리장치의 반도체디스크 및 주기억으로 사용한 경우의 제어방법 및 장치에 관한 것이다.
소형정보기기등에 사용되는 기억정보의 하나로써 플래시메모리가 있다. 플래시메모리의 이점으로써는 다음에 설명되는 4가지점을 들 수 있으며, 장래 하드디스크 대신에 기억장치로써 유망시되고 있다.
1. 전원을 차단해도 데이타가 유지된다(DRAM에서는 전원을 차단하면 데이타가 소실된다).
2. 하드디스크에 비해서 데이타의 리드가 빠르다.
3. 반도체기억장치이기 때문에 하드디스크에 비해서 진동에 강하다.
4. SRMA에 비해서 저렴하다.
단, 다음과 같은 결점도 있다.
1. 데이타를 라이트할때 사전에 라이트하는 영역을 소거할 필요가 있다.
2. 소거는 칩단위 또는 일정 사이즈의 블럭단위로 실행된다.
3. 1,2의 이유에 의해 라이트에 시간을 필요로 한다.
4. 리라이트에 의해 소자가 열화하므로 리라이트회수에 제한이 있다.
제97도는 블럭사이즈가 512바이트, 전체 메모리사이즈가 524288바이트의 플래시메모리를 개략적으로 도시한 도면이다. 제97도에 있어서, (4110)은 플래시메모리내의 하나의 블럭, (4111)은 블럭(4110)내의 1바이트분의 데이타유지부(본 명세서에서는 이것을 셀이라 한다)를 나타낸다. (4105)는 제어회로이다. 이 플래시메모리에 리드액세스가 발생하면 어드레스신호 A9~A18, 버퍼(4131), 디코더(4132)에 의해 결정되는 해당 블럭의 어드레스 A0~A8, 버퍼(4121), 디코더(4122)에 의해 결정되는 해당 셀에서 데이타를 리드하고, 레지스터(4141)을 거쳐서 I/00~1/07로 출력한다. (4123)은 버퍼(4121), 디코더(4122)의 제어신호, (4133)은 버퍼(4131), 디코더(4132)의 제어신호, (4142)는 레지스터(4141)의 제어신호이다. 한편, 제97도에 있어서, 라이트 액세스가 발생하면 어드레스신호 A9~A18, 버퍼(4131), 디코더(4132)에 의해 결정되는 해당 블럭을 소거하고, 해당 블럭의 어드레스 A0~A8, 버퍼(4121), 디코더(4122)에 의해 결정되는 해당 셀에 I/00~I/07로 부터의 입력데이타를 레지스터(4141)을 거쳐서 라이트한다. (4401)은 기억장치(4105)의 제어신호이다.
플래시메모리를 반도체디스크의 기억매체로 사용하는 경우에 가장 문제가 되는 것은 상기 기술한 리라이트회수의 제한이다. 예를 들면 디스크에 있어서는 디렉토리나 FAT영역과 같은 영역은 다른 영역에 비해서 리라이트의 회수가 많으므로 디렉토리나 FAT영역에 할당한 플래시메모리의 특정 블럭만 리라이트가 빈번하게 일어나 다른 영역보다도 빨리 플래시메모리의 리라이트회수의 제한을 벗어날 가능성이 높다. 리라이트회수의 제한을 벗어난 경우에는 소자가 열화하는 등해서 리드, 라이트를 정확하게 실행할 수 없게 되는 경우가 있다. 디스크에서는 FAT나 디렉토리등이 파괴되면 디스크 전체의 리드를 할 수 없게 된다. 따라서, 특정한 블럭만 이상으로 되어 반도체디스크 전체를 사용할 수 없게 되므로 효율이 나쁘다.
플래시메모리를 기억매체로 사용한 파일기억장치의 종래기술로써는 일본국 특허공개공보 평성2-292798호의 플래시EEPROM시스템이 있다.
상기 발명은 플래시메모리에 결함셀이 발생한 경우의 대처 방법으로써, 예를들면 대체셀을 마련한 구성으로 하거나 결함셀의 발생에 의해 흐트러지는 데이타를 정규의 것으로 정정하기 위해 에러정정제어를 실행하는 것을 제안하고 있다. 이것에 의해, 플래시메모리의 결점인 리라이트회수의 제한을 커버하여 시스템 수명의 장기화를 도모하는 효과를 얻고 있다. 또, 시스템에 라이트캐시메모리를 탑재해서 캐시메모리로의 최후의 라이트로 부터의 경과시간에 따라서 플래시메모리로의 라이트백을 실행한다. 빈번하게 리라이트되는 데이타를 플래시메모리상에서 리라이트하지 않고 캐시메모리상에서 리라이트하는 것에 의해 플래시메모리의 동작을 적게 하여 시스템의 수명의 장기화를 도모하는 것을 목적으로 하고 있다.
에러정정제어라는 것은 자기디스크장치에 포함한 플래시메모리의 기억단위인 1섹터 512바이트마다 에러정정부호를 부여하여 소자불량에 의해 데이타에러가 발생했을때 에러정정부호를 기본으로 검출해서 정정하는 것이다. 이것에 의해, 실질적으로 가능한 리라이트회수를 증가시킬 수 있다. 또, 파일 리라이트의 시간감시제어라는 것은 구체적으로는 한번 라이트된 파일이 다음에 리라이트될때까지의 시간을 감시하여 리라이트시간이 가장 긴 파일이 아니라면 휘발성의 버퍼메모리(캐시메모리)에 데이타를 저장해두고, 빈번하게 리라이트가 일어나는 파일, 예를들면 디렉토리나 FAT(File Allocation Table)에 대해서 플래시메모리의 실질적인 리라이트회수를 줄이는 것이다.
이들 아이디어를 채용하는 것에 의해 플래시메모리를 사용한 기억장치로써 실용적인 수명을 확보하는 것을 목적으로 하고 있다.
그러나, 에러정정부호를 사용하는 것은 그 부호생성이나 에러검출, 정정에 시간과 다대한 처리량을 필요로 하여 성능저하나 회로의 복잡화를 초래한다.
마찬가지로, 이 휘발성 버퍼메모리(캐시메모리)는 플래시메모리의 다른 하나의 결점인 리라이트의 지연의 커버에는 사용되고 있지 않다. 캐시메모리에는 빈번하게 리라이트하는 파일을 저장하도록 하고 있지만 대용량의 파일은 저장할 수 없다.
예를들면 처음에 라이트하는 대용량의 파일은 캐시메모리를 사용하지 않고 라이트속도가 느린 플래시메모리에 직접 라이트하게 되므로 라이트액세스가 저속화된다. 즉, 자기디스크장치에서는 고속액세스 할 수 있는 연속적인 대용량의 데이타에 관해서 액세스성능이 자기디스크장치에 대해서 매우 저하하게 된다.
또, 본 출원인이 앞서 출원한 일본국 특허공개공보 평성5-204561호에 있어서는 상기 과제를 해결하기 위해, 대체메모리영역을 마련해서 반도체디스크의 수명을 연장하고 있다. 그러나, 대체메모리영역은 미리 고정적으로 할당하고 있으므로 대체메모리영역을 사용했다면 사용할 수 없게 되는 문제가 있다.
또한, 일본국 특허공개공보 평성2-292798호에 있어서, 캐시메모리에서 플래시메모리로의 데이타의 전송은 캐시메모리에 여분의 공간이 필요할때를 조건으로 하고 있다. 그러나, 여분의 공간을 필요로 할때에는 즉 시스템으로써 데이타의 저장요구가 있을때라 고려되므로 이때의 리라이트가 느린 플래시메모리로의 라이트를 실행하고 있던 것에서는 시스템의 성능을 저하시키게 된다.
또, 상술한 바와 같이 라이트가 빈번하게 일어나는 데이타에 있어서만 캐시메모리로의 라이트를 실행하는 제어를 목표로 하고 있으므로, 라이트의 고속화를 모든 라이트데이타에 대해서 도모할 수 없었다.
또, 어떤 섹터내에서 불량셀이 발생하면 대응하는 적절한 처리를 실행하기 위한 시간이 필요하게 된다. 그 결과, 데이타의 전송시간이 길어져 데이타의 전송이 늦어지는 사태를 초래한다. 특히, 에러정정부호를 사용한 처리는 복잡한 것으로 된다.
또, 상기 발명에 있어서의 캐시방식은 시스템수명의 장기화를 위해 마련된 것이다. 데이타라이트시의 캐시메모리의 조작에 대한 기술개시는 이루어져 있지만 외부 시스템인 호스트측으로 부터의 리드데이타의 전송에 대해서는 전혀 기술개시가 이루어져 있지 않다. 따라서, 고속액세스가능한 수단의 제공이라고는 할 수 없다.
또, 상기 종래기술은 자기디스크장치의 치환을 주목적으로 하고 있는 것으로 고려된다. 외부와 데이타를 수수하기 위해 시스템에 구비되어 있는 외부IO버스를 경유한 섹터단위에서의 액세스를 전제하고 있다. 그러나, 플래시를 주기억으로 채용한 경우의 CPU로 부터의 랜덤액세스, 즉 수바이트등의 적은 단위에서의 직접적인 데이타의 수수에 대해서는 전혀 고려되어 있지 않다. 상술한 대체셀방식이나 에러정정부호처리는 데이타의 수수를 섹터단위로 실행하는 것을 고려하고 있다. 바이트 또는 워드단위에서의 수수는 불가능하다.
한편, 고성능인 퍼스널컴퓨터등에서는 리드 또는 라이트시간을 고속화하는 수단으로써 DRAM-SRAM캐시시스템이 자주 사용된다. 일반적으로 캐시메모리는 CPU와 액세스에 시간을 필요로 하는 기억장치사이에 마련되어 버퍼메모리의 기능을 하며, CPU가 기억장치를 리드한 경우는 그 어드레스, 데이타등을 캐시메모리에 저장해두고, 다음에 CPU가 기억장치의 동일한 어드레스를 리드했을때에는 그 어드레스에 대응하는 데이타를 캐시메모리에서 얻는 것에 의해 액세스를 고속화한다. 캐시메모리에는 라이트스루방식과 카피백방식의 2방식이 알려져 있다. 라이트스루방식은 기억장치로의 라이트요구에 대해서 캐시메모리와 함께 기억장치도 동시에 리라이트하는 방식이다. 이것에 대해서 카피백방식은 기억장치로의 라이트요구에 대해서 캐시메모리만 리라이트를 실행하고, 처리에 시간을 요하는 기억장치의 리라이트를 생략하는 것에 의해 액세스를 고속화하는 방식이다.
현재, 퍼스널컴퓨터등의 정보처리장치에 있어서, 일반적으로 사용되고 있는 캐시메모리시스템은 통상 DRAM(Dynamic RAM)을 갖고 주기억을 구성하며, 또 SRAM(Static RAM)을 갖고 구성한 캐시메모리를 구비하고, CPU의 동작속도에 DRAM의 액세스동작이 미칠 수 없는 것에 대처하고 있다. 즉, 액세스된 어드레스를 SRAM에 할당하고, 액세스속도가 느린 DRAM은 데이타의 백업용으로 사용해서 CPU로 부터는 액세스속도가 빠른 SRAM이 주기억으로 되도록 가장하는 기술이다. 이 기술에 있어서, DRAM의 액세스속도와 SRAM의 액세스속도는 수배정도의 차이가 있지만 차가 큰 경우라도 10배이내이므로, 캐시메모리에 할당되고 있지 않은 어드레스에 대한 라이트액세스의 경우, 즉 라이트미스히트시의 리버커리시간은 그다지 큰 것은 아니다. 플래시메모리를 주기억으로 채용한 경우에는 플래시메모리의 리라이트시간은 DRAM과 비교하면 수자리의 차이가 있어 라이트미스히트시의 리커버리시간은 매우 크게 되어 시스템의 성능저하를 초래하게 된다. 따라서, 이 점을 고려한 시스템을 실현할 필요가 있다.
또, 플래시메모리의 칩코스트를 저감하기 위해 플래시메모리의 칩면적은 작게 하는 셀구조가 주목받고 있다. 예를들면 소위 NAND구조를 갖는 플래시메모리가 이것에 해당한다. 이 구조에서는 랜덤액세스가 아닌 라인액세스를 실행하고 데이타의 입출력방법은 라이트단위로 직렬로 실행한다. 금후의 플래시메모리는 메모리의 고집적화를 목표로한 라인액세스방식이 주류로 될 것이라 고려된다. 이것 이외에도 상기 라인액세스와 유사한 액세스방식을 채용하는 메모리의 개발이 진행되고 있다. 이와 같은 구조의 메모리를 사용해도 랜덤액세스를 고속으로 실행하는 것이 금후 중요한 기술로 된다. 상기 일본국 특허공개공보 평성2-292798호를 포함시켜 종래의 기술에 있어서는 이 점을 고려한 적이 없다.
또, 주기억이 휘발성인지 불휘발성인지에 의해 시스템상 큰 차이가 생긴다.
예를들면 주기억이 휘발성인 경우에는 캐시메모리만이 리라이트되어 있는 상태에서 시스템의 전원이 차단된 경우 주기억 및 캐시메모리의 어느쪽의 기억데이타도 휘발하기 때문에 문제는 발생하지 않지만, 주기억이 불휘발성인 경우에는 캐시메모리에만 최신의 데이타가 저장된 상태에서 전원이 차단되는 사태가 발생하면 사용자는 데이타를 남길 예정이었지만 실제로는 사용자가 입력할 예정이었던 데이타가 캐시메모리에서 휘발하여 소멸되어 버리는 일이 생길 수 있다.
또, 정보처리장치는 상기 장치가 구비하는 주기억이 휘발성이라면 보조기억장치를 구비해서 파일데이타의 보존을 실행하는 것이 일반적이지만 불휘발성의 주기억시스템의 경우는 보조기억장치를 구비할 필요가 없다(주기억이 데이타보존의 영역으로 된다). 이것이 불휘발성의 주기억을 구비하는 시스템의 효과의 하나이지만 반대로 이 때문에 발생하는 문제도 있다.
예를들면 각종 정보처리장치에서는 프로그램이나 조작의 미스에 의해 장치가 폭주해버리는 사고가 발생하는 일이 있다. 이때, 휘발성의 주기억이라면 최종수단으로써 하드웨어리세트를 걸거나 전원을 한번 차단해서 재차 개시할 수 있다. 이것에 의해서 주기억의 내용을 클리어하고, 보조기억장치에서 재차 데이타를 주기억에 로드해서 정상적인 상태로 복귀시킬 수 있다. 그러나, 불휘발성의 주기억에는 장치의 폭주에 의해 주기억내에 존재하는 데이타가 파괴되면 바른 데이타가 존재하지 않게 되어 정상적인 상태로 복귀시키는 것이 곤란하게 된다.
따라서, 불휘발성의 주기억을 구비하는 정보처리장치에서는 장치의 폭주에 대처하는 방식의 제공이 필요하게 된다.
본 발명의 목적은 고성능이며, 저렴한 플래시메모리를 기억매체로 한 파일시스템을 실현하는 것이다.
구체적으로 라이트버퍼(캐시메모리)나 에러검출정정부호를 사용하지 않고 파일시스템의 긴수명화를 도모하는 것이다.
또, 고속으로 플래시메모리를 리라이트할 수 있는 파일시스템을 실현하는 것이다.
또, 대용량의 데이타를 액세스하는 경우라도 고속으로 액세스할 수 있는 파일시스템을 실현하는 것이다.
또, 간략한 하드웨어 구성과 간략한 처리에 의해서 플래시메모리의 열화를 억제하는 플래시파일시스템을 실현하는 것이다.
본 발명의 다른 목적은 플래시파일시스템에 있어서, 플래시파일이 열화했을때의 대체영역을 동적으로 변경해서 수명을 더욱 연장함과 동시에 대체영역이 없어졌을때 사용자에게 그 사실을 통지해서 사용자 인터페이스를 향상시키는 것이다.
본 발명의 또 다른 목적은 플래시메모리를 주기억에 구비하는 정보처리장치를 실현하는 것이다.
구체적으로 CPU로 부터의 랜덤액세스에 대응할 수 있게 하는 것이다.
더 나아가서는 고집적인 라인액세스방식의 플래시메모리에 대응할 수 있는 정보처리장치를 실현하는 것이다.
더 나아가서는 그때의 미스히트액세스에 대한 리커버리시간을 짧게해서 성능을 향상시키는 것이다.
더 나아가서는 전원차단시의 대처를 고려해서 신뢰성을 향상시켜 프로그램이나 조작의 미스에 의한 폭주에 의해서 발생하는 중요한 데이타의 파괴를 방지함과 동시에 동작을 정지한후에 동작의 재개시의 액세스 성능을 향상시켜 총합적인 사용감의 향상을 목표로 하는 것이다.
상기의 목적을 달성하기 위해, 본 발명은 전기적 소거가능한 제1의 불휘발성메모리, 전기적 소거불가능한 제2의 불휘발성 메모리, 휘발성메모리, 이들 메모리를 제어하는 컨트롤러 및 상기 컨트롤러를 제어하는 제어부를 갖고, 외부에서 지정된 논리어드레스에 대응하는 물리어드레스로 액세스하는 반도체파일시스템에 있어서, 상기 제1의 불휘발성메모리는 외부에서 연산처리를 실행하기 위한 데이타, 상기 데이타가 저장되어 있는 물리어드레스와 논리어드레스의 대응을 나타내는 제1의 관리정보 및 상기 제1의 불휘발성 메모리의 상태를 나타내는 제2의 관리정보를 기억하고, 상기 제2의 불휘발성메모리는 외부와 상기 데이타를 입출력 하기 위한 인터페이스정보 및 상기 데이타중의 리라이트가 불필요한 것을 미리 기억하고, 상기 컨트롤러는 상기 제1의 불휘발성 메모리에서 데이타를 출력할때 및 상기 휘발성메모리에 데이타를 입력할때 상기 물리 어드레스의 미리 정해진 상위비트를 구성하는 물리섹터어드레스를 결정하는 제어수단, 상기 결정된 물리섹터어드레스를 저장하는 섹터어드레스 저장수단, 상기 물리섹터어드레스에 의해 결정되는 섹터내의 어드레스를 연속적으로 발생하는 어드레스연속 발생수단을 갖고, 상기 제어부는 상기 인터페이스정보와 상기 제1, 제2의 관리정보에 따라서 외부와의 데이타의 입출력을 제어하고, 외부에서 상기 제1의 불휘발성메모리로의 라이트데이타를 일단 상기 휘발성메모리에 기억시킨후 상기 휘발성메모리에서 상기 라이트데이타를 상기 제1의 휘발성메모리로 전송하고, 상기 어드레스연속 발생수단 및 섹터어드레스 저장수단은 상기 제1의 불휘발성메모리에서 상기 물리섹터어드레스의 데이타를 출력할때 및 상기 휘발성메모리에 상기 물리섹터어드레스의 데이타를 입력할때 물리적섹터어드레스 및 상기 연속적으로 발생된 어드레스를 상기 제1의 휘발성메모리 및 휘발성메모리로 출력하는 것으로 한 것이다.
본 발명에서는 기억데이타의 저장단위를 하드디스크의 1섹터와 동일한 것으로 한다. 그리고, 호스트와의 데이타의 수수는 전부 이 섹터단위로 실행한다. 이것을 고속전송하기 위해 고속으로 어드레스를 발생하는 수단을 마련한다. 그리고, 이 고속어드레스 발생에 라이트속도를 맞추기 위해 휘발성메모리를 라이트버퍼로써 사용하여 모든 라이트데이타를 한번 이 라이트버퍼에 저장한다. 그리고, 라이트버퍼는 어디까지나 일시적인 데이타세이브에 사용하며, 호스트로 부터의 데이타전송종료후에는 라이트버퍼에서 플래시메모리로의 데이타전송을 신속하게 실행한다. 즉, 라이트버퍼는 플래시메모리의 수명대책에는 사용하지 않고 고속데이타전송을 위해서만 사용한다. 플래시메모리의 수명대책으로는 예를들면 소거회수의 관리를 실행하는 것에 의해 도모한다. 이것은 플래시메모리의 소거단위로 소거회수를 제2의 관리정보로써 기억하고, 이 소거회수에 의해 플래시메모리의 열화도를 판단해서 라이트위치의 결정에 사용하며, 열화의 진행을 평균화하는 것이다. 이 때문에 소거회수시 기록 등은 라이트버퍼로 사용하고 있는 휘발성메모리로 한다.
한편, 데이타저장용의 메모리로써 플래시메모리(제1의 불휘발성메모리)와 전기적 리라이트불가능한 불휘발성메모리(제2의 불휘발성메모리), 예를들면 마스크ROM이나 원타임PROM을 사용한다. 그리고, 이 전기적 리라이트불가능한 불휘발성메모리를 인터페이스정보(예를들면 IC카드의 내부구성이나 액세스형식등)를 저장하는 메모리로써 사용한다.
상기에 의해, 호스트에서 본 반도체파일시스템에 대한 데이타전송시에는 호스트의 데이타전송속도에 맞춰서 어드레스를 발생하여 어드레스를 라이트버퍼로 되는 휘발성메모리에 부여하는 것에 의해 플래시메모리의 리라이트속도에 의존하지 않는 고속의 라이트를 할 수 있다.
한편, 리드시에는 플래시메모리에 상기의 어드레스발생수단에 의한 어드레스를 부여하면 호스트에 맞춘 리드가 가능하다. 이것은 본 시스템의 제어수단의 동작속도가 호스트와 비교해서 느리고, 제어수단으로 부터의 어드레스발생에서는 속도의 네크로 될때 특히 유효하다.
또, 소거회수관리에 의해 플래시메모리의 긴수명화를 도모할 수 있다. 그리고, 소거회수관리를 위해 필요로 되는 기억수단은 라이트버퍼와 동일한 휘발성메모리를 겸용하기 때문에 부품수의 증대를 초래하지 않는다.
또, 이 휘발성메모리를 제1, 제2의 관리정보의 저장메모리로써 사용하는 것에 의해 관리정보의 저장, 인출을 고속으로, 또한 효율적으로 실행할 수 있다.
한편, 데이타저정 메모리로써 플래시메모리이외에 저렴한 전기적 리라이트불가능한 불휘발성메모리를 사용하는 것에 의해 보다 저렴한 파일기억매체를 구축할 수 있다.
또, 이 전기적 리라이트불가능한 불휘발성메모리를 IC카드정보의 저장에 사용하면 표준규격인 PCMCIA규격등에 준거할 수 있게 된다. 또, 상기 전부를 실행하면 3종류의 메모리로 다양한 용도를 겸임할 수 있어 용도마다 메모리를 마련하는 경우에 비해서 부품수를 줄일 수 있다. 특히, IC카드등 소형화를 목표로 할때에는 부품수 삭감에 크게 공헌한다.
또, 본 발명에서는 외부로 부터의 데이타를 기억하는 플래시메모리를 갖는 플래시메모리 시스템에 있어서, 상기 데이타의 상기 플래시메모리로의 라이트요구시에 외부로 부터의 상기 데이타를 일시적으로 기억하기 위한 데이타기억수단 및 상기 데이타의 라이트요구시에 상기 데이타를 상기 데이타기억수단에 저장한 후에 상기 플래시메모리로 전송하는 제어부를 갖고, 상기 제어부는 상기 데이타의 상기 플래시메모리로의 전송이 종료하기전에 외부에서 데이타의 리드요구 또는 라이트요구를 받은 경우 상기 플래시메모리로의 전송을 중단하여 외부로 부터의 데이타의 리드요구 또는 라이트요구를 우선적으로 처리하는 것으로 한 것이다.
또, 외부로 부터의 데이타를 기억하는 플래시메모리를 갖는 플래시메모리시스템에 있어서, 상기 데이타의 상기 플래시메모리의 라이트요구시에 외부로 부터의 상기 데이타를 일시적으로 기억하기 위한 데이타기억수단 및 상기 데이타의 라이트요구시에 상기 데이타를 상기 데이타기억수단에 저장한후에 상기 플래시메모리로 전송하는 제어부를 갖고, 상기 제어부는 상기 데이타의 상기 플래시메모리로의 전송이 종료하기전에 외부에서 동일 어드레스로의 데이타의 새로운 라이트요구를 받은 경우 상기 플래시메모리로의 전송을 중단하여 외부로 부터의 새로운 데이타를 상기 데이타기억수단에 저장하고, 전의 데이타는 무효로 하는 것이다.
또, 외부로 부터의 데이타를 기억하는 플래시메모리를 갖는 플래시메모리시스템에 있어서, 상기 플래시메모리로 상기 데이타를 라이트하는데 필요한 시간을 측정하는 라이트시간 측정수단, 상기 라이트시간 측정수단의 측정결과에 의해 플래시메모리의 열화도를 진단하는 열화도 진단수단, 상기 열화도 진단수단에 의한 진단결과를 기억하는 열화도 기억수단 및 상기 진단결과에 의해 상기 데이타의 플래시메모리상의 저장장소를 결정해서 저장하는 제어수단을 갖는 것으로 한 것이다.
상기와 같이, 라이트의 고속화를 위해 일시적으로 데이타를 저장하는 라이트버퍼메모리(데이타기억수단)을 마련한다. 그리고, 버퍼메모리에 저장된 데이타를 외부(예를들면 호스트시스템)로 부터의 액세스요구가 없을때, 즉 액세스요구대기시에 플래시메모리로 전송한다. 이렇게해서 시스템전체로써는 실질적으로 전송시간이 은폐되도록 연구한다. 또, 호스트시스템으로 부터의 라이트요구 데이타는 전부 반드시 버퍼메모리로 페치하는 것으로 한다. 라이트속도가 느린 플래시메모리는 호스트시스템에서 직접 라이트되는 일이 없도록 한다. 그리고, 버퍼메모리에서 플래시메모리로의 데이타전송은 호스트시스템으로 부터의 데이타라이트가 종료하는대로 개시된다. 호스트시스템에서 상기 데이타 또는 다른 데이타를 액세스하는 요구가 있을때까지의 기간, 즉 액세스요구대기기간에는 전송할 수 있다. 호스트시스템으로 부터의 액세스요구가 발생했다면 즉시 버퍼메모리에서 플래시메모리로의 데이타 전송을 중단하고 호스트시스템의 요구에 대응한다. 그리고, 재차 액세스요구대기상태가 되었으면 버퍼 메모리에서 플래시메모리로의 데이타전송을 앞의 중단시점에서 재개한다. 이 결과 버퍼메모리는 호스트시스템으로 부터의 저장데이타의 라이트를 신속하게 종료하고, 그 결과 호스트시스템은 저장데이타의 전송을 종료시키고 다음의 처리를 실행할 수 있어 시스템전체의 성능이 향상한다. 즉, 호스트시스템에서는 플래시메모리의 라이트속도가 보이지 않아 플래시메모리의 라이트속도의 지연을 은폐할 수 있다. 그리고, 버퍼메모리상의 데이타는 호스트시스템으로 부터의 액세스요구가 종료하는대로 플래시메모리로 전송되고, 호스트시스템으로 부터의 다음의 액세스요구가 있을때까지 계속된다. 따라서, 호스트시스템은 버퍼메모리에서 플래시메모리로의 전송도중이라도 전송요구를 인터럽트시킬 수 있어 호스트시스템의 대기시간은 없는 것으로 된다.
또, 버퍼메모리의 용량은 호스트시스템으로 부터의 데이타가 통상의 사용상태에 있어서 버퍼메모리에 저장할 수 있을 정도 이상의 충분한 용량을 확보한다. 버퍼메모리를 충분히 용량 확보하는 것에 의해 호스트시스템으로 부터의 데이타저장을 할 수 없게 되어 호스트시스템에 대기시간을 갖게 하는 일이 없게 한다.
또, 버퍼메모리에서 플래시메모리로의 데이타전송시간을 가능한한 저감하기 위해 아직 플래시메모리로의 전송이 실행되고 있지 않고 버퍼메모리에 남겨져 있는 데이타와 동일 데이타(예를 들면 동일 파일)의 호스트로 부터의 재전송에 있어서는 먼저 저장되어 있는 데이타를 무효화해서 항상 최신의 것을 플래시메모리로 전송하는 것으로 한다. 동일 파일의 재전송에 있어서, 오래된 데이타는 불필요하므로 무효화와 관계없이 여분의 데이타전송을 실행할 필요가 없게 되고, 또 플래시메모리의 리라이트회수를 저감하는 것으로도 된다.
또, 호스트로 부터의 연속적인 대용량이 라이트에 대응하기 위해 플래시메모리에 대한 라이트를 가능한 한 빠르게 할 필요도 있다. 그러나, 플래시메모리는 열화하면 라이트나 소거에 필요한 시간이 길어져 리라이트가 늦어져 버리므로 이것을 회피해야한다. 그를 위해서 라이트나 소거에 필요한 시건을 계측해서 플래시메모리의 열화도를 항상 파악해서 열화도가 낮은 것을 선택하여 라이트하도록 제어한다. 리라이트시간을 단축하면 호스트로 부터의 연속적인 대용량의 리라이트에 있어서의 버퍼메모리부족을 방지할 수 있다.
또, 본 발명에서는 상기 과제를 해결하기 위해 플래시메모리를 기억매체로 하는 기억부를 구비하는 반도체메모리부 및 상기 반도체메모리부와의 사이에서 정보를 송수신하는 호스트시스템을 갖는 기억시스템에 있어서, 상기 반도체메모리부는 상기 호스트시스템과의 사이에서 정보를 송수신하는 인터페이스회로, 상기 기억부에 대한 정보의 리드, 라이트를 제어하여 상기 기억부의 에러영역을 검출하는 제어회로, 상기 기억부의 각 영역마다 사용/미사용의 상태를 유지하고, 상기 제어회로에 있어서 에러를 검출할 경우에 상기 기억부의 에러영역 대신에 미사용의 영역을 대체영역으로 해서 할당하고, 상기 할당한 대체영역과 상기 에러영역의 대응을 유지하는 메모리관리수단을 갖고, 상기 제어회로는 상기 메모리관리수단을 참조하여 상기 기억부에 대한 정보의 리드, 라이트의 제어를 실행한다.
이 경우 상기 제어회로는 상기 기억부의 에러영역의 검출시에 상기 기억부의 에러영역의 검출을 나타내는 에러정보를 상기 호스트시스템에 통지하는 통지수단을 구비하고, 상기 호스트시스템은 상기 통지수단으로 부터의 에러정보의 통지를 검출하는 통지검출수단 및 상기 통지검출수단에 의한 에러정보의 통지의 검출시에 에러정보를 출력하는 출력수단을 구비할 수 있다.
또, 상기 반도체메모리부는 미리 정한 에러정보를 유지하는 에러정보 유지수단을 또 갖고, 상기 제어회로는 상기 기억부의 에러영역의 검출시에 상기 기억부의 에러영역의 검출을 나타내는 에러정보를 상기 에러정보 유지수단에 설정하고, 상기 호스트시스템은 상기 에러정보 유지수단을 참조하여 상기 에러정보를 검출하는 검출수단 및 상기 검출수단에 의한 에러정보의 검출시에 에러정보를 출력하는 출력수단을 구비하도록 해도 좋다. 출력수단으로써는 LED표시 및 CRT상으로의 에러메시지표시등 시각적인 통지수단, BEEP음 및 합성음성 등에 의한 음성통지수단을 구비할 수 있다.
또, 상기 제어회로는 상기 기억부의 대체영역이 없어진 것을 또 검출하고, 상기 에러정보 유지수단에 상기 기억부의 대체영역이 없어진 것을 표시하는 에러정보를 또 설정할 수 있다.
상기 호스트시스템은 상기 기억부의 정보를 기억하는 데이타영역과 상기 대체영역을 초기화정보로써 미리 설정하기 위한 지시를 받는 입력수단 및 상기 입력수단에 의해 받은 지시에 따라서 상기 메모리관리수단에 상기 초기화정보를 설정하는 설정수단을 구비하고, 상기 메모리관리수단은 상기 설정수단의 설정에 따라서 영역을 분리해서 관리한다. 상기 메모리관리수단은 상기 대체영역이 없어진 경우에 상기 데이타영역의 빈영역의 미사용의 영역을 검출하여 상기 검출한 미사용영역을 대체영역으로 재설정하는 재설정수단 및 상기 재설정수단에 의해 재설정했을때 상기 미사용영역을 대체영역으로 설정한 것을 통지하는 재설정통지수단을 구비하고, 상기 호스트시스템은 상기 재설정통지수단에서 재설정의 통지가 있으면 상기 미사용영역을 사용금지로 할 수 있다.
플래시메모리를 기억매체로 하는 반도체메모리의 기억제어방법으로써, 외부에서 라이트지시되는 어드레스정보에 대응하는 라이트어드레스를 미리 유지하고, 상기 기억매체의 라이트어드레스가 표시하는 영역의 사용/미사용의 상태를 유지하고, 외부에서 어드레스정보와 함께 라이트지시가 있으면 상기 어드레스정보에 대응하는 상기 유지한 라이트어드레스를 참조하여 상기 라이트어드레스가 표시하는 영역에 라이트를 실행하고, 라이트시에 상기 영역을 사용상태로 해서 유지하고, 라이트시에 라이트에러가 발생했는지 하지않았는지를 판단하고, 상기 라이트에러가 발생한 경우에는 상기 에러가 발생한 영역대신에 미사용의 영역을 대체영역으로 해서 할당하여 상기 대체영역에 라이트를 실행하고, 상기 유지하고 있는 라이트어드레스를 상기 할당한 대체영역의 라이트어드레스로 갱신하여 상기 대체영역을 사용한 것을 통지할 수 있다.
또, 다른 기억제어방법으로써, 정보를 기억하는 데이타영역과 라이트에러발생시에 상기 에러가 발생한 영역이외의 영역을 할당하기 위한 대체영역을 영역 분리하는 지시를 받고, 상기 지시에 따라 상기 데이타영역의 어드레스정보에 대응하는 라이트어드레스와 상기 대체영역의 어드레스를 미리 유지하고, 상기 데이타 및 상기 대체영역의 사용/미사용의 상태를 어드레스마다 유지하고, 어드레스정보와 함께 라이트지시를 받으면 상기 어드레스정보에 대응하는 상기 유지한 라이트어드레스를 참조하여 상기 라이트어드레스가 표시하는 영역에 라이트를 실행하고, 라이트시에 상기 영역을 사용상태로 해서 유지하고, 라이트시에 라이트에러가 발생했는지 하지않았는지를 판단하고, 상기 라이트에러가 발생한 경우에는 상기 에러가 발생한 영역대신에 미사용의 대체영역을 할당해서 상기 대체영역에 라이트를 실행하고, 상기 유지하고 있는 라이트어드레스를 상기 할당한 대체영역의 어드레스로 갱신하여 상기 대체영역을 사용상태로 해서 유지할 수 있다.
메모리관리수단(메모리블럭 관리테이블)에서는 기억부의 각 영역마다 사용/미사용의 상태를 유지하고, 제어회로에 있어서 에러를 검출한 경우에 기억부의 에러영역 대신에 미사용의 영역을 대체영역으로 해서 할당하여 할당한 대체영역과 상기 에러영역의 대응을 유지해둔다.
데이타를 라이트하는 경우 호스트시스템은 상기 반도체메모리부에 대해서 어드레스정보(블럭마다 라이트를 하는 경우에는 블럭의 식별정보)와 함께 라이트를 지시한다. 반도체메모리부의 제어회로는 인터페이스회로를 거쳐서 라이트지시를 받으면 메모리블럭 관리테이블에서 라이트하고자 하는 어드레스정보에 대응하는 반도체메모리의 라이트어드레스를 리드하고 데이타메모리의 목적의 영역에 데이타를 라이트한다. 제어회로가 라이트시에 상기 블럭에 에러가 발생하고 있던 것을 검출했다면 메모리관리수단은 미사용의 대체메모리부의 어드레스정보를 리드하고, 대체영역에 할당해서 상기 대체영역을 사용중으로 한다. 제어회로는 할당된 대체영역에 데이타를 라이트한다.
또, 상기 라이트동작에 있어서, 에러가 발생한 경우에 데이타를 라이트하는 빈영역이 없는 경우에는 통지수단에 의해 기억부의 에러영역의 검출을 나타내는 에러정보를 상기 호스트시스템에 통지한다. 통지수단으로써는 인터럽트신호에 의해 통지를 할 수 있다. 호스트시스템의 통지검출수단은 상기 통지수단으로 부터의 에러정보의 통지를 검출하고, 출력수단은 상기 통지검출수단에 의한 에러정보의 통지의 검출시에 에러정보를 출력한다. 또, 미리 정한 에러정보를 유지하는 에러정보 유지수단을 갖는 경우에 제어회로는 상기 기억부의 에러정보의 검출시에 상기 기억부의 에러영역의 검출을 나타내는 에러정보를 상기 에러정보 유지수단에 설정한다. 상기 호스트시스템의 검출수단은 상기 에러정보 유지수단을 참조해서 상기 에러정보를 검출하고, 출력수단에서 상기 검출수단에 의한 에러정보의 검출시에 에러정보를 출력한다. 또, 상기 제어회로는 상기 기억부의 대체영역이 없어진 것을 검출하고, 상기 에러정보 유지수단에 상기 기억부의 대체영역이 없어진 것을 표시하는 에러정보를 설정하도록 해도 좋다. 이것에 의해, CRT등의 출력수단에 에러정보를 표시해서 사용자에 대해서 디스크에 빈용량이 없는 것을 통지하는 등 적절한 처리를 실행할 수 있다.
또, 호스트시스템의 입력수단은 상기 기억부의 정보를 기억하는 데이타영역과 상기 대체영역을 초기화정보로 해서 미리 설정하기 위한 지시를 받는다. 설정수단은 상기 입력수단에 의해 받은 지시에 따라서 상기 메모리관리수단에 상기 초기화정보를 설정할 수 있다. 상기 메모리관리수단은 상기 설정수단의 설정에 따라서 영역을 분리해서 관리하도록 해도 좋다. 이 경우, 메모리관리수단은 상기 대체영역이 없어진 경우에 상기 데이타영역의 빈영역의 미사용의 영역을 검출하고, 상기 검출한 미사용영역을 대체영역으로 재설정하는 재설정수단 및 상기 재설정수단에 의해 재설정했을때 상기 미사용 영역을 대체영역으로 설정한 것을 통지하는 재설정통지수단을 구비하고, 상기 호스트시스템은 상기 재설정통지수단에서 재설정의 통지가 있으면 상기 미사용영역을 사용금지로 할 수 있다.
상기 반도체디스크에서 목적의 블럭의 데이타를 리드하는 경우는 상기 메모리관리수단에 의해 리드하고자 하는 어드레스정보에 대응하는 상기 반도체메모리의 영역을 리드하고, 상기 기억부의 목적의 영역에서 데이타를 리드한다. 만약, 상기 블럭에 에러가 발생하고 있던 경우는 상기 메모리관리수단에 상기 대체영역의 어드레스정보가 저장되어 있으므로 그것을 리드하여 대응하는 대체영역에서 데이타를 리드한다.
또, 본 발명에서는 중앙처리장치, 데이타를 입력하기 위한 입력수단, 데이타를 출력하기 위한 출력수단, 데이타를 기억하는 휘발성 기억수단, 기억된 데이타를 전기적으로 리라이트가능한 기억수단으로써 상기 중앙처리장치가 액세스할 수 있는 어드레스공간을 할당한 불휘발성 기억수단, 상기 휘발성기억수단과 상기 불휘발성기억수단의 상호간에서 데이타의 수수를 적어도 실행하는 데이타제어수단, 상기 데이타제어수단에 의해서 상기 불휘발성기억수단에서 상기 휘발성기억수단에 저장된 데이타의 상기 불휘발성 기억수단에 있어서의 어드레스를 등록하는 어드레스등록수단 및 상기 어드레스등록수단에 등록되어 있는 어드레스와 상기 중앙처리장치가 데이타액세스를 위해 출력한 어드레스의 비교를 실행하는 어드레스비교수단을 구비한 수단을 구성한다.
그리고, 상기 데이타제어수단은 이하의 처리를 실행하도록 구성한다. 즉, 상기 데이타제어수단은 상기 중앙처리장치가 데이타를 액세스하기 위해 출력한 어드레스를 상기 어드레스비교수단에 입력하고, 상기 어드레스가 상기 어드레스비교수단의 출력결과에 따라 상기 어드레스등록수단에 등록되어 있는 등록어드레스라 판단했을때에는 상기 휘발성 기억수단내에 있어서의 등록어드레스를 액세스하고, 역으로 상기 어드레스등록수단에 등록되어 있지 않은 어드레스라 판단했을때에는 적어도 상기 어드레스를 포함하는 소정 범위의 어드레스를 상기 어드레스등록수단에 새로이 등록하고, 상기 새로이 등록된 어드레스에 대응하는 상기 불휘발성기억수단내의 데이타를 상기 휘발성기억수단에 새로이 저장해서 상기 새로이 등록된 적어도 하나의 어드레스를 액세스하도록 구성한다.
상기 수단은 구체적으로 예를들면 다음과 같이 동작한다.
외부IO버스를 거치지 않고 직접 CPU가 플래시메모리의 저장데이타를 액세스할 수 있게 하기 위해서는 고속랜덤액세스를 실현해야만 한다. 플래시메모리를 직접 액세스하면 랜덤액세스형의 플래시메모리에서 리드액세스는 DRAM마다 고속랜덤액세스가 가능하지만, 라이트액세스에서는 리라이트를 블럭단위로만 할 수 있으며, 또 매우 느리다. 그리고, 상술한 바와 같이 금후 주류가 될것이라 고려되는 라인액세스방식의 플래시메모리에서는 리드액세스에 있어서도 랜덤액세스에는 적합하지 않다.
그래서, 캐시메모리로써 동작하는 버퍼메모리를 플래시메모리와 CPU사이에 마련한 구성으로 한다. 이 캐시메모리는 고속랜덤액세스가 가능한 DRAM이나 SRAM으로 구성하는 것이 최적이다.
그리고, 이 캐시메모리에 대응해서 저장하고 있는 데이타의 어드레스 기억하는 어드레스레이와 액세스내력을 기록하는 기억수단을 구비한다.
그리고, 플래시메모리의 리라이트가 캐시메모리의 액세스에 대해서 매우 늦은 것에 대처하기 위해 캐시메모리에는 미저장의 어드레스의 데이타를 항상 라이트할 수 있도록 빈영역을 미리 준비해둔다.
또, 장치의 폭주에 의한 주기억데이타의 파괴에 대처하기 위해 각 데이타영역에 라이트프로텍트플래그를 구비한 구성으로 하고, 이 플래그에 의해 리라이트금지상태의 데이타의 리라이트를 실행한 경우에는 CPU에 인터럽트를 걸어서 경고를 실행하는 기능을 마련한다. 또, 플래그의 리라이트시에도 인터럽트에 의한 경고를 실행하는 것에 의해 이종의 안정이 도모된다. 그리고, 그후 특정한 라이트요구 레지스터에 CPU가 소정코드를 라이트하지 않으면 데이타의 리라이트를 허가하지 않도록 해둔다.
또, 고속화를 도모하기 위해 캐시메모리상의 데이타가 CPU에 의해 리라이트되었으면 그 데이타에 대응하는 플래시메모리상의 영역을 미리 소거하고, 상기 데이타의 라이트백시에 플래시메모리의 상기 영역을 소거하기 위한 시간을 절약할 수 있게 한다.
또, 상기 어드레스등록수단의 데이타를 장치로의 전원공급을 차단해도 휘발시키는 일없이 재차 전원공급을 개시해서 장치의 동작의 재개했을때 유지되어 있도록 하여 이 데이타를 기본으로 캐시메모리내의 데이타를 복원한다.
더욱 구체적으로 설명한다.
캐시메모리를 마련하는 것에 의해 리라이트가 느린 플래시메모리의 결점을 커버할수 있음과 동시에 직렬버퍼에 의해서 외부인터페이스가 접속되어 있고, 고속인 랜덤액세스가 불가능한 플래시메모리에 대해서도 캐시메모리의 랜덤액세스는 가능하다. 이들은 외관상 CPU의 메모리버스에 직결한 플래시메모리를 구비하는 주기억으로써 사용할 수 있게 된다.
상술한 바와 같이 캐시메모리에 저장하고 있는 데이타의 논리어드레스를 기억하는 어드레스어레이와 캐시메모리에 저장하고 있는 데이타의 오래됨을 나타내는 액세스이력을 기억하는 기본영역을 마련하는 것에 의해, 우선 캐시메모리에 존재하는 어드레스의 액세스인지 아닌지를 판단할 수 있다. 다음에 캐시메모리에 존재하지 않는 어드레스의 액세스라면 액세스이력상 최후의 액세스가 발생하고나서 가장 액세스되고 있지 않은 데이타를 찾아내어 주기억인 플래시메모리에 라이트백하고, 빈영역을 만들어서 새로운 데이타를 저장하는 동작을 실행하게 한다. 이것은 캐시메모리의 치환 알고리듬으로써 알려져 있는 것이다.
또, 캐시메모리내에 항상 빈영역을 확보해두는 것에 의해 CPU에서 데이타의 라이트요구가 있고, 그 데이타의 어드레스가 캐시메모리에 저장되어 있지 않은 경우에 요구가 있고나서 상기 데이타를 저장하기 위한 빈영역을 만들고 있던 경우에 라이트동작이 느린 플래시메모리에서는 큰 성능저하로 되므로 미리 준비하고 있는 빈영역에 즉시 데이타를 저장하고, CPU로 부터의 라이트데이타전송이 종료하고나서 플래시메모리내에 빈영역을 만드는 처리를 시작하면 좋다.
게다가, 또 장치의 폭주에 대처하기 위한 라이트프로텍트플래그를 구비한 구성으로 하고, 이 플래그의 리라이트나 라이트금지영역의 리라이트시에 CPU에 인터럽트를 실행하고, 이것에 대응해서 CPU가 경고를 실행하는 구성으로 해두는 것에 의해서 CPU가 이상한 리라이트를 실행하려고 하는가 아닌가를 파악할수 있게 된다.
그리고, CPU가 특정한 레지스터에 대한 리라이트를 실행하지 않으면 저장데이타의 라이트를 실행하지 않게 하는 것에 의해 장치폭주등의 이상시의 주기억내의 데이타의 리라이트를 방지할 수 있다.
또, CPU에서 상기의 인터럽트를 받았을때에는 사용자에 대해서 데이타의 리라이트를 실행해야할지 아닌지를 확인하는 루틴을 실행하는 구성으로 해두면 좋다. 사용자는 이러한 확인 루틴에 의해 장치가 폭주하고 있는지 아닌지를 판단해서 적절히 정보처리장치에 지시를 부여하게 된다. 이 경우, 물론 장치의 동작의 중단이나 재개등의 지시가 가능한 구성으로 해두는 것이 바람직하다.
제98도를 참조해서 상기 목적을 달성하는 정보처리장치의 작용을 설명한다. CPU(4101)에서 기억장치(4104)로의 리드액세스에 의해 캐시메모리블럭(4300)이 히트한 경우는 캐시메모리블럭(4300)에서 목적의 데이타를 리드한다. 리드액세스에 의해 캐시메모리블럭(4300)이 미스히트한 경우 CPU(4101)은 기억장치(4104)에서 직접 데이타를 리드한다. 이것에 따라 그 데이타와 어드레스를 캐시메모리블럭(4300)내의 새로이 선택된 레지스터에 유지된다. 새로운 레지스터의 선택은 상술한 치환조작(치환 알고리듬)에 따라서 실행된다. 또, 이 새로이 선택된 레지스터내에 전회 이전의 액세스에 의해 갱신된 어드레스와 데이타가 유지되어 있는 경우는 그 어드레스와 데이타를 기억장치(4104)로 라이트백한후 새로운 라이트어드레스와 데이타를 유지한다. 본 발명에서 기억장치(4104)는 플래시메모리로 구성되므로 그 라이트시에 상기 블럭이 미소거인 경우는 그 상기 블럭을 소거하고나서 라이트를 실행한다.
한편, 본 발명의 캐시메모리블럭(4300)은 카피백방식의 캐시이므로, CPU(4101)로 부터의 라이트액세스에 의해 캐시메모리블럭(4300)이 히트한 경우는 캐시메모리블럭(4300)내의 상기 레지스터를 갱신하는 것만으로 기억장치(4104)로의 라이트는 생략된다. 즉, 다음에 치환될때 기억장치(4104)가 해당하는 블럭으로 라이트백된다. 즉, 이 기억장치(4104)의 해당블럭의 데이타가 결국 소거된다. 따라서, 본 발명에서는 그 블럭이 아직 소거되어 있지 않을때에는 그 블럭의 소거를 사전에 실행한다. 이 사전 소거처리에서 CPU(4101)은 그 소거가 완료한 블럭에 즉시 라이트를 실행하는 것은 아니므로, 그 소거처리의 완료를 기다릴 필요는 없다. 그 후, 그 블럭으로의 데이타의 라이트백을 실행할 필요가 발생했을때에는 그것에 선행하는 소거처리가 생략되므로(이미 실행되고 있으므로) 액세스시간이 단축된다. CPU(4101)로 부터의 라이트액세스에 의해 캐시메모리블럭(4300)이 미스히트한 경우는 캐시메모리블럭(4300)내의 치환대상 레지스터가 새로 선택되고, 이 레지스터가 갱신되었으면 이 레지스터에 저장되어 있는 갱신완료의 데이타를 기억장치(4104)로 라이트백하고 나서 CPU(4101)로 부터의 상기 액세스어드레스와 데이타를 캐시메모리블럭(4300)내의 해당 레지스터에 저장한다. 갱신완료가 아니면 치환대상 레지스터를 갱신한다. 상술한 기억장치(4104)로 라이트백하는 처리는 캐시메모리블럭(4300)의 리드액세스 미스히트시의 기억장치(4104)로의 라이트처리와 동일하다.
다음에 어드레스등록수단의 데이타를 유지하는 것에 대한 동작을 설명한다. 캐시메모리에 저장되어 있는 데이타는 CPU에서 고속으로 리드, 라이트할 수 있게 하기 위해 일시적으로 캐시메모리에 놓여져 있는 데이타이다. 그리고, 캐시메모리의 용량은 한정되어 있으므로 CPU에서 액세스될 가능성과 빈도가 가장 높은 것으로 되는 데이타가 선택되어 놓여져 있다. 만약 캐시메모리상에 놓여져 있지 않은 데이타가 연속해서 액세스되면 현저하게 성능이 저하하게 된다. 이 사태가 일어나는 일이 없도록 캐시메모리의 구성이나 치환 알고리듬등을 최적화할 필요가 있다. 그러나, 아무리 최적화해도 캐시메모리의 데이타가 휘발해버려 캐시메모리에 전혀 데이타가 저장되어 있지 않을때에 모든 리드액세스는 미스히트로 되어 성능이 현저하게 열화하게 된다. 캐시메모리가 어느 정도의 데이타를 주기억에서 빼내을때까지 리드액세스속도는 늦어진다. 그러나, 전원공급정지에 의해서 캐시메모리에 데이타가 휘발해버려도 어드레스등록수단의 비교적 적은 정보만 유지되어 있으면 캐시메모리내의 데이타를 전원공급 차단전의 상태로 복귀시킬 수 있다. 즉, 어드레스등록수단에 등록되어 있는 어드레스의 정보를 주기억에서 캐시메모리에 전개하면 좋다. 어드레스등록수단의 데이타유지의 방법으로써, 어드레스등록수단의 메모리를 전지백업에 의해 데이타를 유지한다. 또는 어드레스등록수단을 랜덤하게 리드, 라이트할 수 있는 불휘발성의 메모리를 사용한다. 그리고, 다른 방법으로써 전원공급차단시에 불휘발성 메모리인 주기억메모리의 일부 또는 같은 메모리에 어드레스등록수단의 데이타를 세이브하여 전원공급재개시에 재차 어드레스등록수단으로 라이트백하는 수단이 있다.
실시예 1
본 발명의 제1실시예를 설명한다.
반도체파일시스템의 실시예의 블럭도를 제1도에 도시한다. 본예는 로컬메모리(1006), 제어용 마이컴(제어부)(1007), JEIDA인터페이스버스(1008)과의 데이타의 수수를 컨트롤하는 카드컨트롤러(컨트롤러)(1009)를 갖는다. 로컬메모리(1006)은 데이타저장용 불휘발성 메모리(1001), 어튜리뷰트정보저장용 불휘발성메모리(1002), 제어테이블(1003), 라이트버퍼(1004) 및 가비지버퍼(1005)를 갖는다. 상세한 회로도를 제2도, 제3도에 도시한다. 본 실시예는 카드컨트롤러(1009), 마이컴(H8/325)(1007), 클럭발진기(1010), 파워온리세트(1011), VPP스위칭회로(1012), PSRAM(의사SRAM) (1013) (512KW×8비트)×1개, FLASH(1014) (1MW×8비트)×8개, MASKROM(1015) (512KW×8비트)×6개로 구성되어 있다. 카드컨트롤러(1009)는 반도체파일시스템의 JEIDA(Japan Electronic Industry Development Association 일본전자공업 진흥협회) 인터페이스측과의 인터페이스부분이고, 호스트 부터의 데이타의 수수는 반드시 이 카드컨트롤러(1009)를 거쳐서 처리가 실행된다. PSRAM(1013), FLASH(1014), MASKR OM(1015)의 액세스커맨드신호는 이 카드컨트롤러(1009)에서 생성하고 있다. FLASH라이트시에 필요로 되는 VPP(1016)은 마이컴(1007)의 포트P41(1017)에 의해 VPP스위칭회로(1012)의 전환은 실행하여 FLASH(1014)로의 VPP(1016)의 공급의 온/오프를 실행하고 있다. 본 반도체파일시스템은 20MHz의 클럭발진기(1010)를 탑재하고 있고, 이 클럭신호(1018)에 동기해서 카드컨트롤러(1009)의 마이컴(1007)은 동작하고 있다. 파원온리세트IC(1011)은 전원투입시에 카드컨트롤러(1009) 및 마이컴(1007)의 리세트신호(1019)를 만드는 회로이다.
또, 본 반도체파일시스템에서는 FLASH(1014)와 MASKROM (1015)의 실장용량의 변경을 외부핀MCC0~3(1020, 1021, 1022, 1023)에 의해 실행할 수 있게 되어 있다.
다음에 인터페이스사양을 설명한다. 제4도와 같이 인터페이스 컨트롤러(1024)를 거쳐 호스트측의 시스템버스(1025)에 접속하여 호스트측과의 파일데이타의 수수를 실행한다.
다음에 본 반도체파일시스템내의 각 블럭에 대해서 설명한다.
우선, 카드컨트롤러(1009)에 대해서 설명한다. 블럭구성을 제5도에 도시한다. 카드컨트롤러(1009)는 호스트측 어드레스(1043)을 디코드하는 디코더A(1044), 호스트와의 파일데이타의 수수구인 데이타레지스터부(1045), 상술한 I/O공간의 레지스터로 구성되는 레지스터부(1046), 데이타버스전환부(1047), 로컬메모리(1006)의 어드레스(1048)을 생성하는 로컬어드레스생성부(어드레스생성부)(1049), 이 로컬어드레스(1048)을 디코드하는 디코더B(1050), 제어용 마이컴(1007)의 어드레스를 디코드하는 디코더C(1052), 클럭발진기(1010)으로 부터의 20MHz의 클럭(1018) 및 그것을 10MHz, 5MHz로 분주하고 각 블럭으로 분배하는 클럭분배분주부(1053), 호스트측의 컨트롤신호(1054)를 받아서 각 블럭의 컨트롤신호(1055) 및 로컬메모리의 컨트롤신호(1056)을 생성하거나 호스트측으로의 인터럽트신호(1057)이나 제어용마이컴(1007)로의 인터럽트신호(1058)을 생성하는 제어부(1059)로 구성되어 있다. 여기에서, 호스트어드레스버스(1043)을 SA, 로스트데이타버스(1060)을 SD, 마이컴어드레스버스(1051)을 PA, 마이컴데이타버스(1061)을 PD, 로컬어드레스버스(1048)을 LA, 로컬데이타버스(1062)을 LD로 한다.
다음에 카드컨트롤러의 각 블럭에 대해서 설명한다. 제6도에 데이타레지스터부(1045)의 블럭도를 도시한다. 데이타레지스터부(1045)는 제1데이타레지스터(1063)과 제2데이타레지스터(1064)로 구성되고, 제1데이타레지스터(1063)은 SD(1060)에 접속되어 제1데이타레지스터(1063), 제2데이타레지스터(1064) 모두 데이타버스전환부(1047)에 접속되어 있다. 제1데이타레지스터(1063)은 호스트로 부터의 16비트데이타를 래치하여 8비트마다 로컬데이타버스로 출력하는 기능, 제2데이타레지스터(1064)의 16비트데이타를 래치하여 호스트측으로 출력하는 기능 및 로컬메모리로부터의 16비트데이타를 레치하여 호스트측으로 출력하는 기능을 갖는 레지스터이다. 제2데이타레지스터(1064)는 로컬메모리로 부터의 데이타를 8비트마다 래지하여 제1데이타레지스터(1063)으로 출력하는 16비트레지스터이다. 또 이들 컨트롤신호(1055)는 제어부(1056)에서 생성된다.
제7도에 로컬어드레스생성부(1049)의 블럭도를 도시한다. 로컬어드레스생성부(1049)는 로컬어드레스(1048)의 상위어드레스를 출력하는 뱅크레지스터(1065)와 섹터전송시의 하위어드레스를 발생하는 9비트카운터(어드레스연속발생수단 및 멀티섹터전송에 있어서 1섹터분의 데이타의 입출력이 종료한후 상기 한쪽의 섹터어드레스 저장수단이 갖는 물리섹터어드레스를 다른쪽의 섹터어드레스 저장수단이 받기 위한 신호를 출력하는 수단이다)(1066) 및 이 9비트카운터(1066)의 출력(1067)과 PA(1051)을 선택하는 멀티플렉서(1068)로 구성된다. 뱅크레지스터(1065)는 마이컴(1007)측에서 액세스가능한 레지스터군으로써, 각각 PD(1061)에 접속되고, 디코더C(1052)에 의해 선택된다. 이 중에는 섹터어드레스 저장수단인 제1파일뱅크레지스터(1651)과 제2파일뱅크레지스터(1652)가 포함된다.
또, 9비트카운터(1066)과 멀티플렉서(1068)의 컨트롤신호(1055)는 제어부(1059)에서 생성한다.
제8도에 제어부(1059)의 블럭도를 도시한다. 제어부(1059)는 섹터전송의 제어를 위해 마이컴(1007)의 리드, 라이트하는 제어레지스터(1069) 및 디코더A(1044)의 출력, 제어레지스터(1069)의 출력 및 호스트측으로 부터의 컨트롤신호(1054)를 받아서 각 블럭의 컨트롤신호(1055), 로컬메모리의 컨트롤신호(1056) 및 인터럽트신호(1057),(1058)을 생성하는 제어신호생성부(1070)으로 구성된다. 제어레지스터(1069)는 마이컴(1007)측에서 액세스할 수 있는 레지스터군으로써, 각각 PD(1061)에 접속되고, 디코더C(1052)에 의해 선택된다.
다음에 본 실시예의 동작을 기술한다. 최초에 섹터전송에 대해서 설명한다. 섹터전송에는 호스트에서 PSRAM내의 라이트버퍼로의 섹터전송을 실행하는 섹터라이트, PSRAM, FLASH 및 MASKROM에서 호스트로의 섹터전송을 실행하는 섹터리드, 이들의 섹터전송을 여러번 실행하는 멀티전송, ECC데이타를 갖는 긴전송이 있다. 이들 선택은 레지스터(1046) (제5도)내에 있는 커맨드레지스터(도시하지 않음)에 라이트된 커맨드를 마이컴이 해석하고, 제8도에 도시한 섹터전송 컨트롤레지스터(1692)에 전송모들 라이트하는 것에 의해 실행되고, 섹터전송기동 레지스터(1691)에 마이컴이 세트한후에 호스트측의 기동에 의해 섹터전송을 개시한다.
우선, 섹터라이트전송의 동작에 대해서 제9도의 하드웨어구성, 제10도의 타이밍도를 사용해서 설명한다. 본 실시예에서는 PSRAM (1013)을 8비트버스로 카드컨트롤러에 접속했으므로, 다음의 순서로 섹터라이트전송을 실행하였다. 호스트로 부터의 16비트의 데이타(1060)을 제1데이타레지스터(1063)에 저장하고, 제어부(1069)에서 하위 8비트, 상위 8비트용의 선택신호(A)(1071), (B)(1072)를 작성한다. 이 신호를 기본으로 멀티플렉서(1073)에 의해 (A)(1071)이 어서트시에는 하위 8비트의 (B)(1072)가 어서트시에는 상위 8비트의 데이타를 LD(1062)로 출력하고 있다. PSRAM(1013)용의 CEN(1074), WEN (1075)에 대해서는 제어부(1059)에서 신호를 작성하고 있다. 로컬어드레스(1048)은 제어부(1059)에서 IOWRN(1076)에 동기해서 작성한 카운트업신호(1077)을 로컬어드레스생성부(1049)로 출력하고, 9비트카운터(1066)에서 하위어드레스(1067)을 생성하고, 물리섹터번호(1078)와 합성하는 것에 의해 작성하여 PSRAM(1013)으로 출력한다. 타이밍에 대해서는 제10도에 도시한 바와 같이 SD(1060)에서 입력되는 16비트데이타를 IOWRN(1076)의 상승에지에서 제1데이타레지스터(1063)에 래치한다. 그후, 이 데이타를 IOWRN(1076)의 상승에지와 20MHz의 클럭(1079)를 사용해서 작성한 (A) (1071), (B) (1072), CEN(1074), WEN(1075) 및 카운트업의 타이밍을 이들에 맞춘 LA(1048)을 사용해서 512워드×8비트의 데이타로써 하위8비트, 상위8비트의 순으로 PSRAM(1013)에 라이트한다. 또, 도면중에 숫자는 클럭(1079)의 어떤 타이밍에서 동기했는지를 나타내고 있다. 이 섹터전송후에 내부처리로써 마이컴(1007)이 PSRAM에서 FLASH로의 데이타전송을 1바이트씩 실행한다.
다음에 PSRAM으로 부터의 섹렉터리드전송과 FLASH로 부터의 섹터리드전송의 동작에 대해서 제11도, 제12도의 각각의 하드웨어구성을 사용해서 설명한다. 타이밍에 대해서는 FLASH(1014), PSRAM (1013) 모두 같은 순서로 섹터리드전송하고 있으므로, 제13도의 공통의 타이밍도를 사용해서 설명한다. 섹터리드전송의 개시전에 선두의 1워드의 데이타를 FLASH(1014) 또는 PSRAM(1013)에서 제2데이타레지스터(1064)의 하위8비트, 상위8비트 래치해둔다(이 처리를 이하 프리리드라 한다). 이 프리리드를 위한 LA(1048)의 카운트업신호(1077) 및 PSRAM-CEN(1074), FLASH-CEN(1080), PSRAM-OEN(1081), FLASH-OEN(1082), (C) (1083), (D) (1084)는 섹터전송 전처리시의 섹터전송 기동레지스터세트의 타이밍을 기본으로 제어부(1059)에서 생성하고 있다. 다음에 PSRAM(1013) 또는 FLASH(1014)로 부터의 8비트데이타를 (C)신호(1083)의 상승의 에지에서 제2데이타레지스터(1064)의 하위8비트측으로 페치하고, 다음의 8비트데이타를 D신호(1084)의 상승에지에서 상위 8비트측으로 페치한다. 이 데이타를 16비트 데이타로 해서 제1데이타레지스터(1063)에 (E) 신호(1085)의 상승에지에서 페치하고, (E) (1085)가 "H"로 되어 있는 기간에 호스트측 데이트버스SD(1060)으로 16비트데이타를 출력한다.
이와 같이 해서 512워드×8비트를 256워드×16비트의 연속데이타로 변환하고 있다. 타이밍에 대해서는 IORDN(1086)의 하강의 에지를 클럭(1079)와 동기시켜 PSRAM-CEN(1074), PSRAM-OEN(1081), (C) (1083), (D) (1084)의 신호를 도면중의 숫자의 타이밍에서 작성하고 있다. (E) (1085)는 IORDN(1086)을 반전한 것이다. 또, FLASH-CEN(1080), OEN(1082)에 대해서는 어드레스 전환시, 네게이트할 필요가 없으므로 데이타전송중에 어서트한 상태 그대로이다.
다음에 MASKROM으로 부터의 섹터리드전송의 동작에 대해서 제14도의 하드웨어구성과 제15도의 타이밍도를 사용해서 설명한다. 본 예에서는 MASKROM(1015)의 액세스타임이 늦어 PSRKAM 및 FLASH의 섹터리드전송과 같은 8비트의 인터리이브전송을 할 수 없으므로 16비트버스로 카드컨트롤러(1009)에 접속하고, 제2데이타레지스터(1064)를 거치지 않고 제1데이타레지스터(1063)에 16비트길이로 레치하도록 하고 있다. 이 경우 로컬어드레스(1048)의 발생은 256워드로 좋고 9비트카운터(1066)의 출력중 하위바이트, 상위 바이트의 전환에 사용되고 있는 LA0(1087)은 불필요하게 되므로 LA1~19(1088)을 MASKROM의 어드레스 A0~18에 입력하고, CEN(1089)를 하위측, 상위측 공통으로 하고 있다. 타이밍에 대해서는 (F)신호(1090)의 상승에지에서 제1데이타레지스터(1063)으로 데이타를 페치하고, (F)신호(1090)의 어서트시에 제1데이타레지스터(1063)의 데이타를 호스트로 출력한다. (F)신호(1090)은 IORDN(1086)을 반전한 것이다. 어드레스카운트업의 타이밍은 IORDN(1086)의 상승 에지를 20MHz의 클럭(1079)로 동기하여 도면중의 숫자의 타이밍에서실행하고 있다.
다음에 멀티섹터전송에 대해서 기술한다. 멀티섹터전송은 섹터전송의 반복이고, 전송의 방법은 상술한 1섹터의 전송과 같다. 여기에서, 1섹터전송과 1섹터전송사이의 물리섹터번호의 전환은 다음과 같이 하고 있다. 그 방법은 제16도의 하드웨어구성도와 제17도의 타이밍도를 사용해서 설명한다. 마이컴(1007)의 제2파일뱅크 레지스터(1091)을 폴링하여 "FFFFh"이라면 마이컴(1007)이 제2파일뱅크 레지스터(1091)로 물리섹터번호(본 예에서는 물리섹터번호m)를 라이트한다. 다음에 9비트 카운터(1066)에 의해 512회 카운트하고, 512번째에 리플신호(1092)가 출력된다. 이 리플신호(1092)의 상승에 의해 제2파일뱅크 레지스터(1091)의 16비트의 방류데이타인 물리섹터번호를 제1파일뱅크 레지스터(1093)에 래치한다. 래치함과 동시에 LA(1048)로 출력한다. 이 방식에 의해 511번지에서 0번지로 변화하는 타이밍에서 섹터번호의 세트를 할 수 있어 멀티전송이 가능하게 된다. 물리섹터번호의 전환후에 카드컨트롤러(1009)가 제2파일뱅크 레지스터(1091)을 물리섹터번호로써 할당되어 있지 않은 데이타 "FFFFh"로 세트하고, 마이컴(1007)이 이것을 폴링에 의해 확인하면 다음의 물리섹터번호(본 예에서는 n)를 제2파일뱅크 레지스터(1091)로 라이트한다. 상기의 처리를 다수 섹터분 반복한다. 반복회수는 레지스터부(1046) (제5도)내에 있는 섹터카운트레지스터(도시하지 않음)에 라이트된 섹터수를 마이컴이 리드하고, 그것을 제8도에 도시한 멀티전송사이즈 레지스터(1693)에 라이트하는 것에 의해 제어부에서 관리하고 있다. 또, 최초의 섹터에 대해서는 섹터전송전처리에 의해 제2파일뱅크 레지스터(1091)에 물리섹터번호를 라이트하고, 섹터전송기동 레지스터세트시에 제2파일뱅크 레지스터(1091)에서 제1파일뱅크 레지스터(1093)으로 물리섹터번호의 전송을 실행하고 있다. 그후, 자동적으로 제2파일뱅크 레지스터(1091)을 "FFFFh"로 세트하도록 하고 있다.
다음에 긴전송에 대해서 기술한다. 전송방법은 상술한 1섹터의 섹터전송과 동일하다. 단, 섹터라이트전송의 경우에는 포스트측으로 부터의 256워드×16비트데이타 입력후에 8비트의 ECC데이타가 4바이트 출력되면 카드컨트롤러에서는 그동안 섹터전송의 종료를 연장하여 ECC데이타의 라이트를 실행하도록 하고 있다. 또, 섹터리드전송의 경우에는 호스트로의 256워드×16비트데이타의 출력후에 섹터전송의 종료를 연장하여 카드컨트롤러에서 8비트의 ECC데이타를 4바이트생성하여 출력한다.
다음에 로컬어드레드 생성동작에 대해서 설명한다.
최초에 섹터전송시의 로컬어드레드 생성동작에 대해서 제18도와 제19도의 하드웨어 구성도을 사용해서 설명한다. 우선, 물리섹터번호의 산출동작을 제18도를 사용해서 설명한다. 호스트가 실린더번호, 헤드번호, 섹터번호를 레지스터부(1046)내의 각 레지스터로 라이트한다. 다음에 마이컴(1007)이 이들 3개의 데이타를 리드하여 해석해서 논리섹터번호를 변환한다. 또, 로컬어드레드 생성부(1049)내의 논리섹터테이블 설정레지스터(1094)에 논리섹터번호를 라이트한후 마이컴어드레스맵상의 논리섹터테이블(1095)를 리드하는 것에 의해 지정한 논리섹터의 물리섹터번호가 PSRAM의 논리섹터테이블(1095)에서 마이컴(1007)로 폐치된다. 또, 논리섹터테이블(1095)라는 것은 논리섹터번호에 대응하는 물리섹터번호가 저장되어 있는 것이다.
다음에 동작을 제19도를 사용해서 기술한다. 산출한 물리섹터번호를 마이컴(1007)에 제2파일뱅크 레지스터(1091)에 라이트한다. 그후 전송개시시에 제2파일뱅크 레지스터(1091)의 물리섹터번호를 제1파일뱅크 레지스터(1093)에 래치하여 15비트(1078)을 출력한다. 또, 9비트카운터에서 0~511의 직렬어드레스 9비트(1067)을 출력한다. 이 15비트(상위) (1078)과 9비트(하위) (1067)을 합쳐서 24비트의 로컬어드레드로 하고, 이 상위 4비트를 입력으로 해서 디코더B(1050)에서 MASKROM-CEN(1089), FLASH-CEN(1080)을 생성한다. 하위20비트는 LA0~19로써 출력한다.
마이컴이 로컬메모리를 액세스하는 경우의 로컬어드레스 생성동작에 대해서 파일데이타의 액세스를 예로해서 제20도의 마이컴의 어드레스맵, 제21도의 파일영역의 물리어드레스맵, 제22도의 로컬어드레스 생성순서를 사용해서 설명한다. 본 실시예에서는 제20도에 도시한 마이컴메모리맵상의 어드레스를 지정하는 것에 의해 512B(1섹터)의 윈도우(1096)을 통해서 제21도에 도시한 16MB의 FLASH공간(1097)과 MASKROM공간(1098)을 액세스할 수 있게 하고 있다. 구체적으로는 액세스하고자 하는 물리섹터번호를 제22도의 제1파일뱅크 레지스터(1093)으로 마이컴이 라이트한후 제20도의 마이컴어드레스맵상의 파일데이타 윈도우(1096)을 마이컴이 리드/라이트하면 제22도에 도시한 바와 같이 마이컴어드레스하위 9비트가 로컬어드레드의 하위9비트(1099)에, 제1파일뱅크 레지스터의 물리섹터번호가 상위어드레스(1100)에 할당된다. FLASH-CEN(1080), MASKROM-CEN(1091)에 대해서는 상위4비트를 디코드해서 생성하였다. 이상의 방식에 의해 마이콤의 어드레스공간보다 넓은 파일데이타공간의 액세스를 가능하게 하였다.
다음에 제어테이블내의 논리섹터테이블의 액세스를 예로 해서 제20도의 마이컴의 어드레스맵, 제23도의 PSRAM의 물리어드레스맵, 제24도의 로컬어드레드 생성순서를 사용해서 설명한다. 제20도에 도시한 메모리맵상의 논리섹터테이블 윈도우(1101)의 어드레스를 지정하는 것에 의해 2B의 윈도우를 통해서 제23도에 도시한 PSRAM내의 64KB의 논리섹터테이블(1095)를 액세스할 수 있게 하고 있다. 구체적으로는 논리섹터번호를 논리섹터테이블 설정레지스터(1094)에 마이컴이 라이트한 후 마이컴어드레스맵상의 논리섹터테이블 윈도우(1101)을 액세스하면 제24도에 도시한 바와 같이 마이컴어드레스(1051)의 상위 15비트에서 로컬어드레스 상위3비트(LA16~LA18)를 논리회로에 의해 011로 설정하고(1102), 최하위비트를 그대로 로컬어드레스의 최하위비트로 출력한다(1103). 또, 제1파일뱅크 레지스터의 하위15비트를 통과하는 것에 의해 로컬어드레스 LA1~LA15에 설정한다(1104). 이와 같이 해서 PSRAM으로의 로컬어드레스 LA0~18을 생성한다. 또, 다른 테이블에 대해서는 물리섹터테이블(1105), 블럭플래그테이블(1106), 블럭스테이스테이블(1107)은 제1파일뱅크 레지스터(1093)을 사용한다. 또, 라이트버퍼(1004)는 라이트버퍼 뱅크 레지스터, 가비지버퍼(1005)는 가비지버퍼뱅크 레지스터를 사용한다. 소거관리테이블(1108)은 윈도우의 크기와 물리공간의 크기가 같기 때문에 뱅크레지스터를 사용하지 않고 논리회로만으로 상위어드레스를 발생하고 있다.
다음에 데이타버스의 전환동작에 대해서 제25도의 하드웨어구성도를 사용해서 설명한다. PD0~7(1061), 로컬데이타버스(1062)의 하위8비트LD0~7은 각각 쌍방향버스이고, 이것을 카드컨트롤내에서 입력버스와 출력버스로 분리하고 있다.
로컬데이타버스(1062)의 상위8비트LD8~15는 상위바이트측의 MASKROM(1015) 전용의 입력버스이다. TFDO0~7, TFDO0~7은 데이타레지스터부(1045) 및 레지스터부(1046)의 출력, 입력버스이다. 데이타버스전환부(1047)에서 제어부(1059)에서 생성한 컨트롤신호(1055)를 사용하여 버스의 전환을 실행하고 있다.
다음에 제어테이블의 사용방법에 대해서 설명한다. 제어테이블은 논리섹터테이블, 물리섹터테이블, 소거관리테이블, 블럭플래그테이블, 블럭스테이스테이블의 5개의 테이블로 구성되어 있다. 최초에 제26도를 사용해서 FLASH섹터리드전송시의 논리섹터테이블(1095)의 역할에 대해서 설명한다. 논리섹터테이블(1095)는 논리섹터번호에 대응한 멀티섹터번호가 저장되어 있는 64Kbyte의 테이블이다. 이 저장되어 있는 물리섹터번호는 멀티섹터테이블(1005)의 어드레스와 일치하고 있으며, "1~16384"는 유효섹터, "FFFFh"는 라이트가능섹터, "0"은 무효섹터라 정의하고 있다. 호스트가 실린더번호Low(1031) 및 High(1032) 레지스터에 실린더번호를, SDH레지스터(1033)에 헤드번호를, 섹터번호레지스터(1030)에 섹터번호를 라이트한다. 그후, 호스트가 커맨드를 라이트하면 마이컴(1007)이 그것을 리드, 디코드하여 논리섹터번호를 산출한다.이 논리섹터번호가 나타내는 논리섹터테이블(1095)의 번지를 참조하여 그 번지의 물리섹터번호를 카드컨트롤러의 제2파일뱅크 레지스터(1091)에 마이컴(1007)이 라이트한다. 제2파일뱅크 레지스터(1091)에서 제1파일뱅크 레지스터(1093)으로 전송하고, 이 제1파일뱅크 레지스터(1093)의 물리섹터번호를 로컬어드레스의 상위 15비트(1078)로 한다. 9비트카운터(1066)에 의해 하위9비트(1067)을 512회 카운트하는 것에의해 FLASH상의 임의의 1섹터분의 데이타를 액세스할 수 있다.
다음에 물리섹터테이블(1105)에 대해서 제27도를 사용해서 설명한다. 물리섹터테이블(1105)는 물리섹터번호에 대응한 논리섹터번호가 저장되어 있는 64Kbyte의 테이블이다. 이 저장되어 있는 논리섹터번호는 논리섹터테이블의 어드레스와 일치하고 있으며, "1~16384"는 유효섹터, "FFFFh"는 라이트가능섹터, "0"은 무효섹터라 정의하고 있다. 이 테이블은 섹터라이트전송후의 내부처리, 즉 라이트버퍼에서 FLASH로의 라이트시, 라이트포인터가 가리키는 물리섹터가 속하는 블럭에 대해서 가비지컬렉션하는지 하지않는지의 판정에 사용한다. 구체적으로는 그 블럭의 물리섹터테이블(1105) (본 예에서는 00400H에서 004FFh)를 마이컴(1007)이 검색하고, "0"이 존재한 경우, 즉 무효섹터가 존재한 경우 가비지컬렉션을 개시한다. 여기에서 말하는 라이트포인터라는 것은 라이트를 실행하는 FLASH의 물리섹터를 표시하는 포인터로써, 마이컴(1007)로 관리하고 있다. 여기에서, 가비지컬렉션에 대해서 제28도를 사용해서 설명한다. 마이컴(1007)은 그 FLASH의 블럭(본 예에서는 블럭n)중의 유효섹터의 데이타만을 콘덴스하면서 가비지버퍼(1005)로 전송한다. 그후, 그 블럭을 소거하여 가비지버퍼(1005)의 데이타를 같은 블럭에 라이트한다. 즉, 콘덴스한 데이타을 FLASH의 같은 블럭에 라이트하는 처리를 실행한다. 그후, 이 콘덴스처리에 맞춰서 물리섹터테이블과 논리섹터테이블을 갱신한다. 물리섹터테이블의 갱신은 상기와 같은 콘덴스처리가 실행된다. 논리섹터테이블은 이 콘덴스된 물리섹터테이블을 기본으로 갱신된다.
다음에 소거관리테이블에 대해서 제29도를 사용해서 설명한다. 소거관리테이블(1108)은 FLASH의 소거관리를 실행하는 512B의 테이블로써, FLASH의 블럭마다의 소거회수(0~65536)을 FLASH의 물리블럭번호의 순번으로 저장하고 있다. 본 테이블에서는 1칩16블럭의 칩을 최대16칩까지 실장할 수 있고, 256블럭까지 대응할 수 있다.
다음에 블럭플래그테이블에 대해서 제30도를 사용해서 설명한다. 블럭플래그테이블(1106)은 FLASH의 블럭마다 라이트가능상태를 나타내는 256B의 테이블로써, FLASH의 물리블럭번호의 순번으로 저장하고 있다. 본 테이블의 내용인 교체요구플래그(1109), 교체완료플래그(1110), 파괴플래그(1111), 가득참플래그(1112)에 대해서 다음에 설명한다. 교체요구플래그(1109)는 블럭의 소거회수가 n×1000회(n은 자연수)를 넘을때마다 마이컴에 의해 세트되고, 전원투입시에 마이컴이 이 플래그를 봐서 그 블럭의 데이타와 소거회수가 최소인 블럭의 데이타를 교체한다. 이 플래그는 교체처리후에 클리어된다. 교체완료플래그(1110)은 이때 교체가 실행된 블럭에 세트되어 재차 교체처리가 실행되지 않도록 하고 있다. 이와 같이 엑세스빈도가 높은 데이타와 낮은 데이타를 교체하는 것에 의해 FLASH내의 소거회수의 분산화를 도모하고 있다. 파괴플래그(1111)은 소거관리테이블을 참조하여 소거/라이트할 수 없게 된 블럭을 파괴블럭으로 해서 "1"을 설정한다. 가득참플래그(1112)는 블럭이 유효섹터 및 무효섹터에 의해 가득차게 되어 라이트가능섹터가 없게된 경우에 "1"를 설정한다. 이 플래그는 섹터라이트전송후의 내부처리에 있어서, 라이트포인터가 가리키는 물리섹터가 속하는 블럭에 라이트가능섹터가 있는지 없는지를 찾아내는데 사용한다. 여기에서, 섹터라이트전송후의 내부처리의 흐름도를 제31도에 도시한다. 가득참플래그(1112)가 "0"인 경우(1113), FLASH의 라이트가능섹터로 라이트버퍼의 데이타를 라이트(1114)하고 종료(1115) 한다. 가득참플래그가 "1"(1113)이고, 파괴플래그가 "0"(1116)이고, 그 블럭내에 가비지가능한 무효섹터가 있는(1117) 경우 가비지컬렉션(1118)후에 라이트(1114)하고 종료(1115)한다. 가득참플래그가 "1"(1113)이고, 파괴플래그가 "0"(1116)이고, 그 블럭내가 전부유효섹터인(1117) 경우 라이트포인터를 다음의 블럭으로 진행(1119)시켜서 내부처리를 블럭플래그테이블의 참조(1113)부터 다시한다. 파괴플러그가 "1"(1116)의 경우에는 라이트포인터를 다음의 블럭으로 진행(1119)시켜서 내부처리를 블럭플래그테이블의 참조(1113)부터 다시한다. 이 분기는 상술한 물리섹터테이블의 검색에 의해 실행한다.
다음에 블럭스테이스테이블(1107)에 대해서 제32도를 사용해서 설명한다. 본 테이블은 FLASH의 블럭마다 라이트섹터수가 FLASH의 물리블럭번호의 순번으로 저장되어 있는 256byte의 테이블이다. 라이트섹터수는 0~128이고, 128로 가득찬다. 이 테이블의 데이타는 다수섹터로 구성되는 데이타를 동일 블럭에 라이트하는 경우의 블럭에 얼마나 라이트가능섹터가 존재하는지 조사하기 위해 사용한다.
디들 정보 테이블의 전원차단시의 처리를 제33도를 사용해서, 전원투입시의 처리를 제34도를 사용해서 설명한다. 물리섹터테이블(1105), 소거관리테이블(1108), 블럭플래그테이블(1106)은 PSRAM과 FLASH 쌍방의 영역에 존재하는 테이블로써 PSRAM상의 테이블은 비보존테이블에서 수시로 갱신되지만 FLASH상의 테이블은 보존용 테이블에서 전원차단시에만 갱신된다. 전원차단시는 PSRAM상의 물리섹터테이블(1105), 소거관리테이블(1108), 블럭플래그테이블(1106)의 데이타를 FLASH의 영역에 보존한다. 전원투입시는 FLASH의 영역의 이 3개의 테이블의 데이타를 PSRAM상에 로드한다. 논리섹터테이블(1095)는 물리섹터테이블(1105)에 라이트되어 있는 논리섹터번호를 기본으로 물리섹터테이블(1105)의 어드레스인 멀티섹터번호를 순번으로 물리섹터테이블(1095)에 라이트하여 테이블을 작성한다. 블럭스테이스테이블(1107)은 물리섹터테이블(1105)의 라이트섹터수를 카운트하여 작성한다. 또, 이때 마이컴 블럭플래그테이블(1106)에 교체요구플래그가 설정되어 있는 것을 확인한 경우에는 그 시점에서 블럭의 교체처리를 개시한다. 전원투입후는 PSRAM상이 테이블의 갱신을 수시로 실행한다.
전원차단시의 시퀀스흐름을 제35도를 사용해서 설명한다. 전원차단시 호스트는 컨피그레이션 스레이터슬레지스터의 비트2에 1을 라이트한다(1125). 그것을 받은 카드컨트롤러는 핀 치환레지스터의 비트5를 클리어(1126)한후 마이컴으로 인터럽트신호(IRQON)을 전송한다. 그것을 받은 마이컴을 현재 실행하고 있는 처리가 종료한후 보존테이블의 저장등의 전원차단시처리를 실행한다(1127). 이 처리가 종료했으면 마이컴이 카드컨트롤러내의 핀 치환 레지스터의 비트5를 세트한다(1128). 호스트는 이 동안 핀 치환 레지스터를 폴링하고 비트5가 1로 되었으면(1129) 호스트측에서 전원OFF를 실행한다.
섹터전송전처리의 시퀀스흐름을 제36도를 사용해서 설명한다. 호스트가 실린더번호, 헤드번호, 섹터번호를 각 레지스터에 라이트(1130)하고, 커맨드레지스터에 커맨드를 라이트한다(1131). 다음에 카드컨트롤러가 이 커맨드를 해석하여 그 요인을 인터럽트요인레지스터에 라이트하여 마이컴으로 인터럽트신호(IRQ2N)을 전송한다(1132). 이것을 받은 마이컴이 인터럽트요인레지스터를 리드(1133)하여 섹터전송이라 인식하고, 커맨드레지스터를 리드(1134)해서 그 내용을 해석한다. 그후, 마이컴이 섹터번호레지스터의 논리섹터번호를 리드하여 논리섹터테이블 설정레지스터에 라이트한다. 다음에 마이컴이 메모리어드레스공간의 E100번지를 액세스하면 PSRAM의 논리섹터테이블에서 물리섹터번호가 리드(1135)되고, 섹터리드시는 이것을 제2파일뱅크 레지스터에 라이트한다(1136). 또, 섹터라이트시는 섹터버퍼의 섹터번호를 제2파일뱅크 레지스터에 라이트한다(1136). 다음에 마이컴이 섹터전송 컨트롤레지스터에 섹터전송의 종류가 무엇인가를 설정하고(1137), 그리고, IREQ레지스터에 "1"을 라이트(1138)하고, 이것을 받아 카드컨트롤러는 호스트로의 인터럽트신호(IREQN)을 어서트한다(1139). 다음에 마이컴이 섹터전송기동레지스터를 세트한다(1140). 그러면 제2파일뱅크 레지스터의 데이타(물리섹터번호)를 제1파일뱅크 레지스터에 라이트하고, 스테이터스레지스터의 비트3에 1을 라이트한다(1141). 인터럽트신호를 받은 호스트는 스테이터스레지스터를 폴링하고 비트3의 데이타전송요구비트가 1인 경우 섹터전송을 개시한다(1142). 카드컨트롤러는 스테이터스레지스터의 리드를 받아서 IREQN을 네게이트한다(1143).
섹터전송중의 시퀀스흐름을 제37도, 제38도, 제39도를 사용해서 설명한다. 우선, 제37도의 FLASH섹터리드전송에 대해서 설명한다. FLASH메모리에서 8비트데이타를 하위측(1144), 상위측(1145)의 순으로 출력하고, 이것을 카드컨트롤러내의 데이타레지스터부에서 래치(1146)하고, 호스트가 데이타레지스터를 리드(1147)할 때 16비트의 데이타를 출력할 수 있게 해둔다. 이 동작을 1섹터분 256의 반복한다. 다음에 제38도의 MASKROM섹터리드전송에 대해서 설명한다. MASKROM에서 출력한 16비트의 데이타(1148)을 카드컨트롤러내의 데이타레지스터에서 래치(1149)하고 호스트가 데이타레지스터를 리드(1150)할때 16비트의 데이타를 출력할 수 있게 해둔다. 이동작을 1섹터분 256회 반복한다. 다음에 제39도의 PSRAM으로의 섹터라이트전송에 대해서 설명한다. 호스트가 데이타레지스터에 16비트의 데이타를 라이트(1151)하면 카드컨트롤러내의 데이타레지스터에 래치된다(1152). 이 라인트된 16비트중 우선 하위8비트를 PSRAM에 라이트(1153)하고, 다음에 상위8비트를 PSRAM에 라이트한다(1154). 이 동작을 1섹터분 256회 반복한다. 또, 멀티전송시에는 이들 처리를 다수섹터분 연속해서 실행한다.
섹터전송종료 처리의 시퀀스흐름을 제40도를 사용해서 설명한다. 256회째의 데이타레지스터의 리드/라이트(1155)가 왔다면 섹터전송종료이므로 카드컨트롤러는 섹터전송기동레지스터를 클리어(1156)하고 스테이터스 레지스터의 비트3(데이타전송요구비트)를 클리어한다(1157). 그후, 인터럽트요인 레지스터의 비트6을 세트(1158)해서 마이컴으로 인터럽트신호(IRQ2N)를 출력한다. 이것을 받은 마이컴은 인터럽트요인 레지스터를 리드(1159)하여 섹터전송종료라 인식하여 카드컨트롤러내의 IREQ레지스터를 세트한다(1160). 그러면 카드컨트롤러러에서 호스트로 인터럽트신호(IREQN)이 전송되고, 호스트가 스테이터스레지스터를 리드한다. 호스트가 스테이터스레지스터의 비트3의 "0"을 봐서 섹터전송이 종료한 것을 인식한다(1161). 이 스테이터스레지스터의 리드를 받아서 카드컨트롤러가 IREQN를 네게이트한다(1162). 섹터라이트전송종료후의 내부처리 시퀀스흐름을 제41도를 사용해서 설명한다. 마이컴이 블럭플래그테이블을 리드(1163)해서 라이트포인터가 가리키는 물리섹터번호의 블럭의 상태를 본다. 이 플래그에는 파괴플래그, 가득참플래그, 교체요구플래그, 교체완료플래그가 저장되어 있고, 파괴블럭 또는 교체완료블럭이라면 라이트포인터(물리섹터번호의 상위7비트)를 갱신해서 라이트 가능블럭의 검색(1164)를 실행한다. 가득참블럭으로써 전부 유효섹터인 경우 블럭포인터를 갱신하여 라이트가능블럭의 검색(1164)를 실행한다. 가득참블럭으로써 무효섹터가 있는 경우는 가비지컬렉션(1118)을 실행한다. 그리고, 어떤 플래그도 세트되어 있지 않고 라이트가능섹터가 있는 경우 및 가비지컬렉션종료후의 경우는 다음의 동작을 실행한다. 우선, 마이컴이 1섹터분의 데이타가 저장되어 있는 섹터버퍼의 섹터번호를 라이트버퍼뱅크 레지스터에 라이트(1165)하고, 제1파일뱅크 레지스터에 라이트 포인터가 가리키는 물리섹터번호를 라이트한다(1166). 다음에 마이컴이 섹터버퍼에서 1바이트의 데이타를 리드(1167)하고 FLASH에 그것을 라이트한다(1168). 이 동작을 512회(512B=1섹터분) 실행한다. 그후, 물리섹터테이블, 논리섹터테이블, 블럭스테이스테이블의 갱신을 실행한다. 멀티섹터라이트의 경우는 이상의 모든 동작을 반복한다.
가비지컬렉션의 시퀀스흐름을 제42도를 사용해서 설명한다. 마이컴이 1섹터분의 데이타가 저장되어 있는 섹터버퍼의 섹터번호를 가비지버퍼뱅크 레지스터에 라이트한다(1169). 다음에 블럭내의 유효섹터의 데이타를 가비지버퍼로 1바이트씩 전송하고 1섹터분(512B)의 전부를 실행한다(1170). 이 동작을 블럭내의 휴효섹터 전부에 대해서 실행한다. 다음에 이 블럭의 FLASH내의 데이타를 소거(1171)하고 블럭소거회수 관리테이블을 갱신한다(1172). 그 후, 가비지버퍼의 데이타를 FLASH에 라이트(1173)하여 물리섹터테이블, 논리섹터테이블, 스테이터스테이블의 갱신을 실행한다(1174). 그후, 제41도의 섹터라이트종료후의 내부처리의2(1165)로 되돌아가 라이트버퍼상의 현섹터의 라이트데이타를 FLASH에 라이트한다.
다음에 PSRAM의 리프레시방법에 대해서 설명한다. 최초에 제43도에 의해 PSRAM의 리프레시와 그밖의 메모리동작과의 아버트레이션을 개략적으로 실행한다. 제43도에는 카드컨트롤러(1009)에 포함되는 제어부(1059)내에 있는 본 아버트레이션을 실행하는 논리블럭의 구성도가 도시되어 있다. 이 논리블럭은 2개의 다른 장치에서 분주된 2개의 같은 주파수의 클럭이 위상인지 동상인지 역상인지를 판별하는 동상판별회로(1175), PSRAM의 리프레시의 회수와 리프레시가 개시하고나서의 경과시간을 계측하는 2개의 카운터로 이루어지는 리프레시제어용 카운터(1176), PSRAM의 리프레시요구신호(1177)을 발생하는 리프레시 요구신호 발생부(1178) 및 PSRAM으로의 제어신호(1179) 및 마이컴으로의 버스사이클연장신호(1180)을 발생하는 PSRAM액세스신호발생부(1181)로 구성된다. 리프레시요구신호 발생부(1178)과 PSRAM액세스신호발생부(1181)은 리프레시제어신호 출력수단을 구성한다.
우선, PSRAM이 라이트, 리드되어 있지 않을때의 기본동작에 대해서 설명한다. 블럭(1178)에서는 파워온리세트의 네게이트와 동시에 리프레시요구신호(1177)을 블럭(1181)로 출력하기 시작한다. 블럭(1181)에서는 그 신호를 받아서 PSRAM으로 리프레시용 제어신호(1179)를 출력한다. 블럭(1176)에서는 그 리프레시회수와 리프레시개시부터의 경과시간을 계측하고 있고 리프레시회수가 어떤 일정회수에 도달했으면 리프레시스톱신호(1182)를 블럭(1178)로 출력하는 것에 의해 PSRAM의 소비전력을 억제하고 있다. 그 신호를 받아서 블럭(1178)에서는 리프레시요구신호(1177)의 출력을 정지하고, 그 결과 블럭(1181)로 부터의 PSRAM 리프레시용 제어신호(1179)는 정지한다. 그후, 시간이 경과해서 리프레시개시부터의 경과시간이 어느 일정시간에 도달하면 블럭(1176)에서는 리프레시스톱신호(1182)의 출력을 정지한다. 블럭(1178)에서는 리프레시요구신호(1177)의 출력을 재개하고, 동시에 블럭(1181)로 부터의 PSRAM리프레시용 제어신호의 출력도 재개한다. 다음에 PSRAM리프레시중에 PSRAM과의 섹터전송이 시작된 경우의 동작에 대해서 설명한다. 섹터전송시에 PSRAM의 리프레시를 실행하면 시스템버스의 데이타전송성능이 저하한다. 그래서, 이때 블럭(1178)은 리프레시요구신호(1177)의 출력을 정지하고, 그 결과 블럭(1181)로 부터의 PSRAM리프레시용 제어신호(1179)는 정지한다. 섹터전송종료후 블럭(1178)은 리프레시요구신호(1177)의 출력을 재개하고, 블럭(1181)은 PSRAM리프레시용 제어신호의 출력을 재개한다.
다음에 PSRAM리프레시중에 마이컴에서 PSRAM으로의 라이트 또는 리드가 실행된 경우의 동작에 대해서 기술한다. PSRAM의 리프레시와 마이컴으로 부터의 PSRAM의 라이트 또는 리드는 마이컴의 버스사이클을 연장하는 것에 의해서 같은 버스사이클에서 실행한다. 그런데 파워온리세트시에 마이컴의 10Φ의 클럭출력과 리프레시제어신호(1179)를 작성하는 시스템클럭을 분주한 10Φ의 클럭은 위상이 어긋나는 일이 있다. 이 때문에 몇클럭연장할지는 라이트 또는 리드제어신호와 리프레시제어신호(1179)의 타이밍관계와 클럭의 위상어긋남을 고려해서 실행할 필요가 있다. 따라서, 마이컴에서 PSRAM에 액세스가 있었을때는 블럭(1175)가 클럭의 위상어긋남을 판별해서 블럭(1181)로 정보를 전달한후에 블럭(1181)이 PSRAM의 라이트 또는 리드와 리프레시의 제언신호 및 마이컴의 버스사이클을 연장하는 대기신호(WAINT)(1180)을 출력한다.
다음에 카드컨트롤러에서 출력하는 인터럽트신호의 동작에 대해서 제44도의 하드웨어구성을 사용해서 설명한다. 본 카드컨트롤러에는 IRQ0N(1289), IRQ1N(1190), IRQ2N(1191), IREQN(1192)의 4개의 인터럽트신호가 있다. IRQ0N(1289)는 마이컴(1007)에 전원차단시의 처리를 실행시키기 위한 것이다. 구체적으로 호스트가 카드컨트롤러(1009)내이 컨피그레이션스테이터스레지스터의 비트2(파워다운비트)에 "1"을 라이트했다면 어서트하도록 하고 있다. IRQ1N(1190)은 하드웨어리세트시 마이컴(1007)에 초기값설정처리를 실행시키기 위한 것이다. 구체적으로 호스트의 하드웨어리세트신호(RESET)(1194)를 받으면 어서트하도록 하고 있다. IRQ2N(1191)은 소프트웨어리세트시에 마이컴에 초기값설정처리를 실행시키기 위해서와 커맨드라이트시에 마이컴(1007)에 커맨드라이트시의 처리를 실행시키기 위해서 및 섹터전송종료를 마이컴(1007)에 통지하여 섹터전송종료처리와 종료후의 내부처리를 실행시키기 위한 것이다. 구체적으로 IRQ2N(1191)은 소프트웨어리세트시에 호스트가 카드컨트롤러(1009)내의 디지탈출력레지스터의 비트2에 "1"을 라이트했을때 호스트가 커맨드레지스터에 커맨드라이트했을때 섹터전송의 종료를 제어신호생성부(1070)의 섹터전송종료카운터(1193)이 검출했을때 어서트하도록 하고 있다. 또, 이때 이 3개의 인터럽트요인을 마이컴이 판별할 수 있도록 카드컨트롤러내의 인터럽트요인 레지스터(인터럽트요인 기억수단)(2890)에 이 요인내용을 세트하고 있다.
IREQN(1192)는 커맨드라이트시의 마이컴처리가 완료한 경우와 섹터전송이 종료하여 마이컴(1007)에 의한 전송종료처리가 완료한 경우에 호스트로 출력하는 인터럽트이다. 구체적으로는 마이컴(1007)이 IREQ세트레지스터에 "1"을 세트하는 것에 의해 어서트한다. 또, IREQN(1192)는 전원투입시 파워온리세트IC로 부터의 RESN(1019)(제2도)를 받아서 어서트되지만 이것은 초기설정중의 BUSY표시이다. IREQN(1192)의 상세한 송출동작에 대해서는 각 시퀀스흐름의 설명부에서 설명하고 있으므로 여기에서는 생략한다.
다음에 FLASH메모리 및 MASKROM의 실장용량을 설정하는 MCC핀의 동작에 대해서 제45도를 사용해서 기술한다. 카드컨트롤러의 MCC0핀(1023), MCC1핀(1022), MCC2핀(1021), MCC3핀(1020)을 Vcc 또는 GND로 고정해 둔다.
전원공급시에 메모리사이즈레지스터(1195)를 마이컴(1007)이 리드하는 것에 의해 본 발명품의 FLASH 및 MASKROM의 실장용량을 산출한다. 이 메모리사이즈레지스터(1195)는 8비트의 레지스터로써, MCC0~MCC3의 값이 비트0~비트3에 대응하고 있다. 비트4~비트7까지의 4비트는 사용하지 않는다. MCC핀의 설정에 대해서 구체적으로 설명한다. MCC3핀(1020), MCC2핀(1021)로 FLASH의 실장용량을 4MB, 6MB, 8MB로 설정할 수 있다. 본 실시예에서는 1MW×8비트의 FLASH을 사용했으므로, 각각 4개, 6개, 8개 실장에 상당한다. MCC1핀(1022), MCC0핀(1023)으로 MASKROM의 실장용량을 4MB, 6MB, 8MB로 설정할 수 있다. 본 실시예에서는 4MB시 512KW×8비트의 MASKROM을 8개, 6MB, 8MB시 1MW×8비트의 MASKROM을 각각 6개와 8개 사용하도록 했으므로 MCC1핀(1022), MCC0핀(1023)의 값으로 MASKROM-CEN디코더(1196)의 디코더어드레스(로컬어드레스의 상위어드레스)를 전환하도록 하였다.
다음에 파괴블럭의 판정에 대해서 설명한다. 본 실시예에서는 PSRAM의 라이트백영역에 일시 라이트된 섹터단위의 데이타를 FLASH메모리의 파일영역에 저장할때 FLASH메모리의 라이트, 소거의 상한시간을 감시하는 것에 의해 불량블럭을 검출하여 파괴블럭으로써 등록하고 있다. 이하, 그 방법을 설명한다. 또, 계측한 마이컴이 FLASH메모리소거 또는 라이트의 커맨드를 발행했을때를 시작으로 한다. 최초에 FLASH메모리소거시간 감시에 의한 방법을 설명한다. 제46도에 그 흐름을 도시한다. 초기설정으로써 TC, PC를 클리어, EFG를 세트한다(1197). 마이컴의 16비트타이머를 사용해서 100ms마다 출력컴페어플래그A를 세트하고 마이컴내에서 인터럽트를 발생한다(1198). 마이컴은 출력컴페어플래그A를 클리어(1199)한후 폴링카운터를 1인크리먼트한다(1200). 폴링카운터가 5로 되는 것(1201)에서 마이컴은 FLASH메모리의 스테이터스레지스터를 리드한다(1202)(즉, 500ms마다 실행한다). 소거가 완료하고 있던(1203) 경우는 불량블럭이 아니었으므로 소거중 플래그를 해제(1024)해서 본 루틴은 종료한다. 만약 소거가 완료하고 있지 않았던(1203) 경우는 타임아웃카운터를 1인크리먼트한다(1205). 여기에서, 타임아웃카운터가 40이 아니면(1206) 아무것도 하지 않는다. 타임아웃카운터가 40인(1206) 경우 이것은 미소거상태가 500ms×40=20s 계속된다는 것으로 파괴블럭으로써 등록(1207)한후 본 루틴을 종료한다. 왜냐하면 FLASH메모리의 블럭단위의 소거시간은MAX10s이기 때문이다.
다음에 FLASH메모리의 라이트시간 감시에 의한 방법을 설명한다. 제47도에 그 흐름을 도시한다. 초기설정으로써 TC를 클리어하고, WFG를 세트한다(1208). 마이컴의 8비트 타이머를 사용해서 10.4μs마다 컴페어머치플래그A를 세트하고 마이컴내에서 인터럽트를 발생한다(1209). 마이컴은 컴페어머치플래그A를 클리어(1210)한후 FLASH메모리의 스테이터스레지스터를 리드한다(1211). 라이트가 완료하고 있던(1212)경우는 불량블럭이 아니므로 라이트중의 플래그를 해제(1213)해서 본 루틴은 종료한다. 만약 라이트가 종료하고 있지 않았던(1212) 경우는 타임아웃카운터를 1인크리먼트한다(1214). 여기에서, 타임아웃카운터가 40이 아니면(1215) 아무것도 하지 않는다. 타임아웃카운터가 40이었던(1215) 경우 이것은 미라이트상태가 10.4μs×40=416μs 계속된 것으로써 파괴블럭으로써 등록(1216)한후 본 루틴을 종료한다. 또, 상기에서 설명한 시간감시에서는 정기적으로 인터럽트를 발생시키는 방식의 예를 설명했지만 인터럽트처리에 시간이 걸려 라이트의 성능에 영향을 미치게 되면 FLASH메모리의 스테이터스레지스터가 폴링해서 단지 라이트 또는 소거종료를 관별하는 루틴으로 하는 방식이라고 좋다.
다음에 확장예로써 액세스타임이 느린 FLASH메모리(1239)와 액세스시간이 빠른 FLASH메모리(1014)를 혼재해서 사용하는 경우에 대해서 설명한다. 본 실시예에서는 소거블럭단위를 칩의 블럭단위와 동일하게 하기 위해 액세스가 느린 FLASH메모리(1014)를 사용해서 8비트씩의 인터리이브전송을 실행하고 있다. 한편, 코스트등의 제약에 의해 액세스시간이 느린 FLASH메모리(1239)를 혼재해서 사용하고자 하는 경우에는 카드컨트롤러(1009)의 회로변경에 의해 제48도에 도시한 바와 같은 혼재사용이 가능하다. 즉, 액세스가 빠른 FLASH메모리(1014)와 액세스가 느린 FLASH메모리(1239)를 사용하고 있다. 단, 이 경우 액세스가 느린 FLASH메모리(1239)에서는 상위 8비트와 상위8비트를 다른 칩에 저장할 수 밖에 없으므로, 소거블럭단위가 2배로 된다. 이하, 변경부분에 관해서 설명한다. 본 실시예에서는 FLASH섹터리드전송시 호스트로 부터의 1회의 리드에 대해서 2회의 리드를 실행하고 있다. 그러나, 액세스타임이 느린 FLASH메모리(1239)의 경우 2회의 리드를 실행하고 있으면 호스트의 리드사이클의 시간에 맞출 수 없다. 그래서, MASKROM의 액세스와 같게 되도록 2개의 칩을 1워드로써 취급할 수 있게 어드레스의 최하위비트LA0은 사용하지 않고 상위측CEN과 하위측CEN를 동일한 타이밍에서 어서트한다. 또, LD8~15를 상위측의 FLASH메모리(1239)에 접속하여 라이트를 위해 쌍방향버스로 한다. 하위측의 FLASH메모리(1239)는 종래와 같이 쌍방향버스LD0~7을 접속한다. 단, 마이컴으로 부터의 액세스는 8비트액세스이므로, 이 경우 CEN은 상위측과 하위측을 별도로 컨트롤할 필요가 있다. 이것에 의해 1회의 리드에 의해 16비트를 리드할 수 있다.
본 발명에 의하면 다른 파일기억장치와 비교해서 고속액세스성능이 우수하다. 즉, 자기디스크장치에 대해서 시크시간이 필요없어 리드, 라이트 모두 고속이고, 종래의 플래시메모리를 사용한 기억장치에 대해서는 라이트버퍼를 가지므로 라이트에 있어서 특히 고속화를 도모할 수 있다. 휘발성메모리를 기억매체로 한 기억장치와 비교하면 고속이라고는 할 수 없지만 그들에 대해서는 백업전원불필요, 저가격 등의 우위성이 인정된다.
또, 소거회수를 기록하여 소거회수가 많은 블럭과 적은 블럭사이에서 데이타의 교체를 실행하므로 플래시메모리의 리라이트수명이 블럭사이에서 균등하게 되므로 실효적으로 수명이 연장한다. 소거회수가 많은 블럭에 들어가 있는 데이타는 빈번하게 리라이트가 실행되는 데이타라 고려되기 때문이다. 따라서, 파일기억장치로써 실용적인 시스템수명을 확보할 수 있다.
또, 그때 1종류의 칩에 여러종류의 데이타를 넣는, 예를들면 마스크ROM에 시스템파일이나 인터페이스정보를 넣도록 하기 위해 1종류의 칩에는 1종류의 데이타밖에 넣지 않는 경우에 비해서 필요로 되는 부품의 수를 저감할 수 있다. 이것은 카드화등의 소형화에 공헌한다.
또, 현재는 자기기억장치와 비교해서 고가인 플래시메모리를 기억매체로 한 파일기억장치에 있어서 일부를 저렴한 리드전용의 ROM을 사용하는 것에 의해 저가격을 실현할 수 있다.
또, IC카드의 구성정보나 액세스정보 등을 내부에 저장해서 외부에서 액세스할 수 있게 하는 것에 의해 IC카드의 표준규격 등에 준거할 수 있게 된다.
또, 호스트의 버스폭과 메모리의 버스폭을 적절히 조절하는 것에 의해, 즉 호스트가 16비트폭인 경우는 현상에서 플래시메모리는 8비트폭이 많으므로 버스폭을 조정하는 것에 필요하게 되지만 마스크ROM은 16비트쪽의 것을 사용하는 것에 의해 마스크ROM에 대해서 버스폭의 조정이 불필요하게 되므로 성능향상과 회로수의 저감을 도모할 수 있다.
또, 불휘발성메모리로써 리프레시가 필요한 메모리를 사용하는 것에 의해 저가격으로 된다. 또, 해당 메모리가 액세스되어 있지 않을때에 리프레시하고, 또 최저한의 리프레시밖에 하지 않은 제어를 실행하는 것에 의해 처리시간의 낭비를 없애 성능향상에 공헌한다.
실시예 2
다음에 본 발명의 제2의 실시예를 설명한다. 제50도는 본 실시예의 구성도이다. 본 발명에 관한 플래시메모리시스템은 기억매체인 플래시메모리(2001), 기억장치(플래시메모리시스템)이 호스트로 되는 정보기기의 버스(2002), 이 호스트버스(2002)를 인터페이스하는 레지스터나 버스류도 이루어지는 인터페이스회로(2003), 기억장치 전체를 통괄제어하는 컨트롤러(제어부)(2004), 호스트가 파일데이타를 관리하기 위한 관리어드레스와 물리적인 기억위치를 표시하는 물리어드레스의 변환을 실행하기 위한 어드레스변환테이블(정보기억수단)(2005), 호스트에서 전송되는 파일데이타를 고속으로 저장해서 외관상의 처리속도를 향상하기 위한 라이트버퍼(2006)(따라서 고속인 라이트가 요구되므로 SRAM이나 DRAM등의 휘발성메모리일 필요가 있다), 컨트롤러(2004)의 동작속도가 호스트버스(2002)의 동작속도보다 떨어지는 것을 커버하여 고속으로 데이타를 전송하기 위한 DMA컨트롤러(2007) 및 라이트버퍼(2006) 내의 데이타를 플래시메모리(2001)로 전송하고 있는 도중에 호스트에서 액세스요구가 있었을때 처리를 중단하고, 그후에 재개하기 위해 중단했을때의 동작상태를 기억하기 위한 중단시 레지스터(중단정보기억수단)(2008)을 갖는다.
제60도에 변환테이블(2005)의 1예를 도시한다. 제60도에서는 호스트버스(2002)에서 전송되어 오는 3섹터분의 데이타를 라이트버퍼(2006)의 블럭1~블럭3에 유지하고, 각각의 블럭의 1섹터의 데이타를 각각 플래시메모리(2001)의 칩0의 섹터3, 칩1의 섹터2, 칩2의 섹터7로 라이트하는 것을 나타내고 있다. 플래그는 호스트로 부터의 데이타가 플래시메모리로 전송되고 있지 않고, 여전히 라이트버퍼에 있는 것을 표시한다.
또, 변환테이블은 제60도의 예에 한정되지 않고, 플래그를 갖지 않는 것으로 해도 좋다. 그 때는 플래시메모리로 전송된 것은 라이트버퍼메모리의 블럭번호를 소거해서 플래그대용으로 해도 좋다. 또, 라이트버퍼와 플래시메모리의 물리어드레스는 연속시키는 것으로 하면 물리어드레스에서 데이타의 소재를 알 수 있으므로, 데이블용량을 축소할 수 있다.
다음에 동작을 설명한다. 호스트의 정보기기는 파일데이타의 저장이나 리드가 필요하게 되면 호스트버스(2002)를 통해서 액세스요구를 함과 동시에 파일데이타저장시는 저장하기 위한 논리어드레스를 지정해서 데이타를 전송하고, 파일데이타의 리드시는 관리상의 논리어드레스를 지정해서 거기에 저장하고 있는 파일데이타의 전송을 요구한다. 이들 요구는 인터페이스회로(2003)에 구비되는 레지스터에 설정하는 것에 의해 실행한다. 컨트롤러(2004)는 인터페이스회로에 설정된 처리요구의 내용을 이해하면 변환테이블(2005)를 참조하거나 또는 변환테이블(2005)의 내용을 리라이트해서 호스트가 지정하는 논리어드레스와 실제의 데이타의 저장위치를 나타내는 물리어드레스가 에러없이 대응하도록 처리한다. 만약, 파일데이타의 저장의 요구인 경우 컨트롤러(2004)는 호스트가 지정하는 논리어드레스와 저장하는 라이트버퍼(2006)의 물리어드레스를 변환테이블(2005)에 라이트한다. 이미 과거에 저장하고 있었던 파일데이타의 갱신인 경우 과거의 데이타는 불필요하게 되므로 과거의 데이타가 저장되어 있는 물리어드레스가 유효한지 아닌지를 표시하는 정보(동일한 논리어드레스의 데이타가 플래시메모리상에서 다른 물리어드레스에 저장되므로 본 정보가 필요하게 된다)를 변환테이블(4)내에 기록하는 처리도 부가된다.
그리고, 호스트버스에서 전송되어오는 라이트데이타를 받아들이기 위해 DMAC(2007)를 기동하여 라이트버퍼(2006)에 저장한다. 이때 동시에 플래시메모리(2001)에 저장되어 있는 불필요한 데이타의 소거를 실행하면 처리시간을 유효하게 활용할 수 있게 된다. 한편, 만약 파일데이타의 리드요구인 경우 컨트롤러(2004)는 호스트가 지정하는 논리어드레스에서 변환테이블(2005)를 참조해서 호스트가 요구하는 파일데이타가 물리적으로 어디에 저장되어 있는 지를 알아내어 이것을 DMAC(2007)에 설정해서 기동하고, 호스트버스(2002)에 고속으로 데이타를 전송해서 호스트의 요구에 응한다.
파일데이타의 저장장소로써는 플래시메모리(2001) 또는 라이트버퍼(2006)에 저장되어 있을 것이라 고려된다. 이것은 변환테이블(2005)의 참조에 의해 명확하게 될 것이다. 따라서, 컨트롤러(2004)는 참조한 변환테이블(2005)의 내용에 의해서 DMAC로 액세스시킨 메모리를 선택해서 설정할 필요가 있다.
이상이 호스트로 부터의 액세스요구에 대응한 기억장치의 동작개요이지만 호스트로 부터의 액세스요구에 대한 처리가 종료하고, 다음에 호스트에서 액세스가 요구될때까지의 동안에 컨트롤러는 내부에서 다른 처리를 실행한다. 그것은 라이트버퍼에 저장되어 있는 데이타를 플래시메모리(2001)로 전송하는 처리이다. 단, 라이트버퍼내의 데이타가 전부 플래시메모리로 전송되어 버리면 기억장치는 완전히 호스트로 부터의 대기상태로 된다. 이 라이트버퍼에서 플래시메모리로의 데이타전송을 실행하지 않으면 전원이 차단된 경우에 휘발성메모리인 라이트버퍼내의 데이타가 휘발해서 최신의 저장파일데이타가 소실되어 버리기 때문이다. 또, 라이트버퍼에 저장할 수 있는 데이타량에는 한계가 있으므로 가능한한 플래시메모리로의 미저장데이타가 잔존하는한 항상 플래시메모리로의 전송을 실행해야한다.
여기에서 호스트로 부터의 요구가 없고 라이트버퍼에서 플래시메모리로의 데이타전송을 실행하고 있는 도중에 호스트에서 액세스요구가 있었던 경우에는 동작중의 전송처리를 일시 중단하고 호스트로 부터의 요구에 응한다. 또, 중단한 처리는 호스트로 부터의 액세스요구에 대응하는 처리가 종료한 시점에서 재개할 수 있도록 필요한 스테이터스레지스터를 중단시 레지스터(2008)에 기록한다. 이 중단시 레지스터(2008)은 컨트롤러(2004) 내부의 레지스터나 메모리를 사용해도 좋다.
이상과 같은 컨트롤러(2004)가 실행하는 동작을 제51도이후의 흐름도에 기술하였다. 제51도는 컨트롤러(2004)의 메인루틴의 흐름도로써, 기본적인 동작의 흐름은 우선 호스트에서 액세스요구가 있는지를 확인하여 있으면 액세스루틴으로 점프하고, 없으면 다음으로 진행한다(2a). 라이트버퍼내에 플래시메모리에 미저장의 데이타가 존재하는지를 확인하여(2b) 존재하면 이것을 액세스 또는 워드등의 소정의 단위로 플래시메모리로 전송하여 저장한다(2c). 전부 저장완료이라면 호스트로 부터의 액세스대기로 된다. 또, (2a)에서 액세스루틴으로 점프하고 액세스가 종료해서 복귀했을때에는 기록한 상태로 되돌려서 (2d) 재개한다. 메인루틴에서는 이 흐름을 반복한다.
제52도 및 제53도는 액세스루틴의 흐름도로써, 제52도를 설명하면, 우선 액세스루틴으로 점프했을때의 메인루틴에 있어서의 상태를 제50도의 중단시 레지스터(2008)에 기억하고 (3a), 복귀했을때 동작을 재개할 수 있게 한다. 기억내용으로써는 라이트섹터의 논리어드레스와 물리어드레스등을 들 수 있다. 다음에 호스트로부터의 액세스를 구별하여 각각의 처리로 분기한다(3b). 제52도는 계속해서 리드액세스처리를 도시하고 있다. 리드액세스에서는 우선 어드레스변환을 실행한다. 이것은 호스트로 부터는 논리어드레스에 의해 원하는 파일을 지정해오지만 논리어드레스에서는 실제의 메모리상의 저장위치를 나타내고 있지 않으므로, 어드레스변환테이블에 의해 논리어드레스에서 물리어드레스로 변환해서 실제의 메모리상의 저장위치를 파악해서 리드를 실행하게 된다(3c). 이 어드레스변환을 실행했다면 다음에 DMAC로 액세스하는 어드레스를 설정하여 기동한다(3d). 그리고, 리드데이타를 호스트버스에 흐르게해서 액세스를 완료하고(3e), 메인루틴으로 복귀한다.
한편, 라이트액세스는 제53도에 도시한다. 우선, 과거에 저장된 적이 있는 파일인지를 체크한다(4a). 저장된 적이 있는지 없는지는 테이블에 물리어드레스가 있는지 없는지에 의해 판단할 수 있다. 과거에 저장한 파일이라면 변환테이블을 참조해서 그 물리적 위치를 파악해서 변환테이블을 갱신하여(같은 논리어드레스이라도 리라이트수명을 연장하기 위해 다른 물리어드레스에 저장하므로 물리어드레스를 변경할 필요가 있다) 플래시메모리로 소거동작을 걸고 (4b), 그것과 동시에 갱신파일의 라이트동작을 실행한다. 소거동작은 플래시메모리내부에서 자동적으로 실행되므로 라이트를 실행하는 칩과 다르면 병행해서 동시에 처리를 실행할 수 있다. 새로운 파일의 저장이라면 그대로 라이트동작에 들어간다. 우선, 각 저장장소를 결정해서 변환테이블에 물리어드레스와 논리어드레스의 대응을 기록하고(4c), 다음에 DMAC로 액세스하는 어드레스를 설정해서 기동한다(4d). 그리고 호스트로 부터의 데이타를 라이트버퍼에 저장했으면 라이트종료로써(4e) 메인루틴으로 복귀한다. 또, 흐름도상의 흐름의 순번은 적절히 교체할 수도 있다. 또, 제52도, 제53도에 있는 DMAC설정, 기동후의 실제의 호스트와의 데이타의 수수는 DMAC가 실행하게 되므로 컨트롤러는 대기상태에 있게 된다. 또, 소거동작을 제53도의 라이트의 루틴내에서 실행하지않고 메인루틴의 플래시메모리로의 데이타의 라이트시에 실행하거나 파일을 정리하는 루틴을 별도로 설정해서 소거를 실행하는 것도 고려된다. 특히, 플래시메모리의 소거단위가 파일관리의 단위보다도 크고 하나의 소거단위에 다수의 파일이 존재할 수 밖에 없는 경우에는 가비지컬렉션을 실행하는 루틴을 설정하여 여기에서 소거동작을 실행하는 것이 가장 효율적으로 된다.
이 제53도에서의 응용으로써 호스트로 부터의 데이타를 라이트버퍼에 저장하는 예를 제59도를 사용해서 설명한다. 플래시메모리로의 전송이 아직 이루어지지 않고 라이트버퍼에 잔존하고 있는 데이타를 갱신하는 경우는 앞서 저장되어 있는 데이타는 불필요하게 된다. 여기에서 소거하거나 또는 무효화하는 플래그등을 설정해서 플래시메모리로의 전송을 실행하지 않는다.
그런데, 제51도의 메인루틴에 있어서 다른 예를 나타내면 제51도는 호스트로 부터의 액세스요구를 소프트웨어상에서 받는 예이지만 하드웨어인터럽트에 의해 강제적으로 액세스루틴으로 천이하는 것도 고려된다. 이 경우 메인루틴은 제54도와 같이 단순화하여 소프트웨어적으로 액세스루틴으로 천이하는 처리는 없다. 이 방법에서는 호스트로 부터의 액세스요구에 신속하게 대응할 수 있게 된다. 인터럽트에 의해 액세스루틴으로 천이했을때 종료해서 메인루틴으로 복귀할때의 처리를 문제없이 하기 위한 소프트웨어처리가 다소 복잡하게 되지만 중단 상태를 상세하게 기록하면 정상적인 복귀를 할 수 있다.
이것 이외에 리세트 및 전원차단처리를 포함한 메인루틴을 제55도에 도시하였다. 이것은 변환테이블이 휘발성메모리로 구성되어 있는 경우에 특히 중요하게 되는 처리이다. 변환테이블의 데이타가 소실되면 파일전체의 데이타가 소실된 것과 같게 되므로 리세트시나 전원차단시에는 불휘발성메모리로 세이브할 필요가 있다. 이 때문에 전용의 라이트가능한 불휘발성메모리를 구비해도 좋다. 또, 데이타저장용의 플래시메모리의 일부를 사용하면 부품수의 삭감이 가능하다.
또, 이 세이브처리를 피하는 방법으로써 메인루틴을 제56도의 루틴으로 하는 방법이 고려된다. 즉, 라이트버퍼에서 플래시메모리로의 데이타전송, 저장이 종료하고 호스트로 부터의 커맨드 대기상태로 되었을때 세이브를 실행한다. 이렇게 하는 것에 의해 리세트나 전원차단시에 특별한 처리를 실행할 필요가 없어지므로 사용자를 기다리게 하는 일이 없다. 단, 리세트나 전원차단은 라이트나 세이브의 처리중에 실행하는 일이 없도록 주의할 필요가 있다.
또, 세이브하는 변환테이블은 빈번하게 라이트가 실행되므로 리라이트회수에 제한이 있는 불휘발성 메모리로 세이브하는 경우에는 수명을 검토할 필요가 있다. 상술한 바와 같이 플래시메모리의 일부를 사용하는 경우에는 세이브영역을 1곳에 특정하지 않고 이동하는 방법이 좋다. 이 경우에는 세이브영역으로 된 기억영역의 일부에 세이브영역인 것을 명확하게 하는 코드를 기록하는 등에 의해 용이하게 실현할 수 있다. 휘발성 메모리상의 변환테이블이 전원차단에 의해 소실되었을때에는 플래시메모리의 전체 기억영역에서 세이브영역코드를 검색하여 세이브영역의 위치를 파악할 수 있다. 또는 최종적인 세이브영역의 물리위치만을 불휘발성메모리의 일부에 전원차단시에 라이트하는 방법을 취하면 시간적인 낭비를 없앨 수 있다.
다음에 플래시메모리의 열화에 의한 액세스성능의 저하를 피하는 실시예에 대해서 제57도에 의해 설명한다. 제57도는 플래시메모리의 열화를 파악하는 수단의 실시예로써, 도면중(2101)은 플래시메모리 라이트제어회로, (2102)는 라이트시간 측정회로, (2103)은 변환테이블내에 설치한 열화도 정보테이블(열화도 기억수단)이고, 플래시메모리의 소거블럭마다 대응하고 있다. 그것이외의 것은 상술한 설명과 동일하다. 컨트롤러(2004)(열화도 진단수단)는 플래시메모리(2001)로의 라이트를 실행할때 라이트제어회로(2101)을 기동함과 동시에 라이트시간 측정회로(2102)도 기동하여 라이트에 걸린 시간을 파악한다. 그리고, 그 시간에 의해 플래시메모리의 열화의 정도를 판단해서 이것을 변환테이블내의 열화도 정보테이블에 라이트한다. 열화도는 라이트시간을 예를들면 8레벨로 분류한다. 예를들면 레벨1은 10~100μs인 경우로 한다. 레벨8은 허용되는 라이트시간을 넘은 경우, 즉 사용불능 상태로 된 것으로 하면 불량섹터의 기록도 겸할 수 있다.
컨트롤러(2004)는 이 열화도를 데이타저장시의 물리어드레스의 결정시에 사용한다. 즉, 열화도가 크다고 판단된 블럭에는 라이트를 극렬 실행하지 않게 하는 것에 의해 열화에 의한 성능저하를 피할 수 있게 된다. 이 제어를 나타내는 흐름도를 제58도에 의해 설명한다. 제58도는 플래시메모리로의 라이트동작에 있어서, 라이트시간을 측정해서 열화도를 진단하는 흐름도이다. 즉, 플래시메모리에는 열화가 진행하면 라이트에 필요한 시간이 길어진다는 특징이 있으므로 이것을 이용하는 것이다. 본 루틴은 하나의 소거완료 블럭으로의 라이트를 나타내고 있다. 호스트에서 라이트액세스가 있고, 라이트데이타가 라이트버퍼에 저장되어 있는 상태에서 실행되는 것이다. 우선, 열화도 정보 테이블을 참조해서 열화도가 가장 진행하고 있지 않은 블럭을 찾아낸다(9a). 모든 블럭의 열화도가 같은 레벨이라면 임의의 블럭을 선택한다. 이 결과 모든 블럭이 균일하게 열화하게 된다. 그리고, 찾아내었으면 라이트단위마다 라이트시간 측정회로를 기동하여 라이트시간의 측정을 개시함과 동시에 실제의 플래시메모리의 라이트를 개시한다(9b). 그리고, 메모리의 라이트종료까지 대기한다(9c). 라이트가 종료했으면 라이트에 필요한 시간을 라이트시간 측정회로에서 참조하여 그 값에서 열화도를 진단한다(9d). 그리고 열화도의 진단결과가 동일한 블럭내에서 지금까지 라이트한 라이트 단위중에서 가장 열화하고 있으면 결과를 열화도정보테이블에 저장한다(9e). 다수의 라이트에 의해서 하나의 소거블럭을 구성하는 플래시메모리에서 열화도정보는 하나의 소거블럭에 하나로 한다. 각 라이트단위에 있어서의 열화도를 진단하여 동일 블럭내의 최악값을 그 블럭의 열화도라 판단한다. 즉, 비트마다 열화도는 다를것이라 고려되며, 1비트라도 열화하면 그 블럭내 전역의 신뢰도가 떨어지게 된다. 단, 제어프로그램의 간략화등을 목적으로 해서 블럭내의 특정한 장소의 시간만을 측정해서 전체의 열화도를 판단하는 방법도 고려된다.
그리고, 원하는 전체데이타의 라이트가 종료했으면 라이트루틴을 종료하고, 여전히 데이타가 있으면(9b)로 되돌아간다(9f).
이상의 제어를 하는 것에 의해 플래시메모리의 열화를 전영역에 걸쳐서 평균화할 수도 있는 효과가 있다. 또, 본 실시예에서는 라이트시간을 열화의 평가대상으로 했지만 소거시간을 측정해서 이것을 열화의 평가대상으로 해도 좋다.
또, 시간의 측정을 회로적으로 실행하고 있지만 컨트롤러의 소프트웨어로 실행할 수 있으면 하드웨어의 삭감에 기여한다.
본 발명의 1실시예의 효과는 플래시메모리의 라이트의 지연이 기억장치로써의 성능저하로 되지 않는 것이다. 플래시메모리는 리드액세스에 대해서 DRAM과 비교해서 손색없는 속도을 갖지만 라이트액세스는 1자리이상의 차이가 있다. 또, 소거동작도 필요하게 되고 단순히 플래시메모리로 라이트를 실행하면 기억장치로써의 성능저하를 초래한다. 그리고, 이것을 해결하기 위해 단순한 라이트버퍼를 마련해도 이때 호스트에서 액세스가 있으면 결국 호스트를 기다리게하는 것으로 되어 성능저하로 된다. 본 발명에 의하면 라이트버퍼내의 데이타가 넘칠때까지 호스트를 기다리게 하는 일없이 액세스요구에 대응할 수 있게 된다. 그리고, 라이트버퍼내의 데이타가 넘치지 않도록 적절히 라이트버퍼에서 플래시메모리로의 전송을 실행할 수 있다.
또, 전원차단시에 대응하는 처리수단을 갖고, 본 발명의 기억장치의 사용자의 대기시간이 매우 적어지는 효과가 있다. 또, 플래시메모리의 특징인 열화에 의한 소거시간 또는 라이트시간의 증대를 고려해서 플래시메모리의 열화에 의한 사용자의 대기시간의 증대를 억제하는 효과가 있다.
실시예 3
또, 본 발명의 제3의 실시예를 블럭도 및 흐름도를 사용해서 설명한다. 이 실시예의 본질은 플래시메모리로 구성하는 반도체디스크에 있어서, 라이트에러가 발생한 경우에 대체라이트영역에 라이트하는 것에 의해 디스크의 수명을 연장하는 것에 있다. 또, 대체라이트영역이 충분하지 않게 된 경우의 구제방법이나 사용자로의 에러통지방법에 대해서 실시예에 따라서 설명한다.
이들 실시예중에서 설명하는 플래시메모리소자, 반도체디스크 및 기억테이블들의 용량은 임의의 크기로 설정할 수 있다. 본 실시예중에서는 상기 용량을 적당한 값을 사용해서 설명하지만 이들 값이 변화해도 본 발명의 본질에 영향을 주는 것은 아니다. 마찬가지로 실시예중에서의 플래시메모리 및 상기 기억테이블등의 어드레스공간으로의 할당방법도 일위적으로 결정되는 것은 아니고, 임의의 어드레스에 할당할 수 있어 어드레스공간으로의 할당방법에 의해서 본 발명의 본질에 영향을 주는 것은 아니다.
제61도에 본 발명의 제3의 실시예의 구성도를 도시한다. 제61도에 있어서, (3102)는 반도체디스크로써, 호스트시스템(3101)의 I/O버스(3104)에 접속하여 호스트시스템(3101)과 정보를 송수신한다. 반도체디스크(3102)는 에러레지스터(3105), 인터페이스회로(3107), 버퍼메모리(3115), 반도체디스크제어회로(3111), 메모리 블럭 관리테이블(3112) 및 반도체메모리(3106)을 구비하고, 내부버스a(3116), 내부버스b(3117), 어드레스버스(3113), 데이타버스(3114) 및 제어신호(3110)에 의해 그들을 각각 접속한다. 또, 반도체메모리(3106)은 파일데이타를 저장하는 데이타메모리부(3108)과 대체메모리로써 사용하는 대체메모리부(3109)를 구비한다.
버퍼메모리(3115)는 반도체메모리(3106)에 라이트하는 데이타 또는 리드한 데이타를 일시 기억해두는 메모리로써, 리드, 라이트가 용이하며, 또한 고속인 SRAM 또는 DRAM을 사용한다. 반도체메모리(3106)은 불휘발성메모리인 플래시메모리로 구성하고, 데이타메모리부(3108)과 대체메모리부(3109)에 2M바이트(1M바이트는 2의 20승바이트=1048576바이트)의 플래시메모리를 합쳐서 16개 구비한다. 따라서, 반도체메모리(3106)의 기억용량은 32M바이트이다. 이중 대체메모리부(3109)에는 2M바이트를 할당하므로 반도체디스크장치(3102)의 기억용량은 30M바이트가 된다. 메모리블럭 관리테이블(3112)는 512k바이트(1k바이트는 2의 10승바이트=1024바이트)의 플래시메모리를 사용하여 디스크의 블럭번호에 대응하는 반도체메모리(3106)의 어드레스정보와 각 블럭에 대응하는 메모리영역의 사용상황을 기억한다. 반도체메모리(3106)과 메모리블럭 관리테이블(3112)는 모두 소정의 라이트단위인 512바이트의 블럭에서 라이트를 실행하는 것으로 한다. 상기 설명한 바와 같이 플래시메모리소자, 반도체디스크의 용량 및 메모리블럭 관리테이블등의 용량은 임의의 값으로 설정할 수 있다. 또, 각각 별개의 메모리칩으로 구성하도록 해도 좋다.
에러정보레지스터(3105)는 미리 정한 에러정보를 유지하는 에러정보 유지수단으로써, 반도체디스크장치(3102)에 발생한 에러를 호스트시스템(3101)로 통지하기 위해 발생한 에러에 관한 정보를 라이트한다. 인터페이스회로(3107)은 I/O버스(3104)로 부터의 명령을 받는다. 또는 인터페이스회로(3107)은 I/O버스(3104)에 대해서 인터럽트신호(3103)을 사용해서 인터럽트신호를 출력한다.
반도체디스크제어회로(3111)은 내부버스a(3116), 내부버스a(3117), 어드레스버스(3113), 데이타버스(3114) 및 제어신호(3110)을 사용해서 반도체메모리디스크장치(3102) 전체의 제어를 실행한다. 반도체디스크제어회로(3111)은 버퍼메모리(3115), 에러정보 레지스터(3105), 메모리블럭 관리테이블(3112) 및 반도체메모리(3106)의 리드, 라이트를 어드레스버스(3113), 데이타버스(3114) 및 제어신호(3110)을 사용해서 제어한다. 또, 반도체디스크 제어회로(3111)은 플래시메모리로 구성하는 메모리블럭 관리테이블(3112)와 반도체메모리(3106)의 소거동작도 필요하므로 이것도 제어한다.
제62도에 반도체메모리(3106)의 메모리어드레스맵과 메모리블럭 관리테이블(3112)의 메모리맵의 대응의 예를 도시한다. 메모리블럭 관리테이블(3112)는 메모리관리수단으로써, 기억부의 각 영역마다 사용/미사용의 상태를 블럭사용 테이블에 유지하고, 제어회로에 있어서 에러를 검출한 경우에 상기 기억부의 에러영역 대신에 미사용의 영역을 대체영역으로써 할당해서 이 할당한 대체영역과 상기 에러영역의 대응을 블럭등록 테이블에 유지한다. 메모리어드레스맵(3201)에 표시한 바와 같이 30M바이트의 데이타메모리부(3108)은 데이타메모리영역(3202)(어드레스0000000H번지(H는 16진표시를 나타낸다)에서 1DFFFFFH번지까지의 30M바이트)를 구비하고, 2M바이트의 대체 메모리부(3109)는 대체메모리영역(3203)(1E00000H번지에서 1FFFFFFH번지까지의 2M바이트)를 구비한다. 본 실시예에서는 512바이트단위로 라이트를 실행하는 것으로 했으므로, 1블럭당 20H번지로 되고, 예를들면 블럭0은 0000000H번지에서 00001FFH번지까지로 된다. 마찬가지로 블럭1은 0000200H번지에서 00003FFH번지, 블럭2는 0000400H번지에서 00005FFH번지, 블럭3은 0000600H번지에서 00007FFH번지와 같이 메모리어드레스맵(3201)에 할당하고 있다. 대체메모리블럭도 마찬가지로 1E00000H번지에서 할당하고 있다. 상술한 바와 같이 이들 어드레스의 할당은 일률적으로 결정되는 것은 아니고 임의의 할당방법을 취할 수 있다.
또, 메모리블럭 관리테이블(3112)는 블럭에 해당하는 반도체메모리의 어드레스를 등록하는 블럭등록테이블(3205), 데이타메모리부(3108)의 각 영역의 사용상황을 등록하는 메모리블럭 사용테이블(3206) 및 장치전체의 초기화정보를 등록하는 초기화정보를 등록하는 초기화정보영역(3207)을 구비한다.
블럭등록테이블(3205) 및 메모리블럭사용테이블(3206)의 각각의 테이블은 제62도에 도시한 바와 같이 구성되어 있다. 즉, 블럭등록테이블(3205)는 블럭마다 대응하는 반도체메모리(3106)의 어드레스를 나타내므로, 1블럭에 대해서 4바이트(32비트)의 용량을 갖게 한다. 블럭등록테이블(3205)는 2000000H번지에서 시작되어 4H번지마다 하나의 블럭을 나타낸다. 블럭0은 2000000H번지에서 시작되는 4바이트의 영역(3216)에 저장되는 어드레스정보에 의해서 표시된다. 마찬가지로 2000004H번지에서 시작되는 4바이트 영역(3217)에, 블럭2는 2000008H에서 시작되는 4바이트의 영역(3218)에 저장되는 어드레스정보에 의해서 표시된다.
또, 블럭사용테이블(3206)은 데이타메모리부(3108), 대체메모리부(3109)의 사용상황을 저장한다. 사용상황은 1블럭에 대해서 1비트의 정보로 표시되고, 본 실시예에서는 미사용블럭을 0으로 하고, 사용블럭을 1로 하고 있다. 이 영역의 0의 비트, 즉 미사용의 블럭을 찾는 것에 의해 대체메모리부(3109)의 빈블럭을 찾을 수 있다. 블럭사용테이블(3206)은 2020000H번지에서 시작되고 1바이트의 사용정보당 8블럭의 사용상항을 나타낸다. 또, 1바이트중에서는 최하위비트가 번호가 작은 블럭을 나타내는 것으로 한다. 즉, 20200H번지의 1바이트의 사용정보(3214)는 블럭0에서 블럭7까지의 8블럭의 사용상황을 나타내고, 예를들면 그 1바이트가 11011111b (b는 2진수 표시인 것을 나타낸다)이면 블럭5만이 미사용인 것을 나타낸다. 또, 2020000H번지에서 2021DFFH번지까지의 영역이 데이타메모리부(3108)의 사용상황을 나타내고, 2021E00H번지에서 2021FFFH번지까지의 영역이 대체메모리부(3109)를 나타내는 것으로 한다.
또, 초기화정보영역(3207)에 저장하는 정보의 구체적인 예를 제77도에 도시한다. 제77도에 있어서, 초기화정보영역(3207)은 데이타메모리영역(3202)의 개시어드레스정보(3231), 데이타메모리영역(3202)의 종료어드레스정보(3232), 데이타메모리영역의 용량(3233), 1블럭당 기억용량(3234), 사용가능한 블럭수(3235), 대체메모리영역(3203)의 개시어드레스정보(3236), 대체메모리영역(3203)의 종료어드레스정보(3237) 및 예비정보영역(3238) 등의 초기화정보를 기억하는 영역이다. 초기화정보영역(3207)은 디스크시스템 전체의 초기화동작에 있어서 필요한 정보를 라이트한다.
다음에, 디스크시스템전체의 초기화동작에 대해서 제67도를 사용해서 설명한다. 초기화동작이는 것은 디스크장치를 사용하기 위해 필요한 작업으로써, 호스트시스템에 있어서 포맷커맨드등을 실행하는 것에 의해서 실행된다. 본 실시예에 있어서 초기화작업은 우성 처리(3701)에 있어서, 데이타메모리영역(3202)와 대체메모리영역(3203)의 용량을 결정한다. 이 결정은 호스트시스템의 입력수단이 키보드(3122)(제73도)에 의해 용량등의 지정을 받고, 지정에 따라 결정할 수 있다. 사용자는 이것에 의해 대체메모리영역(3203)의 용량을 자유로이 설정할 수 있다. 지정되는 정보로써는 데이타메모리영역의 용량, 1블럭당의 기억용량등이 있다. 또, 점퍼핀 등을 사용해서 미리 반도체디스크제어회로(3111)에 하드웨어적으로 설정해도 좋고, 블럭사용테이블의 용량에서 계산해도 좋고, 데이타메모리영역(3202) 및 대체메모리영역(3203)의 라이트, 리드체크를 실행해서 실장용량을 판정해도 좋다. 처리(3702)에서는 이들의 지정된 초기화정보를 초기화정보영역(3207)에 라이트한다. 초기화정보영역(3207)로의 라이트흐름을 제78도의 처리(3710)~(3716)에 나타낸다. 초기화정보영역(3207)에 라이트하는 동작은 호스트시스템(3101)에서 상기 초기화정보를 인터페이스회로(3107)을 거쳐서 반도체디스크 제어회로(3111)에 지시하고, 반도체디스크 제어회로(3111)에 있어서 소정의 어드레스가 나타내는 위치에 상기 초기화정보를 라이트한다. 초기화정보영역(3207)에 라이트된 초기화정보에 의해 데이타메모리부(3108) 및 대체메모리부(3109)의 영역을 규정할 수 있다.
계속해서, 블럭등록테이블(3205) 및 블럭사용테이블(3206)의 초기화를 실행한다. 우선, 처리(3703)에서 디스크이 각 블럭에 대응하는 어드레스정보를 블럭등록테이블(3205)에 라이트한다. 예를들면 블럭0을 초기화하는 경우에는 블럭등록테이블(3205)의 블럭0에 대응하는 2000000h번지에서 시작되는 4바이트의 영역, 데이타메모리영역(3202)의 블럭0에 대응하는 어드레스정보0000000h를 라이트한다. 마찬가지로 블럭1의 초기화는 상기 블럭등록테이블(3205)의 2000004h번지에 상기 데이타메모리영역(3202)의 블럭1에 대응하는 어드레스정보 0000200h를 라이트한다. 이 동작을 데이타메모리영역(3202) 및 대체메모리영역(3203)의 모든 블럭에 대해서 종료할때까지 반복한다(처리(3704)). 또, 필요하면 처리(3705)에 있어서 에러정보레지스터(3105), 버퍼메모리(3115)의 초기화를 실행하여 디스크전체의 초기화작업을 종료한다. 상기 설명한 초기화작업은 반도체디스크장치(3102)를 최초에 사용할때, 또 디스크의 포맷의 명령이 실행된 경우등에 실행하면 좋다.
또, 데이타메모리영역(3202) 및 대체메모리영역(3203)의 용량에 대한 블럭등록테이블(3205) 및 블럭사용테이블(3206)의 결정방법을 설명한다. 데이타메모리영역(3202)와 대체메모리영역(3203)은 합쳐서 32M바이트이고, 블럭등록테이블이 관리하는 최소단위로 1블럭512바이트이므로, 32M바이트/512바이트=65536, 즉 64K바이트(1K바이트 1024바이트) 필요하다. 따라서, 0000H에서 FFFFH번지까지 본 실시예에서는 2000000H번지에서 200FFFFH번지까지의 적어도 64K바이트를 블럭등록테이블(3205)에 할당하면 좋다. 본 실시예에서는 2000000번지에서 201FFFFH번지까지의 128K바이트를 할당하고 있으므로, 데이타메모리영역(3202)와 대체메모리영역(3203)을 합쳐서 최대 64M바이트까지 어드레스정보를 등록할 수 있다. 또, 블럭사용테이블(3206)은 1블럭당 1비트필요하므로 1바이트당 8블럭을 관리할 수 있다. 따라서, 총블럭수65536/8=8192, 즉 적어도 8K바이트의 영역을 블럭사용테이블(3206)에 할당하면 좋다. 본 실시예에서는 2020000H번지에서 2021FFFH번지까지의 16K바이트를 할당하고 있으므로 최대 131072블럭, 즉 67108864바이트(64K바이트)까지 사용상황을 관리할 수 있다. 이와 같이 블럭등록테이블(3205) 및 블럭사용테이블(3206)에 적당한 용량을 할당하는 것에 의해 임의의 크기의 반도체메모리를 제어할 수 있다.
다음에 제73도에 호스트시스템(3101)의 구성도을 도시한다. 호스트시스템(3101)은 CPU(3120)이 호스트버스(3125)를 거쳐서 주메모리(3121)과 접속되고, 또 I/O버스(3104)를 거쳐서 ROM(3126), 키보드(3122), CRT(3123) 및 스피커(3124)에 접속하고 있다. 키보드(3122)는 입력수단으로써, 사용자로부터 입력된 데이타나 초기설정정보등을 받는다. CRT(3123)은 출력수단의 하나로써, CPU(3120)의 연산결과나 에러정보등을 표시한다. 스피커(3124)는 출력수단의 하나로써, 에러발생시에 경고음 등을 발생한다. ROM(3126) 또는 주메모리(3121)에는 리드, 라이트처리, 인터럽트처리등의 미리 정한 처리의 프로그램을 기억한다.
다음에 본 실시예의 반도체디스크장치(3102)의 리드, 라이트동작을 제63도, 제64도 및 제65도 도시한 흐름도를 사용해서 설명한다.
최초에 호스트시스템(3101)에서 I/O버스(3104)를 통해서 파일데이타의 리드명령을 받은 것으로 한다. 이 경우 우선 반도체디스크제어회로(3111)이 이 명령을 처리하지만 명령의 부여방법에 의해서 제어내용도 다르다. 예를들면 리드를 실행하는 파일데이타의 할당정보를 자기디스크등과 마찬가지로 섹터번호나 트랙번호에 의해 부여된 경우에는 이들 정보를 데이타메모리부(3108)의 물리어드레스로 변환할 필요가 있다. 본 실시예에서는 설명의 간단화를 위해 I/O버스(3104)로 부터의 파일할당정보는 데이타메모리부(3108)의 블럭번호에 의해 부여하는 것으로 한다. 블럭번호는 물리어드레스의 상위비트로 변환한다.
반도체디스크제어회로(3111)의 리드시의 처리순서를 제63도에 도시한다. 제63도에 도시한 바와 같이, 처리(3300)에 있어서, 반도체디스크제어회로(3111)은 I/O버스(3104)에서 받은 블럭번호에 대응하는 반도체메모리(3106)의 어드레스정보를 메모리블럭 관리테이블(3112)의 블럭등록테이블(3205)에서 리드한다. 예를들면 블럭0을 리드하는 경우는 블럭등록테이블(3205)의 2000000H번지로 부터의 4바이트의 어드레스정보(3216)을 리드하고, 또 블럭1의 경우에는 2000004H번지로 부터의 4바이트의 어드레스정보(3217)을 리드한다. 다음에 처리(3301)에 있어서 리드한 어드레스정보에 따라서 처리(3302)에 있어서 데이타메모리부(3108)의 블럭번호에 상당하는 영역, 예를들면 블럭0이면 어드레스정보(3216)의 0000000H번지에서 512바이트의 데이타를 리드하고, 처리(3303)에서 데이타를 일단 버퍼메모리로 전송한다. 그후, 처리(3304)에서 인터페이스회로(3107)을 통해서 데이타를 I/O버스(3104)로 전송한다.
여기에서, 제62도에 도시한 데이타메모리영역(3202)의 0000400H번지에서 시작되는 블럭2의 영역(3208)과 같이 이전의 라이트에 있어서 불량으로 된 블럭의 경우는 블럭등록테이블(3205)에 대체메모리부(3109)의 어드레스정보를 등록해준다. 즉, 제62도에 도시한 대체메모리영역(3203)의 1E00000H번지에서 시작되는 512바이트의 영역(3211)의 어드레스정보를 등록하고 있다. 따라서, 블럭2를 리드하는 경우 처리(3302)에 있어서 대체메모리부(3109)의 블럭2를 대체하는 영역, 즉 1E00000H번지에서 512바이트의 영역(3211)의 데이타를 리드하고, 인터페이스회로(3107)을 통해서 I/O버스(3104)로 전송하면 좋다. 대체메모리영역의 등록방법에 대해서는 후술하는 라이트동작에서 설명한다.
여기에서, 메모리블럭관리테이블(3112)와 데이타메모리부(3108) 및 대체메모리부(3109)의 리드는 반도체디스크제어회로(3111)이 제어한다. 또, 이들 리드데이타의 I/O버스(3104)로의 전송은 마찬가지로 반도체디스크제어회로(3111)이 내부버스a(3116), 내부버스a(3117), 어드레스버스(3113), 데이타버스(3114), 제어신호(3110) 및 인터페이스회로(3107)을 제어하는 등해서 실행한다. 이와 같이 파일데이타를 리드하는 동작은 목적의 블럭에 대응하는 반도체메모리의 어드레스정보를 리드하고, 상기 어드레스정보에 따라서 데이타메모리부(3108) 또는 대체메모리부(3109)의 데이타를 리드할 수 있다.
다음에 I/O버스(3104)에서 파일데이타의 라이트명령을 받은 경우에 대해서 설명한다. 제64도에 라이트시의 반도체디스크제어회로(3111)의 처리순서를 도시한다. 우선, 반도체디스크제어회로(3111)은 처리(3400)에 있어서 인터페이스회로(3107)에서 라이트명령을 받으면 처리(3401)에 있어서 I/O버스(3104)에서 부여되는 파일데이타를 버퍼메모리(3115)로 전송한다. 이것은 플래시메모리로의 라이트가 리드에 비해 시간이 걸리므로 호스트시스템(3101)의 대기시간을 경감시켜기 위해 실행한다. 또, 버퍼메모리(3115)의 용량은 최저라도 플래시메모리의 라이트단위 용량이상인 것으로 한다. 다음에 처리(3402)에 있어서, 라이트를 실행하는 블럭번호에 대응하는 반도체메모리(3106)의 어드레스정보를 메모리블럭관리테이블(3112)의 블럭등록테이블(3205)에서 리드한다. 다음에 처리(3403)에 있어서 버퍼메모리(3115)의 파일데이타를 상기 처리(3402)에서 리드한 어드레스정보에 따라서 반도체메모리(3106)에 라이트한다. 예를들면 본 실시예에 있어서 블럭(3)에 라이트하는 경우에는 블럭등록테이블(3205)의 200000AH번지로 부터의 4바이트의 어드레스정보(3219)를 리드한다. 여기에서는 데이타메모리부(3108)의 어드레스정보(3219)에 표시되어 있는 1E00200H번지에서 512바이트의 블럭(3212)에 데이타를 라이트한다. 다음에 처리(3404)에 있어서 데이타 메모리부(3108) 또는 대체메모리부(3109)로의 라이트가 정상으로 실행되었는지 아닌지를 체크한다. 플래시메모리에 있어서 라이트의 에러가 발생하는 것은 특정한 블럭에만 라이트가 빈발하여 플래시메모리의 리라이트회수의 제한을 넘은 경우이다. 상기 처리(3404)의 체크는 플래시메모리가 커맨드로써 체크기능을 갖는 경우에는 커맨드를 이용하고, 그렇지 않은 경우에는 라이트를 실행한 어드레스에서 데이타를 리드하여 버퍼메모리(3115)의 내용과 비교하는 것에 의해 간단히 실행할 수 있다. 처리(3404)의 체크에 있어서 정상적인 라이트가 실행되고 있던 경우는 I/O버스(3104)로 부터의 파일데이타라이트명령의 처리는 종료한다(처리(3401)).
한편, 이 체크에 있어서 라이트를 정상으로 할 수 없었던 경우의 동작에 대해서 이하에 설명한다. 예를들면 블럭3에 대한 라이트를 정상으로 할 수 없었던 경우, 즉 처리(3405)에 있어서 블럭사용테이블(3206)을 검색하여 대체메모리부(3109)의 미사용블럭을 찾아낸다. 검색은 블럭사용테이블(3206)의 2021E00H번지이후의 영역에서 0인 비트를 찾는 것에 의해 실행한다. 본 실시예에서는 2021E00H번지의 1바이트정보(3214)중 하위부터 6비트째가 0이므로 대체메모리영역(3203)의 6번째의 블럭, 즉 1E00A00H번지에서 시작되는 512바이트의 블럭(3213)이 미사용블럭인 것을 반도체디스크제어회로(3111)이 검출한다. 다음에 처리(3406)에서 미사용블럭이 발견되었는지 되지않았는지를 판단한다. 본 실시예에서는 미사용블럭이 있었으므로 이것을 대체블럭으로써 사용한다. 처리(3407)에 있어서 반도체디스크장치(3102)의 블럭3에 대응하는 블럭등록테이블(3205)의 200000CH번지에 대체메모리부(3109)의 6번째의 블럭을 나타내는 어드레스정보1E00A00H번지를 라이트하고, 블럭사용테이블(3206)의 블럭(3121)을 나타내는 비트(3220)을 1로 리라이트한다. 다음에 처리(3408)에 있어서 대체블럭으로써 사용하는 블럭(3213)을 블럭소거하고, 처리(3409)에서 버퍼메모리(3115)의 내용을 대체블럭에 라이트한다. 만약, 처리(3406)에서 대체블럭부에 미사용블럭이 없는 경우에는 처리(3411)에 있어서 상기 제61도에 도시한 에러정보레지스터(3105)에 적당한 에러코드를 라이트한후 I/O버스(3104)로 인터럽트신호(3103)을 출력한다. 호스트시스템(3101)은 인터럽트신호(3103)을 받으면 실행중의 처리를 중단하고, 에러정보레지스터(3105)의 내용을 리드한다. 그리고, 호스트시스템(3101)은 반도체디스크장치(3102)의 데이타메모리부(3108)의 다른 블럭에 재차 라이트동작을 실행하던가 또는 사용자에게 반도체디스크장치(3102)의 대체메모리부(3109)에 빈영역이 없어진 것을 통지하는 등의 처리를 실행한다. 이 호스트시스템의 처리에 대해서는 후술한다.
이상과 같이 해서 불량블럭이 있는 경우에는 대체블럭을 사용하는 것에 의해 플래시메모리전체의 수명을 연장할 수 있다. 본 실시예에서는 처리(3404)에 있어서만 라이트의 체크를 실행했었지만 처리(3408)의 다음의 처리에 있어서 소거가 정상적으로 실행되었는지 아닌지의 체크를 부가해도 좋다. 또, 처리(3409)의 다음의 처리에 라이트가 정상적으로 실행되었는지의 체크를 부가해도 좋다. 만약 에러라면 이 경우도 처리(3405)부터 처리(3410)에서 설명한 대체블럭으로의 라이트처리를 실행한다.
다음에 에러정보레지스터(3105)의 내용과 호스트시스템의 처리에 대해서 제79도 및 제80도를 참조해서 설명한다. 제79도에 에러정보레지스터(3105)의 내용을 도시한다. 또, 제80도에 호스트시스템에 있어서의 인터럽트신호에 응답하는 동작을 도시한다.
반도체디스크제어회로(3111)에서는 라이트시에 에러가 발생하면 통지수단에 의해 인터럽트신호를 발생함과 동시에 그것에 관한 정보를 제79도에 도시한 바와 같은 에러정보레지스터(3105)에 저장한다. 저장하는 에러정보로써는 상술한 바와 같이 대체메모리영역(3203)에 미사용블럭이 없는 경우에는 에러발생의 유무를 나타내는 비트와 빈대체블럭이 없는 것을 나타내는 비트를 세트한다. 또, 데이타메모리영역(3202)에 빈데이타블럭이 없는 경우에는 에러발생의 유무를 나타내는 비트와 빈데이타블럭이 없는 것을 나타내는 비트를 세트한다. 또, 에러가 발생한 블럭영역에 대해서 상기 블럭영역의 블럭번호 등의 어드레스정보를 블럭번호등록부에 세트할 수 있다.
또, 제81도에 도시한 바와 같이 에러정보레지스터를 영역분리해서 구비해도 좋다. 제81도에 있어서, 에러종별정보부, 예비정보영역, 블럭번호등록부1 및 블럭번호등록부2와 간이 미리 에러정보레지스터를 영역분리해둔다. 에러발생시에 반도체디스크제어회로(31)이 상술한 것과 마찬가지로 설정을 실행한다.
에러가 발생하면 호스트시스템(3101)은 제80도에 도시한 바와 같이 처리를 실행한다. 제80도에 있어서, 호스트시스템(3101)은 반도체디스크장치(3102)에서 인터럽트신호를 수신하면(처리(3141)) 인터럽트응답처리를 실행한다. 또, 인터럽트신호를 수신하는 대신에 에러정보레지스터(3105)의 내용을 폴링등에 의해 얻도록 해도 좋다. 인터럽트가 발생하면 ROM(3126) 또는 주메모리(3121)에 기억하고 있는 인터럽트 핸들루틴을 호출한다(처리(3142)). 에러정보레지스터(3105)에 저장되어 있는 내용을 리드한다(처리(3143)). 에러발생의 유무를 나타내는 비트를 판정하고(처리(3144)) 에러가 없는 경우에는 인터럽트처리루틴의 다른 처리를 실행하여 인터럽트처리를 종료한다(처리(3149)). 에러비트가 세트되어 있는 경우에는 에러정보레지스터(3105)에 저장되어 있는 다른 내용을 리드한다(처리(3145)). 에러내용에 대응하는 에러메시지를 ROM(3126) 또는 주메모리(3121)에서 리드한다(처리(3146)). 리드한 에러메시지를 표시수단의 화면에 표시한다(처리(3147)). 또는 스피커등의 출력수단에서 에러발생을 나타내는 경고음을 출력하거나 메시지를 음성출력한다. 또, 에러정보에 대응해서 미리 정한 다른 처리를 실행해도 좋다.
제74도에 에러정보의 통지방법의 예를 도시한다. 제74도에 있어서, 상기 CPU(3120)은 에러가 발생하면 주메모리(3121)등에 기억하고 있는 에러정보를 CRT(3123)으로 출력한다. 에러정보는 사용자에 대해서 상기 반도체디스크의 빈용량이 없어진 것을 나타내는 메시지의 예(3130)이나 마찬가지로 라이트에러가 발생한 것을 통지하는 다른 메시지의 예(3131)등 사용자의 에러의 내용을 알 수 있는 것이면 좋다. 또, 경고음으로써 BEEEP음이나 합성음성등을 사용해서 통지해도 좋다. 이밖에 상기 반도체디스크장치(3102)에 1개 또는 여러개의 LED를 구비해서 발생한 에러의 내용에 따라서 이들 LED를 점등시켜도 좋다.
이와 같이 해서 에러발생을 통지할 수 있다.
다음에 상기 설명한 라이트처리에 있어서 대체메모리부(3109)에 미사용의 블럭이 발견되지 않은 경우에 데이타메모리부(3108)의 미사용블럭을 검색하여 대체메모리로써 사용하도록 한 경우의 라이트동작 흐름도를 제65도에 도시한다.
제65도에 있어서, 제64도에 도시한 처리와 마찬가지로 라이트에러가 발생한 경우 처리(3405)에 있어서 대체메모리부(3109)의 빈블럭을 검색한다. 처리(3406)에서 빈영역이 발견되지 않았던 경우 처리(3501)에 있어서 대체메모리부(3109)의 빈영역을 검색하여 대체메모리에 할당하는 처리를 실행한다. 이 처리(3501)의 더욱 상세한 동작을 제66도에 도시한 흐름도를 사용해서 설명한다. 또 제65도의 다른 처리에 대해서는 제64도와 동일하므로 여기에서는 생략한다.
제66도에 있어서, 우선 처리(3601)에 있어서 상기 제62도에 도시한 메모리블럭관리테이블(3204)의 블럭사용테이블(3206)에서 데이타메모리부(3108)의 미사용블럭을 검색한다. 구체적으로 블럭사용테이블(3206)의 어드레스2020000H번지에서 2021DFFFH번지까지의 영역을 검색하여 비트가 0으로 되어 있는 것을 찾아낸다. 본 실시예에서는 2020000H번지의 1바이트중 하위부터 6번째의 비트가 0으로 되어 있다. 이것을 상기 설명한 바와 같이 데이타메모리영역(3202)의 6번째 블럭, 즉 0000A00H번지에서 시작하는 512바이트의 블럭(3210)이 미사용인 것을 나타낸다. 다음에 처리(3602)에 있어서 데이타메모리부(3108)에 빈영역이 있는지 없는지를 판정하여 빈영역이 있었던 경우에는 처리(3603)에 있어서 블럭사용테이블(3206)의 블럭(3210)에 대응하는 비트(3220)을 사용중, 즉 1로 한다. 다음에 처리(3604)에 있어서 제62도의 블럭등록테이블(3205)의 라이트하고자 하는 블럭(3210)에 대응하는 20000EH번지에서 시작하는 4바이트의 영역에 상기 검색한 데이타메모리영역(3202)의 빈영역의 어드레스정보(3221)을 라이트한다. 본 실시예에서는 블럭5에 라이트하는 처리의 경우 블럭등록테이블(3205)의 200000EH번지에 어드레스정보0000A00H를 라이트한다. 계속해서 처리(3605)에서 상기 데이타메모리부(3108)의 빈영역의 블럭소거를 실행하고, 처리(3606)에서 상기 빈블럭(3210)에 버퍼메모리(3115)의 내용을 라이트한다.
그런데, 상기 설명한 처리에 있어서, 대체라이트영역으로써 사용한 데이타메모리부(3108)의 블럭(3210)은 본래 데이타영역으로써 사용하는 영역이다. 그 때문에 호스트시스템(3101)이 상기 데이타메모리부(3108)의 블럭(3210)에 다른 라이트명령을 발행할 가능성이 있다. 그래서, 처리(3607)에 있어서 상기 에러정보레지스터(3105)에 대체영역으로써 사용한 상기 데이타메모리부(3108)의 빈영역의 블럭번호등의 정보를 라이트하고, 처리(3609)에 있어서 호스트시스템(3101)에 대해서 인터럽트신호(3103)을 출력한다. 호스트시스템(3101)은 인터럽트신호(3103)을 받으면 처리를 중단하고, 상기 에러정보레지스터(3105)의 블럭번호를 리드하여 상기 블럭을 사용금지로 하는 등의 적절한 처리를 실행하면 좋다.
또, 상기 처리(3602)에 있어서 데이타메모리부(3108)에 빈영역이 발견되지 않았던 경우에는 처리(3609)에 있어서 상기 에러정보레지스터(3105)에 빈 영역이 발견되지 않았던 것을 나타내는 에러정보를 라이트하고, 처리(3608)에 있어서 인터럽트신호(3103)을 호스트시스템(3101)에 대해서 출력한다. 호스트시스템(3101)은 인터럽트신호(3103)을 받으면 실행중의 처리를 중단하고 사용자에 대해서 반도체디스크장치(3102)에 빈용량이 없어진 것을 통지하는 등 적절한 처리를 실행하도록 하면 좋다.
또, 본 실시예의 반도체디스크제어회로에 있어서의 처리방법에 있어서 데이타메모리부 및 대체메모리부의 재구성을 실행하는 동작을 제76도에 도시한 흐름도를 사용해서 설명한다. 상기 각 실시예에 있어서 라이트에러가 발생한 경우에는 상술한 바와 같이 상기 대체메모리부(3109)의 빈 블럭을 검색하여 데이타를 라이트한다. 상기 대체메모리부(3109)의 빈블럭이 없어진 경우에는 데이타메모리부(3108)의 빈 영역을 검색하여 반도체디스크(3102)의 재구성을 실행하게 할 수 있다. 이 경우 제76도에 있어서 우성 상기 실시예의 메모리블럭관리테이블(3112)에서 초기화정보를 리드한다(처리(3181)). 또, 데이타메모리부(3108)의 미사용블럭을 검색한다(3182)). 이것을 상기 데이타메모리부(3108)의 전체블럭에 대해서 반복한다(3183)).
여기에서 처리(3184)에서 빈영역의 유무를 판단하여 빈영역이 없으면 처리(3188)에서 사용자에게 빈영역이 없는 것을 통지한다. 또, 빈 영역이 있으면 이것을 새로이 대체메모리부(3109)에 할당해서 상기 메모리블럭관리테이블(3112)의 초기화정보영역에 새로운 초기화정보를 라이트한다(3185)). 또, 상기 대체메모리부에 할당한 블럭을 에러정보레지스터(3105)를 사용해서 호스트시스템에 통지하고 사용금지로 한다(처리(3186)). 그후, 사용자에게 디스크의 재구성처리가 종료한 것을 통지하고(처리(3187)) 종료한다.
이상과 같이 해서 대체메모리부의 재구성을 실행하도록 해도 좋다.
다음에 변형예에 대해서 설명한다. 상기 실시예에서는 반도체메모리(3106)에 데이타메모리부(3108)과 대체메모리부(3109)를 마련했지만 데이타메모리부(3108)과 대체메모리부(3109)를 구별하지 않고 혼재영역으로 하는 경우의 변형예에 대해서 설명한다. 이 경우의 구성도를 제68도에 도시한다. 제68도에서 제61도에 도시한 구성과는 달리 반도체메모리(3106)은 데이타메모리와 대체메모리가 혼재하는 혼재데이타메모리(3801)로 구성한다. 또, 제68도에 도시한 혼재데이타메모리(3801)의 메모리맵과 메모리블럭관리테이블(3112)의 대응예를 제69도에 도시한다. 제69도에 있어서, 메모리어드레스맵(3201)에 도시한 바와 같이 혼재데이타영역(3901)은 데이타블럭과 대체블럭이 혼재하고 있고, 전체 0000000h번지에서 1FFFFFFh번지까지의 32M바이트의 용량을 갖는다. 본 실시예에서는 이중 실제로 데이타영역으로써 사용하는 것은 30M바이트로 하고, 나머지 2M바이트는 대체블럭영역으로써 사용하는 것으로 한다. 상기 2개의 영역의 용량은 고정적인 것은 아니고, 사용자가 반도체디스크장치의 초기화작업시에 초기화정보영역에 적당한 값을 설정하는 것에 의해 임의로 변경할 수 있다. 초기화정보영역(3207) 및 블럭등록테이블(3205), 블럭사용테이블(3206)의 용량의 결정방법에 대해서는 제62도와 동일하다.
다음에 제68도에 도시한 실시예에의 동작에 대해서 제70도를 사용해서 설명한다. 리드동작에 대해서는 상기 제63도에 도시한 흐름도와 마찬가지로 처리할 수 있다. 또, 라이트동작은 상기 제64도에 도시한 라이트동작의 처리(3404)까지는 마찬가지로 처리한다. 제69도에 도시한 실시예에서는 상기 설명한 바와 같이 데이타블럭영역과 대체블럭영역이 혼재하고 있다. 따라서, 제70도에 도시한 처리(3404)에서 라이트에러가 발생한 경우는 처리(3405)에 있어서 블럭사용테이블(3206) 전체중에서 빈블럭을 검색한다. 이것 이후의 처리 및 그밖의 처리는 제64도에 도시한 처리와 마찬가지로 실행한다.
또, 제71도에 본 실시예의 제2의 변형예를 도시한다. 제71도에 도시한 실시예는 제61도에 도시한 실시예에 있어서의 반도체메모리제어회로(3111)을 CPU, MPU, MCU 등이라 불리우는 마이컴(3800)을 사용해서 실현하고, 버퍼메모리(3115)를 인터페이스회로(3107)에 내장한 것이다. 마이컴(3800)을 사용한 반도체디스크장치(3102)의 제어는 통상 리드온리메모리(이하, ROM이라 한다)에 저장한 것을 사용한다. 본 실시예에서는 마이컴(3800)을 ROM내장의 원칩형의 마이컴으로 해도 좋고, 메모리블럭관리테이블(3112) 또는 반도체메모리(3106)의 특정한 어드레스공간을 마이컴(3800)의 제어프로그램에 할당해도 좋다. 또, 독립된 ROM칩을 탑재해도 좋다. 또, 제71도에 도시한 변형예의 동작은 제61도에 도시한 실시예의 반도체디스크제어회로(3111)을 마이컴(3800)으로 치환한 것으로써, 기본적으로 동일하다.
또, 이상 설명한 제61도, 제68도 및 제71도에 도시한 실시예에서는 대체메모리영역(3203)과 데이타메모리영역(3202)는 각각 하나의 영역뿐이지만 초기화정보영역에 새로이 다른 어드레스정보와 용량을 부가하는 것에 의해 여러개의 대체메모리영역(3203)와 데이타메모리영역(3202)를 마련해도 지장은 없다.
다음에 본 실시예의 제3의 변형예로써 인터럽트신호(3103)을 사용하지 않는 예에 대해서 제72도에 도시한다. 반도체디스크장치(3102)에 플래시메모리의 라이트에러등이 발생한 경우에는 반도체디스크제어회로(3111)이 에러정보를 에러정보레지스터(3105)에 라이트하고, 호스트시스템(3101)이 I/O버스(3104)를 통해서 에러정보레지스터(3105)의 내용을 폴링하는 등해서 리드하는 것에 의해 에러의 발생을 통지할 수 있다. 제72도에 도시한 변형예의 다른 동작에 대해서는 제61도에 도시한 실시예와 동일하다.
다음에 본 실시예의 제4의 변형예로써 상기 반도체메모리(3106)을 상기 데이타메모리부(3108)만으로 구성하고, 제61도의 대체메모리부(3109)가 없는 예에 대해서 설명한다. 이 변형예에 있어서 플래시메모리의 라이트에러가 발생한 경우에는 메모리블럭관리테이블(3112)의 메모리블럭 사용정보를 검색해서 데이타메모리부(3108)의 빈블럭을 찾아내어 상기 빈블럭을 대체블럭으로 해서 데이타를 라이트한다. 또, 대체블럭으로써 사용한 상기 데이타메모리부(3108)의 블럭정보를 에러정보레지스터(3105)에 라이트해서 호스트시스템(3101)에 통지하도록 하면 좋다. 제75도에 도시한 변형예에 다른 부분의 동작은 제61도에 도시한 실시예와 동일하다.
이상 설명한 바와 같이 본 발명의 본질은 플래시메모리를 사용한 반도체디스크에 있어서 플래시메모리의 빈용량이 없어진 경우 또는 라이트에러발생시에 대체하는 대체메모리영역이 없어진 경우에 이것을 호스트시스템 및 그 사용자에게 통지 등 적절한 처리를 하는 것이 본질이다. 따라서, 플래시메모리본체의 리드, 라이트제어방식 및 메모리블럭관리테이블의 구성방법 등은 상기 설명한 실시예이외의 임의의 방식이라도 좋으며 본 특허의 본질을 바꾸는 것은 아니다.
또, 사용자에게 에러를 통지하는 수단도 상기 설명한 실시예에 한정되는 것은 아니다. 상기 실시예에 의하면 플래시메모리의 라이트에러를 구제할 수 있으므로 반도체디스크장치의 수명을 연장할 수 있다.
본 발명에 의해 플래시메모리를 기억매체로 한 반도체디스크에 있어서 플래시메모리의 리라이트회수의 제한에 의한 라이트에러를 구제할 수 있으므로, 반도체디스크의 수명을 연장할 수 있다. 또, 에러구제를 할 수 없을때는 사용자에게 이것을 통지하므로 데이타손실을 방지하는 적절한 처리를 취할 수 있다.
실시예 4
또, 본 발명의 실시예를 도면을 참조해서 설명한다.
제82도는 본 발명의 제4의 실시예의 구성도이다. 제82도에 있어서, (4001)은 프로그램의 실행이나 데이타의 처리를 실행하는 CPU(중앙처리장치), (4002)는 CPU(4001)이 처리실행하기 위한 프로그램, 데이타등을 저장하는 대용량의 불휘발성메모리인 플래시메모리, (4003)은 플래시메모리(4002)에 저장되어 있고 전송되어온 데이타나 CPU(4001)로부터의 라이트데이타등을 일시적으로 기억하는 휘발성메모리인 캐시메모리이다. 이 캐시메모리는 예를들면 DRAM, SRAM등에 의해서 실현할 수 있다. (4004)는 캐시메모리(4003)이 저장하고 있는 데이타에 할당되어 있는 CPU어드레스(CPU가 데이타의 액세스를 위해 출력하는 어드레스를 말한다), 그것에 부수된 정보를 기록하는 어드레스어레이, (4005)는 CPU(4001)이 액세스를 요구한 데이타에 대응하는 어드레스와 어드레스어레이(4004)에 기록되어 있는 어드레스를 비교하는 어드레스비교회로, (4006)은 CPU(4001)의 액세스요구에 가능한한 고속으로 정확한 데이타를 액세스할 수 있도록 통괄 관리제어하는 컨트롤러, (4007)은 CPU(4001)의 메모리버스이다. 어드레스어레이(4004), 어드레스비교회로(4005), 컨트롤러(4006)은 예를들면 각종 CMOS, 트랜지스터, 저항, ROM(소정의 처리를 실행하는 프로그램이 저장된다). RAM, CPU등의 전자디바이스에 의해 실현할 수 있다. 또, CPU가 액세스하는 어드레스가 존재하는 어드레스공간은 예를들면 플래시메모리(4002)에 대해서 할당되어 있는 것으로써 설명을 한다. (4060)은 데이타를 액세스하기 위한 커맨드등의 각종 커맨드나 어드레스등을 적어도 입력하는 기능을 갖는 입력수단이다. 예를들면 마우스, 키보드등에 의해서 실현된다. (4061)은 후술하는 메시지나 필요한 정보를 출력하는 기능을 갖는 수단이고, 예를들면 프린터등의 인쇄수단이나 CRT, EL디스플레이, 액정디스플레이등의 표시수단에 의해서 실현할 수 있다.
다음에 본 구성에 있어서의 동작에 대해서 설명한다.
CPU와 기억장치를 구비하는 일반적인 정보처리장치에서는 주기억장치로써 DRAM등의 휘발성메모리를 사용해서 구성하는 것이 일반적이지만 이것은 액세스속도를 고려하는 것이다. 이것에 대해서 예를들면 휴대형 퍼스컴등에 의해 필요성이 높은 소위 리줌기능, 퀵스타트기능 등의 실현에는 불휘발성메모리를 사용하는 것이 필요하지만 전지에 의해 백업을 실행하는 SRAM에서는 용량적으로도 신뢰성상 문제점이 많으며, 또 전기적 리라이트가능한 ROM에서는 리라이트시간이 매우 느리므로 이것을 사용하는 것은 어렵다.
그래서, 본 실시예에서는 휘발성메모리를 데이타등의 일시적인 기억을 실행하는 캐시메모리로써 채용하여 CPU(4001)이 구비하는 메모리박스(4007)에 직접 접속해서 실질적인 주기억장치로써 플래시메모리를 사용한 구성으로 한다. 즉, 주기억장치인 플래시메모리(4002)는 CPU(4001)에서 직접 액세스되는 일은 없으며, 따라서, 주기억장치의 액세스의 지연이 CPU(4001)의 동작에 거의 영향을 미치지 않도록 하는 것이다.
제82도를 참조해서 계속 설명한다. CPU(4001)은 메모리버스(4007)을 거쳐서 캐시메모리(4003)을 액세스한다. 단, 이때 액세스하는 어드레스는 어드레스비교회로(4005)에 입력되어 어드레스어레이(4004)에 미리 등록되어 있는 어드레스와 비교한다. 만약, 등록되어 있는 어드레스이면(이하, 이것을 어드레스비트라 한다) 컨트롤러(4006)은 캐시메모리(4003)내에 있어서의 상기 어드레스에 해당하는 장소를 액세스한다. 역으로 어드레스어레이(4004)에 등록되어 있지 않은(이하, 이것을 어드레스미스히트라 한다) 어드레스이면 어드레스어레이(4004)에 상기 어드레스를 등록한다. 그후, 상기 어드레스에 대응하는 데이타를 캐시메모리로 전송하여 저장하고, 상기 어드레스에 대응하는 플래시메모리(4002)내의 영역의 액세스를 실행한다.
제83도에 이러한 컨트롤러(4006)의 구성을 도시한다.
제83도중, (4011)은 고속으로 연속어드레스를 발생해서 메모리를 고속으로 액세스하기 위한 DMA컨트롤러로써, 수십~수백바이트의 연속데이타의 전송시에 사용한다. (4012)는 메머리제어신호 발생회로로써, 플래시메모리를 비롯해서 캐시메모리, 어드레스어레이등의 동작을 제어하기 위한 제어신호를 생성한다. 예를들면 CPU, ROM, RAM, 각종 게이트, ROM에 내장되는 프로그램에 의해서 실현할 수 있다. 또, 캐시메모리 등에서 DRAM을 사용하고 있는 경우는 DRAM을 리프레시하기 위한 리프레시 컨트롤러도 상기 메모리제어신호 발생회로가 구비하는 구성으로 하면 좋다. (4013)은 메모리제어타이머로써, 플래시메모리의 내용의 소거, 라이트등의 시간을 측정하는 수단이며, CPU, ROM, RAM, 각종 CMOS, ROM에 내장되는 프로그램에 의해서 실현할 수 있다.
(4014)는 휘발성의 데이타메모리이고, 제어프로그램실행의 작업영역으로써, 또 메모리버스로 부터의 데이타를 일시적으로 축적하거나 어드레스어레이의 정보나 시스템내에서 수수되는 데이타를 일시적으로 보존하는 영역으로써 사용된다. (4015)는 제어프로그램이 저장되는 ROM, (4016)은 제어프로그램을 실행하고, 본 발명이 관계된 시스템전체를 통괄해서 제어하는 프로세서, (4017)은 시스템내에서 수수되는 어드레스나 시스템내에서 수수되는 데이타등을 전송하기 위한 버스이다.
이 컨트롤러(4006)의 동작, 즉 상기 제어프로그램이 실행하는 처리를 설명하기 위한 흐름도를 제84도에 도시한다.
제84도에 도시한 바와 같이 우선 CPU(4001)에서 어떤 어드레스에 대한 액세스요구가 출력된다(스텝a). 이 어드레스는 어드레스비교회로(4005)에 입력하고, 어드레스어레이(4004)에 등록되어 있는 어드레스와 비교처리된다(스텝b). 어드레스히트이면 원하는 데이티가 캐시메모리(4003)내에 존재하게 된다. 그래서, 이 어드레스를 어드레스어레이(4004)에 기억되어 있는 정보에 따라서 캐시메모리(4003)이 해당하는 어드레스로 변환처리하고(스텝c), 이 변환처리된 어드레스에 따라서 캐시메모리(4003)의 해당영역을 액세스한다(스텝d). 즉, 리드액세스이면 캐시메모리(4003)내의 데이타를 메모리버스(4007)을 거쳐서 CPU(4001)로 출력하고, 라이트액세스이면 캐시메모리(4003)의 해당하는 장소를 메모리버스(4007)를 거쳐서 CPU(4001)에서 입력되는 데이타로 리라이트한다. 한편, 어드레스미스히트이면 캐시메모리(4003)내에 새로이 데이타를 저장하기 위한 데이타영역을 만든다(스텝e). 또, 스텝e에 있어서의 상세한 처리에 대해서는 본 흐름도의 설명후에 설명한다. 그런데, 신규의 데이타저장영역이 만들어졌으면 상기 영역에 대해서 액세스를 실행한다. 만약, 리드액세스이면 플래시메모리(4002)에서 해당하는 어드레스에 저장되어 있는 데이타를 리드해서 캐시메모리(4003)으로 전송하여 저장하고(스텝f), 또 메모리버스(4007)로 상기 데이타를 출력한다(스텝g). 만약 라이트액세스이면 CPU(4001)로 부터의 데이타를 캐시메모리(4003)의 신규의 데이타저장영역에 라이트한다(스텝h). 그리고, 최후에 어드레스어레이를 신규 라이트에 일치하도록 갱신한다. 즉, 미스히트이면 어드레스를 어드레스어레이에 등록한다(스텝i).
이상이 컨트롤러(4006)의 개략적인 동작이다.
그런데, 상술한 스텝e의 처리에 대해서 설명한다. 또, 컨트롤러(4006)은 휘발성기억수단에 저장되는 데이타량을 감시하여 상기 데이타량이 미리 정한 값을 넘지않도록 미리 정한 용량이상의 데이타 미저장영역을 마련하는 처리를 실행하도록 구성해두는 것이 바람직하다.
가령, 이 정보처리장치가 동작을 개새한 후 그다지 처리를 실행하고 있지않은 단계라면 캐시메모리(4003)내에는 데이타의 미사용영역이 다수 존재하고 있으므로, 특별한 처리를 하지않아도 이 미사용영역내에 신규정장영역을 할당하면 좋다. 그러나, 미사용영역이 존재하지 않게 되면 이미 저장하고 있는 데이타를 소거하였더라도 데이타저장영역을 만들어야 한다. 그를 위해 어드레스어레이(4004)에 등록되어 있는 각 어드레스에 대응해서 CPU가 어떤 순서로 액세스했는지를 표시하는 정보인 「액세스이력」을 기억해둔다. 캐시메모리(4003)에 저장되어 있는 데이타중 현시점이후에 가장 액세스되지 않은 것으로 예상되는 것을 찾아낸다. 이것이 캐시메모리(4003)내에 액세스대상으로 되는 데이타가 존재하는 비율(이하, 히트율이라 한다)과 액세스속도의 고속화등의 성능을 향상시킨다. 그를 위해서는 각 어드레스가 최후에 액세스된 상대적인 오래됨을 나타내는 정보가 기록되어 있으면 좋다. 즉, 이 기록내용에 따라서 전회의 액세스가 실행된 것이 가장 오래된(시간축상에서 가장 과거방향에 존재한다) 어드레스를 찾아낼 수 있고, 캐시메모리(4003)내에서 데이타를 소거해도 가장 문제가 없는 것이라 고려되는 것을 선정할 수 있다. 이 액세스이력에 관한 정보는 어드레스어레이(4004)에 저장하면 처리속도의 향상등의 점에서 효율적이다.
단, 액세스이력은 캐시메모리용량이 크게 되면 상대적인 오래됨을 기록하기 위해서는 매우 복잡하며, 또한 대용량으로 되므로 연구가 필요하다.
그 연구로써 히트율이 크게 감소해버리지만 액세스의 이력기록을 간략화할 수 있다. 예를들면 소거하는 데이타를 랜덤하게 선택하는 방법이 고려된다. 또는 캐시메모리(4003)의 선두에서 차례로 데이타를 라이트하는 것으로 해두고, 데이타의 소거도 선두에서 순번으로 실행하면 라이트된 순서에 따라서 데이타를 소거하는 소위 FIFO제어를 간단히 실현할 수 있다. 또는 일반적인 캐시메모리시스템에서 사용되고 있는 세트어소시에이티브방식을 채용하면 어드레스비교도 간단하게 된다. 세트어소시에이티브방식은 잘 알려져 있으므로 설명은 생략한다.
그런데, 이 세트어소시에이티브방식을 채용하기 위해서는 실용상 약간의 문제가 있다. 이것은 CPU(1)에서 어떤 어드레스로의 라이트요구가 발생하고, 그것이 어드레스미스히트였던 경우 캐시메모리중의 어떤 어드레스데이타를 플래시메모리에 라이트백해서 새로이 데이타의 저장영역을 만드는 동작에 대해서 설명했지만 플래시메모리의 데이타의 리라이트에는 매우 시간이 걸리므로 처리속도의 저하등의 시스템성능의 큰 저하를 초래한다. 그래서, 컨트롤러(4006)의 제어를 제85도에 도시한 바와 같이 하는 쪽이 시스템성능의 저하를 방지할 수 있어 실용적이다.
제85도는 제84도와 거의 같은 처리를 도시하기 때문에 상세한 설명은 생략하지만 스텝e에 있어서의 신규저장영역의 작성타이밍이 제84도에 도시한 처리흐름과는 다르며 CPU(4001)로 부터의 데이타전송이 종료한 시점에서 신규저장영역의 작성동작에 들어간다. 즉, 항상 신규저장영역을 준비해두고 CPU(4001)로 부터의 라이트요구가 어드레스미스히트였던 경우에는 그 신규저장영역에 라이트하는 것에 의해 플래시메모리의 리라이트시간이 CPU(4001)의 동작에 영향을 주지않도록 하는 것이다. 단, 이 방법에서는 캐시메모리(4003)에 데이타가 존재하지 않는 영역을 항상 준비해두는 만큼 캐시메모리의 저장데이타용량이 적어지므로 히트율은 감소하게 되는 것을 고려해야만 한다. 물론, 플래시메모리의 리라이트시간에 의한 시스템성능의 저하를 억제할 수 있는 효과는 크다.
또, 이때 캐시메모리(4003)이 잘 알려져 있는 4웨이세트어소시에이티브방식을 채용하고 있는 것으로 하면 데이타가 저장되는 것은 3세트분뿐이며, 나머지 1세트는 CPU로 부터의 요구에 의해서 발생한 미스히트의 라이트액세스후 이외는 항상 빈상태로 해두게 된다. 따라서, 액세스이력정보의 유지, 갱신은 3번째까지 실행하면 할 좋은 것으로 된다.
또, 이밖에 플래시메모리에 있어서 일괄소거의 단위용량은 1회의 액세스데이타에 비하면 매우 크다는 문제가 있다. 즉, CPU의 1회의 액세스데이타는 수바이트정도인 것에 대해서 플래시메모리의 소거의 단위는 수백바이트이상이다. 따라서, 리드액세스를 위해 수바이트의 데이타를 플래시메모리에서 캐시메모리로 전송한후에 그 데이타의 리라이트가 발생하여 데이타를 캐시메모리상에서 리라이트하면 대응하는 플래시메모리내의 영역의 데이타를 전부 리라이트한다. 이때, 플래시메모리상에서는 수바이트만의 리라이트는 할 수 없으므로 소거영역 전부를 별도로 마련한 휘발성메모리에 리드해서 저장하고, 그것에 대해서 해당 장소의 리라이트를 실행하여 재차 플래시메모리내의 데이타의 소거를 실행한 영역에 데이타를 라이트하는 즉 플래시메모리에 데이타를 라이트백하는 처리가 필요하게 된다. 또, 이때 동일한 소거영역내의 데이타가 캐시메모리내에 별도로 존재하는 것이면 동시에 상기 라이트백을 실행하는 것이 효율적이다. 따라서, 플래시메모리로의 라이트백시에는 처리가 복잡하게 되어 처리에도 시간이 걸린다. 그래서, 플래시메모리내의 데이타를 캐시메모리로 전송할때에는 단위소거영역을 합쳐서 전송하는 것으로 하고, 이 영역마다 액세스이력을 기록해서 플래시메모리 라이트백도 이 영역마다 실행하는 것으로 하면 플래시메모리상에 있어서의 동일 영역에 존재하는 캐시메모리상의 데이타를 세이브해서 라이트하는 처리나 찾는 처리는 불필요하게 된다. 즉, 라이트액세스가 발생했으면 그 데이타를 포함하는 단위소거영역의 모든 데이타를 캐시메모리에 전개하도록 한면 좋다.
그러나, 리드시에는 수바이트의 데이타의 리드를 위해 수백바이트이상을 리드해야만 하는 것으로 하면 비효율적이다. 그래서 리드액세스를 위해 원하는 데이타가 캐시메모리로 전송될때에는 필요한 바이트수만큼 캐시메모리로 전송하고, 라이트액세스를 위한 전송시에는 단위소거영역 전부를 전송하는 것으로 하면 리드동작도 라이트동작도 효율적으로 실행할 수 있다.
또, 어드레스어레이에 저장하는 정보로써 캐시메모리내의 그 데이타가 리라이트되었는지 아닌지를 나타내는 플래그를 설정하는 구성으로 하는 것도 처리속도의 향상등의 큰 효과를 기대할 수 있다.
다음에 플래시메모리의 응용예로써 직렬버퍼 내장형의 실시예에 대해서 설명한다. 본 발명에 있어서 플래시메모리의 가격은 시스템의 가격을 결정하는 중요한 요소로 된다. 불휘발성 메모리로 구성되는 주기억은 대용량인 것이 요구되므로 주기억을 구성하는 플래시메모리는 저렴한 필요가 있다. 메모리의 가격을 결정하는 큰 요인으로써 메모리기능을 실현하는 단위인 셀의 크기를 나타내는 「셀면적」이 있다. 즉, 하나의 기억셀이 차지하는 면적에 의해 일정 면적이 갖는 기억용량이 정해지므로 메모리칩으로써의 가격에 크게 관계가 있다. 플래시메모리에 있어서는 1셀의 면적을 가능한한 작게 하기 위해 랜덤액세스를 희생할 필요가 있다. 즉, 어떤 용량을 갖고 있는 칩상의 1라인의 데이타를 일괄해서 액세스하고, 이것을 연속적으로 액세스할 수 있는 직렬버퍼로 전송하여 상기 직렬버퍼에서 외부로 직렬액세스해서 데이타를 출력한다. 따라서, 어느 하나의 데이타를 액세스하기 위해서는 동일 라인상의 데이타를 일괄해서 액세스하기 위해 액세스시간이 걸리므로 결과적으로 랜덤액세스성능을 떨어뜨리게 된다. 그러나, 이 경우 연속적인 데이타의 요구에 대해서는 첫번째의 액세스는 느리지만 그 이후는 고속으로 직렬액세스가 가능하다. 통상, 프로그램실행시는 액세스의 국소성 때문에 고속의 직렬액세스는 매우 유효하다. 그래서, 이것을 본 발명에 적용한 실시예에 대해서 설명한다.
제86도는 본 실시예에서 사용하는 플래시메모리의 구성예이다.
(4031)은 플래시메모리칩, (4032)는 플래시메모리어레이부, (4033)은 직렬버퍼부, (4034)는 액세스하는 어드레스, (4035)는 직렬클럭, (4036)은 플래시메모리어레이부 (4032)와 직렬버퍼(4033) 사이에서 전송되는 라인데이타, (4037)은 메모리칩에서 입출력되는 데이타이다. 단, 여기에서의 어드레스라는 것은 라인어드레스로써, 1라인분의 모든 데이타를 전송하기 위한 어드레스이다.
다음에 본 실시예에 있어서의 동작을 설명한다.
우선, 리드액세스이라면 플래시메모리칩(4031)에 액세스하기 위해 라인어드레스(4034)를 입력하면 플래시메모리어레이(4032)상의 해당하는 라인에 존재하는 데이타(4036)을 일괄해서 직렬버퍼(4033)으로 전송한다. 전송된 데이타는 그후 직렬클럭(4035)를 입력하는 것에 의해서 직렬버퍼(4033)에서 차례로 추출된다. 라이트액세스의 경우에는 우선 직렬클럭(4035)의 입력타이밍에 맞춰서 데이타를 차례로 직렬버퍼(4033)에 입력시켜 데이타의 입력이 종료한후에 플래시메모리어레이(4032)상의 라인어드레스(4034)에서 설정한 라인에 데이타의 전송을 실행한다. 이상이 본 플래시메모리의 동작의 개요이다.
본 플래시메모리를 사용한 실시예를 제87도, 제88도 및 제89도를 참조해서 설명한다.
제87도는 하드웨어구성을 도시한 도면으로써, 제82도와 거의 동일한 구성이다. 제82도와 번호가 동일한 구성요소는 동일한 기능을 갖는 수단이다. 단, 컨트롤러(4006)의 구성은 후술하지만 약간 다르다. 제82도의 플래시메모리(4002)의 부분은 제86도에서 설명한 플래시메모리칩(4031)을 사용하고 있다.
제88도는 본 실시예에 있어서의 컨트롤러(4006)의 구성예를 도시한 도면으로써, (4038)은 직렬버퍼(4033)용 클럭발생회로이고, 다른 구성요소는 제83도에서 설명한 구성요소와 동일하다.
제89도는 컨트롤러(4006)의 동작을 도시한 흐름도로써, CPU(4001)의 어드레스와 플래시메모리(4031)의 어드레스의 취급의 차이가 문제로 된다.
그런데, 제86도, 제87도, 제89도를 참조해서 동작을 설명한다. 우선, CPU(4001)로부터의 액세스요구가 있고(스텝a), 어드레스히트이면 캐시메모리(4003)을 액세스하고(스텝b), 어드레스미스히트이면 캐시메모리(4003)내에 새로이 데이타를 저장하기 위한 신규저장영역을 만든다(스텝c).
그리고, 플래시메모리(4031)을 액세스하기 위한 어드레스를 포함하는 라인의 어드레스(4034)를 부쳐해서 직렬버퍼(4033)으로 그 라인데이타를 전송하고 직렬클럭(4035)를 입력해서 데이타를 인출한다(스텝d). 이 인출된 데이타를 캐시메모리(4003)의 신규저장영역에 저장하고(스텝e), 또 리드액세스의 경우에는 이 신규저장영역중에서 CPU(4001)의 메모리버스(4007)상으로 원하는 데이타를 출력한다(스텝f).
한편, 라이트액세스의 경우에는 신규저장영역내의 액세스하는 어드레스에 해당하는 장소에 데이타의 라이트를 실행한다(스텝g).
최후에 어드레스어레이의 내용을 갱신해서 처리를 종료한다(스텝h). 여기에서, 미스히트시의 처리성능향성을 위해서는 상기의 실시예인 제85도의 동작과 마찬가지로 신규저장영역을 만드는 처리를 CPU(4001)의 액세스종료후에 실행하고, 신규저장영역을 실제로 라이트요구가 있기 이전에 작성해두면 좋다.
또, 본 실시예에 있어서는 어드레스어레이이나 액세스이력의 기록은 전부 라인단위로 설정하는 것으로 한다.
다음의 실시예는 직렬버퍼를 내장한 구조임과 동시에 직렬액세스개시어드레스가 설정할 수 있는 플래시메모리칩을 사용한 것이다. 상세하게는 우선, 원하는 라인을 액세스하기 위해 라인의 어드레스를 입력한다. 그것과 동시에 그 라인데이타가 직렬버퍼로 전송된 후에 직력클럭입력에 의해 출력되는 최초의 데이타를 라인내의 몇개째의 데이타로 하는지를 어드레스입력에 의해 설정할 수 있게 하는 것이다.
예를들면 1데이타의 길이가 1바이트, 1라인이 512바이트로써, 512개의 데이타중의 128번째의 데이타가 필요하면 라인 자체의 어드레스 및 라인내의 128번째라는 어드레스를 지정한다. 이것에 의해 직렬클럭입력후희 최초의 출력데이타는 128번째의 데이타로 되어 원하는 데이타를 즉시 액세스할 수 있게 된다. 이러한 액세스가 가능하면 라인의 도중에 존재하는 데이타를 인출할때 라인상의 몇번째에 존재하는가에 상당하는 갯수의 직렬클럭의 입력이 불필요하게 되어 라인액세스구조이면서도 랜덤액세스를 비교적 고속으로 실행할 수 있게 된다.
이와같은 메모리를 사용했을때의 실시예를 제90도(A),(B), 제91도를 참조해서 설명한다.
제90도(A),(B)는 리드액세스의 데이타의 취급을 제87도, 제88도에 있어서의 실시예와 대비해서 도시한 도면으로써, 도면중(4003)은 캐시메모리, (4033)은 제86도의 구성의 플래시메모리(4031)의 직렬버퍼(4033)의 부분이고, 직렬클럭(4035)의 입력에 의해서 데이타의 입출력이 가능하다. 그리고, 특히 제90도(B)에 도시한 직렬버퍼(4033)에 대해서는 직렬버퍼(4033)내의 선두어드레스의 설정이 가능한 것으로 한다. (4041)은 캐시메모리내부의 전송지 영역으로써, 직렬버퍼(4033)과 같은 용량을 갖고 있다. (4042)는 직렬버퍼(4033)중에서 선두로 지정된 어드레스에서 1~수바이트 떨어진 영역을 나타내고 있으며, 그 용량은, 캐시메모리(4003)의 데이타저장단위와 같은 것으로 한다. 이 용량은 CPU성능, 캐시메모리용량등에 따라서 결정된다. (4043)은 직렬버퍼(4033)상의 전송데이타(4042)의 전송지로써, 캐시메모리(4003)의 영역을 저장단위로 구획해서 작성한 여러개의 영역중의 하나이다.
제90도(A)에 있어서는 플래시메모리어레이에서 직렬버퍼(4033)으로 전송된 데이타를 1라인분 그대로 캐시메모리(4003)으로 전송해서 저장한다. 즉, 제89도에 도시한 흐름도에 따라서 데이타를 취급하고 있다. 이 데이타량은 플래시메모리의 구성, 구체적으로는 직렬버퍼의 용량에 의존한다.
플래시메모리는 저장되어 있는 데이타를 어떤 용량단위로 일괄 소거하는 구조로 했으므로, 메모리구조의 고집적화가 가능하게 되어 있지만 직렬버퍼의 크기는 일괄소거의 단위용량에 의존하고 있으므로, 어느정도의 크기로 되는 것은 플래시메모리의 특성때문에 피할 수는 없다.
현재, 이 일괄소거의 용량을 HDD(Hard Disk Driver)에 있어서의 섹터의 용량에 맞처 512바이트로 하는 것이 개시되어 있다. 이와 같은 메모리를 채용한 것으로 하면 제90도(A)에서는 데이타전송단위가 512바이트로 된다.
한편, 제90도(B)에서는 이 용량을 더욱 미세하게 구분해서 데이타의 전송을 실행한다. 따라서, 예를들면 수바이트의 작은 단위로써의 데이타의 전송도 가능하므로 전송시간을 향상할 수 있다.
또, 캐시메모리(4003)에는 작은 단위로 많은 장소로 분할해서 저장장소를 구성하고 있으므로 긴 연속액세스가 그다지 발생하지 않는 프로그램의 실행시에는 히트율을 향상시키는 것이 기대된다. 물론 연속적인 액세스에 대해서는 단지 연속어드레스로 저장하면 좋으므로, 어느쪽이라도 대처할 수 있다.
이 제90도(B)에 도시한 동작을 설명하기 위한 흐름도를 제91도에 도시한다.
우선, CPU(4001)에서 액세스요구가 출력된다(스텝a).
다음에 어드레스값을 어드레스어레이(4004)에서 비교해서 어드레스리트, 미스히트를 판단한다(스텝b). 어드레스히트의 경우에는 캐시메모리(4003)을 그대로 액세스한다. 미스히트의 경우에는 액세스하는 어드레스를 포함하는 1라인을 플래시메모리어레이(4032)에서 직렬버퍼(4033)으로 전송한다(스텝c). 그리고, 리드액세스의 경우에는 액세스데이타의 라인내에 있어서의 선두어드레스를 설정한다(스텝d). 그리고, 직렬버퍼(4033)에 직렬클럭(4035)를 입력해서 원하는 데이타를 인출한다(스텝e). 다음에 이 데이타를 캐시메모리(4003)에 준비되어 있는 신규저장영역에 저장한다(스텝f). CPU(4001)은 캐시메모리(4003)을 액세스하고, 액세스된 데이타는 메모리버스(4007)상으로 출력된다(스텝g).
라이트액세스의 경우에는 스텝c에서 직렬버퍼(4033)으로 전송한 데이타를 모두 캐시메모리(4003)으로 전송하고(스텝h). 캐시메모리(4003) 상으로 전송한 데이타에 대해서 액세스장소를 CPU(4001)로 부터의 라이트데이타에 리라이트한다(스텝i). 그리고, 다음의 미스히트액세스에 대비해서 캐시메모리(4003)내에 신규저장영역을 만든다(스텝j). 최후에 어드레스어레이(4004)에 저장되어 있는 정보를 그때의 상태와 일치하도록 갱신한다(스텝k). 스텝j에 있어서의 신규저장영역을 만드는 처리는 캐시메모리(4003)의 단위저장영역이 리드액세스된 경우에는 데이타를 라이트백할 필요는 없으므로, 단지 데이타를 상기 단위저장영역에 오버라이트하면 좋다. 라이트액세스의 경우에는 라인단위로 처리를 실행하므로 후보의 라인을 결정하고, 그 라인에 존재하는 데이타를 직렬버퍼(4033)에 저장해서 플래시메모리어레이(4032)로 전송하는 처리가 필요하다.
또, DRAM과 SRAM의 조합에 의한 정보처리장치에서 탑재되어 있는 캐시시스템에 있어서는 수바이트에서 수10바이트를 1블럭용량으로 해서 캐시효율을 높이고 있다. 마찬가지로, 본 실시예에 있어서도 CPU의 워드단어가 아닌 16바이트나 64바이트등의 단위로 캐시메모리와 플래시메모리의 데이타전송을 실행하는 것에 의해 제어의 간단화, 히트율의 향상에 효과적으로 되는 경우가 있다.
대용량 불휘발성의 주기억을 사용한 시스템에서 CPU가 어떤 원인에 의해 폭주한 경우의 대처에 대해서 설명한다.
이러한 사태에 대처하기 위해 예를들면 플래시메모리의 소거단위마다 라이트금지플래그를 저장하는 저장레지스터를 마련하고, 통상 리라이트되지 않는 데이타에 대해서는 라이트금지플래그를 설정한다. 라이트금지영역의 리라이트에 있어서는 상술한 라이트금지플래그를 없애 CPU에 인터럽트가 발생하지 않도록 하고나서 데이타의 리라이트를 실행하는 것을 정규의 방법으로 한다. 플래그가 설정된 상태에서 이 영역으로의 라이트가 발생한 경우에는 CPU에 대한 인터럽트를 발생하여 사용자에 대해서 확인을 얻도록 한다. 확인방법으로써, 예를들면 출력수단(4061)의 CRT등의 디스플레이에 CPU가 메시지를 표시하는 처리를 실행하도록 해두면 좋다. 즉, 사용자는 이때 예를들면 표시메시지에 의해서 폭주상태에 있는 것을 인식할 수 있고, 캐시메모리내의 데이타중 세이브해야할 것을 선택해서 세이브할 수 있으며, 또 CPU가 구비하는 프로그램카운터의 리세트를 실행할 수 있다. 또, 캐시메모리에 있어서도 어드레스어레이내에 동일한 플래그레지스터를 마련해두면 캐시메모리내의 데이타에 대한 안전성이 향상한다.
이상의 처리를 실현하는 장치의 구성도를 제92도에 도시하였다.
도면중, (4001)은 CPU, (4003)은 어드레스어레이, (4006)은 컨트롤러, (4060)은 입력수단, (4061)은 출력수단, (4051은 플래시메모리의 소거단위마다 마련하고 있는 용장영역, (4052)는 용장영역(4051)에 설정한 라이트금지플래그, (4053)은 어드레스어레이내에 마련한 라이트금지플래그, (4054)는 CPU로의 인터럽트요구신호로써, 마스크불가능한 인터럽트신호가 바람직하다.
입력수단(4060)은 적어도 데이타를 액세스하기 위한 커맨드등의 각종 커맨드, 후술하는 메시지에 대처하기 위한 지시등을 입력하는 기능을 갖는 입력수단이다. 예를들면 마우스, 키보드등에 의해서 실현된다. 출력수단(4061)은 후술하는 메시지나 그밖의 필요한 정보를 출력하는 기능을 갖는 수단이며, 예를들면 CRT, EL디스플레이, 액정디스플레이등의 표시수단에 의해 실현할 수 있다.
컨트롤러(4006)은 플래시메모리(4031)이나 캐시메모리(4003)으로의 라이트요구가 발생하면 그 장소의 라이트금지플래그(4052), (4053)을 참조하여 이 플래그를 설정하고 있는 경우에는 인터럽트요구신호(4054)를 발생한다. CPU(4001)은 이것을 받으면 조건없이 사용자에게 이 상황에 대한 처리를 요구하는 시퀀스를 실행한다. 사용자에게 요구하는 처리의 내용으로써 이하의 내용이 고려된다. (1) 라이트를 실행하는가, (2) 폭주상태라 판단하든가, (3) 캐시메모리에서 주기억으로 세이브하는 데이타의 지정, (4) 프로그램카운터를 클리어하는가, (5) 캐시메모리내를 클리어하는가 등이다. 사용자에 대한 문의는 예를들면 CRT등의 표지장치에 그 뜻을 메시지 표시하는 구성으로 하면 좋다. 또, 사용자는 문의에 대응하기 위해 마우스, 키보드등의 입력장치를 거쳐서 필요한 지시를 부여하는 구성으로 하면 좋다. 또, CPU(4001)은 미리 저장된 프로그램에 따라서 지시에 대응한 처리를 실행하도록 구성해두면 좋다.
이상의 처리에 의해, 폭주에 의한 중요한 데이타의 소실을 어느정도 회피할 수 있게 된다.
이상의 모든 실시예에 있어서 캐시메모리(4003)은 버스를 거쳐서 CPU(4001)에 직접 접속되어 있다. 그러나, 정보기기에 따라서는 CPU(4001)과 캐시메모리(4003) 사이에 메모리버스컨트롤러나 SRAM에 의한 캐시시스템등의 장치가 삽입되는 것도 있다. 여기에서는 CPU(4001)이 그들을 포함한 구성의 것으로 한다. 캐시메모리(4003)이 정보처리시스템에 구비되는 메모리버스에 직접 접속되는 것이 중요한 점이다.
또, 작업중단에 의한 전원차단시에는 캐시메모리에서 플래시메모리로 데이타를 세이블할 필요가 이다. 캐시메모리내의 데이타중 리드액세스뿐이었으므로 리라이트되고 있지 않은 데이타에 관해서는 데이타세이브의 필요는 없다. 그러나, 라이트액세스에 의해 리라이트된 데이타는 캐시메모리상에 존재하지만 플래시메모리상에 존재하지 않으므로 세이브를 실행하지 않으면 최신의 데이타가 소실되게 된다.
또, 소위 리줌기능을 실현하기 위해서는 세이브시에 CPU가 구비하는 각 레지스터가 저장하는 정보나 표시장치, 입출력장치등이 구비하는 데이타저장부내에 존재하는 내부데이타도 기억해둘 필요가 있다. 즉, 리스타트시에 필요한 데이타를 전부 세이브해두면 리줌기능을 실현할 수 없다. 이 때문에 전원차단을 기계적인 스위치에 의해 실행하는 것이 아니고 전원차단정보를 논리적으로 처리하는 시퀀스를 실행하는 수단이 필요하다. 이와 같은 수단은 CPU, ROM, RAM, 각종 CMOS등을 갖고 실현할 수 있다. 이 경우, 필요한 처리를 CPU가 실행하기 위한 프로그램을 ROM에 내장해두면 좋다.
또, 캐시메모리내에 저장된 데이타가 소실되지 않도록 하기 위해 정기적으로 캐시메모리의 데이타를 플래시메모리로 라이트백하는 처리를 실행하는 구성으로 해두는 것이 효과적이다. 또, 캐시메모리로써, 백업전원을 갖는 SRAM이나 FRAM(강유전체메모리)을 사용하면 고속의 랜덤액세스가 가능하면서 데이타를 소실하는 일이 없어진다.
이상과 같이 본 발명에 의하면 데이타의 리라이트속도가 느린 플래시메모리를 주기억으로 한 시스템을 구축할 수 있고, 전지에 대한 백업이 없어도 리줌기능이나 퀵스타트기능을 용이하게 실현할 수 있다.
또, DRAM에 의해 저렴하게 될 수 있는 플래시메모리를 주기억으로 하므로 대용량의 주기억을 저렴하게 제공할 수 있다.
또, 불휘발성의 기억수단에 의해서 주기억을 구성한 것에 의해 자기디스크장치나 그 밖의 외부기억장치가 불필요하게 되어 시스템의 간략화가 도모된다. 게다가, 또 처리도중에서의 파일액세스를 고속으로 실행할 수 있어 시스템의 성능이 향상한다. 또, 본 발명에 있어서 플래시메모리에는 랜덤액세스기능을 주안점으로 한 NOR형 뿐만아니라 라인액세스방식의 NAND형, AND형등 각종 플래시메모리를 채용할 수 있는 것이 큰 특징이다.
제93도에 다음의 실시예의 개략도를 도시한다. 제93도에 있어서, (4101)은 CPU, (4102)는 버스, (4300)은 카피백방식의 캐시메모리시스템, (4104)는 m바이트(m은 정수)를 1클럭으로 하는 플래시메모리로 구성되는 기억장치(주기억), (4105)는 제어회로이다. 캐시메모리시스템(4300)내에는 어드레스정보를 유지하는 어드레스어레이(4310), 데이타를 유지하는 캐시메모리(4320) 및 어드레스어레이(4310)의 어드레스와 CPU(4101)로부터의 어드레스를 비교하는 어드레스비교기(4330)으로 구성된다. 데이타를 유지하는 캐시메모리(4320)은 n개(n은 정수)의 m바이트단위의 레지스터(4321)로 구성된다. 어드레스를 유지하는 어드레스어레이(4310)은 각각 어드레스정보를 유지하는 부분(어드레스부) a, 유지되어 있는 어드레스정보에 해당하는 기억장치(4104)내의 블럭의 소거완료인지 아닌지를 타나내는 정보를 유지하는 부분(소거정보부) b 및 어드레스어레이(4310)내의 해당하는 레지스터(4321)이 갱신되었는지 아닌지의 정보를 유지하는 부분(갱신정보부) c로 이루어지는 n개의 레지스터(4311)로 구성된다. 갱신정보부c는 기존의 필드이지만 소거정보부b는 본 발명에서 새로 마련한 필드이다. (4312), (4322)는 어드레스어레이(4310), 캐시메모리(4320)의 제어신호이다.
제94도는 제93도의 제어회로(4105)의 처리흐름을 도시한 도면이다. 또, 제93도, 제94도의 실시예는 CPU(4101)에서 기억장치(4104)로의 액세스가 전부 기억장치(4104)의 블럭사이즈단위인 경우를 상정하고 있다.
이하, 제94도에 도시한 처리흐름에 대해서 설명한다.
CPU(4101)에서 기억장치(4104)로 리드액세스가 발생한 경우(STEP 1), 비교기(4330)으로 부터의 히트판정신호(4331)에 의해 캐시히트를 판정하면(STEP 2) 캐시메모리(4320)내의 상기 레지스터(4321)에서 버스(4102)로 데이타를 출력하고(STEP21) CPU(4101)은 그 데이타를 리드한다. 마찬가지로 리드액세스에 의해 미스히트를 판정한 경우는 새로 선택된 레지스터(4311)내의 갱신정보부c의 정보에서 캐시메모리의 치환알고리듬에 따라서 선택한 캐시메모리(4320)내의 라이트백해야할 레지스터(4321)이 갱신되어 있지 않은 것을 인식하면(STEP22) 레지스터(4321)의 데이타를 기억장치(4104)로 라이트백하는 처리(STEP226)을 생략하고 기억장치(4104)내의 해당하는 블럭의 데이타를 버스(4102)로 출력하는 제어와 함께 그 어드레스와 데이타를 캐시메모리(4320)내의 해당하는 레지스터(4311), (4321)에 각각 라이트하는 제어를 실행한다(STEP227).
또, 여기에서 말하는 레지스터(4321)이 갱신되어 있지 않은 상태라는 것은 기억장치(4104)내의 해당하는 블럭의 데이타와 레지스터(4321)내에 저장되어 있는 데이타가 동일한 상태를 나타낸다. 본 명세서에는 이하, 동일하다. 또, STEP227에서 레지스터(4311)의 갱신정보부c에 미갱신을 나타내는 정보를 라이트한다. STEP227의 처리가 완료하면 STEP1로 되돌아가 CPU(4101)로부터의 다음의 액세스를 기다린다.
CPU(4101)로 부터의 리드액세스에 의해 미스히트를 판정한 경우 치환알고리듬에 의해서 선택된 레지스터(4311)내의 갱신정보부c의 정보에서 캐시메모리(4320)내의 상기 레지스터(4321)이 갱신되어 있다고 판명난 경우(STEP22)는 STEP226으로 진행하고, 여기에서 레지스터(4321)에서 기억장치(4104)내의 해당하는 블럭으로 라이트, 즉 캐시메모리에 있어서 갱신된 데이타를 기억장치(4104)의 해당 블럭으로 라이트백하는 처리를 실행한다. 계속해서 CPU(4101)로 부터의 리드어드레스에 액세스된 기억장치(4104)내의 블럭데이타를 버스(4102)로 출력하고, 동시에 동일 데이타 및 어드레스를 레지스터(4311), (4321)에 라이트한다(STEP227). 상술한 바와 같이 STEP227에서는 레지스터(4311)의 갱신정보부c에 미갱신을 나타내는 정보를 라이트한다. STEP227의 처리가 완료하면 STEP1로 되돌아가 CPU(4101)로 부터의 다음의 액세스를 기다린다.
CPU(4101)에서 기억장치(4104)로 라이트액세스가 발생한 경우(STEP) 캐시메모리가 히트하면(STEP3) 레지스터(4311),(4321)에 CPU(4101)로 부터의 라이트어드레스와 데이타를 라이트한다(STEP323).
STEP3에서 캐시미스히트를 판정하고, 치환알고리듬에 의해 선택된 레지스터(4311)의 갱신정보부c의 정보에서 레지스터(4321)에 유지되어 있는 데이타가 갱신완료인 것을 인식하면(STEP31) 레지스터(4321)내의 전체데이타를 기억장치(4104)내의 해당블럭으로 라이트백한다(STEP332). 이 스텝322에서는 레지스터(4311)내의 블럭소거정보부b에 미소거를 나타내는 정보를 라이트한다. STEP322의 처리가 완료하면 CPU(4001)로 부터의 라이트어드레스와 데이타를 레지스터(4311), (4321)에 라이트한다(STEP323). 또, STEP323에서 레지스터(4311)내의 레지스터갱신정보부c에 갱신완료를 나타내는 정보를 라이트한다.
STEP31에서 레지스터(4311)의 갱신정보부c의 정보에서 레지스터(4321)에 유지되어 있는 데이타가 갱신되어 있지 않은 것을 인식하면 데이타의 라이트백(STEP322)은 불필요하므로 STEP323으로 진행한다.
이하, STEP323의 처리가 완료하면 라이트대상블럭이 소거완료인지 아닌지를 판정해서 소거완료가 아니면 해당블럭의 사전소거처리를 기동한다(STEP324). 그후, STEP1로 되돌아가 CPU(4101)로 부터의 다음의 액세스를 기다린다.
제94도의 흐름이 있어서, 특징점인 점을 STEP323에서 레지스터(4311), (4321)을 갱신한 후에 기억장치(4104)의 대응하는 블럭을 사전에 소거해두는(STEP33)것에 있다. 이 경우 본래라면 카피백방식의 캐시메모리에 있어서는 상기 레지스터(4311), (4321)을 갱신하면 충분하다. 그러나, 이 갱신에 따라 갱신정보부c가 갱신완료로 되므로 이 레지스터(4321)이 내용은 결국 기억장치(4104)의 대응 블럭으로 라이트백된다. 이때, 라이트백에 앞서서 그 블럭의 소거가 필요하게 된다. 본 실시예에 의하면 결국 소거되는 대응블럭을 미리 소거해두므로 다음회 이후의 라이트액세스의 캐시미스히트의 기억장치(4104)의 새로운 블럭으로의 라이트백(STEP322)에 있어서 본래 이것에 선행해서 실행되었던 소거처리가 생략되는만큼 고속으로 된다.
제99도에 의해 본 실시예에 의한 효과를 설명한다. 여기에서는 블럭소거시간을 10ms, 블럭으로의 라이트시간을 4ms, 캐시메모리(4300)의 갱신시간을 100ns로 상정한 경우의 종래의 방식과 본 실시예의 방식에 있어서의 액세스시간을 비교한다. 현재 CPU(4101)에서 기억장치(4104)로의 라이트액세스가 발생하고 어드레스가 미스히트로 한 경우를 상정한다. 종래라면 이 시점에서 선택된 데이타레지스터이 데이타가 라이트백해야할 곳의 브럭소거(10ms)를 개시하고, 그후 캐시메모리(43)의 상기 레지스터(4321)의 데이타를 기억장치(4104)의 대응블럭으로 라이트백하는 처리(4ms)를 실행하고, 또 캐시메모리(4300)을 갱신한다(100ns). 이것에 의해 라이트액세스가 완료하고 CPU(4101)은 다음의 처리를 개시한다. 따라서, 라이트액세스에 총 약14ms를 필요로 한다.
이것에 대해서 본 실시예에서는 어드레스가 미스히트한 시점에서 선택된 데이타레지스터가 갱신완료(라이트배요구)라도 라이트백해야할 곳의 대응블럭의 소거가 이미 종료하고 있다. 따라서, 즉시 대응블럭으로의 데이타의 라이트백처리(4ms)를 개시할 수 있다. 따라서, 본 실시예의 경우의 라이트액세스는 총 약 4ms이고, 종래의 방식에 비해서 70%정도 빠르고, CPU(4101)이 다음의 처리로 이행할 수 있는 것을 알 수 있다. 또, 다음의 처리로써 상술한 캐시메모리(4300)상에서 갱신된 데이타를 라이트백할때의 대응블럭의 소거처리를 실행해둔다.
제95도에 CPU(4101)에서 기억장치(4104)로의 액세스데이타의 사이즈가 기억장치(4104)의 블럭사이즈보다 작은 경우의 실시예의 개략도를 도시한다. 제95도에 있어서, (4101), (1402), (4300), (4310), (4312), (4320), (4321), (4322), (4330), (4331), (4104), (4401), (4105)는 제93도의 실시예와 동일하다.
(4313)은 어드레스정보를 유지하는 어드레스정보부a, 캐시메모리(4320)내의 해당하는 레지스터(4321)이 갱신되었는지 아닌지를 정보를 유지하는 갱신정보부c와 레지스터(4321)내의 갱신된 영역을 나타내는 정보를 유지하는 갱신영역정보부d로 이루어지는 레지스터이다. (4350)은 기억장치(4104)로의 라이트시에 사용하는 어드레스 정보용 레지스터, (4340)은 기억장치(4104)로의 라이트시에 사용하는 m바이트(기억장치(4104)의 1블럭분)의 데이타용 레지스터이다. 어드레스정보용 레지스터(4350)은 어드레스어레이(4310)의 각 레지스터(4313)에 대응해서 n개 마련된다. 마찬가지로 데이타용 레지스터(4340)은 캐시메모리(4320)의 각 레지스터(4321)에 대응해서 n개 마련된다.
제96도에 제95도의 제어회로(4105)의 처리흐름을 도시한다. 이하, 이 처리흐름에 대해서 설명한다. 또, 이 처리에서 제93도의 실시예의 블럭소거의 동작에 대해서는 액세스데이타사이즈와 블럭사이즈의 차리에 대한 처리에 대해서만 설명한다. 블럭소거동작을 고려한 처리허름에 대해서는 후술한다.
CPU(4101)에서 기억장치(4104)로 리드액세스가 발생한 경우(STEP1) 비교기(4330)으로 부터의 히트판정신호(4331)로 캐시히트를 판정하면(STEP2) 액세스된 레지스터(4321)내의 해당하는 부분의 데이타를 버스(4102)로 출력하고(STEP21), CPU(4101)은 그 데이타를 리드한다. 마찬가지로 리드액세스에 의해 미스히트를 판정한 경우(STEP2)는 캐시메모리의 치환알고리듬에 의해 선택된 레지스터(4313) 내의 갱신정보부c의 정보에서 캐시메모리(4320)내의 라이트백하는 레지스터(4321)이 갱신되어 있지 않은 경우는(STEP22) CPU(4101)로 부터의 리드어드레스에 해당하는 기억장치(4104)내의 대응하는 블럭의 전체데이타를 레지스터(4321)에 라이트하는 처리를 실행한다(STEP224). 또, 여기에서 말하는 레지스터(4321)이 갱신되어 있지 않은 상태라는 것은 제93도의 실시예와 마찬가지로 레지스터(4321)내에 저장되어 있는 데이타와 기억장치(4104)내의 대응하는 데이타가 동일한 상태를 나타낸다. 또, STEP224에서 레지스터(4311)내의 갱신정보부c에 미갱신을 나타내는 정보를 라이트한다. STEP224의 처리가 완료하면 CPU(4101)이 요구하는 레지스터(4321)내의 액세스된 데이타를 버스(4102)로 출력한다(STEP225).
STEP22에서 라이트백하야할 레지스터(4321)이 갱신되어 있는 것을 인식하면 레지스터(4313)의 어드레스정보에 대응하는 기억장치(4104)내의 블럭의 전체 데이타를 리드해서 레지스터(4340)에 라이트한다(STEP2221). STEP221이 완료하면 레지스터(4313)내의 d의 정보를 기본으로 레지스터(4321)내의 갱신된 데이타만을 레지스터(4340)의 해당부분에 라이트하는 처리와 레지스터(4313)내의 어드레스정보를 레지스터(4350)에 라이트하는 처리를 실행한다(STEP222). STEP222가 완료하면 상기 레지스터(4350)의 어드레스정보에 대응하는 기억장치(4104)내의 블럭을 소거하고, 상기 레지스터(4340)내의 전체데이타를 소거한 블럭에 라이트한다(STEP223). STEP223이 완료하면 STEP224, STEP225 진행한다. STEP225의 처리가 완료하면 STEP1로 되돌아가 CPU(4101)로 부터의 다음의 액세스를 기다린다.
CPU(4101)에서 기억장치(4104)로 라이트액세스가 발생한 경우(STEP1) 캐시메모리가 히트하면(STEP3), STEP314로 진행하여 CPU(4101)로 부터의 라이트데이타를 레지스터(4321)내의 해당하는 부분에 라이트한다. 또, 레지스터(4313)내의 갱신정보부c에 갱신완료를 나타내는 정보를 갱신영역정보부d에 레지스터(4321)의 갱신된 영역을 나타내는 정보를 라이트한다. STEP3에서 캐시미스히트를 판정하고, 레지스터(4313)의 갱신정보부c의 갱신정보부c에서 라이트백해야할 레지스터(4321)이 갱신되어 있지 않은 것을 인식하면(STEP31), STEP314로 진행하여 상술한 처리를 실행한다. 또, 여기에서 말하는 레지스터(4321)이 갱신되어 있지 않은 상태라는 것은 제93도의 실시예와 마찬가지로 기억장치(4104)내의 해당하는 데이타와 레지스터(4321)내에 저장되어 있는 데이타가 동일한 상태를 나타낸다. STEP31에서 기억장치(4104)내의 라이트백해야할 레지스터가 갱신완료인 것을 인식하면 레지스터(4313)의 어드레스정보에 대응하는 기억장치(4104)내의 블럭의 전체데이타를 리드해서 레지스터(4340)에 라이트한다(STEP311). STEP311이 완료하면 레지스터(4313)내의 갱신영역정보부d의의 정보를 기본으로 레지스터(4321)내의 갱신된 데이타만을 상기 레지스터(4340)의 해당부분에 라이트하는 처리와 레지스터(4313)내의 어드레스정보를 상기 레지스터(4350)에 라이트하는 처리를 실행한다(STEP312). STEP312가 완료하면 상기 레지스터(4350)의 어드레스정보에 대응하는 기억장치(4104)내의 블럭을 소거하고, 상기 레지스터(4340)내의 정체 데이타를 소거한 블럭에 라이트한다(STEP313). STEP313의 처리가 완료하면 STEP314로 진행하여 상술한 처리를 실행한다. STEP314가 완료하면 STEP1로 되돌아가 CPU(4101)로 부터의 다음의 액세스를 기다린다.
제95도의 실시예에 의하면 CPU(4101)로 부터의 라이트액세스가 기억장치(4104)의 블럭사이즈보다 작은 경우에도 라이트백하는 블럭의 데이타를 일단 상기 레지스터(4340)으로 페치하고, 블럭내의 새로 라이트되는 부분만을 상기 레지스터(4340)상에서 갱신하고, 상기 레지스터(4340)의 데이타전부를 일괄해서 기억장치(4104)내의 대응하는 블럭에 라이트하는 것에 의해 블럭내의 부분라이트를 실현할 수 있다. 또, CPU(4101)로 부터의 리드액세스가 기억장치(4104)의 블럭사이즈보다 작은 경우에도 블럭내의 모든 데이타를 일단 레지스터(4321)로 페치하고, 레지스터(4321)내의 해당하는 데이타만을 버스(4102)로 출력하는 것에 의해 블럭내의 일부의 데이타를 리드할 수 있다.
제100도는 제96도의 처리흐름에 있어서 제94도의 사전의 블럭소거를 고려하여 양자의 스텝을 조합한 것이다. 따라서, 제95도에 있어서의 레지스터(4313)에는 제93도에 도시한 소거정보부b가 추가된다.
제100도중, 제94도 및 제96도와 동일한 스텝에는 같은 참조번호를 붙이고 있다. 제96도의 STEP223이 STEP801로 치환되고, 제94도의 STEP332 및 제96도의 STEP13이 STEP802로 치환되어 있다. 또, 제94도의 STEP33의 앞에 STEP803이 새로 추가되어 있다. 이것에 의해 CPU(4101)로 부터의 라이트액세스가 기억장치(4104)의 블럭사이즈보다 작은 경우에 사전의 블럭소거를 실행할 수 있다.
STEP3에 있어서, 캐시메모리가 히트하고, 해당하는 레지스터(4313)내의 소거정보부b의 정보가 히트한 메모리라이트액세스에 대응하는 기억장치(4104)내의 해당블럭이 미소거인 것을 나타내므로 STEP803으로 진행한다는 흐름은 다음의 2가지의 상황에 있어서 고려된다. 하나는 히트한 메모리라이트액세스에 의해 갱신되기전에 미스히트트리액세스에 의해 STEP224, STEP225라는 처리흐름을 실행하는 것에 의해서 데이타가 기억장치(4104)내의 블럭에서 리드되고, 레지스터(4321)내에 저장된 경우에 발생한다. 이 경우는 리드된 기억장치(4104)내의 해당블럭은 소거되고 있지 않다. 그 때문에 이 상태에서 완전히 동일한 어드레스에 대해서 라이트액세스가 발생하면 캐시히트메모리라이트액세스로 되어 STEP3에서 STEP803으로 진행한다. 또 하나는 전원OFF에서 전원ON으로 변화후등에 의해 기억장치(4104)내의 데이타만 유효하고, 캐시메모리내의 레지스터(4321), (4313), (4340), (4350)내의 데이타가 무효인 상태, 즉 빈상태일때 기억장치(4104)로의 메모리라이트액세스가 발생한 경우이다. 이때, 레지스터의 치환은 일어나지 않으므로 캐시히트로써 취급할 수 있다. 그리고, 대응하는 기억장치(4104)내의 해당블럭을 소거하는 것만으로 갱신은 생략할 수 있고, 대항다는 레지스터(4321)만 갱신하므로 STEP3에서 STEP803으로 진행한다.
다음의 실시예에 대해서 제101도, 제102도, 제103도를 사용해서 설명한다. 제101도는 플래시메모리(4002)내에 어드레스어레이데이타를 세이브하기 위한 영역을 확보한 것을 도시한 도면이다. 도면중, 상기와 동일한 구성요소는 동일한 번호를 붙이고, 내용은 상기와 동일하므로 설명은 생략하고, 새로운 구성요소에 대해서만 설명한다. (4201)은 본 정보처리장치의 전원스위치로써, 기계적으로 전원을 차단하는 것은 아니고, 본 정보처리장치의 전원공급장치(4204)를 통해서 CPU(4001)에 전원차단요구신호(4202)를 출력하는 기능을 갖는 것이다. (4202)는 CPU(4001)에 작용을 거는 전원차단요구신호로써, CPU(4001)은 이것을 받으면 전원차단의 루틴을 실행하는 것으로 되어 있는 것으로 한다. (4203)은 플래시메모리(4002)내의 어떤 영역에 마련된 어드레스어레이의 데이타의 세이브영역이다. (4205)는 CPU(4001)에서 전원공급장치(4204)로 출력되는 전원차단허가신호이다. 전원차단허가신고(4205)는 정보처리장치의 동작중에 항상 네게이트되어 있으며, 전원스위치(4201)이 「OFF」로 되어 CPU(4001)이 전원차단루틴을 종료했다면 어서트되고, 이때 전원공급장치(4204)는 전원공급을 차단하도록 동작하는 것으로 한다. 제102도는 CPU(4001)이 전원차단요구신호(4202)를 받은후에 실행되는 전원차단루틴이다. 제101도를 참조하면서 제102도의 흐름을 따라서 본 실시예의 동작을 설명한다.
CPU(4001)은 어떤 처리를 실행하고 있는 도중에 전원차단요구신호(4202)를 받은 것으로 한다. 우선, 현재 실행하고 있는 처리가 외부디바이스와 관련된 처리인 것 등에 의해 처리의 중단을 할 수 없는 경우를 제외하고 처리를 중단한다(스템a). 처리의 중단을 할 수 없는 처리의 도중인 경우는 중단해도 관계없는 상태까지 처리를 계속한다. 기본적으로 모든 상태에 있어서도 처리를 중단해야하는 쪽이 바람직하다. 다음에 캐시메모리(4003)에 저장되어 있는 것중 CPU(4001)로 부터의 라이트데이타에 대해서 어드레스어레이(4004)를 참조해서 플래시메모리(4002)의 해당하는 영역으로 라이트백한다(스텝b). 만약 라이트데이타와 리드데이타를 구별하지 않거나 또는 처리의 간략화를 도모하는 것이라면 캐시메모리(4003)내의 모든 데이타를 라이트백해도 좋지만 시간이 걸리므로 라이트데이타만 라이트백하는 것이 바람직하다. 다음에 어드레스어레이(4004)에 저장되어 있는 캐시메모리(4003)과 플래시메모리(4002)의 데이타의 대비를 나타내는 어드레스데이타를 플래시메모리의 영역(4203)으로 세이브한다(스텝c). 이상의 처리가 종료했으면 CPU(4001)은 전원공급장치(4204)로 전원차단허가신고(4205)를 출력한다(스텝d). 이것을 받아서 전원공급장치(4204)는 본 정보처리장치로의 전원공급을 정지한다(스텝e).
한편, 제103도는 전원공급개시시의 흐름이다. 마찬가지로 제101도를 참조하면서 설명하면, 우선 전원스위치가 「ON」으로 되면 무조건 전원공급장치(4204)는 본 정보처리장치에 전원을 공급하도록 동작한다(스텝f). 물론 전원공급장치가 전원공급가능한 상태인 경우에 한정된다. 다음에 CPU(4001)은 정보처리장치에 필요한 초기처리를 실행한다(스텝g). 예를들면 각 디바이스의 동작체크, 내부레지스터로의 설정등이다. 다음에 플래시메모리(4002)의 어드레스어레이데이타 세이브영역(4203)을 어드레스어레이(4004)로 전송한다(스텝h). 다음에 어드레스어레이(4004)를 참조해서 전원차단직전에 캐시메모리(4003)에 저장되어 있던 데이타를 플래시메모리(4002)내의 해당하는 영역에서 인출하여 캐시메모리(4003)의 해당하는 영역에 저장한다(스텝i). 이상의 동작에 의해 캐시메모리는 전원차단전의 상태로 간단히 복귀할 수 있으며, 이후의 CPU(4001)로부터의 액세스에 대해서 높은 히트율에서의 액세스를 제공할 수 있다. 만약 이것을 실행하지 않으며 전원을 재차 공급해서 정보처리장치를 가동시킨 후에는 잠깐동안 몇회인가의 액세스는 계속 미스히트하여 현저한 성능저하를 일으키게 된다.
또, 이상의 실시예에서는 어드레스어레이(4004)를 휘발성의 메모리로 한 경우의 것이지만 어드레스어레이(4004)를 불휘발성 메모리로 하면 어드레스어레이(4004)에 저장되어 있는 데이타의 세이브처리는 필요없게 되고, 전원의 재차 공급후의 처리에 있어서도 어드레스어레이(4004)의 저장데이타의 복귀처리는 필요없게된다. 이 경우, 어드레스어레이(4004)는 랜덤액세스(리드, 라이트모두) 가능한 것이 바람직하므로 백업전원을 갖는 SRAM이나 FRAM을 사용해야 한다.
다음의 실시예는 전원의 돌발적인 차단이 발생한 경우의 피해를 작게 하는 방식에 대한 설명이다. 캐시메모리에 저장된 데이타중 라이트액세스에 의해 라이트된 데이타는 플래시메모리로 라이트백되어 있지 않는 동안은 전원차단으로 소실되는 것에 기인한 데이타이다. 그 때문에 전원차단시에는 이 데이타를 플래시메모리에 저장할 필요가 있다. 그리고, 전원차단시에 데이타의 세이브를 실행하기 위해서는 전원차단요구를 실제의 전원차단 실행전에 인식하여 플래시메모리로의 저장을 실행한후에 전원차단을 실행하게 된다. 그러나, 전원이 돌발적으로 차단된 경우에는 이 플래시메모리로의 저장동작이 불가능하므로 플래시메모리로 라이트백되어 있지 않은 캐시메모리상의 데이타는 소실되게 된다. 앞의 실시예에서 실행한 어드레스어레이의 데이타의 세이브에 대해서도 동일하다고 할수 있다. 그래서, 조금이도 이와 같은 사고를 방지하기 위해 정기적으로 캐시메모리의 데이타를 플래시메모리로 라이트백하는 처리를 실행한다.
이것을 실현하기 위한 구성을 제49도에 도시하였다. 도면중, (4211)은 정기적인 시간을 계측하기 위한 타이머, (4212)는 일정시간마다 CPU(4001)에 입력되는 타이머인터럽트신호이다. 또, 이것 이외의 상기와 동일한 구성요소는 동일한 번호를 붙이고, 상술한 설명과 같다. (4211)의 타이머는 일정시간마다 타이머인터럽트신호(4212)를 발생하여 CPU(4001)에 입력한다. 이것을 받은 CPU(4001)은 캐시메모리(4003)에 있어서 플래시메모리(4402)로 라이트백하고 있지 않은 라이트데이타를 플래시메모리(4002)의 해당하는 영역에 라이트한다.
타이머(4211)이 계측하는 일정시간에 대한 것이지만, 이 시간이 짧으면 플래시메모리(4002)의 리라이트가 몇번이라도 발생하여 플래시메모리(4002)를 열화시키게 된다. 반대로 길면 돌발적인 전원의 차단이 발생했을때 데이타의 소실 확률도, 소실하는 데이타용량도 커지게 된다. 따라서, 플래시메모리를 파괴하지 않을 정도로 가능한한 짧은 시간 간격으로 해야한다. 이 시간간격은 플래시메모리의 리라이트가능회수와 이 정보처리장치의 수명에 의해 결정하는 것이 바람직하다. 그 산출식을 식 1로 나타내었다.
예를들면 1일 평균 8시간 사용해서 정보처리장치의 목표수명을 5년으로 하고, 플래시메모리의 리라이트가능 회수를 100만회로 하면 약53초마다 세이브할 수 있다. 또, 이때, 동시에 어드레스어레이의 저장데이타도 세이브하면 어드레스어레이를 휘발성메모리로 한 경우에도 돌발적인 전원차단에 의한 데이타의 소실확률이 작아지고, 재차 공급한 직후의 히트율의 저하를 회피할 수 있게 된다.
또, 본 실시예를 실시하고 있어도 전원차단시에 최종적인 데이타를 세이브해야하는 것은 당연하다.
정보처리장치의 주기억으로써 플래시메모리를 채용하는 것에 의해 백업전원없이 리줌이나 퀵스타트를 가능하게 하여 대용량의 주기억을 저렴하게 구성하는 수단이 제공된다.
또, 그때 전원차단시의 세이브처리를 실행하는 것에 의해 데이타의 안정성이 도모된다. 그리고, 프로그램이 폭주했을때 대비해서 라이트프로그램수단을 마련하는 것에 의해 데이타의 안정성이 더욱 향상된다.
또, 본 발명에 의하면 카피백 캐시메모리의 내용이 갱신된 것에 따라 결국은 소거될 예정의 기억장치블럭을 사전해 소거해두기 때문에 그 블럭으로의 라이트백이 발생한 경우는 소거처리가 생략되어 즉시 라이트처리를 개시할 수 있다. 따라서, 플래시메모리를 사용한 기억장치로서의 액세스시간을 단축할 수 있다.
또, 캐시메모리의 데이타를 일단 전원을 차단하고, 재개할때 복귀할수 있는 수단을 강구하는 것에 의해 재개후의 히트율을 향상시킬 수 있다.
또, 캐시메모리의 데이타 또는 어드레스어레이의 데이타를 정기적으로 플래시메모리에 라이트하는 것에 의해 돌발적인 전원공급의 정지에도 소실되는 데이타를 없애던가 또는 적게할 수 있다.

Claims (32)

  1. 외부로부터의 데이타를 기억하는 플래시메모리를 갖는 정보처리제어방법에 있어서, 상기 데이타의 상기 플래시메모리의 라이트요구시에 외부로부터의 상기 데이타를 일시적으로 기억하기 위한 데이타 기억수단과 상기 데이타의 라이트요구시에 상기 데이타를 상기 데이타기억수단을 저장한 후 상기 플래시메모리로 전송하는 제어부를 포함하고, 상기 제어부는 상기 데이타의 상기 플래시메모리로의 전송이 종료하기 전에 외부에서 데이타의 리드요구 또는 라이트요구를 받은 경우, 상기 플래시메모리로의 전송을 중단하고 외부로부터의 데이타의 리드요구 또는 라이트요구를 우선해서 처리하는 것을 특징으로 하는 정보처리 제어방법.
  2. 제1항에 있어서, 상기 데이타가 상기 데이타기억수단에 저장되어 있는지 저장되어 있지 않은지를 나타내는 정보를 기억하는 정보기억수단을 포함하고, 상기 제어부는 상기 정보에 의해 외부에서 리드가 요구된 상기 데이타가 상기 데이타기억수단에 저장되어 있는지 저장되어 있지 않은지의 판단을 실행하고, 상기 데이타기억수단에 저장되어 있는 것이 판명된 경우에는 상기 데이타기억수단에서 리드를 실행하는 것을 특징으로 하는 정보처리 제어방법.
  3. 제1항에 있어서, 외부에서 상기 데이타로의 액세스시에 외부에서 지정되는 논리어드레스와 이것에 대응하는 상기 데이타기억수단의 물리어드레스의 대응정보를 기억하는 정보기억수단을 포함하고, 상기 제어부는 상기 정보에 의해 외부에서 리드가 요구된 상기 데이타가 상기 데이타기억수단에 저장되어 있는 것이 판명된 경우에는 상기 데이타 기억수단에서 리드를 실행하는 것을 특징으로 하는 정보처리 제어방법.
  4. 제1항에 있어서, 상기 제어부는 상기 데이타기억수단에서 상기 플래시메모리로 데이타를 전송하는 도중에 외부로부터의 데이타의 리드요구 또는 라이트요구가 있던 경우에는 상기 데이타의 전송을 중단하고, 중단이 종료한 후에 전송을 재개하기 위해 필요한 정보를 기억하는 중단 정보기억수단을 포함하고, 상기 제어부는 상기 중단정보 기억수단에 상기 정보를 저장한 후 상기 리드요구 또는 라이트요구를 처리하고, 처리가 종료한 후 중단한 데이타의 전송을 상기 중단정보 기억수단의 기억내용에 따라 재개하는 것을 특징으로 하는 정보처리 제어방법.
  5. 제1항에 있어서, 상기 제어부는 외부에서 상기 플래시메모리의 특정 영역으로의 데이타의 라이트요구가 있던 경우, 상기 데이타기억수단으로의 라이트데이타를 저장하는 처리 및 상기 플래시메모리상에 있는 상기 특정 영역에 과거에 저장되어 불필요하게 된 데이타를 소거하는 처리를 병행해서 실행하는 것을 특징으로 하는 정보처리 제어방법.
  6. 제2항에 있어서, 상기 제어부는 상기 데이타기억수단에서 상기 플래시메모리로의 전송이 완료한 후, 상기 정보기억수단에 저장되어 있는 정보를 상기 플래시메모리로 전송하는 것을 특징으로 하는 정보처리 제어방법.
  7. 제2항에 있어서, 상기 제어부는 상기 정보기억수단의 내용을 전원차단 직전에 상기 플래시메모리로 전송하는 것을 특징으로 하는 정보처리 제어방법.
  8. 제6항에 있어서, 상기 정보기억수단의 내용을 상기 플래시메모리로 전송할 때 상기 플래시메모리로의 전송장소를 가변으로 하고, 전송장소를 나타내는 정보를 상기 플래시메모리상의 미리 정해진 장소로 전송하는 것을 특징으로 하는 정보처리 제어방법.
  9. 외부로부터의 데이타를 기억하는 플래시메모리를 갖는 정보처리 제어방법에 있어서, 상기 데이타의 상기플래시메모리로의 라이트요구시에 외부로부터의 상기 데이타를 일시적으로 기억하는 위한 데이타기억수단과 상기 데이타의 라이트요구시에 상기 데이타를 상기 데이타기억수단에 저장한 후 상기 플래시메모리로 전송하는 제어부를 포함하고, 상기 제어부는 상기 데이타의 상기 플래시메모리로의 전송이 종료하기 전에 외부에서 동일한 어드레스로의 데이타의 새로운 라이트요구를 받은 경우, 상기 플래시메모리로의 전송을 중단하고 외부로부터의 새로운 데이타를 상기 데이타기억수단에 저장하고 이전의 데이타는 무효로 하는 것을 특징으로 하는 정보처리 제어방법.
  10. 중앙처리장치, 데이타를 입력하기 위한 입력수단, 데이타를 출력하기 위한 출력수단, 데이타를 기억하는 휘발성 기억수단, 기억된 데이타를 전기적으로 리라이트가능한 기억수단으로서 상기 중앙처리장치가 액세스가능한 어드레스공간을 할당한 불휘발성 기억수단, 상기 휘발성 기억수단과 상기 불휘발성 기억수단의 상호간의 데이타의 수수를 적어도 실행하는 데이타 제어수단, 상기 휘발성 기억수단에 저장된 데이타의 상기 불휘발성 기억수단에 있어서의 어드레스를 등록하는 어드레스 등록수단, 이 어드레스 등록수단에 등록되어있는 어드레스와 상기 중앙처리장치가 데이타액세스를 위해 출력한 어드레스의 비교를 실행하는 어드레스 비교수단을 구비하고, 상기 데이타 제어수단은 상기 중앙처리장치가 데이타를 액세스하기 위해서 출력한 어드레스를 상기 어드레스 비교수단에 입력하고, 상기 어드레스가 상기 어드레스 비교수단의 출력결과에 따라서 상기 어드레스 등록수단에 등록되어 있는 등록어드레스라고 판단했을 때에는 상기 휘발성 기억수단내에 있어서의 등록어드레스를 액세스하고, 반대로, 상기 어드레스 등록수단에 저장되어 있지 않은 어드레스라고 판단했을 때에는 적어도 상기 어드레스를 포함하는 소정범위의 어드레스를 상기 어드레스 등록수단에 새로 등록하고, 이 새로 등록된 어드레스에 대응하는 데이타 저장영역을 상기 휘발성 기억수단에 새로 설정하고 상기 새로 등록된 적어도 1개의 어드레스를 액세스하는 것을 특징으로 하는 정보처리장치.
  11. 제10항에 있어서, 액세스이력 기록수단을 더 구비하고, 상기 액세스이력 기록수단은 액세스이력정보를 기록하는 것을 특징으로 하는 정보처리장치.
  12. 제10항에 있어서, 또 상기 데이타 제어수단은 상기 휘발성 기억수단이 데이타로 가득차서 신규로 데이타를 저장할 영역이 존재하지 않는 경우에는 상기 액세스이력 기록수단의 액세스이력정보를 참조해서 최후에 실행된 액세스가 가장 오래된 어드레스를 검출하고, 상기 어드레스를 상기 어드레스등록수단에서 말소하는 것을 특징으로 하는 정보처리장치.
  13. 제12항에 있어서, 또 상기 데이타 제어수단은 상기 어드레스등록수단에서 말소하는 어드레스에 대응하는 상기 휘발성 기억수단내에 데이타를 상기 불휘발성 기억수단으로 전송하는 것을 특징으로 하는 정보처리장치.
  14. 제10항에 있어서, 상기 휘발성 기억수단은 FRAM을 포함해서 구성되는 것을 특징으로 하는 정보처리장치.
  15. 제10항에 있어서, 장치에 부여되는 전원을 차단할 때에 차단조직에 의해 기동하는 기동수단, 상기 차단수단에 의한 전원의 차단처리에 대응해서 상기 중앙처리장치가 구비하는 내부레지스터의 내용과 상기 입출력수단이 구비하는 내부레지스터의 내용을 포함하는 정보를 상기 불휘발성 기억수단의 일부의 영역에 저장하는 세이브 처리수단 및 상기 세이브처리수단의 처리완료후에 장치로의 전원의 공급을 차단하는 공급전원 차단수단을 더 구비하는 것을 특징으로 하는 정보처리장치.
  16. 제10항에 있어서, 또 상기 데이타제어수단은 상기 휘발성 기억수단에 저장되는 데이타량을 감시하고, 미리 정한 용량이상의 용량을 갖는 데이타 미저장영역을 항상 확보하는 것을 특징으로 하는 정보처리장치.
  17. 제10항에 있어서, 상기 불휘발성 기억수단을 여러개의 영역으로 분할해서 각 분할영역마다 데이타의 라이트를 금지한다는 내용을 나타내는 라이트금지 플래그를 설정할 수 있는 라이트금지정보 저장수단을 마련하고, 상기 데이타제어수단은 상기 불휘발성 기억수단내의 임의의 영역에 데이타를 저장할 때 상기 영역에 대응해서 구비된 라이트금지정보 저장수단에 상기 라이트금지정보 저장수단에 상기 라이트금지 플래그가 설정되어 있을 때에는 상기 출력수단에 상기 영역으로의 라이트요구가 있다는 내용의 출력을 하는 것을 특징으로 하는 정보처리장치.
  18. 제10항에 있어서, 상기 불휘발성 기억수단은 플래시메모리를 포함해서 구성되는 것을 특징으로 하는 정보처리장치.
  19. CPU에서 데이타를 라이트하기 전에 일단 상기 라이트의 대상으로 되는 블럭내의 전체데이타를 소거할 필요가 있는 기억장치인 플래시메모리를 주기억장치로서 사용하는 정보처리장치에 있어서, 상기 주기억장치의 일부의 블럭데이타의 카피를 각각 유지하는 여러개의 데이타영역을 갖는 카피백방식의 캐시메모리, 상기 CPU에서 상기 주기억장치로의 라이트처리시에 상기 캐시메모리가 히트했을 때, 상기 캐시메모리의 상기 데이타영역의 데이타를 갱신함과 동시에 상기 주기억장치의 상기 라이트대상으로 된 블럭의 소거처리를 실행하는 제어수단을 구비한 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  20. 제19항에 있어서, 상기 제어수단은 상기 CPU에서 상기 주기억장치로의 라이트처리시의 상기 캐시메모리가 히트하더라고 상기 주기억장치내의 해당하는 블럭이 이미 소거완료된 경우는 소거처리를 생략하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  21. 제20항에 있어서, 상기 캐시메모리는 자신이 데이타의 카피를 유지하고 있는 상기 주기억장치내의 각 블럭에 대해서 상기 블럭이 이미 소거되었는지 소거되지 않았는지를 나타내고 소거정보를 유지하는 수단을 갖고, 상기 제어수단은 상기 소거정보를 참조해서 상기 참조결과에 따라서 상기 소거처리의 생략을 실행하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  22. 제19항에 있어서, 상기 제어수단은 상기 CPU에서 상기 주기억장치로의 라이트처리시에 상기 캐시메모리가 미스히트했을 때, 상기 라이트대상으로 되는 주기억장치의 블럭의 데이타의 카피를 유지하기 위해 선택된 캐시메모리의 데이타영역이 미갱신이면, 그 데이타영역을 라이트데이타로 갱신함과 동시에 상기 라이트의 대상으로 된 상기 주기억장치의 블럭의 데이타의 소거를 실행하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  23. 제22항에 있어서, 상기 캐시메모리는 각 데이타영역에 대해서 상기 CPU로부터의 라이트처리에 의해서 그 데이타가 갱신되었는지 갱신되지 않았는지를 나타내는 갱신정보를 유지하는 수단을 포함하고, 상기 제어수단은 상기 갱신정보를 참조해서 이 참조결과에 따라서 상기 블럭의 데이타의 소거를 실행하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  24. 제19항에 있어서, 상기 플래시메모리의 각 블럭의 사이즈 및 상기 캐시메모리의 각 데이타영역의 사이즈가 각각 m바이트(m은 임의의 정의정수)이고, 상기 CPU가 상기 주기억장치에서 m바이트보다 작은 사이즈의 데이타를 리드하는 경우에 상기 주기억장치내의 해당하는 데이타를 포함하는 블럭의 전체데이타를 일단 리드하고 그 전체데이타중에서 상기 CPU가 요구하는 해당 데이타만을 버스로 출력하는 수단을 포함하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  25. 제19항에 있어서, 상기 플래시메모리의 각 블럭의 사이즈 및 상기 캐시메모리와 각 데이타영역의 사이즈가 각각 m바이트(m은 임의의 정의 정수)이고, 상기 CPU가 상기 주기억장치에서 m바이트보다 작은 사이즈의 데이타를 라이트하는 경우, 상기 제어수단은 상기 주기억장치내의 해당하는 블럭의 전체데이타를 일단 리드하고, 그 전체데이타중 상기 CPU의 라이트처리의 대상으로 되는 부분영역만을 갱신한 후 그 1블럭분의 전체데이타를 다시 상기 주기억장치내의 해당 블럭에 라이트하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  26. 제25항에 있어서, 상기 캐시메모리는 상기 데이타영역마다 상기 데이타영역내의 어느 부분영역이 갱신되었는지를 나타내는 갱신영역정보를 유지하는 수단을 포함하고, 상기 제어수단은 상기 갱신영역정보를 참조하여 상기 참조결과에 따라서 상기 라이트처리의 대상으로 되는 부분영역만의 갱신을 실행하는 것을 특징으로 하는 플래시메모리를 사용한 정보처리장치.
  27. 제10항에 있어서, 상기 어드레스등록수단의 데이타를 상기 정보처리장치의 전원을 차단하더라도 휘발시키지 않고 적어도 상기 정보처리장치에 전원을 다시 공급할 때까지 유지해 두는 것을 특징으로 하는 정보처리장치.
  28. 제27항에 있어서, 상기 정보처리장치의 전원의 공급을 일단 정지한 후 다시 전원을 공급해서 동작을 재개할 때, 유지되어 있는 상기 어드레스 등록수단의 데이타를 참조해서 상기 등록되어 있는 어드레스데이타로 특정할 수 있는 청구항27 기재의 불휘발성 기억수단의 영역에 저장되어 있는 데이타를 상기 어드레스등록수단이 어드레스데이타를 저장하고 있던 장소에서 특정할 수 있는 청구항27 기재의 불휘발성 기억수단에 있어서의 영역으로 전송해서 저장하는 것에 의해, 상기 휘발성 기억수단의 기억내용을 상기 전원공급을 일단 정지하였을 때의 상태로 복귀하는 것을 특징으로 하는 정보처리장치.
  29. 제10항에 있어서, 상기 정보처리장치의 전원을 차단할 때 청구항27 기재의 어드레스 등록수단의 데이타를 청구항27 기재의 불휘발성 기억수단의 특정의 장소로 전송해서 저장하는 것에 의해, 상기 어드레스 등록수단내의 데이타를 세이브, 유지하고, 다시 전원공급을 개시하였을 때 상기 세이브한 데이타를 상기 어드레스 등록수단으로 복귀시키는 것에 의해 어드레스 등록수단의 데이타를 휘발시키지 않도록 하는 것을 특징으로 하는 정보처리장치.
  30. 제10항에 있어서, 상기 중앙처리장치로부터의 라이트액세스에 의해 상기 휘발성 기억수단에 저장되어 있는 데이타를 일정시간마다 상기 불휘발성 기억수단으로 라이트백하는 것을 특징으로 하는 정보처리장치.
  31. 제30항에 있어서, 상기 휘발성 기억수단에 저장되어 있는 데이타를 일정시간마다 불휘발성 기억수단으로 라이트백할 때, 상기 어드레스 등록수단의 데이타도 상기 불휘발성 기억수단으로 세이브하는 것을 특징으로 하는 정보처리장치.
  32. 제10항에 있어서, 청구항10 기재의 불휘발성 기억수단으로서 여러개의 바이트의 직렬버퍼를 내장하고 이것에 의해 외부와의 데이타입출력을 실행하는 전기적으로 리라이트가능한 불휘발성 기억수단을 사용하고, 상기 불휘발성 기억수단에서 청구항10 기재의 불휘발성 기억수단으로의 데이타전송에 있어서는 상기 직렬버퍼의 저장바이트수보다 적은 데이타량의 전송을 실행하고, 상기 휘발성 기억수단에서 상기 불휘발성 기억수단으로 데이타전송에 있어서는 상기 직렬버퍼의 저장바이트수와 동일한 데이타량으로의 전송을 실행하는 것을 특징으로 하는 정보처리장치.
KR1019940007261A 1993-04-08 1994-04-07 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치 Expired - Lifetime KR970008188B1 (ko)

Applications Claiming Priority (10)

Application Number Priority Date Filing Date Title
JP8164293 1993-04-08
JP93-81642 1993-04-08
JP93-122401 1993-05-25
JP12240193A JPH06332806A (ja) 1993-05-25 1993-05-25 フラッシュメモリを記憶媒体とする記憶システムおよびその制御方法
JP5174372A JPH0728690A (ja) 1993-07-14 1993-07-14 フラッシュメモリシステム
JP93-174372 1993-07-14
JP93-175619 1993-07-15
JP17561993A JPH0736759A (ja) 1993-07-15 1993-07-15 半導体ファイルシステム
JP24652093 1993-10-01
JP93-246520 1993-10-01

Publications (1)

Publication Number Publication Date
KR970008188B1 true KR970008188B1 (ko) 1997-05-21

Family

ID=27524933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940007261A Expired - Lifetime KR970008188B1 (ko) 1993-04-08 1994-04-07 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치

Country Status (5)

Country Link
US (5) US5530673A (ko)
EP (1) EP0619541B1 (ko)
KR (1) KR970008188B1 (ko)
DE (1) DE69432878T2 (ko)
TW (1) TW403871B (ko)

Families Citing this family (353)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0935255A2 (en) * 1989-04-13 1999-08-11 SanDisk Corporation Flash EEPROM system
US7190617B1 (en) * 1989-04-13 2007-03-13 Sandisk Corporation Flash EEprom system
US7447069B1 (en) 1989-04-13 2008-11-04 Sandisk Corporation Flash EEprom system
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
TW261687B (ko) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
KR970008188B1 (ko) 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
JPH07114500A (ja) * 1993-10-19 1995-05-02 Matsushita Electric Ind Co Ltd 不揮発性メモリ記憶装置
JP3154892B2 (ja) * 1994-05-10 2001-04-09 株式会社東芝 Icメモリカードおよびそのicメモリカードの検査方法
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
DE59510585D1 (de) * 1994-06-16 2003-04-17 Bosch Gmbh Robert Verfahren zur optimierung von daten und/oder programmteilen für programmierte steuergeräte und steuergerät
EP0729609A1 (en) * 1994-09-19 1996-09-04 Koninklijke Philips Electronics N.V. A microcontroller system for performing operations of multiple microcontrollers
US5682496A (en) 1995-02-10 1997-10-28 Micron Quantum Devices, Inc. Filtered serial event controlled command port for memory
EP0808502B1 (en) * 1995-02-10 2002-05-22 Micron Technology, Inc. Fast-sensing amplifier for flash memory
US6108237A (en) 1997-07-17 2000-08-22 Micron Technology, Inc. Fast-sensing amplifier for flash memory
JPH08314794A (ja) * 1995-02-28 1996-11-29 Matsushita Electric Ind Co Ltd 安定記憶装置へのアクセス待ち時間を短縮するための方法およびシステム
US6223311B1 (en) * 1995-03-15 2001-04-24 Hitachi, Ltd. Semiconductor memory device having deterioration determining function
JP3364356B2 (ja) * 1995-03-30 2003-01-08 富士通株式会社 メモリ書替え装置
JP3782840B2 (ja) 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
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
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
DE19539746A1 (de) * 1995-10-26 1997-04-30 Sel Alcatel Ag Rechner
JPH09282103A (ja) * 1995-12-22 1997-10-31 Ricoh Co Ltd 情報処理装置
US5829013A (en) 1995-12-26 1998-10-27 Intel Corporation Memory manager to allow non-volatile memory to be used to supplement main memory
US6091725A (en) 1995-12-29 2000-07-18 Cisco Systems, Inc. Method for traffic management, traffic prioritization, access control, and packet forwarding in a datagram computer network
JP3140957B2 (ja) * 1996-02-16 2001-03-05 インターナショナル・ビジネス・マシーンズ・コーポレ−ション デイスク装置およびデイスク装置におけるエラー処理方法
JPH09237162A (ja) * 1996-02-23 1997-09-09 Hewlett Packard Co <Hp> 走査型データ記憶システム、及びその針摩耗管理方法、媒体摩耗管理方法、並びに残存寿命表示装置
JP2792501B2 (ja) * 1996-02-28 1998-09-03 日本電気株式会社 データ転送方式およびデータ転送方法
JP3614173B2 (ja) 1996-02-29 2005-01-26 株式会社ルネサステクノロジ 部分不良メモリを搭載した半導体記憶装置
JPH09288888A (ja) * 1996-04-22 1997-11-04 Mitsubishi Electric Corp 半導体記憶装置
US6243667B1 (en) * 1996-05-28 2001-06-05 Cisco Systems, Inc. Network flow switching and flow data export
JPH1021012A (ja) * 1996-06-28 1998-01-23 Toshiba Corp 磁気ディスク装置及び同装置のコマンド処理方法
KR980013092A (ko) 1996-07-29 1998-04-30 김광호 교환시스템의 화일관리장치 및 방법
KR100260028B1 (ko) * 1996-08-13 2000-06-15 윤종용 화일시스템의 정보 복구방법
JPH1069420A (ja) * 1996-08-29 1998-03-10 Sony Corp 情報記録装置、情報記録再生装置、情報記録方法および情報再生方法
GB2317722B (en) * 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device
EP0834812A1 (en) 1996-09-30 1998-04-08 Cummins Engine Company, Inc. A method for accessing flash memory and an automotive electronic control system
WO1998022950A1 (en) * 1996-11-22 1998-05-28 Macronix International Co., Ltd. Write protected, non-volatile memory device with user programmable sector lock capability
US6031757A (en) * 1996-11-22 2000-02-29 Macronix International Co., Ltd. Write protected, non-volatile memory device with user programmable sector lock capability
US5937434A (en) * 1997-02-14 1999-08-10 Intel Corporation Method of managing a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6182188B1 (en) * 1997-04-06 2001-01-30 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6311290B1 (en) 1997-02-14 2001-10-30 Intel Corporation Methods of reliably allocating, de-allocating, re-allocating, and reclaiming objects in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
US6088759A (en) * 1997-04-06 2000-07-11 Intel Corporation Method of performing reliable updates in a symmetrically blocked nonvolatile memory having a bifurcated storage architecture
JPH10341396A (ja) * 1997-04-09 1998-12-22 Seiko Epson Corp デジタルカメラの機能付加方法およびデジタルカメラ
KR100251636B1 (ko) * 1997-04-10 2000-05-01 윤종용 소형컴퓨터시스템인터페이스방식접속을위한메모리장치
US6175891B1 (en) 1997-04-23 2001-01-16 Micron Technology, Inc. System and method for assigning addresses to memory devices
US6694460B2 (en) 1997-09-11 2004-02-17 Renesas Technology Corporation Semiconductor memory device having deterioration determining function
JP2914360B2 (ja) 1997-09-30 1999-06-28 ソニー株式会社 外部記憶装置及びデータ処理方法
US6262937B1 (en) 1998-03-13 2001-07-17 Cypress Semiconductor Corp. Synchronous random access memory having a read/write address bus and process for writing to and reading from the same
US6262936B1 (en) 1998-03-13 2001-07-17 Cypress Semiconductor Corp. Random access memory having independent read port and write port and process for writing to and reading from the same
US6157979A (en) * 1998-03-14 2000-12-05 Advanced Technology Materials, Inc. Programmable controlling device with non-volatile ferroelectric state-machines for restarting processor when power is restored with execution states retained in said non-volatile state-machines on power down
US6069839A (en) 1998-03-20 2000-05-30 Cypress Semiconductor Corp. Circuit and method for implementing single-cycle read/write operation(s), and random access memory including the circuit and/or practicing the method
JP3730423B2 (ja) * 1998-11-24 2006-01-05 富士通株式会社 半導体記憶装置
JP3242890B2 (ja) * 1998-12-16 2001-12-25 株式会社ハギワラシスコム 記憶装置
KR100284430B1 (ko) * 1998-12-18 2001-04-02 구자홍 프로그램 갱신 방법 및 장치
JP4135049B2 (ja) * 1999-03-25 2008-08-20 ソニー株式会社 不揮発性メモリ
JP3524428B2 (ja) * 1999-04-20 2004-05-10 東京エレクトロンデバイス株式会社 記憶装置、記憶システム、メモリ管理方法及び記録媒体
KR100544175B1 (ko) * 1999-05-08 2006-01-23 삼성전자주식회사 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법
US6754680B1 (en) * 1999-05-20 2004-06-22 Matsushita Electric Industrial Co., Ltd. Data control equipment, method to control data and recording medium to record data control procedure
JP4074029B2 (ja) * 1999-06-28 2008-04-09 株式会社東芝 フラッシュメモリ
US6839782B1 (en) * 1999-07-30 2005-01-04 Emc Corporation Computer storage system incorporating on-board EEPROMS containing product data
US6636963B1 (en) * 1999-12-30 2003-10-21 Cardiac Pacemakers, Inc. Quick starting for microprocessor-based system by retrieving a target state memory image and a target state data structure from an image storage medium
US20080195798A1 (en) * 2000-01-06 2008-08-14 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems and Methods Thereof
US7102671B1 (en) 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
HUP0203134A2 (en) * 2000-02-21 2003-01-28 Trek 2000 Int Ltd A portable data storage device
EP1168259A3 (en) * 2000-06-28 2003-12-17 Hitachi, Ltd. Data management method and system for IC card
US7167944B1 (en) 2000-07-21 2007-01-23 Lexar Media, Inc. Block management for mass storage
US6993887B2 (en) * 2000-08-07 2006-02-07 Dsd Communications, Inc. System and method for including packets with goods during automated packaging
US7113432B2 (en) * 2000-09-14 2006-09-26 Sandisk Corporation Compressed event counting technique and application to a flash memory system
US6795896B1 (en) * 2000-09-29 2004-09-21 Intel Corporation Methods and apparatuses for reducing leakage power consumption in a processor
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8160864B1 (en) 2000-10-26 2012-04-17 Cypress Semiconductor Corporation In-circuit emulator and pod synchronized boot
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US6970891B1 (en) * 2000-11-27 2005-11-29 Microsoft Corporation Smart card with volatile memory file subsystem
US6868496B2 (en) * 2001-01-16 2005-03-15 Gateway, Inc. Host protected area (HPA) duplication process
CZ300977B6 (cs) * 2001-02-26 2009-09-30 Iss Europe, Spol. S R.O. Radic se sbernicemi PCI a SCSI a výpocetní systém s elektronickým polovodicovým diskem
US20020194186A1 (en) * 2001-03-27 2002-12-19 Foundation Software, Inc. Report design and data manipulation system and method of operation
US20020156983A1 (en) * 2001-04-19 2002-10-24 International Business Machines Corporation Method and apparatus for improving reliability of write back cache information
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
WO2003001665A1 (fr) * 2001-06-21 2003-01-03 Murata Manufacturing Co., Ltd. Filtre antiparasites
JP3692313B2 (ja) * 2001-06-28 2005-09-07 松下電器産業株式会社 不揮発性メモリの制御方法
US7809806B1 (en) * 2001-08-02 2010-10-05 Cisco Technology, Inc. Neighbor discovery using address registration protocol over ELMI
JP3979486B2 (ja) * 2001-09-12 2007-09-19 株式会社ルネサステクノロジ 不揮発性記憶装置およびデータ格納方法
GB0123415D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Method of writing data to non-volatile memory
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
GB0123419D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Data handling system
GB2411499B (en) * 2001-09-28 2006-02-08 Lexar Media Inc Method of writing data to non-volatile memory
GB0123410D0 (en) 2001-09-28 2001-11-21 Memquest Ltd Memory system for data storage and retrieval
GB0123417D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Improved data processing
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
JP2003196142A (ja) * 2001-12-25 2003-07-11 Sony Corp ライトワンス型メモリ装置及びファイル管理方法
JP4408601B2 (ja) * 2001-12-27 2010-02-03 富士通株式会社 情報再生装置およびセキュアモジュール
US6957295B1 (en) 2002-01-18 2005-10-18 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
US6950918B1 (en) 2002-01-18 2005-09-27 Lexar Media, Inc. File management of one-time-programmable nonvolatile memory devices
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
US6901499B2 (en) * 2002-02-27 2005-05-31 Microsoft Corp. System and method for tracking data stored in a flash memory device
US7085879B2 (en) * 2002-02-27 2006-08-01 Microsoft Corporation Dynamic data structures for tracking data stored in a flash memory device
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
DE60322143D1 (de) * 2002-04-30 2008-08-28 Lexar Media Inc Dateienverwaltung für einmalig programmierbare nichtflüchtige Speicheranordnungen
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
JP4086584B2 (ja) * 2002-08-08 2008-05-14 富士通株式会社 試験工程を簡略化できるメモリカード及びメモリカードの試験方法
US20040039871A1 (en) * 2002-08-26 2004-02-26 Colin Stobbs Replacement memory device
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
US20040049628A1 (en) * 2002-09-10 2004-03-11 Fong-Long Lin Multi-tasking non-volatile memory subsystem
JP4129381B2 (ja) * 2002-09-25 2008-08-06 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
EP1548602B1 (en) * 2002-10-02 2008-03-12 Matsushita Electric Industrial Co., Ltd. Non-volatile storage device control method
TWI236004B (en) * 2002-10-15 2005-07-11 Mediatek Inc Method and system for background formatting in optical recording medium
US20040088474A1 (en) * 2002-10-30 2004-05-06 Lin Jin Shin NAND type flash memory disk device and method for detecting the logical address
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US6901498B2 (en) 2002-12-09 2005-05-31 Sandisk Corporation Zone boundary adjustment for defects in non-volatile memories
US20040139307A1 (en) * 2003-01-09 2004-07-15 Barnett Philip C. Method and apparatus for initializing a semiconductor circuit from an external interface
US7155357B2 (en) * 2003-01-09 2006-12-26 Silicon Storage Technology, Inc. Method and apparatus for detecting an unused state in a semiconductor circuit
US6928511B2 (en) * 2003-03-03 2005-08-09 High Tech Computer, Corp. Method and system for managing virtual memory
US8041878B2 (en) * 2003-03-19 2011-10-18 Samsung Electronics Co., Ltd. Flash file system
JP2004318940A (ja) * 2003-04-14 2004-11-11 Renesas Technology Corp 記憶装置
US6973519B1 (en) 2003-06-03 2005-12-06 Lexar Media, Inc. Card identification compatibility
KR100560851B1 (ko) * 2003-09-03 2006-03-17 주식회사 이온라이트 음이온 발생과 대기정화 기능을 갖는 삼파장 램프
JP4412947B2 (ja) * 2003-09-08 2010-02-10 株式会社ルネサステクノロジ メモリカード
JPWO2005029311A1 (ja) * 2003-09-18 2006-11-30 松下電器産業株式会社 半導体メモリカード、半導体メモリ制御装置及び半導体メモリ制御方法
US7412581B2 (en) * 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7275686B2 (en) 2003-12-17 2007-10-02 Lexar Media, Inc. Electronic equipment point-of-sale activation to avoid theft
US7383375B2 (en) * 2003-12-30 2008-06-03 Sandisk Corporation Data run programming
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US8250295B2 (en) 2004-01-05 2012-08-21 Smart Modular Technologies, Inc. Multi-rank memory module that emulates a memory module having a different number of ranks
KR100966895B1 (ko) * 2004-01-06 2010-06-30 삼성전자주식회사 불휘발성 메모리의 테스트 장치 및 방법
CN100535933C (zh) 2004-02-03 2009-09-02 松下电器产业株式会社 存储卡和数据处理装置及存储卡的控制方法和设定方法
KR101085406B1 (ko) * 2004-02-16 2011-11-21 삼성전자주식회사 불 휘발성 메모리를 제어하기 위한 컨트롤러
US7295049B1 (en) * 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
JP4212503B2 (ja) * 2004-03-30 2009-01-21 シャープ株式会社 制御システム、制御装置、記憶装置、及びコンピュータプログラム
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
US20050246494A1 (en) * 2004-05-03 2005-11-03 Leon Jose L Jr Data storage arrangement and method for storing and transferring data
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
JP4214978B2 (ja) * 2004-05-18 2009-01-28 ソニー株式会社 半導体記憶装置および信号処理システム
KR20070039031A (ko) * 2004-07-07 2007-04-11 코닌클리케 필립스 일렉트로닉스 엔.브이. 데이터 파일을 분배하는 방법 및 데이터 파일을 저장하는메모리 시스템
WO2006009069A1 (ja) * 2004-07-21 2006-01-26 Matsushita Electric Industrial Co., Ltd. 半導体記憶装置、書き換え処理方法およびプログラム
US7562202B2 (en) * 2004-07-30 2009-07-14 United Parcel Service Of America, Inc. Systems, methods, computer readable medium and apparatus for memory management using NVRAM
DE102004037785A1 (de) * 2004-08-03 2006-03-16 Endress + Hauser Gmbh + Co. Kg Feldgerät für die Automatisierungstechnik
US20110029723A1 (en) * 2004-08-06 2011-02-03 Super Talent Electronics, Inc. Non-Volatile Memory Based Computer Systems
US7398348B2 (en) * 2004-08-24 2008-07-08 Sandisk 3D Llc Method and apparatus for using a one-time or few-time programmable memory with a host device designed for erasable/rewritable memory
JP5007485B2 (ja) * 2004-08-26 2012-08-22 ソニー株式会社 半導体記憶装置およびそのアクセス方法、並びにメモリ制御システム
US7594063B1 (en) 2004-08-27 2009-09-22 Lexar Media, Inc. Storage capacity status
US7464306B1 (en) 2004-08-27 2008-12-09 Lexar Media, Inc. Status of overall health of nonvolatile memory
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
JP4956922B2 (ja) * 2004-10-27 2012-06-20 ソニー株式会社 記憶装置
JP4794269B2 (ja) * 2004-11-08 2011-10-19 パナソニック株式会社 セキュアデバイスおよび中継端末
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7529921B2 (en) * 2004-12-17 2009-05-05 Cardiac Pacemakers, Inc. Fast initialization of medical device system having multiple operating systems
US7882299B2 (en) * 2004-12-21 2011-02-01 Sandisk Corporation System and method for use of on-chip non-volatile memory write cache
US7409473B2 (en) * 2004-12-21 2008-08-05 Sandisk Corporation Off-chip data relocation
US7849381B2 (en) * 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
US7212440B2 (en) * 2004-12-30 2007-05-01 Sandisk Corporation On-chip data grouping and alignment
KR100725390B1 (ko) * 2005-01-06 2007-06-07 삼성전자주식회사 수정 빈도를 고려하여 데이터를 비휘발성 캐쉬부에저장하는 장치 및 방법
US7332976B1 (en) * 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
US9104315B2 (en) 2005-02-04 2015-08-11 Sandisk Technologies Inc. Systems and methods for a mass data storage system having a file-based interface to a host and a non-file-based interface to secondary storage
US20060184718A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct file data programming and deletion in flash memories
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7877539B2 (en) * 2005-02-16 2011-01-25 Sandisk Corporation Direct data file storage in flash memories
WO2006093201A1 (ja) * 2005-03-03 2006-09-08 Matsushita Electric Industrial Co., Ltd. メモリモジュール、メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム、及びメモリの読み書き方法
JP2006294143A (ja) * 2005-04-12 2006-10-26 Toshiba Corp 不揮発性半導体記憶装置
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
JP2006323739A (ja) * 2005-05-20 2006-11-30 Renesas Technology Corp メモリモジュール、メモリシステム、及び情報機器
US7788668B2 (en) * 2005-06-09 2010-08-31 Lockheed Martin Corporation System and method for implementing distributed priority inheritance
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
JP2007035179A (ja) * 2005-07-28 2007-02-08 Matsushita Electric Ind Co Ltd 不揮発性半導体記憶装置
US7627733B2 (en) * 2005-08-03 2009-12-01 Sandisk Corporation Method and system for dual mode access for storage devices
US8230175B1 (en) * 2005-08-09 2012-07-24 Hewlett-Packard Development Company, L.P. Data throughput optimization of a storage device having sequential data access
US7362611B2 (en) * 2005-08-30 2008-04-22 Micron Technology, Inc. Non-volatile memory copy back
JP5008845B2 (ja) * 2005-09-01 2012-08-22 株式会社日立製作所 ストレージシステムとストレージ装置及びその制御方法
US7426605B2 (en) * 2005-09-30 2008-09-16 Rudelic John C Method and apparatus for optimizing flash device erase distribution
US20070083697A1 (en) * 2005-10-07 2007-04-12 Microsoft Corporation Flash memory management
US7631162B2 (en) 2005-10-27 2009-12-08 Sandisck Corporation Non-volatile memory with adaptive handling of data writes
US7509471B2 (en) * 2005-10-27 2009-03-24 Sandisk Corporation Methods for adaptively handling data writes in non-volatile memories
TWI282140B (en) * 2005-11-10 2007-06-01 Realtek Semiconductor Corp Display controller and method for updating parameters of the same
CN101176074B (zh) * 2005-12-09 2010-12-15 松下电器产业株式会社 非易失性存储器件,写入数据的方法,和读出数据的方法
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7793068B2 (en) * 2005-12-21 2010-09-07 Sandisk Corporation Dual mode access for non-volatile storage devices
US8085067B1 (en) 2005-12-21 2011-12-27 Cypress Semiconductor Corporation Differential-to-single ended signal converter circuit and method
US7769978B2 (en) * 2005-12-21 2010-08-03 Sandisk Corporation Method and system for accessing non-volatile storage devices
US7747837B2 (en) * 2005-12-21 2010-06-29 Sandisk Corporation Method and system for accessing non-volatile storage devices
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
JP5065618B2 (ja) * 2006-05-16 2012-11-07 株式会社日立製作所 メモリモジュール
US8307148B2 (en) 2006-06-23 2012-11-06 Microsoft Corporation Flash management techniques
US20090282185A1 (en) * 2006-06-30 2009-11-12 Nxp B.V. Flash memory device and a method for using the same
KR101134743B1 (ko) * 2006-07-11 2012-04-13 엘지전자 주식회사 휴대용 전자 기기의 배터리 전원 부족시의 비상 데이터송수신 장치 및 방법
KR100758301B1 (ko) * 2006-08-04 2007-09-12 삼성전자주식회사 메모리 카드 및 그것의 데이터 저장 방법
JP2008090477A (ja) * 2006-09-29 2008-04-17 Toshiba Corp 情報記録装置、情報処理装置および書き込み制御方法
JP2008097736A (ja) * 2006-10-13 2008-04-24 Spansion Llc 半導体装置およびその制御方法
DE102007052107B4 (de) * 2006-11-02 2017-09-21 Hitachi, Ltd. Elektronische Steuerungseinrichtung und Verfahren zum Eintragen von Backup-Daten in dieselbe
US8745315B2 (en) 2006-11-06 2014-06-03 Rambus Inc. Memory Systems and methods supporting volatile and wear-leveled nonvolatile physical memory
JP5103668B2 (ja) * 2006-11-30 2012-12-19 株式会社メガチップス 半導体メモリおよび情報処理システム
KR100818802B1 (ko) * 2007-01-03 2008-04-02 삼성전자주식회사 파워다운 응답신호를 발생하는 반도체 메모리 장치 및 상기반도체 장치의 파워다운 방법
TW200832440A (en) * 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
US7791952B2 (en) * 2007-01-30 2010-09-07 Micron Technology, Inc. Memory device architectures and operation
US8752396B2 (en) * 2007-02-23 2014-06-17 Bosch Automotive Service Solutions, LLC Component identification system and method
JP2008251138A (ja) 2007-03-30 2008-10-16 Toshiba Corp 不揮発性半導体メモリ、不揮発性半導体メモリの制御方法、不揮発性半導体メモリシステム、及びメモリカード
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US7737724B2 (en) * 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8111577B2 (en) 2007-04-17 2012-02-07 Cypress Semiconductor Corporation System comprising a state-monitoring memory element
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8040266B2 (en) * 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
KR101434567B1 (ko) * 2007-05-18 2014-08-27 삼성전자 주식회사 비휘발성 메모리의 맵핑 테이블 관리 장치 및 방법
US7752383B2 (en) * 2007-05-25 2010-07-06 Skymedi Corporation NAND flash memory system with programmable connections between a NAND flash memory controller and a plurality of NAND flash memory modules and method thereof
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
US7890690B2 (en) * 2007-06-07 2011-02-15 International Business Machines Corporation System and method for dual-ported flash memory
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
KR101498673B1 (ko) 2007-08-14 2015-03-09 삼성전자주식회사 반도체 드라이브, 그것의 데이터 저장 방법, 그리고 그것을포함한 컴퓨팅 시스템
US7770079B2 (en) * 2007-08-22 2010-08-03 Micron Technology Inc. Error scanning in flash memory
KR101473344B1 (ko) * 2007-08-24 2014-12-17 삼성전자 주식회사 플래시 메모리를 스토리지로 사용하는 장치 및 그 동작방법
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US9201790B2 (en) * 2007-10-09 2015-12-01 Seagate Technology Llc System and method of matching data rates
US8631203B2 (en) 2007-12-10 2014-01-14 Microsoft Corporation Management of external memory functioning as virtual cache
US7761740B2 (en) * 2007-12-13 2010-07-20 Spansion Llc Power safe translation table operation in flash memory
US8788740B2 (en) * 2007-12-21 2014-07-22 Spansion Llc Data commit on multicycle pass complete without error
US8566431B2 (en) * 2008-01-16 2013-10-22 Razer (Asia-Pacific) Pte. Ltd. Identification device and method for device identification
JP5010505B2 (ja) 2008-03-01 2012-08-29 株式会社東芝 メモリシステム
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP2009230414A (ja) * 2008-03-21 2009-10-08 Toshiba Corp 複数の不揮発性メモリデバイスを有する記憶装置
JP5218228B2 (ja) * 2008-04-23 2013-06-26 新東工業株式会社 搬送装置及びブラスト加工装置
JP4439569B2 (ja) 2008-04-24 2010-03-24 株式会社東芝 メモリシステム
JP5075761B2 (ja) 2008-05-14 2012-11-21 株式会社日立製作所 フラッシュメモリを用いたストレージ装置
US8880775B2 (en) * 2008-06-20 2014-11-04 Seagate Technology Llc System and method of garbage collection in a memory device
US8176233B1 (en) * 2008-07-17 2012-05-08 Virident Systems Inc. Using non-volatile memory resources to enable a virtual buffer pool for a database application
US8904083B2 (en) * 2008-07-30 2014-12-02 Infineon Technologies Ag Method and apparatus for storing data in solid state memory
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
US20100073379A1 (en) * 2008-09-24 2010-03-25 Sadan Eray Berger Method and system for rendering real-time sprites
US8325541B2 (en) * 2008-10-15 2012-12-04 SK Hynix Inc. Non-volatile semiconductor memory apparatus
US8149643B2 (en) * 2008-10-23 2012-04-03 Cypress Semiconductor Corporation Memory device and method
US20100146239A1 (en) * 2008-12-08 2010-06-10 Infinite Memories Ltd. Continuous address space in non-volatile-memories (nvm) using efficient embedded management of array deficiencies
US9092387B2 (en) * 2008-12-10 2015-07-28 Micron Technology, Inc. Non-volatile memory device capable of initiating transactions
CN101552032B (zh) * 2008-12-12 2012-01-18 深圳市晶凯电子技术有限公司 用较大容量dram参与闪存介质管理构建高速固态存储盘的方法及装置
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
TWI417884B (zh) * 2009-04-23 2013-12-01 Phison Electronics Corp 用於快閃記憶體的資料存取方法、儲存系統與控制器
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8412985B1 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Hardwired remapped memory
US8412987B2 (en) * 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US8495467B1 (en) 2009-06-30 2013-07-23 Micron Technology, Inc. Switchable on-die memory error correcting engine
KR101581857B1 (ko) * 2009-08-06 2015-12-31 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 인터리브 유닛 구성 방법
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
EP2473999A1 (en) 2009-08-31 2012-07-11 SanDisk IL Ltd. Preloading data into a flash storage device
US8296496B2 (en) * 2009-09-17 2012-10-23 Hewlett-Packard Development Company, L.P. Main memory with non-volatile memory and DRAM
US8250319B2 (en) * 2009-09-29 2012-08-21 Freescale Semiconductor, Inc. Operating an emulated electrically erasable (EEE) memory
KR20120085810A (ko) * 2009-10-15 2012-08-01 가부시키가이샤 엘이테크 마이크로 컴퓨터 및 그 동작 방법
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
TWI417889B (zh) * 2009-12-30 2013-12-01 Silicon Motion Inc 快閃記憶體之寫入逾時控制方法及其記憶裝置
EP2531877B9 (en) * 2010-02-02 2016-07-13 ADC Telecommunications, Inc. Fiber optic cable bundle with staggered connectors
JP5612508B2 (ja) * 2010-03-25 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
CN102207875B (zh) * 2010-03-30 2014-11-12 鸿富锦精密工业(深圳)有限公司 媒体数据播放装置及其重新启动方法
DE102010028231A1 (de) * 2010-04-27 2011-10-27 Robert Bosch Gmbh Speichermodul zur gleichzeitigen Bereitstellung wenigstens eines sicheren und wenigstens eines unsicheren Speicherbereichs
US8683148B2 (en) 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
JP5601053B2 (ja) * 2010-07-02 2014-10-08 富士通株式会社 制御装置、制御モジュールおよび制御方法
KR20120070408A (ko) * 2010-12-21 2012-06-29 에스케이하이닉스 주식회사 블록을 관리하는 비휘발성 메모리 장치의 제어 방법
US8909851B2 (en) 2011-02-08 2014-12-09 SMART Storage Systems, Inc. Storage control system with change logging mechanism and method of operation thereof
US8935466B2 (en) 2011-03-28 2015-01-13 SMART Storage Systems, Inc. Data storage system with non-volatile memory and method of operation thereof
US8645773B2 (en) * 2011-06-30 2014-02-04 Seagate Technology Llc Estimating temporal degradation of non-volatile solid-state memory
US10838646B2 (en) 2011-07-28 2020-11-17 Netlist, Inc. Method and apparatus for presearching stored data
US10380022B2 (en) 2011-07-28 2019-08-13 Netlist, Inc. Hybrid memory module and system and method of operating the same
US10198350B2 (en) 2011-07-28 2019-02-05 Netlist, Inc. Memory module having volatile and non-volatile memory subsystems and method of operation
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021231B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Storage control system with write amplification control mechanism and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US8593866B2 (en) * 2011-11-11 2013-11-26 Sandisk Technologies Inc. Systems and methods for operating multi-bank nonvolatile memory
US9239781B2 (en) 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US9298252B2 (en) 2012-04-17 2016-03-29 SMART Storage Systems, Inc. Storage control system with power down mechanism and method of operation thereof
TWI459201B (zh) * 2012-04-27 2014-11-01 Toshiba Kk Information processing device
US8949689B2 (en) 2012-06-11 2015-02-03 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US20140013031A1 (en) * 2012-07-09 2014-01-09 Yoko Masuo Data storage apparatus, memory control method, and electronic apparatus having a data storage apparatus
JP6112461B2 (ja) 2012-08-07 2017-04-12 パナソニックIpマネジメント株式会社 記録装置、アクセス装置、記録システム、及び記録方法
US9141537B2 (en) * 2012-10-30 2015-09-22 Mangstor, Inc. Magnetic random access memory journal
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9792989B2 (en) * 2013-02-07 2017-10-17 Toshiba Memory Corporation Memory system including nonvolatile memory
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9470720B2 (en) 2013-03-08 2016-10-18 Sandisk Technologies Llc Test system with localized heating and method of manufacture thereof
US8812744B1 (en) 2013-03-14 2014-08-19 Microsoft Corporation Assigning priorities to data for hybrid drives
US10372551B2 (en) 2013-03-15 2019-08-06 Netlist, Inc. Hybrid memory system with configurable error thresholds and failure analysis capability
KR102101304B1 (ko) 2013-03-15 2020-04-16 삼성전자주식회사 메모리 컨트롤러 및 메모리 컨트롤러의 동작 방법
US9043780B2 (en) 2013-03-27 2015-05-26 SMART Storage Systems, Inc. Electronic system with system modification control mechanism and method of operation thereof
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9626126B2 (en) 2013-04-24 2017-04-18 Microsoft Technology Licensing, Llc Power saving mode hybrid drive access management
US9946495B2 (en) 2013-04-25 2018-04-17 Microsoft Technology Licensing, Llc Dirty data management for hybrid drives
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
US9898056B2 (en) 2013-06-19 2018-02-20 Sandisk Technologies Llc Electronic assembly with thermal channel and method of manufacture thereof
US9313874B2 (en) 2013-06-19 2016-04-12 SMART Storage Systems, Inc. Electronic system with heat extraction and method of manufacture thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
CN103927128B (zh) * 2013-07-11 2017-03-01 威盛电子股份有限公司 数据储存装置以及快闪存储器控制方法
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
JP5889848B2 (ja) * 2013-08-28 2016-03-22 京セラドキュメントソリューションズ株式会社 情報処理端末、印刷用プログラム、印刷装置及び印刷システム
US20150095551A1 (en) * 2013-09-30 2015-04-02 Micron Technology, Inc. Volatile memory architecutre in non-volatile memory devices and related controllers
US10248328B2 (en) 2013-11-07 2019-04-02 Netlist, Inc. Direct data move between DRAM and storage on a memory module
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
WO2015145932A1 (ja) * 2014-03-28 2015-10-01 パナソニックIpマネジメント株式会社 不揮発性メモリ装置
JP6593978B2 (ja) * 2014-06-09 2019-10-23 キヤノン株式会社 印刷装置、その制御方法とプログラム
US9653184B2 (en) * 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US9753793B2 (en) 2014-06-30 2017-09-05 Intel Corporation Techniques for handling errors in persistent memory
JP6448254B2 (ja) * 2014-08-19 2019-01-09 ラピスセミコンダクタ株式会社 メモリ制御装置及びメモリ制御方法
US10114562B2 (en) 2014-09-16 2018-10-30 Sandisk Technologies Llc Adaptive block allocation in nonvolatile memory
TWI534618B (zh) * 2015-07-13 2016-05-21 群聯電子股份有限公司 映射表更新方法、記憶體控制電路單元及記憶體儲存裝置
US9632869B1 (en) * 2015-09-08 2017-04-25 Xilinx, Inc. Error correction for interconnect circuits
CN109348730B (zh) 2015-09-18 2022-05-24 株式会社日立制作所 存储器控制器、存储器控制方法以及半导体存储装置
US10261707B1 (en) * 2016-03-24 2019-04-16 Marvell International Ltd. Decoder memory sharing
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
JP6734536B2 (ja) * 2016-07-29 2020-08-05 富士通株式会社 情報処理装置及びメモリコントローラ
KR102799075B1 (ko) 2019-02-27 2025-04-23 에스케이하이닉스 주식회사 컨트롤러, 메모리 시스템 및 그것의 동작 방법
KR102456173B1 (ko) * 2017-10-27 2022-10-18 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US12118241B2 (en) 2017-10-27 2024-10-15 SK Hynix Inc. Memory controller, memory system, and operating method thereof
US20210055882A1 (en) * 2019-08-22 2021-02-25 Micron Technology, Inc. Hierarchical memory apparatus
TWI735984B (zh) * 2019-10-23 2021-08-11 瑞昱半導體股份有限公司 資料收發裝置及其操作方法
CN112749118B (zh) * 2019-10-29 2024-03-29 瑞昱半导体股份有限公司 数据收发装置及其操作方法
JP7366795B2 (ja) * 2020-02-14 2023-10-23 キオクシア株式会社 メモリシステムおよび制御方法
CN111752487B (zh) * 2020-06-18 2024-01-12 深圳大普微电子科技有限公司 一种数据恢复方法、装置及固态硬盘
US11507294B2 (en) * 2020-10-22 2022-11-22 EMC IP Holding Company LLC Partitioning a cache for fulfilling storage commands
US11960757B2 (en) 2021-10-04 2024-04-16 Samsung Electronics Co., Ltd. Flash translation layer with rewind

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2840305C3 (de) * 1978-09-15 1981-03-26 Siemens AG, 1000 Berlin und 8000 München Verfahren zum Programmieren von wiederholt beschreibbaren Festwertspeichern
DE3200872A1 (de) * 1982-01-14 1983-07-21 Sartorius GmbH, 3400 Göttingen Elektronische waage
US4530054A (en) * 1982-03-03 1985-07-16 Sperry Corporation Processor-addressable timestamp for indicating oldest written-to cache entry not copied back to bulk memory
NL8202365A (nl) * 1982-06-11 1984-01-02 Philips Nv Serie-parallel-serie schuifregistergeheugen, hetwelk redundante parallelgeschakelde opslagregisters bevat, en afbeeldtoestel, voorzien van een zodanig georganiseerd beeldgeheugen.
JPS60179857A (ja) * 1984-02-28 1985-09-13 Fujitsu Ltd キヤツシユ装置の制御方式
JP3099046B2 (ja) 1985-08-09 2000-10-16 株式会社日立製作所 不揮発性記憶装置
JPH01106152A (ja) 1987-10-20 1989-04-24 Casio Comput Co Ltd データ記憶方式
US4924375A (en) * 1987-10-23 1990-05-08 Chips And Technologies, Inc. Page interleaved memory access
US4899272A (en) * 1987-10-23 1990-02-06 Chips & Technologies, Inc. Addressing multiple types of memory devices
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
JPH01235075A (ja) * 1988-03-14 1989-09-20 Fuji Xerox Co Ltd ディスクメモリ制御装置
KR0135082B1 (ko) 1988-04-28 1998-04-20 오가 노리오 정보 기억방법 및 그 장치
US5043940A (en) * 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
US5268870A (en) * 1988-06-08 1993-12-07 Eliyahou Harari Flash EEPROM system and intelligent programming and erasing methods therefor
JPH02189790A (ja) * 1989-01-18 1990-07-25 Mitsubishi Electric Corp ダイナミック形半導体記憶装置
US5535328A (en) * 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
EP0935255A2 (en) 1989-04-13 1999-08-11 SanDisk Corporation Flash EEPROM system
JPH0325798A (ja) * 1989-06-23 1991-02-04 Ricoh Co Ltd Eepromを使用した記憶装置
JPH0330034A (ja) * 1989-06-28 1991-02-08 Hitachi Ltd 光デイスクフアイル管理方法
US5065364A (en) * 1989-09-15 1991-11-12 Intel Corporation Apparatus for providing block erasing in a flash EPROM
JPH03283094A (ja) * 1990-03-29 1991-12-13 Nec Corp 半導体メモリ
JPH0498342A (ja) 1990-08-09 1992-03-31 Mitsubishi Electric Corp 半導体記憶装置
JPH04123243A (ja) * 1990-09-14 1992-04-23 Toshiba Corp データ書込装置
US5222109A (en) * 1990-12-28 1993-06-22 Ibm Corporation Endurance management for solid state files
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
GB2251324B (en) * 1990-12-31 1995-05-10 Intel Corp File structure for a non-volatile semiconductor memory
JP3137993B2 (ja) * 1991-01-16 2001-02-26 富士通株式会社 不揮発性半導体記憶装置
US5295255A (en) * 1991-02-22 1994-03-15 Electronic Professional Services, Inc. Method and apparatus for programming a solid state processor with overleaved array memory modules
JPH04281541A (ja) 1991-03-11 1992-10-07 Fujitsu Ltd 書込回数制限付記憶装置への書込方式
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
FR2675287B1 (fr) * 1991-04-15 1993-06-18 Bull Sa Circuit coupleur et son utilisation dans une carte et procede.
JP2582487B2 (ja) * 1991-07-12 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 半導体メモリを用いた外部記憶システム及びその制御方法
JP2549034B2 (ja) * 1991-07-22 1996-10-30 株式会社メルコ 記憶装置
US5245572A (en) * 1991-07-30 1993-09-14 Intel Corporation Floating gate nonvolatile memory with reading while writing capability
JPH0546490A (ja) 1991-08-09 1993-02-26 Toshiba Corp メモリカード装置
JP3163124B2 (ja) 1991-08-09 2001-05-08 株式会社東芝 電子スチルカメラ装置
US5359569A (en) * 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
US5263003A (en) * 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
JP3231832B2 (ja) * 1991-11-26 2001-11-26 株式会社日立製作所 フラッシュメモリを記憶媒体とした半導体ディスク
JP3122201B2 (ja) * 1991-11-30 2001-01-09 株式会社東芝 メモリカード装置
US5267218A (en) * 1992-03-31 1993-11-30 Intel Corporation Nonvolatile memory card with a single power supply input
US5341489A (en) * 1992-04-14 1994-08-23 Eastman Kodak Company Memory card with programmable interleaving
KR0121800B1 (ko) * 1992-05-08 1997-11-22 사또오 후미오 메모리 카드장치
US5280447A (en) * 1992-06-19 1994-01-18 Intel Corporation Floating gate nonvolatile memory with configurable erasure blocks
JP3328605B2 (ja) * 1992-06-22 2002-09-30 株式会社日立製作所 半導体記憶装置
JP3328321B2 (ja) 1992-06-22 2002-09-24 株式会社日立製作所 半導体記憶装置
US5437020A (en) 1992-10-03 1995-07-25 Intel Corporation Method and circuitry for detecting lost sectors of data in a solid state memory disk
JP3105092B2 (ja) 1992-10-06 2000-10-30 株式会社東芝 半導体メモリ装置
JP3641280B2 (ja) * 1992-10-30 2005-04-20 インテル・コーポレーション フラッシュeepromアレイのクリーン・アップすべきブロックを決定する方法
JP3283094B2 (ja) 1993-03-31 2002-05-20 太平洋セメント株式会社 混合セメント
US6078520A (en) * 1993-04-08 2000-06-20 Hitachi, Ltd. Flash memory control method and information processing system therewith
KR970008188B1 (ko) * 1993-04-08 1997-05-21 가부시끼가이샤 히다찌세이사꾸쇼 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
US5737748A (en) * 1995-03-15 1998-04-07 Texas Instruments Incorporated Microprocessor unit having a first level write-through cache memory and a smaller second-level write-back cache memory
JPH0955091A (ja) * 1995-08-07 1997-02-25 Fujitsu Ltd フラッシュメモリ装置
US5696929A (en) * 1995-10-03 1997-12-09 Intel Corporation Flash EEPROM main memory in a computer system
JPH11175311A (ja) * 1997-12-05 1999-07-02 Tdk Corp フラッシュメモリシステム
JP2000349853A (ja) * 1999-06-01 2000-12-15 Victor Co Of Japan Ltd データ伝送方法
JP2001034822A (ja) * 1999-07-22 2001-02-09 Sanden Corp 自動販売機の制御装置
US6147618A (en) * 1999-09-15 2000-11-14 Ilife Systems, Inc. Apparatus and method for reducing power consumption in physiological condition monitors

Also Published As

Publication number Publication date
US5973964A (en) 1999-10-26
EP0619541A3 (en) 1995-03-01
US5862083A (en) 1999-01-19
DE69432878T2 (de) 2004-05-27
US5530673A (en) 1996-06-25
DE69432878D1 (de) 2003-08-07
US6421279B1 (en) 2002-07-16
EP0619541B1 (en) 2003-07-02
EP0619541A2 (en) 1994-10-12
US6275436B1 (en) 2001-08-14
TW403871B (en) 2000-09-01
US20020051394A1 (en) 2002-05-02

Similar Documents

Publication Publication Date Title
KR970008188B1 (ko) 플래시메모리의 제어방법 및 그것을 사용한 정보처리장치
US6078520A (en) Flash memory control method and information processing system therewith
KR960012360B1 (ko) 플래시메모리를 사용한 기억장치
US7610438B2 (en) Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
US6405323B1 (en) Defect management for interface to electrically-erasable programmable read-only memory
CN109643275B (zh) 存储级存储器的磨损均衡设备和方法
US5519831A (en) Non-volatile disk cache
JP2856621B2 (ja) 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置
JPH07146820A (ja) フラッシュメモリの制御方法及び、それを用いた情報処理装置
US6205521B1 (en) Inclusion map for accelerated cache flush
USRE48127E1 (en) Information processing apparatus and driver
US8407418B2 (en) Information processing apparatus and driver
JP3987577B2 (ja) システム管理モード情報を他の情報と共にキャッシュに入れる方法および装置
US20090235014A1 (en) Storage device and computing system
JP2007183961A (ja) ハードディスクドライブキャッシュメモリ及び再生デバイス
JPH06111588A (ja) 一括消去型不揮発性メモリ
WO2002001365A2 (en) Non-volatile cache
JPH06124596A (ja) フラッシュメモリを使用した記憶装置
JP2007183962A (ja) 一体型メモリ及びコントローラ
BRPI0806865A2 (pt) Equipamento e métodos para reduzir eliminações em uma hierarquia de cache multinível
JPH037978B2 (ko)
JP3421581B2 (ja) 不揮発性半導体メモリを用いた記憶装置
US5544344A (en) Apparatus for caching smram in an intel processor based computer system employing system management mode
US20080263282A1 (en) System for Caching Data
EP2264602A1 (en) Memory device for managing the recovery of a non volatile memory

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 19940407

PA0201 Request for examination

Patent event code: PA02012R01D

Patent event date: 19940407

Comment text: Request for Examination of Application

PG1501 Laying open of application
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 19961119

Patent event code: PE09021S01D

G160 Decision to publish patent application
PG1605 Publication of application before grant of patent

Comment text: Decision on Publication of Application

Patent event code: PG16051S01I

Patent event date: 19970428

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 19970814

GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 19971030

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 19971030

End annual number: 3

Start annual number: 1

PR1001 Payment of annual fee

Payment date: 20000421

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20010504

Start annual number: 5

End annual number: 5

PR1001 Payment of annual fee

Payment date: 20020422

Start annual number: 6

End annual number: 6

PR1001 Payment of annual fee

Payment date: 20021011

Start annual number: 7

End annual number: 7

PR1001 Payment of annual fee

Payment date: 20031006

Start annual number: 8

End annual number: 8

PR1001 Payment of annual fee

Payment date: 20041011

Start annual number: 9

End annual number: 9

PR1001 Payment of annual fee

Payment date: 20050930

Start annual number: 10

End annual number: 10

PR1001 Payment of annual fee

Payment date: 20071026

Start annual number: 11

End annual number: 11

PR1001 Payment of annual fee

Payment date: 20081024

Start annual number: 12

End annual number: 12

PR1001 Payment of annual fee

Payment date: 20091022

Start annual number: 13

End annual number: 13

PR1001 Payment of annual fee

Payment date: 20101027

Start annual number: 14

End annual number: 14

PR1001 Payment of annual fee

Payment date: 20110920

Start annual number: 15

End annual number: 15

FPAY Annual fee payment

Payment date: 20121002

Year of fee payment: 16

PR1001 Payment of annual fee

Payment date: 20121002

Start annual number: 16

End annual number: 16

FPAY Annual fee payment

Payment date: 20131001

Year of fee payment: 17

PR1001 Payment of annual fee

Payment date: 20131001

Start annual number: 17

End annual number: 17

EXPY Expiration of term
PC1801 Expiration of term