-
Die
vorliegende Erfindung bezieht sich auf ein Speichersystem und ein
Programmierverfahren für
ein Speichersystem.
-
Eine
steigende Anzahl von Verbraucherprodukten verwenden nichtflüchtige Speicher,
um Daten zu speichern. Beispiele für moderne Verbraucherprodukte
mit nichtflüchtigen
Speichern umfassen MP3-Player, digitale Kameras, Mobiltelefone,
Camcorder, Flashkarten und Solid-State-Disks (SSDs).
-
Mit
zunehmender Vielfalt und Komplexität dieser Verbraucherprodukte
wird von nichtflüchtigen Speichern
erwartet, dass sie einen zunehmenden Datenumfang speichern und dass
auf diese Daten schneller zugegriffen werden kann. Ein Ansatz zur Erhöhung der
Gesamtdatenspeicherkapazität
des nichtflüchtigen
Speichers ist die Verwendung von Mehrpegelzellen (MLC). Im Gegensatz
zu herkömmlichen
Einpegelzellen (SLC) sind die Mehrpegelzellen in der Lage, mehr
als ein Datenbit je Zelle zu speichern.
-
1 ist
ein allgemeines Blockdiagramm eines herkömmlichen Speichersystems. Das
herkömmliche
Speichersystem 100 umfasst einen Hostprozessor 110,
z. B. eine CPU, eine Speichersteuereinheit 120 und einen
Flashspeicher 130.
-
Die
Speichersteuereinheit 120 umfasst einen Pufferspeicher 121.
Der Flashspeicher 130 umfasst ein Zellenfeld 131 und
einen Seitenpuffer 132. Obwohl es in 1 nicht
dargestellt ist, umfasst der Flashspeicher 130 auch einen
Decoder, einen Datenpuffer und eine Steuereinheit.
-
Die
Speichersteuereinheit 120 empfängt Daten und einen korrespondierenden
Schreibbefehl vom Host 110 und steuert den Flashspeicher 130 so, dass
die Daten in das Zellenfeld 131 geschrieben werden. Alternativ
empfängt
die Speichersteuereinheit 120 einen Lesebefehl vom Host 110 und
steuert den Flashspeicher 130 so, dass die durch den Lesebefehl
bezeichneten Daten aus dem Zellenfeld 131 gelesen werden.
-
Der
Pufferspeicher 121 wird innerhalb der Speichersteuereinheit 120 verwendet,
um temporär „Schreibdaten", die in den Flashspeicher 130 zu schreiben
sind, oder „Lesedaten" zu speichern, die vom
Flashspeicher 130 wieder gewonnen werden. Unter der Steuerung
der Speichersteuereinheit 120 überträgt der Pufferspeicher 121 diese
temporär
gespeicherten Lese-/Schreibdaten an den Host 110 oder den
Flashspeicher 130.
-
Das
Zellenfeld 131 des Flashspeichers 130 umfasst
eine Mehrzahl von Speicherzellen, die in einem Feld angeordnet sind.
Die Speicherzellen sind nichtflüchtig
und daher in der Lage, gespeicherte Daten auch ohne angelegte Energie
zu erhalten. Der Seitenpuffer 132 speichert Schreibdaten,
die in eine ausgewählte
Seite im Zellenfeld 131 zu schreiben sind, oder Lesedaten,
die von einer ausgewählten Seite
wieder gewonnen sind.
-
Die
vorhandenen Speicherzellen des Flashspeichers 130 können Einpegelzellen
oder Mehrpegelzellen sein. Zuerst wird ein Beispiel des Flashspeichers 130 unter
der Annahme beschrieben, dass Einpegelzellen verwendet werden.
-
Eine
SLC weist in Abhängigkeit
von Schwellspannungsverteilungen zwei mögliche Datenzustände 1 oder
0 auf. Eine SLC, die einen logischen Wert „1" speichert, ist in einem Gelöscht-Zustand.
Eine SLC, die einen logischen Wert „0" speichert, ist in einem Programmiert-Zustand.
Die Speicherzelle mit dem Gelöscht-Zustand
wird als An-Zelle bezeichnet und die Speicherzelle im Programmiert-Zustand
wird als Aus-Zelle bezeichnet.
-
Der
Flashspeicher 130 führt
einen Programmiervorgang seitenweise durch. Während des Programmiervorgangs überträgt die Speichersteuereinheit 120 Schreibdaten über den
Pufferspeicher 121 seitenweise zum Flashspeicher 130.
-
Der
Seitenpuffer 132 speichert die vom Pufferspeicher 121 empfangenen
Schreibdaten temporär
und programmiert die geladenen Schreibdaten dann in eine ausgewählte Speicherseite.
Nach Abschluss des Programmiervorgangs wird ein Programmierverifizierungsvorgang
ausgeführt,
um zu verifizieren, ob die Daten korrekt programmiert sind.
-
Wenn
ein Programmierfehler auftritt, werden der Programmiervorgang und
der korrespondierende Programmierverifizierungsvorgang nach einer
Erhöhung
der zur Programmierung der ausgewählten Seite verwendeten Spannung
nochmals ausgeführt.
Auf diese Weise kann ein Programmiervorgang für eine vorgegebene Seite von
Schreibdaten erfolgreich abgeschlossen werden. Danach wird ein nächster Stapel
von Schreibdaten empfangen und der Programmiervorgang wird wiederholt.
-
Eine
zweite Beschreibung der Funktion des Flashspeichers 130 wird
nun unter der Annahme vorgenommen, dass Mehrpegelzellen verwendet
werden. 2 zeigt ein Spannungsverteilungsdiagramm,
das einen Programmierprozess eines niederwertigsten Bits (LSB) und
eines höchstwertigsten Bits
(MSB) einer 2-Bit-MLC darstellt. In der nachfolgenden Beschreibung
werden 2-Bit-Mehrpegelzellen verwendet, die Erfindung ist jedoch
nicht auf 2-Bit-Mehrpegelzellen beschränkt. In diesem Kontext sind
die LSB- und MSB-Bestimmungen klar. Anders ausgedrückt kann
jedoch über
den MSB- und LSB-Zusammenhang hinaus, der in einer 2-Bit-Mehrpegelzelle
auftritt, eine beliebige Anordnung eines „ersten Bits" bzw. erster Bitdaten
und eines „zweiten Bits" bzw. zweiter Bitdaten
verwendet werden.
-
Bezugnehmend
auf 2 wird eine MLC programmiert, um einen von vier
Zuständen
11, 01, 10 und 00 gemäß ihrer
Schwellwertspannungsverteilung einzunehmen. Das LSB wird in einem
Prozess programmiert, der dem der SLC ähnlich ist. Eine Speicherzelle
mit einem Zustand 11 wird programmiert, um gemäß des LSBs ihrer Daten einen
Zustand A einzunehmen, der durch eine gestrichelte Linie dargestellt
wird.
-
Danach überträgt die Speichersteuereinheit 120 eine
Seite von Schreibdaten vom Pufferspeicher 121 zum Flashspeicher 130,
um das MSB zu programmieren. Bezugnehmend auf 2 wird
eine MLC mit dem Zustand A programmiert, um einen Zustand 00 oder
einen Zustand 10 gemäß des MSBs
ihrer Daten einzunehmen. Andererseits wird eine Speicherzelle, die
einen Zustand 11 aufweist, entweder programmiert um den Zustand
11 zu halten oder den Zustand 01 gemäß des MSBs ihrer Daten einzunehmen.
-
Daher
wird der Programmiervorgang einer MLC in zwei getrennten Stufen
ausgeführt.
Das bedeutet, dass in der MLC zuerst das LSB und dann das MSB programmiert
werden.
-
Während der
Programmierung des MSBs kann jedoch unabhängig vom vorher ausgeführten Programmiervorgang
des LSBs ein Programmierfehler auftreten. Glücklicherweise können beschädigte MSB-Daten
repariert werden, da „aktuelle" MSB-Daten im Pufferspeicher 121 erhalten
werden, bis ein korrespondierender Programmierverifizierungsvorgang
abgeschlossen ist.
-
Unglücklicherweise
hat die Erfahrung gezeigt, dass MSB-Programmierfehler häufig die vorher programmierten
LSB-Daten verändern.
Beschädigte LSB-Daten
können
jedoch nicht so einfach wie beschädigte MSB-Daten repariert werden,
da die in einer früheren
Stufe programmierten LSB-Daten nicht mehr im Pufferspeicher 121 gespeichert
sind. Daher sind herkömmliche
Flashspeichersysteme, die Mehrpegelzellen aufweisen, für den Verlust
von LSB-Daten anfällig.
-
Der
Erfindung liegt das technische Problem zugrunde, ein Speichersystem
und ein Programmierverfahren für
ein Speichersystem bereitzustellen, welche in der Lage sind, den
Verlust von LSB-Daten während
eines Mehrfachbitdatenprogrammiervorgangs zu verhindern.
-
Die
Erfindung löst
dieses Problem durch Bereitstellung eines Speichersystems mit den
Merkmalen des Patentanspruchs 1 oder 8 und eines Programmierverfahrens
für ein
Speichersystem mit den Merkmalen des Patentanspruchs 13 oder 16.
-
Vorteilhafte
Weiterbildungen der Erfindung sind in den Unteransprüchen angegeben,
deren Wortlaut hiermit durch Bezugnahme in die Beschrei bung aufgenommen
wird, um unnötige
Textwiederholungen zu vermeiden.
-
Ausführungsformen
der Erfindung stellen ein Speichersystem zur Verfügung, das
in der Lage ist, den Verlust von LSB-Daten während eines Mehrfachbitdatenprogrammiervorgangs
zu verhindern.
-
Zudem
stellen Ausführungsformen
der Erfindung ein Programmierverfahren für ein Speichersystem mit Mehrpegelzellen
zur Verfügung,
das den Verlust von LSB-Daten verhindert.
-
Vorteilhafte,
nachfolgend im Detail beschriebene Ausführungsformen der Erfindung
sowie die zu deren besserem Verständnis oben erläuterten,
herkömmlichen
Ausführungsbeispiele
sind in den Zeichnungen dargestellt. Es zeigt/zeigen:
-
1 ein
Blockdiagramm eines herkömmlichen
Speichersystems,
-
2 ein
Diagramm zur Darstellung eines Prozesses zur Programmierung von
Mehrfachbitdaten in eine Speicherzelle,
-
3 ein
Blockdiagramm eines Speichersystems gemäß einer ersten erfindungsgemäßen Ausführungsform,
-
4 ein
Blockdiagramm eines Speichersystems gemäß einer zweiten erfindungsgemäßen Ausführungsform,
-
5 ein
Blockdiagramm eines Speichersystems gemäß einer dritten erfindungsgemäßen Ausführungsform,
-
6 ein
Diagramm zur Darstellung eines Mehrfachbitprogrammiervorgangs im
Speichersystem gemäß 5,
-
7 ein
beispielhaftes Diagramm zur Darstellung eines Fehlerpositionsdetektierungsvorgangs und
eines LSB-Reparaturvorgangs
des Speichersystems gemäß 5,
-
8 ein
Blockdiagramm eines Speichersystems gemäß einer vierten erfindungsgemäßen Ausführungsform,
-
9 ein
Blockdiagramm eines Speichersystems gemäß einer fünften erfindungsgemäßen Ausführungsform,
-
10 ein
Blockdiagramm eines Speichersystems gemäß einer sechsten erfindungsgemäßen Ausführungsform
und
-
11 ein
beispielhaftes Blockdiagramm eines Seitenpuffers, der in 10 dargestellt
ist.
-
Für die gesamte
Beschreibung gilt, dass die Begriffe „schreiben" und „programmieren" im Wesentlichen
die gleiche Bedeutung haben.
-
3 ist
ein Blockdiagramm eines Speichersystems gemäß einer erfindungsgemäßen Ausführungsform.
-
Bezugnehmend
auf 3 umfasst das Speichersystem 200 einen
Host 210 oder verschiedene Hostkomponenten wie eine CPU,
eine Speichersteuereinheit 220 und einen Flashspeicher 230.
Der Flashspeicher 230 umfasst Mehrpegelzellen, die dazu
ausgebildet sind, Mehrfachbitdaten bzw. Daten mehrerer Bits zu speichern.
Im dargestellten Ausführungsbeispiel
wird angenommen, dass das Speichersystem 200 ein niederwertigstes
Datenbit (LSB) gefolgt von einem höchstwertigsten Datenbit (MSB) programmiert.
-
Neben
der einfachen Darstellung in 3 können die
Speichersteuereinheit 220 und der Flashspeicher 230 verschieden
implementiert werden. Diese Komponenten können beispielsweise gemeinsam
auf einer Speicherkarte zur Verfügung
gestellt werden, wie z. B. als Multi-Media-Karte (MMC), SD-Karte, XD-Karte, CF-Karte
und SIM-Karte. Zur Implementierung auf einer Speicherkarte können die Speichersteuereinheit 220 und
der Flashspeicher 230 unter Verwendung von herkömmlicher
Schnittstellen-Hardware und herkömmlichen
Schnittstellenprotokollen mit dem Host 210, z. B. einer
digitalen Kamera, einem tragbaren Telefon, einem MP3-Player oder
einem PMP, verbunden werden.
-
Physikalisch
empfängt
die Speichersteuereinheit 220 einen oder mehrere Befehle
vom Host 210 und steuert in Reaktion darauf die Gesamtfunktion
des Flashspeichers 230 einschließlich von Schreib- und Lesevorgängen. Die
Speichersteuereinheit 220 umfasst einen Pufferspeicher 221 und
einen LSB-Backupspeicher 222.
-
Der
Pufferspeicher 221 wird verwendet, um temporär „Schreibdaten", die in den Flashspeicher 230 zu
schreiben sind, und „Lesedaten" zu speichern, die
vom Flashspeicher 230 wieder gewonnen werden. Durch Steuerung
der Speichersteuereinheit 220 werden die im Pufferspeicher 221 gespeicherten Lese-/Schreibdaten
an den Flashspeicher 230 oder den Host 210 übertragen.
Der Pufferspeicher 221 kann unter Verwendung eines Speichers
mit direktem Zugriff (RAM), wie einem statischen RAM (SRAM) und
einem dynamischen RAM (DRAM), implementiert werden.
-
Der
LSB-Backupspeicher 222 in der Speichersteuereinheit 220 wird
in Verbindung mit der Programmierung von Mehrfachbitschreibdaten
in den Flashspeicher 230 verwendet.
-
Es
wird in diesem Beispiel angenommen, dass die Mehrpegeldaten dadurch
in den Flashspeicher 230 programmiert werden, dass zuerst
das LSB und danach das MSB programmiert werden. Wie oben ausgeführt, kann
die Art und Weise der Programmierung der Mehrpegeldaten dazu führen, dass das
zuvor programmierte LSB während
der Programmierung des MSBs in den Flashspeicher 230 beschädigt wird,
d. h. seine Schwellspannung wechselt. Das bedeutet, dass, wenn ein
MSB-Programmierfehler auftritt,
das vorher programmierte LSB verloren gehen kann. Um dieses Problem
zu verhindern, wird der LSB-Backupspeicher 222 verwendet,
um die in den Flashspeicher 230 geschriebenen LSB-Daten unmittelbar
vor der Programmierung des MSBs zu sichern.
-
Wie
der Pufferspeicher 221 kann der LSB-Backupspeicher 222 unter
Verwendung eines RAMs implementiert werden. Obwohl der Pufferspeicher 221 und
der LSB-Backupspeicher 222 als getrennt implementiert dargestellt
sind, können
sie gemeinsam in einem einzigen Speicher zur Verfügung gestellt
werden. Das bedeutet, dass ein einzelner RAM, der z. B. in seinen
Zugriffs- und Speicherfunktionen partitioniert ist, verwendet werden
kann, um einen Pufferbereich zur temporären Speicherung von Lese-/Schreibdaten
sowie zur Sicherung von aktuellen LSB-Daten zu implementieren.
-
Der
Flashspeicher 230 umfasst ein Zellenfeld 231,
einen Decoder 232, einen Seitenpuffer 233, einen
Bitleitungsauswahlschaltkreis 234, einen Datenpuffer 235 und
eine Steuereinheit 236. Im Beispiel gemäß 3 wird ein
NAND-Flashspeicher angenommen.
-
Das
Zellenfeld 231 umfasst eine Mehrzahl von nicht dargestellten
Speicherblöcken.
Jeder dieser Speicherblöcke
umfasst eine Mehrzahl von Seiten, z. B. 32 Seiten und 64 Seiten,
und jede dieser Seiten umfasst eine Mehrzahl von Speicherzellen,
z. B. 512 Bytes oder 2k-Bytes, die sich eine Wortleitung WL teilen.
Im Fall eines NAND-Flashspeichers wird ein Löschvorgang blockweise ausgeführt und
Lese-/Schreibvorgänge werden
seitenweise ausgeführt.
-
Für jede im
Ausführungsbeispiel
dargestellte Speicherzelle wird das Speichern von Mehrfachbitdaten,
z. B. von 2 Bits, angenommen. Daher kann jede Speicherzelle in Übereinstimmung
mit definierten Schwellspannungsverteilungen mit einem von vier
möglichen
Zuständen
programmiert werden. Bezugnehmend auf 2 kann jede
Speicherzelle nach Abschluss eines Programmiervorgangs einen der
Zustände
11, 01, 10 und 00 aufweisen. In diesem Fall weisen das LSB und das
MSB entsprechend die Werte (1, 1, 0, 0) bzw. (1, 0, 1, 0) auf.
-
Der
Decoder 232 ist über
Wortleitungen WL0 bis WLn mit dem Zellenfeld 231 verbunden
und wird durch die Steuereinheit 236 gesteuert. Der Decoder 232 empfängt eine
Adresse ADDR von der Speichersteuereinheit 220 und erzeugt
ein Auswahlsignal Yi, um eine Wortleitung, z. B. WL0, oder eine
Bitleitung BL auszuwählen.
Der Seitenpuffer 233 ist über die Bitleitungen BL0 bis
BLm mit dem Zellenfeld 231 verbunden.
-
Während eines
Schreibvorgangs speichert der Seitenpuffer 233 Schreibdaten,
die vom Pufferspeicher 221 geladen werden. Eine Seite mit Schreibdaten
wird während
jedem Schreibvorgang in den Seitenpuffer 233 geladen. Die
geladenen Schreibdaten werden während
eines Programmiervorgangs kollektiv in eine ausgewählte Seite
programmiert, z. B. im darstellten Beispiel in die Seite 0.
-
Während eines
Lesevorgangs empfängt
der Seitenpuffer 233 Lesedaten von einer ausgewählten Seite
und speichert diese temporär.
In Reaktion auf ein nicht dargestelltes Lesefreigabesignal nRE werden
die im Seitenpuffer 233 gespeicherten Lesedaten zum Pufferspeicher 221 oder
zum LSB-Backupspeicher 222 übertragen.
-
Der
Bitleitungsauswahlschaltkreis 234 wird verwendet, um in
Reaktion auf das Auswahlsignal Yi eine Bitleitung auszuwählen. Der
Datenpuffer 235 ist ein I/O-Puffer, der verwendet wird,
um Daten zwischen der Speichersteuereinheit 220 und dem
Flashspeicher 230 zu übertragen.
Die Steuereinheit 236 empfängt ein Steuersignal bzw. Steuersignale
von der Speichersteuereinheit 220 und steuert in Reaktion
darauf die interne Funktion des Flashspeichers 230.
-
Bei
Ausführungsformen
der Erfindung, wie bei der in 3 dargestellten
Ausführungsform,
umfasst das Speichersystem einen LSB-Backupspeicher innerhalb der Speichersteuereinheit.
Daher speichern Ausführungsbeispiele
der Erfindung LSB-Daten bevorzugt im LSB-Backupspeicher 222 bevor die
MSB-Daten programmiert werden, die mit den gespeicherten LSB-Daten
korrespondieren. Anschließend
werden die MSB-Daten programmiert. Wenn das MSB erfolgreich, d.
h. fehlerfrei, im Zellenfeld 231 programmiert ist, können die
im LSB-Backupspeicher 222 gespeicherten LSB-Daten gelöscht werden.
-
Andererseits
wird, wenn das MSB nicht erfolgreich in das Zellenfeld 231 programmiert
ist und das vorher im Zellenfeld 231 gespeicherte LSB während des
Prozesses beschädigt
worden ist, der Speicherblock, der die mit dem Programmierfehler assoziierte
Speicherzelle umfasst, nachfolgend als schlechter Block behandelt.
Danach werden die im LSB-Backupspeicher 222 gespeicherten
LSB-Daten in einen anderen Speicherblock programmiert und dann wird
das korrespondierende im Pufferspeicher 221 gespeicherte
MSB programmiert. Demgemäß wird der
potentielle Verlust der LSB-Daten während des Mehrpegeldatenprogrammiervorgangs
verhindert.
-
4 ist
ein Blockdiagramm eines Speichersystems gemäß einer anderen erfindungsgemäßen Ausführungsform.
-
Bezugnehmend
auf 4 umfasst ein Speichersystem 300 einen
Host 310, eine Speichersteuereinheit 320, einen
ersten Flashspeicher 330 und einen zweiten Flashspeicher 340.
Wie der Flashspeicher 230 aus 3 können der
erste Flashspeicher 330 und der zweite Flashspeicher 340 Mehrfachbitdaten
in einer Speicherzelle speichern. Zusätzlich können die Speichersteuereinheit 320,
der erste Flashspeicher 330 und der zweite Flashspeicher 340 in
eine Speicherkarte integriert werden.
-
Die
Speichersteuereinheit 320 empfängt einen oder mehrere Befehl(e)
vom Host 310 und steuert die Gesamtfunktion des ersten
Flashspeichers 330 und des zweiten Flashspeichers 340 gemäß dem empfangenen
Befehl bzw. den empfangenen Befehlen. Die Speichersteuereinheit 320 erzeugt
ein erstes Chipauswahlsignal CS1 und ein zweites Chipauswahlsignal
CS2. Das erste Chipauswahlsignal CS1 wird verwendet, um den ersten
Flashspeicher 330 auszuwählen, und das zweite Chipauswahlsignal CS2
wird verwendet, um den zweiten Flashspeicher 340 auszuwählen.
-
Die
Speichersteuereinheit 320 umfasst einen ersten Pufferspeicher 321,
einen zweiten Pufferspeicher 323, einen ersten LSB-Backupspeicher 322 und einen
zweiten LSB-Backupspeicher 324. Der erste Pufferspeicher 321 und
der erste LSB-Backupspeicher 322 werden für Schreib-/Lesevorgänge verwendet,
die zu dem ersten Flashspeicher 330 gehören. Analog werden der zweite
Pufferspeicher 323 und der zweite LSB-Backupspeicher 324 für Schreib-/Lesevorgänge verwendet,
die zu dem zweiten Flashspeicher 340 gehören sind.
-
Der
erste Flashspeicher 330 und der zweite Flashspeicher 340 werden
von dem ersten Chipauswahlsignal CS1 bzw. dem zweiten Chipauswahlsignal
CS2 ausgewählt.
Der erste Flashspeicher 330 umfasst ein Zellenfeld 331 und
einen Seitenpuffer 332. Analog umfasst der zweite Flashspeicher 340 ein
Zellenfeld 341 und einen Seitenpuffer 342. Die
internen Strukturen und Funktionen des ersten und zweiten Flashspeichers 330 und 340 sind
die gleichen, wie die, die im Zusammenhang mit 3 beschriebenen
sind.
-
Nun
wird eine Beschreibung eines Schreibvorgangs vorgenommen, der auf
die Programmierung von Mehrfachbitdaten in die Zellenfelder 331 und 341 des
ersten und zweiten Flashspeichers 330 gerichtet ist. Die
nachfolgende Beschreibung setzt für Darstellungszwecke voraus,
dass ein Programmiervorgang, der den zweiten Flashspeicher 340 betrifft,
nach einem Programmiervorgang durchgeführt wird, der den ersten Flashspeicher 330 betrifft.
-
Zuerst
wird der erste Flashspeicher 330 durch das erste Chipauswahlsignal
CS1 freigegeben. Die LSB-Daten werden in die ausgewählte Seite,
die nachfolgend als Seite 2 bezeichnet wird, des ersten Flashspeichers 330 geschrieben.
Bevor die MSB-Daten in den ersten Flashspeicher 330 geschrieben werden,
liest die Speichersteuereinheit 320 die LSB-Daten von Seite
2 und speichert diese im ersten LSB-Backupspeicher 322. Danach
programmiert die Speichersteuereinheit 320 die MSB-Daten
unter Verwendung des Seitenpuffers 332 in Seite 2 des ersten Pufferspeichers 321.
-
Danach
verifiziert die Speichersteuereinheit 320, dass die MSB-Daten
erfolgreich in Seite 2 programmiert sind. Wenn ein Programmierfehler
auftritt, d. h., wenn die MSB-Daten nicht erfolgreich programmiert
wurden, werden der MSB-Programmiervorgang und der korrespondierende
Programmierverifizierungsvorgang bedarfsweise unter Verwendung einer zunehmenden
Programmierspannung wiederholt. Wenn die für die Seite 2 bestimmten Daten
erfolgreich programmiert und verifiziert sind, löscht die Speichersteuereinheit 320 die
im ersten LSB-Backupspeicher 322 gespeicherten LSB-Daten.
-
Andererseits
identifiziert, wenn wiederholte Versuche zur Programmierung der
Schreibdaten fehlgeschlagen sind, die Speichersteuereinheit 320 den
aktuellen Speicherblock, der eine dem Programmierfehler entsprechende
Speicherzelle aufweist, als einen schlechten Block. Danach programmiert
die Speichersteuereinheit 320 die im ersten LSB-Backupspeicher 322 gespeicherten
LSB-Daten in eine andere ausgewählte
Seite, die nachfolgend als Seite 3 bezeichnet wird, in einem anderen
Speicherblock. Danach programmiert die Speichersteuereinheit 320 das
im ersten Pufferspeicher 321 gespeicherte MSB in Seite
3.
-
Wenn
das zweite Chipauswahlsignal CS2 erzeugt ist, ist der zweite Flashspeicher 340 freigegeben.
Hierbei werden Mehrfachbitdaten in den zweiten Flashspeicher 340 programmiert.
Der Programmiervorgang des zweiten Flashspeichers 340 entspricht dem
des ersten Flashspeichers 330.
-
Der
zweite Pufferspeicher 323 und der zweite LSB-Backupspeicher 324 werden
zur Programmierung von Mehrfachbitdaten in den zweiten Flashspeicher 340 verwendet.
Der zweite Pufferspeicher 323 führt in diesem Zusammenhang
die gleiche Funktion wie der erste Pufferspeicher 321 aus
und der zweite LSB-Backupspeicher 324 führt die gleiche Funktion wie
der erste LSB-Backupspeicher 322 aus.
-
Neben
der konzeptuellen Darstellung in 4 können der
erste Pufferspeicher 321, der zweite Pufferspeicher 323,
der erste LSB-Backupspeicher 322 und
der zweite LSB-Backupspeicher 324 unter Verwendung eines
gemeinsamen Speichers oder Speichersubsystems implementiert werden.
Die vorgenannten Speicher 321 bis 324 können beispielsweise
unter Verwendung eines einzigen RAMs implementiert werden, der partitioniert
und derart gesteuert ist, dass er vier getrennte Speicherbereiche
implementiert.
-
Da
das LSB immer vor dem MSB-Programmiervorgang gelesen und gesichert
werden muss, erfordern die Speichersysteme 200 und 300 gemäß 3 bzw. 4 eine
signifikant lange Programmierzeit, um die Mehrfachbitdaten zu programmieren.
Für bestimmte
Applikationen kann diese ausgedehnte Programmierperiode die Gesamtleistungsfähigkeit
des Speichersystems verschlechtern.
-
Zusätzlich sollten
die Speichersteuereinheiten 220 und 320 der Speichersysteme 200 und 300 einen
oder mehrere LSB-Backupspeicher aufweisen. Insbesondere wenn eine
einzige Speichersteuereinheit verwendet wird, um eine Mehrzahl von
Flashspeichern zu steuern, ist es erforderlich, dass diese eine
Mehrzahl von Backupspeichern umfasst und berücksichtigt, die jeweiligen
LSB-Daten für
einen entsprechenden Flashspeicher sichern. Die Speichersteuereinheit 320 des
Speichersystems 300 weist beispielsweise doppelt so viele
LSB-Backupspeicher wie die Speichersteuereinheit 220 des
Speichersystems 200 auf.
-
Speichersysteme
gemäß den folgenden
zusätzlichen
Ausführungsformen
der Erfindung adressieren dieses Thema der Gesamtprogrammiergeschwindigkeit
und der ausgedehnten LSB-Backupspeicher.
-
5 ist
ein Blockdiagramm eines Speichersystems gemäß einer weiteren erfindungsgemäßen Ausführungsform.
-
Bezugnehmend
auf 5 umfasst ein Speichersystem 400 einen
Host 410, eine Speichersteuereinheit 420 und einen
Flashspeicher 430. Wie zuvor können die Speichersteuereinheit 420 und
der Flashspeicher 430 in eine Speicherkarte integriert werden.
-
Die
Speichersteuereinheit 420 empfängt einen oder mehrere Befehle
vom Host 410 und steuert in Reaktion darauf die Gesamtfunktion
des Flashspeichers 430, einschließlich der Schreib-/Lesevorgänge. Die
Speichersteuereinheit 420 umfasst einen Pufferspeicher 421,
einen Backupspeicher 422, einen Fehlerkorrekturcode(ECC)-Schaltkreis 423,
einen Komparator 424, einen Fehlerpositionsdetektor 425 und
einen Reparaturschaltkreis 426.
-
Der
Pufferspeicher 421 wird verwendet, um temporär Schreibdaten,
die in den Flashspeicher 430 zu schreiben sind, und Lesedaten
zu speichern, die vom Flashspeicher 430 wieder gewonnen
werden. Durch Steuerung der Speichersteuereinheit 420 werden
die im Pufferspeicher 421 gespeicherten Daten an den Flashspeicher 430 oder
den Host 410 übertragen.
-
Der
Backupspeicher 422 wird verwendet, um die LSB-Daten zu
speichern, wenn ein MSB-Programmierfehler auftritt. Wie oben ausgeführt, können, wenn
die MSB-Daten nach der Programmierung der korrespondierenden LSB-Daten
in den Flashspeicher 430 geschrieben werden, die LSB-Daten beschädigt werden.
Das Speichersystem 400 kann jedoch die verlorenen LSB-Daten
reparieren und der Backupspeicher 422 wird verwendet, um
die reparierten LSB-Daten zu speichern.
-
Auch
hier können
der Pufferspeicher 421 und der Backupspeicher 422 in
einem einzigen Speicher oder Speichersubsystem implementiert werden. Der
Pufferspeicher 421 und der Backupspeicher 422 können beispielsweise
in einen RAM integriert werden.
-
Der
ECC-Schaltkreis 423 wird verwendet, um einen vorbestimmten
Bitfehler erster Ordnung zu korrigieren. Ein 4-Bit/512-Byte-ECC-Schaltkreis
kann beispielsweise 4-Bit-Fehler pro 512 Bytes an Daten korrigieren.
In diesem Fall können
beschädigte
Daten korrigiert werden, wenn ein Fehler in vier oder weniger Bits
von 512 Bytes auftritt.
-
Der
ECC-Schaltkreis 423 kann verwendet werden, um beschädigte LSB-Daten zu korrigieren, wenn
ein MSB-Programmierfehler auftritt. Unter der vorhergehenden Annahme
bezüglich
der ECC-Fähigkeiten,
ist ein Fehler in mehr als vier Bits von LSB-Daten jedoch nicht
durch den ECC-Schaltkreis 423 korrigierbar.
Solche unkorrigierbaren LSB-Daten zweiter Ordnung können jedoch
durch Ausführungsformen
der Erfindung, wie dem in 5 dargestellten Speichersystem 400,
repariert werden.
-
Wenn
ein MSB-Programmierfehler auftritt, wird der Komparator 424 verwendet,
um die „MSB-Lesedaten", d. h. die nach
dem MSB-Programmiervorgang
aus dem Flashspeicher 430 gelesenen MSB-Daten, mit den MSB-Pufferdaten, d. h.
den im Pufferspeicher 421 gespeicherten MSB-Daten, zu vergleichen.
Der Komparator 424 vergleicht die MSB-Lesedaten mit den
MSB-Pufferdaten und stellt das Vergleichsergebnis dem Fehlerpositionsdetektor 425 zur
Verfügung.
-
Der
Fehlerpositionsdetektor 425 empfängt das Vergleichsergebnis
vom Komparator 424 und detektiert die Bitposition(en) der
detektierten Bitfehler, um eine Fehlerpositionsinformation zu erzeugen.
Der Fehlerpositionsdetektor 425 speichert die Adressen von
Speicherzellen im Flashspeicher 430, die zu der Fehlerpositionsinformation
gehören,
und stellt die Fehlerpositionsinformation dem Reparaturschaltkreis 426 zur
Verfügung.
-
Der
Reparaturschaltkreis 426 repariert die LSB-Daten entsprechend
der Fehlerpositionsinformation. Die während der MSB-Fehlerprogrammierung
beschädigten
LSB-Daten werden im Backupspeicher 422 gespeichert. Hierbei
wird in der Darstellung angenommen, dass die beschädigten LSB-Daten
Daten aufweisen, die nicht durch den ECC-Schaltkreis 423 korrigiert
werden können.
Die funktionalen Zusammenhänge
zwischen dem Komparator 424, dem Fehlerpositionsde tektor 425 und dem
Reparaturschaltkreis 426 werden mit einigen weiteren Details
unter Bezugnahme auf 6 und 7 beschrieben.
-
Jedoch
zurückkehrend
zur 5 umfasst der Flashspeicher 430 ein Zellenfeld 431,
einen Decoder 432, einen Seitenpuffer 433, einen
Bitleitungsauswahlschaltkreis 434, einen Datenpuffer 435 und eine
Steuereinheit 436. Die Struktur und Funktionsweise des
Flashspeichers 430 sind denen des in 3 dargestellten
Flashspeichers 230 ähnlich.
-
In 5 ist
eine Seite 0 mit einer geteilten Wortleitung WL0 durch eine gestrichelte
Linie dargestellt. Eine vorgegebene schwarz dargestellte Speicherzelle
in Seite 0 wird als Flagzelle bezeichnet. Die Flagzelle wird verwendet,
um anzuzeigen, ob das LSB und/oder das MSB der Seite 0 programmiert wurden.
-
Wenn
ein MSB-Programmierfehler auftritt, vergleicht das Speichersystem 400 die
MSB-Lesedaten mit MSB-Pufferdaten, um eine Fehlerposition zu bestimmen,
und repariert die LSB-Daten, die zu der Fehlerposition gehören. Nur
wenn ein MSB-Programmierfehler auftritt, sichert das Speichersystem 400 die
LSB-Daten und repariert die beschädigten LSB-Daten. Daher sichert das Speichersystem 400 die
LSB-Daten nicht immer vor dem MSB-Programmiervorgang. Diese Erweiterung
gegenüber
den vorherigen Ausführungsformen
reduziert die Gesamtprogrammierzeit im Vergleich zu Ausführungsformen,
wie den dargestellten Speichersystemen 200 und 300,
signifikant. Zusätzlich
kann das Speichersystem 400 die beschädigten LSB-Daten unter Verwendung
einer Kombination der vom ECC-Schaltkreis bereitgestellten Fähigkeiten
mit den durch den MSB-Vergleichsvorgang bereitgestellten Fähigkeiten vollständig reparieren.
Diese Fähigkeit
verbessert die Zuverlässigkeit
der im Flashspeicher 430 gespeicherten Daten.
-
Ein
Speicherblock, der identifiziert ist, eine mit einem Programmierfehler
assoziierte Speicherzelle zu umfassen, wird als schlechter Block
behandelt und die im Backupspeicher 422 gespeicherten LSB-Daten
werden in einen anderen Speicherblock programmiert. Danach werden
die korrespondierenden im Pufferspeicher 421 gespeicherten
MSB-Daten in einen anderen Speicherblock programmiert. Dieser Ansatz
der Zurückprogrammierung
bzw. der erneuten Programmierung der Schreibdaten in ihre LSB- und
MSB-Komponenten ist ähnlich
den Zurückprogrammiervorgängen, die
im Zusammenhang mit den 3 und 4 dargestellten
Ausführungsformen
beschrieben sind.
-
6 ist
ein Spannungsverteilungsdiagramm zur weiteren Darstellung des Mehrfachbitprogrammiervorgangs
im Speichersystem gemäß 5.
-
6(a) illustriert den LSB-Programmiervorgang
und 6(b) illustriert den MSB-Programmiervorgang.
Der Status der Flagzelle, die mit dem LSB-/MSB-Programmiervorgang
assoziiert ist, ist im Bezug auf 6(a) und 6(b) dargestellt. In 6 repräsentiert
die Abszissenachse die Schwellspannungen der Speicherzellen und
die Ordinatenachse repräsentiert
die Anzahl der Speicherzellen. Referenzsymbole VR1, VR2 und VR3
bezeichnen Trennungsspannungen, die verwendet werden, um die Spannungspegel
der individuellen Speicherzellen zu bestimmen.
-
Bezugnehmend
auf 6(a) speichert eine Speicherzelle
mit einer niedrigeren Schwellwertspannung als VR1 einen LSB-Wert „1", und eine Speicherzelle
mit einer höheren
Schwellwertspannung als VR1 speichert einen LSB-Wert „0". Der LSB-Wert „1" zeigt einen gelöschten Zustand
an und der LSB-Wert „0" zeigt einen programmierten
Zustand an.
-
Eine
Information, die den Programmierzustand für das LSB anzeigt, ist in der
in 5 dargestellten Flagzelle gespeichert. Wenn die
Flagzelle einen Wert „1" speichert, wie in 6(a) dargestellt ist, dann wird die Programmierung
des LSBs in Seite 0 angezeigt. Andererseits wird, wenn die Flagzelle
den Wert „0" speichert, wie in 6(b) dargestellt ist, die Programmierung
des LSBs und des MSBs in die Seite 0 angezeigt.
-
Wenn
der MSB-Programmiervorgang normal ausgeführt wird, wird eine Speicherzelle
mit einem LSB-Wert von „1" als „11" oder „01" gemäß ihrem MSB
gespeichert. Eine Speicherzelle mit einem LSB-Wert von „0" wird gemäß ihrem
MSB als „10" oder „00" gespeichert. Bei
dem in 6 dargestellten Programmierverfahren können jedoch
Fälle auftreten,
in denen das LSB aufgrund eines MSB-Programmierfehlers einem Wechsel
unterzogen wird.
-
Nun
wird ein Fall beschrieben, in dem ein MSB-Wert von „0" in eine Speicherzelle
programmiert wird, die vorher mit dem LSB-Wert von „1" programmiert wurde.
Es wird zuerst angenommen, dass der MSB-Programmiervorgang erfolgreich ausgeführt wird
und dass die MLC nachfolgend einen 2-Bit-Datenwert von „01" speichert. Anschließend wird
jedoch angenommen, dass ein MSB-Programmierfehler auftritt und dass
die MLC einen Datenwert von „11" anstelle des erwarteten
Werts von „01" speichert. In dem
angenommenen zweiten Fall wechselt das LSB als Ergebnis des MSB-Programmierfehlers nicht
den Zustand.
-
Dann
wird ein Fall beschrieben, in dem ein MSB-Wert von „1" oder „0" in eine Speicherzelle
programmiert wird, die vorher mit einem LSB-Wert von „0" programmiert wurde.
Die Schwellwertspannungsverteilung für diese Speicherzelle ist in 6(a) dargestellt und korrespondiert mit
der Schwellwertspannungsverteilung einer Speicherzelle mit einem
Zustand „01" oder „10" in 6(b).
-
Eine
Speicherzelle mit einer Schwellwertspannung A in 6(a) korrespondiert
beispielsweise mit einer Speicherzelle mit einer Schwellwertspannung
A' in 6(b). Die Speicherzelle mit der Schwellwertspannung
A' speichert einen
Datenwert von „01". Analog korrespondiert
eine Speicherzelle mit der Schwellwertspannung B in 6(a) mit
einer Schwellwertspannung B' in 6(b). Die Speicherzelle mit der Schwellwertspannung
B' speichert einen Datenwert
von „10".
-
Wenn
ein MSB-Wert von „1" erfolgreich in eine
Speicherzelle mit einem LSB-Wert von „0" programmiert wird, dann speichert die
Speicherzelle einen Datenwert von „10". Entsprechend speichert die Speicherzelle
einen Datenwert von „00", wenn ein MSB-Wert
von „0" erfolgreich in eine
Speicherzelle mit einem LSB-Wert von „0" programmiert wird.
-
Wenn
ein MSB-Wert von „1" programmiert wird,
d. h. wenn ein Datenwert von „10" programmiert wird,
dann muss die Schwellwertspannung einer Speicherzelle mit einem
LSB-Wert von „0" nur leicht aufwärts verschoben
werden. Während
der Programmierung des MSB mit einem Wert von „1", kann jedoch ein Programmierfehler
auftreten. Solche Fehler können
viele Ursachen wie z. B. eine defekte Speicherzelle usw. haben.
-
In
diesem Fall kann die Speicherzelle, welche die Schwellwertspannung
A aufweist, nicht auf einen Zustand von „10" programmiert werden, sondern hält ihren
Zustand von „01". In diesem Fall ändert sich
der LSB-Wert von „0" auf „1". Das bedeutet, dass
das vorher auf einen Wert von „0" programmierte LSB
während
des MSB-Programmiervorgangs auf einen Wert von „1" geändert
wird.
-
Wenn
ein Programmierfehler auftritt, kann die Speicherzelle mit der Schwellwertspannung
B nicht auf einen Zustand von „00" programmiert werden,
sondern hält
einen Zustand von „10". In diesem Fall
bleibt der LSB-Wert von „0" erhalten. Das bedeutet,
dass auch, wenn ein MSB-Programmierfehler auftritt,
die Speicherzelle mit der Schwellwertspannung B ihren passenden
LSB-Wert nicht verliert.
-
Wie
oben ausgeführt
ist, kann das LSB im Speichersystem 400 aufgrund eines
MSB-Programmierfehlers verändert
werden. Das bedeutet, dass sich eine Speicherzelle mit der Schwellwertspannung A
in 6 aufgrund eines MSB-Programmierfehlers auf eine
Schwellwertspannung A' bewegen
kann. In diesem Fall wechselt das LSB von „0" auf „1". In allen anderen Fällen verändert sich das LSB nicht, auch wenn
ein MSB-Programmierfehler
auftritt. Nun wird ein Verfahren zur Programmierung eines Speichersystems
im Hinblick auf das Vorhergehende beschrieben.
-
7 ist
konzeptionelles Diagramm zur Darstellung des Fehlerpositionsdetektiervorgangs
und des LSB-Reparaturvorgangs des Speichersystems gemäß 5. 7(a) zeigt ursprünglich zu programmierende Daten
und 7(b) zeigt die aktuellen fehlerbehafteten
Daten, die in eine ausgewählte Seite,
z. B. in eine Seite 0, programmiert sind.
-
In 7(b) sind A1, A2, ..., Adressenwerte, die
Adressenpositionen für
die entsprechenden Speicherzellen in der ausgewählten Seite anzeigen. Wie in 7(a) und 7(b) dargestellt
ist, wird angenommen, dass jeweils ein Programmierfehler an den Speicherzellen
mit den Adressen A2 und An auftritt. Das bedeutet, dass die Fehlerpositionen
durch A2 und An identifiziert werden. Aufgrund dieser Programmierfehler,
wird ein 2-Bit-Datenwert
von „01" anstatt des beabsichtigten
Datenwerts von „10" in diese Speicherzellen
programmiert.
-
7(c) und 7(d) zeigen
weiter die Funktionsweise des Komparators 424 und des Fehlerpositionsdetektors 425. 7(c) zeigt MSB-Lesedaten vom Flashspeicher 430 und 7(d) zeigt MSB-Pufferdaten, die im Pufferspeicher 421 gespeichert
sind. Der Komparator 424 vergleicht die MSB-Lesedaten bitweise
mit den MSB-Pufferdaten. Der Fehlerpositionsdetektor 425 detektiert
Fehlerpositionen, z. B. A2 und An, im Bezug auf das Vergleichsergebnis.
-
7(e) zeigt LSB-Backup-Daten, die im Backupspeicher 422 gespeichert
sind, und 7(f) zeigt reparierte LSB-Daten.
Der Reparaturschaltkreis 426 empfängt Fehlerpositionen A2 und
An vom Fehlerpositionsdetektor 425 und verändert die
LSB-Daten an den Fehlerpositionen A2 und An von „1" auf „0". Daraus resultiert, dass die beschädigten LSB-Daten repariert sind.
Zusätzlich
können,
da die MSB-Daten im Pufferspeicher 421 gespeichert sind, alle
Mehrfachbitdaten, die einen Programmierfehler aufweisen, repariert
werden.
-
Wieder
bezugnehmend auf 5 sichert das Speichersystem 400 die
LSB Daten nur, wenn ein MSB-Programmierfehler auftritt, und repariert
die beschädigten
LSB-Daten. Entsprechend muss das Speichersystem 400 die
LSB-Daten nicht immer vor einem korrespondierenden MSB-Programmiervorgang
sichern. Daher kann die resultierende Zeit für Programmiervorgänge deutlich
reduziert werden. Zusätzlich
kann das Speichersystem 400 beschädigte LSB-Daten vollständig unter
Verwendung der kombinierten Fähigkeiten
des ECC-Schaltkreises und des MSB-Vergleichsvorgangs reparieren, wodurch
eine verbesserte Datenzuverlässigkeit
zur Verfügung
gestellt wird.
-
8 ist
ein Blockdiagramm eines Speichersystems gemäß einer weiteren erfindungsgemäßen Ausführungsform.
In 8 umfasst ein Speichersystem 500 einen
Host 510, eine Speichersteuereinheit 520, einen
ersten Flashspeicher 530 und einen zweiten Flashspeicher 540.
-
Die
Speichersteuereinheit 520 empfängt einen oder mehrere Befehl(e)
vom Host 510 und steuert in Reaktion darauf die Gesamtfunktion
des ersten und zweiten Flashspeichers 530 und 540.
Die Speichersteuereinheit 520 umfasst einen Pufferspeicher 521,
einen Backupspeicher 522, einen ECC-Schaltkreis 523,
einen Komparator 524, einen Fehlerpositionsdetektor 525 und
einen Reparaturschaltkreis 526. Der Pufferspeicher 521 umfasst
einen ersten Pufferspeicher 52a und einen zweiten Puffer speicher 52b. Der
erste Pufferspeicher 52a wird für Schreib-/Lesevorgänge verwendet, die den ersten
Flashspeicher 530 betreffen. Der zweite Pufferspeicher 52b wird
für Schreib-/Lesevorgänge verwendet,
die den zweiten Flashspeicher 540 betreffen.
-
Der
Backupspeicher 522 wird verwendet, um die LSB-Daten zu
sichern, wenn während
der Programmierung von MSB-Daten in den ersten und den zweiten Flashspeicher 530 und 540,
die vorher programmierte LSB-Daten
aufweisen, ein Programmierfehler auftritt. Das Speichersystem 300 aus 4 umfasst
zwei Backupspeicher, d. h. den ersten und den zweiten LSB-Backupspeicher 322 und 324,
während
das Speichersystem 500 aus 8 nur einen Backupspeicher,
d. h. den Backupspeicher 522 umfasst.
-
Das
Speichersystem 300 aus 4 sichert die
LSB-Daten immer vor jedem MSB-Programmiervorgang und erfordert daher
für jeden
Flashspeicher einen zugehörigen
LSB-Backupspeicher. Das Speichersystem 500 aus 8 sichert
die LSB-Daten nur, wenn ein MSB-Programmierfehler
auftritt, und erfordert daher wegen der sehr geringen Wahrscheinlichkeit
von gleichzeitig in beiden Flashspeichern 530 und 540 auftretenden
Programmierfehlern nur einen einzigen Backupspeicher.
-
Gemäß dem Speichersystem 500 aus 8 ist
es möglich,
die Anzahl von Backupspeichern zu reduzieren und die sonst aufgrund
eines Programmierfehlers verloren gehenden LSB-Daten dennoch vollständig zu
reparieren.
-
Wie
oben ausgeführt
ist, umfassen Speichersysteme gemäß erfindungsgemäßen Ausführungsbeispielen
einen oder mehrere Backupspeicher, die einer Speichersteuereinheit
zugeordnet sind, um den Verlust von LSB-Daten während eines korrespondierenden
und nachfol genden MSB-Programmiervorgangs zu verhindern. Der mindestens
eine Backupspeicher, der LSB-Daten speichert, kann jedoch alternativ
oder zusätzlich
dem Flashspeicher zugeordnet sein. Nun wird ein Speichersystem mit
einem Speicher beschrieben, der die LSB-Daten in einem Flashspeicher
sichert.
-
9 ist
ein Blockdiagramm eines Speichersystems gemäß einer weiteren erfindungsgemäßen Ausführungsform.
-
Bezugnehmend
auf 9 umfasst ein Speichersystem 600 einen
Host 610, eine Speichersteuereinheit 620 und einen
Flashspeicher 630. Wie vorher können die Speichersteuereinheit 620 und
der Flashspeicher 630 in einer Speicherkarte enthalten sein.
-
Die
Speichersteuereinheit 620 empfängt Daten und einen Schreibbefehl
vom Host 610 und steuert den Flashspeicher 630,
um Daten in ein Zellenfeld 631 zu schreiben. Zudem steuert
die Speichersteuereinheit 620 den Flashspeicher 630 in
Reaktion auf den empfangenen Schreibbefehl so, so dass die im Zellenfeld 631 gespeicherten
Daten gelesen werden.
-
Der
Pufferspeicher 621 speichert Lese- und Schreibdaten temporär. Durch
Steuerung der Speichersteuereinheit 620 überträgt der Pufferspeicher 621 die
temporär
gespeicherten Daten an den Host 610 oder den Flashspeicher 630.
-
Der
Flashspeicher 630 umfasst ein Zellenfeld 631,
einen Decoder 632, einen Seitenpuffer 633, einen
Bitleitungsauswahlschaltkreis 634, einen Datenpuffer 635,
eine Steuereinheit 636 und einen LSB-Backupschaltkreis 637. Außer dem
LSB-Backupschaltkreis 637 entsprechen Struktur und Funktionsweise
des Flashspeichers 630 denen des Speichersystems 200,
das im Zusammenhang mit 3 beschrieben wird.
-
Im
Gegensatz zum Speichersystem 200 aus 3 umfasst
das Speichersystem 600 jedoch den LSB-Backupschaltkreis 637,
der dem Flashspeicher 630 zugeordnet ist. Der LSB-Backupschaltkreis 637 wird
verwendet, um Mehrfachbitdaten in den Flashspeicher 630 zu
programmieren. Im dargestellten Beispiel ist der LSB-Backupschaltkreis 637 mit
dem Seitenpuffer 633 verbunden. Der LSB-Backupschaltkreis 637 empfängt LSB-Daten über den
Seitenpuffer 633 und speichert die empfangenen LSB-Daten.
-
Wie
vorher werden zuerst die LSB-Daten in den Flashspeicher 630 geschrieben,
bevor die MSB-Daten geschrieben werden, und die Möglichkeit der
Beschädigung
der LSB-Daten tritt auf. Um den Verlust der LSB-Daten zu verhindern, wird der LSB-Backupschaltkreis 637 verwendet,
um die in den Flashspeicher 630 geschriebenen LSB-Daten vor
dem MSB-Schreibvorgang zu sichern. Bei einer Ausführungsform
speichert der LSB-Backupschaltkreis 637 eine Seite von
LSB-Daten.
-
10 ist
ein Blockdiagramm eines Speichersystems gemäß einer weiteren erfindungsgemäßen Ausführungsform.
Bezugnehmend auf 10 umfasst ein Speichersystem 700 einen
Host 710, eine Speichersteuereinheit 720 und einen
Flashspeicher 730. Die Speichersteuereinheit 720 und
der Flashspeicher 730 können
in einer Speicherkarte implementiert werden.
-
Außer der
Konfiguration des Seitenpuffers 733 sind Struktur und Funktionsweise
des Speichersystems 700 denen des in 9 dargestellten
Speichersystems 600 ähnlich.
-
Der
Seitenpuffer 733 speichert Daten, die vom Pufferspeicher 721 geladen
werden. Es kann eine Seite von Daten in den Seitenpuffer 733 geladen werden
und die geladenen Daten können
dann während
eines Programmiervorgangs gesammelt in eine ausgewählte Seite
programmiert werden. Während eines
Lesevorgangs liest der Seitenpuffer 733 Daten von einer
ausgewählten
Seite und speichert die resultierenden Lesedaten temporär. In Reaktion
auf ein nicht dargestelltes Lesefreigabesignal nRE werden die im
Seitenpuffer 733 gespeicherten Daten zum Pufferspeicher 721 übertragen.
-
Der
Seitenpuffer 733 umfasst einen LSB-Backupschaltkreis 737,
der angepasst ist, um die gesicherten LSB-Daten zu verarbeiten.
Der LSB-Backupschaltkreis 737 wird
verwendet, um LSB-Daten vor dem MSB-Schreibvorgang zu sichern, um einen
Verlust der LSB-Daten während
des MSB-Programmiervorgangs zu verhindern.
-
11 ist
ein Blockdiagramm einer möglichen
Implementierung des Seitenpuffers 737, der in 10 dargestellt
ist.
-
Bezugnehmend
auf 11 umfasst der Seitenpuffer 737 eine
Bitleitungsauswahlschaltung 810, eine Abtasteinheit 820,
einen Zwischenspeicher 830 und einen LSB-Backupschaltkreis 737.
-
Während eines
Lese-/Schreibvorgangs wählt
die Bitleitungsauswahlschaltung 810 eine mit einer vorbestimmten
Bitleitung BL verbundene Zelle gemäß der Ausgabe des Bitleitungsauswahlschaltkreises 734,
siehe 10, aus. Die Abtasteinheit 820 wird
verwendet, um die in der von der Bitleitungsauswahlschaltung 810 ausgewählten Zelle
gespeicherten Daten zu lesen.
-
Der
Zwischenspeicher 830 speichert über eine Datenleitung DL die
in einen Datenpuffer 735, siehe 10, geladenen
Daten. Danach werden die im Zwischenspeicher 830 gespeicherten
Daten während
eines Programmiervorgangs in die Speicherzelle programmiert, die
von einer Bitleitung ausgewählt wird.
Wenn die zwischengespeicherten Daten den Wert „1" aufweisen, wird der Programmiervorgang unterbunden,
wenn die zwischengespeicherten Daten jedoch den Wert „0" aufweisen, werden
sie in eine Speicherzelle programmiert.
-
Während eines
Lesevorgangs speichert der Zwischenspeicher 830 temporär die Daten,
die von der Abtasteinheit 820 aus der durch die Bitleitungsauswahlschaltung 810 ausgewählten Speicherzelle abgetastet
werden. In Reaktion auf das Lesefreigabesignal überträgt der Zwischenspeicher 830 die
gespeicherten Daten zum Datenpuffer 735.
-
Vor
einem MSB-Schreibvorgang sichert der LSB-Backupschaltkreis 737 die
vorher in das Speicherzellenfeld 731 geschriebenen Daten,
siehe 10. Die im Zwischenspeicher 830 gespeicherten Daten
werden während
eines Programmierverifizierungsvorgangs verändert. Die im LSB-Backupschaltkreis 737 gespeicherten
LSB-Daten werden jedoch während
des Programmierverifizierungsvorgangs nicht verändert.
-
Nun
wird die Funktionsweise des Seitenpuffers 733 unter der
Annahme beschrieben, dass die LSB-Daten bereits in das Zellenfeld 731 geschrieben sind.
-
Vor
einem MSB-Schreibvorgang wird die Bitleitungsauswahlschaltung 810 verwendet,
um die Speicherzelle auszuwählen,
in welche die MSB-Daten
zu schreiben sind. Die Abtasteinheit 820 liest das LSB
aus der ausgewählten
Speicherzelle und speichert die gelesenen LSB-Daten im LSB-Backupschaltkreis 737.
-
Danach
wird das vom Datenpuffer 735 geladene MSB im Zwischenspeicher 830 gespeichert. Das
im Zwischenspeicher 830 gespeicherte MSB wird in die ausgewählte Speicherzelle
programmiert. Wenn das MSB normal programmiert ist, werden die im
LSB-Backupschaltkreis 737 gespeicherten LSB-Daten gelöscht. Wenn
jedoch ein MSB- Programmierfehler
auftritt, werden die im LSB-Backupschaltkreis 737 gespeicherten
LSB-Daten in einen anderen Speicherblock geschrieben, und dann wird das
im Zwischenspeicher 830 gespeicherte MSB geschrieben.
-
Wie
oben ausgeführt
ist, umfassen verschiedene Ausführungsformen
des erfindungsgemäßen Speichersystems
einen oder mehrere LSB-Backupspeicher,
die einem Flashspeicher zugeordnet sind. Diese Anordnungen verhindern
den Verlust von LSB-Daten aufgrund eines nachfolgenden MSB-Programmierfehlers.