-
QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht die Vergünstigungen der vorläufigen US Anmeldung Nr. 61/157,594, angemeldet am 5. März 2009, sowie der US Anmeldung Nr. 12/495,089, angemeldet am 30. Juni 2009, deren Inhalte hiermit jeweils durch Verweis vollumfänglich aufgenommen werden.
-
GEBIET
-
Es wird eine NAND-Flash-Speichervorrichtung offenbart.
-
HINTERGRUND
-
Bei konventionellen NAND-Flash-Speichern wird ein Löschen blockweise durchgeführt. Im Gegensatz dazu finden Lese- und Programmierungoperationen seitenweise statt.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Beispielhafte Ausführungsformen werden nun unter Bezugnahme auf die beigefügten Zeichnungen beschrieben, in denen:
-
1 ein Blockdiagramm einer typischen Speicherkern-Architektur in einem NAND-Flash-Speicher ist;
-
2 ein Blockdiagramm einer beispielhaften NAND-Flash-Vorrichtung ist, innerhalb der eine der hier beschriebenen NAND-Kernarchitekturen implementiert werden könnte;
-
3 ein Blockdiagramm einer Speicherkern-Architektur für einen NAND-Flash-Speicher gemäß einer beispielhaften Ausführungsform ist;
-
4 ein Blockdiagramm einer Speicherkern-Architektur in einem NAND-Flash-Speicher gemäß einer beispielhaften Ausführungsform ist;
-
Die 5 und 6 für die beispielhafte Ausführungsform aus 3 eine Operation für das Lesen einer einzelnen Seite bzw. mehrerer Seiten zeigen;
-
7 ein Blockdiagramm einer Speicherkern-Architektur in einem NAND-Flash-Speicher gemäß einer beispielhaften Ausführungsform ist;
-
8 ein Blockdiagramm eines globalen Zeilendecoders gemäß einer beispielhaften Ausführungsform ist;
-
9 ein Schaltungsdiagramm einer beispielhaften Implementierung eines einzelnen Blockdecoders aus 8 ist;
-
10 ein Blockdiagramm einer anderen beispielhaften Implementierung eines einzelnen Blockdecoders aus 8 ist;
-
11 ein Blockdiagramm eines lokalen Zeilendecoders gemäß einer beispielhaften Ausführungsform ist;
-
12 ein Schaltungsdiagramm einer beispielhaften Implementierung eines einzelnen Sektordecoders aus 10 ist;
-
13 ein Zeitdiagramm für Lesen gemäß einer beispielhaften Ausführungsform ist;
-
14 ein Zeitdiagramm für Programmieren gemäß einer beispielhaften Ausführungsform ist; und
-
15 ein Zeitdiagramm für Löschen gemäß einer beispielhaften Ausführungsform ist.
-
DETAILLIERTE BESCHREIBUNG
-
1 illustriert eine Speicherkern-Architektur in einem NAND-Flash-Speicher. Der NAND-Flash-Speicherkern umfasst ein NAND-Speicherzellenfeld 100, einen Zeilendecoder 102 und eine Seitenpufferschaltung 103 und einen Spaltendecoder 104. Der Zeilendecoder 102 ist mit dem NAND-Speicherzellenfeld 100 durch einen Satz von Wortleitungen verbunden, wobei in 1 der Einfachheit halber nur eine Wortleitung 106 gezeigt ist. Die Seitenpufferschaltung 103 ist mit dem NAND-Speicherzellenfeld 100 über einen Satz von Bit-Leitungen verbunden, wobei in 1 der Einfachheit halber nur eine Bit-Leitung 108 gezeigt ist.
-
Die Zellenfeldstruktur des NAND-Flash-Speichers enthält einen Satz von n löschbaren Blöcken. Jeder Block ist in m programmierbare Seiten (Zeilen) unterteilt.
-
Das Löschen für die Speicherkern-Architektur aus 1 erfolgt blockweise. Im Gegensatz dazu finden Lese- und Programmieroperationen seitenweise statt.
-
Ein NAND-Flash-Speicher, der die Kernarchitektur des Flash aus 1 hat, leidet zumindest unter drei Beschränkungen. Erstens können Bits nur programmiert werden, nachdem ein Ziel-Speicherfeld gelöscht wurde. Zweitens kann jede Zelle nur einer begrenzten Anzahl von Löschungen standhalten, wonach sie Daten nicht mehr zuverlässig speichern kann. In anderen Worten, es besteht eine Begrenzung in der Anzahl von Lösch- und Programmierzyklen für Zellen (d. h. in der Lebensdauer, typischerweise bei 10.000~100.000 Zyklen). Drittens ist die minimale löschbare Feldgröße viel größer als die minimale programmierbare Größe des Feldes. Wegen dieser Limitierungen werden ausgeklügelte Datenstrukturen und Algorithmen implementiert, um Flash-Speicher effektiv zu verwenden.
-
Wenn der Flash-Controller ein Datenschreiben oder eine Datenmodifikation in selbst nur einem kleinen Teil der Seite anfordert, wird typischerweise der die zu modifizierende Seite enthaltende Block auf einen freien (leeren) Block umprogrammiert, der durch einen Reklamationsprozess der Löscheinheit deklariert ist. In diesem Fall werden gültige Seiten, die Originaldaten in dem ursprünglichen Block enthalten, in den ausgewählten freien Block kopiert. Danach wird der neue Block, der in einer Seite mit Originaldaten in dem Rest der Seiten modifizierten Daten aufweist, durch ein virtuelles Abbildungssystem in dem Flash-Controller auf die gültige Blockadresse umabgebildet. Der ursprüngliche Block ist nun obsolet und wird durch den Reklamationsprozess der Löscheinheit als ein freier Block deklariert, nachdem er gelöscht wurde.
-
Die limitierte Anzahl von Lösch-Programmier-Zyklen (Lebensdauer) beschränkt die Lebenszeit einer Flashvorrichtung. Es wäre vorteilhaft eine Lebenszeit zu haben, die so lang wie möglich ist, und dies hängt von dem Zugriffsmuster auf die Flashvorrichtung ab. Wiederholtes und häufiges Überschreiben einer einzelnen Zelle oder einer geringen Anzahl von Zellen wird bald den Beginn von Fehlern mit sich bringen und so die nützliche Lebenszeit der Vorrichtung schnell beenden.
-
Wenn darüber hinaus in einem Flash-Speichersystem mit mehreren Flash-Bauelementen eine signifikant ungleichmäßige Nutzung der Bauelemente in dem Flash-Speichersystem auftritt, dann wird ein Bauelement ein Lebenszeitende zu einem Zeitpunkt erreichen, an dem andere Bauelemente noch eine signifikante Restlebenszeit aufweisen. Wenn das eine Bauelement ein Lebenszeitende erreicht, kann es sein, dass das gesamte Speichersystem ersetzt werden muss und dies reduziert die Lebenszeit des Flash-Speichersystems stark.
-
Wenn Überschreibungen gleichmäßig auf alle Zellen der Vorrichtung verteilt werden können, wird der Eintritt von Fehlern soweit als möglich verzögert werden, wodurch die Lebenszeit der Vorrichtung maximiert wird. Um die Lebenszeit der Vorrichtung durch gleichmäßige Verwendung über alle Zellen der Vorrichtung hinweg zu verlängern, wurden vielerlei Beanspruchungsausgleichstechnologien und -algorithmen vorgeschlagen und in Flash-Speichersystemen implementiert. Im Laufe der Zeit wurden die Zellenfelder von NAND-Flash so miniaturisiert, dass sie den Punkt erreicht haben, an dem zu erwarten ist, dass eine weitere Reduktion in der Prozesstechnologie die maximale Anzahl von Lösch-Programmier-Zyklen drastisch reduziert.
-
Gemäß einem breiten Aspekt, wird ein NAND-Flash-Speicherkern mit mehrstufiger Zeilendecodierung offenbart.
-
Gemäß einen weiteren breiten Aspekt, wird eine NAND-Flash-Speichervorrichtung bereitgestellt, die umfasst: periphere Schaltungen, Eingangs/Ausgangs-Kontaktflächen, einen Hochspannungsgenerator; einen NAND-Flash-Speicherkern, der umfasst: ein NAND-Speicherzellenfeld, welches eine Mehrzahl von Zeilen bei einer Mehrzahl von Spalten umfasst, wobei die Zellen in einer Mehrzahl von Sektoren angeordnet sind, so dass jeder Sektor die Zellen einer Mehrzahl der Spalten enthält; wobei die Zellen in einer Mehrzahl von Blöcken angeordnet sind, so dass jeder Block Zellen einer Mehrzahl der Zeilen enthält; wobei das NAND-Speicherzellenfeld für ein Löschen bei einer Auflösung von einem Block innerhalb eines Sektors konfiguriert ist und für ein Lesen und Programmieren bei einer Auflösung von einer Zeile innerhalb eines Sektors konfiguriert ist.
-
Gemäß einem weiteren breiten Aspekt wird ein Verfahren in einem NAND-Flash-Speicherkern bereitgestellt, das umfasst: Durchführen einer mehrstufigen Zeilendecodierung. Wegen des Größenunterschieds zwischen Lesen/Programmieren und Löschen führen die oben beschriebenen Blockkopieroperationen zu unnötigen Programmieroperationen, weil nicht betroffene Daten in den Seiten des Blocks zusammen mit den modifizierten Daten in den neuen Block erneut programmiert (kopiert) werden. Es könnte sich eine dramatische Verlängerung der Lebenszeit der Vorrichtung ergeben, wenn die minimale löschbare Feldgröße kleiner wäre als ein gesamter Block.
-
2 ist ein Blockdiagramm einer Vorrichtung 150, die ein NAND-Flash-Speicherbauelement 152 enthält. Das NAND-Flash-Speicherbauelement 152 hat einen Speicherkern mit mehrstufiger Zeilendecodierung, der im Allgemeinen durch 158 bezeichnet wird. Zusätzlich weist das NAND-Flash-Speicher-Bauelement 152 eine periphere Schaltung 154, Eingangs- und Ausgangskontaktflächen 156 und Hochspannungsgenerator(en) 160 auf. Die periphere Schaltung 154 kann beispielsweise einen oder mehrere Eingangs- und Ausgangspuffer für Adressen und Daten, Eingangspuffer für Steuerungs- und Befehlssignale, eine State-Maschine mit einem Befehlsdecoder, einen Adresszähler, Zeilen- und Spaltenvordecoder sowie Statusregister umfassen. Die Vorrichtung 150 kann jede Vorrichtung sein, die eine Verwendung für ein NAND-Flash-Speicher-Bauelement 152 hat. Konkrete Beispiele umfassen ein mobiles Gerät, einen Memorystick, eine Kamera, ein Festkörperplattenlaufwerk sowie einen MP3-Spieler. Das Flash-Bauelement 152 kann einen permanenten Teil der Vorrichtung 150 bilden oder es kann entfernbar sein. Detaillierte beispielhafte Implementierungen des Speicherkerns mit mehrstufiger Zeilendecodierung werden nachfolgend beschrieben. Allgemeiner werden sämtliche Speicherkerne mit mehrstufiger Zeilendecodierung betrachtet. Das Zellenfeld wird aus Sektoren gebildet, wobei jeder Sektor eine Mehrzahl von Spalten aus Zellen enthält. Die Zellen bilden auch Blöcke, wobei jeder Block eine Mehrzahl von Zeilen enthält, die auch als Seiten bezeichnet werden. In einigen Ausführungsformen umfasst ein mehrstufiges Zeilendecodieren das Ausführen einer ersten Stufe der Zeilendecodierung für alle diese Sektoren und für jeden einzelnen Sektor das Ausführen einer zweiten Stufe der Zeilendecodierung nur für diesen Sektor. In einigen Ausführungsformen wird eine Löschung innerhalb des Speicherkerns mit einer Auflösung von einem Block innerhalb eines Sektors ausgeführt und Lese- und Löschoperationen finden mit einer Auflösung von einer Zeile innerhalb eines Sektors statt.
-
Bezugnehmend auf 3 wird eine Kernarchitektur gemäß einer beispielhaften Ausführungsform gezeigt. Die Kernarchitektur enthält ein NAND-Speicher-Zellenfeld, das in Form zumindest zweier NAND-Speicherzellensektoren implementiert ist, die nachfolgend einfach als „Sektoren” bezeichnet werden, wobei in dem illustrierten Beispiel vier Sektoren 200, 202, 204, 206 gezeigt sind. Das NAND-Speicherzellenfeld ist aus einer Mehrzahl von Blöcken gebildet, die wiederum aus Seiten gebildet werden, die auch als Zeilen bezeichnet werden. Die Zellen eines jeden Sektors des NAND-Speicherzellenfelds sind auch in Spalten (nicht gezeigt) angeordnet. Die Zeilendecodierungsfunktionalität wird durch einen globalen Zeilendecoder 208 bereitgestellt, der eine Zeilendecodierung auf Blockebene durchführt, in Kombination mit einem Satz von lokalen Zeilendecodern 210, 212, 214, 216, die eine Decodierung auf der Ebene einer durch den globalen Zeilendecoder ausgewählten Seite innerhalb eines Blockes durchführen. Allgemeiner, der globale Zeilendecoder 208 führt eine erste Stufe der Zeilendecodierung aus, um eine Untermenge der Mehrzahl von Zeilen auszuwählen. In hier im Detail beschriebenen beispielhaften Ausführungsformen sind die auswählbaren Untermengen kontinuierliche Blöcke, aber das muss nicht in allen Implementierungen der Fall sein. Die lokalen Zeilendecoder 210, 212, 214, 216 führen eine zweite Stufe der Zeilendecodierung aus, um eine Zeile innerhalb der Untermenge der Mehrzahl von durch den globalen Zeilendecoder 208 ausgewählten Zeilen auszuwählen. Die lokalen Zeilendecoder 210, 212, 214, 216 enthalten für jeden entsprechenden Sektor 200, 202, 204, 206 einen assoziierten lokalen Zeilendecoder und führen die Seitenauswahl lokal in dem assoziierten Sektor aus. Eine Seitenpufferfunktionalität ist durch vier Seitenpufferschaltungen 220, 222, 224, 226, einer für jeden Sektor 200, 202, 204, 206, implementiert. Eine Spaltendecodierungsfunktionalität ist durch vier Spaltendecoder 221, 223, 225, 227, einen für jeden Sektor 200, 202, 204, 206, implementiert.
-
Eine Leseoperation wird bei einer Auflösung von einer Seite innerhalb eines Blockes innerhalb eines Sektors ausgeführt. Eine Programmieroperation wird ebenfalls bei einer Auflösung von einer Seite innerhalb eines Blockes innerhalb eines Sektors ausgeführt. Eine Löschoperation wird bei der Auflösung von einem Block innerhalb eines Sektors ausgeführt.
-
Für eine Leseoperation wird der globale Zeilendecoder 208 verwendet, um einen Block aus der Mehrzahl von Blöcken des NAND-Speicherzellenfelds auszuwählen. Die Sektorenauswahl wird durchgeführt, indem mittels der Seitenpufferschaltung und dem mit dem gewünschten Speichersektor assoziierten Spaltendecoder eine Spaltenauswahl durchgeführt wird. Dies kann beispielsweise dadurch erreicht werden, dass ein Speichercontroller die assoziierte Seitenpufferschaltung und den Zeilendecoder aktiviert und/oder Spaltendecodersignale an die assoziierte Seitenpufferschaltung und den Spaltendecoder gesendet werden. Eine Seitenauswahl wird durch den mit dem ausgewählten Sektor assoziierten lokalen Zeilendecoder durchgeführt. Auf diese Weise kann eine ausgewählte Seite innerhalb eines ausgewählten Blocks innerhalb eines ausgewählten Sektors gelesen werden. Während einer Leseoperation werden die Daten der ausgewählten Seite innerhalb des ausgewählten Blocks und innerhalb des ausgewählten Sektors gelesen und in einen Leseverstärker (nicht gezeigt) und die Seitenpufferschaltung des ausgewählten Sektors gesichert. Danach werden die in der Seitenpufferschaltung gespeicherten Daten sequenziell durch den assoziierten Spaltendecoder ausgelesen und beispielsweise in einem globalen Puffer (nicht gezeigt) gespeichert.
-
Für eine Löschoperation wird der globale Zeilendecoder 208 verwendet, um einen Block aus der Mehrzahl von Blöcken des NAND-Speicherzellenfelds auszuwählen. Die Sektorenauswahl wird durchgeführt, indem mit der Seitenpufferschaltung und dem mit dem gewünschten Speichersektor assoziierten Spaltendecoder eine Spaltenauswahl vorgenommen wird. Dann wird ein zugehöriges Löschsignal angelegt. Auf diese Weise kann ein ausgewählter Block innerhalb eines ausgewählten Sektors gelöscht werden.
-
Für eine Programmieroperation wird der globale Zeilendecoder 208 verwendet, um einen Block aus der Mehrzahl von Blöcken des NAND-Speicherzellenfelds auszuwählen. Die Sektorenauswahl wird durchgeführt, indem mit der Seitenpufferschaltung und dem mit dem gewünschten Speichersektor assoziierten Spaltendecoder eine Spaltenauswahl vorgenommen wird. Die Seitenauswahl wird durch den mit dem ausgewählten Sektor assoziierten lokalen Zeilendecoder ausgeführt. Dann wird der Inhalt der mit dem ausgewählten Sektor assoziierten Seitenpufferschaltung in die ausgewählte Seite innerhalb des ausgewählten Blocks innerhalb des ausgewählten Sektors programmiert. Während einer Programmieroperation werden die Eingangsdaten (beispielsweise aus einer globalen Pufferschaltung, nicht gezeigt) sequenziell über den assoziierten Spaltendecoder in die Seitenpufferschaltung des ausgewählten Sektors geladen. Die in der Seitenpufferschaltung gesicherten Eingangsdaten werden dann in die ausgewählte Seite des ausgewählten Sektors programmiert.
-
4 zeigt ein anderes Beispiel für eine Kernarchitektur gemäß einer beispielhaften Ausführungsform. Diese beispielhafte Ausführungsform ist ähnlich zu 2 und gleiche Komponenten wurden unter Verwendung gleicher Bezugszahlen bezeichnet. Die beispielhafte Ausführungsform von 4 weist einen Blockvordecoder 230 auf, der durch die Blockdecoderleitungen 231 mit dem globalen Zeilendecoder 208 verbunden ist. Der globale Zeilendecoder 208 ist mit dem Speicherfeld über eine Mehrzahl von Blockleitungen, eine pro Block, verbunden, wenngleich in dem illustrierten Beispiel nur eine Blockleitung 240 gezeigt ist. Die Blockleitungen sind mit allen lokalen Zeilendecodern 210, 212, 214, 216 gemeinsam verbunden. Jeder lokale Zahlendecoder 210, 212, 214, 216 wird auch über einen entsprechenden Satz von Seitendecoderleitungen 233, 235, 237, 239 von einem entsprechenden Seitendecoder 232, 234, 236, 238 getrieben. Jeder lokale Zeilendecoder 210, 212, 214, 216 ist mit dem korrespondierenden Sektor über eine Mehrzahl von Wortleitungen verbunden, wobei pro Sektor nur einige gezeigt und mit 211, 213, 215, 219 bezeichnet sind.
-
Im Betrieb wandelt der Blockvordecoder 230 eine Eingab, beispielsweise von einem Speichercontroller, in ein passendes Signal auf den Blockdecoderleitungen 231 um, um einen bestimmten Block auszuwählen. Der globale Zeilendecoder 208 wählt eine der Blockleitungen aus. Um eine bestimmte Seite innerhalb eines bestimmten Sektors auszuwählen, wird der Seitendecoder des assoziierten Sektors (einer der Seitendecoder 232, 234, 236, 238) aktiviert und verwendet, um die bestimmte Seite innerhalb des ausgewählten Blocks auszuwählen.
-
Ein Beispiel für eine Auswahl eines einzelnen Sektors ist in 5 bildlich dargestellt, die die Auswahl einer Seite innerhalb eines Blocks für den lokalen Zeilendecoder 210 zeigt. In einigen beispielhaften Ausführungsformen ist die Schaltung konfiguriert, um eine gleichzeitige Aktivierung mehrerer Seitendecoder zu ermöglichen. In derartigen beispielhaften Ausführungsformen kann innerhalb des ausgewählten Blocks die Auswahl einer entsprechenden Seite innerhalb mehrerer Sektoren durch Aktivierung mehrerer Seitendecoder ermöglicht werden. Ein Beispiel für die Auswahl mehrerer Sektoren ist in 6 gezeigt, die die Auswahl einer Zeile innerhalb eines Blockes durch jeden der Zeilendecoder 210 und 214 zeigt. Die Blockleitung wählt einen der Blöcke innerhalb aller Sektoren aus, während die Seitendecoderleitungen eine der Seiten (d. h. Wortleitungen) innerhalb des ausgewählten Blockes in jedem Sektor auswählen.
-
In dieser beispielhaften Ausführungsform wird das Ergebnis einer Leseoperation sein, dass eine oder mehrere Seitenpufferschaltungen ausgelesene Daten enthalten. Der Inhalt dieser Seitenpufferschaltungen wird dann individuell ausgelesen. Das Ergebnis einer Programmieroperation wird sein, dass der Inhalt einer oder mehrerer Seitenpufferschaltungen gleichzeitig programmiert wird. Typischerweise wird dem eine Folge von Operationen zum Schreiben in Seitenpuffer vorausgehen, wodurch die mehreren Seitenpufferschaltungen sequenziell beschrieben werden.
-
7 zeigt eine detailliertere Kernarchitektur gemäß einer beispielhaften Ausführungsform, wobei diese beispielhafte Ausführungsform wiederum ähnlich zu 3 ist und gleiche Komponenten unter Verwendung gleicher Bezugszahlen bezeichnet wurden. In 7, wie bei anderen Blockdiagrammen, sind bestimmte Komponenten (wie beispielsweise Spaltendecoder) nicht gezeigt, um zu vermeiden, dass Merkmale der beispielhaften Ausführungsformen verdeckt werden. In dem Beispiel umfasst ein NAND-Kern (dies kann die gesamte Kernarchitektur der Vorrichtung, eine Ebene oder eine Bank sein) vier Sektoren und die Seitengröße jedes Sektors beträgt 512 Bytes. Allgemeiner beträgt die Seitengröße jedes Sektors wenigstens 1 Byte. In diesem Beispiel liegen 2048 Blöcke vor, die zusammen mit 217 bezeichnet werden. Jeder Block ist in vier Sektoren aufgeteilt. Der globale Zeilendecoder 208 ist mit allen lokalen Zeildendecodern 210, 212, 214, 216 gemeinsam über 2048 Blockleitungen (nicht gezeigt), eine pro Block, verbunden. Jeder Block hat 32 Seiten.
-
Eine beispielhafte Implementierung des globalen Zeilendecoders 208 aus 7 ist in 8 bildlich dargestellt. Der globale Zeilendecoder 208 hat einen entsprechenden Blockdecoder für jeden Block, nämlich 2048 Blockdecoder, die zusammen mit 209 bezeichnet sind und zu der Anzahl der Blöcke korrespondieren. Jeder der Blockdecoder ist mit den Blockdecoderleitungen 231 verbunden. In diesem Beispiel umfassen die Blockdecoderleitungen 231 Leitungen xp, xq, xr, xt zum Führen der Blockdecoder-Adresssignale Xp, Xq, Xr und Xt. Xp, Xq, Xr und Xt sind die vordecodierten Leitungen. Xp korrespondiert zu den Adressen A0~A2. Xq korrespondiert zu den Adressen A3~A5. Xr korrespondiert zu den Adressen A6~A8. Xt korrespondiert zu den Adressen A9~A10. Jeder Blockdecoder treibt eine entsprechende Blockleitung (nicht gezeigt). Der Blockdecoder, der mit dem durch die Adresssignale auf den Blockdecoderleitungen 231 indizierten Block assoziiert ist, treibt die entsprechende Blockleitung in einen ausgewählten Zustand und alle anderen Blockleitungen befinden sich in einem nichtausgewählten Zustand.
-
Eine beispielhafte Schaltungsimplementierung eines einzelnen Blockdecoders ist in 9 bildlich dargestellt. Es ist zu bemerken, dass es viele Variationen für die Schaltungsimplementierung für den Blockdecoder gibt, und das solche Variationen für den Fachmann leicht erkennbar sein sollten.
-
Die Schaltung hat eine Verriegelungsschaltung für Blockdecoderadressen mit einem Verriegelungsschaltungsausgang BDLCH_out, der auf 0 V zurückgesetzt wird, wenn der RST_BD hoch ist (tatsächlich ein kurzer Puls) und verriegelt wird, wenn der LCHBD hoch ist (was ein kurzer Puls sein kann), mit gültig vordecodierten Adresssignalen von Xp, Xq, Xr und Xt (Blockdecoderleitungen), die an dem NAND-Logikgatter 303 empfangen werden. Detaillierte Timing-Informationen sind in den 12, 13 und 14 nachfolgend beschrieben.
-
Der Blockdecoder weist eine lokale Ladungspumpe 300 auf, die ein Hochvolt-Schalter-Schaltkreis ist, um während der Lese-, Programmier- und Löschoperationen Spannungen bereitzustellen. Die lokale Ladungspumpe 300 enthält einen n-Kanal-Durchgangstransistor 352 vom Verarmungs-Typ, einen systemeigenen n-Kanal diodenverbundenen Treibertransistor 354, einen n-Kanal Entkopplungstransistor 356 mit hoher Durchbruchsspannung, einen n-Kanal-Clamp-Transistor 358 mit hoher Durchbruchspannung, ein NAND-Logikgatter 360 sowie einen Kondensator 362. Das NAND-Logikgatter 360 hat einen Eingangsanschluss zum Empfang des Ausgangs BDLCH_out der Verriegelungsschaltung und einen anderen Eingangsanschluss zum Empfang eines Kontrollsignals OSC zum Treiben eines Anschlusses des Kondensator 362. Der Durchgangstransistor 352 wird durch das Komplement des Signals HVen gesteuert, das als HVenb bezeichnet wird. Die gemeinsamen Anschlüsse des Entkopplungstransistors 356 und des Clamp-Transistors 358 sind an die Hochspannung Vhv gekoppelt.
-
Das endgültige Ausgangssignal BD_out eines jeden Blockdecoders ist gemeinsam mit allen lokalen Zeilendecodern verbunden, beispielsweise wie in 9 dargestellt.
-
Nun wird der Betrieb der lokalen Ladungspumpe
350 beschrieben. Während einer Leseoperation befindet sich HVenb auf dem hohen Logikniveau und OSC wird auf dem niedrigen Logikniveau gehalten. Deshalb sind die Schaltungselemente
352,
354,
356 und
358 inaktiv und der Ausgangsanschluss BD_out spiegelt das bei BDLCH_out erscheinende Logikniveau wider. Während einer Programmieroperation befindet sich HVenb auf dem niedrigen Logikniveau und OSC darf zwischen dem hohen und dem niedrigen Logikniveau bei einer vorbestimmten Frequenz oszillieren. Wenn der Ausgang BDLCH_out der Verriegelungsschaltung sich auf dem hohen Logikniveau befindet, dann wird der Kondensator
362 wiederholt Ladung auf seinem anderen Anschluss ansammeln und die angesammelte Ladung über den Treibertransistor
354 entladen. Der Entkopplungstransistor
356 isoliert Vhv von der getriebenen Spannung an dem Gate des Treibertransistors
354. Der Clamp-Transistor
358 hält das Spannungsniveau des Ausgangsanschlusses BD_out bei ungefähr Vhn + Vth, wobei Vth die Schwellenspannung des Clamp-Transistors
358 ist. Die in
9 gezeigte lokale Ladungspumpe
300 ist eine beispielhafte Schaltung, die verwendet werden kann, um Signale auf Spannungsniveaus zu treiben, die höher sind als die Versorgungsspannung Vcc, aber Fachleute werden verstehen, das andere Ladungspumpenschaltungen verwendet werden können, die eine ähnliche oder äquivalente Effektivität aufweisen. Die nachfolgende Tabelle 1 zeigt beispielhafte Bias-Bedingungen für die lokale Ladungspumpe
300 während Lese- und Programmieroperationen. TABELLE 1
| Lesen | Programmieren |
| ausgewählt | nicht ausgewählt | ausgewählt | nicht ausgewählt |
BDLCH_out | Vcc | Vss | Vcc | Vss |
HVenb | Vss | Vss | Vss | Vss |
OSC | Oszillation | Oszillation | Oszillation | Oszillation |
Vhn | Vread7 (~7 V) | Vread7 (~7 V) | ~Vpgm (14 V~18 V) | ~Vpgm (14 V~18 V) |
BD_out | Vread7 (~7 V) + Vth | Vss | Vpgm (14 V~18 V) + Vth | Vss |
-
Das Ausgangssignal BD_out des Blockdecoders wird auf Vhv angehoben, wenn der Ausgang BDLCH_out der Verriegelungsschaltung des Blockdecoders auf Vcc liegt, HVenb bei 0 V liegt und OSC oszilliert.
-
Bezugnehmend auf 10 verwendet ein anderes Beispiel für einen Blockdecoder einen Blockauswahltransistor. Vhwl ist eine Hochspannungsquelle, die basierend auf Operationen verschiedene Niveaus aufweist. In dieser beispielhaften Ausführungsform wird die Treibbarkeit von BD_out durch die Größe des Blockauswahltransistors und nicht durch die lokale Ladungspumpe bestimmt. Daher liefert diese Schaltung eine stärkere Treibbarkeit im Falle einer hohen Anzahl lokaler Zeilendecoder in dem NAND-Speicherkern.
-
11 zeigt bildhaft ein Beispiel eines lokalen Zeilendecoders. Der lokale Zeilendecoder hat 2048 Sektordecoder, zusammen mit 500 bezeichnet, einen pro Block. Diese werden als Sektordecoder bezeichnet, weil eine Seite innerhalb eines Sektors ausgewählt wird, im Gegensatz zu einer Seite innerhalb des gesamten Speicherfeldes. Die Eingaben für die lokalen Zeilendecoder sind die Seitendecoderleitungen, die in dem illustrierten Beispiel eine String-Auswahl (SS), Wortleitungs-Auswahlsignale S0–S31 (eines pro Wortleitung) sowie eine Masseauswahl (GS) umfassen. Die Wortleitungs-Auswahlsignale S0–S31 sind gemeinsam mit den Sektordecodern verbunden.
-
Nun bezugnehmend auf 12 wird eine beispielhafte Schaltung für einen einzelnen Sektordecoder beschrieben. Die String-Auswahlleitung SSL, die Wortleitungen WL0 bis WL31 und die Masseauswahlleitung GSL werden durch gemeinsame Signale SS, S0 bis S31 und GS über die Durchgangstransistoren TSS, TS0 bis TS31 und TGS getrieben, die gemeinsam durch das Ausgangssignal BB_out des assoziierten Blockdecoders getrieben werden. Die Seitendecoderleitungen, nämlich das String-Ausgangssignal SS, das Masseauswahlsignal GS und die gemeinsamen String-Decodier-Signale S0 bis S31 werden durch den Seitendecoder bereitgestellt.
-
Im Betrieb ist der BB_out-Eingang aller korrespondierenden Sektordecoder für den ausgewählten Block aktiviert. Das wird einen Sektordecoder für diesen Block in jedem Sektor umfassen. Für alle übrigen Blöcke, die nicht ausgewählt wurden, ist BB_out aller korrespondierenden Sektordecoder deaktiviert. Bei einem Sektor, für den eine Operation auszuführen ist, werden innerhalb dieses Sektors alle Sektordecoder gemeinsam durch gemeinsame Seitendecoderleitungen gesteuert. Es kann einen oder mehrere Sektoren geben, für die eine Operation auszuführen ist. Für einen Sektor, für den keine Operation auszuführen ist, sind alle der gemeinsamen Seitendecoderleitungen inaktiv, so dass alle der gemeinsam verbundenen Sektordecoder inaktiv sind. Für einen Sektordecoder der sowohl durch ein BD_out in einem ausgewählten Zustand sowie durch aktive Seitendecoderleitungen ausgewählt ist, bewirkt der Sektordecoder, dass eine entsprechend ausgewählte Wortleitung (eine aus WL0 bis WL31) in einem ausgewählten Zustand ist, während die verbleibenden Wortleitungen in einem nicht ausgewählten Zustand sind.
-
Tabelle 2 zeigt einen beispielhaften Satz von Bias-Bedingungen für den Blockdecoder, den lokalen Zellendecoder und das NAND-Zellenfeld während des Lesens, Programmierens und Löschens. Es versteht sich, dass alle Werte abhängig von Zellencharakteristika und Prozesstechnologie variieren können.
| Lesen | Programmieren | Laschen |
Ausgewählter globaler Zeilendecoder: BD_out | Vread7 (~7 V) + Vth | Vpgm + Vth | Vcc |
nichtausgewählter globaler Zeilendecoder: BD_out | Vss (0 V) | Vss (0 V) | Vss (0 V) |
Lokaler Decoder im ausgewählten Sektor |
SS | Vread (4~5 V) | 2 V ~ Vcc | Schwebend und Vcc–Vth (selbst-treibend) |
Ausgewählter SI | Vss (0 V) | Vpgm (14 V~18 V) | Vss (0 V) |
Nichtausgewählter SI | Vread (4~5 V) | Vpass (8 V~12 V) | - |
SSL | Vread (4~5 V) | 2 V~Vcc | Schwebend und selbst-treibend (70–90% von Vers) |
Ausgewählte WLi | Vss (0 V) | Vpgm (14 V~18 V) | Vss (0 V) |
Nichtausgewählte WLi | Vread (4~5 V) | Vpass (8 V~12 V) | - |
GS | Vread (4~5 V) | Vss (0 V) | Schwebend und Vcc–Vth (selbst-treibend) |
GSL | Vread (4~5 V) | Vss (0 V) | Schwebend und selbst-treibend (70–90% von Vers) |
Bitleitungen | Vorgeladen und gelesen | Vss (0 V) für Programmieren & Vcc für Programmiersperrung | Clamp auf Vers-0,6 V |
Zellensubstrat | Vss (0 V) | Vss (0 V) | Vers (~20 V) |
Lokaler Decoder im nichtausgewählten Sektor |
SS | Vss (0 V) | Vss (0 V) | Vss (0 V) |
Alle Si | Vss (0 V) | Vss (0 V) | Vss (0 V) |
GS | Vss (0 V) | Vss (0 V) | Vss (0 V) |
SSL | Vss (0 V) | Vss (0 V) | Vss (0 V) |
Alle WLi | Vss (0 V) | Vss (0 V) | Vss (0 V) |
GSL | Vss (0 V) | Vss (0 V) | Vss (0 V) |
Bitleitungen | Vss (0 V) | Vss (0 V) | Vss (0 V) |
Zellensubstrat | Vss (0 V) | Vss (0 V) | Vss (0 V) |
-
Mit dieser beispielhaften Ausführungsform können entweder eine einzelne Sektoroperation oder mehrere Sektoroperationen ausgeführt werden. Für Leseoperationen können ein Lesen auf einer Seite eines einzelnen Sektors sowie ein paralleles Lesen auf je einer Seite von bis zu vier Sektoren ausgeführt werden. Allgemeiner wird die maximale Anzahl von Sektoren, die parallel gelesen werden können, durch die Anzahl von Sektoren in dem NAND-Speicherkern bestimmt. Für Programmieroperationen können ein Programmieren auf einer Seite eines einzelnen Sektors sowie ein paralleles Programmieren auf je einer Seite von bis zu vier Sektoren ausgeführt werden. Allgemeiner wird die maximale Anzahl von Sektoren, die parallel programmiert werden können, durch die Anzahl der Sektoren in dem NAND-Speicherkern bestimmt. Für Löschoperationen können ein Löschen eines einzelnen Sektorblocks sowie ein paralleles Löschen von bis zu vier Sektorblöcken ausgeführt werden. Allgemeiner wird die maximale Anzahl von Sektoren, die parallel gelöscht werden können, durch die Anzahl der Sektoren in dem NAND-Speicherkern bestimmt.
-
13 zeigt ein Beispiel für das Timing einer Leseoperation gemäß einiger beispielhafter Ausführungsformen. Die Spannung-Bias-Bedingungen während des Lesens sind für dieses Beispiel in Tabelle 2 oben für dieses Beispiel definiert. Alle Signale jedes nicht ausgewählten Sektors verbleiben bei 0 V. Dieses Operationstiming beruht auf der Verwendung des in 9 gezeigten Blockdecoders.
-
14 zeigt ein Beispiel für das Timing einer Programmieroperation gemäß einiger beispielhafter Ausführungsformen. Die Spannung-Bias-Bedingungen während des Programmierens sind für dieses Beispiel in Tabelle 2 oben für dieses Beispiel definiert. Alle Signale jedes nicht ausgewählten Sektors verbleiben bei 0 V. Dieses Operationstiming beruht auf der Verwendung des in 9 gezeigten Blockdecoders.
-
15 zeigt ein Beispiel für ein Timing einer Löschoperation gemäß einiger beispielhafter Ausführungsformen. Die Spannung-Bias-Bedingungen während des Löschens sind für dieses Beispiel in Tabelle 2 oben definiert. Alle Signale in nichtausgewählten Sektoren verbleiben bei 0 V. Dieses Operationstiming beruht auf der Verwendung des in 9 gezeigten Blockdecoders.
-
In den 13, 14, 15 ist Sel_Si die Kurzform für irgendein „ausgewähltes” Si-Eingangssignal (wobei Si = {S0... S31}). Unsel_Si ist die Kurzform für irgendein „nichtausgewähltes” Si-Eingangssignal (wobei Si = {S0... S31}). Sel_WLi ist die Kurzform für irgendein „ausgewähltes” Wortleitungssignal (wobei WLi = {WL0... WL31}). Unsel_WLi ist die Kurzform für irgendein „nichtausgewähltes” Wortleitungssignal (wobei WLi = {WL0... WL31}).
-
Man wird verstehen, dass wenn hier ein Element als „verbunden” oder an ein anderes Element „gekoppelt” bezeichnet wird, es direkt verbunden oder an das andere Element gekoppelt sein kann oder dazwischen liegende Elemente vorhanden sein können. Wenn im Gegensatz dazu ein Element hier als „direkt verbunden” oder „direkt” an ein anderes Element „gekoppelt” bezeichnet wird, dann sind keine dazwischen legenden Elemente vorhanden. Andere zur Beschreibung der Beziehung zwischen Elementen verwendete Worte sollten auf ähnliche Weise interpretiert werden (d. h. „zwischen” gegenüber „unmittelbar zwischen”, „benachbart” gegenüber „unmittelbar benachbart”, usw.).
-
Bestimmte Anpassungen und Modifikationen der beschriebenen Ausführungsformen können erfolgen. Daher werden die oben diskutierten Ausführungsformen als illustrativ und nicht beschränkend betrachtet.