DE102011014680A1 - Fehlerkorrekturmechanismen für Flash-Speicher - Google Patents
Fehlerkorrekturmechanismen für Flash-Speicher Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title description 13
- 238000012937 correction Methods 0.000 title description 7
- 230000007246 mechanism Effects 0.000 title description 3
- 238000000034 method Methods 0.000 claims abstract description 20
- 208000011580 syndromic disease Diseases 0.000 claims description 40
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 2
- 238000003491 array Methods 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 6
- 230000009467 reduction Effects 0.000 description 4
- 239000011159 matrix material Substances 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
- G11C29/38—Response verification devices
- G11C29/42—Response verification devices using error correcting codes [ECC] or parity check
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods 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/72—Methods 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/724—Finite field arithmetic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/52—Protection of memory contents; Detection of errors in memory contents
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/152—Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1525—Determination and particular use of error location polynomials
- H03M13/153—Determination and particular use of error location polynomials using the Berlekamp-Massey algorithm
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/158—Finite field arithmetic processing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C2029/0411—Online 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
ν(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.
- 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)xτ(i)(x).
σ(i+1)(x) = δσ(i)(x) + Δ(i)xτ(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. Daten110 werden Encoder120 bereitgestellt, um unter Verwendung von BCH-Codieralgorithmen codiert zu werden. BCH-Codierung durch Encoder120 kann auf irgendeine in der Technik bekannte Weise realisiert werden. Der Encoder erzeugt Codewort125 , das eine BCH-codierte Variante der Daten110 ist. In vielen Fällen besteht Codewort125 aus der Verknüpfung der Daten110 und Parität. - Codewort
125 ist im Kanal130 gespeichert. Bei einer Ausführungsform ist Kanal130 ein NAND-Flash-Speicher. Bei alternativen Ausführungsformen kann Kanal130 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. Kanal130 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 Kanal130 das abgerufene Codewort135 bereit. Das abgerufene Codewort135 kann das gleiche sein wie Codewort125 , wenn keine Fehler aufgetreten sind. Wenn jedoch ein Fehler innerhalb des Kanals130 aufgetreten ist, enthält das abgerufene Codewort135 einen oder mehrere Bitfehler. Das abgerufene Codewort135 wird im Codewortpuffer140 gespeichert, egal ob eine Abweichung aufgetreten ist oder nicht. - Das abgerufene Codewort
135 wird Syndromrechner150 bereitgestellt. Syndromrechner150 arbeitet mit dem abgerufenen Codewort135 , um Syndrom155 zu erzeugen, das anzeigt, ob ein Fehler im abgerufenen Codewort135 erkannt wurde. Syndrom155 kann von Syndromrechner150 unter Verwendung jeder bekannten Technik berechnet werden. Bei einer Ausführungsform zeigt ein Syndromwert von Null keinen Fehler im abgerufenen Codewort135 an. Ein Nicht-Null-Syndromwert zeigt die Anwesenheit eines Fehlers im abgerufenen Codewort135 an. - Syndrom
155 wird vom BMA-Rechner160 verwendet, um das Fehlerlokalisierpolynom σ(x) zu generieren,165 . Bei einer Ausführungsform wird Fehlerlokalisierpolynom165 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-Schaltung170 verwendet, um Bitfehlerstellen175 zu erzeugen. Verschiedene Ausführungsformen für Chien Search-Schaltung170 werden nachfolgend ausführlicher beschrieben. Bitfehlerstellen175 werden vom Codewortpuffer140 verwendet, um im abgerufenen Codewort135 Fehler zu berichtigen, falls vorhanden. Nach der Korrektur stellt Codewortpuffer140 Codewort190 als ein Ausgangssignal bereit, falls dies erforderlich ist. Bei einer Ausführungsform sind eine oder mehrere von den in Bezug auf1 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 in2 ), 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 und170 ). 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 und125 für den Multiplikator110 ,140 und145 für den Multiplikator130 ,160 und165 für den Multiplikator150 , und180 und185 für den Multiplikator170 ) 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.
-
-
- 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.
-
-
- 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) 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)
- 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.
- 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.
- Das Verfahren nach Anspruch 2, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
- Das Verfahren nach Anspruch 2, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
- Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation umfasst.
- Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Berechnung einer bedingten inversionslosen BMA-Operation umfasst.
- Das Verfahren nach Anspruch 1, wobei der BMA mindestens die Verwendung einer konfigurierbaren semi-parallelen gemeinsam benutzten Multiplikatorarchitektur umfasst.
- 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.
- 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.
- Das System nach Anspruch 9, wobei die Chien Search-Schaltung ein nicht rechteckiges Multiplikatorarray verwendet.
- Das System nach Anspruch 10, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
- Das System nach Anspruch 10, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
- Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
- Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
- Das System nach Anspruch 9, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
- 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.
- Die Vorrichtung nach Anspruch 16, wobei die Chien Search-Schaltung ein nicht rechteckiges Multiplikatorarray verwendet.
- Die Vorrichtung nach Anspruch 17, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
- Die Vorrichtung nach Anspruch 17, wobei das nicht rechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
- Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
- Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
- Die Vorrichtung nach Anspruch 16, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
- 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.
- Das System nach Anspruch 23, wobei das nicht rechteckige Multiplikatorarray ein rechteckiges Multiplikatorarray mit funktioneller Flexibilität umfasst.
- Das System nach Anspruch 23, wobei das nichtrechteckige Multiplikatorarray ein Falt-Multiplikatorarray umfasst.
- Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten q-ary inversionslosen BMA-Operation ausführt.
- Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens die Berechnung einer bedingten inversionslosen BMA-Operation ausführt.
- Das System nach Anspruch 23, wobei die BMA-Schaltung mindestens eine konfigurierbare semi-parallele gemeinsam benutzte Multiplikatorarchitektur verwendet.
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)
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)
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)
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 |
-
2010
- 2010-03-29 US US12/748,746 patent/US8433985B2/en active Active
-
2011
- 2011-03-22 DE DE102011014680.6A patent/DE102011014680B4/de active Active
- 2011-03-24 GB GB1105014.3A patent/GB2479248B/en active Active
- 2011-03-29 CN CN201110077021.XA patent/CN102208213B/zh active Active
- 2011-03-29 KR KR1020110028264A patent/KR101264061B1/ko not_active IP Right Cessation
Cited By (1)
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 |