DE102008003944A1 - Speichersystem und Programmierverfahren für ein Speichersystem - Google Patents

Speichersystem und Programmierverfahren für ein Speichersystem Download PDF

Info

Publication number
DE102008003944A1
DE102008003944A1 DE102008003944A DE102008003944A DE102008003944A1 DE 102008003944 A1 DE102008003944 A1 DE 102008003944A1 DE 102008003944 A DE102008003944 A DE 102008003944A DE 102008003944 A DE102008003944 A DE 102008003944A DE 102008003944 A1 DE102008003944 A1 DE 102008003944A1
Authority
DE
Germany
Prior art keywords
memory
bit data
data
flash memory
backup
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102008003944A
Other languages
English (en)
Other versions
DE102008003944B4 (de
Inventor
Jin-Hyeok Yongin Choi
Bong-Ryeol Lee
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102008003944A1 publication Critical patent/DE102008003944A1/de
Application granted granted Critical
Publication of DE102008003944B4 publication Critical patent/DE102008003944B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5621Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
    • G11C11/5628Programming or writing circuits; Data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • G11C16/105Circuits or methods for updating contents of nonvolatile memory, especially with 'security' features to ensure reliable replacement, i.e. preventing that old data is lost before new data is reliably written
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

Ein Speichersystem (200) umfasst einen Flashspeicher (230), der sequentiell erste Bitdaten und zweite Bitdaten speichert, und eine Speichersteuereinheit (220), die einen Pufferspeicher (221), der temporär die ersten Bitdaten und die zweiten Bitdaten speichert, und einen Backupspeicher (222) umfasst, der während eines mit einer Speicherung der zweiten Bitdaten zusammenhängenden Vorgangs die ersten Bitdaten speichert, wobei der Backupspeicher (222) die ersten Bitdaten erneut in den Flashspeicher (230) programmiert, wenn ein Fehler bei dem mit der Speicherung der zweiten Bitdaten zusammenhängenden Vorgang detektiert wird.

Description

  • 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.

Claims (18)

  1. Speichersystem (200), umfassend: – einen Flashspeicher (230), der sequentiell erste Bitdaten und zweite Bitdaten speichert, und – eine Speichersteuereinheit (220), die einen Pufferspeicher (221), der temporär die ersten Bitdaten und die zweiten Bitdaten speichert, und einen Backupspeicher (222) umfasst, der während eines mit einer Speicherung der zweiten Bitdaten zusammenhängenden Vorgangs die ersten Bitdaten speichert, – wobei der Backupspeicher (222) die ersten Bitdaten erneut in den Flashspeicher (230) programmiert, wenn ein Fehler bei dem mit der Speicherung der zweiten Bitdaten zusammenhängenden Vorgang detektiert wird.
  2. Speichersystem nach Anspruch 1, wobei die ersten Bitdaten vor dem Beginn des mit der Speicherung der zweiten Bitdaten zusammenhängenden Vorgangs im Backupspeicher gespeichert sind.
  3. Speichersystem nach Anspruch 1 oder 2, wobei der Backupspeicher einen Zwischenspeicher oder einen RAM aufweist.
  4. Speichersystem nach einem der Ansprüche 1 bis 3, wobei die Speichersteuereinheit die im Backupspeicher gespeicherten ersten Bitdaten in einen anderen Speicherblock innerhalb des Flashspeichers erneut programmiert.
  5. Speichersystem nach einem der Ansprüche 1 bis 4, wobei der Flashspeicher einen Seitenpuffer umfasst, der temporär Daten speichert, die vom Pufferspeicher geladen sind.
  6. Speichersystem nach Anspruch 5, wobei der Backupspeicher dem Seitenpuffer zugeordnet ist.
  7. Speichersystem nach Anspruch 6, wobei der Backupspeicher getrennt bereitgestellt und mit dem Seitenpuffer verbunden ist.
  8. Speichersystem umfassend: – einen Host (410), der ursprüngliche Daten und einen Befehl überträgt, – einen Flashspeicher (430), der einen Seitenpuffer (433) umfasst und der dazu ausgebildet ist, sequentiell erste Bitdaten und zweite Bitdaten zu speichern, die zu ursprünglichen Daten in einem Feld (431) aus Mehrpegelspeicherzellen gehören, und – eine Speichersteuereinheit (420), die auf den Befehl reagiert und die umfasst: – einen Pufferspeicher (421), der temporär die ersten Bitdaten und die zweiten Bitdaten speichert und die ersten Bitdaten und die zweiten Bitdaten zu dem und von dem Seitenpuffer (433) überträgt, – einen Komparator (424), der nach einer mit der Speicherung der zweiten Bitdaten zusammenhängenden Programmierung die aktuell im Flashspeicher (430) gespeicherten zweiten Bitdaten mit im Pufferspeicher (421) gespeicherten zweiten Bitdaten vergleicht und ein Vergleichsergebnis erzeugt, – einen Fehlerpositionsdetektor (425), der auf das Vergleichsergebnis reagiert und eine Fehlerpositionsinformation erzeugt, – einen ECC-Schaltkreis (423), der nach dem mit der Speicherung der zweiten Bitdaten zusammen hängenden Vorgang eine Reparatur erster Ordnung von verfälschten ersten Bitdaten ausführt, – einen Reparaturschaltkreis (426), der abhängig von der Fehlerpositionsinformation eine Reparatur zweiter Ordnung der verfälschten ersten Bitdaten ausführt, und – einen Backupspeicher (422), der während des Vorgangs, der mit der Speicherung der zweiten Bitdaten zusammenhängt, die ersten Bitdaten speichert.
  9. Speichersystem nach Anspruch 8, wobei der Backupspeicher dem Pufferspeicher in der Speichersteuereinheit zugeordnet ist.
  10. Speichersystem nach Anspruch 9, wobei der Backupspeicher und der Pufferspeicher in einem einzigen RAM implementiert sind.
  11. Speichersystem nach Anspruch 8, wobei der Backupspeicher dem Seitenpuffer im Flashspeicher zugeordnet ist.
  12. Speichersystem nach Anspruch 11, wobei der Backupspeicher getrennt vom Seitenpuffer bereitgestellt ist und mit dem Seitenpuffer verbunden ist.
  13. Programmierverfahren für ein Speichersystem (200), das einen Flashspeicher (230), der ursprüngliche Daten speichert, und eine zugehörige Speichersteuereinheit (220) umfasst, mit den Schritten: – Übertragen von ersten und zweiten Bitdaten, die zu den ursprünglichen Daten gehören, an einen Pufferspeicher (221) in der Speichersteuereinheit (220), – Programmieren der ersten Bitdaten in den Flashspeicher (230), – Speichern der ersten Bitdaten in einen Backupspeicher (222), während die zweiten Bitdaten in den Flashspeicher (230) programmiert werden, und – erneutes Programmieren der ersten Bitdaten in den Flashspeicher (230), wenn ein mit der Programmierung der zweiten Bitdaten zusammenhängender Fehler detektiert wird, durch Lesen der gespeicherten ersten Bitdaten aus dem Backupspeicher (222).
  14. Programmierverfahren nach Anspruch 13, wobei der Backupspeicher dem Pufferspeicher in der Speichersteuereinheit zugeordnet ist.
  15. Programmierverfahren nach Anspruch 13, wobei der Backupspeicher einem Seitenpuffer in dem Flashspeicher zugeordnet ist.
  16. Programmierverfahren für ein Speichersystem (200), das einen Flashspeicher (230), der ursprüngliche Daten speichert, und eine zugehörige Speichersteuereinheit (220) umfasst, mit den Schritten: – Übertragen von ersten und zweiten Bitdaten, die zu den ursprünglichen Daten gehören, an einen Pufferspeicher (221) in der Speichersteuereinheit (220), – Programmieren der ersten Bitdaten in den Flashspeicher (230), – Speichern der ersten Bitdaten in einen Backupspeicher (222), während die zweiten Bitdaten in den Flashspeicher (230) programmiert werden, – wobei nach einer Detektion eines Fehlers bei der Programmierung der zweiten Bitdaten in den Flashspeicher (230) die ersten im Flashspeicher (230) gespeicherten Bitdaten unter Verwendung eines Fehlerkorrekturcodeschemas korrigiert werden und aktuell gespeicherte zweite Bitdaten mit den zweiten Bitdaten verglichen werden, die zu den ursprünglichen Daten gehören, und die ersten Bitdaten in Reaktion auf den Vergleich repariert werden.
  17. Programmierverfahren nach Anspruch 16, wobei der Backupspeicher dem Pufferspeicher in der Speichersteuereinheit zugeordnet ist.
  18. Speichersystem nach Anspruch 16, wobei der Backupspeicher dem Seitenpuffer im Flashspeicher zugeordnet ist.
DE102008003944.6A 2007-01-03 2008-01-03 Speichersystem und Programmierverfahren für ein Speichersystem Active DE102008003944B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020070000737A KR100799688B1 (ko) 2007-01-03 2007-01-03 백업 회로를 갖는 메모리 시스템 및 그것의 프로그램 방법
KR10-2007-0000737 2007-01-03

Publications (2)

Publication Number Publication Date
DE102008003944A1 true DE102008003944A1 (de) 2008-07-24
DE102008003944B4 DE102008003944B4 (de) 2022-06-23

Family

ID=39341953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008003944.6A Active DE102008003944B4 (de) 2007-01-03 2008-01-03 Speichersystem und Programmierverfahren für ein Speichersystem

Country Status (4)

Country Link
US (1) US7594157B2 (de)
KR (1) KR100799688B1 (de)
CN (1) CN101246738B (de)
DE (1) DE102008003944B4 (de)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101495795B1 (ko) 2008-06-13 2015-02-27 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 프로그램 방법
US8027194B2 (en) 1988-06-13 2011-09-27 Samsung Electronics Co., Ltd. Memory system and method of accessing a semiconductor memory device
US7675149B1 (en) * 2006-09-12 2010-03-09 Maxim Integrated Products, Inc. Check valve package for Pb-free, single piece electronic modules
KR100769770B1 (ko) 2006-09-29 2007-10-23 주식회사 하이닉스반도체 메모리 장치의 페이지 버퍼 회로 및 프로그램 방법
KR100877609B1 (ko) * 2007-01-29 2009-01-09 삼성전자주식회사 버퍼 메모리의 플래그 셀 어레이를 이용하여 데이터 오류 정정을 수행하는 반도체 메모리 시스템 및 그 구동 방법
KR100871700B1 (ko) * 2007-02-13 2008-12-08 삼성전자주식회사 불휘발성 메모리 장치에서 전하 손실에 기인한 오류 데이터정정 방법
KR100823175B1 (ko) * 2007-02-27 2008-04-18 삼성전자주식회사 프로그램 성능을 향상시킬 수 있는 플래시 메모리 장치 및그것을 포함한 메모리 시스템
KR100889781B1 (ko) 2007-04-30 2009-03-20 삼성전자주식회사 멀티-비트 데이터를 저장하는 메모리 시스템, 그것의프로그램 방법, 그것을 포함한 컴퓨팅 시스템
KR100873825B1 (ko) * 2007-05-02 2008-12-15 삼성전자주식회사 비휘발성 메모리의 멀티 비트 프로그래밍 장치 및 방법
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US9152496B2 (en) * 2007-12-21 2015-10-06 Cypress Semiconductor Corporation High performance flash channel interface
KR100933852B1 (ko) * 2007-12-28 2009-12-24 주식회사 하이닉스반도체 불휘발성 메모리 소자 및 그 동작 방법
TWI404076B (zh) * 2008-01-07 2013-08-01 Powerchip Technology Corp 記憶體裝置以及資料讀取方法
KR101432108B1 (ko) * 2008-06-03 2014-08-21 삼성전자주식회사 비휘발성 메모리 장치 및 그것의 구동 방법
KR101541736B1 (ko) 2008-09-22 2015-08-04 삼성전자주식회사 멀티-레벨 셀 플래시 메모리 장치에서의 lsb 페이지 복구 방법
CN101833995B (zh) * 2009-03-11 2017-06-20 深圳市朗科科技股份有限公司 闪存介质的编程方法
KR20100107609A (ko) * 2009-03-26 2010-10-06 삼성전자주식회사 저항성 메모리 장치, 이를 포함하는 메모리 시스템 및 저항성 메모리 장치의 기입 방법
US8151139B1 (en) * 2009-03-27 2012-04-03 Symantec Corporation Preventing data loss from restore overwrites
US8832353B2 (en) * 2009-04-07 2014-09-09 Sandisk Technologies Inc. Host stop-transmission handling
CN101872644A (zh) * 2009-04-24 2010-10-27 威刚科技(苏州)有限公司 电子存储装置及其存储方法
CN101908368A (zh) * 2009-06-04 2010-12-08 威刚科技(苏州)有限公司 电子存储装置及其操作方法
US8307241B2 (en) * 2009-06-16 2012-11-06 Sandisk Technologies Inc. Data recovery in multi-level cell nonvolatile memory
JP2011048725A (ja) * 2009-08-28 2011-03-10 Panasonic Corp 不揮発性記憶装置および不揮発性メモリコントローラ
JP5556189B2 (ja) * 2010-01-20 2014-07-23 ソニー株式会社 記憶装置およびデータの書込み方法
KR20110099570A (ko) * 2010-03-02 2011-09-08 삼성전자주식회사 불휘발성 메모리 장치, 그것의 프로그램 방법, 그리고 그것을 포함하는 메모리 시스템
KR101085724B1 (ko) * 2010-05-10 2011-11-21 주식회사 하이닉스반도체 반도체 메모리 장치 및 그 동작 방법
US8880778B2 (en) * 2010-05-13 2014-11-04 Micron Technology, Inc. Memory buffer having accessible information after a program-fail
KR101205628B1 (ko) * 2010-08-04 2012-11-27 에스케이하이닉스 주식회사 반도체 메모리 장치 및 이의 독출 방법
JP2012069180A (ja) * 2010-09-21 2012-04-05 Toshiba Corp 半導体記憶装置
US8738844B2 (en) * 2011-04-14 2014-05-27 Macronix International Co., Ltd. Program method, data recovery method, and flash memory using the same
KR101903091B1 (ko) * 2011-10-05 2018-10-02 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
US20130205066A1 (en) * 2012-02-03 2013-08-08 Sandisk Technologies Inc. Enhanced write abort management in flash memory
KR101917192B1 (ko) 2012-03-12 2018-11-12 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 읽기 방법
US20140219021A1 (en) * 2013-02-07 2014-08-07 Seagate Technology Llc Data protection for unexpected power loss
US9177638B2 (en) * 2012-11-13 2015-11-03 Western Digital Technologies, Inc. Methods and devices for avoiding lower page corruption in data storage devices
KR101994672B1 (ko) 2012-12-04 2019-07-01 삼성전자 주식회사 저장 장치 및 저장 장치의 동작 방법
KR102002826B1 (ko) * 2012-12-04 2019-07-23 삼성전자 주식회사 저장 장치, 플래시 메모리 및 저장 장치의 동작 방법
US9032271B2 (en) 2012-12-07 2015-05-12 Western Digital Technologies, Inc. System and method for lower page data recovery in a solid state drive
KR102002901B1 (ko) * 2013-01-28 2019-07-23 삼성전자 주식회사 메모리 장치, 메모리 시스템 및 이의 제어 방법
US9037902B2 (en) * 2013-03-15 2015-05-19 Sandisk Technologies Inc. Flash memory techniques for recovering from write interrupt resulting from voltage fault
KR102094334B1 (ko) * 2013-03-15 2020-03-27 삼성전자주식회사 비휘발성 멀티-레벨 셀 메모리 시스템 및 상기 시스템에서의 적응적 데이터 백업 방법
KR102102171B1 (ko) * 2013-04-05 2020-05-29 삼성전자 주식회사 멀티 레벨 셀 메모리 시스템
KR101862379B1 (ko) * 2013-04-19 2018-07-05 삼성전자주식회사 Ecc 동작과 리던던시 리페어 동작을 공유하는 메모리 장치
CN104217762B (zh) * 2013-05-31 2017-11-24 慧荣科技股份有限公司 数据储存装置及其错误校正方法以及数据读取方法
JP2015022516A (ja) * 2013-07-19 2015-02-02 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
KR102088403B1 (ko) * 2013-08-08 2020-03-13 삼성전자 주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US9342401B2 (en) * 2013-09-16 2016-05-17 Sandisk Technologies Inc. Selective in-situ retouching of data in nonvolatile memory
US9135113B2 (en) * 2013-10-08 2015-09-15 Apple Inc. Recovery from programming failure in non-volatile memory
US9043537B1 (en) 2013-11-21 2015-05-26 Sandisk Technologies Inc. Update block programming order
US9477423B2 (en) 2013-11-26 2016-10-25 Seagate Technology Llc Eliminating or reducing programming errors when programming flash memory cells
US9244631B2 (en) 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
KR102226367B1 (ko) * 2014-01-02 2021-03-12 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함하는 불휘발성 메모리 시스템
US8902652B1 (en) * 2014-05-13 2014-12-02 Sandisk Technologies Inc. Systems and methods for lower page writes
KR102293169B1 (ko) * 2014-06-25 2021-08-26 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 동작 방법
WO2016032784A1 (en) * 2014-08-25 2016-03-03 Rambus Inc. Buffer circuit with adaptive repair capability
KR102238706B1 (ko) * 2014-11-28 2021-04-09 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
JP2016143085A (ja) * 2015-01-29 2016-08-08 株式会社東芝 装置及び方法
KR20160133283A (ko) * 2015-05-12 2016-11-22 삼성전자주식회사 비휘발성 메모리 저장장치를 운영하는 방법 및 이를 구현한 전자장치
KR102319402B1 (ko) * 2015-06-30 2021-11-01 에스케이하이닉스 주식회사 복수의 채널들을 통해 반도체 메모리 장치들을 제어하는 메모리 시스템
CN105304144B (zh) * 2015-10-30 2018-05-15 中国科学院微电子研究所 存储器错误检测方法及装置
KR102405054B1 (ko) * 2015-11-27 2022-06-08 에스케이하이닉스 주식회사 메모리 장치 및 메모리 장치의 동작 방법
CN105719702A (zh) * 2016-01-26 2016-06-29 中国科学院微电子研究所 改进型存储器错误检测方法及装置
CN108154900B (zh) * 2017-11-29 2020-12-18 深圳忆联信息***有限公司 一种缓解mlc闪存写干扰问题的方法
CN108109665A (zh) * 2018-01-12 2018-06-01 成都信息工程大学 一种存储器操作方法
EP3909075A4 (de) 2019-05-17 2022-09-07 Yangtze Memory Technologies Co., Ltd. Dreidimensionale speichervorrichtung mit statischem direktzugriffsspeicher
EP3909048A4 (de) * 2019-05-17 2022-08-17 Yangtze Memory Technologies Co., Ltd. Cache-programmbetrieb einer dreidimensionalen speichervorrichtung mit statischem direktzugriffsspeicher
CN112667446B (zh) * 2021-01-13 2022-11-08 珠海妙存科技有限公司 Mlc nand的数据备份方法、装置及闪存***
KR20230098664A (ko) * 2021-06-30 2023-07-04 양쯔 메모리 테크놀로지스 씨오., 엘티디. 3차원 nand 메모리를 위한 데이터 보호

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69024086T2 (de) * 1989-04-13 1996-06-20 Sundisk Corp EEprom-System mit Blocklöschung
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
TW261687B (de) 1991-11-26 1995-11-01 Hitachi Seisakusyo Kk
US6347051B2 (en) 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
WO1997032253A1 (en) 1996-02-29 1997-09-04 Hitachi, Ltd. Semiconductor memory device having faulty cells
US6076137A (en) * 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
JP3883687B2 (ja) 1998-02-16 2007-02-21 株式会社ルネサステクノロジ 半導体装置、メモリカード及びデータ処理システム
JP2000298992A (ja) 1999-04-13 2000-10-24 Hitachi Ltd 多値記憶不揮発性半導体メモリの制御装置
JP4282197B2 (ja) 2000-01-24 2009-06-17 株式会社ルネサステクノロジ 不揮発性半導体記憶装置
JP3983969B2 (ja) * 2000-03-08 2007-09-26 株式会社東芝 不揮発性半導体記憶装置
JP4323707B2 (ja) * 2000-10-25 2009-09-02 富士通マイクロエレクトロニクス株式会社 フラッシュメモリの欠陥管理方法
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
KR100466980B1 (ko) 2002-01-15 2005-01-24 삼성전자주식회사 낸드 플래시 메모리 장치
EP1355234B1 (de) 2002-04-15 2016-06-29 Micron Technology, Inc. Benutzung einer Fehlerkorrektionsschaltung in Programmierungs-und Löschverifikation
ITMI20022669A1 (it) * 2002-12-18 2004-06-19 Simicroelectronics S R L Struttura e metodo di rilevamento errori in un dispositivo
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
KR100546348B1 (ko) * 2003-07-23 2006-01-26 삼성전자주식회사 플래시 메모리 시스템 및 그 데이터 저장 방법
KR100630535B1 (ko) 2004-03-23 2006-09-29 에스티마이크로일렉트로닉스 엔.브이. 멀티 레벨 낸드 플래시 메모리 셀의 독출 방법 및 회로

Also Published As

Publication number Publication date
US20080162789A1 (en) 2008-07-03
CN101246738A (zh) 2008-08-20
KR100799688B1 (ko) 2008-02-01
CN101246738B (zh) 2013-05-22
US7594157B2 (en) 2009-09-22
DE102008003944B4 (de) 2022-06-23

Similar Documents

Publication Publication Date Title
DE102008003944B4 (de) Speichersystem und Programmierverfahren für ein Speichersystem
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE102008030264B4 (de) Verfahren zum Lesen eines Flashspeichers und Speichersystem
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102008002083B4 (de) Flash-Speichervorrichtung und entsprechende Programmierverfahren
DE102005063166B4 (de) Nicht-flüchtiges Speicherelement und Verfahren zur Programmierüberprüfung in einem nicht-flüchtigen Speicherelement
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE102005057112B4 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102006036070B4 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
DE102011055714A1 (de) Verfahren zum Programmieren einer nicht-flüchtigen Speichervorrichtung
DE102008009235A1 (de) Speichersystem
DE102007031027A1 (de) Leseverfahren einer Speichervorrichtung
DE102008009847A1 (de) Verfahren zum Treiben eines nichtflüchtigen Speicherelements und nichtflüchtiges Speicherelement
DE112008002553T5 (de) Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102008003055A1 (de) Flash-Speichervorrichtung und Verfahren zum Betreiben derselben
DE102007058418A1 (de) Fehlerkorrektur in Speicherbauteilen
DE102007039844A1 (de) Flashspeicherelement und Speichersystem
DE102008032235A1 (de) Nichtflüchtiges Speicherbauelement, Löschverfahren und Löschtestverfahren
DE102007061406A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, nichtflüchtiges Speicherelement und Speicherkarte
DE102011054918A1 (de) Nichtflüchtige Speichervorrichtung, Verfahren zum Betreiben derselben und elektronische Vorrichtung mit derselben
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102008005863A1 (de) Verfahren zum Reparieren eines Halbleiterspeicherbauelements und Halbleiterspeicherbauelement

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20140123

R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final