DE102011014680A1 - Fehlerkorrekturmechanismen für Flash-Speicher - Google Patents

Fehlerkorrekturmechanismen für Flash-Speicher Download PDF

Info

Publication number
DE102011014680A1
DE102011014680A1 DE102011014680A DE102011014680A DE102011014680A1 DE 102011014680 A1 DE102011014680 A1 DE 102011014680A1 DE 102011014680 A DE102011014680 A DE 102011014680A DE 102011014680 A DE102011014680 A DE 102011014680A DE 102011014680 A1 DE102011014680 A1 DE 102011014680A1
Authority
DE
Germany
Prior art keywords
bma
codeword
syndrome
multiplier array
circuit
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.)
Granted
Application number
DE102011014680A
Other languages
English (en)
Other versions
DE102011014680B4 (de
Inventor
Zion S. Kwok
Chun Fung Kitter Man
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.)
SK Hynix NAND Product Solutions Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102011014680A1 publication Critical patent/DE102011014680A1/de
Application granted granted Critical
Publication of DE102011014680B4 publication Critical patent/DE102011014680B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1525Determination and particular use of error location polynomials
    • H03M13/153Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/158Finite field arithmetic processing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Verfahren und Vorrichtungen für Bose-Chaudhuri-Hocquenghem-(BCH)-Decodierung, die den Berlekamp-Massey-Algorithmus (BMA) und Chien Search verwenden. Der BMA kann einen oder mehrere skalierbare semi-parallele gemeinsam benutzte Multiplikatorarrays, bedingte q-ary inversionslose BMA und/oder bedingte binäre inversionslose BMA verwenden. Der Chien Search kann erreicht werden, indem ein nicht rechteckiges Multiplikatorarray verwendet wird.

Description

  • TECHNISCHES GEBIET
  • Ausführungsformen der Erfindung beziehen sich auf Fehlerkorrekturmechanismen. Insbesondere beziehen sich Ausführungsformen der Erfindung auf Fehlerkorrekturmechanismen für die Verwendung in Flash-Speichern (wie z. B. BCH-Codes).
  • HINTERGRUND
  • Flash-Speicher-Controller, insbesondere NAND-Flash-Designs erlegen Bose-Chaudhuri-Hocquenghem-(BCH)-Decoder-Designs höhere Durchsatzanforderungen mit begrenzten Hardware-Ressourcen auf. Die Primärfunktion des BCH-Decoders besteht darin, Bitfehler in einem empfangenen Codewort zu erkennen und zu korrigieren.
  • Der BCH-Decodierprozess besteht aus vier Hauptschritten. Der erste Schritt ist, ein Syndrom vom empfangenen Codewort zu berechnen. Der zweite Schritt ist, das Syndrom zu nehmen und das Fehlerlokalisierpolynom σ(x) zu berechnen. Dieser zweite Schritt wird normalerweise unter Verwendung des Berlekamp-Massey-Algorithmus (BMA) ausgeführt. Der dritte Schritt besteht daraus, die Wurzeln von σ(x) festzustellen, die Bitfehlerstellen im empfangenen Codewort entsprechen. Dieser dritte Schritt wird normalerweise unter Verwendung des Chien Search-Algorithmus ausgeführt. Der vierte Schritt besteht darin, die Bits zu korrigieren, die als Fehler identifiziert wurden.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Erfindungsgemäße Ausführungsformen werden beispielhaft und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen dargestellt, wobei gleiche Bezugsnummern sich auf ähnliche Elemente beziehen.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Bose-Chaudhuri-Hocquenghem-(BCH)-Codier- und Decodierprozesses.
  • 2 ist ein konzeptionelles Diagramm von einer Ausführungsform einer skalierbaren semi-parallelen gemeinsam benutzten BMA-Multiplikatorarchitektur.
  • 3 ist ein konzeptionelles Diagramm einer Ausführungsform eines rechteckigen Multiplikatorarrays, das von einer Chien Search-Komponente verwendet werden kann.
  • 4 ist eine konzeptionelle Darstellung einer Ausführungsform eines Ripple-Kaskaden-Multiplikatorarrays, das von einer Chien Search-Komponente verwendet werden kann.
  • 5 ist eine konzeptionelle Darstellung einer Ausführungsform eines unregelmäßig geformten Multiplikatorarrays mit variabler Leistung, das von einer Chien Search-Komponente verwendet werden kann.
  • 6 ist eine konzeptionelle Darstellung einer Ausführungsform eines rechteckigen Multiplikatorarrays mit funktioneller Flexibilität, das von einer Chien Search-Komponente verwendet werden kann.
  • 7 ist eine konzeptionelle Darstellung einer Ausführungsform eines Falt-Multiplikatorarrays, das von einer Chien Search-Komponente verwendet werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bei der folgenden Beschreibung werden zahlreiche spezifische Details gegeben. Erfindungsgemäße Ausführungsformen können jedoch ohne diese spezifischen Details umgesetzt werden. In anderen Fällen wurden wohlbekannte Schaltungen, Strukturen und Techniken nicht im Detail gezeigt, um das Verständnis dieser Beschreibung nicht in den Hintergrund rücken zu lassen.
  • Der Berlekamp-Massey-Algorithmus (BMA) ist ein Iterationsverfahren, um das Fehlerlokalisierpolynom σ(x) festzustellen, das einem Syndrom entspricht. Da der BMA algebraische Manipulation von Polynomen ausführt, schließt der größte Teil der Arithmetik das Addieren und Multiplizieren der Koeffizienten des Fehlerlokalisierpolynoms σ(x) und eines Hilfspolynoms τ(x) sowie einige Skalarvariablen ein. Angesichts der iterativen Art des BMA werden die Werte dieser Polynome und Skalarvariablen für jede Iteration aktualisiert. Die Schreibweise σ(i)(x) und τ(i)(x) wird nachstehend verwendet, um die Werte von σ(x) und τ(x) in der iten Iteration zu bezeichnen.
  • Die Variablen sind unten aufgelistet.
    x: algebraische Variable
    i: Iterationszahl
    t: Anzahl an korrigierbaren Bitfehlern
    S: Syndrom
    Si: partielles Syndrom i
    σ(x): Fehlerlokalisierpolynom
    σ(i)(x): σ(x) in der iten Iteration
    σ (i) / k : Koeffizient von xk in σ(i)(x)
    ν(i): Grad von σ(i)(x)
    τ(x): Hilfspolynom
    Δ: aktuelle Diskrepanz
    Δ(i): aktuelle Diskrepanz in der iten Iteration δ: vorhergehende Diskrepanz
    D: Hilfsgrad
  • Im BMA wird σ(i+1)(x) berechnet als die Summe von σ(i)(x) und xτ(i)(x) multipliziert mit einer Skalarvariablen Δ(i) und dividiert durch eine Skalarvariable δ. Der BMA erfordert eine Galoisfeld-Inversionsoperation, die sowohl in Bezug auf die Gatezählung als auch in Bezug auf Zeit kostspielig ist.
  • Figure 00030001
  • Deshalb kann ein inversionsloses BMA bevorzugt sein. Der inversionslose BMA entfernt die Divisionsoperation durch Multiplizieren mit δ. Also wird der Wert von σ(i+1)(x) berechnet als δσ(i)(x) + Δ(i)(i)(x). σ(i+1)(x) = δσ(i)(x) + Δ(i)(i)(x) Gl. 2
  • Jedoch wird dieser Wert von σ(i+1)(x) skaliert durch ein δ, wenn er mit dem Wert von σ(i+1)(x) im Original-BMA verglichen wird. Das ist akzeptabel, da die Wurzeln von σ(i+1)(x), welche die Bitfehlerstellen bestimmen, die gleichen sind wie die Wurzeln von δσ(i+1)(x). Die anderen Variablen τ(i+1)(x) und Δ müssen mit δ multipliziert werden, um die korrekte gegenseitige Beziehung zwischen den Variablen zu erhalten.
  • 1 ist ein Blockdiagramm einer Ausführungsform eines Bose-Chaudhuri-Hocquenghem-(BCH)-Codier- und Decodierprozesses. Daten 110 werden Encoder 120 bereitgestellt, um unter Verwendung von BCH-Codieralgorithmen codiert zu werden. BCH-Codierung durch Encoder 120 kann auf irgendeine in der Technik bekannte Weise realisiert werden. Der Encoder erzeugt Codewort 125, das eine BCH-codierte Variante der Daten 110 ist. In vielen Fällen besteht Codewort 125 aus der Verknüpfung der Daten 110 und Parität.
  • Codewort 125 ist im Kanal 130 gespeichert. Bei einer Ausführungsform ist Kanal 130 ein NAND-Flash-Speicher. Bei alternativen Ausführungsformen kann Kanal 130 ein anderes Speichermedium sein, wie zum Beispiel NOR-Flash-Speicher, dynamischer Random Access Memory (DRAM), ein Register, eine rotierende magnetische oder optische Disk, usw. sein. Kanal 130 kann auch eine Kommunikationsverbindung, wie zum Beispiel eine Leitung, Satellitenkommunikationen, drahtlose Funkverbindungen, usw. sein.
  • Zu einem späteren Zeitpunkt wird das Codewort von Kanal 130 angefordert. Als Antwort stellt Kanal 130 das abgerufene Codewort 135 bereit. Das abgerufene Codewort 135 kann das gleiche sein wie Codewort 125, wenn keine Fehler aufgetreten sind. Wenn jedoch ein Fehler innerhalb des Kanals 130 aufgetreten ist, enthält das abgerufene Codewort 135 einen oder mehrere Bitfehler. Das abgerufene Codewort 135 wird im Codewortpuffer 140 gespeichert, egal ob eine Abweichung aufgetreten ist oder nicht.
  • Das abgerufene Codewort 135 wird Syndromrechner 150 bereitgestellt. Syndromrechner 150 arbeitet mit dem abgerufenen Codewort 135, um Syndrom 155 zu erzeugen, das anzeigt, ob ein Fehler im abgerufenen Codewort 135 erkannt wurde. Syndrom 155 kann von Syndromrechner 150 unter Verwendung jeder bekannten Technik berechnet werden. Bei einer Ausführungsform zeigt ein Syndromwert von Null keinen Fehler im abgerufenen Codewort 135 an. Ein Nicht-Null-Syndromwert zeigt die Anwesenheit eines Fehlers im abgerufenen Codewort 135 an.
  • Syndrom 155 wird vom BMA-Rechner 160 verwendet, um das Fehlerlokalisierpolynom σ(x) zu generieren, 165. Bei einer Ausführungsform wird Fehlerlokalisierpolynom 165 wie nachfolgend beschrieben erzeugt, indem eine oder mehrere skalierbare semi-parallele gemeinsam benutzte BMA-Multiplikatorarchitekturen, eine bedingte q-ary inversionslose BMA-Operation und/oder eine bedingte binäre inversionslose BMA-Operation eingesetzt werden. Die skalierbare semi-parallele gemeinsam benutzte BMA-Multiplikatorarchitektur, bedingte q-ary inversionslose BMA-Operation und bedingte binäre inversionslose BMA-Operation werden nachfolgend ausführlicher beschrieben.
  • Fehlerlokalisierpolynom 165 wird von der Chien Search-Schaltung 170 verwendet, um Bitfehlerstellen 175 zu erzeugen. Verschiedene Ausführungsformen für Chien Search-Schaltung 170 werden nachfolgend ausführlicher beschrieben. Bitfehlerstellen 175 werden vom Codewortpuffer 140 verwendet, um im abgerufenen Codewort 135 Fehler zu berichtigen, falls vorhanden. Nach der Korrektur stellt Codewortpuffer 140 Codewort 190 als ein Ausgangssignal bereit, falls dies erforderlich ist. Bei einer Ausführungsform sind eine oder mehrere von den in Bezug auf 1 beschriebenen Komponenten in einem NAND-Flash-Speicher-Controller enthalten.
  • Bei einer Ausführungsform für binäre BCH-Codes kann jede zweite Iteration des BMA auch übersprungen werden. Es gibt einen inversionslosen BMA für binäre BCH-Decodierung und einen inversionslosen BMA für q-ary BCH-Decodierung (z. B. Reed-Solomon). Diese können als binärer inversionsloser BMA und q-ary inversionsloser BMA bezeichnet werden.
  • Um binäre oder q-ary inversionslose BMA zu implementieren, gibt es drei bekannte Architekturen, um die Galoisfeld-Multiplikatoren zu positionieren. Erstens verwendet die serielle Multiplikatorarchitektur einen Multiplikator, um alle Multiplikationen im Algorithmus auszuführen. Zweitens verwendet die entsprechende Multiplikatorarchitektur eine große Anzahl an Multiplikatoren, um alle Multiplikationen für eine BMA-Iteration in einem Taktzyklus auszuführen. Diese zwei Optionen werden entweder für die minimale Gatezählung oder den maximalen Durchsatz optimiert. Jedoch ist es häufig wünschenswert, für einen Zwischendurchsatz und eine Gatezählung zu optimieren. Eine dritte Architektur hat drei Multiplikatoren, in denen jeder Multiplikator Multiplikationen zwischen zwei festen Operandensätzen ausführt.
  • Hier werden Techniken für eine modifizierte Verarbeitung des BMA beschrieben, um einen höheren Durchsatz für eine gegebene Gatezählung zu erreichen. Die modifizierte Verarbeitung des BMA kann erreicht werden mit der Anwendung von: a) skalierbarer semi-paralleler gemeinsam benutzter BMA-Multiplikatorarchitektur, b) bedingter q-ary inversionsloser BMA und c) bedingter binärer inversionsloser BMA.
  • Die Modifikationen am BCH-Decoder, die hier beschrieben sind, können zum Beispiel verwendet werden, um NAND-Flash-Speicher-Speichersysteme zu unterstützen, hohe Durchsatzgeschwindigkeiten mit geringeren Gatezählungskosten zu erreichen, als sie anfallen würden, wenn ein typischer BCH-Decoder skaliert oder repliziert werden würde, um hohen Durchsatzanforderungen zu entsprechen. Die Reduktion an Gatezählungskosten kann die Kosten des Controller-Chips, die Systemkosten sowie die Leistungsaufnahme verringern.
  • Eine geringere Leistungsaufnahme ist auch wichtig, weil das Leistungsbudget eines Halbleiterlaufwerks (SSD) oder eines anderen nicht flüchtigen Speichergeräts knapp sein kann. Die Modifikationen machen BCH auch mit hoher Korrekturstärke ausführbar, da die Gatezählung und damit verbundene Leistungsaufnahme des BMA bei den gleichen Durchsatzskalen anhand O(t3) erfolgen. Des Weiteren wird die nächste Generation von NAND-Flash-Speicher-Produkten mit höheren Dichten von kleineren Lithografien oder dem Packen von mehr Bits pro Zelle wahrscheinlich höhere unkorrigierte Rohbitfehlerraten (RBER) aufweisen, und die Entwicklung dieser Techniken wird durch geringere BCH-Hardwarekosten im Controller durchführbarer gemacht. Letztendlich können diese Verbesserungen auch dabei unterstützen, das Leben eines NAND-Flash-Speicher-Produktes zu verlängern, da die höhere Durchsatzgeschwindigkeit der Einheit ermöglichen wird, ein Nennleistungsniveau aufrechtzuerhalten, auch wenn die Bitfehlerraten aufgrund von Taktablauf und Zurückbehaltung ansteigen.
  • Bei einer Ausführungsform kann der inversionslose BMA drei Sätze von Galoisfeld-Multiplikationen aufweisen, die seriell oder parallel für jede Iteration ausgeführt werden können. Der erste Satz von Multiplikationen ist δ × σ0, δ × σ1, δ × σ2, ..., δ × σ1, wobei δ eine Skalarvariable ist, σk repräsentiert den Koeffizient des kten Ordnungsbegriffs von σ(x) und t ist die Anzahl an korrigierbaren Bitfehlern. Der zweite Satz von Multiplikationen ist Δ × τ0, Δ × τ1, Δ × τ2, ..., Δ × τ1+2, wobei Δ eine Skalarvariable ist und τk den Koeffizient des kten Ordnungsbegriffs von τ(x) repräsentiert. Der dritte Satz von Multiplikationen ist Si+3 × σ0, Si+2 × σ1, Si+1 × σ2, ..., Si-ν(i)+3 × σν(i), wobei Sk das kte partielle Syndrom repräsentiert und ν(i) der Grad des Polynoms σ(x) ist.
  • Der erste und zweite Satz der Multiplikationen kann parallel berechnet werden, während der dritte Satz der Multiplikationen von den Ergebnissen der ersten zwei Sätze abhängt. Das ermöglicht zwei Multiplikationen pro Zyklus. Während der dritte Satz von Multiplikationen von den Resultaten des ersten und zweiten Satzes abhängt, können alle im gleichen Taktzyklus unter Verwendung einer großen Kombinationsschaltung berechnet werden. Das erhöht die Multiplikationen pro Zyklus von zwei auf drei.
  • Jeder Satz von Multiplikationen besteht aus annäherungsweise t + 1 unabhängigen Multiplikationen, die bei einer Ausführungsform parallel berechnet werden können. Das erhöht die potenziellen Multiplikationen pro Zyklus von drei auf annäherungsweise 3t + 3. Kurz gesagt kann die Anzahl an Multiplikatoren in einer inversionslosen BMA-Architektur von einem für eine serielle Multiplikatorarchitektur zu 3t + 3 für eine völlig parallele Multiplikatorarchitektur reichen.
  • Häufig ist ein serieller Multiplikator zu langsam und eine parallele Multiplikatorarchitektur in Bezug auf die Gatezählung zu kostspielig. Die semi-parallelen Multiplikatorarchitekturen nutzen den Vorteil der Parallelität zwischen den unterschiedlichen Sätzen von Multiplikatoren und/oder der Parallelität zwischen Multiplikationen innerhalb jedes Satzes, aber sie nutzen nicht die kompletten 3t + 3 Multiplikatoren.
  • Bei einer geringen Anzahl an Multiplikatoren resultiert das parallele Berechnen von Multiplikationen innerhalb eines einzelnen Satzes in der niedrigsten Latenzzeit für bestimmte Fehlerverteilungen. Während die Anzahl an Multiplikatoren zunimmt, nimmt die Reduktion in der mittleren Latenzzeit durch Hinzufügen von mehr Multiplikatoren ab. Das Berechnen von zwei oder drei Sätzen von Multiplikationen kann pro Zyklus in einer geringeren mittleren Latenzzeit resultieren, aber auf Kosten dessen, mehr Multiplikatoren zu haben.
  • 2 ist ein konzeptionelles Diagramm einer Ausführungsform einer skalierbaren semi-parallelen gemeinsam benutzten BMA-Multiplikatorarchitektur. Im Allgemeinen enthält die Multiplikatorarchitektur eine Vielzahl von Multiplikatoren mit Multiplexer, die Eingangsvariablen bereitstellen. Die Multiplexer werden durch eine Zustandsmaschine oder ein anderes Steuergerät gesteuert (nicht veranschaulicht in 2), das die geeigneten Eingangswerte für die Multiplikatoren auswählen kann.
  • Bei einer Ausführungsform enthält die Multiplikatorarchitektur ein Array von Galoisfeld-Multiplikatoren. Jede Anzahl an Multiplikatoren kann unterstützt werden. Das Beispiel der 2 umfasst M Multiplikatoren (110, 130, 150 und 170). Jeder Multiplikator empfängt zwei Werte, um sie zu multiplizieren und einen Ergebniswert zu erzeugen. Bei einer Ausführungsform werden die Eingangswerte für die Multiplikatoren durch Multiplexer (120 und 125 für den Multiplikator 110, 140 und 145 für den Multiplikator 130, 160 und 165 für den Multiplikator 150, und 180 und 185 für den Multiplikator 170) bereitgestellt.
  • Bei einer Ausführungsform empfängt einer der Multiplexer für jeden Multiplikator Eingangswerte entsprechend einer vorhergehenden Diskrepanz (δ), einer aktuellen Diskrepanz (Δ) und einem partiellen Syndrom (z. B. Si+3-k, Si+2-k, Si+1-k, ..., Si+4-M-k). Bei einer Ausführungsform empfängt der andere Multiplexer für jeden Multiplikator Eingangswerte entsprechend einem Koeffizienten von xk in σ(x) (z. B. σk, σk+1, σk+2, ..., σk+M-1) und einem Koeffizienten von xk in einem Hilfspolynom (z. B. τk, τk+1, τk+2, ..., τk+M-1). Bei einer Ausführungsform wird der Koeffizient von xk in σ(x) auch einem dritten Eingang des zweiten Multiplexers zur Einfachheit der Steuerung der Multiplexer bereitgestellt.
  • Ein Beispiel der skalierbaren semi-parallelen gemeinsam benutzten BMA-Multiplikatorarchitektur verwendet eine Bank von Galoisfeld-Multiplikatoren, um Koeffizienten in σ(x) und τ(x) zu multiplizieren, sowie partielle Syndrome. Sie kann die gleiche Bank von Multiplikatoren verwenden, um jeden Satz von Multiplikationen auszuführen. Deshalb die Bezeichnung „gemeinsam benutzt”. In jedem Taktzyklus können Koeffizienten von aufeinander folgenden Begriffen in σ(x) oder τ(x) geladen und mit der Diskrepanz oder mit aufeinander folgenden partiellen Syndromen als eine Single-Instruction Multiple-Data-(SIMD)-Operation multipliziert werden.
  • Diese Architektur ist skalierbar, da es möglich ist, die Anzahl an Multiplikatoren von einem auf t + 1 anzupassen; (einer mehr als die Anzahl an korrigierbaren Bitfehlern), was den Bauraum zwischen langsamer serieller Multiplikation und schneller paralleler Multiplikation umspannt, um Flexibilität in der Abwägung von Gatezählung und Durchsatz zu ermöglichen.
  • Bei einer Ausführungsform wird, im q-ary inversionslosen BMA, wenn der Wert von Δ(i) 0 ist, die Gleichung, um σ(i+1)(x) zu berechnen, vereinfacht zu δσ(i)(x) + 0τ(i)(x) = δσ(i)(x). In diesem Fall gibt es keine Notwendigkeit mehr, σ(x) mit δ zu multiplizieren, da die Wurzeln von σ(i)(x) und δσ(i)(x) gleich sind. Wann immer deshalb Δ(i) 0 ist, spezifiziert der bedingte q-ary inversionslose BMA σ(i+1)(x) = σ(i)(x) anstatt σ(i+1)(x) = δσ(i)(x) + Δ(i)τ(i)(x). Eine bedeutend geringere Anzahl an Multiplikationen ist im Vergleich zum q-ary inversionslosen BMA erforderlich.
  • Eine Ausführungsform eines nicht bedingten q-ary inversionslosen BMA kann beschrieben werden als:
    δ = 1
    Δ(0) = S1
    σ(–1)(x) = 1
    τ(–1)(x) = 1
    D(–1) = 0
    für (i = 0; i < 2t; i = i + 1)
    Figure 00080001
    Figure 00090001
  • Eine Ausführungsform eines nicht bedingten q-ary inversionslosen BMA kann beschrieben werden als:
    δ = 1
    Δ(0) = S1
    σ(–1)(x) = 1
    τ(–1)(x) = 1
    D(–1) = 0
    für (i = 0; i < 2t; i = i + 1)
    Figure 00090002
    Figure 00100001
  • Zu beachten ist, dass, wenn im bedingten q-ary inversionslosen BMA Δ(i) = 0 ist, eine einfachere Berechnung verwendet wird, um σ(i)(x) zu bestimmen. Diese bedingte Operation kann effizientere BMA-Berechnungen bereitstellen, die erhöhten Durchsatz bieten können.
  • Wenn bei einer Ausführungsform Δ(i) 0 ist, spezifiziert der bedingte binäre inversionslose BMA σ(i+1)(x) = σ(i)(x) anstatt σ(i+1)(x) = δσ(i)(x) + Δ(i)τ(i)(x). Der bedingte binäre inversionslose BMA wendet auch eine Optimierung an, die auf binäres BCH Anwendung findet: jede zweite Iteration wird übersprungen.
  • Eine Ausführungsform eines nicht bedingten inversionslosen BMA kann beschrieben werden als:
    δ = 1
    Δ(0) = S1
    σ(–2)(x) = 1
    τ(–2)(x) = 1
    D(–2) = 0
    für (i = 0; i < 2t; i = i + 2)
    Figure 00100002
    Figure 00110001
  • Eine Ausführungsform eines bedingten Inversionslosen BMA kann beschrieben werden als:
    δ = 1
    Δ(0) = S1
    σ(–2)(x) = 1
    τ(–2)(x) = 1
    D(–2) = 0
    für (i = 0; i < 2t; i = i + 2)
    Figure 00110002
    Figure 00120001
  • Zu beachten ist, dass, wenn im bedingten inversionslosen BMA Δ(i) = 0, eine einfachere Berechnung verwendet wird, um σ(i)(x) zu bestimmen. Diese bedingte Operation kann effizientere BMA-Berechnungen bereitstellen, die erhöhten Durchsatz bieten können.
  • Der BCH-Decoder, wie er oben beschrieben ist, kann verwendet werden, um NAND-Flash-Speicher-Speichersysteme zu unterstützen, hohe Durchsatzgeschwindigkeiten mit geringeren Gatezählungskosten zu erreichen, als anfallen würden, wenn ein typischer BCH-Decoder skaliert oder repliziert werden würde, um hohen Durchsatzanforderungen zu entsprechen. Die Reduktion an Gatezählungskosten verringert die Kosten des Controller-Chips, die Systemkosten sowie die Leistungsaufnahme. Die geringere Leistungsaufnahme ist wichtig, da das Leistungsbudget eines SSD häufig eine wichtige Designerwägung ist.
  • Die hier beschriebene Architektur stellt auch BCH-Decodierung mit hoher Korrekturstärke bereit, die durchführbar ist, da die Gatezählung und die damit verbundene Leistungsaufnahme von BMA bei den gleichen Durchsatzskalen anhand O(t3) skaliert ist. Des Weiteren wird die nächste Generation von NAND-Flash-Speicher-Produkten mit höheren Dichten von kleineren Lithografien oder dem Packen von mehr Bits pro Zelle höhere Rohbitfehlerraten (RBER) aufweisen, und die Entwicklung dieser Produkte wird durch reduzierte BCH-Hardwarekosten im Controller durchführbarer gemacht. Letztendlich können diese Verbesserungen auch dabei unterstützen, das Leben eines NAND-Flash-Speicher-Produktes zu verlängern, da die höhere Durchsatzgeschwindigkeit der Einheit ermöglichen wird, ein Nennleistungsniveau aufrechtzuerhalten, auch wenn Bitfehlerraten aufgrund von Taktablauf und Zurückbehaltung ansteigen.
  • 3 ist ein konzeptionelles Diagramm einer Ausführungsform eines rechteckigen Multiplikatorarrays, das von einer Chien Search-Komponente verwendet werden kann. Eine Form der Chien Search-Hardware verwendet das rechteckige Multiplikatorarray, in dem eine Reihe von Galoisfeld-Multiplikatoren verwendet wird, um die Koeffizienten von σ(x) zu multiplizieren und nach den Wurzeln von σ(x) zu suchen, die den Bitfehlerstellen entsprechen. Die Potenzen von Alpha αn, wobei n = 0, 1, 2, usw. ist, sind Elemente in einem Galoisfeld. Jede Potenz von Alpha wird ersetzt in σ(x), um zu sehen, ob σ(αn) = 0. Deshalb besteht der Chien Search aus Galoisfeld-Multiplikationen mit Potenzen von Alpha gefolgt von Galoisfeld-Addition, um das Polynom zu bewerten.
  • Um mehrere potenzielle Wurzeln parallel zu prüfen, können mehr Reihen parallel hinzugefügt werden, um ein Multiplikatorarray zu bilden. Die Anzahl an Reihen ist flexibel, während die Anzahl an Spalten festgelegt und gleich der maximalen Korrekturstärke des BCH-Codes ist, da diese Konfiguration der maximalen Leistung von x in σ(x) entspricht. Die rechteckigen Boxen an der Oberseite von 3 repräsentieren Register, welche die Kennzahlen von σ(x) aufnehmen. Diese Koeffizienten werden in jedem Taktzyklus durch das Multiplizieren mit der untersten Reihe von Multiplikatoren aktualisiert. Im zweiten Taktzyklus berechnet die erste Reihe von Multiplikatoren σ(α0) erneut, aber dieses Mal haben sich die Koeffizienten von σ(x) geändert, sodass das Ergebnis der Berechnung tatsächlich σ(α4) ist. Ähnlich berechnet sich die zweite Reihe jetzt zu σ(α5). Auf diese Weise kann der Chien Search iterieren, bis der Wert von σ(αn) für alle möglichen Werte von n berechnet ist.
  • 4 ist eine konzeptionelle Darstellung einer Ausführungsform eines Ripple-Kaskaden-Multiplikatorarrays, das von einer Chien Search-Komponente verwendet werden kann. Das Ripple-Kaskaden-Multiplikatorarray unterscheidet sich konzeptionell vom rechteckigen Multiplikatorarray darin, dass die Multiplikationsfaktoren unterschiedlich sind und die Produkte jeder Reihe von Multiplikatoren zu den Eingängen für die Reihe an Multiplikatoren darunter werden, aber sie sind funktionell gleich.
  • 5 ist eine konzeptionelle Darstellung einer Ausführungsform eines unregelmäßig geformten Multiplikatorarrays mit variabler Leistung, das von einer Chien Search-Komponente verwendet werden kann. Die Anzahl an Bitfehlern ist gleich der Anzahl an Wurzeln von σ(x), welche dem Grad an σ(x) gleicht. Bei Fällen, wo die Anzahl an Bitfehlern kleiner ist als t, der maximalen Anzahl an korrigierbaren Bitfehlern der BCH-Hardware, sind viele der Multiplikatoren unnötig. Es ist möglich, mehr Multiplikatoren bereitzustellen, um eine höhere Parallelität für Codewörter mit wenigen Bitfehlern und deshalb höherem Durchsatz für diese Codewörter im Vergleich zu Codewörtern mit mehr Bitfehlern, bereitzustellen.
  • 6 ist eine konzeptionelle Darstellung einer Ausführungsform eines rechteckigen Multiplikatorarrays mit funktioneller Flexibilität, das von einer Chien Search-Komponente verwendet werden kann. Eine Eigenschaft des rechteckigen Multiplikatorarrays besteht darin, dass die Multiplikatoren in der ersten Reihe zu den Multiplikatoren in der ersten Spalte äquivalent sind, die Multiplikatoren in der zweiten Reihe zu den Multiplikatoren in der zweiten Spalte äquivalent sind und so weiter und so fort.
  • Wenn das Array als eine Matrix von Multiplikatoren betrachtet wird, ist die Matrix einer symmetrischen Matrix ähnlich, außer dass sie nicht rechteckig ist. Beide Reihen und Spalten haben geometrische Reihen von Galoisfeld-Multiplikatoren. Jedoch ist die kte Reihe von Multiplikatoren zur kten Spalte von Multiplikatoren nicht äquivalent, da sie unterschiedliche Eingänge haben. Trotzdem können die Eingänge der Multiplikatoren ausgewählt werden, sodass die gleichen Multiplikatoren für unterschiedliche Berechnungen im Chien Search erneut benutzt werden können.
  • Jeder Multiplikator multipliziert mit einer konstanten Potenz von α in einem Galoisfeld. Das Produkt eines Multiplikators kann als der Eingang für einen anderen Multiplikator eingegeben werden, sodass es zwei oder mehr kaskadierte Multiplikationen gibt. Das kann verwendet werden, um Multiplikatoren mit anderen Potenzen von α zu multiplizieren. Mit anderen Worten αx × αy = αx+y.
  • Des Weiteren ist es möglich, von jeder Serie von Multiplikatoren, die α0, αi, α2i, α3i, α4i, ... enthalten, einen Teilsatz von Multiplikatoren auszuwählen, um eine andere Serie α0, αj, α2j, α3j, α4j, ... zu generieren, wobei j ein Vielfaches von i ist. Es ist auch möglich die Serie zu repräsentieren als α0, αi, α2i, ..., αj, αj+i, αj+2i, ..., α2j, α2j+i, α2j+2i, .... 6 stellt ein Beispiel dazu bereit, funktionelle Flexibilität zu verwenden, um σ(αn) für 12 Werte von n zu berechnen, wenn der Grad von σ(x) 1 ist.
  • Die geometrische Reihe kann auch rekursiv repräsentiert und berechnet werden; Als Beispiel umfasst der Chien Search-Algorithmus das Berechnen eines Polynoms σ(x), wobei x = αn. Das Polynom kann algebraisch und rekursiv als Faktor berücksichtigt werden. Zum Beispiel: σ(αn) = σ0 + σ1αn + σ2α2n + σ3α3n + σ4α4n + σ5α5n + σ6α6n + σ7α7n + σ8α8n + σ9α9n + ... Gl. (3) σ(α)n = σ0 + (σ1αn + σ2α2n + σ3α3n) + α3n[(σ4αn + σ5α2n + σ6α3n) + α3n{(σ7αn + σ8α2n + σ9α3n) + α3n(...)}] Gl.(4) σ(αn) = (σ0 + σ1αn + σ2α2n + σ3α3n) + α4n[(σ4 + σ5αn + σ6α2n + σ7α3n) + α4n{(σ8 + σ9αn + ...) + α4n(...)}] Gl.(5) Gl.4 oberhalb wird im in 7 veranschaulichten Falt-Multiplikatorarray verwendet.
  • Beim rekursiven algebraischen Polynom-Faktorisieren, das oben besprochen wurde, kann der gleiche Satz Multiplikatoren erneut benutzt werden, um jede Stufe der Rekursion zu bewerten. Bei einer Ausführungsform kann eine Stufe der Rekursion in jedem Taktzyklus mit dem innersten Faktor beginnend bewertet werden. Das Falt-Multiplikatorarray der 7 wendet dieses Konzept an. Die Anzahl von Taktzyklen, die erforderlich sind, um die Berechnung abzuschließen, ist niedriger, wenn der Grad von σ(x) niedriger ist.
  • Die hier beschriebenen Techniken ermöglichen Chien Search-Hardware, einen viel höheren Durchsatz für σ(x)-Polynome mit niedrigem Grad und einen niedrigeren Durchsatz für σ(x)-Polynome mit hohem Grad aufzuweisen. Diese Betonung bei der Behandlung des Falles von σ(x)-Polynomen mit niedrigem Grad vergrößert den durchschnittlichen Durchsatz von Chien Search-Hardware, da in bestimmten Fällen der gröte Teil der σ(x)-Polynome einen niedrigen Grad aufweisen.
  • Die Chien Search-Techniken des BCH-Decoders, der hier beschrieben ist, können verwendet werden, um NAND-Flash-Speicher-Speichersysteme zu unterstützen, hohe Durchsatzgeschwindigkeiten mit geringeren Gatezählungskosten zu erreichen, als sie anfallen würden, wenn ein typischer BCH-Decoder skaliert oder repliziert werden würde, um hohen Durchsatzanforderungen zu entsprechen. Die Reduktion an Gatezählungskosten verringert die Kosten des Controller-Chips, die Systemkosten sowie die Leistungsaufnahme.
  • Die nicht rechteckigen hier beschriebenen Multiplikatorarchitekturen können ein effizienteres Verfahren bereitstellen, den Chien Search in Hardware zu implementieren, was verwendet werden kann, um BCH-Decodierungsdurchsatz mit einer begrenzten Gatezählung zu verbessern.
  • Verweise in der Beschreibung auf „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, eine Struktur oder Charakteristikum, das in Verbindung mit der Ausführungsform beschrieben wird, in zumindest einer erfindungsgemäßen Ausführungsform enthalten ist. Die Verwendung des Ausdrucks „bei einer Ausführungsform” an verschiedenen Stellen in der Beschreibung bezieht sich nicht notwendigerweise immer auf die gleiche Ausführungsform.
  • Während die Erfindung bezogen auf verschiedene Ausführungsformen beschrieben wurde, werden Fachleute erkennen, dass die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist, sondern mit Modifikationen und Änderungen im Sinne und innerhalb des Schutzbereichs der angefügten Ansprüche betrieben werden kann. Die Beschreibung soll somit als veranschaulichend anstatt einschränkend angesehen werden.

Claims (28)

  1. Ein Verfahren, umfassend: das Empfangen eines Syndroms entsprechend einem Codewort von Daten; das Anzeigen, dass es keinen Fehler im Codewort gibt, wenn das Syndrom Null ist; das Anzeigen eines Fehlers im Codewort, wenn das Syndrom nicht Null ist; das Erzeugen eines Fehlerlokalisierpolynoms für das Codewort basierend auf dem Syndrom, das mindestens einen bedingten Berlekamp-Massey-Algorithmus (BMA) verwendet; das Analysieren des Fehlerlokalisierungspolynoms, um Bitfehlerstellen zu bestimmen; das Korrigieren von Bitfehlern im Codewort, wie angezeigt durch die Bitfehlerstellen; und das Speichern des Codeworts mit den korrigierten Bits.
  2. Das Verfahren nach Anspruch 1, wobei das Analysieren des Fehlerlokalisierpolynoms, um Bitfehlerstellen zu bestimmen, das Ausführen eines Chien Search unter Verwendung eines nicht rechteckigen Multiplikatorarrays umfasst.
  3. Das Verfahren nach Anspruch 2, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
  4. Das Verfahren nach Anspruch 2, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
  5. Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation umfasst.
  6. Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Berechnung einer bedingten inversionslosen BMA-Operation umfasst.
  7. Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Verwendung einer konfigurierbaren semi-parallelen gemeinsam benutzten Multiplikatorarchitektur umfasst.
  8. Das Verfahren nach Anspruch 7, wobei die konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur eine Vielzahl von Multiplizierschaltungen umfasst, die als einen ersten Eingang einen ausgewählten Eingang aus einer vorhergehenden Diskrepanz, einem aktuellen Diskrepanzwert und einem partiellen Syndromwert empfangen und als einen zweiten Eingang einen ausgewählten Eingang aus einem Fehlerlokalisierpolynom-Koeffizientwert und einem Hilfspolynom-Koeffizientwert empfangen.
  9. Ein System, umfassend: ein Syndromrechner, der gekoppelt ist, um ein Codewort von einem Speichergerät zu empfangen, wobei der Syndromrechner ein Syndrom für das Codewort berechnet und das Syndrom anzeigt, ob das Codewort einen Fehler enthält; eine Berlekamp-Massey-Algorithmus-(BMA)-Schaltung, die gekoppelt ist, um das Syndrom zu empfangen, wobei die BMA-Schaltung ein Fehlerlokalisierpolynom entsprechend dem Syndrom erzeugt, und wobei die BMA-Schaltung mindestens eine bedingte Operation basierend auf mindestens teilweise einem aktuellen Diskrepanzwert ausführt; eine Chien Search-Schaltung, die gekoppelt ist, um das Fehlerlokalisierpolynom zu empfangen, wobei die Chien Search-Schaltung Bitfehlerstellen basierend auf dem Fehlerlokalisierpolynom erzeugt; und ein Codewortpuffer, um das Codewort zu speichern, wobei der Codewortpuffer gekoppelt ist, um die Bitfehlerstellen zu empfangen und im Codewort Fehler, falls vorhanden, basierend auf mindestens den Bitfehlerstellen zu berichtigen.
  10. Das System nach Anspruch 9, wobei die Chien Search-Schaltung ein nicht rechteckiges Multiplikatorarray verwendet.
  11. Das System nach Anspruch 10, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
  12. Das System nach Anspruch 10, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
  13. Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
  14. Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
  15. Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
  16. Eine Vorrichtung, umfassend: ein Encoder, der gekoppelt ist, um zu speichernde Daten zu empfangen, wobei der Encoder ein auf den Empfangsdaten basierendes Codewort erzeugt; ein Speichergerät gekoppelt mit dem Encoder, wobei das Speichergerät das Codewort speichert; einen Codewortpuffer, der gekoppelt ist, um das Codewort als Antwort darauf zu empfangen, dass das Codewort vom Speichergerät gelesen wurde, wobei der Codewortpuffer das Codewort speichert, nachdem es vom Speichergerät gelesen wurde; einen mit dem Speichergerät gekoppelter Syndromrechner, um das Codewort vom Speichergerät zu empfangen, wobei der Syndromrechner ein Syndrom für das Codewort berechnet und das Syndrom anzeigt, ob das Codewort einen Fehler enthält; eine Berlekamp-Massey-Algorithmus-(BMA)-Schaltung, die mit dem Syndromrechner gekoppelt ist, wobei die BMA-Schaltung ein Fehlerlokalisierpolynom entsprechend dem Syndrom erzeugt, und wobei die BMA-Schaltung mindestens eine bedingte Operation basierend auf mindestens teilweise einem aktuellen Diskrepanzwert ausführt; eine mit der BMA-Schaltung gekoppelte Chien Search-Schaltung, um das Fehlerlokalisierpolynom zu empfangen, wobei die Chien Search-Schaltung auf dem Fehlerlokalisierpolynom basierende Bitfehlerstellen erzeugt und die Chien Search-Schaltung auch mit dem Codewortpuffer gekoppelt ist, um die Bitfehlerstellen dem Codewortpuffer bereitzustellen; wobei der Codewortpuffer die Bitfehlerstellen empfängt, um im Codewort Fehler, falls vorhanden, basierend mindestens auf den Bitfehlerstellen zu korrigieren.
  17. Die Vorrichtung nach Anspruch 16, wobei die Chien Search-Schaltung ein nicht rechteckiges Multiplikatorarray verwendet.
  18. Die Vorrichtung nach Anspruch 17, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
  19. Die Vorrichtung nach Anspruch 17, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
  20. Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
  21. Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
  22. Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
  23. Ein System, umfassend: einen Syndromrechner, der gekoppelt ist, um ein Codewort von einem Speichergerät zu empfangen, wobei der Syndromrechner ein Syndrom für das Codewort berechnet und das Syndrom anzeigt, ob das Codewort einen Fehler enthält; eine Berlekamp-Massey-Algorithmus-(BMA)-Schaltung, die gekoppelt ist, um das Syndrom zu empfangen, wobei die BMA-Schaltung ein Fehlerlokalisierpolynom entsprechend dem Syndrom erzeugt; eine Chien Search-Schaltung, die gekoppelt ist, um das Fehlerlokalisierpolynom zu empfangen, wobei die Chien Search-Schaltung auf dem Fehlerlokalisierpolynom basierende Bitfehlerstellen erzeugt, und wobei die Chien Search-Schaltung ein nicht rechteckiges Multiplikatorarray verwendet; und einen Codewortpuffer, um das Codewort zu speichern, wobei der Codewortpuffer gekoppelt ist, um die Bitfehlerstellen zu empfangen und im Codewort Fehler, falls vorhanden, basierend auf mindestens den Bitfehlerstellen zu berichtigen.
  24. Das System nach Anspruch 23, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
  25. Das System nach Anspruch 23, wobei das nichtrechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
  26. Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
  27. Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
  28. Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
DE102011014680.6A 2010-03-29 2011-03-22 Fehlerkorrekturmechanismen für Flash-Speicher Active DE102011014680B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/748,746 US8433985B2 (en) 2010-03-29 2010-03-29 Error correction mechanisms for flash memories
US12/748,746 2010-03-29

Publications (2)

Publication Number Publication Date
DE102011014680A1 true DE102011014680A1 (de) 2011-09-29
DE102011014680B4 DE102011014680B4 (de) 2015-01-15

Family

ID=44067347

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102011014680.6A Active DE102011014680B4 (de) 2010-03-29 2011-03-22 Fehlerkorrekturmechanismen für Flash-Speicher

Country Status (5)

Country Link
US (1) US8433985B2 (de)
KR (1) KR101264061B1 (de)
CN (1) CN102208213B (de)
DE (1) DE102011014680B4 (de)
GB (1) GB2479248B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011102474B4 (de) 2011-10-13 2021-08-12 Hyperstone Gmbh Hybride Dekodierung von BCH-Kodes für nichtflüchtige Speicher

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9996499B2 (en) * 2010-09-29 2018-06-12 Alcatel Lucent Scalable and programmable processor comprising multiple cooperating processor units
KR101307792B1 (ko) * 2011-12-27 2013-09-12 한국과학기술원 다중-쓰레드 비씨에이치 인코더, 비씨에이치 디코더, 이를 포함하는 스토리지 디바이스 및 스토리지 시스템
US8650467B1 (en) 2012-07-23 2014-02-11 Apple Inc. Parallel chien search over multiple code words
US8996966B2 (en) * 2013-02-27 2015-03-31 Kabushiki Kaisha Toshiba Error correction device and error correction method
US9054742B2 (en) * 2013-03-14 2015-06-09 Intel Corporation Error and erasure decoding apparatus and method
US9641285B2 (en) * 2014-03-06 2017-05-02 Samsung Electronics Co., Ltd. Ultra low power (ULP) decoder and decoding processing
US9467173B2 (en) * 2014-07-29 2016-10-11 Storart Technology Co. Ltd. Multi-code Chien's search circuit for BCH codes with various values of m in GF(2m)
KR102149674B1 (ko) 2014-10-13 2020-09-01 삼성전자주식회사 에러 정정 디코더 및 에러 정정 디코더의 동작 방법
US9680509B2 (en) 2015-03-27 2017-06-13 Intel Corporation Errors and erasures decoding from multiple memory devices
US10439644B2 (en) 2015-07-14 2019-10-08 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10572189B2 (en) 2016-11-04 2020-02-25 Sandisk Technologies Llc Method and decoder to adjust an error locator polynomial based on an error parity
US10461777B2 (en) 2015-07-14 2019-10-29 Western Digital Technologies, Inc. Error locator polynomial decoder and method
US10097208B2 (en) 2015-07-14 2018-10-09 Western Digital Technologies, Inc. Error locator polynomial decoder method
US9792176B2 (en) 2015-11-13 2017-10-17 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding data in memory system
KR101805073B1 (ko) * 2016-04-01 2017-12-05 고려대학교 산학협력단 폴딩된 곱셈기가 적용된 bch 디코더
US10055159B2 (en) 2016-06-20 2018-08-21 Samsung Electronics Co., Ltd. Morphic storage device
US10489076B2 (en) 2016-06-20 2019-11-26 Samsung Electronics Co., Ltd. Morphic storage device
US10855314B2 (en) 2018-02-09 2020-12-01 Micron Technology, Inc. Generating and using invertible, shortened Bose-Chaudhuri-Hocquenghem codewords
CN109857340B (zh) * 2019-01-14 2022-05-06 普联技术有限公司 Nor flash中文件的存储和读取方法、装置及存储介质
KR20210150149A (ko) * 2020-06-03 2021-12-10 삼성전자주식회사 신드롬과 부분 계수 정보를 병렬적으로 생성하는 에러 정정 장치 및 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3233860B2 (ja) * 1996-10-25 2001-12-04 松下電器産業株式会社 リードソロモン復号器
AU8829498A (en) * 1997-08-13 1999-03-08 T. C. Cheng Reed-solomon decoder and vlsi implementation thereof
US6119262A (en) * 1997-08-19 2000-09-12 Chuen-Shen Bernard Shung Method and apparatus for solving key equation polynomials in decoding error correction codes
DE69919199T2 (de) * 1998-11-09 2005-09-15 Broadcom Corp., Irvine Vorwärtsfehlerkorrektur
US6347389B1 (en) * 1999-03-23 2002-02-12 Storage Technology Corporation Pipelined high speed reed-solomon error/erasure decoder
US6360348B1 (en) * 1999-08-27 2002-03-19 Motorola, Inc. Method and apparatus for coding and decoding data
US6694476B1 (en) * 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
US20030101406A1 (en) * 2001-10-12 2003-05-29 Leilei Song Low complexity and low power FEC supporting high speed parallel decoding of syndrome-based FEC codes
US6990624B2 (en) * 2001-10-12 2006-01-24 Agere Systems Inc. High speed syndrome-based FEC encoder and decoder and system using same
US7096408B1 (en) * 2002-02-21 2006-08-22 Ciena Corporation Method and apparatus for computing the error locator polynomial in a decoder of a forward error correction (FEC) system
US7421642B2 (en) * 2002-04-05 2008-09-02 Seagate Technology Llc Method and apparatus for error detection
US7051267B1 (en) * 2002-04-08 2006-05-23 Marvell International Ltd. Efficient high-speed Reed-Solomon decoder
US7010739B1 (en) * 2002-04-11 2006-03-07 Marvell International Ltd. Error evaluator for inversionless Berlekamp-Massey algorithm in Reed-Solomon decoders
US7206992B2 (en) * 2003-03-04 2007-04-17 Broadcom Corporation Decoding a received BCH encoded signal
US7206993B2 (en) * 2003-03-12 2007-04-17 Matsushita Electric Industrial Co., Ltd. Method and device for decoding Reed-Solomon code or extended Reed-Solomon code
US7865809B1 (en) * 2004-03-11 2011-01-04 Super Talent Electronics, Inc. Data error detection and correction in non-volatile memory devices
US7788570B1 (en) * 2005-03-23 2010-08-31 Marvell International Ltd. Optimized Reed-Solomon decoder
US7613988B1 (en) * 2005-10-18 2009-11-03 Link—A—Media Devices Corporation Degree limited polynomial in Reed-Solomon decoding
US7774688B1 (en) * 2006-10-11 2010-08-10 Marvell International Ltd. Hardware efficient decoding system for Bose, Ray-Chaudhuri, Hocquenghem (BCH) product codes
US8225185B1 (en) * 2007-02-07 2012-07-17 Marvell International, Ltd. RS codec architecture that combines a compact encoder and serial BMA
KR100891332B1 (ko) * 2007-03-30 2009-03-31 삼성전자주식회사 에러 정정 부호화기를 이용하여 에러를 체크하는 bch에러 정정 방법 및 회로
US8370727B2 (en) * 2009-02-03 2013-02-05 Silicon Motion, Inc. Method and circuit for decoding an error correction code
US8468432B2 (en) * 2009-07-01 2013-06-18 Silicon Motion, Inc. Coder-decoder and method for encoding and decoding an error correction code

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112011102474B4 (de) 2011-10-13 2021-08-12 Hyperstone Gmbh Hybride Dekodierung von BCH-Kodes für nichtflüchtige Speicher

Also Published As

Publication number Publication date
CN102208213B (zh) 2014-06-11
DE102011014680B4 (de) 2015-01-15
GB2479248B (en) 2012-07-04
GB201105014D0 (en) 2011-05-11
KR20110109986A (ko) 2011-10-06
KR101264061B1 (ko) 2013-05-21
US20110239094A1 (en) 2011-09-29
CN102208213A (zh) 2011-10-05
GB2479248A (en) 2011-10-05
US8433985B2 (en) 2013-04-30

Similar Documents

Publication Publication Date Title
DE102011014680B4 (de) Fehlerkorrekturmechanismen für Flash-Speicher
US10635965B2 (en) Neural network convolution computation method and device, and computer-readable storage medium
CN111247527B (zh) 在卷积神经网络模型中确定特征图像的方法和装置
US20190012295A1 (en) Memory-Size- and Bandwidth-Efficient Method for Feeding Systolic Array Matrix Multipliers
DE69834542T2 (de) Hardwareoptimierter reed-solomon-decoder zur decodierung grosser datenblöcke
DE60220341T2 (de) Verfahren zum Erzeugen eines Burstfehlermusters sowie Burst- und Bytefehlerermittlungs- und-korrekturvorrichtung
DE102005028221B4 (de) Vorrichtung und Verfahren zum Schutz der Integrität von Daten
DE602004000456T2 (de) Verfahren und Vorrichtung zur Generierung von Prüfdaten basierend auf einer Low-Density Parity Check (LDPC) Matrix
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
US9484959B2 (en) Error correction encoding method and error correction encoding device
DE112012000385T5 (de) Korrigieren von Auslöschungen in Speicher-Arrays
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE2834963A1 (de) Verfahren und einrichtung zur fehlerkorrektur von uebertragenen daten
DE102014012138A1 (de) Verbesserter Decoder für Paritätsprüfcodes mit niedriger Dichte
DE202005021953U1 (de) Vorrichtung zum Generieren einer Paritätsprüfmatrix, Datenübertragungssystem, Codiervorrichtung, Decodiervorrichtung
DE102014215252B9 (de) Wirksame fehlerkorrektur von mehrbitfehlern
US20120131423A1 (en) Binary bch decoders
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
EP2533450B1 (de) Verfahren und vorrichtung zur datenprüfungsverarbeitung
DE112011102474B4 (de) Hybride Dekodierung von BCH-Kodes für nichtflüchtige Speicher
DE69332937T2 (de) Korrekturverfahren für verlorengegangene Daten und Schaltung dafür
DE102019119753A9 (de) Generalisiertes verkettetes Fehlerkorrektur-Codierschema mit Lokalität
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102017120820A1 (de) Codierer, der mehrere Coderaten und Codelängen unterstützt
US20220179741A1 (en) Programmable error correction code encoding and decoding logic

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R081 Change of applicant/patentee

Owner name: SK HYNIX NAND PRODUCT SOLUTIONS CORP., SAN JOS, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US