DE102013020713A1 - Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems - Google Patents

Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems Download PDF

Info

Publication number
DE102013020713A1
DE102013020713A1 DE102013020713.4A DE102013020713A DE102013020713A1 DE 102013020713 A1 DE102013020713 A1 DE 102013020713A1 DE 102013020713 A DE102013020713 A DE 102013020713A DE 102013020713 A1 DE102013020713 A1 DE 102013020713A1
Authority
DE
Germany
Prior art keywords
memory cells
errors
bits
control circuit
data 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.)
Pending
Application number
DE102013020713.4A
Other languages
English (en)
Inventor
Cyril Guyot
Zvonimir Bandic
Luiz Franca-Neto
Robert Eugeniu Mateescu
Hessam Mahdavifar
Qingbo Wang
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
HGST Netherlands BV
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 HGST Netherlands BV filed Critical HGST Netherlands BV
Publication of DE102013020713A1 publication Critical patent/DE102013020713A1/de
Pending 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • 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
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/02Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using elements whose operation depends upon chemical change
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • 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
    • 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/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes

Landscapes

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

Abstract

Ein Datenspeichersystem weist eine Speicherschaltung mit Speicherzellen und eine Steuerschaltung auf. Die Steuerschaltung ist dazu bedienbar, Datenbits zu empfangen, die zur Speicherung in den Speicherzellen bereitgestellt werden. Eine Teilmenge der Speicherzellen hat vorherbestimmte Haftfehler. Die Steuerschaltung ist dazu bedienbar, einen Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler auf Basis einer Bitposition eines entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen zu errechnen. Die Steuerschaltung ist dazu bedienbar, die Binomialkoeffizienten zu addieren, um unter Verwendung eines kombinatorischen Zahlensystems eine codierte Zahl zu erzeugen. Die Steuerschaltung ist dazu bedienbar, eine erste Menge redundanter Bits zu erzeugen, die die codierte Zahl anzeigen. Die erste Menge redundanter Bits wird dazu verwendet, Bits zu decodieren, die aus den Speicherzellen gelesen wurden, um die Datenbits wiederherzustellen.

Description

  • GEBIET DER OFFENBARUNG
  • Die vorliegende Offenbarung betrifft Datenspeichersysteme und ganz besonders Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems.
  • HINTERGRUND
  • Viele Datenkommunikationssysteme verwenden Fehlerkorrekturcodierer und -decodierer, um Fehler in Daten zu erkennen und zu korrigieren. Ein Datenkommunikationssystem kann beispielsweise statistische Fehler korrigieren, die mit einer Rate von etwa 1 × 10–4 erzeugt werden. Um gegen eine Fehlerrate von etwa 1 × 10–4 zu schützen, erzeugt ein Fehlerkorrekturcodierer codierte Bits mit etwa 10% mehr Bits als seine Eingangsbits.
  • Ein Phasenwechselspeicher (phase change memory, PCM) ist eine Klasse nichtflüchtiger Speicher. PCM-Geräte haben gegenüber einem traditionellen nichtflüchtigen Flash-Speicher viele Vorteile. PCM-Geräte können jedoch eine hohe Anzahl von Fehlern erzeugen, die von einem Leistungsabfall induziert werden. Ein PCM-Gerät kann beispielsweise Fehler mit einer Rate von 1 × 10–2 oder höher erzeugen.
  • An den Grenzen der Dauerhaftigkeit wird die Fehlerrate in nichtflüchtigen Speichergeräten vom Leistungsabfall beherrscht. Zu Fehlern, die von einem Leistungsabfall verursacht werden, zählen Haftfehler, die andere Eigenschaften und Statistiken haben als die statistischen Fehler, die in Datenkommunikationssystemen üblich sind.
  • KURZE DARSTELLUNG
  • Gemäß einigen Ausführungsformen weist ein Datenspeichersystem eine Speicherschaltung mit Speicherzellen und eine Steuerschaltung auf. Die Steuerschaltung ist dazu bedienbar, Datenbits zu empfangen, die zur Speicherung in den Speicherzellen bereitgestellt werden. Eine Teilmenge der Speicherzellen hat vorherbestimmte Haftfehler. Die Steuerschaltung ist dazu bedienbar, einen Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler auf Basis einer Bitposition eines entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen zu errechnen. Die Steuerschaltung ist dazu bedienbar, die Binomialkoeffizienten zu addieren, um unter Verwendung eines kombinatorischen Zahlensystems eine codierte Zahl zu erzeugen. Die Steuerschaltung ist dazu bedienbar, eine erste Menge redundanter Bits zu erzeugen, die die codierte Zahl anzeigen. Die erste Menge redundanter Bits wird dazu verwendet, Bits zu decodieren, die aus den Speicherzellen gelesen wurden, um die Datenbits wiederherzustellen.
  • Verschiedene Gegenstände, Merkmale und Vorteile der vorliegenden Erfindung werden bei Berücksichtigung der folgenden ausführlichen Beschreibung und der begleitenden Zeichnungen offenbar werden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 stellt ein Beispiel eines Datenspeichersystems gemäß einer Ausführungsform der vorliegenden Erfindung dar.
  • 2 ist ein Ablaufschema, das Beispiele von Arbeitsschritten zum Erzeugen redundanter Bits zum Korrigieren von Fehlern, die von Speicherzellen in einer Speicherschaltung mit Haftfehlern verursacht wurden, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 3 ist ein Ablaufschema, das Beispiele von Arbeitsschritten zum Verwenden redundanter Bits, um Fehler in Datenbits zu korrigieren, die von Haftfehlern in Speicherzellen einer Speicherschaltung verursacht werden, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 4 ist ein Ablaufschema, das Beispiele von Arbeitsschritten, die von einem Decodierer verwendet werden, um die Bitpositionen vorherbestimmter Haftfehler in den Speicherzellen unter Verwendung der codierten Zahl, die von einer Teilmenge der redundanten Bits angezeigt wird, zu bestimmen, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • 5 stellt Beispiele von Datenbits und Speicherzellen, die mit den hierin beschriebenen Codier- und Decodiertechniken verwendet werden können, gemäß einer Ausführungsform der vorliegenden Erfindung dar.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einigen hierin beschriebenen Ausführungsformen werden während eines Schreibvorgangs Datenbits zur Speicherung in Speicherzellen einer Speicherschaltung bereitgestellt. Ein Codierer erzeugt redundante Bits für die Datenbits auf Basis vorherbestimmter Haftfehler in den Speicherzellen. Die Datenbits werden dann in den Speicherzellen gespeichert. Nachdem die Datenbits während eines Lesevorgangs aus den Speicherzellen gelesen wurden, verwendet ein Decodierer die redundanten Bits dazu, Fehler in den Datenbits zu korrigieren, die von den vorherbestimmten Haftfehlern verursacht werden. Die Speicherschaltung kann beispielsweise eine Phasenwechselspeicherschaltung (die z. B. Chalkogenidglas verwendet) oder eine andere Art von Speicherschaltung sein, die Haftfehler hat. Wie hierin beschriebene Datenbits können beispielsweise benutzererzeugte Bits, Softwarecode darstellende Bits und beliebige andere digitale Werte beinhalten.
  • 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 logisch hohen digitalen Wert speichern und eine Speicherzelle mit einem Haftfehlerwert von 0 kann nur einen logisch niedrigen digitalen Wert speichern. Folglich kann nur ein logisch hoher digitaler Wert aus einer Speicherzelle mit einem Haftfehlerwert von 1 (d. h. haftend bei 1) gelesen werden und nur ein logisch niedriger digitaler Wert kann aus einer Speicherzelle mit einem Haftfehlerwert von 0 (d. h. haftend bei 0) gelesen werden. Speicherzellen mit Haftfehlern haben im Allgemeinen Haftfehler, die im Zeitablauf stabil sind.
  • Wenn einige der Speicherzellen in der Speicherschaltung Haftfehler haben, werden die digitalen Werte der Haftfehler und die Adressen der Speicherzellen mit den Haftfehlern vor dem Codiervorgang bestimmt und dem Codierer bereitgestellt. Der Codierer erzeugt die redundanten Bits unter Verwendung der digitalen Werte und adressiert diese vorherbestimmten Haftfehler. Die Datenbits werden in den Speicherzellen der Speicherschaltung gespeichert. Die redundanten Bits können in derselben Speicherschaltung wie die Datenbits oder in einer anderen Speicherschaltung gespeichert werden.
  • Anschließend werden die Datenbits und die redundanten Bits aus dem Speicher gelesen und einem Decodierer bereitgestellt. Der Decodierer korrigiert Fehler in den Datenbits, die von den vorherbestimmten Haftfehlern verursacht wurden, unter Verwendung der redundanten Bits. Der Decodierer bewirkt, dass die Datenbits frei von Fehlern sind, die von den vorherbestimmten Haftfehlern in den Speicherzellen verursacht wurden.
  • Die hierin beschriebenen Techniken sind direkt auf Multi-Level-Speicherzellen anwendbar. Multi-Level-Speicherzellen können mehr als ein Bit pro Speicherzelle speichern. Wenn beispielsweise eine Speicherzelle 2 Bits hält und sie hängen bleibt, werden die Werte dieser zwei Bits festgelegt und sie können als zwei separate Haftfehlerorte behandelt werden. Da der Ort eines der Haftfehler bekannt ist, ist auch der Ort des anderen Haftfehlers bekannt. Infolgedessen können bei der gleichen Haftfehlerrate weniger redundante Bits für Multi-Level-Speicherzellen erzeugt werden als die redundanten Bits, die für Single-Level-Speicherzellen erzeugt werden. Eine Single-Level-Speicherzelle speichert nur ein Bit pro Speicherzelle. Die Anzahl redundanter Bits kann kleiner sein, beispielsweise um einen Faktor, der der Anzahl von Bits pro Speicherzelle entspricht.
  • 1 stellt ein Beispiel eines Datenspeichersystems 100 gemäß einer Ausführungsform der vorliegenden Erfindung dar. Das Datenspeichersystem 100 weist eine Steuerschaltung 101, eine Speicherschaltung 102 und eine Speicherschaltung 103 auf. Die Steuerschaltung 101 kann beispielsweise eine Speichercontrollerschaltung, eine Prozessorschaltung oder eine beliebige andere Art von Steuerschaltung sein, die redundante Bits zur Speicherung in den Speicherschaltungen 102103 erzeugt. Die Steuerschaltung 101 kann den Speicherschaltungen 102103 Datenbits bereitstellen und Datenbits von diesen empfangen. Die Datenbits werden in einem der oder beiden Speicherschaltungen 102103 gespeichert. Die redundanten Bits können in einer der oder beiden Speicherschaltungen 102103 gespeichert werden. Die Datenbits und die redundanten Bits werden zwischen der Steuerschaltung 101 und den Speicherschaltungen 102103 durch einen oder mehrere On-Chip- oder externe Busse oder durch andere Arten von Signalleitungen übertragen. Die Steuerschaltung 101, die Speicherschaltung 102 und die Speicherschaltung 103 können sich in derselben integrierten Schaltung oder in separaten integrierten Schaltungen befinden. Folglich kann das System 100 ein einziges integriertes Schaltungsbauelement sein, das die Schaltungen 101103 aufweist. Alternativ dazu kann das System 100 drei separate integrierte Schaltungsbauelemente 101103 aufweisen.
  • 2 ist ein Ablaufschema, das Beispiele von Arbeitsschritten zum Erzeugen redundanter Bits zum Korrigieren von Fehlern, die von Speicherzellen in einer Speicherschaltung mit Haftfehlern verursacht wurden, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Jede der Speicherzellen in der Speicherschaltung speichert mindestens einen digitalen Wert. Eine oder mehrere der Speicherzellen hat bzw. haben einen Haftfehler. Die Adressen der Speicherzellen mit Haftfehlern und die digitalen Werte der Haftfehler werden vor dem Durchführen der Arbeitsschritte von 2 bestimmt und werden einem Codierer bereitgestellt. Es können beispielsweise wiederholte Lese- und Schreibvorgänge durchgeführt werden, um zu bestimmen, welche Speicherzellen Fehler aufweisen, die mit einem Haftfehlerverhalten im Einklang stehen, um eine Menge vorherbestimmter Haftfehler zu erzeugen. Die Arbeitsschritte von 2 können beispielsweise von einem Codierer (z. B. Firmware) in der Steuerschaltung 101 durchgeführt werden.
  • Im Arbeitsschritt 201 empfängt der Codierer eine k Anzahl von Datenbits, die zur Speicherung in der Speicherschaltung bereitgestellt werden. k ist eine positive ganze Zahl. Eine Menge von Speicherzellen in der Speicherschaltung wird zum Speichern der Datenbits identifiziert. Die zum Speichern der Datenbits identifizierten Speicherzellen sind in der Regel eine Teilmenge der Gesamtanzahl von Speicherzellen in der Speicherschaltung. Die zum Speichern der Datenbits identifizierten Speicherzellen können beispielsweise einer Seite von Speicherzellen in der Speicherschaltung entsprechen. Jedes der Datenbits wird zur Speicherung in einer entsprechenden Speicherzelle der Speicherschaltung bereitgestellt. Eines oder mehrere der Datenbits wird bzw. werden zur Speicherung in einer entsprechenden Speicherzelle bereitgestellt, die einen vorherbestimmten Haftfehler hat.
  • Im Arbeitsschritt 202 errechnet der Codierer einen Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen. Die Bitpositionen der vorherbestimmten Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen werden als c1, c2, ... cs bezeichnet, wobei s die Anzahl vorherbestimmter Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen ist. Die Bitpositionen c1, c2, ... cs sind streng zunehmende positive ganze Zahlen, so dass 0 ≤ c1 < c2 < ... < cs.
  • In einer Ausführungsform, in der die Datenbits zur Speicherung in einer hohen Anzahl von Speicherzellen bereitgestellt werden, entspricht (oder entspricht ungefähr) die Anzahl s der Anzahl von Datenbits k multipliziert mit der Bitfehlerrate α von Haftfehlern in den Speicherzellen (d. h. s = α × k = αk). In dieser Ausführungsform, wenn die Anzahl vorherbestimmter Haftfehler kleiner als s = αk ist, behandelt der Codierer einige der Speicherzellen, die keine Haftfehler haben, als wenn sie vorherbestimmte Haftfehler hätten, mit willkürlichen Haftfehlerwerten, so dass die Gesamtanzahl von Speicherzellen, die von dem Codierer behandelt werden, als wenn sie vorherbestimmte Haftfehler hätten, s entspricht. Bei Single-Level-Speicherzellen entspricht die Anzahl k ebenfalls der Anzahl der zum Speichern der Datenbits identifizierten Speicherzellen.
  • Der Binomialkoeffizient, den der Codierer im Arbeitsschritt 202 für jeden vorherbestimmten Haftfehler berechnet, entspricht ( n / j), wobei n eine ganze Zahl ist, die der Bitposition c1, c2, ... cs des entsprechenden vorherbestimmten Haftfehlers in den Speicherzellen entspricht, und j ein Index ist, der den entsprechenden vorherbestimmten Haftfehler eindeutig identifiziert. Der Index j ist eine positive ganze Zahl, die sich fortlaufend von 1 zu s ändert, um jeden der vorherbestimmten Haftfehler eindeutig zu identifizieren, und j ≤ n. Der Binomialkoeffizient ( n / j), entspricht der Anzahl von Kombinationen von j Elementen, die aus einer Menge von n Elementen ausgewählt werden können. Der Binomialkoeffizient ( n / j), entspricht der Anzahl von j-Kombinationen in einer Menge mit n Elementen, wobei die Reihenfolge von j Elementen in jeder der j-Kombinationen keine Rolle spielt und es keine Wiederholungen von mehr als einem der j Elemente in jeder der j-Kombinationen gibt. Folglich ist jede Kombination eine Art und Weise, mit der j Elemente aus einer Menge von n Elementen ausgewählt werden können, wobei die Reihenfolge außer Acht gelassen wird. Techniken zum Berechnen des Binomialkoeffizienten für jeden vorherbestimmten Haftfehler in den Speicherzellen werden durch die in der folgenden Gleichung (1) gezeigten Formeln bereitgestellt, wobei j ≤ n.
  • Figure DE102013020713A1_0002
  • Der Codierer berechnet einen Binomialkoeffizienten für jeden positiven ganzen Zahlenwert von j von 1 bis s unter Verwendung der Bitposition n des entsprechenden vorherbestimmten Haftfehlers, um s Binomialkoeffizienten zu erzeugen. Die s Binomialkoeffizienten für die s vorherbestimmten Haftfehler in den Speicherzellen der Speicherschaltung, die zum Speichern der Datenbits identifiziert wurden, kann wie in Gleichung (2) gezeigt geschrieben werden.
  • Figure DE102013020713A1_0003
  • Ein kombinatorisches Zahlensystem, das auch als Combinadics bezeichnet wird, für eine beliebige positive ganze Zahl s ist eine Entsprechung zwischen einer Menge von Anzahlen und s-Kombinationen der Menge von Anzahlen, die als die streng zunehmende Abfolge von Anzahlen 0 ≤ c1 < c2 < ... < cs dargestellt wird. Gemäß einer Ausführungsform wird ein kombinatorisches Zahlensystem dazu verwendet, die Bitpositionen der vorherbestimmten Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen anzuzeigen. In dieser Ausführungsform ist das kombinatorische Zahlensystem eine bijektive Abbildung der ( k / s), Kombinationen auf der numerischen Sequenz [[0, ( k / s), – 1]], wobei k die Anzahl von Datenbits ist und s die Anzahl vorherbestimmter Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen ist. Alle möglichen Bitpositionen vorherbestimmter Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen können unter Verwendung dieser bijektiven Abbildung exakt abgebildet werden.
  • Eine s-Kombination einer Menge S ist eine Teilmenge von S mit s verschiedenen Elementen. Ein kombinatorisches Zahlensystem stellt eine Darstellung, jeweils durch eine einzige Zahl, aller möglichen s-Kombinationen einer Menge S von k Elementen bereit. Bei Auswahl von {0, 1, ..., k – 1} als eine derartige Menge für ein beliebiges k kann es eingerichtet werden, dass die Darstellung einer gegebenen s-Kombination C von dem Wert von k unabhängig ist (obwohl k ausreichend groß sein muss). Die Berücksichtigung von C als eine Teilmenge einer größeren Menge durch Erhöhen von k ändert die Zahl, die C darstellt, nicht.
  • Die Anzahl N, die in dem kombinatorischen Zahlensystem vom Grad s mit einer s-Kombination C assoziiert ist, ist die Anzahl von s-Kombinationen, die in der gegebenen Ordnung streng weniger als C sind. Diese Anzahl N kann aus C = {cs, ..., c2, c1} bei cs > > C2 > c1 wie folgt berechnet werden. Aus der Definition der Ordnung folgt, dass es für jede s-Kombination S, die streng weniger als C ist, einen eindeutigen Index i gibt, so dass ci aus S fehlt, während cs, ..., ci+1 in S vorliegen, und kein anderer Wert, der größer als ci ist, in S vorliegt. Folglich können jene s-Kombinationen S entsprechend den möglichen Werten 1, 2, ..., s von i gruppiert werden und jede Gruppe wird separat gezählt. Für einen gegebenen Wert von i werden cs, ..., ci+1 in S eingebunden und die restlichen i Elemente von S werden aus den nicht negativen ganzen Zahlen ausgewählt, die streng niedriger als ci sind. Jede derartige Auswahl führt zu s-Kombinationen S, die streng weniger als C sind. Die Anzahl möglicher Auswahlen ist
    Figure DE102013020713A1_0004
    wobei es sich um die Anzahl von Kombinationen in Gruppe i handelt. Die Gesamtanzahl N von s-Kombinationen, die streng weniger als C sind, entspricht dann
    Figure DE102013020713A1_0005
    Dies ist der Index (der bei 0 beginnt) von C in der geordneten Liste von s-Kombinationen.
  • Im Arbeitsschritt 203 berechnet der Codierer eine codierte Zahl N, indem er die s Binomialkoeffizienten in Gleichung (2) unter Verwendung eines kombinatorischen Zahlensystems addiert, wie in Gleichung (3) gezeigt. In Gleichung (3) sind c1, c2, c3, ... cs die Bitpositionen der s vorherbestimmten Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen.
  • Figure DE102013020713A1_0006
  • Folglich entspricht die codierte Zahl N der Summe der s Binomialkoeffizienten für die vorherbestimmten Haftfehler in den zum Speichern der Datenbits identifizierten Speicherzellen. Im Arbeitsschritt 203 erzeugt der Codierer eine binäre Darstellung der codierten Zahl N als eine erste Menge redundanter Bits für die in den Speicherzellen zu speichernden Datenbits.
  • Im Arbeitsschritt 204 erzeugt der Codierer s redundante Bits, die anzeigen, welche der Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert werden sollen, dieselben digitalen Werte wie ihre entsprechenden vorherbestimmten Haftfehler haben und welche der Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert werden sollen, andere digitale Werte als ihre entsprechenden vorherbestimmten Haftfehler haben. Als ein Beispiel können die s redundanten Bits, die im Arbeitsschritt 204 erzeugt werden, eine 0 in ihrer i-ten Bitposition haben, wenn der i-te Haftfehler mit dem digitalen Wert des in dieser Speicherzelle zu speichernden Datenbits übereinstimmt, und eine 1 in ihrer i-ten Bitposition haben, wenn der i-te Haftfehler nicht mit dem digitalen Wert des in dieser Speicherzelle zu speichernden Datenbits übereinstimmt.
  • In der Ausführungsform von 2 erzeugt der Codierer eine Menge von redundanten Bits, die die codierte Zahl N anzeigen, die aus Gleichung (3) berechnet wurde, und eine andere Menge von redundanten Bits, die anzeigen, welche der Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert werden sollen, mit den digitalen Werten entsprechender jener Haftfehler übereinstimmen. Die folgende Gleichung (4) zeigt die Anzahl redundanter Bits R an, die der Codierer in den Arbeitsschritten 203204 erzeugt, wobei s = αk. Die folgenden Gleichungen (5) und (6) zeigen die maximale Anzahl redundanter Bits R an, die der Codierer in den Arbeitsschritten 203204 erzeugt. R = αk + log2(Σ αk / i=0( k / i)) (4) R ≤ αk + H(α)k ≈ k(α – αlog2(α) – (1 – α)log2(1 – α)) (5) R ≤ s + slog2–1) + s / ln(2) ≤ (1 + 1 / ln(2))s + slog2–1) (6)
  • Die Datenbits werden in den zum Speichern der Datenbits identifizierten Speicherzellen gespeichert. Die Datenbits werden während eines Schreibvorgangs vor, während oder nach den Arbeitsschritten von 2 in den Speicherzellen gespeichert. Die redundanten Bits werden in einem Speicher gespeichert und mit den Datenbits assoziiert. Die redundanten Bits können in derselben Speicherschaltung wie die Datenbits oder in einer anderen Speicherschaltung gespeichert werden. Während eines Lesevorgangs, der auf die Datenbits aus den Speicherzellen zugreift, werden die redundanten Bits aus dem Speicher gelesen und dazu verwendet, Fehler in den Datenbits zu korrigieren, die von den vorherbestimmten Haftfehlern in den Speicherzellen verursacht werden.
  • 3 ist ein Ablaufschema, das Beispiele von Arbeitsschritten zum Verwenden redundanter Bits, um Fehler in Datenbits zu korrigieren, die von Haftfehlern in Speicherzellen einer Speicherschaltung verursacht werden, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Die Datenbits werden während eines Lesevorgangs aus den Speicherzellen der Speicherschaltung gelesen und einem Decodierer bereitgestellt. Redundante Bits, die mit den Datenbits assoziiert sind, werden aus dem Speicher gelesen und dem Decodierer bereitgestellt. Die redundanten Bits werden durch den Codierer unter Verwendung der Arbeitsschritte von 2 erzeugt und werden mit den Datenbits assoziiert. Der Decodierer korrigiert Fehler in den Datenbits, die von den vorherbestimmten Haftfehlern in den Speicherzellen verursacht werden, unter Verwendung der redundanten Bits, die mit den Datenbits assoziiert sind.
  • Im Arbeitsschritt 301 empfängt der Decodierer k Datenbits, die während eines Lesevorgangs aus den Speicherzellen gelesen werden. Der Decodierer empfängt außerdem während des Lesevorgangs redundante Bits. Die redundanten Bits werden aus derselben Speicherschaltung wie die Datenbits oder aus einer anderen Speicherschaltung gelesen.
  • Im Arbeitsschritt 302 identifiziert der Decodierer eine Teilmenge der redundanten Bits als die codierte Zahl N anzeigend und eine andere Teilmenge der redundanten Bits als anzeigend, welche der ursprünglichen Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert wurden, mit den digitalen Werten entsprechender jener Haftfehler übereinstimmten. Als ein Beispiel kann der Codierer bewirken, dass die ersten s redundanten Bits anzeigt, welche der ursprünglichen Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert wurden, mit den digitalen Werten entsprechender jener Haftfehler übereinstimmten, und die restlichen redundanten Bits die codierte Zahl N anzeigen. In diesem Beispiel verwendet der Decodierer die ersten s redundanten Bits, um anzuzeigen, welche der ursprünglichen Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert wurden, mit den digitalen Werten entsprechender jener Haftfehler übereinstimmten, und die restlichen redundanten Bits als den binären Wert der codierten Zahl N. In diesem Beispiel empfängt oder speichert der Decodierer die Bitfehlerrate α und berechnet s unter Verwendung der Gleichung s = αk.
  • Im Arbeitsschritt 303 bestimmt der Decodierer die Bitposition jedes der vorherbestimmten Haftfehler in den Speicherzellen unter Verwendung der codierten Zahl N, die von einer Teilmenge der redundanten Bits angezeigt wird. N entspricht der Summe der s Binomialkoeffizienten für die vorherbestimmten Haftfehler in den Speicherzellen, die die Datenbits speicherten, wie oben beschrieben und in Gleichung (3) gezeigt. Der Decodierer kann beispielsweise die Bitpositionen der vorherbestimmten Haftfehler unter Verwendung der codierten Zahl N bestimmen, wie im Folgenden in Bezug auf 4 beschrieben.
  • Im Arbeitsschritt 304 stellt der Decodierer die digitalen Werte der Datenbits, die aus den Speicherzellen gelesen wurden, unter Verwendung der Bitpositionen der vorherbestimmten Haftfehler, die im Arbeitsschritt 303 erzeugt wurden, und der restlichen redundanten Bits ein, um korrigierte Datenbits zu erzeugen. Die restlichen redundanten Bits zeigen an, welche der ursprünglichen Datenbits, die in Speicherzellen mit vorherbestimmten Haftfehlern gespeichert wurden, mit den digitalen Werten entsprechender jener Haftfehler übereinstimmten. Der Decodierer kann die digitalen Werte eines oder mehrerer der Datenbits, die aus den Speicherzellen mit vorherbestimmten Haftfehlern gelesen wurden, auf Basis der digitalen Werte der restlichen redundanten Bits einstellen.
  • Als ein Beispiel haben die restlichen redundanten Bits eine 0 in ihrer i-ten Bitposition, wenn der i-te vorherbestimmte Haftfehler mit dem digitalen Wert des ursprünglichen Datenbits, das in dieser Speicherzelle gespeichert wurde, übereinstimmt, und eine 1 in ihrer i-ten Bitposition, wenn der i-te vorherbestimmte Haftfehler nicht mit dem digitalen Wert des ursprünglichen Datenbits, das in dieser Speicherzelle gespeichert wurde, übereinstimmt. Der Decodierer bestimmt, welche der Datenbits aus Speicherzellen mit vorherbestimmten Haftfehlern gelesen wurden, auf Basis des Ergebnisses des Arbeitsschritts 303. Der Decodierer invertiert jedes der Datenbits, die aus einer Speicherzelle mit einem vorherbestimmten Haftfehler gelesen wurden, wenn ein entsprechendes der restlichen redundanten Bits anzeigt, dass das ursprüngliche Datenbit, das in dieser Speicherzelle gespeichert wurde, nicht mit dem digitalen Wert des Haftfehlers dieser Speicherzelle übereinstimmt, um ein entsprechendes der korrigierten Datenbits zu erzeugen. Der Decodierer invertiert die restlichen Datenbits, die aus den Speicherzellen gelesen wurden, nicht, um entsprechende der korrigierten Datenbits zu erzeugen.
  • 4 ist ein Ablaufschema, das Beispiele von Arbeitsschritten, die von einem Decodierer verwendet werden, um die Bitpositionen vorherbestimmter Haftfehler in Speicherzellen unter Verwendung der codierten Zahl N, die von einer Teilmenge von redundanten Bits angezeigt wird, zu bestimmen, gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. In der Ausführungsform von 4 ist j ein variabler Index, der einer positiven ganzen Zahl entspricht, und M ist ein variabler Parameter, der einer positiven ganzen Zahl entspricht. Im Arbeitsschritt 401 entspricht Index j der Anzahl von Haftfehlern s und Parameter M entspricht der codierten Zahl N, die von der Teilmenge der redundanten Bits angezeigt wird, die im Arbeitsschritt 302 identifiziert wurde. Der Decodierer findet die j-Kombination, die der codierten Zahl N entspricht. Die kleinste Kombination mit cj als ihr größtes Element ist
    Figure DE102013020713A1_0007
    Folglich ist cj die größte positive ganze Zahl, so dass
    Figure DE102013020713A1_0008
    Im Arbeitsschritt 401, in Anbetracht einer ganzen Zahl 0 ≤ N ≤ ( k / s), findet der Decodierer das Cj-Maximum, so dass
    Figure DE102013020713A1_0009
    wobei M der codierten Zahl N in dem kombinatorischen Zahlensystem entspricht. Der Decodierer wählt den Wert cj als die Bitposition eines ersten vorherbestimmten Haftfehlers in den Speicherzellen aus.
  • Wenn j > 1, bilden die restlichen Elemente der j-Kombination die j – 1 Kombination, die der Anzahl
    Figure DE102013020713A1_0010
    in dem kombinatorischen Zahlensystem vom Grad j – 1 entspricht. Der Decodierer findet die restlichen Elemente der j-Kombination durch Wiederholen derselben Arbeitsschritte unter Verwendung von
    Figure DE102013020713A1_0011
    und j – 1 anstelle von M bzw. j. Insbesondere findet der Decodierer im Arbeitsschritt 402 das cj-1-Maximum, so dass
    Figure DE102013020713A1_0012
    In der ersten Iteration des Arbeitsschritts 402 entspricht Index j s und Parameter M entspricht der codierten Zahl N. Der Decodierer wählt den Wert cj-1 als die Bitposition eines zweiten vorherbestimmten Haftfehlers in den Speicherzellen aus.
  • Der Decodierer bestimmt dann in dem Entscheidungsarbeitsschritt 403, ob j > 2. Wenn im Arbeitsschritt 403 j = 2 ist, endet der Decodiervorgang. Wenn im Arbeitsschritt 403 j > 2 ist, subtrahiert der Decodierer im Arbeitsschritt 404 1 von j (d. h. j = j – 1), um einen neuen Wert von Index j für die nächste Iteration der Arbeitsschritte 402404 zu erzeugen. Der Decodierer dekrementiert in jeder Iteration des Arbeitsschritts 404 den Wert von j um 1. Der Decodierer subtrahiert außerdem im Arbeitsschritt 404
    Figure DE102013020713A1_0013
    von M, um einen neuen Wert des Parameters M für die nächste Iteration der Arbeitsschritte 402404 zu erzeugen
    Figure DE102013020713A1_0014
    Der Decodierer wiederholt dann die Arbeitsschritte 402403 unter Verwendung der neuen Werte von j und M, die im Arbeitsschritt 404 berechnet wurden, um die Bitposition des nächsten vorherbestimmten Haftfehlers in den Speicherzellen zu bestimmen. Der Decodierer fährt damit fort, Iterationen der Arbeitsschritte 402404 durchzuführen, um jede der Bitpositionen c1, c2, cs-1, cs der s vorherbestimmten Haftfehler in den Speicherzellen zu bestimmen, aus denen die Datenbits gelesen wurden.
  • 5 stellt Beispiele von Datenbits und Speicherzellen, die mit den hierin beschriebenen Codier- und Decodiertechniken verwendet werden können, gemäß einer Ausführungsform der vorliegenden Erfindung dar. Die in 5 gezeigten und in Bezug auf diese beschriebenen Werte sind lediglich Beispiele, die zum Zwecke der Veranschaulichung bereitgestellt werden und nicht einschränkend sein sollen.
  • 5 stellt 25 Single-Level-Speicherzellen in einer Speicherschaltung in den Bitpositionen 0–24 dar. Die 25 Speicherzellen sind zur einfacheren Veranschaulichung in 5 als Kästchen gezeigt. 5 stellt außerdem eine beispielhafte Menge von 25 Datenbits in den Bitpositionen 0–24 dar. Die in 5 gezeigten 25 Datenbits sind zur Speicherung in den 25 Speicherzellen bereitgestellt. Jedes der Datenbits wird zur Speicherung in einer entsprechenden Speicherzelle mit der gleichen Bitposition wie jenes Datenbit bereitgestellt. Beispielsweise wird das in 5 dargestellte Datenbit in der Bitposition 0, das sich am weitesten links befindet, zur Speicherung in der entsprechenden in 5 gezeigten Speicherzelle in der Bitposition 0, die sich am weitesten links befindet, bereitgestellt.
  • Einige der in 5 gezeigten Speicherzellen haben Haftfehler. Die Speicherzellen mit 0-Haftfehlern sind in 5 durch S0 identifiziert. Die Speicherzellen in den Bitpositionen 3, 6 und 17 haben 0-Haftfehler. Die Speicherzellen mit 1-Haftfehlern sind in 5 durch S1 identifiziert. Die Speicherzellen in den Bitpositionen 8 und 13 haben 1-Haftfehler.
  • Im Arbeitsschritt 202 errechnet der Codierer einen Binomialkoeffizienten für jeden der Haftfehler in den Bitpositionen 3, 6, 8, 13 und 17 in den in 5 gezeigten Speicherzellen. Die 5 Binomialkoeffizienten für die 5 Haftfehler in den Speicherzellen von 5 sind ( 3 / 1), ( 6 / 2), ( 8 / 3), ( 13 / 4), und ( 17 / 5), die den Zahlen 3, 15, 56, 715 bzw. 6188 entsprechen.
  • Im Arbeitsschritt 203 berechnet der Codierer eine codierte Zahl N, die den Bitpositionen 3, 6, 8, 13 und 17 der 5 Haftfehler in den Speicherzellen entspricht, indem er die im Arbeitsschritt 202 berechneten 5 Binomialkoeffizienten addiert. Die codierte Zahl N entspricht in diesem Beispiel 6977. Der Codierer erzeugt dann eine Menge redundanter Bits, die den binären Wert 6977 anzeigen.
  • Im Arbeitsschritt 204 erzeugt der Codierer eine Menge von 5 redundanten Bits, die anzeigen, welche der Datenbits, die in Speicherzellen mit Haftfehlern gespeichert werden sollen, dieselben digitalen Werte wie ihre entsprechenden Haftfehler haben und welche der Datenbits, die in Speicherzellen mit Haftfehlern gespeichert werden sollen, andere digitale Werte als ihre entsprechenden Haftfehler haben. Im Arbeitsschritt 204 bestimmt der Codierer, dass die Datenbits in den Bitpositionen 3 und 13 dieselben digitalen Werte wie ihre entsprechenden Haftfehler haben und die Datenbits in den Bitpositionen 6, 8 und 17 andere digitale Werte als ihre entsprechenden Haftfehler haben.
  • Der Codierer erzeugt eine Menge von 5 redundanten Bits, die 01101 entspricht. Jede 0 in der i-ten Bitposition dieser Menge von redundanten Bits zeigt an, dass der i-te Haftfehler mit dem digitalen Wert des in dieser Speicherzelle zu speichernden Datenbits übereinstimmt. Jede 1 in der i-ten Bitposition dieser Menge von redundanten Bits zeigt an, dass der i-te Haftfehler nicht mit dem digitalen Wert des in dieser Speicherzelle zu speichernden Datenbits übereinstimmt. Die redundanten Bits 01101 entsprechen den Haftfehlern der in 5 gezeigten Speicherzellen in den Bitpositionen 3, 6, 8, 13 bzw. 17.
  • Nachdem die Datenbits während eines Lesevorgangs aus den Speicherzellen gelesen wurden, werden die Datenbits und die redundanten Bits einem Decodierer bereitgestellt. Im Arbeitsschritt 302 identifiziert der Decodierer eine Teilmenge der redundanten Bits als die codierte Zahl N anzeigend. Der Decodierer identifiziert außerdem eine andere Teilmenge der redundanten Bits als anzeigend, welche der ursprünglichen Datenbits in Speicherzellen mit Haftfehlern gespeichert wurden, die mit den digitalen Werten entsprechender jener Haftfehler übereinstimmten.
  • Im Arbeitsschritt 303 decodiert der Decodierer die codierte Zahl N unter Verwendung der Arbeitsschritte von 4. Anfangs entspricht Index j in diesem Beispiel 5. Im Arbeitsschritt 401 bestimmt der Decodierer den maximalen Wert von c5, so dass
    Figure DE102013020713A1_0015
    Folglich bestimmt der Decodierer, dass c5 17 entspricht. Im Arbeitsschritt 402 bestimmt der Decodierer den maximalen Wert von c4, so dass
    Figure DE102013020713A1_0016
    Figure DE102013020713A1_0017
    Folglich bestimmt der Decodierer, dass c4 13 entspricht.
  • Nach dem Dekrementieren des Werts von j um 1 in der ersten Iteration des Arbeitsschritts 404, was bewirkt, dass j 4 entspricht, bestimmt der Decodierer den maximalen Wert von c3, so dass
    Figure DE102013020713A1_0018
    in der zweiten Iteration des Arbeitsschritts 402. Folglich bestimmt der Decodierer, dass c3 8 entspricht. Nach dem Dekrementieren des Werts von j um 1 in der zweiten Iteration des Arbeitsschritts 404, was bewirkt, dass j 3 entspricht, bestimmt der Decodierer den maximalen Wert von c2, so dass
    Figure DE102013020713A1_0019
    in der dritten Iteration des Arbeitsschritts 402. Folglich bestimmt der Decodierer, dass c2 6 entspricht. Nach dem Dekrementieren des Werts von j um 1 in der dritten Iteration des Arbeitsschritts 404, was bewirkt, dass j 2 entspricht, bestimmt der Decodierer den maximalen Wert von c1, so dass
    Figure DE102013020713A1_0020
    in der vierten Iteration des Arbeitsschritts 402. Folglich bestimmt der Decodierer, dass c1 3 entspricht. Index j entspricht 2 in der nächsten Iteration des Arbeitsschritts 403 und der Decodiervorgang endet dann. Der Decodierer bestimmt, dass die Bitpositionen der Haftfehler c5, c4, c3, c2 und c1 17, 13, 8, 6 bzw. 3 sind.
  • Ausführungsformen der vorliegenden Erfindung können beispielsweise unter Verwendung eines oder einer Kombination von Hardware, Software und eines computerlesbaren Mediums, das Programmbefehle enthält, implementiert werden. Ausführungsformen der vorliegenden Erfindung können als Programmcode verkörpert werden, der auf einem nicht vergänglichen computerlesbaren Medium gespeichert ist und der auf einem Computer ausgeführt werden kann. Durch Ausführungsformen der vorliegenden Erfindung implementierte Software und Ergebnisse der vorliegenden Erfindung können auf einem computerlesbaren Medium gespeichert werden, wie einem Halbleiterspeicher, einem Phasenwechselspeicher, einem Festplattenlaufwerk, einer Compact-Disk (CD), einer Digital-Video-Disk (DVD) oder anderen Medien. Ergebnisse der vorliegenden Erfindung können zu verschiedenen Zwecken verwendet werden, wie von einem Prozessor ausgeführt oder verarbeitet werden, einem Benutzer angezeigt werden, in einem Signal über ein Netz übertragen werden usw. Ausführungsformen der vorliegende Erfindung können auch als eine computerlesbare Programmcodeeinheit verkörpert werden, die auf einem nicht vergänglichen computerlesbaren Medium gespeichert ist, um zu bewirken, dass eine Reihe von Computersystemen, die über ein Netz verbunden sind, sich auf eine verteilte Datenverarbeitung auswirkt.
  • Die vorstehende Beschreibung der beispielhaften Ausführungsformen der vorliegenden Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung dargelegt. Die vorstehende Beschreibung soll nicht erschöpfend sein oder die vorliegende Erfindung auf die hierin offenbarten Beispiele beschränken. In einigen Fällen können Merkmale der vorliegenden Erfindung ohne eine entsprechende Verwendung anderer Merkmale wie dargelegt genutzt werden. Viele Modifizierungen, Austausche und Variationen sind angesichts der obigen Lehren möglich, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen.

Claims (20)

  1. Datenspeichersystem, das Folgendes umfasst: eine Speicherschaltung, die Speicherzellen umfasst; und eine Steuerschaltung, die dazu bedienbar ist, Datenbits zu empfangen, die zur Speicherung in den Speicherzellen bereitgestellt werden, wobei eine Teilmenge der Speicherzellen vorherbestimmte Haftfehler hat, wobei die Steuerschaltung dazu bedienbar ist, einen Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler auf Basis einer Bitposition eines entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen zu errechnen, wobei die Steuerschaltung dazu bedienbar ist, die Binomialkoeffizienten zu addieren, um unter Verwendung eines kombinatorischen Zahlensystems eine codierte Zahl zu erzeugen, wobei die Steuerschaltung dazu bedienbar ist, eine erste Menge redundanter Bits zu erzeugen, die die codierte Zahl anzeigen, und wobei die erste Menge redundanter Bits dazu verwendet wird, Bits zu decodieren, die aus den Speicherzellen gelesen wurden, um die Datenbits wiederherzustellen.
  2. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung dazu bedienbar ist, eine zweite Menge redundanter Bits zu erzeugen, die anzeigen, welche der Datenbits mit digitalen Werten ihrer entsprechenden vorherbestimmten Haftfehler übereinstimmen und welche der Datenbits andere digitale Werte als ihre entsprechenden vorherbestimmten Haftfehler haben.
  3. Datenspeichersystem nach Anspruch 2, wobei das Datenspeichersystem dazu bedienbar ist, die erste und die zweite Menge redundanter Bits mit den Datenbits zu assoziieren, und wobei das Datenspeichersystem dazu bedienbar ist, die Bits, die aus den Speicherzellen gelesen wurden, unter Verwendung der ersten und der zweiten Menge redundanter Bits zu decodieren, um die Datenbits wiederherzustellen.
  4. Datenspeichersystem nach Anspruch 1, wobei die Speicherschaltung eine Phasenwechselspeicherschaltung ist.
  5. Datenspeichersystem nach Anspruch 1, wobei die Steuerschaltung dazu bedienbar ist zu bewirken, dass jeder der Binomialkoeffizienten einer Anzahl von Kombinationen von j Elementen entspricht, die aus einer Menge von n Elementen auswählbar sind, wobei n eine ganze Zahl ist, die der Bitposition des entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen entspricht, und wobei j ein Index ist, der den entsprechenden der vorherbestimmten Haftfehler eindeutig identifiziert.
  6. Datenspeichersystem, das Folgendes umfasst: eine Speicherschaltung, die Speicherzellen umfasst; und eine Steuerschaltung, die dazu bedienbar ist, Datenbits zu empfangen, die aus den Speicherzellen gelesen wurden, wobei die Steuerschaltung dazu bedienbar ist, redundante Bits zu empfangen, die mit den Datenbits assoziiert sind, wobei die Steuerschaltung dazu bedienbar ist, eine codierte Zahl zu identifizieren, die von einer ersten Teilmenge der redundanten Bits angezeigt wird, wobei die Steuerschaltung dazu bedienbar ist, Bitpositionen einer Menge von Haftfehlern in den Speicherzellen auf Basis von Kombinationen zu bestimmen, die unter Verwendung der codierten Zahl in einem kombinatorischen Zahlensystem errechnet werden, und wobei die Steuerschaltung dazu bedienbar ist, digitale Werte der Datenbits unter Verwendung der Bitpositionen der Menge von Haftfehlern und einer zweiten Teilmenge der redundanten Bits einzustellen, um korrigierte Datenbits zu erzeugen.
  7. Datenspeichersystem nach Anspruch 6, wobei die zweite Teilmenge der redundanten Bits anzeigt, welche einer Menge von Bits, die zur Speicherung in den Speicherzellen mit der Menge von Haftfehlern bereitgestellt wurden, mit digitalen Werten von entsprechenden der Haftfehler übereinstimmten.
  8. Datenspeichersystem nach Anspruch 7, wobei die Steuerschaltung dazu bedienbar ist, eine Bitposition eines ersten der Haftfehler auf Basis einer ersten Kombination von j Elementen zu bestimmen, die aus einer Menge von cj Elementen auswählbar sind, wobei cj einen maximalen Wert hat, so dass die erste Kombination kleiner gleich der codierten Zahl ist, wobei j einer Anzahl der Datenbits multipliziert mit einer Bitfehlerrate der Haftfehler in den Speicherzellen entspricht, und wobei cj der Bitposition des ersten der Haftfehler entspricht.
  9. Datenspeichersystem nach Anspruch 8, wobei die Steuerschaltung dazu bedienbar ist, eine Bitposition eines zweiten der Haftfehler auf Basis einer zweiten Kombination von j – 1 Elementen zu bestimmen, die aus einer Menge von cj-1 Elementen auswählbar sind, wobei cj-1 einen maximalen Wert hat, so dass die zweite Kombination kleiner gleich der codierten Zahl minus der ersten Kombination ist, und wobei Cj-1 der Bitposition des zweiten der Haftfehler entspricht.
  10. Datenspeichersystem nach Anspruch 9, wobei die Steuerschaltung dazu bedienbar ist, eine Bitposition eines dritten der Haftfehler auf Basis einer dritten Kombination von j – 2 Elementen zu bestimmen, die aus einer Menge von cj-2 Elementen auswählbar sind, wobei cj-2 einen maximalen Wert hat, so dass die dritte Kombination kleiner gleich der codierten Zahl minus der ersten Kombination minus der zweiten Kombination ist, und wobei cj-2 der Bitposition des dritten der Haftfehler entspricht.
  11. Verfahren, das Folgendes umfasst: Empfangen von Datenbits an einer Steuerschaltung, die zur Speicherung in Speicherzellen einer Speicherschaltung bereitgestellt werden, wobei eine Teilmenge der Speicherzellen vorherbestimmte Haftfehler hat; Errechnen eines Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler auf Basis einer Bitposition eines entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen unter Verwendung der Steuerschaltung; Addieren der Binomialkoeffizienten, die für die vorherbestimmten Haftfehler errechnet wurden, unter Verwendung der Steuerschaltung, um eine codierte Zahl in einem kombinatorischen Zahlensystem zu erzeugen; und Erzeugen einer ersten Menge redundanter Bits, die die codierte Zahl anzeigen, unter Verwendung der Steuerschaltung, wobei die erste Menge redundanter Bits dazu verwendet wird, Bits zu decodieren, die aus den Speicherzellen gelesen wurden, um die Datenbits wiederherzustellen.
  12. Verfahren nach Anspruch 11, das weiterhin Folgendes umfasst: Erzeugen einer zweiten Menge redundanter Bits, die anzeigen, welche der Datenbits mit digitalen Werten ihrer entsprechenden vorherbestimmten Haftfehler übereinstimmen und welche der Datenbits andere digitale Werte als ihre entsprechenden vorherbestimmten Haftfehler haben.
  13. Verfahren nach Anspruch 12, das weiterhin Folgendes umfasst: Assoziieren der ersten und der zweiten Menge redundanter Bits mit den Datenbits und Decodieren der Bits, die aus den Speicherzellen gelesen wurden, unter Verwendung der ersten und der zweiten Menge redundanter Bits, um die Datenbits wiederherzustellen.
  14. Verfahren nach Anspruch 11, wobei die Speicherschaltung eine Phasenwechselspeicherschaltung ist.
  15. Verfahren nach Anspruch 11, wobei das Errechnen eines Binomialkoeffizienten für jeden der vorherbestimmten Haftfehler auf Basis einer Bitposition eines entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen unter Verwendung der Steuerschaltung weiterhin das Bewirken umfasst, dass jeder der Binomialkoeffizienten einer Anzahl von Kombinationen von j Elementen entspricht, die aus einer Menge von n Elementen auswählbar sind, wobei n eine ganze Zahl ist, die der Bitposition des entsprechenden der vorherbestimmten Haftfehler in den Speicherzellen entspricht, und wobei j ein Index ist, der den entsprechenden der vorherbestimmten Haftfehler eindeutig identifiziert.
  16. Verfahren, das Folgendes umfasst: Empfangen von Datenbits an einer Steuerschaltung, die aus Speicherzellen einer Speicherschaltung gelesen werden; Empfangen redundanter Bits, die mit den Datenbits assoziiert sind, an der Steuerschaltung; Identifizieren einer codierten Zahl, die von einer ersten Teilmenge der redundanten Bits angezeigt wird, unter Verwendung der Steuerschaltung; Bestimmen von Bitpositionen einer Menge von Haftfehlern in den Speicherzellen unter Verwendung von Kombinationen, die von der Steuerschaltung auf Basis der codierten Zahl in einem kombinatorischen Zahlensystem errechnet werden; und Einstellen von digitalen Werten der Datenbits unter Verwendung der Bitpositionen der Menge von Haftfehlern und einer zweiten Teilmenge der redundanten Bits, um korrigierte Datenbits zu erzeugen.
  17. Verfahren nach Anspruch 16, wobei die zweite Teilmenge der redundanten Bits anzeigt, welche einer Menge von Bits, die zur Speicherung in den Speicherzellen mit der Menge von Haftfehlern bereitgestellt wurden, mit digitalen Werten von entsprechenden der Haftfehler übereinstimmten.
  18. Verfahren nach Anspruch 17, wobei das Bestimmen von Bitpositionen einer Menge von Haftfehlern in den Speicherzellen unter Verwendung von Kombinationen, die von der Steuerschaltung auf Basis der codierten Zahl in einem kombinatorischen Zahlensystem errechnet werden, weiterhin Folgendes umfasst: Bestimmen einer Bitposition eines ersten der Haftfehler auf Basis einer ersten Kombination von j Elementen zu bestimmen, die aus einer Menge von cj Elementen auswählbar sind, wobei cj einen maximalen Wert hat, so dass die erste Kombination kleiner gleich der codierten Zahl ist, wobei j einer Anzahl der Datenbits multipliziert mit einer Bitfehlerrate der Haftfehler in den Speicherzellen entspricht, und wobei cj der Bitposition des ersten der Haftfehler entspricht.
  19. Verfahren nach Anspruch 18, wobei das Bestimmen von Bitpositionen einer Menge von Haftfehlern in den Speicherzellen unter Verwendung von Kombinationen, die von der Steuerschaltung auf Basis der codierten Zahl in einem kombinatorischen Zahlensystem errechnet werden, weiterhin Folgendes umfasst: Bestimmen einer Bitposition eines zweiten der Haftfehler auf Basis einer zweiten Kombination von j – 1 Elementen, die aus einer Menge von cj-1 Elementen auswählbar sind, wobei einen maximalen Wert hat, so dass die zweite Kombination kleiner gleich der codierten Zahl minus der ersten Kombination ist, und wobei cj-1 der Bitposition des zweiten der Haftfehler entspricht.
  20. Verfahren nach Anspruch 19, wobei das Bestimmen von Bitpositionen einer Menge von Haftfehlern in den Speicherzellen unter Verwendung von Kombinationen, die von der Steuerschaltung auf Basis der codierten Zahl in einem kombinatorischen Zahlensystem errechnet werden, weiterhin Folgendes umfasst: Bestimmen einer Bitposition eines dritten der Haftfehler auf Basis einer dritten Kombination von j – 2 Elementen, die aus einer Menge von cj-2 Elementen auswählbar sind, wobei cj-2 einen maximalen Wert hat, so dass die dritte Kombination kleiner gleich der codierten Zahl minus der ersten Kombination minus der zweiten Kombination ist, und wobei cj-2 der Bitposition des dritten der Haftfehler entspricht.
DE102013020713.4A 2012-12-12 2013-12-10 Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems Pending DE102013020713A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/712,929 US8943388B2 (en) 2012-12-12 2012-12-12 Techniques for encoding and decoding using a combinatorial number system
US13/712,929 2012-12-12

Publications (1)

Publication Number Publication Date
DE102013020713A1 true DE102013020713A1 (de) 2014-06-12

Family

ID=50000188

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013020713.4A Pending DE102013020713A1 (de) 2012-12-12 2013-12-10 Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems

Country Status (5)

Country Link
US (1) US8943388B2 (de)
JP (1) JP5646723B2 (de)
KR (1) KR101566088B1 (de)
DE (1) DE102013020713A1 (de)
GB (1) GB2508995B (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
KR101545512B1 (ko) * 2012-12-26 2015-08-24 성균관대학교산학협력단 반도체 메모리 장치, 검증 독출 방법 및 시스템
WO2017149149A1 (de) * 2016-03-03 2017-09-08 Cadami Ug (Haftungsbeschränkt) Kennungscodierungseinrichtung und kennungsdecodierungseinrichtung zur datenverteilung in netzwerken sowie derartige einrichtungen aufweisende netzwerkelemente

Family Cites Families (27)

* 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
JPS55142496A (en) * 1979-04-20 1980-11-07 Nippon Telegr & Teleph Corp <Ntt> Memory error detection and correction circuit
JPS5680899A (en) * 1979-12-05 1981-07-02 Fujitsu Ltd Error amending processing system of memory device
JPS63141153A (ja) * 1986-12-03 1988-06-13 Nec Corp 半導体外部記憶装置
JPH09212429A (ja) * 1996-01-30 1997-08-15 Oki Electric Ind Co Ltd 不揮発性半導体ディスク装置
JP3090094B2 (ja) * 1997-06-20 2000-09-18 日本電気株式会社 テスト回路
US6327680B1 (en) * 1999-05-20 2001-12-04 International Business Machines Corporation Method and apparatus for array redundancy repair detection
FR2815199B1 (fr) * 2000-10-10 2003-01-17 Canon Kk Procedes de turbocodage circulaire de grande distance minimale, et systemes pour leur mise en oeuvre
US20030009721A1 (en) * 2001-07-06 2003-01-09 International Business Machines Corporation Method and system for background ECC scrubbing for a memory array
JP4268367B2 (ja) 2002-03-18 2009-05-27 博幸 荻野 半導体メモリの検査および欠陥救済方法、並びに半導体メモリの検査および欠陥救済回路
US6868022B2 (en) 2003-03-28 2005-03-15 Matrix Semiconductor, Inc. Redundant memory structure using bad bit pointers
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
KR100713206B1 (ko) 2006-07-21 2007-05-02 연세대학교 산학협력단 다중고착 고장 진단을 위한 매칭 방법
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
JP5143280B2 (ja) 2008-06-11 2013-02-13 エヌエックスピー ビー ヴィ 相変化メモリ及び制御方法
WO2010044099A1 (en) * 2008-10-15 2010-04-22 Veeresh Rudrappa Koratagere Lossless content encoding
US20110181448A1 (en) * 2008-10-15 2011-07-28 Veeresh Rudrapa Koratagere Lossless compression
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
US8543863B2 (en) * 2009-11-18 2013-09-24 Microsoft Corporation Efficiency of hardware memory access using 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
US9009574B2 (en) * 2011-06-07 2015-04-14 Marvell World Trade Ltd. Identification and mitigation of hard errors in memory systems
US8589762B2 (en) * 2011-07-05 2013-11-19 International Business Machines Corporation Adaptive multi-bit error correction in endurance limited memories

Also Published As

Publication number Publication date
GB2508995A (en) 2014-06-18
KR20140076503A (ko) 2014-06-20
US8943388B2 (en) 2015-01-27
KR101566088B1 (ko) 2015-11-04
GB2508995B (en) 2015-09-30
US20140164821A1 (en) 2014-06-12
JP2014120195A (ja) 2014-06-30
GB201321451D0 (en) 2014-01-22
JP5646723B2 (ja) 2014-12-24

Similar Documents

Publication Publication Date Title
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE19782077B4 (de) Verfahren und Vorrichtung zum Korrigieren eines Mehrpegelzellenspeichers durch Verwendung fehlerlokalisierender Codes
DE102013016681B4 (de) Codieren und Decodieren von Daten zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102015201384A1 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE60220341T2 (de) Verfahren zum Erzeugen eines Burstfehlermusters sowie Burst- und Bytefehlerermittlungs- und-korrekturvorrichtung
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE112007003080T5 (de) Verfahren, System und Vorrichtung für den ECC-Schutz von kleinen Datenstrukturen
DE112011106024B4 (de) Erzeugungsvorrichtung für vorrichtungsspezifische Informationen und Erzeugungsverfahren für vorrichtungsspezifische Informationen
DE2060643B2 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE102015113414B4 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102011085602A1 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE102016102590B4 (de) Datenverarbeitungseinrichtungen und verfahren zum rekonstruieren eines puf-werts
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102013020713A1 (de) Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102013208212B4 (de) Verbessertes Computerschnittstellensystem
DE102008054354A1 (de) Sichere Codierung von Spannungsdaten vieler Zellen bei Hybridfahrzeugen
DE102012102080A1 (de) Fehlertolerante Flip-Flops
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102014115877A1 (de) Verfahren, Vorrichtung und Einrichtung zur Datenverarbeitung
DE102013219088B4 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: MEWBURN ELLIS LLP, DE

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

R012 Request for examination validly filed
R082 Change of representative

Representative=s name: MURGITROYD GERMANY PATENTANWALTSGESELLSCHAFT M, DE