DE19782077B4 - Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes - Google Patents

Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes Download PDF

Info

Publication number
DE19782077B4
DE19782077B4 DE19782077A DE19782077A DE19782077B4 DE 19782077 B4 DE19782077 B4 DE 19782077B4 DE 19782077 A DE19782077 A DE 19782077A DE 19782077 A DE19782077 A DE 19782077A DE 19782077 B4 DE19782077 B4 DE 19782077B4
Authority
DE
Germany
Prior art keywords
data
error
bits
memory
charge
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.)
Expired - Fee Related
Application number
DE19782077A
Other languages
English (en)
Other versions
DE19782077T1 (de
Inventor
Daniel H. Folsom Leemann
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Application granted granted Critical
Publication of DE19782077B4 publication Critical patent/DE19782077B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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
    • 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
    • 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
    • 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/5642Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Verfahren zum Lesen von Daten aus einem Speicher mit Mehrpegel-Speicherzellen, die jeweils wenigstens drei Ladungszustände speichern können, wobei:
a) die Daten und ein zugehöriger Fehlerlokalisierungscode gelesen werden (502), wobei der Fehlerlokalisierungscode ein Identifizieren desjenigen Blocks oder derjenigen Blöcke der Daten, der bzw. die jeweils einer fehlerhafte Daten enthaltenden Mehrpegel-Speicherzelle zugeordnet sind, gestattet; und
b) dann, wenn der gelesene Fehlerlokalisierungscode anzeigt, dass ein gelesener, einem bestimmten Ladungspegel einer Speicherzelle entsprechender Block der Daten fehlerhaft ist, dieser Block der Daten bei der Ausgabe derart modifiziert wird, dass er dem nächsthöheren Ladungspegel der Speicherzelle entspricht.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf das Gebiet der Speicherbauelemente. Insbesondere bezieht sich die Erfindung auf das Korrigieren eines Fehlers in Daten, die aus einem Mehrpegelzellenspeicher gelesen wurden.
  • HINTERGRUND DER ERFINDUNG
  • Ein Mehrpegelzellenspeicher besteht aus Mehrpegelzellen, von denen jede in der Lage ist, mehrere Ladungszustände oder -pegel zu speichern. Jeder der Ladungszustände ist einem Bitmuster des Speicherelements zugeordnet.
  • 1 zeigt eine Darstellung einer bekannten Mehrpegelzelle, die vier Ladungszustände speichert: Die Pegel 0 – 3. Pegel 3 hält eine höhere Ladung als Pegel 2; Pegel 2 hält eine höhere Ladung als Pegel 1; Pegel 1 hält eine höhere Ladung als Pegel 0. Eine Referenzspannung trennt die verschiedenen Ladungszustände. Vref2 trennt Pegel 3 und Pegel 2. Vref1 trennt Pegel 2 und Pegel 1. Vref0 trennt Pegel 1 und Pegel 0.
  • Jedem Ladungszustand ist ein Speicherelementbitmuster zugeordnet. Bei einer Implementierung ist das Speicherelementbitmuster ”00” dem Pegel 3, das Speicherelementbitmuster ”10” dem Pegel 2, das Speicherelementbitmuster ”01” dem Pegel 1 und das Speicherelementbitmuster ”11” dem Pegel 0 zugeordnet.
  • Ein Mehrpegelzellenspeicher ist in der Lage, mehr als ein Datenbit auf der Grundlage der Anzahl der Ladungszustände, die er speichern kann, zu speichern. Beispielsweise kann ein Mehrpegelzellenspeicher, der vier Ladungszustände speichern kann, zwei Bits Daten speichern; ein Mehrpegelzellenspeicher, der acht Ladungszustände speichern kann, kann drei Bits Daten speichern; ein Mehrpegelzellenspeicher, der 16 Ladungszustände speichern kann, kann vier Bits Daten speichern. Für jeden der n-Bit-Mehrpegelzellenspeicher können verschiedene Speicherelementbitmuster so implementiert werden, daß sie jedem der unterschiedlichen Ladungszustände zugeordnet sind.
  • Die Anzahl der Ladungszustände, die in einer Mehrpegelzelle speicherbar sind, ist jedoch nicht auf Potenzen von zwei eingeschränkt. Beispielsweise speichert eine Mehrpegelzelle mit drei Ladungszuständen 1,5 Bits Daten. Wenn diese Mehrpegelzelle mit zusätzlicher Decodierlogik kombiniert und mit einer zweiten ähnlichen Mehrpegelzelle gekoppelt wird, werden drei Bits Daten als Ausgangssignal der Zwei-Zellen-Kombination zur Verfügung gestellt. Es sind verschiedene andere Mehrzellenkombinationen ebenfalls möglich.
  • Ein Beispiel eines Mehrpegelzellenspeichers ist in dem U.S.-Patent Nr. 5,450,363 mit dem Titel ”Grat” Coding for a Multilevel Cell Memory System” von Christopherson et al. beschrieben, das für die Anmelderin der vorliegenden Anmeldung ausgegeben worden ist. Das '363 -Patent beschreibt eine Implementierung eines Mehrpegelzellenspeichers. Mehrpegelzellenspeicher können in dynamischen Speichern mit wahlfreiem Zugriff (DRAM) und verschiedenen Arten von Nur-Lese-Speichern (ROM), wie beispielsweise einem löschbaren und programmierbaren Nur-Lese-Speicher (EPROM), einem elektrisch löschbaren und programmierbaren Nur-Lese-Speicher (EEPROM) und einem Flash-EPROM, verwendet werden.
  • 2 zeigt eine bekannte Darstellung eines Prozessors 100 und eines Mehrpegelzellenspeichers 104. Ein Prozessor 100 ist mit einem Bus 102 und dem Speicher 104 gekoppelt. Der Speicher 104 enthält eine Schnittstellensteuereinrichtung 105 und eine Mehrpegelzellenspeichermatrix 150. Der Prozessor 100 ist über den Bus 102 mit der Schnittstellensteuereinrichtung 105 gekoppelt. Der Prozessor 100 ist darüber hinaus über den Bus 102 mit der Mehrpegelzellenspeichermatrix 150 gekoppelt. Die Schnittstellensteuereinrichtung 105 stellt die erforderlichen Operationen zur Verfügung, um die Mehrpegelzellenspeichermatrix 150 zu steuern.
  • Bei einem Ausführungsbeispiel sind die Schnittstellensteuereinrichtung 105 und die Mehrpegelzellenspeichermatrix 150 auf einem einzigen Chip einer integrierten Schaltung angeordnet.
  • Fehlercodes
  • Daten werden üblicherweise einer speziellen Speichermatrix zur Verfügung gestellt und aus der Speichermatrix in einer Einheit wiedergewonnen, die eine vorgegebene Anzahl von Bits aufweist und die im folgenden als ein ”Datenwort” bezeichnet wird. Wenn die Daten in der Speichermatrix gespeichert werden, wird manchmal ein Codierer verwendet, um Fehlercodes zu erzeugen. Die Fehlercodes können so gespeichert werden, daß sie mit ihrem zugehörigen Datenwort wiedergewonnen werden können. Wenn die Datenworte aus der Speichermatrix gewonnen werden, verwendet die Fehlerdecodierschaltung die den Datenworten zugeordneten, zuvor gesicherten Fehlercodes zum Erfassen, Lokalisieren und/oder Korrigieren von Fehlern, die in den Datenworten, wie sie aus der Speichermatrix gelesen wurden, gefunden wurden, wie es im Stand der Technik gut bekannt ist.
  • Es gibt unterschiedliche Arten von Fehlercodes, einschließlich Fehlererfassungscodes, Fehlerlokalisierungscodes und Fehlerkorrekturcodes. Fehlererfassungscodes erfassen, ob ein Fehler aufgetreten ist, können aber den Fehler nicht korrigieren. Fehlerlokalisierungscodes erfassen einen Fehler und sind in der Lage, den Fehler in einem Block von Bits zu lokalisieren, können aber nicht die genaue Position des fehlerhaften Bits innerhalb des Blocks von Bits bestimmen. Fehlerkorrekturcodes erfassen Einzelbitfehler in einem Datenwort und sind in der Lage, die Fehler zu korrigieren. Eine Art eines Fehlerkorrekturcodes, Hamming-Code genannt, ist beispielsweise in der Lage, Einzelbitfehler zu korrigieren, ist darüber hinaus in der Lage, Doppelbitfehler in einem Datenwort zu erfassen (aber nicht zu korrigieren).
  • Eine Gruppe von fehlerlokalisierenden Codes ist in ”A Class of Error-Locating Codes for Byte-Organized Memory Systems” von E. Fujiwara und M. Kitakami (”Fujiwara”), IEEE Transactions on Information Theroy, Band 40, Nr. 6, November 1994, beschrieben. Fujiwara beschreibt fehlerlokalisierende Codes, die in einem fehlertoleranten Speichersystem verwendet werden. Wenn in einem Block des Speichers ein Fehler erfaßt wird, wird die fehlerhafte Speicherkarte lokalisiert und dann in eine Reservekarte umgeschaltet.
  • Fehlerlokalisierende Codes sind darüber hinaus in ”Error-Locating Codes – A New Concept in Error Control” von J. K. Wolf und B. Elspas, IEEE Transactions on Information Theory, April 1963, beschrieben.
  • In EP 0 704 854 B1 wird ein Speichergerät mit Fehlerdetektion und -korrektur und darüber hinaus ein Verfahren zum Löschen eines Speichergeräts offenbart. EP 0 709 776 A1 beschreibt ein Verfahren zum Feststellen und Korrigieren von Fehlern innerhalb von Multilevel-Speichern. In US 5,450,363 ist ein Speichersystem offenbart, welches eine Vielzahl von Speicherzellen aufweist. Außerdem sind dort eine Sensorschaltung und eine Umwandlungsschaltung zur Umwandlung eines Binärcodes in einen Graustufencode, so dass sich benachbarte Schwellenwerte lediglich um ein Bit unterscheiden, offenbart. In US 5,621,682 wird ein Speichersystem offenbart, bei dem ebenfalls Fehler auf der Basis von Binärcodes entsprechend den Prüf- und Informationsdaten verbessert wird. JP 07234823 A offenbart ein Speichersystem, welches in der Lage ist, Fehler in Daten zu erkennen und zu korrigieren, wozu nur wenig Redundanz erforderlich ist. E. Fujiwara: „A Class of Error-Locating Codes for Byte-Organized Memory Systems” beschreibt einen Fehlerfeststellungscode, der insbesondere für Multilevelspeicher genutzt werden kann.
  • ZUSAMMENFASSENDE DARSTELLUNG DER ERFINDUNG
  • Ein Verfahren und eine Vorrichtung korrigieren Daten, die aus einer Mehrpegelzelle eines Speichers gelesen wurden. Die Mehrpegelzelle ist in der Lage, drei oder mehr Ladungszustände zu speichern. Es wird bestimmt, daß ein erster Ladungszustand, der aus der Mehrpegelzelle gelesen worden ist, fehlerhaft ist. Es wird ein Ausgangssignal zur Verfügung gestellt, das dem entspricht, was zur Verfügung gestellt würde, wenn die Mehrpegelzelle einen zweiten Ladungszustand halten würde, wobei der zweite Ladungszustand mehr Ladung als der erste Ladungszustand aufweist.
  • Andere Merkmale und Vorteile der vorliegenden Erfindung sind aus den begleitenden Zeichnungen und aus der nun folgenden detaillierten Beschreibung ersichtlich.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt eine Darstellung einer bekannten Mehrpegelzelle, die vier Ladungszustände speichert.
  • 2 zeigt eine bekannte Darstellung eines Prozessors und eines Mehrpegelzellenspeichers.
  • 3 zeigt eine Darstellung eines Prozessors und eines Mehrpegelzellenspeichers, der die vorliegende Erfindung benutzt.
  • 4 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung, die zum Programmieren (d. h. Schreiben) von Daten in die Speichermatrix verwendet wird.
  • 5 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung, die zum Lesen von Daten aus der Speichermatrix 250 verwendet wird.
  • 6 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung, die einen Datenpuffer und einen Fehlercodierer und -decodierer (EED) enthält und die sowohl zum Schreiben in die Speichermatrix als auch zum Lesen aus der Speichermatrix verwendet werden kann.
  • 7 zeigt ein weiteres Ausführungsbeispiel einer Fehlerkorrekturschaltung zum Schreiben von Daten in die Speichermatrix.
  • 8 zeigt ein weiteres Ausführungsbeispiel einer Fehlerkorrekturschaltung zum Lesen von Daten aus der Speichermatrix.
  • 9 zeigt ein Ablaufdiagramm des Prozesses zum Erzeugen von Fehlerkorrekturcodes, wenn ein Datenwort in den Mehrpegelzellenspeicher geschrieben wird.
  • 10 zeigt eine repräsentative Zeichnung eines Datenworts und seines zugeordneten Fehlerlokalisierungscodes.
  • 11 zeigt ein Beispiel eines 64-Bit-Datenworts zusammen mit dem ihm zugeordneten 8-Bit-Fehlerlokalisierungscode.
  • 12 zeigt ein Ablaufdiagramm des Prozesses zum Korrigieren von Fehlern, die durch die Fehlerlokalisierungscodes beim Lesen eines Datenworts aus einem Mehrpegelzellenspeicher erfaßt worden sind.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden ein Verfahren und eine Vorrichtung zum Korrigieren von Fehlern in einem Mehrpegelzellenspeicher beschrieben. Das Verfahren verwendet Fehlerlokalisierungscodes, um Fehler in einem aus einer oder mehrereren Mehrpegelzellen gelesenen Datenwort zu korrigieren. Die Fehlerlokalisierungscodes zeigen einen Block von Bits innerhalb des Datenworts an, der einen Fehler enthält, geben aber nicht an, welches Bit fehlerhaft ist. Da der Block von Bits einer oder mehreren Mehrpegelzellen entspricht, identifizieren die Fehlerlokalisierungscodes eine fehlerhafte Mehrpegelzelle. Die Erfindung benutzt die Identifikation der fehlerhaften Mehrpegelzelle und kombiniert diese mit der Erkenntnis, daß ein Hauptausfallmechanismus einer Mehrpegelzelle der Ladungsverlust ist. Sobald eine bestimmte Mehrpegelzelle als inkorrekt gelesen identifiziert worden ist, kann der korrekte Zustand der Mehrpegelzelle als ein Ladungszustand vorhergesagt werden, der mehr Ladung aufweist, als der Ladungszustand, der aus der Mehrpegelzelle gelesen worden ist.
  • Während die Fehlerlokalisierungscodes bei Fujiwara (genannt im Hintergrund) verwendet wurden, um einen Speicherblock zu erfassen, der fehlerhaft war, so daß die den Speicherblock speichernde Speicherkarte gesperrt werden konnte, zieht die vorliegende Erfindung Nutzen aus dem Ausfallmechanismus der Mehrpegelzellen, um den Fehler zu korrigieren. Da der normale Ausfallmodus von Mehrpegelzellen auf der Grundlage des Ladungsverlustes nur eine Richtung hat und nicht zufällig ist, wie es bei Fujiwara beschrieben wurde, hat die vorliegende Erfindung entdeckt, daß die Vorhersage des richtigen Zustandes der fehlerhaften Mehrpegelzelle möglich ist.
  • Die Korrektur einer fehlerhaften Mehrpegelzelle wird durch Modifizieren der aus der fehlerhaften Mehrpegelzelle gelesenen Daten erreicht, so daß der Wert wiedergegeben wird, den sie hätte, wenn die fehlerhafte Mehrpegelzelle sich auf dem nächsthöheren Ladungszustand befinden würde. Die Fehlerlokalisierungscodes werden verwendet, um zu überprüfen, ob die Modifikation den Fehler korrigiert. Sofern die modifizierten Daten aus der fehlerhaften Mehrpegelzelle immer noch unrichtig sind, dann kann dieser Modifikationsprozeß wiederholt werden. Wenn mehrere Mehrpegelzellen fehlerhaft sind, so können die Daten aus einer Mehrpegelzelle konstant gehalten werden, während die anderen modifiziert werden oder umgekehrt, bis der Fehler korrigiert worden ist.
  • In der gesamten Beschreibung der Erfindung werden die Fehlerlokalisierungscodes, wie sie bei Fujiwara beschrieben worden sind, als ein Beispiel der Implementierung genannt. Jedoch können auch andere Algorithmen oder andere Arten von Implementierungen verwendet werden, um eine fehlerhafte Mehrpegelzelle zu identifizieren.
  • Die 3 bis 9 zeigen beispielhafte Implementierungen der Erfindung. 3 zeigt eine Darstellung eines Prozessors 200 und eines Mehrpegelzellenspeichers 204. Der Prozessor 200 ist mit einem Bus 202 gekoppelt. Der Mehrpegelzellenspeicher 204 weist eine Schnittstellensteuereinrichtung 205, eine Mehrpegelzellenspeichermatrix 250 und eine Fehlerkorrekturschaltung 260 auf. Die Schnittstellensteuereinrichtung 205 ist so eingekoppelt, daß sie die erforderlichen Operationen zum Steuern der Mehrpegelzellenspeichermatrix 250 und der Fehlerkorrekturschaltung 260 zur Verfügung stellt. Sowohl die Schnittstellensteuereinrichtung 205 als auch die Fehlerkorrekturschaltung 260 sind mit dem Bus 202 gekoppelt. Die Mehrpegelzellenspeichermatrix 250 ist mit der Fehlerkorrekturschaltung 260 gekoppelt. Der Prozessor 200 schreibt Daten zu dem Speicher 204 und liest Daten aus dem Speicher 204.
  • Bei einem Ausführungsbeispiel sind die Schnittstellensteuereinrichtung 205, die Mehrpegelzellenspeichermatrix 250 und die Fehlerkorrekturschaltung 260 auf einem einzigen Chip einer integrierten Schaltung angeordnet. Bei einem anderen Ausführungsbeispiel ist die Fehlerkorrekturschaltung 260 von der Speichermatrix 250 und der Schnittstellensteuereinrichtung 205 getrennt. Beispielsweise könnte sich die Fehlerkorrekturschaltung auf einem separaten Chip aufhalten.
  • 4 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung 260, die zum Programmieren (d. h. Schreiben) von Daten in die Speichermatrix 250 verwendet wird. Die Fehlerkorrekturschaltung 260 enthält einen Datenpuffer 302, einen Fehlerpuffer 304 und einen Fehlercodierer 300.
  • Der Bus 202 ist über den Datenpufferbus 308 mit dem Datenpuffer 302 gekoppelt. Der Datenpuffer 302 ist über den Speicherbus 312 mit der Speichermatrix 250 gekoppelt. Der Datenpuffer ist über den Bus 314 mit dem Fehlercodierer 300 gekoppelt. Der Fehlercodierer 300 ist über den Bus 316 mit dem Fehlerpuffer 304 gekoppelt, und der Fehlerpuffer 304 ist über den Fehlerbus 318 mit der Speichermatrix 250 gekoppelt.
  • Daten werden über den Datenpufferbus 308 in den Datenpuffer 302 geschrieben. Jede Übertragung von Daten über dem Datenpufferbus 308 ist üblicherweise ein Bruchteil der Breite des Datenpuffers 302. Beispielsweise kann der Datenpufferbus 308 8 Bits oder 16 Bits breit sein und der Datenpuffer 302 kann 64 Bits breit sein.
  • Wenn die gesamte Breite des Datenpuffers 302 mit Daten aus dem Bus 202 vollgeschrieben worden ist, wird das 64-Bit-Datenwort in dem Datenpuffer 302 an die Speichermatrix 250 über den Speicherbus 312 übertragen. Der Fehlercodierer 300 erzeugt unter Verwendung der über den Bus 314 aus dem Datenpuffer 302 eingegebenen Daten einen Fehlerkorrekturcode, der dem Fehlerpuffer 304 zur Verfügung gestellt wird. Der Fehlerpuffer 304 liefert den Fehlerkorrekturcode über den Bus 318 an die Speichermatrix 250.
  • Bei einem Ausführungsbeispiel der Erfindung erzeugt der Fehlercodierer 300 Fehlerlokalisierungscodes, welche eine Klasse von Fehlerkorrekturcodes sind, wie beispielsweise die in ”A Class of Error-Locating Codes for Byte-Organized Memory Systems” von E. Fujiwara und M. Kitakami, IEEE Transactions on Information Theory, Band 40, Nr. 6, November 1994, beschriebenen. Fehlerlokalisierungscodes erfassen einen oder mehrere fehlerhafte Blöcke von Daten innerhalb eines Datenworts, zeigen aber nicht genau die Bits des Blocks an, die fehlerhaft sind. Darüber hinaus können Fehlerlokalisierungscodes Einzelbitfehler erfassen.
  • Bei einer Implementierung der vorliegenden Erfindung werden das von dem Datenpuffer 302 zur Verfügung gestellte Datenwort und der von dem Fehlerpuffer 304 zur Verfügung gestellte Fehlercode zusammenhängend in der Speichermatrix 250 gespeichert. Bei einer anderen Implementierung wird das Datenwort separat von dem Fehlercode innerhalb der Speichermatrix 250 gespeichert. Bei noch einer anderen Implementierung wird der Fehlercode in einem von seinem zugehörigen Datenwort getrennten Speicherbereich gespeichert.
  • 5 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung 260, die zum Lesen von Daten aus der Speichermatrix 250 verwendet wird. Die Fehlerkorrekturschaltung 260 enthält einen Datenpuffer 320, einen Fehlerpuffer 322 und einen Fehlercodierer und -decodierer (EED) 324.
  • Während einer Leseoperation wird ein Datenwort aus der Speichermatrix 250 über den Bus 330 dem Datenpuffer 320 zur Verfügung gestellt. In ähnlicher Weise wird der dem Datenwort zugeordnete Fehlerkorrekturcode dem Zählerpuffer 322 zur Verfügung gestellt. Bei einem Ausführungsbeispiel wird der Fehlerkorrekturcode aus der Speichermatrix 250 über den Bus 322 geliefert.
  • Der Datenpuffer 320 ist so eingekoppelt, daß er seine Daten dem EED 324 über den Bus 334 zur Verfügung stellt. Der Fehlerpuffer 322 ist so eingekoppelt, daß er seinen Fehlerkorrekturcode dem EED 324 über den Bus 336 zur Verfügung stellt. Bei Empfang der Eingangssignale von sowohl dem Datenpuffer 320 als auch dem Fehlerpuffer 322 bestimmt der EED 324, ob es irgendwelche fehlerhaften Bits in dem Datenwort gibt, das aus der Speichermatrix gelesen worden ist. Wenn es irgendwelche fehlerhaften Bits in dem Datenwort gibt, dann legt der EED 324 die geeigneten Signale 344 an, um die fehlerhaften Bits zu korrigieren, wie es unter Bezugnahme auf die 11 und 12 beschrieben werden wird. Die Signale 340 können beliebige der Datenbits des Datenpuffers 320 einzeln ändern. Es kann erforderlich sein, daß der EED 324 verschiedene Datenwerte in dem Datenpuffer 320 iterativ testet, bevor er einen endgültigen Datenwert bestimmt, der keine fehlerhaften Bits mehr aufweist. Der Datenpuffer 320 ist über den Bus 338 mit dem Bus 202 gekoppelt.
  • 6 zeigt ein Ausführungsbeispiel einer Fehlerkorrekturschaltung 260 mit einem Datenpuffer 350 und einem Fehlercodierer und -decodierer (EED) 354, die sowohl zum Schreiben in die Speichermatrix 250 als auch zum Lesen aus der Speichermatrix 250 verwendet werden kann. Der EED 354 umfaßt einen Codierer zum Erzeugen des fehlerlokalisierenden Codes aus dem Datenwort und einen Decodierer, welcher zum Korrigieren des Datenworts verwendet wird, wenn es aus der Speichermatrix gelesen wird.
  • 7 zeigt ein weiteres Ausführungsbeispiel einer Fehlerkorrekturschaltung 260 zum Schreiben von Daten in die Speichermatrix 250. Die Fehlerkorrekturschaltung 260 gemäß 7 jedoch enthält keinen Datenpuffer oder Fehlerpuffer wie die in 4. Das Datenwort wird von dem Bus 202 zu der Speichermatrix 250 über den Bus 380 zur Verfügung gestellt. Das Datenwort wird darüber hinaus als Eingabe dem Codierer 384 über den Bus 382 zur Verfügung gestellt. Der Codierer 384 erzeugt fehlerlokalisierende Codes und liefert diese der Speichermatrix 250 über den Bus 386. Dieses Ausführungsbeispiel kann benutzt werden, wenn der Codierer 384 ausreichend Zeit hat, um die Fehlerkorrekturcodes zu erzeugen, bevor die Eingabedaten an dem Codierer 384 geändert werden.
  • 8 zeigt ein weiteres Ausführungsbeispiel der Fehlerkorrekturschaltung 260 zum Lesen von Daten aus der Speichermatrix 250. Die Fehlerschaltung 260 gemäß 8 enthält keinen Datenpuffer oder Fehlerpuffer wie die in 5.
  • Ein Datenwort wird von der Speichermatrix 250 zu der Fehlerkorrekturschaltung 260 über die Signalleitungen 388a–z geliefert. Das Datenwort wird dem Codierer 390 über die Signalleitungen 389a–z zur Verfügung gestellt. Der Codierer codiert das Datenwort erneut und stellt die Fehlerkorrekturcodes auf den Signalleitungen 393a–m zur Verfügung. Die erneut codierten Fehlerkorrekturcodes werden mit den Fehlerkorrekturcodes verglichen, die zuvor gesichert worden sind und die auf den Signalleitungen 392a–m zur Verfügung gestellt werden. Beispielsweise kann der Vergleich mit einer XOR-Schaltung durchgeführt werden. Das Ausgangssignal des Vergleichs wird einem Decodierer 394 zur Verfügung gestellt. Der Decodierer liefert die Signale 396a–z, welche die ursprünglichen Signale 388a–z modifizieren können, um in dem Datenwort erfaßte Fehler zu korrigieren. Das korrigierte Datenwort wird dem Bus 202 über die Signalleitungen 398 geliefert.
  • Bei einem alternativen Ausführungsbeispiel können die Programmierschaltung gemäß 7 und die Leseschaltung gemäß 8 derart kombiniert werden, daß sie sich einen Codierer teilen.
  • 9 zeigt ein Ablaufdiagramm, das die Schritte zeigt, die beim Erzeugen von Fehlerkorrekturcodes unternommen werden, wenn ein Datenwort in den Mehrpegelzellenspeicher geschrieben wird. Die folgende Beschreibung wird unter Bezugnahme auf die Programmierschaltung gemäß 4 gegeben. Das Ablaufdiagramm startet im Block 400, von welchem sich die Operation zum Block 402 fortsetzt. Im Block 402 wird der Datenpuffer 302 mit Daten gefüllt, die ein Datenwort bilden. Das Schreiben in den Datenpuffer 302 kann mehrere Buszyklen beanspruchen, da der Datenbuspuffer 308 üblicherweise nicht so breit ist wie der Datenpuffer 302.
  • Die Operation setzt sich im Block 404 fort, bei welchem die Bits des Datenworts durch den Codierer 300 bearbeitet werden, um einen fehlerlokalisierenden Code zu erzeugen. Beim Block 406 werden das Datenwort und der fehlerlokalisierende Code in dem Mehrpegelzellenspeicher 204 gespeichert. Die Operation endet am Block 410.
  • 10 zeigt eine repräsentative Zeichnung eines Datenworts 402 und seines zugehörigen fehlerlokalisierenden Codes 430. Der fehlerlokalisierende Code 430 wird so decodiert, daß er auf eine fehlerhafte Gruppe von Bits, die auch ”Byte” genannt wird, in dem Datenwort 420 verweist.
  • Bei einem Ausführungsbeispiel entspricht jedes Byte exakt einer einzelnen Mehrpegelzelle, d. h., jedes Byte besteht aus derjenigen Anzahl von Bits, die in einer bestimmten Mehrpegelzelle gespeichert sind und jedes Byte ist an den Begrenzungen der Mehrpegelzelle ausgerichtet. In diesem Fall identifiziert der fehlerlokalisierende Code, wenn er ein fehlerhaftes Byte identifiziert, außerdem eine fehlerhafte Mehrpegelzelle. Da der Ausfallmechanismus der Mehrpegelzelle auf der Grundlage des Ladungsverlustes vorhersagbar ist, wird der richtige Zustand der fehlerhaften Mehrpegelzelle als Ladungszustand vorhergesagt, der mehr Ladung aufweist, als der aus der fehlerhaften Mehrpegelzelle gelesene Ladungszustand.
  • Bei einem anderen Ausführungsbeispiel überlappt das fehlerhafte Byte zwei Mehrpegelzellen, d. h., ein Teil des Bytes ist in einer Mehrpegelzelle und ein weiterer Teil des Bytes in einer weiteren Mehrpegelzelle gespeichert. Dies kann auftreten, wenn die Anzahl der Bits in dem Byte nicht gleich der Anzahl der in einer Mehrpegelzelle gespeicherten Bits ist oder wenn das Byte in Bezug auf die Mehrpegelzellenbegrenzungen nicht ausgerichtet ist. Wenn ein Überlappen von zwei Mehrpegelzellen auftritt, kann eine oder können beide dem fehlerhaften Byte zugeordnete Zelle(n) korrigiert werden, indem höhere Ladungszustände einer oder beider der zwei Mehrpegelzellen vorhergesagt werden. In ähnlicher Weise kann das Überlappen von mehr als zwei Mehrpegelzellen korrigiert werden, indem höhere Ladungszustände der einen oder mehreren der fehlerhaften Mehrpegelzellen vorhergesagt werden.
  • 11 zeigt ein Beispiel eines 64-Bit-Datenworts 450 zusammen mit dem ihm zugeordneten 8-Bit-Fehlerlokalisierungscode 460. Der Fehlerlokalisierungscode 460 ist von einer Art eines Fehlerlokalisierungscodes, wie sie bei Fujiwara beschrieben sind. Er kann ein n-Bit-Byte erfassen, das fehlerhaft ist. Er kann darüber hinaus einen Einzelbitfehler erfassen. 11 zeigt ein Beispiel, bei dem n = 4 ist. Das Datenwort ist darüber hinaus in zwei 32-Bit-Blöcke unterteilt. Der 8-Bit-Fehlerlokalisierungscode 460 ist in der Lage, einen 4-Bit-Byte-Fehler in jedem der 32-Bit-Blöcke zu erfassen.
  • Somit entspricht dann, wenn das Datenwort in einem 4-Bit-Mehrpegelzellenspeicher (in welchem jede Zelle 16 Ladungszustände haben würde) gespeichert wird, jedes der 4-Bit-Bytes einer bestimmten Mehrpegelzelle. Sofern ein Fehler in einem der 4-Bit-Bytes erfaßt würde, so sind die aus der dem 4-Bit-Byte zugeordneten Mehrpegelzelle gelesenen Daten fehlerhaft. Unter Verwendung des Fehlerlokalisierungscodes kann eine fehlerhafte Mehrpegelzelle innerhalb jedes Blocks bestimmt werden.
  • Mehrere fehlerhafte Mehrpegelzellen können innerhalb des gleichen Datenworts bestimmt werden, indem der Fehlerlokalisierungscode 460 auf zwei getrennte fehlerhafte 4-Bit-Bytes des Datenworts 450 zeigt, wie es in 11 gezeigt ist. Die Genauigkeit der Fehlerkorrektur variiert in Abhängigkeit von der Anzahl der fehlerhaften Bits und n-Bit-Bytes, wie es in dem IEEE-Artikel von E. Fujiwara und M. Kitakami, der oben genannt wurde, beschrieben ist. Verschiedene Konfigurationen von n-Bit-Bytes und m-Bit-Blöcken können implementiert werden, um den gewünschten Grad der Fehlerlokalisierungs- und -korrekturleistung zu erreichen.
  • Fehlerlokalisierungscodes haben einen Vorteil gegenüber Fehlerkorrekturcodes, da weniger Bits für ihre Implementierung erforderlich sind. Dies reduziert die Kosten und die Größe der Speichermatrix. Wenn zum Vergleich ein 8-Bit-Hamming-Code (eine Art eines Fehlerkorrekturcodes) anstelle des Fehlerlokalisierungscodes 460 verwendet würde, dann könnte nur ein einzelner Bitfehler in dem Datenwort 450 korrigiert werden. Sofern ein Doppelbitfehler in dem Datenwort 450 aufträte, würde der Doppelbitfehler erfaßt werden, könnte aber nicht von dem Hamming-Code korrigiert werden. Somit stellt der Fehlerlokalisierungscode 460 ein besseres Verfahren zum Korrigieren von Fehlern in dem Datenwort als der Fehlerkorrektur-Hamming-Code zur Verfügung.
  • Da ein vorherrschender Ausfallmechanismus für Mehrpegelzellen darin besteht, daß die Mehrpegelzelle Ladung verliert, ist es möglich, sobald eine fehlerhafte Mehrpegelzelle bestimmt worden ist, vorherzusagen, daß die fehlerhafte Mehrpegelzelle einen höheren Ladungspegel haben sollte als der ihres gegenwärtigen Zustandes.
  • 12 zeigt ein Ablaufdiagramm des Prozesses des Korrigierens von durch die Fehlerlokalisierungscodes erfaßten Fehlern, wenn ein Datenwort aus einem Mehrpegelzellenspeicher gelesen wird. Die folgende Beschreibung wird unter Bezugnahme auf die Leseschaltung gemäß 5 ausgeführt. Das Ablaufdiagramm startet im Block 500, von welchem es sich zum Block 502 fortsetzt. Beim Block 502 werden ein Datenwort und der ihm zugeordnete Fehlerlokalisierungscode in dem Mehrpegelzellenspeicher gelesen. Das Datenwort wird in dem Datenpuffer 320 und der Fehlerlokalisierungscode in dem Fehlerpuffer 322 gehalten.
  • Beim Block 504 werden die Datenbits und die Fehlerlokalisierungscodes durch den EED 324 verarbeitet, um zu bestimmen, ob es einen Fehler in dem Datenwort gab. Die Verarbeitung der Datenbits und des Fehlerlokalisierungscodes, die von dem EED 324 ausgeführt wird, kann durch gut bekannte Schaltungen implementiert werden.
  • Beim Block 506 wird dann, wenn kein Fehler erfaßt worden ist, die Operation beim Block 560 fortgesetzt, bei welchem die Operation beendet wird. Wenn jedoch ein Fehler erfaßt worden ist, setzt sich die Operation beim Block 510 fort.
  • Beim Block 510 wird dann, wenn der EED 324 einen Einzelbitfehler erfaßt hat, die Operation beim Block 512 fortgesetzt, bei welchem der EED 324 den Einzelbitfehler innerhalb des Datenpuffers 320 durch Anlagen einer der Signalleitungen 340 zum Ändern der richtigen Bitwerte des Datenpuffers 320 korrigiert. Vom Block 512 setzt sich die Operation beim Block 560 fort, bei welchem die Operation endet.
  • Wenn jedoch beim Block 510 der Decodierer einen Mehrbit-Byte-Fehler erfaßt, wie beispielsweise einen 4-Bit-Byte-Fehler, wie er unter Bezugnahme auf 11 beschrieben wurde, so wird die Operation beim Block 520 fortgesetzt. Beim Block 520 werden die eine oder die mehreren fehlerhaften Mehrpegelzellen, die Teile des Datenworts speichern, bestimmt. Auf diese fehlerhaften Mehrpegelzellen wird durch den EED 324 gezeigt. Beim Block 522 wird der gegenseitige Ladungszustand der fehlerhaften Zelle bzw. Zellen durch im Stand der Technik der Mehrpegelzellen gut bekannte Schaltungen erfaßt. Beim Block 524 wird das den fehlerhaften Zellen entsprechende Speicherelementbitmuster derart modifiziert, daß es das des nächsthöheren Ladungszustandes ergibt. Bei einer Implementierung wird direkt der nächsthöhere Ladungszustand aus dem aktuellen Ladungszustand als die höchstwahrscheinliche korrektive Maßnahme vorhergesagt. Bei einer anderen Implementierung kann ein Ladungszustand, der vom nächsthöheren Ladungszustand abweicht, wahrscheinlicher sein, um einen Fehler zu korrigieren. Beispielsweise kann es experimentell gefunden werden, daß der vorherrschende Fehlermodus für einen bestimmten Ladungszustand einer Mehrpegelzelle darin besteht, zwei Zustände nach unten zu springen. In diesem Fall kann der Fehler korrigiert werden, indem vorhergesagt wird, daß der zweitnächsthöhere Ladungszustand gegenüber dem gelesenen Ladungszustand die wahrscheinlichste korrektive Maßnahme ist. In ähnlicher Weise könnte dann, sofern es gefunden würde, daß ein bestimmter Ausfallmodus der einzige Ausfallmodus einer Mehrpegelzelle wäre, der Korrekturalgorithmus in geeigneter Weise implementiert werden, um nur die erforderlichen korrektiven Maßnahmen auszuführen.
  • Beim Block 526 werden das modifizierte Datenwort und der Fehlerlokalisierungscode durch den EED 324 verarbeitet, um nachzusehen, ob der Fehler durch die im Block 524 durchgeführte Modifikation des Datenworts korrigiert worden ist.
  • Wenn es immer noch einen Fehler gibt und die der fehlerhaften Mehrpegelzelle oder -zellen zugeordneten Bits erneut auf einen höheren Ladungszustand modifiziert werden können, dann wird die Operation vom Block 530 zurück zum Block 524 fortgesetzt. Wenn jedoch sowohl die Bedingung, daß es noch einen Fehler gibt, als auch die Bedingung, daß das Speicherelementbitmuster, das einer fehlerhaften Mehrpegelzelle zugeordnet ist, nicht mehr auf einen höheren Ladungszustand modifiziert werden kann, erfüllt sind, dann wird die Operation beim Block 540 fortgesetzt.
  • Beim Block 540 wird dann, wenn es noch einen Fehler in dem Datenwort gibt, die Operation beim Block 550 fortgesetzt, bei welchem ein Fehler durch ein Flag angezeigt wird. Der Prozessor 200 oder die andere Einrichtung, die das Datenwort anfordern, werden darüber informiert, daß ein Fehler aufgetreten ist.
  • Wenn jedoch beim Block 540 kein Fehler mehr erfaßt wird, dann wird die Operation 560 fortgesetzt. Beim Block 560 endet das Ablaufdiagramm. Der Datenpuffer 320 hält ein Datenwort, bei welchem Fehler korrigiert worden sind. Bei einem Ausführungsbeispiel eines Mehrpegelzellenspeichers wird die fehlerhafte Mehrpegelzelle mit dem korrigierten Datenwort, das in dem Datenpuffer 320 gehalten wird, neu überschrieben. Bei einem anderen Ausführungsbeispiel jedoch wird eine Korrektur der Speichermatrix nicht ausgeführt. Dies beruht auf der Komplexität des Hinzufügens zusätzlicher Schaltungen, um zur Speichermatrix zurückzuschreiben. Zusätzlich würde bei einem Flash-Speicher-Ausführungsbeispiel grundsätzlich ein gesamter Block zu löschen sein, um ein Datenwort, das vorher bereits zu dem Flash-Speicher geschrieben worden ist, neu zu schreiben.

Claims (8)

  1. Verfahren zum Lesen von Daten aus einem Speicher mit Mehrpegel-Speicherzellen, die jeweils wenigstens drei Ladungszustände speichern können, wobei: a) die Daten und ein zugehöriger Fehlerlokalisierungscode gelesen werden (502), wobei der Fehlerlokalisierungscode ein Identifizieren desjenigen Blocks oder derjenigen Blöcke der Daten, der bzw. die jeweils einer fehlerhafte Daten enthaltenden Mehrpegel-Speicherzelle zugeordnet sind, gestattet; und b) dann, wenn der gelesene Fehlerlokalisierungscode anzeigt, dass ein gelesener, einem bestimmten Ladungspegel einer Speicherzelle entsprechender Block der Daten fehlerhaft ist, dieser Block der Daten bei der Ausgabe derart modifiziert wird, dass er dem nächsthöheren Ladungspegel der Speicherzelle entspricht.
  2. Das Verfahren nach Anspruch 1, das ferner die Schritte aufweist: (c) Verwenden des Fehlerlokalisierungscodes, um Zielbits des identifizierten Blocks oder der identifizierten Blöcke der Daten, die fehlerhaft sind, zu bestimmen, wobei die Zielbits weiter anzeigen, dass die Ziel-Mehrpegelzelle einen ersten Ladungszustand hält; und (d) Modifizieren der Zielbits, so dass sie dem nächsthöheren Ladungspegel entspricht.
  3. Das Verfahren nach Anspruch 2, ferner umfassend den Schritt des: (e) Bestimmens, ob die Zielbits, die in dem Schritt (d) modifiziert worden sind, noch immer fehlerhaft sind, und, sofern die Zielbits noch immer fehlerhaft sind, zum anschließenden Modifizieren der Zielbits derart, dass sie dem Halten eines dritten Ladungspegels durch die Ziel-Mehrpegelzelle entsprechen, wobei der dritte Ladungspegel mehr Ladung hält als der zweite Ladungspegel.
  4. Das Verfahren nach Anspruch 2, wobei die Zielbits darüber hinaus einer zweiten Ziel-Mehrpegelzelle zugeordnet sind, und wobei die Zielbits anzeigen, dass die zweite Ziel-Mehrpegelzelle einen vierten Ladungspegel hält, wobei das Verfahren ferner den Schritt aufweist: (e) Modifizieren der Zielbits derart, dass sie dem Halten eines fünften Ladungspegels durch die zweite Ziel-Mehrpegelzelle entsprechen, wobei der fünfte Ladungspegel mehr Ladung hält als der vierte Ladungspegel.
  5. Das Verfahren nach Anspruch 1, das ferner folgende Schritte aufweist: (c) Verwenden der Fehlerlokalisierungsbits, um zu bestimmen, dass ein Abschnitt der vorgegebenen Anzahl von Datenbits unrichtig ist, wobei der Abschnitt der vorgegebenen Anzahl von Datenbits einer ersten Mehrpegelzelle entspricht, die gegenwärtig einen ersten Ladungspegel hält und (d) Modifizieren des Abschnitts der vorgegebenen Anzahl von Datenbits, die der ersten Mehrpegelzelle zugeordnet sind, so dass sie dem nächsthöheren Ladungspegel entsprechen.
  6. Das Verfahren nach Anspruch 5, ferner aufweisend die Schritte: (e) Überprüfen, ob ein Fehler in der vorgegebenen Anzahl von Datenbits vorhanden ist, die in dem Schritt (d) modifiziert worden sind; und (f) Modifizieren des Abschnitts der vorgegebenen Anzahl von Datenbits, die der ersten Mehrpegelzelle zugeordnet sind, derart, dass sie einem nächsthöheren Ladungspegel entsprechen, bis der Fehler korrigiert worden ist.
  7. Eine Schaltung zum Durchführen eines Verfahrens nach einem der vorhergehenden Ansprüche, aufweisend: eine Speichermatrix, die eine Mehrzahl von Mehrpegelzellen aufweist, die in der Lage sind, zumindest jeweils zwei Bits Daten zu speichern; und eine Fehlerschaltung, die so eingekoppelt ist, dass sie die Daten aus der Speichermatrix empfängt, wobei die Fehlerschaltung einen Decodierer aufweist, der versucht, ein fehlerhaftes Speicherelementbitmuster, das durch eine der Mehrpegelzellen zur Verfügung gestellt worden ist, zu korrigieren, in dem der Decodierer auf der Grundlage eines dem fehlerhaften Speicherelementbitmuster zugeordneten Ladungszustandes das fehlerhafte Speicherelementbitmuster modifiziert.
  8. Die Schaltung nach Anspruch 7, ferner aufweisend: einen Datenpuffer, der das fehlerhafte Speicherelementbitmuster speichern kann, wobei der Datenpuffer eine Eingabe aus dem Decodierer zum Modifizieren einzelner, in dem Datenpuffer gespeicherter Bits gestattet.
DE19782077A 1996-10-25 1997-08-06 Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes Expired - Fee Related DE19782077B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/740,247 1996-10-25
US08/740,247 US5859858A (en) 1996-10-25 1996-10-25 Method and apparatus for correcting a multilevel cell memory by using error locating codes
PCT/US1997/013918 WO1998019241A1 (en) 1996-10-25 1997-08-06 Method and apparatus for correcting a multilevel cell memory by using error locating codes

Publications (1)

Publication Number Publication Date
DE19782077B4 true DE19782077B4 (de) 2011-04-07

Family

ID=24975669

Family Applications (2)

Application Number Title Priority Date Filing Date
DE19782077T Pending DE19782077T1 (de) 1996-10-25 1997-08-06 Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE19782077A Expired - Fee Related DE19782077B4 (de) 1996-10-25 1997-08-06 Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE19782077T Pending DE19782077T1 (de) 1996-10-25 1997-08-06 Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes

Country Status (9)

Country Link
US (1) US5859858A (de)
JP (1) JP3982639B2 (de)
KR (1) KR100331139B1 (de)
CN (1) CN1113294C (de)
AU (1) AU3911797A (de)
DE (2) DE19782077T1 (de)
MY (1) MY114049A (de)
TW (1) TW368622B (de)
WO (1) WO1998019241A1 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3165101B2 (ja) * 1998-03-05 2001-05-14 日本電気アイシーマイコンシステム株式会社 多値式半導体メモリ装置およびその不良救済方法
US6532556B1 (en) 2000-01-27 2003-03-11 Multi Level Memory Technology Data management for multi-bit-per-cell memories
US6856568B1 (en) 2000-04-25 2005-02-15 Multi Level Memory Technology Refresh operations that change address mappings in a non-volatile memory
US6396744B1 (en) 2000-04-25 2002-05-28 Multi Level Memory Technology Flash memory with dynamic refresh
US7079422B1 (en) 2000-04-25 2006-07-18 Samsung Electronics Co., Ltd. Periodic refresh operations for non-volatile multiple-bit-per-cell memory
US6466476B1 (en) 2001-01-18 2002-10-15 Multi Level Memory Technology Data coding for multi-bit-per-cell memories having variable numbers of bits per memory cell
JP4437519B2 (ja) * 2001-08-23 2010-03-24 スパンション エルエルシー 多値セルメモリ用のメモリコントローラ
US6751766B2 (en) * 2002-05-20 2004-06-15 Sandisk Corporation Increasing the effectiveness of error correction codes and operating multi-level memory systems by using information about the quality of the stored data
JP3935139B2 (ja) 2002-11-29 2007-06-20 株式会社東芝 半導体記憶装置
ITMI20022669A1 (it) * 2002-12-18 2004-06-19 Simicroelectronics S R L Struttura e metodo di rilevamento errori in un dispositivo
US8848442B2 (en) * 2006-03-06 2014-09-30 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
US7388781B2 (en) 2006-03-06 2008-06-17 Sandisk Il Ltd. Multi-bit-per-cell flash memory device with non-bijective mapping
DE102006010820A1 (de) 2006-03-07 2007-09-13 Micronas Gmbh Fehlerkorrektur- und Fehlererfassungs-Verfahren zum Auslesen von gespeicherten Informationsdaten und Speichersteuereinrichtung dafür
US7945840B2 (en) * 2007-02-12 2011-05-17 Micron Technology, Inc. Memory array error correction apparatus, systems, and methods
US7633798B2 (en) * 2007-11-21 2009-12-15 Micron Technology, Inc. M+N bit programming and M+L bit read for M bit memory cells
KR101515122B1 (ko) * 2008-02-15 2015-04-27 삼성전자주식회사 저장된 데이터의 오류에 기반하여 기준 전압을 제어하는 방법과 메모리 데이터 검출 장치
KR101434405B1 (ko) 2008-02-20 2014-08-29 삼성전자주식회사 메모리 장치 및 메모리 데이터 읽기 방법
KR101506655B1 (ko) * 2008-05-15 2015-03-30 삼성전자주식회사 메모리 장치 및 메모리 데이터 오류 관리 방법
US20100016675A1 (en) * 2008-07-18 2010-01-21 Cohen Jason C Method of assessing a condition using sucking patterns
KR101537018B1 (ko) * 2008-10-01 2015-07-17 삼성전자주식회사 보안 메모리 인터페이스, 이를 포함하는 시스템 및 스마트카드
US8291297B2 (en) * 2008-12-18 2012-10-16 Intel Corporation Data error recovery in non-volatile memory
US8589766B2 (en) * 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8732557B2 (en) * 2011-05-31 2014-05-20 Micron Technology, Inc. Data protection across multiple memory blocks
US20150067437A1 (en) * 2013-08-30 2015-03-05 Kuljit S. Bains Apparatus, method and system for reporting dynamic random access memory error information
KR102157875B1 (ko) 2013-12-19 2020-09-22 삼성전자주식회사 불휘발성 메모리 장치 및 그것을 포함한 메모리 시스템
US9501350B2 (en) * 2014-09-22 2016-11-22 Empire Technology Development Llc Detecting unidirectional resistance drift errors in a multilevel cell of a phase change memory
US9519539B2 (en) * 2014-10-24 2016-12-13 Macronix International Co., Ltd. Monitoring data error status in a memory
US9679661B1 (en) 2016-06-28 2017-06-13 Sandisk Technologies Llc Non-volatile storage system with self-test for read performance enhancement feature setup
US9672940B1 (en) 2016-08-18 2017-06-06 Sandisk Technologies Llc Non-volatile memory with fast read process
US11990201B2 (en) 2021-01-14 2024-05-21 Changxin Memory Technologies, Inc. Storage system
CN114765055B (zh) * 2021-01-14 2024-05-03 长鑫存储技术有限公司 纠错系统
US11599417B2 (en) 2021-01-14 2023-03-07 Changxin Memory Technologies, Inc. Error correction system
EP4050608B1 (de) 2021-01-14 2023-06-28 Changxin Memory Technologies, Inc. Vergleicherschaltung mit xor und xnor gattern
EP4071762B1 (de) 2021-01-14 2023-07-05 Changxin Memory Technologies, Inc. Fehlerkorrektursystem
CN114765056B (zh) 2021-01-14 2024-07-12 长鑫存储技术有限公司 存储系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07234823A (ja) * 1993-12-28 1995-09-05 Toshiba Corp 記憶システム
US5450363A (en) * 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
EP0709776A1 (de) * 1994-10-31 1996-05-01 STMicroelectronics S.r.l. Fehlernachweis- und Korrekturverfahren in einem mehrstufigen Speicher und Speicher für dieses Verfahren
EP0704854B1 (de) * 1994-09-30 1999-12-01 STMicroelectronics S.r.l. Speichergerät mit Fehlerdetektion und -korrektur und Verfahren zum Schreiben und Löschen des Speichergeräts

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0600137A1 (de) * 1992-11-30 1994-06-08 International Business Machines Corporation Verfahren und Einrichtung zur Korrektur von Fehlern in einem Speicher
US5550849A (en) * 1993-05-20 1996-08-27 Ceram Incorporated Method and apparatus for detecting single or multiple bit errors instorage devices
US5555250A (en) * 1994-10-14 1996-09-10 Compaq Computer Corporation Data error detection and correction system
US5475693A (en) * 1994-12-27 1995-12-12 Intel Corporation Error management processes for flash EEPROM memory arrays
US5541886A (en) * 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07234823A (ja) * 1993-12-28 1995-09-05 Toshiba Corp 記憶システム
US5621682A (en) * 1993-12-28 1997-04-15 Kabushiki Kaisha Toshiba Memory system
US5450363A (en) * 1994-06-02 1995-09-12 Intel Corporation Gray coding for a multilevel cell memory system
EP0704854B1 (de) * 1994-09-30 1999-12-01 STMicroelectronics S.r.l. Speichergerät mit Fehlerdetektion und -korrektur und Verfahren zum Schreiben und Löschen des Speichergeräts
EP0709776A1 (de) * 1994-10-31 1996-05-01 STMicroelectronics S.r.l. Fehlernachweis- und Korrekturverfahren in einem mehrstufigen Speicher und Speicher für dieses Verfahren

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
FUJIWARA, E.
FUJIWARA, E.; KITAKAMI, M.: "A Class of Error-Locating Codes for Byte-Organized Memory Systems", IEEE Transactions on Information Theory, Vol. 40, No. 6, November 1994, S. 1857-1865 *
KITAKAMI, M.: "A Class of Error-Locating Codes for Byte-Organized Memory Systems", IEEE Transactions on Information Theory, Vol. 40, No. 6, November 1994, S. 1857-1865

Also Published As

Publication number Publication date
WO1998019241A1 (en) 1998-05-07
US5859858A (en) 1999-01-12
TW368622B (en) 1999-09-01
DE19782077T1 (de) 1999-09-23
CN1242088A (zh) 2000-01-19
JP2001503181A (ja) 2001-03-06
MY114049A (en) 2002-07-31
KR20000052798A (ko) 2000-08-25
KR100331139B1 (ko) 2002-04-01
JP3982639B2 (ja) 2007-09-26
CN1113294C (zh) 2003-07-02
AU3911797A (en) 1998-05-22

Similar Documents

Publication Publication Date Title
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE69721076T2 (de) Verfahren und vorrichtung zur korrektur von mehrpegel-speicherzellenanordungen unter verwendung von verschachtelung
DE102004036888B4 (de) Flashspeichersystem und zugehöriges Datenschreibverfahren
DE102006033649B4 (de) Speicherbauelement und Verfahren zum Konfigurieren eines Speicherbauelements
DE60217591T2 (de) Speicher-Steuerung für Mehrpegel-Speicherzelle
DE102008003113B4 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102008030264B4 (de) Verfahren zum Lesen eines Flashspeichers und Speichersystem
DE69615538T2 (de) Integrierte speicherredundanzschaltung für programmierbare festwertspeicher und progammierungsverfahren
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE102005052698A1 (de) Verfahren zur Verarbeitung von nichtflüchtig gespeicherten Daten
DE102007016460A1 (de) Nichtflüchtiges Speicherbauelement, nichtflüchtiges Speichersystem und Leseverfahren für ein nichtflüchtiges Speicherbauelement
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE3209679C2 (de)
DE112008002553T5 (de) Einsatz eines MLC-Flash als SLC durch Schreiben von Dummy-Daten
DE102018122826A1 (de) Vorrichtung zum Unterstützen eines Fehlerkorrekturcodes und Testverfahren dafür
EP2100308B1 (de) Verfahren und halbleiterspeicher mit einer einrichtung zur erkennung von adressierungsfehlern
DE102019123510A1 (de) Nichtflüchtige Speichervorrichtung und Speichersystem, das die nichtflüchtige Speichervorrichtung umfasst
DE102015113414A1 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
EP1588380B1 (de) Verfahren zur erkennung und/oder korrektur von speicherzugriffsfehlern und elektronische schaltungsanordnung zur durchführung des verfahrens
EP0902924B1 (de) Redundanzspeichervorrichtung mit rom-speicherzellen
DE3786853T2 (de) Gerät zur Erkennung und Klassifizierung von Steuerwortfehlern.
DE60212332T2 (de) Selbstreparatur-Methode für nicht flüchtige Speicher mit einer Architektur zur Fehlervermeidung sowie nicht flüchtiger Speicher
DE112020003961T5 (de) Vorhersagende speicherverwaltung
DE69627595T2 (de) Halbleiterspeicher und Verfahren zum Ersetzen einer redundanten Speicherzelle

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8125 Change of the main classification

Ipc: G11C 29/00

8128 New person/name/address of the agent

Representative=s name: BOEHMERT & BOEHMERT, 28209 BREMEN

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110301