DE102007051061B4 - Nichtflüchtiges Halbleiterspeichersystem und entsprechendes Verfahren zum Durchführen einer Programmieroperation - Google Patents

Nichtflüchtiges Halbleiterspeichersystem und entsprechendes Verfahren zum Durchführen einer Programmieroperation Download PDF

Info

Publication number
DE102007051061B4
DE102007051061B4 DE102007051061.8A DE102007051061A DE102007051061B4 DE 102007051061 B4 DE102007051061 B4 DE 102007051061B4 DE 102007051061 A DE102007051061 A DE 102007051061A DE 102007051061 B4 DE102007051061 B4 DE 102007051061B4
Authority
DE
Germany
Prior art keywords
memory
data
bit
bit data
memory cells
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.)
Active
Application number
DE102007051061.8A
Other languages
English (en)
Other versions
DE102007051061A1 (de
Inventor
Jin-hyeok Choi
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
Priority claimed from KR1020060101954A external-priority patent/KR100845526B1/ko
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of DE102007051061A1 publication Critical patent/DE102007051061A1/de
Application granted granted Critical
Publication of DE102007051061B4 publication Critical patent/DE102007051061B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Abstract

Nichtflüchtiges Halbleiterspeichersystem (400), aufweisend:
- ein Speicherfeld (431) mit einer Mehrzahl von Multibitspeicherzellen; und
- eine Speichersteuereinheit (420), aufweisend:
- einen Pufferspeicher (421), der dazu ausgebildet ist, j-Bit-Daten zu speichern, die in ausgewählte Speicherzellen aus der Mehrzahl von Speicherzellen programmiert sind;
- einen Reparaturspeicher (422), der dazu ausgebildet ist, i-Bit-Daten zu speichern, die aus den ausgewählten Speicherzellen gelesen werden;
- einen Fehlerpositionsdetektor (425), der dazu ausgebildet ist, den Ort eines Bitfehlers in den i-Bit-Daten basierend auf einem Vergleich zwischen j-Bit-Daten, die aus den ausgewählten Speicherzellen gelesen werden, und den j-Bit-Daten zu bestimmen, die in dem Pufferspeicher (421) gespeichert sind; und
- eine Reparatureinheit (426), die dazu ausgebildet ist, Bitfehler in den i-Bit-Daten zu reparieren, die in dem Reparaturspeicher (422) gespeichert sind.

Description

  • Die vorliegende Erfindung betrifft ein nichtflüchtiges Halbleiterspeichersystem und ein Verfahren zum Durchführen einer Programmieroperation in einem nichtflüchtigen Multibithalbleiterspeichersystem.
  • Nichtflüchtige Speichersysteme werden gewöhnlich in einer breiten Vielzahl von elektronischen Anwendungen für Verbraucher und Industrie verwendet. Gewöhnliche Beispiele derartiger Anwendungen umfassen Mobiltelefone, Personal Digital Assistants (PDAs), MP3-Player, Digitalkameras, tragbare Festplattenlaufwerke, tragbare Medienabspielgeräte (PMP - Portable Media Players) und Hilfsspeicher, wie die grundlegenden Eingabe-/Ausgabesysteme (BIOS - Basic Input/Output System) für Personal Computer, um nur einige zu nennen.
  • Aufgrund der weit verbreiteten Nutzung von nichtflüchtigen Speichersystemen gibt es noch immer eine wachsende Nachfrage nach nichtflüchtigen Speichersystemen, die eine höhere Datenspeicherkapazität und eine höhere Gesamtleistungsfähigkeit aufweisen. Dies führt dazu, dass Forscher ständig nach neuen Wegen suchen, um mehr Daten pro Speicherchipeinheitsfläche innerhalb nichtflüchtiger Speichersysteme zu speichern.
  • Die Verwendung von nichtflüchtigen Multilevelspeicherzellen ist eine Technik, die verwirklicht wurde, um die Menge gespeicherter Daten pro Einheitsspeicherchipfläche in nichtflüchtigen Speichersystemen zu erhöhen. Eine nichtflüchtige Multilevelspeicherzelle ist in der Lage, mehr als ein Datenbit zu speichern. Demgemäß werden nichtflüchtige Multilevelspeicherzellen alternativ oft als nichtflüchtige Multibitspeicherzellen bezeichnet.
  • Ein typisches Beispiel einer nichtflüchtigen Multilevelspeicherzelle ist eine Multilevelflashspeicherzelle. Im Allgemeinen speichern Flashspeicherzellen Daten in Relation mit distinkten Schwellspannungsverteilungen. Mit anderen Worten, wenn ein anderer Datenwert innerhalb einer Flashspeicherzelle programmiert wird, ändert sich die Schwellspannung der Flashspeicherzelle von einem Wert innerhalb einer gegebenen Schwellspannungsverteilung auf einen Wert innerhalb einer anderen Schwellspannungsverteilung.
  • Beispielsweise zeigt Figur 1 zwei distinkte oder unterschiedliche Schwellspannungsverteilungen, die verwendet werden, um Daten in einer Einzellevelflashspeicherzelle zu speichern. In dem Beispiel gemäß 1, demzufolge die Einzellevelflashspeicherzelle eine Schwellspannung innerhalb einer Schwellspannungsverteilung aufweist, die mit „1“ bezeichnet ist, speichert die Einzellevelflashspeicherzelle eine logische „1“. Wenn anderenfalls die Einzellevelflashspeicherzelle eine Schwellspannung innerhalb einer Schwellspannungsverteilung aufweist, die mit „0“ bezeichnet ist, speichert die Einzellevelflashspeicherzelle eine logische „0“. Entsprechend kann der Logikzustand des einzelnen Bits, welches in der Einzellevelflashspeicherzelle gespeichert ist, bestimmt werden, indem eine Lesespannung Vread an einen Steueranschluss oder ein Steuergate der Einzellevelflashspeicherzelle angelegt wird und indem bestimmt wird, ob die Schwellspannung der Einzellevelflashspeicherzelle oberhalb oder unterhalb der Lesespannung Vread liegt, beispielsweise durch Erkennen eines Stromflusses durch die Speicherzelle während die Lesespannung Vread an den Steueranschluss oder das Steuergate angelegt ist.
  • Allgemein kann von einer Speicherzelle, die eine Schwellspannung innerhalb einer bestimmten Schwellspannungsverteilung aufweist, gesagt werden, dass sie einen „Schwellspannungszustand“ entsprechend einem Logikzustand besitzt, welcher durch die Schwellspannungsverteilung repräsentiert wird.
  • 2 zeigt vier distinkte Schwellspannungsverteilungen, die dazu verwendet werden, Daten in einer Multilevelflashspeicherzelle zu speichern. Insbesondere ist die Multilevelflashspeicherzelle in 2 in der Lage, zwei Datenbits zu speichern, wie durch die Bezeichnungen an den vier Schwellspannungsverteilungen angegeben ist. Mit anderen Worten, wenn die Multilevelflashspeicherzelle in 2 eine Schwellspannung innerhalb einer mit „11“ bezeichneten Schwellspannungsverteilung aufweist, speichert die Multilevelflashspeicherzelle eine logische „11“ (d.h. ein höchstwertiges Bit (MSB - most significant bit) „1“ und ein niederwertigstes Bit (LSB - least significant bit) „1“), wenn die Multilevelflashspeicherzelle eine Schwellspannung innerhalb einer mit „10“ bezeichneten Schwellspannungsverteilung aufweist, speichert die Multilevelflashspeicherzelle eine logische „10“, wenn die Multilevelflashspeicherzelle eine Schwellspannung innerhalb einer mit „01“ bezeichneten Schwellspannungsverteilung aufweist, speichert die Multilevelflashspeicherzelle eine logische „01“, und wenn die Multilevelflashspeicherzelle eine Schwellspannung innerhalb einer mit „00“ bezeichneten Schwellspannungsverteilung aufweist, speichert die Multilevelflashspeicherzelle eine logische „00“. Der Logikzustand der Multilevelflashspeicherzelle gemäß 2 kann bestimmt werden, indem abwechselnd Lesespannungen Vread1, Vread2 und Vread3 an einen Steueranschluss der Multilevelflashspeicherzelle angelegt werden und indem der Betrag der Schwellspannung der Multilevelflashspeicherzelle relativ zu diesen Lesespannungen bestimmt wird.
  • 3 zeigt ein beispielhaftes nichtflüchtiges Speichersystem mit einem Flashspeicher, der Multilevelflashspeicherzellen aufweist.
  • Bezugnehmend auf 3 umfasst ein beispielhaftes nichtflüchtiges Speichersystem 100 einen Host 110, eine Speichersteuereinheit 120 und einen Flashspeicher 130. Unter anderem weist die Speichersteuereinheit 120 einen Pufferspeicher 121 auf und der Flashspeicher 130 umfasst ein Speicherzellenfeld 131 und einen Seitenpuffer 132.
  • In der Speichersteuereinheit 120 speichert der Pufferspeicher 121 temporär Daten, die während Programmieroperationen in den Flashspeicher 130 programmiert werden sollen und Daten, die während Leseoperationen von dem Flashspeicher 130 gelesen werden. Der Pufferspeicher 121 arbeitet nach Maßgabe der Steuerung durch die Speichersteuereinheit 120 und überträgt während Programmieroperationen Daten von dem Host 110 zu dem Flashspeicher 130 und überträgt während Leseoperationen Daten von dem Flashspeicher 130 zu dem Host 110.
  • In dem Flashspeicher 130 speichert das Speicherzellenfeld 131 programmierte Daten. Der Seitenpuffer 132 speichert temporär Daten, die während Programmieroperationen in das Speicherzellenfeld 131 programmiert werden sollen, und Daten, die während Leseoperationen von dem Speicherzellenfeld 131 gelesen werden. Das Speicherzellenfeld 131 umfasst eine Mehrzahl von nichtflüchtigen Multibitspeicherzellen, die in Zeilen und Spalten angeordnet sind. Als ein Beispiel kann das Zellenfeld 131 ein NAND-Flashspeicherfeld aufweisen, welches NAND-Flashspeicherzellen enthält, die in einer Mehrzahl von NAND-Strängen angeordnet sind. Typischerweise sind die Spalten des Speicherzellenfelds 131 mit zugehörigen Bitleitungen verbunden und die Zeilen sind mit zugehörigen Wortleitungen verbunden.
  • Jede Zeile von nichtflüchtigen Multibitspeicherzellen, die mit derselben Wortleitung in dem Speicherzellenfeld 131 verbunden ist, entspricht einer oder mehrerer Seiten an Datenspeicherung. Typischerweise, jedoch nicht notwendigerweise, werden Programmier- und Leseoperationen für jeweils eine Seite zur Zeit oder gleichzeitig an dem Speicherzellenfeld 131 durchgeführt. Beispielsweise wird eine Seite in dem Speicherzellenfeld 131 zu programmierender Daten zunächst zu dem Seitenpuffer 132 übertragen. Dann werden basierend auf der in dem Seitenpuffer 132 gespeicherten Datenseite geeignete Spannungen an eine Wortleitung und an Bitleitungen angelegt, welche einer Zeile zu programmierender Speicherzellen in dem Speicherzellenfeld 131 entsprechen.
  • Wenn es sich bei den Speicherzellen in der Zeile um Multibitspeicherzellen handelt, wird jede Zeile aus nichtflüchtigen Speicherzellen, die mit derselben Wortleitung im Speicherzellenfeld 131 verbunden sind, einer oder mehrerer Seiten an Datenspeicherung entsprechen. Beispielsweise wird eine Zeile aus nichtflüchtigen 2-Bit-Speicherzellen zwei Seiten an Daten entsprechen. Insbesondere entsprechen die beiden Seiten, welche unabhängig voneinander programmiert werden können, einer Niederwertigstes-Bit(LSB - least significant bit)-Seite und einer Höchstwertiges-Bit(MSB - most significant bit)-Seite, da sie LSB- bzw. MSB-Daten der jeweiligen 2-Bit-Speicherzellen entsprechen.
  • Während einer Programmieroperation des nichtflüchtigen Speichersystems 100 sendet der Host 110 einen Programmierbefehl und zugehörige Programmierdaten zu der Speichersteuereinheit 120. Die Speichersteuereinheit 120 empfängt den Programmierbefehl und die Programmierdaten und speichert die Programmierdaten in dem Pufferspeicher 121. In Abhängigkeit von dem Programmierbefehl steuert die Speichersteuereinheit 120 anschließend den Flashspeicher 130 zum Laden der Programmierdaten aus dem Pufferspeicher 121 in den Seitenpuffer 132. Die Speichersteuereinheit 120 steuert anschließend weiterhin den Flashspeicher 130 zum Programmieren der Programmierdaten in ausgewählte Speicherzellen des Speicherzellenfelds 131. Der Ort der ausgewählten Speicherzellen in dem Speicherzellenfeld 131, an dem die Programmierdaten programmiert werden, wird typischerweise durch eine Programmieradresse spezifiziert, die zusammen mit dem Programmierbefehl von dem Host 110 zu der Speichersteuereinheit 120 geliefert wird. Für gewöhnlich umfasst der Flashspeicher 130 Zeilen- und Spaltendecodierer, die dazu verwendet werden können, geeignete Bitleitungen und Wortleitungen in dem Speicherzellenfeld 131 für die Programmieroperation basierend auf der Programmieradresse auszuwählen.
  • Während einer Leseoperation des nichtflüchtigen Speichersystems 100 sendet der Host 110 einen Lesebefehl zu der Speichersteuereinheit 120. In Abhängigkeit von dem Lesebefehl steuert die Speichersteuereinheit 120 den Flashspeicher 130 zum Übertragen von gelesenen Daten oder Lesedaten, die in ausgewählten Speicherzellen des Speicherzellenfelds 131 gespeichert sind, zu dem Seitenpuffer 132. Die Speichersteuereinheit 120 steuert dann weiterhin den Flashspeicher 130 zum Übertragen der Lesedaten von dem Seitenpuffer 132 zu dem Pufferspeicher 121. Schließlich steuert die Speichersteuereinheit 120 den Pufferspeicher 121 zum Übertragen der Lesedaten von dem Pufferspeicher 121 zu dem Host 110. Ähnlich wie bei der Programmieroperation wird der Ort der ausgewählten Speicherzellen des Speicherzellenfelds 131 während der Leseoperation typischerweise durch eine Leseadresse spezifiziert, die zusammen mit dem Lesebefehl von dem Host 110 zu der Speichersteuereinheit 120 geliefert wird. In gleicher Weise verwendet der Flashspeicher 130 für gewöhnlich Zeilen- und Spaltendecodierer zum Auslesen geeigneter Bitleitungen und Wortleitungen des Speicherzellenfelds 131 für die Leseoperation basierend auf der Leseadresse.
  • Im Anschluss an eine Programmieroperation steuert die Speichersteuereinheit 120 typischerweise den Flashspeicher 130 zum Ausführen einer Programmierprüfoperation. Die Programmierprüfoperation ist einer Leseoperation ähnlich, mit der Ausnahme, dass der Zweck der Programmierprüfoperation darin besteht, zu erkennen, ob ausgewählte Speicherzellen erfolgreich programmiert wurden. Während der Programmierprüfoperation werden Programmierprüfdaten von ausgewählten Speicherzellen, die während der Programmieroperation programmiert wurden, zu dem Seitenpuffer 132 übertragen. Der Seitenpuffer 132 speichert die Programmierprüfdaten temporär und die Programmierprüfdaten werden mit Programmierdaten verglichen, die noch in dem Pufferspeicher 121 gespeichert sind. Wenn die in dem Pufferspeicher 121 gespeicherten Programmierdaten nicht den Programmierprüfdaten in dem Seitenpuffer 132 entsprechen, wurden die ausgewählten Speicherzellen nicht erfolgreich programmiert. Wenn anderenfalls die in dem Pufferspeicher 121 gespeicherten Programmierdaten den Programmierprüfdaten in dem Seitenpuffer 132 entsprechen, wurden die ausgewählten Speicherzellen erfolgreich programmiert. Wenn die ausgewählten Speicherzellen nicht erfolgreich programmiert wurden, werden diese Speicherzellen anschließend entweder mit den Programmierdaten, die in dem Pufferspeicher 121 gespeichert sind, erneut programmiert oder die Programmierdaten werden an einem anderen Ort des Speicherzellenfelds 131 programmiert, wie einer anderen Seite oder einem anderen Block.
  • 4 und 5 zeigen unterschiedliche Verfahren, die verwendet werden können, um ein nichtflüchtiges Speichersystem, wie dasjenige in 3, zu programmieren. Insbesondere handelt es sich bei den Verfahren gemäß 4 und 5 um Beispiele von Verfahren zum Programmieren nichtflüchtiger Speichersysteme, die 2-Bit-Speicherzellen aufweisen. In diesen und anderen Beispielen können die Entsprechungen zwischen Logikzuständen und Schwellspannungen umgeordnet werden. Beispielsweise sind in 4 und 5 den Schwellspannungen Logikzustände in einer nicht-Gray-codierten bzw. einer Gray-codierten Reihenfolge zugeordnet. Zusätzlich kann auch die Reihenfolge, in der die betreffenden Bits programmiert werden, verändert werden. So kann beispielsweise, obwohl 4 und 5 das Programmieren eines LSB vor dem Programmieren eines MSB zeigen, alternativ ein MSB vor dem LSB programmiert werden. Weiterhin ist dem Fachmann eine Vielzahl anderer Programmieränderungen bekannt, die daher vorliegend nicht detailliert beschrieben werden.
  • Bezugnehmend auf 4 ist ein programmierter Zustand einer nichtflüchtigen Multibitspeicherzelle in Relation mit fünf unterschiedlichen Schwellspannungsverteilungen charakterisiert. Vier dieser fünf Schwellspannungsverteilungen entsprechend jeweiligen Logikzuständen „11“, „01“, „10“ und „00“ und eine Schwellspannungsverteilung entspricht einem Zwischenprogrammierzustand oder Schwellenspannungszustand, der durch einen gestrichelten Bogen dargestellt ist und der eine Lesespannung VR2 der nichtflüchtigen Multibitspeicherzelle überlappt. In diesem Beispiel entspricht der Logikzustand „11“ einem gelöschten Zustand der nichtflüchtigen Multibitspeicherzelle und Logikzustände „01“, „10“ und „00“ entsprechen Programmierzuständen oder programmierten Zuständen der nichtflüchtigen Multibitspeicherzelle.
  • Bei dem Verfahren, das in 4 dargestellt ist, befindet sich die Speicherzelle anfänglich in dem gelöschten Zustand. Aus dem gelöschten Zustand wird zuerst ein LSB der Speicherzelle programmiert, gefolgt von einem MSB der Speicherzelle. Beim Programmieren des LSB ändert das Verfahren, falls das in der Speicherzelle zu programmierende LSB eine logische „0“ ist, die Speicherzelle von dem Logikzustand „11“ in den Zwischenprogrammierzustand, was durch einen mit „Program0“ bezeichneten Pfeil angezeigt ist. Anderenfalls verbleibt die Speicherzelle in dem Logikzustand „11“. Bei der anschließenden Programmierung des MSB ändert das Verfahren, falls das in der Speicherzelle zu programmierende MSB eine logische „0“ ist, die Speicherzelle aus dem Zwischenprogrammierzustand in den Logikzustand „00“, wie durch einen mit „Program1“ bezeichneten Pfeil angezeigt ist, oder von dem Logikzustand „11“ in den Logikzustand „01“, wie durch einen mit „Program3“ bezeichneten Pfeil angezeigt ist, abhängig von dem Logikzustand des LSB. Wenn es sich jedoch bei dem in der Speicherzelle zu programmierenden MSB um eine logische „1“ handelt, ändert das Verfahren die Speicherzelle von dem Zwischenprogrammierzustand in den Logikzustand „10“, wie durch einen mit „Program2“ bezeichneten Pfeil angezeigt ist, oder erhält die Speicherzelle in dem Logikzustand „11“, abhängig von dem Logikzustand des LSB.
  • Bezugnehmend auf 5 ist ein programmierter Zustand einer nichtflüchtigen Multibitspeicherzelle in Relation mit vier unterschiedlichen Schwellspannungsverteilungen gekennzeichnet. Die vier Schwellspannungsverteilungen entsprechen jeweils Logikzuständen „11“, „10“, „00“ und „01“. In diesem Beispiel entspricht der Logikzustand „11“ einem gelöschten Zustand der nichtflüchtigen Multibitspeicherzelle und Logikzustände „10“, „00“ und „01“ entsprechen Programmierzuständen oder programmierten Zuständen der nichtflüchtigen Multibitspeicherzelle.
  • Bei dem Verfahren gemäß 5 befindet sich die Speicherzelle anfänglich in dem gelöschten Zustand. Aus dem gelöschten Zustand wird zunächst ein LSB der Speicherzelle programmiert, gefolgt von einem MSB der Speicherzelle. Beim Programmieren des LSB verändert das Verfahren, falls das in der Speicherzelle zu programmierende LSB eine logische „0“ ist, die Speicherzelle aus dem Logikzustand „11“ in den Logikzustand „10“, wie durch einen mit „Program1“ bezeichneten Pfeil angezeigt. Anderenfalls verbleibt die Speicherzelle in dem Logikzustand „11“. Bei der nachfolgenden Programmierung des MSB ändert das Verfahren, falls das in der Speicherzelle zu programmierende MSB eine logische „0“ ist, die Speicherzelle von dem Logikzustand „10“ in den Logikzustand „00“, wie durch einen mit „Program2“ bezeichneten Pfeil angezeigt, oder von dem Logikzustand „11“ in den Logikzustand „01“, wie durch einen mit „Program3“ bezeichneten Pfeil angezeigt, abhängig von dem Logikzustand des LSB. Wenn anderenfalls das in der Speicherzelle zu programmierende MSB eine logische „1“ ist, verbleibt die Speicherzelle in dem Logikzustand „10“ oder in dem Logikzustand „11“, in Abhängigkeit von dem Logikzustand des LSB.
  • Im Allgemeinen werden dann, wenn die in den 4 und 5 dargestellten Programmierverfahren durchgeführt werden, das LSB und das MSB der Speicherzelle nicht immer in unmittelbarer Abfolge programmiert. Stattdessen kann beispielsweise das LSB der Speicherzelle zuerst programmiert werden, woran sich Programmieroperationen für Speicherzellen in unterschiedlichen Zeilen des Speicherzellenfelds anschließen, und anschließend wird das MSB der Speicherzelle programmiert. Dementsprechend muss der Logikzustand des LSB in der Regel überprüft werden, indem z.B. die Speicherzelle gelesen wird, bevor das MSB der Speicherzelle programmiert werden kann, so dass die Schwellspannung der Speicherzelle auf einen Wert innerhalb der korrekten Schwellspannungsverteilung geändert werden kann.
  • Wenn jedoch unglücklicherweise ein Fehler oder eine Fehlfunktion während des Programmierens des MSB auftritt, kann das LSB dauerhaft verloren gehen. Wenn beispielsweise die MSB-Programmierung an der Speicherzelle vorgenommen wird, wie durch den mit „Program3“ bezeichneten Pfeil in 5 angegeben, und wenn die MSB-Programmierung außerhalb oder abweichend von der Schwellspannungsverteilung abbricht, welche dem Logikzustand „01“ entspricht, kann es basierend auf einer einfachen Inspektion oder Untersuchung der Speicherzelle unmöglich sein, zu bestimmen, ob das LSB der Speicherzelle eine logische „1“ oder eine logische „0“ war. Glücklicherweise können die MSB-Daten in solchen Fällen in der Regel aus dem Pufferspeicher 121 zurückgenommen werden. Allerdings kann der Verlust der LSB-Daten die Leistungsfähigkeit von nichtflüchtigen Speichersystemen letztendlich herabsetzen.
  • Diese Problematik wird zunehmend wichtig, da Forscher weiterhin bemüht sind, immer mehr Datenspeicherkapazität innerhalb einer begrenzten Chipfläche von nichtflüchtigen Speicherelementen unterzubringen, da mit zunehmender Integrationsdichte nichtflüchtiger Speicherchips die Wahrscheinlichkeit für Fehler und Fehlfunktionen bei Programmieroperationen entsprechend zunimmt. Im Ergebnis wäre es nützlich, Probleme wie das vorstehend geschilderte Datenverlustproblem effektiv anzugehen, die in Multilevelzellen durch Programmierfehler oder Fehlfunktionen hervorgerufen werden.
  • Aus der US 5,523,972 A ist ein nichtflüchtiges Halbleiterspeichersystem bekannt, aufweisend ein Speicherfeld mit einer Mehrzahl von Multibitspeicherzellen; und eine Speichersteuereinheit, aufweisend: einen Pufferspeicher, der dazu ausgebildet ist, j-Bit-Daten zu speichern, die in ausgewählte Speicherzellen aus der Mehrzahl von Speicherzellen programmiert sind; eine Vorrichtung, um i-Bit-Daten aus den ausgewählten Speicherzellen auszulesen; einen Fehlerpositionsdetektor, der dazu ausgebildet ist, den Ort eines Bitfehlers in den i-Bit-Daten basierend auf einem Vergleich zwischen j-Bit-Daten, die aus den ausgewählten Speicherzellen gelesen werden, und den j-Bit-Daten zu bestimmen, die in dem Pufferspeicher gespeichert sind; und eine Reparatureinheit, die dazu ausgebildet ist, Bitfehler in den i-Bit-Daten zu reparieren, die in dem Speicherfeld gespeichert sind.
  • Der Erfindung liegt das technische Problem zugrunde, ein nichtflüchtiges Halbleiterspeichersystem und ein Verfahren zum Durchführen einer Programmieroperation in einem nichtflüchtigen Multibithalbleiterspeichersystem anzugeben, welche vermeiden, dass Daten aufgrund von Programmierfehlern oder Fehlfunktionen verloren gehen.
  • Die Erfindung löst das Problem mittels eines nichtflüchtigen Halbleiterspeichersystems mit den Merkmalen des Patentanspruchs 1 oder des Patentanspruchs 9 und mittels eines Verfahrens zur Durchführung einer Programmieroperation in einem nichtflüchtigen Multibithalbleiterspeichersystem mit den Merkmalen des Patentanspruchs 19 oder des Patentanspruchs 26.
  • Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben, deren Wortlaut hiermit durch Bezugnahme in die Beschreibung aufgenommen wird, um unnötige Textwiederholungen zu vermeiden.
  • In Erkenntnis zumindest der weiter oben beschriebenen Probleme schaffen Ausgestaltungen der Erfindung nichtflüchtige Speichersysteme und Verfahren, die angepasst sind, um einen Datenverlust aufgrund von Programmierfehlern oder Fehlfunktionen zu vermeiden.
  • Vorteilhafte Ausgestaltungen der Erfindung, die weiter unten detailliert beschrieben sind, sowie die zur Erleichterung des Verständnisses der Erfindung beschriebenen Ausgestaltungen des Standes der Technik sind in den Zeichnungen dargestellt. Es zeigt/zeigen:
    • 1 einen Graph zur Darstellung zweier getrennter Schwellspannungsverteilungen, die zum Speichern von Daten in einer Einzellevelflashspeicherzelle verwendet werden, gemäß dem Stand der Technik;
    • 2 einen Graph zur Darstellung von vier getrennten Schwellspannungsverteilungen, die zum Speichern von Daten in einer Multilevelflashspeicherzelle verwendet werden, gemäß dem Stand der Technik;
    • 3 ein schematisches Blockschaltbild zur Darstellung eines herkömmlichen nichtflüchtigen Speichersystems;
    • 4 ein Schwellspannungsverteilungsdiagramm zur Darstellung eines Typs von Programmieroperation für nichtflüchtige Speicherzellen in einem nichtflüchtigen Speichersystem;
    • 5 ein Schwellspannungsverteilungsdiagramm zur Darstellung eines anderen Typs von Programmieroperation für nichtflüchtige Speicherzellen in einem nichtflüchtigen Speichersystem;
    • 6 ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems gemäß einer Ausgestaltung der Erfindung;
    • 7 ein Flussdiagramm zur Darstellung eines Programmierverfahrens für ein nichtflüchtiges Speichersystem gemäß einer Ausgestaltung der Erfindung;
    • 8 ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems gemäß einer anderen Ausgestaltung der Erfindung;
    • 9 ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems gemäß einer anderen Ausgestaltung der Erfindung;
    • 10 ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems gemäß einer weiteren Ausgestaltung der Erfindung;
    • 11 ein Schwellspannungsverteilungsdiagramm, das eine Art von Programmieroperation für nichtflüchtige Speicherzellen in dem nichtflüchtigen Speichersystem gemäß 10 darstellt;
    • 12 ein Diagramm zur Darstellung einer Fehlerpositionserkennung- und Datenwiederherstellungsoperation des nichtflüchtigen Speichersystems in 10;
    • 13 ein Flussdiagramm zur Darstellung eines Verfahrens zum Programmieren des Speichersystems in 10 gemäß einer Ausgestaltung der Erfindung;
    • 14 ein schematisches Blockschaltbild eines nichtflüchtigen Speichersystems gemäß noch einer anderen Ausgestaltung der Erfindung; und
    • 15 ein schematisches Blockschaltbild eines nichtflüchtigen Speichersystems gemäß noch einer anderen Ausgestaltung der Erfindung.
  • Allgemein schaffen Ausgestaltungen der Erfindung nichtflüchtige Speichersysteme und zugeordnete Verfahren, die angepasst sind, zu verhindern, dass Daten, die bereits in nichtflüchtigen Multibitspeicherzellen gespeichert sind, verloren gehen, wenn die nichtflüchtigen Multibitspeicherzellen weiter programmiert werden. Beispielsweise schaffen ausgewählte Ausgestaltungen der Erfindung eine Speichersteuereinheit mit einem Rücksicherungsspeicher und/oder mit Datenreparaturelementen, die eingesetzt werden, um zu verhindern, dass Daten, die bereits in dem nichtflüchtigen Multibitspeicherzellen programmiert sind, verloren gehen, wenn die Speicherzellen weiter programmiert werden. Andere Ausgestaltungen der Erfindung schaffen eine Speichersteuereinheit mit einem Reparaturspeicher, die bzw. der dazu ausgebildet ist, Daten zu speichern, die bereits in die nichtflüchtigen Multibitspeicherzellen programmiert wurden, um die Daten zu reparieren, nachdem ein Programmierfehler der Speicherzellen erkannt wurde.
  • Ausgewählte Ausgestaltungen der Erfindung werden weiter unten in Relation mit nichtflüchtigen Speichersystemen beschrieben, welche 2-Bit-Speicherzellen aufweisen. Allerdings könnten derartige Ausgestaltungen leicht derart modifiziert werden, so dass sie mit nichtflüchtigen Speichersystemen arbeiten, die n-Bit-Zellen aufweisen, wobei „n“ eine ganze Zahl größer als 2 ist. Zusätzlich wird in mehreren offenbarten Ausgestaltungen ein niederwertigstes Bit von Speicherzellen programmiert bevor ein höchstwertiges Bit der Speicherzellen programmiert wird. Allerdings kann auch die Reihenfolge der Programmierung in einfacher Weise modifiziert werden.
  • 6 ist ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems gemäß einer Ausgestaltung der Erfindung.
  • Bezugnehmend auf 6 umfasst ein nichtflüchtiges Speichersystem 200 einen Host 210, eine Speichersteuereinheit 220 und einen Flashspeicher 230. Die Speichersteuereinheit 220 umfasst einen Pufferspeicher 221 und einen Rücksicherungsspeicher 222 für ein niederwertigstes Bit (LSB - least significant bit). Der Flashspeicher 230 umfasst ein Speicherzellenfeld 231, einen Decodierer 232, einen Seitenpuffer 233, eine Bitleitungsauswahlschaltung 234, einen Datenpuffer 235 und eine Steuereinheit 236.
  • In der Speichersteuereinheit 220 speichert der Pufferspeicher 221 temporär Daten, die während Programmieroperationen in den Flashspeicher 230 zu programmieren sind. Der Pufferspeicher 221 speichert weiterhin temporär Daten, die während Leseoperationen aus dem Flashspeicher 230 gelesen werden. Der Pufferspeicher 221 arbeitet nach Maßgabe der Steuerung durch die Speichersteuereinheit 220 und empfängt Daten von dem Host 210 und überträgt Daten zu dem Flashspeicher 230 während Programmieroperationen und er empfängt Daten von dem Flashspeicher 230 und überträgt Daten zu dem Host 210 während Leseoperationen.
  • Der LSB-Rücksicherungsspeicher 222 speichert Daten, die bereits in ausgewählten Speicherzellen des Flashspeichers 230 gespeichert wurden bevor Programmierdaten, die in dem Pufferspeicher 221 gespeichert sind, in die ausgewählten Speicherzellen programmiert werden. Beispielsweise kann der Pufferspeicher 221 während einer Programmieroperation der ausgewählten Speicherzellen MSB-Daten speichern, die in die ausgewählten Speicherzellen programmiert werden sollen. Die Speichersteuereinheit steuert somit den Flashspeicher 230 zur Übertragung von LSB-Daten, die bereits in den ausgewählten Speicherzellen gespeichert sind, in den LSB-Rücksicherungsspeicher 222. Da der LSB-Rücksicherungsspeicher 222 Daten speichert, die bereits in die ausgewählten Speicherzellen programmiert wurden, und da der Pufferspeicher 221 Daten speichert, die noch in die ausgewählten Speicherzellen zu programmieren sind, können dann, wenn ein Fehler oder eine Fehlfunktion während der Programmierung der ausgewählten Speicherzellen auftritt, jegliche aus den ausgewählten Speicherzellen verlorene Daten aus dem Pufferspeicher 221 und dem LSB-Rücksicherungsspeicher 222 zurückgewonnen werden. Im Ergebnis erhöht das Vorhandensein des LSB-Rücksicherungsspeichers 222 die Zuverlässigkeit des nichtflüchtigen Halbleiterspeicherelements 200 gemäß 6.
  • Allgemein können der Pufferspeicher 221 und der LSB-Rücksicherungsspeicher 222 in einem einzelnen Speicherchip angeordnet sein. Beispielsweise könnte die Speichersteuereinheit 220 diejenigen Daten, die bereits in die ausgewählten Speicherzellen programmiert wurden, in einem ersten Bereich eines als Chip ausgebildten dynamischen Speichers mit wahlfreiem Zugriff (DRAM - dynamic random access memory) speichern, der als LSB-Rücksicherungsspeicher 222 bezeichnet wird, und die Speichersteuereinheit 220 könnte die noch in die ausgewählten Speicherzellen zu programmierenden Daten in einem zweiten Bereich des DRAM-Chips speichern, der als Pufferspeicher 221 bezeichnet wird.
  • In dem Flashspeicher 230 speichert das Speicherzellenfeld 231 programmierte Daten. Der Decodierer 232 empfängt Lese- und Programmieradressen von der Speichersteuereinheit 220 über die Steuereinheit 236 und steuert die Aktivierung oder Auswahl von Wortleitungen und Bitleitungen für Schreib- und Programmieroperationen nach Maßgabe der Lese- und Programmieradressen. In dem Beispiel gemäß 6 ist der Decodierer 232 mit dem Speicherzellenfeld 231 über Wortleitungen WL0 bis WLn verbunden und erzeugt ein Bitleitungsauswahlsignal Yi, um die Aktivierung oder Auswahl von Bitleitungen für Programmier- und Leseoperationen durch die Bitleitungsauswahlschaltung 234 zu steuern.
  • Der Seitenpuffer 233 ist mit dem Speicherzellenfeld 231 über Bitleitungen BL0 bis BLn verbunden und speichert temporär einerseits Daten, die in dem Speicherzellenfeld 231 zu programmieren sind, während Programmieroperationen und andererseits Daten, die von dem Speicherzellenfeld 231 gelesen werden, während Leseoperationen. Die Bitleitungsauswahlschaltung 234 steuert die Aktivierung oder Auswahl von Bitleitungen für Programmier- und Leseoperationen basierend auf dem Bitleitungsauswahlsignal Yi. Die ausgewählten oder aktivierten Bitleitungen werden getrieben, um die ausgewählten Speicherzellen in dem Speicherzellenfeld 231 zu programmieren oder zu lesen, basierend auf den Daten, die in dem Seitenpuffer 233 gespeichert sind.
  • Der Datenpuffer 235 ist ein Eingabe-/Ausgabepuffer, der dazu verwendet wird, Daten zwischen der Speichersteuereinheit 220 und dem Flashspeicher 230 zu übertragen. Beispielsweise werden bei Leseoperationen Daten, die in ausgewählten Speicherzellen gespeichert sind, von dem Speicherzellenfeld 231 zu dem Datenpuffer 235 über den Seitenpuffer 233 und die Bitleitungsauswahlschaltung 234 übertragen. Anschließend werden die Daten von dem Datenpuffer 235 zu der Speichersteuereinheit 220 übertragen und danach werden die Daten zu dem Host 210 übertragen. Während einer Programmieroperation werden dagegen Daten, die in ausgewählten Speicherzellen des Speicherzellenfelds 231 zu programmieren sind, von dem Host 210 zu der Speichersteuereinheit 220 und anschließend zu dem Datenpuffer 235 übertragen. Dann werden die Daten von dem Datenpuffer 235 zu dem Seitenpuffer 233 über die Bitleitungsauswahlschaltung 234 übertragen und anschließend werden die Daten in die ausgewählten Speicherzellen programmiert. Der Datenpuffer 235 arbeitet nach Maßgabe der Steuerung durch die Steuereinheit 236, welche ihrerseits in Abhängigkeit von Steuersignalen arbeitet, die von der Speichersteuereinheit 220 erzeugt werden.
  • Das Speicherzellenfeld 231 umfasst eine Mehrzahl von nichtflüchtigen Multibitspeicherzellen, die in Zeilen und Spalten angeordnet sind. Beispielsweise kann das Zellenfeld 231 ein NAND-Flashspeicherfeld umfassen, welches NAND-Flashspeicherzellen enthält, die in einer Mehrzahl von NAND-Strängen angeordnet sind. Typischerweise sind die Spalten des Speicherzellenfelds 231 mit zugehörigen Bitleitungen verbunden und die Zeilen sind mit zugehörigen Wortleitungen verbunden.
  • Jede Zeile von nichtflüchtigen Multibitspeicherzellen, die mit derselben Wortleitung in dem Speicherzellenfeld 231 verbunden sind, entspricht einer oder mehrerer Seiten an Datenspeicher. Beispielsweise ist in 6 eine Seite „Page0“ mittels eines gepunkteten Ovals dargestellt. Das Speicherzellenfeld 231 ist weiterhin mit einer Mehrzahl von Blöcken ausgebildet, von denen jeder eine Mehrzahl von Seiten aufweist. Als ein typisches Beispiel kann jede Seite 512 Byte oder 2 kByte an Daten enthalten und jeder Block kann 32 oder 64 Datenseiten aufweisen.
  • In der Regel, jedoch nicht notwendigerweise, werden Programmier- und Leseoperationen an dem Speicherzellenfeld 231 für jeweils eine Seite zur Zeit durchgeführt und Löschoperationen werden für einen Block zur Zeit durchgeführt. Alternativ könnte beispielsweise das Speicherzellenfeld 231 auch in Einheiten von einem oder mehreren Blöcken zur Zeit programmiert werden.
  • In dem Beispiel gemäß 6 handelt es sich bei den Speicherzellen in dem Speicherzellenfeld 231 um nichtflüchtige 2-Bit-Speicherzellen. Diese Speicherzellen werden programmiert, indem zunächst ein LSB und später ein MSB programmiert werden. Das LSB und das MSB jeder Speicherzelle werden nicht notwendigerweise unmittelbar nacheinander programmiert. Mit anderen Worten, das LSB einer ausgewählten Speicherzelle kann zuerst programmiert werden, woraufhin andere Speicherzellen programmiert werden, woran sich die Programmierung des MSB der ausgewählten Speicherzelle anschließt. In dem Beispiel gemäß 6 werden die Speicherzellen in dem Speicherzellenfeld 231 mit einer Seite zur Zeit programmiert und gelesen und mit einem Block zur Zeit gelöscht.
  • Wie vorstehend beschrieben, könnten die Multilevelspeicherzellen in dem Beispiel gemäß 6 und gemäß anderen Ausgestaltungen alternativ mehr als zwei Bits speichern. Beispielsweise könnten die Speicherzellen 3-Bit-Speicherzellen, 4-Bit-Speicherzellen usw. sein. In solchen Speicherzellen, die dazu ausgebildet sind, unterschiedliche Bitanzahlen zu speichern, können Daten, die in den Speicherzellen gespeichert werden sollen, allgemein als 1-Bit-Daten, 2-Bit-Daten, 3-Bit-Daten usw. bezeichnet werden, um sie von den LSB-Daten und den MSB-Daten im Falle von 2-Bit-Speicherzellen zu unterscheiden. Beispielsweise wird in einer 4-Bit-Speicherzelle, die einen Datenstring „0100“ speichert, das Bit „1“ als 3-Bit-Datum bezeichnet, da es in dem String an einer dritten Position steht.
  • Wie ebenfalls vorstehend beschrieben, könnten die Multilevelspeicherzellen in dem Beispiel gemäß 6 und gemäß anderen Ausgestaltungen alternativ in abweichenden Reihenfolgen programmiert werden. Beispielsweise könnten Bits höherer Ordnung (z.B. MSB-Daten) vor Bits niedrigerer Ordnung (z.B. LSB-Daten) programmiert werden. Des Weiteren könnte die Programmierreihenfolge weiter modifiziert werden, indem die Reihenfolge von Zuordnungen zwischen Logikzuständen und Schwellspannungsverteilungen, z.B. denjenigen gemäß 5, umgeordnet wird.
  • 7 ist ein Flussdiagramm zur Darstellung eines Verfahrens zum Programmieren des in 6 dargestellten nichtflüchtigen Speichersystems 200 gemäß einer Ausgestaltung der Erfindung. Obwohl sich das in 7 dargestellte Verfahren auf das nichtflüchtige Speichersystem 200 bezieht, kann das Verfahren leicht modifiziert werden, um mit vielfältigen anderen nichtflüchtigen Speichersystemen gemäß anderen Ausgestaltungen der Erfindung zu funktionieren. In der folgenden Beschreibung werden beispielhafte Verfahrensschritte durch Klammerausdrücke (SXXX) bezeichnet, um sie von beispielhaften grafischen und Systemelementen zu unterscheiden, die in den 1 bis 5 dargestellt sind.
  • Bezugnehmend auf 7 steuert die Speichersteuereinheit 220 den Flashspeicher 230 zum Programmieren einer Seite von LSB-Daten in ausgewählte Speicherzellen eines ersten Speicherblocks block1 des Speicherzellenfelds 231 (S110). Nach dem Programmieren der LSB-Daten in die ausgewählten Speicherzellen führt der Flashspeicher 230 typischerweise eine Programmierprüfoperation durch, um zu bestimmen, ob die LSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden. In dem Verfahren gemäß 7 sei angenommen, dass die LSB-Daten erfolgreich programmiert wurden. Im Allgemeinen wird das Verfahren nicht fortgesetzt, solange nicht die LSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden. Nachdem die Seite von LSB-Daten in die ausgewählten Speicherzellen programmiert wurde, können andere Programmieroperationen für andere Speicherzellen in dem Speicherzellenfeld 231 durchgeführt werden, bevor MSB-Daten in die ausgewählten Speicherzellen programmiert werden.
  • Sobald die MSB-Daten zur Programmierung in die ausgewählten Speicherzellen anstehen, steuert die Speichersteuereinheit 220 den Flashspeicher 230 zum Rücksichern der LSB-Daten in den ausgewählten Speicherzellen durch Übertragen der LSB-Daten zu dem LSB-Rücksicherungsspeicher 222 der Speichersteuereinheit 220 (S120). Sobald die LSB-Daten von den ausgewählten Speicherzellen in dem LSB-Rücksicherungsspeicher 222 gespeichert sind, wird eine Seite mit MSB-Daten in die ausgewählten Speicherzellen des ersten Speicherblocks block1 des Flashspeichers 230 programmiert (S130).
  • Nachdem die LSB- und MSB-Daten in den Schritten S110 bzw. S130 in die ausgewählten Speicherzellen von block1 programmiert wurden führt der Flashspeicher 230 eine Programmierprüfoperation durch, um zu bestimmen, ob die MSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden (S140). Wenn der Flashspeicher 230 feststellt, dass die MSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden, endet das Verfahren, wie durch einen in 7 mit „Nein“ bezeichneten Pfeil angegeben (welcher das Fehlen eines Programmierfehlers anzeigt). Wenn dagegen der Flashspeicher 230 bestimmt, dass die Daten nicht erfolgreich in die ausgewählten Speicherzellen programmiert wurden, steuert die Speichersteuereinheit 220 den Flashspeicher 230 zum Programmieren der Seite von LSB-Daten in einen zweiten Speicherblock block2 in dem Flashspeicher 230 (S150) und anschließend steuert die Speichersteuereinheit 220 den Flashspeicher 230 zum Programmieren der Seite von MSB-Daten in einen zweiten Speicherblock block2 in dem Flashspeicher 230 (S160). Nachdem die LSB- und MSB-Daten erfolgreich in den Flashspeicher 230 programmiert wurden, endet das Programmierverfahren gemäß 7.
  • 8 ist ein schematisches Blockdiagramm zur Darstellung eines nichtflüchtigen Speichersystems 300 gemäß einer anderen Ausgestaltung der Erfindung.
  • Bezugnehmend auf 8 umfasst das nichtflüchtige Speichersystem 300 einen Host 310, eine Speichersteuereinheit 320 sowie eine ersten und einen zweiten Flashspeicherchip 330 bzw. 340. Die Speichersteuereinheit 320 umfasst einen ersten Pufferspeicher 321, einen ersten LSB-Rücksicherungsspeicher 322, einen zweiten Pufferspeicher 323 und einen zweiten LSB-Rücksicherungsspeicher 324. Typischerweise sind der erste Pufferspeicher 321 und der zweite Pufferspeicher 323 sowie der erste LSB-Rücksicherungsspeicher 322 und der zweite LSB-Rücksicherungsspeicher 324 auf einem einzelnen Chip ausgebildet, wie einen DRAM. Der erste Flashspeicherchip 330 umfasst ein erstes Zellenfeld 331 und einen ersten Seitenpuffer 332 und der zweite Flashspeicherchip 340 umfasst ein zweites Zellenfeld 341 und einen zweiten Seitenpuffer 342.
  • In dem nichtflüchtigen Speichersystem 300 fungieren der Host 310 und die Speichersteuereinheit 320 ähnlich wie der Host 210 bzw. die Speichersteuereinheit 220 in 6. Des Weiteren arbeiten der erste und der zweite Flashspeicherchip 330 bzw. 340 jeweils ähnlich wie der Flashspeicher 220 in 6. Allerdings speichern in der Speichersteuereinheit 320 der erste Pufferspeicher 321 und der erste LSB-Rücksicherungsspeicher 322 jeweils Daten, die zum Programmieren und Lesen des ersten Flashspeicherchips 330 verwendet werden, und der zweite Pufferspeicher 323 und der zweite LSB-Rücksicherungsspeicher 324 speichern jeweils Daten, die zum Programmieren und Lesen des zweiten Flashspeicherchips 340 verwendet werden. Des Weiteren arbeitet der Flashspeicherchip 330 in Abhängigkeit von einem ersten Chipauswahlsignal CS1, das durch die Speichersteuereinheit 320 erzeugt wird, und der Flashspeicherchip 340 arbeitet in Abhängigkeit von einem zweiten Chipauswahlsignal CS2, das von der Speichersteuereinheit 320 erzeugt wird.
  • Im Zuge einer Programmieroperation des nichtflüchtigen Speichersystems 300 wählt die Speichesteuereinheit 320 zunächst entweder den ersten oder den zweiten Flashspeicherchip 330 bzw. 340 aus, indem sie ein erstes und ein zweites Chipauswahlsignal CS1 bzw. CS2 verwendet. Anschließend werden die Speicherzellen in dem ausgewählten Speicherchip programmiert, indem ein Programmierverfahren wie dasjenige in 7 verwendet wird. Mit anderen Worten, LSB-Daten werden zuerst in ausgewählten Speicherzellen in einen ersten Block innerhalb des ausgewählten Speicherchips programmiert. Dann werden die LSB-Daten in einen LSB-Rücksicherungsspeicher entsprechend dem ausgewählten Speicherchip übertragen bevor MSB-Daten in die ausgewählten Speicherzellen in dem ersten Block programmiert werden. Danach werden die MSB-Daten in die ausgewählten Speicherzellen in dem ersten Block programmiert und der ausgewählte Speicherchip führt anschließend eine Programmierprüfoperation durch, um zu bestimmen, ob die MSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden. Wenn die MSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert wurden, bricht die Programmieroperation ab. Anderenfalls, d.h. wenn ein Fehler oder eine Fehlfunktion während der Programmierung der MSB-Daten in die ausgewählte Speicherzellen in dem ersten Block auftritt, können die LSB-Daten und die MSB-Daten aus dem LSB-Rücksicherungsspeicher und dem Pufferspeicher entsprechend dem ausgewählten Speicherchip zurückgewonnen und in einen zweiten Speicherblock in dem ausgewählten Flashspeicherchip oder in dem anderen Flashspeicherchip programmiert werden.
  • In gleicher Weise selektiert die Speichersteuereinheit 320 während einer Leseoperation des nichtflüchtigen Speichersystems 300 den ersten oder den zweiten Flashspeicherchip 330 bzw. 340 gemäß einer Adresse zu lesender Speicherzellen. Dann führen der ausgewählte Flashspeicherchip und die Speichersteuereinheit 320 eine Leseoperation ähnlich zu derjenigen Operation durch, die oben in Relation mit dem nichtflüchtigen Speichersystem 100 oder 200 beschrieben wurde.
  • 9 ist ein schematisches Blockschaltbild zur Darstellung eines nichtflüchtigen Speichersystems 900 gemäß noch einer anderen Ausgestaltung der Erfindung. Das nichtflüchtige Speichersystem 900 ist ähnlich zu dem nichtflüchtigen Speichersystem 300 mit der Ausnahme, dass das nichtflüchtige Speichersystem 900 eine beliebige Anzahl „n“ von Flashspeicherchips und zugehörige Pufferspeicher und LSB-Rücksicherungsspeicher und nicht nur jeweils zwei aufweisen kann.
  • Bezugnehmend auf 9 umfasst ein nichtflüchtiges Speichersystem 900 einen Host 910, eine Speichersteuereinheit 920 und eine Mehrzahl von Flashspeicherchips 931 bis 93n. Die Speichersteuereinheit 920 umfasst einen Pufferspeicher und einen LSB-Rücksicherungsspeicher für jeden Flashspeicherchip. Insbesondere umfasst die Speichersteuereinheit 920 Pufferspeicher 921 bis 92n und entsprechende LSB-Rücksicherungsspeicher 921' bis 92n'. Typischerweise sind die Pufferspeicher 921 bis 92n und die LSB-Rücksicherungsspeicher 921' bis 92n' auf einem einzelnen Chip ausgebildet, wie einem DRAM.
  • Während einer Programmieroperation selektiert das nichtflüchtige Speichersystem 900 einen der Flashspeicherchips 931 bis 93n durch Aktivieren (oder Deaktivieren) eines aus einer Mehrzahl entsprechender Chipauswahlsignale und programmiert anschließend ausgewählte Speicherzellen in dem ausgewählten Flashspeicherchip unter Verwendung eines Verfahrens, wie es oben in Relation mit dem nichtflüchtigen Speichersystem 300 beschrieben wurde. In gleicher Weise kann auch eine Leseoperation des nichtflüchtigen Speichersystems 900 ähnlich wie bei dem nichtflüchtigen Speichersystem 300 durchgeführt werden, indem einer der Flashspeicherchips 931 bis 93n ausgewählt wird und anschließend Daten von dem ausgewählten Flashspeicherchip durch einen zugehörigen Pufferspeicher in der Speichersteuereinheit 920 gelesen werden.
  • In den beispielhaften nichtflüchtigen Speichersystemen, die in 8 und 9 dargestellt sind, und den anderen Systemen, die mehrere, nichtflüchtige Speicherchips aufweisen, können die mehrfachen, nichtflüchtigen Speicherchips entweder einzeln oder parallel in Bezug auf die zeitliche Reihenfolge programmiert oder gelesen werden. Als Beispiele dafür, wie mehrfache, nichtflüchtige Speicherchips parallel programmiert oder gelesen werden können, könnten die „n“ Flashspeicherchips, die in 9 dargestellt sind, programmiert oder gelesen werden, indem verschränkte Programmier- oder Leseoperationen verwendet werden oder indem zeitgleiche, parallele Datenübertragungen verwendet werden, wobei sowohl die verschränkten Operationen als auch die parallelen Datenübertragungen durch die Speichersteuereinheit 920 gesteuert sein können. Um die gleichzeitigen, parallelen Datenübertragungen und/oder die verschränkten Operationen zu erleichtern, können die „n“ Flashspeicherchips 931 bis 93n mit der Speichersteuereinheit über eine Mehrzahl von Schnittstellen, wie eine Mehrzahl unabhängiger Datenbusse, verbunden sein.
  • Unglücklicherweise führt in den Systemen gemäß 6, 8 und 9 der Prozess der Rücksicherung von LSB-Daten dazu, dass die Leistungsfähigkeit von Programmieroperationen sich tendenziell verlangsamt. Da jedes dieser Systeme LSB-Daten immer dann rücksichert, wenn MSB-Daten programmiert werden, kann der Rücksicherungsprozess für die LSB-Daten die Leistungsfähigkeit derartiger Systeme signifikant beeinträchtigen.
  • Entsprechend sind mehrere zusätzliche Ausgestaltungen der Erfindung angegeben, die in den 10 bis 15 dargestellt sind, bei denen ein Verlust von LSB-Daten vermieden wird, ohne dass LSB-Daten jedes Mal zurückgesichert werden, wenn MSB-Daten programmiert werden. Stattdessen findet bei den zusätzlichen Ausgestaltungen eine Rücksicherung von LSB-Daten nur dann statt, wenn während der MSB-Programmierung ein Fehler oder eine Fehlfunktion auftritt.
  • Wie bei anderen Ausgestaltungen der Erfindung erfolgt bei den zusätzlichen Ausgestaltungen die Beschreibung der Programmierung von LSB-Daten mit einer anschließenden Programmierung von MSB-Daten lediglich als ein Lehrbeispiel. Alternativ zu diesem Beispiel könnte die Reihenfolge der Programmieroperationen verändert sein, so dass zunächst die MSB-Daten programmiert werden, woran sich die LSB-Daten anschließen. In einem solchen Fall könnten die MSB-Daten rückgesichert werden, wenn die Programmierung der LSB-Daten fehlschlägt. Im Zuge weiterer Alternativen könnte die Anzahl von Bits, die in jeder Speicherzelle gespeichert sind, sowie die Programmierreihenfolge jeder Speicherzelle verschiedenartig modifiziert werden.
  • 10 zeigt ein nichtflüchtiges Speichersystem 400 gemäß einer Ausgestaltung der Erfindung. Verschiedene Merkmale des Speichersystems 400 sind nachfolgend unter Bezugnahme auf 10 beschrieben. Der Betrieb dieser Merkmale wird in näheren Einzelheiten unter Bezugnahme auf 11 bis 13 beschrieben.
  • Bezugnehmend auf 10 umfasst das nichtflüchtige Speichersystem 400 einen Host 410, eine Speichersteuereinheit 420 und einen Flashspeicher 430. Die Speichersteuereinheit 420 umfasst einen Pufferspeicher 421, einen Rücksicherungsspeicher 422 (auch als ein „Reparaturspeicher“ bezeichnet), eine Fehlerkorrektureinheit 423, einen Komparator 424, einen Fehlerpositionsdetektor 425 und eine Reparaturschaltung 426. Der Flashspeicher 430 umfasst ein Speicherzellenfeld 431, einen Decodierer 432, einen Seitenpuffer 433, eine Bitleitungsauswahlschaltung 434, einen Datenpuffer 435 und eine Steuereinheit 436.
  • In der Speichersteuereinheit 420 speichert der Pufferspeicher 421 Daten, die in den Flashspeicher 430 zu programmieren sind. Der Pufferspeicher 421 arbeitet nach Maßgabe der Steuerung durch die Speichersteuereinheit 420 und überträgt während Programmieroperationen Daten von dem Host 410 zu dem Flashspeicher 430 und überträgt während Leseoperationen Daten von dem Flashspeicher 430 zu dem Host 410. Bevor beispielsweise eine Seite von LSB- oder MSB-Daten in den Flashspeicher 430 programmiert wird, werden die Daten typischerweise in dem Pufferspeicher 421 gespeichert. Wenn die Programmierung der LSB- über MSB-Daten in den Flashspeicher 430 fehlschlägt, können die Daten, die in dem Pufferspeicher 421 gespeichert sind, dazu verwendet werden, die Daten zurück zu gewinnen und die Daten an einen anderen Ort innerhalb des Flashspeichers 430 zu programmieren. Allgemein kann ein Fehlschlag bei der Programmierung der LSB- oder MSB-Daten in ausgewählte Speicherzellen des Flashspeichers 430 dazu führen, dass ein fehlerhaftes Bit oder mehrere fehlerhafte Bits in einer oder mehrerer der ausgewählten Speicherzellen gespeichert sind. Zwecks einer vereinfachten Erläuterung sei jedoch angenommen, dass ein Programmierfehler nur in einer einzigen Speicherzelle der ausgewählten Speicherzellen stattgefunden hat.
  • Der Rücksicherungsspeicher 422 speichert Daten, die dazu verwendet werden, einen Fehler oder eine Fehlfunktion während einer Programmieroperation des Flashspeichers 430 zu beheben. Wenn beispielsweise LSB-Daten zuvor in ausgewählte Speicherzellen des Flashspeichers 430 programmiert wurden und die ausgewählten Speicherzellen weiter mit MSB-Daten programmiert werden, können dann, wenn die weitere Programmierung der MSB-Daten fehlschlägt, solche Daten, die nach dem Programmierfehler in den ausgewählten Speicherzellen gespeichert sind, in den Rücksicherungsspeicher 422 geladen und dazu verwendet werden, die LSB-Daten zurück zu gewinnen, die zuvor in die ausgewählten Speicherzellen programmiert wurden.
  • Im Allgemeinen können der Pufferspeicher 421 und der Rücksicherungsspeicher 422 in einem einzigen Speicherchip angeordnet sein. Beispielsweise könnte die Speichersteuereinheit 420 diejenigen Daten, die bereits in die ausgewählten Speicherzellen programmiert wurden, in einem ersten Bereich eines dynamischen Speicherchips mit wahlfreiem Zugriff (dynamic random access memory DRAM) speichern, der als Rücksicherungsspeicher 422 bezeichnet wird, und die Speichersteuereinheit 420 könnte solche Daten, die noch in die ausgewählten Speicherzellen zu programmieren sind, in einem zweiten Bereich des DRAM-Chips speichern, der als Pufferspeicher 421 bezeichnet wird.
  • Die Fehlerkorrektureinheit 423 wird eingesetzt, um Fehler in den Daten, die in dem Rücksicherungsspeicher 422 gespeichert sind, zu erkennen und zu korrigieren. Beispielsweise sei angenommen, dass die in dem Rücksicherungsspeicher 422 gespeicherten Daten eine Seite mit fehlerhaft codierten Daten umfassen. In Abhängigkeit von der Art und/oder der Anzahl von Fehlern in den fehlerhaft codierten Daten kann die Fehlerkorrektureinheit 423 einen Fehlerkorrekturcode innerhalb der Seite mit fehlerhaft codierten Daten anwenden, um Fehler in den fehlerhaft codierten Daten zu erkennen und zu korrigieren.
  • Der Komparator 424 vergleicht Daten, die in ausgewählten Speicherzellen des Flashspeichers 430 gespeichert sind, mit Daten, die in dem Pufferspeicher 421 gespeichert sind, um Programmierfehler zu erkennen und zu korrigieren. Nachdem beispielsweise MSB-Daten, die in dem Pufferspeicher 421 gespeichert sind, in ausgewählte Speicherzellen des Flashspeichers 430 programmiert wurden, können die MSB-Daten von den ausgewählten Speicherzellen gelesen und mit den MSB-Daten verglichen werden, die in dem Pufferspeicher 421 gespeichert sind. Typischerweise wird ein solcher Vergleich durchgeführt, nachdem ein Fehler oder eine Fehlfunktion beim Programmieren der MSB-Daten in die ausgewählten Speicherzellen auftritt. Wie weiter unten unter Bezugnahme auf die 11 bis 13 beschrieben wird, kann der Vergleich der MSB-Daten dazu benutzt werden, Fehler in LSB-Daten zu erkennen und zu korrigieren, welche zuvor in die ausgewählten Speicherzellen programmiert wurden.
  • Der Fehlerpositionsdetektor 425 empfängt ein Ausgangssignal des Komparators 424 und verwendet das Ausgangssignal des Komparators 424 zum Bestimmen eines Ortes eines Programmierfehlers (d.h. eines Ortes einer unzutreffend oder fehlerhaft programmierten Speicherzelle oder eines oder mehrerer fehlerhafter Bits) in den ausgewählten Speicherzellen des Flashspeichers 430. Der Fehlerpositionsdetektor 425 speichert eine Adresse des Flashspeichers 430, welche dem Ort des Programmierfehlers entspricht, und gibt den Ort an die Reparaturschaltung 426 aus.
  • Die Reparaturschaltung 426 empfängt den Ort des Programmierfehlers von dem Fehlerpositionsdetektor 425 und verwendet den Ort des Programmierfehlers, um Daten zu modifizieren, die in dem Rücksicherungsspeicher 422 gespeichert sind. Mit anderen Worten, wenn ein Programmierfehler (d.h. Fehler in einer oder mehreren Speicherzellen) aufgetreten ist, können Daten, die in dem Rücksicherungsspeicher 422 gespeichert sind, einen oder mehrere Fehler aufweisen. Der Ort des Programmierfehlers wird dazu verwendet, die in dem Rücksicherungsspeicher 422 gespeicherten Daten zu modifizieren, um die Fehler zu korrigieren.
  • In dem Flashspeicher 430 speichert das Speicherzellenfeld 431 programmierte Daten. Das Speicherzellenfeld 431 umfasst eine Mehrzahl von Multibitspeicherzellen, die in Zeilen und Spalten angeordnet sind, wobei jede Zeile von Speicherzellen mit einer entsprechenden Wortleitung und jede Spalte von Speicherzellen mit einer entsprechenden Bitleitung verbunden ist. Jede Zeile von Speicherzellen, die mit derselben Wortleitung verbunden ist, entspricht mehreren Datenseiten. Würde es sich beispielsweise bei den Multibitspeicherzellen jeweils um 2-Bit-Speicherzellen handeln, entspräche jede Wortleitung zwei Datenseiten.
  • Das Speicherzellenfeld 431 umfasst weiterhin eine Mehrzahl von Markierungszellen oder Flag-Zellen entsprechend den Zeilen von Multibitspeicherzellen. Insbesondere ist jede Zeile von Multibitspeicherzellen mit einer entsprechenden Markierungszelle verbunden, welche anzeigt, welche Datenseiten entsprechend der Zeile programmiert wurden. Da beispielsweise jede Zeile zwei Datenseiten entspricht, kann jede Markierungszelle einen ersten Zustand aufweisen, der anzeigt, dass eine Seite von LSB-Daten in die Speicherzellen der entsprechenden Zeile programmiert wurde, und einen zweiten Zustand, der anzeigt, dass eine Seite von MSB-Daten in die Speicherzellen der entsprechenden Zeile programmiert wurde.
  • Der Seitenpuffer 433 ist mit dem Speicherzellenfeld 431 über Bitleitungen BL0 bis BLm verbunden und speichert temporär Daten, die während Programmieroperationen in das Speicherzellenfeld 431 zu programmieren sind, und Daten, die während Leseoperationen aus dem Speicherzellenfeld 431 gelesen werden bzw. wurden. Die Bitleitungsauswahlschaltung 434 steuert die Aktivierung oder Auswahl von Bitleitungen für Programmier- und Leseoperationen basierend auf einen Bitleitungsauswahlsignal Yi. Die ausgewählten oder aktivierten Bitleitungen werden getrieben, um die ausgewählten Speicherzellen in dem Speicherzellenfeld 431 basierend auf den Daten, die in dem Seitenpuffer 433 gespeichert sind, zu programmieren oder zu lesen. Typischerweise, jedoch nicht notwendigerweise, werden die Programmier- und Leseoperationen an dem Speicherzellenfeld 431 für jeweils eine Seite zur Zeit durchgeführt. Beispielsweise wird eine Seite von in das Speicherzellenfeld 431 zu programmierenden Daten zunächst zu dem Seitenpuffer 433 übertragen. Dann werden geeignete Spannungen an eine Wortleitung und an Bitleitungen angelegt, die einer Zeile in dem Speicherzellenfeld 431 zu programmierenden Speicherzellen entspricht bzw. entsprechen, basierend auf der Datenseite, die in dem Seitenpuffer 433 gespeichert ist.
  • Der Decodierer 432 empfängt Lese- und Programmieradressen von der Speichersteuereinheit 420 über die Steuereinheit 436 und steuert die Aktivierung oder das Auswählen von Wortleitungen und Bitleitungen für Lese- und Programmieroperationen in Abhängigkeit von den Lese- und Programmieradressen. In dem Beispiel gemäß 10 ist der Decodierer 432 mit dem Speicherzellenfeld 431 über Wortleitungen WL0 bis WLn verbunden und erzeugt ein Bitleitungsauswahlsignal Yi, um die Aktivierung oder Auswahl von Bitleitungen für Programmier- und Leseoperationen durch die Bitleitungsauswahlschaltung 434 zu steuern.
  • Der Datenpuffer 435 ist ein Eingabe-/Ausgabepuffer, der dazu verwendet wird, Daten zwischen der Speichersteuereinheit 420 und dem Flashspeicher 430 zu übertragen. Beispielsweise werden während einer Leseoperation in ausgewählten Speicherzellen gespeicherte Daten von dem Speicherzellenfeld 431 zu dem Datenpuffer 435 über den Seitenpuffer 433 und die Bitleitungsauswahlschaltung 434 übertragen. Anschließend werden die Daten von dem Datenpuffer 435 zu der Speichersteuereinheit 420 übertragen und anschließend werden die Daten zu dem Host 410 übertragen. Andererseits werden während einer Programmieroperation in ausgewählten Speicherzellen des Speicherzellenfeldes 431 zu programmierende Daten von dem Host 410 zu der Speichersteuereinheit 420 und anschließend zu dem Datenpuffer 435 übertragen. Dann werden die Daten von dem Datenpuffer 435 zu dem Seitenpuffer 433 über die Bitleitungsauswahlschaltung 434 übertragen und danach werden die Daten in die ausgewählten Speicherzellen programmiert. Der Datenpuffer 435 arbeitet nach Maßgabe der Steuerung durch die Steuereinheit 436, welche ihrerseits in Abhängigkeit von den Steuersignalen arbeitet, die von der Speichersteuereinheit 420 erzeugt werden.
  • 11 ist ein Schwellspannungsverteilungsdiagramm, das einen Typ von Programmieroperation für ausgewählte Speicherzellen in dem nichtflüchtigen Speichersystem gemäß 10 darstellt. In 11 stellt ein Paar von Schwellspannungsverteilungsdiagrammen, das mit „(a)“ bezeichnet ist, eine LSB-Programmieroperation einer ausgewählten Speicherzelle in dem nichtflüchtigen Speichersystem gemäß 10 dar, und ein Paar von Schwellspannungsverteilungsdiagrammen, das mit „(b)“ bezeichnet ist, stellt eine MSB-Programmieroperation der ausgewählten Speicherzelle in dem nichtflüchtigen Speichersystem gemäß 10 dar. Das mit „(a)“ bezeichnete Paar von Schwellspannungsdiagrammen wird nachfolgend gemeinsam als Diagramm „(a)“ bezeichnet und das mit „(b)“ bezeichnete Paar von Schwellspannungsdiagrammen wird nachfolgend als Diagramm „(b)“ bezeichnet.
  • Die Programmieroperation gemäß 11 ist ähnlich zu der in 4 dargestellten Programmieroperation, mit der Ausnahme, dass bei der Programmieroperation gemäß 11 eine Markierungszelle verwendet wird, um anzuzeigen, ob eine MSB-Programmierung an der ausgewählten Speicherzelle durchgeführt wurde. Es sei darauf hingewiesen, dass die Programmieroperation gemäß 4 auch eine Markierungszelle verwenden könnte. Allerdings wurde bei der Beschreibung von 4 zwecks einer vereinfachten Erläuterung auf die Markierungszelle verzichtet.
  • Aus Gründen der Erläuterung sei angenommen, dass eine Markierungszelle, die in Relation mit 11 beschrieben ist, mit einer Zeile verbunden ist, in der sich die ausgewählte Speicherzelle befindet. Wenn an der Zeile, in welcher sich die ausgewählte Speicherzelle befindet, keine MSB-Programmierung vorgenommen wurde, hat die Markierungszelle den Logikzustand „1“, und dort wo eine MSB-Programmierung an der Zeile durchgeführt wurde, in der sich die ausgewählte Speicherzelle befindet, hat die Markierungszelle den Logikzustand „0“. Wenn an der ausgewählten Speicherzelle keine MSB-Programmierung durchgeführt wurde, wird eine Lesespannung VR1 verwendet, um zu bestimmen, ob das LSB der ausgewählten Speicherzelle eine logische „1“ oder eine logische „0“ ist, und wenn an der ausgewählte Speicherzelle eine MSB-Programmierung durchgeführt wurde, wird eine Lesespannung VR2 verwendet, um zu bestimmen, ob das LSB der ausgewählten Speicherzelle eine logische „1“ oder eine logische „0“ ist.
  • Wie die ausgewählte Speicherzelle in 4 ist die ausgewählte Speicherzelle in 11 eine nichtflüchtige Multibitspeicherzelle, die in der Lage ist, zwei Bits an Daten zu speichern. Die ausgewählte Speicherzelle in 11 kann zwei Bits an Daten in Relation mit vier Schwellspannungsverteilungen speichern, welche in dem Diagramm (b) mit „11“, „10“, „10“ bzw. „00“ bezeichnet sind. Die ausgewählte Speicherzelle kann außerdem ein Bit an Daten in Relation mit einer Schwellspannungsverteilung, die auf der linken Seite des Diagramms (a) mit „1“ bezeichnet ist, und mit einer Schwellspannungsverteilung, die mit „0“ bezeichnet ist, speichern.
  • Während einer Programmieroperation der ausgewählten Speicherzelle in 11 befindet sich die ausgewählte Speicherzelle anfänglich in einem gelöschten Zustand, welcher der Schwellspannungsverteilung entspricht, die mit „1“ auf der linken Seite des Diagramms (a) bezeichnet ist, und der Schwellspannungsverteilung, die im Diagramm (b) mit „11“ bezeichnet ist. Zusätzlich befindet sich die Markierungszelle anfänglich in einem gelöschten Zustand, welcher einer Schwellspannungsverteilung entspricht, die mit „1“ auf der rechten Seite des Diagramms (a) bezeichnet ist.
  • Während der Programmieroperation wird ein LSB der ausgewählten Speicherzelle mit LSB-Daten programmiert und anschließend wird ein MSB der ausgewählten Speicherzelle mit MSB-Daten programmiert. Wenn das LSB zum Speichern einer logischen „0“ programmiert wird, sollte sich die Schwellspannung der ausgewählten Speicherzelle von der im Diagramm (a) mit „1“ bezeichneten Schwellspannungsverteilung zu derjenigen Schwellspannungsverteilung ändern, die im Diagramm (a) mit „0“ bezeichnet ist. Andernfalls sollte die Schwellspannung der ausgewählten Speicherzelle in der mit „1“ bezeichneten Schwellspannungsverteilung verbleiben.
  • Jedoch wird, nachdem das LSB der ausgewählten Speicherzelle programmiert wurde, eine Programmierprüfoperation durchgeführt, um sicherzustellen, dass das LSB der ausgewählten Speicherzelle in seinen beabsichtigten Logikzustand programmiert wurde. Wenn das LSB der Speicherzelle nicht den beabsichtigten Logikzustand aufweist, kann das LSB der ausgewählten Speicherzelle weiter programmiert werden, indem die LSB-Daten verwendet werden, die in dem Pufferspeicher 421 gespeichert sind, oder es kann alternativ ein LSB-Programmierfehler oder eine entsprechende Fehlfunktion erkannt werden. Wenn ein LSB-Programmierfehler oder eine LSB-Programmierfehlfunktion erkannt wird, kann eine andere Speicherzelle, beispielsweise in einer anderen Seite oder einem anderen Block des Speicherzellenfelds 431, ausgewählt werden und die LSB-Daten können aus dem Pufferspeicher 421 in die andere Speicherzelle programmiert werden. Wenn die Programmierprüfoperation bestimmt, dass das LSB der ausgewählten Speicherzelle auf den beabsichtigten Logikzustand programmiert wurde, kann die Programmierung des LSB als erfolgreich angesehen werden. Nach einer erfolgreichen Programmierung des LSB verbleibt die Markierungszelle in dem gelöschten Zustand.
  • Unter der Annahme, dass das LSB der ausgewählten Speicherzelle erfolgreich auf eine logische „0“ programmiert wurde, sollte anschließend, wenn das MSB der ausgewählten Speicherzelle programmiert wird, die ausgewählte Speicherzelle von der Zwischenschwellenspannungsverteilung, die im Diagramm (a) mit „0“ bezeichnet ist, entweder zu der mit „10“ bezeichneten Schwellspannungsverteilung oder der mit „00“ bezeichneten Schwellspannungsverteilung im Diagramm (b) übergehen, was davon abhängt, ob das MSB eine logische „1“ oder eine logische „0“ ist. Unter der gegenteiligen Annahme, dass das LSB der ausgewählten Speicherzelle erfolgreich auf eine logische „1“ programmiert wurde, sollte anschließend, wenn das MSB der ausgewählten Speicherzelle programmiert wird, die Speicherzelle von der mit „1“ bezeichneten Schwellspannungsverteilung im Diagramm (a) zu der mit „11“ bezeichneten Schwellspannungsverteilung oder der mit „01“ bezeichneten Schwellspannungsverteilung im Diagramm (b) übergehen, was davon abhängt, ob das MSB eine logische „1“ oder eine logische „0“ ist.
  • Nachdem das MSB der ausgewählten Speicherzelle programmiert wurde, wird eine Programmierprüfoperation durchgeführt, um sicherzustellen, dass das MSB und das LSB der ausgewählten Speicherzelle auf ihre beabsichtigten Logikzustände programmiert wurden. Wenn die Programmierprüfoperationen feststellt, dass das MSB und das LSB der ausgewählten Speicherzelle auf ihre beabsichtigten Logikzustände programmiert wurden, kann die Programmierung des MSB als erfolgreich angesehen werden. Nach einer erfolgreichen Programmierung des MSB geht die Markierungszelle zu derjenigen Schwellspannungsverteilung über, die im Diagramm (b) mit „0“ bezeichnet ist. Wenn andererseits das MSB oder das LSB der Speicherzelle nicht den beabsichtigten Logikzustand aufweist, kann das MSB der ausgewählten Speicherzelle weiter programmiert werden oder es kann alternativ ein MSB-Programmierfehler oder eine entsprechende Fehlfunktion erkannt werden. Wenn ein MSB-Programmierfehler oder eine MSB-Programmierfehlfunktion erkannt wird, können die MSB-Daten leicht aus dem Pufferspeicher 421 zurückgewonnen werden, um sie in einer anderen Speicherzelle zu programmieren. Unglücklicherweise können jedoch dann, wenn ein MSB-Programmierfehler oder eine entsprechende Fehlfunktion erkannt werden, zuvor in der ausgewählten Speicherzelle gespeicherte LSB-Daten modifiziert sein. Da der Pufferspeicher 421 nicht länger die LSB-Daten speichert, wenn das MSB der ausgewählten Speicherzelle programmiert wird, kann ein nichttrivialer Wiederherstellungsprozess erforderlich sein, um den korrekten Logikzustand der ausgewählten Speicherzelle zu bestimmen.
  • Ein beispielhafter Wiederherstellungsprozess für die LSB-Daten ist in den 12 und 13 dargestellt. Bevor der Wiederherstellungsprozess erläutert wird, sei jedoch darauf hingewiesen, dass die Natur von Programmierfehlern oder Fehlfunktionen, die während der MSB- oder LSB-Programmieroperationen der ausgewählten Speicherzelle auftreten, typischerweise von der Anordnung der Schwellspannungsverteilungen der ausgewählten Speicherzelle und der Zuweisung von Logikzuständen zu den Schwellspannungsverteilungen abhängt. Beispielsweise treten aufgrund der Zuordnung der vier Schwellspannungsverteilungen im Diagramm (b) in 11 zu den entsprechenden Logikzuständen „11“, „01“, „10“ und „00“ sowie aufgrund der Verwendung der relativ breiten Zwischenschwellspannungsverteilung, die im Diagramm (a) mit „0“ bezeichnet ist, bestimmte Typen von Programmierfehlern oder Fehlfunktionen der ausgewählten Speicherzelle häufiger auf als andere.
  • Wenn beispielsweise das LSB der ausgewählten Speicherzelle erfolgreich auf eine logische „1“ programmiert wurde, und wenn das zu programmierende MSB eine logische „0“ ist, wird die Schwellspannungsverteilung der ausgewählten Speicherzelle bei fehlgeschlagener Programmierung des MSB wahrscheinlich innerhalb der Schwellspannungsverteilung verbleiben, die mit „11“ bezeichnet ist. In einem solchen Fall verbleibt das LSB der ausgewählten Speicherzelle auf einer logischen „1“ und wird daher durch den Fehler nicht dabei beeinträchtigt, das MSB korrekt zu programmieren.
  • Wenn andererseits das LSB der ausgewählten Speicherzelle erfolgreich auf eine logische „0“ programmiert wurde, und wenn das MSB auf eine logische „1“ programmiert werden soll, ist es möglich, dass das LSB der ausgewählten Speicherzelle in unerwünschter Weise von logisch „0“ nach logisch „1“ modifiziert wird, wenn die Programmierung des MSB fehlschlägt. Mit anderen Worten, der gewünschte oder beabsichtigte Logikzustand der ausgewählten Speicherzelle kann „10“ sein, aber der tatsächliche Logikzustand der ausgewählten Speicherzelle kann „01“ sein, nachdem die Programmierung des MSB fehlgeschlagen ist.
  • Ein Grund dafür, warum es möglich ist, dass das LSB der ausgewählten Speicherzelle in unerwünschter Weise von logisch „0“ nach logisch „1“ verändert wird, liegt darin begründet, dass die im Diagramm (a) mit „0“ bezeichnete Schwellspannungsverteilung verglichen mit den anderen Schwellspannungsverteilungen in 11 relativ breit ist. Wie beispielsweise durch Punkte „A“ und „B“ im Diagramm (a) und entsprechende Punkte „A“ und „B“ im Diagramm (b) dargestellt ist, überlappt die Schwellspannungsverteilung, die im Diagramm (a) mit „0“ bezeichnet ist, mit den jeweiligen Schwellspannungsverteilungen, die im Diagramm (b) mit „01“ und „10“ bezeichnet sind. Da die im Diagramm (a) mit „0“ bezeichnete Schwellspannungsverteilung mit mehreren Schwellspannungsverteilungen im Diagramm (b) überlappt, kann es vorkommen, dass bei fehlgeschlagener Programmierung des MSB die ausgewählte Speicherzelle in der mit „01“ bezeichneten Schwellspannungsverteilung liegt, wenn die Schwellspannung der ausgewählten Speicherzelle vor der MSB-Programmierung bei Punkt „A“ ist.
  • Da die Art von Programmierfehlern oder Fehlfunktionen, die während MSB- oder LSB-Programmieroperationen der ausgewählten Speicherzelle auftreten, typischerweise von der Anordnung der Schwellspannungsverteilung der ausgewählten Speicherzelle und der Zuordnung von Logikzuständen zu den Schwellspannungsverteilungen abhängt, können unterschiedliche Wiederherstellungsoperationen für Speicherzellen verwendet werden, die unterschiedliche Schwellspannungsverteilungen und entsprechende Logikzustände aufweisen. Entsprechend könnte eine Mehrzahl von Veränderungen an den Lehrbeispielen vorgenommen werden, die in den 11 bis 13 dargestellt sind, ohne den Bereich der Erfindung zu verlassen.
  • Zur Vereinfachung der Darstellung werden nachfolgend eine Anordnung von Schwellspannungsverteilungen und entsprechende Zuordnungen von Logikzuständen zu den unterschiedlichen Schwellspannungsverteilungen als ein „Zellen-Scramble“ („cell scramble“) für eine Speicherzelle oder eine Gruppe von Speicherzellen bezeichnet. Beispielsweise wird das „Zellen-Scramble“ für die ausgewählte Speicherzelle in 11 durch die Schwellspannungsverteilungen für die ausgewählte Speicherzelle in den Diagrammen (a) und (b) dargestellt. Da Fehler oder Fehlfunktionen beim Programmieren der ausgewählten Speicherzelle von dem „Zellen-Scramble“ der ausgewählten Speicherzelle abhängen, werden Bitfehler in der ausgewählten Speicherzelle in Relation mit dem Zellen-Scramble erkannt.
  • Allgemein gilt, dass bei Verwendung des Zellen-Scrambles in 11 für den Fall, dass das MSB im Logikzustand „1“ programmiert werden soll, statt dessen jedoch in den Logikzustand „0“ programmiert wird, typischerweise impliziert ist, dass die ausgewählte Speicherzelle eine Schwellspannung innerhalb derjenigen Schwellspannungsverteilung aufweist, die mit „01“ bezeichnet ist, während beabsichtigt ist, dass sie eine Schwellspannung innerhalb der mit „10“ bezeichneten Schwellspannungsverteilung aufweist. (Alternativ ist es möglich, dass der MSB-Fehler anzeigt, dass die ausgewählte Speicherzelle innerhalb der mit „00“ bezeichneten Schwellspannungsverteilung ist, während beabsichtigt war, dass sie sich in der mit „11“ bezeichneten Schwellspannungsverteilung befindet; allerdings sind solche Fehler derart unwahrscheinlich, dass sie beim typischen Betrieb des nichtflüchtigen Speichersystems 400 vernachlässigt werden können.) Entsprechend kann der Wiederherstellungsprozess MSB-Daten, die in der ausgewählten Speicherzelle programmiert sind, mit einem entsprechenden MSB vergleichen, das in dem Pufferspeicher 421 gespeichert ist, und wenn das MSB der ausgewählten Speicherzelle eine logische „0“ und das in dem Pufferspeicher 421 gespeicherte MSB eine logische „1“ ist, kann der Wiederherstellungsprozess nicht nur feststellen, dass ein Fehler in den MSB-Daten existiert, die in der ausgewählten Speicherzelle gespeichert sind, sondern auch, dass ein Fehler in den LSB-Daten aufgetreten ist, die in der ausgewählten Speicherzelle gespeichert sind, wodurch die LSB-Daten von logisch „0“ nach logisch „1“ geändert wurden.
  • 12 ist ein Diagramm zur Darstellung eines Beispiels eines Wiederherstellungsprozesses für LSB- und MSB-Daten in dem nichtflüchtigen Speichersystem 400 gemäß 10. Der Wiederherstellungsprozess in 12 beinhaltet eine Fehlerpositionserkennung und eine Datenwiederherstellungsoperation.
  • In 12 zeigt Reihe „(a)“ eine Seite von Originaldaten, die in ausgewählte Speicherzellen des Speicherzellenfelds 431 zu programmieren sind, Reihe „(b)“ zeigt eine Seite von Daten, die tatsächlich in die ausgewählten Speicherzellen des Speicherzellenfelds 431 programmiert wurden, Reihe „(c)“ zeigt eine Seite von MSB-Daten, welche in die ausgewählten Speicherzellen des Speicherzellenfelds 431 programmiert wurden (als „Flash-MSB-Daten“ bezeichnet), Reihe „(d)“ zeigt eine Seite von MSB-Daten, die in dem Pufferspeicher 421 gespeichert sind (als „Puffer-MSB-Daten“ bezeichnet), Reihe „(e)“ zeigt eine Seite von LSB-Daten, welche in die ausgewählten Speicherzellen des Speicherzellenfelds 431 programmiert wurden (als „Flash-LSB-Daten“ bezeichnet), und Reihe „(f)“ zeigt eine Seite von LSB-Daten, die aus den Flash-LSB-Daten zurückgewonnen wurden, indem der Wiederherstellungsprozess angewendet wurde (als „reparierte LSB-Daten“ bezeichnet).
  • In 12 sind Programmierfehler oder Fehlfunktionen durch Ovale gekennzeichnet, die Unterschiede zwischen den Originaldaten und denjenigen Daten anzeigen, die tatsächlich in die ausgewählten Speicherzellen programmiert wurden. In beiden Ovalen gemäß 12 sind die Originaldaten „10“ und die programmierten Daten sind „01“. Mit anderen Worten, die beabsichtigten Zustände ausgewählter Speicherzellen, welche Bitfehler enthalten, entsprechen der Schwellspannungsverteilung, die in 11 mit „10“ bezeichnet ist, jedoch entsprechen die tatsächlichen Zustände der ausgewählten Speicherzellen, welche die Bitfehler enthalten, der in 11 als „01“ bezeichneten Schwellspannungsverteilung. Wie oben beschrieben, kann dieser besondere Fehlertyp erkannt werden, indem die Flash-MSB-Daten mit den Puffer-MSB-Daten verglichen werden. Wenn die Flash-MSB-Daten für eine bestimmte Speicherzelle eine logische „0“ und die Puffer-MSB-Daten für die bestimmte Speicherzelle eine logische „1“ sind, sollten die LSB-Daten in der betreffenden Speicherzelle repariert werden, so dass sie eine logische „0“ sind.
  • In dem nichtflüchtigen Speichersystem 400 wird der Vergleich zwischen den Flash-MSB-Daten und den Puffer-MSB-Daten typischerweise in dem Komparator 424 nach Maßgabe der Steuerung durch die Speichersteuereinheit 420 durchgeführt. Der Ort einer „Fehlerposition“, d.h. eines Bitfehlers, kann in dem Fehlerpositionsdetektor 425 basierend auf dem Vergleich, der durch den Komparator 424 vorgenommen wird, erkannt und gespeichert werden. Die Flash-LSB-Daten werden typischerweise aus dem Speicherzellenfeld 431 in den Rücksicherungsspeicher 422 durch die Fehlerkorrekturschaltung 423 gelesen. Sobald der Komparator 424 und der Fehlerpositionsdetektor 425 einen Fehler identifiziert haben, welcher eine Veränderung oder Modifikation der Flash-LSB-Daten erforderlich macht, kann die Reparaturschaltung 426 die Flash-LSB-Daten reparieren, indem sie die Fehlerposition verwendet, um die reparierten LSB-Daten zu erzeugen.
  • 13 ist ein Flussdiagramm zur Darstellung einer Programmieroperation des Speichersystems in 10 gemäß einer Ausgestaltung der Erfindung. Das Flussdiagramm in 13 erklärt die in 12 dargestellte Wiederherstellungsoperation und zeigt weiterhin andere Prozeduren, die beim Programmieren des nichtflüchtigen Speichersystems 400 zum Einsatz kommen. In der folgenden Beschreibung sind beispielhafte Verfahrensschritte in Klammern angegeben. Darüber hinaus wurden einige herkömmliche Details aus der Beschreibung der Programmieroperation herausgelassen, um die Erklärung zu vereinfachen. Beispielsweise diskutiert die Beschreibung nicht bestimmte Themen, die sich mit dem Senden von Befehlen und Adressen zwischen dem Host 410 und der Speichersteuereinheit 420 oder dem Senden von Steuersignalen von der Steuereinheit 420 zu dem Flashspeicher 430 befassen. Wie der Fachmann jedoch erkennt, liegt ein weiter Bereich von Techniken zum Betreiben und Steuern des nichtflüchtigen Speichersystems 400 innerhalb des Bereichs der Erfindung.
  • Bezugnehmend auf 13 werden bei einer Programmieroperation des nichtflüchtigen Speichersystems 400 LSB-Daten in ausgewählten Speicherzellen in dem Speicherzellenfeld 431 programmiert (S205). Zur Vereinfachung der Erläuterung sei angenommen, dass die LSB-Daten erfolgreich in die ausgewählten Speicherzellen programmiert werden. Anschließend werden MSB-Daten, die in die ausgewählten Speicherzellen zu programmieren sind, in dem Pufferspeicher 421 gespeichert (S210). Anschließend werden die in dem Pufferspeicher 421 gespeicherten MSB-Daten in die ausgewählten Speicherzellen programmiert (S215).
  • Nachdem die MSB-Daten, die in dem Pufferspeicher 421 gespeichert sind, in die ausgewählten Speicherzellen programmiert wurden wird eine Programmierprüfoperation durchgeführt, um zu bestimmen, ob alle ausgewählten Speicherzellen erfolgreich programmiert wurden (S220). Wenn die Programmierprüfoperation bestimmt, dass alle ausgewählten Speicherzellen erfolgreich programmiert wurden, endet die Programmieroperation (vergleiche den oberen, mit „Nein“ bezeichneten Pfeil in 13). Wenn die MSB-Daten erfolgreich programmiert wurden, wird typischerweise eine Markierungszelle, welche den ausgewählten Speicherzellen entspricht, programmiert, um anzuzeigen, dass MSB-Daten in die ausgewählten Speicherzellen programmiert wurden. Wenn dagegen die Programmierprüfoperation feststellt, dass ein Fehler oder eine Fehlfunktion beim Programmieren der MSB-Daten in die ausgewählten Speicherzellen aufgetreten ist, liest die Speichersteuereinheit 420 die LSB-Daten, welche in die ausgewählten Speicherzellen programmiert wurden, in die Fehlerkorrektureinheit 423 (S225).
  • Zu diesem Zeitpunkt können die LSB-Daten, welche in der Fehlerkorrektureinheit 423 gespeichert sind, Fehler aufweisen, da jeder Fehler oder jede Fehlfunktion, die beim Programmieren der MSB-Daten in die ausgewählten Speicherzellen aufgetreten ist, auch Fehler in den LSB-Daten verursacht haben kann, wie oben beschrieben. Entsprechend bewertet die Fehlerkorrektureinheit 423 anschließend die LSB-Daten, um das Vorhandensein von Fehlern in den LSB-Daten zu erkennen und/oder um zu bestimmen, ob irgendwelche Fehler, die in den LSB-Daten existieren können, unter Verwendung von Fehlerkorrekturtechniken korrigiert werden können (S230). Wenn die Fehlerkorrektureinheit 423 feststellt, dass die LSB-Daten keinerlei Fehler enthalten oder dass jegliche Fehler in den LSB-Daten unter Verwendung von Fehlerkorrekturtechniken korrigiert werden können, besteht keine echte Notwendigkeit, die LSB-Daten zu modifizieren oder zu reparieren. Stattdessen kann die Markierungszelle, welche den ausgewählten Speicherzellen entspricht, in einem Zustand verbleiben, welcher anzeigt, dass nur LSB-Daten richtig in die ausgewählten Speicherzellen programmiert wurden und dass die MSB-Daten aus dem Pufferspeicher 421 an einem anderen Ort in dem Speicherzellenfeld 431 programmiert werden können. Alternativ könnten die LSB-Daten und die MSB-Daten in einen anderen Satz von Speicherzellen im Speicherzellenfeld 431 programmiert werden. In jedem Fall besteht dann, wenn die LSB-Daten keinerlei Fehler oder nur solche Fehler enthalten, die unter Verwendung von Fehlerkorrekturtechniken, die durch die Fehlerkorrektureinheit 423 verwendet werden, leicht korrigiert werden können, keine Notwendigkeit, die LSB-Daten zu reparieren, und somit können die Schritte hinter Schritt S230 in 13 ausgelassen werden, wie in 13 durch den mit „Ja“ bezeichneten Pfeil angegeben ist.
  • Wenn die LSB-Daten, die in der Fehlerkorrektureinheit 423 gespeichert sind, Fehler aufweisen, die nicht einfach unter Verwendung von Fehlerkorrekturtechniken korrigiert werden können, welche durch die Fehlerkorrektureinheit 423 angewendet werden, werden die LSB-Daten, die in der Fehlerkorrektureinheit 423 gespeichert sind, in dem Rücksicherungsspeicher 422 gespeichert und weitere Schritte werden durchgeführt, wie durch einen unteren, mit „Nein“ bezeichneten Pfeil in 13 angezeigt. Insbesondere empfängt der Komparator 424 die MSB-Daten, die in ausgewählten Speicherzellen programmiert wurden (die „Flash-MSB-Daten“), und die MSB-Daten, die in dem Pufferspeicher 421 gespeichert sind (die „Puffer-MSB-Daten“), und vergleicht die Flash-MSB-Daten mit den Puffer-MSB-Daten (S235). Basierend auf Unterschieden zwischen den Flash-MSB-Daten und den Puffer-MSB-Daten detektiert der Fehlerpositionsdetektor 425 anschließend einen Ort eines oder mehrerer Bitfehler in den MSB-Daten (S240). Anschließend modifiziert die Reparaturschaltung 426 unter Verwendung des Ortes, der durch den Fehlerpositionsdetektor 425 erhalten wurde, und basierend auf dem Zellen-Scramble der ausgewählten Speicherzelle die LSB-Daten, die in dem Rücksicherungsspeicher 422 gespeichert sind (S245). Anschleißend werden die modifizierten LSB-Daten, die in dem Rücksicherungsspeicher 422 gespeichert sind, zurück zu der Fehlerkorrektureinheit 423 übertragen und die Fehlerkorrektureinheit 423 detektiert und/oder korrigiert potentiell verbleibende Fehler in den modifizierten LSB-Daten (S250). Sobald schließlich die LSB-Daten modifiziert wurden, um Fehler zu korrigieren, die durch fehlerhafte Programmierung der MSB-Daten verursacht wurden, können die LSB-Daten und die MSB-Daten von der Fehlerkorrektureinheit 423 bzw. von dem Rücksicherungsspeicher 422 und dem Pufferspeicher 421 in einen neuen Block oder neue Seiten innerhalb des Flashspeichers 430 programmiert werden (S255).
  • 14 ist ein schematisches Blockschaltbild eines nichtflüchtigen Speichersystems 500 gemäß einer anderen Ausgestaltung der Erfindung. Das nichtflüchtige Speichersystem 500 ist ähnlich zu dem nichtflüchtigen Speichersystem 400, das in 10 dargestellt ist. Insbesondere umfasst das nichtflüchtige Speichersystem 500 einen Host 510 ähnlich dem Host 410, eine Speichersteuereinheit 520 ähnlich der Speichersteuereinheit 420 und Flashspeicherchips 530 und 540, die jeweils ähnlich zu dem Flashspeicher 430 sind.
  • Anders als das nichtflüchtige Speichersystem 400 umfasst das nichtflüchtige Speichersystem 500 zwei Flashspeicherchips 530 und 540. Entsprechend umfasst die Speichersteuereinheit 520 zwei Pufferspeicher 52a und 52b, die zum Programmieren des Flashspeicherchips 530 bzw. des Flashspeicherchips 540 verwendet werden. Allerdings umfasst die Speichersteuereinheit 520 anders als die Speichersteuereinheit 320 in 8 nur einen Rücksicherungsspeicher 522. Ein Grund dafür, dass die Speichersteuereinheit 520 nur einen Rücksicherungsspeicher 522 umfasst, ist darin zu sehen, dass die Speichersteuereinheit 520 vergleichbar der Speichersteuereinheit 420 arbeitet, wobei LSB-Daten, die in ausgewählte Speicherzellen der Flashspeicherchips 530 und 540 programmiert wurden, nicht automatisch in dem Rücksicherungsspeicher 522 gespeichert werden, bevor MSB-Daten in die ausgewählten Speicherzellen programmiert werden. Dagegen werden die LSB-Daten, die in den ausgewählten Speicherzellen gespeichert sind, nur nach einem fehlgeschlagenen Versuch der Programmierung von MSB-Daten in die ausgewählten Speicherzellen zu dem Rücksicherungsspeicher 523 übertragen. Wenn ein Versuch, MSB-Daten in ausgewählte Speicherzellen in dem Flashspeicherchip 530 oder 540 zu speichern, fehlschlägt, werden die Schritte S230 bis S255 in 13 unter Verwendung des Pufferspeichers 521 und des Rücksicherungsspeichers 522 durchgeführt, um LSB-Daten aus den ausgewählten Speicherzellen zurück zu gewinnen.
  • 15 ist ein schematisches Blockschaltbild eines nichtflüchtigen Speicherelements gemäß noch einer weiteren Ausgestaltung der Erfindung. Das nichtflüchtige Speichersystem 600 in 15 ist ähnlich zu dem nichtflüchtigen Speichersystem 500 in 14. Insbesondere umfasst das nichtflüchtige Speichersystem 600 eine Host 610 ähnlich dem Host 510, eine Speichersteuereinheit 620 ähnlich der Speichersteuereinheit 520 und Flashspeicherchips 631 bis 63n, von denen jeder ähnlich den Flashspeicherchips 530 und 540 ist. Anders als das nichtflüchtige Speichersystem 500 kann das nichtflüchtige Speichersystem 600 nicht nur zwei Flashspeicherchips und zwei zugehörige Pufferspeicher, sondern eine beliebige Anzahl „n“ von Pufferspeichern 621 bis 62n und eine beliebige Anzahl „n“ entsprechender Flashspeicherchips 631 bis 63n aufweisen. Wie die Speichersteuereinheit 520 umfasst die Speichersteuereinheit 620 einen einzelnen, gemeinsam genutzten Rücksicherungsspeicher 62n', der zum Durchführen von Reparaturoperationen an LSB-Daten verwendet wird, wenn eine Operation zum Programmieren von MSB-Daten in beliebige der Flashspeicherchips 631 bis 63n fehlschlägt. Das nichtflüchtige Speichersystem 600 arbeitet ähnlich den nichtflüchtigen Systemen 500 und 400, so dass auf eine hochgradig detaillierte Beschreibung seiner Funktion verzichtet wird, um Wiederholungen zu vermeiden.
  • Wie die nichtflüchtigen Speichersysteme 300 und 900 können die nichtflüchtigen Speichersysteme 500 und 600 eine Vielzahl unterschiedlicher Schnittstellen und/oder Datenübertragungsprotokolle verwenden, um Daten zwischen der Speichersteuereinheit 520 und 620 und den Speicherchips 530 und 540 bzw. 631 bis 63n zu übertragen. Beispielsweise könnten die nichtflüchtigen Speichersysteme 500 und 600 mehrere Schnittstellen verwenden, um gleichzeitig parallele Datenübertragungen durchzuführen, oder eine oder mehrere Schnittstellen, um verschränkte Datenübertragungen durchzuführen. Darüber hinaus können, wie bei anderen Ausgestaltungen der Erfindung, die Pufferspeicher und die Rücksicherungsspeicher in den Speichersteuereinheiten 520 und 620 in verschiedenen Bereichen eines einzelnen Chips, wie eines einzelnen DRAM, oder in mehreren unterschiedlichen Chips ausgebildet sein.
  • Da die nichtflüchtigen Speichersysteme, die in den 10 bis 15 dargestellt sind, nicht erforderlich machen, dass LSB-Daten jedes Mal dann rückgesichert werden, wenn eine MSB-Programmierung durchgeführt wird, werden derartige Systeme tendenziell eine verbesserte Leistungsfähigkeit gegenüber solchen Systemen aufweisen, in denen LSB-Daten jedes Mal dann rückgesichert werden, wenn eine MSB-Programmierung durchgeführt wird, wenn nicht Programmierfehler derart häufig auftreten, dass mit großer Regelmäßigkeit auf rückgesicherte LSB-Daten zurückgegriffen werden muss. Da die in den 10 bis 15 gezeigten Systeme darüber hinaus nur einen gemeinsam genutzten Rücksicherungsspeicher für mehrere Pufferspeicher verwenden, können derartige Systeme kleiner ausgebildet sein als Systeme, die für jeden Pufferspeicher einen Rücksicherungsspeicher aufweisen.
  • Zusammenfassend vermeiden Ausgestaltungen der Erfindung durch das Schaffen von Rücksicherungsspeichern für Daten, die bereits in ausgewählten Multilevelspeicherzellen gespeichert sind, und durch das Schaffen von Prozeduren zum Wiederherstellen von Daten bei fehlgeschlagenen MSB-Programmierungen, dass Daten verloren gehen, wenn Multilevelspeicherzellen programmiert werden. Im Ergebnis schaffen Ausgestaltungen der Erfindung nichtflüchtige Speichersysteme, die eine verbesserte Zuverlässigkeit gegenüber herkömmlichen nichtflüchtigen Speichersystemen aufweisen.

Claims (31)

  1. Nichtflüchtiges Halbleiterspeichersystem (400), aufweisend: - ein Speicherfeld (431) mit einer Mehrzahl von Multibitspeicherzellen; und - eine Speichersteuereinheit (420), aufweisend: - einen Pufferspeicher (421), der dazu ausgebildet ist, j-Bit-Daten zu speichern, die in ausgewählte Speicherzellen aus der Mehrzahl von Speicherzellen programmiert sind; - einen Reparaturspeicher (422), der dazu ausgebildet ist, i-Bit-Daten zu speichern, die aus den ausgewählten Speicherzellen gelesen werden; - einen Fehlerpositionsdetektor (425), der dazu ausgebildet ist, den Ort eines Bitfehlers in den i-Bit-Daten basierend auf einem Vergleich zwischen j-Bit-Daten, die aus den ausgewählten Speicherzellen gelesen werden, und den j-Bit-Daten zu bestimmen, die in dem Pufferspeicher (421) gespeichert sind; und - eine Reparatureinheit (426), die dazu ausgebildet ist, Bitfehler in den i-Bit-Daten zu reparieren, die in dem Reparaturspeicher (422) gespeichert sind.
  2. System nach Anspruch 1, dadurch gekennzeichnet, dass der Pufferspeicher eine größere Kapazität als der Reparaturspeicher aufweist.
  3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin einen Komparator (424) aufweist, der dazu ausgebildet ist, den Vergleich vorzunehmen.
  4. System nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin eine Fehlerkorrektureinheit (423) aufweist, die dazu ausgebildet ist, Fehler in den i-Bit-Daten zu korrigieren.
  5. System nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin eine Fehlerkorrekturschaltung (423) aufweist, die dazu ausgebildet ist, Fehler in den i-Bit-Daten zu korrigieren.
  6. System nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass der Fehlerpositionsdetektor den Ort des Bitfehlers in Relation zu einem Zellen-Scramble (cell scramble) der Multibitspeicherzellen bestimmt.
  7. System nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die i-Bit-Daten und die j-Bit-Daten jeweils eine Seite oder einen Block an Daten aufweisen.
  8. System nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass das Speicherfeld ein NAND-Flashspeicherfeld umfasst.
  9. Nichtflüchtiges Halbleiterspeichersystem, aufweisend: - erste bis n-te Speicherchips (330, 340), die jeweils eine Mehrzahl von nichtflüchtigen Multibitspeicherzellen aufweisen; und - eine Speichersteuereinheit (320) aufweisend: - erste bis m-te Pufferspeicher (321, 323), die jeweils dazu ausgebildet sind, j-Bit-Daten zu speichern, die in ausgewählte Speicherzellen aus der Mehrzahl von nichtflüchtigen Multibitspeicherzellen der ersten bis n-ten Speicherchips (330, 340) programmiert sind; - erste bis p-te Reparaturspeicher (322, 324), die dazu ausgebildet sind, i-Bit-Daten zu speichern, die in den ausgewählten Speicherzellen gespeichert sind; - einen Fehlerpositionsdetektor (425), der dazu ausgebildet ist, den Ort eines Bitfehlers in den i-Bit-Daten basierend auf einem Vergleich zwischen j-Bit-Daten, die aus den ausgewählten Speicherzellen gelesen werden, und den j-Bit-Daten zu bestimmen, die in dem Pufferspeicher (321, 323) gespeichert sind; und - eine Reparatureinheit (426), die dazu ausgebildet ist, Bitfehler in den i-Bit-Daten zu reparieren, die in dem Reparaturspeicher (322, 324) gespeichert sind.
  10. System nach Anspruch 9, dadurch gekennzeichnet, dass n und m jeweils größer als Eins sind und dass die ersten bis p-ten Reparaturspeicher einen einzelnen Reparaturspeicher umfassen.
  11. System nach Anspruch 9 oder 10, dadurch gekennzeichnet, dass die ersten bis m-ten Pufferspeicher und die ersten bis p-ten Reparaturspeicher unterschiedliche Bereiche eines einzelnen Speicherchips umfassen.
  12. System nach einem der Ansprüche 9 bis 11, dadurch gekennzeichnet, dass n gleich m ist.
  13. System nach einem der Ansprüche 9 bis 12, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin einen Komparator aufweist, der dazu ausgebildet ist, den Vergleich durchzuführen.
  14. System nach einem der Ansprüche 9 bis 13, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin eine Fehlerkorrektureinheit aufweist, die dazu ausgebildet ist, Fehler in den i-Bit-Daten zu korrigieren.
  15. System nach einem der Ansprüche 9 bis 14, dadurch gekennzeichnet, dass die Speichersteuereinheit weiterhin eine Fehlerkorrekturschaltung aufweist, die dazu ausgebildet ist, Fehler in den i-Bit-Daten zu korrigieren.
  16. System nach einem der Ansprüche 9 bis 15, dadurch gekennzeichnet, dass der Fehlerpositionsdetektor den Ort des Bitfehlers in Relation zu einem Zellen-Scramble der Multibitspeicherzellen bestimmt.
  17. System nach einem der Ansprüche 9 bis 16, dadurch gekennzeichnet, dass die i-Bit-Daten und die j-Bit-Daten jeweils eine Seite oder einen Block an Daten aufweisen.
  18. System nach einem der Ansprüche 9 bis 17, dadurch gekennzeichnet, dass einer oder mehrere der ersten bis n-ten Speicherchips einen NAND-Flashspeicherchip umfasst bzw. umfassen.
  19. Verfahren zum Durchführen einer Programmieroperation in einem nichtflüchtigen Multibithalbleiterspeichersystem (400), das ein Speicherfeld (431) mit einer Mehrzahl von Multibitspeicherzellen und eine Speichersteuereinheit (420) aufweist, wobei das Verfahren beinhaltet: - Programmieren von i-Bit-Daten in ausgewählte Speicherzellen des Speicherfelds (431); - Speichern von j-Bit-Daten in der Speichersteuereinheit (420); - Programmieren der j-Bit-Daten in die ausgewählten Speicherzellen; - Bestimmen, ob die j-Bit-Daten erfolgreich in die ausgewählten Speicherzellen programmiert worden sind; - bei einem Bestimmen, dass die j-Bit-Daten nicht erfolgreich in die ausgewählten Speicherzellen programmiert worden sind, Vergleichen der j-Bit-Daten, die in den ausgewählten Speicherzellen gespeichert sind, mit den j-Bit-Daten, die in der Speichersteuereinheit (420) gespeichert sind; - basierend auf dem Vergleich, Bestimmen der Position wenigstens eines Bitfehlers in den i-Bit-Daten, die in den ausgewählten Speicherzellen gespeichert sind; und - Reparieren des wenigstens einen Bitfehlers in den i-Bit-Daten.
  20. Verfahren nach Anspruch 19, weiterhin beinhaltend: - bei einem Bestimmen, dass die j-Bit-Daten erfolgreich in die ausgewählten Speicherzellen gespeichert worden sind, Beenden der Programmieroperation.
  21. Verfahren nach Anspruch 19 oder 20, weiterhin beinhaltend: - bei einem Bestimmen, dass die j-Bit-Daten nicht erfolgreich in die ausgewählten Speicherzellen programmiert worden sind, und vor dem Vergleichen der j-Bit-Daten, die in den ausgewählten Speicherzellen gespeichert sind, mit den j-Bit-Daten, die in der Speichersteuereinheit gespeichert sind, Lesen der i-Bit-Daten aus den ausgewählten Speicherzellen in die Speichersteuereinheit und Bestimmen, ob irgendwelche Bitfehler in den i-Bit-Daten durch eine Fehlerkorrektureinheit korrigierbar sind; und - nach einem Bestimmen, dass irgendwelche Fehler in den i-Bit-Daten durch die Fehlerkorrektureinheit korrigierbar sind, Beenden der Programmieroperation.
  22. Verfahren nach einem der Ansprüche 19 bis 21, weiterhin beinhaltend: - nach dem Reparieren des wenigstens einen Bitfehlers in den i-Bit-Daten, Korrigieren verbleibender Bitfehler in den i-Bit-Daten unter Verwendung einer Fehlerkorrektureinheit.
  23. Verfahren nach einem der Ansprüche 19 bis 22, dadurch gekennzeichnet, dass die Position des wenigstens einen Bitfehlers in den i-Bit-Daten in Relation zu einem Zellen-Scramble der Multibitspeicherzellen bestimmt wird.
  24. Verfahren nach einem der Ansprüche 19 bis 23, dadurch gekennzeichnet, dass einer oder mehrere der ersten bis n-ten Speicherchips einen NAND-Flashspeicherchip umfasst bzw. umfassen.
  25. Verfahren nach einem der Ansprüche 19 bis 24, dadurch gekennzeichnet, dass die j-Bit-Daten und die i-Bit-Daten jeweils eine Seite oder einen Block an Daten umfassen.
  26. Verfahren zum Programmieren eines nichtflüchtigen Speichers mit nichtflüchtigen Multibitspeicherzellen, das Verfahren beinhaltend: - Definieren eines Zellen-Scrambles der Speicherzellen; und - bei Erkennen eines Programmierfehlers für j-Bit-Daten in einer ausgewählten der Speicherzellen, Reparieren zuvor programmierter i-Bit-Daten in der ausgewählten Speicherzelle in Relation zu dem Zellen-Scramble.
  27. Verfahren nach Anspruch 26, weiterhin beinhaltend: - Korrigieren von Fehlern in den i-Bit-Daten unter Verwendung einer Fehlerkorrektureinheit.
  28. Verfahren nach Anspruch 26 oder 27, dadurch gekennzeichnet, dass die Speicherzellen nichtflüchtige Zwei-Bit-Speicherzellen sind; und wobei die i-Bit-Daten Höchstwertige-Bit(MSB)-Daten und die j-Bit-Daten Niederwertigste-Bit(LSB)-Daten sind.
  29. Verfahren nach Anspruch 26 oder 27, dadurch gekennzeichnet, dass die Speicherzellen nichtflüchtige Zwei-Bit-Speicherzellen sind; und wobei die i-Bit-Daten Niederwertigste-Bit(LSB)-Daten und die j-Bit-Daten Höchstwertige-Bit(MSB)-Daten sind.
  30. Verfahren nach einem der Ansprüche 26 bis 29, dadurch gekennzeichnet, dass die j-Bit-Daten und die i-Bit-Daten jeweils eine Seite oder einen Block an Daten aufweisen.
  31. Verfahren nach einem der Ansprüche 26 bis 30, dadurch gekennzeichnet, dass der nichtflüchtige Speicher einen NAND-Flashspeicher umfasst.
DE102007051061.8A 2006-10-19 2007-10-17 Nichtflüchtiges Halbleiterspeichersystem und entsprechendes Verfahren zum Durchführen einer Programmieroperation Active DE102007051061B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
KR2006-0101954 2006-10-19
KR1020060101954A KR100845526B1 (ko) 2006-10-19 2006-10-19 플래시 메모리를 포함한 메모리 시스템 및 그것의 프로그램방법
US11/730,322 2007-03-30
US11/730,322 US7602642B2 (en) 2006-10-19 2007-03-30 Nonvolatile memory system and associated programming methods

Publications (2)

Publication Number Publication Date
DE102007051061A1 DE102007051061A1 (de) 2008-05-15
DE102007051061B4 true DE102007051061B4 (de) 2019-03-07

Family

ID=39277878

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007051061.8A Active DE102007051061B4 (de) 2006-10-19 2007-10-17 Nichtflüchtiges Halbleiterspeichersystem und entsprechendes Verfahren zum Durchführen einer Programmieroperation

Country Status (1)

Country Link
DE (1) DE102007051061B4 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880778B2 (en) * 2010-05-13 2014-11-04 Micron Technology, Inc. Memory buffer having accessible information after a program-fail

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5523972A (en) 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5523972A (en) 1994-06-02 1996-06-04 Intel Corporation Method and apparatus for verifying the programming of multi-level flash EEPROM memory

Also Published As

Publication number Publication date
DE102007051061A1 (de) 2008-05-15

Similar Documents

Publication Publication Date Title
DE102008003944B4 (de) Speichersystem und Programmierverfahren für ein Speichersystem
DE102007031027B4 (de) Leseverfahren einer Speichervorrichtung
DE102008030264B4 (de) Verfahren zum Lesen eines Flashspeichers und Speichersystem
DE112008001151B4 (de) Mehrbitprogrammiervorrichtung und Verfahren zum Mehrbitprogrammieren
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE60129710T2 (de) Anordnung und struktur für zuverlässige dateikopieoperation für nicht-flüchtige speicher
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE112007003015B4 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102005057112B4 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE102013109235A1 (de) Flash-Speichersystem mit Detektor für anormale Wortleitung und Verfahren zum Erfassen einer anormalen Wortleitung
DE102010037290A1 (de) Speichersysteme und Verfahren zur Erfassung einer Verteilung von instabilen Speicherzellen
DE102006036070B4 (de) Ladungsfallenspeichervorrichtung und Verfahren für deren Herstellung und Betrieb
DE102008033518B4 (de) Datenverarbeitungsverfahren für eine Solid-State-Disk-Steuereinheit, Solid-State-Disk-Steuereinheit und Datenspeicherelement
DE102008009847A1 (de) Verfahren zum Treiben eines nichtflüchtigen Speicherelements und nichtflüchtiges Speicherelement
DE102008009235A1 (de) Speichersystem
DE102013108491A1 (de) Nichtflüchtige Speichervorrichtung und Betriebsverfahren mit variablen Speicherzellenzustandsdefinitionen
DE112020004922T5 (de) Speicherungsvorrichtung mit erhöhter beständigkeit
DE102010037064A1 (de) Nichtflüchtige Speichervorrichtung und -system sowie Verfahren des Programmierens einer nichtflüchtigen Speichervorrichtung
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE60212332T2 (de) Selbstreparatur-Methode für nicht flüchtige Speicher mit einer Architektur zur Fehlervermeidung sowie nicht flüchtiger Speicher
DE102007051061B4 (de) Nichtflüchtiges Halbleiterspeichersystem und entsprechendes Verfahren zum Durchführen einer Programmieroperation
DE112019007368T5 (de) Speichergerät und verfahren zur überwachung der leistungen eines speichergeräts
DE102016115177B4 (de) Verfahren zum Betreiben einer Speichervorrichtung und Speichervorrichtung
DE102021116033A1 (de) Vereinfachte verwaltung von chips und blöcken mit hoher kapazität

Legal Events

Date Code Title Description
R012 Request for examination validly filed

Effective date: 20131029

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