-
TECHNISCHES GEBIET
-
Hierin beschriebene Ausführungsformen richten sich im Allgemeinen an das Gebiet von Programmiertechniken für NAND-Speicher-Arrays, und insbesondere an Programmiertechniken zur Beseitigung eines Programm-Stör-Fehlers, der auf einem Datenmuster basiert.
-
US 2008/0055994 A1 offenbart ein Verfahren zum Programmieren von nichtflüchtigem Speicher, das umfasst: Programmieren eines ersten nichtflüchtigen Speicherelements in einer ersten NAND-Kette, wobei die erste NAND-Kette eine erste Gruppe nichtflüchtiger Speicherelemente, eine zweite Gruppe nichtflüchtiger Speicherelemente und ein nichtflüchtiges Grenzspeicherelement, das sich zwischen der ersten Gruppe nichtflüchtiger Speicherelemente und der zweiten Gruppe nichtflüchtiger Speicherelemente befindet, enthält, wobei die erste Gruppe nichtflüchtiger Speicherelemente ein erstes nichtflüchtiges Speicherelement enthält, wobei das Programmieren des ersten nichtflüchtigen Speicherelements das Herstellen eines ersten Programmzustands für das erste nichtflüchtige Speicherelement umfasst.
-
US 2008/0074923 A1 offenbart eine Flash-Speichereinrichtung und ein Verfahren zum Programmieren derselben. Die Flash-Speichervorrichtung enthält eine Anordnung von Speicherzellen, die durch eine Vielzahl von Bitleitungen und eine Vielzahl von Wortleitungen geschnitten werden. Eine Seitenpufferschaltung enthält eine Vielzahl von Latches, die mit einer geraden virtuellen Bitleitung und einer ungeraden virtuellen Bitleitung gekoppelt sind. Die Seitenpufferschaltung ist so konfiguriert, dass sie Daten in das Array von Speicherzellen in Abhängigkeit von einer Auswahlschaltung lädt, die so strukturiert ist, dass sie zumindest einige der Bitleitungen mit der Vielzahl von Zwischenspeichern der Seitenpufferschaltung elektrisch koppelt.
-
US 6181599 B1 offenbart eine Programmstörung in einem Flash-Speicher-Array, die durch Anlegen eines Spannungspegels, der von dem Schwellenwert einer zuvor programmierten Zelle bis zur Wortleitung dieser Zelle während der Programmierung von nachfolgenden Zellen auf derselben Bitleitung abhängt, reduziert wird. Durch das Anlegen höherer Spannungen an Wortleitungen, die nicht ausgewählte programmierte Speicherzellen mit höheren Schwellenspannungen enthalten, wird die Programmstörung aufgrund dieser höheren Schwellenzellen reduziert.
-
HINTERGRUND
-
1 zeigt ein vereinfachtes schematisches Diagramm eines beispielhaften Teils eines Column-Stripe-Musters für ein Speicher-Array 100 eines NAND-Flash-Speichergeräts.
-
Bei 1 ist eine Serie von NAND-Speicherketten 120 in Speicher-Array 100 angeordnet und mit Bitleitungen BL0–BL5 und Source-Leitungen SL (von denen lediglich eine Source-Leitung SL gezeigt ist) gekoppelt. Bei jeder NAND-Speicherkette 120 ist eine Serie von Floating Gate-, oder Floating Node-, FET-Speicherzellen 102 Source-zu-Drain miteinander gekoppelt, um eine NAND-Speicherkette 120 (typischerweise mit 8, 16, 32 oder mehr Zellen) zu bilden. Jede Floating Gate/Node-FET-Speicherzelle 102 weist einen Gate-Isolator-Stapel auf, der über einem Kanalgebiet gebildet ist. Um weiter Betrieb zu ermöglichen, ist jede NAND-Speicherkette 120 von Speicher-Array 100 in einem Isolationsgraben (nicht gezeigt) gebildet, wobei es dem Substrat eines jeden Isolationsgrabens ermöglicht wird, zur Programmierung und Löschung auf wohlbekannte Art und Weise individuell vorgespannt zu werden.
-
Wortleitungen WL0–WL65 kreuzen die NAND-Speicherketten 120 und koppeln die Steuer-Gates von Speicherzellen 102 in benachbarten Speicherketten 120, um eine einzelne Speicherzelle 102 in jeder NAND-Speicherkette 120 freizugeben oder auszuwählen. Bei jeder NAND-Speicherkette 120 sind störstoffdotierte Gebiete (typischerweise ein N+ Störstoff) zwischen jedem Gate-Isolator-Stapel gebildet, um die Source- und Drain-Gebiete der benachbarten Speicherzellen 102 zu bilden, die zusätzlich als Verbinder arbeiten, um die Zellen der NAND-Kette 120 miteinander zu koppeln. Bei einer beispielhaften alternativen Ausführungsform sind die N+-dotierten Gebiete weggelassen und ein einzelnes Kanalgebiet ist unter einer NAND-Speicherkette 120 gebildet, wobei die individuellen Speicherzellen 102 gekoppelt werden. Jede NAND-Speicherkette 120 ist gekoppelt, um Gates 104 auszuwählen, die an beiden Enden einer jeden NAND-Speicherkette 120 gebildet sind, und um gegenüberliegende Enden einer jeden NAND-Speicherkette 120 mit einer Bitleitung (bit line) BL und mit einer Source-Leitung (source line) SL selektiv zu koppeln. Die Auswahl-Gates 104 sind je mit Gate-Auswahlleitungen gekoppelt, d. h. Auswahl-Gate-Drain (select gate drain) SDS und Auswahl-Gate-Source (select gate source) SGS, die die Kopplung von NAND-Speicherketten 120 mit den Bitleitungen BL bzw. Source-Leitungen SL über Auswahl-Gates 104 steuern.
-
Auf NAND-Speicher-Array 100 wird auf wohlbekannte Art und Weise durch einen Zeilen-Decoder (nicht gezeigt) zugegriffen, der eine Zeile von Speicherzellen aktiviert, indem er eine bestimmte Wort-Auswahlleitung WL auswählt, die mit den Gates der Speicherzellen-Zeile gekoppelt ist. Wortleitungen WL, die mit den Gates der nicht ausgewählten Speicherzellen einer jeden NAND-Speicherkette 120 gekoppelt sind, werden ebenfalls betrieben. Die nicht ausgewählten Speicherzellen einer jeden NAND-Speicherkette 120 werden jedoch typischerweise von einer höheren Gatespannung betrieben, um sie als Leit-Transistoren zu betreiben, wobei es ihnen ermöglicht wird, Strom auf eine Art zu leiten, die von ihren gespeicherten Datenwerten uneingeschränkt ist. Strom fließt dann von der Source-Leitung SL durch jede Floating Gate/Node-Speicherzelle der in Serie geschalteten NAND-Speicherkette zu der Column-Bitleitung BL. Der Strom, der in den entsprechenden Bitleitungen BL fließt, ist lediglich durch die gespeicherten Datenwerte der Zeile ausgewählter Speicherzellen eingeschränkt. Eine Column-Page von Bitleitungen wird ausgewählt und erkannt, und dann werden individuelle Datenwörter aus den erkannten Datenwörtern von der Column-Page ausgewählt und von dem Speichergerät kommuniziert.
-
Bei einigen beispielhaften Ausführungsformen ist NAND-Speicher-Array 100 derart konfiguriert, dass geradzahlige Bitleitungen (d. h. BL0, BL2, BL4 etc.) als Teil einer geradzahligen Column-Page konfiguriert sind, und ungeradzahlige Bitleitungen (d. h. BL1, BL3 etc.) als Teil einer ungeradzahligen Column-Page konfiguriert sind. Bei anderen beispielhaften Ausführungsformen ist NAND-Speicher-Array 100 als ein Array ohne eine geradzahlige und ungeradzahlige Column-Page-Anordnung konfiguriert.
-
Die herkömmliche Programmiertechnik für Flash/EEPROM-Speicher programmiert ein Bit oder eine Zeile (herkömmlicherweise als eine Page bezeichnet) eines NAND-Speicher-Arrays indem eine Programmierspannung oder Serie von Programmierspannungsimpulsen an die Steuer-Gates der ausgewählten Speicherzellen angelegt wird, und indem die ausgewählten Speicherzellen programmiert (oder blockiert) werden, um entweder zu programmieren (auf logische „0” setzen, indem eine Ladung an dem Floating Gate oder Floating Node einer Speicherzelle eingeführt wird) oder zu blockieren (nicht programmieren, herkömmlicherweise soll die Zelle gelöscht und auf logische „1” gesetzt bleiben), indem ihre Kanäle entweder mit einer Programm- oder Blockierspannung gekoppelt werden.
-
Bei herkömmlichen Programmieroperationen bei Flash/EEPROM-Speicher-Arrays mit NAND-Architektur, wie z. B. von NAND-Speicher-Array 100 dargestellt, ist eine Programmierspannung mit einer Wortleitung WL gekoppelt, die mit dem Gate der ausgewählten Speicherzelle einer NAND-Speicherkette 120 gekoppelt ist. Die Wortleitungen WL, die mit den Gates der nicht ausgewählten Speicherzellen einer jeden NAND-Speicherkette 120 gekoppelt sind, werden ebenfalls von einer Leit-Gatespannung Vpass betrieben, um die nicht ausgewählten Speicherzellen der Speicherkette 120 als Leit-Transistoren zu betreiben, und um einen Kanal von Trägern mittels kapazitiver Kopplung in den nicht ausgewählten Speicherzellen zu generieren, sodass die nicht ausgewählten Speicherzellen Strom auf eine Art leiten, die von ihren entsprechenden gespeicherten Datenwerten relativ uneingeschränkt ist. Die NAND-Speicherkette 120 wird dann typischerweise mit einer Bitleitung BL (oder einer Source-Leitung SL) gekoppelt, auf der eine Programmspannung platziert ist. Die angelegte Leit-Spannung Vpass ermöglicht ebenfalls ein Generieren eines Kanals von Trägern in der NAND-Speicherkette 120 und ermöglicht es der Speicherzelle, die zur Programmierung ausgewählt wurde, über diesen Kanal von Trägern mit der Bitleitung BL (oder der Source-Leitung SL) zu koppeln, wobei ein Feld über die zur Programmierung ausgewählte Speicherzelle angelegt wird, das Träger dazu veranlasst, zu dem Floating Gate oder der Ladungseinfangschicht zu tunneln, wobei das Schwellenspannungsniveau Vt der ausgewählten Speicherzelle geändert und der Datenwert gespeichert wird. Wenn eine Programm-Blockier-Spannung auf der gekoppelten Bitleitung BL oder Source-Leitung SL platziert wird (auch als Boosting bezeichnet), wird das von der Programm-Blockier-Spannung generierte, angelegte Feld als zum Tunneln von Trägern zu dem Floating Gate/Node als nicht ausreichend ausgewählt und kein Datenwert wird programmiert und die Speicherzelle verbleibt in dem gelöschten Zustand.
-
Nach einer Programmierung der ausgewählten Speicherzelle(n) wird dann eine Verifizierungsoperation durchgeführt, um zu bestätigen, dass die Daten erfolgreich programmiert wurden. Wenn die programmierte(n) Speicherzelle(n) des Löschblockes nicht verifiziert werden, werden der Programm- und Verifizierungszyklus solange wiederholt, bis die Daten erfolgreich programmiert sind oder eine ausgewählte Anzahl an Iterationen verstrichen ist und die Programmieroperation als fehlgeschlagen gilt.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Hierin offenbarte Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht, bei denen sich gleiche Bezugsnummern auf ähnliche Elemente beziehen, und bei denen:
-
1 ein vereinfachtes schematisches Diagramm eines beispielhaften Teils eines Column-Stripe-Musters für ein Speicher-Array 100 eines NAND-Flash-Speichergeräts zeigt;
-
2 ein vereinfachtes schematisches Diagramm eines Teils eines Column-Stripe-Musters eines NAND-Speicher-Arrays 200 zeigt, um ein zweiseitiges Column-Stripe-(CS2)-Datenmuster besser zu veranschaulichen;
-
3A–3C jeweils Schnittzeichnungen von drei Kanälen 301–303 darstellen, die unterschiedliche Datenmuster gemäß dem hierin offenbarten Gegenstand bilden;
-
4 eine beispielhafte Ausführungsform eines Programmierprozesses, der CS2-Datenmuster während einer Programmierung gemäß dem hierin offenbarten Gegenstand ergibt, einem herkömmlichen Programmierprozess gegenüberstellt;
-
5 eine weitere beispielhafte Ausführungsform eines Programmierprozesses, der CS2-Datenmuster während einer Programmierung gemäß dem hierin offenbarten Gegenstand ergibt, einem herkömmlichen Programmierprozess gegenüberstellt;
-
6A und 6B jeweils einen Programmierfortschritt eines NAND-Arrays darstellen, und 15 die relative Wahrscheinlichkeit eines CS2-Datenmusters während einer Programmierung gemäß dem hierin offenbarten Gegenstand;
-
7 ein Ablaufdiagramm einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays zeigt, basierend auf einer Bestimmung von Fortschritt durch den Programmierprozess (eine Schleifenzählung) gemäß dem hierin offenbarten Gegenstand;
-
8 eine Darstellung des Prozesses von Ablaufdiagramm von 6 ist, wenn die Bestimmung zur Verwendung der Doppelimpuls-Programmiertechnik auf Fortschritt durch den Programmierprozess (d. h. eine Schleifenzählung) basiert;
-
9 ein Ablaufdiagramm einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays zeigt, basierend auf einer Bestimmung von, die auf einer Bestimmung des Betrages der Programmierspannung Vpgm gemäß dem hierin offenbarten Gegenstand basiert;
-
10 ein Ablaufdiagramm einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays zeigt, basierend auf einer Bestimmung von, die auf der Erkennung eines CS2-Datenmusters gemäß dem hierin offenbarten Gegenstand basiert;
-
11 eine beispielhafte Schaltkreiskonfiguration darstellt, um ein CS2-Datenmuster gemäß dem hierin offenbarten Gegenstand zu erkennen; und
-
12 ein Produkt darstellt, umfassend: ein computerlesbares Medium auf dem Befehle gespeichert sind, die, wenn sie ausgeführt werden, zu irgendeinem oder einer Kombination der hierin offenbarten beispielhaften Prozesse führen.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Hierin beschriebene Ausführungsformen von Techniken betreffen Programmiertechniken zur Programmierung eines NAND-Speicher-Arrays, um Programm-Stör-Fehler, die mit einem bestimmten Datenmuster verbunden sind, zu beseitigen. In der folgenden Beschreibung werden zahlreiche spezifische Details angeführt, um ein gründliches Verständnis hierin offenbarter Ausführungsformen bereitzustellen.
-
Der hierin offenbarte Gegenstand betrifft Programmiertechniken zur Programmierung eines NAND-Speicher-Arrays, um Programm-Stör-Fehler für ein bestimmtes Datenmuster zu beseitigen. Wenn ein NAND-Speicher-Array, wie z. B. das in 1 gezeigte beispielhafte NAND-Array, in einer Column-Page-Anordnung konfiguriert ist, bei der geradzahlige Bitleitungen (NAND-Speicherketten) Teil einer 20 geradzahligen Column-Page sind und ungeradzahlige Bitleitungen (NANDSpeicherketten) Teil einer ungeradzahligen Column-Page sind, kann die Boosting-Effizienz eines Kanals während einer Programmierung vermindert sein, wenn ein nicht geboosteter Kanal (bei ungefähr 0 V) sich zu beiden Seiten eines geboosteten Kanals (bei ungefähr 6 V) befindet, d. h. wenn sich der geboostete Kanal direkt zwischen zwei nicht geboosteten Kanälen befindet, was wahrscheinlich einen Programm-Stör-Fehler hervorruft. Das Datenmuster, bei dem sich ein geboosteter Kanal direkt zwischen zwei nicht geboosteten Kanälen befindet, wird hierin als ein zweiseitiges Column-Stripe-(CS2)-Datenmuster bezeichnet. Eine Verminderung der Boosting-Effizienz wird durch die kapazitive Kopplung zwischen dem geboosteten Kanal und den benachbarten nicht geboosteten Kanälen hervorgerufen. Zusätzlich kann das zwischen dem geboosteten Kanal und den benachbarten nicht geboosteten Kanälen unterschiedliche Potential ein elektrisches Feld entwickeln, das einen Anschlussverlust hervorrufen kann, der zu einem Verlust der Boosting-Spannung führt. Somit erhöht das Auftreten eines CS2-Datenmusters die Wahrscheinlichkeit eines Programm-Stör-Fehlers. Von einem CS2-Datenmuster hervorgerufene Programm-Stör-Fehler werden hierin als CS2-Stör-Fehler bezeichnet.
-
2 zeigt ein vereinfachtes schematisches Diagramm eines Teils eines Column-Stripe-Musters eines NAND-Speicher-Arrays 200, um ein zweiseitiges Column-Stripe-(CS2)-Datenmuster besser zu veranschaulichen. Der in 2 gezeigte Teil von NAND-Speicher-Array 200 beinhaltet lediglich sechs Bitleitungen BL1–BL6 und lediglich sechs Wortleitungen WL1–WL6. Andere Leitungen, wie z. B. Auswahl-Leitungen, sind der Klarheit von 2 halber in 2 nicht gekennzeichnet. Die ungeradzahligen Bitleitungen BL1, BL3 und BL5 sind derart angeordnet, dass sie Teil einer ungeradzahligen Column-Page sind, und die geradzahligen Bitleitungen BL2, BL4 und BL6 sind derart angeordnet, dass sie Teil einer geradzahligen Column-Page sind. Es sollte selbstverständlich sein, dass Speicher-Array 200 zum Zwecke der Veranschaulichung dient und es sollte nicht als einschränkend verstanden werden, und es sollte selbstverständlich sein, dass andere Ausführungsformen eines NAND-Speicher-Arrays ein dem in 2 dargestellten ähnliches zweiseitiges Column-Stripe-Datenmuster beinhalten könnten.
-
Um ein CS2-Datenmuster zu veranschaulichen, wird eine Situation betrachtet, bei der eine Programmierspannung Vpgm von ungefähr 20 V an Wortleitung WL3 angelegt ist, um Speicherzellen 201 zu programmieren. Wortleitung WL3 ist ebenfalls mit mehreren anderen Speicherzellen 202 gekoppelt, die bei diesem Beispiel nicht programmiert werden sollen. Speicherzellen 201, die programmiert werden sollen und in diesem Fall Teil einer geradzahligen Column-Page sind, sind durch einen Kreis, der durch eine durchgezogene Linie gebildet wird, angezeigt. Speicherzellen 202, die nicht programmiert werden sollen, sind durch einen Kreis, der durch eine gestrichelte Linie gebildet wird, angezeigt. Die Speicherzellen 202, die mit Bitleitungen BL1, BL3 und BL5 gekoppelt sind, sind Teil einer ungeradzahligen Column-Page. Speicherzelle 202, die mit Bitleitung BL6 gekoppelt ist, ist Teil der geradzahligen Column-Page. Da Speicherzellen 201 programmiert werden sollen, ist der unter den beiden Speicherzellen 201 verlaufende Kanal auf wohlbekannte Art und Weise durch ihre entsprechenden Bitleitungen mit 0 V gekoppelt. Die entlang von Bitleitungen BL2 und BL4 gezeigten Hatch-Blöcke stellen Kanäle dar, die mit 0 V gekoppelt wurden. Im Gegensatz zu Speicherzellen 201 sind die unter Speicherzellen 202, die nicht programmiert werden sollen, verlaufenden Kanäle potentialfrei, da die Auswahl-Gates an diesen Bitleitungen ausgeschaltet sind und durch kapazitive Kopplung mit den WL-Spannungen von Vpass bei ungefähr 10 V auf ungefähr 6 V geboostet sind. Bitleitungen BL1, BL3 und BL5 sind blockiert, da die ungeradzahlige Page nicht ausgewählt ist. Bitleitung BL6 ist blockiert, da ihre Programmierung abgeschlossen ist. Demnach stellen die entlang von Bitleitungen BL1, BL3, BL5 und BL6 gezeigten Hatch-Blöcke Kanäle dar, die auf ungefähr 6 V geboostet wurden. Ein CS2-Datenmuster ist innerhalb des Bereichs angezeigt, der von einer durchgezogenen Linie umschlossen ist.
-
3A stellt eine Schnittzeichnung von drei Kanälen 301–303 dar, die ein CS2-Datenmuster gemäß dem hierin offenbarten Gegenstand bilden. Insbesondere Kanal 302, der auf ungefähr 6 V geboostet ist, befindet sich direkt zwischen Kanälen 301 und 303, die nicht geboostet sind und sich bei 0 V befinden, um programmiert zu werden. Die in 3A dargestellten Kanäle 301–303 entsprechen den mit Bitleitungen BL2–BL4 gekoppelten Kanälen. Die Boosting-Effizienz von Kanal 302 ist aufgrund der kapazitiven Kopplung, wie durch Kondensatoren 304 dargestellt, zwischen geboostetem Kanal 302 und den benachbarten nicht geboosteten Kanälen 301 und 303 vermindert. Zusätzlich kann das zwischen geboostetem Kanal 302 und den benachbarten nicht geboosteten Kanälen 301 und 303 unterschiedliche Potential ein elektrisches Feld entwickeln, das einen Anschlussverlust, wie von Pfeilen 305 dargestellt, hervorrufen kann, der zu einem Verlust der Boosting-Spannung führt.
-
Zu Beginn des Programmierprozesses, wenn das NAND-Speicher-Array, wie z. B. NAND-Speicher-Array 100 in 1, vollständig unprogrammiert ist, ist die Wahrscheinlichkeit eines CS2-Datenmusters relativ hoch. Wenn die Programmierung fortschreitet und mehr NAND-Speicher-Array programmiert ist, beginnt sich die Wahrscheinlichkeit eines CS2-Datenmusters allmählich zu verringern (abhängig von der Größe des Speicher-Arrays), und die Wahrscheinlichkeit für ein einseitiges Column-Stripe-(CS1)-Datenmuster (3B) oder ein null-seitiges Column-Stripe-(CS0)-Datenmuster (3C) steigt. 3B stellt eine Schnittzeichnung von drei Kanälen 306–308 dar, die ein CS1-Datenmuster gemäß dem hierin offenbarten Gegenstand bilden. Kanäle 306 und 307 sind auf ungefähr 6 V geboostet und Kanal 308 ist nicht geboostet und befindet sich bei ungefähr 0 V. 3C stellt eine Schnittzeichnung von drei Kanälen 309, 310 und 311 dar, die alle auf ungefähr 6 V geboostet sind. Für ein CS1-Datenmuster ist die Boosting-Effizienz nicht derart vermindert wie für ein CS2-Datenmuster. Für ein CS0-Datenmuster ist die Boosting-Effizienz nicht vermindert.
-
Demnach stellt der hierin offenbarte Gegenstand einen Programmierprozess bereit, der CS2-Datenmuster während einer Programmierung ergibt, und dabei eine Boosting-Effizienz eines Kanals während einer Programmierung verbessert, indem CS2-Stör-Fehler beseitigt werden.
-
4 stellt eine beispielhafte Ausführungsform eines Programmierprozesses, der CS2-Datenmuster während einer Programmierung gemäß dem hierin offenbarten Gegenstand ergibt, einem herkömmlichen Programmierprozess gegenüber. Bei 4 ist eine beispielhafte Anordnung von Bitleitungen für eine geradzahlige und eine ungeradzahlige Page-Architektur bei 401 dargestellt. Bitleitungen für die geradzahlige Page sind als durchgezogene Linien dargestellt und Bitleitungen für die ungeradzahlige Page sind als gestrichelte Linien dargestellt. Bei diesem Beispiel soll die geradzahlige Page programmiert und verifiziert werden. Bei 402 in 4 wird jede andere geradzahlige Bitleitung (d. h. die als even_0 benannten Bitleitungen) während eines ersten Programmierimpulses Pgm_e0 programmiert. Während eines zweiten Programmierimpulses Pgm_e1 werden die als even_1 benannten Bitleitungen programmiert. Ein Fortschritt durch den Programmierprozess wird durch den Pfeil oben in der Mitte von 4 angezeigt. Alle Bitleitungen der geradzahligen Page werden gemeinsam verifiziert. Durch diesen Ansatz gibt es keine CS2-Datenmuster, die einen Programm-Stör-Fehler hervorrufen können. Dieselbe Technik würde für eine Programmierung der Bitleitungen der ungeradzahligen Page verwendet. Das heißt, dass die Bitleitungen der ungeradzahligen Page auf alternierende Art und Weise gruppiert würden und jede Gruppe würde segmentweise programmiert werden. Alle Bitleitungen der ungeradzahligen Page würden gemeinsam verifiziert. Im Gegensatz dazu würde bei 403 in 4 ein herkömmlicher Programmierprozess alle Bitleitungen der geradzahligen Page (benannt als sowohl even_0 als auch even_1) während eines einzigen Programmimpulses Pgm_e programmieren. Ein Fortschritt durch den herkömmlichen Programmierprozess wird durch den Pfeil oben rechts von 4 angezeigt. Durch den herkömmlichen Ansatz gibt es CS2-Datenmuster, die einen Programm-Stör-Fehler hervorrufen können.
-
5 stellt eine weitere beispielhafte Ausführungsform eines Programmierprozesses, der CS2-Datenmuster während einer Programmierung gemäß dem hierin offenbarten Gegenstand ergibt, einem herkömmlichen Programmierprozess gegenüber. Bei 5 ist eine beispielhafte Anordnung von Bitleitungen für eine Gesamt-Bitleitungs-Architektur bei 501 dargestellt. Um den Programmierprozess gemäß dem hierin offenbarten Gegenstand zu veranschaulichen, wurden die Bitleitungen als BL_0, BL_1 und BL_2 benannt. Bei 502 in 5 wird jede als BL_0 benannte Bitleitung während eines ersten Programmierimpulses Pgm_0 programmiert. Während eines zweiten Programmierimpulses Pgm_1 wird jede als BL_1 benannte Bitleitung programmiert. Während eines dritten Programmierimpulses Pgm_2 wird jede als BL_2 benannte Bitleitung programmiert. Ein Fortschritt durch den Programmierprozess wird durch den Pfeil oben in der Mitte von 5 angezeigt. Alle Bitleitungen werden dann gemeinsam verifiziert. Durch diesen Ansatz gibt es keine CS2-Datenmuster, die einen Programm-Stör-Fehler hervorrufen können. Im Gegensatz dazu würde bei 503 in 5 ein herkömmlicher Programmierprozess alle Bitleitungen während eines einzigen Programmimpulses Pgm programmieren. Ein Fortschritt durch den herkömmlichen Programmierprozess wird durch den Pfeil oben rechts von 5 angezeigt. Durch den herkömmlichen Ansatz gibt es CS2-Datenmuster, die einen Programm-Stör-Fehler hervorrufen können.
-
6A und 6B stellen jeweils einen Programmierfortschritt eines NAND-Arrays und die relative Wahrscheinlichkeit eines CS2-Datenmusters während einer Programmierung gemäß dem hierin offenbarten Gegenstand dar. Beim Ursprung in 6A beginnt der Programmierprozess eines NAND-Arrays, wie z. B. NAND-Array 100 in 1. Bei einem Extrem sind die beiden Column-Pages des NAND-Arrays vollständig unprogrammiert; folglich ist die Wahrscheinlichkeit eines CS2-Datenmusters (3A) sehr hoch, wie von der Position einer relativen Wahrscheinlichkeitskurve 601 nahe des Ursprungs von 6B dargestellt. Es sollte dennoch selbstverständlich sein, dass der Programmierprozess nicht mit dem vollständig umprogrammierten NAND-Array beginnen muss. Da die Wahrscheinlichkeit eines CS2-Datenmusters sehr hoch ist, verwendet der Programmierprozess eine relativ geringe Vpgm, um das Risiko eines CS2-Stör-Fehlers zu verringern. Die relativ geringe Vpgm ist auf der linken Seite von 6A als ein relativ geringer Spannungsimpuls dargestellt (d. h. ein kurzer senkrechter Strich). Nach einem Programmierimpuls wird eine Verifizierung auf eine wohlbekannte Art und Weise nach einem Programmierimpuls durchgeführt, wie von einer Reihe von Verifizierungsimpulsen dargestellt.
-
Wenn die Programmierung in 6A fortschreitet, zeigt 6B, dass sich die Wahrscheinlichkeit eines CS2-Datenmusters allmählich zu verringern beginnt. In einigen Fällen, kann, wenn die Programmierung fortschreitet, ein CS2-Datenmuster (3A) auftreten. In anderen Fällen kann ein einseitiges Column-Stripe-(CS1)-Datenmuster (3B) auftreten, oder ein null-seitiges Column-Stripe-(CS0)-Datenmuster (3C) kann auftreten. Zur gleichen Zeit während die Programmierung fortschreitet, wird die Vpgm-Spannung allmählich erhöht, um die erhöhte Programmierspannung zu ergeben, die zum Programmieren einer Speicherzelle erforderlich ist, wenn mehr Speicher-Array programmiert ist. Während dieser Phase des Programmierprozesses wird eine Einzelimpuls-Programmiertechnik verwendet, wie von dem Bereich links des Bereichs angezeigt, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt.
-
Wenn der Programmierprozess fortschreitet beginnt sich an irgendeinem Punkt während des Programmierprozesses die Wahrscheinlichkeit eines CS2-Datenmusters schneller zu verringern und, wie von dem Bereich angezeigt, der innerhalb der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt, wird eine Doppelimpuls-Programmiertechnik gemäß dem hierin offenbarten Gegenstand verwendet, die die verringerte Wahrscheinlichkeit von CS2-Datenmustern ergibt, und die eine Boosting-Effizienz eines Kanals während der Programmierung verbessert und die Wahrscheinlichkeit von CS2-Stör-Fehlern verringert. Die Doppelimpuls-Technik gemäß dem hierin offenbarten Gegenstand verwendet zwei Programmierimpulse, um zwei Speicherzellen, die durch einen Kanal getrennt sind, der eine geboostete (Blockier)-Spannung (d. h. 3A) aufweist, der Reihe nach zu programmieren. Das heißt unter Bezugnahme auf 3A, dass, wenn ein CS2-Datenmuster vorhanden ist, ein erster Programmierimpuls verwendet wird, um die mit Kanal 301 verbundene Speicherzelle zu programmieren, und ein zweiter Programmierimpuls verwendet wird, um die mit Kanal 303 verbundene Speicherzelle zu programmieren. Während die Doppelimpuls-Programmiertechnik den Programmierprozess verlängert, verringert die Doppelimpuls-Programmiertechnik zweckmäßigerweise die Wahrscheinlichkeit von CS2-Stör-Fehlern indem CS1-Datenmuster erzeugt werden.
-
Wenn der Programmierprozess weitergeht, wird die Wahrscheinlichkeit eines CS2-Datenmusters relativ gering, auch wenn die Programmierspannung Vpgm allmählich erhöht wurde, aber das Risiko eines CS2-Stör-Fehlers ist gering. Folglich wird die Doppelimpuls-Programmiertechnik nicht benötigt und der Programmierprozess kehrt zu einer Einzelimpuls-Programmiertechnik zurück. Dieser Teil des Programmierprozesses wird von dem Bereich rechts des Bereichs angezeigt, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt.
-
Zu Beginn des Programmierprozesses eines NAND-Arrays ist die Wahrscheinlichkeit, auf ein CS2-Datenmuster zu treffen, relativ hoch, sodass die Doppelimpuls-Programmiertechnik des hierin offenbarten Gegenstandes für den gesamten Programmierprozess verwendet werden könnte; da jedoch eine geringere Programmierspannung Vpgm verwendet wird, ist die Wahrscheinlichkeit eines CS2-Stör-Fehlers relativ gering. Folglich können die Vorteile der verringerten Wahrscheinlichkeit für einen CS2-Stör-Fehler, die durch Verwendung der Doppelimpuls-Programmiertechnik erhalten werden, von dem Anstieg der Gesamtzeit des Programmierprozesses aufgewogen werden.
-
Gemäß dem hierin offenbarten Gegenstand gibt es drei Haupttechniken, die verwendet werden können, um zu bestimmen, wann die Doppelimpuls-Programmiertechnik während eines NAND-Programmierprozesses verwendet werden sollte. Die erste Haupttechnik basiert auf dem Fortschritt des Programmierprozesses, wie auf einer Schleifenzählung basierend, d. h. die Anzahl an Programmimpulsen, die eine bestimmte Page empfangen soll. Die zweite Haupttechnik zum Bestimmen, warm die Doppelimpuls-Programmiertechnik verwendet werden sollte, basiert auf einem relativen Betrag der Programmierspannung Vpgm. Die dritte Haupttechnik basiert auf der Erkennung eines CS2-Datenmusters. Es sollte selbstverständlich sein, dass andere Techniken zum Bestimmen, wann die Doppelimpuls-Programmiertechnik verwendet werden sollte, auf einer Kombination von zumindest zwei oder mehr der drei Haupttechniken basieren könnten.
-
7 zeigt ein Ablaufdiagramm 700 einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays, basierend auf einer Bestimmung von Fortschritt durch den Programmierprozess (eine Schleifenzählung) gemäß dem hierin offenbarten Gegenstand. 8 ist eine Darstellung des Prozesses von Ablaufdiagramm 700 von 7, wenn die Bestimmung zur Verwendung der Doppelimpuls-Programmiertechnik auf Fortschritt durch den Programmierprozess (d. h. eine Schleifenzählung) basiert. Bei Schritt 701 beginnt der Programmierprozess und eine variable Schleifenzählung wird auf 1 gesetzt. Wie hierin verwendet, ist eine Schleifenzählung die Anzahl an Programmimpulsen, die eine bestimmte Page empfangen soll. Der Prozess fließt zu Schritt 702, wo bestimmt wird, ob die Schleiferzählung, d. h. die Anzahl an durch den Programmierprozess geleiteten Programmierungen einer Column-Page eines NAND-Speicher-Arrays, eine vorab bestimmte Anzahl k überschreitet und kleiner ist als eine vorab bestimmte Anzahl n. Bei einer beispielhaften Ausführungsform könnten die bestimmten, für k und n gewählten Werte von beobachteten Herstellungsabweichungen innerhalb einer gegebenen Herstellungsmenge abhängen, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist. Bei einer weiteren beispielhaften Ausführungsform könnten die bestimmten, für k und n gewählten Werte von beobachteten Herstellungsabweichungen abhängen, die über große Herstellungsmengen genommen werden, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist.
-
Wenn bei Schritt 702 eine Schleifenzählung entweder kleiner als k oder größer als n ist, fließt der Prozess zu Schritt 709, wo die NAND-Column-Page unter Verwendung einer herkömmlichen Einzelimpuls-Programmiertechnik programmiert wird. Schritt 709 entspricht dem Bereich links oder dem Bereich rechts des Bereichs, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt. Dies ist ebenfalls von Bereich 801 in 8 dargestellt. Wenn Schritt 709 dem Bereich links des Bereichs entspricht, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt, ist die Wahrscheinlichkeit eines CS2-Datenmusters relativ hoch, aber die Wahrscheinlichkeit eines CS2-Stör-Fehlers ist relativ gering, da die Programmierspannung Vpgm relativ gering ist. Dies ist ebenfalls von Bereich 802 in 8 dargestellt. Wenn Schritt 709 dem Bereich rechts des Bereichs entspricht, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt, ist die Programmierspannung Vpgm relativ hoch, aber die Wahrscheinlichkeit eines CS2-Stör-Fehlers ist relativ gering, da die Wahrscheinlichkeit eines CS2-Datenmusters relativ gering ist.
-
Wenn bei Schritt 702 eine Schleifenzählung größer als k und kleiner als n ist, fließt der Prozess zu Schritt 703, wo die erste Hälfte der NAND-Column-Page programmiert wird, während die zweite Hälfte der NAND-Column-Page blockiert wird. Das heißt, dass, wenn der Prozess von Schritt 702 zu Schritt 703 fließt, bestimmt wurde, die hierin offenbarte Doppelimpuls-Programmiertechnik zu verwenden, da sowohl die Wahrscheinlichkeit eines CS2-Datenmusters relativ hoch ist, als auch die Programmierspannung Vpgm relativ hoch ist; folglich ist die Wahrscheinlichkeit eines CS2-Stör-Fehlers relativ hoch, wenn eine herkömmliche Einzelimpuls-Programmiertechnik verwendet wird. Sobald Schritt 703 abgeschlossen ist, geht der Ablauf zu Schritt 704 weiter, wo die zweite Hälfte der NAND-Column-Page programmiert wird, während die erste Hälfte der NAND-Column-Page blockiert wird. Schritte 703 und 704 entsprechen dem Bereich, der innerhalb der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt. Dies ist ebenfalls von Bereich 803 in 8 dargestellt.
-
Ungeachtet dessen, welchen Pfad der Prozessablauf von Schritt 702 genommen hat, wird die Programmierung bei Schritt 705 verifiziert. Der Ablauf geht zu Schritt 706 weiter, wo bestimmt wird, ob die in Schritten 703 und 704 oder Schritt 709 durchgeführte Programmierung verifiziert ist. Wenn bei Schritt 706 bestimmt wird, dass die Programmierung verifiziert ist, geht der Ablauf zu Schritt 708 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist. Wenn bei Schritt 706 bestimmt wird, dass die Programmierung nicht verifiziert ist, geht der Ablauf zu Schritt 707 weiter, wo bestimmt wird, ob der Programmierprozess für die Column-Page abgeschlossen ist, d. h. ob die Schleiferzählung der Anzahl an Zeilen p in der Column-Page entspricht. Wenn bei Schritt 707 bestimmt wird, dass die Schleifenzählung nicht p entspricht, dann geht der Ablauf zu Schritt 710 weiter, wo die Schleiferzählung erhöht wird. Der Ablauf geht dann zu Schritt 702 weiter. Wenn bei Schritt 707 bestimmt wird, dass die Schleiferzählung p entspricht, dann geht der Ablauf zu Schritt 708 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist.
-
9 zeigt ein Ablaufdiagramm 900 einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays, basierend auf einer Bestimmung von, die auf einer Bestimmung des Betrages der Programmierspannung Vpgm gemäß dem hierin offenbarten Gegenstand basiert. Bei Schritt 901 beginnt der Programmierprozess und eine variable Schleifenzählung wird auf 1 gesetzt. Der Prozess fließt zu Schritt 902, wo bestimmt wird, ob die Programmspannung Vpgm größer als Spannung A und kleiner als Spannung B ist. Bei einer beispielhaften Ausführungsform könnten die bestimmten, für A und B gewählten Werte von beobachteten Herstellungsabweichungen innerhalb einer gegebenen Herstellungsmenge abhängen, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist. Bei einer weiteren beispielhaften Ausführungsform könnten die bestimmten, für A und B gewählten Werte von beobachteten Herstellungsabweichungen abhängen, die über große Herstellungsmengen genommen werden, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist.
-
Wenn bei Schritt 902 Programmspannung Vpgm entweder kleiner als A oder größer als B ist, fließt der Prozess zu Schritt 909, wo die NAND-Column-Page unter Verwendung einer herkömmlichen Einzelimpuls-Programmiertechnik programmiert wird. Schritt 909 entspricht dem Bereich links oder dem Bereich rechts des Bereichs, der von der gestrichelten Linie umschlossen wird, die sich zwischen 7A und 7B erstreckt.
-
Wenn bei Schritt 902 Programmspannung Vpgm größer als A und kleiner als B ist, fließt der Prozess zu Schritt 903, wo die erste Hälfte der NAND-Column-Page programmiert wird, während die zweite Hälfte der NAND-Column-Page blockiert wird. Das heißt, dass, wenn der Prozess von Schritt 902 zu Schritt 903 fließt, entschieden wurde, die hierin offenbarte Doppelimpuls-Programmiertechnik zu verwenden, da sowohl die Wahrscheinlichkeit eines CS2-Datenmusters relativ hoch ist, als auch die Programmierspannung Vpgm relativ hoch ist; folglich ist die Wahrscheinlichkeit eines CS2-Stör-Fehlers relativ hoch, wenn eine herkömmliche Einzelimpuls-Programmiertechnik verwendet wird. Sobald Schritt 903 abgeschlossen ist, geht der Ablauf zu Schritt 904 weiter, wo die zweite Hälfte der NAND-Column-Page programmiert wird, während die erste Hälfte der NAND-Column-Page blockiert wird. Schritte 903 und 904 entsprechen dem Bereich, der von der gestrichelten Linie umschlossen wird, die sich zwischen 6A und 6B erstreckt.
-
Ungeachtet dessen, welchen Pfad der Ablauf von Schritt 902 genommen hat, wird die Programmierung bei Schritt 905 verifiziert. Der Ablauf geht zu Schritt 906 weiter, wo die in Schritten 903 und 904 oder Schritt 909 durchgeführte Programmierung verifiziert wird. Wenn bei Schritt 906 bestimmt wird, dass die Programmierung verifiziert ist, geht der Ablauf zu Schritt 908 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist. Wenn bei Schritt 906 bestimmt wird, dass die Programmierung nicht verifiziert ist, geht der Ablauf zu Schritt 907 weiter, wo bestimmt wird, ob der Programmierprozess für die Column-Page abgeschlossen ist, d. h. ob die Schleiferzählung der Anzahl an Zeilen p in der Column-Page entspricht. Wenn bei Schritt 907 bestimmt wird, dass die Schleiferzählung nicht p entspricht, dann geht der Ablauf zu Schritt 910 weiter, wo die Schleifenzählung erhöht wird. Der Ablauf geht dann zu Schritt 902 weiter. Wenn bei Schritt 907 bestimmt wird, dass die Schleifenzählung p entspricht, dann geht der Ablauf zu Schritt 908 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist.
-
10 zeigt ein Ablaufdiagramm 1000 einer beispielhaften Ausführungsform eines Programmierprozesses einer Page eines NAND-Speicher-Arrays, basierend auf einer Bestimmung von, die auf der Erkennung eines CS2-Datenmusters gemäß dem hierin offenbarten Gegenstand basiert.
-
11 stellt eine beispielhafte Schaltkreiskonfiguration dar, um ein CS2-Datenmuster gemäß dem hierin offenbarten Gegenstand zu erkennen. Bei 11 ist eine Vielzahl PMOS-Serienschaltkreise zwischen Vcc und einer CS2-Datenmuster-Erkennungsleitung gekoppelt. Wenn irgendeiner der PMOS-Serienschaltkreise leitfähig ist, ist CS2-Datenmuster-Erkennungsleitung mit Vcc gekoppelt. Spezieller ist ein erster PMOS-Serienschaltkreis durch PMOS-Transistoren 1101 und 1102 gebildet. Wenn das auf Bitleitungen BL0e (geradzahlig), BL0o (ungeradzahlig), BL1e und BL1o erscheinende Datenmuster ein CS2-Datenmuster bildet, sind beide Transistoren 1101 und 1102 leitfähig und eine CS2-Datenmuster-Erkennungsleitung ist mit Vcc gekoppelt. Bei einer beispielhaften Ausführungsform ist eine CS2-Datenmuster-Erkennungsleitung für eine Schleifenzählung zwischen k und n freigegeben, bei der k und n vorab bestimmte Werte sind, die sich auf die Anzahl an Zeilen einer Column-Page beziehen. Bei einer weiteren beispielhaften Ausführungsform ist eine CS2-Datenmuster-Erkennungsleitung freigegeben, wenn Programmierspannung Vpgm zwischen A und B liegt, bei der A und B vorab bestimmte Werte sind.
-
Bei Schritt 1001 in 10 beginnt der Programmierprozess und eine variable Schleifenzählung wird auf 1 gesetzt. Der Prozess fließt zu Schritt 1002, wo bestimmt wird, ob die Schleifenzählung, d. h. die Anzahl an durch den Programmierprozess geleiteten Programmierungen einer Column-Page eines NAND-Speicher-Arrays, eine vorab bestimmte Anzahl k überschreitet und kleiner ist als eine vorab bestimmte Anzahl n. Bei einer beispielhaften Ausführungsform könnten die bestimmten, für k und n gewählten Werte von beobachteten Herstellungsabweichungen innerhalb einer gegebenen Herstellungsmenge abhängen, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist. Bei einer weiteren beispielhaften Ausführungsform könnten die bestimmten, für k und n gewählten Werte von beobachteten Herstellungsabweichungen abhängen, die über große Herstellungsmengen genommen werden, die zu einem NAND-Speicher-Array beitragen, das anfällig für einen CS2-Stör-Fehler ist.
-
Wenn bei Schritt 1002 eine Schleifenzählung entweder kleiner als k oder größer als n ist, fließt der Prozess zu Schritt 1012, wo die NAND-Column-Page unter Verwendung einer herkömmlichen Einzelimpuls-Programmiertechnik programmiert wird. Wenn bei Schritt 1002 eine Schleifenzählung größer als k und kleiner als n ist, fließt der Prozess zu Schritt 1003, wo der CS2-Detektor aufgerufen wird, und es wird bestimmt, ob ein CS2-Datenmuster in der vorherigen Schleife erkannt wurde. Wenn bei Schritt 1003 bestimmt wird, dass ein CS2-Datenmuster in der vorherigen Schleife nicht erkannt wurde, geht der Ablauf zu Schritt 1012 weiter, wo die NAND-Column-Page unter Verwendung einer herkömmlichen Einzelimpuls-Technik programmiert wird. Wenn bei Schritt 1003 bestimmt wird, dass ein CS2-Datenmuster in der vorherigen Schleife erkannt wurde, geht der Ablauf zu Schritt 1004 weiter, wo ein CS2-Datenmuster-Erkennungsprozess stattfindet. Der Ablauf geht zu Schritt 1005 weiter, wo bestimmt wird, ob eine CS2-Datenmuster-Erkennung erkannt wurde. Wenn bei Schritt 1005 ein CS2-Datenmuster nicht erkannt wurde, geht der Ablauf zu Schritt 1012 weiter.
-
Wenn bei Schritt 1005 ein CS2-Datenmuster erkannt wurde, geht der Ablauf zu Schritt 1006 weiter, wo die erste Hälfte der NAND-Column-Page programmiert wird, während die zweite Hälfte der NAND-Column-Page blockiert wird. Sobald Schritt 1006 abgeschlossen ist, geht der Ablauf zu Schritt 1007 weiter, wo die zweite Hälfte der NAND-Column-Page programmiert wird, während die erste Hälfte der NAND-Column-Page blockiert wird.
-
Ungeachtet dessen, ob der Prozessablauf von Schritt 1007 oder von Schritt 1012 kommt, wird die Programmierung bei Schritt 1008 verifiziert. Der Ablauf geht zu Schritt 1009 weiter, wo bestimmt wird, ob die in Schritten 1006 und 1007 oder Schritt 1012 durchgeführte Programmierung verifiziert ist. Wenn bei Schritt 1009 bestimmt wird, dass die Programmierung verifiziert ist, geht der Ablauf zu Schritt 1001 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist. Wenn bei Schritt 1009 bestimmt wird, dass die Programmierung nicht verifiziert ist, geht der Ablauf zu Schritt 1010 weiter, wo bestimmt wird, ob der Programmierprozess für die Column-Page abgeschlossen ist, d. h. ob die Schleifenzählung der Anzahl an Zeilen p in der Column-Page entspricht. Wenn bei Schritt 1010 bestimmt wird, dass die Schleifenzählung nicht p entspricht, dann geht der Ablauf zu Schritt 1013 weiter, wo die Schleiferzählung erhöht wird. Der Ablauf geht dann zu Schritt 1002 weiter. Wenn bei Schritt 1010 bestimmt wird, dass die Schleifenzählung p entspricht, dann geht der Ablauf zu Schritt 1011 weiter, wo der Programmierprozess der Page des NAND-Speicher-Arrays abgeschlossen ist.
-
Wie in Verbindung mit 11 beschrieben, könnte eine CS2-Erkennung als eine Funktion der Schleifenzählung und/oder des Betrages der Programmierspannung Vpgm freigegeben werden.
-
Obwohl die hierin offenbarten Programmiertechniken in Verbindung mit Datenmustern beschrieben wurden, die bei NAND-Speicher-Arrays auftreten, die in geradzahligen und ungeradzahligen Column-Pages konfiguriert sind, sollte es zusätzlich selbstverständlich sein, dass die hierin offenbarten Programmiertechniken ebenfalls auf Datenmuster angewendet werden können, die bei NAND-Speicher-Arrays auftreten, die nicht in geradzahligen und ungeradzahligen Column-Pages konfiguriert sind.
-
12 stellt ein Produkt 1200 dar, umfassend: ein computerlesbares Medium 1201 auf dem Befehle gespeichert sind, die, wenn sie ausgeführt werden, zu irgendeinem oder einer Kombination der hierin offenbarten beispielhaften Prozesse führen. Bei einer beispielhaften Ausführungsform umfasst Produkt 1200 ein magnetisches Speichergerät, ist aber nicht darauf beschränkt. Bei einer weiteren beispielhaften Ausführungsform umfasst Produkt 1200 ein optisches Speichergerät, ist aber nicht darauf beschränkt. Bei noch einer weiteren beispielhaften Ausführungsform umfasst Produkt 1200 ein Speichergerät auf Elektrobasis, ist aber nicht darauf beschränkt.