DE112022002131T5 - Ldpc-dekodierung mit trapped-block-management - Google Patents

Ldpc-dekodierung mit trapped-block-management Download PDF

Info

Publication number
DE112022002131T5
DE112022002131T5 DE112022002131.4T DE112022002131T DE112022002131T5 DE 112022002131 T5 DE112022002131 T5 DE 112022002131T5 DE 112022002131 T DE112022002131 T DE 112022002131T DE 112022002131 T5 DE112022002131 T5 DE 112022002131T5
Authority
DE
Germany
Prior art keywords
block
llr
decoding
failed
trapped
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
DE112022002131.4T
Other languages
English (en)
Inventor
Peter John Waldemar Graumann
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.)
Microchip Technology Inc
Original Assignee
Microchip Technology 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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of DE112022002131T5 publication Critical patent/DE112022002131T5/de
Pending legal-status Critical Current

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
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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
    • 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/1142Decoding using trapping sets
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of 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)

Abstract

Ein Verfahren und eine Einrichtung zum Dekodieren, bei dem ein erster fehlgeschlagener Dekodiervorgang an Rohbitwerten eines FEC-Blocks durch einen LDPC-Dekodierer durchgeführt wird. Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, wird eine aktualisierte LLR-Karte erzeugt; ein FEC-Block wird als ein Trapped-Block bestimmt, wenn die Anzahl von nicht erfüllten Prüfknoten, d. h. das Syndromgewicht, kleiner als ein Schwellenwert ist; die aktualisierte LLR-Karte und entweder die Rohbitwerte des FEC-Blocks oder ein Fehlgeschlagener-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block werden an den LDPC-Dekodierer bereitgestellt; ein Dekodiervorgang des LDPC-Dekodierers wird unter Verwendung der aktualisierten LLR-Karte an den Bitwerten des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchgeführt; und das Erzeugen, das Bereitstellen und das Durchführen werden wiederholt, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde. Wenn der Dekodiervorgang beim Dekodieren des FEC-Blocks erfolgreich ist, wird das Codewort ausgegeben.

Description

  • QUERVERWEIS AUF VERWANDTE ANMELDUNGEN
  • Die vorliegende Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung Nr. 63/249,556 , eingereicht am 28. September 2021, deren Inhalt in ihrer Gesamtheit durch Bezugnahme hierin aufgenommen wird.
  • HINTERGRUND DER ERFINDUNG
  • Fehlerkorrekturlösungen unterliegen Error-Floors („Fehlerböden“), bei denen weitere Reduzierungen der Eingangsfehlerrate nicht mehr zu einer signifikanten Erhöhung der Fehlerkorrekturleistung führen. Die Frame-Fehlerrate (Frame Error Rate, FER), bei der die tatsächliche Leistung für den bestimmten Dekodierprozess beginnt, von der theoretischen Leistung für den bestimmten Dekodierprozess signifikant abzuweichen, definiert die Error-Floor-Leistung. Die erwartete Leistung für den bestimmten Dekodierprozess wird manchmal als „Wasserfall“ für den Dekodierprozess bezeichnet und erstreckt sich unter dem Error-Floor.
  • Floor-Breaker-Verfahren, die in früheren Vorrichtungen verwendet werden, ändern in der Regel den Low-Density-Parity-Check-Dekodieralgorithmus (LDPC-Dekodieralgorithmus) selbst. Diese Verfahren beruhen jedoch auf der Wiederverwertung anspruchsvoller Blöcke durch einen Standard-LDPC-Dekodierer, der selbst keine Kapazität für den Umgang mit den Error-Floor-Bedingungen aufweist. Darüber hinaus sind FER und Error-Floor umgekehrt proportional, sodass eine Verbesserung eines dieser Faktoren zu einer Verschlechterung des anderen Faktors führt.
  • Die Natur der Error-Floors besteht darin, dass wenig Bitfehler in einem Vorwärts-Fehlerkorrektur-Block (forward error correction, FEC-Block) verbleiben, wenn sich die Leistungskurve (z. B. eine Kurve von Frame-Fehler vs. Bitfehlerrate (bit error rate, BER)) dem Error-Floor nähert, aber die Fehler derart lokalisiert sind, dass sie die Standard-LDPC-Algorithmen bei der Korrektur der fehlerhaften Bits unwirksam machen. Die Bedingungen, die diese Dekodierfehler in der Nähe der Leistungskurve, die sich dem Error-Floor annähert, erzeugen, werden allgemein als „Trapping-Einstellungen“ bezeichnet. Die Trapping-Einstellungen, die sich ergeben, wenn sich die Leistungskurve dem Error-Floor nähert, ruft Dekodierfehler hervor, selbst wenn die Anzahl der fehlschlagenden Prüfknoten in dem Block, der zu dekodieren scheiterte, sehr niedrig ist. Das Syndrom für einen Block, der scheitert zu dekodieren, gibt die Anzahl der fehlschlagenden Prüfknoten für diesen bestimmten Dekodiervorgang an. Somit erzeugen diese Trapping-Einstellungen Dekodierfehler, selbst wenn das Syndrom für den Block sehr niedrig ist (z. B. weniger als 20 fehlschlagende Prüfknoten).
  • Dementsprechend besteht ein Bedarf an einem Verfahren und einer Einrichtung, welche die Anzahl von Fehlern reduzieren, die sich aus den Trapping-Einstellungen ergeben, um die Leistungskurve unter dem Error-Floor für einen bestimmten LDPC-Dekodierprozess zu verlängern.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Eine Dekodierschaltung für eine Speichersteuerung schließt einen Eingang, um Rohbitwerte eines FEC-Blocks zu empfangen; und einen LDPC-Dekodierer, der mit dem Eingang gekoppelt ist, ein. Der LDPC-Dekodierer führt einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durch und gibt ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus.
  • Die Dekodierschaltung schließt einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, und eine Trap-Steuerung ein, die mit dem Eingang des LDPC-Dekodierers und dem Trap-Erfassungs-Komparator gekoppelt ist. Der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird. Der FEC-Block wird als ein Trapped-Block bestimmt, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, führt die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durch, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde. Bei jeder Trapped-Block-Dekodieriteration erzeugt die Trap-Steuerung eine aktualisierte Log-Wahrscheinlichkeitsverhältnis-Karte (log likelihood ratio, LLR-Karte); und stellt dem LDPC-Dekodierer die aktualisierte LLR-Karte und entweder die Rohbitwerte des FEC-Blocks oder eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang bereit; und sendet eine Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen. Als Reaktion auf die Angabe verwendet der LDPC-Dekodierer die aktualisierte LLR-Karte, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen. Wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, gibt die Dekodierschaltung eine Fehlerangabe an einem Ausgang der Dekodierschaltung aus. Wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, gibt die Dekodierschaltung das Codewort aus.
  • Es wird eine Speichersteuerung offenbart, die eine Dekodierschaltung aufweist, die einen Eingang, um Rohbitwerte eines FEC-Blocks zu empfangen; einen Blockpufferspeicher, der mit dem Eingang gekoppelt ist, um die empfangenen Rohbitwerte des FEC-Blocks zu speichern; einen LDPC-Dekodierer, der mit dem Blockpufferspeicher gekoppelt ist, einschließt. Der LDPC-Dekodierer besteht darin, einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durchzuführen und ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock auszugeben. Die Dekodierschaltung schließt einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, und eine Trap-Steuerung ein, die mit dem Blockpufferspeicher gekoppelt ist. Der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, führt die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durch, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde. Bei jeder Trapped-Block-Dekodieriteration erzeugt die Trap-Steuerung eine aktualisierte LLR-Karte; und stellt dem LDPC-Dekodierer die aktualisierte LLR-Karte und entweder die Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang bereit; und sendet eine Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen. Als Reaktion auf die Angabe verwendet der LDPC-Dekodierer die aktualisierte LLR-Karte, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen. Wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, gibt die Speichersteuerung eine Fehlermeldung aus. Wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, gibt die Speichersteuerung das Codewort aus.
  • Offenbart wird ein Festkörperlaufwerk (Solid State Drive, SSD), das eine Vielzahl von Flash-Speichervorrichtungen und eine Speichersteuerung, die mit der Vielzahl von Flash-Speichervorrichtungen gekoppelt ist, einschließt. Die Speichersteuerung weist eine Dekodierschaltung auf, die einen Eingang, um Rohbitwerte eines FEC-Blocks zu empfangen; einen Blockpufferspeicher, der mit dem Eingang gekoppelt ist, um die empfangenen Rohbitwerte des FEC-Blocks zu speichern; und einen LDPC-Dekodierer, der mit dem Blockpufferspeicher gekoppelt ist, einschließt. Der LDPC-Dekodierer führt einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durch und gibt ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus. Die Dekodierschaltung schließt einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, und eine Trap-Steuerung ein, die mit dem Blockpufferspeicher gekoppelt ist. Der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird. Der FEC-Block wird als ein Trapped-Block bestimmt, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, führt die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durch, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde. Bei jeder Trapped-Block-Dekodieriteration erzeugt die Trap-Steuerung eine aktualisierte LLR-Karte; und stellt dem LDPC-Dekodierer die aktualisierte LLR-Karte und entweder die Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang bereit; und sendet eine Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen. Als Reaktion auf die Angabe verwendet der LDPC-Dekodierer die aktualisierte LLR-Karte, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen. Wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, gibt die Speichersteuerung eine Fehlermeldung aus. Wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, gibt die Speichersteuerung das Codewort aus.
  • Es wird ein Verfahren zum Dekodieren offenbart, das Folgendes einschließt: Durchführen eines ersten fehlgeschlagenen Dekodiervorgangs an Rohbitwerten eines FEC-Blocks durch einen LDPC-Dekodierer, der ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt. Das Verfahren schließt das Bestimmen ein, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, mit einem Fehlerschwellenwert verglichen wird, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. Wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, wird eine Fehlerangabe ausgegeben. Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, schließt das Verfahren Folgendes ein: Erzeugen einer aktualisierten LLR-Karte; Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block; Durchführen eines Dekodiervorgangs des LDPC-Dekodierers unter Verwendung der aktualisierten LLR-Karte auf den Bitwerten des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block; und Wiederholen des Erzeugens, des Bereitstellens und des Durchführens, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde. Wenn der Dekodiervorgang erfolgreich beim Dekodieren des FEC-Blocks ist, wird das Codewort ausgegeben. Wenn der Dekodiervorgang beim Dekodieren des FEC-Blocks nicht erfolgreich ist und die vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde, wird eine Fehlerangabe ausgegeben.
  • Das Verfahren und die Einrichtung der vorliegenden Erfindung reduzieren die Anzahl von Fehlern, die sich aus den Trapping-Einstellungen ergeben, um die Leistungskurve unter dem herkömmlichen Error-Floor für den bestimmten LDPC-Dekodierprozess zu verlängern.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die beigefügten Zeichnungen sind eingeschlossen, um ein weiteres Verständnis der Erfindung bereitzustellen, und sind in diese Spezifikation einbezogen und Bestandteil davon. Die Zeichnungen veranschaulichen verschiedene Beispiele. Die in dieser kurzen Beschreibung genannten Zeichnungen sind nicht maßstabsgetreu gezeichnet.
    • 1 ist ein Diagramm, das ein Beispiel einer Dekodierschaltung veranschaulicht, die einen Blockpufferspeicher einschließt.
    • 2 ist ein Diagramm, das ein Beispiel einer Speichersteuerung zeigt, welche die in 1 gezeigte Dekodierschaltung einschließt.
    • 3 ist ein Diagramm, das ein Beispiel einer SSD zeigt, welche die in 1 gezeigte Dekodierschaltung einschließt.
    • 4 ist ein Diagramm, das ein Beispiel eines ersten fehlgeschlagenen Dekodierens veranschaulicht.
    • 5 ist ein Diagramm, das ein Beispiel einer Trapped-Block-Dekodieriteration zeigt, bei der ein Dekodiervorgang an einem Fehlgeschlagenen-Dekodier-Ausgangsblock aus einer vorherigen Iteration durchgeführt wird.
    • 6 ist ein Diagramm, das ein Beispiel einer Trapped-Block-Dekodieriteration zeigt, bei der ein Dekodiervorgang an Rohbitwerten eines FEC-Blocks durchgeführt wird.
    • 7 ist ein Diagramm, das ein Beispiel einer ersten fehlgeschlagenen Dekodierung und N Trapped-Block-Dekodieriterationen veranschaulicht.
    • 8A ist ein Diagramm, das ein Beispiel veranschaulicht, in dem schwache Bitwerte und stochastische Wahrscheinlichkeitswerte verwendet werden, um eine aktualisierte LLR-Karte zu erzeugen.
    • 8B ist ein Diagramm, das ein Beispiel veranschaulicht, in dem schwache Bitwerte und stochastische Wahrscheinlichkeitswerte verwendet werden, um eine aktualisierte LLR-Karte zu erzeugen, und in dem eine prozentuale Variation verwendet wird, um die stochastischen Wahrscheinlichkeitswerte zu erzeugen.
    • 8C ist ein Diagramm, das ein Beispiel veranschaulicht, in dem schwache Bitwerte und stochastische Wahrscheinlichkeitswerte verwendet werden, um eine aktualisierte LLR-Karte zu erzeugen, und in dem eine prozentuale Variation verwendet wird, um die stochastischen Wahrscheinlichkeitswerte zu erzeugen.
    • 8D ist ein Diagramm, das eine Tabelle veranschaulicht, die ein Beispiel für das Erzeugen eines aktualisierten LLR angibt.
    • 8E ist ein Diagramm, das ein Beispiel veranschaulicht, in dem aktualisierte LLR-Werte unter Verwendung von Eingabe erzeugt werden, die an der Dekodierschaltung und/oder der Speichersteuerung empfangen werden.
    • 9A veranschaulicht ein Beispiel einer Dekodierschaltung, die keinen Blockpufferspeicher 5 einschließt.
    • 9B ist ein Diagramm, das ein Beispiel einer Speichersteuerung zeigt, welche die in 9A gezeigte Dekodierschaltung einschließt.
    • 9C ist ein Diagramm, das ein Beispiel einer SSD zeigt, welche die in 9A gezeigte Dekodierschaltung einschließt.
    • 10 ist ein Diagramm, das ein Verfahren zum Dekodieren veranschaulicht, in dem Trapped-Blöcke identifiziert werden und Aktionen durchgeführt werden, um zu versuchen, die Trapped-Blöcke zu dekodieren.
    • 11 ist ein Diagramm, das ein Beispiel einer ersten Trapped-Block-Dekodieriteration in dem Verfahren von 10 veranschaulicht, bei dem das Dekodieren an Rohbitwerten des FEC-Blocks durchgeführt wird.
    • 12 ist ein Diagramm, das ein Beispiel einer Trapped-Block-Dekodieriteration in dem Verfahren von 10 veranschaulicht, bei dem das Dekodieren an einem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block durchgeführt wird.
    • 13 ist ein Diagramm, das Blöcke veranschaulicht, die zusätzlich zu den in dem Verfahren von 10 gezeigten durchgeführt werden können.
    • 14 ist ein Diagramm, das einen Frame-Fehler auf der vertikalen Achse und Bitfehlerrate auf der horizontalen Achse veranschaulicht, das eine Leistungskurve und einen Wasserfall für einen herkömmlichen LDPC-Dekodierer zeigt.
    • 15 ist ein Diagramm, das einen Frame-Fehler auf der vertikalen Achse und Bitfehlerrate auf der horizontalen Achse veranschaulicht, das eine Leistungskurve für ein Beispiel des Verfahrens und der Einrichtung zeigt, die in 1-13 gezeigt sind.
  • AUSFÜHRLICHE BESCHREIBUNG
  • 1 zeigt eine Dekodierschaltung 1, die einen Blockpufferspeicher 5, einen LDPC-Dekodierer 3, der mit dem Blockpufferspeicher 5 gekoppelt ist, einen Trap-Erfassungs-Komparator 4, der mit dem LDPC-Dekodierer 3 gekoppelt ist, und eine Trap-Steuerung 2 einschließt. Die Trap-Steuerung 2 ist gekoppelt, um den Pufferspeicher 5, den LDPC-Dekodierer 3 und den Trap-Erfassungs-Komparator 4 zu blockieren. Die Dekodierschaltung 1 schließt einen Eingang 14 ein, der im Folgenden als „Dekodierschaltungseingang“ 14 bezeichnet werden kann, der mit dem Blockpufferspeicher 5 und der Trap-Steuerung 2 gekoppelt. Der LDPC-Dekodierer 3 schließt einen Eingang 10 zum Empfangen eines FEC-Blocks aus dem Blockpufferspeicher 5, der im Folgenden als „FEC-Blockeingang“ 10 bezeichnet werden kann, einen Eingang 11, um eine LLR-Karte von der Trap-Steuerung 2 zu empfangen, die im Folgenden als „LLR-Karteneingang“ 11 bezeichnet werden kann, und einen Eingang 16, der als „Steuereingang“ 16 bezeichnet werden kann, der mit einem Ausgang der Trap-Steuerung 2 gekoppelt ist, ein. Der Begriff „LLR-Karte“, wie er in der vorliegenden Anmeldung verwendet wird, ist eine Tabelle oder eine andere Liste, die LLR-Werte angibt, die in einem bestimmten LDPC-Dekodiervorgang verwendet werden sollen. In diesem Beispiel schließt der LDPC-Dekodierer 3 einen Ausgang 12 zum Ausgeben eines dekodierten Blocks an die Trap-Steuerung 2, der im Folgenden als „dekodierter Blockausgang“ 12 bezeichnet werden kann, und einen Ausgang 13 für die Ausgabe eines Syndroms an den Trap-Erfassungs-Komparator 4, der im Folgenden als „Syndromausgang“ 13 bezeichnet werden kann, ein. Das Syndrom für einen FEC-Block, der scheitert, im LDPC-Dekodierer 3 zu dekodieren, gibt die Anzahl der fehlschlagenden Prüfknoten für den bestimmten Dekodiervorgang an. Obwohl zwei Eingänge 11, 16 gezeigt sind, um den LDPC-Dekodierer 3 mit der Trap-Steuerung 2 zu koppeln, versteht es sich, dass alternativ ein einzelner Eingang verwendet werden könnte, um den LDPC-Dekodierer 3 mit der Trap-Steuerung 2 zu koppeln. Die Trap-Steuerung 2 weist einen Ausgang 15 auf, der einen Ausgang der Dekodierschaltung bildet, der als „Dekodierschaltungsausgang“ 15 bezeichnet werden kann.
  • In einem Beispiel ist die Dekodierschaltung 1 als eine integrierte Schaltungsvorrichtung (integrated circuit, IC-Vorrichtung) implementiert, die auf einem oder mehreren Halbleiter-Dies ausgebildet ist, die eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC) oder eine programmierbare Logikvorrichtung (Programmable Logic Device, PLD) sein können, wie ein feldprogrammierbares Gate-Array (Field Programmable Gate Array, FPGA), ohne darauf beschränkt zu sein. In dem in 1 gezeigten Beispiel ist die Dekodierschaltung 1 zur Veranschaulichung als einen einzelnen Eingang 14 und einen einzelnen Ausgang 15 aufweisend gezeigt. In anderen Beispielen schließt die Dekodierschaltung 1 jedoch eine Vielzahl von Eingängen 14 und eine Vielzahl von Ausgängen 15 ein, die mit der Trap-Steuerung 2 gekoppelt oder mit anderen Komponenten der Dekodierschaltung 1 gekoppelt sein können.
  • In einem Beispiel, das in 2 veranschaulicht ist, ist die Dekodierschaltung 1 in einer Speichersteuerung 6 implementiert. In einem Beispiel ist die Speichersteuerung 6 als eine IC-Vorrichtung implementiert, die auf einem einzelnen Halbleiter-Die ausgebildet ist, der ein ASIC oder ein PLD wie ein FPGA sein kann, ohne darauf beschränkt zu sein. Die Speichersteuerung 6 schließt den lokalen Speicher 8 ein. In einem Beispiel ist der lokale Speicher 8 Register oder statische Direktzugriffsspeicherblöcke (Static Random-Access Memory, SRAM-Blöcke), auf die einzeln durch eine oder mehrere der Trap-Steuerung 2, LDPC-Dekodierer 3, Trap-Erfassungs-Komparator 4 oder andere Schaltungen der Speichersteuerung 6 oder Dekodierschaltung 1 zugegriffen werden können. Obwohl der lokale Speicher 8 als in der Speichersteuerung 6 befindlich veranschaulicht ist, können Abschnitte des lokalen Speichers 8 innerhalb eines oder mehrerer der Trap-Steuerung 2, des LDPC-Dekodierers 3, des Trap-Erfassungs-Komparators 4 und der Dekodierschaltung 1 angeordnet sein und können Register oder SRAM-Blöcke einschließen, die für jeweilige der Trap-Steuerung 2, LDPC-Dekodierer 3, Trap-Erfassungs-Komparator 4 und Dekodierschaltung 1 zugänglich sind. In dem in 2 gezeigten Beispiel ist die Speichersteuerung 6 als eine oder mehrere Eingänge 18 (Speichersteuereingang) und einen oder mehrere Ausgänge 19 (Speichersteuerausgang) aufweisend gezeigt. Der eine oder die mehreren Eingänge 18 und Ausgänge 19 sind durch die Schaltlogik der Speichersteuerung 6 mit dem jeweiligen Eingang (den jeweiligen Eingängen) 14 und dem jeweiligen Ausgang (den jeweiligen Ausgängen 15) der Dekodierschaltung 1 gekoppelt.
  • 3 zeigt ein Beispiel, in dem die Dekodierschaltung 1 im Festkörperlaufwerk (Solid-State Drive, SSD) 9 implementiert ist. Die SSD 9 schließt Speichersteuerung 6 ein, die mit einer Vielzahl von Speichervorrichtungen 7 gekoppelt ist. Jede Speichervorrichtung 7 ist ein gepackter Halbleiter-Die oder „Chip“, der mit der Speichersteuerung 6 über Leiterbahnen 18a gekoppelt ist, die Anweisungen, Daten und andere Informationen zwischen jeder Flash-Speichervorrichtung 7 und Speichersteuerung 6 koppeln. In einem Beispiel sind die Speicherungsvorrichtungen 7 Flash-NOT-AND-Speichervorrichtungen (Flash-NAND-Speichervorrichtungen), die als einzelne gepackte IC-Vorrichtungen oder IC-Vorrichtungen implementiert sind, die in Multi-Chip-Modulen gepackt sind. In einem Beispiel schließt jede Flash-Speichervorrichtung 7 NAND-Speicherzellen ein, die in Blöcke und Seiten organisiert sind, wobei jeder Block aus NAND-Zeichenfolgen besteht, die die gleiche Gruppe von Wortleitungen gemeinsam nutzen. Die Speichervorrichtungen 7 können ohne Einschränkung Single-Level-Cell-Vorrichtungen (SLC-Vorrichtungen), Multi-Level-Cell-Vorrichtungen (MLC-Vorrichtungen), Triple-Level-Cell-Vorrichtungen (TLC-Vorrichtungen), Quad-Level-Cell-Vorrichtungen (QLC-Vorrichtungen) oder Penta-Level-Cell-Vorrichtungen (SPS-Vorrichtungen) sein. Die Speichervorrichtungen 7 können jede Art von Speicherungsvorrichtung sein.
  • In der folgenden Erörterung werden der Vorgang und die verschiedenen Komponenten der Dekodierschaltung 1 im Zusammenhang mit der Speichersteuerung 6 der SSD 9 von 3 erörtert. Es versteht sich jedoch, dass die Dekodierschaltung 1 als eine eigenständige Vorrichtung implementiert werden kann, wie in 1 veranschaulicht, oder in einer Speichersteuerung 6, die eine eigenständige Vorrichtung ist, wie in 2 veranschaulicht.
  • Die Speichersteuerung 6 empfängt Lese- und Schreibanweisungen von einem Host-Computer und führt Programmiervorgänge, Löschvorgänge und Lesevorgänge auf Speicherzellen der Speichervorrichtungen 7 durch, um die Anweisungen von dem Host-Computer auszuführen. Zum Beispiel erzeugt die Speichersteuerung 6 nach dem Empfangen einer Schreibanweisung von einem Host-Computer, der zu speichernde Daten einschließt, ein Codewort, das die empfangenen Daten einschließt, und kodiert das Codewort in einen FEC-Block, der zusammen mit einer entsprechenden Programmieranweisung an ein oder mehrere der Speichervorrichtungen 7 gesendet wird. Die Speichervorrichtungen 7 führen die angeforderte Programmieranweisung aus und speichern den FEC-Block durch Programmieren von Speicherzellen der jeweiligen Speichervorrichtung 7 (z. B. als logische Seite). Die Speichersteuerung 6 kann auch Zellen der Speichervorrichtungen 7 löschen. Nach dem Empfangen einer Leseanweisung von dem Host-Computer sendet die Speichersteuerung 6 eine Leseanweisung an eine oder mehrere der Speichervorrichtungen 7 und als Reaktion darauf, führen die eine oder die mehreren Speichervorrichtungen 7 das Lesen durch und koppeln das Ergebnis des Lesens in Form von Rohbitwerten eines FEC-Blocks mit der Speichersteuerung 6. Als Reaktion auf das Empfangen der Rohbitwerte des FEC-Blocks koppelt die Speichersteuerung 6 die Rohbitwerte des FEC-Blocks zum Dekodieren mit der Dekodierschaltung 1.
  • In einem Beispiel schließen einige oder alle der Trap-Steuerung 2, des LDPC-Dekodierers 3, des Trap-Erfassungs-Komparators 4, des Blockpufferspeichers 5 und der Steuerung 6 Schaltungen ein, die dedizierte Schaltungen zum Durchführen von Vorgängen sind. In einem anderen Beispiel schließen einige oder alle der Trap-Steuerung 2, des LDPC-Dekodierers 3, des Trap-Erfassungs-Komparators 4, des Blockpufferspeichers 5 und der Steuerung 6 eine Firmware ein, die Anweisungen einschließt, die an einem oder mehreren Prozessor durchgeführt werden, wobei die Anweisungen in Registern eines oder mehrerer der Speichersteuerung 6, der Trap-Steuerung 2, des LDPC-Dekodierers 3, des Trap-Erfassungs-Komparators 4 und/oder im lokalen Speicher 8 gespeichert sind. In einem Beispiel schließen einige der Speichersteuerung 6, der Trap-Steuerung 2, des LDPC-Dekodierers 3 und des Trap-Erfassungs-Komparators 4 einen Prozessor (nicht gezeigt) zum Durchführen von Anweisungen ein, und ein oder mehrere Firmware-Bilder werden vor dem Betrieb der Speichersteuerung 6 in die Speichersteuerung 6 geladen, wobei das Firmware-Bild Anweisungen einschließt, die von einem oder mehreren der Speichersteuerung 6, der Trap-Steuerung 2, des LDPC-Dekodierers 3 und des Trap-Erfassungs-Komparators 4 durchgeführt werden.
  • Obwohl Beispiele der vorliegenden Erfindung als „Firmware“ beschrieben sind, versteht es sich, dass Ausführungsformen der vorliegenden Erfindung Firmware einschließen können oder nicht. In einem Beispiel werden ein oder mehrere Softwareprogramme zum Durchführen einiger oder aller in der vorliegenden Anmeldung beschriebenen Verfahrensblöcke und Funktionen verwendet. In einem spezifischen Beispiel wird ein oder mehrere Softwarestapel in der Dekodierschaltung 1 und/oder Speichersteuerung 6 gespeichert, die auf einem oder mehreren Prozessor betreibbar ist, um einige oder alle der verschiedenen Funktionen und Verfahrensblöcke durchzuführen, die in der vorliegenden Anmeldung beschrieben sind.
  • In einem Beispiel wird ein Lesevorgang durchgeführt, bei dem die Steuerung 6 eine oder mehrere Speichervorrichtungen 7 liest und als Reaktion Rohbitwerte eines FEC-Blocks empfängt, die mit dem Dekodierschaltungseingang 14 gekoppelt sind. Die Rohbitwerte eines FEC-Blocks, die am Dekodierschaltungseingang 14 empfangen werden, werden mit dem Blockpufferspeicher 5 gekoppelt. Der Blockpufferspeicher 5 speichert die empfangenen Rohbitwerte eines FEC-Blocks. Der Blockpufferspeicher 5 kann Register oder SRAM-Blöcke sein, auf die einzeln durch LDPC-Dekodierer 3 zugegriffen werden kann, ohne darauf beschränkt zu sein.
  • Die Rohbitwerte des FEC-Blocks werden an dem FEC-Blockeingang 10 mit dem LDPC-Dekodierer 3 gekoppelt. Der LDPC-Dekodierer 3 führt einen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durch und gibt ein Syndrom bei dem Syndromausgang 13 aus und erzeugt eine Ausgabe an dem dekodierten Blockausgang 12. Wenn die Dekodierung erfolgreich ist, ist die Ausgabe beim dekodierten Blockausgang 12 das gespeicherte Codewort. Wenn die Dekodierung nicht erfolgreich ist (d. h. ein fehlgeschlagener Dekodiervorgang), ist die Ausgabe bei dem dekodierten Blockausgang 12 ein Fehlgeschlagener-Dekodier-Ausgangsblock . Der Begriff „Fehlgeschlagener-Dekodier-Ausgangsblock", wie er hierin verwendet wird, ist eine Ausgabe von einem LDPC-Dekodierer aus einem fehlgeschlagenen Dekodiervorgang. Der Begriff „fehlgeschlagene Dekodierung“, wie er in der vorliegenden Anmeldung verwendet wird, ist ein Dekodiervorgang an einem FEC-Block, der beim Identifizieren des gespeicherten Codeworts, das dem FEC-Block entspricht (z. B. ein Dekodiervorgang, der nicht zu einem Syndrom von 0 führt), nicht erfolgreich ist.
  • Wenn der LDPC-Dekodierer 3 einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durchführt, gibt der LDPC-Dekodierer 3 ein Syndrom des fehlgeschlagenen Dekodiervorgangs bei dem Syndromausgang 13 und einen Fehlgeschlagenen-Dekodier-Ausgangsblock bei dem dekodierten Blockausgang 12 aus.
  • Wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, wird eine Fehlerangabe am Dekodierschaltungsausgang 15 von 1-3 ausgegeben, die zum Beispiel ein Fehlerflag sein kann. Als Reaktion auf die Fehlerangabe gibt Speichersteuerung 6 eine Fehlermeldung an dem Speichersteuerungsausgang 19 aus. In einem Beispiel ist der Dekodierschaltungsausgang 15 mit dem Speichersteuerungsausgang 19 gekoppelt und der Fehlerangabeausgang am Dekodierschaltungsausgang 15 ist mit dem Speichersteuerungsausgang 19 gekoppelt und wird dort ausgegeben. Als Reaktion auf die Fehlermeldung kann der Host-Computer dann einen RAID-Prozess durchführen, um das Codewort wiederherzustellen, oder ein Wiederherstellungsvorgang kann durch die Speichersteuerung 6 durchgeführt werden, in der zusätzliche Lesevorgänge und Soft-Dekodierungen durchgeführt werden.
  • 4 veranschaulicht einen fehlgeschlagenen Dekodiervorgang, der im Folgenden als „erster fehlgeschlagener Dekodiervorgang“ bezeichnet werden kann. Der Begriff „erster fehlgeschlagener Dekodiervorgang“, wie er in der vorliegenden Anmeldung verwendet wird, bezieht sich auf das erste Mal, dass ein bestimmter FEC-Block scheitert erfolgreich zu dekodieren, wenn bestimmt wird, dass der bestimmte FEC-Block ein Trapped-Block ist (z. B. ein bestimmter FEC-Block, an dem ein Dekodiervorgang durchgeführt wurde, wobei der Ausgang des Dekodiervorgangs angab, dass der bestimmte Block ein Trapped-Block war). In dem in 4 gezeigten Beispiel werden Rohbitwerte eines FEC-Blocks 21 vom Blockpufferspeicher 5 am FEC-Blockeingang 10 empfangen, eine LLR-Karte 22 (die als „anfängliche LLR-Karte“ bezeichnet werden kann) wird durch die Trap-Steuerung 2 erzeugt und über den LLR-Karteneingang 11 mit dem LDPC-Dekodierer 3 gekoppelt. Der Begriff „LLR-Karte“, wie er in der vorliegenden Anmeldung verwendet wird, ist eine Angabe einer Vielzahl von LLR-Werten und kann in Form eines oder mehrerer Wörter oder einer Sequenz von Einsen und Nullen vorliegen, die jeweilige der Vielzahl von LLR-Werten angeben. In diesem Beispiel scheitert der LDPC-Dekodierer 3, den FEC-Block zu dekodieren, der Rohbitwerten des FEC-Blocks 21 entspricht, woraufhin der LDPC-Dekodierer 3 den Fehlgeschlagenen-Dekodier-Ausgangsblock 24 bei dem dekodierten Blockausgang 12 und ein Syndrom 45 bei dem Syndromausgang 13 erzeugt. In einem Beispiel ist der erste fehlgeschlagene Dekodiervorgang ein Soft-Dekodiervorgang, bei dem die anfängliche LLR-Karte 22 verwendet wird (z. B. ein 3-Bit-Soft-Dekodiervorgang, bei dem der Eingang für jede Bitposition eine 1 oder eine 0 und einen LLR-Wert einschließt). Alternativ kann der erste fehlgeschlagene Dekodiervorgang ein Hard-Dekodiervorgang sein. Wenn die erste fehlgeschlagene Dekodierung eine Hard-Dekodierung ist, wird keine anfängliche LLR-Karte erzeugt oder dem LDPC-Dekodierer 3 bereitgestellt.
  • Der Trap-Erfassungs-Komparator 4 bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einen Fehlerschwellenwert verglichen wird. Der FEC-Block wird als ein Trapped-Block bestimmt, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. In einem Beispiel ist der Fehlerschwellenwert von der Trap-Steuerung 2 mit dem Trap-Erkennungs-Komparator 4 gekoppelt. Alternativ wird der Fehlerschwellenwert im lokalen Speicher 8 gespeichert, der für den Trap-Erkennungs-Komparator 4 zugänglich ist, oder in einem Abschnitt des lokalen Speichers 8 innerhalb des Trap-Erfassungs-Komparators 4 gespeichert. In einem Beispiel wird der Fehlerschwellenwert am Eingang 14, 18 empfangen, was es einem Benutzer der Speichersteuerung 6 ermöglicht, den Fehlerschwellenwert auf einen gewünschten Wert einzustellen. Alternativ wird ein Standardfehlerschwellenwert durch die Trap-Steuerung 2 eingestellt.
  • In dem in 4 gezeigten Beispiel hat das Syndrom 45 einen Wert von kleiner als der Fehlerschwellenwert und daher ist der FEC-Block 21 ein Trapped-Block. Wenn bestimmt wird, dass der FEC-Block eine Trapped-Block ist, führt die Dekodiererschaltung 1 Iterationen unter Verwendung des LDPC-Dekodierers 3 durch, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Dekodieriterationen durchgeführt wurde. Diese Iterationen werden im Folgenden als „Trapped-Block“-Dekodieriterationen bezeichnet. Der Begriff „Trapped-Block-Dekodieriteration“, wie in der vorliegenden Anmeldung verwendet, ist eine Iteration, die durchgeführt wird, um einen FEC-Block zu dekodieren, der als Trapped-Block bestimmt wurde. Bei jeder Trapped-Block-Dekodieriteration erzeugt die Trap-Steuerung 2 eine aktualisierte LLR-Karte; stellt dem LDPC-Dekodierer die aktualisierte LLR-Karte und entweder die Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang bereit und sendet eine Angabe an den LDPC-Dekodierer 3, um einen Dekodiervorgang durchzuführen. Als Reaktion auf die Angabe verwendet der LDPC-Dekodierer 3 die aktualisierte LLR-Karte, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen. Wenn die maximale Anzahl von Trapped-Block-Dekodieriterationen erreicht ist und der LDPC-Dekodierer 3 scheiterte, den FEC-Block erfolgreich zu dekodieren, wird eine Fehlerangabe am Dekodierschaltungsausgang 15 von 1-3 ausgegeben, die zum Beispiel ein Fehlerflag sein kann. Als Reaktion auf die Fehlerangabe gibt Speichersteuerung 6 eine Fehlermeldung an dem Speichersteuerungsausgang 19 aus. Als Reaktion auf die Fehlermeldung kann der Host-Computer dann einen RAID-Prozess durchführen, um das Codewort wiederherzustellen.
  • Wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, gibt die Dekodierschaltung 1 das Codewort an dem Dekodierschaltungsausgang 15 aus. Als Reaktion auf die Ausgabe des Codeworts am Dekodierschaltungsausgang 15 gibt die Speichersteuerung 6 das Codewort an dem Speichersteuerungsausgang 19 aus.
  • 5 veranschaulicht ein Beispiel einer Trapped-Block-Dekodieriteration. Der Begriff „Trapped-Block-Dekodieriteration“, wie hierin verwendet, bezieht sich auf eine Dekodieriteration an einem Block, der als ein Trapped-Block bestimmt wurde. Bei jeder Trapped-Block-Dekodieriteration erzeugt die Trap-Steuerung 2 eine aktualisierte LLR-Karte. In dem in 5 gezeigten Beispiel sind Rohbitwerte des FEC-Links 21 mit der Trap-Steuerung 2 über Verbindung 17 gekoppelt, welche die Trap-Steuerung 2 mit dem Blockpufferspeicher 5 koppelt, und die Trap-Steuerung 2 verwendet die empfangenen Rohbitwerte des FEC-Links 21, um eine aktualisierte LLR-Karte 30 zu erzeugen (die auch als die „erste aktualisierte LLR-Karte“ bezeichnet werden kann). Die Trap-Steuerung 2 stellt dem LDPC-Dekodierer 3 die aktualisierte LLR-Karte 30 und den Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 bereit; und sendet eine Angabe an die LDPC-Steuerung 3, um einen Dekodiervorgang über den Steuereingang 16 durchzuführen. In dem vorliegenden Beispiel koppelt die Trap-Steuerung 2 den Fehlgeschlagenen-Dekodier-Block aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 mit der LDPC-Steuerung 5 durch Speichern des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 im Blockpufferspeicher 5 (z. B. Überschreiben der zuvor gespeicherten Rohbitwerte des FEC-Links 21). Als Reaktion auf jede Angabe verwendet der LDPC-Dekodierer 3 die aktualisierte LLR-Karte 30, um einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 durchzuführen. In der ersten Trapped-Block-Dekodieriteration ist der Fehlgeschlagene-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang 25 der Fehlgeschlagene-Dekodier-Ausgangsblock 24 von 4. In dem Fall, dass die Dekodierung erfolgreich ist, wird das resultierende Codewort bei 12 ausgegeben und die Trap-Steuerung 2 gibt das Codewort am Dekodierschaltungsausgang 15 aus. Wenn die LDPC-Dekodierung nicht erfolgreich ist, fährt der iterative Prozess fort, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde.
  • In einem Beispiel werden alle Trapped-Block-Dekodieriterationen unter Verwendung des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 durchgeführt. Alternativ können jedoch eine oder mehrere Trapped-Block-Dekodieriteration an den Rohbitwerten des FEC-Blocks 21 durchgeführt werden.
  • 6 zeigt ein Beispiel einer Trapped-Block-Dekodieriteration, bei der der Dekodiervorgang an den Rohbitwerten des FEC-Blocks 21 durchgeführt wird. In diesem Beispiel werden die Rohbitwerte des FEC-Blocks 21, die im Blockpufferspeicher 5 im Beispiel von 4 gespeichert wurden, nicht geändert und werden erneut verwendet, um einen Dekodiervorgang durchzuführen. In diesem Beispiel werden die aktualisierte LLR-Karte 30 und die Rohbitwerte des FEC-Blocks 21, die im Blockpufferspeicher 5 gespeichert wurden, mit dem LDPC-Dekodierer 3 gekoppelt. Die Trap-Steuerung 2 sendet eine Angabe an die LDPC-Steuerung 3 (z. B. über den Steuereingang 16), um einen Dekodiervorgang durchzuführen. Als Reaktion auf die Angabe verwendet der LDPC-Dekodierer 3 die erste aktualisierte LLR-Karte 30, um den Dekodiervorgang an den Rohbitwerten des FEC-Blocks 21 durchzuführen. In dem Fall, dass die Dekodierung von 6 erfolgreich ist, wird das resultierende Codewort bei 12 ausgegeben und die Trap-Steuerung 2 gibt das Codewort am Dekodierschaltungsausgang 15 aus. In einem Beispiel werden alle Trapped-Block-Dekodieriterationen unter Verwendung der Rohbitwerte des FEC-Blocks 21 durchgeführt. In einem anderen Beispiel werden ein oder mehrere Trapped-Block-Dekodieriterationen unter Verwendung der Rohbitwerte des FEC-Blocks 21 durchgeführt, und dann werden ein oder mehrere Trapped-Block-Dekodieriterationen unter Verwendung des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang 25 durchgeführt.
  • 7 veranschaulicht ein Beispiel, bei dem N Trapped-Block-Dekodieriterationen vorhanden sind. In diesem Beispiel werden in der ersten fehlgeschlagenen Dekodierung 20a die Rohbitwerte des FEC-Blocks 21 und die anfängliche LLR-Karte 22 in die LDPC-Steuerung 3 eingegeben; und die LDPC-Steuerung 3 führt einen Dekodiervorgang an Rohbitwerten des FEC-Blocks 21 unter Verwendung der anfänglichen LLR-Karte 22 durch, um den Fehlgeschlagenen-Dekodier-Ausgangsblock 24 an dem dekodierten Blockausgang 12 auszugeben. In einer ersten Trapped-Block-Dekodieriteration 40a erzeugt die Trap-Steuerung 2 eine erste aktualisierte LLR-Karte 30 und koppelt die erste aktualisierte LLR-Karte 30 und entweder den Fehlgeschlagenen-Dekodier-Ausgangsblock 24 oder die Rohbitwerte des FEC-Blocks 21 mit der LDPC-Steuerung 3. Die LDPC-Steuerung 3 führt dann unter Verwendung der ersten aktualisierten LLR-Karte 30 einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock 24 oder Rohbitwerten des FEC-Blocks 21 durch. In diesem Beispiel ist der Dekodierprozess nicht erfolgreich, so dass ein Fehlgeschlagener-Dekodier-Ausgangsblock 34 bei dem dekodierten Blockausgang 12 erzeugt wird. In einer zweiten Trapped-Block-Dekodieriteration 40b erzeugt die Trap-Steuerung 2 eine zweite aktualisierte LLR-Karte 31 und koppelt die zweite aktualisierte LLR-Karte 31 und entweder den Fehlgeschlagenen-Dekodier-Ausgangsblock 34 oder die Rohbitwerte des FEC-Blocks 21 mit der LDPC-Steuerung 3. Die LDPC-Steuerung 3 führt dann unter Verwendung der zweiten aktualisierten LLR-Karte 31 einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock 34 oder Rohbitwerten des FEC-Blocks 21 durch. In diesem Beispiel ist der Dekodiervorgang nicht erfolgreich, so dass ein Fehlgeschlagener-Dekodier-Ausgangsblock 35 bei dem dekodierten Blockausgang 12 erzeugt wird. In einer dritten Trapped-Block-Dekodieriteration 40c erzeugt die Trap-Steuerung 2 eine dritte aktualisierte LLR-Karte 32 und koppelt die dritte aktualisierte LLR-Karte 32 und entweder den Fehlgeschlagenen-Dekodier-Ausgangsblock 35 oder die Rohbitwerte des FEC-Blocks 21 mit der LDPC-Steuerung 3. Die LDPC-Steuerung 3 führt dann unter Verwendung der dritten aktualisierten LLR-Karte 32 einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock 35 oder Rohbitwerten des FEC-Blocks 21 durch. In diesem Beispiel ist der Dekodierprozess nicht erfolgreich, so dass ein Fehlgeschlagener-Dekodier-Ausgangsblock 36 bei dem dekodierten Blockausgang 12 ausgegeben wird.
  • Der Prozess wird fortgesetzt, bis ein Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl (z. B. „N“) Trapped-Block-Dekodieriterationen durchgeführt wurde. Im vorliegenden Beispiel werden „N“-Iterationen durchgeführt und in der N-ten Iteration wird die N-te aktualisierte LLR-Karte 33 und entweder die Rohbitwerte des FEC-Blocks 21 oder der Fehlgeschlagene-Dekodier-Ausgangsblock 37 aus der vorherigen fehlgeschlagenen Dekodieriteration im Dekodiervorgang verwendet. Wenn der LDPC-Dekodiervorgang erfolgreich ist, wird ein Codewort 38 bei dem dekodierten Blockausgang 12 ausgegeben. Wenn der N-te Dekodiervorgang nicht erfolgreich ist, wird der Fehlgeschlagene-Dekodier-Ausgangsblock 39 bei dem dekodierten Blockausgang 12 ausgegeben, und eine Fehlermeldung wird von der Dekodierschaltung 1 ausgegeben.
  • In einem Beispiel schließt die Trap-Steuerung 2 einen Zähler ein, der die Anzahl der Trapped-Block-Dekodieriterationen zählt, in denen die LDPC-Steuerung 3 scheitert, den FEC-Block zu dekodieren, der als ein Trapped-Block bestimmt wurde. Die Trap-Steuerung 2 vergleicht den Wert im Zähler mit der maximalen Anzahl von Iterationen und bestimmt, dass die maximale Anzahl von Iterationen erreicht wurde, wenn der Zähler gleich der maximalen Anzahl von Iterationen ist. In einem Beispiel wird der Zähler in der Trap-Steuerung 2 gelöscht, wenn ein Dekodiervorgang des LDPC-Dekodierers 3 erfolgreich ist. In einem Beispiel wird der Zähler gelöscht, wenn durch den Trap-Erfassungs-Komparator 4 bestimmt wird, dass der FEC-Block ein Trapped-Block ist.
  • In einem Beispiel ist N gleich einer Anzahl unterschiedlicher LLR-Karten, die durch die Trap-Steuerung 2 erzeugt werden, und die Trap-Steuerung 2 führt die Durchführung von Iterationen fort, bis das Codewort identifiziert wurde oder alle LLR-Karten versucht wurden.
  • Die LLR-Werte in aktualisierten LLR-Karten 30-32 können in einer beliebigen Anzahl verschiedener Arten erzeugt werden, und können abhängig von entsprechenden Rohbitwerten in Rohbitwerten von FEC-Block 21 sein. 8A-8D zeigen Beispiele zum Erzeugen von aktualisierten LLR-Karten 30-33. In dem in 8A veranschaulichten Beispiel verwendet die Trap-Steuerung 2 schwache Bitwerte, die jedem Bit im FEC-Block (41) entsprechen, und stochastische Wahrscheinlichkeitswerte, die jedem Bit im FEC-Block (42) entsprechen, um die aktualisierte LLR-Karte (43) zu erzeugen. In einem Beispiel wird eine H-Matrix in der durch den LDPC-Dekodierer 3 durchgeführten Dekodierung analysiert, um entsprechende Bits zu identifizieren, die als schwache Bits betrachtet werden. Bits, die nicht als schwache Bits identifiziert werden, werden im Folgenden als „robuste“ Bits bezeichnet. Schwache Bits sind Bits, die eine schlechte Dekodierleistung aufweisen und durch Durchführen von Tests (z. B. in einem Testlabor) identifiziert werden können, um Bitpositionen in der H-Matrix zu identifizieren, die wahrscheinlicher fehlerhaft in LDPC-Dekodiervorgängen sind, welche die bestimmte H-Matrix verwenden. In einem Beispiel schließt das Testen das Codieren von Codewörtern unter Verwendung der bestimmten H-Matrix, Speichern der Codewörter auf Speichervorrichtungen und Dekodieren der gespeicherten Codewörter unter Verwendung der H-Matrix und Identifizieren von Bitpositionen mit der höchsten Anzahl von Bitfehlern ein.
  • In einem in 8B gezeigten Beispiel wendet die Trap-Steuerung (52) eine prozentuale Variation an einzelne der Rohbitwerte der FEC-Bits an, um (53) die stochastischen Wahrscheinlichkeitswerte zu erzeugen. In diesem Beispiel werden schwache Bitwerte (51) und erzeugte stochastische Wahrscheinlichkeitswerte (53) verwendet, um die aktualisierte LLR-Karte (54) zu erzeugen. Unter erneuter Bezugnahme auf 5 liest in einem Beispiel die Trap-Steuerung 2 die Rohbitwerte des FEC-Blocks 21 aus dem Blockpufferspeicher 5 und erzeugt stochastische Wahrscheinlichkeitswerte durch Ändern eines oder mehrerer der Bitwerte von Rohbitwerten des FEC-Blocks 21 auf einen anderen Bitwert, um den stochastischen Wahrscheinlichkeitswert zu erzeugen. In einem Beispiel werden einige oder alle Rohbitwerte des FEC-Blocks 21 auf eine Weise geändert, die der prozentualen Variation 52 entspricht, sodass die stochastischen Wahrscheinlichkeitswerte die prozentuale Variation 52 aufweisen. In einem Beispiel wird der stochastische Wahrscheinlichkeitswert durch Ändern des Vorzeichens eines jeweiligen LLR (z. B. positiv zu negativ oder negativ zu positiv) erzeugt, was zu einem zufälligen Umschalten einer Null zu einer Eins oder einer Eins zu einer Null führt.
  • In einem in 8C gezeigten Beispiel werden stochastische Wahrscheinlichkeitswerte unter Verwendung von prozentualer Variation (65) erzeugt (66), und die schwachen Bitwerte schließen einen schwachen LLR-Wert (W) bei 62 und einen schwachen LLR-Delta-Wert (Wd) bei 64 ein. In diesem Beispiel verwendet die Trap-Steuerung einen robusten LLR-Wert (S) bei 61, W bei 62, einen robusten LLR-Delta-Wert (Sd) bei 63, Wd bei 64 und erzeugte stochastische Wahrscheinlichkeitswerte (66), um die aktualisierte LLR-Karte 68 zu erzeugen. Der Begriff „robust“ wird in der vorliegenden Anmeldung verwendet, um einfach einen LLR-Wert anzugeben, der sich auf eine Bitposition bezieht, die nicht einem schwachen Bit entspricht (d. h. entsprechend einem robusten Bit), und der Begriff soll keine anderen Bedeutungen aufweisen. In einem Beispiel werden schwache Bitwerte durch Identifizieren schwacher Spalten in der H-Matrix bestimmt. In diesem Beispiel weist jeder LLR-Wert in der aktualisierten LLR-Karte, der einer schwachen Spalte der H-Matrix entspricht, einen LLR-Wert auf, der gleich W ist, und jeder LLR-Wert in der aktualisierten LLR-Karte, der einer Spalte der H-Matrix entspricht, die keine schwache Spalte ist, weist einen LLR-Wert auf, der gleich S ist.
  • In einem Beispiel sind S herkömmliche LLR-Werte, die normalerweise verwendet werden würden, um eine bestimmte Bitposition zu dekodieren, und W sind Werte, die zum Dekodieren einer bestimmten Bitposition dienen, wenn bestimmt wird, dass diese Bitposition einem schwachen Bit in der H-Matrix entspricht. In einem Beispiel sind die herkömmlichen Eingangswerte jeweils die Hälfte des maximalen Eingangs-LLR-Werts (LLRMAX), z. B. LLRMAX/2. Sd sind Werte, die sich von den entsprechenden herkömmlichen LLR-Werten unterscheiden, die normalerweise verwendet werden würden, um eine bestimmte Bitposition zu dekodieren, und können abhängig von dem entsprechenden S für eine bestimmte Bitposition sein (z. B. Sd = ½*S). Wd sind Werte, die sich von dem entsprechenden W-Wert unterscheiden und können abhängig von dem entsprechenden W für eine bestimmte Bitposition (z. B. Wd = ½*W) sein. In einem Beispiel wird jedes S auf einen ersten vorbestimmten Wert eingestellt und jedes W wird auf einen zweiten vorbestimmten Wert eingestellt, der sich von dem ersten vorbestimmten Wert unterscheidet. Alternativ können jedes S und W in den Rohbitwerten des FEC-Blocks 21 auf einen unterschiedlichen Wert eingestellt werden. In einem anderen Beispiel ist S für eine bestimmte Bitposition gleich dem LLR-Wert der bestimmten Bitposition in der anfänglichen LLR-Karte 22, W ist für jede Bitposition abhängig von dem LLR-Wert der bestimmten Bitposition in der anfänglichen LLR-Karte 22, Sd ist für jede Bitposition abhängig von dem entsprechenden S für diese bestimmte Bitposition und Wd ist für jede Bitposition abhängig von dem entsprechenden W für diese bestimmte Bitposition.
  • 8D veranschaulicht eine Funktion, die verwendet werden kann, um eine LLR-Karte zu erzeugen, bei der die Rohbitwerte in einer ersten Spalte 71 angegeben werden, stochastische Bitwerte in einer zweiten Spalte 72 angegeben werden, schwache Bitwerte 73 in der dritten Spalte 73 angegeben werden und die Funktion, die zum Bestimmen von LLR für diese bestimmte Bitposition verwendet wird, wird in Spalte 74 angegeben. In diesem Beispiel erhalten die schwachen Bits einen schwachen Bitwert von 1 und Bits, die keine schwachen Bits sind, erhalten einen schwachen Bitwert von 0. Wie durch Zeile 70a angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „0“ aufweist, einen stochastischen Bitwert von „0“ und kein schwaches Bit ist (einen schwachen Bitwert von „0“ aufweist), ist der Eingang LLR für diese Bitposition positiv S. Wie durch Zeile 70b angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „0“ aufweist, einen stochastischen Bitwert von „0“ und ein schwaches Bit ist (einen schwachen Bitwert von „1“ aufweist), ist der Eingang LLR für diese Bitposition positiv W. Wie durch Zeile 70c angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „0“ aufweist, einen stochastischen Bitwert von „1“ und kein schwaches Bit ist (einen schwachen Bitwert von „0“ aufweist), ist der Eingang LLR für diese Bitposition positiv (S+Sd). Wie durch Zeile 70d angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „0“ aufweist, einen stochastischen Bitwert von „1“ und ein schwaches Bit ist (einen schwachen Bitwert von „1“ aufweist), ist der Eingang LLR für diese Bitposition positiv (W+Wd). Wie durch Zeile 70e angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „1“ aufweist, einen stochastischen Bitwert von „0“ und kein schwaches Bit ist (einen schwachen Bitwert von „0“ aufweist), ist der Eingang LLR für diese Bitposition negativ S. Wie durch Zeile 70f angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „1“ aufweist, einen stochastischen Bitwert von „0“ und ein schwaches Bit ist (einen schwachen Bitwert von „1“ aufweist), ist der Eingang LLR für diese Bitposition negativ W. Wie durch Zeile 70g angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „1“ aufweist, einen stochastischen Bitwert von „1“ und kein schwaches Bit ist (einen schwachen Bitwert von „0“ aufweist), ist der Eingang LLR für diese Bitposition negativ (S Sd). Wie durch Zeile 70 h angegeben, wenn eine bestimmte Bitposition einen Rohbitwert von „1“ aufweist, einen stochastischen Bitwert von „1“ und ein schwaches Bit ist (einen schwachen Bitwert von „1“ aufweist), ist der Eingang LLR für diese Bitposition negativ (W+Wd). In einem Beispiel ist S-8, W=4, SD=2 und Wd=1, so dass die starken Eingänge das Zweifache der schwachen Eingänge sind. In einem anderen Beispiel ist S=8, W=2, Sd=0, Wd=2. In noch einem anderen Beispiel sind die S-Werte 8 und schwache Werte sind zufällig entweder 4 oder 0. In einem in 8E veranschaulichten Beispiel wird eine Benutzereingabe empfangen, die schwache Bitwerte bei 81 (z. B. empfangen am Eingang 14 und/oder 18) angibt, und in diesem Beispiel schließt die Benutzereingabe S bei 61, W bei 62, Sd bei 63 und WD bei 64 ein. Die Benutzereingabe, die eine prozentuale Variation angibt, wird bei 82 empfangen (z. B. am Eingang 14 und/oder 18 empfangen) und die Trap-Steuerung 2 wendet die prozentuale Variation an einzelne der Rohbitwerte der FEC-Bits an, um bei 66 einen stochastischen Wahrscheinlichkeitswert zu erzeugen, der jedem Bit im FEC-Block entspricht.
  • Die Trap-Steuerung 2 verwendet die erzeugten stochastischen Wahrscheinlichkeitswerte, S, W, Sd und Wd, um die aktualisierte LLR-Karte bei 83 zu erzeugen. In einem Beispiel wird die Benutzereingabe durch einen Hersteller von SSD bereitgestellt, indem die Benutzereingabe am Eingang 18 hochgeladen wird, bevor SSD 9 an einen Kunden gesendet wird. Zusätzlich zum Empfangen der Eingabe, die schwache Bitwerte angibt, und der Eingabe, die die prozentuale Variation angibt, wie in 8E gezeigt, kann die Eingabe empfangen werden (z. B. am Eingang 14 und/oder 18), die den Fehlerschwellenwert angibt, um dem Hersteller der SSD 9 zu ermöglichen, schwache Bitwerte, die prozentuale Variation und den Fehlerschwellenwert zu variieren, um die Bedürfnisse eines bestimmten Kunden oder einer Gruppe von Kunden zu erfüllen.
  • In einem Beispiel stellen alle positiven Werte der LLR-Karte 0 dar und alle negativen Werte der LLR-Karte stellen 1 dar. Die Größen stellen die Konfidenz dar. In einem Beispiel gibt eine Größe von 0 an, dass ein geringer Konfidenzbetrag (d. h. keine Konfidenz, ob das bestimmte Bit eine 1 oder eine 0 ist) und der Konfidenzbetrag steigt, wenn sich die Größe 15 annähert. In diesem Beispiel ist ein LLR von 2 eine sehr schwache 0, ein LLR von 4 ist eine schwache 0 und ein LLR von 15 ist eine starke 0. In ähnlicher Weise ist ein LLR von 12 eine sehr schwache 1, ein LLR von -4 ist eine schwache 1, und ein LLR von -15 ist eine starke 1.
  • Nachfolgende aktualisierte LLR-Karten 31-33 können auf die gleiche Weise erzeugt werden wie die erste aktualisierte LLR-Karte 30. Alternativ kann einer von mehreren der folgenden Faktoren beim Erzeugen nachfolgender aktualisierter LLR-Karten 31-33 im Vergleich zu der ersten aktualisierten LLR-Karte 30 variiert werden: S, Sd, W, Wd und die prozentuale Variation 52.
  • In einem Beispiel unterscheiden sich nachfolgende aktualisierte LLR-Karten 31-33 voneinander als Ergebnis der Änderung einer oder mehrerer der stochastischen Wahrscheinlichkeitswerte S, W, Sd und Wd. In einem Beispiel werden aktualisierte LLR-Karten 31-33 auf die gleiche Weise wie die aktualisierte LLR-Karte 30 erzeugt, außer dass einer oder mehrere von S, W, Sd und Wd geändert werden oder eine Funktion auf einem oder mehreren von S, W, Sd und Wd durchgeführt wird, um das Ergebnis zu variieren.
  • In einem anderen Beispiel ist jede aktualisierte LLR-Karte abhängig von den Bitwerten in dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus einer vorherigen Iteration 25. In einem Beispiel wird jede Trapped-Block-Dekodieriteration auf die gleiche Weise durchgeführt wie in 8D veranschaulicht, unter Verwendung des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einer vorherigen Iteration 25 bei FEC-Blockeingang 10 und unter Verwendung einer aktualisierten LLR-Karte, die auf die gleiche Weise wie die nachfolgende aktualisierte LLR-Karte 30 erzeugt wird, außer dass anstelle der Verwendung von Rohbitwerten des FEC-Blocks 21 in Spalte 71 von 8D die Bitwerte von dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus einer vorherigen Iteration 25 in der Berechnung verwendet werden. In diesem Beispiel wird in der in 7 veranschaulichten ersten Trapped-Block-Dekodieriteration die in 8D veranschaulichte Funktion auf die jeweiligen Bitwerte in dem Fehlgeschlagenen-Dekodier-Ausgangsblock 24 angewendet, um die LLR-Werte in der ersten aktualisierten LLR-Karte 30 zu erzeugen. In der zweiten Trapped-Block-Dekodieriteration 40b wird die in 8D veranschaulichte Funktion auf die jeweiligen Bitwerte in dem Fehlgeschlagenen-Dekodier-Ausgangsblock 34 angewendet, um die LLR-Werte in der zweiten aktualisierten LLR-Karte 31 zu erzeugen. In der dritten Trapped-Block-Dekodieriteration 40c wird die in 8D veranschaulichte Funktion auf die jeweiligen Bitwerte in dem Fehlgeschlagenen-Dekodier-Ausgangsblock 35 angewendet, um die LLR-Werte in der dritten aktualisierten LLR-Karte 32 zu erzeugen.
  • In einem Beispiel sind sowohl der erste fehlgeschlagene Dekodiervorgang als auch die Trapped-Block-Dekodieriterationen eine Soft-Dekodierung mit drei verschiedenen Informationsbits (roh, stark/schwach und stochastisch), die in jeden LLR-Wert in der LLR-Karte integriert sind, wobei 8 Werte jedem Eingangsbit entsprechen. In einem Beispiel schließen sowohl die anfängliche LLR-Karte 22 als auch die aktualisierten LLR-Karten 30-33 LLR-Werte ein, die beliebige von acht verschiedenen Werten sein können, 4 verschiedene 1 (die jeweils eins von 4 verschiedenen Konfidenzniveaus aufweisen) und 4 verschiedenen 0 (die jeweils eins von 4 verschiedenen Konfidenzniveaus aufweisen). In einem Beispiel wird eine 3-Bit-Soft-Dekodierung verwendet, bei der jede einzelne LLR-Karte 22 und 30-33 einen einzelnen LLR-Wert angibt, der jeder Rohbitposition entspricht, die ein einzelner vorzeichenbehafteter Wert ist, welcher der bestimmten Rohbitposition entspricht.
  • In einem Beispiel ist die Anzahl der Trapped-Block-Dekodieriterationen gleich der Anzahl der aktualisierten LLR-Karten, die durch die Trap-Steuerung 2 erzeugt werden, wobei jede Trapped-Block-Dekodieriteration eine andere LLR-Karte verwendet, bis alle LLR-Karten versucht wurden. In einem Beispiel werden 8 verschiedene LLR-Karten durch die Trap-Steuerung 2 erzeugt und jede Trapped-Block-Dekodieriteration verwendet eine andere der acht LLR-Karten, wobei Trapped-Block-Dekodieriterationen fortgesetzt werden, bis der Dekodiervorgang erfolgreich das Codewort identifiziert oder alle acht verschiedenen LLR-Karten versucht wurden.
  • In dem in 4 gezeigten Beispiel wurde die erste fehlgeschlagene Dekodierung als ein Hard-Dekodiervorgang oder ein Soft-Dekodiervorgang (z. B. eine 3-Bit-Soft-Dekodierung) beschrieben. Alternativ erzeugt der erste fehlgeschlagene Dekodiervorgang jedoch die anfängliche LLR-Karte auf eine Weise, die in einer oder mehreren von 8A-8E veranschaulicht ist. In einem solchen Beispiel ist die erste fehlgeschlagene Dekodierung eine Soft-Dekodierung mit drei verschiedenen Informationsbits, die roh, stark/schwach und stochastisch sind, mit 8 verschiedenen möglichen Werten, die jedem Eingangsbit entsprechen (4 verschiedene 1 mit 4 verschiedenen Konfidenzniveaus und 4 verschiedene 0 mit 4 verschiedenen Konfidenzniveaus).
  • 9A veranschaulicht ein Beispiel einer Dekodierschaltung 1a, die keinen Blockpufferspeicher 5 einschließt. In diesem Beispiel ist der Dekodierschaltungseingang 14 direkt mit dem FEC-Blockeingang 10 und der Trap-Steuerung 2 gekoppelt. Die Dekodierschaltung 1a arbeitet auf die gleiche Weise wie die in 1-8 erörterte Dekodierschaltung 1, außer wie nachstehend angegeben. 9B veranschaulicht ein Beispiel einer Speichersteuerung 6a, die eine Dekodierschaltung 1a aufweist, die keinen Blockpufferspeicher 5 einschließt. Die Speichersteuerung 6a arbeitet auf die gleiche Weise wie die in 1-8 erörterte Speichersteuerung 6, außer wie nachstehend angegeben. 9C veranschaulicht ein Beispiel einer SSD 9a, die eine Speichersteuerung 6a und eine Dekodierschaltung 1a aufweist, die keinen Blockpufferspeicher 5 einschließt. Die SSD 9a arbeitet auf die gleiche Weise wie die in 1-8 erörterte SSD 9, außer wie nachstehend angegeben. In den Beispielen von 9A-9C werden die FEC-Blöcke, die am Dekodierschaltungseingang 14 empfangen werden, direkt vom Dekodierschaltungseingang 14 mit dem FEC-Blockeingang 10 des LDPC-Dekodierers 3 gekoppelt. In einem Beispiel ist die Trap-Steuerung 2 betriebsfähig, um Rohbitwerte des FEC-Blocks 21 und Fehlgeschlagene-Dekodier-Ausgangsblöcke nach Bedarf zu speichern, um aktualisierte LLR-Karten zu erzeugen und entweder Rohbitwerte des FEC-Blocks 21 oder Fehlgeschlagene-Dekodier-Ausgangsblöcke mit dem LDPC-Dekodierer 3 zu koppeln.
  • 10 veranschaulicht ein Verfahren (100) zum Dekodieren, welches das Durchführen (101) eines ersten fehlgeschlagenen Dekodiervorgangs an Rohbitwerten eines Vorwärts-Fehlerkorrektur-Blocks (forward error correction, FEC-Block) durch einen Low-Density-Parity-Check-Dekodierer (low-density parity check, LDPC-Dekodierer) einschließt, der ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt. Das Verfahren schließt das Bestimmen (102) ein, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird. Der FEC-Block wird als ein Trapped-Block bestimmt, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist. Wenn das Dekodieren fehlschlägt (101) und der FEC-Block nicht als ein Trapped-Block (103) bestimmt wird, wird eine Fehlerangabe ausgegeben (111). Wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, schließt das Verfahren das Durchführen von Trapped-Block-Dekodieriterationen (104-109, 116) ein. Jedes der Trapped-Block-Dekodieriterationen schließt Folgendes ein: Erzeugen (104) einer aktualisierten LLR-Karte, Bereitstellen (105), an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block, Durchführen (106) eines Dekodiervorgangs des LDPC-Dekodierers unter Verwendung der aktualisierten LLR-Karte an den Bitwerten des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block. Die Trapped-Block-Dekodieriterationen der Blöcke 104-106 werden durchgeführt, bis der Dekodiervorgang erfolgreich ist (107, 110) oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde (107-108, 117). Nach jeder Trapped-Block-Dekodieriteration wird ein Zähler der Trap-Steuerung 2 hochgezählt (I=I+1) (109) und der Zähler wird zum Bestimmen in Block 108 verwendet, ob die maximale Anzahl von Iterationen erreicht wurde. Wenn der Dekodiervorgang erfolgreich (107) beim Dekodieren des FEC-Blocks ist, wird das Codewort ausgegeben (110). Wenn der Dekodiervorgang beim Dekodieren des FEC-Blocks nicht erfolgreich ist und die vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde (107-108, 117), wird eine Fehlerangabe über den Pfad 117 ausgegeben (111).
  • In einem Beispiel wird die Fehlerangabe (111) am Dekodierschaltungsausgang 15 von 1-3 ausgegeben und als Reaktion auf die Fehlerangabe gibt die Speichersteuerung 6, 6a eine Fehlermeldung aus. Der Host-Computer kann dann einen RAID-Prozess durchführen, um das Codewort wiederherzustellen.
  • Die Dekodieriteration der Schritte 104-106 kann unter Verwendung von Rohbitwerten des FEC-Blocks oder unter Verwendung eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block durchgeführt werden. 11 veranschaulicht ein Beispiel, bei dem das Dekodieren an Rohbitwerten des FEC-Blocks durchgeführt wird. In diesem Beispiel schließt die Trapped-Block-Dekodieriteration Folgendes ein: Erzeugen (201) einer aktualisierten LLR-Karte, Bereitstellen, an den LDPC-Dekodierer (202), der aktualisierten LLR-Karte und der Rohbitwerte des FEC-Blocks, und Durchführen (203) eines Dekodiervorgangs an den Rohbitwerten des FEC-Blocks unter Verwendung der aktualisierten LLR-Karte.
  • 12 zeigt ein Beispiel, bei dem die Dekodieriteration der Schritte 104-106 unter Verwendung eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block durchgeführt wird. In diesem Beispiel schließt die Trapped-Block-Dekodieriteration Folgendes ein: Erzeugen (301) einer aktualisierten LLR-Karte; Bereitstellen (302), an den LDPC-Dekodierer, des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block und der aktualisierten LLR-Karte, und Durchführen (303) eines Dekodiervorgangs an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block unter Verwendung der aktualisierten LLR-Karte.
  • 13 zeigt Beispiele von zusätzlichen Blöcken, die in dem Verfahren 100 eingeschlossen sein könnten. Wie durch Block 401 gezeigt, schließt das Verfahren 100 das Empfangen einer Eingabe ein, die eine prozentuale Variation angibt, und die stochastischen Wahrscheinlichkeitswerte werden durch Anwenden der prozentualen Variation auf einzelne der Rohbitwerte des FEC-Blocks erzeugt.
  • Wie durch Block 402 gezeigt, schließt das Verfahren 100 das Speichern der Rohbitwerte des FEC-Blocks oder das Speichern des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block ein. Wie durch Block 403 gezeigt, schließt das Verfahren 100 das Erzeugen der aktualisierten LLR-Karte unter Verwendung der gespeicherten Rohbitwerte des FEC-Blocks, der stochastischen Wahrscheinlichkeitswerte, die jedem Bit in dem FEC-Block entsprechen, und der schwachen Bitwerte, die jedem Bit in dem FEC-Block entsprechen, ein.
  • Wie durch Block 404 gezeigt, schließt das Verfahren 100 ein Empfangen der Eingabe ein, die S, W, Sd und Wd angibt, wobei jeder LLR-Wert in der aktualisierten LLR-Karte, der einer schwachen Spalte der H-Matrix entspricht, einen LLR-Wert aufweist, der gleich W ist, und wobei jeder LLR-Wert in der aktualisierten LLR-Karte, der einer Spalte der H-Matrix entspricht, die keine schwache Spalte ist, einen LLR-Wert aufweist, der gleich S ist.
  • 14 zeigt ein Diagramm, das einen Frame-Fehler auf der vertikalen Achse und eine Bitfehlerrate (bit error rate, BER) auf der horizontalen Achse veranschaulicht. Das Diagramm veranschaulicht Wasserfall 93 und eine Leistungskurve 91 für einen herkömmlichen LDPC-Dekodierprozess. Es ist zu erkennen, dass die Leistungskurve 91 beim Annähern an den Error-Floor 94 seitlich abweicht. Die Oberseite des Wasserfalls 93 ist nicht sichtbar, da sie sich entlang der Leistungskurve 91 erstreckt, wobei nur der Abschnitt des Wasserfalls 93 sichtbar ist, der sich unter dem erstreckt, wo die Leistungskurve 91 vom Wasserfall 92 abweicht.
  • 15 zeigt ein Diagramm, das einen Frame-Fehler auf der vertikalen Achse und eine Bitfehlerrate (bit error rate, BER) auf der horizontalen Achse veranschaulicht. Das Diagramm veranschaulicht eine Leistungskurve 92 gemäß einem Beispiel des in 1-13 gezeigten Verfahrens und der Einrichtung. Es ist zu erkennen, dass sich die Leistungskurve 92 unter dem Error-Floor 94 für den herkömmlichen LDPC-Dekodierprozess erstreckt, der in 14 veranschaulicht ist.
  • Es versteht sich, dass 1-13 Beispiele sind und dass viele andere Beispiele möglich sind, einschließlich der Verwendung bekannter Verfahren zum Dekodieren von Trapped-Einstellungen in Verbindung mit den in der vorliegenden Anmeldung offenbarten Verfahren und Einrichtungen. In einem Beispiel werden ein oder mehrere bekannte herkömmliche Verfahren zum Dekodieren von Trapped-Einstellungen auch bei der Dekodierung eines Trapped-Blocks verwendet. Zum Beispiel kann eine herkömmliche Dekodieriteration nach der ersten fehlgeschlagenen Dekodierung 20a, die in 8 gezeigt ist, und vor der ersten Trapped-Block-Dekodieriteration 20b hinzugefügt werden, bei der eine LLR-Karte für die Dekodierung verwendet wird, die einen vorbestimmten Satz von LLR-Werten einschließt, von denen jeder auf einen vorbestimmten niedrigen LLR-Wert eingestellt wird. Zum Beispiel kann ein herkömmlicher Dekodiervorgang hinzugefügt werden, bei dem der LLR-Wert auf einen vorbestimmten niedrigen Wert eingestellt wird.
  • In der Beschreibung sind zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um ein umfassendes Verständnis der vorliegenden Erfindung bereitzustellen. Es ist jedoch für den Durchschnittsfachmann offensichtlich, dass die vorliegende Erfindung ohne diese spezifischen Details umgesetzt werden kann. In einigen Fällen sind hinlänglich bekannte Strukturen und Vorrichtungen in Form eines Blockdiagramms und nicht im Detail gezeigt, um die vorliegende Erfindung nicht zu verunklaren. Diese Ausführungsformen sind hinreichend detailliert beschrieben, um es dem Durchschnittsfachmann zu ermöglichen, die Erfindung umzusetzen, und es versteht sich, dass andere Ausführungsformen genutzt werden können und dass logische, mechanische, elektrische und andere Änderungen vorgenommen werden können, ohne vom Schutzumfang der vorliegenden Erfindung abzuweichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/249556 [0001]

Claims (19)

  1. Dekodierschaltung, umfassend: einen Eingang zum Empfangen von Rohbitwerten eines Vorwärts-Fehlerkorrektur-Blocks (forward error correction, FEC-Blocks); einen Low-Density-Parity-Check-Dekodierer (low-density parity check, LDPC-Dekodierer), der mit dem Eingang gekoppelt ist, wobei die LDPC-Steuerung einen fehlgeschlagene Dekodiervorgang an den Rohbitwerten des FEC-Blocks durchführt und ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt; einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, wobei der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist; und eine Trap-Steuerung, die mit dem Eingang, dem Trap-Erfassungs-Komparator und dem LDPC-Dekodierer gekoppelt ist, wobei, wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durchführt, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde, wobei bei jeder Trapped-Block-Dekodieriteration die Trap-Steuerung Folgendes tut: Erzeugen einer aktualisierten Log-Wahrscheinlichkeitsverhältnis-Karte (log likelihood ratio, LLR-Karte), Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang, und Senden einer Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen, und wobei als Reaktion auf die Angabe, der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen, wobei, wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Dekodierschaltung eine Fehlerangabe an einem Ausgang der Dekodierschaltung ausgibt, und wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, die Dekodierschaltung das Codewort ausgibt.
  2. Dekodierschaltung nach Anspruch 1, ferner umfassend einen Blockpufferspeicher, der mit dem Eingang gekoppelt ist, um die empfangenen Rohbitwerte des FEC-Blocks zu speichern, die mit dem LDPC-Dekodierer gekoppelt und mit der Trap-Steuerung gekoppelt sind, und wobei entweder die Rohbitwerte des FEC-Blocks oder ein Fehlgeschlagener-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang während einer jeweiligen Trapped-Block-Dekodieriteration im Blockpufferspeicher gespeichert werden.
  3. Dekodierschaltung nach Anspruch 2, wobei in jeder Trapped-Block-Dekodieriteration die Trap-Steuerung Folgendes tut Erzeugen einer aktualisierten LLR-Karte, Speichern eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang in dem Blockpufferspeicher, Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang, Senden einer Angabe an die LDPC-Steuerung, um einen Dekodiervorgang durchzuführen, und wobei als Reaktion auf jede nachfolgende Angabe, der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen.
  4. Dekodierschaltung nach Anspruch 2, wobei die Trap-Steuerung schwache Bitwerte, die jedem Bit in dem FEC-Block entsprechen, und stochastische Wahrscheinlichkeitswerte verwendet, die jedem Bit in dem FEC-Block entsprechen, um die aktualisierte LLR-Karte zu erzeugen.
  5. Dekodierschaltung nach Anspruch 4, wobei die schwachen Bitwerte einen schwachen LLR-Wert und einen schwachen LLR-Delta-Wert umfassen, und wobei die Trap-Steuerung einen robusten LLR-Wert, den schwachen LLR-Wert, einen robusten LLR-Delta-Wert und den schwachen LLR-Delta-Wert und die stochastischen Wahrscheinlichkeitswerte verwendet, um die aktualisierte LLR-Karte zu erzeugen.
  6. Speichersteuerung, umfassend: eine Dekodierschaltung, einschließend: einen Eingang zum Empfangen von Rohbitwerten eines Vorwärts-Fehlerkorrektur-Blocks (forward error correction, FEC-Blocks); einen Blockpufferspeicher, der mit dem Eingang gekoppelt ist, um die empfangenen Rohbitwerte des FEC-Blocks zu speichern; einen Low-Density-Parity-Check-Dekodierer (low-density parity check, LDPC-Dekodierer), der mit dem Blockpufferspeicher gekoppelt ist, wobei die LDPC-Steuerung einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durchführt und ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt; einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, wobei der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist; und eine Trap-Steuerung, die mit dem Blockpufferspeicher, dem Trap-Erfassungs-Komparator und dem LDPC-Dekodierer gekoppelt ist, wobei, wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durchführt, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde, wobei bei jeder Trapped-Block-Dekodieriteration die Trap-Steuerung Folgendes tut: Erzeugen einer aktualisierten Log-Wahrscheinlichkeitsverhältnis-Karte (log likelihood ratio, LLR-Karte), Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang, und Senden einer Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen, wobei als Reaktion auf die Angabe der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen, wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Speichersteuerung eine Fehlermeldung ausgibt, und wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, die Speichersteuerung das Codewort ausgibt.
  7. Speichersteuerung nach Anspruch 6, wobei der erste fehlgeschlagene Dekodiervorgang ein Dekodiervorgang ist, bei dem eine anfängliche LLR-Karte verwendet wird, um den ersten fehlgeschlagenen Dekodiervorgang durchzuführen, und wobei in jeder Trapped-Block-Dekodierungsiteration die Trap-Steuerung Folgendes tut Erzeugen einer aktualisierten LLR-Karte, Speichern eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang in dem Blockpufferspeicher, Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang, Senden einer Angabe an die LDPC-Steuerung, um einen Dekodiervorgang durchzuführen, und wobei als Reaktion auf die Angabe, der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen.
  8. Speichersteuerung nach Anspruch 6, wobei die Trap-Steuerung schwache Bitwerte, die jedem Bit in dem FEC-Block entsprechen, und stochastische Wahrscheinlichkeitswerte verwendet, die jedem Bit in dem FEC-Block entsprechen, um die aktualisierte LLR-Karte zu erzeugen.
  9. Speichersteuerung nach Anspruch 8, wobei die Trap-Steuerung eine prozentuale Variation auf einzelne der Rohbitwerte des FEC-Blocks anwendet, um die stochastischen Wahrscheinlichkeitswerte zu erzeugen.
  10. Speichersteuerung nach Anspruch 9, wobei die schwachen Bitwerte einen schwachen LLR-Wert und einen schwachen LLR-Delta-Wert umfassen, und wobei die Trap-Steuerung einen robusten LLR-Wert, den schwachen LLR-Wert, einen robusten LLR-Delta-Wert und den schwachen LLR-Delta-Wert und die stochastischen Wahrscheinlichkeitswerte verwendet, um die aktualisierte LLR-Karte zu erzeugen.
  11. Speichersteuerung nach Anspruch 6, umfassend einen Eingang: um eine Eingabe zu empfangen, die eine prozentuale Variation angibt, wobei die Trap-Steuerung die prozentuale Variation auf einzelne der Rohbitwerte des FEC-Blocks anwendet, um die stochastischen Wahrscheinlichkeitswerte zu bestimmen, wobei die Trap-Steuerung einen stochastischen Wahrscheinlichkeitswert erzeugt, der jedem Bit in dem FEC-Block entspricht, um eine Eingabe zu empfangen, die einen robusten LLR-Wert, einen schwachen LLR-Wert, einen robusten LLR-Delta-Wert und einen schwachen LLR-Delta-Wert angibt, und wobei die Trap-Steuerung die erzeugten stochastischen Wahrscheinlichkeitswerte, den robusten LLR-Wert, den schwachen LLR-Wert, den robusten LLR-Delta-Wert und den schwachen LLR-Delta-Wert verwendet, um die aktualisierte LLR-Karte zu erzeugen.
  12. Festkörperlaufwerk (solid state drive, SSD), umfassend: eine Vielzahl von Speichervorrichtungen; eine Speichersteuerung, die mit der Vielzahl von Speichervorrichtungen gekoppelt ist, wobei die Speichersteuerung eine Dekodierschaltung einschließt, wobei die Dekodierschaltung Folgendes umfasst: einen Eingang, um Rohbitwerte eines Vorwärts-Fehlerkorrektur-Blocks (forward error correction, FEC-Block) aus einem Lesevorgang einer oder mehrerer der Vielzahl von Speichervorrichtungen zu empfangen; einen Blockpufferspeicher, der mit dem Eingang gekoppelt ist, um die empfangenen Rohbitwerte des FEC-Blocks zu speichern; einen Low-Density-Parity-Check-Dekodierer (low-density parity check, LDPC-Dekodierer), der mit dem Blockpufferspeicher gekoppelt ist, wobei die LDPC-Steuerung einen fehlgeschlagenen Dekodiervorgang an den Rohbitwerten des FEC-Blocks durchführt und ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt; einen Trap-Erfassungs-Komparator, der mit dem LDPC-Dekodierer gekoppelt ist, wobei der Trap-Erfassungs-Komparator bestimmt, ob der FEC-Block ein Trapped-Block ist, indem die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert verglichen wird, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist; und eine Trap-Steuerung, die mit dem Blockpufferspeicher, dem Trap-Erfassungs-Komparator und dem LDPC-Dekodierer gekoppelt ist, wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Trap-Steuerung Trapped-Block-Dekodieriterationen unter Verwendung des LDPC-Dekodierers durchführt, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde, wobei bei jeder Trapped-Block-Dekodieriteration die Trap-Steuerung Folgendes tut: Erzeugen einer aktualisierten Log-Wahrscheinlichkeitsverhältnis-Karte (log likelihood ratio, LLR-Karte), Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang, und Senden einer Angabe an den LDPC-Dekodierer, um einen Dekodiervorgang durchzuführen, wobei als Reaktion auf die Angabe der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an den jeweiligen Bits der Rohbitwerte des FEC-Blocks oder dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen, und wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist, die Speichersteuerung eine Fehlermeldung ausgibt, und wenn der Dekodiervorgang erfolgreich ist, um ein Codewort zu erzeugen, die Speichersteuerung das Codewort ausgibt.
  13. SSD nach Anspruch 12, wobei der erste fehlgeschlagene Dekodiervorgang ein Dekodiervorgang ist, bei dem eine anfängliche LLR-Karte verwendet wird, um den ersten fehlgeschlagenen Dekodiervorgang durchzuführen, und wobei bei jeder Trapped-Block-Dekodierungsiteration die Trap-Steuerung Folgendes tut: Erzeugen der aktualisierten LLR-Karte, Speichern eines Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang in dem Blockpufferspeicher, Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang, Senden einer Angabe an die LDPC-Steuerung, um einen Dekodiervorgang durchzuführen, und wobei als Reaktion auf jede Angabe, der LDPC-Dekodierer die aktualisierte LLR-Karte verwendet, um einen Dekodiervorgang an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang durchzuführen.
  14. Verfahren zum Dekodieren, umfassend: Durchführen eines ersten fehlgeschlagenen Dekodiervorgangs an Rohbitwerten eines Vorwärts-Fehlerkorrektur-Blocks (forward error correction, FEC-Block) durch einen Low-Density-Parity-Check-Dekodierer (low-density parity check, LDPC-Dekodierer), der ein Syndrom des fehlgeschlagenen Dekodiervorgangs und einen Fehlgeschlagenen-Dekodier-Ausgangsblock ausgibt; Bestimmen, ob der FEC-Block ein Trapped-Block ist, durch Vergleichen der Anzahl von fehlschlagenden Prüfknoten, die durch das Syndrom angezeigt werden, mit einem Fehlerschwellenwert, wobei der FEC-Block als ein Trapped-Block bestimmt wird, wenn die Anzahl der fehlschlagenden Prüfknoten, die durch das Syndrom angegeben werden, kleiner als der Fehlerschwellenwert ist; wenn nicht bestimmt wird, dass der FEC-Block ein Trapped-Block ist, Ausgeben einer Fehlerangabe; wenn bestimmt wird, dass der FEC-Block ein Trapped-Block ist: Erzeugen einer aktualisierten Log-Wahrscheinlichkeitsverhältnis-Karte (log likelihood ratio, LLR-Karte); Bereitstellen, an den LDPC-Dekodierer, der aktualisierten LLR-Karte und entweder der Rohbitwerte des FEC-Blocks oder einen Fehlgeschlagenen-Dekodier-Ausgangsblock aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block; Durchführen eines Dekodiervorgangs des LDPC-Dekodierers unter Verwendung der aktualisierten LLR-Karte an den Bitwerten des FEC-Blocks oder des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block; und Wiederholen des Erzeugens, des Bereitstellens und des Durchführens, bis der Dekodiervorgang erfolgreich ist oder bis eine vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde; und wenn der Dekodiervorgang beim Dekodieren des FEC-Blocks erfolgreich ist, Ausgeben des Codeworts; und wenn der Dekodiervorgang beim Dekodieren des FEC-Blocks nicht erfolgreich ist und die vorbestimmte Anzahl von Trapped-Block-Dekodieriterationen durchgeführt wurde, Ausgeben einer Fehlerangabe.
  15. Verfahren nach Anspruch 14, wobei das Durchführen von Trapped-Block-Dekodieriterationen Folgendes umfasst: Erzeugen einer aktualisierten LLR-Karte; Bereitstellen, an den LDPC-Dekodierer, des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block und der aktualisierten LLR-Karte; und Durchführen eines Dekodiervorgangs an dem Fehlgeschlagenen-Dekodier-Ausgangsblock aus dem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block unter Verwendung der aktualisierten LLR-Karte.
  16. Verfahren nach Anspruch 14, ferner umfassend das Speichern der Rohbitwerte des FEC-Blocks oder Speichern des Fehlgeschlagenen-Dekodier-Ausgangsblocks aus einem vorherigen fehlgeschlagenen Dekodiervorgang an dem Trapped-Block.
  17. Verfahren nach Anspruch 14, wobei die aktualisierte LLR-Karte unter Verwendung der gespeicherten Rohbitwerte des FEC-Blocks, der stochastischen Wahrscheinlichkeitswerte, die jedem Bit in dem FEC-Block entsprechen, und der schwachen Bitwerte, die jedem Bit in dem FEC-Block entsprechen, erzeugt wird.
  18. Verfahren nach Anspruch 16, umfassend das Empfangen einer Eingabe, die eine prozentuale Variation angibt, wobei die stochastischen Wahrscheinlichkeitswerte durch Anwenden der prozentualen Variation auf einzelne der Rohbitwerte des FEC-Blocks erzeugt werden.
  19. Verfahren nach Anspruch 14, umfassend: Empfangen einer Eingabe, die einen robusten LLR-Wert, einen schwachen LLR-Wert, einen robusten LLR-Delta-Wert und einen schwachen LLR-Delta-Wert angibt, wobei jeder LLR-Wert in der aktualisierten LLR-Karte, der einer schwachen Spalte der H-Matrix entspricht, einen LLR-Wert aufweist, der gleich dem schwachen LLR-Wert ist, und wobei jeder LLR-Wert in der aktualisierten LLR-Karte, der einer Spalte der H-Matrix entspricht, die keine schwache Spalte ist, einen LLR-Wert aufweist, der gleich dem robusten LLR-Wert ist.
DE112022002131.4T 2021-09-28 2022-09-24 Ldpc-dekodierung mit trapped-block-management Pending DE112022002131T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202163249556P 2021-09-28 2021-09-28
US63/249,556 2021-09-28
PCT/US2022/044641 WO2023055676A1 (en) 2021-09-28 2022-09-24 Ldpc decoding with trapped-block management

Publications (1)

Publication Number Publication Date
DE112022002131T5 true DE112022002131T5 (de) 2024-04-11

Family

ID=83903035

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022002131.4T Pending DE112022002131T5 (de) 2021-09-28 2022-09-24 Ldpc-dekodierung mit trapped-block-management

Country Status (4)

Country Link
US (1) US11843393B2 (de)
CN (1) CN117480732A (de)
DE (1) DE112022002131T5 (de)
WO (1) WO2023055676A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12014068B2 (en) 2021-04-27 2024-06-18 Microchip Technology Inc. System and method for double data rate (DDR) chip-kill recovery

Family Cites Families (161)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6704871B1 (en) 1997-09-16 2004-03-09 Safenet, Inc. Cryptographic co-processor
JP4055103B2 (ja) 2000-10-02 2008-03-05 株式会社ルネサステクノロジ 不揮発性メモリおよびそれを内蔵した半導体集積回路並びに不揮発性メモリの書込み方法
US6754858B2 (en) 2001-03-29 2004-06-22 International Business Machines Corporation SDRAM address error detection method and apparatus
US7139312B2 (en) 2002-05-23 2006-11-21 Stmicroelectronics, Inc. System and method for improving coding gain performance within gigabit phy viterbi decoder
EP1460765A1 (de) 2003-03-19 2004-09-22 STMicroelectronics S.r.l. Fehlerkorrekturmethode für als Symbolsequenz codierte digitale Daten
US20050015420A1 (en) 2003-07-18 2005-01-20 Gibb Sean G. Recoded radix-2 pipeline FFT processor
US7831044B2 (en) 2003-11-14 2010-11-09 Panasonic Corporation Data processing device
US7529215B2 (en) 2003-11-17 2009-05-05 Telefonaktiebolaget Lm Ericsson (Publ) Encapsulation of independent transmissions over internal interface of distributed radio base station
US7415584B2 (en) 2003-11-26 2008-08-19 Cygnus Communications Canada Co. Interleaving input sequences to memory
US7428564B2 (en) 2003-11-26 2008-09-23 Gibb Sean G Pipelined FFT processor with memory address interleaving
US7519564B2 (en) 2004-11-16 2009-04-14 Microsoft Corporation Building and using predictive models of current and future surprises
US7334071B2 (en) 2005-05-25 2008-02-19 Integrated Device Technology, Inc. Expansion of cross-domain addressing for PCI-express packets passing through non-transparent bridge
EP1750278B1 (de) 2005-07-28 2009-11-11 STMicroelectronics S.r.l. Verfahren zur Programmierung einer Flash-Speichervorrichtung mit vier Zuständen und entsprechender Seitenspeicher
US7930623B2 (en) 2006-03-07 2011-04-19 Samsung Electronics Co., Ltd. Method and system for generating parallel codes
US7916641B2 (en) 2006-06-29 2011-03-29 Wi-Lan, Inc. System and process for packet delineation
JP2008015769A (ja) 2006-07-05 2008-01-24 Hitachi Ltd ストレージシステム及び書き込み分散方法
WO2008085964A2 (en) 2007-01-08 2008-07-17 Rambus Inc. Adaptive continuous-time line equalizer for correcting the first post-cursor isi
US8625498B2 (en) 2007-01-22 2014-01-07 Wi-Lan, Inc. Tiling allocations for wireless communication
CA2685714C (en) 2007-05-31 2016-04-12 University Of Washington Inducible mutagenesis of target genes
US8020070B2 (en) 2007-12-05 2011-09-13 Aquantia Corporation Trapping set decoding for transmission frames
US8196016B1 (en) 2007-12-05 2012-06-05 Aquantia Corporation Trapping set decoding for transmission frames
US7961593B2 (en) 2008-01-28 2011-06-14 Wi-Lan, Inc. Downlink acquisition
US8370711B2 (en) 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
US20090319860A1 (en) 2008-06-23 2009-12-24 Ramot At Tel Aviv University Ltd. Overcoming ldpc trapping sets by decoder reset
WO2009156935A1 (en) 2008-06-23 2009-12-30 Ramot At Tel Aviv University Ltd. Using damping factors to overcome ldpc trapping sets
US8196024B2 (en) 2008-06-27 2012-06-05 Wi-Lan Inc. Demapper using floating-point representation of soft bits
US8386870B2 (en) 2008-07-03 2013-02-26 Wi-Lan, Inc. Fractional HARQ re-transmission
WO2010019169A1 (en) 2008-08-15 2010-02-18 Lsi Corporation Rom list-decoding of near codewords
CN101903890B (zh) 2009-03-05 2015-05-20 Lsi公司 用于迭代解码器的改进的turbo均衡方法
US8229020B2 (en) 2009-03-23 2012-07-24 Oracle America, Inc. Integrated equalization and CDR adaptation engine with single error monitor circuit
US8300684B2 (en) 2009-06-29 2012-10-30 Lsi Corporation Real-time eye monitor for statistical filter parameter calibration
US8898537B2 (en) * 2010-03-17 2014-11-25 The Royal Institution For The Advancement Of Learning/Mcgill University Method and system for decoding
US8699471B2 (en) 2010-04-15 2014-04-15 Texas Instruments Incorporated System and method for scrambling and time-hopping
US8429325B1 (en) 2010-08-06 2013-04-23 Integrated Device Technology Inc. PCI express switch and method for multi-port non-transparent switching
US8769380B1 (en) 2010-11-02 2014-07-01 Marvell International Ltd. Methods and apparatus for error recovery in memory systems employing iterative codes
US8751729B2 (en) 2010-12-23 2014-06-10 Samsung Electronics Co., Ltd. Flash memory device and memory system including the same
US8707122B1 (en) 2011-02-08 2014-04-22 Pmc-Sierra Us, Inc. Nonvolatile memory controller with two-stage error correction technique for enhanced reliability
US8631309B2 (en) 2011-05-04 2014-01-14 Pmc-Sierra, Inc. Forward error correction with extended effective block size
KR101767649B1 (ko) 2011-05-11 2017-08-14 삼성전자주식회사 시드 생성 방법과 그것을 이용한 플래시 메모리 장치 및 메모리 시스템
US8689074B1 (en) * 2011-06-27 2014-04-01 Cadence Design Systems, Inc. Method and apparatus for detecting trapping sets in decoding of information
US8689084B1 (en) 2011-06-27 2014-04-01 Cadence Design Systems, Inc. Method and apparatus for breaking trapping sets in decoding of information
US8694855B1 (en) 2011-11-02 2014-04-08 Pmc-Sierra Us, Inc. Error correction code technique for improving read stress endurance
US8694849B1 (en) 2011-12-19 2014-04-08 Pmc-Sierra Us, Inc. Shuffler error correction code system and method
US8656257B1 (en) 2012-01-11 2014-02-18 Pmc-Sierra Us, Inc. Nonvolatile memory controller with concatenated error correction codes
US8923382B2 (en) 2012-03-16 2014-12-30 Lsi Corporation Tap adaptation with a fully unrolled decision feedback equalizer
US9141467B2 (en) 2012-03-23 2015-09-22 Samsung Electronics Co., Ltd. Semiconductor memory system including Reed-Solomon low density parity check decoder and read method thereof
US8781033B2 (en) * 2012-06-26 2014-07-15 Lsi Corporation Apparatus and method for breaking trapping sets
RU2012129926A (ru) 2012-07-13 2014-01-20 ЭсЭсАй КОРПОРЕЙШН Ускорение имитирований декодера с исправлением ошибок с помощью добавления случайного шума
US8812935B2 (en) 2012-08-02 2014-08-19 Oracle International Corporation Using a data ECC to detect address corruption
US9292428B2 (en) 2012-09-05 2016-03-22 Kabushiki Kaisha Toshiba Memory system
US9627085B2 (en) 2012-11-29 2017-04-18 Silicon Motion Inc. Refresh method for flash memory and related memory controller thereof
US9128858B1 (en) 2013-01-29 2015-09-08 Pmc-Sierra Us, Inc. Apparatus and method for adjusting a correctable raw bit error rate limit in a memory system using strong log-likelihood (LLR) values
US9092353B1 (en) 2013-01-29 2015-07-28 Pmc-Sierra Us, Inc. Apparatus and method based on LDPC codes for adjusting a correctable raw bit error rate limit in a memory system
US8949696B2 (en) * 2013-02-19 2015-02-03 Lsi Corporation Systems and methods for trapping set disruption
US9813080B1 (en) 2013-03-05 2017-11-07 Microsemi Solutions (U.S.), Inc. Layer specific LDPC decoder
US8990661B1 (en) 2013-03-05 2015-03-24 Pmc-Sierra Us, Inc. Layer specific attenuation factor LDPC decoder
US10230396B1 (en) 2013-03-05 2019-03-12 Microsemi Solutions (Us), Inc. Method and apparatus for layer-specific LDPC decoding
US9397701B1 (en) 2013-03-11 2016-07-19 Microsemi Storage Solutions (Us), Inc. System and method for lifetime specific LDPC decoding
US8938037B1 (en) 2013-03-13 2015-01-20 Pmc-Sierra Us, Inc. High speed gain and phase recovery in presence of phase noise
US9166623B1 (en) 2013-03-14 2015-10-20 Pmc-Sierra Us, Inc. Reed-solomon decoder
US8984376B1 (en) * 2013-03-14 2015-03-17 Pmc-Sierra Us, Inc. System and method for avoiding error mechanisms in layered iterative decoding
US9009565B1 (en) 2013-03-15 2015-04-14 Pmc-Sierra, Inc. Systems and methods for mapping for solid-state memory
US9450610B1 (en) 2013-03-15 2016-09-20 Microsemi Storage Solutions (Us), Inc. High quality log likelihood ratios determined using two-index look-up table
US9053012B1 (en) 2013-03-15 2015-06-09 Pmc-Sierra, Inc. Systems and methods for storing data for solid-state memory
US9590656B2 (en) 2013-03-15 2017-03-07 Microsemi Storage Solutions (Us), Inc. System and method for higher quality log likelihood ratios in LDPC decoding
US9081701B1 (en) 2013-03-15 2015-07-14 Pmc-Sierra, Inc. Systems and methods for decoding data for solid-state memory
US9208018B1 (en) 2013-03-15 2015-12-08 Pmc-Sierra, Inc. Systems and methods for reclaiming memory for solid-state memory
US9454414B2 (en) 2013-03-15 2016-09-27 Microsemi Storage Solutions (Us), Inc. System and method for accumulating soft information in LDPC decoding
US9235467B2 (en) 2013-03-15 2016-01-12 Pmc-Sierra Us, Inc. System and method with reference voltage partitioning for low density parity check decoding
US9026867B1 (en) 2013-03-15 2015-05-05 Pmc-Sierra, Inc. Systems and methods for adapting to changing characteristics of multi-level cells in solid-state memory
US20140310534A1 (en) 2013-04-15 2014-10-16 Apple Inc. Data scrambling in memory devices using combined sequences
WO2014209326A1 (en) 2013-06-27 2014-12-31 Intel Corporation Low power equalizer and its training
US9459956B2 (en) 2013-07-19 2016-10-04 Seagate Technology Llc Data decoder with trapping set flip bit mapper
US9529732B2 (en) 2013-07-24 2016-12-27 Marvell World Trade Llc Key rotation for a memory controller
KR20150020478A (ko) 2013-08-16 2015-02-26 삼성전자주식회사 비휘발성 메모리 장치의 독출 방법
US8971396B1 (en) 2013-08-22 2015-03-03 Pmc-Sierra Us, Inc. Windowed-based decision feedback equalizer and decision feedback sequence estimator
TWI512732B (zh) 2013-08-30 2015-12-11 Phison Electronics Corp 解碼方法、記憶體儲存裝置與非揮發性記憶體模組
US9571125B2 (en) 2013-10-03 2017-02-14 Futurewei Technologies, Inc. Systems and methods of vector-DMA cache-XOR for MPCC erasure coding
US9270296B1 (en) 2013-11-13 2016-02-23 Western Digital Technologies, Inc. Method and system for soft decoding through single read
US9170876B1 (en) 2013-12-31 2015-10-27 Pmc-Sierra Us, Inc. Method and system for decoding encoded data stored in a non-volatile memory
US9325347B1 (en) 2014-02-21 2016-04-26 Microsemi Storage Solutions (U.S.), Inc. Forward error correction decoder and method therefor
US9564922B1 (en) * 2014-03-19 2017-02-07 Microsemi Storage Solutions (U.S.), Inc. Error correction code decoder with stochastic floor mitigation
US9444655B2 (en) 2014-03-25 2016-09-13 Intel IP Corporation Apparatus, method and system of scrambling a wireless transmission
US9747200B1 (en) 2014-07-02 2017-08-29 Microsemi Solutions (U.S.), Inc. Memory system with high speed non-volatile memory backup using pre-aged flash memory devices
US9417804B2 (en) 2014-07-07 2016-08-16 Microsemi Storage Solutions (Us), Inc. System and method for memory block pool wear leveling
US9432053B1 (en) 2014-07-07 2016-08-30 Microsemi Storage Solutions (U.S.), Inc. High speed LDPC decoder
US9569120B2 (en) 2014-08-04 2017-02-14 Nvmdurance Limited Adaptive flash tuning
US9305661B2 (en) 2014-09-03 2016-04-05 Microsemi Storage Solutions (U.S.), Inc. Nonvolatile memory system that uses programming time to reduce bit errors
US9564930B2 (en) 2014-09-05 2017-02-07 Kabushiki Kaisha Toshiba Memory controller, storage device and memory control method
US9251909B1 (en) 2014-09-29 2016-02-02 International Business Machines Corporation Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory
KR102200108B1 (ko) 2014-10-10 2021-01-08 삼성전자주식회사 비휘발성 메모리 장치 및 그 동작 방법
US9602133B1 (en) 2015-01-27 2017-03-21 Microsemi Storage Solutions (U.S.), Inc. System and method for boost floor mitigation
US9564921B1 (en) 2015-02-04 2017-02-07 Microsemi Storage Solutions (U.S.), Inc. Method and system for forward error correction decoding based on a revised error channel estimate
US9473175B1 (en) 2015-02-10 2016-10-18 Microsemi Storage Solutions (U.S.), Inc. Forward error correction decoder system
US20160247581A1 (en) 2015-02-20 2016-08-25 Kabushiki Kaisha Toshiba Memory system, memory controller and memory control method
US9524210B1 (en) 2015-03-02 2016-12-20 Crossbar, Inc. Separating bits represented by a MLC in connection with ECC
TWI562149B (en) 2015-03-09 2016-12-11 Phison Electronics Corp Memory control circuit unit, memory storage apparatus and data accessing method
US10332613B1 (en) 2015-05-18 2019-06-25 Microsemi Solutions (Us), Inc. Nonvolatile memory system with retention monitor
US9742439B1 (en) 2015-06-08 2017-08-22 Microsemi Solutions (U.S.), Inc. Method and device for forward error correction decoder system utilizing orthogonality of an H matrix
US9639280B2 (en) 2015-06-18 2017-05-02 Advanced Micro Devices, Inc. Ordering memory commands in a computer system
JP6532777B2 (ja) 2015-07-02 2019-06-19 株式会社日立製作所 等化器
US9799405B1 (en) 2015-07-29 2017-10-24 Ip Gem Group, Llc Nonvolatile memory system with read circuit for performing reads using threshold voltage shift read instruction
US9793923B2 (en) 2015-11-24 2017-10-17 Texas Instruments Incorporated LDPC post-processor architecture and method for low error floor conditions
US9793924B1 (en) 2015-12-04 2017-10-17 Microsemi Solutions (U.S.), Inc. Method and system for estimating an expectation of forward error correction decoder convergence
US9886214B2 (en) 2015-12-11 2018-02-06 Ip Gem Group, Llc Nonvolatile memory system with erase suspend circuit and method for erase suspend management
US9892794B2 (en) 2016-01-04 2018-02-13 Ip Gem Group, Llc Method and apparatus with program suspend using test mode
US9899092B2 (en) 2016-01-27 2018-02-20 Ip Gem Group, Llc Nonvolatile memory system with program step manager and method for program step management
US10164656B2 (en) 2016-03-30 2018-12-25 Silicon Motion Inc. Bit flipping algorithm for providing soft information during hard decision hard decoding
US9940980B2 (en) 2016-06-30 2018-04-10 Futurewei Technologies, Inc. Hybrid LPDDR4-DRAM with cached NVM and flash-nand in multi-chip packages for mobile devices
US10283215B2 (en) 2016-07-28 2019-05-07 Ip Gem Group, Llc Nonvolatile memory system with background reference positioning and local reference positioning
US10291263B2 (en) 2016-07-28 2019-05-14 Ip Gem Group, Llc Auto-learning log likelihood ratio
US9898229B1 (en) 2016-07-29 2018-02-20 Sandisk Technologies Llc Systems and methods of memory reads
US10236915B2 (en) 2016-07-29 2019-03-19 Microsemi Solutions (U.S.), Inc. Variable T BCH encoding
US10268541B2 (en) 2016-08-15 2019-04-23 Samsung Electronics Co., Ltd. DRAM assist error correction mechanism for DDR SDRAM interface
KR102656190B1 (ko) 2016-11-24 2024-04-11 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 불휘발성 메모리 장치의 액세스 방법
US10181969B2 (en) 2016-12-08 2019-01-15 Intel Corporation High performance receiver with single calibration voltage
US10853163B2 (en) 2017-04-28 2020-12-01 Qualcomm Incorporated Optimized error-correcting code (ECC) for data protection
US10289341B2 (en) 2017-06-30 2019-05-14 Western Digital Technologies, Inc. Operating parameter offsets in solid state memory devices
US10700713B2 (en) 2017-08-01 2020-06-30 Microsemi Storage Solutions, Inc. System and method for error correction in data communications
KR102430209B1 (ko) 2017-09-07 2022-08-05 삼성전자주식회사 저장 장치 및 저장 장치에 포함된 컨트롤러들
KR102353405B1 (ko) 2017-09-19 2022-01-19 삼성전자주식회사 특성 데이터 전처리 시스템, 장치, 방법 및 이를 이용한 메모리 제어 시스템
US20190095794A1 (en) 2017-09-26 2019-03-28 Intel Corporation Methods and apparatus for training a neural network
US10491244B2 (en) 2017-11-14 2019-11-26 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
US10511326B2 (en) 2017-11-14 2019-12-17 Nyquist Semiconductor Limited Systems and methods for decoding error correcting codes
WO2019133184A1 (en) 2017-12-28 2019-07-04 Microsemi Storage Solutions, Inc. System and method for drift compensation in data communications
US10963394B2 (en) 2018-04-16 2021-03-30 Samsung Electronics Co., Ltd. System and method for optimizing performance of a solid-state drive using a deep neural network
US10817217B2 (en) 2018-06-28 2020-10-27 Seagate Technology Llc Data storage system with improved time-to-ready
US10230552B1 (en) 2018-07-26 2019-03-12 Microsemi Storage Solutions, Inc. System and method for decision feedback equalizer (DFE) adaptation
US10658054B2 (en) 2018-08-22 2020-05-19 International Business Machines Corporation Methods for read threshold voltage shifting in non-volatile memory
US12001949B2 (en) 2018-09-05 2024-06-04 Sartorius Stedim Data Analytics Ab Computer-implemented method, computer program product and system for data analysis
US10490288B1 (en) 2018-09-27 2019-11-26 Seagate Technology Llc Page-level reference voltage parameterization for solid statesolid state storage devices
US11165443B2 (en) 2018-10-01 2021-11-02 Microchip Technology Incorporated Burst error tolerant decoder and related systems, methods, and devices
US20200125955A1 (en) 2018-10-23 2020-04-23 International Business Machines Corporation Efficiently learning from highly-diverse data sets
KR102599123B1 (ko) 2018-11-14 2023-11-06 삼성전자주식회사 인공 신경망 모델에 기초하여 읽기 레벨들을 추론하는 스토리지 장치 및 인공 신경망 모델의 학습 방법
US11133059B2 (en) 2018-12-06 2021-09-28 Western Digital Technologies, Inc. Non-volatile memory die with deep learning neural network
EP3756186A4 (de) 2018-12-06 2021-06-02 Western Digital Technologies Inc. Nichtflüchtige speichermatrix mit tiefenlernendem neuronalen netz
US11119909B2 (en) 2018-12-11 2021-09-14 Texas Instmments Incorporated Method and system for in-line ECC protection
US11610116B2 (en) 2018-12-31 2023-03-21 SK Hynix Inc. Storage device performance optimization using deep learning
US10861562B1 (en) 2019-06-24 2020-12-08 SK Hynix Inc. Deep learning based regression framework for read thresholds in a NAND flash memory
US11086716B2 (en) * 2019-07-24 2021-08-10 Microchip Technology Inc. Memory controller and method for decoding memory devices with early hard-decode exit
US10715307B1 (en) 2019-08-01 2020-07-14 Microsemi Semiconductor Ulc Embedded time of day receiver for clock transmission
US11385831B2 (en) 2019-10-11 2022-07-12 FADU Inc. Memory controller and storage device including the same
US11295209B2 (en) 2019-12-20 2022-04-05 Micron Technology, Inc. Analysis of memory sub-systems based on threshold distributions
US10972249B1 (en) 2020-04-20 2021-04-06 Microchip Technology Inc. System and method for data sampler drift compensation
US20220027083A1 (en) 2020-07-27 2022-01-27 Microchip Technology Inc. Regression Neural Network for Identifying Threshold Voltages to be Used in Reads of Flash Memory Devices
KR20220021753A (ko) 2020-08-14 2022-02-22 삼성전자주식회사 불휘발성 메모리의 파워 로스 프로텍션 영역에 저장된 온 셀 카운트를 복원하여 읽기 동작을 수행하는 스토리지 장치
KR20220021772A (ko) 2020-08-14 2022-02-22 에스케이하이닉스 주식회사 메모리 시스템 및 이에 포함된 메모리 장치의 동작 방법
US20220058488A1 (en) 2020-08-20 2022-02-24 Microchip Technology Inc. Partitionable Neural Network for Solid State Drives
US11349498B2 (en) * 2020-10-08 2022-05-31 Micron Technology, Inc. Bit flipping low-density parity-check decoders with low error floor
US11398291B2 (en) 2020-11-20 2022-07-26 Microchip Technology Inc. Method and apparatus for determining when actual wear of a flash memory device differs from reliability states for the flash memory device
US20220188604A1 (en) 2020-12-15 2022-06-16 Microchip Technology Inc. Method and Apparatus for Performing a Neural Network Operation
US11514992B2 (en) 2021-02-25 2022-11-29 Microchip Technology Inc. Method and apparatus for reading a flash memory device
CN113098530B (zh) * 2021-04-01 2022-03-22 中山大学 基于平均簇残差动态调度选择策略的ldpc码译码方法
US12014068B2 (en) 2021-04-27 2024-06-18 Microchip Technology Inc. System and method for double data rate (DDR) chip-kill recovery
US12007839B2 (en) 2021-05-13 2024-06-11 Micron Technology, Inc. Interleaved codeword transmission for a memory device
US11934696B2 (en) 2021-05-18 2024-03-19 Microchip Technology Inc. Machine learning assisted quality of service (QoS) for solid state drives
US11699493B2 (en) 2021-05-24 2023-07-11 Microchip Technology Inc. Method and apparatus for performing a read of a flash memory using predicted retention-and-read-disturb-compensated threshold voltage shift offset values
US11514994B1 (en) 2021-05-28 2022-11-29 Microchip Technology Inc. Method and apparatus for outlier management
DE112022001547T5 (de) 2021-06-01 2024-01-11 Microchip Technology Inc. Speicheradressenschutz
US11283468B1 (en) * 2021-06-24 2022-03-22 Beijing Tenafe Electronic Technology Co., Ltd. Log-likelihood ratio mapping tables in flash storage systems
CN113612486B (zh) * 2021-08-16 2024-02-20 重庆大学 一种构建pbrl ldpc码的基矩阵方法、***、装置及存储介质

Also Published As

Publication number Publication date
WO2023055676A1 (en) 2023-04-06
US11843393B2 (en) 2023-12-12
CN117480732A (zh) 2024-01-30
US20230094363A1 (en) 2023-03-30

Similar Documents

Publication Publication Date Title
DE112014004778B4 (de) Vorrichtung und Verfahren zum Verwalten von Chipgruppen
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112014004761B4 (de) Beeinflussung des Wear-Leveling in Speichersystemen
DE102017001433B4 (de) Systeme und Verfahren für adaptive Lesepegelanpassung
DE102017001420B4 (de) Redundanz von fehlerkorrekturcodierten daten in einem speichersystem
DE102016003366B4 (de) Lesepegelgruppierung für erhöhte flash-leistung
DE102013103391B4 (de) Betriebsverfahren eines Controllers, der eine nichtflüchtige Speichervorrichtung steuert, und Mappingmuster-Auswahlverfahren zum Auswählen eines Mappingmusters, das ein polar codiertes Codewort Multibitdaten einer nichtflüchtigen Speichervorrichtung zuordnet
DE60303895T2 (de) Hybridimplementierung von Fehlerkorrekturkoden eines nichtflüchtigen Speichersystems
DE102018105948A1 (de) Leseniveau-Nachverfolgung und Optimierung
DE112021004294T5 (de) Verfahren und einrichtung zum bestimmen, wann der tatsächliche verschleiss einer flash-speichervorrichtung von zuverlässigkeitszuständen für die flash-speichervorrichtung abweicht
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
DE112011103295T5 (de) Decodieren in Solid-State-Speichereinheiten
DE112012006153T5 (de) Rekonstruktion von Codewörtern unter Verwendung eines Seitenkanals
DE112020006139T5 (de) Vor-lese-und lese-schwellenspannungsoptimierung
DE112011101852B4 (de) Decodieren von LDPC-Code
DE102008003113A1 (de) ECC-Steuereinheit, Speichersystem und Verfahren zur Korrektur eines Fehlers
DE102018123926A1 (de) Dynamische mehrstufige Decodierung
DE112014001305T5 (de) Auswahl einer redundanten Datenspeicherkonfiguration auf der Grundlage verfügbaren Speicherplatzes
DE102018105434A1 (de) Verfahren und System zum Abtasten von gelöschten Flashspeicherseiten mit Querverweis auf verwandte Anwendungen
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102019127089A1 (de) LDPC Decoder, semiconductor memory system, and operating method thereof
DE112020003489T5 (de) Speichersteuerung und verfahren zum decodieren von speichervorrichtungen mit vorzeitigem hartdecodierabbruch
DE112014005810B4 (de) anagement der Datenspeicherung in analogen Speicherzellen unter Verwendung einer nicht ganzzahligen Anzahl von Bits pro Zelle
DE102020119694A1 (de) Verfahren zur Steuerung einer Operation einer nichtflüchtigen Speichervorrichtung unter Verwendung von Maschinenlernen und Speichersystem
DE112021002268T5 (de) Neuronales Regressionsnetzwerk zum Identifizieren von Schwellenspannungen, die beim Lesen von Flash-Speichervorrichtungen zu verwenden sind

Legal Events

Date Code Title Description
R012 Request for examination validly filed