-
Diese
Erfindung gehört
zum Bereich von Systemarchitekturen nichtflüchtiger Halbleiter-Datenspeicher
sowie deren Arbeitsweise und bezieht sich insbesondere auf Programmier-Prüf-Verfahren.
-
Für nichtflüchtige Speicher
werden eine Anzahl von Architekturen verwendet. Bei einem NOR-Array
einer Bauart sind deren Speicherzellen zwischen benachbarten Bit-Leitungen (Spalten)
verbunden und Control Gates sind mit Wort-Leitungen (Reihen) verbunden.
Die einzelnen Zellen enthalten entweder einen Floating Gate Transistor
mit oder ohne einen in Reihe ausgestalteten Select Transistor oder
zwei Floating Gate Transistoren, die durch einen einzelnen Select
Transistor voneinander getrennt sind. Beispiele derartiger Arrays
und deren Verwendung in Speichersystemen werden in den folgenden
US-Patenten von
SanDisk Corporation aufgeführt:
5,095,344, 5,172,338, 5,602,987, 5,663,901, 5,430,859, 5,657,332,
5,712,180, 5,890,192, 6,103,575, 6,151,248, 6,426,893 und 6,512,263.
-
Ein
NAND-Array einer Bauart enthält
eine Anzahl von Speicherzellen, wie zum Beispiel 8, 16 oder sogar
32, die in Reihe zwischen einer Bitleitung und einem Referenzpotential
durch Select Transistoren an beiden Enden verbunden sind. Wortleitungen sind
mit entsprechenden Control Gates von Zellen über mehrere derartiger unterschiedlichen
Reihenstränge
verbunden. Relevante Beispiele für
derartige Arrays und deren Betrieb werden in US-Patentveröffentlichung
Nr. 2003-0002348-AI aufgeführt.
-
Wenn
Mehrzustandsdaten pro Speicherelement in einen nichtflüchtigen
Speicher, wie zum Beispiel elektrisch löschbare und programmierbare Nur-Lese-Flash-Speicher
(EEPROMs) geschrieben werden, ist die Schreib- oder Programmieroperation üblicherweise
dazu ausgelegt, eine Ziel-Population von Speicherelementen schrittweise
durch eine Reihe von Datenzuständen
zu bewegen bis jedes Element seinen gewünschten Zustand erreicht. Dies wird
durch inkrementelles Verändern
des Zustands der Speicherelemente durchgeführt, Abtasten eines Parameters,
welcher auf diesen Zustand hinweist, in einem Prüfvorgang und ferner Ändern des
Zustands von den Zellen, die noch nicht überprüft wurden, ob sich diese in
ihrem gewünschten
End- oder Zielzustand befinden. Bei einem EEPROM besteht dies üblicherweise
aus Erhöhen
von Schwellspannungspegeln (Vth) (beginnend
vom gelöschten
oder Zustand 0) unter Verwendung einer sequentiell ansteigenden Steuerspannungsschritt
(z.B. Treppe) Implementierung für
jeden nachfolgenden Programmierpuls. Während jedes Speicherelement
seinen zu schreibenden Vth Ziel-Datenzustand überschreitet,
wird es während
der entsprechenden Zustandsprüfope ration gesperrt,
was sämtliches
nachfolgendes Schreiben der zugehörigen Speicherelemente für die Dauer
dieser Schreibsession beendet.
-
Eine
Prüfoperation
ist eine Abtast- oder Leseoperation, wobei der Zustand der Speichereinheit mit
seinem Daten-zugehörigen
Zielwert verglichen wird. Für
eine binäre
Speichereinheit existiert neben dem Grundzustand nur ein Datenzustand,
während der
Mehrzustandsfall zusätzliche
Zustände
aufweisen wird. Zum Beispiel in dem Fall, bei dem jedes Speicherelement
oder Zelle insgesamt 3 Bit oder acht Zustände speichert. In einer üblichen
Zellen-Array-Architektur sind alle Zellen in einer Schreib- oder Abtastgruppe,
die gleichzeitig beschreiben beziehungsweise gelesen werden, mit
einem gemeinsamen Control oder Steering Gate verbunden. Um bei einer
derartigen Implementierung Zellen über dem Bereich von möglichen
Zuständen
(z.B. Zustände
{0, 1, 2, 3, 4, 5, 6, 7} für
das 3-Bit Beispiel) auszulesen oder zu prüfen ist es notwendig, seriell
(z.B. sequentiell) durch alle Steuerspannungsabtastbedingungen zu
scannen. Bei dem Beispiel gibt es sieben derartige sequentielle
Abtastvorgänge
für die
Leseoperationen. Diese werden bei den sieben Schwellspannungs-Unterscheidungspegeln
durchgeführt,
um gleichzeitig den gespeicherten Zustand der möglichen acht Zustände für jede Zelle
innerhalb des gesamten Satzes von Zellen, die ausgelesen oder geprüft werden,
zu ermitteln. Bei Verwendung dieser Art von Leseoperationen wie
auf die Programmier/Prüf/Sperr-Sequenz
angewendet, wobei jeder Programmierpuls von einer Reihe von Prüfschritten (zusammen
mit der zugehörigen
zustandbedingten Programmiersperre) begleitet wird, kann dieser
Prüfsatz
auch sequentiell durch den gesamten Satz von Steuerspannungszielpegeln
Vth (z.B. ein Satz von sieben für acht Zustandsspeicherelemente)
ablaufen, welcher mit dem entsprechenden Satz von programmierbaren
Datenzuständen
verbunden ist.
-
1 veranschaulicht
die grundsätzliche Mehrzustand
Programmier/Prüf-Operation für den Fall
von 8 Zuständen
in einem Flash-Speichertyp. Programmierpulse, die eine zunehmende
Erhöhung von
Steering oder Control Gate Programmierspannungspegeln umfassen,
sind mit einer 7-Schritt Prüfsequenz
von zunehmenden Steering Gate Abtastspannungspegeln verknüpft.
-
2 erweitert
diese Prüfserie
in Wellenform 103 (auch mit B gekennzeichnet), welche die
7 sequentiell ansteigenden Prüfpulse
1, 2, 3, 4, 5, 6 und 7 kennzeichnet. Dieses Beispiel zeigt die Ergebnisse
einer derartigen Überprüfung für ein Speicherelement
im (geladenen) Zustand (d.h. abgetastete Schwellspannung oder Pegel
Vth) zwischen Prüfpegeln 3 und 4, wie durch
punktierte Linie 101 dargestellt (auch mit A gekennzeichnet),
die entweder Schwellenspannung direkt repräsentiert oder einen anderen
Parameter (z.B. einen Strompegel), der auf diesen Zustand hinweist.
Die Abtastmesswerte werden bei jedem der Prüfpegel in Wellenform für die Abtastparameter
(wie zum Beispiel Steering Gate Spannung) durch einen Abtastpuls
erfasst, wie durch Wellenform 105 dargestellt (auch mit
C gekennzeichnet). Die Messwerte dieser Abtastüberprüfung sind in Wellenform 107 gezeigt
(auch mit D gekennzeichnet). Wann immer der Prüfpegel niedriger als der gespeicherte
Ladungspegel ist, führt
dies zu einem „1" Logikpegelpuls,
wie für
die ersten drei Prüfabtastungen gezeigt
ist, während
wenn dieser höher
ist, dies zu einem „0" Logikpegel führt, wie
es für
die letzten vier Prüfabtastungen
gezeigt ist.
-
In
der Praxis ist das Verwenden des gesamten Prüfsatzes für jeden Schritt beim Programmieren zuviel
des Guten und vergeudet Zeit (wobei typischerweise jede Prüfabtastoperation
die selbe Zeit wie ein Programmierpuls beansprucht), da bei jedem Punkt
des Programmierverlaufs nur ein begrenzter Vth Bereich
(oder Bereich von Datenzuständen)
existiert, über
den sich die Population von Zellenerstrecken kann. Vorhandene Bauarten
nutzen diese Charakteristik durch Bereitstellen einer Implementierung eines
begrenzten Prüfsatzes
mit beweglichem Bereich aus, wie im folgenden beschrieben wird.
-
Bei
Verwendung des schrittweisen Programmieransatzes existiert eine
sich statistisch gut verhaltende Verteilung von Schwellenspannungen
innerhalb einer Population von Zellen, wenn diese durch die aufsteigenden
Zustände
fortschreiten, beginnend mit Zustand 1, dann zu Zustand 2 und so
weiter bis Zustand 7. Um zu Helfen, das begrenzte Prüfsatz-Konzept
zu verstehen, hilft es zunächst
die Datenzustandsbedingte Programmiersperre zu vernachlässigen,
d.h. es wird keine Sperre angenommen. Angesichts dessen wird in
der folgenden Momentaufnahme ein Beispiel für ein Vth Verteilungsszenario
beschrieben. Beginnend vom gelöschten Zustand
wurde die Population von Zellen sukzessiv bis zu einem Punkt programmiert,
bei dem sich ein signifikanter Anteil der Population innerhalb des
Vth Bereiches zwischen den Zuständen 4 und
5 befindet. In diesem Szenario sind relativwenige Nachzügler vorhanden,
die zwischen den Zuständen
3 und 4 liegen, und keine mit Vths unterhalb
von Zustand 3. Ebenso sind verhältnismäßig wenig
vorauslaufende Zellen mit Vths zwischen
den Zuständen
5 und 6 (d.h. Lesen als Zustand 5) und keine bei Zuständen 6 und
darüber
vorhanden. In einem derartigen Szenario ist es sinnlos, die Prüfoperation
durchzuführen,
um nach Zuständen
1, 2, 6 oder 7 zu suchen, da die Zellen an diesem Punkt nur in dem
Vth Bereich vorhanden sind, der sich über den
Zuständen
3, 4 oder 5 erstreckt. Infolgedessen reduziert der nun verwendete
Ansatz den Bereich der Vth Prüfpegel,
um sich nur über
den Fensterbereich zu erstrecken, welcher dazu notwendig ist, den
erwarteten Vth Bereich am gegebenen Punkt
in der Programmiersequenz zu umhüllen
(d.h. im obigen Beispiel werden an diesem Punkt in der Program miersequenz
nur 3 Prüfungen
durchgeführt, die
sich über
Zustände
3, 4 und 5 erstrecken, anstelle des gesamten Satzes von sieben Prüfungen.).
Während
Programmieren zu höheren
Schwellspannungsbereichen verläuft,
wird der Vth Prüffensterbereich entsprechend
aufwärts
bewegt. Auf diese Weise wird die Programmieroperation wesentlich
beschleunigt. Zum Beispiel in dem Fall, bei dem die Zeitdauer für jeden
Programmierpuls vergleichbar mit dem für jeden Prüfschritt ist, reduziert dieser
Ansatz die gesamte Schreibzeit um die Hälfte vom Maximum von 8 Schritten
(d.h. 1 Programmierpuls plus 7 Prüfungen) auf 4 Schritte (1 Programmierpuls
plus 3 Prüfungen), was
die ursprüngliche
Schreibgeschwindigkeit verdoppelt.
-
Ein
Beispiel für
diesen Vorgang ist in 3 dargestellt. Dies ist eine
schematische Darstellung der Zustände, die bei welchem Stadium
in einem beispielhaften Programmiervorgang geprüft würden. Dies kann durch eine
Look-Up Tabelle im Controller oder andere Vorrichtungen implementiert
werden. In der Tabelle in 3 sind die
geprüften
Mehrzustände nach
einem vorgegebenen Programmierpuls durch ein Häkchen bei einem entsprechenden
Punkt im Raster angedeutet. Zum Beispiel ist nach den ersten zwei
Programmierpulsen nur der niedrigste Zustand über Ground (z.B. der Zustand
1) überprüft, da voraussichtlich
keines der Speicherelemente derart früh zum Zustand 2 aufgestiegen
sein wird. Nach dem dritten Puls wird eine Prüfung des Zustand 2 hinzugefügt, da zu
diesem Zeitpunkt Zellen den Zustand 2 erreicht können. Der Zustand 3 wird ebenso
nach dem fünften
Puls zur Prüfliste
hinzugefügt
und so weiter. Wenn eine Zelle zum Zustand 1 übergeht, wurde diese voraussichtlich
durch den siebten Puls programmiert, so dass die Prüfung des
Zustands 1 an diesem Zeitpunkt ausgelassen wird. Ebenso wird der
Zustand 2 beim 11-ten Puls ausgelassen und so weiter.
-
Beispiele
für Abläufe der
oben beschriebenen Art sind in US-Patent 6,243,290 und der Europäischen Patentschrift
0,856,850 offenbart.
-
Obwohl
dies die Anzahl der Lesevorgänge zwischen
Programmierpulsen im Vergleich zum Prüfen aller Nicht-Ground-Zustände (zum
Beispiel 7 Lesevorgänge
im Falle des 3-Bit Beispiels) signifikant reduziert, existieren
bei Verwendung eines derartigen Dead Reckoning Reduced Scan eine
Anzahl von Problemen, Sliding Window Ansatz für höhere Schreibgeschwindigkeit,
während
ein ausreichendes Guard-Band beim Scan Fenster beizubehalten, um zuverlässige Schreiboperationen
zu gewährleisten. Diese
Probleme hängen
hauptsächlich
mit der Ermittlung eines ausreichenden Guard-Bands zusammen. Und
zwar, wie früh
sollte jeder neue Zustand eingeführt
werden und wann ist es sicher, jeden Zustand auszulassen? Die Prüfoperation,
wie in 3 beispielhaft erläutet, muss die O perationen
des Speichers ungeachtet seiner Betriebsbedingungen sicher abdecken,
wie zum Beispiel Temperatur oder Spannungsquelle, Alter des Bauelements
oder der Herstellungsunterschiede, die mit der Verarbeitung und anderer
Schwankungen verbunden sind. Obwohl die Performance durch Prüfen weniger
Zustände
während
der Prüfoperation
erhöht
wird, muss eine ausreichende Prüfung
vorhanden sein, um einen stabilen Betrieb zu gewährleisten. Obwohl der Vorteil
der Performancesteigerung mit der steigenden Anzahl von Zuständen pro
Speicherelement durch Verwendung des obigen reduzierten Scans steigt,
steigt darüber hinaus
die Möglichkeit
von Fehlern, insbesondere unter Beachtung der Tendenz zu niedrigeren
Betriebsspannungen.
-
Da
die verbleibenden Vths nicht überprüft werden,
ist keine Sperrung von deren zugehörigen Zuständen während dieses bestimmten Programmierschritts
möglich.
(Im obigen Beispiel haben z.B. nur Zellen mit Datenzuständen 3,
4 und 5 die Möglichkeit
gesperrt zu werden, wohingegen Zellen mit Datenzuständen 1,
2, 6, 7 nicht derart während
dieses spezifischen Programmier/Prüf-Schrittes gesperrt werden
können.)
Daher ist eine entscheidende Notwendigkeit für diesen Prüf-Beschleunigungs-Algorithmus,
dass zu jedem Zeitpunkt in der Programmiersequenz ein ausreichend
breiter und genau positionierter Prüffensterbereich aufgestellt
ist, um die Streuung der erwarteten Verteilung von Vth zu
erfassen (mit Ausnahme der bereits gesperrten Zellen).
-
Im
Falle eines unzureichenden Prüfbereichfensters
können
Zellen an beiden Enden der Verteilung von Vth (d.h.
beide, die zu langsam oder zu schnell programmieren) fehlen, wenn
diese tatsächlich
ihre korrekten Vth Pegel erreichen und die
Programmiersperre benötigen.
Dies wird unweigerlich zu entsprechenden Datenzustandsfehlern führen (d.h. Schreibfehler),
weil diese Zellen immer noch zu höheren Vth Pegeln
voranschreiten (im Falle der Nachzügler niemals gesperrt wurden
oder zu spät
gesperrt wurden, das wahrscheinliche Schicksal der zu schnellen
Zellen). Infolgedessen muss der reduzierte Vth Scan
Fenster Algorithmus (d.h. seine Fenstergröße und Programmierschritt-abhängige Anordnung) sorgfältig ausgelegt
werden, um eine erhöhte Schreibgeschwindigkeit
zu erreichen ohne die Schreibzuverlässigkeit zu verringern.
-
Ein
alternativer vorhandener Ansatz zum Reduzieren der Anzahl von Prüfoperationen
pro Programmierpuls wurde für
eine 2-Bit-pro-Zelle-NAND-Architektur entwickelt (dessen vier Zustände für Referenzzwecke
hier als 0, 1, 2, 3 mit absteigenden Pegeln Vth bezeichnet
werden) wie zuvor in Bezug auf US-Patentoffenlegung 2003-0002348-A1 beschrieben.
Eine optionale Betriebsart für
diese NAND Logik Implementation behandelt jede Speichereinheit derart,
als hätte
diese mehrere Sektoradressen, wobei jede Adresse eher eins der zwei
Bit der Speichereinheit speichert als eine einzelne Speichereinheit,
die mehrere Bit innerhalb einer Sektoradresse speichert. Im Fall,
bei dem die zwei höheren Vth Zustände
(2, 3) ausgehend von den zwei niedrigeren Vth Zuständen (0,
1) programmiert werden sollen, verläuft der Vorgang wie folgt:
Zellen mit beiden Zielzuständen
2, 3 werden zuerst programmiert und an das niedrigere Vth von
den zwei höheren
Zuständen (d.h.
Zustand 2) gesperrt. Dies wird unter Verwendung eines einzigen Prüf-2 Operation
im Anschluss an jeden Programmierpuls durchgeführt und Sperren weiterer Programmierung
von beiden 2ern und 3ern, wenn diese den Prüf-2 Pegel überschreiten. Sobald alle 2er
und 3er derart gesperrt worden sind, werden die 3er automatisch
entsperrt und die Programmiersequenz startet wieder bei diesen 3ern,
aber nun mit dem einzigen am Prüf-3
Pegel festgelegten Prüfoperationssatz.
Eine Variation beginnt nur mit einer 2er Prüfung während des gleichzeitigen Programmierens der
Zustände
2 und 3. Die Prüfung
des Zustands 3 wird nach einer vorgegebenen Anzahl von Programmierpulsen
hinzugefügt,
wobei die 2er Prüfung
eventuell ausgelassen wird, um von dort an bis zum Abschluss nur
die 3er Überprüfung beizubehalten.
Verschiedene Aspekte dieses Verfahrens werden weiter in US-Patent
5,920,507 erörtert.
-
Dieser
Ansatz könnte
zu höheren
Pegeln von Mehrzustandsspeicherung (z.B. 8 Zustände pro Speicherelement) durch
Sperren aller Zellen für
ein Ziel Vth gleich oder größer als
ein Zielpegel Vth (d.h. Zustand) unter Verwendung
eines einzigen Zielpegels Vth erweitert
werden. Sobald alle Zellen derart gesperrt sind, wird der Vorgang
für die
Zellen mit dem nächst
höheren
Zustand Vth oder darüber wiederholt, wobei diese
Schleife wiederholt wird, bis diese auf den höchsten Datenzustand ausgerichtete
Zellen deren entsprechendes Prüfziel überschreiten.
-
Durch
Verwendung dieses Ansatzes ist nur ein einziger Prüfpuls mit
jeder Programmierpulsoperation erforderlich, was ein deutlicher
Gewinn in Systemen ist, deren Prüfzeiten
die des Programmierens dominieren, und dadurch eine Lösung für eine optimale
Schreibperformance bietet. Für
Systeme, deren einzelne Programmierpulszeiten vergleichbar mit denen
von einzelnen Prüfungen
vergleichbar sind, was für
vorhandene Massenspeicherungs-FLASH-Speicher typisch ist, reduziert
der obige Ansatz jedoch die Schreibperformance aus zwei Gründen: (1)
Der Programmierfortschritt von Zellen, die für Zustände über denen, die überprüft werden,
ausgerichtet sind, werden frühzeitig
und unnötigerweise
angehalten, was zusätzliche
Programmierzeit in nachfolgenden Vth Programmierphasen
erfordert, um den durch diese frühzeitige
Beendigung verlorenen Fortschritt auszugleichen. (2) Die anfänglichen
Programmierbedingungen (z.B. Steering oder Control Gate Start-Spannungstreppe)
bei Wiederaufnahme am nächst
höheren
Zustand muss auf kleinere Werte als diejenigen zurückfallen,
die am Ende der vorherigen Programmiersequenz zurückgelassen
wurden. Dieses Zurückfallen
ist wesentlich, um sicherzustellen, dass Zellen nicht ihren Zielbereich überschreiten,
da der spezifische, entsprechende Pegel, bei dem jede Zelle der
Populationen zuvor gesperrt wurde (und von dem zugehörigen Pegel
aus, von dem jede Zelle die Programmierung fortsetzen sollte) nicht
länger
auf die Zellen, als eine Population, bei einer einzigen Programmierstartbedingung
angewendet werden kann. Im besten Falle muss die Startbedingung
auf die verringert werden, die mit der schnellsten Programmierzelle
in Zusammenhang steht (d.h. der Programmierspannungssatz für die erste
Zelle in der Gruppe, bei der gesperrt werden soll), und dadurch die
erforderliche Anzahl von Programmierpulsen für die verbleibenden Zellen
zu erhöhen.
Für einen
Sicherheitsrand Zielte die Startspannung etwas unterhalb des optimalen
Pegels reduziert werden, was die Anzahl von Programmierpulse noch
weiter erhöht, was
die Schreibperformance verringert. Dieser Ansatz führt auch
wieder das Problem ein, mit einem festen (d.h. nicht-intelligenten
adaptiven) Wert (in diesem Fall zum Programmier-Wiederanlauf) der
die Performance mit zuverlässigem
Schreiben ausbalanciert. Wenn dies zu aggressiv zugunsten erhöhter Schreibgeschwindigkeit
vorangetrieben wird, riskiert dies Zustandsüberschreitung beim Programmieren, während die
Schreibgeschwindigkeit leidet, wenn dies zu vorsichtig vorangetrieben
wird.
-
Die
vorliegende Erfindung richtet sich auf ein Verfahren zum Durchführen einer
Programmieroperation an einer Vielzahl von Mehrzustand-Datenspeicherelementen,
umfassend Durchführen
einer Programmieroperation, um inkrementell die Speicherelemente
von einem ersten Datenzustand sequentiell durch eine Vielzahl von
zweiten Datenzuständen
zu versetzen, Prüfen
des Ergebnisses der vorangehenden Programmieroperation für eine Teilmenge
von einem oder mehreren Zielwerten von einem Satz von Zielwerten,
wobei jeder einem entsprechenden zweiten Datenzustand entspricht,
und nachfolgend Wiederholen der Durchführung einer Programmieroperation
sowie das Prüfen
unter Verwendung der neu aufgestellten Teilmenge von Zielwerten.
Gemäß der vorliegenden
Erfindung und vor Wiederholen der Durchführung und Prüfoperationen
in einem Verfahren, das die obigen Schritte umfasst, wird die Teilmenge
von einem oder mehreren der Zielwerte für eine anschließende Prüfoperation
basierend auf dem Ergebnis des vorherigen Prüfens in einem Schritt wiederhergestellt,
welcher umfasst zu Ermitteln, ob ein Zielwert nicht in die Teilmenge
der vorangehenden Prüfung aufzunehmen
ist.
-
Die
vorliegende Erfindung stellt ebenfalls einen Speicher zu Verfügung, welcher
eine Vielzahl von Mehrzustand-Speicherelementen enthält, Programmierschaltungen,
welche mit den Speichereinheiten verbindbar sind, um eine Programmieroperation
durch zuführen,
wobei der Zustand der Speicherelemente verändert werden kann, und Abtastschaltungen,
welche mit den Speicherelementen verbindbar sind, um den Wert eines
Parameters zu ermitteln, welcher auf den Zustand des Speicherelementes
hinweist. Vergleichsschaltungen sind mit den Abtastschaltungen verbunden,
um eine Programmierprüfoperation
unter Verwendung von Zielwerten für die Parameter entsprechend
einer Teilmenge der Mehrzustandpegel durchzuführen, und Logikschaltungen
mit den Vergleichsschaltungen verbunden sind, wobei Hinzufügen eines
oder mehrerer Mehrzustandpegel zur Teilmenge der Mehrzustandpegel,
welche bei der Programmierprüfoperation
verwendet werden, basierend auf den Ergebnissen der vorangehenden
Programmierprüfoperation
ermittelt werden.
-
Gemäß einer
Anwendung der vorliegenden Erfindung werden Mehrzustandsspeicher
unter Verwendung einer „Smart-Verify" Technik mit einem
Prüfergebnis-basierenden
dynamischen Anpassen des Mehrzustands-Prüfbereichs für sequentiell Zustand-basierte
Prüfimplementierungen
programmiert. Die "Smart-Verify" Technik kann die
Mehrzustand-Schreibgeschwindigkeit
erhöhen,
während
einen zuverlässigen
Betrieb innerhalb sequentiell geprüfter Mehrzustand-Speicherimplementierungen aufrechtzuerhalten.
Dieser führt
dies durch Bereitstellen von "intelligenten" Mitteln zum Minimieren
der Anzahl sequentieller Prüfoperationen
für jeden
Programmier/Prüf/Sperr-Schritt
der Schreibsequenz durch. In einer beispielhaften Ausgestaltung
durch Überwachen
der Populationsbewegung, um beide, die schnellste Programmierzelle
mittels Daten-unbedingter Prüfung
am höchsten
Datenzustandspegel, der im Prüf-Scanbereich
enthalten ist, sowie die alle-Zellen-Sperrbedingung für den niedrigsten Datenzustand
in diesem Scanbereich (dabei umfassend die langsamste Programmierzelle),
können
die niedrigsten und höchsten
Enden der Schwellspannungspegelfenster mit minimalem Zeitverbrauch
von zusätzlichen,
unnötigen
Prüfoperationen
zuverlässig aufgestellt
werden.
-
In
einer beispielhaften Ausgestaltung der Schreibsequenz für den Mehrzustands-Speicher während einer
Programmier/Prüf-Sequenz
der ausgewählten
Speicherelemente werden zu Beginn des Verlaufs nur die niedrigsten
Zustände
des Mehrzustandsbereichs, auf welche die ausgewählten Speicherelemente programmiert
werden, während
der Prüfphase überprüft. Zum
Beispiel können
die Speicherelemente die Speicherzellen eines Flash-EEPROM Speichers
sein, die mit einer Programmierspannung gepulst werden und nachfolgend
abgetastet werden, um deren Fortschritt zu überwachen. Wenn der erste Speicherzustand
von einem oder mehreren der ausgewählten Elemente erreicht wird,
wird der nächste
Zustand in der Sequenz von Mehrzuständen zum Prüfvorgang hinzugefügt. Dieser
Zustand kann entweder sofort hinzugefügt werden, nachdem die schnellsten Zellen
diesen vorhergehenden Zustand in der Sequenz erreicht haben oder
nach einer Verzögerung
von mehreren Zyklen, da Speicher generell dazu ausgelegt sind, mehrere Programmierschritte
zu enthalten um sich von Zustand zu Zustand zu bewegen. Der Verzögerungsbetrag
kann entweder festgelegt sein oder vorzugsweise einen auf der Implementierung
basierenden Parameter verwenden, was ermöglicht, den Verzögerungsbetrag
entsprechend Charakteristika des Bauelementes festzulegen.
-
Das
Hinzufügen
von Zuständen
zu dem Satz, der in der Prüfphase
geprüft
wird, dauert gemäß oben bis
einschließlich
dem Rest der Mehrzustände
in Folge an, bis der höchste
Zustand hinzugefügt
wurde. Auf die gleiche Weise können
niedrigere Zustände
vom Prüfsatz
entfernt werden, während alle
der ausgewählten
Speicherelemente, die für
diese Pegel vorherbestimmt sind, an deren Zielwerten erfolgreich überprüft werden
und von weiterem Programmieren gesperrt werden. Zusätzlich können zuvor
erkannte fehlerhafte Zellen, die nicht richtig programmiert werden
können,
auch ausgeblendet werden (z.B. durch anfängliches Sperren), was deren Auswirkung
auf die Programmier/intelligente Prüfoperation vermeidet.
-
Weitere
Aspekte, Merkmale und Vorteile der vorliegenden Erfindung sind in
der folgenden Beschreibung beispielhafter Ausgestaltungen enthalten,
deren Beschreibung in Zusammenhang mit den beiliegenden Zeichnungen
gelesen werden sollte.
-
1 ist
eine Programmier/Prüf-Wellenformsequenz,
die eine vollständige
7-Prüfsequenz zeigt,
die mit einer schrittweise höheren
Steuer-Programmierspannung alterniert.
-
2 zeigt
eine vollständige
sequentielle 7-Schritt Prüfsequenz.
-
3 ist
ein veranschaulichendes Beispiel für eine Look-Up Tabelle, deren
Zustände
nach einem vorgegebenen Programmierpuls geprüft werden sollen.
-
4 ist
ein Ablaufdiagramm für
eine beispielhafte Ausgestaltung der vorliegenden Erfindung.
-
5a und 5b zeigen
die Anzahl von nachfolgenden Prüfpulsen
nach jedem Programmierschritt in einer Simulation zweier Ausgestaltungen der
vorliegenden Erfindung.
-
6 zeigt
die Häufigkeitsverteilung
für den Bereich
der Anzahl von Prüfpulsen,
die in der in der Ausgestaltung von 5b verwendet
werden.
-
7 zeigt
die resultierenden simulierten Schwellenverteilungen für die der
Programmierzustände
folgende Sperrung.
-
8 zeigt
die resultierenden simulierten Schwellenverteilungen der noch nicht
gesperrten Zellenpopulationen bei Programmierschritten gerade vor
dem Sperren jeder der Programmierzustände.
-
9 zeigt
die Anzahl der noch auf deren zugehörigen Prüf/Sperrbedingungen zu programmierenden
Zellen als eine Funktion der Anzahl von steigenden Programmierpulsen.
-
10 ist
ein Schaltbild einer einem Programm zugehörigen Prüf/Sperr Implementierung.
-
11 zeigt
eine reduzierte sequentielle 7-Schritt Prüfsequenz, die eine Smart-Prüfoperation veranschaulicht.
-
12 ein
Schaltbild einer Peak-Prüfpegel-Detektion
und Anwendung zum Aufstellen eines Endes mit hoher Spannung einer
Smart Prüfoperation.
-
13 ist
ein Schaltbild einer minimalen Prüfpegel-Detektion und Anwendung
zum Aufstellen eines Endes mit niedriger Spannung einer Smart Prüfoperation.
-
Die
verschiedenen Aspekte der vorliegenden Erfindung sind im Allgemeinen
auf nichtflüchtige Speichersysteme
anwendbar. Obwohl die nachstehende und auch oben dargelegte Beschreibung hauptsichtlich
im Hinblick auf eine spezielle Flash-EEPROM Speicherausgestaltung
dargestellt ist, ist die im Speicherarray speziell verwendete Bauart
keine Beschränkung
der vorliegenden Erfindung. Die Einzelheiten wie die Speicherelemente
ausgelesen werden, beschrieben werden und Daten gespeichert werden
fließen
nicht in die Hauptaspekte der vorliegenden Erfindung mit ein und
können
die von jedem verschiedenen nicht-flüchtigen und flüchtigen Systemen
verwendete sein, die ebenfalls sequentielle Prüfung durch Zustandsbedingungen
verwenden, um die Zelle-für-Zelle
Prüf/Programmier
beendende Operation durchzuführen.
-
Gemäß einem
Hauptaspekt verwendet die Erfindung Prüfergebnis-basierende dynamische
Anpassung des Mehrzustands-Prüfbereichs,
um eine zuverlässige,
minimal zeitverschwendende Mehrzustand-Schreiboperation in sequentieller
Prüf-Implementierung aufzustellen.
Dies stellt einen Prüfalgorithmus
mit einer höheren
Geschwindigkeit zur Verfügung,
während
eine einwandfreie Prüfzuverlässigkeit für sequentielle
Abtastung/Prüfung
der Mehrzustand-Speicherung beizubehalten. Wenn zum Beispiel Mehrzustand-Speicherelemente
von Zustand 0 sequentiell durch Zustände 1, 2 und so weiter programmiert
werden, wird in einem frühen
Stadium nur der Zustand 1 geprüft.
Wenn die schnelleren Programmierzellen beginnen, am Zustand 1 zu
prüfen, wird
Zustand 2 zum Prüfzustandsbereich
vielleicht mit einer Verzögerung
einer Anzahl von Programmier/Prüf-Zyklen,
die Parameter-basiert basiert sein können, hinzugefügt. Die
anderen Zustände
können in
gleicher Weise zum Prüfsatz
hinzugefügt
werden, wenn die Programmierung zu höheren Zustandspegeln fortschreitet.
Niedriger liegende Prüfpegel
können
entfernt werden, wenn der vollständige
Satz von Speicherelementen, die auf diese zu besetzenden niedrigeren
Pegel ausgerichtet sind, derart bestätigt werden. Somit verbessert
diese auf Prüfergebnissen basierende
dynamische Anpassung auf dem Dead Recognition Reduced Scan, Guard
Banded Sliding Window Ansatz, der im Theorieteil beschriebenen wurde,
durch Zulassen einer minimalen Anzahl von Prüfungen während eine genügende Prüfbereichabdeckung
gesichert wird: Im Allgemeinen, je größer die Anzahl von Zuständen, desto
größer ist
die durch die vorliegende Erfindung erzielte Verbesserung.
-
Die
verschiedenen Aspekte der vorliegenden Erfindung können in
verschiedenen nicht-flüchtigen Speichern
wie zum Beispiel diejenigen, die durch Bezugnahme im Theorieteil
aufgenommen wurden, implementiert werden. Weitere Details der Abtastvorgänge werden
in US-Patenten 6,538,922 und 6,621,739 sowie in US-Patentveröffentlichung 2003-0137877-AI
dargelegt. Obwohl die beispielhafte Ausgestaltung im Hinblick auf
Prüfen
von Spannungswerten beschrieben wird, da die Schwellenspannung die
relevante physikalische Größe eines Floating
Gate Speicherzellentyps ist, kann die Prüfung auf Verwendung anderer
Parameter basiert sein, die auf den Zustand des Speicherelements
hinweisen, wie zum Beispiel ein Strom oder eine Frequenz. Eine Anzahl
von Variationen werden in diesen Referenzen beschrieben. Darüber hinaus
können
die verschiedenen Aspekte der vorliegenden Erfindung mit der Verwendung
von Lese- und Prüf-Rändern wie ferner
in US-Patent 5,532,962 beschrieben wird, verwendet werden.
-
Die
Grundidee des Prüfergebnis-basierten Ansatzes
besteht darin, Informationen bereitzustellen und zu verwenden, die
mit dem Programmierfortschritt der Programmie rung der Zellpopulation
in Zusammenhang stehen, um dadurch dynamisch den geeigneten und
zuverlässigen
Bereich für
die Vth (oder andere Parameter) des Scan
Fensters aufzustellen. Beginnend vom gelöschten oder Grundzustand (Zustand
0) ist der erste Teil nutzbarer Information zu wissen, wenn das
schnellste Programmier-Speicherelement oder Zelle des Satzes von
Zellen, der programmiert wird, den nächsten niedrigsten Datenzustand
(z.B. Zustand 1) Vth, das Ziel dieses Satzes
(d.h. dem Konzept eines Peak Vth Detektors folgen)
durchschreitet. Bis ein derartiges Überschreiten detektiert wird
braucht daher nur ein einzelner Prüfdurchgang für diesen
niedrigsten Pegel jeden Programmierpuls begleiten. Bis zu diesem
Zeitpunkt wird der Daten-bedingte Aspekt der Vth Detektion
vorzugsweise überwunden,
das heißt
die gesamte Zellenpopulation ist bei der Peak-Schwellen-Spannungsdetektion beteiligt
und ist von deren entsprechenden Zielzuständen unabhängig. Mit anderen Worten, diese
Information muss unabhängig
vom Zielzustand dieser schnellsten Zelle bekannt sein. Sobald dies
detektiert wird, wird die Daten-bedingte Prüfung und Sperrung für einen
begrenzten Bereich von Datenzuständen
oberhalb dieses Wertes durchgeführt
(bspw. aufwärts
bis zu einem Vth Schritt über diesem
niedrigsten Pegel).
-
Beim
Fortfahren des Verlaufs besteht ein weiterer Teil nutzbarer Information
darin, die Ermittlung, dass alle auf diesen niedrigsten Datenzustand ausgerichteten
Zellen in der Tat die Prüfung/Sperrung
abgeschlossen haben. Sobald dies bekannt ist, wird die Prüfoperation
für diesen
niedrigsten Zustand nicht länger
benötigt
und kann gefahrlos entfernt werden. Dies signalisiert eine Verschiebung
des Bodens des Vth Scanfensters aufwärts zum
nächst
höheren Vth Datenzustand, zum Beispiel wenn Zustände 1, 2, 3 überprüft werden,
würde dies
dann zu Zuständen
2, 3 verschieben. Diese Strategie könnte dann fortgesetzt werden,
während
jede Zellenpopulation, die auf den niedrigsten existierenden Zustand
gerichtet ist, deren zugehörige
Prüfung/Sperrung
beendet. Dies stellt sowohl einen Weg zum zuverlässigen Entfernen von Zeitverschwendung
zum Prüfen
des unteren Endes des Prüfbereichs
zur Verfügung,
als auch ein Maß zum
dynamischen Positionieren des Vth Fensterscans.
-
Ein
möglicher
Ansatz könnte
diese niedrigere Zustand-Entfernungs-Bedingung ausschließlich beim
Durchführen
der Ermittlung verwenden, wann der höhere Prüfzustand zu erhöhen ist.
Bei einem derartigen Ansatz besteht allerdings noch immer das Risiko,
dass überhöhte Programmierzellen über das oben
ermittelte hohe Bereichende des Vth Scans
laufen und dadurch nicht die Gelegenheit haben, Sperren zur Verfügung zu
stellen. Um dieses Risiko zu verringern, besteht eine Option darin,
ein Guard-Band zum hohen Bereich des Vth-Scans
hinzuzufügen
und dadurch die Wahrscheinlichkeit solch eines Er eignisses zu verringern.
Der Preis solch eines Ansatzes besteht allerdings in reduzierter Schreib-Performance
aufgrund häufig
unnötiger
Prüfungen
am hohen Vth Ende.
-
Der
Weg um dieses Problem vollständig
zu umgehen besteht darin, Informationen die in Zusammenhang mit
der höchsten
Vth Zelle stehen, zu einem gegebenen Zeitpunkt
zur Verfügung
zu stellen. Dies ist das oben eingeführte Konzept, nämlich Mittel
zum Ermitteln, wann die schnellsten Programmierzellen der gesamten
Zellenpopulation einen vorgegebenen Vth Prüfpegel unabhängig von
deren Ziel-Daten (der Vth Peak-Detektor) überschreiten.
Mit diesen Mitteln, die zu jeder Zeit auf den höchsten Vth Bereich,
der überprüft wird
(der sich über
einen höheren
Zustand als der erwartete Zustand erstrecken sollte, um in der Vth Verteilung der Population vorhanden zu
sein) angewendet werden, wird derartiges Überschreiten signalisiert und
das hohe Vth Prüfende wird zum nächst höheren Zustand
erhöht.
Diese Mittel werden dann an diesem neuen Pegel, der dem nächsten Puls
folgt, wiederholt. (Wie oben ist zu beachten, dass falls die Zieldaten
für diese
schnellste Zelle oder Zellen mit dem oben genannten höchsten Prüfpegel übereinstimmen,
werden diese ebenso gesperrt.) Auf diese Art und Weise wird ebenso
mit dem unteren Ende des Vth Scanbereichs
das obere Ende dieses Scanbereichs basierend auf Informationen der
schnellsten Programmierzelle zu jeder Zeit (d.h. Schritt) in der Programmiersequenz
adaptiv angepasst. Noch allgemeiner ist das Hinzufügen von
höheren
Zuständen zum
Prüfscanfenster
ein unabhängiger
Vorgang vom Entfernen niedriger Zustandsüberprüfungen wenn diese niedrigeren
Zustände
vollständig
sperren.
-
Auf
den ersten Blick erscheint dieser Vth Detektor-Ansatz
die Schreibgeschwindigkeit durch Erzwingen eines zusätzlichen
Prüfens
am hohen Ende, das absichtlich sein zugehöriges Vth-Ziel
in der Mehrheit der Zeitpunkte nicht erreicht, zu verringern. Es trägt sich
am Ende jedoch selbst, da die Alternative vom Blind Guard-Banding
sehr wahrscheinlich nach wie vor Wider Window Enveloping vorschreibt,
um zuverlässige
Schreiboperationen für
den bestehenden Sliding Window Ansatz zu gewährleisten.
-
Um
den Betrieb noch weiter zu verbessern, besteht eine Alternative
darin, den nächsten
Zustand zum Prüfsatz
nicht umgehend nach dem schnellsten Programmier-Zustandsprüfen beim folgenden Schritt hinzuzufügen. Es
besteht keine Notwendigkeit zu drängen, um den nächst höheren Prüfpegel einzufügen, da
durch die Bauform (z.B. durch die Steering Gate Spannungstreppe
reguliert) es sogar für
die schnellsten Programmierzellen häufig eine Anzahl von Programmierpulsen
erfordern wird, um diesen nächst
höheren
Zustand zu erreichen. Falls es beispielsweise durch die Bauform
vier Programmierpulse erfordert, um von einem Speicherzustand zu
einem andern fortzuschreiten, könnte man
sicher auf einen oder zwei Programmierpulse über dem Peak Detektions Punkt
warten, bevor der nächste
Prüfpegel
hinzugefügt
wird. Der aktuelle Verzögerungsumfang
kann entweder festgelegt sein oder in einer beispielhaften Ausgestaltung
eine Parameter-basierte Implementierung
verwenden. Die Parameter können dann
entsprechend Betriebsbedingungen, Alter des Bauelementes und anderen
Faktoren festgelegt werden, um die Performance erhöhen, während noch
immer ein ausreichender Sicherheitsrand ermöglicht wird. Für das im
Folgenden beschriebene Simulationsbeispiel kann diese Verzögerung etwa
10% bei der Schreibgeschwindigkeit hinzufügen ohne dabei inakzeptable
Risiken aufzunehmen.
-
Die
gesamte Sequenz für
diesen Ansatz geht zur Fertigstellung wie in bestehenden Implementierungen
vor, wobei diese früher
abschließt:
[1] alle Zellen wurden gesperrt oder [2] am Ende der (Treppen) Programmiersequenz,
in der ein Flag gesetzt wird, das diesen Zustand signalisiert. Eine
Simulations-basierte Fähigkeit
dieses Ansatzes für
eine besondere Ausgestaltung ist im Folgenden ausführlich beschrieben,
welche die ursprüngliche
Schreibgeschwindigkeit ohne die Risiken der Prüfpuls-verringernden Schemata
(d.h. „nicht-intelligent") gemäß des oben erwähnten Standes
der Technik verdoppelt.
-
4 ist
ein Flussdiagramm für
eine beispielhafte Ausgestaltung der vorliegenden Erfindung und
beginnt mit Schritt 201, wo der Anteil des zu programmierenden
Speichers ausgewählt
wird. Dies wird eine oder mehrere der Schreibeinheiten entsprechend
der Speicherstruktur sein, wobei die Schreibeinheit hier als Seite
bezeichnet ist. Sobald die zu beschreibenden Speicherelemente ausgewählt wurden,
durchlaufen diese typischerweise eine Daten-unabhängige pre-write
Angleichungsphase.
-
Die
Phase 210 ist ein Löschprozess,
der optional eine Soft-Programmierung, Vorprogrammierung, Löschen, Soft-Löschen und/oder
anderen Aufbereitungsschritte enthält (wie es für den Typ
der Speichereinheit geeignet ist), um ausgewählte Speicherelemente, die
für ein
Schreiben von Daten bereit sind, zu erhalten. Die hier gezeigte
beispielhafte Ausgestaltung beinhaltet Schritte 211, 213, 215 und 217.
-
Schritt 211 ist
ein Pre-Programmier-Vorgang, der manchmal verwendet wird, wobei
vor einem Löschen
der adressierten Speicherelemente datenunabhängige Programmierung durch
Anheben aller entsprechenden Wort-Leitungen vorgenommen wird, zum
Beispiel um eine Speicherelementbeanspruchung auszugleichen und
einen einheitlicheren Startpunkt zum Löschen zur Verfügung zu
stellen. Schritt 213 ist der Löschvorgang, wie zum Beispiel
diejenigen, die in den oben zitierten aufgenommenen Referenzen enthalten sind,
der für
den Typ Speichereinheit geeignet ist. Ein besonderes Beispiel ist
der in US-Patent
5,095,344 beschriebene Smart Erase Prozess, der für ein Flash-EEPROM
geeignet ist. Schritt 215 ist ein Soft-Programmieren oder ähnliche Operationen,
die dazu entwickelt sind, um die gelöschten Speichereinheiten in
einen einheitlicheren Startbereich für die aktuelle Schreibphase
zu versetzen. Wenn eine der Speichereinheiten die Prüfung während des
Löschens
nicht besteht (oder während Soft-Programmierung,
falls diese eine Prüfung
bietet), können
diese aus dem logischen Adressraum bei Schritt 217 ausgeblendet
und durch eine korrekt arbeitende Speichereinheit ersetzt werden.
Wieder variieren die tatsächlichen
Schritte und deren Ausführung
für Phase 210 und
werden entsprechend des bestimmten Speichers und seiner Erfordernisse
variieren.
-
An
diesem Punkt ist der Speicher für
die Schreibphase bereit. Die Schreibphase 220 verursachet
eine Reihe schrittweiser Veränderungen
an den Pegeln der Parameter, welche die Datenzustände der
Speicherelemente repräsentieren.
Das Ergebnis hiervon wird dann geprüft und wenn die Speicherelemente
deren Zielzustände
bestätigen,
werden diese aus dem Prozess entfernt. Dieser Prozess ist im Wesentlichen
wie der des Standes der Technik, aber unterscheidet sich vom Stand
der Technik in Schritt 221.
-
Im
Anschluss an die Festlegung des anfänglichen Prüfbereiches von Schritt 221 für die beispielhafte
Ausgestaltung eines Ladungsspeicherelements (z.B. EEPROM oder Flash),
beginnt das eigentliche Schreiben in Schritt 223 mit einem
Programmierpuls. Der Puls kann wie aus dem Stand der Technik bekannt
in der Länge,
Spannungspegel oder beidem mit jedem Iterationsschritt der Schleife 220 variieren. Vor
der ersten Prüfung
können
auch anfängliche
Pulse vorhanden sein, wobei die jeweilige Anzahl eine parameter-basierte Implementierung
sein. Schritt 225 tastet den Zustand jedes Elements des
vorhergehenden Puls in Bezug auf die Prüfpegel im Zielbereich von Pegeln
für die
zu prüfenden
Zustände
ab, wobei anfänglich
nur der niedrigste Programmierzustand umfasst wird. Bei jedem Prüfpegel wird
der gemessene Parameter jedes Elements gegenüber seinem zugehörigen Daten-Zielwert
verglichen. Auf diese Art und Weise wird jedes Element derart über dem Bereich
der Prüfzustände, der
für diese
Wiederholung der Schleife 220 aufgestellt wurde, verglichen: Im
Stand der Technik kann dies alle der möglichen Zustände umfassen
oder kann aus einer Teilmenge bestehen, basierend auf der Anzahl
von Schleifenwiederholungen unter Verwendung einer Look-Up Tabelle
oder ähnlichen
Implementierungen, wie im Theorieteil beschrieben wurde. Gemäß einem
Hauptaspekt der vorliegenden Erfindung wird der Satz der Prüfpegel,
der verwendet wird, in Schritt 221 durch die Prüfergebnisse
der vorhergehenden Iteration ermittelt. Der anfängliche Prüfsatz von Zuständen kann nur
als der niedrigste Zustand übernommen
werden oder möglicher weise
sogar keine Prüfungen
beinhalten und kann auf einem einstellbaren Parameter basieren)
(Obwohl in der vorliegenden Erörterung
der Prüfsatz
als eine exakte Teilmenge des gesamten Satzes von Zielwerten interpretiert
wird, können
Fälle auftreten,
in denen die Teilmenge mit dem gesamten Satz übereinstimmt, insbesondere
wenn die Anzahl der Mehrzustände
gering ist.)
-
In
Schritt 227 werden alle Elemente, die die Prüfungsbedingung
in Bezug auf deren Zielzustände durchlaufen,
gesperrt. Schritt 229 ermittelt, ob alle der Elemente,
die programmiert wurden, mit ihren Zieldatenwerten überprüft wurden.
Wenn ja, endet der Ablauf bei Schritt 231. Wenn nein, kehrt
der Ablauf zu Schritt 221 zurück. Generell können einige Elemente
beim Programmieren scheitern, wie in Schritt 229 ermittelt
wurde, was zu einem Schreibfehler führt, wobei in diesem Falle
die fehlerhaften Elemente oder Blöcke ausgeblendet werden können.
-
Schritt 221 ermittelt,
welche Zustände
basierend sowohl auf dem Ergebnis von Schritt 225 in der nächsten Prüfoperation
als auch Schritt 227 in den Wertebereich aufgenommen werden,
so dass die Sperrbedingung für
eine derartige Ermittlung verwendet wird. Dies ist, wie oben beschrieben
wurde, ein Hauptaspekt der vorliegenden Erfindung. Obwohl der Typ
der Look-Up Tabelle der Ausgestaltung, der im Theorieteil mit Bezug
auf 3 beschrieben wurde, könnte auch in dieser Phase ermitteln,
welche Zustände
in der nächsten
Prüfoperation
aufzunehmen sind. In diesem Fall würde die Ermittlung ausschließlich auf
der momentane Wiederholung der Schleife im Schreibprozess 220 basieren,
wobei es hier auf dem Prüfergebnis
von Schritt 225 (und eventuell Schritt 227) basiert.
In Abhängigkeit
vom Ergebnis in Schritt 225, fügt Schritt 221 höhere zu überprüfende Zustände, wie
es erforderlich ist, ein. Ähnlich,
in Verbindung mit Schritt 227, entfernt dies die Überprüfungen niedriger
Zustände
während
die Elemente auf diese niedrigen Zustände programmiert und gesperrt werden
(oder wurden als defekte Zellen ermittelt und wurden ausgeblendet).
Sobald der Prüfsatz
wieder bei Schritt 221 aufgestellt ist, verläuft der
Ablauf wieder zu Schritt 223.
-
5–9 zeigen
Ergebnisse der Simulation des "Smart
Verify" Prozesses
für die
beispielhafte Ausgestaltung, wobei die Speichereinheit eine Speicherzelle
ist, die 8 Zustände
speichert. Eine besondere Ausgestaltung eines nicht-flüchtigen
Speichers, in dem dieses Verfahren implementiert werden kann, ist
in US-Patenten 5,712,180, 6,103,573, 6,426,893 und 6,512,263 beschrieben,
auf die oben Bezug genommen wurde. Weitere Details einer beispielhaften
Ausgestaltung folgen der Erörterung
der Simulation.
-
Der "Smart-Verify" Algorithmus wurde
simuliert, um eine Population von 1500 Zellen mit 8 Zuständen vom
Grundzustand oder gelöschten
(0) Zustand zu Ziel-Programmier-Datenzuständen (1,
2, 3, 4, 5, 6, 7) zu bewegen. Um diese Simulation zu vereinfachen,
werden alle Spannungen in beliebigen Einheiten mit Ziel-Schwellspannungspegeln " Vth" für Zustände 1, 2,
3, 4, 5, 6, 7 angegeben, beziehungsweise auf Werte 2, 3, 4, 5, 6,
7, 8 gesetzt. Die Startverteilung "Vth" für die gesamte
Population wurde auf eine Normverteilung mit einem σ-Wert 0,22
gesetzt, der bei –0,5
zentriert ist, was zu einer anfänglichen " Vth" Spanne von –1 bis +1/2 führt.
Die durchschnittliche Programmiergeschwindigkeit pro Programmierschritt
wurde auf 0,25 gesetzt, woraus resultiert, dass sich Zellen von
einem Zustand in einen anderen Zustand in etwa 4 Schritten bewegen
(und dadurch eine vollständig
gesperrte Verteilung für
jeden Programmierzustand ermöglichen,
der dazu vorgesehen ist, um auf diesen einen Schrittwert eingeschränkt zu sein).
Wie auch immer, um einige geringe Zelle-zu-Zelle Variation wiederzugeben,
war eine Geschwindigkeitsspanne enthalten, die einer Normalverteilung
mit einem σ gleich
0,015 folgt, die im Durchschnittsgeschwindigkeitswert 0,25 zentriert
ist, was auf Geschwindigkeiten im Bereich von 0,2 bis 0,3 ΔVth pro Schritt hinausläuft. Während der gesamten Simulation
blieb der einer Zelle zugewiesene Geschwindigkeitswert unverändert. Es
sollte beachtet werden, dass die Annahme eines konstanten Geschwindigkeitswertes
für eine
vorgegebene Zelle nicht für
alle Speichertechnologien zutrifft, was aber auf jeden Fall für die vorliegende
Erfindung nicht erforderlich ist.
-
Wenn
in der Praxis eine einheitlich ansteigende abgestufte Spannung (zum
Beispiel auf das Steering Gate in der beispielhaften Speicherstruktur angewendet)
für jeden
folgenden Schritt der Programmierwellenform verwendet wird, wird
die durchschnittliche Programmiergeschwindigkeit aller Zellen mehr
oder weniger identisch sein. Diese Geschwindigkeit wird genau mit
dem obigen Treppenprogrammierspannungsschritt übereinstimmen, sobald eine stationärere Zustandsprogrammierbedingung
erreicht wurde, typischerweise innerhalb der ersten 6 Programmierpulse.
Folglich ist die Verwendung einer künstlichen Geschwindigkeitsstreuungsbreite
sehr wahrscheinlich eine ungünstigste
Bedingung als die, die in der Praxis auftreten könnte. Trotz dessen stellt es
für die
Smart Verify Methodik, wie gesehen wird, kein Problem dar.
-
Die
Zuweisung eines Anfangs Vth-Zieldatenzustands
und Geschwindigkeit für
jede der 15000 Zellenpopulation wurde mit Zufallszahlen-basierter Einmischung
mit unabhängiger
Einmischung für
Vth Verteilung, Datenzustand und Geschwindigkeitszuweisungen
durchgeführt.
Die Anzahl der jedem der acht Zustände zugewiesenen Zellen war
ungefähr dieselbe
(durchschnittlich 188 Zellen pro Zustand). Die gesamte Population
der zu pro grammierenden Zellen (d.h. Zustände 1, 2, 3, 4, 5, 6, 7, wobei
0 gesperrt ist) wurden dann durch die Programmprüfsequenz unter Verwendung der "Smart Verify" Sequenz und Kriterien
bewegt. Die Ergebnisse dieser Simulation sind in 3–7 gezeigt.
-
In 5a ist
die Anzahl der Prüfpulse
oder Schritte (303) dargestellt, die auf die Zellenpopulation
nach jedem Programmierschritt mit dem Smart Verify Algorithmus angewendet
wurde. Außerdem sind
das Minimum (Vt_min, 304) und Maximum(Vt_max, 305)
Vths der noch nicht gesperrten Zellenpopulation
gezeigt sowie die niedrigen (Vfy_lo, 301) und hohen (Vfy_hi, 302)
Prüfspannungspegel, die
im Anschluss an jedem Programmierschritt angewendet wurden. Der
Ablauf beginnt mit einer Anzahl von Pulsen, um die Zellen in einen
stationären
Zustand zu bringen bevor die Schwellspannungen beginnen weiterzugehen.
Die ersten wenigen Programmierpulse benötigen nur die niedrigste Zustandsprüfung, während der
die Vth Verteilung zu diesem Prüfpunkt nach
oben programmiert wird. Danach steigt die Anzahl der Prüfungen an,
verläuft
bei etwa dem zweiten bis dritten Prüfpulspegel auf einem Plateau und
fällt nach
unten ab in Richtung der einen Prüfbedingung während die
letzten wenigen Zustände
auf deren zugehörige
Ziele programmiert werden (mit allen geprüften und gesperrten Zuständen ungefähr bei Programmierpuls
37). Überall
in der Sequenz werden die niedrigen und hohen Prüfgrenzen der sequentiellen
Prüfscans
adaptiv angepasst (basierend auf der alle-niedrigsten-Zustandszellen Prüf/Sperrbedingung
beziehungsweise das Vth Peak-Detektions-Kriterium), um intelligent
und zuverlässig
den geeigneten, optimalen Datenzustands Vth Bereich
durch das intelligente Prüflogikkriterium
zu umfassen.
-
Der
Nutzen einer derartigen intelligenten Prüfscan Methodik ist einleuchtend,
wenn die Komplexität
betrachtet wird, was stattfindet. Zum Beispiel, sogar obwohl zwei
Prüfungen
für die
meiste Zeit ausreichend sind, besteht auch der Bedarf, manchmal drei
Prüfungen
und erfordert gelegentlich auch möglicherweise sogar vier Prüfpegel ohne
ein Risiko eines Schreibfehlers. Darüber hinaus ist es unwahrscheinlich,
dass eine eng kontrollierte nicht-adaptive Dead Reckoning Implementierung
präzise
dem optimalen Übergängen von
Vfy_lo und Vfy_hi (d.h. Sliding Verify Window) folgt ohne in Schwierigkeiten
zu geraten. Um folglich eine zuverlässige Schreiboperation zu sichern,
würde der
nicht-adaptive Prüffensterbereich,
der mit Bezug auf 3 beschrieben wurde, müsste wahrscheinlich
zu 4 und möglicherweise
5 Prüfpegeln
pro Programmierpuls Guard-Banded werden, was im Wesentlichen seine
Performancevorteile reduziert. Des Weitern ist die Fähigkeit,
energisch mit den Fähigkeiten
des adaptiven Ansatzes überein
zustimmen, um weniger Prüfungen
in den anfänglichen und
letzen Anteilen der Programmiersequenz zu verwenden (fallen bis
zum einen Prüfpegel)
schwierig, um eine nicht-adaptive Implementierung vorzusehen.
-
Die
Ausgestaltung von 5a umfasst eine Verzögerung von
zwei Programmierschritten, die der schnellsten Programmierzellen-Prüfung am
bestehenden überprüften maximalen
Zustand folgt, bevor der nächste
Zustand zum Prüfsatz
hinzugefügt
wird. Zum Beispiel beginnt beim Programmierschritt 5 die Vt_max
Linie 305 sich zu bewegen und überschreitet die "Spannung" = 1 Linie von Zustand
1 bei Schritt 6. Allerdings wird nur der Zustand 1 für weitere
zwei Schritte überprüft, wobei
der Zustand 2 zum Prüfsatz bei
Schritt 9 hinzugefügt
wird, wie durch die Anzahl der Prüfungen (#Vfy Pulse, 303)
gezeigt, die sich zu 2 an diesem Punkt aufwärts bewegt. Der gesamte Prozess
ist nach Schritt 37 einschließlich
der anfänglichen
5 Programmierschritte beendet.
-
5b ist ähnlich zu 5a,
aber für
die Ausgestaltung ohne die Verzögerung
vor Hinzufügen des
Zustands zum Prüfsatz
und ohne die anfänglichen
5 Programmierschritte. Zum Beispiel wird nachdem die Vt_max Line 305 die "Spannung" = 1 Linie von Zustand
1 bei Schritt 2 überschreitet,
wird der Zustand 2 zum nächsten
Prüfsatz
ohne Verzögerung hinzugefügt. In diesem
Fall sind für
die meisten der Prozesse drei Prüfungen
pro Schritt mit gelegentlichem Bedarf von vier Prüfungen vorhanden.
Dieser Prozess ist nicht so schnell wie der von 5a,
der eine Summe von 100 Prüfungen
anstelle von 83 benötigt
(falls die anfänglichen
vier Pulse von 5a zum Vergleichen vernachlässigt werden).
Die Ausgestaltung von 5b wird weiter mit Bezug auf 4–7 besprochen.
-
6 zeigt
die Häufigkeitsverteilung
für den Bereich
der Anzahl von Prüfpulsen,
der in der Ausgestaltung von 5b verwendet
wird. Während
die Prüf-3
Bedingung überwiegt,
d.h. während
der Hälfte der
Zeit, tritt die Möglichkeit,
auf 2 Zustände
abzufallen etwa in einem Viertel der Zeit auf, während die Notwendigkeit für 4 Prüfungen steigt.
Im Mittel sind ungefähr
2,7 Prüfungen
pro Programmierpuls notwendig, eine Zahl, die unter 2,5 für die Ausgestaltung von 5a sinkt.
In der Annahme, dass die erforderliche Zeit zum Durchführen einer
Programmieroperation (oder Schrittes) mit der für einen Prüfvorgang vergleichbar ist,
dann ist im Beispiel von 5b der Smart
Verify Algorithmus in der Lage, die Gesamtprogrammierzeit auf 46%
der Zeit sicher zu reduzieren, die ein vollständiger 7-Schritt erfordern
würde.
Dadurch verdoppelt sich ungefähr
die ursprüngliche Programmiergeschwindigkeit.
-
7 zeigt
sowohl eine Momentaufnahme der resultierenden simulierten Vth Verteilungen ("Vt") für jeden
der sieben Programmierzustände
im Anschluss an deren Sper rung als auch die gelöschte oder 0-Zustandsverteilung
zu Beginn für
die Ausgestaltung von 5b. Die Verteilungen sind halbwegs gut
auf die erwartete willkürliche
Einheit 0,25 des Vth-Bereichs, wie es vom
Algorithmus vorgeschrieben ist, beschränkt.
-
8 zeigt
eine Momentaufnahme der resultierenden simulierten Vth-Verteilungen
für die
Zellpopulation, die bei Programmierschritten gerade vor Sperren
aller der auf jeden der sieben Programmierzustände gerichteten Zellen noch
nicht gesperrt sind (sowie die Anfangsverteilung, die dem ersten
Programmierpuls folgt). Dies zeigt, wie gut sich der Programmiervorgang
für die
Zellenpopulation während der
Programmiersequenz verhält. 601 stellt
die anfängliche
Verteilung dar. 603 entspricht der Verteilung von Zellen
nach Programmierpuls acht, gerade bevor alle Zellen mit dem Zielzustand
1 gesperrt werden. Dies enthält
sowohl Zellen mit Zuständen,
deren endgültiger
Zustand der Zustand 1 ist, aber noch nicht gesperrt sind, als auch
die, die auf deren Weg zu höheren
Zuständen
gerade durchlaufen. Dies erklärt
die Anzahl von Zellen mit Pegeln gerade über dem für den Zustand 1. Ähnlich korrespondiert 605 mit
Programmierpuls 13 gerade bevor alle Zellen mit Zustand 2 sperren
und so weiter für
die nachfolgenden Zustände.
-
9 zeigt
die Anzahl von noch auf deren entsprechenden Prüf/Sperr Bedingungen zu programmierenden
Zellen als eine Funktion der Anzahl kumulierter Programmierpulse.
Horizontale Linien sind überlagert,
die auf die Anzahl der Zellen hindeutet, die sich im bekannten Bereich
von Datenzuständen
befinden. Linie 701 entspricht der Anzahl von Zellen mit
Daten 1, 2, 3, 4, 5, 6 oder 7, Linie 702 entspricht der
Anzahl von Zellen mit Daten 2, 3, 4, 5, 6 oder 7 und so weiter bis
Linie 707, welche die Anzahl von Zellen mit Datum 7 darstellt.
Nach dem ersten Puls ist die Kurve flach bis die Zellen mit Datum
1 beginnen zu sperren, nachdem diese ziemlich linear abfällt bis
diese abflacht, da die nachzügelnden
Zellen im höchsten
Zustand schließlich
sperren. Wie erwartet sind im Mittel die nachfolgenden 4 Programmierschritte
nötig,
um Programmieren des nächst
höheren
Zustands zu beenden, von dem Punkt aus, an dem das Programmieren
des letzten Zustands gerade beendet war. Wie auch immer ist zu beachten, dass
die Schnittpunkte der Kurve mit diesen horizontalen Linien, obwohl
sich diese nahe daran befinden, nicht identisch mit dem geradlinigen
Verlauf der Linie übereinstimmen,
das durch die Knicke in der ansonsten linearen Kurve gezeigt ist.
Dies ist die Auswirkung der Programmiergeschwindigkeitsvariation
von den schnellsten und langsamsten Programmierzellen im Gegensatz
zum sich statistisch gut verhaltenden Verlauf der üblichen
Population. Dies betont erneut die Wichtigkeit des adaptiven Smart
Verify Ansatzes.
-
Wie
die Simulation demonstriert ist der Smart Verify Ansatz effektiv
und verbessert die Performance des Bauelementes, während ebenso
eine zuverlässige
Programmier/Prüf/Sperr
Operation sicherzustellen. Dies wird durch Bereitstellen von "intelligenten" Mitteln zum Minimieren
der Anzahl von sequentiellen Prüfoperationen
für jeden
Programmier/Prüf/Sperr-Schritt
der Schreibsequenz durchgeführt.
Durch Beobachtung der Bewegung der Population um beide zu detektieren,
die schnellste Programmierzelle durch Daten-unabhängige Prüfung am höchsten Datenzustandspegel,
die im Prüfscanbereich
enthalten ist, als auch die alle-Zellen-Sperr-Bedingung für den niedrigsten
enthaltenden Datenzustand in diesem Scanbereich (dabei die langsamsten Programmierzellen
zu umschließen)
können
die niedrigen und hohen Vth Scan Enden des
Vth Scanfensters mit minimaler Zeitverschwendung
durch zusätzliche
nicht benötigte
Prüfoperationen
zuverlässig aufgestellt
werden.
-
In
der Ausgestaltung von 5b ist die ursprüngliche
Schreibperformance im Vergleich zum Full Seven Step Verify Anzatz
verdoppelt, sogar mit einer weiteren Verbesserung für die Ausgestaltung von 5a,
welche die Verzögerung
vor Einführen des
nächsten
Prüfzustands
in der Programmiersequenz zum Prüfsatz
enthält.
Diese Verbesserungen können
in Speichersystemen realisiert werden, deren Programmierung auf
einem iterativen Prozess von schrittweisem Verschieben der Zustände von
einem Satz von Speicherelementen, die sich parallel in Betrieb befinden,
gefolgt von Prüfen
der Ergebnisse dieser Verschiebung (oder versuchte Verschiebung
falls ein Element defekt ist) durch paralleles Abtasten eines Parameters,
der auf jeden Zustand von jedem Element hinweist, basieren.
-
Eine
beispielhafte Ausgestaltung einer Implementation der Smart Verify
Technik wird unter Bezugnahme auf 10–13 beschrieben.
Diese illustrative Ausgestaltung beschreibt eine schematische Implementierung
der Smart Verify Operation einer 3-Bit-Speicherelement Technik (d.h. 8 Zustände mit
7-Prüf
Sequenzen). Für
diese Ausgestaltung ist das Speicherelement oder die Speicherzelle
von dem Typ, für
die kontrollierte, inkrementell ansteigende Speicherpegel, die zum
kontrollierten Mehrzustand-Schreiben benötigt werden, durch inkrementelles
Ansteigen der Steering Gate Spannung mit jedem aufeinander folgendem
Programmierpuls erzielt werden. Darüber hinaus wird Lesen von Mehrzustand-Speicherzellen
durch sequentielles Scannen dieses Steering Gates durch eine ansteigende
Progression von 7 Steering Gate Spannungspegeln erzielt (entsprechend
den für
Mehrzustands-Daten-Programmierung verwendeten 7 Prüfspannungspegeln).
-
10 illustriert
schematisch eine Ausgestaltung der Programmier-Prüf- und Sperr-Schaltung für ein einzelnes
Speicherelement 1001 (sperrender Abschluss der Programmierung
dieses Elementes für
den Rest dieser Programmiersession) Die Struktur von 10 ist ähnlich zu
der im Stand der Technik gefundenen zur Verwendung mit einer wie
im Theorieteil vorkommenden Ausgestaltung mit Bezug auf 1 sowie 2 und
wird hier als Referenz erörtert,
wenn der Smart Verify Fall erörtert
wird. Obwohl das Speicherelement 1001 in diesem Beispiel
ein Floating Gate Transistor ist, können andere Formen von Speicherelementen
wie in Folgenden erörtert wird
verwendet werden. Im Fall von n derartiger Speicherelemente, die
parallel programmiert werden (wobei n typischerweise von Hunderte
bis Tausende reichen kann), existieren entsprechend n derartiger Programmier-Prüf-Schaltungen,
die alle gleichzeitig arbeiten. Aus diesen aus n Schaltungen hervorgehende
Informationen bilden die Grundlage für die Smart Verify Operation.
-
Bei
detaillierter Betrachtung der Prüf/Sperr-Schaltung
von 10 enthält
die Schaltung sowohl Komponenten, die bei allen n Schaltungen gemeinsam
sind, die durch die doppelt linierte Rahmen (z.B. ZÄHLER 1009,
RESET 1021 und die Referenzspannung Ref) hervorgehoben
sind, als auch Komponenten, die in jeder Schaltung nachgebildet
sind (z.B. KOMPARATOR 1011, ZU SCHREIBENDER DATENZUSTAND
Register 1019 und verschiedene Logikelemente). Während eines
Programmier-Prüfens
ist jedes Speicherelement 1001 mit einem zugehörigen Leseverstärker KOMPARATOR 1011 verbunden,
der den Leitungspegel der Zelle mit einer Referenzquelle Ref. vergleicht.
In dieser Ausgestaltung besteht die Aktion dieses KOMPARATOR 1011 darin,
einen logischen Pegel "1" auszugeben wann
immer die Ausgabe von ABTAST PARAMETER TREIBER 1003 (z.B.
Bereitstellen der Steering Gate Spannungsstärke B, 103 von 2)
mit dem Steering Gate des Speicherelements verbunden ist, kleiner
als der im Speicher gespeicherten Speicherzustandsparameter ist
(z.B. Zelle Vth wie durch 101 in 2 beispielhaft
erläutert).
(In 10 entsprechen die Wellenformen an Knoten A, B,
C beziehungsweise D beiden Ausgaben der Elemente 1001, 1003, 1005 und 1007 und
die als 101, 103, 105 beziehungsweise
in 2 als 107 bezeichneten Elemente) Andernfalls,
wann immer die Ausgabe B von ABTAST PARAMETER TREIBER 1003 größer als
der gespeicherte Speicherzustandsparameter des Elements ist, gibt
der KOMPARATOR einen logischen Pegel "0" aus.
-
Die
Steigerung der Wellenform vom ABTAST PARAMETER TREIBER 1003 wird
durch den ZÄHLER 1009 kontrolliert,
der von 1 bis 7 zählt,
um die sequentiellen 7 Prüfpulse
an Knoten B zu generieren wie durch Wellenform 103 in 2 erläutert. Jede Zelle
kann einen von acht möglichen
Datenzuständen
speichern {0, 1, 2, 3, 4, 5, 6, 7}, wobei der für jede Zelle spezifische in
ein zugehöriges
ZU SCHREIBENDER DATENZUSTAND Register 1019 geladen wird.
Zustand 0 wird durch eine Daten-unabhängige Standard-Operation (z.B. Sektorlöschen) auf
alle zu beschreibenden Zellen, die Phase 210 in 4 entsprechen,
aufgestellt. Wenn das Ziel-Datum für den zugehörigen Zustand 0 verbleiben
soll, wird SPERREN für
dieses Speicherelement sofort gesetzt (Details sind nicht gezeigt)
und es findet keine Programmierung dieses Elementes statt. Datenzustände 1, 2, 3,
4, 5, 6 und 7 bezeichnen die sieben programmierbaren Zustände und
entsprechen den zum ZÄHLER 1009 zugehörigen Prüfpegeln
1, 2, 3, 4, 5, 6 beziehungsweise 7, die während der Programmierprüfung verwendet
werden, um diese Zustände
aufzustellen. Während
die Programmierung fortschreitet, werden die Speicherelementparameter
(z.B. Speicherzelle Vth) sequentiell und
kontrollierbar durch Zustände
1, 2, 3 bewegt, bis diese durch die Prüf/Sperr-Operation beendet wird.
-
Die
Funktion der drei XNOR Gates 101 5a–c (entsprechend dem 3-Bit Äquivalent
der acht Datenzustände),
die in die 4-Input NAND Gate 1017 Daten eingeben, werden
alle zwischen den ZÄHLER 1009 und
das ZU SCHREIBENDER DATENZUSTAND Register 1019 eingeschoben,
ist die Bedingung abzufangen, wenn eine Übereinstimmung zwischen dem Ziel
ZU SCHREIBENDER DATENZUSTAND und dem momentan Pegel, der überprüft wird
(durch den ABTAST PARAMETER TREIBER 1003), auftritt während der
durch den Wert des ZÄHLER 1009 verwaltet wird.
Der vierte Leg des NAND stammt von der Ausgabe des KOMPARATOR 1011,
der durch eine positiv pulsende PRÜFABTAST Schaltung 1005 gesperrt wird,
die einen zeitsynchronisierten Puls der Ausgabe D von KOMPARATOR
vom AND Gate 1007 zur Verfügung stellt, wie durch 107 in 2 beispielhaft erläutert. Die
Ausgabe des 4-input NAND Gate 1017 wird in ein Leg (das
SET LEG genannt) des SPERREN SR Latch 1013 eingespeist
(hier in ein Cross-Coupled NAND Gate basiertes Latch). Zu Beginn
einer Datenprogrammiersession in den adressierten Satz von Speichereinheiten
werden alle SPERREN SR Latches 1013 auf ein logisches "0" gesetzt. Dies wird durch Anwenden eines
RESET Pulses 1021 (in dieser Implementierung zum logischem Pegel "0" abwärts
pulsen, andernfalls beim logischen Pegel "1" verbleiben)
an das andere Leg (RESET LEG genannt) aller dieser SR Latches erreicht,
wobei alle den Speicherelementen zugehörigen SPERREN auf eine logische "0" initialisiert werden. Nach Empfangen
des negativ verlaufenden "0" Puls vom 4-Input
NAND Gate 1417 durch die oben beschriebenen Bedingungen
kippt das zugehörige
SR Latch SPERREN zu einer logischen "1".
Diese Bedingung beendet dann alles weitere Programmieren des zugehörigen Speicherelementes
für die
Dauer dieser Datenprogrammiersession.
-
Als
Beispiel beschreibt das Folgende den Verlauf des Programmieren/Prüfens, was
zu einem Sperren für
eine Speicherzelle führt,
dessen Ziel-Datenzustand Zustand 3 ist, wie in 2 gezeigt.
Anfangs ist die Zelle auf Datenzustand 0 (z.B. gelöscht) gesetzt
und ihr zugehöriges
SPERREN Latch 1013 ist durch das RESET Signal 1021 auf
ein logisches "0" gesetzt. Beginnend
mit einem anfänglichen
Programmierpegelpuls (z.B. Steering oder Controg Gate Spannung),
empfängt
diese eine Reihe von schrittweise ansteigenden Pegeln von Programmierpulsen, wobei
jeder Puls vom Pegel-7 Prüfpulssequenz
gefolgt ist, wie in 1 dargestellt. Für die ersten
wenigen Programmierpulse sind die abgetasteten Ergebnisse dieser
Prüfsequenz
(wie zum Beispiel 107 in 2 gezeigt)
alle 0 (d.h. kein positiver Puls). Mit zusätzlichen Programmierpulsen,
wenn der Zustand der Zelle über
den Prüfpegel
1 vorangetrieben wird (d.h. in Datenzustand 1) ist das abgetastete
Ergebnis während
des Abtast-Prüfpegels
1 ein einzelner „1" Puls. Dies triggert
nicht die Sperrbedingung, da während
dieser Zeit die Prüfbedingung
(d.h. Wert von ZÄHLER 1009 gleich
1) nicht mit dem Ziel-Datenzustand übereinstimmt (d.h. ZU SCHREIBENDER
DATENZUSTAND 1019 gleich 3). Wenn die Übereinstimmung bei Prüfpuls 3
auftritt, ist das abgetastete Ergebnis an diesem Punkt in der Sequenz "0", was Setzen der Bedingung SPERREN verhindert.
-
Weitere
Programmierpulse treiben den Zustand der Zelle über den Prüfpegel 2 hinaus (d.h. Programmieren
in Datenzustand 2), was zu einem abgetasteten Ergebnis von zwei
sequentiellen logischen „1" Pulsen führt, die
auf Abtastpunkte Prüf
1 und Prüf
2 synchronisiert sind. Erneut triggert dies nicht Sperren, da die
erforderliche Übereinstimmungsbedingungen
nicht erfüllt
werden. Dies trifft nur nach der Anwendung von weiteren Programmierpulsen
zu, die den Zellenzustand gerade über den Prüfpegel 3 treiben (d.h. Programmieren
in Datenzustand 3), so dass die SPERREN Bedingung auf den logischen
Pegel „1" gesetzt ist, was
die die Anwendung weiterer Programmierpulse auf diese Zelle beendet. Dies
geschieht wie folgt: Die abgetastete Prüf-Ausgabesequenz enthält nun die
sequentiellen logischen "1" Pulse, die mit den
Prüf 1,
Prüf 2
und Prüf
3 Abtastpunkten synchronisiert ist. Während dieses dritten Prüf-Abtasten
werden die Bedingungen von Prüfzustand
(d.h. ZÄHLER 1009 Wert)
und Zieldatenzustand erfüllt,
was es ermöglicht,
diesen logischen Puls „1" durch die 4-Input
NAND 1017 und in das Set Leg des SR SPERREN Latch 1013 zu übertragen.
-
Es
ist zu beachten, dass im Ereignis eines abweichenden/überhöhten Zellenprogrammierereignisses,
das zu einem Zustandsüberschwingen
führt (z.B.
im obigen Beispiel anstelle schrittweise auf Zustand 3 zu programmieren
diesen plötzlich übersteigt und
auf Zustand 4 springt) wird das obige Sperren noch erfolgen. Dies
liegt daran, dass die erfor derliche KOMPARATOR 1011 Bedingung
von Zelle Vth, die den Prüfpegel überschreitet,
weiterhin während
der Prüfabtastung
3 erfüllt
wird und dadurch die Sperrung triggert. Infolgedessen findet keine
weitere Programmierung statt, was das Ausmaß von Schreibfehlern begrenzt.
Falls Sperren in einer derartigen Situation nicht stattfindet, würde die
Zelle bis zum Ende der Programmiersession weiterhin Programmierpulse empfangen,
was diese potentiell auf Vth Pegel bringt, die
weit über
dem für
den höchsten
Datenzustand 7 erlaubten liegen, was zu einem potentiell schwerwiegenden
Fehlerausmaß führt.
-
Nicht
gezeigt ist hier das Ende-der-Programmiersession-Implementierung.
Dies ist durch Ausgestaltungen implementiert, die das Frühere von
folgendem signalisieren: [1] alle Adressen des Speicherelementes
haben SPERREN empfangen oder [2] eine vorgegebene maximale Programmierzahl wurde
erreicht. Weitere Details des Prüf/Sperr-Verlaufs können in
US-Patent 5,172,338 und in anderen oben zitierten Referenzen gefunden
werden.
-
Das
Ziel des Smart Verify ist es, dynamisch die Anzahl verwendeter Prüfungen an
jedem Punkt im Programmierverlauf zu reduzieren, von der vollständigen 7-Satz
Sequenz bis zur minimal erforderlichen für zuverlässige Schreiboperationen. 11 veranschaulicht
einen derartigen minimalen Satz in einer Peak Prüfpegel Ausgestaltung des Smart
Verify Konzeptes, wobei nur Prüfpulse
3, 4 und 5 ausgegeben werden. Dies wäre beispielsweise die Situation bei
Programmierschritt 15 der in 5b gezeigten Simulation.
Dies bestimmt dynamisch einen zuverlässigen maximalen und minimalen
Prüfpegel
aufzustellen, die für
jeden wesentlichen Punkt im Programmierverlauf benötigt werden
(z.B. 5 beziehungsweise 3 im Falle von 11). Wellenformen 1101, 1103, 1105 und 1107 entsprechen
Signalen 101, 103, 105 und 107 von 2 und 2,
beziehungsweise repräsentieren
erneut die Signale zu den Zellenparametern von Speicherelement 1001 (Knoten
A), die Ausgabe von ABTAST PARAMETER TREIBER 1003 (Knoten
B), die Ausgabe der Prüfabtastung 1005 (Knoten
C) und die Ausgabe von AND Gate 1007 (Knoten D von 10).
-
12 stellt
eine bevorzugte Ausgestaltung zum Implementieren des maximalen oder
Peak Prüfpegel
schematisch dar, wenn n Speicherelemente parallel programmiert werden.
Sie enthält
ein n-Input OR Gate 1211 mit Eingängen 1207, die von
den zugehörigen
D Knoten von jeder der n Prüf/Sperr-Schaltungen,
wie in 10 dargestellt, als Ausgabe
von AND Gate 1007 kommen. Wie oben beschrieben wird jeder
D Knoten vorübergehend
auf den logischen Pegel "1" pulsen (von der
PRÜFABTASTUNG
abgetastet, 1005 10) wann
immer der Zustand des Speicherelements (z.B. Zellen Vth Parameter)
den verwendeten Prüfpegel überschreitet (d.h.
ABTASTPARAMETER, der Wert an Knoten B von 10 und
in 11 als 1103 dargestellt). Das n-Input
OR Gate 1211 wird ebenfalls auf den logischen Pegel "1" pulsen wann immer eine oder mehrere
der adressierten Speicherzellen diese Programmierpegelanforderung
(z.B. Zelle Vth) erfüllt. Diese Pulsbedingung wird
aufgestellt, wenn der durch ZÄHLER 1249 verwaltete
momentane Prüfpegel
dem bestehenden Wert von MAX PRÜFPEGEL "ZÄHLER" REGISTER 1223 entspricht,
wie durch eine exklusive OR Schaltfunktion in den drei XNORs 1251a–c aufgestellt,
und dadurch ermöglicht,
dass der Puls AND Gate 1253 durchläuft. Dieser Puls wird dann
dem funktionalen Block NEUER MAX PRÜFPEGEL "ZÄHLER" 1235 zugeführt, um
den neuen Peak Prüfpegel
zu seinem nächsten
verfügbaren
Wert vorzubringen.
-
Der
Gedanke dieser Implementierung besteht darin, dass sobald ein oder
mehrere Speicherelemente den bestehenden Peak Prüfpegel überschreiten, mit dem diese
gescannt werden (wie im MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 gespeichert)
wird die Prüfsequenz,
die sofort dem nächsten
Programmierpuls folgt, von nun an zu seinem nächsten verfügbaren Prüfpegel scannen. Dieser Vorgang
ist durch den Ablauf der gestrichelten Linie direkt in den LADE
NEUE MAX PRÜF
ZAHL Schaltblock 1231 dargestellt, der sofort den NEUER MAX
PRÜFPEGEL "ZÄHLER" in das MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 lädt. Von
diesem Punkt an, unter der kontrollierten Pulsprogrammieroperation,
wird es eine Anzahl von nachfolgenden Programmierpulsen erfordern,
bevor ein oder mehrere der Speicherelemente ausreichend programmieren, um
erneut diesen neuen Peak Prüfpegel
zu überschreiten.
Bis letzteres Ereignis auftritt wird das n-Input OR Gate 1211 eine
logische "0" aufrechterhalten und
dadurch diesen derzeitigen maximalen Prüfpegel fixieren. Wenn dieses
letztere Ereignis schließlich auftritt
(z.B. nach zusätzlichen
vier bis fünf
Programmierpulsen) wird das n-Input OR Gate 1211 erneut
einen logischen "1" Puls ausgeben und
dadurch den maximalen Prüfpegel
zum nächst
höheren
Pegel erhöhen.
-
Es
ist zu beachten, dass, wenn zu irgendeiner Zeit der maximale Prüfpegel versucht,
das obere Ende des Prüfbereichs
(d.h. MAXIMAL ERLAUBT in Schaltungsblock 1235) zu überschreiten,
ist kein weiteres Erhöhen
zulässig.
Der maximale Prüfpegel bleibt
dann am oberen Ende des Prüfbereichs
(d.h. Prüfpegel
7 in dieser beispielhaften 3-Bit Ausgestaltung) festgehalten.
-
Eine
alternative Implementierung zum momentanen Inkrementierungs-Ansatz
ist in 12 im alternativen Zweig dargestellt,
der direkt unter dem NEUER MAX PRÜFPEGEL "ZÄHLER" Schaltungsblock 1235 hervorgeht
und aus Elementen 1241, 1243, 1245 und 1247 besteht.
Sobald diese Zählung eine
vorgeschriebenen "Verzögerungszahl" (z.B. Verzögerungszahl
3) erreicht hat, wird eine weitere derartige Zählung von Programmierpulsen über funktionale
Blöcke 1245 und 1247 gestoppt
und der NEUER MAX PRÜFPEGEL "ZÄHLER" wird in das MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 von
funktionalem Block 1231 geladen. Der Gedanke dieser alternativen
Implementierung besteht darin, die Verwendung des nächst höheren Prüfpegels
für wenige Programmierpulse
zu verzögern,
da es mehr als diese wenigen Pulse für die Speicherelemente beansprucht
und diesen nächst
höheren
Prüfpegel
zu überschreiten
und dadurch zusätzliche
Zeit einspart und weiter die Schreiboperation beschleunigt. Der
in diesen Blöcken
(1235, 1241, 1243, 1245 und 1247) dargestellt
Prozess kann alternativ durch Software oder Firmware implementiert
sein, obwohl eine Hardwareimplementierung im Speicherelement eher
bevorzugt wird als eine von externen Off-Chip Controls abhängige.
-
Der "Verzögerungszahl" Wert wird vorzugsweise
eher durch einen einstellbaren Parameter implementiert, wie zuvor
erläutert,
als einen fixierten Wert zu haben. In einer Variation könnte der "Verzögerungszahl" Wert durch einen
Kontroller überwacht und
dynamisch auf Bauelementverhalten basierend verändert werden, zum Beispiel
als Antort auf Programmier- oder Lesefehler oder Betriebsbedingungen
wie zum Beispiel Temperatur- oder Änderungen der Spannungsversorgung.
-
Zu
Beginn einer vollständigen
Datenprogrammieroperation wird der Peak Prüfpegel auf den mit dem ersten
Zustand in Zusammenhang stehende eingestellt (d.h. MAX PRÜFPEGEL "ZÄHLER" REGISTER 1233 wird auf 1 gesetzt).
Dies ist zulässig, da
der eingestellte Zustand für
das adressierte Speicherelement vor dieser Programmieroperation
Zustand 0 ist (z.B. mit einer Löschoperation)
und es wird eine Anzahl von Programmierpulsen erfordern, bevor eine
dieser Zellen den mit dem ersten Zustand in Zusammenhang stehenden
Prüfpegel
erreicht.
-
13 stellt
schematisch eine bevorzugte Ausgestaltung zur Implementierung des
minimalen Prüfpegels
dar, wenn n Speicherelemente parallel programmiert werden. Es sind
n Speicherblöcke (1301-1 bis 1301-n)
dargestellt, die parallel arbeiten; ein Block für jedes der n gleichzeitig
adressierten Speicherelemente. Jeder dieser Schaltungsblöcke enthält vorhandene
Schaltungsteile der in 10 beschriebenen zugehörigen n
Prüf/Sperr-Schaltungen. Wie
in 10 sind die Schaltungsblöcke, die mit allen n Schaltungen
gemeinsam sind, durch die doppelt linierten Rahmen hervorgehoben
(z.B. das MIN PRÜFPEGEL "ZÄHLER" REGISTER 1305). Jeder dieser
Schaltungsblöcke 1301-i (i
KLEINERGLEICH < i
KLEINERGLEICH n) enthält
eine vergleichende Schaltung (verglei che ZU SCHREIBENDER DATENZUSTAND 1019 mit
MIN PRÜFPEGEL),
die aus einer exklusiv- oder Schaltungsfunktion besteht, die für die beispielhafte
3-Bit Implementierung aus drei XNOR 1331a–c Gates
bebildet ist, die in ein 3-Input NAND Gate 1333 einspeisen.
-
Der
Zweck dieser Vergleichsschaltung besteht darin, den Zustand alle
Speicherelemente zu ignorieren, deren Ziel-Daten nicht mit dem derzeitig
in Zusammenhang stehenden minimalen Prüfpegel übereinstimmen. Diese führt das
durch Ausgeben eines logischen Pegels "1" am
niedrigeren Eingabe-Leg des 2-Input OR Gate 1339 aus. Dies
wird dann zum n + 1 Input AND Gate 1313 übertragen
und hat dadurch keine Auswirkung auf den Entscheidungsprozess.
-
Im
Falle einer Übereinstimmung
(d.h. Ziel-Daten des Speicherelementes stimmen mit diesem zugehörigen minimalen
Prüfpegel überein) bleibt
das Ausgabeergebnis des 2-Input
OR Gate 1339 mit dem logischen Pegel, der an seinem oberen Eingabe-Leg
eingereicht wird, das vom funktionalen Schaltungsblock SPERREN 1303 eingespeist
wird. Bei einer Übereinstimmung,
falls der zugehörige Ziel-Zustand
des Speicherelements in der Tat erreicht wurde, wie durch das SPERREN 1303 gekennzeichnet
auf eine logische "1" gesetzt, wird das übertragene
Ergebnis des 2-Input OR Gate 1339 eine logische "1". Andernfalls bleibt das übertragene
Ergebnis von diesem OR Gate logisch "0".
Was diese Schaltung ausführt,
besteht darin, dass jedes Speicherelement, dessen Ziel-Daten mit
dem momentanen minimalen Prüfpegel übereinstimmen
und noch nicht gesperrt wurden zu isolieren und dabei eine logische "0" zum n + 1 Input Gate 1313 zu übertragen. Falls
ein derartiges Speicherelement sogar existiert, führt dies
zu einem abgetasteten logischen "0" am Output des n
+ 1 Input AND Gate 1313. Nur wenn alle derartigen Zellen
gesperrt wurden, wird ein logischer "1" Abtastpuls
vom n + 1 Input AND Gate 1313 ausgegeben. Abtasten ist
durch den funktionalen Block PRÜFABTASTUNG 1005 implementiert,
der ebenso in AND Gate 1313 einspeist.
-
Das
Output von diesem n + 1 Input AND Gate 1313 wird in eine
Reihe von zweifunktionalen Schaltungsblöcken eingespeist. Der erste
Schaltungsblock 1313, als NEUER MIN PRÜFPEGEL "ZÄHLER" bezeichnet, wird
nach Empfang eines logischen "1" Pulses den bestehenden
minimalen Prüfpegel
um eins erhöhen.
Der folgende Block 1317 lädt dann diesen neuen minimalen
Wert zur Verwendung in nachfolgenden Programmier/Prüf-Serien in das MIN
PRÜFPEGEL "ZÄHL" REGISTER 2305. Es ist zu beachten,
dass falls zu irgendeinem Zeitpunkt keine Speicherelemente vorhanden
sind, der auf den Datenzustand gerichtet sind, der mit dem momentanen
minimalen Prüfpegel
im Zusammenhang stehlen, die Ausgestaltung aus 13 diesen
minimalen Prüfpegel
gleichermaßen
auf den des nächst
höheren
Datenzustand für
die folgenden Programmier/Prüf-Operationen
erhöhen.
-
Es
ist zu beachten, dass falls zu irgendeinem Zeitpunkt der Prüfpegel versucht,
das obere Ende des Prüfbereichs
(d.h. MAXIMAL ZULÄSSIG)
zu überschreiten,
ist keine derartige Erhöhung
zulässig. Der
minimale Prüfpegel
bleibt dann am oberen Ende des Prüfbereichs fixiert (d.h. Prüfpegel 7
in dieser Ausgestaltung).
-
Die
hier zu Grunde liegende Idee besteht darin, dass bevor alle Speicherelemente,
die darauf gerichtet sind, auf den dem Datenzustand entsprechenden
niedrigsten Prüfpegel
beschrieben zu werden, der momentan verwendet wird, tatsächlich diesen Datenzustand
erreichen (wie durch deren entsprechenden SPERREN Status angezeigt),
muss dieser gleiche niedrigste Prüfpegel in den nachfolgenden Programmier/Prüf-Operationen
weiter verwendet werden. Sobald alle derartigen Zellen tatsächlich derart
programmiert wurden (wie durch alle SPERREN bestätigt, die zum logischen Zustand "1" gekippt sind), besteht von nun an kein
Zweck, weiter an diesem gleichen niedrigen Endprüfpunkt fortzufahren und der
minimale Prüfpegel
für die
folgenden Programmier/Prüf-Operationen
kann am nächst
höheren Pegel
beginnen.
-
Am
Anfang einer vollständigen
Datenprogrammier-Operation wird der minimale Prüfpegel auf den Zustand gesetzt,
der mit dem ersten Zustand verbunden ist, (d.h. MIN PRÜFPEGEL „ZÄHL" REGISTER 1305 wird
auf 1 gesetzt) als Vorbereitung für Zellen, die bis zu diesem
Pegel programmiert werden.
-
Während der
Verwendung der obigen Peak Prüf-
und Minimum Prüf-Ausgestaltung
in Kombination, wird die Anzahl von Prüfpulsen, die jedem Programmierpuls
folgen, dynamisch auf dem Minimum beibehalten, das an jedem Punkt
in der Programmiersequenz erforderlich ist. Typischerweise werden
sich die MAX und MIN Prüfpegel
zu Beginn einer Programmiersession beide am Zustand 1 befinden. Nach
einer Anzahl von Pulsen wird MAX ansteigen, um oberhalb der schnellsten
Programmierzelle zu bleiben. Unabhängig wird zu einem späteren Zeitpunkt
MIN ebenso ansteigen, wenn alle Zellen, die auf den vorherigen minimalen
Zustand gerichtet sind, derart programmiert (und gesperrt) worden
sind. Für diese
8-Zustand Ausgestaltung, in der ein sequentieller Prüfbereich
umfasst wird, ermöglicht
diese kontinuierliche dynamische Neuanpassung von min und max, dass
die erforderliche Anzahl von Prüfungen weniger
als der halbe Wert ist (z.B. durchschnittlich 3 Prüfungen pro
Programmierschritt). Wenn Zellen aufwärts zum höchsten Zustand programmiert
werden, wird der maximale Prüfpegel
zum oberen Ende der Grenze, 7, fixiert und zu einem späteren Zeitpunkt wird
der minimale Prüfpegel
ebenso an dieser Grenze fixiert. Beispiele von derartigem Betriebsverhalten sind
in 5a und 5b der
Offenbarung gezeigt.
-
Obwohl
die Bestimmung des Scan Fensters hauptsächlich in Bezug auf die Zeitersparnis
beschrieben wurde, wenn diese Zustände sequentiell geprüft werden,
könnte
die vorliegende Erfindung in Ausgestaltungen implementiert werden,
in denen die Mehrzustände
parallel geprüft
werden, wie zum Beispiel in US-Patent 6,538,922 beschrieben. Obwohl dies
im parallelen Fall nicht zum gleichen Vorteil führen könnte, was die erhöhte Geschwindigkeit
betrifft, könnte
diese andere Vorteile haben, wie zum Beispiel eine Verringerung
der Leistungsaufnahme.
-
Obwohl
die Erörterung
bislang hauptsächlich für Mehrzustands-Ausgestaltungen
unter Verwendung eines ladungsspeichernden Bauelements wie zum Beispiel
EEPROM oder FLASH Zellen für
das Speicherelement geführt
wurde, könnte
diese ebenso auf andere Mehrzustands-Ausgestaltungen angewendet
werden, einschließlich
magnetische und optische Medien und auch Spannungsspeichermedien wie
zum Beispiel Mehrzustands DRAM. Obwohl die Angaben, wie die Speicherelemente
lesen, schreiben und Daten speichern nicht in den Hauptaspekt der vorliegenden
Erfindung treten, können
die verschiedenen Aspekte der vorliegenden Erfindung auf andere
Speichertypen, umfassend, aber nicht beschränkend 0,1 μm Transistoren, Einzelelektronentransistoren,
organisch/Kohlenstoff-basierte Nano-Transistoren und molekulare
Transistoren angewendet werden. Zum Beispiel NROM und MNOS Zellen
wie beispielsweise die in US-Patent 5,768,192 von Eitan und US-Patent
4,630,086 von Sato et al oder magnetische RAM and FRAM Zellen wie
zum Beispiel die in US-Patent 5,991,193 von Gallagher et al. beziehungsweise
US-Patent 5,892,706 von Shimizu et al. beschriebenen, die alle in
diese Anmeldung durch Bezugnahme ausdrücklich eingebunden werden, könnten verwendet
werden.