DE112011101852B4 - Decodieren von LDPC-Code - Google Patents

Decodieren von LDPC-Code Download PDF

Info

Publication number
DE112011101852B4
DE112011101852B4 DE112011101852.5T DE112011101852T DE112011101852B4 DE 112011101852 B4 DE112011101852 B4 DE 112011101852B4 DE 112011101852 T DE112011101852 T DE 112011101852T DE 112011101852 B4 DE112011101852 B4 DE 112011101852B4
Authority
DE
Germany
Prior art keywords
state
bit
condition
satisfied
parity checks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE112011101852.5T
Other languages
English (en)
Other versions
DE112011101852T5 (de
Inventor
Evangelos S. Eleftheriou
Xiaoyu Hu
Robert Haas
Dung Viet Nguyen
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.)
GlobalFoundries Inc
Original Assignee
GlobalFoundries 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 GlobalFoundries Inc filed Critical GlobalFoundries Inc
Publication of DE112011101852T5 publication Critical patent/DE112011101852T5/de
Application granted granted Critical
Publication of DE112011101852B4 publication Critical patent/DE112011101852B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • 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/11Error 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 using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Verfahren zum Decodieren einer Folge von Bits, die nach einem binären asymmetrischen Kanal in einen Speicher geschrieben werden, wobei die Folge von Bits durch einen LDPC-Code (Low-Density-Parity-Check-Code) codiert werden, wobei jedes Bit der Folge entsprechende durch den LDPC-Code definierte Paritätsprüfungen hat und das Verfahren Folgendes umfasst: – Bereitstellen einer Menge (10) von Bitzuständen einschließlich eines ersten Zustands (S1) und eines zweiten Zustands (S2) und einer Menge (20) von Bedingungen, wobei, wenn eine Bedingung erfüllt ist, ein Bitzustand zu ändern ist, die Menge von Bedingungen eine erste Bedingung (C1) zur Änderung eines Bitzustands vom ersten Zustand in den zweiten Zustand und eine zweite Bedingung (C2) zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand enthält, wobei sich die erste Bedingung und die zweite Bedingung voneinander unterscheiden, – Lesen eines Wertes eines jeden Bits der Folge von Bits und entsprechend dem gelesenen Wert das Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge (S100), – für ein Zielbit (30) der Folge von Bits das Auswerten (S200) einer Bedingung, wobei: – die Bedingung gemäß einem Zustand des Zielbits aus der Menge von Bedingungen ausgewählt wird, und – zum Auswerten der Bedingung ein Ergebnis der Berechnung der Paritätsprüfungen entsprechend dem Zielbit verwendet wird, – Feststellen (S300), dass die Bedingung erfüllt ist, – Ändern (S400) des Zustands des Zielbits als Ergebnis der Tatsache, dass die Bedingung erfüllt ist, und – Setzen (S500) des Wertes des Zielbits gemäß seinem Zustand.

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Gebiet der Informatik und insbesondere das Gebiet des Decodierens von Low-Density-Parity-Check-Code.
  • Aus US 2010/0017684 A1 ist ein Verfahren zur Datenwiederherstellung bekannt. Ferner offenbart US 2010/0017684 A1 eine Konfiguration für Solid State Speichergeräte.
  • Aus WO 2010/039874 A1 sind ein Verfahren und ein System zur Generierung von „Soft Data” für Speichergeräte bekannt, welche ein Decoder Performance Feedback nutzen. Wenigstens ein Soft Data-Wert wird in dem Speichergerät durch das Erlangen eines Leistungsfeedbacks eines Decoders generiert.
  • HINTERGRUND DER ERFINDUNG
  • Low-Density-Parity-Check-Codes (LDPC-Codes), die ursprünglich von Gallager eingeführt und durch MacKay und Neal bekannt gemacht wurden, sind leistungsfähige Codes, mit denen ein schneller und zuverlässiger Abruf der Daten möglich ist, die mit einem zulässigen Redundanzumfang codiert wurden. LDPC-Codes werden daher in großem Stil zur Speicherung von Daten in Speichern oder zur Übertragung von Daten verwendet, da die von den Codes benötigte Redundanz der Daten und die Zeit nicht untragbar hoch sind, die zur Korrektur der Fehler erforderlich ist, die zwischen dem Schreiben und Lesen oder zwischen dem Senden und Empfangen in die Daten eingeschleust werden.
  • Bei der Speicherung im Speicher dient ein Kanalmodell, bei dem es sich um einen in der Informations- und Codierungstheorie weitverbreiteten Begriff handelt, zur Beschreibung des Fehlers, der zwischen codierten gelesenen Daten und den codierten Daten festgestellt wird, die geschrieben werden sollen. Ein Datenelement soll einen Kanal durchlaufen, wenn gemäß dem Modell Fehler in die Daten eingeschleust werden. Wenn das Datenelement eine Folge von Bits enthält, die in einen Speicher geschrieben und anschließend gelesen werden sollen, kann der tatsächliche Wert des Bits (d. h. der Wert des Bits, der geschrieben werden soll) normalerweise während des Schreibens, während der Speicherung oder sogar während des Lesens verändert werden. Je nach Anwendung und der Hypothese über die Ursachen der Fehler können unterschiedliche Kanalmodelle verwendet werden. Zu den häufig verwendeten Kanälen gehören Kanäle mit additivem weißen Gauß'schen Rauschen (Additive White Gaussian Noise, AWGN) und binäre symmetrische Kanäle (Binary Symmetric Channel, BSC).
  • Beim SLC-Flash-Speicher (SLC = Single Level Cell) handelt es sich um eine Speicherart, die aus unabhängigen Zellen besteht, in die Bits geschrieben werden können. Jede Zelle stellt somit ein einzelnes Bit dar. Die Flash-Zellen beruhen auf der Floating-Gate-Transistortechnologie. Mit anderen Worten: Eine am Gate eines Transistors der Flash-Zelle „eingefangene” elektrische Ladung bestimmt den an der Flash-Zelle gelesenen logischen Wert (d. h. den Wert des Bits). Leicht vereinfacht kann die Arbeitsweise der Flash-Zelle wie folgt beschrieben werden: Beim „Löschen” einer Zelle wird eine Ladung an das Gate angelegt, und die Zelle wird als logisch eins (d. h., der Wert des Bits beträgt 1) gelesen. Das „Programmieren (d. h. Schreiben einer 0)” einer Zelle entspricht dem Entladen des Gates, wodurch der logische Wert auf null gebracht wird. Eine Zelle kann nur programmiert (bzw. entladen) werden, wenn sie zuvor gelöscht (bzw. geladen) wurde.
  • Der Flash-Speicher ist in Seiten und Blöcken angeordnet, wobei eine Seite normalerweise aus mehreren Flash-Zellen (z. B. 4096 Bytes zum Speichern von Datenbits und 128 Bytes zum Speichern redundanter Bits) und ein Block aus mehreren Seiten (z. B. 64) besteht. Lese- und Schreiboperationen finden normalerweise auf der Seitenebene statt, während Löschoperationen an einem ganzen Block durchgeführt werden. Da nur die Bits entladen werden, die mit einer 0 beschrieben sind, bleiben die übrigen Bits nach wie vor geladen. Das bedeutet, dass der tatsächlich bei einer bestimmten Zelle/bei einem bestimmten Bit verursachte Verschleiß proportional zur Anzahl der Nullen ist, die insgesamt auf die Zelle geschrieben wurden. Normalerweise haben die Flash-Zellen eine Standzeit von 10.000 Lese/Schreibzyklen, d. h., jede Zelle kann 10.000 Mal gelöscht und mit Nullen beschrieben werden.
  • Wegen des Lade-/Entladeprozesses, der für die Lese-/Schreib-/Löschoperationen bei Flash-Zellen typisch ist, kann man beobachten, dass es sich bei den am häufigsten beobachteten Fehlermustern um eine unerwünschte Umwandlung einer 1 in eine 0 handelt. Dies lässt sich mithilfe des in 1 gezeigten sogenannten binären asymmetrischen Kanals (Binary Asymmetric Channel, BAC) modellieren. Unter Bezugnahme auf 1 kann eine geschriebene 1 mit einer Wahrscheinlichkeit 1 – a als 1 und mit einer Fehlerwahrscheinlichkeit a als 0 ausgelesen werden, während eine gespeicherte 0 mit einer Wahrscheinlichkeit 1 – a/b als 0 und mit einer Fehlerwahrscheinlichkeit 1 – a/b als 1 ausgelesen werden kann, wobei a eine kleine Zahl im Bereich von 10–3 bis 10–5 und b eine größere reelle Zahl als 1 ist, z. B. 10. Flash-Speicher können manchmal alternativ durch einen Z-Kanal modelliert werden, wie in 2 gezeigt, indem das Fehlermuster von 0 auf 1 vernachlässigt wird, wobei es sich hierbei um einen Sonderfall des BAC handelt, wenn b gegen unendlich geht. Wie bei den anderen Kanalmodellen kann eine Folge von Bits, die mit dem LDPC-Code codiert wurden, auf einen Flash-Speicher geschrieben werden. In den folgenden Dokumenten wird die LDPC-Codierung für symmetrische Kanäle behandelt:
    • – „LDPC codes for binary asymmetric channels” von Marina, N., ICT 2008, International Conference on Telecommunications, 2008, 16. bis 19. Juni, Seiten 1–7;
    • – „Does the Performance of LDPC Codes Depend on the Channel?” von Franceschini, M., Ferrari, G., Raheli, R., IEEE Transactions on Communications, Bd. 54, Ausgabe 12, Dez. 2006, Seiten 2129–2132;
    • – „Maximum Likelihood Decoding of Codes on the Z-channel” von Barbero, A., Ellingsen, P., Spinsante, S., Ytrehus, O., IEEE International Conference on Communications, 2006, Bd. 3, Juni 2006, Seiten 1200–1205; und
    • – „Density evolution for asymmetric memoryless channels” von Wang, C.-C., Kulkarni, S. R., Poor, H. V., IEEE Transactions on Information Theory, Bd. 51, Ausgabe 12, Dez. 2005, Seiten 4216–4236.
  • Zur Decodierung von Daten, die im LDPC-Code codiert sind, werden praxistaugliche Decodieralgorithmen verwendet. Hierzu gehören die Bitumkehrung (Bit-Flipping), Gallager A/B, Belief-Propagation und Summe-Produkt, die bei langen LDPC-Codes funktionieren und einen außergewöhnlichen Schutz vor Fehlern bieten. Unter diesen Decodieralgorithmen ist die Bitumkehrung der einfachste Algorithmus und leicht zu realisieren.
  • Ein Vorteil des Bitumkehralgorithmus besteht darin, dass die mit dem Algorithmus zusammenhängende Komplexität der Decodierung wesentlich geringer als bei anderen Algorithmen ist. Der Vergleich mit dem Summe-Produkt-Algorithmus, der z. B. in dem von Feng Guo und Lajos Hanzo verfassten Dokument „Reliability Ratio Based Weighted Bit-Flipping Decoding for LDPC codes” beschrieben ist, wird nun kurz erörtert. Der Summe-Produkt-Algorithmus erfordert 2jq Additionen und 7jq/log2(q) Multiplikation pro codiertem Bit und pro Iteration, wobei q die Größe des Decodierfeldes ist, die bei diesem binären Szenario zwei beträgt. Bei einer Blocklänge von 1000 Bit und maximal 10 Iterationen betrug die erforderliche Anzahl arithmetischer Operationen 200.000 Additionen und 700.000 Multiplikationen. Überdies erfordert der Bitumkehralgorithmus keine aufwändigen Additionen und Qualifikationen. Der Bitumkehralgorithmus erfordert lediglich logische Operationen durch das Auswerten von Syndromen, wozu nur wenig digitale Logik erforderlich ist. Des Weiteren kann der Algorithmus äußerst schnell ablaufen. Die folgenden Dokumente behandeln verschiedene Versionen des Bitumkehralgorithmus zur iterativen Decodierung von LDPC-Codes:
    • – „An improvement on the modified weighted bit flipping decoding algorithm for LDPC codes” von Ming Jiang, Chunming Zhao, Zhihua Shi, Vu Chen, IEEE Communications Letters, Bd. 9, Ausgabe 9, Sep. 2005, Seiten 814–816;
    • – „On the Error Correction of Regular LDPC Codes Using the Flipping Algorithm” von Burshtein, D., IEEE Transactions on Information Theory, Bd. 54, Ausgabe 2, Feb. 2008, Seiten 517–530;
    • – „A Modification to Weighted Bit-Flipping Decoding Algorithm for LDPC Codes Based on Reliability Adjustment” von Dajun Qian, Ming Jiang, Chunming Zhao, Xiaofu Wu, IEEE International Conference on Communications, 2008. ICC '08, 19. bis 23. Mai 2008, Seiten 1161–1165.
  • Nachfolgend wird der Bitumkehralgorithmus in groben Zügen beschrieben.
  • Ein binärer LDPC-Code (N, K) mit der Länge N und der Dimension K ist normalerweise durch eine Matrix H von Paritätsprüfungen definiert. H enthält N Spalten und M Zeilen, wobei M >= N – K ist. Jede Spalte von H entspricht einem Datenbit oder einem Paritätsbit, und jede Zeile entspricht einer Prüfsumme. Für den Entscheidungsvektor b eines beliebigen angenommenen Bits ist die Menge von Prüfsummen oder das Syndrom der Vektor s = bHT.
  • Beim Bitumkehralgorithmus berechnet der Decoder jede Paritätsprüfung und verwendet hierzu die Binäreingangsfolge b (d. h. die ausgelesene Flash-Seite) mit einfachen XOR-Operationen, d. h. s = bHT. Eine Paritätsprüfung ist erfüllt, wenn das entsprechende Bit in s 0 ist, die Prüfung Ist nicht erfüllt, wenn das Bit 1 ist. Der Aigorithmus legt anschließend fest, dass ein Bit umzukehren ist, wenn die Anzahl nicht erfüllter Prüfungen, bei denen das Bit einbezogen ist, einen festen Umkehrschwellenwert t überschreitet. Die umgekehrten Bits werden anschließend bei der nächsten Iteration des Decodierungsprozesses verwendet. Der Decodieralgorithmus stoppt, wenn entweder alle Paritätsprüfungen erfüllt sind oder ein vordefinierter maximaler Grenzwert der Iterationen erreicht ist. Ein Pseudocode für den resultierenden Bitumkehralgorithmus kann daher die folgenden Schritte enthalten:
    • i. Mithilfe von s = bHT die Paritätsprüfungen berechnen. Wenn alle diese Paritätsprüfungen erfüllt sind, die Decodierung stoppen.
    • ii. Anderenfalls die Anzahl nicht erfüllter Paritätsprüfungen zu jedem Bit feststellen. Jedes der Bits wiederum als Ziel ansehen.
    • iii. Wenn die Mehrheit der Paritätsprüfungsgleichungen mit einem Zielbit nicht erfüllt ist, dann dieses Bit vor der nächsten Decodierungsiteration umkehren.
    • iv. Die Schritte (i) bis (iii) wiederholen.
  • Der oben aufgeführte Algorithmus liefert ein befriedigendes Ergebnis bei der Decodierung von LDPC-Code, der auf einen binären symmetrischen Kanal geschrieben wurde. Es besteht jedoch eine Notwendigkeit, ein Verfahren bereitzustellen, mit dem die Codierung von LDPC-Code verbessert wird.
  • KURZER ÜBERBLICK ÜBER DIE ERFINDUNG
  • Aus einem ersten Blickwinkel betrachtet ist die Erfindung verkörpert als Verfahren zum Decodieren einer Folge von Bits, die nach einem binären asymmetrischen Kanal in einen Speicher, z. B. in einen Flash-Speicher, geschrieben werden, wobei die Folge von Bits durch einen Low-Density-Parity-Check-Code bzw. LDPC-Code codiert werden, wobei jedes Bit der Folge entsprechende durch den LDP-Code definierte Paritätsprüfungen hat und das Verfahren Folgendes umfasst:
    • – Bereitstellen einer Menge von Bitzuständen einschließlich eines ersten Zustands und eines zweiten Zustands und einer Menge von Bedingungen, wobei, wenn eine Bedingung erfüllt ist, ein Bitzustand zu ändern ist, die Menge von Bedingungen eine erste Bedingung zur Änderung eines Bitzustands vom ersten Zustand in den zweiten Zustand und eine zweite Bedingung zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand enthält, wobei sich die erste Bedingung und die zweite Bedingung voneinander unterscheiden,
    • – Lesen eines Wertes eines jeden Bits der Folge von Bits und entsprechend dem gelesenen Wert das Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge,
    • – für ein Zielbit der Folge von Bits das Auswerten einer Bedingung, wobei:
    • – die Bedingung gemäß einem Zustand des Zielbits aus der Menge von Bedingungen ausgewählt wird, und
    • – zum Auswerten der Bedingung ein Ergebnis der Berechnung der Paritätsprüfungen entsprechend dem Zielbit verwendet wird,
    • – Feststellen, dass die Bedingung erfüllt ist,
    • – Ändern des Zustands des Zielbits als Ergebnis der Tatsache, dass die Bedingung erfüllt ist, und
    • – Setzen des Wertes des Zielbits gemäß seinem Zustand.
  • Bei Ausführungsformen kann das Verfahren eines oder mehrere der folgenden Merkmale umfassen:
    • – der Schritt des Auswerten wird iterativ wiederholt, wobei das Zielbit bei jeder Iteration des Schritts des Auswertens ein anderes Bit der Folge ist;
    • – der Schritt des Auswertens wird iterativ wiederholt, bis das Ergebnis der Berechnung der Paritätsprüfungen anzeigt, dass alle Paritätsprüfungen erfüllt sind, oder bis eine maximale Anzahl von Iterationen erreicht ist;
    • – die Menge von Bitzuständen besteht aus dem ersten Zustand und dem zweiten Zustand, die Menge von Bedingungen besteht aus der ersten Bedingung und der zweiten Bedingung, im Schritt des Zuordnens jedes Bits wird ein Bit dem ersten Zustand zugeordnet, wenn ein Wert des gelesenen Bits 0 ist, dem zweiten Bit, wenn ein Wert des gelesenen Bits 1 ist, im Schritt des Setzens des Wertes des Zielbits wird der Wert des Zielbits auf 0 gesetzt, wenn das Zielbit dem ersten Zustand zugeordnet ist, und auf 1, wenn das Ziel Bit dem zweiten Zustand zugeordnet ist;
    • – die erste Bedingung ist erfüllt, sobald eine Mehrheit der dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, wohingegen die zweite Bedingung erfüllt ist, sobald alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind;
    • – die erste Bedingung ist erfüllt, sobald eine Anzahl von dem Zielbit entsprechenden Paritätsprüfungen, die nicht erfüllt sind, höher als ein erster Schwellenwert ist, wohingegen die zweite Bedingung erfüllt ist, sobald eine Anzahl von dem Zielbit entsprechenden Paritätsprüfungen, die nicht erfüllt sind, höher als ein zweiter Schwellenwert ist, wobei sich der erste Schwellenwert und der zweite Schwellenwert voneinander unterscheiden;
    • – die Menge von Bitzuständen enthält ferner einen dritten Zustand und einen vierten Zustand, die Menge von Bedingungen enthält eine erste Teilmenge von Bedingungspaaren, wobei es sich bei einer Bedingung eines Paares um eine Bedingung handelt, die einen Bitzustand von einem i-ten Zustand in einen j-ten Zustand eine Bedingung eines Paares ändern soll, es sich bei der anderen Bedingung des Paares um eine Bedingung handelt, die einen Bitzustand vom j-ten Zustand in den i-ten Zustand ändern soll, sich die Bedingungen eines Paares voneinander unterscheiden und die erste Bedingung und die zweite Bedingung ein Paar der ersten Teilmenge bilden, die Menge von Bedingungen enthält außerdem eine zweite Teilmenge von Bedingungspaaren, wobei es sich bei einer Bedingung eines Paares um eine Bedingung handelt, die einen Bitzustand von einem k-ten Zustand in einen l-ten ändern soll, es sich bei der anderen Bedingung des Paares um eine Bedingung handelt, die einen Bitzustand vom l-ten Zustand in den k-ten Zustand ändern soll und die Bedingungen eines Paares der zweiten Teilmenge identisch sind;
    • – die Menge von Bedingungen enthält ferner eine dritte Teilmenge, die mindestens eine Bedingung umfasst, um einen Bitzustand von einem m-ten Zustand in einen n-ten Zustand zu ändern, für den in der Menge von Bedingungen keine Bedingung zur Änderung eines Bitzustands vom m-ten Zustand in den n-ten Zustand vorhanden ist; Vokabular bearbeiten
    • – eine Bedingung ist erfüllt, sobald alle oder eine weniger als die Mehrheit oder eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, oder sobald alle dem Zielbit entsprechenden Paritätsprüfungen erfüllt sind;
    • – der erste Bitzustand entspricht einem hohen Vertrauen, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll, der zweite Zustand entspricht einem niedrigen Vertrauen, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll, der dritte Zustand entspricht einem hohen Vertrauen, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll, der vierte Zustand entspricht einem niedrigen Vertrauen, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll, und die erste Teilmenge von Bedingungen umfasst eine erste Bedingung, die erfüllt ist, wenn mindestens eine weniger als eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, die zweite Bedingung, die erfüllt ist, wenn alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, eine dritte Bedingung zur Änderung eines Bits vom dritten Zustand in den vierten Zustand, die erfüllt ist, wenn mindestens eine weniger als eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, eine vierte Bedingung zur Änderung eines Bits vom vierten Zustand in den dritten Zustand, die erfüllt ist, wenn alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, und die zweite Teilmenge von Bedingungen umfasst eine fünfte Bedingung zur Änderung eines Bitzustands vom zweiten Zustand in den vierten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, eine sechste Bedingung zur Änderung eines Bitzustands vom vierten Zustand in den zweiten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, und die dritte Teilmenge von Bedingungen umfasst eine siebte Bedingung zur Änderung eines Bitzustands vom ersten Zustand in den vierten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, und eine achte Bedingung zur Änderung eines Bitzustands vom dritten Zustand in den zweiten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist;
    • – das Berechnen der dem Zielbit entsprechenden Paritätsprüfungen wird gemäß den Werten von Bits der Folge durchgeführt, die durch entsprechende Bitzustände bestimmt sind.
  • Unter einem anderen Blickwinkel betrachtet ist die Erfindung als computerlesbares Speichermedium mit einem darauf aufgezeichneten Computerprogramm verkörpert, das Anweisungen zur Ausführung durch einen Computer umfasst, wobei die Anweisungen Mittel zum Durchführen des oben aufgeführten Verfahrens umfassen.
  • Unter einem weiteren Blickwinkel betrachtet ist die Erfindung als System verkörpert, das Folgendes umfasst:
    • – einen Speicher, der zum Schreiben einer Folge von Bits geeignet ist, die mithilfe eines LDPC-Codes codiert wurden, und
    • – Mittel zum Durchführen des oben genannten Verfahrens.
  • Bei Ausführungsformen ist der Speicher ein Flash-Speicher, der vorzugsweise auf der Floating-Gate-Transistortechnologie beruht.
  • Weitere Merkmale und Vorteile der Erfindung werden anhand der folgenden Beschreibung von Ausführungsformen der Erfindung klar, die nicht als einschränkende Beispiele angegeben sind, wobei auf die beigefügten, nachfolgend aufgeführten Zeichnungen Bezug genommen wird.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die 1 bis 2 zeigen Beispiele von binären asymmetrischen Kanälen.
  • 3 zeigt einen Ablaufplan eines Beispiels für ein Verfahren zum Decodieren einer Bitfolge.
  • Die 4 bis 5 zeigen eine Darstellung von Mengen von Zuständen und Bedingungen zweier Beispiele eines Verfahrens zum Decodieren einer Bitfolge.
  • 6 zeigt Ergebnisse von Simulationen von Verfahren zum Decodieren einer Bitfolge.
  • 7 ist ein Blockschaltbild der Computerhardware gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
  • Es wird ein mittels Computer realisiertes Verfahren zum Decodieren einer Folge von Bits bereitgestellt, die in einen Speicher geschrieben wurden. Die Folge von Bits ist mit einem Low-Density-Parity-Check-Code (bzw. LDPC-Code) codiert, wobei die Bits der Folge entsprechende Paritätsprüfungen haben, die durch den LDPC-Code definiert sind. Das Verfahren umfasst das Bereitstellen einer Menge von Bitzuständen, zu denen ein erster Zustand und ein zweiter Zustand gehören, und das Bereitstellen einer Menge von Bedingungen. Wenn eine Bedingung erfüllt ist, muss der Zustand eines Bits geändert werden. Die Menge von Bedingungen enthält mindestens eine erste Bedingung und eine zweite Bedingung. Die erste Bedingung dient zur Änderung eines Bitzustands vom ersten Zustand in den zweiten Zustand. Die zweite Bedingung dient zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand. Die erste Bedingung und die zweite Bedingung unterscheiden sich. Das Verfahren umfasst das Lesen des Wertes eines jeden Bits der in den Speicher geschriebenen Folge von Bits und entsprechend den gelesenen Werten das Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge. Das Verfahren umfasst das Auswerten eines Zustands für ein Zielbit der Folge von Bits. Die auszuwertende Bedingung wird gemäß dem Zustand des Zielbits aus der Menge von Bedingungen ausgewählt. Der Schritt des Auswertens nutzt ein Ergebnis der entsprechend dem Zielbit durchgeführten Berechnung der Paritätsprüfungen. Das Verfahren umfasst Schritte zum Feststellen, dass die Bedingung erfüllt ist, und zum Ändern des Zustands des Zielbits als Folge der Tatsache, dass die Bedingung erfüllt ist. Das Verfahren kann anschließend den Wert des Zielbits gemäß seinem Zustand setzen. Das Verfahren wird vorzugsweise mit jedem Bit der Folge gelesener Bits iterativ wiederholt. Schließlich wird der Wert jedes Bits der Folge entsprechend seinem jeweiligen Zustand gesetzt. Ein derartiges Verfahren stellt eine leistungsfähigere Lösung zum Decodieren einer Folge von Bits bereit, die mithilfe eines LDPC-Codes codiert wurden, als der klassische Bitumkehralgorithmus, wobei die Komplexität nur geringfügig zunimmt.
  • Durch das Decodieren einer Folge von Bits, die in einen Speicher geschrieben wurden, soll erreicht werden, dass das Verfahren so gut wie möglich in die Nähe der Folge von Bits gelangt, die geschrieben werden soll. Das Decodierverfahren kann Teil eines umfangreicheren Verfahrens sein, das nicht nur das Decodieren der Folge von Bits beinhaltet, sondern auch die Interpretation der Folge von Bits nach dem Decodieren, z. B. mithilfe eines Wörterbuchs, das Bitfolgen des LDPC-Codes Wörtern zugeordnet.
  • Nachdem die Folge von Bits mithilfe eines LDPC-Codes codiert wurde, d. h., bei der Folge von Werten der zu schreibenden Folge von Bits handelt es sich um eine vom LDPC-Code zugelassene Folge, haben die Bits der Folge entsprechende Paritätsprüfungen, die durch den LDPC-Code definiert wurden, wie aus der LDPC-Codierung an sich bekannt ist. In den folgenden Erläuterungen ist die Folge durch (b1, ..., bN) wiedergegeben. Bei mindestens einigen der Bits bi der Folge gibt es Operationen (d. h. Paritätsprüfungen) unter Einbeziehung von bi und anderen Bits, z. B. J-Operationen unter Einbeziehung von jeweils k(j) anderen Bits (b1 i, ..., bk(j) i) wobei j von 1 bis J reicht, für die ein erwartetes Ergebnis vorhanden ist. Bei den Operationen handelt es sich um XOR-Operationen, die als bi + b1 i + +bk(j) i geschrieben werden können und von denen erwartet wird, dass sie gleich 0 sind. In den folgenden Erläuterungen kann sich eine Paritätsprüfung auf das Ergebnis der Operation beziehen. Eine Paritätsprüfung gilt als erfüllt, wenn sie gleich dem erwarteten Wert ist, und sie gilt als nicht erfüllt, wenn sie gleich einem nicht erwarteten Wert ist.
  • Das Verfahren umfasst das Bereitstellen einer Menge von Bitzuständen mit mindestens zwei unterschiedlichen Zuständen, zu denen ein erster Zustand und ein zweiter Zustand gehören, und das Bereitstellen einer Menge von Bedingungen. Wenn eine Bedingung erfüllt ist, muss der Zustand eines Bits geändert werden. Die Menge von Bedingungen umfasst mindestens zwei Bedingungen, zu denen eine erste Bedingung und eine zweite Bedingung gehören. Bei der ersten Bedingung handelt es sich um eine Bedingung, die zur Änderung eines Bitzustands vom ersten Zustand in den zweiten Zustand dient. Bei der zweiten Bedingung handelt es sich um eine Bedingung, die zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand dient. Die erste Bedingung und die zweite Bedingung unterscheiden sich. Ein Zustand ist eine Zwischenvariable, die bei diesem Verfahren verwendet wird und zu einem Bit gehört. Der Zustand eines Bits muss mit dem Wert eines Bits verknüpft sein und ermöglicht dadurch den Abruf des Wertes des Bits, wie nachfolgend anhand eines Beispiels erläutert wird. Eine Bedingung ist eine Voraussetzung zur Änderung des Zustands eines Bits. Wenn bei der Auswertung festgestellt wird, dass eine Bedingung erfüllt ist, muss der Zustand eines Bits von einem Zustand in einen anderen geändert werden. Bei einem Bit bi, dessen Zustand si lautet, können die Bedingungen je nach bi und/oder si. Boole'sche Funktionen sein. Wenn das Ergebnis der Auswertung der Funktion Wahr (bzw. Falsch) ist, gilt die Bedingung als erfüllt (bzw. nicht erfüllt). In diesem Fall bedeutet die Tatsache, dass sich die erste Bedingung und die zweite Bedingung voneinander unterscheiden, dass mindestens zwei Funktionen so gestaltet sind, dass sie bei denselben Eingangswerten ein unterschiedliches Ergebnis liefern.
  • Das Verfahren umfasst das Lesen des Wertes eines jeden Bits der in den Speicher geschriebenen Folge von Bits und entsprechend den gelesenen Werten das Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge. Der Wert eines Bits wird in der herkömmlichen Art und Weise festgelegt: Er entspricht seinen Logikpegel und ist entweder gleich 1 oder gleich 0. Beispiele für die Art und Weise, in der das Zuordnen durchgeführt wird, werden später gegeben.
  • Das Verfahren umfasst das Auswerten einer Bedingung, die entsprechend dem Zustand des Zielbits b i / t aus der Menge von Bedingungen ausgewählt wurde, wobei es sich bei dem Zielbit um ein Bit der Folge handelt, z. B. um das erste Bit der Folge. Das Durchführen der Auswahl entsprechend dem Zustand s i / t des Zielbits gewährleistet, dass Bedingungen nicht ausgewertet werden, die den Zustand s i / t nicht in einen anderen Zustand ändern sollen, d. h. Bedingungen, die einen Zustand s ≠ s i / t nicht in einen anderen Zustand ändern sollen. Dadurch wird verhindert, dass unnötige Bedingungen ausgewertet werden, und das Verfahren wird beschleunigt. Bei Ausführungsformen beinhaltet der Schritt des Auswertens das Berechnen der Paritätsprüfungen entsprechend dem Zielbit. Normalerweise wird das Berechnen der Paritätsprüfungen nach der Auswahl des Zielbits durchgeführt, zu dem eine Bedingung ausgewertet werden soll. Bei anderen Ausführungsformen kann das Berechnen der Paritätsprüfungen entsprechend allen Bits der Folge jedoch durchgeführt werden, bevor ein bestimmtes Zielbit ausgewählt wird, d. h. auf der Grundlage der aktuellen Bitwerte, die durch die entsprechenden Zustände der betreffenden Bits bestimmt sind. Daher kann der Schritt des Auswertens allgemein als Nutzung eines Ergebnisses der Berechnung der Paritätsprüfungen (mindestens) entsprechend dem Zielbit betrachtet werden. Insbesondere können Vergleiche hinsichtlich der Anzahl nicht erfüllter und/oder erfüllter Paritätsprüfungen vorgenommen werden. Beispielsweise kann die Anzahl nicht erfüllter Paritätsprüfungen und/oder erfüllter Paritätsprüfungen mit einem Schwellenwert verglichen werden. Auf diese Weise ermöglicht die Auswertung die schnelle Durchführung der Decodierung.
  • Wenn bei der Auswertung der Bedingung festgestellt wird, dass sie erfüllt ist, ändert das Verfahren infolge der erfüllten Bedingung den Zustand des Zielbits. Dadurch ist gewährleistet, dass dem Zielbit am Ende des Verfahrens der am besten geeignete Zustand zugewiesen wird. Das Verfahren kann anschließend entsprechend dem Zustand des jeweiligen Bits den Wert des Zielbits und möglicherweise jedes Bits der Folge setzen. Dieser Schritt läuft auf die Entscheidung hinaus, dass der Wert des Bits geschrieben werden soll, unabhängig davon, was gelesen wurde. Die Möglichkeit, Bits zu ändern und den Bits den am besten geeigneten Zustand zuzuordnen ermöglicht, wenn der Wert jedes Bits gesetzt wird, (zumindest teilweise) den Abruf des „korrekten” Wertes des Bits.
  • Das Berechnen der Paritätsprüfungen kann gemäß dem Zustand des Zielbits und gemäß dem Zustand der anderen Bits durchgeführt werden, die entsprechend dem Zielbit in die Paritätsprüfungen einbezogen sind. In der oben angegebenen Formel bi + b1 i + ... + bk(j) i zur Berechnung einer Paritätsprüfung kann es sich bei den verwendeten Werten bi, b1 i, ..., bk(j) i um die Werte handeln, die gemäß dem entsprechenden Bitzustand bei jedem Bit gesetzt werden müssen. Dies wird später beispielhaft erläutert.
  • Wie zu erkennen ist, müssen keine komplizierten Gleichungen gelöst werden. Daher ist das Verfahren wie der dem Stand der Technik entsprechende Bitumkehralgorithmus nicht sehr kompliziert und besonders schnell.
  • Beim klassischen Bit Umkehralgorithmus nach dem Stand der Technik wird der Wert eines Bits umgekehrt, sobald die Mehrheit der dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist. Mit anderen Worten: Es gibt nur eine Bedingung. Beim vorliegenden Verfahren wird eine Menge von Bedingungen bereitgestellt, bei denen sich mindestens zwei voneinander unterscheiden. Das Vorhandensein unterschiedlicher Bedingungen ermöglicht z. B. die vorteilhafte Nutzung der Asymmetrie des Kanals. Daher hängt die Entscheidung darüber, ob ein Bit umgekehrt wird oder nicht, vom aktuellen Zustand des Bits ab. Bei der Wiederholung mit den Bits gewährleistet das Verfahren, dass die am Ende festgestellte Fehlerrate (wobei die Fehlerrate den Unterschied zwischen der Folge von Bits, die das Verfahren nach dem Schritt des Setzen des Wertes des Zielbits und/oder der anderen Bits der Folge ausgibt, und der Folge von Bits wiedergibt, die geschrieben werden sollen) niedriger als beim klassischen Bitumkehralgorithmus ist. Daher verbessert das Verfahren den Bitumkehralgorithmus (d. h., es senkt die Fehlerrate) bei lediglich einer linearen Änderung der Komplexität.
  • Wie oben geschildert kann der Speicher auf einen binären asymmetrischen Kanal folgen. Dabei kann es sich z. B. um einen Flash-Speicher handeln. In diesem Fall verringert unter Bezugnahme auf die 1 und 2 die Asymmetrie des Verfahrens (d. h. die Tatsache, dass sich zwei Bedingungen der Menge voneinander unterscheiden) die Fehlerrate besonders stark. Die Bedingungen können daher an den Zustand des Bits angepasst werden. Der Grundgedanke besteht darin, dass eine gelesene 1 eine hohe Wahrscheinlichkeit bedeutet, dass das zum Schreiben vorgesehene Bit eine 1 war. Tatsächlich ist der Kanal so gestaltet, dass eine 0 mit geringer Wahrscheinlichkeit fälschlicherweise in eine 1 umgewandelt wird. Im Normalfall ist es besser, dass eine Bedingung zur Änderung einer 1 in eine 0 nicht mit der Bedingungen zur Änderung einer 0 in eine 1 identisch ist. Die Menge von Bedingungen mit zwei unterschiedlichen Bedingungen gewährleistet, dass dies überprüft wird. Im Prinzip können Bitumkehralgorithmen ohne Abwandlung in binären asymmetrischen Kanälen (BAC) verwendet werden, leiden aber wegen der speziellen Eigenart von BAC unter einer erheblichen Leistungsverschlechterung, insbesondere dann, wenn b relativ groß ist, wie dies bei Flash-Speicher der Fall ist.
  • Unter Bezugnahme auf 3 zeigt diese Figur einen Ablaufplan, der eine Ausführungsform des Verfahrens veranschaulicht. Zunächst wird eine Menge 10 von Bitzuständen bereitgestellt, die z. B. einen ersten Zustand in einen zweiten Zustand enthält. Außerdem wird eine Menge 20 von Bedingungen bereitgestellt. Wie bereits erwähnt ist eine Bedingung so ausgelegt, dass der Zustand eines Bits geändert werden muss, wenn bei der Auswertung der Bedingung festgestellt wird, dass sie erfüllt ist. Die Bedingungen enthalten mindestens Folgendes:
    • – eine erste Bedingung, d. h. ob ein Bitzustand vom ersten Zustand in den zweiten Zustand geändert werden soll, und
    • – eine zweite Bedingung zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand. Die zweite Bedingung unterscheidet sich jedoch von der ersten Bedingung.
  • Wie dargestellt wird der Wert jedes Bits der geschriebenen Folge von Bits gelesen. Das entsprechende Bit wird anschließend gemäß dem Wert des gelesenen Bits einem jeweiligen Zustand zugeordnet, Schritt S100.
  • Anschließend wird zu einem bestimmten Bit 30 der Folge eine Bedingung ausgewertet, Schritt S200. Zu beachten ist, dass:
    • – die Bedingung gemäß dem Zustand des Zielbits aus der Menge 20 von Bedingungen ausgewählt wird; und
    • – wie oben erläutert zum Auswerten der Bedingung ein Ergebnis der Berechnung der Paritätsprüfungen entsprechend dem Zielbit verwendet wird.
  • Zu beachten ist, dass alle Paritätsprüfungen berechnet werden können, bevor ein Zielbit 30 ausgewählt wird. Umgekehrt können die dem Zielbit entsprechenden Paritätsprüfungen nach der Auswahl des Zielbits und vor der Auswertung der Bedingung an sich berechnet werden. Dies wird weiter unten eingehender erläutert.
  • Als Nächstes wird, wenn in Schritt S300 festgestellt wurde, dass die ausgewählte Bedingung erfüllt ist, der Zustand des Zielbits dementsprechend geändert (Schritt S400). Anderenfalls wird der Zustand des Zielbits nicht geändert, Schritt S300a.
  • Abschließend kann der Wert des Zielbits gemäß dem jeweiligen Zustand des Bits gesetzt werden, Schritt S500.
  • Vorzugsweise wird der Prozess iterativ durchgeführt, siehe die Darstellung in 3, Schritt S600. Das Zielbit 30 ist anschließend bei jeder Iteration ein anderes Bit, z. B. das nächste Bit in der Folge, sodass alle Bits in der Folge verarbeitet werden. Jede Iteration umfasst das Auswerten einer passend ausgewählten Bedingung, das Ermitteln, ob die Bedingung erfüllt ist, und bei Notwendigkeit das Ändern des Zustands des gegenwärtig verarbeiteten Bits.
  • Bei einer Ausführungsform erfordert jede Iteration das Berechnen der Paritätsprüfungen entsprechend dem Zielbit. Wie bereits erwähnt werden beim Berechnen der Paritätsprüfungen Bitwerte verwendet, die aus den aktuellen Zuständen von Bits der Folge abgerufen werden können. Anschließend kann der Wert des aktuellen Zielbits bei Notwendigkeit gemäß seinem gegenwärtigen Zustand (der bei Abschluss der Iteration erhalten wird) gesetzt werden. Eine derartige Ausführungsform entspricht dem Ablaufplan aus 3.
  • Bei einer Variante werden zuerst Paritätsprüfungen gemäß den aktuellen Werten von Bits in der Folge berechnet, die selbst durch die entsprechenden Zustände bestimmt werden. Anschließend können alle Bits der Sequenz iterativ verarbeitet werden, d. h., jede Iteration umfasst das Auswerten einer passend ausgewählten Bedingung, das Ermitteln, ob die Bedingung erfüllt ist, und bei Notwendigkeit das Ändern des Zustands des gegenwärtig verarbeiteten Bits. Schließlich wird nach Abschluss der Bit-Iteration der Wert jedes Bits der Folge gemäß dem aktuellen Zustand des einzelnen Bits gesetzt. Dies hat den Vorteil, dass Paritätsprüfungen bei der Bit-Iteration nicht zu jedem Bit neu berechnet werden müssen, wodurch Zeit eingespart wird.
  • In allen Fällen nutzt der Auswertungsschritt ein Ergebnis der entsprechend dem Zielbit durchgeführten Berechnung der Paritätsprüfungen.
  • Bei Ausführungsformen wird der Prozess iterativ fortgesetzt, bis alle Paritätsprüfungen erfüllt sind, d. h., anhand des Ergebnisses der Paritätsprüfungsberechnung. Bei Varianten wird der Prozess iterativ durchgeführt, bis zur Gewährleistung einer Konvergenz eine maximale Anzahl von Iterationen erreicht ist.
  • Demzufolge gewährleistet die Iteration, dass die meisten der Bits der Folge am Ende dem am besten passenden Zustand zugeordnet sind. Daher sind im Schritt zum Setzen der Werte der Bits die gesetzten Bitwerte wahrscheinlich die exaktesten.
  • Im Folgenden werden zwei Ausführungsformen des Verfahrens unter Bezugnahme auf die 4 und 5 erörtert, die die praktische Realisierung der jeweiligen Mengen von Bitzuständen und Bedingungen beispielhaft erläutern.
  • Im Beispiel aus 4 (das auch als „Abgewandelter Bitumkehralgorithmus” bezeichnet wird), besteht die Menge von Zuständen aus dem ersten Zustand S1 und dem zweiten Zustand S2. Mit anderen Worten: Es sind hier nur zwei Bitzustände vorhanden. Dies ermöglicht eine eineindeutige Entsprechung zwischen einem Zustand und einem Wert eines Bits, wobei vorausgesetzt wird, dass die Bits Binärwerte haben, z. B. 1 oder 0 (diese wird bei der folgenden Betrachtung berücksichtigt). Beispielsweise entspricht S1 der 0, und S2 entspricht der 1. Die Menge von Bedingungen besteht aus der ersten Bedingung C1 und der zweiten Bedingung C2. Beim Zuordnen jedes Bits zu einem jeweiligen Zustand wird ein Bit dem ersten Zustand S1 zugeordnet, wenn der Wert des gelesenen Bits 0 beträgt, und ein Bit wird dem zweiten Zustand S2 zugeordnet, wenn der Wert des gelesenen Bits 1 beträgt. Wie oben beschrieben geht die Darstellung von zwei Zuständen aus. Die erste Bedingung C1 dient zur Änderung eines Bitzustands von S1 in S2, und die zweite Bedingung C2 dient zur Änderung eines Bitzustands von S2 in S1. Die erste Bedingung und die zweite Bedingung unterscheiden sich jedoch voneinander, um z. B. von der Asymmetrie des Kanals zu profitieren. Nach Abschluss des Auswertungsprozesses wird der Wert des Zielbits auf 0 gesetzt, wenn es sich beim Zustand des Zielbits um den ersten Zustand S1 handelt, und der Wert des Zielbits wird auf 1 gesetzt, wenn es sich beim Zustand des Zielbits um den zweiten Zustand S2 handelt. Ein derartiges Verfahren zum Decodieren ist besonders unkompliziert. Daher handelt es sich in diesem Beispiel bei den Zuständen S1 und S2 um Zwischenvariablen, und es besteht eine perfekte Entsprechung zwischen Bitwerten und Zuständen.
  • Genauer betrachtet kann die erste Bedingung C1 erfüllt sein, sobald die Mehrheit der dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist oder sobald die Anzahl nicht erfüllter Paritätsprüfungen, die dem Zielbit entsprechen, größer als ein erster Schwellenwert t1 ist. Die zweite Bedingung C2 kann erfüllt sein, sobald alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind oder sobald die Anzahl nicht erfüllter Paritätsprüfungen, die dem Zielbit entsprechen, größer als ein zweiter Schwellenwert t2 ist. Sofern sie verwendet werden, unterscheiden sich der erste Schwellenwert t1 und der zweite Schwellenwert t2 voneinander. Normalerweise ist t1 < t2, da S1 der 0 und S2 der 1 entspricht. Alternativ können Verhältniswerte bei den Vergleichen verwendet werden. Im Geltungsbereich des oben beschriebenen Verfahrens sind viele andere geeignete Bedingungen vorstellbar. Im Allgemeinen kann eine Bedingung auch erfüllt sein, sobald alle oder eine weniger als die Mehrheit oder eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, oder sobald alle dem Zielbit entsprechenden Paritätsprüfungen erfüllt sind. Andere Arten von Bedingungen werden unter Bezugnahme auf das zweite Beispiel erörtert. Die für ein beliebiges der zwei Beispiele geltenden Bedingungen können auch für das andere Beispiel gelten. Die Werte der Schwellenwerte können von den Werten a und b des Kanals abhängen. Dadurch ist die Anpassung des Verfahrens an den Speicher gewährleistet, an dem das Verfahren durchgeführt wird.
  • Das zweite Beispiel der Durchführung des Verfahrens (das auch als „2-Bit-Bitumkehralgorithmus” bezeichnet wird) wird unter Bezugnahme auf 5 erörtert. Wie in 5 beispielhaft erläutert, kann die Menge von Bitzuständen ferner einen dritten Zustand S3 und einen vierten Zustand S4 enthalten. Die Menge von Bedingungen kann beispielsweise eine erste Teilmenge von Bedingungspaaren wie z. B. {(C1, C2), (C3, C4)} enthalten. Formal ist eine Bedingung (C1 oder C3) eines Paares (C1, C2) oder (C3, C4) eine Bedingung zur Änderung eines Bitzustands von einem i-ten Zustand in einen j-ten Zustand. Die andere Bedingung (C2 oder C4) des Paares ist eine Bedingung zur Änderung eines Bitzustands vom j-ten Zustand in den i-ten Zustand. Hierbei unterscheiden sich die Bedingungen eines Paares voneinander; die erste Bedingung C1 und die zweite Bedingung C2 bilden ein Paar (C1, C2) der ersten Teilmenge {(C1, C2), (C3, C4)}. Der i-te Zustand kann S1 oder S3 sein, und der j-te Zustand kann S2 bzw. S4 sein.
  • Bei dem Beispiel aus 5 enthält die Menge von Bedingungen auch eine zweite Teilmenge von Bedingungspaaren wie z. B. {(C5, C6)}, wobei eine Bedingung C5 des Paares {(C5, C6)} eine Bedingung zur Änderung eines Bitzustands von einem k-ten Zustand (z. B. S2) in einen l-ten Zustand (z. B. S4) und die andere Bedingung C6 eine Bedingung zur Änderung eines Bitzustands vom l-ten Zustand in den k-ten Zustand ist. Im Gegensatz zur ersten Teilmenge von Bedingungspaaren sind die Bedingungen hierbei identisch. Bei dem Fall aus 5 enthält die zweite Teilmenge nur ein Paar (C5, C6). In diesem Fall können die Parameter k und l daher die Werte 5 oder 6 annehmen. Im Allgemeinen kann die zweite Teilmenge jedoch mehr als ein Paar enthalten, z. B. wenn mehr als vier Zustände vorhanden sind. Ein derartiges Verfahren verfeinert die Übergänge durch die Einführung von Zwischenzuständen. Die erste Teilmenge führt eine Asymmetrie zwischen unterschiedlichen Zuständen ein. Durch die Kombination aus Asymmetrie und Zwischenzuständen lässt sich ein Endergebnis erreichen, das eine größere Ähnlichkeit zu der Folge aufweist, die geschrieben werden soll.
  • Die Menge von Bedingungen kann ferner eine dritte Teilmenge wie z. B. {(C7, C8)} enthalten, die mindestens eine Bedingung C7 oder C8 enthält, um einen Bitzustand von einem m-ten Zustand (z. B. S1 oder S3) in einen n-ten Zustand (z. B. S4 bzw. S2) zu ändern. Zu beachten ist, dass es in diesem Fall keine Gegenpart-Bedingung gibt, d. h. eine Bedingung zur Änderung eines Bitzustands vom m-ten Zustand in den n-ten Zustand. Dadurch wird eine weitere Asymmetrie in das Verfahren eingeführt, und die Genauigkeit in der Praxis wird weiter verbessert.
  • Wie in der folgenden Tabelle I und in 5 dargestellt, kann der erste Bitzustand S1 einem hohen Vertrauen entsprechen, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll. Der zweite Zustand S2 kann einem niedrigen Vertrauen entsprechen, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll. Der dritte Zustand S3 kann einem hohen Vertrauen entsprechen, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll. Der vierte Zustand kann einem niedrigen Vertrauen entsprechen, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll. In einem derartigen Fall kann beim Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge ein Bit dem Zustand S1 oder S2 zugeordnet werden, wenn sein gelesener Wert 0 beträgt, und ein Bit kann S3 oder S4 zugeordnet werden, wenn sein gelesener Wert 1 beträgt. In dem Schritt, in dem der Wert jedes Bits der Folge gesetzt wird, kann der Wert auf 0 gesetzt werden, wenn der Zustand des Bits S1 oder S2 lautet, und der Wert kann auf 1 gesetzt werden, wenn der Zustand S3 oder S4 lautet. Wie im Beispiel aus 4 kann daher eine Entsprechung zwischen den Zuständen und den zwei Werten 0 oder 1 bestehen, die ein Bit annehmen kann (was im Allgemeinen der Fall ist).
  • Diese Entsprechung kann ferner in der oben zur Berechnung einer Paritätsprüfung angegebenen Formel bi + b1 i + ... + bk(j) i verwendet werden. Tatsächlich können die verwendeten Werte 0 betragen, wenn der Zustand des Bits bi, b1 i, ..., bk(j) i S1 oder S2 lautet, und die Werte können 1 betragen, wenn der Zustand des Bits bi, b1 i, ..., bk(j) i S3 oder S4 lautet. Wie in diesem zweiten Beispiel und im ersten Beispiel gezeigt, kann das Berechnen der dem Zielbit entsprechenden Paritätsprüfungen im Normalfall anhand von Werten der Bits der Folge durchgeführt werden, die z. B. durch entsprechende Bitzustände bestimmt sind.
  • Im zweiten Beispiel des Verfahrens kann die Menge von Zuständen aus vier Zuständen bestehen, wobei die Bitzustände in diesem Fall bei jedem Zustand durch eine Zwei-Bit-Logik realisiert sind, wodurch im Vergleich zum ersten Beispiel ein Mehraufwand entsteht.
  • Anzumerken ist, dass das zweite Beispiel des Verfahrens durch eine entsprechende Abwandlung der Menge von Bedingungen bei anderen Kanalmodellen wie z. B. bei binären symmetrischen Kanälen (BSC) verwendet werden kann.
  • Die folgende Tabelle I enthält eine umfangreiche Menge von Bedingungen und eine entsprechende Menge von Zuständen für ein bestimmtes Beispiel. Es soll noch einmal erwähnt werden, dass die Realisierung derartiger Mengen von Zuständen und Bedingungen relativ unkompliziert ist und in der Praxis zu guten Ergebnissen führt.
    Bedingung Nr. Ändert ... In ... Bedingungsinhalt
    C9 S1 S1 Wenn alle zugeordneten Paritätsprüfungen erfüllt sind
    C1 S1 S2 Wenn mindestens eine zugeordnete Paritätsprüfung nicht erfüllt und die Anzahl nicht erfüllter Prüfungen kleiner als die Mehrheit ist
    C2 S2 S1 Wenn alle zugeordneten Paritätsprüfungen erfüllt sind
    C7 S1 S4 Wenn eine Mehrheit aller zugeordneten Paritätsprüfungen nicht erfüllt ist
    C8 S3 S2 Wenn eine Mehrheit aller zugeordneten Paritätsprüfungen nicht erfüllt ist
    C10 S3 S3 Wenn alle zugeordneten Paritätsprüfungen erfüllt sind
    C3 S3 S4 Wenn mindestens eine zugeordnete Paritätsprüfung nicht erfüllt und die Anzahl nicht erfüllter Prüfungen kleiner als die Mehrheit ist
    C4 S4 S3 Wenn alle zugeordneten Paritätsprüfungen erfüllt sind
    C5 S4 S2 Wenn eine Mehrheit aller zugeordneten Paritätsprüfungen nicht erfüllt ist
    C6 S2 S4 Wenn eine Mehrheit aller zugeordneten Paritätsprüfungen nicht erfüllt ist
    Tabelle I: Umfangreiche Menge von Bedingungen und die entsprechende Menge von Zuständen bei einer Ausführungsform
  • 6 zeigt Simulationsergebnisse für einen willkürlich gewählten normalen LDPC-Code. Die Codelänge beträgt 1908, die Spaltengewichtung beträgt 4 und die Quote 0,8889. Die Ergebnisse zeigen die Paketfehlerrate (Frame Error Rate, FER) in Abhängigkeit von der Übergangswahrscheinlichkeit a bei vier unterschiedlichen Decodierverfahren. Der Wert von a wird im binären asymmetrischen Kanal aus 1 verwendet, und b hat einen Wert von 10. Die Paketfehlerrate ist der globale Fehler, der nach der Durchführung eines Decodierverfahrens verbleibt. Anders ausgedrückt handelt es sich um den Unterschied zwischen der Bitfolge, die ein Decodierverfahren ausgibt, und der Bitfolge, die geschrieben werden soll. Zwei dem Stand der Technik entsprechende Decodierverfahren sind der Gallager-B-Algorithmus und der normale Bitumkehralgorithmus, der oben bereits vorgestellt wurde. Bei einem der beiden weiteren Decodierverfahren handelt es sich um den „Abgewandelten Bitumkehralgorithmus”, der dem ersten Beispiel entspricht und bei dem t1 und t2 gemäß a und b gewählt werden. Beim anderen der zwei weiteren Verfahren handelt es sich um den „Zwei-Bit-Bitumkehralgorithmus” entsprechend der Tabelle I.
  • Wie aus den Ergebnissen zu entnehmen ist, stellen sowohl der „Zwei-Bit-Bitumkehralgorithmus” als auch der „Abgewandelte Bitumkehralgorithmus” für alle Werte von a, zu denen Simulationen angegeben sind, eine im Vergleich zu Algorithmen nach dem Stand der Technik verbesserte Decodierung bereit, da die endgültige Paketfehlerrate jedes Mal kleiner ist.
  • Ein Computerprogramm kann Anweisungen zur Ausführung durch ein computerisiertes System umfassen, wobei die Anweisungen Mittel zum Durchführen eines Teils des Verfahrens oder des gesamten Verfahrens umfassen. Ein derartiges Computerprogramm kann auf einem computerlesbaren Speichermedium aufgezeichnet sein, z. B. auf einer CD, einer Festplatte oder in einem Flash-Speicher.
  • Ein System kann einen Speicher umfassen, der zum Schreiben einer Folge von Bits geeignet ist, die mithilfe eines LDPC-Codes codiert wurden, sowie Mittel, die in geeigneter Weise mit dem Speicher zum Durchführen des oben erwähnten Decodierverfahrens verbunden sind. Bei dem Speicher kann es sich um einen Flash-Speicher handeln, der vorzugsweise auf der Floating-Gate-Transistortechnologie beruht. Ein derartiges System ist durch eine besondere Robustheit zur Speicherung von Daten gekennzeichnet. Tatsächlich können abgewandelte/verloren gegangene Daten dank der Mittel zum Durchführen des Decodierverfahrens schnell und exakt abgerufen werden.
  • Es versteht sich, dass die vorliegende Erfindung als System, Verfahren oder Computerprogrammprodukt verkörpert sein kann. Insbesondere kann die Erfindung als ein mittels Computer realisiertes Verfahren verkörpert sein. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständig in Hardware realisierten Ausführungsform, einer vollständig in Software realisierten Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, in der Software- und Hardwareaspekte kombiniert sind, die im vorliegenden Dokument allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise und ohne Beschränkung auf die folgende Aufzählung ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder beliebige Kombinationen des Vorstehenden gehören. Zu den detaillierteren Beispielen (eine nicht erschöpfende Liste) computerlesbarer Speichermedien zählen unter anderem folgende: elektrische Verbindung mit einer oder mehreren Leitungen, Computerdiskette, Festplatte, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), Lichtwellenleiter, Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), optische Speichereinheit, magnetische Speichereinheit oder beliebige geeignete Kombinationen des Vorstehenden. Alle vorher gehend genannten Elemente können durch speziell entwickelte ASICs (Application Specific Integrated Circuits, anwendungsspezifische integrierte Schaltungen) ergänzt oder in diesen enthalten sein. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Ein computerlesbares Signalmedium kann unter anderem ein im Basisband oder als Teil einer Trägerwelle übertragenes Datensignal mit darin verkörpertem computerlesbarem Programmcode sein. Ein derartiges übertragenes Signal kann eine beliebige Vielfalt von Formen annehmen, darunter und ohne Beschränkung auf die Aufzählung eine elektromagnetische oder optische Form oder beliebige geeignete Kombinationen davon. Ein computerlesbares Signalmedium kann ein beliebiges computerlesbares Medium sein, bei dem es sich nicht um ein computerlesbares Speichermedium handelt und das ein Programm übertragen, senden oder transportieren kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung jedes beliebigen geeigneten Mediums, darunter und ohne Beschränkung auf die Aufzählung, drahtlose oder drahtgebundene Medien, Lichtwellenleiter, HF usw., oder unter Verwendung beliebiger geeigneter Kombinationen des Vorstehenden übertragen werden.
  • Computerprogrammcode zur Ausführung von Operationen bei Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder Ähnlichem und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • 7 ist ein Blockschaltbild der Computerhardware gemäß einer Ausführungsform der Erfindung. Ein Computersystem (501) gemäß einer Ausführungsform der Erfindung enthält eine CPU (504) und einen Hauptspeicher (502) die mit einem Bus (500) verbunden sind. Der Bus (500) ist mit einer Anzeigesteuereinheit (512) verbunden, die mit einer Anzeigeeinheit (514) wie z. B. mit einem LCD-Monitor verbunden ist. Die Anzeigeeinheit (514) dient zur Anzeige von Daten über ein Computersystem. Der Bus (500) ist außerdem über eine Einheitensteuereinheit (506) wie z. B. eine IDE- oder eine SATA-Steuereinheit mit einer Speichereinheit wie z. B. mit einer Festplatte (508) oder einer DVD (510) verbunden. Ferner ist der Bus (500) über eine Tastatur/Maus-Steuereinheit (520) oder eine USB-Steuereinheit (nicht gezeigt) mit einer Tastatur (522) und einer Maus (524) verbunden. Darüber hinaus ist der Bus mit einer Datenaustausch-Steuereinheit (518) verbunden, die z. B. mit einem Ethernet-Protokoll kompatibel ist. Die Datenaustausch-Steuereinheit (518) dient zur Herstellung einer physischen Verbindung zwischen dem Computersystem (501) und einem Netzwerk (516).
  • Aspekte der vorliegenden Erfindung sind oben unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen realisiert oder zumindest ausgelöst werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen, die eine Maschine darstellen, bereitgestellt werden, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen zu realisieren.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Produkt erzeugen, das die Anweisungen enthält, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt werden, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
  • Der Ablaufplan und die Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Erfindung. Dementsprechend kann jeder einzelne Block im Ablaufplan bzw. in den Blockschaltbildern ein Modul, Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen umfasst. Außerdem ist anzumerken, dass bei einigen alternativen Realisierungsformen die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder einzelne Block der dargestellten Blockschaltbilder und/oder des dargestellten Ablaufplans sowie Kombinationen von Blöcken in den dargestellten Blockschaltbildern und/oder im dargestellten Ablaufplan mithilfe von speziellen Systemen auf der Grundlage von Hardware zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus spezieller Hardware und Computeranweisungen realisiert werden kann bzw. können.

Claims (14)

  1. Verfahren zum Decodieren einer Folge von Bits, die nach einem binären asymmetrischen Kanal in einen Speicher geschrieben werden, wobei die Folge von Bits durch einen LDPC-Code (Low-Density-Parity-Check-Code) codiert werden, wobei jedes Bit der Folge entsprechende durch den LDPC-Code definierte Paritätsprüfungen hat und das Verfahren Folgendes umfasst: – Bereitstellen einer Menge (10) von Bitzuständen einschließlich eines ersten Zustands (S1) und eines zweiten Zustands (S2) und einer Menge (20) von Bedingungen, wobei, wenn eine Bedingung erfüllt ist, ein Bitzustand zu ändern ist, die Menge von Bedingungen eine erste Bedingung (C1) zur Änderung eines Bitzustands vom ersten Zustand in den zweiten Zustand und eine zweite Bedingung (C2) zur Änderung eines Bitzustands vom zweiten Zustand in den ersten Zustand enthält, wobei sich die erste Bedingung und die zweite Bedingung voneinander unterscheiden, – Lesen eines Wertes eines jeden Bits der Folge von Bits und entsprechend dem gelesenen Wert das Zuordnen jedes Bits zu einem jeweiligen Zustand der Menge (S100), – für ein Zielbit (30) der Folge von Bits das Auswerten (S200) einer Bedingung, wobei: – die Bedingung gemäß einem Zustand des Zielbits aus der Menge von Bedingungen ausgewählt wird, und – zum Auswerten der Bedingung ein Ergebnis der Berechnung der Paritätsprüfungen entsprechend dem Zielbit verwendet wird, – Feststellen (S300), dass die Bedingung erfüllt ist, – Ändern (S400) des Zustands des Zielbits als Ergebnis der Tatsache, dass die Bedingung erfüllt ist, und – Setzen (S500) des Wertes des Zielbits gemäß seinem Zustand.
  2. Verfahren nach Anspruch 1, bei dem der Schritt des Auswertens iterativ wiederholt wird (S600), wobei das Zielbit (30) bei jeder Iteration des Schritts des Auswertens ein anderes Bit der Folge ist.
  3. Verfahren nach Anspruch 2, bei dem der Schritt des Auswertens iterativ wiederholt wird, bis das Ergebnis der Berechnung der Paritätsprüfungen anzeigt, dass alle Paritätsprüfungen erfüllt sind, oder bis eine maximale Anzahl von Iterationen erreicht ist.
  4. Verfahren nach einem der Ansprüche 1 bis 3, bei dem: – die Menge von Bitzuständen aus dem ersten Zustand und dem zweiten Zustand besteht, – die Menge von Bedingungen aus der ersten Bedingung und der zweiten Bedingung besteht, – in dem Schritt des Zuordnens der einzelnen Bits ein Bit wie folgt zugeordnet wird: – dem ersten Zustand, wenn ein Wert des gelesenen Bits 0 beträgt, – dem zweiten Zustand, wenn ein Wert des gelesenen Bits 1 beträgt, – in dem Schritt des Setzens des Wertes des Zielbits der Wert des Zielbits wie folgt gesetzt wird: – auf 0, wenn das Zielbit dem ersten Zustand zugeordnet ist, – auf 1, wenn das Zielbit dem zweiten Zustand zugeordnet ist.
  5. Verfahren nach Anspruch 4, bei dem die erste Bedingung erfüllt ist, sobald eine Mehrheit der dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, wohingegen die zweite Bedingung erfüllt ist, sobald alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind.
  6. Verfahren nach Anspruch 4, bei dem die erste Bedingung erfüllt ist, sobald eine Anzahl von dem Zielbit entsprechenden Paritätsprüfungen, die nicht erfüllt sind, höher als ein erster Schwellenwert ist, wohingegen die zweite Bedingung erfüllt ist, sobald eine Anzahl von dem Zielbit entsprechenden Paritätsprüfungen, die nicht erfüllt sind, höher als ein zweiter Schwellenwert ist, wobei sich der erste Schwellenwert und der zweite Schwellenwert voneinander unterscheiden.
  7. Verfahren nach einem der Ansprüche 1 bis 3, bei dem: – die Menge von Bitzuständen ferner einen dritten Zustand (S3) und einen vierten Zustand (S4) enthält, – die Menge von Bedingungen eine erste Teilmenge von Bedingungspaaren enthält, wobei: – eine Bedingung eines Paares eine Bedingung zur Änderung eines Bitzustands von einem i-ten Zustand in einen j-ten Zustand ist, – die andere Bedingung des Paares eine Bedingung zur Änderung eines Bitzustands vom j-ten Zustand in den i-ten Zustand ist, – sich die Bedingungen eines Paares voneinander unterscheiden, und – die erste Bedingung und die zweite Bedingung ein Paar der ersten Teilmenge bilden, – die Menge von Bedingungen darüber hinaus eine zweite Teilmenge von Bedingungspaaren enthält, wobei: – eine Bedingung eines Paares eine Bedingung zur Änderung eines Bitzustands von einem k-ten Zustand in einen l-ten Zustand ist, – die andere Bedingung des Paares eine Bedingung zur Änderung eines Bitzustands vom l-ten Zustand in den k-ten Zustand ist, und – die Bedingungen eines Paares der zweiten Teilmenge identisch sind.
  8. Verfahren nach Anspruch 7, bei dem die Menge von Bedingungen ferner eine dritte Teilmenge enthält, die mindestens eine Bedingung umfasst, um einen Bitzustand von einem m-ten Zustand in einen n-ten Zustand zu ändern, für den in der Menge von Bedingungen keine Bedingung zur Änderung eines Bitzustands vom m-ten Zustand in den n-ten Zustand vorhanden ist.
  9. Verfahren nach Anspruch 8, bei dem eine Bedingung erfüllt ist, sobald alle oder eine weniger als die Mehrheit oder eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, oder sobald alle dem Zielbit entsprechenden Paritätsprüfungen erfüllt sind.
  10. Verfahren nach Anspruch 8, bei dem: – der erste Bitzustand einem hohen Vertrauen entspricht, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll, – der zweite Zustand einem niedrigen Vertrauen entspricht, dass der Wert des Bits 0 beträgt, das in den Speicher geschrieben werden soll, – der dritte Zustand einem hohen Vertrauen entspricht, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll, – der vierte Zustand einem niedrigen Vertrauen entspricht, dass der Wert des Bits 1 beträgt, das in den Speicher geschrieben werden soll, und die erste Teilmenge von Bedingungen Folgendes umfasst: – die erste Bedingung, die erfüllt ist, wenn mindestens eine weniger als die Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, – die zweite Bedingung, die erfüllt ist, wenn alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, – eine dritte Bedingung zur Änderung eines Bitzustands vom dritten Zustand in den vierten Zustand, die erfüllt ist, wenn mindestens eine weniger als die Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, – eine vierte Bedingung zur Änderung eines Bitzustands vom vierten Zustand in den dritten Zustand, die erfüllt ist, wenn alle dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt sind, und die zweite Teilmenge von Bedingungen Folgendes umfasst: – eine fünfte Bedingung zur Änderung eines Bitzustands vom zweiten Zustand in den vierten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, – eine sechste Bedingung zur Änderung eines Bitzustands vom vierten Zustand in den zweiten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, und die dritte Teilmenge von Bedingungen Folgendes umfasst: – eine siebte Bedingung zur Änderung eines Bitzustands vom ersten Zustand in den vierten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist, – eine achte Bedingung zur Änderung eines Bitzustands vom dritten Zustand in den zweiten Zustand, die erfüllt ist, wenn eine Mehrheit aller dem Zielbit entsprechenden Paritätsprüfungen nicht erfüllt ist.
  11. Verfahren nach einem der Ansprüche 1 bis 10, bei dem das Berechnen der dem Zielbit entsprechenden Paritätsprüfungen gemäß den Werten von Bits der Folge durchgeführt wird, die durch entsprechende Bitzustände bestimmt sind.
  12. Computerlesbares Speichermedium mit einem darauf aufgezeichneten Computerprogramm, das Anweisungen zur Ausführung durch einen Computer umfasst, wobei die Anweisungen Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 11 umfassen.
  13. System, das Folgendes umfasst: – einen Speicher, der zum Schreiben einer Folge von Bits geeignet ist, die mithilfe eines LDPC-Codes codiert wurden; und – Mittel zum Durchführen des Verfahrens nach einem der Ansprüche 1 bis 11.
  14. System nach Anspruch 13, bei dem der Speicher ein Flash-Speicher ist.
DE112011101852.5T 2010-05-31 2011-05-25 Decodieren von LDPC-Code Expired - Fee Related DE112011101852B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP10164532.3 2010-05-31
EP10164532 2010-05-31
PCT/IB2011/052268 WO2011151759A1 (en) 2010-05-31 2011-05-25 Decoding of ldpc code

Publications (2)

Publication Number Publication Date
DE112011101852T5 DE112011101852T5 (de) 2013-05-29
DE112011101852B4 true DE112011101852B4 (de) 2017-07-20

Family

ID=44318213

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011101852.5T Expired - Fee Related DE112011101852B4 (de) 2010-05-31 2011-05-25 Decodieren von LDPC-Code

Country Status (8)

Country Link
US (1) US9531406B2 (de)
JP (1) JP5723975B2 (de)
CN (1) CN102893529B (de)
BR (1) BR112012030634A2 (de)
DE (1) DE112011101852B4 (de)
GB (1) GB2494577B (de)
MX (1) MX2012007899A (de)
WO (1) WO2011151759A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10084479B2 (en) * 2014-07-07 2018-09-25 Toshiba Memory Corporation Low BER hard-decision LDPC decoder
US10374633B2 (en) * 2016-07-08 2019-08-06 Maxlinear, Inc. Method and system for LDPC decoding
TWI685218B (zh) * 2016-12-30 2020-02-11 慧榮科技股份有限公司 解碼方法與相關解碼裝置
TWI631830B (zh) * 2016-12-30 2018-08-01 慧榮科技股份有限公司 解碼方法與相關解碼裝置
TWI632780B (zh) 2016-12-30 2018-08-11 慧榮科技股份有限公司 解碼方法與相關解碼裝置
US10374631B2 (en) 2017-08-22 2019-08-06 Goke Us Research Laboratory Look-ahead LDPC decoder
US10447301B2 (en) * 2017-09-13 2019-10-15 Toshiba Memory Corporation Optimal LDPC bit flip decision
BR112022007273A2 (pt) * 2019-11-14 2022-07-05 Intel Corp Métodos, meios de armazenamento e aparelhos para gerar códigos de ldpc otimizada

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017684A1 (en) * 2008-07-17 2010-01-21 Xueshi Yang Data recovery in solid state memory devices
WO2010039874A1 (en) * 2008-09-30 2010-04-08 Lsi Corportion Method and apparatus for soft data generation for memory devices using decoder performance feedback

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7158422B2 (en) * 2004-02-27 2007-01-02 Micron Technology, Inc. System and method for communicating information to a memory device using a reconfigured device pin
FR2871493B1 (fr) * 2004-06-11 2006-08-25 Pyramid Sarl Procede de deconstruction d'une partie de batiment et le dispositif de mise en oeuvre
EP1849236A1 (de) * 2004-12-29 2007-10-31 Intel Corporation Kanalschätzung und feste schwellen für die mehrschwellige decodierung von paritätsprüfcodes geringer dichte
US20060195765A1 (en) * 2005-02-28 2006-08-31 Texas Instruments Incorporated Accelerating convergence in an iterative decoder
JP4261575B2 (ja) * 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
US7904793B2 (en) * 2007-03-29 2011-03-08 Sandisk Corporation Method for decoding data in non-volatile storage using reliability metrics based on multiple reads
US7975209B2 (en) * 2007-03-31 2011-07-05 Sandisk Technologies Inc. Non-volatile memory with guided simulated annealing error correction control
US7656707B2 (en) * 2007-12-14 2010-02-02 Intel Corporation Systems and methods for discrete channel decoding of LDPC codes for flash memory
CN101707485A (zh) * 2009-02-03 2010-05-12 天津博微科技有限公司 混合比特翻转和大数逻辑的ldpc译码方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017684A1 (en) * 2008-07-17 2010-01-21 Xueshi Yang Data recovery in solid state memory devices
WO2010039874A1 (en) * 2008-09-30 2010-04-08 Lsi Corportion Method and apparatus for soft data generation for memory devices using decoder performance feedback

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
"A Modification to Weighted Bit-Flipping Decoding Algorithm for LDPC Codes Based on Reliability Adjustment" von Dajun Qian, Ming Jiang, Chunming Zhao, Xiaofu Wu, IEEE International Conference on Communications, 2008. ICC '08, 19. bis 23. Mai 2008, Seiten 1161-1165
"An improvement on the modified weighted bit flipping decoding algorithm for LDPC codes" von Ming Jiang, Chunming Zhao, Zhihua Shi, Yu Chen, IEEE Communications Letters, Bd. 9, Ausgabe 9, Sep. 2005, Seiten 814-816
"Density evolution for asymmetric memoryless channels" von Wang, C.-C., Kulkarni, S. R., Poor, H. V., IEEE Transactions on Information Theory, Bd. Bd. 51, Ausgabe 12, Dez. 2005, Seiten 4216-4236
"Does the Performance of LDPC Codes Depend on the Channel?" von Franceschini, M., Ferrari, G., Raheli, R., IEEE Transactions on Communications, Bd. 54, Ausgabe 12, Dez. 2006, Seiten 2129-2132
"LDPC codes for binary asymmetric channels" von Marina, N., ICT 2008, International Conference on Telecommunications, 2008, 16. bis 19. Juni, Seiten 1-7
"Maximum Likelihood Decoding of Codes on the Z-channel" von Barbero, A., Ellingsen, P., Spinsante, S., Ytrehus, O., IEEE International Conference an Communications, 2006, Bd. 3, Juni 2006, Seiten 1200-1205
"On the Error Correction of Regular LDPC Codes Using the Flipping Algorithm" von Burshtein, D., IEEE Transactions on Information Theory, Bd. 54, Ausgabe 2, Feb. 2008, Seiten 517-530

Also Published As

Publication number Publication date
MX2012007899A (es) 2012-08-01
GB201222466D0 (en) 2013-01-30
DE112011101852T5 (de) 2013-05-29
GB2494577A (en) 2013-03-13
JP2013532422A (ja) 2013-08-15
CN102893529A (zh) 2013-01-23
US20150052413A1 (en) 2015-02-19
BR112012030634A2 (pt) 2016-08-16
CN102893529B (zh) 2016-03-30
US9531406B2 (en) 2016-12-27
JP5723975B2 (ja) 2015-05-27
GB2494577B (en) 2013-11-20
WO2011151759A1 (en) 2011-12-08

Similar Documents

Publication Publication Date Title
DE112011101852B4 (de) Decodieren von LDPC-Code
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE112012006153B4 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE60219238T2 (de) Bewertung und Optimisierung von fehlerkorrigierenden Kodes unter Anwendung einer Renormalisierungsgruppentransformation
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE102014103125A1 (de) Verfahren und Vorrichtung zum Optimieren des Log-Likelihood-Quotienten (LLR), die verwendet werden für eine nichtflüchtige Speichervorrichtung und zum Korrigieren von Fehlern in einer nichtflüchtigen Speichervorrichtung
DE102015201384A1 (de) Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE112014002870T5 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE102017110389A1 (de) Verfahren und Decoder zur Softinput Decodierung von verallgemeinerten verketteten Codes
DE112011103295T5 (de) Decodieren in Solid-State-Speichereinheiten
DE102019127089A1 (de) LDPC Decoder, semiconductor memory system, and operating method thereof
DE102017130591A1 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE112016003638B4 (de) Auf eine Decodierung folgende Fehlerprüfung mit Diagnose für Produktcodes
DE102010021516A1 (de) Fehlerkorrekturcodes für erhöhte Speicherkapazität in Mehrpegelspeichereinrichtungen
DE102015113414A1 (de) Fehlerkorrektur unter Verwendung von WOM-Codes
DE102018123887A1 (de) Nichtflüchtiges Speichersystem. das fehlerhafte Blöcke regeneriert
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE112016002305B4 (de) Reduktion der Schreibverstärkung in einem Objektspeicher
DE112020005176T5 (de) Inhaltsbewusster bit-flipping-decodierer
DE102020110787B3 (de) Schaltung und verfahren zum kodieren oder dekodieren eines datenworts
DE102020120211A1 (de) Polarer neuronaler Netzwerk-Decodierer für Speichervorrichtungen
DE102015102774A1 (de) Verfahren und vorrichtung zur verarbeitung eines löschzählers
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R409 Internal rectification of the legal status completed
R409 Internal rectification of the legal status completed
R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, NY, US

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: GLOBALFOUNDRIES US 2 LLC (N.D.GES.DES STAATES DELAWARE), HOPEWELL JUNCTION, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee