DE2657826A1 - Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage - Google Patents

Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage

Info

Publication number
DE2657826A1
DE2657826A1 DE19762657826 DE2657826A DE2657826A1 DE 2657826 A1 DE2657826 A1 DE 2657826A1 DE 19762657826 DE19762657826 DE 19762657826 DE 2657826 A DE2657826 A DE 2657826A DE 2657826 A1 DE2657826 A1 DE 2657826A1
Authority
DE
Germany
Prior art keywords
error
syndrome
signal
bit
signals
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.)
Withdrawn
Application number
DE19762657826
Other languages
English (en)
Inventor
Gordon E Gregg
Thomas H Howell
Leonard Rabins
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.)
Bull HN Information Systems Italia SpA
Original Assignee
Honeywell Information Systems Italia SpA
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 Honeywell Information Systems Italia SpA filed Critical Honeywell Information Systems Italia SpA
Publication of DE2657826A1 publication Critical patent/DE2657826A1/de
Withdrawn legal-status Critical Current

Links

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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1575Direct decoding, e.g. by a direct determination of the error locator polynomial from syndromes and subsequent analysis or by matrix operations involving syndromes, e.g. for codes with a small minimum Hamming distance

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

5202613 Ge 22. Dezember 1976
HONEYWELL INFORMATION SYSTEMS INC.
200 Smith Street Waltham, Mass., USA
Einrichtung zur Fehlererkennung und Fehlerkorrektur im Speichersystem einer DV-Anlage.
Die Erfindung betrifft eine Einrichtung nach dem Gattungsbegriff des Anspruchs 1. DV-Systeme wurden in den zurückliegenden Jahren in Richtung auf einen höheren Wirkungsgrad und größere Systeme entwickelt, wobei sich ihr Speichersystem als kritische Größe erwiesen hat. Die Weiterentwicklung von DV-Systemen hat zur Entwicklung sehr großer Speichersystem=geführt. Unter den Anforderungen an ein Speichersystem steht das Erfordernis äußerst hoher Genauigkeit mit an der Spitze. Da diese Anforderung im allgemeinen kostend rks ame Lösungen für den Einsatz fehlerfreien Komponenten und Organisationsformen überschreitet, wurden Speichersysteme zumeist mit Fehlererkennungs- und -korrektureinrichtungen EDAC (error detection and correction) versehen. Hierbei stellt die Fehlererkennungseigenschaft das Vorhandensein eines Fehlers im zugeordneten Speichersystem fest, während die Korrektureigenschaft für die Fehlerkorrektur sorgt. Bekannte EDAC-Einrichtungen ermöglichen die Erkennung von Ein- und Zwei-Bit-Fehlern, jedoch die Korrektur nur für Ein-Bit-Fehler. Dies bedeutet, daß Doppel-Bit-Fehler zwar festgestellt, jedoch nicht korrigiert und Mehr-Bit-Fehler, d.h. Fehler, die in mehr als zwei Bits pro Wort auftreten, überhaupt nicht festgestellt werden können. Die Wirksamkeit bekannter EDAC-Einrichtungen
709828/0615
ist umgekehrt proportional zur Anzahl der in einem Wort auftretenden Fehler. Weist das Wort keinen Fehler auf, so ergibt sich kein Problem, weil Fehler weder festgestellt noch korrigiert
werden müssen. Somit wird ein fehlerfreies Wort vom Speichersystem geliefert. Ist ein Fehler pro Wort vorhanden, so kann
dieser sowohl festgestellt als auch korrigiert werden t und das Speichersystem liefert ebenfalls ein fehlerfreies Wort. Zwei
Fehler in einem Wort werden zwar festgestellt, jedoch nicht
korrigiert. Dies führt zur Erzeugung eines Fehlersignals,
welches andere Arten der Korrektur erfordert, beispielsweise
einen Software-Eingriff oder ein Anhalten des Systems. Die
letztgenannte Art der Fehlerkorrektur ist äußerst kostspielig, und man ist deshalb bestrebt, ihr Auftreten so weit wie möglich zu verringern.
Die Schwierigkeit bei der Ausdehnung von EDAC-Fähigkeiten auf Doppelfehlerkorrektur und Dreifachfehlererkennung bei Zufallsfehlern und darüberhinaus liegt in der Bereitstellung wirksamer Decodiervorrichtungen für diese Funktion. Einfache und schnelle Codierschemata sind bekannt, welche eine erweiterte EDAC-Funktion ermöglichen. Solche Codierschemata werden in Verbindung mit Goppa-Codes sowie Bose-Chaudhuri-Hocquenghem (BCH-Codes)
benutzt und sind ähnlich den Codierschemata, die mit den Hamming-Codes oder modifizierten Hamming-Codes arbeiten. Solche Codes werden im einzelnen beispielsweise beschrieben von E.R. Berlekamp in "Algebraic Coding Theory", McGraw-Hill, New York 1968 sowie von W.W. Peterson and E.J. Weldon in"Error Correction Codes", 2. Ausgabe MIT Press, Cambridge, Massachusetts 1972. Codierer zur Anwendung dieser Codierschemata können im allgemeinen zur Verfügung gestellt werden. Jedoch sind die Decodiereinrichtungen komplex, langsam und von geringem Wirkungsgrad. Sie wurden im allgemeinen mit einem Decodier-Algorithmus betrieben, welcher ein sequentielles Absuchen vorsieht. Eine, direkte Decodierung ist nicht angewandt worden.
709828/0615
Aufgabe der Erfindung ist es. folglich, eine Einrichtung für die Doppelfehler-Korrektur DEC sowie die Dreifachfehler-Erkennung TED im Speichersystem einer DV-Anlage zu schaffen. Insbesondere soll eine wirkungsvolle Decodiereinrichtung für die Doppelfehler-Korektur angegeben werden. Diese Aufgabe wird gelöst durch die im Anspruch 1 gekennzeichnete Erfindung. Vorteilhafte Ausgestaltungen ergeben sich aus den Unteransprüchen.
Die Erfindung wird nachfolgend anhand einiger Tabellen und der Zeichnungen im einzelnen beschrieben. Dabei zeigt
4 Tabelle I eine Darstellung eines Galois-Feldes GF(2 ) für ein
4 Maximalexponenten-Generatorpolynom g(x)=x +x+1, wobei in diesem Zusammenhang auf die Parallelanmeldung P 26 "Schaltungsanordnung zur Multiplikation beliebiger Feldelemente in einem Galois-Feld GF(2m) verwiesen (5202613 Ge) wird;
Tabelle II eine Η-Matrix für einen zyklischen Einzelfehler-Korrektur-Code (SEC) mit dem Polynom g(x) gemäß Tabelle I; Tabelle III eine Ή-Matrix zum Codieren eines Doppelfehler-
Korrektur-BCH-Code (DEC-BCH) mit (g (x) =m1 (x)iru(x) , wobei im
4 4 "} ?
m1(x)=x +x+1 und m3(x)=x +x +x +x+1;
Tabelle IV eine Η-Matrix zum Decodieren eines DEC-BCH-Codes mit dem Polynom g(x) gemäß Tabelle III.
Tabelle V zeigt wie die Η-Matrizen der Tabellen III und IV zur Einfügung eines Paritäts-Prüfbits erwertert werden, um eine Dreifachfehler-Erkennung TED zu ermöglichen.
In den Zeichnungen zeigt
Fig. 1a eine Η-Matrix zum Codieren eines DEC-TED-BCG-Codes (double error correction/triple error detection/
Bose-Chaudhuri-Hoqquenghem-Code); Fig. Ib ein Blockschaltbild eines Codierers, der nach der
Η-Matrix gemäß Fig. 1a arbeitet; Fig 2.a eine Η-Matrix zum Decodieren eines DEC-TED-BCH-
Codes;
Fig. 2b ein Blockdiagramm eines Syndrom-Rechners, welcher die Η-Matrix gemäß Fig.. 2a anwendet und in der Schaltung gemäß Fig. 3 eingesetzt wird;
709828/0615
Fig. 3 ein Blockschaltbild eines Direktdecoders;
Fig. 4 eine Werttabelle, die in den Umsetzern gemäß Fig.3
zur Umsetzung von S1 in S1 Anwendung findet;
Fig. 5 eine Werttabelle, welche im Umsetzer gemäß Fig. 3
zum Auffinden von B/S1 dient; und
Fig. 6 ein Blockschaltbild der in Fig. 3 eingesetzten
Multiplizierer.
Theoretische Erläuterung der Betriebsweise
Zum besseren Verständnis der Betriebsweise sollen zunächst die Grundzüge der zyklischen SEC- und BEC-Codes erläutert werden. Ergänzend sei auf die oben erwähnten Veröffentlichungen verwiesen. In den meisten DV-Systemen ist die Information in Worten organisiert. Die Fehlererkennung und Korrektur wird angewandt auf jedes Wort, welches zu einem Speicher gesandt wird oder von einem Speicher kommt. Jedes Wort enthält k Informations-Bits. Codiervorrichtungen fügen m Prüfbits zu den k Informationsbits hinzu, sobald sie zum Speicher übertragen werden, woraus sich eine Gesamtlänge (natürliche Länge) jedes Code-Worts von n=k+m Bits ergibt. Dies gilt für jedes Codewort, wenn es in einem
Speicher gespeichert wird oder aus dem Speicherbereich einer
Speichereinrichtung kommt. Ein Codewort C von der Länge η kann als ein Polynom C (x) vom Grad n-1 angesehen werden, bei dem
das erste Bit in der Folge das höchstwertige Bit MSB (most
significant bit) ist. Die k Informationsbits eines Codeswortes können irgendeine Kombination von Werten oder Größen darstellen. Die m Prüfbits werden den k Informationsbits derart zugefügt, daß C(x) ein Vielfaches von g(x) ist, d.h. C(x)=Q(x)g(x).
Hierin bedeutet Q(x) ein Polynom mit keinen Bestandteil vom
Grad geringer als χ , wahrend g(x) den Grad m hat, d.h. sein Grad entspricht der Anzahl der Prüfbits. All diese Polynome C(x) bilden einen zyklischen Code, der als (n,k)-Code bezeichnet wird. Das Polynom g(x) wird als Generator-Polynom bezeichnet, wobei jedes Codewort C(x) ein Vielfaches des Generatorpolynoms ist.
709828/0615
Die Gruppe aller Polynome C(χ) in einem gegebenen zyklischen Code können als Zeilenraum einer Matrix G(x) definiert werden, d.h. jede lineare Kombination der Zeilen von G(x) bilden ein Polynom C(.x). Es läßt sich somit eine Generatormatrix G ableiten, welche jedes mögliche Codewort C definiert oder erzeugt.
Eine m χ η Matrix H ist derart definiert, daß GH = (pi , d.h.
der Zeilenraum der Matrix H ist der Null-Raum von G und umgekehrt. Da jede Zeile von G orthogonal zu jeder Reihe von H
T
liegt, gilt G.H =0, wobei G. die i-te Reihe von G ist. Verallgerneinert man diese Beziehung, so ist jede lineare Kombination
der Zeilen von G orthogonal zu H, d.h. CH =0 für alle Codewörter C. Die Codier- und Decodiereinrichtungen basieren sämtlich auf H und g(x), ohne direkten Bezug zu G. Folglich kann eine Methode zur Ableitung von H unmittelbar aus g(x) angewandt werden. Jedoch ist eine zusätzliche algebraische Notation erforderlich.
Das Generatorpolynom g(x) definiert ein Galois-Feld GF(2m), welches durch ein Feld von Polynomen über GF(2) Modulo g(x) darstellbar ist. Jedes Feldelement ist eine Restklasse von Polynomen derart, daß je zwei Polynome in der gleichen Restklasse Modulo g(x) äquivalent sind. Die Restklasse, welche χ enthält, wird mit ζ bezeichnet. Folglich ist das Feldelement ζ eine Wurzel von g(x), d.h. g(z)=O. Wurde g(x) so ausgewählt, daß es ein Maximalexponentenpolynom ist, dann ist ζ ein Basiselement, d.h. ζ hat den Rang 2 -1. Folglich stellen die Potenzen von z, d.h. ζ bis zn mit n=2 η unterschiedliche von Null verschiedene Feldelemente in GF(2m) dar. Die Tabelle I
4
zeigt GF(2 ) für ein Maximalexponenten-Generatorpolynom g(x)=x +x+1.
709828/0615
Tabelle I:
Z = 3
ζ
1 Z ζ2 ζ+1 +1 = 000 Γ = Z
ζ1 = ζ2 +1 0010
2
Z **■
= 0010
3
ζ =
ζ32 +ζ+1 1 = 1000
4 Z ζ2 +1 = 0011
ζ5 = oho
6
ζ =
ζ3 ζ2+ζ+1
ζ
= 1100
ζ7 = ζ32+ ζ+1 = ion
ζ8 = ζ32+ = 0101
ζ9 = ζ32 = 1010
ζ10«
Ζ12**
ζ3 = 0111
= 1110
= 1111
Z13I = 1101
ζ14= = ίσοι
15 0
ζ =
Die Matrix H kann nunmehr als Funktion g (χ) entwickelt werden. Für den Fall der Einzelfehlerkorrektur (SEC) besteht die Matrix H aus allen Potenzen νοηζ in der Reihenfolge seiner n=2 -1 Spalten, wobei das höchstwertige Bit MSB am unteren Rand erscheint. Die nachfolgende Talle II zeigt die Matrix H für einen zyklischen Code zur Einzelfehlerkorrektur SEC, wobei g(x) zur Ableitung der Tabelle I benutzt wurde. Da m=4 gilt n=2m-1=15 und k=11.
Tabelle II ί H = \ζ° ζ1 ζ2 ζ3 ζ4
z5 z6 z7 z8 z9 z10 z11 z12 z13 Z14J
Ί 0 0 0 1 0 0 1 10 1
0 10 0 110 10 11
0 0 10 0 1 10 10 1
0 0 0 10 0 1 10 10
0 1 1 1
1 1 0 0
1 1 1 0
1 1 1 1
709828/0615
Somit erzeugt ein Generator-Polynom g(x) 4. Ordnung einen (.15/11) -Code, d.h. einen Code mit maximal 11 Informationsbits. Die ersten m Spalten der Matrix H, nämlich, ζ bis ζ / entsprechen den m Prüfbits. Jede Spalte enthält nur einen Wert "1" und m-1 "0". Die übrigen k Spalten der Matrix H entsprechen den k Informationsbits. Diese Eigenschaft ergibt sich aus Tabelle II und gilt allgemein für alle Generatorpolynome g(x). Jede Zeile der Matrix H stellt eine Paritätsgleichung dar, die eine geradzahlige Parität zwischen einem der m Prüfbits und dem ausgewählten Informationsbit definiert, wie dies durch die "1" an der entsprechenden Stelle der Zeile angedeutet ist. Folglich wird H als Paritätsprüfmatrix bezeichnet. Diese Beziehungen werden als Grundlage für das Codieren und Decodieren verwendet.
Das Codieren erfolgt durch Hinzufügen von m Prüfbits zu den k Informationsbits, um dadurch das komplette Codewort C mit den
oben erwähnten Eigenschaften zu erhalten, insbesondere CH =0.
Ein Kombinationslogik-Codierer besteht aus m Paritäts-Baumstrukturen, von denen jede eine der· m Paritätsgleichungen zur Erzeugung eines der entsprechenden m Prüfbits aufweist. Die Anwendung läßt sich leicht aus einer Betrachtung der Matrix H bestimmen. Jede Zeile von H identifiziert durch die Werte "1" die Informationsbits, welche in eine Paritäts-Baumstruktur einzugeben sind, d.h. einen Summierer, um das zu dieser Reihe gehörige Prüfbit zu erzeugen. Die m Prüfbits werden dann den k Informationsbits hinzugefügt, um hieraus ein Codewort C von der Länge η zu erhalten, welches im Speicher abgelegt wird.
Beim Zugriff zum Speicher ist es notwendig, die im Speicher vorhandenen Worte zu decodieren. Hierdurch wird aus dem empfangenen Wort R das korrigierte Codewort C abgeleitet. Der Decodiervorgang besteht aus zwei Abschnitten, nämlich der Berechnung eines Syndroms, aus welchem die Fehler erkannt werden können, und aus der Decodierung des Syndroms zwecks Fehlerkorrektur.
Ein Syndrom S ist eine Größe, welche im Fall der Einzelfehlerkorrektur SEC durch Verwendung von Paritäts-Baumstrukturen
709828/0S15
ähnlich den bei der Codierung benützten Strukturen berechnet werden kann. In der Praxis kann die zum Codieren verwendete Hardware auch für die Berechnung des Syndroms S eingesetzt werden, wobei zusätzliche Hardware zum Einfügen der Prüfbits in die Berechnung erforderlich ist. Nach Erstellung des Syndroms wird es in folgender Weise zur Erkennung der Fehlerposition eingesetzt werden. Das empfangene Wort R läßt sich als Summe des Original-Codeworts C und eines Fehlerworts E auffassen, d.h. R=C+E. Allgemein gesprochen ist das Syndrom S die Summe derjenigen Spalten der Matrix H, welche den fehlerhaften Bits im empfangenen Wort R entsprechen. Ist E=O so sind keine Fehler aufgetreten und R=C, d.h. S ist Null. Für einen Einzelfehler in der Position i gilt S=Z1. Wenn also ein einzelner Fehler aufgetreten ist, so zeigt das Syndrom S auf das fehlerhafte Bit, indem es auf diejenige Spalte der Matrix H hinweist, welche der fehlerhaften Bit-Position zugeordnet ist. Dieses Bit kann dadurch korrigiert werden, daß man das Syndrom S von einer m-Bit-Größe zu einer 1-von-n-Bitgröße, genannt das Fehlerwort E, decodiert, welches eine "1" an der Position des Fehlers aufweist. Das Fehlerwort E besteht überall aus "0", mit Ausnahme dieser "1" an der Fehlerposition. Damit ist das ursprüngliche Codewort C erstellt.
Geht man nunmehr zur Doppelfehlerkorrektur DEC über, so ist zu bemerken, daß die BCH-Codes eine Klasse zyklischer Codes mit der Möglichkeit von Mehrfachfehler-Korrektur sind. Die Erfindung benutzt einen BCH-Code, wobei die Dreifachfehlererkennung TED durch eine Erweiterung des DEC-BCH-Codes mit übergreifender Parität abgeleitet wird.
Ein DEC-BCH-Code hat ein Generatorpolynom g(x) in der Form g(x)=m..(x) m_ (x) , wobei m.. (x) und iru (x) von der Ordnung m sind und Hi1 (x) ein Mäximalexponenten-Polynom ist. ζ ist ein Basiselement im Galois-Feld GF (2 ), welches die Restklasse von iru (x) bezeichnet, die χ enthält, ζ ist somit eine Wurzel von m.. (x) . Weiterhin ist m.(x) das Minimalpolynom von z. Sobald m.(x)
709828/0816
-jr-
ausgewählt ist, wird m_ (χ) so ausgewählt, daß es das Minimal-
3
polynom von ζ ist. Da g(x) von der Ordnung 2m ist, enthalten die Codewörte 2m Prüfbits; die natürliche Länge der Codewörter ist n=2 -1. Die Anzahl der Informationsbits k ist n-2m. Ähnlich der Definition von ζ in Bezug auf m.. (x) wird ein Element γ definiert in Bezug g(x). y bezeichnet die Restklasse von g(x), welche χ enthält und ist somit eine Wurzel von g(x).
Die Paritätsprüfmatrix H kann in zwei gleichwertigen Formen dargestellt werden. Die Codieranwendung basiert auf der einen Form, während die Decodieranwendung auf der anderen Form basiert. Eine sowohl für Codierung als auch für Decodierung von Einzelfehlern dienende Form der Matrix H zeigt Tabelle II. Eine Codierform der Matrix H für einen Code natürlicher Länge besteht aus η Spalten, welche die ersten η Potenzen von y sind. Diese Form der
4
Matrix H ist für rru (x)=x +x+1 und m_(x)=: nachfolgenden Tabelle III wiedergegeben.
4 4 3 2
Matrix H ist für rru (x)=x +x+1 und m_(x)=x +x +x +x+1 in der
Tabelle III:
y°. γ1 γ2 γ3 y4 y5 y6 y7 y8 γ9 γ" y ' y~ y~ y
10 „11 12 13 „14
100000001 10 01 00000001 1 0010000000 1 0001 0000000 000010001 10 0000010001 1 0 0 0 0 0 0 10 1 1 1 00000001 101
1 0 0 0
0 1 0 0
1 0 1 0
1 1 0 1
1 1 1 0
0 1 1 1
0 0 1 1
0 0 0 1
709828/0B1B
Die Decodierform der Matrix H besteht aus einer oberen Hälfte H1 und einer unteren Hälfte H3. Die η Spalten von H1 sind die aufeinanderfolgenden Potenzen von z, d.h. ζ bis ζ . Die Spalten, von H3 sind- die aufeinanderfolgenden Potenzen von ζ , d, n.'z , ζ , ζ ,... Jede Spalte von H3 ist die dritte Potenz der darüberliegenden Spalte in H1. Diese Form der Matrix H ist
4 4 3 2
für m=4 mit m.. (x)=x +x+1 und m.,(x)=x +x +x +x+1 in der folgenden Tabelle IV dargestellt.
Tabelle IV:
H3
z° z1 z2 z3 z4 z5 z6 z7 z8 z9 z10 z11 z12 z13 z14 z°"z3 z6"z9 z12z° z3"z6 Z9V2^0 s3""*6 z9 2^
1 O O 0 1 O O 1 1 O 1 O 1 1 1
0 1 0 0 1 1 O 1 O 1 1 Ö 1 O 0
O O 1 0 O 1 1 0 1 0 1 1 1 1 0
0 0 0 1 0 0 1 1 O 1 0 1 1 1 1
1 0 0 0 1 1 0 O 0 1 O O O O 1
O O 0
/

I
0 0 0 1 1 O O O 1 1
O O 1 0 1 0 0 1 O 1 O 0 1 O 1
O 1 1 1 1 0 1 1 1 1 1 1 1 1 1
Die beiden Syndrome S1 und S3 müssen während des Decodiervorgangs berechnet werden und werden wie folgt ausgedrückt
S2=
S3=
3i
709828/0615
wobei 0 ^ i £ n-1 und i die fehlerhaften Bit-Positionen bezeichnet. Im Fall eines Doppelbitfehlers führt die obengenannte Gleichung zu
wobei i und j die beiden Fehlerhaften Bit-Positionen bezeichnen und i kleiner ist j. Diese Gleichungen liefern zwei linear unabhängige Gleichungen für zwei Unbekannte. Folglich können i und j in Abhängigkeit von S1 und S3 angegeben werden, jedoch nicht explizit.
Die Decodierung der Syndrome zwecks Auffindung der fehlerhaften Bit-Positionen ist Hauptaufgabe bei einer Doppelfehlerkorrektureinrichtung im BCH-Code. Ein neuer Decodieralgorithmus wird hierfür eingeführt. Bekannte Einrichtungen arbeiten mit einem sequentiellen Absuchen nach den Unbekannten. Obwohl auf diese Weise ein Ergebnis erzielt werden kann, ist ein solches schrittweises Absuchen langsam und mühsam und für Hauptspeicheranwendungen ungeeignet. Die vorliegende Erfindung sieht deshalb eine direkte Decodierung vor, d.h. einen Decodierer, welcher eine Kombinationslogik verwendet. Dies stellt einen bedeutenden Fortschritt gegenüber dem Stand der Technik dar.
Die Fähigkeit der Dreifachfehlererkennung wird durch Erweiterung des DEC-BCH-Codes durch eine einfache geradzahlige Parität über das gesamte BCH-Codewort erreicht. Ein Paritätsbit wird dem Codewort hinzugefügt und erhöht die Gesamtanzahl der Prüfbits auf 2m+1.. Das BCH-Codewort von der Länge m ist von der Parität unabhängig und ist eingebaut in das Paritäts-Codewort von der Länge n+1. Folglich bleibt beim BCH-Codieren und Decodieren das Paritätsbit unberücksichtigt. Für die Berücksichtigung der Parität wird zusätzliche Hardware benutzt. Die Parität führt zu einer Änderung der Matrix H gemäß folgender Tabelle V.
709828/0615
Tabelle V:
ο ο
O O O O O O 1111111111111111
Rest entspricht der zuvor gezeigten Matrix H
(Codierung und Decodierung)
Die am linken Rand der Matrix H hinzugefügte Spalte mit 2m-Werten
"O" hat keinen Einfluß auf die 2m-Paritätsgleichungen, welche durch die Zeilen der obenerwähnten Matrixformen H dargestellt werden. Diese Eigenschaft zeigt, daß der BCH-Prozeß durch die Parität nicht geändert wird. Die Zeile von m+1 Werten "1", die am unteren Rand der Matrix H hinzugefügt wurde, stellt die Paritätsgleichung über alle n+1 Bits des Paritäts-Codeworts dar.
Arbeitsweise des Ausführungsbeispiels
Die nachfolgend erläuterte Doppelfehlerkorrektur bei EDAC wird vorzugsweise in Verbindung mit einem Hauptspeichersystem angewandt. Ein Hauptspeicher zeichnet sich durch eine schnelle parallele Datenübertragung aus, wobei jede übertragung ein EDAC-Wort umfaßt. Die Hauptspeicher-Fehlererkennung und -korrektur bringt vorzugsweise Codierer und Decodierer zur Anwendung, die nur Kombinationslogiken verwenden. Der Codier- und der Decodiervorgarcj
709828/0615
werden in einem einzigen Taktzyklus, also direkt in dem Zyklus durchgeführt, der für die Datenübertragung erforderlich ist. Die nachfolgend erläuterte Fehlererkennung und Korrektur bezieht sich auf einen (16,7)-Code,, welcher 7 Informationsbits, 8 BCH-Prüfbits und ein Paritätsprüfbit in jedem Wort enthält. Das Verfahren gemäß der Erfindung ist jedoch allgemein anwendbar, also auch für(n,k)-Codes oder verkürzte (n,k)-Codes, wo n'< η ist. Im allgemeinen ist n=1+2m+k, wobei k der Anzahl der Informationsbits und m dem kleinsten ganzzahligen Wert entspricht, so daß n* < 2m-1 gilt. Zum Beispiel würde die Fehlererkennung und-korrektur bei einem Hauptspeicher im Honeywell-Rechnersystem der Serie 6000 einen ( 87,72)-Code verwenden. Jedes Codewort besteht dort aus zwei 36-Bit-Maschinenworten mit 72 Informationsbits, 14 Prüfbits und 1 Paritätsbit.
Ein Generatorpolynom g(x) für den (16,7)-Code lautet g (X)=In1 (x)m3(^=x4+x3+x+1)=x8+x7+x6+x4+1 . Die Codierform der Paritätsmatrix für diese Generatorpolynom g(x) ist in Figur 1a dargestellt. Im allgemeinen ist die Codierform der Paritätsprüfmatrix eine (2m+1) χ (η)-Matrix. Einen ParitätsBaumstruktur-Codierer, aufgebaut auf dieser Matrix, zeigt Figur 1b. Es handelt sich um einen direkten Codierer,der das Codieren in einem Taktzyklus durchführt. Andere Bauformen für den Codierer lassen sich hieraus ableiten.
Der Direktcodierer gemäß Figur 1b besteht aus 9 Paritäts-Baumstrukturblocks 10 bis 18.-Allgemein hat ein solcher Codierer 2m+1 Paritäts-Baumstrukturblocks. Der Codierer empfängt 7 Informationsbits ig bis i14 und erzeugt ein 16-Bit-Codewort, bestehend aus einem Paritätsbit p, 8 BCH-Prüfbits cQ bis C7 sowie 7 Informationsbits ig bis I14. Jeder der Blöcke 10 bis 18 führt eine Exklusiv-ODER-Verknüpfung seiner Eingangssignale durch, um hieraus ein Ausgangssignal abzuleiten. Die Blocks 10 bis 17 erzeugen jeweils eines der Prüfbits cQ bis C7, indem sie die Untergruppe der Informationsbit ig bis I14 verarbeiten. Diese
709828/0 615
'At-
speziellen Informationsbits werden durch die in Figur 1a dargestellte Η-Matrix bestimmt. Beispielsweise stellt c die Exklusiv-ODER-Verknüpfung der Bits iR/ iq , i* η dar entsprechend der Summe über GF(2). Dies sind die Bit-Positionen mit einem Wert "1" in der ersten Zeile der Η-Matrix in Figur 1a. Die anderen Prüfbits haben ähnliche Beziehung, welche durch die entsprechenden Zeilen der Codiermatrix H bestimmt sind. Das Paritätsbit wird vom Block 18 erzeugt, welche eine Exklusiv-ODER-Verknüpfung der Prüfbits c bis C7 und der Informations bit iö bis i. . herbeiführt.
Der Direktdecoder besteht aus zwei Baugrauppen: Dem Syndrornrechner und dem Syndromdecoder, welche beide mit einer Kombinationslogik ausgestattet sind. Der Syndromrechner hat eine Paritats-Baumstruktur, während der Syndromdecoder, wie oben erwähnt, eine Direktdecodiergleichung zur Fehledbkalisierung löst.
Die allgemeine Form der Syndrome S1 und S3 für Doppelfehlerkorrektur ist gegeben durch die Gleichungen
wobei z1 und 7? die fehlerhaften Bitpositionen bezeichnen. Die Gleichungen können miteinander kmbiniert werden und ergeben somit die Fehlerlokalisiergleichung (FLG)
S3/S13+1=B/Si+(B/S1)2
welche zwei durch B dargestellte Wurzeln hat: z1 und z-'. Die linke Seite der Gleichung kann aus den Werten für S1 und S3 berechnet werden. Es lassen sich zwei Werte für B/S1 finden, welche die obengenannte Gleichung erfüllen. Dies kann beispielsweise durch Absuchen einer Tabelle geschehen.
709828/0 6 15
Ein Direktdecoder ist in Figur 3 wiedergegeben. Eine solche Ausführungsform ist vollständig kombinatorisch und erzeugt ein korrigiertes Codewort innerhalb eines Taktzyklus. Soweit nicht anderweit beschriftet, haben die Datenwege in den Zeichnungen eine Breite von m Bits. Im Fall des (16,7)-Codes ist m=4|und die Datenwege sind 4 Bits breit. Das vom Speicher empfangene Wort R enthält η Bits, welche parallel dem Syndromreeimer 30 zugeführt werden.
Die Decodierform der Matrix H für den (16,7)-Code ist in Figur 2a dargestellt. Figur 2b zeigt einen Svndromrechner 3O7 welcher diese Matrix verwendet. Er besteht aus 2m+1 Blöcken 20 bis 28. Das empfangene Wort R wird durch 16 Bits dargestellt, welche als übertragenes Codewort C die gleiche Notation verwenden, mit Ausnahme des Primärsymbols in der Darstellung für R. Die Primärsymbole zeigen, daß bei potentiellen Fehlern ein Bit des empfangenen Wortes R nicht dem entsprechenden Bit des übertragenen Wortes C gleichen kann. Jeder der Blöcke 21 bis 28 bewirkt eine Exklusiv-ODER-Verknüpfung seiner Eingangssignale, um das Ausgangssignal zu liefern. Die Blöcke 20 bis 23 erzeugen je eines der Signale S1 _ bis S1 3, wobei S1= s- Λ 21 - S1 o s.. ,
I/O I/ \ g\J I / ' ' t ^ If-J
Die Blöcke 24 bis 25 erzeugen Signale S3 Q bis s, ^ S3=[-So Q S3 1 S3 2 S3 3] " Der ^00^ 28 erzeugt das Paritäts-Prüfsignal s , indem er alle Bits des empfangenen Wortes R einer Exklusiv-ODER-Verknüpfung unterwirft.
Wie Figur 3 zeigt, erzeugt der Syndromrechner 30 ein Syndrom S1 und ein Syndrom S3, welche den Blöcken 32 bzw. 34 zugeführt werden, welche als Nicht-Null-Detektoren arbeiten. Ein Syndrom gleich Hull bedeutet, daß kein Fehler vorhanden ist. Ein Wert abweichend von Null zeigt an, daß ein Fehler festgestellt worden ist. Folglich erzeugt das ODER-Gatter 36 ein Fehlererkennungssignal.
709 828/0615
Bestimmte Spezialfehler müssen an dieser Stelle erkannt werden, weil der übrige Decoder sie nicht ordnungsgemäß verarbeiten kann. Zu diesen Fehlern gehören drei oder Mehr-Bitfehler, welche dazu führen, daß eines der Syndrome gleich Null ist und das andere ungleich Null. Das Exklusiv-ODER-Gatter 38 dient diesem Zweck und erzeugt ein Decodierfehlersignal. Andere Arten von Fehlern liegen außerhalb der Korrekturfähigkeit dieses Decoders. Ein 3 Bit-Fehler, welcher dazu führt, daß S1 und S3 von Null verschieden sind, wird von einem 1-Bitfehler unterschieden und durch ein entsprechendes 'Signal in einem anderen Teil des Decoders gekennzeichnet, der später noch in Verbindung mit dem Paritätsprüfsignal s beschrieben wird. Ein 4-Bitfehler, der zur Folge hat, daß S1 und S3 von Null verschieden sind, sieht wie ein 2-Bitfehler aus und wird als solcher unrichtig korrigiert. Ein 5-Bitfehler wird entweder falsch korrigiert als ob er ein 1-Bitfehler sei oder er bleibt unerkannt oder er führt zu einem Decodierfehler.
Das Syndrom S1 wird auch dem Umsetzer 40 zugeleitet, der dieses in das Syndrom S1 umwandelt. Im Ausführungsbeispiel mit m=4 enthält der Umsetzer 40 eine Tabellen-Absuch-Einrichtung, die im einzelnen anhand von Figur 4 beschrieben wird. Sie zeigt, wie die fünfzehn möglichen S1-Werte als Adresse für einen Festwertspeicher ROM verwendet werden können. Die Adresse 0000 wird nicht benutzt, da sie dem Zustand,daß kein Fehler vorhanden ist, entspricht. Der Inhalt des Festwertspeichers ROM besteht
_3
aus Worten, welche dem Syndrom S1 entsprechen. Alle Operationen werden Modulo m1(x) durchgeführt und führen zu Ergebnissen, welche Elemente des Galois-Feld GF (2 ) sind. Das Syndrom' S1 ist nicht für diesen Fall gekennzeichnet.
In Figur 3 entspricht der Block 60 einem Multiplizierer, der
_3 das Syndrom S3 von Syndromrechner 30 und das Syndrom S1 vom Umsetzer 40 erhält. Diese beiden Größen werden im Galois-Feld GF(2m) multipliziert und erzeugen ein Wort entsprechend S3/S1
709828/0615
Figur 6 zeigt einen Multiplizierer für zwei Elemente im Galois-
4
Feld GF (.2 ) . Dies stellt einen Spezialfall eines Multiplizierers dar, der zwei beliebige Elemente im Galois-Feld GF (2 ) multipliziert. Hinsichtlich der Arbeitsweise eines solchen Multiplizierers sei auf die eingangs erwähnte Parallelanmeldung verwiesen (vgl. dort insbesondere Fig. 1), deren Inhalt erforderlichenfalls zur Erläuterung heranzuziehen ist.
Der Multiplizierer gemäß Figur 6 erhält als Eingangssignale zwei Elemente von GF (2 ), welche durch 4-.-Bit-Eingangssignale F und G dargestellt sind. Der Multiplikand F besteht aus fQ/f1,f2,f3 mit fQ als niedrigstwertigem Bit. Der Multiplikator G weist Bits 90/9-]/92'^3 au'ff wobei gQ das geringstwertige Bit ist. F und G können als Polynome f(x) und g(x) angesehen werden. Die Blöcke 65 bis 6 7 haben den gleichen Aufbau. Sie multiplizieren ihre Eingangssignale mit χ und erzeugen ein Ergebnis Modulo m,. (χ) , welches folglich ebenfalls ein 4-Bit-Signal ist. Wie in der Parallelanmeldung für den allgemeinen Fall beschrieben wurde, können die Blocks 65 bis 67 leicht durch ein System von Torschaltungen realisiert werden. Beispielsweise läßt sich das Produkt χ f(x) darstellen als Bits ho,h.,h2,h3 mit hQ als geringstwertigem Bit. Der Block 65 schaltet die Signale wie folgt um: f.. nach h~ , f2 nach h3 und f ~ nach hQ sowie fQ und f3 durch das Exklusiv-ODER-Gatter 68 zur Erzeugung von h.. Die vier Bits von f(x) werden dem Block 161 zugeleitet, welcher jedes dieser Signale mit gQ verknüpft. Nur eines dieser Gatter ist in Fig. 6 wiedergegeben und mit 165 bezeichnet.Ih gleicherweise werden die vier Ausgangssignale der Blöcke 65,66 und 67 den Blöcken 162, 163 bzw. 164 zugeführt und mit den Signalen g^,g2,g3 verknüpft. Die Ausgangssignale der Blöcke 161 bis 164 sind der Einfachheit halber mit 1,2,3,4 bezeichnet. Alle vier Signale mit der Bezeichnung 1, d.h. die geringstwertigen Bits werden dem Block 61 eingegeben. In gleicher Weise gelangen die Signale 2,3 und 4 zu den Blöcken 62, 63 bzw. 64. Die Blöcke 61 bis 64 bewirken eine Exklusiv-ODER-Verknüpfung ihrer Eingangssignale und liefern Ausgangssignale k_
709828/0615
bis k3, wobei k das' geringstwertige Bit darstellt. Auf diese Weise ergibt sich, FxG = K.
Kehrt man nunmehr zu Figur 3 zurück, so muß jetzt eine "1" der Größe S3/S1 hinzugefügt werden, um die linke Seite der Fehlerlokalisiergleichung zu erhalten. Die Hinzufügung einer "1" entspricht dem Invertieren des geringstwertigen Bits einer Größe über G(2) - was durch den Inverter 45 ausgeführt wird. Diese neue Größe wird nunmehr zur Erzeugung der Größe B/S1 der Fehlerlokalisiergleichung benutzt; und zwar durch den Umsetzer 50. Wiederum wird als bevorzugte Ausführungsform des Umsetzers eine Tabellenabsucheinrichtung, beispielsweise über einen Festwertspeicher benutzt. Der Festwertspeicher für m=4 wird in Verbindung mit Figur 5 beschrieben. Das 4-Bit-Eingangssignal S3/S1 +1 kann als Adresse für den Festwertspeicher ROM 50 dienen. Die entsprechende Speicherstelle des Festwertspeichers ROM enthält
einen Wert B/S1, so daß B/S1+B/S1) gleich der durch die Fehlerlokalisiergleichung angegebene Adresse ist. Bei geeigneter Wahl des Generatorpolynoms n., (x) ist das höchstwertige Bit der als Speicher 51 dargestellten Adressgröße immer gleich Null. Auf diese Weise kann das höchstwertige Bit von der Adresse eliminiert werden und man benötigt nur ein 3-Bit-Eingangssignal. Ein kleinerer Festwertspeicher reicht aus. Die Eliminierung des höchstwertigen Bits aus der Festwertspeicheradresse hat weitere Vorteile. Insbesondere kann derjenige Teil des Multiplizierers 60, welcher das höchstwertige Bit MSB der Größe S3/S1 berechnet, d.h. der Block 64 mit der Leitung 4 und den entsprechenden Gattern, wegfallen. Wenn im allgemeinen Fall für m^4 der Wert m. (x) .derart gewählt würde, daß die geringstwertigen Bits immer gleich sind, so könnte derjenige Teil des Multiplizierers 60, der die geringstwertigen Bits LSB berechnet, also der Block 61, mit der Leitung 1 und den zugehörigen Gattern ebenso wegfallen wie der Inverter 45, welcher den Wert "1" zur LSB-Position addiert.
709828/061B
'te.
Die beiden Werte von B/S1 der Fehlerlokalisiergleichung unterscheiden sich nur um 1. Folglich sind die geringstwertigen Bits LSB des zugehörigen Speicherinhalts entweder "0" oder "1", je nachdem ob za/Si oder z-'/Sl dort gespeichert ist. Folglich kann diese als Spalte 56 gezeigte Position wegfallen und statt dessen wird eine "1" als LSB-Signal fest verdrahtet und die gesamte Größe beliebig mit ζ /S1 bezeichnet.
Der Speicherplatz für die Null-Adresse im Festwertspeicher und die ganz linke Ausgangsspalte 52 werden für den Sonderfall des Einzelbitfehlers verwendet. Die Adresse zum Festwertspeicher ROM ist Null,· wenn und nur wenn ein Einzelbitfehler im empfangenen Wort R vorhanden ist. Durch Laden des Nulladressen-Speicherplatzes des Festwertspeichers mit Werten überall "0" ergibt sich ein B/S1-Ausgangssignal 0001, da die Spalten 53, 54 und 55 den Wert "0" haben und der Wert "1" durch die Hardware zur Verfügung gestellt wird. Dies erzeugt die Größen z1 und τ? , welche übereinstimmen mit dem Fall des Einzelbitfehlers: Z1S=SI und z^=0. Die linke Spalte des Festwertspeichers wird zur Identifizierung eines Einzelbitfehlers benutzt. Durch Laden einer "0" in den Nulladressen-Speicherplatz und einer "1" in die am weitestens links liegenden Positionen aller übrigen Speicherplätze zeigt jene
mit Bitposition im Ausgang des Festwertspeichers einem von einem Einzelbitfehler abweichenden Fehlerzustand an. Dieses Signal wird über das UND-Gatter 58 in Figur 3 geleitet. Das Paritäts-Prüfsignal s aus dem Syndromrechner 30 zeigt eine ungerade Anzahl von Fehlern an. Die Kombination dieser beiden Signale identifizieren einen Dreibitfehler. Das Signal vom Gatter zeigt deshalb Fehler an, welche nicht korrigierbar sind. Eine "1" auf dieser Leitung läßt erkennen, daß das empfangene Wort R nicht korrigiert werden kann. Deshalb wird es zur Abschaltung der Decodiernetzwerke 75 und 85 benutzt, damit keine falsche Korrektur stattfinden kann. Das Dreifachfehler-Erkennungssignal steht anderen Teilen des Systems zur Verfügung.
In Figur 3 erhält der Multiplizierer 70 das Signal S1 vom Syndromrechner 30 sowie das Ausgangssignal vom Festwert speicher 50. Die im Festwertspeicher ROM gespeicherten Bits
709828/061 5
werden über die m-3 Leitungen 53,54..55 übertragen, hiervon das höchstwertige Bit über die Leitung 53. Eine von der Hardware zur Verfugung gestellte "1" kommt über die Leitung 57 an. Der Multiplizierer 70 multipliziert diese beiden Größsen miteinander und liefert als Ausgangssignal z' ,welches die erste der beiden Fehlerpositionen identifiziert. Der Multiplizierer 70 hat den gleichen Aufbau wie der oben erläuterte Multiplizierer 60. Da das Eingangssignal ζ /S1 des Multiplizierers 70 ein Bit "1" in der geringstwertigen Position hat, kann derjenige Teil des Multiplizierers, welcher das geringswertige Bit LSB von ζ verarbeitet, vereinfacht werden. Der Summierer ist ein Exklusiv-ODER-Netzwerk, welches die entsprechenden Bits von S1 und ζ addiert, um hieraus -z? abzuleiten, welches die zweite Fehlerposition kennzeichnet. Im Fall eines Einzelfehlers mit ΖΧ/31=Ο...01 gilt ZX=S1. Bei einem Einzelbitfehler wird S1 hinzuaddiert, wodurch sich z-=0 ergibt.
Die Werte ζ und ζ ■ werden in eines der Decodiernetzwerke 75 und 85 eingegeben, welche nach dem Prinzip "1 -Aus-(n-1 )H arbeiten. Das Paritätsbit wird nicht korrigiert. Die Decodierschaltung basiert auf der Decodiermatrix H gemäß Figur 2a. ζ und stehen in der oberen Hälfte der Spalten der H-Matrix, welche den fehlerhaften Bitpositionen entsprechen. Für den (16,7)-Code mit n=16 wird ein i-.aus- ^Decoder mit 15 Ausgangsleitungen benutzt, nämlich je einer für jedes Bit der Fehlerworte E1 und E2. Die Fehlerworte E1 und Ξ2 haben an allen Stellen "0", mit Ausnahme einer einzigen "1" in einer Fehlerposition. Für einen Einzelbitfehler ist Z^=O, woraus sich E2 zu Null ergibt. Die Fehlerworte E1 und E2 werden in den Summierer 90 gegeben und dem empfangenen Wort R hinzugefügt, dessen Paritätsbit p' nicht eingeschlossen ist-Man erzeugt hierdurch ein korrigiertes Wort C, welches kein Paritätsbit enthält und folglich n-1 Bits breit ist. Die Gesamtwirkung besteht in der Umschaltung der beiden fehlerhaften Bits im empfangenen Wort R entsprechend der Anweisung aus den Fehlerworten E1 und E2. Das korrigierte Codewort C steht am Ausgang des Summierers 90 zur Verfügung.
709828/0615
Der Direktdecoder gemäß der Erfindung kann in einer Hauptspeicheranordnung mit geeigneter Zykluszeit eingesetzt werden. Eine variable Zykluszeit, in welcher ordnungsgemäß empfangene Worte eine kürzere Fehlererkennungs- und -korrekturzeit benötigen als fehlerbehaftete Worte ist ebenfalls möglich. Die Erfindung offenbart somit eine Einrichtung zur direkten Decodierung und Korrektur von Zweifach-Bit-Zufallsfehlern pro Wort und zur Erkennung von Dreifachfehlern pro Wort. Sie umfaßt einen Syndromrechner, der aufgrund von Codeworten arbeitet, welche aus dem Speicher empfangen werden. Die erzeugten Syndrome werden mit Hilfe eines Umsetzers zur Bereitstellung einer Adresse eines Tabelleneingangs-Speicherplatzes verwendet. Die Tabelle enthält eine Ablesungseinrichtung zur Erzeugung von Hinweisadressen, welche die Position der fehlerhaften Bits kennzeichnen. Diese Hinweisadressen v/erden decodiert und erzeugen zwei Fehlerworte, welche an allen Stellen den Wert "0" aufweisen, mit Ausnahme derjenigen Bitpositionen, die fehlerbehaftet sind. Die Fehlerworte mit dem vom Speicher empfangenen Wort summiert, woraus sich das korrigierte Wort ergibt. Der gesamte Vorgang benötigt nur einen Taktzyklus. Der Syndromrechner liefert ferner ein Paritätsprüfsignal, welches in Verbindung mit einem Signal aus der Tabelle der Erzeugung eines Signales zur Anzeige eines Dreibitfehlers dient, welcher nicht korrigierbar ist. Ist ein Dreibitfehler vorhanden, so wird der Decoder abgeschaltet.
709828/0615

Claims (1)

  1. Patentansprüche
    /"1 J Einrichtung zum Erkennen und Korrigieren von Zwei-Bit-Fehlern in Codewörtern inbesondere in n-Bit-Codewörtern mit k Informationsbits, 2m Prüfbits und einem Paritätsbit,d.h. n=k+2m+1,gekennzeichnet durch
    a) einen das Codewort (R) empfangenden Syndromrechner (30) zur Berechnung einer ersten (S1) und eines zweiten Syndroms (S3) welche entsprechend einer Fehlerlokalisiergleichung (FLG) das Vorhandensein und die Position von Fehlern im Codewort feststellen;
    b) einer mit den beiden Syndromsignalen (S1,S3) beaufschlagten Umsetzeinrichtüng (40,60,50), welche Wurzelsignale (Z3YSI) entsprechend einer der Wurzeln der genannten Fehlerlokalisiergleichung (FLG) erzeugt;
    c) einen an die Umsetzereinrichtung (40,60,50) und den Syndromrechner (30) angeschlossenen, die genannten Wurzelsignale und das erste Syndromsignal (S1) empfangenden ersten Multiplizierer (70), welcher erste Signale (z1) zur Kennzeichnung einer ersten Fehlerstelle liefert;
    d) einen an den ersten Multiplizierer (70) und den Snydromrechner (30) angeschlossenen, die ersten Signale (z1) sowie das erste Syndromsignal (S1) empfangenden ersten Summierer (80), welcher zweite Signale (z ) entsprechend einer zweiten Fehlerstelle erzeugt;
    e) einen an den ersten Multiplizierer (70) angeschlossenen ersten Decoder (75) , welcher die ersten Signale (z1) decodiert und ein erstes Fehlerwort (E1) erzeugt, das nur an der der ersten Fehlerstelle entsprechenden Position den Wert "1" hat;
    709828/0815
    f) einen an den ersten Summierer (80) angeschlossenen zweiten Decoder (85), welcher die zweiten Signale (z ) decodiert und ein zweites Fehlerwort (EZ) erzeugt, das nur an der der zweiten Fehlerstelle entsprechenden Position den Wert "1" hat;
    g) einen an den ersten und den zweiten Decoder (75,85) angeschlossenen zweiten Summierer (90), welcher das erste und das zweite Fehlerwort (E1,E2) dem Codewort (R) hinzufügt und ein korrigiertes Codewort (C) erzeugt (Fig. 3).
    2. Einrichtung nach Anspruch 1, gekennzeichnet durch
    h) eine mit dem ersten Syndromsignal (si) beaufschlagte erste Detektorlogik (32), welche ein Ausgangssignal liefert, wenn das erste Syndrom' gleich Null ist;
    i) eine mit dem zweiten Syndromsignal (S3) beaufschlagte zweite Detektorlogik (34), welche ein Ausgangssignal erzeugt, wenn das zweite Syndrom gleich Null ist.
    j) ein an die beiden Dektorlogikschaltungen (32,34) angeschlossenes erstes Gatter (36) , welches ein Fehlererkennungssignal liefert, wenn wenigstens eines der beiden Syndrome von Null verschieden ist;
    k) ein ebenfalls an die beiden Detektorlogikschaltungen (32,34) angeschlossenes zweites Gatter (38), welches ein Decodierfehlersignal liefert, wenn nur eines der beiden Syndrome gleich Null ist.
    709828/0615
    * 3.
    Einrichtung nach Anspruch 1, gekennzeichnet durch
    1) eine mit den beiden Syndromen beaufschlagte erste Vorrichtung (40,60) zur Erzeugung eines dritten Signals (S3/S1 ) entsprechend dem Quotienten aus dem zweiten Syndrom (S3) und der dritten Potenz des ersten Syndroms (SD sowie
    m) eine hieran angeschlossene zweite Vorrichtung (50) zur Umsetzung des dritten Signals in das Wurzelsignal
    4. Einrichtung nach Anspruch 3, dadurch gekennzeichnet, daß die zweite Vorrichtung (50) Mittel (52) zur Erzeugung eines Mehrfachfehler-Signals enthält, welches das Auftreten von mehr als einem Fehler anzeigt.
    5. Einrichtung nach Anspruch 4, dadurch gekennzeichnet, daß der Syndromrechner (30) ferner ein Paritätsprüfsignal (Sp) erzeugt, welches einen Paritätsfehler im Codewort (R) anzeigt, und daß ein drittes Gatter (58) vorhanden ist, dem das Mehrfachfehler-Signal (52) und das Paritätsprüfsignal (Sp) zugeleitet werden und das ein Dreifachfehler-Signal erzeugt, welches als Sperrsignal dem dem ersten und dem zweiten Decoder (75,85) zugeleitet wird.
    6. Einrichtung nach einem der Ansprüche 3 bis 5, dadurch gekennzeichnet, daß die zweite Vorrichtung (50) eine Suchtabellenanordnung aufweist und die dritten Signale (S3/S1- ) als Adressen hierfür dienen, während die Wurzelsignale (Z1ZsD dem Inhalt der adressierten Speicherplätze entsprechen.
    709828/0 615
    - τ·
    Einrichtung nach einem der Ansrpüche 3 bis 6, dadurch gekennzeichnet, daß die erste Vorrichtung (40, 60) einen auf das erste Syndrom ansprechenden Umsetzer (40) zur Erzeugung eines der invertierenden dritten Potenz (S1 ) des ersten Syndroms (S1) sowie einen an den Umsetzer (40) und den Syndromrechner (30) angeschlossenen zweiten Multiplizierer (60) aufweist, welcher das zweite Syndrom (S3) und das vierte Signal (S1 ) als Elemente eines Galois-Feldes über ein Generatorpolynom (g(x)) multipliziert.
    8. Einrichtung nach Anspruch 7,dadurch gekennzeichnet, daß der Umsetzer (40) eine Suchtabellenanordnung aufweist.
    9. Einrichtung nach Anspruch 6 oder 8, dadurch gekennzeichnet, daß die Suchtabellenanordnung als Festwertspeicher (ROM) ausgebildet ist.
    709828/0615
DE19762657826 1975-12-29 1976-12-21 Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage Withdrawn DE2657826A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US05/645,056 US4030067A (en) 1975-12-29 1975-12-29 Table lookup direct decoder for double-error correcting (DEC) BCH codes using a pair of syndromes

Publications (1)

Publication Number Publication Date
DE2657826A1 true DE2657826A1 (de) 1977-07-14

Family

ID=24587474

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19762657826 Withdrawn DE2657826A1 (de) 1975-12-29 1976-12-21 Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage

Country Status (4)

Country Link
US (1) US4030067A (de)
JP (1) JPS5282154A (de)
BE (1) BE849911A (de)
DE (1) DE2657826A1 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3043100A1 (de) * 1979-11-15 1981-05-27 Nippon Electric Co., Ltd., Tokyo Datenprozessor mit datenkorrekturfunktion
EP0073979A1 (de) * 1981-09-03 1983-03-16 TELEFUNKEN Fernseh und Rundfunk GmbH System zur Übertragung digitaler Informationssignale

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5825294B2 (ja) * 1975-12-18 1983-05-26 富士通株式会社 3ジヨウカイロオシヨウシタエラ−テイセイカイロ
US4107652A (en) * 1975-12-27 1978-08-15 Fujitsu Limited Error correcting and controlling system
JPS52155658U (de) * 1976-05-21 1977-11-26
JPS5381036A (en) * 1976-12-27 1978-07-18 Hitachi Ltd Error correction-detection system
US4117458A (en) * 1977-03-04 1978-09-26 Grumman Aerospace Corporation High speed double error correction plus triple error detection system
US4100403A (en) * 1977-04-25 1978-07-11 International Business Machines Corporation Method and means for discriminating between systematic and noise-induced error in data extracted from word organized memory arrays
US4139148A (en) * 1977-08-25 1979-02-13 Sperry Rand Corporation Double bit error correction using single bit error correction, double bit error detection logic and syndrome bit memory
US4163147A (en) * 1978-01-20 1979-07-31 Sperry Rand Corporation Double bit error correction using double bit complementing
US4151510A (en) * 1978-04-27 1979-04-24 Honeywell Information Systems Method and apparatus for an efficient error detection and correction system
JPS5573909A (en) * 1978-11-28 1980-06-04 Matsushita Electric Ind Co Ltd Signal processor
US4236247A (en) * 1979-01-15 1980-11-25 Organisation Europeene De Recherches Spatiales Apparatus for correcting multiple errors in data words read from a memory
DE2925966C2 (de) * 1979-06-27 1982-10-28 Siemens AG, 1000 Berlin und 8000 München Verfahren und Anordnung zur automatischen Erzeugung eines Gültigkeitssignals für aus einem Speicher mit wahlfreiem Zugriff gelesene Datenworte
US4355391A (en) * 1980-03-31 1982-10-19 Texas Instruments Incorporated Apparatus and method of error detection and/or correction in a data set
GB2093238B (en) * 1981-02-18 1985-04-17 Kokusai Denshin Denwa Co Ltd Error correcting system for simultaneous errors in a code
JPS57155667A (en) * 1981-03-23 1982-09-25 Sony Corp Arithmetic circuit of galois matter
US4413339A (en) * 1981-06-24 1983-11-01 Digital Equipment Corporation Multiple error detecting and correcting system employing Reed-Solomon codes
EP0080528A1 (de) * 1981-11-30 1983-06-08 Omnet Associates Berechnungsverfahren und Gerät für Arithmetik endlicher Felder
US4509172A (en) * 1982-09-28 1985-04-02 International Business Machines Corporation Double error correction - triple error detection code
US4538270A (en) * 1983-04-04 1985-08-27 Motorola, Inc. Method and apparatus for translating a predetermined Hamming code to an expanded class of Hamming codes
ATE128585T1 (de) * 1983-12-20 1995-10-15 Sony Corp Verfahren und vorrichtung zur dekodierung eines fehlerkorrigierenden kodes.
US4589112A (en) * 1984-01-26 1986-05-13 International Business Machines Corporation System for multiple error detection with single and double bit error correction
US4617664A (en) * 1984-06-29 1986-10-14 International Business Machines Corporation Error correction for multiple bit output chips
US4604751A (en) * 1984-06-29 1986-08-05 International Business Machines Corporation Error logging memory system for avoiding miscorrection of triple errors
NL8403147A (nl) * 1984-10-16 1986-05-16 Philips Nv Dataverwerkingssysteem dat is opgebouwd uit drie dataverwerkingsmodules.
US4797848A (en) * 1986-04-18 1989-01-10 Hughes Aircraft Company Pipelined bit-serial Galois Field multiplier
US4979173A (en) * 1987-09-21 1990-12-18 Cirrus Logic, Inc. Burst mode error detection and definition
US5140595A (en) * 1987-09-21 1992-08-18 Cirrus Logic, Inc. Burst mode error detection and definition
US4890287A (en) * 1988-03-09 1989-12-26 Magnetic Peripherals Inc. On-the-fly error correction
USRE34088E (en) * 1988-03-09 1992-10-06 Seagate Technology, Inc. On-the-fly error correction
US5228046A (en) * 1989-03-10 1993-07-13 International Business Machines Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
CA2002361C (en) * 1989-03-10 1993-12-21 Robert M. Blake Fault tolerant computer memory systems and components employing dual level error correction and detection with disablement feature
US5040179A (en) * 1989-08-18 1991-08-13 Loral Aerospace Corp. High data rate BCH encoder
EP0470451A3 (en) * 1990-08-07 1993-01-20 National Semiconductor Corporation Implementation of the high-level data link control cyclic redundancy check (hdlc crc) calculation
US5291498A (en) * 1991-01-29 1994-03-01 Convex Computer Corporation Error detecting method and apparatus for computer memory having multi-bit output memory circuits
US5491702A (en) * 1992-07-22 1996-02-13 Silicon Graphics, Inc. Apparatus for detecting any single bit error, detecting any two bit error, and detecting any three or four bit error in a group of four bits for a 25- or 64-bit data word
US5434719A (en) * 1994-03-18 1995-07-18 Seagate Technology, Inc. Correction of header information in a magnetic disc drive
FR2814612B1 (fr) * 2000-09-26 2003-02-07 St Microelectronics Sa Code de detection et/ou de correction d'erreurs a haute efficacite
US6732325B1 (en) * 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US7634709B2 (en) * 2001-10-05 2009-12-15 Unisys Corporation Familial correction with non-familial double bit error detection
DE10243862A1 (de) * 2002-09-20 2004-04-01 Siemens Ag Verfahren und Anordnung zur Decodierung eines Codewortes, eines drei Bitfehler korrigierenden, binären Bose-Chauduri-Hocquenghem Codes
US7275201B1 (en) * 2005-04-13 2007-09-25 Emc Corporation Memory system
US20080052598A1 (en) * 2006-08-09 2008-02-28 Aksamit Slavek P Memory multi-bit error correction and hot replace without mirroring
US7694207B1 (en) * 2006-09-25 2010-04-06 The United States Of America As Represented By The Director, National Security Agency Method of decoding signals having binary BCH codes
US7734991B1 (en) * 2007-01-04 2010-06-08 The United States Of America As Represented By The Director, National Security Agency Method of encoding signals with binary codes
DE102010006876B4 (de) 2010-02-04 2012-10-31 Infineon Technologies Ag Verfahren und Vorrichtung zur Kodierung von Daten
JP2011165026A (ja) * 2010-02-12 2011-08-25 Toshiba Corp エラー検出訂正システム
JP2013523043A (ja) 2010-03-22 2013-06-13 エルアールディシー システムズ、エルエルシー ソースデータセットの完全性を識別及び保護する方法
DE102011078645A1 (de) * 2011-07-05 2013-01-10 Robert Bosch Gmbh Verfahren zum sicheren Prüfen eines Codes
US9444580B2 (en) 2013-08-06 2016-09-13 OptCTS, Inc. Optimized data transfer utilizing optimized code table signaling
US10523490B2 (en) 2013-08-06 2019-12-31 Agilepq, Inc. Authentication of a subscribed code table user utilizing optimized code table signaling
US9455799B2 (en) 2013-08-06 2016-09-27 OptCTS, Inc. Dynamic control of quality of service (QOS) using derived QOS measures
US10056919B2 (en) 2014-07-02 2018-08-21 Agilepq, Inc. Data recovery utilizing optimized code table signaling
US9800271B2 (en) 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
US10193574B1 (en) 2016-05-19 2019-01-29 Apple Inc. Efficient syndrome calculation in processing a GLDPC code
JP2019518397A (ja) 2016-06-06 2019-06-27 アジャイルピーキュー, インコーポレイテッド データ変換システムおよび方法
JP2018074545A (ja) * 2016-11-04 2018-05-10 富士通株式会社 データ処理システム及びデータ処理装置
RU2704499C1 (ru) * 2018-11-22 2019-10-29 Федеральное государственное автономное образовательное учреждение высшего образования "Санкт-Петербургский государственный университет аэрокосмического приборостроения" Декодер кода Боуза-Чоудхури-Хоквингема с каноническим декодером Хэмминга

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3685014A (en) * 1970-10-09 1972-08-15 Ibm Automatic double error detection and correction device
US3697948A (en) * 1970-12-18 1972-10-10 Ibm Apparatus for correcting two groups of multiple errors
US3714629A (en) * 1971-06-01 1973-01-30 Ibm Double error correcting method and system
US3755779A (en) * 1971-12-14 1973-08-28 Ibm Error correction system for single-error correction, related-double-error correction and unrelated-double-error detection
US3958220A (en) * 1975-05-30 1976-05-18 International Business Machines Corporation Enhanced error correction

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3043100A1 (de) * 1979-11-15 1981-05-27 Nippon Electric Co., Ltd., Tokyo Datenprozessor mit datenkorrekturfunktion
EP0073979A1 (de) * 1981-09-03 1983-03-16 TELEFUNKEN Fernseh und Rundfunk GmbH System zur Übertragung digitaler Informationssignale

Also Published As

Publication number Publication date
BE849911A (fr) 1977-04-15
JPS5282154A (en) 1977-07-09
US4030067A (en) 1977-06-14

Similar Documents

Publication Publication Date Title
DE2657826A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur im speichersystem einer dv-anlage
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE3879493T2 (de) Verfahren und geraet zur fehlerkorrektur.
DE60001370T2 (de) Verfahren und vorrichtung zur erkennung von doppelbitfehlern und korrektur von fehlern durch bauelementfehler verursacht
DE102011085602B4 (de) Vorrichtung und Verfahren zum Korrigieren zumindest eines Bitfehlers in einer codierten Bitsequenz
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE2425823A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur
DE3231956A1 (de) Anordnung zum uebertragen von binaerdaten ueber eine vielzahl von kanaelen mit hilfe eines faltungscodes
DE3882223T2 (de) Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.
EP0545498B1 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE2217935C3 (de) Anordnung und Verfahren zur Korrektur von Doppelfehlern in einer Nachricht
DE69327683T2 (de) Erweitertes fehlergeschütztes Kommunikationssystem
DE2262070A1 (de) Mit schieberegistern arbeitendes fehlerkorrektursystem
DE19922253A1 (de) Kodiervorrichtung für RAID-6-Systeme und Bandlaufwerke
DE102005022107B9 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE3404417A1 (de) Codierer-pruefschaltungsanordnung
DE69524430T2 (de) Crc/epc prüfsystem
DE3882175T2 (de) Fehlerkorrektur-Kode für einen B-bit-pro-Chip-Speicher mit verminderten Redundanz.
DE102021109391B3 (de) Multibytefehler-Erkennung
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE1774225A1 (de) Fehlerkorrekturschaltung
EP0073979B1 (de) System zur Übertragung digitaler Informationssignale

Legal Events

Date Code Title Description
8110 Request for examination paragraph 44
8130 Withdrawal