KR100276162B1 - 플레쉬 메모리 어레이 시스템 및 방법 - Google Patents

플레쉬 메모리 어레이 시스템 및 방법 Download PDF

Info

Publication number
KR100276162B1
KR100276162B1 KR1019940013909A KR19940013909A KR100276162B1 KR 100276162 B1 KR100276162 B1 KR 100276162B1 KR 1019940013909 A KR1019940013909 A KR 1019940013909A KR 19940013909 A KR19940013909 A KR 19940013909A KR 100276162 B1 KR100276162 B1 KR 100276162B1
Authority
KR
South Korea
Prior art keywords
array
array controller
user interface
interrupt
command
Prior art date
Application number
KR1019940013909A
Other languages
English (en)
Other versions
KR950001486A (ko
Inventor
리 팬드리히 미키
조셉 두란트 리챠드
프레드릭 언더우드 키드
알. 로즈만 로드니
Original Assignee
피터 엔. 데트킨
인텔 코오퍼레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 피터 엔. 데트킨, 인텔 코오퍼레이션 filed Critical 피터 엔. 데트킨
Publication of KR950001486A publication Critical patent/KR950001486A/ko
Application granted granted Critical
Publication of KR100276162B1 publication Critical patent/KR100276162B1/ko

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Dram (AREA)

Abstract

플레쉬 메모리 시스템은 유져 인터페이스와 어레이 제어기를 포함한다. 유져 인터페이스는 프로세서에 의해서 나온 유져 명령을 수신하며 실행을 위한 다수의 명령을 큐잉하는 능력을 갖는다.
유져 인터페이스는 실행될 명령의 우선수위를 제어하기 위해 아비터로서 더욱 기능한다. 어레이 제어기는 프로그램과 소거와 같은 플레쉬 어레이상에서의 동작을 수행한다. 어레이 제어기는 유져에 의해서 프로그램 가능한 프로그램 메모리를 갖는 범용의 프로세서로 이루어진다. 프로그램 메모리는 어레이 제어기에 의해서 실행될 수 있는 하나 또는 그 이상의 알고리즘을 저장한다. 알고리즘은 유져 인터페이스에 수신된 명령에 따라 선택된다. 알고리즘은 프로그램 메모리를 프로그램함으로써 간단히 주문화될 수 있다. 시스템은 높은 우선순위 명령 그러나 현재 실행하고 있는 명령의 문맥스위치를 낮은 우선순위로 수행할 수 있게 하기 위해서 플레쉬 메모리 시스템을 인에이블하는 인터럽트 메카리즘을 제공한다.

Description

플레쉬 메모리 어레이 시스템 및 방법
제1도는 플레쉬 메모리를 포함하는 컴퓨터 시스템을 나타내는 블록도.
제2도는 본 발명의 플레쉬 메모리 시스템을 나타내는 블록도.
제3도는 본 발명의 유져 인터페이스(User interface)를 나타내는 블록도.
제4a 내지 4k도는 본 발명의 시스템에서 수신되는 명령코드와 구현되는 어레이 제어기 벡터를 설명하는 테이블.
제5도는 예시적인 상태 레지스터 비트의 정의를 나타내는 블록도.
제6a도는 본 발명의 블록상태 레지스터의 구조를 나타내는 블록도이고,
제6b도는 블록 상태 레지스터의 예시적인 비트 구성을 설명하며,
제7도는 본 발명의 비휘발성 메모리에서 사용되는 어레이 제어기를 나타내는 블록도.
제8도는 프로그램 카운터 회로를 나타내는 블록도.
제9a와 9b도는 본 발명의 인터럽트 과정의 순서를 설명하며,
제10a와 10b도는 본 발명의 교시를 따르는 소거 과정동안의 프로그램을 설명하는 순서도이다.
[발명의 배경]
[발명의 분야]
본 발명은 플레쉬 메모리에 관한 것으로, 특허 플레쉬 메모리 동작을 제어하는 방법 및 장치에 관한 것이다.
[기술배경]
종래 비휘발성 반도체 메모리의 한 타입은 전기소거식 프로그램가능 판독전용 메모리인 플레쉬(플레쉬)이다. 플레쉬 메모리는 전기신호로 프로그램 될 수 있고, 일단 프로그램되면 플레쉬 메모리는 소거될때까지 그 데이타를 보유한다. 소거후, 플레쉬 메모리는 새로운 코드 또는 데이타로 프로그램 될 수 있다.
플레쉬 메모리는 소거라는 관점에서 종래 전기소거식 프로그램 가능 판독전용 메모리(EEPROM)와는 다르다. 종레 EEPROM은 개별바이트 소거제어를 위해 선택 트랜지서터를 전형적으로 사용한다. 한편, 플레쉬 메모리는 전형적으로 단일 트랜지스터 셀을 가지면서 상당한 고집적도를 달성하고 있다. 한 종래의 플레쉬 메모리 소거방법동안에 고전압은 메모리 어레이내의 모든 메모리 셀의 소스에 동시에 공급된다. 이것은 완전 어레이 소거를 가져온다.
전형적으로, 논리 1은 비트 셀과 연관된 부동게이트에 전자가 거의 저장되지 않음을 의미한다. 논리 0은 비트셀과 연관된 부동 게이트에 많은 전자가 저장됨을 의미한다.
플레쉬 메모리의 소거는 논리 1이 각 비트셀에 저장되게 한다. 이런 플레쉬 메모리의 각 단일 비트셀은 논리 0에서 논리 1로 소거 없이 증복기록될 수 없다.
그러나, 이런 플레쉬 메모리의 각 단일 비트셀은 논리 1에서 논리 0으로 증복기재될 수 있는데, 이것은 소거상태와 연관된 전자의 고유수를 포함하는 부동게이트에 전자를 단순히 부가하면 되기 때문이다.
소거, 프로그래밍 및 검증에 대한 과정은 이런 단계를 수행하는데 요구되는 전압의 세심한 제어를 요구한다. 예컨데, 한 종래의 플레쉬 메모리는 256킬로비트이며 인텔(Intel)사가 제조한 28F256 상보형 금속산화물 반도채(CMOS)플레쉬 메모리이다.
플레쉬 메모리를 제어하기 위하여, 메모리는 전기소거 및 재프로그래밍을 담당할 명령레지스터를 포함한다. 명령은 표준마이크로 프로세서 기록 타이밍을 사용하는 제어마이크로 프로세서로부터 소거를 위해 기록된다.
명령레지스터 내용은 소거 및 프로그래밍 회로를 제어하는 내부상태 머신에 대한 입력으로서 작용한다.
플레쉬 메모리의 집적도가 증가함으로 인해, 플레쉬 메모리를 포함하는 응용도 또한 증가하게되었다.
이런 응용은 극적으로 변화하고 종종다른 처리와 제어메카니즘을 요구한다.
전형적으로, 응용은 버스를 통해 플레쉬 메모리와 접속된 마이크로 프로세서에 의해서 구동된다. 그러나, 만약 마이크로 프로세서에서 부담(overhead)이 크다면, 플레쉬 처리량은 감소한다. 더욱이, 플레쉬 메모리의 신뢰성 있는 동작을 보장하기 위해 소거절차는 엄격하게 선행되어야 한다. 따라서, 마이크로 프로세서를 통해 플레쉬 메모리를 갖는 유져의 인터페이스를 제어하고 버스를 통해 플레쉬 메모리를 제어하기 위해 마이크로 프로세서의 사용은, 예컨데, 마이크로 프로세서에서 나오는 제어신호를 일시적으로 막는 인터럽트 또는 다른 동작에 의해서 생긴 불량시간 제어신호에 기인하여 플레쉬 메모리의 과소거로 생기는 플레쉬 에러의 가능성을 증가시킨다.
또한, 플레쉬 메모리에서는 하나의 동작만이 일정시간에서 수행되도록 되어 있다. 따라서 낮은 우선순위의 동작이 실행되고 그보다 높은 우선순위의 동작이 실행되고자 할려면, 높은 우선순위의 동작은 이 동작이 실행될 수 있기 전에 그보다 낮은 우선순위의 동작이 완료되는 것을 기달려야만 한다.
더욱이, 플레쉬 메모리의 비용이 감소함에 따라, 플레쉬 메모리를 활용하는 응용의 수는 증가하였다. 따라서, 유연하며 쉽게 조절할 수 있는 인터페이스와 플레쉬 메모리를 다양한 응용에 제공하는 것이 요구되어 진다.
[발명의 요약]
본 발명의 장치와 방법은 사용 및 응용에 있어서 뛰어난 유연성을 제공하며 수행될 동작의 전체처리량을 증가시키는 플레쉬 메모리를 제어하기 위한 칩 메카니즘을 제공한다. 마이크로 프로세서에 대한 부담은 최소화되고, 예컨데 플레쉬 어레이의 과소거에 의해 야기된 에러의 위험이 제거된다. 이 장치는 완전한 기능 및 플레쉬 어레이의 제어를 제공하기 위해 서로 결합하여 동작하는 많은 중요소자로 이루어진다.
메모리 어레이와 같은 소자상에 위치하는 회로는 예컨데 마이크로 프로세서로 부터 버스를 통해 어드레스, 명령 및 데이타정보를 수신하며, 유져 인터페이스로부터 나오는 명령에 의해서 식별되는 소거 및 프로그램동작을 수행하는 어레이 제어기로 명령을 내보내는 유져 인터페이스로 구성된다. 어레이 제어기는 유저 인터페이스와는 무관한 방식으로 특정동작을 수행하는데 요구되는 전압과 플레쉬 어레이를 제어한다.
그러므로, 유져 인터페이스가 다양한 유져명령을 수신하며 실행을 위해 어레이 제어기로 전송된 명령의 시컨스를 제어할 수 있을때 상당히 큰 유연성이 달성될 수 있다.
명령 파이프라인닝(pipelining)이 가능하며 가장 큰 처리량을 제공한다.
더욱이, 어레이 제어기는 프로그램 메모리에 저장된 코드에 기초에서 동작을 수행한다.
따라서, 새 명령이 더해질 수 있으며 또는 구 명령은 메모리에 저장된 마이크로 코드를 간단히 변화시킴으로써 하드웨어의 변경없이 변화될 수 있다.
회로는 또한 어레이 제어기에 의해서 실행된 명령의 문맥스위치를 수행할 능력을 갖는다. 다른 과정에 의해 현재실행 되고 있는 한과정을 안전하게 인터럽트 하게하는 혁신적인 인터럽트 메카니즘이 제공되어, 그결과 제2과정이 완료될때 실행은 실행의 내정된 "안전"지점에서 인터럽트된 과정으로 복귀하여 어레이내의 데이타가 붕괴되지 않게 한다. 예컨데, 어레이의 한 뱅크(bank)에 영향을 끼치는 느리고 낮은 우선순위의 동작은 일시정지 될 수 있고 그보다 높은 우선순위의 명령이 실행될 수 있게 어레이 제어기에서 문맥스위치는 수행된다. 따라서, 어레이의 하나 또는 그이상의 뱅크 소거와 같은 시간소모 동작이 실행되고 있을때 유저 인터페이스는, 어레이 제어기가 실행을 위한 소거동안 프로그램과 같은 동작을 인에이블하기 위해 소거명령 및 보다 높은 우선순위 명령의 문맥스위치를 수행함으로써 실행될 수 있는 연속적인 명령을 어레이 제어기로 내보낼 수 있다.
[발명의 상세한 설명]
본 발명의 목적, 특징 및 이점은 다음의 상세한 설명으로부터 본 기술의 숙련자에게는 명백할 것이다.
설명을 목적으로하는 다음 서술에서, 본 발명의 완전한 이해를 제공하기 위해서 많은 세부사항이 개시되어 있다. 그러나, 이런 특정 세부사항이 본 발명을 실시하는데 요구되지 않는다는 것은 본 기술의 당업자에게는 명백할 것이다.
다른예로서 잘알려진 전기구조 및 회로는 본 발명이 불필요하게 불명료하게 되지 않도록 하기 위해서 블록도 형태로 도시되었다.
제1도는 컴퓨터 시스템(300)의 블록도이다.
컴퓨터 시스템(300)은 중앙처리장치(CPU)(302), 주메모리 서브시스템(304) 및 한세트의 플레쉬 메모리장치(310 내지 314)로 이루어져 있다. CPU(302)는 유져 버스(306)을 거쳐 플레쉬 메모리장치(310 내지 314)와 주메모리 서브시스템(304) 과 통신한다.
플레쉬 메모리장치(310 내지 314)는 랜덤액세스 비휘발성 대규모 데이타 저장을 컴퓨터 시스템(300)에 제공한다. CPU(302)는 유져버스(306)를 거쳐 판독메모리 사이클을 발생시킴으로써 플레쉬 메모리장치(310 내지 3l4)의 내용을 판독한다. CPU(302)는 기록명령과 기록데이타 블록을 유져버스(306)를 거쳐 플레쉬장치(310 내지 314)에 전송함으로써 플레쉬 메모리장치(310 내지 314)에 기록한다.
본 발명의 플레쉬 메모리 시스템(310)을 나타내는 블록도가 제2도에 설명되어 있다.
플레쉬 메모리 시스템(310)은 플레쉬 셀어레이(20), 유져 인터페이스회로(40), 플레쉬어레이 제어기(50), 페이지버퍼회로(70), 제어레지스터회로(80 내지 85) 및 판독/기록통로회로(30)로 구성된다. 플레쉬 셀어레이(20)는 랜덤액세스 비휘발성 대규모 데이타저장을 제공한다. 일실시예에 있어서, 플레쉬 셀어레이(20)는 한세트인 32 플레쉬 어레이 블록으로 배열된다. 각각의 플레쉬 어레이블록은 64K 바이트의 데이타 저장을 제공한다.
플레쉬 메모리장치(310)는 유져버스(306)와 결합되어 있는 것으로 도시되어 있다. 유져버스(306)는 유져 어드레스버스(102), 유져 데이타버스(104), 및 유져제어버스(106)로 구성된다. 유져 인터페이스회로(40)는 마이크로 프로세서와 같은 마스터 장치로 부터 데이타, 명령 및 어드레스정보를 수신하고 버퍼내에 정보를 저장한다.
바람직하게 버퍼 각각이, 유져 인터페이스회로(40)에 의해서 고려되고 수신될 마이크로 프로세서로부터의 다수의 요청을 인에이블할 수 있는 다수의 버퍼인 것에 유의해야 한다. 아래에서 설명될 것처럼 어레이제어기(50)의 상태에 기초하는 어떤 명령은 높은 우선순위 위치에 놓여있으며 즉시 실행을 수신하기 위해서 어레이제어기(50)에 의해서 동시에 실행되는 명령과 문맥스위치되어 있다. 유져 인터페이스회로(40)는 이들이 어레이제어기(50)로부터 마이크로 프로세서로 순차적으로 제공할 수 있는 상태정보를 더욱이 수신한다.
유저 인터페이스회로(40)는 유져버스(306)를 거쳐 통신받은 동작 요정을 수신하고 처리함으로써 유져버스(306)를 거쳐 플레쉬 셀어레이(20)의 액세스를 인에이블한다. 유져 인터페이스회로(40)에서 동작요청을 수신할때, 유져버스(306)로 부터 수신된 어드레스, 데이타 및 명령정보는 유져 인터페이스회로(40)에 위치한 버퍼내에 저장된다. 맘약 요청된 동작이 프로그램 또는 소거명령과 같은 어레이제어기 동작이라면, 유져 인터페이스회로(40)에 의해서 수신된 명령 및 데이타를 큐버스(41)를 통행 요청된 명령의 실행을 위해 어레이제어기에 순차적으로 전송된다. 어드레스정보는 어드레스라인(36)을 거쳐 통신받은 어드레스에서 명령실행을 위해서 멀티플렉서(35)을 통해 유져 인터페이스회로(40)에 의해서 판독/기록통로회로(30)로 보내진다. 판독동작은 어레이제어기가 동작중이 아닐때 허용된다. 유져 인터페이스회로(40)는 어드레스를 판독/기록통로회로(30)로 보내며 출력멀티플렉서를 어레이로부터 판독된 출력데이타로 세트한다.
유져 인터페이스회로(40)와 어레이제어기(50)는 이 두소자에 의해서 액세스될 수 있는 페이지 버퍼자원(70)을 공유하며 다양한 방법으로 동작할 수 있는 플레쉬 메모리 시스템을 제공한다. 예컨데, 페이지버퍼(70)는 어레이(20)내로 프로그램될 데이타를 버퍼링하는데 사용될 수 있어서 데이타가 어레이(20)내로 스트림되게하여 충분한 데이타가 축적되게하고 그결과 어레이(20)에서 처리량이 증가된다.
이 버퍼는 유져 인터페이스와 어레이 제어기에 의해서 액세스될 수 있다. 예컨데, 페이지 버퍼는 플레쉬 어레이에 대한 고속기록동작을 조절하는데 사용된다. 데이타는 연속적인 어레이 기록동작을 위해 유져 인터페이스 회로에 의해서 페이지 버퍼내로 로드된다. 2개의 페이지 버퍼내에 위치한 데이타를 어레이에 기록하기 위한 유져명령은 다른 어레이 제어기가 명령하는 것과 같은 식으로 유져 인터페이스회로(40)의 큐구조를 통해 큐잉(queuing)될 수 있다. 어레이는 페이지 버퍼에서 유지되는 데이타를 사용하는 이 명령의 실행에 의해서 프로그래밍될 수 있다. 따라서 유져는 페이지 버퍼를 로드할 수 있고, 페이지 버퍼의 내용을 활용하며 제1어레이 제어기 명령이 나온후 유져인터페이스가 이용할 수 있는 제2페이지 버퍼를 로드하는 어레이 제어기 명령을 낸다.
바람직한 실시예에서 페이지 버퍼는 128×19×2 메모리 어레이인 SRAM 셀이다. 이것은 몇가지 동작모드가 있으며 어레이 제어기와 유져 인터페이스에 의해서 액세스될 수 있다. 모드에 따라서 8비트, 16비트 또는 19비트메모리로 조직화된다. 또한 모드는 페이지 버퍼가 하나의 인접하는 메모리 면인지 아니면 2개의 메모리 면인지를 제어할 수 있다. 각각의 면은 동시에 액세스될 수 있다. 테스트모드가 아닐때 페이지버퍼가 SRAM메모지의 두면으로 분할되는 것이 바람직하다. 이런 2면구조는 어레이 제어기가 메모리의 절반에 대한 판독/기록액세스를 가능하게하며 유져 인터페이스가 다른 절반에 대한 판독/기록액세스를 동시에 하게 한다. 액세스될 수 있는 절반은 고정되지 않고, 오히려 면의 소유는 앞뒤로 스위칭된다.
예컨데, 이것은 어레이의 페이지 프로그래밍을 위해 한페이지의 데이타를 어레이제어기로 지나가게 하기 위해서 유져 인터페이스에 의해서 사용될 수 있다. 유져 인터페이스를 먼저 데이타를 갖는 페이지 버퍼의 한면을 채우고 그후 페이지 프로그램을 수행하기 위해 어레이제어기로 명령(점프오프셋)을 낸다. 내부논리과 제어신호의 사용을 통하여 적당한 명령을 수신할때 어레이제어기는 호스트CPU에 의해서 로드되는 면으로 주의를 돌리고 유져 인터페이스는 데이타를 기록하기 위해 다른 면을 제어한다.
그러므로, 독립적으로 액세스될 수 있는 두개의 페이지 버퍼가 있으며, 페이지 버퍼 프로그래밍은 플레쉬 어레이내로의 데이타 스트림이 데이타처리량을 증가시키기 위해 달성될 수 있도록 파이프라인 되고 시컨싱될 수 있다.
페이지버퍼는 다양한 목적용의 어레이 제어기 알고리즘에 의해서 사용될 수 있다. 예컨데, 다중블록 소거알고리즘은 인터럽트가 이동작중에 기여될 수 있도록 다중블록 소거정보를 저장하기 위해 페이지 버퍼를 사용할 수 있다. 어레이 제어기는 파이프라인 프로그레밍을 위해 점프오프셋, 데이타 및 어드레스 정보를 저장하기 위해 페이지버퍼를 또한 사용할 수 있다. 유져 인터페이스를 통해 외부유져는 자동적으로 빠른 판독기록 메모리로서 페이지버퍼를 또한 사용할 수 있다.
데스트모드 동안, 어레이제어기는 페이지버퍼에 저장된 명령을 실행하기 위해 명령받을 수 있다. 따라서 페이지 버퍼는 어레이제어기에 대한 마이크로코드 저장으로서 작용할 수 있다. 이런 모드일때, 페이지버퍼의 구조는 한 인접 메모리로 바람직하게 재구성된다.
어레이제어기(50)는 어레이(20)를 프로그래밍, 소거 및 검증하는 것이 필요한 다른 소자를 중앙제어버스(100)를 통해 제어한다. 어레이 제어기(50)는 어레이(20)에 대한 프로그램과 소거, 및 다른동작을 위해 축소명령세트 프로세서로 특정된다.
어레이제어기(50)는 산술논리유닛, 범용레지스터, 제어저장 및 제어시컨서를 포함한다. 어레이제어기(50)는 동작을 수행하는데 필요한 명령을 실행하기 위해 프로그램메모리의 적당한 위치를 액세스하고자 큐버스(41)를 거쳐 수신된 정보를 사용한다.
어레이제어기(50)는, 어레이(20)의 플레쉬셀에 전하를 인가하고 어레이(20)의 플레쉬셀로 부터 전하를 제거하기 위해서 판독/기록통로(30)의 고전압 회로를 시컨싱하기 위한 구현알고리즘을 실행한다. 어레이제어기(50)는 중앙제어버스(100) 를 거쳐 제어레지스터회로(80 내지 85)를 액세스함으로써 어레이(20)를 어드레싱하며 고전압회로를 제어한다.
판독/기록통로회로(30)는 어레이(20)를 액세스하기 위한 판독과 기록통로 회로로 구성된다. 더욱 특히, 판독/기록통로회로(30)는 소거기능을 위해 적당한 전압레벨을 어레이(20)에 인가하기 위한 소스스위치 회로를 포함한다. 판독/기록통로회로(30)는 프로그래밍 기능동안 프로그램 레벨전압을 어레이(20)의 비트라인에 보내기위한 프로그램 로드회로를 또한 포함한다.
제어레지스터회로(80 내지 85)는 특정된 제어레지스터와 제어신호를 판독/기록통로(30)로 내기 위한 연관된 회로의 한세트를 포함한다. 특정된 제어레지스터는 중앙제어버스(100)를 거쳐 판독되고 기록된다.
본 실시예에서, 제어액세스회로(60)는 중앙제어버스(100)를 거쳐 제어레지스터회로(80 내지 85)를 액세스하기 위해 유져 인터페이스회로(40)와 어레이제어기(50)를 인에이블 한다. 플레쉬 메모리 시스템(310)의 정규모드동안 어레이제어기(50)는 제어액세스회로(60)를 제어하고 중앙제어버스(100)를 거쳐 제어레지스터회로(80 내지 85)를 액세스 한다.
본 실시예에서, 어레이제어기(50)는 기록제어신호와, 대응하는 기록데이타와 함께 레지스터 어드레스를 버스(52)를 거쳐 제어액세스회로(60)로 전송함으로써 특정 제어레지스터를 기록한다. 제어액세스회로(60)는 어드레스 지정된 특정 제어레지스터에 기록하기 위해 중앙제어버스(100)을 거쳐 기록사이클을 발생시킨다.
어레이제어기(50)는 레지스터어드레스와 판독제어신호를 버스(52)를 거쳐 제어액세스회로(60)로 전송함으로써 특정된 제어레지스터를 판독한다. 제어액세스회로(60)는 어드레스지정된 특정 제어레지스터를 판독하기 위해 중앙제어버스(100) 를 거쳐 판독 액세스사이클을 발생시킨다.
예컨데, 제어레지스터회로(80)는 한세트의 제어신호(90)에 따라 판독/기록통로(30)의 고전압회로를 제어하기 위한 특정 제어레지스터와 회로를 포함한다. 제어레지스터회로(81)는 한세트의 제어신호에 따라 판독/기록통로(30)의 특정 컬럼액세스회로를 제어하기 위한 제어레지스터와 회로를 포함한다. 제어레지스터회로(82)는 판독/기록통로(30)로 부터 한세트의 상태신호(92)를 감지하고 래치하는 한세트의 판독 전용 레지스터를 포함한다. 제어레지스터회로(83)는 한세트의 제어신호에 따라 판독/기록통로(30)의 판독통로를 제어하기 위한 제어레지스터와 회로를 포함한다.
제어레지스터회로(84)는 페이지버퍼회로(70)의 테스트모드의 한세트를 제어하는 레지스터를 포함한다. 제어레지스터회로(85)는 한세트의 제어신호(95)에 따라 플레쉬 메모리 시스템(310)의 특정 테스트 특징을 제어하는 레지스터를 포함한다.
유져 인터페이스회로(40)는 판독/기록통로(30)에 대한 입력어드레스(36)를 선택하기 위해 입력어드레스 멀티플렉서(35)를 제어한다. 선택된 입력어드레스(36)는 유져 어드레스버스(102) 상의 TTL버퍼(도시안됨)에 의해서 감지된 어드레스 또는 유져 인터페이스회로(40)로부터 래치된 어드레스(37)이다. 입력어드레스(36)는 제어레지스터회로(84)의 제어레지스터를 프로그래밍함으로써 치환될 수 있다.
유져 인터페이스회로(40)는 유져 테이타버스(104)를 거쳐 출력데이타 전송을 하기 위한 소스를 선택하고자 출력데이타 멀티플랙서(45)를 제어한다. 선택된 출력데이타는 판독/기록통로(30)로부터의 플레쉬 어레이 데이타(46), 페이지 버퍼회로(70)로부터의 페이지 버퍼데이타(47), 또는 유져 인터페이스회로(40)내에 포함된 한세트의 블록상태 레지스터로부터의 블록상태 레지스터(BSR) 데이타(48)중 하나이다. 따라서, 요청장치는 어레이로부터의 데이타뿐만 아니라 플레쉬 메모리 시스템(310)의 상태에 관한 상태 정보를 수신할 수 있다.
그러므로, CPU(302)는 유져제어버스(106)를 거쳐 판독사이클의 신호를 내는 동안 유져 어드레스버스(102)를 거쳐 어드레스를 전송함으로써 어레이(20)를 판독한다. 유져 인터페이스회로(40)는 판독사이클을 검출하고, 판독/기록통로(30)의 X와 Y디코드회로를 통해 입력어드레스 멀티플랙서(35)가 유져 어드레스버스(102)로부터 어드레스를 전송하게 한다. 유져 인터페이스회로(40)는 또한 출력데이타 멀티플렉서(45)가 유져데이타버스(104)를 거쳐 판독/기록통로(30)로부터 어드레스 지정된 판독데이타를 전송하게 한다. CPU(302)는 프로그램명령과 데이타를 유져 인터페이스회로(40)에 전송하기 위해서 유져 버스(306)를 거쳐 기록사이클을 발생시키는 어레이(20)에 데이타를 기록한다. 유져 인터페이스회로(40)는 프로그램명령을 검증하며 프로그램명령, 어드레스 및 데이타 변수를 어레이제어기(50)에 큐잉한다. 어레이제어기(50)는 특정 어드레스에서 특정 데이타를 어레이(20)내로 프로그래밍함으로써 프로그램 동작을 수행한다.
CPU(302)는 프로그램데이타가 페이지버퍼회로(70)로 전송되게하기 위해 유져버스(306)를 거쳐 기록사이클을 발생시킴으로써 선택적으로 데이타를 어레이(20)에 기록한다. CPU(302)는 페이지버퍼명령을 갖는 프로그램을 유져 인터페이스회로(40)에 전송한다.
유져 인터페이스회로(40)는 페이지버퍼명령을 갖는 프로그램을 검증하고 페이지버퍼명령을 갖는 프로그램을 어레이제어기(50)로 큐잉한다. 어레이제어기(50)는 페이지버퍼회로(70)로부터 프로그램데이타를 판독하고 프로그램데이타를 어레이(20)내로 프로그래밍함으로써 페이지버퍼명령을 갖는 프로그램을 실행한다.
페이지버퍼회로(70)는 두분리된 스태틱랜덤 액세스메모리(SRAM)면으로 구성된다. 두 SRAM 면은 면 O과 면 1로 구성된다. 유져 인터페이스회로(40)는 면 O과 면 1의 페이지버퍼자원을 어레이제어기(50)에 의해서 처리된 유져명령에 할당한다. 유져 인터페이스회로(40)는 또한 페이지버퍼자원의 면 0과 면 1을 유져액세스에 할당한다. 페이지버퍼자원의 면 0과 1은 제한된 자원으로서 또한 언급된다.
인터페이스회로(40)는 32 블록상태 레지스터(BSR)를 포함한다. 각각의 BSR은 플레쉬셀어레이(20)의 한블록에 대응한다. 블레쉬어레이제어기(50)는 플레쉬 셀어레이(20)의 각 블록의 상태를 나타내도록 블록상태 레지스터의 상태비트를 유지한다. CPU(302)는 유져버스(306)를 거쳐 BSR의 내용을 판독한다.
유져 인터페이스회로(40)는 유져 또는 명령을 내는 마이크로 프로세서와 선택된 명령을 실행하는 어레이제어기(50)사이의 아비터로서 기능한다. 예컨데, 유져 인터페이스회로(40)는 어레이제어기(50)의 현상태가 주어질때 유져요청 동작이 유효한지를 결정한다. 유져 인터페이스(40)는 명령 및 어드레스 정보를 버스(306)로부터 입력으로서 수신하고 어레이제어기(50)가 실행해야할 동작을 결정한다. 더욱이, 유져 인터페이스회로(40)는 어드레스와 데이타의 큐잉, 상태 레지스터에 대한 유져 액세스 및 출력멀티플렉서(45)를 제어한다. 유져 인터페이스회로(40)의 블록도가 제3도에 설명되어 있다.
제3도를 참조하면, 명령상태기계(200)는 CPU(302)가 유져버스(306)를 통해 제공하는 명령요청에 근거해서 수행될 동작을 결정한다. 명령의 타입은 어레이동작뿐만 아니라 상태 레지스터, 테스트모드 및 페이지버퍼동작을 포함한다. 명령상태기계는, 회로에서 인코드된 알고리즘을 통해 정당한 명령시컨스, 불량명령 시컨스로부터 사용자를 폐쇄시키는 방법, 및 어레이제어기(50)를 개시시키며 인터럽트하는 방법을 알고 있다. 만약 어레이제어기(50)에서 동작이 수행되고자 한다면 명령은 어레이제어기(50)로 보내진다. 만약 판독동작이 수행되고자 한다면, 명령상태기계(200)는 어드레스를 판독/기록회로(30)에 보낸다. 명령상태기계(200)는 출력멀티플렉서(45)(제2도 참조)를 통해 출력에서 이용가능한 데이타를 제어하고 입력멀티플렉서(35)(제2도 참조)에 대한 입력을 제어한다. 더욱이, 명령상태기계(200)는 상태 레지스터(260)에 대한 액세스를 제어한다. 따라서, 명령상태기계(200)는 유져의 명명입력을 실행하기 위하여 수행되어야할 단계를 나머지 플레쉬 메모리 시스템(310)에 명령하고 유져버스(306)를 거쳐 수신된 유져의 명령입력을 얻을 수 있는 회로이다.
만약 요청된 명령이 어레이제어기에 의해서 실행되지 않은 것이라면, 예컨데 판독어레이 또는 판독상태 레지스터 명령이라면, 유져 인터페이스회로(40)는 요청된 명령이 실행되도록 적당한 제어신호를 낸다. 만약 수신된 명령요청이 어레이제어기(50)에 의해서 실행되는 것이라면, 유져 인터페이스회로(40)에 의해서 수신된 명령요청을 나타내는 명령코드는 유져 인터페이스회로(40)에 위치한 어레이제어기(50)점프테이블(도시안됨)로 인덱스를 발생시키는데 사용된다. 수신된 명령에 따라서, 예컨데 제4도를 참조하면, 점프테이블에 저장되고 명령코드로 매핑된 오프셋 벡터는 어레이제어기(50)가 명령을 실행하고자 수행하는 알고리즘에 대한 코드를 어드래싱하기 위해 오프셋 벡터를 사용하는 어레이제어기에 보내진다. 바람직하게, 오프셋 벡터는 실행을 시작하기 위한 실제 프로그램 메모리 어드레스를 결정하고자 프로그램 메모리의 제1의 32 위치중 하나를 참조한다. 본 실시예에서, 4개의 다른 클래스내의 128명령까지 유져 인터페이스회로(40)에 의해서 수신되고 처리될 수 있다.
본 실시예에서, 점프테이블은 다수의 명령을 단일 오프셋 벡터로 매핑할 수 있게 구성된다. 오프셋 벡터의 이중성은, 활용되는 하드웨어 구성에 의해서 구별되는 다수의 클래스의 명령이 같은 어레이제어기(50)알고리즘으로 매핑되게 한다.
따라서, 다수의 다수웨어 구성은 유져 인터페이스회로(40) 또는 어레이제어기(50)의 변경 없이도 지지될 수 있다. 이런 관점에서, 명령코드 변환 메카니즘은 어레이제어기(50)와 통신하는 적당한 오프셋 벡터와 적당한 하드웨어 신호를 발생시킨다.
바람직하게, 명령코드는 하드웨어 제어신호의 발생을 위해 명령상태기계(200)에 의해서 수신된다. 명령은 동작큐(230)로의 출력에 앞서 명령코드를 오프셋 벡터로 변환을 위해 점프테이블을 포함하는 임시 명령 /어드레스/ 데이타큐(210)로 보내진다. 발생되는 하드웨어 신호의 타입은 시스템 구성에 달려있다. 예컨데, 본 실시예에서, 하드웨어 신호는 페이지 버퍼가 사용되는지, 어떤 페이지 버퍼가 사용되는지, 및 수행될 동작이 8비트 동작인지 아니면 16비트 동작인지를 식별하기 위해 발생된다.
제4도를 참고하면, 많은 명령코드 및 어레이제어기 오프셋 벡터는 어레이제어기(50)에 의해서 수행될 주문 알고리즘에 할당된다. 플레쉬 메모리 시스템(310) 를 주문화 하기위해서 어레이제어기 프로그램 메모리는 주문 알고리즘을 수행하기 위해 코드로 간단히 로드된다. 따라서, 플레쉬 메모리 시스템(310) 은 특정한 유져의 응용에 맞는 명령을 수행하고자 주문화될 수 있다.
더욱이, 명령세트는 플렉시블하며, 유져 인터페이스회로(40)를 변경함이없이 새명령이 더해지거나 또는 구명령 기능이 변하게 한다.
명령기능은 다른 프로그램 메모리 위치를 참고하여 프로그램 메모리의 제1의 32 위치에 저장된 프로그램 메모리 어드레스를 수정함으로써 쉽게 변형될 수 있다. 또한, 어레이제어기(50)의 기능은 제조시 시스템에 제공되는 알고리즘에 제한되지 않는다. 시스템은 제조후에 어레이제어기 알고리즘의 갱신, 변경 및 부가가 허용되는 플레쉬 프로그램 메모리와 같은 갱신가능한 프로그램 메모리에 제공된다. 바람직하게 프로그램 메모리는 프로그램 메모리를 갱신하기 위해서 CPU(유져)에 의해서 나오는 내정된 명령을 통해 갱신된다. 명령을 수신할 때 유져 인터페이스는, 어레이제어기가 프로그램 메모리를 갱신하도록 하는 페이지 버퍼에 임시저장된 알고리즘을 어레이제어기가 실행하게 한다. 이런 식으로 알고리즘의 시작 어드레스와 알고리즘자체는 변경, 삭제 또는 부가될 수 있다. 예컨데, 프로그램 메모리는 유져로부터 수신된 새로운 알고리즘으로 갱신될 수 있다.
만약 어레이제어기(50)에 의해서 명령이 실행되고자 한다면, 명령 어드레스 및 데이타정보는 유져 인터페이스회로(40)에 의해서 처리하기 위한 임시큐(210)에 제공된다. 특히, 명령 데이타 및 어드레스 정보가 임시큐(210)에 수신되고, 명령이 오프셋 벡터로 변환되며, 정보는 동작큐(220)로 보내진다. 어레이제어기 명령이 명령상태기계(200)에 제공될 때, 명령상태기계(200)는 명령과 어드레스/데이타정보를 동작큐(230)에 보내는 임시큐(210)에 이들을 보낸다. 임시큐(210)는 동작큐(230) 가 활성큐의 하나로 명령을 수용할 준비가 될때까지 명령을 유지한다. 임시큐로의 정보 전송은 유져 제어버스(106)를 통해 수신된 기록 인에이블클럭으로 동기화 된다. 동작큐(230)는 임시큐(210)로부터 명령을 취하고 어레이제어기 클럭에 의해서 구동되는 활성큐로 임시큐를 대치한다. 명령상태기계(200)가 정보를 임시큐(210) 로 전송할 때, 명령상태기계(200)는 명령이 활성큐에 더해지기를 기다리는 동작큐(230)를 판별하는 플래그를 또한 세트한다. 동작큐(230)가 임시큐(210)로부터 큐중 하나로 명령을 이동시키면, 플래그는 리셋된다. 이 플래그는 큐 풀(full)비트로서 상태레지스터(260)에 의해서 또한 사용된다. 이 큐 풀비트는, 비트가 클리어될 때까지 어레이제어기(50)에 의해서 실행이 요구되는 메모리시스템(310)으로 유져가 명령을 내지않는지를 판별하는데 사용된다.
바람직하게, 동작큐(220)는 두개의 동작까지 큐잉하는 능력을 가진다. 그러나, 2개이상의 동작이 큐잉될 수 있다는 것은 쉽게 이해될 수 있다. 제1차큐는 실행되거나 또는 실행하는 동작을 나타낸다. 제2차큐는, 제1차큐에 위치한 동작의 실행이 완료될 때 수행될 다음 동작을 위한 명령을 포함한다.
제1차큐에 위치한 동작의 어레이제어기(50)에 의한 실행이 완료되면, 제1차동작은 어레이제어기(50)에 의해서 다음 동작이 실행되도록 동작큐로부터 제거된다. 실행될 명령이 임시큐(210)에 저장된다면, 오프셋 벡터와 데이타 및 어드레스는 연속실행을 위해 동작큐(230)에 전달된다. 이하에 상세히 설명될 것처럼, 어떤 경우에서나 제1차동작의 완료에 앞서 제2차큐에 위치한 동작을 수행하는 것이 바람직하다.
제1차큐에 위치한 동작의 완료전에 제2차큐에 위치한 동작을 수행하기 위해서 제1와 제2차 동작사이에 혁신적인 문맥스위치 프로세서가 수행된다. 어레이제어기(50)에 의해서 실행될 명령이 수신될 때, 유져 인터페이스회로(40)는, 어레이제어기(50)를 구동하기 위해서 클럭신호를 제공하는 어레이제어기(50)의 국부발진기를 개시시키기 위해서 어레이제어기(50)에 신호를 내준다. 어레이제어기(50)가 일단 동작을 하면, 오프셋 벡터는 프로그램 메모리를 인덱스하기 위해서 유져 인터페이스로부터 어레이제어기(50)까지 전송된다. 동작큐(230)에 저장된 어드레스와 데이타정보는 판독/기록회로(30)로 또는 제어레지스터로부터 직접 제공될 수 있고, 판독/기록회로(30)에서 어드레스와 데이타정보를 사용한 동작의 완료는 프로그램 메모리로부터 실행되는 알고리즘에 의해서 지시되는 것같이 어레이제어기(50)에 의해서 제어된다.
동작큐(220)는 바람직하게 임시큐(210)로부터 오프셋 벡터와 어드레스 및 데이타정보를 수신하고 어드레스제어기(50)에 의한 액세스용 연관된 어드레스와 데이타 및 벡터를 큐잉하는 상태기계이다.
바람직한 실시예에서는 유져 인터페이스회로(40)로 큐잉 및 파아프라인 되는 명령을 지지하기 위해서 3층의 명령이 큐잉된다. 예컨데, 수신된 명령이 어레이제어기(50) 동작을 요구하고 이것이 현재 실행되고 있는 것이 아닐때, 유져 인터페이스회로(40)는 동작용 데이타를 갖는 동작큐(또한 제1차큐라고도 함)의 상부를 로드하며 어레이제어기(50)의 동작을 초기화한다. 전형적으로, 어레이제어기(50)는 명령상태기계(200)와 가능하다면 임시큐(210)를 통해 유져버스(306)를 거쳐서 나오는 다른 명령에 이용가능한 큐의 하부를 갖는 큐의 상부에서 명령정보의 내용을 어레이제어기의 배열에서 가질 것이다. 이 구조는, 어레이제어기(50)가 제1명령을 실행하는 동안, 유져가 어레이제어기 동작 또는 어떤 다른 유효한 명령을 유져 인터페이스회로(40)에 내는 것을 가능하게 한다.
연속적인 명령을 수신할 때, 유져 인터페이스회로(40)는 어레이제어기(50)에게 새동작이 큐에 놓여졌는지를 알리며 현재 실행하는 어레이제어기 알고리즘이, 어레이제어기(50)가 큐잉된 동작을 다루기 위해 그동작을 인터럽트 해야할지 아니면 프로세서에서 먼저 동작을 완료할지를 결정할 것이라고 어레이제어기(50)에 알린다. 어레이제어기(50)에 의해서 현재 실행되는 알고리즘을 인터럽트 해야할지를 결정하는 기준은 실행하는 알고리즘의 논리에 바람직하게 포함된다. 예컨데, 블록소거 알고리즘은 연속적인 프로그램 명령이 소거알고리즘의 실행을 인터럽트할 수 있는 것을 가리키는 코드를 포함한다.
유져 인터페이스회로(40)의 구조는 명령이 동작큐(230)에 파이프라인 되게할 수 있다. 예컨데, 프로그램 바이트 또는 2 프로그램 바이트/워드명령은 파이프라인될 수 있고, 프로그램 바이트/워드와 소거단일 블록은 파이프라인될 수 있고(메모리블록의 다른 블록에 대하여), 한 블록의 소거와 페이지버퍼 명령으로부터 다른 블록의 프로그래밍은 파이프라인 될 수 있고, 페이지버퍼 명령으로부터 프로그램 어레이와 다른 블록의 소거, 또한 다른 특정 알고리즘도 파이프라인될 수 있다.
다수의 상태 레지스터(260)는 유져 인터페이스회로(40)에 포함된다. 몇몇 상태레지스터는 어레이제어기(50)에 의해서 액세스 가능하게 판독 및 기록되고 유져 인터페이스회로(40)에 의해서 액세스 가능하게 기록되나, 반면에 다른 레지스터는 유져 인터페이스회로(40)에 의해서 액세스 가능하게 판독되고 기록된다. 각각의 상태레지스터는 어레이제어기 동작의 실행상태에 관한 정보가 어레이제어기에 의해서 모니터링 되거나 또는 통신되며 유져인터페이스와 유져에 의해서 모니터링 되도록 유져 인터페이스에 의해서 액세스 가능하게 판독된다. 유져는 어레이제어기의 상태를 결정하기 위해서 어느때에서나 상태 레지스터를 액세스 할 수 있게 명령을 낼 수 있다.
예컨데, 명령을 메모리시스템에 내기전에 어레이제어기의 상태가 내어진 명령이 유효한 명령으로서 수용될 수 있도록 하는 것이 바람직하다. 어레이제어기의 상태는 상태레지스터(260)를 판독함으로써 결정될 수 있다.
바람직하게, 3 광역상태 레지스터와 한세트의 32 블록상태 레지스터(BSRs)가 제공된다. 제5도는 예시적인 상태 레지스터비트 정의를 설명하는 블록도이다. 광역상태 레지스터는 일반적으로 장치의 상태를 제공하며 어느 블록의 특정 정보를 전송하지 않는다. 예컨데, 비록 잘못된 동작이 광역상태 레지스터에서 검출된다 할지라도, 잘못된 동작이 일어나는 실제블록은 단지 RSRs을 판독함으로써 검출될 수 있다. 제1광역상태 레지스터는 바람직하게 초기 메모리제품과 양립할 수 있게 역행해서 구성될 수 있다. 제2광역상태 레지스터는 어레이제어기의 상태와 동작큐의 상태 및 페이지 버퍼의 상태에 관한 정보를 제공한다. 제3광역상태 레지스터는 어레이제어기에 의해서 조작될 수 있는 8 비전용 비트를 포함한다. 이 비트의 정의는 어레이제어기 상에서 구현되는 알고리즘에 의존한다. 따라서, 유져는 특정 알고리즘을 위해 어레이제어기에 의한 실행의 상태를 결정하기 위해서 명령을 내고 제3광역상태 레지스터를 모니터링할 수 있다. 상태 레지스터를 통해 어레이제어기의 상태를 모니터링하는 능력은 연속적인 명령을 메모리 시스템에 내기전에 유져가 유효한 명령을 결정할 수 있게 한다. 블록상태 레지스터(BSRs)는 어레이의 블록상에서 수행될 동작의 상태를 유지하기 위해 사용된다. 예시적인 블록도가 제6a도에 도시되어 있다. 제6a도에 도시된 바와같이 BSRs은 32×8 단일 포트기록 이중포트 판독 SRAM어레이로서 구성되는 것이 바람직하다. SRAM의 기록포드는 어레이제어기의 기록디코더와 결합된다. 판독디코더는 어레이제어기와 유져 인터페이스에 제공된다. 따라서, 어레이제어기는 SRAM 어레이에 위치하는 BSRs로부터 기록 및 판독될 수 있으나, 그러나 유져 인터페이스는 어레이로부터만 판독될 수 있다. 유져는, I/0상태레지스터 버스상의 BSR 내용을 유져 인터페이스에 제공하며 하나의 BSR을 선택하는 신호(예컨데, IDA[12 : 0], 어드레스를 가진 IDA[20 : 16], 및 0EBPAD)를 제공하는 유져 인터페이스에 이런 요청을 냄으로써 BSR을 판독할 수 있다. 상태정보는 그후 유져에 제공된다. 제6b도는 BSR이 SRAM 어레이에서 구성될 때 BSR의 비트에 대한 예시적인 구성을 도시하며, 비트의 정의는 시스템 동작에서 부가적인 유연성을 제공하며 프로그램 가능하다.
각각의 BSR은 플레쉬어레이의 대응블록의 기록보호에 메카니즘을 제공하는 잠금비트를 포함한다. 부주의한 소거 또는 프로그램 동작으로부터 블록을 보호하기 위해서, 특정블록과 연관된 BSR내의 비휘발성 잠금비트는 세트된다. 잠금비트가 특정블록에 대해 일단세트되면, 그 블록은 소거 또는 기록동작으로부터 보호된다. 잠금비트는 각 어레이블록에 위치하며 연관된 비트가 소거될 때마다 소거된다. 잠금비트의 상태는 BSR의 대응 비트를 판독함으로써 유져에 의해서 판독된다. 위에서 지적한 바와같이, 어레이제어기는 플레쉬장치의 내부모드를 제어하는데 사용되는 프로그램 가능한 마이크로제어기이다. 더욱 특히, 어레이제어기는 플레쉬 어레이의 셀을 프로그램하고 소거하기 위한 알고리즘을 포함하는 알고리즘을 자동적으로 또한 정확하게 제어하기 위한 수단을 제공한다. 어레이제어기는 어레이제어기 동작의 초기화를 제어하는 유져 인터페이스를 통해 기준 당 2클럭 사이클상에서 동작한다. 바람직하게, 동작 N의 실행을 위한 준비에 대한 클럭 사이클은 동작 N-1의 실행클럭사이클 동안 일어난다. 이런 식으로, 어레이 동작은 한 사이클에서 실행되고 제1명령실행전에 유일한 지연이 일어난다. 클럭사이클내에서, 명령실행은 3위상으로 나누어진다. 이 분할은 1클럭사이클 동안 일어나도록 I/O 버스사이클에 충분한 클럭에지를 제공한다.
제7도를 참조하면, 어레이제어기는 플레쉬프로그램 메모리(320)에 저장된 알고리즘을 실행한다. 이런 알고리즘은 명령워드, 특히 데이타 전송명령, 계산명령, 분기명령 및 제어명령으로 구성된다. 데이타전송 명령은 레지스터 파일(360)로/로부터 8비트 또는 16비트 데이타를 이동시키는데 관련된다. 분기 명령은 프로그래밍이 서브루틴콜과 조건/무조건 점프의 사용을 통해 알고리즘의 흐름을 변경하게 한다. 계산명령은 산술논리유닛(370)과 관련된 동작을 초래한다. 제어명령은 인터럽트 조절루틴으로 포인터를 세팅하고 플래그를 세팅하거나 또는 클리어닝하는 수단을 제공한다. 유져 인터페이스와 어레이제어기 사이에 위치한 제어액세스회로(380)는 어레이제어기가 알고리즘을 실행하기 위한 명령을 수신하며 상태정보를 유져 인터페이스 및 궁극적으로는 유져와 통신하는 수단을 제공한다. 예컨데, 바람직한 실시예에서, 유져 인터페이스는 3가지신호를 제공한다. 즉, CDCRUNF는 실행되도록 대기하는 알고리즘이 있음을 어레이제어기에 알리며, CDCMDRDY는 현재의 알고리즘뿐만아니라 실행을 대기하는 적어도 하나이상의 알고리즘이 있는 것을 가리키며, CDSUSREQ는 실행중인 어레이제어기 실행을 일시정지시키는 요청이 있음을 어레이제어기 알린다. 차례로, 어레이제어기는 어레이제어기가 장치를 제어하고 동작중인지 여부를 가르키는 신호 FDRDY, 어레이제어기가 제1차큐에 위치한 명령을 실행하는지 아니면, 제2차큐에 위치한 명령을 인터럽트하는지를 가리키는 FDNXTCMD, 현재 서비스되고 있는 동작이 완료되었음을 나타내는 FDOPDONE, 및 동작이 계속해서 정지되고 유져가 판독동작과 같은 동작을 수행하기 위해 메모리장치를 제어할 수 있는지 가르키는 FDIDLE를 유져 인터페이스와 통신한다. 위에서 지적한 바와같이, 유져 인터페이스는 어레이제어기가 플레쉬 시스템에 위치한 발진기에 의해서 구동되는 동안 마이크로 프로세서버스 신호에 의해서 구동된다. 특히, 발진기 위상 발생기블록(305)은 어레이제어기회로에 대한 비연속적인 클럭신호로서 사용되는 3 비-중복 클록펄스를 발생시킨다. 발진기(305)는 유져 인터페이스로부터의 명령이 실행될 때 유져 인터페이스에 의해서 초기화 된다.
프로그램 메모리(320)는 유져 인터페이스로부터 수신된 점프벡터와 프로그램 메모리의 제1의 32 어드레스에 저장된 프로그램 어드레스에 따라 액세스되고 요청된 기능을 수행하기 위해 어레이제어기에 의해서 실행되는 알고리즘을 저장한다. 프로그램 가능 어레이제어기가 수많이 제공됨으로써 이익이 실현된다. 알고리즘은 플레쉬 시스템이 제공되는 응용의 요건에 맞쳐 구성될 수 있다. 예컨데, 기준 프로그램과 소거프로세서뿐만아니라 프로그램과 소거프로세서 변화를 수행하는 주문 프로세서에 대한 알고리즘은 프로그램 메모리에 포함되고 대응 명령을 냄으로써 액세스될 수 있다. 더욱이, 유져 인터페이스로 내어진 명령을 통해 유져는 프로그램 메모리에 저장된 알고리즘의 변경에 의해서 어레이제어기의 기능성을 변경시킬 수 있다. 이것은 알고리즘을 변화시키기 위해서는 하드웨어의 변경이 요구되는 종래의 장치와는 상당히 다르다. 바람직하게, 프로그램 메모리는 유져 인터페이스회로에 의해서 제어되는 것같이 어레이제어기에 의해서 변경된다. 프로그램 메모리가 변경될 때, 페이지 버퍼는 프로그래밍 알고리즘으로 로드되고 어레이제어기는 프로그램 메모리를 프로그램하기 위한 알고리즘에 대하여 페이지버퍼를 참조한다.
본 발명의 플레쉬 메모리 시스템에 의해서 제공되는 유연성은 상당히 광범위하다. 예컨데, 인덱스가 플레쉬어레이 저장된 특정데이타를 지적하기 위해 저장되는 것이 응용에서 요구된다면, 종래의 시스템은 플레쉬어레이내의 데이타를 액세스하는 장소를 결정하기 위해서 포인터를 액세스하고 저장하기 위해 SRAM과 같은 외부메모리를 활용했다. 그러나, 본 발명의 플레쉬시스템은 어레이제어기가, 포인터를 사용하고 외부 SRAM의 필요를 제거하고 또한 각각의 어레이가 동작을 병렬로 수행할 수 있는 것같이 동작의 처리량 증가시키면서 검색을 수행하고 포인터를 저장하게 한다. 따라서, 어레이에 대한 플레쉬의 명령처리는 달성된다. 본 발명의 플레쉬 메모리 시스템에 의해서 존재할 수 있는 다른 응용은 카메라의 필름을 대치하기 위해 플레쉬 메모리를 사용하는 것이다. 이런 응용이 효율적으로 되기 위해서는 영상 데이타의 고속기록이 요구된다. 전형적으로, 만약 에러가 일어난다면, 기록동작의 다른 시도가 수행된다. 그러나, 이 응용에서 속도는 중요하며 블록을 불량한 것으로 표시하기 위해서 보다 빠르다. 본 발명의 플레쉬 메모리 시스템은 기록기능을 수행하기 위해서 간단히 프로그램코드를 발생시키고 플레쉬 어레이코드 저장에 코드를 저장함으로써 이 응용을 수용할 수 있다. 따라서, 주문제작이 가능하며 아주 간단히 구현된다.
알고리즘을 실행하기 위해서 어레이제어기는 현명령을 저장하는 명령레지스터(330), 프로그램 카운터(340), 콜스택(345), 산술논리유닛(ALU)(370), 및 실행이 활용되는 동안 ALU(370)에 의해서 스크래치 메모리로서 사용되는 레지스터파일(360)으로 이루어진 범용의 처리구조로서 실현된다.
프로그램카운터(340)는 어레이제어기에 주어지는 명령의 사이클링을 적절히 유지하기 위해 모든 포인터저장과 논리를 포함한다. 더욱이, 이런 구조는 혁신적인 문맥스위칭과 인터럽트 구조를 허용한다. 프로그램카운터의 기본동작은 실행될 다음 명령을 디코딩하는 것이며 적당한 명령을 다음(FDPC[11 : 0]에 나타내는 것이다. 프로그램카운터의 출력으로서 제공된 어드레스는 프로그램 메모리로부터 명령레지스터까지 전송을 위한 다음 명령과 ALU에 의한 실행을 검색하기 위해 사용된다.
제8도를 참조하면, 프로그램 카운터는 두개의 스택, 콜(805), 콜인터럽트(810), 5개의 레지스터 : 인터럽트 시작(815), 인터럽트복귀(820), 제로필(825), 오프셋 점프(830), 간접 점프(835), 및 하나의 레지스터 가산기(840)로 이루어져 있다. 제어회로(845)는, 다양한 소스(835, 815, 820, 825, 830, 840, 805)로부터 출력된 어드레스의 소스를 선택하기 위한 멀티플렉서(835) 제어, 다음 명령점프위치 알고리즘사이의 중재제어, 오프셋 시작 포인트제어, 하드웨어 인터럽트제어, 및 소프트웨어 복귀제어를 포함하는 다수의 제어기능을 수행한다. 콜스택(805)는 12 비트의 푸쉬-업, 팝-다운 풀스택으로 구성된다.
이런 구조는 어레이제어기가 적절한때 어레이제어기의 문맥을 세이브시키기 위해 인터럽트 동안 문맥스위칭을 수행하도록하여 그결과 인터럽트 동작이 완료된 후, 문맥스위치는 어레이제어기의 원상태를 회복시키고자 수행될 수 있으며 원동작은 계속될 수 있다. 각각의 스택(805 및 810)은 스택과 같은 행위를 제공하기 위한 논리(도시안됨)에 의해서 둘러싸인 래치로 구성된다. 바람직하게 푸쉬와 팝논리는 다음 어드레스가 푸쉬 또는 팝동작이 일어난후를 가리키게하게 하기 위해서 디코딩되는 상태기계이다.
제7도를 참조하면, 프로그램메모리(320)는 프로그램 카운터(340)에 의해서 결정된 어드레스를 수신하며 명령출력을 레치하는 명령레지스터(350)에 명령을 출력한다. 동작시 한층 더한 유연성을 갖기 위해, 명령레지스터(330)는 또는 페이지버퍼(310)를 통해 수신된 명령을 레치하는 능력을 갖는다. 명령은 그후 ALU(370)에 의해서 실행된다. ALU(370)는 모든 산술 및 논리 기능과 또한 어레이제어기에 대한 시프트동작을 수행한다. 이것은 바이트와 워드의 두동작을 다룰 수 있다. 실행할 명령은 명령레지스터(350)를 통해 프로그램메모리(320)로부터 얻는다.
ALU에 대한 입력데이타는 페이지버퍼와 I/O 인터페이스를 포함하는 다중소스로부터 올 수 있다. 레지스터파일(360)은 제3포트를 통해 레지스터파일에 기록하는 동안 어레이제어기가 두개의 포트로부터 판독되게하기 위해서 3개의 포트 SRAM으로서 구성된다. 각각의 두판독포트와 단일 기록포트는 서로독립하여 동작하며 같은 메모리 위치에서 실제 동작할 수 있다. 판독동작이 클럭의 제1위상동안에 일어나고 기록동작이 클럭의 제3위상동안에 일어나서 제2위상이 계산위상으로 사용될 수 있도록 타이밍은 결정된다. 레지스터파일은 따라서 한클럭 사이클에서 판독되고 갱신될 수 있다. 레지스터파일은 어레이제어기의 상태를 포함하고, 특히 어레이제어기 알고리즘의 실행동안에 활용된 변수를 포함한다.
레지스터파일(360)은 두 섹션으로 분할된다. 주섹션과 동일한 제1섹션은 어레이제어기에 의해서 실행되는 알고리즘에 대한 변수를 포함한다. 제2섹션을 인터럽팅 알고리즘에 대한 변수를 포함한다.
따라서 인터럽트를 서비스하는 동안, 레지스터파일은 주섹션으로부터 제2섹션까지의 어레이제어기의 상태의 하드웨어 문맥스위치를 수행할 수 있다. 모든 동작은 이제 주섹션과 같은 것으로 나타나는 레지스터파일의 인터럽트 섹센에서 수행된다.
레지스터파일의 주 섹션에서 유지되는 모든 변수는 인터럽트 서비스동안 엑세스 가능하지 않고 유지될 것이다. 인터럽트 서비스후, 제어는 주 섹션에 다시 주어진다.
본 구조는 4레벨 디프(deep) 프로그램 카운터스택을 지지한다. 이것은 메모리 장치에 기록된 알고리즘이 동작시 더욱 모듈화하게 한다. 예컨데, 복귀명령은 프로그램 카운러 스택과 함께 이중 듀티를 서비스한다. 프로그램 카운터 스택에 데이타가 있을때 복귀명령은 콜서브루틴으로 부터의 복귀를 서비스 한다.
만약 PC스택이 비어져 있다면, 명령은 알고리즘 종료 명령으로서 서비스 한다. 이것은 유져 알고리즘이 복귀명령으로 종료되게하여 정규동작에서 어레이제어기는 실행을 멈추게되나, 그러나 사이클링과 같은 테스트동작에서 유져 알고리즘은 이들이 마치 서브루틴인 것 같이 콜된다.
본 발명의 플레쉬 메모리 시스템의 구조는 데이타붕괴 또는 고전압 프로그램/소거회로없이 어레이제어기 알고리즘을 인터럽트 시킬 수 있는 혁신적인 인터럽트 메카니즘을 제공한다. 종래의 장치와는 같지 않게, 인터럽트 메카니즘은 어레이를 손상시킬 수 있는 상태로부터 인터럽트를 얻음으로써 인터럽트를 서비스하기 전에 메모리장치를 보호하기 위한 방법을 제공한다. 예컨데, 만약 어레이제어기가 현재 소거프로세서를 제어할 수 있다면, 어레이를 소거하는데 요구되는 전압은 메모리의 손상을 피하기 위해서 떨어진다. 인터럽트의 서비스후에 메모리장치와 어레이제어기는 소거펄스와 같이 원래 실행프로세서가 계속될 수 있는 상태에 다시 놓여진다.
특히, 혁신적인 인터럽트 메카니즘은 현재 실행하는 알고리즘과 연관된 제1실행 인터럽트 시작코드에 의해서 현재 실행하는 알고리즘의 중지와 안전한 인터럽트를 허용한다. 이런 인터럽트 시작코드는 현재 실행하는 알고리즘을 안전하게 중지시킨다. 예컨데, 인터럽트 시작코드는 사용되고 있는 고전압 회로의 전력을 떨어뜨리며, 알고리즘을 인터럽트함으로써 판독/기록회로를 사용중인 상태에 두고 필요한 레지스터의 문맥스위치를 수행하면서, 중지시키기 위해 알고리즘에서 안전점을 결정한다. 인터럽트시작 루틴이 실행을 완료할 때, 인터럽트 루틴은 실행을 시작하고, 인터럽트 루틴의 실행끝에서 인터럽트 복귀루틴은 인터럽트된 코드에서 안전한 복제점을 표시하기 위해서 프로그램 카운터를 조절하고자 실행되고 인터럽트 루틴이 실행을 계속할 수 있도록 레지스터의 문맥스위치를 수행한다.
본 발명의 플레쉬회로에 제공된 혁신적인 인터럽트처리를 사용하면 소거알고리즘과 다른 알고리즘이 중지가 특징이 있는 동안 프로그램의 지지는 가능하다. 예컨데, 인터럽트 구조는 동시에 실행하는 알고리즘 동안 인터럽트가 일어나게 한다. 더욱이, 인터럽트 구조, 동작큐 및 상태 레지스터는 다중처리와 같은 능력을 허용할 수 있는 혁신적인 가상상태 기계로서 작용한다.
바람직하게, 인터럽트 조작은 유져 인터페이스의 상태기계에서 나오는 3개의 명령, 즉 인에이블 인터럽트(ENI), 디스에이블 인터럽트(DSI) 및 세트 인터럽트 시작레지스터(SISR)에 의해서 제어된다. ENI는 인수로서 알고리즘에 대한 복귀점을 가지며 인터럽트 복귀레지스터(IRR)를 이 값으로 세트하며 인터럽트 인에이블 플래그(IF)를 세트한다. DSI는 어떤 인수도 갖지 않고 단순히 IF를 리셋한다. SISR는 인터럽트 시작 루틴 어드레스의 어드레스를 인수로서 가지며 인터럽트 시작 레지스터(ISR)를 세트한다. PC스택의 완전성을 보장하기 위해서, IRR 어드레스는 인터럽트된 절차에 상주해야만 한다. 따라서, 예컨데 신호 CDCMDRDY가 명령대기 실행을 지적하고, 현재실행하는 알고리즘이 인터럽트 가능하다면, 즉 IF 비트가 세트되면, ISR에 저장된 어드레스로의 점프는 CDCMDRDY가 세트된후 제1명령사이클상에서 일어날 것이다. 그 즉시, 인터럽트 요청신호는 표명되고 IF 는 클리어된다.
리턴(RET) 명령에 의해서 표시되는 인터럽트 시작루틴의 완료시, 인터럽트 긍정응답 신호와 시작신호는 표명된다. 인터럽트 알고리즘은 그후 실행된다. 빈 PC 스택상에서 RET신호에 의해서 표시되는 인터럽트 알고리즘의 완료시, 인터럽트 비트는 클리어되고 IRR에 저장된 어드레스로의 점프가 일어난다. 인터럽트된 알고리즘은 그후 계속해서 실행된다. 복귀 어드레스와 인터럽트 시작루틴을 포함하는 인터럽트 복귀루틴은 미리 결정된다.
바람직하게, 어레이제어기 알고리즘이 생성되고 프로그램 메모리로 로드될 때, 인터럽트 시작루틴과 복귀루틴은 생성되고 프로그램 메모리로 로드되며, 인터럽트 시작루틴과 복귀루틴의 어드레스는 결정된다. 알고리즘이 실행될 때, IRR과 ISR은 프로그램 카운터로 로드되어 그 결과 인터럽트가 일어날 때 정보는 쉽게 얻을 수 있으며, 인터럽트 시작과 복귀루틴의 시작 어드레스는 명령레지스터에 로드되며 ALU에 의해서 실행되기 위해서 프로그램 메모리의 적당한 어드레스를 액세스하기 위해 적절히 사용된다.
따라서, 만약 인터럽트 가능한 알고리즘이 실행되고 있고 인터럽트가 일어난다면, 제어는 이런 루틴에 대한 인터럽트 시작루틴으로 즉시 통과한다. 인터럽트 시작루틴은 인터럽트하고 있는 알고리즘이 실행되게 하고 인터럽트와 알고리즘이 연속해서 실행되어 완료되게 하기 위해서 한상태의 어레이제어기에 놓인다. 따라서 인터럽트 시작루틴은 인터럽트가 이점에서 수행될 수 있는지 여부를 결정하고, 만약 수행될 수 있다면 플레쉬 고전압을 두고 알려진 안전한 상태에서 회로를 판독한다. 어레이제어기는 그후 다른 카피를 액세스하기 위해서 콜스택과 레지스터파일의 문맥스위치를 수행하여 문맥스위치를 수행한다. 인터럽트하고 있는 알고리즘의 완료시 제어는 인터럽트 복귀루틴으로 통과한다. 이런 전이가 일어날 때 콜스택과 레지스터파일은 인터럽트된 알고리즘에 의해서 사용되는 것으로 다시 스위칭된다. 인터럽트 복귀루틴은 인터럽트된 알고리즘을 계속해서 실행하고 실행을 시작하기 위한 안전한 점인 인터럽트된 알고리즘의 어드레스를 제공하기 위해서 장치의 고전압과 판독회로를 적당한 상태에 두는 것을 책임진다. 이점에서, 인터럽트된 알고리즘의 실행이 계속된다. 이 프로세서의 흐름은 제9a도에 도시적으로 묘사되어 있다.
인터럽트된 알고리즘의 실행이 시작되는 점은 알고리즘이 인터럽트 되는 위치와 같은 것이 아님에 유의해야 한다. 예컨데, 만약 인터럽트된 알고리즘이 소거어레이 동작이라면 알고리즘은 인터럽트에 앞서 수행되는 최종소거동작이 완료되었음을 검증하기 위해서 검증명령에서 인터럽트된 후 시작된다. 인터럽트된 알고리즘의 복귀점을 결정하기 위한 다른 기준은 알고리즘의 응용명령으로서 사용된다.
더욱이, 인터럽트 알고리즘의 안전한 복귀점을 식별하는 어드레스는 알고리즘이 다른 "위상" 또는 알고리즘의 섹션을 실행할때의 알고리즘의 실행동안에 변화될 수 있다. 따라서, 인터럽트 복귀점은 다른 복귀점을 표시하기 위해서 코드의 실행동안에 갱신된다. 이것은 인터럽트 복귀루틴을 수정함으로써 또는 알고리즘의 실행위치에 따르는 다른 인터럽트 복귀루틴을 표시하기 위해서 IRR을 갱신함으로써 달성될 수 있다. 예컨데, 소거알고리즘에서, 사전조건 위상에 대한 복귀점은 알고리즘의 사후조건 위상에 대한 복귀점과 차례로 다른 알고리즘의 소거부에 대한 복귀점과는 다르다.
바람직하게, 두개의 인터럽트 플래그는 어레이제어기, 인터럽트 플래그 및 광역인터럽트 플래그에 제공된다. 인터럽트가 일어나기 위해서는 동작이 진행중이어야하며 양플래그가 인에이블되어야만 한다. 초기에 디스에이블 상태에 있는 인터럽트 플래그는 인터럽트를 국부적으로 인에이블 및 디스에이블시키기 위해서 알고리즘내에서 사용된다. 따라서, 알고리즘은 각각 인터럽트 가능하고 인터럽트 가능하지 않은 알고리즘의 실행점동안에 이 플래그를 어레이제어기가 인에이블과 디스에이블시킬 수 있도록 하는 명령을 갖는다. 인터럽트 플래그는 콜 또는 복귀명령이 실행될 때 바람직하게 자동적으로 디스에이블된다. 이것은 IRR이 특정 서브루틴에 대한 수정복귀를 표시하고 있음을 보장하기 위해서 행해진다.
초기에 인에이블된 광역인터럽트 플래그는 알고리즘이 진행중인 인터럽트를 조작할 수 없을때 인터럽트를 디스에이블 시키는데 사용된다. 제9b도에 도시된 바와같이, 인터럽트된 알고리즘에 대한 인터럽트 시작루틴이 인터럽트가 이때 처리될 수 없음을 결정한다면, 광역인터럽트 플래그는 디스에이블되고 인터럽트 복귀루틴으로의 스킵 명령은 실행된다. 스킵명령은 여전히 인터럽트 시작루틴에 있는 동안 명령이 실행되는 것을 제외하고는 복귀명령으로 간주될 수 있다. 스킵명령은 어레이제어기가 인터럽트 시작루틴을 끝내게하며 인터럽트하고 있는 알고리즘의 실행을 스킵하여 즉시 인터럽트 복귀루틴을 실행한다. 따라서, 인터럽트 복귀루틴의 완료에서 만약 광역인터럽트 플래그가 인에이블된다면, 인터럽트하고 있는 알고리즘은 실행을 완료하고 동작큐로부터 제거될 수 있다. 만약 광역인터럽트 플래그가 인에이블된다면, 유져 인터페이스는 동작큐에서 진행중인 동작을 떠나서 연속적으로 실행될 수 있다.
따라서 구조는 본래 조건적이며 어레이에서 데이타의 붕괴 또는 파괴 없이도 플레쉬 메모리 시스템내에서 동작하는 인터럽트 메카니즘을 제공한다. 더욱이, 메카니즘은 인터럽트에 대한 우선순위 레벨을 쉽게 수용할 수 있다. 예컨데, 각각의 알고리즘은 우선순위 레벨에 의해서 식별될 수 있다. 유져 인터페이스회로(40)는 동작을 제2차큐로 로드하여 인터럽트를 요청하기 위해 필요한 신호를 내며, 현재실행하고 있는 프로셰세서 진행중인 명령요청이 높은 우선순위에 있는지 여부를 결정한다. 만약 그렇다면, 인터럽트는 실행하고 있는 동작을 인터럽트함으로써 어레이제어기에 의해 실행된다(제1차큐에 현재 저장된 정보에 의해서 알려진 바와같이).
또한, 이런 구조는 동작을 소거하는 동안 프로그램이 일어나게 한다. 어레이 상의 소거동작은 잘알려진 시간소모 프로세스이다. 맘약 블록의 소거동작이 현재실행되고 있고 다른 블록의 프로그램동작이 실행을 대기하고 있다면, 인터럽트는 발생되고 인터럽트 시작루틴은 인터럽트하고 있는 알고리즘의 적당함(예컨데, 이미 소거하고 있는 블록으로 프로그램하는 시도가 있느냐?)과 프로그램 알고리즘의 실행에 앞서 오프상태로의 내부전력공급이 안전하게 계속되고 있는지를 체크한다. 이것은 제1Oa와 1Ob도의 단순화한 흐름도에 의해서 설명된다. 설명의 목적으로, 소거 프로세서는 두주요한 부분으로 구성되는 것으로서 설명될 수 있다 : 모든 블록데이타가 "0"으로 프로그래밍되는 사전조전 프로세스; 및 블록데이타가 "1"의 값으로 설정되는 검증프로세서. 프로세서 순서도에 도시된 바와같이 예컨데 다른 블록을 프로그램 하기 위한 요청에 의해서 야기되는 인터럽트는 고전압 회로조작동안에는 허용되지 않고 소거동안에 허용된다(제1Ob도 참조).
본 발명은 바람직한 실시예와 함께 서술되었다. 상술한 서술의 관점에서 본 기술의 숙련자에게는 수많은 대안, 수정, 변경 및 용법이 자명함이 분명하다.

Claims (2)

  1. 버스를 통해 메모리와 결합된 프로세서로 구성되는 시스템에 있어서, 플레쉬 메모리에 의해서 실행될 명령을 수신하며, 현재실행하고 있는 명령을 포함하는 하나 또는 그 이상의 명령을 저장하기 위한 명령큐로 구성되는 유져 인터페이스; 실행할 명령을 수신하기 위해 유져 인터페이스와 결합하며, 어레이를 판독, 소거 및 프로그램하기 위해서 전원을 제어하는 어레이제어기; 어레이 제어기의 상태를 저장하기 위해 어레이제어기와 결합된 다수의 레지스터; 및 세트될 때 명령의 실행 동안 인터럽트의 발생을 허용하는 인터럽트 상태 비트로 구성되며, 만약 인터럽트 상태 비트가 세트되고 명령큐가 실행하고 있는 현재 명령과 실행될 다음 명령으로 구성된다면, 상기 유져 인터페이스는 인터럽트를 어레이 제어기에내며, 상기 어레이제어기는 어레이를 사전설정된 상태에두며, 어레이 제어기의 상태를 저장하며 다음 명령을 실행하며, 레지스터에 저장된 상태를 재저장하며, 현재 명령의 실행을 계속하여 그결과 인터럽트가 플레쉬 어레이의 붕괴없이 플레쉬 메모리 시스템에 의해서 처리될 수 있는 것을 특징으로 하는 버스와 결합된 플레쉬 메모리 어레이 시스템.
  2. 제1버스를 통해 메모리와 결합된 프로세서로 구성되는 시스템에 있어서, 데이타 저장을 위한 다수의 플레쉬 셀로 구성되는 플레쉬 어레이; 플레쉬 메모리 시스템에 의해서 실행될 명령을 수신하며, 현재 실행하고 있는 명령을 포함하는 하나 또는 그 이상의 명령을 저장하기 위한 명령큐로 구성되며, 실행될 때 명령을 수행하는 코드의 위치를 식벽하는 명령어드레스를 발생시키는 유져 인터페이스; 및 명령어드레스를 수신하기 위해 유져 인터페이스와 결합되고 마이크로제어기와 프로그램 메모리로 구성되는 어레이제어기로 구성되며, 상기 프로그램 메모리는 유져에 의해서 프로그램 가능하며, 상기 명령어드레스는 마이크로 제어기가 실행하고자하는 프로그램 메모리의 코드위치를 식별하며, 상기 마이크로 제어기는 프로그램 메모리의 코드와 일치하여 플레쉬 어레이상에서 기록 및 소거 동작을 수행하며, 여기서, 플레쉬 메모리 시스템은 플레쉬 메모리 시스템의 유연성을 증가시키고 프로세서로부터 플레쉬 어레이의 제어를 오프 로드하여 마이크로 제어기에 의해서 수행될 다수의 기능을 수행하고자 프로그램 될 수 있게 되는 것을 특징으로 하는 버스와 결합된 플레쉬 메모리 시스템.
KR1019940013909A 1993-06-30 1994-06-20 플레쉬 메모리 어레이 시스템 및 방법 KR100276162B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/086,186 US5509134A (en) 1993-06-30 1993-06-30 Method and apparatus for execution of operations in a flash memory array
US086,186 1993-06-30

Publications (2)

Publication Number Publication Date
KR950001486A KR950001486A (ko) 1995-01-03
KR100276162B1 true KR100276162B1 (ko) 2000-12-15

Family

ID=22196870

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019940013909A KR100276162B1 (ko) 1993-06-30 1994-06-20 플레쉬 메모리 어레이 시스템 및 방법

Country Status (3)

Country Link
US (1) US5509134A (ko)
JP (1) JP3787167B2 (ko)
KR (1) KR100276162B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150080819A (ko) * 2014-01-02 2015-07-10 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
KR101903095B1 (ko) * 2011-11-21 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법
KR20190143155A (ko) * 2018-06-20 2019-12-30 삼성전자주식회사 반도체 장치 및 반도체 시스템

Families Citing this family (218)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6222762B1 (en) * 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5682497A (en) * 1993-09-28 1997-10-28 Intel Corporation Managing file structures for a flash memory file system in a computer
US6370651B1 (en) * 1993-10-22 2002-04-09 Intel Corporation Synchronizing user commands to a microcontroller in a memory device
FR2711831B1 (fr) * 1993-10-26 1997-09-26 Intel Corp Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire.
GB2283342B (en) * 1993-10-26 1998-08-12 Intel Corp Programmable code store circuitry for a nonvolatile semiconductor memory device
JP3999822B2 (ja) * 1993-12-28 2007-10-31 株式会社東芝 記憶システム
US5692164A (en) * 1994-03-23 1997-11-25 Intel Corporation Method and apparatus for generating four phase non-over lapping clock pulses for a charge pump
FR2722907B1 (fr) * 1994-07-20 1996-09-06 Sgs Thomson Microelectronics Memoire integree programmable comportant des moyens d'emulation
GB9417297D0 (en) * 1994-08-26 1994-10-19 Inmos Ltd Method and apparatus for testing an integrated circuit device
JP3402781B2 (ja) * 1994-09-02 2003-05-06 キヤノン株式会社 メモリ管理制御装置及び方法
US5907700A (en) * 1994-10-24 1999-05-25 Intel Corporation Controlling flash memory program and erase pulses
JP2669365B2 (ja) * 1994-11-24 1997-10-27 日本電気株式会社 書換え可能なromファイル装置
KR100566464B1 (ko) * 1995-01-31 2006-03-31 가부시끼가이샤 히다치 세이사꾸쇼 반도체 메모리 장치
US5682496A (en) 1995-02-10 1997-10-28 Micron Quantum Devices, Inc. Filtered serial event controlled command port for memory
US6108237A (en) 1997-07-17 2000-08-22 Micron Technology, Inc. Fast-sensing amplifier for flash memory
US5742787A (en) * 1995-04-10 1998-04-21 Intel Corporation Hardware reset of a write state machine for flash memory
JP3782840B2 (ja) 1995-07-14 2006-06-07 株式会社ルネサステクノロジ 外部記憶装置およびそのメモリアクセス制御方法
US5801985A (en) * 1995-07-28 1998-09-01 Micron Technology, Inc. Memory system having programmable control parameters
US5627784A (en) * 1995-07-28 1997-05-06 Micron Quantum Devices, Inc. Memory system having non-volatile data storage structure for memory control parameters and method
US5890193A (en) * 1995-07-28 1999-03-30 Micron Technology, Inc. Architecture for state machine for controlling internal operations of flash memory
US5619453A (en) * 1995-07-28 1997-04-08 Micron Quantum Devices, Inc. Memory system having programmable flow control register
JPH0997205A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
US5687390A (en) * 1995-11-14 1997-11-11 Eccs, Inc. Hierarchical queues within a storage array (RAID) controller
DE19544571A1 (de) * 1995-11-30 1997-06-05 Sel Alcatel Ag Verfahren und Vorrichtung zum Programmieren eines Flash-EEProms
US5893135A (en) * 1995-12-27 1999-04-06 Intel Corporation Flash memory array with two interfaces for responding to RAS and CAS signals
US5594686A (en) * 1995-12-29 1997-01-14 Intel Corporation Method and apparatus for protecting data stored in flash memory
US6073204A (en) 1997-04-23 2000-06-06 Micron Technology, Inc. Memory system having flexible architecture and method
DE69629315T2 (de) * 1996-05-22 2004-04-22 Macronix International Co. Ltd., Hsinchu Flashspeicheranordnung mit löschungsunterbrechungslogik unter verwendung von mehreren prüfpunkten
US6003063A (en) * 1996-05-28 1999-12-14 Hewlett-Packard Company Computer system with context switch and program development therefor
JP3976839B2 (ja) * 1996-07-09 2007-09-19 株式会社ルネサステクノロジ 不揮発性メモリシステムおよび不揮発性半導体メモリ
US6148360A (en) * 1996-09-20 2000-11-14 Intel Corporation Nonvolatile writeable memory with program suspend command
US6055614A (en) * 1996-12-31 2000-04-25 Intel Corporation Apparatus for performing a user requested reset during algorithm execution
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
US5901079A (en) * 1997-01-13 1999-05-04 International Business Machines Corporation Skewed memory cell apparatus and method
US6035401A (en) 1997-02-03 2000-03-07 Intel Corporation Block locking apparatus for flash memory
US5954818A (en) * 1997-02-03 1999-09-21 Intel Corporation Method of programming, erasing, and reading block lock-bits and a master lock-bit in a flash memory device
US6073243A (en) * 1997-02-03 2000-06-06 Intel Corporation Block locking and passcode scheme for flash memory
KR100251636B1 (ko) * 1997-04-10 2000-05-01 윤종용 소형컴퓨터시스템인터페이스방식접속을위한메모리장치
US5956743A (en) * 1997-08-25 1999-09-21 Bit Microsystems, Inc. Transparent management at host interface of flash-memory overhead-bytes using flash-specific DMA having programmable processor-interrupt of high-level operations
US5822251A (en) * 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
US6000006A (en) * 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6141247A (en) * 1997-10-24 2000-10-31 Micron Technology, Inc. Non-volatile data storage unit and method of controlling same
US7373440B2 (en) 1997-12-17 2008-05-13 Src Computers, Inc. Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format
US6076152A (en) * 1997-12-17 2000-06-13 Src Computers, Inc. Multiprocessor computer architecture incorporating a plurality of memory algorithm processors in the memory subsystem
US7565461B2 (en) 1997-12-17 2009-07-21 Src Computers, Inc. Switch/network adapter port coupling a reconfigurable processing element to one or more microprocessors for use with interleaved memory controllers
JPH11203266A (ja) * 1998-01-07 1999-07-30 Mitsubishi Electric Corp マイクロコンピュータ
US6040993A (en) * 1998-02-23 2000-03-21 Macronix International Co., Ltd. Method for programming an analog/multi-level flash EEPROM
US6026016A (en) * 1998-05-11 2000-02-15 Intel Corporation Methods and apparatus for hardware block locking in a nonvolatile memory
US6209069B1 (en) 1998-05-11 2001-03-27 Intel Corporation Method and apparatus using volatile lock architecture for individual block locking on flash memory
US6421757B1 (en) * 1998-09-30 2002-07-16 Conexant Systems, Inc Method and apparatus for controlling the programming and erasing of flash memory
US6279114B1 (en) * 1998-11-04 2001-08-21 Sandisk Corporation Voltage negotiation in a single host multiple cards system
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US6212099B1 (en) 1999-08-20 2001-04-03 Intel Corporation Preventing data corruption in a memory device using a modified memory cell conditioning methodology
KR100631770B1 (ko) * 1999-09-07 2006-10-09 삼성전자주식회사 플래시 메모리의 실시간 처리방법
CN1088218C (zh) * 1999-11-14 2002-07-24 邓国顺 用于数据处理系统的快闪电子式外存储方法及其装置
US6363008B1 (en) 2000-02-17 2002-03-26 Multi Level Memory Technology Multi-bit-cell non-volatile memory with maximized data capacity
JP3871184B2 (ja) 2000-06-12 2007-01-24 シャープ株式会社 半導体記憶装置
US20050135180A1 (en) * 2000-06-30 2005-06-23 Micron Technology, Inc. Interface command architecture for synchronous flash memory
US6861769B1 (en) 2000-11-16 2005-03-01 White Electronic Designs Corp. Apparatus and method for protection of an electronic circuit
US6834323B2 (en) 2000-12-26 2004-12-21 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
US6732306B2 (en) 2000-12-26 2004-05-04 Intel Corporation Special programming mode with hashing
US7007131B2 (en) * 2000-12-27 2006-02-28 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
US6779045B2 (en) * 2001-03-21 2004-08-17 Intel Corporation System and apparatus for increasing the number of operations per transmission for a media management system
US6772307B1 (en) 2001-06-11 2004-08-03 Intel Corporation Firmware memory having multiple protected blocks
DE10128903C2 (de) * 2001-06-15 2003-04-24 Infineon Technologies Ag Schaltungsanordnung zur Speicherung digitaler Daten
JP2003036681A (ja) * 2001-07-23 2003-02-07 Hitachi Ltd 不揮発性記憶装置
GB0123416D0 (en) * 2001-09-28 2001-11-21 Memquest Ltd Non-volatile memory control
US7209252B2 (en) * 2002-01-15 2007-04-24 Lexmark International, Inc. Memory module, printer assembly, and method for storing printer code
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
TW569092B (en) * 2002-05-23 2004-01-01 Ememory Technology Inc Page buffer of a flash memory
US7225324B2 (en) 2002-10-31 2007-05-29 Src Computers, Inc. Multi-adaptive processing systems and techniques for enhancing parallelism and performance of computational functions
ITRM20030198A1 (it) * 2003-04-28 2004-10-29 Micron Technology Inc Monitor ad unita' di controllo basata su rom in un
JP2004348817A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置、そのページバッファリソース割当方法及び回路、コンピュータシステム並びに携帯電子機器
JP2004348791A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置及び携帯電子機器
JP2004348789A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置及び携帯電子機器
JP2004348788A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置及び携帯電子機器
JP2004348790A (ja) * 2003-05-20 2004-12-09 Sharp Corp 半導体記憶装置及び携帯電子機器
ITRM20030354A1 (it) 2003-07-17 2005-01-18 Micron Technology Inc Unita' di controllo per dispositivo di memoria.
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
US7299324B2 (en) * 2003-11-05 2007-11-20 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage
US7321951B2 (en) * 2003-11-17 2008-01-22 Micron Technology, Inc. Method for testing flash memory power loss recovery
US20050144372A1 (en) * 2003-12-31 2005-06-30 Robert Walker Memory device controlled with user-defined commands
US7151692B2 (en) * 2004-01-27 2006-12-19 Macronix International Co., Ltd. Operation scheme for programming charge trapping non-volatile memory
KR100541642B1 (ko) * 2004-03-11 2006-01-10 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
US7133313B2 (en) * 2004-04-26 2006-11-07 Macronix International Co., Ltd. Operation scheme with charge balancing for charge trapping non-volatile memory
US7187590B2 (en) * 2004-04-26 2007-03-06 Macronix International Co., Ltd. Method and system for self-convergent erase in charge trapping memory cells
US7209390B2 (en) * 2004-04-26 2007-04-24 Macronix International Co., Ltd. Operation scheme for spectrum shift in charge trapping non-volatile memory
US7075828B2 (en) * 2004-04-26 2006-07-11 Macronix International Co., Intl. Operation scheme with charge balancing erase for charge trapping non-volatile memory
US7164603B2 (en) * 2004-04-26 2007-01-16 Yen-Hao Shih Operation scheme with high work function gate and charge balancing for charge trapping non-volatile memory
FR2869699A1 (fr) * 2004-05-03 2005-11-04 St Microelectronics Sa Systeme sur une puce avec unite d'arbitrage, et cle de stockage l'incorporant
US7190614B2 (en) * 2004-06-17 2007-03-13 Macronix International Co., Ltd. Operation scheme for programming charge trapping non-volatile memory
US7336531B2 (en) * 2004-06-25 2008-02-26 Micron Technology, Inc. Multiple level cell memory device with single bit per cell, re-mappable memory block
US20060007732A1 (en) * 2004-07-06 2006-01-12 Macronix International Co., Ltd. Charge trapping non-volatile memory and method for operating same
US7106625B2 (en) * 2004-07-06 2006-09-12 Macronix International Co, Td Charge trapping non-volatile memory with two trapping locations per gate, and method for operating same
WO2006041730A2 (en) * 2004-10-07 2006-04-20 Atmel Corporation Method and system for a programming approach for a nonvolatile electronic device
ITMI20041904A1 (it) * 2004-10-07 2005-01-07 Atmel Corp "metodo e sistema per un approccio di programmazione per un dispositivo elettronico non volatile"
US7133317B2 (en) * 2004-11-19 2006-11-07 Macronix International Co., Ltd. Method and apparatus for programming nonvolatile memory
US20060113586A1 (en) * 2004-11-29 2006-06-01 Macronix International Co., Ltd. Charge trapping dielectric structure for non-volatile memory
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US8482052B2 (en) 2005-01-03 2013-07-09 Macronix International Co., Ltd. Silicon on insulator and thin film transistor bandgap engineered split gate memory
US7473589B2 (en) * 2005-12-09 2009-01-06 Macronix International Co., Ltd. Stacked thin film transistor, non-volatile memory devices and methods for fabricating the same
US7315474B2 (en) * 2005-01-03 2008-01-01 Macronix International Co., Ltd Non-volatile memory cells, memory arrays including the same and methods of operating cells and arrays
US7822912B2 (en) * 2005-03-14 2010-10-26 Phision Electronics Corp. Flash storage chip and flash array storage system
JP5068739B2 (ja) * 2005-03-18 2012-11-07 ラムバス・インコーポレーテッド 集積回路試験モジュール
US7206230B2 (en) * 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7447078B2 (en) 2005-04-01 2008-11-04 Sandisk Corporation Method for non-volatile memory with background data latch caching during read operations
US7463521B2 (en) * 2005-04-01 2008-12-09 Sandisk Corporation Method for non-volatile memory with managed execution of cached data
US7158420B2 (en) * 2005-04-29 2007-01-02 Macronix International Co., Ltd. Inversion bit line, charge trapping non-volatile memory and method of operating same
JP4889961B2 (ja) * 2005-05-06 2012-03-07 ルネサスエレクトロニクス株式会社 半導体集積回路及びそのバーインテスト方法
US7763927B2 (en) * 2005-12-15 2010-07-27 Macronix International Co., Ltd. Non-volatile memory device having a nitride-oxide dielectric layer
KR100713984B1 (ko) * 2005-09-15 2007-05-04 주식회사 하이닉스반도체 멀티-플레인 구조를 갖는 비휘발성 메모리 장치의 프로그램방법
US11948629B2 (en) 2005-09-30 2024-04-02 Mosaid Technologies Incorporated Non-volatile memory device with concurrent bank operations
KR101293365B1 (ko) 2005-09-30 2013-08-05 모사이드 테크놀로지스 인코퍼레이티드 출력 제어 메모리
US7652922B2 (en) 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US7890686B2 (en) * 2005-10-17 2011-02-15 Src Computers, Inc. Dynamic priority conflict resolution in a multi-processor computer system having shared resources
US7716100B2 (en) * 2005-12-02 2010-05-11 Kuberre Systems, Inc. Methods and systems for computing platform
JP4686350B2 (ja) * 2005-12-09 2011-05-25 株式会社東芝 不揮発性半導体記憶装置及びその自己テスト方法
US7562180B2 (en) * 2006-03-28 2009-07-14 Nokia Corporation Method and device for reduced read latency of non-volatile memory
US7907450B2 (en) * 2006-05-08 2011-03-15 Macronix International Co., Ltd. Methods and apparatus for implementing bit-by-bit erase of a flash memory device
KR100754226B1 (ko) * 2006-08-22 2007-09-03 삼성전자주식회사 비휘발성 데이터 저장장치의 프로그래밍 방법 및 그 장치
JP4661748B2 (ja) * 2006-09-22 2011-03-30 Tdk株式会社 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US7811890B2 (en) * 2006-10-11 2010-10-12 Macronix International Co., Ltd. Vertical channel transistor structure and manufacturing method thereof
US8772858B2 (en) * 2006-10-11 2014-07-08 Macronix International Co., Ltd. Vertical channel memory and manufacturing method thereof and operating method using the same
US7698541B1 (en) * 2006-10-31 2010-04-13 Netapp, Inc. System and method for isochronous task switching via hardware scheduling
KR100843136B1 (ko) * 2006-11-14 2008-07-02 삼성전자주식회사 비휘발성 메모리에서 연산 처리를 제어하는 장치 및 그방법
US8223540B2 (en) 2007-02-02 2012-07-17 Macronix International Co., Ltd. Method and apparatus for double-sided biasing of nonvolatile memory
US7996599B2 (en) 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US7890690B2 (en) * 2007-06-07 2011-02-15 International Business Machines Corporation System and method for dual-ported flash memory
US8099632B2 (en) * 2007-08-08 2012-01-17 Sandisk Technologies Inc. Urgency and time window manipulation to accommodate unpredictable memory operations
US7737488B2 (en) * 2007-08-09 2010-06-15 Macronix International Co., Ltd. Blocking dielectric engineered charge trapping memory cell with high speed erase
US8131912B2 (en) * 2007-09-27 2012-03-06 Kabushiki Kaisha Toshiba Memory system
US8090955B2 (en) * 2007-10-17 2012-01-03 Micron Technology, Inc. Boot block features in synchronous serial interface NAND
TWI353519B (en) * 2007-11-15 2011-12-01 Genesys Logic Inc Flash memory device and pipeline access method the
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
US8156415B1 (en) * 2007-12-26 2012-04-10 Marvell International Ltd. Method and system for command queuing in disk drives
US9098506B2 (en) * 2008-01-02 2015-08-04 Sandisk Il, Ltd. Data indexing by local storage device
US8370402B2 (en) * 2008-01-02 2013-02-05 Sandisk Il Ltd Dual representation of stored digital content
US8583878B2 (en) * 2008-01-02 2013-11-12 Sandisk Il Ltd. Storage device having direct user access
US8452927B2 (en) * 2008-01-02 2013-05-28 Sandisk Technologies Inc. Distributed storage service systems and architecture
KR20100107479A (ko) * 2008-01-02 2010-10-05 샌디스크 아이엘 엘티디 직접적인 사용자 액세스를 갖는 저장 장치
US20090171911A1 (en) * 2008-01-02 2009-07-02 Sandisk Il, Ltd. Data indexing by local storage device
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
JP2009272028A (ja) * 2008-04-07 2009-11-19 Renesas Technology Corp 半導体集積回路およびその動作方法
US8370717B1 (en) 2008-04-08 2013-02-05 Marvell International Ltd. Method and apparatus for flexible buffers in an XOR engine
JP5218228B2 (ja) * 2008-04-23 2013-06-26 新東工業株式会社 搬送装置及びブラスト加工装置
JP5083772B2 (ja) * 2008-06-27 2012-11-28 株式会社リコー 画像形成装置、制御方法及び制御プログラム
US8645617B2 (en) * 2008-12-09 2014-02-04 Rambus Inc. Memory device for concurrent and pipelined memory operations
US7613850B1 (en) 2008-12-23 2009-11-03 International Business Machines Corporation System and method utilizing programmable ordering relation for direct memory access
US8543756B2 (en) 2009-02-02 2013-09-24 Marvell World Trade Ltd. Solid-state drive command grouping
US9063561B2 (en) * 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US8850103B2 (en) * 2009-08-28 2014-09-30 Microsoft Corporation Interruptible NAND flash memory
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US9135190B1 (en) 2009-09-04 2015-09-15 Bitmicro Networks, Inc. Multi-profile memory controller for computing devices
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
IT1399916B1 (it) * 2010-04-30 2013-05-09 Balluchi Dispositivo di memoria ad accesso di registro indicizzato
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US20120017035A1 (en) * 2010-07-16 2012-01-19 Plx Technology, Inc. Runtime reprogramming of a processor code space memory area
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
US8843731B2 (en) 2010-12-30 2014-09-23 Micron Technology, Inc. Memory device using extended interface commands
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9240405B2 (en) 2011-04-19 2016-01-19 Macronix International Co., Ltd. Memory with off-chip controller
US8659954B1 (en) * 2011-09-14 2014-02-25 Adesto Technologies Corporation CBRAM/ReRAM with improved program and erase algorithms
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
JP2012084220A (ja) * 2011-10-25 2012-04-26 Fujitsu Semiconductor Ltd メモリシステム
JP2013131192A (ja) * 2011-12-22 2013-07-04 Fujitsu Ltd ストレージ装置及びストレージ装置の制御方法
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
KR102083490B1 (ko) * 2012-08-08 2020-03-03 삼성전자 주식회사 비휘발성 메모리 장치, 이를 포함하는 메모리 시스템 및 비휘발성 메모리 장치의 커맨드 실행 제어 방법
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US10120694B2 (en) 2013-03-15 2018-11-06 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9459810B2 (en) * 2013-12-30 2016-10-04 Sandisk Technologies Llc Storage module and method for configuring command attributes
US9940048B2 (en) 2014-02-26 2018-04-10 Macronix International Co., Ltd. Nonvolatile memory data protection using nonvolatile protection codes and volatile protection codes
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US9214045B1 (en) 2014-08-29 2015-12-15 Freescale Semiconductor, Inc. Flash memory express erase and program
US9519442B2 (en) * 2014-10-27 2016-12-13 Aeroflex Colorado Springs Inc. Method for concurrent system management and error detection and correction requests in integrated circuits through location aware avoidance logic
CN105988951B (zh) * 2015-02-12 2019-10-15 瑞昱半导体股份有限公司 存储器控制器及相关的控制方法
US9659619B2 (en) * 2015-05-21 2017-05-23 Sandisk Technologies Llc System and method for memory integrated circuit chip write abort indication
US9679658B2 (en) * 2015-06-26 2017-06-13 Intel Corporation Method and apparatus for reducing read latency for a block erasable non-volatile memory
US10318193B2 (en) * 2015-09-14 2019-06-11 Sandisk Technologies Llc Systems and methods of command authorization
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
US10635526B2 (en) 2017-06-12 2020-04-28 Sandisk Technologies Llc Multicore on-die memory microcontroller
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10622075B2 (en) 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
TWI676987B (zh) * 2018-08-06 2019-11-11 新唐科技股份有限公司 資料處理系統與資料處理方法
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
JP2020154525A (ja) * 2019-03-19 2020-09-24 キオクシア株式会社 メモリシステムおよび情報処理システム
JP2020166346A (ja) * 2019-03-28 2020-10-08 ラピスセミコンダクタ株式会社 半導体記憶装置
US10971199B2 (en) 2019-06-20 2021-04-06 Sandisk Technologies Llc Microcontroller for non-volatile memory with combinational logic
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4151598A (en) * 1978-03-27 1979-04-24 Honeywell Information Systems Inc. Priority assignment apparatus for use in a memory controller
FR2433792A1 (fr) * 1978-08-17 1980-03-14 Cii Honeywell Bull Dispositif universel d'echange d'informations entre les memoires d'ordinateur et les dispositifs de traitement qui le compose
US4649511A (en) * 1983-07-25 1987-03-10 General Electric Company Dynamic memory controller for single-chip microprocessor
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
US5222046A (en) * 1988-02-17 1993-06-22 Intel Corporation Processor controlled command port architecture for flash memory
US5159672A (en) * 1989-12-28 1992-10-27 Intel Corporation Burst EPROM architecture
US5200922A (en) * 1990-10-24 1993-04-06 Rao Kameswara K Redundancy circuit for high speed EPROM and flash memory devices
US5239639A (en) * 1990-11-09 1993-08-24 Intel Corporation Efficient memory controller with an independent clock
US5355464A (en) * 1991-02-11 1994-10-11 Intel Corporation Circuitry and method for suspending the automated erasure of a non-volatile semiconductor memory
US5265059A (en) * 1991-05-10 1993-11-23 Intel Corporation Circuitry and method for discharging a drain of a cell of a non-volatile semiconductor memory
US5263003A (en) * 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
US5224070A (en) * 1991-12-11 1993-06-29 Intel Corporation Apparatus for determining the conditions of programming circuitry used with flash EEPROM memory
JP3251968B2 (ja) * 1992-01-20 2002-01-28 富士通株式会社 半導体記憶装置
US5341330A (en) * 1992-10-30 1994-08-23 Intel Corporation Method for writing to a flash memory array during erase suspend intervals
US5353256A (en) * 1993-06-30 1994-10-04 Intel Corporation Block specific status information in a memory device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101903095B1 (ko) * 2011-11-21 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 제어하는 컨트롤러의 동작 방법
KR20150080819A (ko) * 2014-01-02 2015-07-10 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
KR102226367B1 (ko) 2014-01-02 2021-03-12 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
KR20190143155A (ko) * 2018-06-20 2019-12-30 삼성전자주식회사 반도체 장치 및 반도체 시스템

Also Published As

Publication number Publication date
JP3787167B2 (ja) 2006-06-21
JPH07161195A (ja) 1995-06-23
KR950001486A (ko) 1995-01-03
US5509134A (en) 1996-04-16

Similar Documents

Publication Publication Date Title
KR100276162B1 (ko) 플레쉬 메모리 어레이 시스템 및 방법
US5802552A (en) System and method for allocating and sharingpage buffers for a flash memory device
US5519847A (en) Method of pipelining sequential writes in a flash memory
US5835927A (en) Special test modes for a page buffer shared resource in a memory device
US3983539A (en) Polymorphic programmable units employing plural levels of sub-instruction sets
US5353256A (en) Block specific status information in a memory device
US5956742A (en) Methods for queuing and absorbing erase commands in a nonvolatile memory device
EP0592098A2 (en) Control method and apparatus for direct execution of a program on an external apparatus using a randomly accessible and rewritable memory
US3983541A (en) Polymorphic programmable units employing plural levels of phased sub-instruction sets
US5765184A (en) Method and apparatus for programming an array controller in a flash memory device
JPH06266596A (ja) フラッシュメモリファイル記憶装置および情報処理装置
US5146581A (en) Subprogram executing data processing system having bank switching control storing in the same address area in each of memory banks
US6189070B1 (en) Apparatus and method for suspending operation to read code in a nonvolatile writable semiconductor memory
US20100169546A1 (en) Flash memory access circuit
KR100875377B1 (ko) 처리 시스템에서 스택 팝 및 푸쉬 동작들을 수행하는 장치 및 방법
KR19980069757A (ko) 마이크로프로세서 및 멀티프로세서 시스템
EP0055623B1 (en) Direct memory-access mode for a high-speed memory system
JPH04140880A (ja) ベクトル処理装置
US5127096A (en) Information processor operative both in direct mapping and in bank mapping, and the method of switching the mapping schemes
US5247624A (en) Microprogram controller including leading microinstruction from a generator executed while succeeding microinstruction from memory is read out
JPH0619711B2 (ja) 優先ブランチ機構を備えたデータ処理システム
US5564057A (en) Microprocessor architecture which facilitates input/output utilizing pairs of registers which the same address
EP0479919A1 (en) Method and circuit for programmable element sequence selection
EP0020972B1 (en) Program controlled microprocessing apparatus
JPS58115565A (ja) デ−タ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120919

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20130902

Year of fee payment: 14

EXPY Expiration of term