DE60308202T2 - Hochkompakter nichtflüchtiger speicher mit platz sparenden datenregistern und dessen betriebsverfahren - Google Patents

Hochkompakter nichtflüchtiger speicher mit platz sparenden datenregistern und dessen betriebsverfahren Download PDF

Info

Publication number
DE60308202T2
DE60308202T2 DE60308202T DE60308202T DE60308202T2 DE 60308202 T2 DE60308202 T2 DE 60308202T2 DE 60308202 T DE60308202 T DE 60308202T DE 60308202 T DE60308202 T DE 60308202T DE 60308202 T2 DE60308202 T2 DE 60308202T2
Authority
DE
Germany
Prior art keywords
read
data
write
memory
stack
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
DE60308202T
Other languages
English (en)
Other versions
DE60308202D1 (de
Inventor
Raul-Adrian Santa Clara CERNEA
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SanDisk Corp
Original Assignee
SanDisk Corp
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 SanDisk Corp filed Critical SanDisk Corp
Application granted granted Critical
Publication of DE60308202D1 publication Critical patent/DE60308202D1/de
Publication of DE60308202T2 publication Critical patent/DE60308202T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • 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/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5642Multilevel memory with buffers, latches, registers at input or output

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)
  • Non-Volatile Memory (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

  • Diese Erfindung betrifft allgemein nichtflüchtige Halbleiterspeicher wie zum Beispiel elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROM) sowie Flash EEPROM und spezifischer solche, welche hochkompakte und leistungsstarke Schreib- und Leseschaltungen aufweisen.
  • Festkörperspeicher, welche in der Lage sind, nichtflüchtig Ladung zu speichern, vor allem in Form von EEPROM und Flash EEPROM in Karten mit einem kleinen Formfaktor, sind in letzter Zeit bei einer Vielfalt von mobilen und tragbaren Geräten, im besonderen Maße Information Appliances und Produkte der Unterhaltungselektronik, Speicher der Wahl geworden. Im Gegensatz zu einem RAM (Speicher mit wahlfreiem Zugriff), welcher auch ein Festkörperspeicher ist, ist ein Flash Speicher nichtflüchtig und bewahrt seine gespeicherten Daten selbst wenn die Spannungsversorgung ausgeschaltet wird. Trotz höherer Kosten werden Flash Speicher zunehmend bei Massenspeicheranwendungen eingesetzt. Konventionelle Massenspeicher, welche auf rotierenden magnetischen Medien wie zum Beispiel Hard Drives und Disketten basieren, sind für mobile und tragbare Anwendungen ungeeignet. Dies liegt daran, dass Diskettenlaufwerke dazu neigen unhandlich zu sein, anfällig für mechanische Defekte sind, eine hohe Wartezeit und einen hohen Energiebedarf haben. Diese unerwünschten Eigenschaften machen diskettenbasierte Speicherung für die meisten mobilen und tragbaren Anwendungen unpraktisch. Andererseits sind Flashspeicher, sowohl integrierte als auch in Form herausnehmbarer Karten, ideal für einen mobilen und tragbaren Einsatz aufgrund kleiner Größe, niedrigem Energiebedarf, hoher Geschwindigkeit sowie hoher Betriebssicherheit geeignet.
  • EEPROM und elektrisch programmierbare Nur-Lese-Speicher (EPROM) sind nichtflüchtige Speicher, deren Speicherzellen gelöscht und mit neuen Daten in beschrieben oder "programmiert" werden können. Beide verwenden ein Floating (unverbundenes) leitendes Gate in einer Feldeffekttransistorstruktur, welches über einer Kanalregion in einem Halbleitersubstrat zwischen Source- und Drain-Regionen angeordnet ist. Ein Control Gate wird dann über dem Floating Gate zur Verfügung gestellt. Die Schwellenspannungscharakteristik des Transistors wird durch den Betrag der Ladung, welcher auf dem Floating Gate gespeichert wird, kontrolliert. Das heißt für einen bestimmten Ladungspegel auf dem Floating Gate ist eine entsprechende Spannung (Schwelle) erforderlich, welche am Control Gate angelegt werden muss, bevor der Transistor eingeschaltet wird, um eine Leitung zwischen Source- und Drain-Regionen zu ermöglichen. Der Floating Gate Transistor kann einen Bereich von Ladungen halten und kann daher bis zu einem Schwellenspannungspegel innerhalb eines Schwellenspannungsfensters programmiert werden. Die Größe des Schwellenspannungsfensters ist durch den minimalen und maximalen Schwellenpegel des Bauelementes begrenzt, welcher wiederum dem Bereich der Ladungen, welcher auf dem Floating Gate programmiert werden kann, entspricht. Das Schwellenfenster hängt generell von den Charakteristika des Bauelementes, den Betriebsbedingungen und dem vorherigen Betrieb ab. Jeder eindeutige, auflösbarer Schwellenspannungspegelbereich innerhalb des Fensters kann prinzipiell dazu verwendet werden, einen genauen Speicherzustand der Zelle zu bestimmen.
  • Der als Speicherzelle dienende Transistor wird typischerweise durch einen von zwei Mechanismen in einen "programmierten" Zustand versetzt. Bei der "Hot Electron Injection" beschleunigt eine am Drain angelegte hohe Spannung Elektronen durch den Substrat Kanalbereich. Zur gleichen Zeit zieht eine am Control Gate angelegte Spannung die heißen Elektronen durch ein dünnes Gate-Dielektrikum auf das Floating Gate. Bei der "Tunneling Injection" wird am Control Gate eine hohe Spannung relativ zum Substrat angelegt. Auf diese Weise werden Elektronen von Substrat zum Floating Gate angezogen.
  • Das Speicherelement kann durch eine Anzahl von Mechanismen gelöscht werden. EEPROMS können durch Entfernen der Ladung vom Floating Gate durch ultraviolette Strahlung komplett gelöscht werden. Bei einem EEPROM ist eine Speicherzelle elektrisch löschbar, indem eine hohe Spannung am Substrat relativ zum Control Gate angelegt wird, um Elektronen im Floating Gate zu induzieren, welche durch ein dünnes Oxid zum Substrat Kanalbereich tunneln (d.h. Fowler-Nordheim-Tunneln). Typischerweise ist das EEPROM Byte für Byte elektrisch löschbar. Bei einem Flash EEPROM ist der Speicher entweder auf einmal löschbar oder es sind jeweils ein oder mehrere Blöcke elektrisch löschbar, wobei ein Block aus 512 Bytes oder mehr Speicher besteht.
  • BEISPIELE NICHTFLÜCHTIGER SPEICHERZELLEN
  • Die Speicherelemente umfassen typischerweise einen oder mehrere Speicherchips, welche auf einer Karte moniert werden können. Jeder Speicherchip umfasst ein Array von Speicherzellen, welches von peripheren Schaltungen wie zum Beispiel Decoder, Lösch-, Schreib- und Leseschaltungen unterstützt wird. Die meisten hochentwickelten Speicherbausteine kommen mit einem Controller, welcher intelligente übergeordnete Speicheroperationen und Interfacing durchführt, einher. Es gibt viele kommerziell erfolgreiche nichtflüchtige Festkörperspeicherelemente, welche heutzutage verwendet werden. Diese Speicherelemente können unterschiedliche Typen von Speicherzellen verwenden, wobei jeder Typ einen oder mehrere Ladungsspeicherelemente aufweist.
  • 1A1E in den beiliegenden Zeichnungen stellen schematisch unterschiedliche Beispiele nichtflüchtiger Speicherzellen dar.
  • 1A stellt einen nichtflüchtigen Speicher in Form einer EEPROM-Zelle mit einem Floating Gate zum Speichern von Ladung dar. Ein elektrisch löschbarer und programmierbarer Nur-Lese-Speicher (EEPROM) weist eine ähnliche Struktur wie ein EPROM auf, stellt jedoch zusätzlich einen Mechanismus zum Laden und elektrischen Entfernen von Ladung von seinem Floating Gate nach Anwendung einer geeigneter Spannung ohne Notwendigkeit einer Bestrahlung zur Verfügung. Beispiele solcher Zellen und deren Herstellungsverfahren werden in US Patent 5,595,924 angeführt.
  • 1B stellt eine Flash EEPROM Zelle, welche sowohl ein Select Gate als auch ein Cotrol oder Steering Gate aufweist, schematisch dar. Die Speicherzelle 10 weist einen "Split-Channel" 12 zwischen Source 14 Drain 16 auf. Eine Zelle wird effektiv aus zwei Transistoren T1 und T2 in Reihe gebildet. T1 dient als Speichertransistor, welcher ein Floating Gate 20 und ein Control Gate 30 aufweist. Das Floating Gate ist in der Lage, einen wählbaren Ladungsbetrag zu speichern. Der Betrag der Ladung, welcher durch den Teil des Kanals von T1 fließen kann, hängt von der Spannung am Control Gate 30 ab sowie vom Betrag der Ladung, welche auf dem Floating Gate 20 verbleibt. T2 dient als ein Select Transistor, welcher ein Select Gate 40 aufweist. Wenn T2 durch eine Spannung am Select Gate 40 eingeschaltet wird, kann ein Strom im Anteil des Kanals von T1 zwischen Source und Drain fließen. Der Select Transistor stellt ein Schalter entlang dem Source-Drain-Kanal unabhängig von der Spannung am Control Gate zur Verfügung. Ein Vorteil besteht darin, dass dieser dazu verwendet werden kann, diejenigen Zellen auszuschalten, welche bei einer Spannung von null Volt am Control Gate aufgrund von Ladungsverarmung (positiv) an deren Floating Gates noch immer leitend sind. Der andere Vorteil besteht darin, dass dieser Source Side Injection Programmierung ermöglicht, um einfacher implementiert werden zu können.
  • Eine einfache Ausgestaltung der Split-Channel Speicherzelle ist diejenige, bei der das Select Gate und das Control Gate mit der selben Wortleitung verbunden sind, wie schematisch mit einer punktierten Linie in 1B gezeigt ist. Dies wird erreicht, indem ein ladungsspeicherndes Element (Floating Gate) über einem Teil des Kanals und einer Control Gate Struktur (welche ein Teil einer Wortleitung ist) sowohl über dem anderen Kanalanteil als auch dem ladungsspeichernden Element angeordnet wird. Dies bildet eine Zelle mit zwei Transistoren in Reihe, einem (Speichertransistor) mit einer Kombination des Ladungsbetrages auf dem Ladungsspeicherelement und der Spannung an der Wortleitung, welche den Ladungsbetrag kontrollieren kann, welcher durch seinen Teil des Kanals fließen kann, sowie dem andern (Select Transistor), welcher eine alleinig als sein Gate dienende Wortleitung aufweist. Beispiele solcher Zellen, deren Verwendung in Speichersystemen und Verfahren zur Herstellung werden in US Patenten 5,070,032, 5,095,344, 5,315,541, 5,343,063 und 5,661,053 beschrieben.
  • Eine verfeinerte Ausgestaltung der in 1B gezeigten Split Channel Zelle besteht darin, dass das Select Gate und das Control Gate unabhängig sind und nicht durch die punktiere Leitung verbunden sind. Bei einer Implementierung sind die Control Gates einer Spalte in einem Array von Zellen mit einer Kontroll- (oder Steuer-) Leitung senkrecht zu den Wortlinien verbunden. Die Auswirkung besteht darin, die Wortleitungen davon zu entlasten, zwei Funktionen zur gleichen Zeit durchzuführen wenn eine ausgewählte Zelle gelesen oder programmiert wird. Diese zwei Funktionen bestehen darin (1) als Gate eines Select Transistors zu dienen und erfordert deshalb eine zugehörige Spannung, um den Select Transistor ein- und auszuschalten, sowie (2) vorantreiben einer Spannung des Ladungsspeicherelements bis zu einer gewünschten Spannung durch eine elektrische Feld- (kapazitive) Koppelung zwischen der Wortleitung und dem Ladungsspeicherelement. Es ist häufig schwierig, beide dieser zwei Funktionen in einer optimalen Weise mit einer einzelnen Spannung durchzuführen. Mit der getrennten Ansteuerung des Control Gates und des Select Gates braucht die Wortleitung nur Funktion (1) durchzuführen, während die hinzugefügte Kontrolleitung Funktion (2) durchführt. Dies ermöglicht das Design für eine bessere Programmierperformance, wobei die Programmierspannung auf die Zieldaten abgestellt ist. Die Verwendung unabhängiger Control (oder Steering) Gates in einem Flash EEPROM Array wird beispielsweise in US Patenten 5,313,421 und 6,222,762 beschrieben.
  • 1C stellt eine andere Flash EEPROM Zelle schematisch dar, welche Dual Floating Gates sowie unabhängige Select und Control Gates aufweist. Die Speicherzelle 10 ähnelt der in 1B, außer, dass diese gewissermaßen drei Transistoren in Reihe aufweist. Bei diesem Zellentyp sind zwei Speicherelemente (d.h. das von T1 – links und T1 – rechts) über dem Kanal zwischen Source und Drain Diffusionen mit einem Select Transistor T1 vorhanden. Die Speichertransistoren weisen Floating Gates 20 und 20' beziehungsweise Control Gates 30 und 30' auf. Der Select Transistor wird durch ein Select Gate gesteuert. Zu einem gegebenen Zeitpunkt wird nur einer des Paars von Speichertransistoren zum Lesen und Schreiben angesteuert. Wenn die Speichereinheit T1 angesteuert wird, werden sowohl T2 und T1 – rechts eingeschaltet um einen Stromfluss im linken Teil des Kanals zwischen Source und Drain zu ermöglichen. Ebenso werden T2 und T1 – links einge schaltet, wenn auf die Speichereinheit T1 – rechts zugegriffen wird. Das Löschen wird durch einen Anteil Select Gate Polysiliziums in Nähe des Floating Gates und Anwenden einer positiven Spannung (z.B. 20V) am Select Gate bewirkt, so dass die im Floating Gate gespeicherten Elektronen zum Select Gate Polysilizium tunneln können.
  • 1D stellt einen Strang eines in einer NAND Zelle organisierten Arrays schematisch dar. Eine NAND Zelle 50 besteht aus einer Reihe von Speichertransistoren M1, M2, ... Mn (n = 4, 8, 16 oder mehr) in einer Verkettung derer Sources und Drains. Ein Paar Select Transistoren S1, S2 kontrollieren die Speichertransistorenverkettung nach Außen über Source-Anschluss 54 und Drain-Anschluss 56 der NAND Zelle. Wenn in einem Speicherarray der Source Select Transistor S1 eingeschaltet wird, ist der Source-Anschluss mit einer Source-Leitung gekoppelt. Wenn der Select Transistor S2 eingeschaltet wird, wird in gleicher Weise der Drain-Anschluss der NAND Zelle mit einer Bitleitung des Speicherarrays gekoppelt. Jeder Speichertransistor in der Kette hat zum Speichern einer bestimmten Ladungsmenge ein Ladungsspeicherelement, um einen beabsichtigten Speicherzustand zu verkörpern. Ein Control Gate von jedem Speichertransistor stellt eine Kontrolle von Lese- und Schreiboperationen zur Verfügung. Ein Control Gate von jedem der Select Transistoren S1, S2 stellt eine Zugriffskontrolle der NAND Zelle über seinen Source-Anschluss 54 beziehungsweise Drain-Anschluss 56 zur Verfügung.
  • Wenn ein adressierter Speichertransistor innerhalb einer NAND Zelle während einer Programmierung gelesen und geprüft wird, wird sein Control Gate mit einer geeigneten Spannung versorgt. Geichzeitig wird der Rest der nicht-adressierten Speichertransistoren in der NAND Zelle 50 durch Anwenden einer ausreichenden Spannung an deren Control Gates eingeschaltet. Auf diese Weise wird ein leitender Pfad von der Source des einzelnen Speichertransistors zum Source-Anschluss 54 der NAND Zelle und gleichermaßen für das Drain des einzelnen Speichertransistors zum Drain-Anschluss 56 der Zelle gebildet. Speicherelemente mit solch einer NAND Zellenstruktur werden in den US Patenten 5,570,315, 5,903,495 und 6,046,935 beschrieben.
  • 1E stellt schematisch einen nichtflüchtigen Speicher mit einer dielektrischen Schicht zum Speichern von Ladung dar. Anstelle der zuvor beschriebenen leitenden Floating Gate Elemente wird eine dielektrische Schicht verwendet. Solche Speicherelemente, welche dielektrische Speicherelemente verwenden, wurden von Bitan et al., "NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell," IEEE Electron Device Letters, Vol. 21, Nr. 11, November 2000, S. 543–545 beschrieben. Eine dielektrische ONO Schicht erstreckt sich über den Kanal zwischen Source und Drain Diffusion. Die Ladung für ein Bit Daten befindet sich in der dielektrischen Schicht, welche an die Drain angrenzt, und die Ladung für die anderen Datenbit befinden sich in der dielektrischen Schicht, welche an der Source angrenzt. Zum Beispiel offenbaren US Patente 5,768,192 und 6,011,725 eine nichtflüchtige Speicherzelle, welche ein einfangendes Dielektrikum aufweist, welches zwischen zwei Silikondioxidschichten angeordnet ist. Mehrzustand-Datenspeicherung wird durch separates Lesen der binären Zustände der räumlich getrennten ladungsspeichernden Bereichen innerhalb des Dielektrikums implementiert.
  • SPEICHERARRAY
  • Ein Speicherelement umfasst typischerweise ein zweidimensionales Array, welches in Reihen und Spalten angeordnet ist und über Wortleitungen und Bitleitungen adressierbar ist. Das Array kann gemäß einer NOR Typ oder einer NAND Typ Architektur ausgestaltet werden.
  • NOR Array
  • 2 in den beiliegenden Zeichnungen stellt ein Beispiel eines NOR Arrays von Speicherzellen dar. Speicherelemente mit einer NOR Typ Architektur wurden mit Zellen des in 1 oder 1C dargestellten Typs implementiert. Jede Reihe von Speicherzellen sind durch deren Sources und Drains in einer Verkettungsart verbunden. Dieses Design wird manchmal als Virtual Ground Design bezeichnet. Jede Speicherzelle 10 weist eine Source 14, ein Drain 16, ein Control Gate und ein Select Gate 40 auf. Die ausgewählten Select Gates der Zellen in einer Reihe sind mit Wortleitungen 42 verbunden. Die Zellen in einer Spalte sind mit den Sources beziehungsweise Drains ausgewählter Bitleitungen 34 verbunden. Bei einigen Ausgestaltungen, bei denen die Control Gates und Select Gates der Speicherzellen unabhängig voneinander steuerbar sind, verbindet auch eine Steering Leitung 36 die Control Gates der Zellen in einer Spalte.
  • Viele Flash EEPROM Bauelemente werden mit Speicherzellen implementiert, wobei jede Zelle mit seinem Control Gate und Select Gate miteinander verbunden sind. In diesem Fall besteht keine Notwendigkeit für Steering Leitungen und eine Wortleitung verbindet alle Control Gates und Select Gates der Zellen entlang jeder Reihe. Beispiele für diese Bauarten werden in US Patenten 5,172,338 und 5,418,752 offenbart. Bei dieser Bauart üben die Wortleitungen im Wesentlichen zwei Funktionen aus: Reihenauswahl und Versorgen aller Zellen in der Reihe mit einer Control Gate Spannung zum Lesen oder Programmieren.
  • NAND Array
  • 3 in den beiliegenden Zeichnungen stellt ein Beispiel für ein NAND Array von Speicherzellen, so wie beispielsweise das in 1D gezeigte, dar. Entlang jeder Spalte von NAND Zellen ist eine Bitleitung mit dem Drain-Anschluss 56 von jeder NAND Zelle gekoppelt. Entlang jeder Reihe von NAND Zellen kann eine Sourceleitung alle deren Source-Anschlüsse 54 verbinden. Auch die Control Gates der NAND Zellen entlang einer Reihe sind mit einer Reihe entsprechender Wortleitungen verbunden. Eine gesamte Reihe von NAND Zellen kann durch Einschalten des Paares Select Transistoren (siehe 1D) mit geeigneten Spannungen an deren Control Gates über die verbundenen Wortleitungen adressiert werden. Wenn ein Speichertransistor innerhalb der Kette einer NAND Zelle gelesen wird, werden die verbleibenden Speichertransistoren in der Kette über deren zugehörigen Wortleitungen eingeschaltet, so dass der durch die Kette fließende Strom im Wesentlichen von dem in der Zelle, welche gelesen wird, gespeicherten Ladungspegel abhängig ist. Ein Beispiel einer NAND Architektur und deren Betrieb als Teil eines Speichersystemsist in US Patenten 5,570,315, 5,774,397 und 6,046,935 zu finden.
  • Blocklöschen
  • Programmieren ladungsspeichernder Speicherelementen kann nur auf Hinzufügen von mehr Ladung auf deren Ladungsspeicherelementen hinauslaufen. Daher muss vor einer Programmieroperation eine vorhandene Ladung in einem Ladungsspeicherelement entfernt (oder gelöscht) werden. Löschschaltungen (nicht gezeigt) werden zum Löschen eines oder mehrerer Blöcke zur Verfügung gestellt. Ein nichtflüchtiger Speicher so wie ein EEPROM wird als "Flash" bezeichnet, wenn ein gesamtes Array von Zellen oder signifikante Gruppen von Zellen des Arrays zusammen elektrisch gelöscht werden (d.h. in einem Flash). Sobald dieses gelöscht ist, kann die Gruppe von Zellen dann wieder programmiert werden.
  • Die zusammen löschbare Gruppe von Zellen kann aus einer oder mehrerer adressierbarer Löscheinheiten bestehen. Diese Löscheinheiten oder Blöcke speichern üblicherweise eine oder mehrere Seiten von Daten, wobei die Seite die Einheit zum Programmieren und Löschen ist, obwohl mehr als eine Seite während einer einzelnen Operation programmiert oder gelöscht werden kann. Jede Seite speichert üblicherweise einen oder mehrere Sektoren von Daten, wobei die Größe des Sektors vom Hostsystem festgelegt wird. Ein Beispiel ist ein Sektor mit 512 Byte Nutzdaten, welcher einem mit magnetischen Disketten laufwerken eingeführten Standard folgt, zuzüglich einer Anzahl von Byte Overheadinformationen über die Nutzdaten und/oder den Block, in welchem diese gespeichert werden.
  • LESE/SCHREIB-SCHALTUNGEN
  • Bei der üblichen Zweizustand EEPROM Zelle ist zumindest ein Stromanhaltepunktpegel festgelegt, um das Leitungsfenster in zwei Bereiche zu unterteilen. Wenn eine Zelle durch Anwenden vorgegebener, festgelegter Spannungen gelesen wird, wird aus deren Source/Drain-Strom durch Vergleichen mit dem Anhaltepunktpegel (oder Referenzstrom IRE) ein Speicherzustand ermittelt. Wenn der gelesene Strom höher als der Anhaltepunktpegel ist, wird festgelegt, dass sich die Zelle in einem logischen Zustand (z.B. ein Zustand "null") befindet. Wenn der Strom andererseits niedriger als der des Anhaltepunktpegels ist, wird festgelegt, dass sich die Zelle im anderen logischen Zustand (z.B. ein Zustand "eins") befindet. Auf diese Weise speichert solch eine Zweizustandzelle ein Bit digitale Informationen. Eine extern programmierbare Referenzstromquelle wird häufig als Teil eines Speichersystems zur Verfügung gestellt, um den Anhaltepunktstrompegel zu erzeugen.
  • Um die Speicherkapazität zu erhöhen, werden Flash EEPROM Bauelemente mit immer höheren Dichten gefertigt, da die Halbleitertechnologie Fortschritte macht. Ein weiteres Verfahren zum Erhöhen der Speicherkapazität besteht darin, dass jede Speicherzelle mehr als ein Bit Daten speichert.
  • Bei einem Mehrzustand oder Mehrpegel EEPROM Speicherarray ist das Leitungsfenster durch mehr als einen Anhaltepunkt in mehr als zwei Bereiche unterteilt, so dass jede Zelle dazu in der Lage ist, mehr als ein Bit Daten zu speichern. Die Menge an Informationen, welche ein bestimmtes EEPROM Array speichern kann, wird auf diese Weise mit der Anzahl der Zustände, welche jede Zelle speichern kann, erhöht. EEPROM oder Flash EEPROM mit Mehrzustand oder Mehrpegel Speicherzellen wurden in US Patent 5,172,338 beschrieben.
  • In der Praxis wird der Speicherzustand einer Zelle üblicherweise durch Abtasten des Leitungsstromes über der Source und Drain Elektrode der Zelle gelesen, wenn eine Referenzspannung am Control Gate angelegt wird. Auf diese Weise kann für eine gegebene Ladung auf dem Floating Gate einer Zelle ein entsprechender Leitungsstrom in Bezug auf eine feste Referenz-Control-Gate-Spannung ermittelt werden. Auf ähnliche Weise defi niert der auf dem Floating Gate programmierbare Bereich Ladungen ein entsprechendes Schwellenspannungsfenster oder ein entsprechendes Leitungsstromfenster.
  • Anstelle den Leitungsstrom entlang eines unterteilten Stromfensters zu ermitteln, ist es alternativ möglich, für einen gegebenen Speicherzustand, welcher einer Prüfung unterzogen wird, am Control Gate die Schwellenspannung festzulegen und zu ermitteln, ob der Leitungsstrom niedriger oder höher als ein Schwellenstrom ist. Bei einer Implementierung wird die Ermittlung des Leitungsstromes relativ zu einem Schwellenstrom durch Prüfen des Anteils des Leitungsstromes, welcher sich durch die Kapazität der Bitleitung entlädt, durchgeführt.
  • In den beiliegenden Zeichnungen stellt 4 die Relation zwischen dem Source-Drain Strom ID und der Control Gate Spannung VCG für vier unterschiedliche Ladungen Q1–Q4 dar, welche das Floating Gate zu einem gegebenen Zeitpunkt wahlweise speichern kann. Die vier Kurven von ID über VCG zeigen vier mögliche Ladungspegel, welche auf einem Floating Gate einer Speicherzelle programmiert werden können, welche vier möglichen Speicherzuständen entsprechen. Als Beispiel kann das Schwellenspannungsfenster einer Gesamtheit von Zellen von 0,5V bis 3,5V reichen. Sechs Speicherzustände können durch Unterteilen des Schwellenfensters in fünf Bereiche in einem Intervall von jeweils 0,5V abgegrenzt werden. Wenn beispielsweise wie gezeigt ein Referenzstrom IREF von 2 μA verwendet wird, wird die Zelle mit Q1 programmiert, was als ein Speicherzustand "1" betrachtet werden kann, da sich seine Kurve mit IREF im Bereich des Schwellenfensters überschneidet, welches durch VCG = 0,5V und 1,0V abgegrenzt ist. In gleicher Weise befindet sich Q4 in einem Speicherzustand "5".
  • Je mehr Zustände in einer Speicherzelle gespeichert werden sollen, desto feiner ist deren Schwellenfenster unterteilt, wie aus der obigen Beschreibung ersichtlich ist. Dies wird eine höhere Präzision der Programmier- und Leseoperationen erfordern, um in der Lage zu sein, die erforderliche Auflösung zu erzielen.
  • US Patent 4,357,685 offenbart ein Verfahren zum Programmieren eines EPROM mit zwei Zuständen. Wenn eine Zelle in einen vorgegebenen Zustand programmieren wird, unterliegt diese jedes Mal sukzessiven Programmierspannungsimpulsen wenn inkrementell Ladung auf das Floating Gate hinzugefügt wird. Zwischen Impulsen wird die Zelle zurückgelesen oder überprüft, um ihren Source-Drain Strom relativ zum Anhaltepunktpegel zu bestimmen. Die Programmierung hört auf, wenn bestätigt wird, dass der Stromzustand den gewünschten Zustand erreicht hat. Die verwendete Programmierimpulsfolge kann eine zunehmende Periode oder Amplitude aufweisen.
  • Programmierschaltungen gemäß dem Stand der Technik wenden lediglich Programmierimpulse an, um vom gelöschten Zustand oder Grundzustand das Schwellenfenster zu durchschreiten bis der Zielzustand erreicht wird. Praktisch würde jede unterteilte oder abgegrenzte Region zumindest etwa fünf Programmierschritte erfordern um durchlaufen zu werden. Die Performance ist für eine Zweizustandzelle akzeptabel. Bei Mehrzustandzellen nimmt allerdings die Anzahl der Schritte mit der Anzahl der Unterteilungen zu und deshalb muss die Präzision der Programmierung oder die Auflösung erhöht werden. Zum Beispiel benötigt eine 16-Zustandzelle durchschnittlich zumindest 40 Programmierimpulse, um einen Zielzustand zu programmieren.
  • 5 in den beiliegenden Zeichnungen stellt ein Speicherelement mit einer typischen Anordnung eines Speicherarrays 100 dar, auf welches über Lese/Schreib-Schaltungen 170 über Reihendecoder 130 und Spaltendecoder 160 zugegriffen werden kann. Wie in Zusammenhang mir 2 und 3 beschrieben wurde, ist ein Transistor einer Speicherzelle im Speicherarray 100 über eine Reihe von ausgewählten Wortleitung(en) und Bitleitung(en) adressierbar. Der Reihendecoder 130 wählt eine oder mehrere Wortleitungen aus und der Spaltendecoder 160 wählt eine oder mehrere Bitleitungen aus, um geeignete Spannungen an den jeweiligen Gates der adressierten Speichertransistoren anzuwenden. Lese/Schreib-Schaltungen 170 werden zur Verfügung gestellt, um die Speicherzustände von adressierten Speichertransistoren zu lesen oder zu schreiben (programmieren). Lese/Schreib-Schaltungen 170 umfassen eine Anzahl von Lese/Schreib-Modulen, welche über Bitleitungen mit Speicherelementen im Array verbunden werden können.
  • 6A in den beiliegenden Zeichnungen ist ein schematisches Blockdiagramm eines einzelnen Lese/Schreib-Moduls. Im Wesentlichen ermittelt ein Leseverstärker während des Lesens oder des Prüfens den durch die Drain eines adressierten Speicherzellentransistors fließenden Strom, welcher über ausgewählte Bitleitungen verbunden ist. Der Strom hängt von der im Speichertransistor gespeicherten Ladung sowie von seiner Control Gate Spannung ab. Beispielsweise kann in einer Mehrzustand EEPROM Zelle sein Floating Gate bis zu einem von mehreren unterschiedlichen Pegeln geladen werden. Bei einer 4-Pegel-Zelle kann dies verwendet werden, um zwei Bit Daten zu speichern. Der mit dem Leseverstärker ermittelte Pegel wird mit einer Pegel-zu-Bit wandelnden Logik in einen in einem Daten-Latch zu speichernden Satz Datenbit umgewandelt.
  • LESE/SCHREIB-PERFORMANCE UND GENAUIGKEIT BEEINFLUSSENDE FAKTOREN
  • Um das Lesen und Programmieren zu verbessern, werden mehrere ladungsspeichernde Elemente oder Speichertransistoren in Arrays parallel gelesen oder programmiert. Auf diese Weise wird eine logische "Seite" von Speicherelementen zusammen gelesen oder programmiert. In existierenden Speicherarchitekturen enthält eine Reihe üblicherweise mehrere interleaved Seiten. Alle Speicherelemente einer Seite werden zusammen gelesen oder programmiert. Der Spaltendecoder verbindet selektiv jede der interleaved Seiten mit einer entsprechenden Anzahl von Lese/Schreib-Modulen. Bei einer Implementierung ist beispielsweise vorgesehen, dass das Speicherarray eine Seitengröße von 532 Bytes (512 Bytes zuzüglich 20 Byte Overhead) aufweist. Wenn jede Spalte eine Drain Bitleitung enthält und zwei interleaved Seiten pro Reihe vorhanden sind, beläuft sich dies auf 8512 Spalten, wobei jede Seite mit 42565 Spalten in Zusammenhang steht. Es sind 4256 Sense-Module vorhanden, welche verbunden werden können, um entweder alle geraden Bitleitungen oder ungeraden Bitleitungen parallel zu lesen oder zu schreiben. Auf diese Weise wird eine Seite mit 4256 Bit (d.h. 532 Byte) Daten parallel aus den programmierten Seiten gelesen oder in die Seiten von Speicherelementen programmiert. Die die Lese/Schreib-Schaltungen bildende Lese/Schreib-Module 170 können in verschiedenen Architekturen angeordnet werden.
  • Mit Bezug auf 5 sind die Lese/Schreib-Schaltungen 170 in Bänken von Lese/Schreib-Stacks 180 organisiert. Jeder Lese/Schreib-Stack 180 ist ein Stack aus Lese/Schreib-Modulen 190. In einem Speicherarray ist der Spaltenabstand durch die Größe des einen oder der zwei Transistoren, welche diese belegen, festgelegt. Wie in 6A gesehen werden kann, wird die Schaltung eines Lese/Schreib-Moduls wahrscheinlich mit viel mehr Transistoren und Schaltungselementen implementiert werden und wird daher einen Raum über viele Spalten in Anspruch nehmen. Um mehr als eine Spalte entlang der besetzten Spalten zu versorgen, werden mehrere Module übereinander gestapelt.
  • 6B in den beiliegenden Zeichnungen zeigt den Lese/Schreib-Stack aus 5, welcher konventionell mit einem Stack aus Lese/Schreib-Modulen implementiert ist. Zum Beispiel kann sich ein Lese/Schreib-Modul über sechzehn Spalten erstrecken. Dann kann ein Lese/Schreib-Stack 180 mit einem Stack aus acht Lese/Schreib-Modulen verwendet werden, um acht Spalten parallel zu versorgen. Der Lese/Schreib-Stack kann über einen Spaltendecoder entweder mit den acht ungeraden Spalten (1, 3, 5, 7, 9, 11, 13, 15) oder den acht geraden Spalten (2, 4, 6, 8, 10, 12, 14, 16) entlang der Bank gekoppelt werden.
  • Wie zuvor erwähnt verbessern konventionelle Speicherelemente Lese/Schreiboperationen durch einen gleichzeitigen parallelen Betrieb aller geraden oder ungeraden Bitleitungen. Diese Architektur einer aus zwei interleaved Seiten bestehenden Reihe vereinfacht das Problem, die Blöcke der Lese/Schreib-Schaltungen anzupassen. Es wird auch in Erwägung gezogen, kapazitive Koppelung von Bit-Leitung mit Bit-Leitung zu kontrollieren. Ein Blockdecoder wird dazu verwendet, den Satz Lese/Schreib-Module in entweder die geraden Seiten oder ungeraden Seiten zu multiplexen. Wann immer ein Satz Bitleitungen gelesen oder programmiert wird, kann auf diese Art und Weise der Interleaving Satz geerdet werden, um ein unmittelbares Koppeln von Nachbarn zu minimieren.
  • Jedoch ist die Interleaving-Seiten-Architektur unter zumindest drei Aspekten nachteilig. Erstens erfordert diese zusätzliche Multiplexschaltungen. Zweitens hat diese eine langsame Performance. Um ein Lesen oder Programmieren von Speicherzellen zu beenden, welche mit einer Wortleitung verbunden sind oder welche sich in einer Reihe befinden, sind zwei Lese- oder Programmieroperationen erforderlich. Drittens ist es beim Adressieren anderer Störeffekte, wie Feldkoppelung zwischen benachbarten Ladungsspeicherelementen am Floating Gate Pegel, auch nicht optimal, wenn die zwei Nachbarn zu unterschiedlichen Zeiten programmiert werden, wie zum Beispiel separat in geraden und ungeraden Seiten.
  • Das Problem der Feldkopplung benachbarter Elemente wird bei geringerem Abstand zwischen den Speichertransistoren deutlicher ausgeprägter. In einem Speichertransistor ist ein Ladungsspeicherelement zwischen einem Kanalbereich und einem Control Gate angeordnet. Der im Kanalbereich fließende Strom ist eine Funktion des resultierenden elektrischen Feldes, welches vom Feld am Control Gate und dem Ladungsspeicherelement beigetragen wird. Bei andauernd steigender Dichte werden die Speichertransistoren näher und näher zueinander angeordnet. Das Feld von benachbarten Ladungselementen liefert dann einen signifikanten Beitrag zum resultierenden Feld einer beeinflussten Zelle. Das benachbarte Feld ist von der in das Ladungsspeicherelement programmierten Ladung der Nachbarn abhängig. Dieses störende Feld ist dynamisch, da es sich mit den programmierten Zuständen der Nachbarn verändert. Deshalb kann eine beeinflusste Zelle zu unterschiedlichen Zeitpunkten in Abhängigkeit von den Speicherzuständen der Nachbarn unterschiedlich ausgelesen werden
  • Die konventionelle Architektur von Interleaving Seiten verschlimmert den durch Kopplung benachbarter Floating Gates verursachten Fehler. Da die geraden Seiten und die ungera den Seiten unabhängig voneinander programmiert und gelesen werden, kann eine Seite unter Bedingungen programmiert werden aber unter ganz anderen Bedingungen gelesen werden, abhängig davon, was sich in der Zwischenzeit in der anderen Seite ereignet hat. Die Lesefehler werden mit zunehmender Dichte schwerwiegender, was eine präzisere Leseoperation und eine gröbere Unterteilung des Schwellenfensters für Implementierungen von Mehrzuständen erfordert. Die Performance wird darunter abnehmen und die potentielle Kapazität bei einer Implementierung von Mehrzuständen ist begrenzt.
  • Es wird auch auf die Europäische Patentveröffentlichung 0 851 424 und US Patent 4,802,136 Bezug genommen. Die Europäische Patentveröffentlichung 0 851 424 beschreibt ein Halbleiterspeicherelement mit seriellem Zugriff, welches in der Lage ist, die Zugriffszeit zu reduzieren und den Stromverbrauch zu senken. Ein Speicherzellenarray umfasst eine Vielzahl von Speicherzellen und Schieberegister, welche eine Vielzahl von in Reihe geschaltete Latch-Schaltungen aufweisen. Die Schieberegister halten die vom Speicherzellenarray erhaltenen Daten und können die gehaltenen Daten in der Reihenfolge, in welcher die Latch-Schaltungen angeordnet sind, seriell ausgeben. US Patent 4,802,136 beschreibt eine Speicherschaltung, welche taktgesteuerte Daten-Latch-Schaltungen umfasst, welche mit getakteten Invertern ausgestaltet sind. Ein Taktgeber in der Schaltung versorgt die Inverter mit Taktsignalen, welche sequenziell generiert werden, so dass sich die Taktphase für einen Endzustand der Daten-Latch-Schaltung vor derjenigen für einen Anfangszustand befindet.
  • Die vorliegende Erfindung richtet sich auf ein Verfahren zum Speichern von N Datenelementen in einer in einer Kette von Verbindungsmodulen in einer nichtflüchtigen Speichervorrichtung. Das Verfahren umfasst die folgenden Schritte:
    • (a) Bereitstellen einer Kette umfassend zumindest N Verbindungsmodule, wobei jedes Modul steuerbar ist, sich entweder als ein Inverter oder ein Latch zu verhalten,
    • (b) Serielles Eingeben dieser N Datenelemente in die Kette von einem gegenüberliegenden Ende in ein erstes Verbindungsmodul,
    • (c) Zwischenspeichern eines ersten Datenelementes in dem ersten Verbindungsmodul während das erste Verbindungsmodul zu steuern, sich als ein Latch zu verhalten und alle invertierende Verbindungsmodule, sich als Inverter zu verhalten;
    • (d) Zwischenspeichern eines folgenden Datenelementes in einem folgenden Verbindungsmodul während das folgende Verbindungsmodul zu steuern, sich als ein Latch zu verhalten und alle invertierenden Verbindungsmodule, sich als Inverter zu verhalten, und
    • (e) Wiederholen von Schritt (d) bis alle N Datenelemente in der Kette gespeichert sind.
  • Ebenfalls wird ein Verfahren zum Lesen von in einer Kette von Verbindungsmodulen gespeicherten N Datenelementen in einer nichtflüchtigen Speichervorrichtung offenbart, wobei jedes Verbindungsmodul steuerbar ist, sich entweder als ein Inverter oder ein Latch zu verhalten. Dieses Verfahren umfasst:
    • (a) Auslesen aus der Kette beginnend von einem ersten Verbindungsmodul eines in dem ersten Verbindungselement gespeicherten Datenelementes, während alle Verbindungsmodule zu steuern, sich als Latches zu verhalten,
    • (b) Auslesen eines nächsten in einem folgenden Verbindungsmodul gespeicherten Datenelementes während diese Verbindungsmodule zu steuern, welche zuvor ausgelesen wurden, sich als Inverter zu verhalten und diese Verbindungsmodule, welche nicht ausgelesen wurden, sich als Latches zu verhalten, und
    • (c) Wiederholen von Schritt (b) bis alle N Datenelemente ausgelesen sind.
  • Das obige Leseverfahren kann den Schritt umfassen, einzelne Datenelemente selektiv zu Invertieren, wenn diese ausgelesen werden. Bei beiden Verfahren kann die Kette weiter in mehr als ein Kettenelement unterteilt werden.
  • Die Verfahren der Erfindung sind für die Verwendung in einer Speichervorrichtung geeignet, welche eine Architektur aufweist, welche eine Redundanz von Blöcken von Lese/Schreib-Schaltungen auf ein Minimum reduziert. Signifikante Platz- und Energieeinsparungen können durch Umverteilen des Blocks von Lese/Schreib-Modulen in einen Block von Lese/Schreib-Modul-Kernteilen, welche parallel arbeiten, erreicht werden, während diese mit einer geringeren Anzahl gemeinsamer Teile in einer Art Zeit-Multiplexen interagieren. In solch einem Bauelement sind die Komponenten der Kernteile in einer Bank gleichartiger Stacks organisiert, wobei jeder ein Stack solcher Kernteile ist, welche einen gemeinsamen Teil gemeinsam nutzen. Ein serieller Bus kann eine Kommunikation zwischen Lese/Schreib-Kernmodulen und dem gemeinsamen Teil in jedem Stack zur Verfügung stellen. Auf diese Weise muss ein Minimum von Kommunikationsleitungen in jedem Stack verwendet werden. Ein Buscontroller sendet Kontroll- und Taktsignale, um den Betrieb der Komponenten und deren Interaktion über den seriellen Bus zu kontrollieren. In einer bevorzugten Ausgestaltung werden die entsprechenden Komponenten in allen gleichen Stacks gleichzeitig kontrolliert.
  • In Verfahren der Erfindung werden die den Lese/Schreib-Schaltungen zugehörige Daten-Latches durch ein kompaktes Verbinden I/O aktiviert, um die Speicherung und seriellen Transfer in Art einer Kette zu vereinfachen. In einer bevorzugten Ausgestaltung werden die Daten-Latches durch eine oder mehrere Ketten aus Verbindungsmodulen implementiert. Die einzelnen Verbindungsmodule können gesteuert werden, sich entweder als Inverter oder Latches zu verhalten. Ein Verfahren ermöglicht die Verwendung einer minimalen Anzahl von Verbindungsmodulen durch Austauschen von Daten zwischen einem Satz Master Verbindungsmodule und einem im Wesentlichen kleineren Satz Slave Verbindungsmodule.
  • Durch die Verwendung von Daten-Latches bei Verfahren der Erfindung wird wertvoller Platz auf dem Chip eingespart, da diese die serielle Eingabe und Ausgabe von Daten vereinfachen, während eine Reduzierung der Anzahl der Slave Verbindungsmodulen ermöglicht wird. Platzeinsparung durch die verschiedenen Aspekte der vorliegenden Offenbarung ermöglichen ein kompakteres Chipdesign. Die Schaltungseinsparung und folglich die Platzeinsparung sowie die Leistungsaufnahmeeinsparung kann 50 Prozent im Vergleich zu Lese/Schreib-Schaltungen betragen. Insbesondere können die Lese/Schreib-Module dicht gepackt werden, so dass sie gleichzeitig als eine zusammenhängende Reihe von Speicherzellen des Speicherarrays dienen.
  • Eine dazu angepasste nichtflüchtige Speichervorrichtung um die Verfahren der Erfindung zu nutzen kann eine Architektur aufweisen, bei der die Lese/Schreib-Module dicht gepackt sind, so dass diese eine zusammenhängende Reihe von Speicherzellen des Speicherarrays versorgen können. Dies ermögliche ein zusammenhängendes Lesen und Programmieren eines Segments oder einer gesamten Reihe von Speicherzellen, was zu einer Verbesserung der Performance und der Reduzierung der Kopplungsfehler aufgrund von Feldern benachbarter Speicherzellen führt.
  • Zusätzliche Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden Beschreibung als Beispiel der Erfindung ersichtlich, wobei die Beschreibung in Verbindung mit den beiliegenden Zeichnungen betrachtet werden sollte, wobei:
  • 1A1E stellen unterschiedliche Beispiele nichtflüchtiger Speicherzellen schematisch dar,
  • 2 stellt ein Beispiel eines NOR Arrays von Speicherzellen dar,
  • 3 stellt ein Beispiel eines NAND Arrays von Speicherzellen, so wie beispielsweise das in 1D gezeigte dar,
  • 4 stellt den Zusammenhang zwischen dem Source-Drain Strom und der Control Gate Spannung für vier unterschiedliche Ladungen Q1–Q4 dar, welche das Floating Gate zu einer Zeit speichern kann,
  • 5 stellt eine typische Anordnung eines Speicherzellenarrays schematisch dar, welches durch Lese/Schreib-Schaltungen über Reihen- und Spaltendecoder ansteuerbar ist,
  • 6A ist ein schematisches Blockdiagramm eines einzelnen Lese/Schreib-Moduls,
  • 6B zeigt den Lese/Schreib-Stack aus 5, welcher mit einem Stack aus Lese/Schreib-Modulen konventionell implementiert ist,
  • 7A ist ein schematisches Blockdiagramm eines einzelnen Lese/Schreib-Moduls, welches in einen Kernteil und einen gemeinsamen Teil unterteilt ist,
  • 7B stellt einen alternativen Kernteil des in 7A gezeigten Lese/Schreib-Moduls dar,
  • 8A stellt ein kompaktes Speicherelement schematisch dar, welches eine Bank aus unterteilten Lese/Schreib-Stacks aufweist,
  • 8B stellt eine bevorzugte Anordnung des in 8A gezeigten Speicherelements dar,
  • 9 stellt detaillierter die in 8A oder 8B gezeigten Lese/Schreib-Schaltungen schematisch dar, welche in einer Bank aus unterteilten Lese/Schreib-Stacks organisiert sind,
  • 10 zeigt detaillierter einen unterteilten Lese/Schreib-Stack, welcher aus einem Stack von Lese/Schreib-Modulen gebildet ist,
  • 11A stellt eine Ausgestaltung eines in 10 dargestellten Lese/Schreib-Kernstacks 410 dar, in welchem jeder Leseverstärker im Stack neben seiner zugehörigen Bitleitung angeordnet ist,
  • 11B stellt eine weitere Ausgestaltung eines in 10 dargestellten Lese/Schreib-Kernstacks 410 dar, in welchem die einzelnen Leseverstärker im Stack einen Cluster und die einzelnen Bitleitungs-Latches einen anderen Cluster bilden,
  • 12 zeigt detaillierter den in 10 gezeigten gemeinsamen Teil des Lese/Schreib-Stacks,
  • 13A stellt eine konventionelle Implementierung eines Schieberegisters dar,
  • 13B ist eine Tabelle, welche das Laden von Daten in einen Daten-Latch-Stack darstellt, welcher mit Master-Slave Flip-Flops aus 13A implementiert ist,
  • 14A stellt eine bevorzugte Ausgestaltung des kompakten Latch-Stacks dar,
  • 14B zeigt eine Ausgestaltung des Master oder Slave Verbindungsmoduls,
  • 14C stellt schematisch dar, dass sich das Verbindungsmodul aus 13B als Latch verhält, wenn das Kontrollsignal LH/INV* gleich HIGH ist,
  • 14D stellt schematisch dar, dass sich das Verbindungsmodul als Inverter verhält, wenn das Kontrollsignal LH/INV* gleich LOW ist,
  • 15A stellt das Laden von vier Bit Daten in einen Daten-Latch-Stack dar, welcher mit dem in 14A gezeigten kompakten Daten-Latch-Stack implementiert ist,
  • 15B stellt einen destruktiven Lesemodus der vier Bit Daten aus dem Daten-Latch-Stack in 15A dar,
  • 15C stellt eine andere bevorzugte Ausgestaltung mit einem erhaltenden Auslesemodus der vier Bit Daten aus dem Daten-Latch-Stack aus 14A dar,
  • 16A stellt eine weitere Implementierung des in 14A gezeigten "k + 1" Daten-Latch-Stacks dar,
  • 16B stellt eine andere bevorzugte Implementierung des in 13A gezeigten "k + 1 "Daten-Latch-Stacks dar,
  • 17 stellt eine andere bevorzugte Implementierung des Slave Verbindungsmoduls dar.
  • 7A ist ein schematisches Blockdiagramm eines einzelnen Lese/Schreib-Moduls 200, welches in einen Kernteil 210 und einen gemeinsamen Teil 220 unterteilt ist. Der Kernteil 210 umfasst einen Leseverstärker 210, welcher ermittelt, ob ein Leitungsstrom in einer verbundenen Bitleitung 211 sich über oder unter einem festgelegten Schwellenpegel befindet. Wie zuvor beschrieben wurde, ermöglicht die verbundene Bitleitung 211 Zugriff auf die Drain einer adressierten Speicherzelle in einem Array.
  • In einer Ausgestaltung umfasst der Kernteil 210 auch ein Bitleitungs-Latch 214. Das Bitleitungs-Latch wird dazu verwendet, um eine Spannungsbedingung an der verbundenen Bitleitung 211 festzulegen. In einer Implementierung führt ein vorgegebener Zustand, welcher im Bitleitungs-Latch zwischengespeichert ist, darauf hinaus, dass die verbundene Bitleitung 211 in einen Zustand versetzt wird, welcher eine Sperrung der Programmierung kennzeichnet (z.B. Vdd). Dieses Merkmal zur Sperrung der Programmierung wird später beschrieben.
  • Der gemeinsame Teil 220 umfasst einen Prozessor 222, ein Satz Daten-Latches 224 und ein I/O Interface 226, welches zwischen dem Satz Daten-Latches 224 und einem Datenbus 231 gekoppelt ist. Der Prozessor 222 führt Berechnungen durch. Zum Beispiel besteht eine seiner Funktionen darin, den Datenzustand der abgetasteten Speicherzelle zu ermitteln und die ermittelten Daten in dem Satz Daten-Latches zu speichern. Wie im Grundlagenteil erläutert wurde, kann eine Speicherzelle einen Bereich von Ladung halten und kann daher auf einen Schwellenspannungspegel (d.h. die Control Gate Spannung, welche gerade einen vorgegebenen Leitungsstrom hervorruft) innerhalb des Schwellenspannungsfensters programmiert werden. Der Satz Daten-Latches 224 wird dazu verwendet, vom Prozessor während einer Leseoperation ermittelte Datenbit zu speichern. Dieser wird auch dazu verwendet, während einer Programmieroperation vom Datenbus 231 eingelesene Datenbit zu speichern. Die eingelesenen Daten repräsentieren Data, welche dazu bestimmt sind, in den Speicher programmiert zu werden. Das I/O Interface 226 stellt ein Interface zwischen dem Satz Daten-Latches 224 und dem Datenbus 231 zur Verfügung.
  • Während des Lesens oder Abtastens steht der Betrieb unter Kontrolle einer State Machine, welche im Wesentlichen die Versorgung von unterschiedlichen Control Gate Spannungen an den adressierten Zellen kontrolliert. Wenn die verschiedenen vordefinierten Control Gate Spannungen entsprechend der vom Speicher unterstützten Speicherzustände durchlaufen werden, wird der Leseverstärker 212 bei einer von drei Spannungen auslösen. An diesem Punkt ermittelt der Prozessor 222 den resultierenden Speicherzustand unter Berücksichtigung des Auslöse-Vorgangs des Leseverstärkers und der Information über die angelegte Control Gate Spannung von der State Machine über eine Eingabeleitung 223. Es wird eine binäre Codierung für den Speicherzustand berechnet und die resultierenden Datenbit werden im Satz Daten-Latches 224 gespeichert.
  • 7B stellt eine andere bevorzugte Ausgestaltung des in 7A gezeigten Kernteils des Lese/Schreib-Moduls dar. Im Wesentlichen dient der SA/Bitleitungs-Latch 214 zwei Aufgaben, sowohl zum Zwischenspeichern der Ausgabedaten des Leseverstärkers 212 als auch als Bitleitungs-Latch wie in Verbindung mit 7A beschrieben wurde. Deshalb kann dieser entweder vom Leseverstärker oder vom Prozessor eingestellt werden. In einer bevorzugten Implementierung wird das Signal vom SA/Bitleitungs-Latch 214 von einem Treiber 216 angesteuert, um die Spannung der ausgewählten Bitleitung 211 einzustellen.
  • In Bezug auf 7A werden während des Programmierens oder Prüfens die zu programmierenden Daten in den Satz Daten-Latches 223 vom Datenbus 321 eingegeben. Unter der Kontrolle der State Machine umfasst die Programmieroperation eine Reihe von Programmierspannungsimpulsen, welche am Control Gate der adressierten Zelle angelegt werden. Jeder Programmierimpuls ist von einem Zurücklesen gefolgt, um zu ermitteln, ob die Zelle in den gewünschten Speicherzustand programmiert wurde. Der Prozessor 222 kontrolliert den zurückgelesenen Speicherzustand relativ zum gewünschten Speicherzustand. Wenn die beiden übereinstimmen, setzt der Prozessor 222 das Bitleitungs-Latch 214, um so die Bitleitung in einen Zustand zu versetzten, welcher eine Sperrung der Programmierung kennzeichnet. Dies hindert die an die Bitleitung gekoppelte Zelle daran, weiter programmiert zu werden, selbst wenn Programmierimpulse an ihrem Control Gate auftreten.
  • Das I/O Interface 226 ermöglicht es den Daten, in oder aus dem Satz Daten-Latches 224 transportiert zu werden. Wie in 8A, 8B und 9 zu sehen sein wird, wird ein Block Lese/Schreib-Module an einem Speicherelement parallel verwendet, um jeweils einen Block Daten zu Lesen oder zu Programmieren. Typischerweise hat der Block Lese/Schreib- Module seinen eigenen Satz Daten-Latches, welche verbunden sind, um ein Schieberegister zu bilden, so dass die vom Block Lese/Schreib-Module zwischengespeicherten Daten seriell zum Datenbus 231 übertragen werden können. In gleicher Weise können Daten für die Blöcke von Lese/Schreib-Modulen seriell vom Datenbus 231 eingegeben werden und in den entsprechenden Sätzen Daten-Latches zwischengespeichert werden.
  • Andere spezifische Implementierungen des Lese/Schreib-Moduls 200 wird in der gleichzeitig anhängigen und übertragenen US Patentanmeldung NON-VOLATILE MEMORY AND METHOD WITH REDUCED NEIGHBORING FIELD ERRORS von Raul-Adrian Cornea und Yau Li, angemeldet am gleichen Tag wie die vorliegende Erfindung, offenbart. Die gesamte Offenbarung dieser Anmeldung wird hiermit durch Bezugnahme eingebunden.
  • KOMPAKTE LESE/SCHREIB-SCHALTUNGEN
  • Bei einem Block Lese/Schreib-Module, welche parallel in Betrieb sind, kann jedes Modul in einen Kernteil und einen gemeinsamen Teil unterteilt werden, wobei der Block Kernteile mit einer im Wesentlichen geringeren Anzahl von gemeinsamen Teilen betrieben wird und gemeinsam verwendet wird. Diese Architektur ermögliche doppelte Schaltungen unter den einzelnen Lese/Schreib-Modulen, welche eingespart werden und dadurch Platz und Energie eingespart wird. Beim Design von Speicherchips mit hoher Dichte kann die Platzersparnis so viel wie fünfzig Prozent der gesamten Lese/Schreib-Schaltungen für das Speicherarray betragen. Dies ermöglicht, die Lese/Schreib-Module dicht zu packen, so dass diese gleichzeitig eine zusammenhängende Reihe von Speicherzellen des Speicherarrays versorgen können.
  • 8A stellt schematisch ein kompaktes Speicherelement dar, welches eine Bank unterteilter Lese/Schreib-Stacks gemäß einer Ausgestaltung der Erfindung aufweist. Das Speicherelement umfasst ein zweidimensionales Array von Speicherzellen 300, Kontroll-Schaltungen 310 und Lese/Schreib-Schaltungen 370. Das Speicherarray 300 ist mittels Wortleitungen über einen Reihendecoder 330 und mittels Bitleitungen über einen Spaltendecoder 360 adressierbar. Die Lese/Schreib-Schaltungen 370 sind als Bank von unterteilten Lese/Schreib-Stacks 400 implementiert und ermöglichen einen Block Speicherzellen parallel zu lesen oder zu programmieren. In einer Ausgestaltung, bei der eine Reihe Speicherzellen in mehrere Blöcke unterteilt ist, steht ein Block Multiplexer 350 zur Verfügung, um die Lese/Schreib-Schaltungen 370 in die einzelnen Blöcken zu multiplexen. Wie später detaillierter beschrieben wird, erfolgt eine Kommunikation zwischen einem Le se/Schreib-Stack 400 durch einen Stackbus und wird von einem Stackbuscontroller 430 kontrolliert.
  • Die Kontrollschaltung 310 arbeitet mit der Lese/Schreib-Schaltung 370 zusammen, um Speicheroperationen am Speicherarray 300 durchzuführen. Die Kontrollschaltung 310 umfasst eine State Machine 312, einen Adresscodierer auf dem Chip 314 sowie ein Leistungskontrollmodul 316. Die State Machine 312 stellt auf Chipebene eine Steuerung von Speicheroperationen zur Verfügung. Der Adresscodierer auf dem Chip 314 stellt ein Adressinterface zwischen der vom Host oder einem Speichercontroller verwendeten Hardwareadresse zu den Hardwareadressen zur Verfügung, welche von den Decodern 330 und 370 verwendet werden. Das Leistungskontrollmodul 316 steuert die Leistung und Spannungen, welche die Wortleitungen und Bitleitung während Speicheroperationen versorgt.
  • 8B zeigt eine bevorzugte Anordnung des in 8A gezeigten kompakten Speicherelementes. Zugriff auf das Speicherarray 300 mittels der verschiedenen peripheren Schaltungen ist in einer symmetrischen Art und Weise an gegenüberliegenden Seiten des Arrays implementiert, so dass Zugriffsleitungen und Schaltungen an jeder Seite auf die Hälfte reduziert werden. Der Reihendecoder ist in Reihendecoder 330A und 330B unterteilt und der Spaltendecoder in Spaltendecoder 360A und 360B. In der Ausgestaltung, bei der eine Reihe Speicherzellen in mehrere Blöcke unterteilt ist, sind die Blockmultiplexer 350 in Blockmultiplexer 350A und 350B unterteilt. In gleicher Weise sind die Lese/Schreib-Schaltungen in Lese/Schreib-Schaltungen 370A unterteilt, welche mit Bitleitungen vom Boden und Lese/Schreib-Schaltungen 370B welche mit Bitleitungen von der Oberseite des Arrays 300 verbinden. Auf diese Art und Weise wird die Dichte der Lese/Schreib-Module und deswegen die der unterteilten Lese/Schreib-Stacks 400 im Wesentlichen auf die Hälfte reduziert.
  • 9 stellt schematisch die in 8A oder 8B gezeigten Lese/Schreib-Schaltungen detaillierter dar, welche in einer Bank unterteilter Lese/Schreib-Stacks organisiert sind. Jeder unterteilte Lese/Schreib-Stack 400 enthält im Wesentlichen einen Stack Lese/Schreib-Module, welcher ein Segment aus k Speicherzellen parallel versorgt. Jeder Stack ist in einen Stack-Kernteil 410 und einen gemeinsamen Stack-Teil 420 unterteilt. Kommunikation zwischen jedem Lese/Schreib-Stack 400 wird durch einen miteinander verbindenden Stackbus 431 durchgeführt und wird vom Stackbuscontroller 430 gesteuert. Kontrollleitungen 411 stellen Kontroll- und Taktsignale vom Stackbuscontroller 430 zu jedem Kernteil der Lese/Schreib-Stacks 410 zur Verfügung. Auf gleiche Art und Weise stellen Kon trollleitungen 421 Kontroll- und Taktsignale vom Stackbuscontroller 430 jedem der gemeinsamen Teile der Lese/Schreib-Stacks 420 zur Verfügung.
  • Die gesamte Bank unterteilter Lese/Schreib-Stacks 400, welche parallel arbeiten, ermöglicht es einem Block aus p Zellen entlang einer Reihe parallel gelesen oder programmiert zu werden. Wenn zum Beispiel r die Anzahl von Stacks in der Bank ist, dann ist p = r·k. Zum Beispiel kann bei einem Speicherarray p = 512 Bytes (512 × 8 Bit), k = 8 und daher r = 512 sein. In der bevorzugten Ausgestaltung ist der Block eine Serie der gesamten Zellenreihe. In einer anderen Ausgestaltung ist der Block eine Teilmenge von Zellen in der Reihe. Beispielsweise könnte die Teilmenge der Zellen die Hälfte der gesamten Reihe oder ein Viertel der gesamten Reihe betragen. Die Teilmenge von Zellen könnte eine Serie zusammenhängender Zellen oder eine jeder anderer Zelle oder eine jeder vorgegebenen Anzahl von Zellen sein.
  • In der in 8A gezeigten Ausgestaltung ist p eine Anzahl von Lese/Schreib-Modulen, wobei ein für jeden der Blöcke aus p Zellen vorhanden ist. Da jeder Stack k Speicherzellen versorgt, beträgt die Gesamtanzahl der Lese/Schreib-Stacks in der Bank daher r = p/k. Beim Beispiel mit p = 512 Bytes und k = 8 beträgt r = 512.
  • Wie zuvor erwähnt, besteht ein aufgetretenes Problem bei Speichern hoher Dichte und hoher Leistungsfähigkeit in der Notwendigkeit, einen Block hintereinanderliegender Speicherzellen parallel zu lesen und zu programmieren sowie die Schwierigkeit, ein Lese/Schreib-Modul für jede Zelle unterzubringen.
  • Das Unterbringungsproblem wird durch eine in 8B gezeigte bevorzugte Ausgestaltung verringert, bei der die peripheren Schaltungen auf gegenüberliegenden Seiten des Speicherarrays gebildet werden. Wenn die Lese/Schreib-Schaltungen 370A und 370B an gegenüberliegenden Seiten des Speicherarrays 300 gebildet werden, wird dann auf die Hälfte der Blöcke aus p Zellen von der Oberseite und auf die andere Hälfte von der Unterseite des Arrays zugegriffen. Dadurch sind p/2 Lese/Schreib-Module auf jeder Seite vorhanden. Daraus folgt, dass die Lese/Schreib-Stacks 400 auf jeder Seite nur eine Anzahl von p/2 Bitleitungen oder Speicherzellen parallel versorgen müssen und die Anzahl von Lese/Schreib-Stacks in der Bank durch r = p/2k gegeben ist. Beim Beispiel mit p = 512 Bytes und k = 8 beträgt r = 256. Dies bedeutet, dass nur halb so viele Lese/Schreib-Stacks 400 auf jeder Seite des Speicherarrays im Vergleich zu der in 8A gezeigten Ausgestaltung erforderlich sind.
  • In anderen Ausgestaltungen, bei denen die Unterbringung oder andere Gesichtspunkte sogar eine geringere Dichte vorschreiben, wird eine Reihe von Zellen in einen oder mehrere Interleaving Blöcke von Zellen unterteilt. Zum Beispiel besteht ein Block Zellen aus Zellen aus geraden Spalten und der andere Block Zellen aus ungeraden Spalten. Wie in 8A und 8B gezeigt, wird der Block-Multiplexer 350 oder 350A und 350B dazu verwendet, die Bank unterteilter Lese/Schreib-Stacks zum Schalten von entweder geraden oder ungeraden Blöcken verwendet. In der in 8B gezeigten Ausgestaltung ist eine Anzahl von p/4 Lese/Schreib-Modulen auf jeder Seite des Arrays vorhanden. In diesem Fall beträgt die Anzahl der Lese/Schreib-Stacks an jeder der gegenüberliegenden Seiten r = p/4k. Auf diese Weise wird mehr Raum zur Verfügung gestellt, um die geringere Anzahl von Lese/Schreib-Modulen unterzubringen, jedoch auf Kosten verringerter Performance und dass der Lese/Schreib-Block nicht mehr zusammenhängend ist.
  • 10 zeigt detaillierter einen unterteilten Lese/Schreib-Stack, welcher aus einem Stack aus Lese/Schreib-Modulen gebildet ist. Der unterteilte Lese/Schreib-Stack 400 umfasst im Wesentlichen eine Anzahl k Lese/Schreib-Module, welche eine Anzahl k Speicherzellen über eine Anzahl k Bitleitungen versorgt. Wie aus dem in 7 gezeigten Lese/Schreib-Modul gesehen werden kann, beinhaltet dieses mehr Schaltungselemente als eine Speicherzelle und kann daher nicht innerhalb einer Spalte untergebracht werden, deren Breite im Wesentlichen durch die einer Speicherzelle definiert wird. In Abhängigkeit von der Komplexität und den Merkmalen der Lese/Schreib-Module 200 kann dies leicht zum Beispiel acht bis sechzehn oder mehr Spalten in Anspruch nehmen (d.h. k ist 8 bis 16 oder mehr). Jedes Lese/Schreib-Modul weist eine Breite auf, welche eine ausreichende Anzahl von Spalten wie zum Beispiel k überspannt. Das heißt, dass eine gleiche Anzahl k von Modulen innerhalb dieser überspannten Spalten aufgestapelt werden muss um jede Spalte zu versorgen. Wenn beispielsweise jedes Lese/Schreib-Modul eine Breite von 16 Spalten aufweist, wird bei der in 8A gezeigten Ausgestaltung, wobei sich die Lese/Schreib-Schaltungen sich lediglich auf einer Seite befinden, der Stack sechzehn Lese/Schreib-Module enthalten. In der in 8B gezeigten bevorzugten Ausgestaltung, bei der die Lese/Schreib-Schaltungen beidseitig oben und unten auf dem Arrays gebildet sind, so dass auf acht Bitleitungen an jedem Ende zugegriffen wird, ist der Stack acht Lese/Schreib-Module tief.
  • Ein wichtiges Merkmal der Erfindung besteht darin, hoch entwickelte Lese/Schreib-Module 200 zu implementieren, welche dabei höchst kompakt sind. Dies wird durch Unterteilen der Blöcke von p Lese/Schreib-Modulen in p Kernteile von Lese/Schreib-Modulen 210 ermöglicht, welche eine wesentlich kleinere Anzahl (d.h. r) gemeinsamer Lese/Schreib-Module 220 gemeinsam benutzen.
  • 10 stellt dar, dass ein Lese/Schreib-Stack 400, welcher k Bitleitungen bedient, in einen Stack-Kernteil 410 und einen gemeinsamen Stack-Teil unterteilt ist. Der Stack-Kernteil 410 enthält k Lese/Schreib Kernmodule 210 wie jeder der beispielsweise in 7A oder 7B gezeigten Kerne. Der gemeinsame Stack-Teil 420 enthält einen gemeinsamen Lese/Schreib-Teil so wie der beispielsweise in 7A gezeigte gemeinsame Teil 220. Das Unterteilen in Kernteile und gemeinsame Teile basiert auf dem Prinzip, dass alle Kernteile gemeinsam oder parallel betrieben werden. In diesem Fall wird dieser den Leseverstärker 212 und SA/Bitleitungs-Latch 210 (Siehe 7B) umfassen, wenn der entsprechende Block Speicherzellen parallel abgetastet wird. Nachdem der Block Speicherzellen parallel abgetastet wurde, können die abgetasteten Ergebnisse durch die verhältnismäßig geringere Anzahl gemeinsamer Teile seriell verarbeitet werden.
  • Kommunikation zwischen jedem der Kernteile 210 und dem gemeinsamen Teil 420 erfolgt über den Stackbus 431 unter der Kontrolle des Stackbuscontrollers 430. Dies wird durch Kontrollleitungen so wie beispielsweise 411-k und 421 vom Controller durchgeführt, welche zu allen Stacks in der Bank verlaufen.
  • Dieses System gemeinsamer Nutzung vermeidet Redundanz der Lese/Schreib-Schaltungen. Wenn k = 8 werden ungefähr sieben von acht gemeinsamen Teilen innerhalb jedem Stack nicht mehr benötigt. Hinsichtlich der gesamten Lese/Schreib-Schaltung beläuft sich dies ungefähr auf eine Gesamtanzahl von r·(k – 1) gemeinsamen Teilen, was auf eine beachtliche Einsparung der Fläche der integrierten Schaltung hinausläuft. Wie zuvor erwähnt könnte dies auf die Reduzierung der durch die Lese/Schreib-Schaltungen beanspruchten Fläche auf so viel wie fünfzig Prozent hinauslaufen.
  • 11A stellt eine Ausgestaltung eines in 10A gezeigten Lese/Schreib-Stack Kernteils 410 dar, in welchem sich jeder Leseverstärker im Stack angrenzend zu seinem zugehörigen Bitleitungs-Latch befindet. Die Leseverstärker und die Bit-Latches sind denjenigen ähnlich, welche im Lese/Schreib-Modul Kernteil 210 in 7 gezeigt sind. Der Lese/Schreib-Stack Kernteil 410 enthält k Leseverstärker 212-1 bis 212-k sowie k Bitleitungs-Latches 214-1 bis 214-k und ist derart organisiert, dass sich ein Bitleitungs-Latch benachbart zu einem Leseverstärker befindet, welcher die selbe Bitleitung versorgt. Zum Beispiel befindet sich Bitleitungs-Latch 214-1 benachbart zu Leseverstärker 212-1, wobei beide mit der Bitleitung 1 gekoppelt sind. Jeder der Bitleitungs-Latches und Leseverstär ker kommuniziert mit anderen Komponenten im Lese/Schreib-Stack 400 über den Stackbus 431 (siehe 10).
  • 11B stellt eine andere Ausgestaltung eines in 10 gezeigten Lese/Schreib-Stack Kerns 410 dar, in welchem einzelne Leseverstärker im Stack einen Cluster bilden und die einzelnen Bitleitungs-Latches einen anderen Cluster bilden. Der Lese/Schreib-Stack Kernteil 410 enthält k Leseverstärker 212-1 bis 212-k und k Bitleitungs-Latches 214-1 bis 214-k. Der Lese/Schreib-Stack Kernteil 410 ist derart organisiert, dass sich alle k Bitleitungs-Latches in einem Cluster gegenseitig nebeneinander befinden und alle k Leseverstärker sich in einem anderen Cluster gegenseitig nebeneinander befinden. Zum Beispiel bilden die Bitleitungs-Latches 214-1 bis 214-k einen Cluster und die Leseverstärker 212-1 bis 212-k bilden einen anderen Cluster. Jeder der Bitleitungs-Latches und Leseverstärker kommuniziert mit anderen Komponenten im Lese/Schreib-Stack 400 über den Stackbus 431 (siehe 10) unter Kontrolle des Stackbuscontroller über Kontrolleitungen 411.
  • 12 zeigt detaillierter den in 10 gezeigten gemeinsamen Teil des Lese/Schreib-Stacks. Der gemeinsame Teils des Lese/Schreib-Stacks 420 enthält im Wesentlichen eine Kopie des gemeinsamen Teils des Lese/Schreib-Moduls wie zum Beispiel der in 7 gezeigte gemeinsame Teil 220. Er umfasst einen Prozessor sowie einen Daten-Latch-Stack 224. In einer Ausgestaltung ist der Datenbus 231 mit dem Prozessor 222 gekoppelt und der Daten-Latch-Stack 224 ist auch mit dem Stackbus 431 über den Prozessor 222 gekoppelt. In einer anderen Ausgestaltung ist der Datenbus 231 eine Erweiterung des Stackbus 431. Der Stackbus 431 (siehe 10) ermöglicht eine Kommunikation zwischen dem Kernteil des Lese/Schreib-Stacks und dem gemeinsamen Teil 420. Auf diese Art und Weise sind die einzelnen Lese/Schreib Kernmodule 210 in der Lage, den gemeinsamen Teil 420 gemeinsam zu benutzen. Der Betrieb des Prozessors 222, des Daten-Latch-Stacks 224 und des Stackbus 431 werden mit Taktsignalen vom Stackbus über die Kontrollleitungen 421 gesteuert.
  • Der Betrieb der verschiedenen Komponenten im Lese/Schreib-Stack 400 sind denen ähnlich, welche allgemein in Verbindung mit dem unterteilten Lese/Schreib-Modul 200 in 7 beschrieben wurden. Ein hoch entwickeltes Lese/Schreib-Modul mit vielen Merkmalen ist aufgrund des eingesparten Platzes durch einen gemeinsamen Betrieb eines gemeinsamen Stack-Teils unter mehrfachen Lese/Schreib-Kernmodulen möglich. Zum Beispiel kann der Prozessor 222 auch dazu verwendet werden, Refined Margining Estimations als auch statistische und dynamische Datenverarbeitung umfassend Fehlerkorrekturen durchzuführen.
  • STACK BUS
  • Zur Kommunikation zwischen den verschiedenen Teilen innerhalb eines unterteilten Lese/Schreib-Stacks 400 wird ein serieller Bus zur Verfügung gestellt. Der serielle Bus 431 verbindet den gemeinsamen Teil des Lese/Schreib-Moduls 420 mit jedem beliebigen der Lese/Schreib-Kernmodule 410 unter Kontrolle des Stackbuscontrollers 430. Der Stackbuscontroller 430 dient als ein Master Bus Controlling wenn und wo Daten zwischen den verschiedenen Teilen innerhalb des Lese/Schreib-Stacks 400 transferiert werden.
  • Mit Bezug auf 1012, wenn eine Speicherzelle adressiert wird, wird deren Source-Drain Strom durch einen der Leseverstärker wie zum Beispiel durch Leseverstärker 212-k abgetastet. Die digitale Ausgabe des Leseverstärkers 212-k wird auf dem Stackbus 431 abgelegt, welche dann vom Prozessor 222 aufgenommen wird. Das Bustiming wird vom Stackbuscontroller 430 gesteuert. Der Prozessor 222 verarbeitet die Ausgangsdaten des Leseverstärkers zusammen mit dazugehörigen Statusinformationen um binäre Daten für die adressierte Zelle zu erhalten. Die binären Daten werden dann auf dem Stackbus 431 abgelegt und werden von den Daten-Latches empfangen, welche mit den Bitleitungen k verbunden sind. Erneut gewährleistet der Stackbuscontroller 430, dass die vom Leseverstärker erlangten binären Daten 212-k zu den zugehörigen Daten-Latches gelangen.
  • Beim Prüfschritt einer Programmieroperation kennzeichnet das digitale Signal des Leseverstärkers, ob die adressierte Speicherzelle in den gewünschten Zustand programmiert wurde. Falls der gewünschte Pegel erreicht wurde, sendet der Prozessor 222 ein Kontrollsignal über den Stackbus 431 zum korrespondierenden Bitleitungs-Latch. Zum Beispiel kann Bitleitungs-Latch 214-k in einen Zustand versetzt werden, welcher einem Zustand entspricht, wenn die Bitleitung k auf eine vorgegebene Spannung gesetzt wird (z.B. Vdd), um eine weitere Programmierung der gekoppelten Speicherzelle zu unterbinden. In einer weiteren Ausgestaltung kann ein Program Lockout Latch durch ein dediziertes Latch implementiert werden, welches nicht notwendigerweise zum Kontrollieren der Spannung der Bitleitung gekoppelt ist, jedoch gekoppelt ist, um die Programmierspannungen durch eine adressierte Wortleitung zu kontrollieren.
  • Die Unterteilung und gemeinsame Benutzung eines gemeinsamen Teils 420 durch k Lese/Schreib-Kernmodule 210 sagt aus, dass ein gemeinsamer Kommunikationskanal zwischen den unterteilten Teilen aufgebaut ist. Mit Bezug auf 7 kann gesehen werden, dass zumindest zwei Verbindungen zwischen dem Kernteil 210 und dem gemeinsamen Teil 220 vorhanden sind. So würde es erscheinen, dass mindestens 2k Verbindungen erforderlich sind. Dies ergibt neben den k Bitleitungen eine Gesamtzahl von 3k Verbindungen, welche innerhalb der k bis 2k Spaltenbreite zur Verfügung zu stellen sind. So muss zumindest jede Spalte 1,5 leitende Leitungen aufnehmen. Allgemein sollte vorzugsweise ein Minimum leitender Leitungen innerhalb jeder Spalte vorhanden sein, so dass die Breite und daher die Leitfähigkeit jeder Leitung maximiert wird.
  • Die Implementierung des Stackbus 431 ermöglicht eine verminderte Anzahl von Kommunikationsleitungen für die verschiedenen Teile des unterteilten Lese/Schreib-Stacks 400. In der bevorzugten Ausgestaltung wird eine Implementierung eines seriellen Bus mit nur einer Leitung verwendet. Auf diese Art und Weise ist für jeden Stack, welcher 2k Spalten belegt, zusätzlich zu k vorhandenen Bitleitungen nur eine leitende Leitung erforderlich, was sich auf eine Gesamtanzahl von k + 1 leitender Leitungen beläuft. Dies kann dazu führen, dass jeder Spalte etwa 0,5 leitende Leitungen aufnehmen muss, was bedeutet, dass jede leitende Leitung etwa 2 Spalten breit sein kann. Ein Lese/Schreib-Stack mit einer seriellen Bus-Struktur ermöglicht ebenso mehr Freiheit des Layouts, so dass die Platzierung der einzelnen Teile innerhalb des Stacks (siehe beispielsweise 11A und 11B) gemäß einer vorgegebenen Betrachtung optimiert werden kann.
  • KOMPAKTER I/O AKTIVIERTER DATEN-LATCH-STACK
  • Ein Satz I/O aktivierter Daten-Latches, welche dem Block von Lese/Schreib-Leseverstärkern angegliedert sind, sind als ein Teil raumeffizienter Schieberegister implementiert.
  • Wie zuvor beschreiben wird bei einer Leseoperation das Ausgangssignal des Leseverstärkers 212 vom Prozessor 222 interpretiert und in ein binäres Format umgewandelt. Bei einer Implementierung eines Zweizustandspeichers belaufen sich die umgewandelten Daten auf ein Bit binäre Daten. Bei Mehrzustand-Implementierungen werden die umgewandelten binären Daten mehr als ein Bit betragen. Für jedes Bit binäre Daten wird ein entsprechendes Daten-Latch unter einem Satz Daten-Latches vorhanden sein. Während einer Programmieroperation wird der selbe Satz Daten-Latches als Programmier-Daten-Latches verwendet: Die zu programmierenden Daten werden vom Host/Controller über den Datenbus zum Speicherchip geschickt und im selben Satz Daten-Latches gespeichert. Zum Zweck der vorliegenden Beschreibung versteht sich, dass der Latch im Fall mehrerer Zuständen ein Array ist.
  • Mit Bezug auf 12 enthält der kompakte Daten-Latch-Stack 224 einen Stack aus k Daten-Latches entsprechend den k Leseverstärkern. Da diese Daten-Latches ihre Lesedaten oder Schreibdaten mit dem Datenbus 731 austauschen, ist es vorzuziehen, den Daten-Latch-Stack als ein Schieberegister zu implementieren, so dass die darin parallel gespeicherten Daten für den Datenbus in serielle Daten umgewandelt werden und umgekehrt. In der bevorzugten Ausgestaltung können alle Daten-Latches entsprechend der Lese/Schreib-Blöcke von p Speicherzellen miteinander verbunden werden, um ein Block-Schieberegister zu bilden, so dass ein Block Daten durch serielles Übertragen in den Datenbus eingegeben oder aus dem Datenbus ausgegeben werden kann. Im Wesentlichen ist die Bank aus r Lese/Schreib-Stacks getaktet, so dass jeder seiner Sätze Daten-Latches Daten in oder aus dem Datenbus sequentiell schiebt als wären sie Teil eines Schieberegisters für den gesamten Lese/Schreib-Block.
  • 13A stellt eine konventionelle Implementierung eines Schieberegisters dar. Ein Schieberegister ist mit einer Reihe Master-Slave Flip-Flops M1, S1, ..., Mk, Sk implementiert. Wenn der Daten-Latch-Stack 224 mit diesem Schieberegistertyp implementiert wird, werden Daten seriell durch die Reihe von Master-Slave Flip-Flops geschoben. Bei jeder Taktimpulsflanke werden alle Flip-Flops in der Kette synchron betrieben und die Daten in der Kette werden um ein Flip-Flop verschoben. Ein Zuordnen eines Slaves zu jedem Master Flip-Flop gewährleistet, dass der Inhalt jedes Masters in den Slave kopiert wird, bevor der Master überschrieben wird. Dieser Schieberegistertyp kann als ein "2k Shift Latch" betrachtet werden, da es einen doppelten Overhead aufweist, in welchem es 2k Speicher zum Halten und Schieben einer Anzahl von k Datenbit erfordert.
  • 13 ist eine Tabelle, welche das Laden von Daten in einen Daten-Latch-Stack darstellt, welcher mit den Master-Slave Flip-Flops aus 13A implementiert ist. Eine Folge von Taktsignalen CLK1, CLK1, CLK3, ... wird vom Latch-Controller 224 (siehe 10) zur Verfügung gestellt und wird auf alle Flip-Flops angewendet, wenn seriell Daten D1, D2, D3, ... in das Schieberegister eingegeben werden. Beim ersten Taktzyklus CLK1 werden die ersten Daten D1 im ersten Master-Slave Flip-Flop M1 zwischengespeichert. Bei der fallenden Flanke des ersten Taktsignals CLK1* werden die Daten D1 in M1 auch im ersten Slave Flip-Flop S1 zwischengespeichert. Beim zweiten Taktzyklus CLK2 werden die nächsten Daten D2 in M1 geladen, während die ersten Daten D1 aus S1 in das zweite Master Flip-Flop M2 geladen werden. Nachfolgende Schritte sind direkte Wiederholungen der gezeigten vorherigen Schritte bis alle Datenobjekte in den Latch-Stack 224 geschoben sind. Es kann gesehen werden, dass das Laden von k Datenobjekten k Taktzyklen erfordert.
  • Es versteht sich, dass bei einem Mehrzustand-Speicher jedes der Master Flip-Flops M und der Slave Flip-Flops S ein Array wird, wobei dessen Dimension von gleichem Ausmaß ist wie die Anzahl der erforderlichen Datenbit. Zum Beispiel werden bei einer 4-Zustand-Speicherzelle die Zustände durch 2 binäre Bit Daten codiert. M stellt M(1) und M(2) beziehungsweise S stellt S(1) und S(2) für jedes der zwei Bit dar. Auf diese Weise wird das "2k Shift Latch" durch M1(1), S1(1), M1(2), S1(2), M2(1), S2(1), M2(2), S2(2), ..., Mk(1), Sk(1), Mk(2), Sk(2) gebildet.
  • 14A stellt eine bevorzugte Ausgestaltung des kompakten Latch-Stacks 224 dar. Der Latch-Stack 224 umfasst eine Kette, welches ein Slave Verbindungsmodul S1 520 aufweist, gefolgt von einer Reihe Master Verbindungsmodulen Mk, ..., M2, M1 510. Die Kette hat ein I/O-Ende 501 am Slave Verbindungsmodul S1 520. Daten D1, D2, ..., Dk werden von den I/O-Leitungen 510 in die Kette geschoben und werden vom Ende aus aus der Kette M1 geschoben. Die aus M1 ausgegebenen Daten werden zu den I/O-Leitungen 510 durch einen Ausgabeleitungstreiber 530 weitergeleitet.
  • Der Ausgabeleitungstreiber umfasst einen Transistor 532, welcher von einem READ-Signal in Leitung 533 gesperrt ist, sowie einen Inverter 534, welcher durch einen Transistor 536 wahlweise parallel geschaltet wird. Wenn ein Kontrollsignal INVERT* an einem Gate 537 des Transistors 536 HIGH ist, ist der Inverter 534 aktiv und invertiert das Ausgabesignal von M1. Anderenfalls wird der Inverter 534 kurzgeschlossen und das Ausgabesignal von M1 erscheint an der I/O-Leitung 501. Die Kontrollsignale READ, INVERT* sowie andere Kontroll- und Taktsignale, welche zum Betrieb des Daten-Latch-Stacks 224 erforderlich sind, werden vom Stackbuscontroller 430 über die Kontrollleitungen 421 (siehe 12) zur Verfügung gestellt.
  • Der in 14A gezeigte Daten-Latch-Stack 224 kann als ein kompaktes "k + 1" Schieberegister betrachtet werden, umfassend k Master Verbindungsmodule 510 zum Halten von k Bit Daten und nur ein Slave Verbindungsmodul 520, um temporär Daten zwischenzuspeichern. Das Slave Verbindungsmodul 520 dient zum Vereinfachen des Verschiebens der Objekte entlang der Kette ohne die im Prozess gespeicherten Daten zu verlieren. Diese Implementierung des Latch-Stack im Vergleich zum "2k Schieberegister" aus 13A und 13B hilft die Anzahl der benötigten Latches um die Hälfte zu reduzieren. In anderen Ausgestaltungen, welche später beschrieben werden, können die k Master Verbindungsmodule mehr als ein Slave Verbindungsmodul gemeinsam verwenden, aber im Allgemeinen mit der im Wesentlichen geringeren Anzahl Slave Module als die der Master Module.
  • 14B zeigt eine Ausgestaltung des Master oder Slave Verbindungsmoduls 510, 520. Ein neues Merkmal des Verbindungsmoduls besteht darin, dass es dazu gebracht werden kann, sich wahlweise als ein Inverter oder ein Latch zu verhalten. Das Verbindungsmodul hat einen Eingang 501 und einen Ausgang 551. Der Eingang 501 empfängt Daten vom Ausgang des vorangehenden Verbindungsmoduls in der Kette. Ein Transistor 512, welcher von einem Taktsignal InCLK gesteuert wird, dient als Gate für die Eingangsdaten. Wenn das Kontrollsignal HIGH ist, werden Daten in das Verbindungsmodul hereingelassen. Wenn das Kontrollsignal LOW ist, werden Daten vom Verbindungsmodul gesperrt. Wenn die Daten hereingelassen werden, werden diese entweder in einem Latch, welcher aus einem Paar Inverter 550 und 560 gebildet ist, zwischengespeichert, oder von einem der Inverter 550 invertiert, während der anderer Inverter 560 deaktiviert ist. Auf die zwischengespeicherten Daten kann am Ausgang 551 zugegriffen werden, sind aber durch einen Transistor 514 versperrt, welcher von einem Kontrollsignal OutCLK gesteuert wird.
  • 14C stellt schematisch dar, dass das Verbindungsmodul aus 13B als Latch arbeitet, wenn das Kontrollsignal LH/INV* gleich HIGH ist. Das Latch wird aktiviert, wenn der Inverter 560 wahlweise durch einen Serientransistor 562 mit einem Kontrollsignal LH/INV* an seinem Gate aktiviert wird. Der aktivierte Inverter 560 arbeitet zusammen mit dem Inverter 550 als ein Latch, welcher die Eingabedaten zwischenspeichert.
  • 14D stellt schematisch dar, dass das Verbindungsmodul als Inverter arbeitet, wenn das Kontrollsignal LH/INV* gleich LOW ist. In diesem Fall ist der Inverter 560 deaktiviert und die Eingangsdaten durchlaufen nur den Inverter 550. Jedes Verbindungsmodul 510 oder 520 in der Kette kann daher wahlweise ein Inverter oder ein Latch sein. Die Eingabe, Zwischenspeicherung oder Ausgabe von Daten durch die Kette wird durch die entsprechende Steuerung seiner individuellen Kettenmodule bewirkt. Die Kontrollsignale werden vom Stackbuscontroller 430 über die Kontrollleitungen 421 (siehe 12) bereitgestellt.
  • 15A stellt das Laden von vier Bit Daten in einen Latch-Stack dar, welcher mit dem kompakten Daten-Latch-Stack aus 14A implementiert ist. Als Beispiel werden vier Bit Daten verwenden, wobei k = 4. Allgemein kann der Daten-Latch-Stack wie erforderlich eine verschiedene Anzahl k Datenbit speichern. Vor dem Programmieren wird der Daten-Latch-Stack mit den zu programmierenden Daten wie zum Beispiel D1, D2, D3, D4 gefüllt, welche sich sequentiell auf der I/O-Leitung 501 befinden (siehe 14A) beziehungsweise bei Taktzyklen CLK1, CLK2, CLK3 und CLK4. Gerade vor CLK1 werden alle Zustände der einzelnen Verbindungsmodule (M1, M2, M3, M4, S1) eingestellt, um als Inverter zu arbeiten (siehe 14C) d.h. (INV, INV, INV, INV, INV). Auf diese Weise werden die Daten D*1 M1 zur Verfügung gestellt. Bei der nächsten Taktflanke CLK*1 (nicht explizit gezeigt) wird M1 in ein Latch geschaltet (siehe 14D), welches D*1 speichert und wird aus der Kette entkoppelt. Gerade vor CLK2 werden die restlichen Zustände der Verbindungsmodule in der Kette gesetzt, sich als Inverter zu verhalten, d.h. (LH, INV, INV, INV, INV). Auf diese Weise werden die Daten D*2 M2 zur Verfügung gestellt. Bei CLK*2 (nicht explizit gezeigt) wird M2 in einen Latch geschaltet, welcher D2 speichert und wird aus der Kette entkoppelt. Ähnliche Vorgänge finden bei CLK3 and CLK4 statt, wenn D*3 und D4 in M3 beziehungsweise M4 zwischengespeichert werden. Dadurch werden nach vier Taktzyklen vier Datenbit in die vier Master Kettenmodule M1, M2, M3, M4 geladen. In einer bevorzugten Ausgestaltung ermöglicht ein zusätzliches Taktsignal CLK5 eine Kopie der Daten in M1 im Slave Kettenmodul S1 zu speichern. Dies vereinfacht einen anschließenden nicht-destruktiven Auslesebetrieb, welcher später in Verbindung mit 15C beschrieben wird.
  • 15B stellt einen destruktiven Auslesebetrieb von vier Bit Daten aus dem Daten-Latch-Stack aus 15A dar. Wie in 15A gezeigt, ist der Daten-Latch-Stack nach vier Taktzyklen vollständig beladen. In 15B werden die Daten D*1 in M1 während CLK1 ausgelesen, nachdem seine Phase durch den Ausgabeleitungstreiber 530 angepasst wurde. Während CLK2 verhält sich das Master Kettenmodul M1 wie ein Inverter (siehe 14C) und die Daten D2 in M2 werden durch M1 weitergeleitet und ausgelesen, nachdem seine Phase durch den Ausgabeleitungstreiber 530 angepasst wurde. Gleichermaßen werden während CLK3 und CLK4 die Daten D3 und D4 entsprechend ausgelesen. Auf diese Weise werden vier Bit Daten in vier Taktzyklen ausgelesen. Die ursprünglichen im Daten-Latch-Stack gespeicherten Daten sind nach dieser destruktiven Leseoperation nicht mehr vorhanden.
  • 15C stellt eine andere bevorzugte Ausgestaltung mit einem erhaltenden Auslesemodus der vier Datenbit aus dem Daten-Latch-Stack aus 15A. Wie in 15A gezeigt ist der Daten-Latch-Stack nach vier Taktzyklen vollständig beladen. Es kann gesehen werden, dass wenn sich das auszulesende Bit Daten am Ausgang der Kette befindet, d.h. M1, kann es leicht ausgelesen werden, ohne die Daten im Daten-Latch-Stack zu beeinflussen. Wenn der Latch-Stack vollständig beladen ist, befindet sich D1 in M1 und ist bereits ausgelesen. Zum Auslesen der anderen Bit Daten wird die Kette um sich herum gewunden und das Slave Verbindungsmodul S1 wird daran beteiligt, um die Bit entlang der Kettenmodule zu schieben und die Bit um die Schleife zu rotieren. Um die Daten D2 auszulesen, ist es erforderlich, diese zuerst zu M1 zu rotieren, ohne die anderen Daten zu zerstören.
  • In 15C ist bereits eine Kopie von D1 in S1 gespeichert. Während CLK1 wird nur das Master Verbindungs-Latch M1 in einen Inverter geschaltet (siehe 14C) und die Daten D2 in M2 werden bei CLK*1 zu M1 transferiert und zwischengespeichert. So wird D1 zu S rotiert und D2 wird zu M1 als D*2 rotiert. Während CLK2 wird nur M2 in einen Inverter geschaltet und die Daten D3 in M3 werden bei CLK*2 zu M2 transferiert und zwischengespeichert. So wird nun D3 zu M2 rotiert. Gleichermaßen während CLK3 und CLK4. Die Daten D4 werden zu M3 rotiert und eine Kopie von D1 aus S1 wird zu M4 rotiert. Auf diese Weise werden nach vier Taktzyklen die vier Bit Daten entlang der Master Verbindungsmodule durch ein Verbindungsmodul entlang der Kette rotiert. Insbesondere befindet sich D2 jetzt in M1 und kann während CLK5 ausgelesen werden. Zur gleichen Zeit ist für die nächste Rotation eine Kopie von D2 in S1 gespeichert. So dauert es vier plus einen Taktzyklus um vier Bit Daten um einen Platz in der Kette zu rotieren. Mit anderen Worten dauert es k (k + 1) Taktzyklen bei einem erhaltenden Lesemodus, um k Bit Daten auszulesen. Für das Beispiel von k = 4 dauert es 20 Taktzyklen.
  • 16A stellt eine andere Implementierung des in 14A gezeigten "k + 1" Daten-Latch-Stacks dar. Die k Master Verbindungsmodule 510 sind in mehrere Zweige unterteilt, wobei jeder ein Slave Verbindungsmodul gemeinsam nutzt. Für das Beispiel k = 4 kann es in zwei Zweige unterteilt werden, wobei jeder zwei Master Verbindungsmodule wie zum Beispiel M1, M2, welche S1 gemeinsam nutzen als einen Zweig und M3, M4, welche S2 gemeinsam nutzen als zweiten Zweig verwenden. Die Operationen in den einzelnen Zweigen sind denen in einem einzelnen Zweig ähnlich, was in Verbindung mit 15C beschrieben wurde. Auf diese Weise dauert es bei einem erhaltenden Modus 2(2 + 1) = 6 Taktzyklen zum Rotieren und die im ersten Zweig gespeicherten zwei Datenbit D1 und D2 auszulesen. Auf die gleiche Weise für die zwei Datenbit D3 and D4 im zweiten Zweig. In diesem Fall wird eine Gesamtanzahl von zwölf Taktzyklen benötigt, um alle vier Datenbit auszulesen im Vergleich zu den in 15C beschriebenen zwanzig Taktzyklen.
  • So kann gesehen werden, dass ein Tradeoff zwischen der Anzahl der erforderlichen Latches und der Geschwindigkeit zum Auslesen aus den Latches existiert. Je weniger Slave Latches verwendet werden, desto länger ist die Rotationszeit.
  • 16B stellt eine andere bevorzugte Implementierung des in 14A gezeigten "k + 1" Daten-Latch-Stacks dar. Die k Master Verbindungsmodule 510 sind ähnlich zu dem in 16A gezeigten, in parallele Zweige gruppiert, außer, dass alle Zweige das selbe Slave Verbindungsmodul 520 wie zum Beispiel S1 gemeinsam nutzen. Für das Beispiel mit k = 4 kann dieses in zwei Zweige gruppiert werden, wobei jeder zwei Master Verbin dungsmodule aufweist wie zum Beispiel M1, M2 als ein Zweig und M3, M4 als zweiten Zweig. Die beiden Zweige nutzen das gleiche Slave Verbindungsmodul S1 gemeinsam. Wenn der erste Zweig ausgelesen wird, wird eine Rotation durch M1, M2 und S1 durchgeführt. Wenn der zweite Zweig ausgelesen wird, wird eine Rotation durch M3, M4 und S1 durchgeführt. In diesem Fall werden sechs Taktzyklen benötigt, um D1 und D2 auszulesen sowie weitere sechs Taktzyklen um D3 und D4 auszulesen, was insgesamt 12 Taktzyklen erfordert, um die vier Bit Daten wie im Fall in 16A auszulesen. Jedoch wird nur ein Slave Verbindungsmodul 520 verwendet.
  • 17 stellt eine andere bevorzugte Implementierung des Slave Verbindungsmoduls dar. Da die Anzahl der Slave Verbindungsmodule 520 ziemlich klein ist, typischerweise nur eins für einen Stack, kann es sich im Prozessor 22 befinden (siehe auch 12). In der bevorzugten Ausgestaltung, nutzt das oder die Slave Linkmodule die Latches oder Register, welche bereits vom Prozessor 222 verwendet werden.

Claims (4)

  1. Verfahren zum Speichern von N Datenelementen in einer Kette von Verbindungsmodulen (224) in einer nichtflüchtigen Speichervorrichtung, wobei dieses Verfahren umfasst: (a) Bereitstellen einer Kette umfassend zumindest N Verbindungsmodule (510, 520), wobei jedes Modul steuerbar (561) ist, sich entweder als ein Inverter oder ein Latch zu verhalten; (b) Serielles Eingeben dieser N Datenelemente in die Kette von einem gegenüberliegenden Ende (501) in ein erstes Verbindungsmodul (520); (c) Zwischenspeichern eines ersten Datenelementes in dem ersten Verbindungsmodul während das erste Verbindungsmodul zu steuern, sich als ein Latch zu verhalten und alle invertierende Verbindungsmodule, sich als Inverter zu verhalten; (d) Zwischenspeichern eines folgenden Datenelementes in einem folgenden Verbindungsmodul während das folgende Verbindungsmodul zu steuern, sich als ein Latch zu verhalten und alle invertierenden Verbindungsmodule, sich als Inverter zu verhalten; und (e) Wiederholen von Schritt (d) bis alle N Datenelemente in der Kette gespeichert sind.
  2. Verfahren zum Lesen von in einer Kette von Verbindungsmodulen (224) gespeicherten N Datenelementen in einer nichtflüchtigen Speichervorrichtung, wobei jedes Verbindungdsmodul (510, 520) steuerbar ist (561), sich entweder als ein Inverter oder ein Latch zu verhalten, wobei dieses Verfahren umfasst: (a) Auslesen aus der Kette beginnend von einem ersten Verbindungsmodul (510) eines in dem ersten Verbindungselement gespeicherten Datenelementes, während alle Verbindungsmodule zu steuern, sich als Latches zu verhalten; (b) Auslesen eines nächsten in einem folgenden Verbindungsmodul gespeicherten Datenelementes während diese Verbindungsmodule zu steuern, welche zuvor aus gelesen wurden, sich als Inverter zu verhalten und diese Verbindungsmodule, welche nicht ausgelesen wurden, sich als Latches zu verhalten; und (c) Wiederholen von Schritt (d) bis alle N Datenelemente ausgelesen sind.
  3. Verfahren nach Anspruch 2, umfassend den Schritt individuelle Datenelemente selektiv zu Invertieren (530) wenn diese ausgelesen werden.
  4. Verfahren gemäß einem der vorhergehenden Ansprüche, wobei die Kette weiter in mehr als eine Kette partitioniert wird.
DE60308202T 2002-09-24 2003-09-17 Hochkompakter nichtflüchtiger speicher mit platz sparenden datenregistern und dessen betriebsverfahren Expired - Lifetime DE60308202T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US254221 2002-09-24
US10/254,221 US6940753B2 (en) 2002-09-24 2002-09-24 Highly compact non-volatile memory and method therefor with space-efficient data registers
PCT/US2003/029141 WO2004029977A1 (en) 2002-09-24 2003-09-17 Highly compact non-volatile memory with space-efficient data registers and method therefor

Publications (2)

Publication Number Publication Date
DE60308202D1 DE60308202D1 (de) 2006-10-19
DE60308202T2 true DE60308202T2 (de) 2007-06-14

Family

ID=31993300

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60308202T Expired - Lifetime DE60308202T2 (de) 2002-09-24 2003-09-17 Hochkompakter nichtflüchtiger speicher mit platz sparenden datenregistern und dessen betriebsverfahren

Country Status (10)

Country Link
US (1) US6940753B2 (de)
EP (1) EP1543523B1 (de)
JP (1) JP4336652B2 (de)
KR (1) KR101030681B1 (de)
CN (1) CN100490000C (de)
AT (1) ATE339007T1 (de)
AU (1) AU2003272467A1 (de)
DE (1) DE60308202T2 (de)
TW (1) TWI310190B (de)
WO (1) WO2004029977A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014218131A1 (de) 2014-09-10 2016-03-10 Bayerische Motoren Werke Aktiengesellschaft Messsystem zur Batteriezustandsbestimmung

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7092708B2 (en) * 2002-12-12 2006-08-15 Atc Technologies, Llc Systems and methods for increasing capacity and/or quality of service of terrestrial cellular and satellite systems using terrestrial reception of satellite band frequencies
KR100546331B1 (ko) * 2003-06-03 2006-01-26 삼성전자주식회사 스택 뱅크들 마다 독립적으로 동작하는 멀티 포트 메모리장치
US7490283B2 (en) 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
US7120051B2 (en) * 2004-12-14 2006-10-10 Sandisk Corporation Pipelined programming of non-volatile memories using early data
US7158421B2 (en) * 2005-04-01 2007-01-02 Sandisk Corporation Use of data latches in multi-phase programming of non-volatile memories
US7849381B2 (en) 2004-12-21 2010-12-07 Sandisk Corporation Method for copying data in reprogrammable non-volatile memory
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
US7206230B2 (en) 2005-04-01 2007-04-17 Sandisk Corporation Use of data latches in cache operations of non-volatile memories
US7352629B2 (en) * 2005-12-29 2008-04-01 Sandisk Corporation Systems for continued verification in non-volatile memory write operations
US7307887B2 (en) * 2005-12-29 2007-12-11 Sandisk Corporation Continued verification in non-volatile memory write operations
US7616506B2 (en) * 2006-12-28 2009-11-10 Sandisk Corporation Systems for complete word line look ahead with efficient data latch assignment in non-volatile memory read operations
US7616505B2 (en) * 2006-12-28 2009-11-10 Sandisk Corporation Complete word line look ahead with efficient data latch assignment in non-volatile memory read operations
US8331133B2 (en) * 2009-06-26 2012-12-11 Intel Corporation Apparatuses for register file with novel bit cell implementation
US8266481B2 (en) * 2009-07-29 2012-09-11 Stec, Inc. System and method of wear-leveling in flash storage
US8453021B2 (en) 2009-07-29 2013-05-28 Stec, Inc. Wear leveling in solid-state device
JP2013009285A (ja) 2010-08-26 2013-01-10 Semiconductor Energy Lab Co Ltd 信号処理回路及びその駆動方法
US8472280B2 (en) 2010-12-21 2013-06-25 Sandisk Technologies Inc. Alternate page by page programming scheme
WO2014193592A2 (en) * 2013-05-29 2014-12-04 Sandisk Technologies Inc. High performance system topology for nand memory systems
CN104485930B (zh) * 2014-12-23 2017-06-16 苏州宽温电子科技有限公司 一种高效时钟输入控制电路
US10254967B2 (en) 2016-01-13 2019-04-09 Sandisk Technologies Llc Data path control for non-volatile memory
US10528267B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Command queue for storage operations
US10528286B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10528255B2 (en) 2016-11-11 2020-01-07 Sandisk Technologies Llc Interface for non-volatile memory
US10114589B2 (en) * 2016-11-16 2018-10-30 Sandisk Technologies Llc Command control for multi-core non-volatile memory
US11360704B2 (en) 2018-12-21 2022-06-14 Micron Technology, Inc. Multiplexed signal development in a memory device

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
IT1224062B (it) 1979-09-28 1990-09-26 Ates Componenti Elettron Metodo di programmazione per una memoria a semiconduttore non volatile elettricamente alterabile
JPS6143015A (ja) * 1984-08-07 1986-03-01 Toshiba Corp デ−タ遅延記憶回路
US4852062A (en) * 1987-09-28 1989-07-25 Motorola, Inc. EPROM device using asymmetrical transistor characteristics
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
JP3156966B2 (ja) * 1988-09-30 2001-04-16 株式会社東芝 不揮発性半導体メモリ装置
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
DE69033262T2 (de) 1989-04-13 2000-02-24 Sandisk Corp EEPROM-Karte mit Austauch von fehlerhaften Speicherzellen und Zwischenspeicher
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
JPH05101646A (ja) * 1991-10-07 1993-04-23 Mitsubishi Electric Corp デユアルポートメモリ
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
US5307232A (en) * 1992-04-21 1994-04-26 Zenith Electronics Corp. Fast reset degaussing system
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US20010052062A1 (en) 1994-03-01 2001-12-13 G. Jack Lipovski Parallel computer within dynamic random access memory
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
SG74580A1 (en) * 1996-03-08 2000-08-22 Hitachi Ltd Semiconductor ic device having a memory and a logic circuit implemented with a single chip
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
JP3740212B2 (ja) * 1996-05-01 2006-02-01 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
JP2927243B2 (ja) * 1996-07-11 1999-07-28 日本電気株式会社 半導体記憶装置
US5768192A (en) 1996-07-23 1998-06-16 Saifun Semiconductors, Ltd. Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping
JP3897388B2 (ja) * 1996-12-27 2007-03-22 シャープ株式会社 シリアルアクセス方式の半導体記憶装置
US6768165B1 (en) 1997-08-01 2004-07-27 Saifun Semiconductors Ltd. Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping
US6034891A (en) * 1997-12-01 2000-03-07 Micron Technology, Inc. Multi-state flash memory defect management
JP3581244B2 (ja) * 1997-12-05 2004-10-27 東芝マイクロエレクトロニクス株式会社 半導体記憶装置及びそのアクセス方法
US5940329A (en) * 1997-12-17 1999-08-17 Silicon Aquarius, Inc. Memory architecture and systems and methods using the same
JP3202673B2 (ja) * 1998-01-26 2001-08-27 株式会社東芝 不揮発性半導体メモリ装置
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
JP2001273773A (ja) 2000-03-27 2001-10-05 Sanyo Electric Co Ltd 半導体メモリ装置
US6385075B1 (en) * 2001-06-05 2002-05-07 Hewlett-Packard Company Parallel access of cross-point diode memory arrays
US6603683B2 (en) * 2001-06-25 2003-08-05 International Business Machines Corporation Decoding scheme for a stacked bank architecture
US6891753B2 (en) 2002-09-24 2005-05-10 Sandisk Corporation Highly compact non-volatile memory and method therefor with internal serial buses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102014218131A1 (de) 2014-09-10 2016-03-10 Bayerische Motoren Werke Aktiengesellschaft Messsystem zur Batteriezustandsbestimmung

Also Published As

Publication number Publication date
EP1543523A1 (de) 2005-06-22
TW200409125A (en) 2004-06-01
WO2004029977A1 (en) 2004-04-08
CN1698132A (zh) 2005-11-16
CN100490000C (zh) 2009-05-20
ATE339007T1 (de) 2006-09-15
TWI310190B (en) 2009-05-21
KR101030681B1 (ko) 2011-04-22
JP4336652B2 (ja) 2009-09-30
EP1543523B1 (de) 2006-09-06
US20040057282A1 (en) 2004-03-25
AU2003272467A1 (en) 2004-04-19
DE60308202D1 (de) 2006-10-19
US6940753B2 (en) 2005-09-06
JP2006500730A (ja) 2006-01-05
KR20050084585A (ko) 2005-08-26

Similar Documents

Publication Publication Date Title
DE60308202T2 (de) Hochkompakter nichtflüchtiger speicher mit platz sparenden datenregistern und dessen betriebsverfahren
DE19880311B3 (de) Nichtflüchtige Speicherstruktur
DE3900798C2 (de) Verfahren zum Programmieren eines elektrisch löschbaren und programmierbaren Nur-Lese-Speichers
DE10225398B4 (de) Halbleiterspeichervorrichtung mit Speicherzellenarrays, die zum Durchführen eines wahlfreien Zugriffs in der Lage ist
DE3740361C2 (de)
DE102005017012B4 (de) NOR-Flashspeicherbauelement, zugehöriges Speichersystem und Programmierverfahren
DE102005052696B4 (de) Nichtflüchtiges Speicherbauelement
DE602004012122T2 (de) Nichtflüchtiger speicher und verfahren mit von benachbarten betriebsarten abhängiger bitleitungskompensation
DE60216782T2 (de) Segmentierte Metallbitleitungen
DE60130437T2 (de) Simultane mehrbankoperation für flash-speicher
DE60212982T2 (de) Dynamische spaltenblockauswahl
DE69533429T2 (de) Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite
DE19859494C2 (de) Nichtflüchtiger Mehrebenen-Halbleiterspeicherbaustein mit einer Schaltung zum Einstellen der Datenlesezeit
US5294819A (en) Single-transistor cell EEPROM array for analog or digital storage
DE10239487B4 (de) Nichtflüchtiges Halbleiterspeicherbauelement
DE102008003637B4 (de) Integrierter Schaltkreis, Verfahren zum Programmieren einer Speicherzellen-Anordnung eines Integrierten Schaltkreises, und Speichermodul
DE3839114A1 (de) Nichtfluechtige dynamische halbleiterspeicheranordnung mit nand-zellenstruktur
DE4207934A1 (de) Elektrisch loesch- und programmierbares, nichtfluechtiges speichersystem mit schreib-pruef-einsteller unter verwendung zweier bezugspegel
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE4024930C2 (de)
DE112016000654T5 (de) Mehrzustands-Programmierung für nichtflüchtigen Speicher
DE4040492A1 (de) Automatische loeschoptimierschaltung fuer einen elektrisch loesch- und programmierbaren halbleiterspeicher und automatisches loeschoptimierungsverfahren
DE102021106666A1 (de) Seitenpufferschaltung und speichervorrichtung mit derselben
DE112020000174T5 (de) Adaptive vpass für 3d-flash-speicher mit paarkettenstruktur
DE69833348T2 (de) Nichtflüchtige Halbleiterspeicheranordnung

Legal Events

Date Code Title Description
8327 Change in the person/name/address of the patent owner

Owner name: SANDISK CORP., MILPITAS, CALIF., US

8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1543523

Country of ref document: EP

Representative=s name: PATENTANWAELTE MAXTON LANGMAACK & PARTNER, DE