DE102013016694B4 - Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern - Google Patents

Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern Download PDF

Info

Publication number
DE102013016694B4
DE102013016694B4 DE102013016694.2A DE102013016694A DE102013016694B4 DE 102013016694 B4 DE102013016694 B4 DE 102013016694B4 DE 102013016694 A DE102013016694 A DE 102013016694A DE 102013016694 B4 DE102013016694 B4 DE 102013016694B4
Authority
DE
Germany
Prior art keywords
bits
redundant
memory cells
subset
redundant bits
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
DE102013016694.2A
Other languages
English (en)
Other versions
DE102013016694A1 (de
Inventor
Robert Eugeniu Mateescu
Cyril Guyot
Zvonimir Bandic
Luiz Franca-Neto
Qingbo Wang
Hessam Mahdavifar
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of DE102013016694A1 publication Critical patent/DE102013016694A1/de
Application granted granted Critical
Publication of DE102013016694B4 publication Critical patent/DE102013016694B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/802Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout by encoding redundancy signals
    • 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
    • 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/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/14Implementation of control logic, e.g. test mode decoders
    • 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/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

Datenspeichersystem (100), das Folgendes umfasst:eine Speicherschaltung (102,103) mit Speicherzellen undeine Steuerschaltung (101), die in der Lage ist, Datenbits zu empfangen, die zum Speichern in den Speicherzellen bereitgestellt werden,wobei die Steuerschaltung in der Lage ist, die Datenbits zu codieren (201), um eine erste Menge redundanter Bits und codierter Datenbits zu erzeugen, so dass die codierten Datenbits, die zum Speichern in einer ersten Teilmenge der Speicherzellen mit ersten Haftfehlern ausgewählt werden, digitale Werte entsprechender erster Haftfehler aufweisen,wobei die Steuerschaltung in der Lage ist, die erste Menge redundanter Bits zu codieren (202), um eine zweite Menge redundanter Bits zu erzeugen, undwobei die Steuerschaltung in der Lage ist, Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits auszuführen (203), um eine dritte Menge redundanter Bits zu erzeugen, so dass redundante Bits in der dritten Menge redundanter Bits, die zum Speichern in einer zweiten Teilmenge der Speicherzellen mit zweiten Haftfehlern ausgewählt werden, digitale Werte entsprechender zweiter Haftfehler aufweisen.

Description

  • GEBIET DER OFFENBARUNG
  • Die vorliegende Erfindung betrifft Datenspeichersysteme und insbesondere Techniken zum Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern (stuck-at faults).
  • HINTERGRUND
  • Bei zahlreichen Datenübertragungssystemen werden Fehlerkorrektur-Codierer und -Decodierer zum Erkennen und Korrigieren von Fehlern in Daten verwendet. Speichersysteme werden häufig als ein Datenübertragungssystem mit einer Verzögerung modelliert, wobei Daten während einer Schreiboperation übertragen und Daten während einer Leseoperation empfangen werden. Bei einem Speichersystem können Zufallsfehler bis zu einer Häufigkeit von etwa 1 × 10-4 mit einem akzeptablem Aufwand korrigiert werden. Als Vorkehrung gegen eine Fehlerhäufigkeit von etwa 1 × 10-4, kann ein Fehlerkorrektur-Codierer codierte Bits erzeugen, deren Anzahl etwa 10 % höher als die Anzahl seiner Eingangsbits ist.
  • Bei Phasenwechselspeicher (phase change memory, PCM) handelt es sich um eine Klasse nicht flüchtigen Halbleiterspeichers. PCM-Vorrichtungen verfügen gegenüber herkömmlichem nicht flüchtigem Flash-Speicher über zahlreiche Vorteile. PCM-Vorrichtungen können jedoch eine große Anzahl von Fehlern erzeugen, die durch Schreibzyklus-Qualitätsverlust (writing cycle degradation) verursacht werden. Beispielsweise kann eine PCM-Vorrichtung Fehler mit einer Häufigkeit von 1 × 10-2 oder größer erzeugen, wenn sie Millionen von Zyklen oder das Zehnfache davon durchläuft.
  • An der Ermüdungsgrenze wird die Fehlerhäufigkeit bei nicht flüchtigen Speichervorrichtungen durch Schreibzyklus-Qualitätsverlust bestimmt, nicht durch Zufallsfehler. Zu den durch Qualitätsverlust verursachten Fehlern zählen Haftfehler und instabile Bits. Die Statistiken für diese beiden Fehlerarten unterscheiden sich von denen für die Zufallsfehler, die üblicherweise bei Datenübertragungssystemen und entsprechenden Fehlerkorrekturansätzen angenommen werden.
  • US 2012/0131418 A1 beschreibt eine Speichervorrichtung mit einem Schreibgerät, das Datenbits, Prüfbits auf Fehlerkorrekturen und Overheadbits in einen Speicher schreibt, wobei jedes Bit des/der Overheadbit(s) jeder Gruppe von Bitgruppen entspricht, die mindestens ein Bit der Datenbits und/oder der Prüfbits beinhaltet, wobei jedes Bit des/der Overheadbit(s) anzeigt, ob die entsprechende Bitgruppe invertiert wurde, eine Leseeinheit, die die Datenbits, die Prüfbits, und das/die Overhead-Bit(e) aus dem Speicher liest, eine Korrektureinheit, die einen Fehler in den Datenbits und dem/den aus dem Speicher gelesenen Overhead-Bit(s) korrigiert, basierend auf den Prüfbits, und eine Invertereinheit, die die in der dem Overhead-Bit entsprechenden Bitgruppe enthaltenen Datenbits invertiert und die invertierten Datenbits als aus dem Speicher gelesene Daten ausgibt, wenn das fehlerkorrigierte Overhead-Bit anzeigt, dass die Invertierung durchgeführt wurde.
  • KURZDARSTELLUNG
  • Gemäß einigen Ausführungsformen verfügt ein Datenspeichersystem über eine Speicherschaltung mit Speicherzellen und eine Steuerschaltung, die Datenbits empfängt, die zum Speichern in den Speicherzellen bereitgestellt werden. Die Steuerschaltung codiert die Datenbits, um eine erste Menge redundanter Bits und codierter Datenbits zu erzeugen, so dass die zum Speichern in einer ersten Teilmenge der Speicherzellen mit ersten Haftfehlern ausgewählten codierten Datenbits digitale Werte entsprechender erster Haftfehler aufweisen. Die Steuerschaltung codiert die erste Menge redundanter Bits, um eine zweite Menge redundanter Bits zu erzeugen. Die Steuerschaltung führt Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits aus, um eine dritte Menge redundanter Bits zu erzeugen, so dass die redundanten Bits in der dritten Menge redundanter Bits, die zum Speichern in einer zweiten Teilmenge der Speicherzellen mit zweiten Haftfehlern ausgewählt werden, digitale Werte entsprechender zweiter Haftfehler aufweisen.
  • Gemäß weiteren Ausführungsformen verfügt ein Datenspeichersystem über eine Speicherschaltung mit Speicherzellen und eine Steuerschaltung, die aus den Speicherzellen gelesene codierte Bits empfängt. Mithilfe der codierten Bits werden Anpassungen für Haftfehler in den Speicherzellen vorgenommen. Die Steuerschaltung führt bitweise Logikfunktionen an ersten Mengen der codierten Bits aus, um erste Zwischenbits zu erzeugen. Die Steuerschaltung führt die bitweisen Logikfunktionen an zweiten Mengen der codierten Bits aus, um zweite Zwischenbits zu erzeugen. Jede der zweiten Mengen weist mehr Bits auf als jede der ersten Mengen. Die Steuerschaltung decodiert die zweiten Zwischenbits mithilfe der ersten Zwischenbits, um erste decodierte Bits zu erzeugen. Die Steuerschaltung decodiert eine erste Teilmenge der codierten Bits mithilfe der ersten decodierten Bits, um decodierte Datenbits zu erzeugen.
  • Verschiedene Aufgaben, Merkmale und Vorteile der vorliegenden Erfindung werden beim Ansehen der folgenden ausführlichen Beschreibung und der begleitenden Zeichnungen ersichtlich.
  • Figurenliste
    • Die 1 veranschaulicht ein Beispiel für ein Datenspeichersystem gemäß einer Ausführungsform der vorliegenden Erfindung.
    • Die 2A ist ein Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Codieren von Datenbits zwecks Erzeugens codierter Datenbits und codierter redundanter Bits zum Speichern in Speicherzellen einer Speicherschaltung veranschaulicht.
    • Die 2B ist ein Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Decodieren von aus Speicherzellen einer Speicherschaltung gelesenen codierten Bits zwecks Erzeugens decodierter Datenbits veranschaulicht.
    • Die 3A bis 3B veranschaulichen gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Codieren von Datenbits zwecks Erzeugens codierter Bits, mit deren Hilfe Anpassungen für Haftfehler in Speicherzellen vorgenommen werden.
    • Die 4 veranschaulicht gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Decodieren codierter Bits zwecks Regenerierens von Datenbits.
    • Die 5A bis 51 veranschaulichen Beispiele für die Codieroperationen gemäß Ausführungsformen der vorliegenden Erfindung, die in den 3A bis 3B gezeigt und mit Bezug auf diese beschrieben werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einigen Ausführungsformen werden Datenbits zum Speichern in Speicherzellen einer Speicherschaltung bereitgestellt. Eine oder mehrere der Speicherzellen der Speicherschaltung können Haftfehler enthalten. Ein Codierer codiert die Datenbits, um codierte Datenbits und redundante Bits zu erzeugen. Wenn die redundanten Bits Speicherzellen der Speicherschaltung mit Haftfehlern entsprechen, codiert der Codierer die redundanten Bits, um codierte redundante Bits zu erzeugen. Die codierten Datenbits und die codierten redundanten Bits werden in den Speicherzellen der Speicherschaltung gespeichert. Mithilfe der codierten Datenbits und der codierten redundanten Bits werden für die Speicherzellen in der Speicherschaltung, die Haftfehler aufweisen, Anpassungen vorgenommen. Bei der Speicherschaltung kann es sich beispielsweise um eine Phasenwechsel-Speicherschaltung (z. B. eine, bei der Chalkogenidglas verwendet wird) oder um eine andere Art von Speicherschaltung mit Haftfehlern handeln.
  • Eine Speicherzelle mit einem Haftfehler ist eine Speicherzelle, die nur einen einzigen digitalen Wert speichern kann. Eine Speicherzelle mit einem Haftfehlerwert von 1 kann nur einen digitalen Wert speichern, der logisch „high“ ist, und eine Speicherzelle mit einem Haftfehlerwert von 0 kann nur einen digitalen Wert speichern, der logisch „low“ ist. Daher kann aus einer Speicherzelle mit einem Haftfehlerwert von 1 (d. h. Haftfehler an 1) nur ein digitaler Wert gelesen werden, der logisch „high“ ist, und aus einer Speicherzelle mit einem Haftfehlerwert von 0 (d. h. Haftfehler an 0) kann nur ein digitaler Wert gelesen werden, der logisch „low“ ist. Speicherzellen mit Haftfehlern weisen im Allgemeinen Haftfehler auf, die im Lauf der Zeit stabil bleiben.
  • Wenn einige der Speicherzellen in der Speicherschaltung Haftfehler aufweisen, werden die digitalen Werte der Haftfehler und die Adressen der Speicherzellen mit den Haftfehlern vor dem Codierprozess ermittelt und für den Codierer bereitgestellt. Der Codierer erzeugt die codierten Datenbits und die codierten redundanten Bits mithilfe der digitalen Werte und Adressen der Haftfehler. Die codierten Datenbits und die codierten redundanten Bits werden in den Speicherzellen der Speicherschaltung gespeichert.
  • Anschließend werden die codierten Datenbits und die codierten redundanten Bits aus den Speicherzellen gelesen und für einen Decodierer bereitgestellt. Der Decodierer decodiert die codierten redundanten Bits und decodiert dann die codierten Datenbits mithilfe der decodierten redundanten Bits, um die Datenbits zu regenerieren. Die von dem Decodierer regenerierten Datenbits enthalten keine von den bekannten Haftfehlern in der Speicherschaltung verursachten Fehler.
  • Die hier beschriebenen Techniken lassen sich direkt auf Multi-Level-Speicherzellen anwenden. In Multi-Level-Speicherzellen kann mehr als ein Bit pro Speicherzelle gespeichert werden. Wenn eine Speicherzelle beispielsweise 2 Bits enthält und Haftfehler auftreten, werden die Werte dieser zwei Bits fixiert und können als zwei getrennte Haftfehler-Positionen behandelt werden. Da die Position von einem der Haftfehler bekannt ist, ist auch die Position des anderen Haftfehlers bekannt. Demzufolge können bei derselben Haftfehler-Häufigkeit für Multi-Level-Speicherzellen weniger redundante Bits erzeugt werden, als redundante Bits für Single-Level-Speicherzellen erzeugt werden. Die Anzahl redundanter Bits kann beispielsweise um einen Faktor geringer sein, der gleich der Anzahl von Bits pro Speicherzelle ist.
  • Die 1 veranschaulicht ein Beispiel für ein Datenspeichersystem 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Das Datenspeichersystem 100 enthält eine Steuerschaltung 101, eine Speicherschaltung 102 und eine Speicherschaltung 103. Bei der Steuerschaltung 101 kann es sich beispielsweise um eine Speicher-Controller-Schaltung, eine Prozessorschaltung oder um jede andere Art von Steuerschaltung handeln, die Datenbits zum Speichern in den Speicherschaltungen 102 bis 103 codiert und/oder decodiert. Die Steuerschaltung 101 stellt die codierten Datenbits und die codierten redundanten Bits für eine der Speicherschaltungen 102 bis 103 oder für beide bereit. Die codierten Datenbits und die codierten redundanten Bits werden in einer der Speicherschaltungen 102 bis 103 oder in beiden gespeichert. Während einer Leseoperation werden die codierten Datenbits und die codierten redundanten Bits aus der Speicherschaltung gelesen und für die Steuerschaltung 101 bereitgestellt. Die codierten Datenbits und die codierten redundanten Bits werden zwischen der Steuerschaltung 101 und den Speicherschaltungen 102 bis 103 mithilfe eines oder mehrerer On-Chip- oder externer Busse oder mithilfe anderer Arten von Signalleitungen übermittelt.
  • Die Steuerschaltung 101, die Speicherschaltung 102 und die Speicherschaltung 103 können sich in derselben integrierten Schaltung oder in verschiedenen integrierten Schaltungen befinden. Daher kann es sich bei dem System 100 um eine einzige integrierte Schaltungsvorrichtung handeln, die die Schaltungen 101 bis 103 enthält. Alternativ kann das System 100 drei getrennte integrierte Schaltungsvorrichtungen 101 bis 103 enthalten.
  • Die 2A ist ein Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Codieren von Datenbits zwecks Erzeugens codierter Datenbits und codierter redundanter Bits zum Speichern in Speicherzellen einer Speicherschaltung veranschaulicht. In jeder der Speicherzellen in der Speicherschaltung ist mindestens ein digitaler Wert gespeichert. Eine oder mehrere der Speicherzellen weisen einen Haftfehler auf. Die durch die Operationen der 2A erzeugten codierten Datenbits und die codierten redundanten Bits werden anstelle der Datenbits in den Speicherzellen gespeichert. Die Operationen der 2A können beispielsweise von einem Codierer in der Steuerschaltung 101 ausgeführt werden.
  • Anfangs empfängt ein Codierer Datenbits, die zum Speichern in den Speicherzellen der Speicherschaltung bereitgestellt werden. Jedes der Datenbits wird zum Speichern in einer entsprechenden Speicherzelle der Speicherschaltung bereitgestellt. Eines oder mehrere der Datenbits werden zum Speichern in einer entsprechenden Speicherzelle bereitgestellt, die einen bekannten Haftfehler aufweist. Die Adressen der Speicherzellen mit Haftfehlern und die digitalen Werte der Haftfehler werden vor dem Ausführen der Operationen der 2A für den Codierer bereitgestellt.
  • Bei der Operation 201 codiert der Codierer die Datenbits, um eine erste Menge redundanter Bits und codierter Datenbits zu erzeugen, so dass jedes der in einer der Speicherzellen mit einem Haftfehler zu speichernden codierten Datenbits einen digitalen Wert dieses Haftfehlers aufweist. Bei der Operation 202 codiert der Codierer die erste Menge redundanter Bits, um eine zweite Menge redundanter Bits zu erzeugen.
  • Bei der Operation 203 führt der Codierer Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits aus, um eine dritte Menge redundanter Bits zu erzeugen, so dass jedes in einer der Speicherzellen mit einem Haftfehler zu speichernde redundante Bit in der dritten Menge redundanter Bits einen digitalen Wert dieses Haftfehlers aufweist. Die codierten Datenbits und die dritte Menge redundanter Bits werden mindestens in einer Teilmenge der Speicherzellen gespeichert.
  • Die 2B ist ein Ablaufplan, der gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Decodieren von aus Speicherzellen einer Speicherschaltung gelesenen codierten Bits zwecks Erzeugens decodierter Datenbits veranschaulicht. In jeder der Speicherzellen in der Speicherschaltung ist mindestens ein digitaler Wert gespeichert. Eine oder mehrere der Speicherzellen weisen einen Haftfehler auf. Die Operationen der 2B können beispielsweise von einem Decodierer in der Steuerschaltung 101 ausgeführt werden. Die Adressen der Speicherzellen mit Haftfehlern und die digitalen Werte der Haftfehler sind dem Decodierer vor dem Ausführen der Operationen der 2B nicht bekannt.
  • Bei der Operation 211 empfängt der Decodierer aus den Speicherzellen gelesene codierte Bits. Mithilfe der codierten Bits werden Anpassungen für Haftfehler in den Speicherzellen vorgenommen. Bei der Operation 212 führt der Decodierer bitweise Logikfunktionen an ersten Mengen der codierten Bits aus, um erste Zwischenbits zu erzeugen. Bei der Operation 213 führt der Decodierer die bitweisen Logikfunktionen an zweiten Mengen der codierten Bits aus, um zweite Zwischenbits zu erzeugen. Jede der zweiten Mengen weist mehr Bits auf als jede der ersten Mengen. Bei der Operation 214 decodiert der Decodierer die zweiten Zwischenbits mithilfe der ersten Zwischenbits, um erste decodierte Bits zu erzeugen. Bei der Operation 215 decodiert der Decodierer eine erste Teilmenge der codierten Bits mithilfe der ersten decodierten Bits, um die decodierten Datenbits zu erzeugen.
  • Die 3A bis 3B veranschaulichen gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Codieren von Datenbits zwecks Erzeugens codierter Bits, mit deren Hilfe Anpassungen für Haftfehler in Speicherzellen vorgenommen werden. Die Adressen der Speicherzellen mit Haftfehlern und die digitalen Werte der Haftfehler werden vor dem Ausführen der Operationen aus den 3A bis 3B für den Codierer bereitgestellt. Die codierten Bits werden in den Speicherzellen gespeichert. Die in Speicherzellen mit Haftfehlern gespeicherten codierten Bits weisen dieselben digitalen Werte wie die Haftfehler der entsprechenden Speicherzellen auf.
  • Der hier erörterte Codierer kann beispielsweise mithilfe der Steuerschaltung 101 realisiert werden. Bei dem Codierer wird eine Codiertechnik verwendet, mit deren Hilfe sich digitale Werte der Datenbits anpassen lassen, die nicht den digitalen Werten der Haftfehler der entsprechenden Speicherzellen entsprechen, um codierte Datenbits und redundante Bits zu erzeugen. Die redundanten Bits werden von einem Decodierer zum Decodieren der codierten Datenbits zwecks Regenerierens der Datenbits verwendet, wie im Folgenden erörtert wird. Beispiele für Codiertechniken, mit deren Hilfe sich codierte Datenbits und redundante Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern erzeugen lassen, sowie Techniken zum Decodieren der codierten Datenbits mithilfe der redundanten Bits werden in den gemeinsam zugeteilten US-Patentanmeldungen US 2013/0124942 A1 und US 2013/0124943 A1 offenbart, die beide am 10. Oktober 2012 eingereicht wurden, . Gemäß einigen Ausführungsformen können die in diesen Patentanmeldungen offenbarten Codier- und Decodiertechniken mit den hier dargelegten Techniken verwendet werden, wie im Folgenden erörtert wird.
  • Bei der Operation 301 empfängt ein Codierer Datenbits, die zum Speichern in einem Block Bi der Speicherzellen bereitgestellt werden, der über ausreichend Speicherzellen zum Speichern von codierten Datenbits und redundanten Bits verfügt, die gemäß hier beschriebenen Techniken erzeugt werden. Der Parameter „i“ ist eine positive Ganzzahl, die bei der Operation 301 gleich 1 ist. Daher ist bei der Operation 301 der Block Bi gleich dem Block B1. Bei der Operation 302 teilt der Codierer den Block Bi von Speicherzellen in eine Anzahl von „b“ Segmenten, von denen jedes über dieselbe Anzahl von Speicherzellen verfügt. Der Parameter „b“ ist eine positive Ganzzahl auf der Grundlage des Verhältnisses zwischen der Anzahl D von Datenbits und der Anzahl R von redundanten Bits, die von dem Codierer für die Datenbits mithilfe der gewählten Codiertechnik erzeugt werden. Ein Beispiel: b ≤ D/R. Bei der ersten Iteration der Operationen 302 bis 303 ist der Block Bi der Block B1.
  • Bei der Operation 303 wählt der Codierer das Segment mit der kleinsten Anzahl von Haftfehlern in dem Block Bi aus der Anzahl „b“ der bei der Operation 302 erzeugten Segmente als Block Bi+1. Bei der Operation 303 erzeugt der Codierer außerdem log2b-Bits, um die Position des Blocks Bi+1 in dem Block Bi anzuzeigen. Wenn zwei oder mehr Segmente des Blocks Bi die kleinste Anzahl von Haftfehlern aufweisen, wählt der Codierer bei der Operation 303 eines dieser Segmente. Bei der ersten Iteration der Operation 303 wählt der Codierer das Segment mit der kleinsten Anzahl von Haftfehlern in dem Block B1 als den Block B2 aus.
  • Bei der Entscheidungsoperation 304 ermittelt der Codierer, ob der Block Bi+1 einen oder null Haftfehler aufweist. Wenn der Block Bi+1 einen oder null Haftfehler aufweist, schreitet der Prozess aus den 3A bis 3B zu der Operation 306 fort. Wenn der Block Bi+1 mehr als einen Haftfehler aufweist, schreitet der Prozess aus den 3A bis 3B zu der Operation 305 fort. Bei der Operation 305 addiert der Codierer 1 zu dem Parameter i. Anschließend wiederholt der Codierer die Operationen 302 bis 304. Bei der zweiten Iteration der Operationen 302 bis 304 ist der Block B1 der Block B2, und der Block Bi+1 ist der Block B3. Der Codierer fährt damit fort, Iterationen der Operationen 302 bis 305 auszuführen, bis der Block Bi+1 nur einen oder null Haftfehler aufweist. Dieser Prozess endet spätestens, wenn die Anzahl von Bits in dem Block Bi+1 gleich dem Inversen der Haftfehler-Bit-Fehlerhäufigkeit bei den Datenbits ist. Der Codierer erzeugt bei den Operationen 302 bis 305 einen oder mehrere Blöcke zum Speichern redundanter Bits, die von einem Decodierer zum Decodieren der codierten Datenbits verwendet werden, wie im Folgenden beschrieben wird.
  • Bei der Operation 306 codiert der Codierer die Datenbits, um Indexbits für den größten Block B1 und codierte Datenbits zum Speichern in Speicherzellen des größten Blocks B1 zu erzeugen, und zwar mithilfe einer Codiertechnik, die bewirkt, dass mithilfe der codierten Datenbits Anpassungen für jegliche Haftfehler in den Speicherzellen des Blocks B1 vorgenommen werden. Die bei der Operation 306 verwendete Codiertechnik kann beispielsweise eine der in den US-Patentanmeldungen 13/649007 und 13/649072 offenbarten Codiertechniken sein. Die Indexbits sind redundante Bits, die von einem Decodierer zum Decodieren der codierten Datenbits zwecks Regenerierens der Datenbits verwendet werden. Nach der Operation 306 schreitet der Prozess zu der Operation 309 fort. Die Operationen 309 bis 316 werden in der 3B gezeigt.
  • Bei der Operation 309 setzt der Codierer den Parameter i auf 1 zurück. Bei der Operation 310 erzeugt der Codierer virtuelle Haftfehlerwerte für den Block Bi+1 durch Ausführen bitweiser XOR-Funktionen an den Haftfehlerwerten in dem Block Bi+1 und den entsprechenden in dem Block Bi zu speichernden codierten Bits. Eine bitweise XOR-Funktion ist eine Logikfunktion, bei der zwei Bitmuster gleicher Länge genommen werden und die logisch exklusive ODER-Operation (logical exclusive OR operation) an jedem Paar einander entsprechender Bits ausgeführt wird. Das Ergebnis ist bei jeder Position nur dann 1, wenn das erste Bit 1 ist, oder wenn das zweite Bit 1 ist. Das Ergebnis ist 0, wenn beide Bits 0 sind, oder wenn beide Bits 1 sind. Bei der ersten Iteration der Operation 310 sind die in dem Block Bi zu speichernden codierten Bits die bei der Operation 306 erzeugten codierten Datenbits.
  • Ein nicht einschränkendes Beispiel für die Operation 310: i ist gleich 1, der Block B2 verfügt über 8 Speicherzellen, und die dritte und siebte Speicherzelle in dem Block B2 weisen Haftfehler auf. Bei diesem Beispiel wird eine XOR-Funktion an dem Haftfehlerwert der dritten Speicherzelle in dem Block B2 und jedem entsprechenden dritten codierten Datenbit in jeder Menge von 8 Bits in den in dem Block B1 zu speichernden codierten Datenbits ausgeführt, die bei der Operation 306 erzeugt wurden, um einen ersten virtuellen Haftfehlerwert zu erzeugen. Außerdem wird eine XOR-Funktion an dem Haftfehlerwert der siebten Speicherzelle in dem Block B2 und jedem entsprechenden siebten codierten Datenbit in jeder Menge von 8 Bits in den in dem Block B1 zu speichernden codierten Datenbits ausgeführt, die bei der Operation 306 erzeugt werden, um einen zweiten virtuellen Haftfehlerwert zu erzeugen.
  • Bei der Operation 311 codiert der Codierer die log2b-Bits, die die Position des Blocks Bi+1 in dem Block Bi anzeigen, und die Indexbits für den Block Bi, um codierte Bits zu erzeugen, die mit entsprechenden virtuellen Haftfehlerwerten für den Block Bi+1 und mit Index-Bits für den Block Bi+1 übereinstimmen, und zwar mithilfe einer Codiertechnik, die Anpassungen für Speicherzellen mit Haftfehlern vornimmt. Die bei der Operation 311 verwendete Codiertechnik kann beispielsweise dieselbe Codiertechnik wie die bei der Operation 306 verwendete sein. Die bei der Operation 311 erzeugten codierten Bits stimmen mit den entsprechenden virtuellen Haftfehlern für den Block Bi+1 überein, die bei der Operation 310 erzeugt werden.
  • Bei der Operation 312 führt der Codierer bitweise XOR-Funktionen an den in den Speicherzellen der Blöcke B1 bis Bi zu speichernden Bits und den codierten Bits für den Block Bi+1 aus, um Bits zum Speichern in den Speicherzellen des Blocks Bi+1 zu erzeugen. Bei der ersten Iteration der Operation 312 sind die in den Speicherzellen der Blöcke B1 bis Bi zu speichernden Bits die bei der Operation 306 erzeugten codierten Datenbits. Bei den nachfolgenden Iterationen der Operation 312 sind die in den Speicherzellen der Blöcke B1 bis Bi zu speichernden Bits die bei allen vorangehenden Iterationen der Operation 312 erzeugten Bits sowie die bei der Operation 306 erzeugten codierten Datenbits. Bei jeder Iteration der Operation 312 werden die codierten Bits für den Block Bi+1 bei der vorangehenden Iteration der Operation 311 erzeugt.
  • Bei der Operation 312 werden die in den Speicherzellen des Blocks Bi zu speichernden Bits in Mengen Si von Bits unterteilt, so dass die Anzahl der Bits in jeder der Mengen Si gleich der Anzahl der Speicherzellen in dem Block Bi+1 ist. Dann wird eine bitweise XOR-Funktion an zwei der Mengen Si von Bits ausgeführt, um ein erstes XOR-Ergebnis zu erzeugen. Wenn mehr als zwei der Mengen Si von Bits vorhanden sind, wird eine bitweise XOR-Funktion an dem ersten XOR-Ergebnis und einer dritten Menge Si von Bits ausgeführt, um ein zweites XOR-Ergebnis zu erzeugen. Es werden weiterhin bitweise XOR-Funktionen an dem zuvor erzeugten XOR-Ergebnis und an jeder weiteren Menge Si von Bits ausgeführt, um das nächste XOR-Ergebnis zu erzeugen, bis keine weiteren Mengen Si von Bits mehr vorhanden sind.
  • Eine abschließende bitweise XOR-Funktion wird dann bei der Operation 312 an dem letzten XOR-Ergebnis, das aus den Mengen Si von Bits erzeugt wurde, und an den codierten Bits für den Block Bi+1 ausgeführt, um Bits zum Speichern in entsprechenden Speicherzellen des Blocks Bi+1 zu erzeugen. Die abschließende bitweise XOR-Funktion wird bei der Operation 312 nicht an Bits ausgeführt, die den Bitpositionen des Blocks Bi+2 entsprechen. Zum Zeitpunkt der Operation 312 wurden noch keine Bits zum Speichern in den Speicherzellen des Blocks Bi+2 erzeugt. Das abschließende XOR-Ergebnis der abschließenden bitweisen XOR-Funktion der Operation 312 enthält die in entsprechenden Speicherzellen des Blocks Bi+1 zu speichernden Bits sowie die Bits, die den Bitpositionen des Blocks Bi+2 in dem letzten XOR-Ergebnis entsprechen, das aus den Mengen Si von Bits erzeugt wurde. Das abschließende XOR-Ergebnis der abschließenden bitweisen XOR-Funktion der letzten Iteration der Operation 312 wird bei der Operation 315 verwendet, wie im Folgenden beschrieben wird.
  • Bei der Entscheidungsoperation 313 ermittelt der Codierer, ob der Block Bi+2 der kleinste Block von Speicherzellen ist, der bei den Iterationen der Operationen 302 bis 305 erzeugt wurde. Wenn der Block Bi+2 nicht der kleinste Block von Speicherzellen ist, der bei den Iterationen der Operationen 302 bis 305 erzeugt wurde, schreitet der Codierer zu der Operation 314 fort. Bei der Operation 314 addiert der Codierer 1 zu dem Parameter i. Anschließend führt der Codierer eine weitere Iteration der Operationen 310 bis 313 aus. Der Codierer fährt mit dem Ausführen von Iterationen der Operationen 310 bis 314 fort, bis der Block Bi+2 gleich dem kleinsten Block von Speicherzellen ist, der bei den Iterationen der Operationen 302 bis 305 erzeugt wurde.
  • Wenn der Block Bi+2 der kleinste Block von Speicherzellen ist, der bei den Iterationen der Operationen 302 bis 305 bei der Operation 313 erzeugt wurde, schreitet der Codierer zu der Operation 315 fort. Bei der Operation 315 führt der Codierer bitweise XOR-Logikfunktionen an Mengen von b Bits des abschließenden, bei der letzten Iteration der Operation 312 erzeugten XOR-Ergebnisses und den log2b-Bits, die die Position des Blocks Bi+2 in dem Block Bi+1 anzeigen, in Verbindung mit den Indexbits für den Block Bi+1 aus, um Bits zum Speichern in Speicherzellen des Blocks Bi+2 zu erzeugen.
  • Bei der Operation 315 werden Bits des bei der letzten Iteration der Operation 312 erzeugten abschließenden XOR-Ergebnisses in Mengen SF von Bits unterteilt, so dass die Anzahl von Bits in jeder der Mengen SF gleich b ist. Anschließend wird eine bitweise XOR-Funktion an zwei der Mengen SF von Bits ausgeführt, um ein erstes XOR-Ergebnis zu erzeugen. Wenn mehr als zwei der Mengen SF von Bits vorhanden sind, wird eine bitweise XOR-Funktion an dem ersten XOR-Ergebnis und einer dritten Menge SF von Bits ausgeführt, um ein zweites XOR-Ergebnis zu erzeugen. Es werden weiterhin bitweise XOR-Funktionen an dem zuvor erzeugten XOR-Ergebnis und an jeder weiteren Menge SF von Bits ausgeführt, um das nächste XOR-Ergebnis zu erzeugen, bis keine weiteren Mengen SF von Bits mehr vorhanden sind. Anschließend wird bei der Operation 315 eine abschließende bitweise XOR-Funktion an dem letzten XOR-Ergebnis ausgeführt, das aus den Mengen SF von Bits und den log2b-Bits, die die Position des Blocks Bi+2 in dem Block Bi+1 anzeigen, in Verbindung mit den Indexbits für den Block Bi+1 erzeugt wurde, um Bits zum Speichern in Speicherzellen des Blocks Bi+2 zu erzeugen.
  • Wenn der Block Bi+2 einen Haftfehler aufweist, muss jedes in der den Haftfehler aufweisenden Speicherzelle von Block Bi+2 gespeicherte Bit mit dem digitalen Wert dieses Haftfehlers übereinstimmen. Wenn der Block Bi+2 p Bits und genau einen Haftfehler enthält, kann eine Anzahl von p-1 Bits wie folgt gespeichert werden. Das erste Bit ist dazu bestimmt, anzuzeigen, ob die verbleibenden p-1 Bits invertiert werden sollten oder nicht. Wenn das erste Bit einen digitalen Wert von 0 aufweist, werden die verbleibenden p-1 Bits so gelesen, wie sie sind. Wenn das erste Bit einen digitalen Wert von 1 aufweist, werden die verbleibenden p-1 Bits invertiert. Der Haftfehler kann sich an der ersten Bitposition oder an einer der verbleibenden p-1 Bitpositionen des Blocks Bi+2 befinden. Wenn sich der Haftfehler an der ersten Bitposition befindet, zeigt sein Wert an, wie die Daten in den verbleibenden p-1 Bits gespeichert werden (d. h.: invertiert oder nicht). Wenn sich der Haftfehler an einer der verbleibenden p-1 Bitpositionen an einer anderen als der ersten befindet, wird der Haftfehlerwert geprüft, um zu ermitteln, ob er denselben digitalen Wert aufweist, wie das Datenbit, das an dieser Bitposition gespeichert werden sollte. Wenn er denselben digitalen Wert aufweist, wird das erste Bit auf 0 gesetzt, und die Daten werden so wie bei den verbleibenden p-1 Bitpositionen geschrieben. Wenn er den umgekehrten digitalen Wert aufweist, wird das erste Bit auf 1 gesetzt, und die invertierten Werte der Datenbits werden an den verbleibenden p-1 Bitpositionen gespeichert.
  • Bei der Operation 316 werden die bei den Operationen 306 erzeugten codierten Datenbits, die bei jeder Iteration der Operation 312 erzeugten Bits und die bei der Operation 315 erzeugten Bits in den entsprechenden Speicherzellen der Speicherschaltung gespeichert.
  • Die 4 veranschaulicht gemäß einer Ausführungsform der vorliegenden Erfindung Beispiele für Operationen zum Decodieren codierter Bits zwecks Regenerierens von Datenbits. Codierte Bits werden aus den Speicherzellen der Speicherschaltung gelesen und für einen Decodierer bereitgestellt. Der Decodierer kann beispielsweise mithilfe der Steuerschaltung 101 realisiert werden.
  • Zu Anfang empfängt der Decodierer codierte Bits aus Speicherzellen einer Speicherschaltung. Bei der Operation 401 unterteilt der Decodierer die codierten Bits in Mengen SD, so dass jede der Mengen SD eine Anzahl „b“ von Bits aufweist, die gemäß ihren Bitpositionen aufeinander folgen. Der Wert des Parameters „b“ ist derselbe, der beim Codieren verwendet wurde, um die codierten Bits zu erzeugen. Der Parameter „b“ wird vor dem Decodieren der codierten Bits für den Decodierer bereitgestellt. Anschließend führt der Decodierer bitweise XOR-Funktionen an den Mengen SD von Bits aus, um bei der Operation 401 ein XOR-Ergebnis mit b Bits zu erzeugen.
  • Bei der Operation 402 zeigt der Parameter „n“ die Nummer Bn des kleinsten Blocks von Speicherzellen an, der bei den Iterationen der Operationen 302 bis 305 erzeugt wurde. Bei der Operation 402 erkennt der Decodierer die Position des kleinsten Blocks Bn in dem Block Bn-i auf der Grundlage der ersten log2b Bits in dem XOR-Ergebnis der Operation 401. Die verbleibenden Bits in dem XOR-Ergebnis der Operation 401 sind Indexbits für den Block Bn-1.
  • Bei der Operation 403 führt der Decodierer bitweise XOR-Funktionen an aus den Speicherzellen empfangenen Mengen von bj+1 codierten Bits aus, um ein XOR-Ergebnis zu erzeugen. Bei der Operation 403 unterteilt der Decodierer die codierten Bits in Mengen SG, so dass jede der Mengen SG eine Anzahl bj+1 von Bits aufweist, die gemäß ihren Bitpositionen aufeinander folgen. Anschließend führt der Decodierer bitweise XOR-Funktionen an den Mengen SG von Bits aus, um das XOR-Ergebnis mit bj+1 Bits zu erzeugen. Bei der ersten Iteration der Operationen 403 ist der Parameter j gleich 1.
  • Bei der Operation 404 verwendet der Decodierer die Indexbits für den Block Bn-i zum Decodieren des XOR-Ergebnisses der Operation 403 unter Ausschluss der Bits, die Bitpositionen des Blocks Bn in dem Block Bn-i entsprechen, um mithilfe einer Decodiertechnik decodierte Bits des Blocks Bn-i zu erzeugen. Bei der ersten Iteration der Operation 404 werden die Indexbits für den Block Bn-i in der Operation 402 und die Bitpositionen des Blocks Bn in dem Block Bn-i in der Operation 402 erkannt. Bei späteren Iterationen der Operation 404 werden die Indexbits für den Block Bn-i bei den vorangehenden Iterationen der Operationen 404 bis 405 erzeugt und erkannt, und die Bitpositionen des Blocks Bn in dem Block Bn-i werden bei der vorangehenden Iteration der Operation 405 erkannt. Mithilfe der bei der Operation 404 verwendeten Decodiertechnik wird das Umgekehrte der bei der Codiertechnik der Operation 311 verwendeten Codieroperationen ausgeführt, die Anpassungen für jegliche Haftfehler in den Speicherzellen vornimmt. Die bei der Operation 404 verwendete Decodiertechnik kann beispielsweise eine der in den US-Patentanmeldungen US 2013/0124942 A1 und US 2013/0124943 A1 offenbarten Decodiertechniken sein.
  • Bei der Operation 405 erkennt der Decodierer die Position (und die entsprechenden Bitpositionen) des Blocks Bn-i in dem Block Bn-2 auf der Grundlage der ersten log2b-Bits in den decodierten Bits des Blocks Bn-1, die bei der vorangehenden Iteration der Operation 404 erzeugt wurden. Die verbleibenden decodierten Bits des Blocks Bn-1, die bei der vorangehenden Iteration der Operation 404 erzeugt wurden, sind Indexbits für den Block Bn-2.
  • Bei der Entscheidungsoperation 406 ermittelt der Decodierer, ob der Block Bn-2 alle aus den Speicherzellen gelesenen codierten Bits enthält. Wenn der Block Bn-2 nicht alle der aus den Speicherzellen gelesenen codierten Bits enthält, schreitet der Decodierer zu der Operation 407 fort. Bei der Operation 407 subtrahiert der Decodierer 1 von dem Parameter n und addiert 1 zu dem Parameter j. Anschließend führt der Decodierer eine zweite Iteration der Operationen 403 bis 406 aus. Der Decodierer fährt mit dem Ausführen von Iterationen der Operationen 403 bis 407 fort, bis der Block Bn-2 gleich dem größten Block B1 ist.
  • Wenn der Block Bn-2 bei der Entscheidungsoperation 406 alle aus den Speicherzellen gelesenen codierten Bits enthält (d. h., der Block n-2 ist gleich dem größten Block B1), schreitet der Decodierer zu der Operation 408 fort. Bei der Operation 408 verwendet der Decodierer die verbleibenden decodierten Bits des Blocks B2 als Indexbits zum Decodieren der codierten Datenbits in dem Block B1, um die Datenbits mithilfe einer Decodiertechnik zu regenerieren. Bei der Operation 408 werden die verbleibenden decodierten Bits des Blocks B2 bei der vorangehenden Iteration der Operation 405 erzeugt, und die codierten Datenbits in dem Block B1 sind die verbleibenden codierten Bits in dem Block B1, die noch nicht decodiert wurden. Mithilfe der bei der Operation 408 verwendeten Decodiertechnik wird das Umgekehrte der bei der Codiertechnik der Operation 306 verwendeten Codieroperationen ausgeführt. Die bei der Operation 408 verwendete Decodiertechnik kann dieselbe Decodiertechnik wie die bei der Operation 404 verwendete sein.
  • Die 5A bis 51 veranschaulichen gemäß Ausführungsformen der vorliegenden Erfindung Beispiele für die Codieroperationen, die vorstehend mit Bezug auf die 3A bis 3B beschrieben und in diesen gezeigt wurden. Die hier mit Bezug auf die 5A bis 51 gezeigten und beschriebenen Beispiele werden lediglich zu Veranschaulichungszwecken offenbart und sollen nicht einschränkend sein.
  • Die 5A bis 5B veranschaulichen eine beispielhafte Menge von 64 Speicherzellen. Die 64 Speicherzellen werden in den 5A bis 5B als 64 Kästen gezeigt. 15 der 64 in den 5A bis 5B gezeigten Speicherzellen weisen Haftfehler auf. Die vertikalen Linien über den Kästen in der 5A grenzen Segmente mit 4, 8 und 16 Speicherzellen ab. Die mit einer 0 beschrifteten Speicherzellen weisen einen Haftfehler an 0 auf, und die mit einer 1 beschrifteten Speicherzellen weisen einen Haftfehler an 1 auf. Neun der in den 5A bis 5B gezeigten Speicherzellen weisen Haftfehler an 1 auf, und sechs der in den 5A bis 5B gezeigten Speicherzellen weisen Haftfehler an 0 auf
  • Die 5B veranschaulicht ein Beispiel dafür, wie die 64 Speicherzellen während der in der 3A gezeigten Codieroperationen 302 bis 305 in drei Blöcke B1, B2 und B3 unterteilt werden können. Der größte Block B1 enthält alle 64 Speicherzellen. Der Block B1 enthält den Block B2 und die drei Teilblöcke B1A, B1B und B1C, die über jeweils 16 Speicherzellen verfügen. Der Block B2 enthält den Block B3 mit 4 Speicherzellen. Der Block B2 weist drei Speicherzellen mit Haftfehlern auf. Der Block B3 weist keine Haftfehler auf.
  • Die 5C veranschaulicht digitale Werte von 48 Datenbits, die zum Speichern in den in der 5A gezeigten Speicherzellen bereitgestellt werden. Die Speicherzellen des Blocks B2 sind für das Speichern redundanter Bits gemäß den hier mit Bezug auf die 3A bis 3B beschriebenen Techniken reserviert. Daher werden die in der 5C gezeigten 48 Datenbits zum Speichern in den 48 entsprechenden Speicherzellen in den Teilblöcken B1A, B1B und B1C bereitgestellt.
  • Bei der Operation 306 codiert der Codierer die 48 Datenbits, um 48 codierte Datenbits und 10 Indexbits zu erzeugen, wie beispielsweise in der 5D gezeigt. Die in der 5D gezeigten 48 codierten Datenbits und 10 Indexbits sind Zufallswerte, die als Beispiel angeführt und nicht mithilfe irgendeiner bestimmten Codiertechnik erzeugt werden. Jedes der 48 codierten Datenbits wird in einer entsprechenden Speicherzelle der 48 Speicherzellen der Teilblöcke B1A-B1C gespeichert, die sich in der 5D direkt über diesem codierten Datenbit befindet. Die codierten Datenbits, die in der 5D jeweils durch ein H angezeigt werden, weisen dieselben digitalen Werte auf, wie die Haftfehler der ihnen entsprechenden Speicherzellen der Teilblöcke B1A-B1C. Daher können die in der 5D gezeigten 48 codierten Datenbits in den 48 Speicherzellen der Teilblöcke B1A bis B1C gespeichert und aus den 48 Speicherzellen der Teilblöcke B1A bis B1C gelesen werden, ohne dass durch die 12 bekannten Haftfehler in diesen 48 Speicherzellen verursachte Fehler auftreten.
  • In den Beispielen aus den 5A bis 51 ist b gleich 4 und log2b ist gleich 2. 5D zeigt außerdem die digitalen Werte von 2 binären Positionsbits 10 (d.h. als Dezimalzahl gleich 3), die die Position des Blocks B2 als das dritte Segment von 16 Bits in dem Block B1 anzeigen. Die 2 Positionsbits des Blocks B2 werden bei der Operation 303 erzeugt.
  • Die 5E veranschaulicht ein Beispiel dafür, wie gemäß der Operation 310 virtuelle Haftfehler erzeugt werden können. Wie in der 5E gezeigt, werden XOR-Logikfunktionen an dem Haftfehlerwert von 0 der dritten Speicherzelle in dem Block B2, dem in dem Teilblock B1A zu speichernden dritten codierten Datenbit 0, dem in dem Teilblock B1B zu speichernden dritten codierten Datenbit 1 und dem in dem Teilblock B1C zu speichernden dritten codierten Datenbit 0 ausgeführt (wie durch die gestrichelten Linien mit den langen Strichen gezeigt), um einen virtuellen Haftfehlerwert von 1 zu erzeugen. XOR-Logikfunktionen werden an dem Haftfehlerwert von 1 der zehnten Speicherzelle in dem Block B2, dem in dem Teilblock B1A zu speichernden zehnten codierten Datenbit 0, dem in dem Teilblock B1B zu speichernden zehnten codierten Datenbit 1 und dem in dem Teilblock B1C zu speichernden zehnten codierten Datenbit 0 ausgeführt (wie durch die gestrichelten Linien mit den kurzen Strichen gezeigt), um einen virtuellen Haftfehlerwert von 0 zu erzeugen. XOR-Logikfunktionen werden außerdem an dem Haftfehlerwert von 0 der zwölften Speicherzelle in dem Block B2, dem in dem Teilblock B1A zu speichernden zwölften codierten Datenbit, dem in dem Teilblock B1B zu speichernden zwölften codierten Datenbit und dem in dem Teilblock B1C zu speichernden zwölften codierten Datenbit ausgeführt (nicht durch gestrichelte Linien gezeigt), um einen virtuellen Haftfehlerwert von 0 zu erzeugen.
  • Bei der Operation 311 werden die Positionsbits für den Block B2 und die Indexbits für den Block B1 auf der Grundlage der drei virtuellen Haftfehlerwerte codiert, um codierte Bits für den Block B2 und Indexbits für den Block B2 zu erzeugen, wie in der 5F gezeigt wird. Die drei codierten Bits für den Block B2, die sich in der 5F jeweils unter einem „V“ befinden, stimmen mit den bei der Operation 310 erzeugten drei entsprechenden virtuellen Haftfehlerwerten überein. Die in der 5F gezeigten 12 codierten Bits und 2 Indexbits für den Block B2 sind Zufallswerte, die als Beispiel angeführt und nicht mithilfe irgendeiner bestimmten Codiertechnik erzeugt werden.
  • Bei der Operation 312 werden bitweise XOR-Logikfunktionen an den in den Speicherzellen der Teilblöcke B1A bis B1C zu speichernden codierten Datenbits und den bei der Operation 311 erzeugten codierten Bits für den Block B2 ausgeführt, um Bits zum Speichern in den Speicherzellen des Blocks B2 zu erzeugen, wie in der 5G gezeigt wird.
  • Insbesondere werden in dem Beispiel aus der 5G bei der Operation 312 drei bitweise XOR-Logikfunktionen ausgeführt. Die erste bitweise XOR-Logikfunktion wird an den 16 in den Speicherzellen des Teilblocks B1A zu speichernden codierten Datenbits und den in den Speicherzellen des Teilblocks B1B zu speichernden 16 codierten Datenbits ausgeführt, um ein erstes 16-Bit-Zwischenergebnis zu erzeugen. Die zweite bitweise XOR-Logikfunktion wird an dem ersten 16-Bit-Zwischenergebnis und den in den Speicherzellen des Teilblocks B1C zu speichernden 16 codierten Datenbits ausgeführt, um ein zweites 16-Bit-Zwischenergebnis zu erzeugen. Die dritte bitweise XOR-Logikfunktion wird an 12 Bits des zweiten 16-Bit-Zwischenergebnisses und den entsprechenden 12 codierten Bits für den Block B2 ausgeführt, die bei der Operation 311 erzeugt wurden, um 12 Bits zum Speichern in den Speicherzellen des Blocks B2 zu erzeugen, wie in der 5G gezeigt wird.
  • Das 1. bis 4. und 9. bis 16. Bit des in der 5G gezeigten 16-Bit-XOR-Ergebnisses sind 12 Bits zum Speichern in der entsprechenden 1. bis 4. und 9. bis 16. Speicherzelle des Blocks B2. Das 3., 10. und 12. Bit des in der 5G gezeigten XOR-Ergebnisses stimmen überein mit den entsprechenden Haftfehlerwerten der 3., 10. und 12. Speicherzelle des Blocks B2, die in der 5B gezeigt werden.
  • Das 5. bis 8. Bit des in der 5G gezeigten XOR-Ergebnisses sind das 5. bis 8. Bit des zweiten 16-Bit-Zwischenergebnisses der bei der Operation 312 ausgeführten zweiten bitweisen XOR-Logikfunktion. Das 5. bis 8. Bit des zweiten 16-Bit-Zwischenergebnisses der bei der Operation 312 ausgeführten zweiten bitweisen XOR-Logikfunktion werden in der dritten bitweisen XOR-Logikfunktion bei der Operation 312 nicht verwendet.
  • Bei der Operation 315 werden bitweise XOR-Logikfunktionen an den XOR-Ergebnissen der Operation 312 und den log2b-Bits, die die Position des Blocks B3 in dem Block B2 anzeigen, in Verbindung mit den Indexbits für den Block B2 ausgeführt, um Bits zum Speichern in den Speicherzellen des Blocks B3 zu erzeugen, wie in der 5H gezeigt wird. Insbesondere werden in dem Beispiel aus der 5H bei der Operation 315 vier bitweise XOR-Logikfunktionen ausgeführt. Jede der vier bitweisen XOR-Logikfunktionen wird an zwei Mengen von 4 Bits ausgeführt.
  • Die erste bitweise XOR-Logikfunktion wird an dem 1. bis 4. Bit des in der 5G gezeigten 16-Bit-XOR-Ergebnisses und dem 5. bis 8. Bit des in der 5G gezeigten 16-Bit-XOR-Ergebnisses ausgeführt, um ein erstes 4-Bit-Zwischenergebnis zu erzeugen. Die zweite bitweise XOR-Logikfunktion wird an dem ersten 4-Bit-Zwischenergebnis der Operation 315 und dem 9. bis 12. Bit des in der 5G gezeigten 16-Bit-XOR-Ergebnisses ausgeführt, um ein zweites 4-Bit-Zwischenergebnis zu erzeugen. Die dritte bitweise XOR-Logikfunktion wird an dem zweiten 4-Bit-Zwischenergebnis der Operation 315 und dem 13. bis 16. Bit des in der 5G gezeigten 16-Bit-XOR-Ergebnisses ausgeführt, um 4 Bits zum Speichern in den Speicherzellen des Blocks B3 zu erzeugen, wie in der 5H gezeigt wird.
  • Bei den Beispielen aus den 5A bis 5I ist der Block B3 der kleinste Block. Daher werden keine weiteren Iterationen der Operationen 310 bis 314 ausgeführt. Bei der Operation 316 werden die bei der Operation 306 erzeugten codierten Datenbits in den entsprechenden Speicherzellen der Teilblöcke B1A bis B1C gespeichert, wie in der 51 gezeigt wird. Bei der Operation 316 werden außerdem die 12 Bits, die bei der Operation 312 zum Speichern in dem Block B2 erzeugt wurden, in den entsprechenden Speicherzellen des Blocks B2 gespeichert, und die 4 Bits, die bei der Operation 315 zum Speichern in dem Block B3 erzeugt wurden, werden in den entsprechenden Speicherzellen des Blocks B3 gespeichert, wie in der 51 gezeigt wird. Jede der in der 51 gezeigten Speicherzellen, die in der Speicherzelle mit einer 1 oder 0 beschriftet ist, weist einen Haftfehler mit dem in der Beschriftung angegebenen Wert auf, wie es vorstehend mit Bezug auf die 5A beschrieben wurde. Jedes der in einer Speicherzelle mit einem Haftfehler zu speichernden Bits weist denselben digitalen Wert wie dieser Haftfehler auf, wie in der 51 gezeigt wird. Die Decodieroperationen 401 bis 408 aus der 4 können auf die Beispiele aus den 5A bis 51 angewendet werden, indem die Schritte des Codierprozesses umgekehrt ausgeführt werden.
  • Ausführungsformen der vorliegenden Erfindung können beispielsweise mithilfe von Hardware, Software oder einem Programmanweisungen enthaltenden computerlesbaren Medium oder einer Kombination von diesen realisiert werden. Ausführungsformen der vorliegenden Erfindung können als Programmcode ausgeführt sein, der auf einem nicht flüchtigen computerlesbaren Medium gespeichert ist, das auf einem Computer ausgeführt werden kann. Mithilfe von Ausführungsformen der vorliegenden Erfindung realisierte Software sowie Ergebnisse der vorliegenden Erfindung können auf einem computerlesbaren Medium wie beispielsweise Halbleiterspeicher, Festplattenspeicher, Compact Disc (CD), digitale Video-Disc (digital video disc, DVD) oder anderen Medien gespeichert werden. Ergebnisse der vorliegenden Erfindung können zu verschiedenen Zwecken verwendet werden, wie beispielsweise zum Ausführen oder Verarbeiten durch einen Prozessor, zum Anzeigen für einen Benutzer, zum Übertragen in einem Signal über ein Netzwerk usw. Ausführungsformen der vorliegenden Erfindung können außerdem als eine auf einem night flüchtigen computerlesbaren Medium gespeicherte computerlesbare Programmcode-Einheit ausgeführt sein, um eine Anzahl von über ein Netzwerk miteinander verbundenen Computersystemen dazu zu veranlassen, eine verteilte Bearbeitung zu bewirken.

Claims (20)

  1. Datenspeichersystem (100), das Folgendes umfasst: eine Speicherschaltung (102,103) mit Speicherzellen und eine Steuerschaltung (101), die in der Lage ist, Datenbits zu empfangen, die zum Speichern in den Speicherzellen bereitgestellt werden, wobei die Steuerschaltung in der Lage ist, die Datenbits zu codieren (201), um eine erste Menge redundanter Bits und codierter Datenbits zu erzeugen, so dass die codierten Datenbits, die zum Speichern in einer ersten Teilmenge der Speicherzellen mit ersten Haftfehlern ausgewählt werden, digitale Werte entsprechender erster Haftfehler aufweisen, wobei die Steuerschaltung in der Lage ist, die erste Menge redundanter Bits zu codieren (202), um eine zweite Menge redundanter Bits zu erzeugen, und wobei die Steuerschaltung in der Lage ist, Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits auszuführen (203), um eine dritte Menge redundanter Bits zu erzeugen, so dass redundante Bits in der dritten Menge redundanter Bits, die zum Speichern in einer zweiten Teilmenge der Speicherzellen mit zweiten Haftfehlern ausgewählt werden, digitale Werte entsprechender zweiter Haftfehler aufweisen.
  2. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung in der Lage ist, virtuelle Haftfehlerwerte durch Ausführen von Logikfunktionen an den digitalen Werten der zweiten Haftfehler und einer Teilmenge der codierten Datenbits zu erzeugen, die den zweiten Haftfehlern entspricht, und wobei die Steuerschaltung in der Lage ist, die erste Menge redundanter Bits zu codieren, um die zweite Menge redundanter Bits zu erzeugen, um Anpassungen für die virtuellen Haftfehlerwerte vorzunehmen.
  3. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung in der Lage ist, bitweise XOR-Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits auszuführen, um die dritte Menge redundanter Bits zu erzeugen.
  4. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung in der Lage ist, Logikfunktionen an der dritten Menge redundanter Bits und einer vierten Menge redundanter Bits auszuführen, um eine fünfte Menge redundanter Bits zum Speichern in einer dritten Teilmenge der Speicherzellen zu erzeugen.
  5. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung in der Lage ist, bitweise XOR-Logikfunktionen an der dritten Menge redundanter Bits und einer vierten Menge redundanter Bits auszuführen, um eine fünfte Menge redundanter Bits zum Speichern in einer dritten Teilmenge der Speicherzellen zu erzeugen, wobei die Steuerschaltung in der Lage ist, die erste Menge redundanter Bits zu codieren, um die zweite Menge redundanter Bits und eine sechste Menge redundanter Bits zu erzeugen, wobei die vierte Menge redundanter Bits die sechste Menge redundanter Bits sowie Bits umfasst, die eine Position der dritten Teilmenge der Speicherzellen anzeigen.
  6. Datenspeichersystem nach Anspruch 1, wobei die codierten Datenbits und die dritte Menge redundanter Bits zum Speichern in ausgewählten Speicherzellen bereitgestellt werden.
  7. Datenspeichersystem nach Anspruch 6, wobei die Steuerschaltung in der Lage ist, die erste Menge redundanter Bits sowie Bits zu codieren, die eine Position der Speicherzellen anzeigen, die zum Speichern der dritten Menge redundanter Bits ausgewählt werden, um die zweite Menge redundanter Bits zu erzeugen.
  8. Datenspeichersystem (100), das Folgendes umfasst: eine Speicherschaltung (102;103) mit Speicherzellen und eine Steuerschaltung (101), die in der Lage ist, aus den Speicherzellen gelesene codierte Bits zu empfangen, wobei mithilfe der codierten Bits Anpassungen für Haftfehler in den Speicherzellen vorgenommen werden, wobei die Steuerschaltung in der Lage ist, bitweise Logikfunktionen an ersten Mengen der codierten Bits auszuführen (213), um erste Zwischenbits zu erzeugen, wobei die Steuerschaltung in der Lage ist, die bitweisen Logikfunktionen an zweiten Mengen der codierten Bits auszuführen, um zweite Zwischenbits zu erzeugen, wobei jede der zweiten Mengen mehr Bits als jede der ersten Mengen aufweist, wobei die Steuerschaltung in der Lage ist, die zweiten Zwischenbits mithilfe der ersten Zwischenbits zu decodieren (214), um erste decodierte Bits zu erzeugen, und wobei die Steuerschaltung in der Lage ist, eine erste Teilmenge der codierten Bits mithilfe der ersten decodierten Bits zu decodieren (215), um decodierte Datenbits zu erzeugen.
  9. Datenspeichersystem nach Anspruch 8, wobei die bitweisen Logikfunktionen bitweise XOR-Logikfunktionen sind.
  10. Datenspeichersystem nach Anspruch 9, wobei eine erste Teilmenge der ersten Zwischenbits eine Position von Bits in den zweiten Zwischenbits anzeigt, die nicht mithilfe einer zweiten Teilmenge der ersten Zwischenbits decodiert werden, um die ersten decodierten Bits zu erzeugen.
  11. Datenspeichersystem nach Anspruch 8, wobei eine erste Teilmenge der ersten decodierten Bits eine Position von Bits in einer zweiten Teilmenge der codierten Bits anzeigt, die nicht decodiert werden, um die decodierten Datenbits zu erzeugen, und eine zweite Teilmenge der ersten decodierten Bits zum Decodieren der ersten Teilmenge der codierten Bits verwendet wird, um die decodierten Datenbits zu erzeugen.
  12. Datenspeichersystem nach Anspruch 11, wobei die bitweisen Logikfunktionen bitweise XOR-Logikfunktionen sind.
  13. Verfahren, das von einem Datenspeichersystem ausgeführt wird, wobei das Verfahren umfasst: Empfangen von Datenbits (301), die zum Speichern in Speicherzellen einer Speicherschaltung in dem Datenspeichersystem bereitgestellt werden; Codieren der Datenbits (201), um eine erste Menge redundanter Bits und codierter Datenbits zu erzeugen, so dass die zum Speichern in einer ersten Teilmenge der Speicherzellen mit ersten Haftfehlern ausgewählten codierten Datenbits digitale Werte entsprechender erster Haftfehler aufweisen; Codieren der ersten Menge redundanter Bits (202), um eine zweite Menge redundanter Bits zu erzeugen, und Ausführen von Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits (203), um eine dritte Menge redundanter Bits zu erzeugen, so dass die redundanten Bits in der dritten Menge redundanter Bits, die zum Speichern in einer zweiten Teilmenge der Speicherzellen mit zweiten Haftfehlern ausgewählt werden, digitale Werte entsprechender zweiter Haftfehler aufweisen.
  14. Verfahren nach Anspruch 13, das außerdem Folgendes umfasst: Erzeugen virtueller Haftfehlerwerte (310) durch Ausführen von Logikfunktionen an den digitalen Werten der zweiten Haftfehler und einer Teilmenge der codierten Datenbits, die den zweiten Haftfehlern entsprechen, wobei das Codieren der ersten Menge redundanter Bits, um eine zweite Menge redundanter Bits zu erzeugen, das Codieren der ersten Menge redundanter Bits (311) umfasst, um die zweite Menge redundanter Bits zu erzeugen, um Anpassungen für die virtuellen Haftfehlerwerte vorzunehmen.
  15. Verfahren nach Anspruch 13, wobei das Ausführen von Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits, um eine dritte Menge redundanter Bits zu erzeugen, das Ausführen bitweiser XOR-Logikfunktionen an der zweiten Menge redundanter Bits und den codierten Datenbits (312) umfasst, um die dritte Menge redundanter Bits zu erzeugen.
  16. Verfahren nach Anspruch 13, das außerdem umfasst: Ausführen (315) bitweiser XOR-Logikfunktionen an der dritten Menge redundanter Bits und einer vierten Menge redundanter Bits, um eine fünfte Menge redundanter Bits zum Speichern in einer dritten Teilmenge der Speicherzellen zu erzeugen.
  17. Verfahren nach Anspruch 16, wobei das Codieren der ersten Menge redundanter Bits, um eine zweite Menge redundanter Bits zu erzeugen, das Codieren der ersten Menge redundanter Bits zum Erzeugen der zweiten Menge redundanter Bits und einer sechsten Menge redundanter Bits umfasst, wobei die vierte Menge redundanter Bits die sechste Menge redundanter Bits und Bits umfasst, die eine Position der dritten Teilmenge der Speicherzellen anzeigen.
  18. Verfahren nach Anspruch 13, wobei das Codieren der ersten Menge redundanter Bits, um eine zweite Menge redundanter Bits zu erzeugen, das Codieren der ersten Menge redundanter Bits sowie von Bits umfasst, die eine Position der Speicherzellen anzeigen, die zum Speichern der dritten Menge redundanter Bits ausgewählt werden, um die zweite Menge redundanter Bits zu erzeugen, und wobei das Verfahren von einer Steuerschaltung ausgeführt wird.
  19. Verfahren, das von einem Datenspeichersystem ausgeführt wird, wobei das Verfahren Folgendes umfasst: Empfangen (211) von aus Speicherzellen einer Speicherschaltung in dem Datenspeichersystem gelesenen codierten Bits, wobei mithilfe der codierten Bits Anpassungen für Haftfehler in den Speicherzellen vorgenommen werden; Ausführen bitweiser Logikfunktionen (212) an ersten Mengen der codierten Bits, um erste Zwischenbits zu erzeugen; Ausführen bitweiser Logikfunktionen (213) an zweiten Mengen der codierten Bits, um zweite Zwischenbits zu erzeugen, wobei jede der zweiten Mengen mehr Bits als jede der ersten Mengen aufweist; Decodieren der zweiten Zwischenbits (214) mithilfe der ersten Zwischenbits, um erste decodierte Bits zu erzeugen, und Decodieren einer ersten Teilmenge (215) der codierten Bits mithilfe der ersten decodierten Bits, um decodierte Datenbits zu erzeugen.
  20. Verfahren nach Anspruch 19, wobei die an der ersten und der zweiten Menge codierter Bits ausgeführten Logikfunktionen bitweise XOR-Logikfunktionen sind, wobei eine erste Teilmenge der ersten Zwischenbits eine Position von Bits in den zweiten Zwischenbits anzeigt, die nicht mithilfe einer zweiten Teilmenge der ersten Zwischenbits decodiert werden, um die ersten decodierten Bits zu erzeugen, wobei eine erste Teilmenge der ersten decodierten Bits eine Position von Bits in einer zweiten Teilmenge der codierten Bits anzeigt, die nicht decodiert werden, um die decodierten Datenbits zu erstellen, und eine zweite Teilmenge der ersten decodierten Bits zum Decodieren der ersten Teilmenge der codierten Bits verwendet wird, um die decodierten Datenbits zu erzeugen, und wobei das Verfahren mithilfe einer Steuerschaltung ausgeführt wird.
DE102013016694.2A 2012-10-10 2013-10-08 Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern Active DE102013016694B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/649,108 US9070483B2 (en) 2012-10-10 2012-10-10 Encoding and decoding redundant bits to accommodate memory cells having stuck-at faults
US13/649,108 2012-10-10

Publications (2)

Publication Number Publication Date
DE102013016694A1 DE102013016694A1 (de) 2014-04-10
DE102013016694B4 true DE102013016694B4 (de) 2020-07-09

Family

ID=49630297

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013016694.2A Active DE102013016694B4 (de) 2012-10-10 2013-10-08 Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern

Country Status (5)

Country Link
US (1) US9070483B2 (de)
JP (1) JP2014078237A (de)
KR (1) KR101543081B1 (de)
DE (1) DE102013016694B4 (de)
GB (1) GB2507414B (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8812934B2 (en) * 2012-12-12 2014-08-19 HGST Netherlands B.V. Techniques for storing bits in memory cells having stuck-at faults
CN108196799B (zh) 2013-11-22 2021-03-30 华为技术有限公司 存储设备的写入方法及写入装置
KR102389722B1 (ko) * 2017-11-29 2022-04-25 에스케이하이닉스 주식회사 반도체 메모리 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120131418A1 (en) 2009-09-09 2012-05-24 Kabushiki Kaisha Toshiba Memory device
US20130124942A1 (en) 2011-11-16 2013-05-16 HGST Netherlands B.V. Techniques For Storing Data in Stuck and Unstable Memory Cells

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3949208A (en) 1974-12-31 1976-04-06 International Business Machines Corporation Apparatus for detecting and correcting errors in an encoded memory word
US6868022B2 (en) 2003-03-28 2005-03-15 Matrix Semiconductor, Inc. Redundant memory structure using bad bit pointers
US7069494B2 (en) * 2003-04-17 2006-06-27 International Business Machines Corporation Application of special ECC matrix for solving stuck bit faults in an ECC protected mechanism
US6839275B2 (en) 2003-06-04 2005-01-04 Hewlett-Packard Development Company, L.P. Memory system having control circuit configured to receive data, provide encoded received data to match a fault pattern in the array of memory cells
US7533321B2 (en) * 2005-09-13 2009-05-12 International Business Machines Corporation Fault tolerant encoding of directory states for stuck bits
US8144037B2 (en) 2007-07-12 2012-03-27 Intellectual Ventures Fund 44 Llc Blocking for combinatorial coding/decoding for electrical computers and digital data processing systems
WO2009150608A1 (en) 2008-06-11 2009-12-17 Nxp B.V. Phase change memory device and control method
US8331168B2 (en) 2009-04-30 2012-12-11 International Business Machines Corporation Increased capacity heterogeneous storage elements
US8412987B2 (en) 2009-06-30 2013-04-02 Micron Technology, Inc. Non-volatile memory to store memory remap information
US8255742B2 (en) 2009-11-18 2012-08-28 Microsoft Corporation Dynamically replicated memory
US8839053B2 (en) 2010-05-27 2014-09-16 Microsoft Corporation Error correcting pointers for non-volatile storage
US8352839B2 (en) * 2010-06-11 2013-01-08 International Business Machines Corporation Encoding data into constrained memory
US8634235B2 (en) 2010-06-25 2014-01-21 Macronix International Co., Ltd. Phase change memory coding
US8479062B2 (en) * 2010-12-03 2013-07-02 International Business Machines Corporation Program disturb error logging and correction for flash memory
US8589762B2 (en) * 2011-07-05 2013-11-19 International Business Machines Corporation Adaptive multi-bit error correction in endurance limited memories
US9235465B2 (en) * 2012-06-06 2016-01-12 University of Pittsburgh—of the Commonwealth System of Higher Education Recursively determined invertible set approach to correct multiple stuck-at faults in rewritable memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120131418A1 (en) 2009-09-09 2012-05-24 Kabushiki Kaisha Toshiba Memory device
US20130124942A1 (en) 2011-11-16 2013-05-16 HGST Netherlands B.V. Techniques For Storing Data in Stuck and Unstable Memory Cells
US20130124943A1 (en) 2011-11-16 2013-05-16 HGST Netherlands B.V. Techniques For Storing Data in Stuck Memory Cells

Also Published As

Publication number Publication date
JP2014078237A (ja) 2014-05-01
GB201317709D0 (en) 2013-11-20
DE102013016694A1 (de) 2014-04-10
GB2507414A (en) 2014-04-30
KR20140046381A (ko) 2014-04-18
US9070483B2 (en) 2015-06-30
GB2507414B (en) 2014-12-10
KR101543081B1 (ko) 2015-08-07
US20140101517A1 (en) 2014-04-10

Similar Documents

Publication Publication Date Title
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE102015201384B4 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE3125048C2 (de)
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE112011100371T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE3128740C2 (de)
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102013016681B4 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE10133595A1 (de) Pufferschaltung, Speicherzugriffsverfahren, Speicherbauelement und Reed-Solomon-Decoder
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE2260850A1 (de) Fehlerkorrektursystem
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE112016003638T5 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102019107670A1 (de) Entspannte 433-kodierung zur verringerung der kopplung und des leistungsrauschens auf pam-4-datenbussen
DE102007007546A1 (de) Fehlerkorrekturcode-Striping
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102013109315B4 (de) Verfahren und Datenverarbeitungseinrichtung zum Rekonstruieren eines Vektors
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: WESTERN DIGITAL TECHNOLOGIES, INC. (N.D.GES.D., US

Free format text: FORMER OWNER: HGST NETHERLANDS B.V., AMSTERDAM, NL

R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

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