-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft im Allgemeinen nicht flüchtige Speicher
und im Besonderen betrifft die vorliegende Erfindung Löschvorgänge in einer
Flashspeichervorrichtung.
-
Hintergrund
der Erfindung
-
Speichervorrichtungen
sind im Allgemeinen als interne Speicherbereiche im Computer vorgesehen. Es
gibt viele unterschiedliche Arten von Speichern. Eine Art Speicher
ist der wahlfreie Zugriffsspeicher (RAM). Das RAM wurde traditionell
als Hauptspeicher in einer Computerumgebung verwendet. Die meisten
RAMs sind flüchtig,
d.h. sie benötigen
eine regelmäßige Aktualisierung
der Stromversorgung, um keine Inhalte zu verlieren. Eine weitere
Art von Speicher stellt der Flash-Speicher dar. Ein Flash-Speicher ist eine
Art von nicht flüchtigem
Speicher. Das bedeutet, daß ein
Flash-Speicher eine
Art von Speicher ist, der sogar Daten speichert, wenn keine regelmäßige Aktualisierung
der Stromversorgung stattfindet. Der Flash-Speicher erfüllt vielseitige
Anwendungen. Viele moderne Computer weisen ihr grundlegendes I/O-System Bios auf einer Flash-Speicherkarte
auf, damit es bei Bedarf leicht aktualisiert werden kann. Ferner
sind bei einigen digitalen Systemen die herkömmlichen Massenspeichervorrichtungen
durch Flashspeichervorrichtungen ersetzt. Insbesondere wurden einige
herkömmliche
Festplatten von Personal-Computern gegen Flash-Speicher ersetzt.
-
Ein
typischer Flash-Speicher umfaßt
einen Speicherbereich, der in Blöcke
aus Speicherzellen (Zellen) unterteilt ist. Jeder Zellenblock ist
in Zeilen und Spalten angeordnet. Jede Zelle umfaßt einen
Floating-Gate-Feldeffekttransistor, der dazu in der Lage ist, eine
Ladung zu halten. Jede Zelle kann wahlfrei durch Laden des Floating-Gates
programmiert werden. Die Ladung kann durch einen Löschvorgang
aus dem Floating-Gate gelöscht
werden. Daher werden die Daten in einer Zelle durch das Vorhandensein
bzw. das Nichtvorhandensein einer Ladung an dem Floating-Gate bestimmt.
-
Der
Zustand der Flash-Speicherzelle wird mit Hilfe eines Referenzzellenstroms
gelesen oder bestätigt. Das
heißt
eine nicht flüchtige
Referenzspeicherzelle wird über
eine Bezugsbitzeile an den Leseverstärkerkreis gekoppelt. Die zu überprüfende Zelle
ist ferner über
eine zweite Bitzeile an den Leseverstärkerkreis gekoppelt. Ein Differentialstrom
zwischen den Bitzeilen wird erkannt und der Programmierstatus der
Zelle bestimmt. Die Bezugszelle kann zum Beispiel für einen
Zwischenstatus programmiert sein, so daß sie ungefähr die Hälfte des Stroms leitet, die
eine vollständig
programmierte Speicherzelle leitet, und daß sie, wenn die zu lesende Zelle
programmiert ist, mehr Strom als die Bezugsspeicherzelle leitet
und daß sie,
wenn die zu lesende Zelle gelöscht
wird, weniger Strom als die Bezugszelle leitet.
-
Zum
Programmieren einer Speicherzelle wird eine hohe positive Spannung,
wie z.B. 12 Volt, auf das Control-Gate der Zelle angewandt. Zudem
wird eine mäßige positive
Spannung, wie z.B. 6 bis 9 Volt, auf die Senke angewandt, während eine
Quellenspannung und eine Substratspannung sich auf der Grundstufe
befinden. Diese Voraussetzungen führen zu einer Injektion von
heißen
Elektronen im Leitungsbereich neben dem Senkenbereich der Speicherzelle.
Diese Elektronen mit hoher Energie durchqueren das dünne Gateoxid
auf die Seite der positiven Spannung, die am Control-Gate vorhanden
ist und sich am Floating-Gate sammelt. Die Elektronen bleiben auf
dem Floating-Gate und erhöhen
die effektive Schwellenspannung der Zelle im Vergleich zu einer
Zelle, die nicht programmiert worden ist.
-
Bei
Flash-Speichern werden die Zellen in Blöcken gelöscht. Dies wird erreicht durch
Legen einer negativen Spannung, wie zum Beispiel –10 bis –17 Volt,
auf Wortzeilen erreicht, die mit den Control-Gates aller Zellen
in einem Zellenblock gekoppelt sind und durch zeitweiliges Koppeln
der Sourceverbindung des Blocks an eine VCC (Stromversorgung), die
zum Beispiel 5 Volt oder höher
ist. Dies geschieht üblicherweise
in einem Puls oder in einer Reihe von Pulsen. Jeder Puls erzeugt
ein Feld, das Elektronen von den Floating-Gates der Speicherelemente
entfernt. Die Geschwindigkeit, mit der die Zelle gelöscht wird,
d.h. die Anzahl von Pulsen, die zum Löschen der Zelle benötigt wird,
hängt von
vielen verschiedenen Voraussetzungen einschließlich der Spannungsstärke der
Pulse, der Pulslänge
und der Temperatur ab. Es ist üblich,
daß in
einem Flash-Speicherblock die einzelnen Speicherzellen mit unterschiedlichen
Geschwindigkeiten gelöscht
werden. In diesem Fall gibt im Normalfall das langsamste Bit des
Blocks die Löschstufe
aller Zellen des Blocks vor. Dies kann dazu führen, daß andere Zellen in dem Block überlöscht werden.
Wenn beispielsweise eine typische Speicherzelle 10 Pulse benötigt, um
gelöscht
zu werden, und die langsamste Speicherzelle in einem löschbaren
Block 30 Löschpulse
zum Löschen
der langsamsten Zellen benötigt,
werden die typischen Zellen 20 zusätzlichen Löschpulsen unterzogen, was potentiell
dazu führen
kann, daß diese überlöscht werden.
-
Eine überlöschte Zelle
ist eine Zelle, die über
einen bestimmten Punkt hinaus gelöscht worden ist. Eine überlöschte Zelle
wird zunehmend abgereicherter. Das bedeutet, daß zu viele Elektronen von dem
Floating-Gate entfernt werden, und führt dazu, daß die Spannung
an einem Floating-Gate positiver wird als die Schwelle der Zelle.
Die Zelle kann aus diesem Grund nicht abgestellt werden, selbst
wenn das Control-Gate sich auf dem Referenzpotential befindet. Ferner
kann eine überlöschte Zelle
dazu führen,
daß alle
Speicherzellen, die an die gleiche Spalte gekoppelt sind, als gelöschte Zellen
gelesen werden, selbst wenn diese programmiert sind.
-
Zur
Verringerung der Anzahl von überlöschten Zellen
in einem Flash-Speicherblock wird im Allgemeinen ein Löschvorgang
umfassend einen Vorprogrammierzyklus, einen Löschzyklus und einen Soft-Programmierzyklus
durchgeführt.
Während
des Vorprogrammierzyklus' werden
alle Zellen eines Blocks zunächst über eine
vorbestimmte Stufe hinaus programmiert. Dies wird durchgeführt, damit
die Floating-Gates
der Zellen in dem Block bei ungefähr demselben Ladungswert starten.
Der Löschzyklus
wendet dann einen Löschpuls
auf den Block an und überprüft dann
jede einzelne Zelle, Zeile um Zeile, um zu bestimmen, ob sich alle
Zellen im Löschzustand
befinden. Der Löschzyklus
wird so lange wiederholt, bis alle Zellen als gelöscht überprüft worden
sind. Der Soft-Programmierzyklus oder, wie er manchmal auch genannt
wird, der Spannungsverteilungs-Zyklus (Vt) prüft dann jede einzelne Spalte
(Bitzeile) im Block auf Spannungsstufen, die anzeigen würden, wenn
eine überlöschte Zelle
an die Bitzeile gekoppelt ist. Wenn eine überlöschte Zelle in einer Bitzeile erkannt
wird, wird systematisch ein Soft-Programm (Soft-Programmierpuls)
auf die Control-Gates
der Zellen angewandt, die mit der Bitzeile gekoppelt sind, bis der
Strom nicht mehr erkannt werden kann.
-
Obwohl
ein Soft-Programmierzyklus zum Wiederherstellen von überlöschten Zellen
verwendet werden kann, ist es dennoch wünschenswert, die Zahl der überlöschten Zellen
zu verringern, bevor der Soft-Programmierzyklus angewandt wird,
weil einige Zellen, die überlöscht worden
sind, nicht mehr wiederhergestellt werden können. Ferner kann die Zellenintegrität der überlöschten und
wiederhergestellten Zellen mit jeder Überlöschung weiter abnehmen.
-
Ein
Verfahren zur Korrektur der Überlöschung in
einem Flash-Speicher wird in Cleveland et al. (US-Patent Nr. 5.642.311)
dargestellt, das Advanced Micro Devices übertragen wurde. Dieses Verfahren
verringert die Überlöschung und
verhindert das Löschen
von Überprüfungsfehlern.
-
Aus
den oben genannten Gründen
und aus den im Folgenden aufgeführten
Gründen,
die für
den Fachmann nach Lesen und Verstehen der vorliegenden Spezifikation
offensichtlich sind, besteht auf diesem technischen Gebiet ein Bedarf
für einen
Flash-Speicher mit
einem verbesserten Prozeß zum
Löschen
eines Flash-Speicherblocks, der nur eine geringe Zahl von Zellen
aufweist, die im Vergleich zu anderen Zellen im Block langsam gelöscht werden.
-
Zusammenfassung
der Erfindung
-
Die
oben genannten Probleme bei nicht flüchtigen Speichervorrichtungen
und andere Probleme werden durch die vorliegende Erfindung angesprochen
und in den unabhängigen
Ansprüchen
1 und 14 gelöst,
wie durch Lesen und Studium der folgenden Spezifikation ersichtlich.
-
Ein
Verfahren zum Betrieb eines Flash-Speichers wird beschrieben, umfassend
das Löschen
eines vorbestimmten Prozentsatzes von Zeilen in einem Speicherblock,
das Analysieren einer Anzahl von Löschpulsen, die verwendet werden,
um den vorgegebenen Prozentsatz zu löschen, und das Berechnen einer
akzeptablen Anzahl zusätzlicher
Löschpulse,
die auf den Speicherblock angewandt werden könnten.
-
Ein
Verfahren zum Betrieb eines Flash-Speichers wird beschrieben, umfassend
das Anwenden wenigstens eines Löschpulses
auf den Block, wobei der Block mehrere Speicherzellen umfaßt, die
in Zeilen angeordnet sind, wobei jede Zeile überprüft wird, um zu bestimmen, ob
die Speicherzellen, die mit jeder Zeile assoziiert sind, nach jedem
Löschpuls
gelöscht
worden sind, und umfassend das Vervollständigen des Löschens des
Speicherblocks, wenn eine vorbestimmte Anzahl von Zeilen in dem
Block als gelöscht überprüft worden
sind, wobei die vorbestimmte Anzahl an Zeilen geringer ist, als
die Gesamtzahl der Zeilen in dem Speicherblock.
-
Ein
Verfahren zum Betrieb eines nicht flüchtigen Speichers umfaßt das Anwenden
von wenigstens einem Löschpuls
auf einen Flash-Speicherzellenblock, wobei der Speicherzellenblock
in Zeilen angeordnet ist, das Überprüfen, ob
jede Zeile in dem Block gelöscht
ist, nachdem der Löschpuls
angewandt wurde, das Errechnen der Anzahl von verwendeten Löschpulsen,
die verwendet werden, um eine vorbestimmte Anzahl von Zeilen, die
in dem Block gelöscht
worden sind, zu überprüfen, und
das Anwenden einer vorbestimmten Anzahl von Löschpulsen auf den Block, in
dem Versuch Zeilen zu löschen,
die als nicht gelöscht überprüft worden sind,
wobei die vorbestimmte Anzahl von Löschpulsen ein Bruchteil der
Anzahl von Löschpulsen
ist, die zum Überprüfen der
vorbestimmten Zahl von Zeilen verwendet worden ist.
-
Ein
Verfahren zum Durchführen
eines Löschvorgangs
auf einem Flash-Speicherblock umfaßt das Vorladen von Flashspeicherzellen,
die in Zeilen in dem Block angeordnet sind, auf ein vorbestimmtes
Niveau, das Anwenden von wenigstens einem Löschpuls der ersten Stufe auf
den Block, das Überprüfen, ob
jede Speicherzelle pro Zeile gelöscht
ist, nachdem jeder Erststufenlöschimpuls
auf den Speicherblock angewandt worden ist, Zählen einer ersten Zahl von
Pulsen, die zum Überprüfen, ob
die Mehrheit an Zeilen in dem Block gelöscht wurde, angewandt wird,
Berechnen einer zweiten Anzahl von Löschpulsen basierend auf einem
Bruchteil der ersten Anzahl von Löschpulsen, wobei die zweite
Anzahl eine Maximalanzahl von zusätzlichen Löschpulsen einer zweiten Stufe
ist, welche auf den Speicherblock angewandt werden können, um
das Löschen
der Speicherzellen in den Zeilen sicherzustellen, die als noch nicht
gelöscht überprüft worden
sind, das Anwenden von wenigstens einem Löschpuls der zweiten Stufe auf
den Block und das Vervollständigen
des Löschens
des Speicherblocks, wenn entweder die zweite Anzahl der Löschpulse
zweiter Stufen auf den Speicherblock angewandt worden ist oder alle
der Zeilen als gelöscht
geprüft
worden sind.
-
Eine
Flashspeichervorrichtung umfaßt
einen Speicherbereich, einen Controller und ein Register. Der Speicherbereich
weist mehrere Blöcke
von Flash-Speicherzellen auf. Die Speicherzellen in jedem Block
sind in Zeilen angeordnet. Der Controller wird zur Steuerung von
Speichervorgängen
auf den Speicherbereich verwendet und das Register ist mit dem Controller
gekoppelt, um den Löschstatus
jeder Zeile von Speicherzellen nachzuverfolgen.
-
Eine
nicht flüchtige
Speichervorrichtung umfaßt
mehrere Speicherbereiche, einen Controller und einen Registerbereich.
Jeder Speicherbereich weist mehrere Blöcke von Flash-Speicherzellen
auf. Ferner sind die Speicherzellen in jedem Block in Zeilen angeordnet.
Der Controller wird zum Steuern der Speichervorgänge in den Speicherbereich
verwendet. Der Controller speichert Daten in dem Registerbereich,
um Zeilen von Speicherzellen in Blöcken, die als gelöscht überprüft worden
sind, nachzuverfolgen.
-
Eine
Flashspeichervorrichtung umfaßt
einen Speicherbereich und einen Steuerkreis. Der Speicherbereich
weist mehrere löschbare
Blöcke
aus Flash-Speicherzellen auf. Die Speicherzellen in jedem Block
sind in Zeilen angeordnet. Der Steuerkreis wird zum Steuern der
Speichervorgänge
im Speicherbereich verwendet. Insbesondere wendet der Steuerkreis
eine erste Anzahl von Löschpulsen
auf einen Block an, wenn er auf einer ersten Stufe gelöscht wird,
und eine zweite Anzahl von Löschpulsen
auf den Block, wenn er auf einer zweiten Stufe gelöscht wird.
Die Zahl der Löschpulse,
die auf der zweiten Stufe angewandt wird, basiert auf der Zahl der
Löschpulse,
die bei der ersten Stufe angewandt wurden, zum Überprüfen, daß eine vorbestimmte Zahl von Zeilen
in dem Block gelöscht
worden ist.
-
Ein
Flash-Speichersystem umfaßt
einen Prozessor, mehrere Speicherbereiche, einen Controller und mehrere
Register. Der Prozessor wird verwendet, um externe Löschbefehle
bereitzustellen. Jeder Speicherbereich weist mehrere löschbare
Blöcke
aus Flash-Speicherzellen auf. Die Speicherzellen in jedem Block
sind in Zeilen angeordnet. Der Controller wird verwendet, um externe
Löschbefehle
von dem Prozessor zu empfangen. Ferner führt der Controller die Löschvorgänge in den
Speicherzellenblöcken
in den mehreren Speicherbereichen durch. Die mehreren Register sind
an den Controller gekoppelt, um die Zeilen von Speicherzellen, die
als gelöscht überprüft worden
sind, nachzuverfolgen. Jedes Register ist mit einem der Speicherbereiche assoziiert.
Zudem weist jedes Register mehrere Registerunterblöcke auf.
Jeder Registerunterblock ist mit einem Speicherzellenblock assoziiert.
Ferner weist jeder Unterblock eine Registerspeicherzelle für jede Zeile
in seinem assoziierten Speicherzellenblock auf.
-
Kurze Beschreibung
der Zeichnungen
-
1 ist
ein Blockdiagramm einer Speichervorrichtung einer Ausführungsform
der vorliegenden Erfindung.
-
2 ist
ein Blockdiagramm eines Speichersystems einer Ausführungsform
der vorliegenden Erfindung.
-
3 ist
ein Blockdiagramm eine Speichervorrichtung einer Ausführungsform
der vorliegenden Erfindung.
-
4 ist
ein Flußdiagramm,
das eine Blocklöschung
aus dem Stand der Technik darstellt.
-
5 ist
ein Flußdiagramm
einer Blocklöschung
einer Ausführungsform
der vorliegenden Erfindung.
-
Detaillierte
Beschreibung der Erfindung
-
In
der folgenden detaillierten Beschreibung der bevorzugten Ausführungsformen
wird Bezug genommen auf die beiliegenden Zeichnungen, die Teil der
Beschreibung sind und die durch die Darstellung von spezifischen
bevorzugten Ausführungsformen
aufgezeigt werden, mit der die Erfindungen ausgeführt werden
können.
Diese Ausführungsformen
werden ausreichend detailliert beschrieben, damit ein Fachmann auf
dem Gebiet die Erfindung durchführen
kann, und es versteht sich, daß andere
Ausführungsformen
verwendet werden können
und logische, mechanische und elektrische Veränderungen vorgenommen werden
können,
ohne den Schutzbereich der vorliegenden Erfindung zu verlassen.
Die folgende detaillierte Beschreibung ist daher nicht als einschränkend zu
verstehen und der Schutzbereich der vorliegenden Erfindung wird
ausschließlich
durch die Ansprüche
bzw. Entsprechungen davon definiert.
-
Bezüglich 1 ist
ein Blockdiagramm einer Ausführungsform
eines Massenspeicher-Flash-Speichers 100 der vorliegenden
Erfindung dargestellt. Das Diagramm wurde vereinfacht und zeigt
nur die Elemente, die zum Verständnis
der vorliegenden Erfindung relevant sind. Der Massenspeicher-Flash-Speicher 100 umfaßt einen
Flash-Speicher 120. Wie dargestellt, weist der Flash-Speicher 120 einen
Bereich 104 nicht flüchtiger
Speicherzellen auf. Der Bereich 104 ist in mehreren adressierbaren
Blocks 106 (a-d) angeordnet. Auch wenn nur vier adressierbare
Blocks 106 (a-d) dargestellt sind, wird ein Fachmann verstehen,
daß ein
Flash-Bereich in mehr oder weniger adressierbare Blöcke oder
Unterblöcke
unterteilt werden kann, und die vorliegende Erfindung ist nicht
auf vier adressierbare Blöcke
pro Flashspeichervorrichtung beschränkt. Die Flashspeichervorrichtung 120 wird
ferner so dargestellt, daß sie
einen X-Decoder- bzw. Blocklöschungs-Steuerkreis
und einen Y-Decoder-Kreis
aufweist. Ein Leseverstärkerkreis 116 ist
zum Lesen und Prüfen
einer adressierten Zelle vorgesehen. Ein Adressierpufferspeicher
bzw. Auffangspeicher 114 wird zum Empfangen von Adressieranfragen
verwendet und an den X-Decoder-Kreis bzw. an die Blocklöschsteuerkreis 112 und
den Y-Decoder-Kreis 118 gekoppelt. Ferner und obwohl in
dieser Ausführungsform
der Massenspeicher-Flash-Speicher 100 mit vier Flash-Speichern 120, 122, 124 und 126 dargestellt
ist, wird der Fachmann verstehen, daß die Zahl der Flash-Speicher
sehr von der gewünschten
Speicherkapazität
abhängt,
und die vorliegende Erfindung ist nicht auf vier Flash-Speicher pro Massenspeicher-Flash-Speicher
beschränkt.
-
Wie
in 1 dargestellt, weist der Massenspeicher-Flash-Speicher 100 einen
Controller 108 auf. Der Controller 108 wird zur
Steuerung der Speichervorgänge
(d.h. Programmier-, Lösch-
und Lesevorgänge)
der Flash-Speicherbereiche auf den Flash-Speichern 120, 122, 124 und 126 verwendet.
In Bezug auf den Flash-Speicher 120 ist der Controller 108 beispielsweise
an den Adressierpufferspeicher bzw. an den Auffangspeicher 114 über die
Adressierzeile 140 gekoppelt, um Adreßanfragen bereitzustellen.
Der Controller 108 ist des Weiteren über eine Datenzeile 142 an
den Leseverstärkerkreis 116 gekoppelt,
um dem Controller die Ergebnisse einer Zelle, die gelesen oder überprüft wird,
bereitzustellen. Der Controller 108 ist ferner an den X- Decoder- bzw. Blocklöschsteuerkreis 112 gekoppelt,
um die Löschvorgänge im Speicherbereich 104 zu steuern.
Obwohl nicht dargestellt, weist jeder Flash-Speicher 122, 124 und 126 die
gleichen Elemente wie der Flash-Speicher 120 auf. Ferner
sind die Elemente der Flash-Speicher 122, 124 und 126 alle
an den Controller 108 gekoppelt, auf die gleiche Weise,
wie der Controller 108 an den Flash-Speicher 120 gekoppelt
ist. Daher steuert der Controller 108 jeden einzelnen Flash-Speicher 120, 122, 124 und 126.
-
In 1 werden
vier Register 130, 132, 134 und 138 dargestellt.
Jedes Register ist mit dem entsprechenden Flash-Speicherbereich
eines Flash-Speichers 120, 122, 124 und 126 assoziiert.
Das Register 130 ist zum Beispiel mit dem Flash-Speicherbereich 104 auf
dem Flash-Speicher 120 assoziiert. In dieser Ausführungsform
ist das Register 130 außerhalb eines matrixenthaltenden
Flash-Speichers angeordnet. Auf die gleiche Weise sind die Register 132, 134 und 138 jeweils
außerhalb
der Flash-Speicher 122, 124 und 126 angeordnet.
Jedes Register 130, 132, 134 und 138 sind
ferner in Registerunterblocks unterteilt. Register 130 umfaßt zum Beispiel
die Registerunterblöcke 130(a), 130(b), 130(c) und 130(d).
Jeder Registerunterblock ist mit einem Zellenblock in einem Flash-Speicherbereich
assoziiert. Zum Beispiel ist der Registerunterblock 130(a) mit Block 106(a) des
Flash-Speicherbereichs 104 assoziiert, Registerunterblock 130(b) ist
mit Block 106(b) des Flash-Speicherbereichs 104 assoziiert,
Registerunterblock 130(c) mit Block 106(c) des
Flash-Speicherbereichs 104 assoziiert,
Registerunterblock 130(d) ist mit Block 106(d) des
Flash-Speicherbereichs 104 assoziiert. Obwohl vier Register
mit vier Registerunterblöcken
beschrieben werden, wird ein Fachmann verstehen, daß die Zahl
der Register und Registerunterblöcke
mit der Zahl der verwendeten Flash-Speicherbereiche und die Zahl der Blöcke in jedem
Flash-Speicherbereich variieren und daß die vorliegende Erfindung
nicht auf vier Register mit vier Registerunterblöcken beschränkt ist.
-
Die
Register 130, 132, 134 und 138 können als
Registerbereich bezeichnet werden. Jeder Registerunterblock umfaßt mehrere
Registerspeicherzellen, bzw. Nachverfolgungsspeicherzellen, um Daten
zu speichern, die anzeigen, ob eine assoziierte Zeile in einem assoziierten
Block des Speichers als gelöscht überprüft worden
ist. Das bedeutet, daß jede
Zeile von Zellen in einem Zellenblock eine assoziierte Registerspeicherzelle
in einem Registerunterblock aufweist, um nachzuverfolgen bzw. zu
kennzeichnen, ob eine Zeile gelöscht worden
ist. Zum Beispiel weist ein Speicherblock mit 128 Zeilen
einen assoziierten Registerunterblock mit 128 Registerspeicherzellen
auf, um den Programmierstatus für
jede Zeile nachzuverfolgen. Bei einer Ausführungsform der vorliegenden
Erfindung sind die Registerspeicherzellen in dem Registerbereich
flüchtige
Speicherzellen, wie zum Beispiel RAM-Speicherzellen, bei einer anderen
Ausführungsform
sind die Registerspeicherzellen in dem Registerbereich nicht flüchtige Speicherzellen,
wie zum Beispiel Flash-Speicherzellen.
-
Wie
oben beschrieben, steuert der Controller 108 die Löschvorgänge jedes
Flash-Speicherbereichs. Bei
einer Ausführungsform überprüft der Controller 108 nach
dem Anwenden eines Löschpulses
auf einen zu löschenden
Block jede Zeile des Blocks. Wenn eine Zeile als gelöscht überprüft worden
ist, markiert der Controller 108 eine assoziierte Registerspeicherzelle
in einem assoziierten Registerunterblock. Neben dem Nachverfolgen,
welche Zeilen als gelöscht überprüft worden
sind, verfolgt der Controller ferner die Zeilenzahl nach, die überprüft worden
ist. Wenn eine vorbestimmte Zahl von Zeilen nach einem Löschpuls
nicht überprüft worden
ist, wird ein weiterer Löschpuls
auf den Block angewandt. Dieser Vorgang wird wiederholt, bis der
Controller 108 feststellt, daß die vorbestimmte Anzahl an
Zeilen gelöscht
worden ist. Zeilen, die als gelöscht überprüft worden
sind, werden in den folgenden Speichervorgängen nicht verwendet. Obwohl
eine Anzahl von Zeilen in jedem Block in dieser Ausführungsform
ungebraucht sein kann, ist die Gefahr der Überlöschung von Zellen geringer,
weil die Zahl von Löschpulsen,
die auf den Block angewandt werden, nicht von den langsamsten Zellen
oder Bits in dem Block der gelöschten
Zellen gesteuert wird. Die vorbestimmte Zeilenzahl ist im Allgemeinen
eine Mehrheit von Zeilen und wird durch die Anfertigung des Speichers
gewählt
und zieht statistische Daten in Bezug auf die Anzahl der Zeilen,
die voraussichtlich langsame Bits in einem durchschnittlichen Flash-Speicherblock
sind, in Erwägung.
Wenn beispielsweise die Gesamtzahl von Zeilen 128 war und
vorauszusehen war, daß drei
Zeilen langsame Bits enthalten könnten,
würde die
vorbestimmte Zeilenzahl dieses Blocks 125 sein.
-
Bei
einer anderen Ausführungsform
versucht der Controller 108 das Löschen der Zellen in den Zeilen, die
nicht überprüft worden
sind. In dieser Ausführungsform verfolgt
der Controller der Löschpulsanzahl
nach, die zum Erhalten der vorbestimmten Menge an Zeilen verwendet
wird, die als gelöschte
Zeilen überprüft worden
sind. Der Controller 108 wendet diese Zahl auf eine Gleichung
an, um die Maximalanzahl von zusätzlichen Pulsen
zu errechnen, die zum Löschversuch
der verbleibenden langsamen Bits verwendet werden können, wodurch
das Risiko des Überlöschens von
Zellen in dem Block minimiert wird. Diese Ausführungsform erwägt die Wahrscheinlichkeit,
daß zusätzliche
Löschpulse
die Mehrheit der Zellen überlöschen würde, während der Versuch
des Löschens
der langsamen Bits unternommen wird.
-
Bei
einer Ausführungsform
wird die Gleichung N2 = (A·N1)
+ B verwendet, um die Maximalanzahl von Löschpulsen zu bestimmen, die
bei dem Versuch des Löschens
der langsamen Bits verwendet wird. Darin ist N2 die Maximalanzahl
von Löschpulsen,
N1 die Anzahl von Löschpulsen,
die verwendet wird, um die vorbestimmte Anzahl von Zeilen in dem
Block zu löschen,
A ein vorbestimmter Bruchteil und B eine Minimalanzahl von Pulsen,
die verwendet wird, um die langsamen Bits zu löschen zu versuchen. A und B
werden im Allgemeinen vom Hersteller nach der Prüfung des Speichers festgelegt.
In Bezug auf die Gleichung bei dieser Ausführungsform nimmt N1 zu, wenn
N2 zunimmt. Aus diesem Grund können,
wenn eine große
Menge an Löschpulsen
gebraucht wird, um die vorbestimmte Anzahl von Zeilen zu erreichen,
die als gelöschte
Zeilen überprüft worden
sind, mehr Pulse angewandt werden, um zu versuchen, die langsamen
Zellen in den nicht überprüften Zeilen
zu löschen,
weil die zusätzlichen
Pulse mit geringerer Wahrscheinlichkeit die bereits gelöschten Zellen in
dem Block überlöschen. Andererseits,
wenn nur einige wenige Pulse benötigt
werden, um die vorbestimmte Anzahl von Zeilen zu erreichen, die
als gelöscht überprüft worden
sind, würde
eine geringere Anzahl von Pulsen angewandt werden können, um
die langsamen Zellen in den nicht überprüften Zeilen zu löschen, weil
jeder Puls mit höherer
Wahrscheinlichkeit die bereits gelöschten Zellen überlöscht. Ein
Löschalgorithmus,
der das oben Beschriebene genauer umfaßt, wird weiter unten näher beschrieben.
-
Bei
dieser Ausführungsform
ignoriert der Controller 108 die nicht überprüften Zeilen während der nachfolgenden
Speichervorgänge
(d.h. Programmier- und Lesevorgänge)
auf den Speicherbereich, wenn, nachdem N2 Pulse angewandt worden
sind, einige der Zeilen immer noch nicht als gelöscht überprüft worden sind. Bei einer Ausführungsform
tut der Controller 108 dies durch Lesen der Speicherzellen
in den assoziierten Registern. Wenn der Controller 108 eine
Speicherzelle liest, die nicht markiert oder programmiert worden
ist, als sie gelöscht
wurde, überspringt
der Controller 108 während
des nachfolgenden Speichervorgangs die Zeile, die mit der Speicherzelle
assoziiert ist. Bei dieser Ausführungsform
werden Speicherzellen, die mit Zeilen assoziiert sind, die nicht
als gelöscht überprüft worden
sind, als nicht überprüfte Zeilen
markiert.
-
In 2 ist
eine weitere Ausführungsform
eines Massenspeicher-Flash-Speichers 200 der vorliegenden
Erfindung dargestellt. Bei dieser Ausführungsform ist jedes Register
intern in einer Matrize enthaltenden und assoziierten Flash-Speicher
enthalten, um die Daten zu speichern, die anzeigen, ob eine assoziierte
Zeile in einem assoziierten Speicherblock in einem Flashspeicherbereich
als gelöscht überprüft worden
ist. Wie in 2 dargestellt, ist Register 130 in
Flash-Speicher 120 angeordnet. Obwohl nicht dargestellt,
weisen die Flash-Speicher 122, 124 und 128 auch
assoziierte Register auf. Der Controller 108 ist an jedes
Register des Massenspeichers 200 gekoppelt, um Daten in
Bezug auf den Löschstatus
einer assoziierten Zeile zu speichern und zu empfangen. 2 zeigt
ferner einen Prozessor 131, der an den Controller 108 zum
Betrieb und zur Prüfung
des Massenspeichers 200 gekoppelt ist.
-
Obwohl
es wünschenswert
sein kann, die vorliegende Erfindung auf einen Massenspeicher-Flash-Speicher
anzuwenden, wie oben beschrieben, weil ein Massenspeicher-Flash-Speicher
eine signifikante Menge an nicht verwendetem Speicherplatz aufweisen
kann, kann die vorliegende Erfindung auch auf ein typisches Flash-Speichersystem
angewandt werden. In 3 wird eine weitere Ausführungsform
der vorliegenden Erfindung dargestellt, die einen typischen Flash-Speicher 300 umfaßt. Der
Flash-Speicher 300 umfaßt einen Speicherbereich 350.
Der Speicherbereich 350, wie dargestellt, umfaßt vier
Banken 302, 304, 306 und 340.
Jede Bank 302, 304, 306 und 340 umfaßt löschbare
Speicherzellenblöcke
(nicht dargestellt). Des Weiteren ist bei einer Ausführungsform
jeder Block ferner in löschbare
Unterblocks unterteilt. Ein 16 MB Speicher kann beispielsweise in
vier löschbare
Blocks zu jeweils 4 MB angeordnet werden, wobei jeder dieser Blöcke 16 Unterblöcke enthält. Obwohl
der Speicherbereich mit nur vier Banken dargestellt ist, wird der
Fachmann verstehen, daß mehr
oder weniger Banken verwendet werden können, und die vorliegende Erfindung
ist nicht auf vier Banken beschränkt.
-
Wie
dargestellt, weist der Flash-Speicher 300 ferner einen
X-Decoder- bzw. Blocklöschsteuerkreis 320 auf,
um die ausgewählten
Zeilen zu adressieren und Block-Löschvorgänge zu steuern.
Ein Y-Decoder 322 ist zum Adressieren ausgewählter Spalten
vorgesehen. Ein Leseverstärkerkreis 324 ist
zum Lesen und Überprüfen von
adressierten Zellen vorgesehen. Der Flash-Speicher 300 weist
ferner einen Steuerkreis 314 für Steuervorgänge, das
heißt
für Lese-,
Programmier- und Löschvorgänge, zu
dem Speicherbereich 350 auf. Der Steuerkreis 314 kann
auch als Controller oder Statusgerät bezeichnet werden. Ein Prozessor 330 ist
für die Prüfung und
den Betrieb an den Steuerkreis 314 gekoppelt. Der Flash-Speicher 300 ist
auch dargestellt und weist einen Adressierpufferspeicher bzw. Auffangspeicher 316 und
einen Adressierzähler 318 auf.
-
In
dieser Ausführungsform
sind die Register 308, 310, 312, 342 an
den Steuerkreis 314 gekoppelt, um die gelöschten Zeilen
aus dem Speicherbereich 350 nachzuverfolgen. Jedes Register
ist mit einer Bank in dem Speicherbereich 350 assoziiert.
Register 308 ist beispielsweise mit Bank 306 assoziiert,
Register 312 ist mit Bank 306 assoziiert, Register 342 ist
mit Bank 340 assoziiert. Obwohl nicht dargestellt, weist
jedes Register einen Registerunterblock auf, der mit dem jeweiligen
Speicherblock assoziiert ist, der mehrere Speicherzellen zum Speichern
von Daten enthält,
die anzeigen, ob eine assoziierte Reihe in einem assoziierten Speicherblock als
gelöscht
geprüft
worden sind. Die Register 308, 310, 312, 342 sind
wie in den vorhergehenden Ausführungsformen
umgesetzt. Zum besseren Verständnis
des langsamen Bitlöschalgorithmus
der vorliegenden Erfindung wird zuerst ein Algorithmus aus dem Stand
der Technik besprochen.
-
In 4 wird
ein Flußdiagramm
eines Blocklöschalgorithmus 400 aus
dem Stand der Technik dargestellt. Wie dargestellt, wird im Stand
der Technik ein Blocklöschalgorithmus 400 durch
Vorprogrammieren der Zellen in dem Block auf ein vorbestimmtes Niveau
(402) gestartet. Die Zeilenadresse und Pulszahl werden
beide auf Null (404, 406) gesetzt. Dann wird ein
Löschpuls
auf den Block (408) angewandt.
-
Jeder
Zelle in einer Zeile wird gelesen (410). Die Zeile wird
dann als gelöscht überprüft (412).
-
Wenn
die Zeile nicht als gelöscht überprüft worden
ist (410), wird die Zahl der Löschpulse erhöht (414). Dann
wird die Pulszahl überprüft, um zu
sehen, ob eine vorbestimmte Maximalanzahl erreicht worden ist (416). Wenn überprüft worden
ist, daß die
Pulszahl eine Maximalanzahl von Pulsen erreicht hat (416),
ist die Löschung
des Blocks fehlgeschlagen. Wenn überprüft wird,
daß die
Pulszahl nicht eine Maximalanzahl an Pulsen erreicht hat (416),
wird ein weiterer Löschpuls
auf den Block (408) angewandt und der Algorithmus wird
fortgesetzt.
-
Wenn
eine Zeile als gelöscht überprüft worden
ist (412), wird die Zeile erhöht (418). Dann wird
die Zeilenzahl überprüft, um zu
sehen, ob es sich um ein Maximum handelt (420). Wenn die
Zeilenanzahl kein Maximum (420) darstellt, wird jede Zelle
der Zeile gelesen (410) und der Algorithmus fortgesetzt.
Wenn die Zeile als Maximum überprüft worden
ist (420), wird jede Spalte des Blocks auf einen Strom
geprüft,
der anzeigt, ob eine überlöschte Zelle
daran gekoppelt ist (422). Dann wird der Block auf überlöschte Zellen
(424) überprüft.
-
Wenn
der Block keine überlöschten Zellen
(424) aufweist, war die Löschung des Blocks erfolgreich. Wenn
der Block überlöschte Zellen
(424) aufweist, wird eine Reparatur des Blocks mit Hilfe
eines Soft-Programms versucht, um die überlöschten Zellen wiederherzustellen
(426). Dann wird das Ergebnis der Reparatur überprüft (428).
Wenn die Reparatur nicht als erfolgreich überprüft wird (428), weist
der Block überlöschte Zellen
auf. Wenn die Reparatur als erfolgreich überprüft worden ist (428),
war das Löschen
des Blocks erfolgreich.
-
In 5 wird
ein Flußdiagramm
eines Löschalgorithmus 500 einer
Ausführungsform
der vorliegenden Erfindung dargestellt. Wie dargestellt, ist dieser
Algorithmus mit einer ersten und einer zweiten Stufe dargestellt.
Die erste Stufe verfolgt die Zahl der Pulse nach, die zum Löschen einer
vorbestimmten Zahl an Zeilen benötigt
wird, wobei Register verwendet werden, um die Zeilen zu markieren,
die als gelöscht überprüft worden sind.
Die zweite Stufe errechnet und wendet eine vorbestimmte Maximalanzahl von
Löschpulsen
auf den Block an, indem die Zeilen, die in der ersten Stufe nicht
als gelöscht überprüft worden
sind, dem Versuch des Löschens
unterzogen werden.
-
Die
erste Stufe beginnt mit der Vorprogrammierung der Zellen in dem
Block auf ein vorbestimmtes Niveau (502). Ein Adreßzähler der
Zeilen in dem Block wird auf minus eins gesetzt (504).
Die Pulszahl wird auf null gesetzt (506), alle Prüfmarkierungen
werden aus einem assoziierten Register gelöscht (508) und eine überprüfte Zeilenzählung auf
Null gesetzt (510). Dann wird ein Löschpuls auf den Block (512)
angewandt. Die Zeile wird dann erhöht (wenn die Zeile ihr Maximum
erreicht hat, beginnt die Zeilenadressierung an einer ersten Zeile)
(514). Dann wird das Register geprüft, um zu bestimmen, ob die
mit Strom adressierte Zeile bereits als gelöscht markiert worden ist (516).
-
Wenn
die Zeile bereits als gelöscht
markiert worden ist (516), wird die Zeile erhöht (514)
und der Algorithmus fortgesetzt. Wenn die Zeile vorher nicht als
gelöscht
markiert worden ist, werden die Zellen in der Zeile überprüft, um zu
bestimmen, ob sie alle gelöscht
worden sind (518). Wenn sie alle gelöscht worden sind, wird eine
Markierung in das Register gesetzt, das mit der Zeile assoziiert
ist, die Zeile wird erhöht
(514) und der Algorithmus fortgesetzt. Wenn die Zeile nicht
als gelöscht überprüft worden
ist, wird die Zahl der Löschpulse
erhöht
(528). Dann wird die Pulszahl überprüft, ob sie eine vorbestimmte
Maximalanzahl erreicht hat (503). Wenn die Pulszahl ein
Maximum erreicht hat, ist die Löschung
des Blocks der vorliegenden Zeile fehlgeschlagen. Wenn die Pulszahl
jedoch nicht ein Maximum erreicht, wird ein Löschpuls auf den Block angewandt
(512) und der Algorithmus fortgesetzt. Wenn die Zeile überprüft wird
und alle Zellen der Zeile gelöscht
worden sind (520), wird die Zeile in einem assoziierten
Register (522) markiert. Die Zeilenzahl der überprüften Zeilen
wird dann erhöht
(524). Die Zeilenzahl von überprüften Zeilen wird dann überprüft, wenn
eine vorbestimmte Anzahl an überprüften Zeilen
(526) erreicht wurde. Wenn die Zeilenzahl von überprüften Zeilen
die vorbestimmte Menge nicht erreicht hat, wird die Zeile erhöht (512)
und der Algorithmus fortgesetzt. Wenn die Zeilenzahl der überprüften Zeilen
die vorbestimmte Menge erreicht hat, startet der Algorithmus die
zweite Stufe.
-
Wie
dargestellt, wird die zweite Stufe durch Anwenden einer vorbestimmten
Gleichung auf die Pulszahl der ersten Stufe gestartet, um die maximale
Löschpulsgrenze,
die auf den Block angewandt werden muß, zu bestimmen, indem der
Versuch unternommen wird, die Zellen in Zeilen zu löschen, die
in der ersten Stufe als nicht gelöscht überprüft worden sind (532).
Die Zeile wird dann erhöht
(wenn die Zeile ihr Maximum erreicht hat beginnt die Zeilenadressierung
an einer ersten Zeile) (536). Dann wird ein assoziiertes
Register überprüft, falls
dieses markiert wurde, daß die
Zeile gelöscht
worden ist (538). Wenn das Register markiert worden ist (538),
wird die Zeile erhöht
(536) und der Algorithmus fortgesetzt. Wenn das Register
nicht markiert wurde (538), wird der Programmierstatus
jeder Zelle in der assoziierten Zeile gelesen (540). Die
Zeile wird dann überprüft, wenn
alle Zellen gelöscht
worden sind (542).
-
Wenn
die Zeile nicht als gelöscht überprüft worden
ist (542), wird die Zahl der Löschpulse erhöht (544). Dann
wird die Pulszahl überprüft, um zu
sehen, ob diese an der Pulsgrenze liegt, die durch die vorbestimmte Gleichung
gesetzt worden ist (552). Wenn die Pulszahl nicht an der
Pulszahlgrenze liegt (552), wird ein Löschpuls auf den Block angewandt
(534) und der Algorithmus fortgesetzt. Wenn die Pulszahl
an der Pulszahlgrenze (552) liegt, sind die nicht überprüften Zeilen
unbrauchbar (554).
-
Wenn
die Zeile als gelöscht überprüft worden
ist (542), wird eine Zeilenüberprüfungsmarkierung in einem assoziierten
Register (546) gesetzt. Die überprüfte Zeilenzahl wird dann erhöht (548).
Die Zeilenzahl wird dann überprüft, um zu
bestimmen, ob alle Zeilen als gelöscht markiert worden sind (550).
Wenn nicht alle Zeilen als gelöscht
markiert worden sind (550), wird die Zeilenadresse erhöht (536)
und der Algorithmus fortgesetzt. Wenn jedoch alle Zeilen als gelöscht überprüft worden
sind (556), werden die Spalten des Blocks überwacht,
um zu bestimmen, ob der Block überlöschte Zellen
(556) aufweist. Dann wird der Block auf überlöschte Zellen
(558) überprüft.
-
Wenn überprüft worden
ist, daß keine überlöschten Zellen
im Block vorhanden sind (558), ist der Block erfolgreich
gelöscht
worden. Wenn jedoch überprüft wird,
daß überlöschte Zellen
im Block vorhanden sind (558), wird ein Soft-Programm auf
den Block angewandt, um die überlöschten Zellen
(560) wiederherzustellen. Der Block wird dann darauf hin überprüft, ob das
Soft-Programm beim Wiederherstellen der überlöschten Zellen (562)
erfolgreich war. Wenn das Soft-Programm erfolgreich war (562),
ist der Block erfolgreich gelöscht worden.
Wenn das Soft-Programm jedoch nicht erfolgreich war (562),
weist der Block Zeilen mit überlöschten Zellen
auf und der Controller bzw. der Steuerkreis ignorieren diese Zeilen
während
der nachfolgenden Vorgänge
auf den Speicherblock.
-
Schlußfolgerung
-
Ein
Verfahren und ein Gerät
für Löschvorgänge auf
einem Flash-Speicherblock werden offenbart. Bei einer Ausführungsform
umfaßt
ein Verfahren das Löschen
eines vorbestimmten Prozentsatzes von Zeilen in einem Speicherblock,
das Analysieren einer Anzahl von Löschpulsen, die verwendet werden,
um den vorgegebenen Prozentsatz zu löschen, und das Berechnen einer
akzeptablen Anzahl zusätzlicher
Löschpulse,
die auf den Speicherblock angewandt werden können, um die verbleibenden
Zeilen zu löschen.
Bei einer weiteren Ausführungsform
umfaßt
eine Flashspeichervorrichtung einen Speicherbereich, einen Controller
und ein Register. Der Speicherbereich weist mehrere Blöcke von
Flash-Speicherzellen auf. Die Speicherzellen in jedem Block sind
in Zeilen angeordnet. Der Controller wird zur Steuerung von Speichervorgängen auf
den Speicherbereich verwendet und das Register ist mit dem Controller
gekoppelt, um den Löschstatus
jeder Zeile von Speicherzellen nachzuverfolgen.
-
Die
vorliegende Erfindung wird ausschließlich von den angefügten Ansprüchen definiert.
-
Übersetzung
des in den Zeichnungsfiguren enthaltenen Textes
-
-
-
-