DE102018126685B3 - Verarbeitung von Daten - Google Patents

Verarbeitung von Daten Download PDF

Info

Publication number
DE102018126685B3
DE102018126685B3 DE102018126685.5A DE102018126685A DE102018126685B3 DE 102018126685 B3 DE102018126685 B3 DE 102018126685B3 DE 102018126685 A DE102018126685 A DE 102018126685A DE 102018126685 B3 DE102018126685 B3 DE 102018126685B3
Authority
DE
Germany
Prior art keywords
matrix
error
columns
component
bit
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.)
Active
Application number
DE102018126685.5A
Other languages
English (en)
Inventor
Jessica Trebst
Klaus Oberländer
Michael Goessel
Christian Badack
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 Infineon Technologies AG filed Critical Infineon Technologies AG
Priority to DE102018126685.5A priority Critical patent/DE102018126685B3/de
Priority to TW108129917A priority patent/TWI744679B/zh
Application granted granted Critical
Publication of DE102018126685B3 publication Critical patent/DE102018126685B3/de
Priority to US16/663,839 priority patent/US11556412B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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
    • 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/155Shortening or extension of 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations

Landscapes

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

Abstract

Verfahren zum Verarbeiten von Daten mittels eines Fehlercodes, wobei der Fehlercode eine H-Matrix mit n Spalten und m Zeilen aufweist,
- wobei die Spalten der H-Matrix unterschiedlich sind,
- wobei komponentenweise XOR-Summen benachbarter Spalten der H-Matrix zueinander und zu allen Spalten der H-Matrix unterschiedlich sind,
- wobei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix unterschiedlich sind zu allen Spalten der H-Matrix und zu allen komponentenweisen XOR-Summen benachbarter Spalten der H-Matrix,
- bei dem mittels des Fehlercodes
- 1-Bit-Fehler korrigiert werden,
- benachbarte 2-Bit-Fehler korrigiert werden und
- nicht benachbarte 2-Bit-Fehler erkannt werden.

Description

  • Die hier erwähnte Verarbeitung von Daten betrifft insbesondere die Fehlererkennung bzw. Fehlerkorrektur von in einem Speicher abgelegten Daten.
  • Aus [T. R. N. Rao et al.: Error-Control Coding for Computer Systems, Prentice Hall 1989, Seiten 97 bis 99, ISBN 0-13-283953-9] und aus [de.wikipedia.org/wiki/BCH-Code] sind Grundlagen zu BCH-Codes bekannt.
  • Die Aufgabe der Erfindung besteht darin, bestehende Ansätze zur Fehlerkorrektur und/oder Fehlererkennung von in einem Speicher gespeicherten Daten zu verbessern.
  • Diese Aufgabe wird gemäß den Merkmalen der unabhängigen Ansprüche gelöst. Bevorzugte Ausführungsformen sind insbesondere den abhängigen Ansprüchen entnehmbar.
  • Zur Lösung der Aufgabe wird ein Verfahren vorgeschlagen zum Verarbeiten von Daten mittels eines Fehlercodes, wobei der Fehlercode eine H-Matrix mit n Spalten und m Zeilen aufweist,
    • - wobei die Spalten der H-Matrix unterschiedlich sind,
    • - wobei komponentenweise XOR-Summen benachbarter Spalten der H-Matrix zueinander und zu allen Spalten der H-Matrix unterschiedlich sind,
    • - wobei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix unterschiedlich sind zu allen Spalten der H-Matrix und zu allen komponentenweisen XOR-Summen benachbarter Spalten der H-Matrix,
    • - wobei mittels des Fehlercodes
      • - 1-Bit-Fehler korrigiert werden,
      • - benachbarte 2-Bit-Fehler korrigiert werden und
      • - nicht benachbarte 2-Bit-Fehler erkannt werden.
  • Hierbei ist es insbesondere von Vorteil, dass eine Verarbeitungsgeschwindigkeit zur Korrektur bzw. Erkennung von Fehlern gegenüber bekannten Lösungen deutlich gesteigert werden kann.
  • Es ist ein Weiterbildung, dass eine Anzahl aller Komponenten einer Spalte kleiner als die kleinste ganze Zahl ist, die größer als 2 · log2 n ist.
  • Es ist ein Weiterbildung, dass der Fehlercode ein Fehler-erkennender oder ein Fehler-korrigierender und Fehler-erkennender Code ist.
  • Es ist ein Weiterbildung, dass mindestens zwei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix nicht unterschiedlich sind.
  • Es ist ein Weiterbildung, dass der Fehlercode eine Länge von n Bits mit m Prüfbits und n - m Nutzdatenbits aufweist.
  • Es ist ein Weiterbildung, dass entsprechend der H-Matrix ein Syndromgenerator zur Bildung eines m-komponentigen Fehlersyndroms bestimmt ist.
  • Es ist ein Weiterbildung, dass der Syndromgenerator als kombinatorische Schaltung mit n Eingängen und m Ausgängen implementiert ist.
  • Es ist ein Weiterbildung, dass ein Korrekturwertbildner vorgesehen ist, der aus dem von dem Syndromgenerator bereitgestellten m-komponentigen Fehlersyndrom Korrekturwerte für fehlerhafte Bitpositionen bildet.
  • Es ist ein Weiterbildung, dass n ≥ 2m/2 ist.
  • Es ist ein Weiterbildung, dass die H-Matrix Teil einer erweiterten H-Matrix ist.
  • Es ist ein Weiterbildung, dass die erweiterte H-Matrix wie folgt bestimmt ist:
    • - die H-Matrix wird gedoppelt in eine ursprüngliche H-Matrix und eine gedoppelte H-Matrix, wobei zwischen der ursprünglichen H-Matrix und der gedoppelten H-Matrix eine Zwischenspalte mit m Nullen eingefügt wird,
    • - die ursprüngliche H-Matrix wird um zwei Zeilen mit n Nullen ergänzt,
    • - die gedoppelte H-Matrix wird um eine Zeile mit n Einsen und um eine weitere Zeile ergänzt, wobei die weitere Zeile bestimmt ist durch
      • - eine Bitkombination aus n Bits gemäß 1010... 10, falls n geradzahlig ist oder
      • - eine Bitkombination aus n Bits gemäß 1010...1, falls n ungeradzahlig ist,
      • - die Zwischenspalte aus m Nullen um eine Spalte [0,1]T ergänzt wird.
  • Es ist ein Weiterbildung, dass die H-Matrix angepasst wird durch Streichen mindestens einer ersten und/oder mindestens einer letzten Spalte.
  • Es ist ein Weiterbildung, dass die H-Matrix modifiziert wird durch eine Linearkombination ihrer Zeilen.
  • Es ist ein Weiterbildung, dass die Verarbeitung der Daten ein Schreiben in einen Speicher oder ein Lesen aus einem Speicher umfasst.
  • Weiterhin wird eine Vorrichtung vorgeschlagen zum Verarbeiten von Daten mittels eines Fehlercodes, wobei der Fehlercode eine H-Matrix mit n Spalten und m Zeilen aufweist, wobei die Vorrichtung eine Verarbeitungseinheit umfasst, die derart eingerichtet ist, den Fehlercode durch die H-Matrix zu bestimmen,
    • - wobei die Spalten der H-Matrix unterschiedlich sind,
    • - wobei komponentenweise XOR-Summen benachbarter Spalten der H-Matrix zueinander und zu allen Spalten der H-Matrix unterschiedlich sind,
    • - wobei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix unterschiedlich sind zu allen Spalten der H-Matrix und zu allen komponentenweisen XOR-Summen benachbarter Spalten der H-Matrix.
  • Die hier genannte Verarbeitungseinheit kann insbesondere als eine Prozessoreinheit und/oder eine zumindest teilweise festverdrahtete oder logische Schaltungsanordnung ausgeführt sein, die beispielsweise derart eingerichtet ist, dass das Verfahren wie hierin beschrieben durchführbar ist. Besagte Verarbeitungseinheit kann jede Art von Prozessor oder Rechner oder Computer mit entsprechend notwendiger Peripherie (Speicher, Ein-/Ausgabe-Schnittstellen, Ein-Ausgabe-Geräte, etc.) sein oder umfassen.
  • Es ist ein Weiterbildung, dass die Verarbeitungseinheit einen Syndromgenerator umfasst, der Syndrome basierend auf der H-Matrix ausgibt.
  • Es ist ein Weiterbildung, dass die Vorrichtung einen Speicher umfasst oder mit einem Speicher koppelbar ist, wobei das Verarbeiten der Daten ein Schreiben in den Speicher oder ein Lesen aus dem Speicher umfasst.
  • Es ist ein Weiterbildung, dass eine Anzahl aller Komponenten einer Spalte kleiner als die kleinste ganze Zahl ist, die größer als 2 · log2 n ist.
  • Es ist ein Weiterbildung, dass mindestens zwei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix nicht unterschiedlich sind.
  • Die vorstehenden Erläuterungen betreffend das Verfahren gelten für die Vorrichtung entsprechend. Die Vorrichtung kann in einer Komponente oder verteilt in mehreren Komponenten ausgeführt sein.
  • Auch wird die oben genannte Aufgabe gelöst mittels eines Systems umfassend mindestens eine der hier beschriebenen Vorrichtungen.
  • Weiterhin wird ein Computerprogrammprodukt vorgeschlagen, das direkt in einen Speicher eines digitalen Computers ladbar ist, umfassend Programmcodeteile, die dazu geeignet sind, Schritte des hier beschriebenen Verfahrens durchzuführen.
  • Auch wird ein computerlesbares Speichermedium angegeben umfassend von einem Computer ausführbare Anweisungen, die dazu geeignet sind, dass der Computer Schritte des hier beschriebenen Verfahrens durchführt.
  • Die oben beschriebenen Eigenschaften, Merkmale und Vorteile dieser Erfindung sowie die Art und Weise, wie diese erreicht werden, werden nachfolgend beschrieben im Zusammenhang mit einer schematischen Beschreibung von Ausführungsbeispielen, die im Zusammenhang mit der Zeichnung näher erläutert werden.
  • Es zeigt:
    • 1 eine beispielhafte Anordnung zur Veranschaulichung der Verarbeitung von Daten mittels Fehlercodes.
  • Beim Speichern von Daten in Speicherzellen eines Speichers sowie beim Lesen aus dem Speicher können Fehler auftreten. Auch können die in dem Speicher gespeicherten Daten verfälscht werden. Beispielsweise kann der Speicher einer Strahlung (z.B. aus dem Weltraum oder einer terrestrischen Strahlung) ausgesetzt sein, die den Inhalt von Speicherzellen, insbesondere den Inhalt benachbarter Speicherzellen, verfälscht.
  • So kann als Fehler ein 1-Bit-Fehler auftreten, der ein Bit in einer Speicherzelle verfälscht. Entsprechend verfälscht ein 2-Bit-Fehler zwei Speicherzellen.
  • Speicherzellenfehler in zwei benachbarten Speicherzellen können dabei häufiger auftreten als Speicherzellenfehler in zwei Speicherzellen, die nicht benachbart sind.
  • Um eine möglichst zuverlässige Speicherung von Daten in einem Speicher bei zugleich geringem Aufwand zu erreichen, ist es beispielsweise ein Ziel,
    • - Speicherzellenfehler in einer Speicherzelle zu korrigieren,
    • - Speicherzellenfehler in zwei benachbarten Speicherzellen zu korrigieren und
    • - Speicherzellenfehler in zwei nicht benachbarten Speicherzellen sicher zu erkennen
    und hierfür möglichst wenige Speicherzellen mit Prüfbits zu benötigen.
  • Werden Daten aus dem Speicher gelesen und ist ein gelesenes Datum aus einer Speicherzelle fehlerhaft, so handelt es sich um einen 1-Bit-Fehler. Liegen zwei Fehler in zwei benachbarten Speicherzellen vor, so handelt es sich um einen benachbarten 2-Bit-Fehler. Liegen zwei Fehler in zwei nicht benachbarten Speicherzellen vor, entspricht dies einem nicht benachbarten 2-Bit-Fehler.
  • Unter Verwendung eines Fehlercodes wird eine Lösung geschaffen, anhand derer 1-Bit-Fehler und benachbarte 2-Bit-Fehler korrigiert werden und nicht benachbarte 2-Bit-Fehler erkannt werden. Es ist insbesondere eine Option, dass korrigierbare Fehler (vor der Korrektur) erkannt werden.
  • Es kann von Vorteil sein, dass selten auftretende nicht benachbarte 2-Bit-Fehler erkannt (und nicht korrigiert), jedoch öfter auftretende benachbarte 2-Bit-Fehler erkannt und korrigiert werden, da in so einem Szenario weniger Prüfbits benötigt werden als für eine Korrektur aller (auch nicht benachbarter) 2-Bit-Fehler.
  • Als Fehlercode kann ein Fehler-korrigierender und/oder Fehler-erkennender Code bezeichnet werden.
  • Die zu speichernden Daten können als Codewörter des Fehlercodes codiert in dem Speicher gespeichert werden. Beispielsweise können die zu speichernden Daten Datenbits umfassen, die durch Prüfbits ergänzt werden, so dass die Datenbits und die Prüfbits ein Codewort des Fehlercodes bilden bzw. Teil eines solche Codeworts sind.
  • Im Folgenden werden beispielhaft lineare Codes als Fehlercodes betrachtet. Ein Fehlercode kann als linearer Code beispielsweise durch eine H-Matrix beschrieben werden, wobei für einen Fehlercode der Länge n mit m Prüfbits als H-Matrix eine (m, n)-Matrix verwendet werden kann.
  • Die H-Matrix bestimmt beispielsweise einen Syndromgenerator, der Fehlersyndrome für auftretende Fehler bestimmt.
  • Aufgrund der Fehlersyndrome können die entsprechenden Fehler beispielsweise unter Verwendung einer kombinatorischen Schaltung korrigiert und/oder erkannt werden. Beispielsweise können den Fehlersyndromen zu korrigierende Bitpositionen anhand einer kombinatorischen Schaltung zugeordnet sein.
  • Mittels der H-Matrix kann ein Verfahren zur Korrektur von 1-Bit-Fehlern und von benachbarten 2-Bit-Fehlern und zum Erkennen nicht benachbarter 2-Bit-Fehler bestimmt sein.
  • Weist die H-Matrix m Zeilen und n Spalten auf, ist hierdurch ein Fehlercode mit m Prüfbits bestimmt. Die Länge des Fehlercodes ist gleich der Anzahl n der Spalten der H-Matrix.
  • Die H-Matrix des Fehlercodes ist eine (m, n)-Matrix und kann als H = ( h 1 , h 2 , , h n ) = ( h 1 1 h 1 2 h 1 n h m 1 h m 2 h m n )
    Figure DE102018126685B3_0001
    beschrieben werden, wobei h1,h2,...,hn die n Spalten der H-Matrix bezeichnen, die jeweils m binäre Komponenten aufweisen.
  • Ist v = v1, ... , vn ein Codevektor (auch bezeichnet als Codewort) des betrachteten Fehlercodes, gilt H v = 0.
    Figure DE102018126685B3_0002
  • Ist v' ein Vektor mit v ' = v + e = v 1 + e 1 ,   v 2 + e 2 , , v n + e n
    Figure DE102018126685B3_0003
    dann gilt H v ' = H ( v + e ) = H e = s .
    Figure DE102018126685B3_0004
  • Hierbei bezeichnet der Vektor e = e1,..., en einen Fehlervektor, der eine eventuelle Abweichung des fehlerhaften Vektors v' von dem korrekten Vektor v beschreibt. Bei dem Vektor v' handelt es sich somit um den gestörten oder fehlerhaften (Code) Vektor.
  • Der Vektor v' unterscheidet sich von dem Vektor v in den Komponenten, in denen die entsprechenden Komponenten des Fehlervektors e gleich 1 sind, und der Vektor v' unterscheidet sich nicht von dem Vektor v in den Komponenten, in denen die Komponenten des Fehlervektors e gleich 0 sind.
  • Ist beispielsweise für i ∈ {1, ... , n} die i-te Komponente ei des Fehlervektors e gleich 1, so ist das i-te Bit vi des Vektors v durch einen Fehler in das i-te Bit v i ' = v i + 1
    Figure DE102018126685B3_0005
    des Vektors v' gestört worden. Ist beispielsweise die j-te Komponente ej des Fehlervektors e gleich 0, so ist das j-te Bit des Vektors v nicht durch einen Fehler des Vektors v' gestört worden und es gilt: v'j=vj.
  • Ist genau eine Komponente des Fehlervektors e gleich 1, dann liegt ein 1-Bit-Fehler vor. Sind genau zwei Komponenten des Fehlervektors e gleich 1, dann liegt ein 2-Bit-Fehler vor. Sind genau zwei Komponenten des Fehlervektors, die gleich 1 sind, benachbart, dann liegt ein benachbarter 2-Bit-Fehler vor. Sind genau zwei Komponenten des Fehlervektors gleich 1, die nicht benachbart sind, dann liegt ein nicht benachbarter 2-Bit-Fehler vor.
  • Die Operation „+“ bezeichnet die Addition modulo 2 oder die logische XOR-Operation (XOR steht hierbei für Exklusiv-Oder).
  • Ist ein Vektor rechts von einer Matrix angeordnet, so ist er als Spaltenvektor zu interpretieren. Soll hervorgehoben werden, dass der Vektor v als Spaltenvektor dargestellt ist, so kann dies mit vT ausgedrückt werden.
  • Durch die Gleichung (3) ist ein Fehlersyndrom s definiert. Das Fehlersyndrom s ist in der Gleichung (3) als Spaltenvektor sT = [s1,... ,sm]T mit m Komponenten s1, ... , sm dargestellt.
  • Entsprechend den Elementen der H-Matrix sind die Komponenten s1,..., sn des Fehlersyndroms s bestimmt durch s 1 = h 1 1 v 1 ' + h 1 2 v 2 ' + + h 1 n v n ' , ( 4 ) s 2 = h 2 1 v 1 ' + h 2 2 v 2 ' + + h 2 n v n ' , ( 5 ) s m = h m 1 v 1 ' + h m 2 v 2 ' + + h m n v n ' , ( 6 )
    Figure DE102018126685B3_0006
  • Eine Implementierung der Gleichungen (4) bis (6) zur Bestimmung der Komponenten sn bis sm des Fehlersyndroms s kann auch als Syndromgenerator bezeichnet werden. Eine Implementierung dieser Gleichungen kann beispielsweise mittels eines üblichen Synthesetools erreicht werden.
  • Werden alle 1-Bit-Fehler unter Verwendung eines Fehlersyndroms eines Fehlercodes korrigiert, sind alle 1-Bit-Fehler anhand des Fehlersyndroms unterscheidbar und die Fehlersyndrome der verschiedenen 1-Bit-Fehler sind paarweise unterschiedlich. Die verschiedenen Fehlersyndrome der n möglichen 1-Bit-Fehler sind dann gleich den n Spalten h1 bis hn der H-Matrix gemäß der Gleichung (1). Dabei ist die H-Matrix so bestimmt, dass alle n Spalten paarweise verschieden sind.
  • Werden alle 1-Bit-Fehler und alle, auch nicht benachbarte 2-Bit-Fehler, unter Verwendung eines Fehlersyndroms eines Fehlercodes korrigiert, dann sind alle Fehlersyndrome der n verschiedenen 1-Bit-Fehler und alle Fehlersyndrome der ( n 2 )
    Figure DE102018126685B3_0007
    verschiedenen 2-Bit-Fehler paarweise unterschiedlich. Die verschiedenen Fehlersyndrome der n möglichen 1-Bit-Fehler sind dann gleich den n Spalten h1 bis hn der H-Matrix gemäß der Gleichung (1) und die Fehlersyndrome der ( n 2 )
    Figure DE102018126685B3_0008
    verschiedenen 2-Bit-Fehler sind dann gleich den komponentenweisen XOR-Summen der ( n 2 )
    Figure DE102018126685B3_0009
    verschiedenen Kombinationen von 2 Spalten dieser H-Matrix.
  • Ein bekannter 2-Bit-Fehler korrigierender Code ist ein 2-Bit-Fehler korrigierender BCH-Code, der es erlaubt, alle 1-Bit Fehler und alle 2-Bit-Fehler zu korrigieren. Ein 2-Bit-Fehler korrigierender BCH-Code zur Korrektur beliebiger 1-Bit-Fehler und beliebiger 2-Bit-Fehler ist beispielsweise in [Rao, T.; Fujiwara, E.: „Error Control codes for Computer Systems“, Prentice Hall 1989, Seiten 97 bis 99] beschrieben.
  • Für einen 2-Bit-Fehler korrigierenden BCH-Code müssen alle Spalten der entsprechenden H-Matrix und alle komponentenweisen XOR-Summen aller Paare von Spalten der H-Matrix paarweise unterschiedlich sein. Die Anzahl m der Komponenten des Fehlersyndroms, die gleich der Anzahl der Prüfbits des Fehlercodes ist, muss dann mindestens so groß sein, dass gilt 2 m n + ( n 2 ) .
    Figure DE102018126685B3_0010
  • Das ist erforderlich, damit alle zu korrigierenden Fehler verschiedenen Fehlersyndromen entsprechen und anhand ihrer Fehlersyndrome unterschieden werden können. Die Anzahl m der Komponenten des Fehlersyndroms ist hier gleich der Anzahl der Prüfbits des Fehlercodes.
  • Für einen bekannten 2-Bit-Fehler korrigierenden BCH-Code der Länge n ist die Anzahl m der mindestens erforderlichen Prüfbits gleich der kleinsten positiven ganzen Zahl, die größer als 2 · log2 n ist, es gilt in diesem Fall also m > 2 l o g 2   n .
    Figure DE102018126685B3_0011
  • Sollen nur die 1-Bit-Fehler und die benachbarten 2-Bit-Fehler unter Verwendung eines Fehlercodes korrigiert werden, dann kann es nachteilig sein, wenn alle n + ( n 2 )
    Figure DE102018126685B3_0012
    Fehlersyndrome für 1-Bit-Fehler und für beliebige 2-Bit-Fehler paarweise unterschiedlich sind, wie dies für den 2-Bit-Fehler korrigierenden BCH-Code der Fall ist, weil hierfür mehr Prüfbits erforderlich sein könnten als zur Korrektur der 1-Bit-Fehler, zur Korrektur benachbarter 2-Bit-Fehler und zum Erkennen nicht benachbarter 2-Bit-Fehler.
  • Durch die Einschränkung, dass nicht benachbarte 2-Bit-Fehler lediglich erkannt werden sollen aber nicht korrigiert werden müssen, kann die Anzahl der benötigten Prüfbits reduziert werden.
  • Dies ist insbesondere deshalb von Vorteil, weil für die Prüfbits auch Speicherzellen benötigt werden.
  • Insbesondere wird vorgeschlagen, dass die n + n - 1 Fehlersyndrome für die n möglichen 1-Bit-Fehler und für n - 1 benachbarte 2-Bit-Fehler paarweise unterschiedlich sind und dass die Fehlersyndrome aller nicht benachbarter 2-Bit-Fehler nur unterschiedlich von den Fehlersyndromen der 1-Bit-Fehler und von den Fehlersyndromen der benachbarten 2-Bit-Fehler sind.
  • Es gibt also eine erste Gruppe von Fehlersyndromen für 1-Bit-Fehler und eine zweite Gruppe von Fehlersyndromen für benachbarte 2-Bit-Fehler. Die Fehlersyndrome der ersten Gruppe müssen sich voneinander unterscheiden und die Fehlersyndrome der zweiten Gruppe müssen sich voneinander und von den Fehlersyndromen der ersten Gruppe unterscheiden. Weiterhin gibt es ein dritte Gruppe von Fehlersyndromen für nicht benachbarte 2-Bit-Fehler; die in der dritten Gruppe enthaltenen Fehlersyndrome müssen lediglich von den Fehlersyndromen der ersten Gruppe und der zweiten Gruppe unterschiedlich sein, allerdings müssen die Fehlersyndrome der dritten Gruppe nicht untereinander unterschiedlich sein.
  • Fehlersyndrome von Paaren unterschiedlicher nicht benachbarter 2-Bit-Fehler können in diesem Beispiel untereinander gleich sein. Sind Fehlersyndrome von verschiedenen Paaren nicht benachbarter 2-Bit-Fehler untereinander gleich, so kann sich dadurch die Anzahl der zu unterscheidenden Fehlersyndrome so verkleinern, dass weniger Prüfbits als für einen 2-Bit-Fehler korrigierenden BCH-Code erforderlich sind.
  • Somit ist es insbesondere ein Vorteil des hier beschriebenen Ansatzes, eine Korrektur von 1-Bit-Fehlern und von benachbarten 2-Bit-Fehlern zu ermöglichen und Fehler in nicht benachbarten 2-Bit-Fehlern zu erkennen, wobei hierfür möglichst wenige Prüfbits eingesetzt werden sollen.
  • Die Anzahl der Prüfbits für eine H-Matrix ist dann geringer als die Anzahl der Prüfbits für eine H-Matrix eines 2-Bit-Fehler korrigierenden BCH-Codes mit der gleichen Anzahl von Spalten. Entsprechend weist ein daraus resultierender Syndromgenerator weniger Ausgänge auf als ein entsprechender Syndromgenerator für den 2-Bit-Fehler korrigierenden BCH-Code.
  • Es wird insbesondere ein Verfahren vorgeschlagen zur Korrektur von 1-Bit-Fehlern und von benachbarten 2-Bit-Fehlern und zum Erkennen von nicht benachbarten 2-Bit-Fehlern insbesondere beim Lesen von in Speicherzellen gespeicherten Bits. Das Verfahren verwendet einen Fehlercode, der durch eine H-Matrix bestimmt ist. Diese H-Matrix wird nachfolgend beispielhaft beschrieben.
  • Hierbei sei erwähnt, dass die H-Matrix als beispielhafte Notation zur Beschreibung eines beliebigen linearen Fehlercodes herangezogen wird. Dabei dient die H-Matrix zur Veranschaulichung der Eigenschaften, die der Fehlercode aufweisen muss, um für die vorstehend genannte Korrektur und Erkennung genutzt werden zu können. Theoretisch sind andere Beschreibungsformen anstelle der H-Matrix möglich. Mit anderen Worten: Es kann jeder lineare Fehlercode, der die hier geforderten Eigenschaften aufweist, nämlich 1-Bit-Fehler und benachbarte 2-Bit-Fehler korrigieren und nicht benachbarte 2-Bit-Fehler erkennen zu können, auf eine H-Matrix mit den hier beschriebenen Eigenschaften abgebildet werden. Damit ist die H-Matrix eine eindeutige Referenz für die hierin vorgeschlagenen Fehlercodes.
  • Die H-Matrix kann mehrere H-Matrizen aufweisen. Beispielsweise kann eine H-Matrix derart bestimmt sein, dass für bestimmte Anzahlen von Zeilen und Spalten spezielle H-Matrizen bereitgestellt werden und dass für weitere Anzahlen von Zeilen und Spalten aus den bereitgestellten H-Matrizen weitere H-Matrizen abgeleitet werden. Weitere H-Matrizen können auch durch Streichen von Spalten, beispielsweise von letzten oder ersten Spalten, aus bereits vorhanden H-Matrizen abgeleitet werden.
  • Nachfolgend werden beispielhaft H-Matrizen angegeben für
    • - m = 6 und n = 11,
    • - m = 7 und n = 14 und
    • - m = 8 und n = 26,
    wobei n die Anzahl der Spalten und m die Anzahl der Zeilen der H-Matrix angibt.
  • Beispiel einer H-Matrix H6,11
  • Ist m = 6 und n = 11 dann zeigt die Gleichung (7) ein Beispiel einer speziellen H-Matrix H6,11 H 6,11 = ( 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 ) = ( h 1 , h 2 , , h 11 )
    Figure DE102018126685B3_0013
    eines Fehlercodes C6,11 mit 6 Zeilen, d.h. m = 6 Prüfbits, und n = 11 Spalten (und damit n - m = 5 Datenbits). Die Länge des Fehlercodes C6,11 ist n = 11.
  • Die kleinste ganze Zahl, die größer ist als l o g 2 n = l o g 2 11
    Figure DE102018126685B3_0014
    ist 4, da 2 3 = 8 < 11 < 2 4 = 16
    Figure DE102018126685B3_0015
    gilt. Die Anzahl der Zeilen m = 6 der H-Matrix H6,11 ist kleiner als die Anzahl 2 · 4 = 8 der Zeilen eines 2-Bit-Fehler korrigierenden BCH-Codes der Länge 11.
  • Durch Nachrechnen lässt sich überprüfen, dass die H-Matrix H6,11 so bestimmt ist, dass alle 11 Spalten h1 bis h11 und alle komponentenweisen XOR-Summen der n - 1 = 10 Paare benachbarter Spalten h 1 + h 2 = [ 110000 ] T , h 2 + h 3 = [ 011000 ] T , h 10 + h 11 = [ 110001 ] T
    Figure DE102018126685B3_0016
    paarweise unterschiedlich sind. Sie sind auch unterschiedlich von den komponentenweise XOR-Summen der ( 11 2 ) 10 = 45
    Figure DE102018126685B3_0017
    Paare nicht benachbarter Spalten h 1 + h 3 = [ 101000 ] T , h 1 + h 4 = [ 100010 ] T , h 9 + h 11 = [ 101000 ] T .
    Figure DE102018126685B3_0018
  • [110000]T bezeichnet dabei einen Spaltenvektor mit den Komponenten 1,1,0,0,0, 0. Für die anderen Spaltenvektoren gilt dies entsprechend.
  • XOR-Summen zweier verschiedener Paare nicht benachbarter Spalten können dabei gleich sein. So gilt beispielsweise h 1 + h 3 = h 9 + h 11 = [ 101000 ] T .
    Figure DE102018126685B3_0019
  • Die 11 Spalten h1 bis h11 sind gleich den Syndromen entsprechender 1-Bit-Fehler und die 10 XOR-Summen der benachbarten Spalten h 1 + h 2 , h 2 + h 3 , h 3 + h 4 , h 4 + h 5 , h 5 + h 6 , h 6 + h 7 , h 7 + h 8 , h 8 + h 9 , h 9 + h 10 , h 10 + h 11
    Figure DE102018126685B3_0020
    sind gleich den Syndromen der 10 möglichen benachbarten 2-Bit-Fehler.
  • Die H-Matrix H6,11 ist dabei so bestimmt, dass die 10 Fehlersyndrome der 10 benachbarten 2-Bit-Fehler paarweise unterschiedlich sind, dass sie unterschiedlich zu allen 11 Fehlersyndromen der 1-Bit-Fehler und unterschiedlich zu allen ( 11 2 ) 10 = 45
    Figure DE102018126685B3_0021
    nicht benachbarten 2-Bit-Fehlern sind.
  • Jeder 1-Bit-Fehler und jeder benachbarte 2-Bit-Fehler kann anhand seines Fehlersyndroms dann eindeutig identifiziert und korrigiert werden.
  • Die Fehlersyndrome nicht benachbarter 2-Bit-Fehler unterschieden sich von den Fehlersyndromen benachbarter 2-Bit-Fehler und von den Fehlersyndromen der 1-Bit-Fehler.
  • Da Fehlersyndrome verschiedener nicht benachbarter 2-Bit-Fehler gleich sein können, können nicht benachbarte 2-Bit-Fehler nicht eindeutig korrigiert werden. Dies ist im vorliegenden Beispiel auch nicht erforderlich und führt vorteilhaft dazu, dass weniger Prüfbits benötigt werden als bei einem 2-Bit-Fehler korrigierenden BCH-Code.
  • Der Fehlercode C6,11 ist damit ein Code der Länge 11, der 6 Prüfbits und 5 Datenbits aufweist, der 1-Bit-Fehler und benachbarte 2-Bit-Fehler korrigieren sowie nicht benachbarte 2-Bit-Fehler erkennen kann.
  • Im Unterschied dazu ist ein bekannter 2-Bit-Fehler korrigierender BCH-Code mit 6 Prüfbits ein Code mit der maximalen Länge 7 und weist nur 1 Datenbit auf. Somit ist bei gleicher Anzahl von Prüfbits die Länge des BCH-Codes geringer. Mit einer Länge von 11 erfordert der 2-Bit-Fehler korrigierende BCH-Code eine Anzahl von 8 Prüfbits. Damit verbleiben nur 3 Datenbits.
  • Die H-Matrix H6,11 kann genutzt werden, um einen Syndromgenerator zu bestimmen.
  • Als ein fehlerfreies Codewort (Codevektor) wird v = [ v 1 , , v 11 ] ,
    Figure DE102018126685B3_0022
    und als fehlerhaftes, gestörtes Codewort (fehlerhafter Codevektor) wird v ' = [ v 1 ' , , v 11 ' ]
    Figure DE102018126685B3_0023
    mit v ' = v + e = v 1 + e 1 , , v 11 + e 11
    Figure DE102018126685B3_0024
    bezeichnet. Dabei ist e = e1, ... , e11, der Fehlervektor. Mit + ist die Addition modulo 2 oder die logische XOR-Operation bezeichnet.
  • Ist eine Komponente des Fehlervektors e gleich 1, dann ist die entsprechende Komponente des Vektors v' fehlerhaft; ist eine Komponente des Fehlervektors e gleich 0, dann ist die entsprechende Komponente des Vektors v' nicht fehlerhaft.
  • Das Fehlersyndrom s ist bestimmt gemäß s = [ s 1 , , s 11 ] = H 6,11 v ' .
    Figure DE102018126685B3_0025
  • Dies ergibt sich durch Multiplikation der H-Matrix H6,11 mit dem Spaltenvektor v'. Der Vektor v' in der Gleichung (8) ist ein Spaltenvektor.
  • Die Komponenten des Fehlersyndroms s können wie folgt angegeben werden s 1 = v 1 ' + v 7 ' + v 8 ' + v 9 ' + v 10 ' ,
    Figure DE102018126685B3_0026
    s 2 = v 2 ' + v 7 ' + v 8 ' + v 9 ' + v 11 ' ,
    Figure DE102018126685B3_0027
    s 3 = v 3 ' + v 7 ' + v 8 ' + v 10 ' + v 11 ' ,
    Figure DE102018126685B3_0028
    s 4 = v 4 ' + v 7 ' + v 9 ' + v 10 ' + v 11 ' ,
    Figure DE102018126685B3_0029
    s 5 = v 5 ' + v 8 ' + v 9 ' + v 10 ' + v 11 ' ,
    Figure DE102018126685B3_0030
    s 6 = v 6 ' + v 7 ' + v 9 ' + v 11 ' .
    Figure DE102018126685B3_0031
  • Die Fehlererkennung und Fehlerkorrektur unter Verwendung eines Fehlersyndroms ist dem Fachmann bekannt. So kann die Fehlerkorrektur beispielsweise unter Verwendung einer Syndromtabelle (auch bezeichnet als „Syndrom Decoding Table“) erfolgen. Die Syndromtabelle ist eine Tabelle, die eine umkehrbar eindeutige Zuordnung der Fehlervektoren der zu korrigierenden Fehler und der ihnen umkehrbar eindeutig entsprechenden Fehlersyndrome beschreibt. Die durch die Syndromtabelle beschriebene Zuordnung zwischen Fehlersyndromen und Fehlervektoren kann beispielsweise durch eine kombinatorische Schaltung realisiert sein. Die Komponenten des Fehlersyndromes liegen dann an den Eingängen der kombinatorischen Schaltung an, die an ihren Ausgängen die Komponenten des entsprechenden Fehlervektors ausgibt. Die von der kombinatorischen Schaltung bereitgestellten Komponenten e1 bis en des Fehlervektors e können beispielsweise mit den entsprechenden Komponenten v'1 bis v'n des zu korrigierenden eventuell fehlerhaften Codevektors v' XOR-verknüpft werden, um die korrigierten Werte zu bilden.
  • Ein Beispiel einer Syndromtabelle ist beispielsweise in [Wickert, S.B.: „Error Control for Digital Communication and Storage“, Prentice Hall 1995, Seite 89] dargestellt.
  • Beispiel einer H-Matrix H7,14
  • Für m = 7 und n = 14 zeigt die Gleichung (15) ein weiteres Beispiel für eine H-Matrix H7,14 H 7,14 = ( 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 ) = ( h 1 , h 2 , , h 14 )
    Figure DE102018126685B3_0032
    eines Fehlercodes C7,14 mit 7 Zeilen, d.h. m = 7 Prüfbits, und n = 14 Spalten (und damit n - m = 7 Datenbits). Die Länge des Fehlercodes C7,14 ist n = 14.
  • Die H-Matrix H7,14 ist beispielsweise so bestimmt, dass alle 14 Spalten h1 bis h14 und alle komponentenweisen XOR-Summen von den 13 Paaren benachbarten Spalten h 1 + h 2 , h 13 + h 14
    Figure DE102018126685B3_0033
    paarweise unterschiedlich sind. Sie sind so bestimmt, dass sie auch unterschiedlich von den komponentenweise XOR-Summen der ( 2 14 13 = 78 )
    Figure DE102018126685B3_0034
    Paare der nicht benachbarten Spalten h 1 + h 3 , h 1 + h 4 , h 12 + h 14
    Figure DE102018126685B3_0035
    sind. XOR-Summen zweier verschiedener Paare nicht benachbarter Spalten können dabei gleich sein.
  • Die 14 Spalten h1 bis h14 sind gleich den Syndromen entsprechender 1-Bit-Fehler und die 13 XOR-Summen der benachbarten Spalten h 1 + h 2 , h 2 + h 3 , h 3 + h 4 , h 4 + h 5 , h 5 + h 6 , h 6 + h 7 , h 7 + h 8 , h 8 + h 9 , h 9 + h 10 , h 10 + h 11 , h 11 + h 12 , h 12 + h 13 , h 13 + h 14 ,
    Figure DE102018126685B3_0036
    sind gleich den Syndromen der 13 möglichen benachbarten 2-Bit-Fehler. Die H-Matrix H7,14 ist so bestimmt, dass Fehlersyndrome paarweise unterschiedlich sind. Jeder 1-Bit-Fehler und jeder benachbarte 2-Bit-Fehler kann anhand seines Fehlersyndroms eindeutig identifiziert und korrigiert werden.
  • Die Fehlersyndrome nicht benachbarter 2-Bit-Fehler unterscheiden sich von den Fehlersyndromen benachbarter 2-Bit-Fehler und von den Fehlersyndromen der 1-Bit-Fehler.
  • Da Fehlersyndrome verschiedener nicht benachbarter 2-Bit-Fehler gleich sein können, können nicht benachbarte 2-Bit Fehler nicht eindeutig korrigiert werden.
  • So gilt beispielsweise: h 8 + h 12 = [ 1111101 ] T + [ 1011111 ] T = [ 0100010 ] T = h 2 + h 6 = [ 0100000 ] T + [ 0000010 ] T .
    Figure DE102018126685B3_0037
  • Damit ist ein 2-Bit-Fehler in dem 8-ten und dem 12-ten Bit nicht unterscheidbar von einem 2-Bit-Fehler in dem 2-ten und dem 6-ten Bit.
  • Der Fehlercode C7,14 ist damit ein Code der Länge 14, der 7 Prüfbits und 7 Datenbits aufweist, der 1-Bit-Fehler und benachbarte 2-Bit-Fehler korrigieren und nicht benachbarte 2-Bit-Fehler erkennen kann.
  • Im Unterschied dazu hat ein bekannter 2-Bit-Fehler korrigierender BCH-Code, wenn er eine Länge von 14 aufweist, 8 Prüfbits und nur 6 Datenbits. Ein gleich langer 2-Bit-Fehler korrigierender BCH-Code benötigt also mehr Prüfbits.
  • Die kleinste ganze Zahl, die größer ist als l o g 2   n = l o g 2   14
    Figure DE102018126685B3_0038
    ist wieder 4 (siehe obige Ausführungen). Die Anzahl der m = 7 Zeilen der H-Matrix H7,14 ist kleiner als die Anzahl der 2-4 = 8 Zeilen eines 2-Bit-Fehler korrigierenden BCH-Codes der Länge 14.
  • Aus der H-Matrix H7,17 nach der Gleichung (15) sind analog wie das für die Syndromkomponenten s1,... ,s6 der H-Matrix H6,11 vorstehend ausgeführt wurde, die Syndromgleichungen für die Syndromkomponenten s1,..., s7 bestimmt.
  • Beispiel einer H-Matrix H8,26
  • Für m = 8 und n = 26 zeigt die Gleichung (16) ein weiteres Beispiel für eine H-Matrix H8,26 H 8,26 = ( h 1 , h 2 , , h 25 , h 26 ) = ( 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 1 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 0 1 0 1 )
    Figure DE102018126685B3_0039
    eines Fehlercodes C8,26 mit 8 Zeilen, d.h. m = 8 Prüfbits, und n = 26 Spalten. Die Länge des Fehlercodes C8,26 ist n = 26. Der Fehlercode C8,26 weist (26 - 8 =) 18 Datenbits auf.
  • Werden nur 16 Datenbits benötigt, so können beispielsweise die letzten beiden Spalten h25 und h26 der H-Matrix H8,26 gestrichen werden, um so eine H-Matrix H8,24 H 8,24 = ( h 1 , h 2 , , h 23 , h 24 )
    Figure DE102018126685B3_0040
    mit 24 Spalten zu erhalten.
  • Durch Nachrechnen lässt sich überprüfen, dass die H-Matrix H8,26 so bestimmt ist, dass alle 26 Spalten h1 bis h26 und alle komponentenweisen XOR-Summen der 25 Paare benachbarter Spalten h 1 + h 2 , h 2 + h 3 , h 25 + h 26
    Figure DE102018126685B3_0041
    paarweise unterschiedlich sind.
  • Weiterhin sind die ( 2 26 ) 25 = 300
    Figure DE102018126685B3_0042
    XOR-Summen aller Paare nicht benachbarter Spalten ungleich allen Spalten und ungleich allen komponentenweisen XOR-Summen der benachbarten Spalten.
  • Die komponentenweise XOR-Summen nicht benachbarter Spalten können hingegen identisch sein. Beispielsweise gilt: h 5 + h 7 = [ 00001000 ] T + [ 00000010 ] T = [ 00001010 ] T = h 9 + h 11 = [ 11111101 ] T + [ 0000010 ] T .
    Figure DE102018126685B3_0043
  • Damit ist ein 2-Bit-Fehler in dem 5-ten und dem 7-ten Bit nicht unterscheidbar von einem 2-Bit-Fehler in dem 9-ten und 11-ten Bit.
  • Die kleinste ganze Zahl, die ist größer als l o g 2   n = l o g 2   26
    Figure DE102018126685B3_0044
    ist 5, da 2 4 = 16 < 26 < 2 5 = 32
    Figure DE102018126685B3_0045
    gilt. Die Anzahl der m = 8 Zeilen der H-Matrix H8,26 ist kleiner als die Anzahl der 2 · 5= 10 Zeilen eines 2-Bit-Fehler korrigierenden BCH-Codes der Länge 26.
  • Ein fehlerfreies Codewort der Länge n = 26 wird mit v = [ v 1 , , v 26 ]
    Figure DE102018126685B3_0046
    und ein fehlerhaftes, gestörtes Codewort wird mit v ' = [ v 1 ' , , v 26 ' ] = v + e = v 1 + e 1 , , v 26 + e 26
    Figure DE102018126685B3_0047
    bezeichnet, wobei e = e1, ... , e26 der Fehlervektor ist.
  • Das Fehlersyndrom s ist bestimmt gemäß s = [ s 1 , , s 26 ] = H 8,26 v ' .
    Figure DE102018126685B3_0048
  • Die Komponenten des Fehlersyndrom s ergeben sich aus den Zeilen der H-Matrix H8,26 und den Komponenten des gestörten Codeworts v' = v'1,..., v'26. So gilt beispielsweise für die erste Komponente s1 des Fehlersyndroms entsprechend der ersten Zeile [10000000111111011011100011] der H-Matrix H8,26 s 1 = v 1 ' + v 9 ' + v 10 ' + v 11 ' + v 12 ' + v 13 ' + v 14 ' + v 16 ' + v 17 ' + v 19 ' + v 20 ' + v 21 ' + v 25 ' + v 26 ' .
    Figure DE102018126685B3_0049
  • Die Komponenten s2 bis s8 des Fehlersyndroms resultieren in analoger Weise basierend auf der zweiten bis achten Zeile der H-Matrix H8,26 und den Komponenten des gestörten Codeworts v'.
  • Durch eine Implementierung der Komponenten s1 bis s8 des Fehlersyndroms s kann ein Syndromgenerator des Fehlercodes bestimmt werden.
  • Ausführungsbeispiel: Erzeugung weiterer H-Matrizen
  • Es soll im Folgenden ein Ausführungsbeispiel beschrieben werden, wie basierend auf einer ersten H-Matrix Hm,n mit m Zeilen und n Spalten, eine zweite H-Matrix Hm+2,2·n+1 mit m + 2 Zeilen und 2 · n + 1 Spalten bestimmt werden kann. Der entsprechende Fehlercode Cm+2,2·n+1 weist dann m + 2 Prüfbits auf. Die Länge des Codes ist 2 · n + 1 und es sind 2 · n - m - 1 Datenbits vorhanden.
  • Als Beispiel werden m = 8 und n = 26 und die H-Matrix H 8,26 = ( h 1 , h 2 , , h 25 , h 26 ) ,
    Figure DE102018126685B3_0050
    gemäß der Gleichung (16) gewählt.
  • Aus der ersten H-Matrix H8,26 nach Gleichung (16) kann eine zweite H-Matrix H10,53 gemäß H 10,53 = ( h 1 h 2 h 25 h 26 h z w h 1 h 2 h 25 h 26 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 0 )
    Figure DE102018126685B3_0051
    bestimmt werden. Dabei ist eine Spalte hzw als ein Spaltenvektor h z w = [ 0, ,0 ] 8 T
    Figure DE102018126685B3_0052
    mit acht Komponenten eingefügt. Der Spaltenvektor hzw kann auch als Zwischenspalte bezeichnet werden, die zwischen die beiden H-Matrizen H8,26 eingefügt wird.
  • Allgemein kann die zweite Matrix wie folgt bestimmt werden:
    1. 1. Die ursprüngliche Matrix Hm,n wird gedoppelt, wobei zwischen die ursprüngliche Matrix und die gedoppelte Matrix die Zwischenspalte hzw mit m Nullen eingefügt wird.
    2. 2. Die ursprüngliche Matrix kann um zwei Zeilen aus jeweils n Nullen ergänzt werden.
    3. 3. Die gedoppelte Matrix kann um eine Zeile aus n Einsen und um eine weitere Zeile ergänzt werden. Die weitere Zeile ist bestimmt durch 1010 10, n
      Figure DE102018126685B3_0053
      falls n gerade ist bzw. ist die weitere Zeile bestimmt durch 1010 1, n
      Figure DE102018126685B3_0054
      falls n ungerade ist.
    4. 4. Die Zwischenspalte hzw aus m Nullen wird um eine Spalte [0,1]T ergänzt.
  • Im obigem Beispiel wurde m = 8 und n = 26 gewählt.
  • Basierend auf der H-Matrix Hm,n kann somit die H-Matrix Hm+2,2·n+1 bestimmt werden. Entsprechend kann aus der H-Matrix Hm+2,2·n+1 eine H-Matrix Hm+4,4·n+3 bestimmt werden. Dieser Ansatz kann für weitere H-Matrizen entsprechend fortgesetzt werden.
  • Für eine Anzahl von beispielsweise 6, 7 oder 8 Prüfbits können H-Matrizen zur Bestimmung eines Syndromgenerators direkt ermittelt werden. Für eine größere Anzahl von Prüfbits, beispielsweise für 10, 12, 14 oder mehr Prüfbits, können H-Matrizen zur Bestimmung von Syndromgeneratoren aus bereits vorab bestimmten H-Matrizen mit einer geringeren Anzahl von Prüfbits bestimmt werden. Zur Anpassung an eine andere Länge von Codewörtern können erste Spalten und/oder letzte Spalten einer so ermittelten H-Matrix gestrichen werden.
  • Modifikationen von H-Matrizen können beispielsweise auch durch Linearkombinationen ihrer Zeilen erfolgen.
  • H-Matrizen können beispielsweise auch durch Vertauschen ihrer Spalten modifiziert werden.
  • Eine Option ist es, dass der hierin beschriebene Fehlercode mit anderen (z.B. auch bereits bekannten) Fehlercodes kombinierten werden kann. Beispielsweise kann insbesondere eine H-Matrix eines BCH-Codes Teil der hier beschriebenen H-Matrix sein.
  • Fehlerverarbeitung
  • 1 zeigt eine beispielhafte Anordnung zur Veranschaulichung der Verarbeitung von Daten mittels Fehlercodes.
  • Zunächst werden Nutzdaten 101 einer Kodiereinheit 102 zugeführt. Die Kodiereinheit 102 nutzt einen Fehlercode um die Nutzdaten 101 in Form von Codewörtern 103 in einem Speicher 104 zu speichern. Jedes Codewort 103 umfasst Datenbits und Prüfbits.
  • Beispielhaft wird nun auf den Speicher 104 lesend zugegriffen. Eine Dekodiereinheit 106 erhält dadurch ein möglicherweise fehlerhaftes Codewort 105. Die Dekodiereinheit 106 führt die Korrektur eines 1-Bit-Fehlers oder eines 2-Bit-Fehlers benachbarter gelesener Speicherzellen (und damit benachbarter Bitpositionen) durch oder sie erkennt einen 2-Bit-Fehler an nicht benachbarten Speicherzellen.
  • Somit werden fehlerfreie, ggf. korrigierte, Nutzdaten 107 ausgegeben, die identisch sind mit den Nutzdaten 101, falls kein Fehler oder ein 1-Bit-Fehler oder ein benachbarter 2-Bit-Fehler erkannt wurde. Auch kann von der Dekodiereinheit 106 ein Fehler ausgegeben werden, der anzeigt, dass ein 2-Bit-Fehler in nicht benachbarten Speicherzellen erkannt wurde.

Claims (19)

  1. Verfahren zum Verarbeiten von Daten mittels eines Fehlercodes, wobei der Fehlercode eine H-Matrix mit n Spalten und m Zeilen aufweist, - wobei die Spalten der H-Matrix unterschiedlich sind, - wobei komponentenweise XOR-Summen benachbarter Spalten der H-Matrix zueinander und zu allen Spalten der H-Matrix unterschiedlich sind, - wobei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix unterschiedlich sind zu allen Spalten der H-Matrix und zu allen komponentenweisen XOR-Summen benachbarter Spalten der H-Matrix, - bei dem mittels des Fehlercodes - 1-Bit-Fehler korrigiert werden, - benachbarte 2-Bit-Fehler korrigiert werden und - nicht benachbarte 2-Bit-Fehler erkannt werden.
  2. Verfahren nach Anspruch 1, bei dem eine Anzahl aller Komponenten einer Spalte kleiner als die kleinste ganze Zahl ist, die größer als 2 · log2 n ist.
  3. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Fehlercode ein Fehler-erkennender oder ein Fehler-korrigierender und Fehler-erkennender Code ist.
  4. Verfahren nach einem der vorhergehenden Ansprüche, bei dem mindestens zwei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix nicht unterschiedlich sind.
  5. Verfahren nach einem der vorhergehenden Ansprüche, bei dem der Fehlercode eine Länge von n Bits mit m Prüfbits und n - m Nutzdatenbits aufweist.
  6. Verfahren nach einem der vorhergehenden Ansprüche, bei dem entsprechend der H-Matrix ein Syndromgenerator zur Bildung eines m-komponentigen Fehlersyndroms bestimmt ist.
  7. Verfahren nach Anspruch 6, bei dem der Syndromgenerator als kombinatorische Schaltung mit n Eingängen und m Ausgängen implementiert ist.
  8. Verfahren nach einem der Ansprüche 6 oder 7, bei dem ein Korrekturwertbildner vorgesehen ist, der aus dem von dem Syndromgenerator bereitgestellten m-komponentigen Fehlersyndrom Korrekturwerte für fehlerhafte Bitpositionen bildet.
  9. Verfahren nach einem der vorhergehenden Ansprüche, bei dem n ≥ 2m/2 ist.
  10. Verfahren nach einem der vorhergehenden Ansprüche, bei dem die H-Matrix Teil einer erweiterten H-Matrix ist.
  11. Verfahren nach Anspruch 10, bei dem die erweiterte H-Matrix wie folgt bestimmt ist: - die H-Matrix wird gedoppelt in eine ursprüngliche H-Matrix und eine gedoppelte H-Matrix, wobei zwischen der ursprünglichen H-Matrix und der gedoppelten H-Matrix eine Zwischenspalte mit m Nullen eingefügt wird, - die ursprüngliche H-Matrix wird um zwei Zeilen mit n Nullen ergänzt, - die gedoppelte H-Matrix wird um eine Zeile mit n Einsen und um eine weitere Zeile ergänzt, wobei die weitere Zeile bestimmt ist durch - eine Bitkombination aus n Bits gemäß 1010...10, falls n geradzahlig ist oder - eine Bitkombination aus n Bits gemäß 1010...1, falls n ungeradzahlig ist, - die Zwischenspalte aus m Nullen um eine Spalte [0,1]T ergänzt wird.
  12. Verfahren nach einem der vorherigen Ansprüche, bei dem die H-Matrix angepasst wird durch Streichen mindestens einer ersten und/oder mindestens einer letzten Spalte.
  13. Verfahren nach einem der vorherigen Ansprüche, bei dem die H-Matrix modifiziert wird durch eine Linearkombination ihrer Zeilen.
  14. Verfahren nach einem der vorherigen Ansprüche, bei dem die Verarbeitung der Daten ein Schreiben in einen Speicher oder ein Lesen aus einem Speicher umfasst.
  15. Vorrichtung zum Verarbeiten von Daten mittels eines Fehlercodes, wobei der Fehlercode eine H-Matrix mit n Spalten und m Zeilen aufweist, wobei die Vorrichtung eine Verarbeitungseinheit umfasst, die derart eingerichtet ist, den Fehlercode entsprechend der H-Matrix zu bestimmen, - wobei die Spalten der H-Matrix unterschiedlich sind, - wobei komponentenweise XOR-Summen benachbarter Spalten der H-Matrix zueinander und zu allen Spalten der H-Matrix unterschiedlich sind, - wobei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix unterschiedlich sind zu allen Spalten der H-Matrix und zu allen komponentenweisen XOR-Summen benachbarter Spalten der H-Matrix.
  16. Vorrichtung nach Anspruch 15, wobei die Verarbeitungseinheit einen Syndromgenerator umfasst, der Syndrome basierend auf der H-Matrix ausgibt.
  17. Vorrichtung nach einem der Ansprüche 15 oder 16, wobei die Vorrichtung einen Speicher umfasst oder mit einem Speicher koppelbar ist, wobei das Verarbeiten der Daten ein Schreiben in den Speicher oder ein Lesen aus dem Speicher umfasst.
  18. Vorrichtung nach einem der Ansprüche 15 bis 17, bei der eine Anzahl aller Komponenten einer Spalte kleiner als die kleinste ganze Zahl ist, die größer als 2 · log2 n ist.
  19. Vorrichtung nach einem der Ansprüche 15 bis 18, bei der mindestens zwei komponentenweise XOR-Summen nicht benachbarter Spalten der H-Matrix nicht unterschiedlich sind.
DE102018126685.5A 2018-10-25 2018-10-25 Verarbeitung von Daten Active DE102018126685B3 (de)

Priority Applications (3)

Application Number Priority Date Filing Date Title
DE102018126685.5A DE102018126685B3 (de) 2018-10-25 2018-10-25 Verarbeitung von Daten
TW108129917A TWI744679B (zh) 2018-10-25 2019-08-21 利用錯誤碼進行資料處理的方法與裝置
US16/663,839 US11556412B2 (en) 2018-10-25 2019-10-25 Processing of data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102018126685.5A DE102018126685B3 (de) 2018-10-25 2018-10-25 Verarbeitung von Daten

Publications (1)

Publication Number Publication Date
DE102018126685B3 true DE102018126685B3 (de) 2019-10-10

Family

ID=67991545

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018126685.5A Active DE102018126685B3 (de) 2018-10-25 2018-10-25 Verarbeitung von Daten

Country Status (3)

Country Link
US (1) US11556412B2 (de)
DE (1) DE102018126685B3 (de)
TW (1) TWI744679B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022118280A1 (de) 2022-07-21 2024-02-01 Infineon Technologies Ag Fehlerverarbeitung und Korrektur benachbarter 2-Bitfehler

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7134069B1 (en) * 1999-06-16 2006-11-07 Madrone Solutions, Inc. Method and apparatus for error detection and correction
US8875002B1 (en) * 2012-01-20 2014-10-28 Cypress Semiconductor Corporation Low cost adjacent double error correcting code
US8732560B2 (en) * 2012-05-08 2014-05-20 Infineon Technologies Ag Method and device for correction of ternary stored binary data
US9715420B2 (en) * 2015-01-21 2017-07-25 International Business Machines Corporation String dataflow error detection
US10127101B2 (en) * 2015-08-28 2018-11-13 Intel Corporation Memory device error check and scrub mode and error transparency
US10268539B2 (en) 2015-12-28 2019-04-23 Intel Corporation Apparatus and method for multi-bit error detection and correction
US10176040B2 (en) 2016-04-05 2019-01-08 Micron Technology, Inc. Error correction code (ECC) operations in memory
US10572343B2 (en) * 2017-01-19 2020-02-25 Intel Corporation Targeted aliasing single error correction (SEC) code

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WIKIPEDIA: BCH-Code. 26.04.2018 [recherchiert am 15.04.2019]. Im Internet: <URL: https://de.wikipedia.org/wiki/BCH-Code> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102022118280A1 (de) 2022-07-21 2024-02-01 Infineon Technologies Ag Fehlerverarbeitung und Korrektur benachbarter 2-Bitfehler

Also Published As

Publication number Publication date
US20200133763A1 (en) 2020-04-30
TW202024907A (zh) 2020-07-01
TWI744679B (zh) 2021-11-01
US11556412B2 (en) 2023-01-17

Similar Documents

Publication Publication Date Title
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE102017103347B4 (de) Verarbeitung von daten in speicherzellen eines speichers
DE2060643B2 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE102017125617B4 (de) Bestimmung und Verwendung von Bytefehlerpostionssignalen
DE102007038114A1 (de) Fehlerkorrekturschaltung, Halbleiterspeicherelement und Fehlerkorrekturverfahren
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102011087634B9 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE2260846A1 (de) Fehlerkorrektursystem
DE102013222136B4 (de) Schaltung und Verfahren für die Mehr-Bit-Korrektur
DE102018126685B3 (de) Verarbeitung von Daten
DE3702574A1 (de) Speicheranordnung mit drei moduln, mit symbolbreiten speicherchips und mit einem fehlerschutz, wobei jedes symbol aus 2(pfeil hoch)i(pfeil hoch)+1 bits besteht
DE102018131613A1 (de) Fehlererkennung mittels Gruppenfehler
DE102011087457A1 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einer mehrzahl von codierten binärwörtern, die durch einen fehlerkorrekturcode codiert sind
DE102016104012A1 (de) Verarbeitung eines Datenworts
DE102019113970B4 (de) Erkennung von adressfehlern
DE4117726C2 (de) Fehlerkorrekturverfahren und Einrichtung zu dessen Durchführung
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102011080659B4 (de) Vorrichtung und verfahren zum testen einer zu testenden schaltung
DE102015121646B4 (de) Fehlerkorrektur
DE102022101798B3 (de) Fehlerverarbeitung
DE102022126958A1 (de) Fehlerkorrektur
DE102022118280A1 (de) Fehlerverarbeitung und Korrektur benachbarter 2-Bitfehler
DE102015118668B4 (de) Fehlerkorrektur

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