DE2260850A1 - Fehlerkorrektursystem - Google Patents

Fehlerkorrektursystem

Info

Publication number
DE2260850A1
DE2260850A1 DE2260850A DE2260850A DE2260850A1 DE 2260850 A1 DE2260850 A1 DE 2260850A1 DE 2260850 A DE2260850 A DE 2260850A DE 2260850 A DE2260850 A DE 2260850A DE 2260850 A1 DE2260850 A1 DE 2260850A1
Authority
DE
Germany
Prior art keywords
bits
bit
data
syndrome
error
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE2260850A
Other languages
English (en)
Other versions
DE2260850C2 (de
Inventor
Donald Walter Price
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE2260850A1 publication Critical patent/DE2260850A1/de
Application granted granted Critical
Publication of DE2260850C2 publication Critical patent/DE2260850C2/de
Expired 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
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

Böblingen, den 7. Dezember 19 72
Anmelderin: International Business Machines
Corporation, Armonk, N.Y. 10504
Amtliches Aktenzeichen: Neuanmeldung Aktenzeichen der Anmelderin: KI 970 012
Fehlerkorrektursystem
Die Erfindung betrifft ein System zur Korrektur von Einzelfehlern und zusammengehörenden Doppelfehlern und zur Erkennung nichtzusammengehörender Doppelfehler in einem Speicher entstammendeh
Bitfolgen.
Bis vor kurzem wurde in der Computerindustrie als Hochgeschwindigkeits-Arbeitsspeicher fast ausschließlich der Magnetkernspeicher verwendet. Herstellungs- und Prüfverfahren bei einem Kernspeicher sind jetzt so ausgefeilt, daß kaum noch .ein Kernspeicher die Produktion verläßt, der nicht hundertprozentig benutzbar ist. Der Hauptgrund dafür liegt darin, daß jeder einzelne Magnetkern gesondert geprüft wird, bevor er in den Speicher eingesetzt wird. Daher sind Fehler an einem einzelnen eingebauten Magnetkern ziemlich ungewöhnlich. Die normalerweise auftretenden Fehlerarten betreffen eine ganze Zeile oder Spalte des Speichers und sind gewöhnlich auf beim Betrieb des Speichers auftretende Fehler in der Verdrahtung oder in den Treiberschaltungen zurückzuführen und erfordern eine vollständige Neuherstellung oder einen Ersatz des Speichers.
Die Einführung eines neuen Speichertyps mit hunderten -von Datenstellen auf einem einzigen integrierten Halbleitersubstrat brachte jedoch vollkommen verschiedene Problemstellungen mit sich. Bei diesen.Speichern, ist es praktisch unmöglich, einzelne Transistoren
309825/1058
oder Datenstellen während des komplizierten Herstellungsverfahrens schrittweise zu prüfen. Die allgemein benutzten Prüfverfahren werden im letzten Verfahrensschritt angewandt oder sehr häufig auch nach Abschluß der Herstellung. Außerdem ist es nicht möglich, einen fehlerhaften Schaltkreis physikalisch zu entfernen, wenn ein solches Speicherplättchen einmal in Betrieb ist. Man muß daher aus Gründen der Herateilungskosten und des Wettbewerbs mit anderen Speicherarten eine bestimmte Anzahl von Datenbitfehlern in einem Plättchen in Kauf nehmen.
Eine Möglichkeit zur Korrektur solcher Fehler besteht in der Verwendung von Fehlerkorrekturcodes wie z.B. dem bekannten. Hamming-Code. Bei diesem Verfahren werden einem dem Speicher entnommenen Datenwort zusätzliche Bits hinzugefügt und durch logisches Kombinieren der Datenbits mit den zusätzlichen oder Prüfbits kann festgestellt werden, ob ein dem Speicher entnommenes Datenwort fehlerhaft ist. oder nicht und ob im Fehlerfall der Code den Fehler korrigieren kann.
So ist beispielsweise im USA-Patent 3 648 239 ein Speichersystem beschrieben, bei dem eine Codierung zur Korrektur von Einzelfehlern und zur Erkennung von Doppelfehlern benutzt wird. In der Patentschrift sind die Schaltungen angegeben, die benötigt werden, um die für die Korrektur erforderlichen Syndrombits zu erzeugen.
Die Verwendung von Codes, die es gestatten, Einzelfehler zu korrigieren und Doppelfehler zu erkennen, im folgenden kurz als EFK/ DFE-Codes bezeichnet, zur Erhöhung der Zuverlässigkeit des Speichers ist sehr beliebt. Diese Erhöhung ist besonders groß, wenn der Speicher so organisiert ist, daß jedes Bit eines Wortes sich auf einem anderen Modul befindet. Bei einer solchen Organisation wird der eine große Speicher ersetzt durch eine Anzahl kleiner Unterspeicher, von denen jeder mit einem unabhängigen Satz von Treiberund Leseschaltungen ausgerüstet ist. Jede Speicherzelle für ein gegebenes Codewort (Datenbits und Prüfbits) wird aus einem anderen Basisbetriebsmodul (BBM) ausgewählt. Bei einer Organisation von
KI 970 012
309825/1058
einem Bit pro BBM ist es sehr wahrscheinlich, daß ein Fehler in einer Datenstelle eines Codewortes willkürlich ist und mit den anderen Datenstellen in dem Codewort keinerlei Zusammenhang hat. Somit arbeitet ein konventioneller Hamming EFK/DFE-Code vollkommen zufriedenstellend.
Nach der neuesten Entwicklung werden beim BBM-Speicher zwei und nicht nur ein Bit pro BBM gespeichert. Das ist besonders vorteilhaft bei großen Speichersystemen, die als Basisbetriebsmoduln HaIbleiterplättchen mit integrierter Schaltung verwenden. Für ein gegebenes Codewort werden bei einem Speicher, bei dem sich 2 Bits auf einem Basisbetriebsmodul befinden, nur die Hälfte der HaIbleiterplättchen benutzt. Außerdem ist die auch auf dem HaIbleiterplättchen befindliche Decodierschaltung für einen Speicher mit 2 Bits pro Basisbetriebsmodul weniger komplex.
Diese Verbesserung war jedoch nicht ohne einen entsprechenden Nachteil möglich, weil die Möglichkeit, nur Einzelfehler zu korrigieren, nicht ausreicht. Bei einer Speicherorganisation, bei der sich 2 Bits auf einem Basisbetriebsmodul befinden, ist es sehr wahrscheinlich, daß die defekte Schaltung, die einen Fehler in einem der Bits eines Halbleiterplättchens hervorruft, auch einen Fehler im anderen Bit erzeugt. Mit anderen Worten ist es also sehr wahrscheinlich, daß bei Auftreten eines Fehlers er in beiden zusammengehörenden Bits auftritt. Außerdem ist es auch wahrscheinlich, daß Einzelfehler willkürlich auftreten, es ist jedoch sehr unwahrscheinlich, daß willkürliche Doppelfehler auftreten, d.h. Fehler die im selben Codewort in zwei Bits auftreten, die nicht zusammengehören.
Der Erfindung liegt daher die Aufgabe zugrunde, ein Fehlerkorrektursystem anzugeben, mit der zuverlässig Einzelfehler und zusammengehörende Doppelfehler korrigiert und nicht zusammengehörende Doppelfehler erkannt werden können.
KI 970 O12
309825/ 1 058
Diese Aufgabe wird gelöst mit einem System zur Korrektur von Einzelfehlern und zusammengehörenden Doppelfehlern und zur Erkennung nicht zusammengehörender Doppelfehler in einem Speicher entstammenden Bitfolgen, von denen jede aus einer vorgegebenen Anzahl von Paaren zusammengehörender Informationsbits und Prüfbits besteht, das gekennzeichnet ist durch einen Syndromgenerator, dem die dem Speicher entnommene Bitfolge zur Erzeugung von Fehler anzeigenden Syndrommustern zugeführt wird, einen an den Syndromgenerator angeschlossenen Syndromdecodierer, der die Syndrommuster decodiert, um einen Einzelfehler und Fehler in einem Paar zusammengehörender Bits zu lokalisieren und Fehler in nichtzusammenhängenden Bits zu erkennen, und eine mit dem Syndromdecodierer verbundene Korrekturschaltung zur Korrektur des bzw. der fehlerhaften Informationsbits.
KI 970 012
309825/ 1058
2280850
Ein Ausführungsbeispiel dex Erfindung ist in den Zeichnungen dargestellt und wird anschließend näher beschrieben. Es'zeigen:
Fign. 1 und 2 ein Blockschaltbild eines Rechnersystems, in
welchem die vorliegende Erfindung angewendet wird,
Fig. 3 eine Paritätsprüf matrix für ein (n = 77, i = 64)
Codewort, das im Ausführungsbeispiel verwendet wird,
Fig. 4 das Schaltbild eines Syndromgenerators für eines
• der Prüffelder der Paritätsprüfmatrix der Fig.3,
Fig. 5 in einem Blockschaltbild das Ausführungsbeispiel
des in Fig. 1 allgemein gezeigten Syndromdecodierers,
Fig. 6 ein Schaltbild der in Fig. 5 gezeigten Syndrom-
gruppierungsschaltungen,
Fig. 7 ein Schaltbild der in Fig. 5 gezeigten Decodier-
schaltungen,
Fig. 8 ein Schaltbild der in Fig. 5 gezeigten Generatoren
für die korrigierten Daten und der in Fig. 1 gezeigten Datenkorrekturschaltungen,
Fig. 9 ein Schaltbild der in Fig. 5 dargestellten Fehleranzeigelogik, und
Fign. 10 und 11 Schaltbilder bestimmter Abschnitte des in Fig. 2
gezeigten Prüfbitgenerators„
Vor der Beschreibung der Figuren wird zunächst das Fehlerkorrektur-Codesystem (FKC-System) der Erfindung allgemein beschrieben. Dieses System korrigiert Einzelfehler, zusammenhängende Doppelfehler und
KI 970 012
309825/1058
erkennt nichtζusairanenhangende Doppelfehler. Das FKC-System arbeitet mit Daten, die vom Hauptspeicher abgerufen werden und mit Daten, die in den Hauptspeicher gesetzt werden.
Das verwendete FKC-System arbeitet mit Redundanz. Eine binäre Informationsfolge kann so codiert werden, daß ein Decodierer die ursprüngliche Information aus der Codierfolge mit einem hohen Grad von Zuverlässigkeit, wiedergewinnen kann, trotz während der übertragung von und zum Speicher möglicherweise auftretender Fehler. Diese FKC-Systeme benutzen im allgemeinen das Konzept der Paritätsprüfziffer, bei welchem ein Paritätsprüfbit jeder redundanten Informationsgruppe hinzugefügt wird.
Das Prüfbit für jede redundante Gruppe wird systematisch durch Summierung über ausgewählten Datenstellen in der Informationsfolge errechnet, um die Summe der Informations- und Prüfziffern entsprechend einer vorgegebenen Entscheidung gerade (oder ungerade) zu machen. In der Codiersprache erhalten die gewählten Datenstellen einen Elementwert von 1 zugeordnet; die nichtgewählten Stellen erhalten einen Elementwert O zugeordnet. Im allgemeinen unterscheiden sich die Datenstellen in einer Redundanzgruppe von den Stellen in jeder anderen Gruppe.
Auf dem Weg der aus dem Hauptspeicher abgerufenen Daten empfängt das FKC-System ein aus einem Datenfeld und einem Eingabe-FKC-Feld (Paritätsprüfziffer) bestehendes Codewort. Fig. 1 zeigt diesen Datenweg. Ein Syndromgenerator erzeugt ein Syndrombitfeld aus den codierten Daten und dem FKC, welches genauso groß ist wie das FKC-FeId. Dieses FKC-FeId kann man sich als Syndrom-Fehler-Vektor (SFV) vorstellen, bei dem jede Vektorposition einem erzeugten Syndrombit entspricht. Ein Syndrombit Si ist das Bit, welches aus dem Vergleich eines Prüfbits im Eingabe-FKC-Feld aus dem Hauptspeicher mit einem entsprechenden Prüfbit des FKC-Feldes resultiert, welches im FKC-System aus dem Datenfeld erzeugt wurde. Verschiedene auf verschiedenen Codewörtern erzeugte SFV-Muster bezeichnen bestimmte Fehlertypen.
KI97O°12 309825/1058
22S0850
Der SFV durchläuft dann verschiedene Decodierbereiche für die Fehlererkennung, Korrektor von Einzelfehlern- und zusammenhängenden Doppelfehlern und Erkennung nichtzusammenhängender Doppelfehler. Der Decodierer erzeugt eine Datenkorrekturbitanzeige für jedes Datenbit, welches zu korrigieren ist. Eine Fehleranzeigelogik-Einheit im Decodierer erzeugt entweder eine Nachricht "Kein Fehler," "Korrigierbarer Fehler" oder "Nichtkorrigierbarer Fehler".
Die Korrekturbitanzeige läuft zusammen mit dem nichtkorrigierten Datenfeld in eine Datenkorrekturschaltung und das Feld wird korrigiert, wenn ein Korrekturbit erzeugt wurde.
Auf dem Weg zum Hauptspeicher empfängt ein Prüfbitgenerator oder Codierer, der ein Unterabschnitt des FKC-Systems ist, das Datenfeld. Nach der Darstellung in Fig. 2 werden die Datencodes, das FKC-Prüffeld und die resultierenden Daten und FKC-Prüfbits in den Hauptspeicher zurückgesetzt.
Das in Fig. 1 gezeigte Rechnersystem verfügt über einen Hochgeschwindigkeits-Hauptspeicher.100, der einen Satz von Basisbetriebsmoduln enthält, die als BBM 0, BBM 1 usw. bis BBM 31 bezeichnet sind und Signale erzeugen, welche im Rechner zu benutzende Datenbits darstellen. Der Speicher umfaßt außerdem BBM A... BBM G, die die Prüfbits Cl, ... C12 und CT speichern, welche im Codiersystem benutzt werden. Im Ausführungsbeispiel wird berücksichtigt, daß jeder Basisbetriebsmodul, im folgenden kurz als BBM bezeichnet, aus einem Halbleiterplättchen besteht', welches eine Matrixanordnung von Transistor-Flipflops enthält, von denen jedes zwei Signale erzeugen kann, die ein O-Bit und ein 1-Bit anzeigen. Solch eine Anordnung ist allgemein bekannt und enthält außerdem Wort- und Bittreiberschaltungen sowie Abfrageverstärker nebst den übrigen Schaltungen, die zu einem solchen System gehören.
Die Erfindung ist nicht auf ein System der gezeigten Art beschränkt. Der .BBM kann eine diskrete Anordnung von Kondensatoren oder Dioden auf Karten enthalten. Außerdem können die Moduln eine
KI 970 012
309825/1058
Magnetkernanordnung umfassen, wie sie in der US-Patentschrift Nr. 3 436 734 beschrieben ist. Die vorliegende Erfindung ist nicht auf ein System beschränkt, in welchem zwei Datenbits aus demselben Modul kommen. Die breiteste Anwendung findet die Erfindung in einem Datensystem, wo ein Datenbit in einer solchen Beziehung zu einem anderen Datenbit in dem Codewort steht, das mit einiger Wahrscheinlichkeit ein Fehler im ersten Datenbit auch einen Fehler im zweiten Datenbit bedeutet.
Der Hochgeschwindigkeitsspeicher 100 in Fig. 1 wird auf übliche Weise durch den Adressendecbdierer 102 in Verbindung mit der übrigen, der Einfachheit halber nicht dargestellten Schaltung adressiert und schreibt entweder Informationsbits an jede Datenstelle in den BBM's oder liest die Information für einen Datenprozessor aus. In Fig. 1 wird der Decodierer zu letzterem Zweck benutzt und die Daten für ein gewähltes Codewort sowie die zugehörigen Prüfbits werden zuerst in das Eingaberegister 103 gesetzt. Das Eingaberegister erhält die Daten- und Prüfbits in paralleler Form zur Eingabe in das Fehlerkorrektursystem. Die Ausgabe aus dem Register wird in konventioneller Weise durch Taktimpulse bewirkt und die Datenbits und Prüfbits zu diesem Zeitpunkt parallel zum übrigen System übertragen. Die Datenbits O bis 63 werden durch .das Kabel 104 zum Knotenpunkt 106 übertragen. In bestimmten Abschnitten dieser Beschreibung steht vor den Datenbitzahlen der Klarheit halber der Buchstabe "d". So kann z.B. das Datenbit 0 geschrieben werden als d(0), das Datenbit 63 als d(63) usw. Diese Ausdrücke werden abwechselnd benutzt.
Jetzt wird angenommen, daß Daten- oder Prüfbits Fehler enthalten, die gemäß der vorliegenden Erfindung korrigiert und/oder erkannt werden sollen. Bedingt durch die Systemumgebung sind die zusammengehörigen Datenbits 0 - 32, 1 - 33, ... 31-63 oder die zusammengehörigen Prüfbits Cl - C2... CIl - C12, wahrscheinlich beide fehlerhaft, wenn ein Fehler in den Abfrageleitungen, den Bitleitungen oder Treiberschaltungen in den entsprechenden BBM's vorliegt. Eine beträchtliche Wahrscheinlichkeit für das Auftreten
KI 970 012
309825/1058
eines Einzelfehlers in einem der Daten- oder Prüfbits ist ebenfalls gegeben. Die Wahrscheinlichkeit, daß Fehler in zwei nichtzusammengehörigen Bits auftreten, z.B. Bit O und Bit 34 oder Bit 31 und Bit CIl ist wesentlich geringer. Somit werden die Einrichtungen des betrachteten Fehlerprüf- und Korrektursystems jeden Einzelfehler und jeden zusammengehörigen Doppelfehler korrigieren, der im Codewort auftreten kann. Außerdem erkennt das System jeden nichtzusammenhängenden Dopelfehler im Codewort.·
Die Signale von den Stellen O bis 63 werden auf dem Kabel 107 zum Syndromgenerator 109 geleitet. Signale von den PrufbitsteIlen Cl bis CT werden parallel über das Kabel 105 zum Syndromgenerator geleitet. Der Syndromgenerator ist ein Codierer, der das Daten- und Prüfbitfeld verarbeitet und Syndrombits errechnet. Im Ausführungsbeispiel ist das Syndrommuster 13 Bits lang, wobei die Bits mit Sl, S2... S12 und ST notiert sind.
Die Syndrombits werden über Kabel 110 zum Syndromdecodierer 112 übertragen, welcher anzeigt, ob ein Fehler im Codewort vorliegt oder nicht, ob der Fehler korrigierbar ist, d.h.. ob es ein Einzelfehler oder ein zusammengehöriger Doppelfehler ist, oder ob der Fehler nicht korrigierbar ist, d.h. ob es ein nichtzusammengehöriger Doppelfehler ist. Wie später noch genauer beschrieben wird, wird all dies abgeleitet von der Feststellung der von dem Syndrombitmuster gezeigten Symmetrie. Das Syndrommuster liefert auch Anzeigen der verschiedenen Fehlerarten, die im System erkannt werden können. Der Decodierer erzeugt Anzeigen richtiger Bits auf dem Kabel 113, die zur Datenkorrekturschaltung 114 übertragen werden. Die Datenkorrekturschaltungen enthalten einen Satz von Modulo 2-Addierern, die im wesentlichen die von dem Eingangsregister über das Kabel 108 übertragenen nichtkorrigierten Daten mit den Anzeigen der korrigierten Bits vergleichen. Das Ergebnis am Ausgang der Datenkorrekturschaltungen ist ein richtiges Datenwort, welches die ersten 64 Bits des Codewortes umfaßt. Die Daten werden dann über das Kabel 116 zum Datenprozessor 120 übertragen.
KI 970 012
309825/1058
Wenn der Datenprozessor ein bestimmtes korrigiertes Codewort nicht mehr braucht, sendet er das korrigierte Codewort über das in Fig. 2 gezeigte Kabel 121 zu einem Register 122, welches ähnlich funktioniert wie das Register 103. Das 64 Bit große Datenwort wird über das Kabel 123 zum Knotenpunkt 124 geleitet, wo es sowohl dem BBM O bis 31 des Hochgeschwindigkeitsspeichers 100 als auch dem Prüfbitgenerator 128 zugeleitet wird. Der Prüfbitgenerator ist ein die Daten verarbeitender Codierer, welcher die Prüfbits Cl bis CT errechnet, die dann den entsprechenden Positionen in den BBM A bis G zugeleitet werden. Der Eingang zu den Moduln wird durch die Steuerlogik 130 und den in Fig. 1 gezeigten, in Fig. der Klarheit halber weggelassenen Adressendecodierer gesteuert.
Fig. 3 zeigt die Anlage einer Paritätsprüfmatrix und den neuartigen Code der Erfindung. Die "H-Matrix", wie sie allgemein genannt wird, umfaßt einen Datenfeldteil des Codewortes und einen Prüfteil. Im vorliegenden Ausführungsbeispiel umfaßt das Datenfeld 64 Bits, d (0) bis d (63) und das Prüffeld 12 Prüfbits, Cl bis C12, und ein Gesamtparitätsbit CT. Jedem Bit des Codewortes wird ein Spaltenvektor in H mit der Dimension r χ 1 zugeordnet.
Die Prüfbits sind den r = 13 Spaltenvektoren zugeordnet, die Prüfsyndromspaltenvektoren (PSSV) genannt werden. Diese PSSV Cl bis C12 bilden eine Einheits-Untermatrix (r-1) χ (r-1), die in Fig. 3 unter der Überschrift "Prüfbitstellen" wiedergegeben ist. Die r-te Zeile der Matrix, die Gesamtparitäts-Zeile enthält nur Einsen. Jede Position in einem PSSV entspricht einer bestimmten Zeile von H. Der einfacheren Notierung halber sind die PSSV Spaltenstellen Cl bis CT bezeichnet durch ihre entsprechende Zeile i, worin 1 _< i <_ r = T ist.
Den Datenfeldbits d (0) bis d (63) des Codewortes werden n-r = £ Spaltenvektoren zugeordnet, die Datensyndromspaltenvektoren (DSSV) genannt werden und eine r χ A Untermatrix in diesem Teil von H bilden. Jede Stelle in einem DSSV entspricht ebenfalls einer be-
Ki 970 012 309825/1058
2280850
stimmten Zeile von H.
Die Syndrombits Sl bis S12 werden nach der folgenden Gleichung erzeugt:
Si =
Σ
J=O
ί Ci
worin d (j). die DatenbitsteHe in einer Spalte j ist, die ein Zeiphen 1 in einer gegebenen Zeile i enthält; Ci das Prüfbit für die Zeile i; Σ die Modulo 2-Summe über der Zeile i; und Ξ die Modulo 2-Summe ist.
Das Syndrombit Sl kann so z.B. errechnet werden durch Modulo 2-Addition über der Zeile 1 der Matrix nach folgendem Muster:
Sl = d(O) id(l) i d(2) 4
d(16) 4 i d(23)£
d(39) i d(47) i d(48)
ί d(7) i d(15) £
d(32) ^d(33) t
:....* d(55) i Cl.
Das Syndrombit ST wird über allen Daten- und Prüfbits erzeugt:
ST =
Σ
J=O
Ci
Für den Fall, in welchem kein Fehler vorliegt, ist es in der Codierung üblich, das Prüfbit Cl so zu wählen, daß Sl gleich O ist, usw. für alle Syndrombits. Somit bezeichnet der Syndromfehlervektor (SFV) der Gleichung 4, wenn er lauter Nullen enthält, die fehlerfreie Bedingung für ein Codewort.
KI 970 012
3 09825/1058
SFV =
Sl = O
S2 = O
S3 = O
S4 = O
S5 = O
S6 = O
S7 = O
S8 = O
S9 = O
SlO = O
SIl = O
S12 = O
ST = O
Die Η-Matrix der Fig. 3 ist eindeutig, weil sie die folgenden Eigenschaften hat:
1. Jeder Einzelfehler oder zusammenhängende Doppelfehler im Codewort resultiert in einem bestimmten von 0 verschiedenen SFV, der die Erkennung und Korrektur des Fehlers gestattet.
2. Ein nichtzusammenhängender Doppelfehler resultiert in einem SFV, welcher von O verschiedene Bits an anderen Stellen als der im Absatz 1 erwähnte SFV enthält, läßt sich aber grundsätzlich nicht unterscheiden von einem SFV, welcher aus einem , anderen nichtzusammenhängenden Doppelfehler resultiert.
Die Η-Matrix ist aus den in der nachfolgenden Tabelle I aufgeführten Elementen folgendermaßen aufgebaut:
KI 970 012
309825/ 1058
Tabelle I
Konstruktion der H-Matrix
Daten-Bitpositionen
Prüfbitpositionen r
1/2
i
EFK I EFK
I
' ■ I
Code i Code I
für Jl /2 Datenbits 1 (wiederholt) j (r-l)x(r-l)
i
I
.. 1 . _
I Einheits-
I matrix
Minimalgewicht-3-Spalten EFK Code i
I
j ' -
für 1/2 Datenbits - "verteilt" über I
Datenbits I
I
Feld für Gesamtparitätsprüfung I 1 χ r
Matrix
I
Nach der Darstellung in Tabelle I umfaßt die H-Matrix:
A) Einen Einzelfehlerkorrektur-Code (EFK-Code), für 1/2 Datenbits im Codewort, der für die andere Hälfte des Codewortes wiederholt wird. Der Ausdruck "Wiederholung·" soll hier bedeuten, daß für jede Datenbitstelle im Codewort nur eine andere Datenbitsteile mit demselben DSSV vorhanden ist. Diese Bits sind zusammenhängend. Im Ausführungsbeispiel wird nach Darstellung in Tabelle I der EFK-Code gebildet für die ersten 1/2 Datenbits und für die zweiten 1/2 Datenbits wiederholt. Diese Form dient nur der graphischen Einfachheit, die zusammenhängenden Bits, d.h. die Bits mit demselben DSSV, können natürlich jede Spalte
KI 970 012
309825/1058
in der Matrix belegen.
B) Einen EFK-Code für die ersten 1/2 Datenbits, dessen Spaltenvektoren das Minimalgewicht 3 haben. Der Code wird dann über das ganze Feld von i Datenbits ausgedehnt. Der Ausdruck "ausdehnen" ist für jedes Matrixelement durch die folgende Gleichung definiert:
Ci(J)1 Ϊ d(j + A/2)± = a(j)± (5)
worin ä(j). ein Element des Codes mit dem Minimalgewicht 3 für die 1/2 Datenbits (des Originalcodes); ist, d(j). und d(j + 1/2). zusammenhängende Elemente in dem Feld aus % Bits (des erweiterten Codes) abgeleitet von Gleichung (5) sind.
C) Ein Feld ST zur Gesamtparitätsprüfung für die Erkennung nichtzusammengehörender Doppelfehler.
Wiederholter EFK-Code
Die nachfolgende Tabelle II bringt ein Beispiel für einen Einzelfehlerkorrektur-Code nach Art des Hamming-Codes, der sich beim Ausführungsbeispiel der Erfindung bewährte. Dieser Code, als Calvert-Code bekannt, hat dieselben Merkmale und fordert im wesentlichen denselben Schaltungsaufwand wie der Hamming-Code. Der Hauptunterschied zwischen dem Hamming-Code und dem Calvert-Code liegt in der Anordnung der Datenbits und Prüfbits. Beim Hamming-Code sind die Prüfbits zwischen den Datenbits angeordnet. Mit anderen Worten, entsprechende Bits aufeinanderfolgender Bytes beeinflußen nicht dieselben Prüfbits. Der Calvert-Code nimmt dagegen die Prüfbits aus dem Datenteil des Wortes heraus, und ist so angelegt, daß jede aus acht Bits bestehende Gruppe dieselbe generelle Prüfbitkonfiguration aufweist mit geringen Ausnahmen. Es werden sechs Prüfbits benutzt und die gesamten Merkmale zur Fehlererkennung und Korrektur des üblichen EFK-Hamming-Codes werden beibehalten.
KI 970 012
309825/1058
Sl S2 S3 S4 S3 S6
TABELLE II Datenbitpositionen
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 "\Q 21 22 23 24 25 26 27 23 29 30 31 11111111000 00 001111111110 0000 00 0
1111111111 1 1 1 1 1 1 0 0 0 0 0 0
00000001
Prüfbitpositionen
Cl C2 C3 C4 C5 C6
1 0 0 0 0 0
0 10 0 0 0
OqOOOOOOOO 00 0 0 011.11111111111 1 111 0 0 10 0 0 111100 0 011110 0 0 0 1113.0 0 00 11110 0 0 1 1100110 011 0 0 110 0 110 0 110 0 110 0 1 10 0 1010101010 1010 10101010 I1 010 10 10 10
tabelle hi
Datenbitpositionen (d) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 IS 19 20 21 22 23 24 25 26 27 28 29 30 31
57 111111111111
58 0 0"0000Ol 0 0 0
59 11111111000
11110000000100010 111 01111111111111111111 00 111111,111100010 000
SlO 111100001111 0100 111100 0 0 111100 01 SU 1 1 0 0 1 1.0 1 1 1 0 0 1100 110 0 110 1110 0 10 10
0 0 0 10 0 0 0 0 0 10 0 0 0 0 0 1
Prüfbitpositionen Cl C2 C3 C4 C5 CS 10 0 0 0 0 0 10 0 0 0 0 0 10 0 0 0 0 0 1 P 0 0 0 0 0 10
S12 1010101110 11 10101010101010101100 000001
KI 970
Jedes Datenbit ist mindestens bei der Berechnung von zwei Prüfbits beteiligt. Jeder Einzelbitfehler im Datenteil des Wortes ändert mindestens zwei Prüfbits, die die fehlerhafte Stelle bezeichnen. Für die vorliegende Erfindung können trotz Bevorzugung des Calvert-Codes gegenüber dem Hamming-Code beide oder eine der zahlreichen inzwischen erschienenen Varianten benutzt werden.
Aus dem Vergleich der Tabelle II mit der Η-Matrix der Fig. 3 ist zu ersehen, daß der EFK-Code der Tabelle II genau der aus den Zeilen Sl bis S6 und den Spalten O bis 31 der Fig. 3 zusammengesetzten Untermatrix sowie der aus den Zeilen Sl bis S6 und den Spalten 31 bis 63 zusammengesetzten Untermatrix entspricht. Dieses ist ein wiederholter EFK-Code.
Die wichtigen Eigenschaften dieses wiederholten EFK-Codes sind: erstens ist ein Einzelfehler in den Datenbits erkennbar, aber nicht korrigierbar, und zweitens liefert ein zusammenhängender Doppelfehler unter den Datenbits dasselbe Syndrom wie der fehlerfreie Fall.
Die erste Eigenschaft ist offensichtlich, da der SFV für die Syndrombits Sl bis S6 derselbe ist, wie für ein gegebenes fehlerhaftes Datenbit und ein zugehöriges Datenbit. Der SFV.für ein fehlerhaftes Bit d(O) ist z.B.:
SFV
[si — j
S2 = 1
S3 = O
S4 » 1
S5 = 1
S6 1
(6)
und somit genau derselbe SFV, der durch das fehlerhafte Bit d(32) erzeugt wird.
KI 970 012
309825/1058
Die zweite Eigenschaft ist auf die Tatsache zurückzuführen, daß Fehler in zusammengehörigen Bits sich selbst ausnullen in bezug auf den erzeugten SFV, weil der DSSV für die zusammengehörigen Bits derselbe ist. Das ist als Beispiel gezeigt für den Fall, in welchem beide Bits d(O) und d(32) fehlerhaft sind:
Sl = 1 t Sl
S2 = 1 S2
S3 = O S3
S4 = 1 S4
S5 = 1 S5
S6 = 1/ S6
1 = O
1 O
O O
1 O
1 O
1 O /
(7)
welches derselbe SFV ist, der für die fehlerfreie Bedingung erzeugt wird.
Bei Kombination mit dem erweiterten Code mit dem Minimalgewicht sind die Eigenschaften des wiederholten Codes sehr nützlich.
Die vorstehende Tabelle III zeigt die Paritätsprüfmatrix für einen EFK-Code mit dem Minimalgewicht 3. Dieser Code ist so weit bekannt, bisher nicht beschrieben worden und ist daher neu. Sein großer Nutzen liegt nicht in der Einzelfehlerkorrektur allein, da es andere Codes mit weniger oder gleichem Gewicht gibt, die die Einzelfehlerkorrektur in 32 Bits ausführen können. Im vorliegenden Zusammenhang liegt die Bedeutung dieses Codes in seiner Verwendung zusammen mit dem wiederholten EFK-Code, woraus sich ein bedeutender Fortschritt in der Fehlerkorrektur-Codierung ergibt.
Der Ausdruck "Minimalgewicht" ist definiert als die Anzahl der von Null verschiedenen Komponenten in jeder Spalte einer Paritätsprüfmatrix. So hat ein Code mit dem Minimalgewicht 3 mindestens drei Einsen in jeder Matrixspalte„ Die Tabelle III zeigt, daß diese Bedingung erfüllt ist. Aus den grundlegenden Lehrsätzen der linearen Algebra ist bekannt, daß zahlreiche andere Matrizen mit den Eigenschaften des Codes mit dem Minimalgewicht ,3 gefunden
KI 970 012
309825/1058
werden können. So kann z.B. der Codevektor einer Spalte ψ jen den Codevektor einer anderen vertauscht werden, ohne daß die Eigenschaften des Code verändert werden.
Wie bereits im Zusammenhang mit der Gleichung (5) erklärt wurde, wird der für JL/2 Datenbits ausgelegte Code mit dem Minimalgewicht 3 erweitert auf I Bits. In der Η-Matrix der Fig. 3 findet sich der erweiterte Code in der Untermatrix, die die Prüffeldzeile S6 bis S12 und die Datenbitsteilen O bis 63 umfaßt. Der Ausdruck "erweitern" kann in Form einer Matrixaddition folgendermaßen dargestellt werden:
d(0)7 d(31)7
d(0)
12
d(0)
7 .d(31)7 d(32)7 d(63)7
ι ,ι
I I
d(0)
12'
12,
12"
d(6 3)
12
worin S das Element des Code mit dem Minimalgewicht 3 in Tabelle III und d das Element im erweiterten Code in der Η-Matrix der Fig. 3 bezeichnet. Für jedes S-Element sind in Fig. 3 zwei d-Elemente vorhanden, die die zusammenhängenden Bits sind.
Aus der Anwendung der oben gegebenen allgemeinen Gleichung (5) lassen sich d(0)„ und d(32)? aus el(O)7 folgendermaßen errechnen:
a(o)
= d(O)
7 *
ι t
d(32)
entsprechend:
KI 970 012
309825/1051
ORIGINAL INSPECTED
8 = d(O)8 i d(32)8
0 =0^0 (10)
a(5)11 = Ci(Sy11 i CiOV)11
1 = 0 f 1 (11)
8 = d(4)8 i d(35)8
0 =1^1 (12)
Daraus geht die große Wahlmöglichkeit für die Stellung der Bits in den Zeilen S7 bis S12, basierend auf der Antivalenzfunktion, hervor. Die einzig wichtige Beschränkung liegt in der Stellung der Bits S7 und S8, mit denen Einzelfehler unterschieden werden. Der SFV der Bits Sl bis S6 des wiederholten Code ist bekanntlich für ein gegebenes fehlerhaftes Datenbit und sein zugehöriges Bitderselbe, wodurch die Einzelfehlerkorrektur verhindert wird. Dieser Mangel wird durch Verwendung eines von zwei Syndrombits des erweiterten Codes ausgeglichen, um zwischen einem Fehler in einem Datenbit und seinem zugehörigen Bit zu unterscheiden. Im vorliegenden Ausführungsbeispiel wird mit den Syndrombits S7 und S8 sichergestellt, daß der DSSV eines Datenbit sich in den Stellen S7 und S8 von dem DSSV des zugehörigen Bits unterscheidet. Die einfachste Technik ist in Fig. 3 gezeigt. Ein 1-Bit wird in die Stellen S7 oder S8 für die Bits 0 bis 31 und ein Bit 0 in beide Stellen S7 und S8 für die Bits 32 bis 63 mit Ausnahme von Bit 36 gesetzt. Bit 36 hat ein 0-1-Muster in S7 und S8. Die sugehörige Bitstelle 4 hat jedoch ein 1-1-Muster in S7 und S8. Somit ergibt, jedes fehlerhafte Datenbit einen eindeutigen DSSV anhand der Syndrombits Sl bis S8.
KI 970 Öl2 ;
3038 25/10 58
Grundsätzlich besteht die einzige Forderung für die Einzelfehlerkorrektur darin, daß der DSSV eines Bits von dem des zugehörigen Bits verschieden ist. Jedes andere der Syndrombits S8 bis S12 kann ebenso verwendet werden.
Die Hauptbedeutung der Erweiterungstechnik liegt in der Tatsache, daß der SFV für einen zugehörigen Doppelfehler in der erweiterten Untermatrix (Zeilen S7 bis S12, Spalten 0 bis 63) der H-Matrix derselbe ist wie der SFV eines fehlerhaften Einzelbits in Tabelle III. Daraus folgt z.B.:
/SFV
S7
S8
S9
SlO
SIl
\S12
1 O 1 1 1
= i/
SFV [d(0) 4 d(32)J
i I0 /l
0 0 O
ο 1
O 1 1
O 1 1
l/ 1 /
Zwischen zusammengehörigen Doppelfehlern im erweiterten Code und Einzelfehlern im ursprünglichen Code mit dem Minimalgewicht 3 besteht somit eine 1:1 Entsprechung.
Das bedeutet, daß Fehler in zwei zusammengehörigen Bits einen , eindeutigen SFV für die Syndrombits S7 bis S12 erzeugen und dadurch einen zusammengehörigen Doppelfehler von einem anderen in den Datenbits unterscheiden.
Mit der Forderung, daß der erweiterte Code ein Minimalgewicht von 3 haben muß, soll eine ausreichende Anzahl von Bits sichergestellt werden, so daß jeder zusammengehörige Doppelfehler ein Syndrommuster erzeugt, welches sich von einen» anderen zugehörigen Doppelfehler unterscheidet. Im vorliegenden Fall werden 32 mögliche zusammengehörige Doppelfehler in den Datenbits und drei mögliche zusammengehörige Doppelfehler in den Prüfbits (C7-C8, C9-C10, C11-C12) eindeutig durch die Syndrommuster von S7 bis
KI 970 012
309825/ 1058
S 12 bezeichnet.
Ein Code mit einem Minimalgewicht von 2 kann nicht benutzt werden, weil ein nichtzusammengehöriger Fehler in den Prüfbits, z.B. C9, CIl nicht von einem zusammengehörigen Doppelfehler in den Datenbits zu unterscheiden ist.
Das ST-Bit wird als Gesamtparitäts-Syndrombit bezeichnet, weil zu seiner Berechnung alle Daten und anderen Prüfbits herangezogen werden. Wie bereits gesagt wurde, ist der Wert von CT so gewählt worden, daß für den fehlerfreien Fall ST = O ist. Dieses Bit wird für die Erkennung von Doppelfehlern erzeugt und seine Eigenschaft geht aus Fig. 3 hervor. Für jeden Einzelfehler ist ST = 1. Wenn ein Doppelfehler auftritt, heben sich die Fehler gegenseitig auf, und ST = O.
Im vorliegenden FKC-System dient ST in erster Linie der Erkennung von Fehlern in zwei nichtzusammengehörigen Bits und der Unterscheidung der Syndrommuster eines Einzelfehlers von dem eines nichtzusammengehörigen Doppelfehlers.
Wie bereits gesagt wurde, ist die Bedeutung separater Codes im vorliegenden FKC-System begrenzt auf die Funktion, für die diese Codes ursprünglich entwickelt wurden. Als Einzelfehlerkorrektur-Codes sind sowohl der Calvert- als auch der Code mit dem Minimalgewicht 3 nützlich, können aber durch jede Anzahl anderer Codes ersetzt werden, von denen einige in bestimmter Beziehung bequemer sind.
In ähnlicher Weise hat das Gesamtparitätsprüfbit für Doppelfehlererkennung sein Gegenstück im Original-Hamming-Code.
Nur wenn die drei Codes in einem einzigen FKC-System kombiniert werden, liefern sie das beschriebene wichtige Ergebnis, Die gegenseitige Beziehung der Codes läßt sich aus der nachfolgenden : Tabelle IV entnehmen, die die Syndrommuster (SFV) zeigt, welche durch die verschiedenen möglicherweise auftretenden Fehler erzeugt werden. Die Tabelle IV ist unterteilt in Bedingungen für
KI 970 012
309825/1058
Fehlerfreiheit, Einzelfehler und Doppelfehler. In dem Fall, in welchem kein Fehler auftritt, ist SFV = O. Bei einem Einzelfehler erzeugt jede Datenbitstelle ein eindeutiges Syndrommuster in den Syndrombits Sl bis S8, wenn dieses Bit fehlerhaft ist.
KI 970 012
309825/1058
TABELLE IV Syndroininuster
Fehlerbedingungen
Kein Fehler Einzelfehler Ein Datenbit fehlerhaft
Ein Prüfbit Ci, fehlerhaft (ausgenommen CT)
Einzelprüfbifc CT fehlerhaft
Doppelfehler
zusammengehörige Datenbits fehlerhaft ~* ~ "
zusarrengehöriae Prüfbits Ci, C(i+D fehlerhaft
♦Fehler in zwei zusammengehörigen Datenbits oder in einem Daten- und einem Prüfbit
SFV
Sl S2 S3 S4 S5 S6 S7 S8 S9 SlO SIl S12 ST 0000000000 0 0 0
-Eindeutiges Syndrommuster-
•unbeachtlich"
-Si = 1, Alle anderen Syndrombits = 0-
„Si - ο :
0 ^-^Eindeutiges Syndrommuster (Gew. 3)^1 0
i?—Si und S(i+1) = !,Alle anderen Syndrombits = 0
L Mindestens Ein
Ρ Syndrombit = 1
.Nicht eindeutiges Syndrommuster
♦Nichtzusammengehörige Prüfbits Ci, [ζ—Si und S(i+n) = 1, Alle anderen Syndrombits = 0 C(i+m) fehlerhaft (ausgenommen CT). I
*Prüfbits Ci und CT fehlerhaft Si = 1, Alle anderen Syndrombits => O
■So
*Für jeden nichtzusammengehörigen Doppelfehler wird ein anderer SFV erzeugt als für irgend einen Einzeifehler oder einen zusantmenge·- hörigen Doppelfehler.
KI 970
2250850
Die Syndrombits S9 bis SJ.2 spielen hier keine Rolle und daher ist in diesem Teil der Tabelle IV der Ausdruck "unbeachtlich" eingesetzt. Dasselbe Syndrom wird bekanntlich erzeugt, wenn ein Einzelfehler in einem der beiden zusammengehörigen Datenbits auftritt. Daher müssen die Syndromstellen S7 bis S8 benutzt werden, um anzugeben, welches der beiden zusammengehörigen Bits tatsächlich fehlerhaft ist. Das erreicht man leicht dadurch, daß man einfach sicherstellt, daß die Spaltenvektoren in den Stellen S7 und S8 für jedes Paar zusammengehöriger Bits unterschiedlich sind. Mit einer Ausnahme sind die Spaltenvektoren der Bits 31 bis 63 auf den Syndromstellen S7 und S8 z.B. O, wogegen die Vektoren für die Datenbits O bis 31 mindestens eine 1 in einer der beiden Vektorpositionen S7 und S8 enthalten. Daraus ist die erste wichtige gegenseitige Beziehung zwischen dem wiederholten EFK-Code, der die Vektoren Sl bis S6 umfaßt, und dem erweiterten Code zu ersehen, der die Positionen S7 bis S12 umfaßt.
Im Zusammenhang mit dem Doppelfehlerabschnitt der Tabelle IV wurde bereits erklärt, daß der SFV der fehlerhaften zusammenhängenden Datenbits für die ersten sechs Syndrompositionen O ist. Die Syndrombits S7 bis S12 zeigen jedoch ein eindeutiges Syndrommuster für jeden zusammengehörigen Doppelfehler, was durch eine 1:1 Entsprechung zwischen dem Syndrom eines Doppelfehlers im erweiterten Code und dem Syndrom eines Einzelfehlers im ursprünglichen Code mit dem Minimalgewicht 3 sichergestellt ist. Die Bedeutung des wiederholten Codes im Zusammenhang mit Doppelfehlern läßt sich an der Bedingung des Syndrommusters für zwei fehlerhafte, nicht zusammenhängende Datenbits oder ein fehlerhaftes Daten- und ein Prüfbit ermessen. Die zuletzt genannte Bedingung ergibt mindestens ein Syndrombit in den Positionen Sl bis S6. Dies steht im Gegensatz zum Nullvektor in diesen Positionen bei fehlerhaften zusammenhängenden Datenbits. Somit ist die Kombination des wiederholten Codes mit dem Code mit dem Minimalgewicht ausschlaggebend für die Korrekturfähigkeit, d.h. des Erkennen zusammengehöriger Doppelfehler.
KI970012 309825/10SI
Bekanntlich ist jeder zur Korrektur eines 64 Bit großen Datenwortes entwickelte Code sehr komplex und die Berechnungen, die für ein perfektes Arbeiten des Codes erforderlich sind, sind sehr mühsam. Im vorliegenden Fall sind diese Berechnungen natürlich noch mühsamer, weil dieser Code drei Fehlerarten erkennen und zwei dieser Arten korrigieren kann, wogegen frühere Codes auf Einzelfehler und Doppelfehlerkorrektur beschränkt waren.
Um das perfekte Arbeiten des Codes in jeder möglichen Situation zu prüfen, wurde ein Rechnerprogramm in der Programmiersprache PL 1 geschrieben und auf einem Rechner IBM 360-75 programmiert. Der Rechner behandelte jeden möglichen Einzelfehler, zusammenhängenden Doppelfehler und nichtzusammenhängenden Doppelfehler. Das Ergebnis des Programmes zeigt, daß der SFV für jeden nichtzusammenhängenden Doppelfehler vom SFV für jeden korrigierbaren Fehler verschieden ist.
Fig. 4 zeigt einen Abschnitt des Syndromgenerators 109, der das Daten- und Prüfbitfeld verarbeitet, um Syndrombits Sl bis ST zu erzeugen. Der Abschnitt umfaßt eine baumartige Anordnung von Antivalenzschaltungen 120, 142, 144 und 146, die jede eine Modulo 2-Addition vornehmen. Diese Berechnungstechnik für Syndrombits ist allgemein bekannt und wird daher nicht näher beschrieben.
Zur Erzeugung jedes Syndrombit Si wird ein Prüfbit aus den im Register 103 gespeicherten Daten errechnet und mit Syndromprüfbit bezeichnet und das errechnete Syndromprüfbit mit dem dm Register 103 gespeicherten Prüfbit verglichen. Eine Wertdifferenz zwischen diesen beiden Prüfbits ergibt Si = 1, und zeigt eine Fehlerbedingung an.
Fig. 4 zeigt die Berechnung von Syndrombits, in diesem Fall Sl. Wenn angenommen wird, daß das Codewort im Register 103 steht, werden die Antivalenzschaltungen mit jeder Datenstelle verbunden, die zur Berechnung gewählt ist, abhängig von den "in! F±go . 3 ge-- ■·:,:;..
ΚΓ97Ο 012 309825/1058
zeigten Stellen in der Η-Matrix. Somit werden für das gezeigte Cl Feld die Antivalenzberechnungen durchgeführt über den Datenbitstellen 0 bis 7, 15 bis 23, 32 bis 39, 47 bis 55 durch die Schaltungen 140, 142 und 144. Das so aus den Daten bestimmte Syndromprüfbit wird in der Schaltung 146 mit dem Bit in der Prüfbitstelle Cl verglichen und ergibt eine Anzeige für Sl. Eine ähnliche Berechnung wird für jedes der Prüfbitfelder C2 bis CT durchgeführt. Das Syndrombit ST ist ein Ergebnis der Anitvalenzberechnung über jeder Datenbit- und Prüfbitstelle in der H-Matrix. In einem betriebsfähigen System können außerdem die zu bestimmten Datenbitsteilen gehörenden Antivalenzschaltungen zur Berechnung anderer Syndrombits benutzt werden, die über denselben Bitstellen errechnet werden.
Die im Syndromgenerator 109 codierten Syndrombits Sl bis ST werden nach Darstellung in Fig. 1 über ein Kabel 110 an einen Syndromdecodierer 112 übertragen. Fig. 5 zeigt die Komponentenschaltungen des Syndromdecodierers 112. Wie das bei Fehlerkorrektursystemen der Fall ist, zeigt das von dem Syndromgenerator erzeugte Syndrommuster (SFV) durch Vergleich der Datenbits mit den Prüfbits im Generator 109 an, ob ein Fehler in den Daten- oder Prüfbits vorhanden ist. Wenn alle Bits des 13 Bit großen SFV Null sind, liegt kein Fehler in dem vom Speicher erhaltenen Codewort vor. Ein oder mehrere Einerbits im Syndrommuster bezeichnen die verschiedenen Fehlertypen, die auftreten können und durch das vorliegende Korrektursystem erkannt und/oder korrigiert werden können.
Der Decodierer 112 übernimmt drei Grundfunktionen. Zuerst liefert er die Einzelkennzeichnung eines jeden möglichen Einzel- und zusammenhängenden Doppelfehlers. Zweitens liefert er Korrekturanzeigen an die Datenkorrekturschaltungen und drittens enthält er eine Fehleranzeigelogik, die eine externe Anzeige der Fehlerbedingungen liefert. Der Decodierer enthält einen Umsetzer 150, einen Satz von Syndromgruppierschaltungen 156, Decodierschaltungen 158, Generatoren 164 für korrigierte Daten und eine fehleranzeige-
κι 970 012 309825/1058
2250350
logik 166. Das vom Generator 109 empfangene Syndrommuster wird dem Umsetzer 150 zugeleitet, der jedes Syndrombit in seine echte und in seine Komplementärform umsetzt. Somit werden die 13 echten Syndrombits Sl, S2, ..., ST umgesetzt in 26 Ausgangssignale Sl, Sl, S2, S"2, ..., ST, ST. Neben dieser Umsetzungsfunktion enthält der Konverter 150 auch Verstärker für jedes der Eingangssignale, um den übrigen Schaltungen ausreichend starke Signale liefern zu können.
Die echten und komplementären Syndrombits werden über das Kabel 151 zum Knotenpunkt 152 übertragen, wo die echten Syndrombits Sl, S2, ..., ST über das Kabel 153 und die Verbindung 155 zur Fehleranzeigelogik 166 übertragen werden. Diese wird später im Zusammenhang mit Fig. 9 genauer beschrieben. Die echten und komplementären Syndrombits mit Ausnahme der Bits ST und ST werden zu den Syndromgruppierungsschaltungen 156 übertragen, die aus einem Satz von 48 UND-Gliedern bestehen und in Fig. 6 im einzelnen gezeigt sind. Die Gruppierungsschaltungen sammeln Sätze von vier Syndrombits und liefern eine Ausgabeanzeige jeder möglichen logischen Kombination der gruppierten Bits. Die Ausgänge der Gruppierungsschaltungen sind also S1«S2°S3'S4, 31'32-33"34^ S1-ST.S3 •S4 usw. für diese Gruppe von Syndrombits. Ähnliche Ausgänge sind vorgesehen für die Bitgruppen S5, S6, S7, S8 und S9i, SlO, SIl, S12 .
Die 48 Ausgangssignale werden durch das Kabel 157 zu den Decodierschaltungen 158 übertragen, welche dann einzelne Ausgangssignale K für jedes einen Einzelfehler oder einen zusammengehörigen Doppelfehler oder einen Prüfbitfehler bezeichnende Syndrommuster erzeugen. Im vorliegenden Ausführungsbeispiel sind 115 derartige Ausgänge vorhanden, die 64 mögliche Einzeldatenfehler, 13 mögliche Einzelprüfbitfehler, 32 mögliche zusammenhängende Datenfehler und sechs mögliche zusammenhängende Prüfbitfehler anzeigen.
Die Ausgangssignale der Decodierschaltungen 158 werden über das KI 970 012
309825/1058
- 28 Kabel 159 dem Knotenpunkt 160 zugeleitet, von wo sie der Fehler-
anzeigelogik 166 und den Generatoren für korrigierte Daten 164 zugeführt werden. Die Generatoren verarbeiten die Ausgangssignale der Decodierschaltungen 158 und erzeugen Anzeigen bezüglich der zu korrigierenden Datenbits. Diese Anzeigen werden dann den Datenkorrektürschaltungen 114 (Fig. 1) zugeführt zur Erzeugung korrigierter Datenbits, die im Hochgeschwindigkeitsprozessor 120 verwendet werden.
Fig. 6 zeigt die Syndromgruppierungsschaltungen 156 im einzelnen, die einen Abschnitt des Syndromdecodierers 112 bilden. Diese Schaltungen bestehen aus einer Reihe von UND-Gliedern 168, von denen jedes ein Ausgangssignal liefert, wenn alle Eingangssignale des UND-Gliedes den Binärwert 1 aufweisen. Diese 48 UND-Glieder liefern jede mögliche Kombination der UND-Funktion für die Sätze (Sl, ST, S2, Si, S3, Sl, S4, ST) , (S5, £35~, S6, £36", S7, s7, S8, S"8~) und (S9, S9, SlO, SlO, SIl, SIl, S12, S12). Diese Gruppierungsschaltungen dienen lediglich der einfachen Realisierung des Decodierers. Vom Standpunkt der für die Erfindung unerläßlichen Schaltungen sind sie nicht erforderlich.
Fig. 7 zeigt die Decodiererschaltungen 158 des Syndromdecodierers 112. Die gruppierten Syndromanzeigen der Gruppierungsschaltungen 156 sind vom Verbindungsblock 170 an einen Satz von UND-Gliedern> 172 verteilt. Zu den Eingangssignalen für die UND-Glieder gehört auch das vom Umsetzer 150 über die Leitungen 155 empfangene Syndrombit ST. Jedes UND-Glied 172 liefert ein Ausgangssignal K, welches ein einzelnes Syndrommusterbit zeichnet. Jedes Syndrommuster entspricht einem Syndromfehlervektor (SFV), der einen korrigierbaren Fehler eindeutig beschreibt. Die Ausgänge der UND-Glieder 200 bis 26 3 sind bezeichnet mit K , K, (.. , ..., K,,,_. . Ein Ausgangssignal von einem dieser UND-Glieder besagt, daß der SFV eines entsprechenden Datenbits aufgetreten ist und markiert dadurch das Bit als fehlerhaft. Ein Ausgangssignal vom UND-Glied 200 besagt z.B., daß folgende Funktion aufgetreten ist:
KI 970 012 „ ,
309825/1058
Diese Funktion entspricht natürlich dem Datensyndrom-Spaltenvektor (DSSV), der in Fig. 3 für das Datenbit O gezeigt ist.
Dieselbe Überlegung gilt für die Anzeiger KC1, K2/ ··-r K UND-Glieder 264 bis 276. Ein Ausgangssignal vom UND-Glied 264 zeigt z.B. einen Fehler in Cl an, weil die Eingabefunktion folgende ist:
κ = si-sT-s^-s^-sT^^^^sy^s^-sT.sio-sTT-sII-ST (15)
Aus einem Vergleich mit Fig. 3 ist zu ersehen, daß diese Funktion dem DSSV von Cl entspricht.
Eine weitere Beschreibung der Fehleranzeigen für die Einzelfehler erscheint überflüssig, da die Eingangsfunktion zu jedem der UND-Glieder 200 bis 276 dem DSSV der Daten- und Prüfbits der Fig. in entsprechender Reihenfolge entspricht.
Der SFV für die zusammengehörenden Doppelfehler wird in den UND-Gliedern 277 bis 314 decodiert. Die Ableitung des SFV für die Doppelfehler ist nicht ganz so offensichtlich wie für die Einzelfehler und Tabelle V zeigt den SFV für jeden möglichen zusammenhängenden Doppelfehler für die Datenbits und die Prüfbits, die zu dem UND-Glied gehören, welches die jeweilige Funktion erzeugt.
Die in Tabelle V gezeigten Muster sind genauer als die in den vorhergehenden Tabellen für zusammenhängende Doppelfehler» Es sind jedoch dieselben Muster; der wiederholte EFK-Code stellt z.B. sicher, daß der SFV für die Bits Sl bis S6 = O ist für zusammengehörende Doppelfehler gemäß Tabelle V. In ähnlicher Weise gilt ST = 0 für zusammengehörende Doppelfehler·.
KI 970 012
30982 571058
Tabelle V
!- HND-
Ληze1ge Glied Eingabe SFV Funktion
Sl S2 S3 S4 S5 SG S7 SB S9 SlO SIl S12 ST
Kd(0,32) 277 000000101 1 1 10
Kd(l 33) 278 0000001011100
Kd(2,34) 279 000000101 1 0 10
Kd(3 35) 2B0 000000101 1 0 00
Kd(4 36) 281 0000001010 110
Kd(5,37) 282 000000101 0 1 00
Kd(G 38) 2B3 0000001010 0 10
Kd(7,39) 284 000000111 0 1 10
Kd(f.,40) 285 000000100 1 1 10
Kd(9,41) 2BG 0 0 0 0 0 0 10 0 1 1 0 0
Kd(10 42) 2t!7 0 0 0 0 0 0 10 0 1 0 10
K1... .,. 288 000000110 1 0 10
Kd02,44) 2R9 000000 100 0 1 10
Kd(13 45) 290 0 0 0 0 0 0 110 11 0 0
Kd(14 4G) 293L 0 0 0 0 0 0 111 0 0 10
Kij(15,47) 292 000000111 0 0 00
,„v 293 0 0 0 0 0 0 Q 1 ). 1 1 10
Kd(17 49) 294 0 0 0 0 0 0 0 11 1 1 0 0
Kd(lR,S0) 295 000000011 1 0 10
Kd(19,51) 296 000000011 1 0 00
Kd(20,52) 297 0 0 0 0 0 0 0 11 0 1 10
κ^, , r->v 290 0 0 0 0 0 0 0 11 0 1 0 0 α (21,5 3)
Kd(22,ü4) 2" 000000011 0 0 10
Kd(23,r.5) 300 000000111 0 1 00
Kd(24 'iG) 301 000000010 1 1 10
Kd(25 57) 302 000000010 1 1 00
Kd(26,58) 303 0 0 0 0 0 0 0 10 10 10
Kd(27,59) 304 00000011110 00
Kd(28,60) 305 000000010 0 1 10
Kd(29,61) 306 000000110 0 0 10
Kd(30,62) 307 000000110 0 0 10
Kd(31 63) 308 0 0 0 0 0 0 110 1 0 0 0
110 000000 0 0 00
001100000 0 0 00
000011000 0 0 00
000000110 0 0 00
000000001 1 0 00
000000000 0 1 10
KCl,C2 309
KC3,C4 310
KC5,C6 311
KC7,C8 312
KC9 "10 313
KC11,C12 314
KI970012 309825/1058
■22608
Fig. 8 zeigt die Generatoren für korrigierte Daten 164 des Syndromdecodierers 112 und die Datenkorrekturschaltungen 11.4 des EKC-Systems. Die Generatoren für korrigierte Daten erzeugen eine richtige Bitanzeige aufgrund der Fehlersignale K von den Decodierschaltungen 158. Zu diesem Zweck enthalten die Generatoren eine Reihe von ODER-Gliedern 174, wobei jedem dieser Glieder O bis 63 eine entsprechende Datenbitstelle O bis 63 zugeordnet ist. Jedes ODER-Glied erzeugt ein Ausgangssignal, wenn· die Decodierschaltungen anzeigen, daß ein Einzelfehler in der entsprechenden Bitstelle oder Fehler in dieser Bitstelle und der zugehörigen Bitstelle aufgetreten sind. So erzeugt z.B. das ODER-Glied O eine richtige Bitanzeige, wenn entweder K_, . oder K_. ^. vorhanden ist. Ein Ausgangssignal vom ODER-Glied O bedeutet, daß die Datenbitposition O fehlerhaft ist und geändert werden muß. Wenn umgekehrt K,, 3„\ vorhanden ist, würden sowohl das ODER-Glied O als auch das ODER-Glied 32 Anzeigen für die Korrektur der Bits in den Stellen O und 32 liefern.
Zur Erzeugung der korrigierten Datenbits, die im Datenprozessor 120 verwendet werden können, werden die nicht korrigierten Daten vom Eingangsregister des Hauptspeichers 100 mit de.n Anzeigen für zu korrigierende Bits in der Datenkorrekturschaltung 114 verglichen. Diese Schaltungen sind Antivalenzschaltungen 176, eine für jedes Datenbit, und verändern die nicht korrigierten Daten, wenn das Eingangssignal vom entsprechenden ODER-Glied des Datengenerators 1 ist. Dies ist in Tabelle VI gezeigt.
KI 970 012 „
309825/1058
Fehleranzeige
Anzeige kein Fehler
- 32 - Eingabe nicht
korrigierter
Daten
Ausgabe
korrigier
ter Daten
TABELLE VI 1
O
0
1
Eingabe vom
ODER-Glied
1
0
1
0
<i
'S .
Wenn z.B. das Ausgangssignal des ODER-Gliedes 0 eine 1 ist, wird dadurch ein Fehler in der Stelle d{0) bezeichnet und das Ausgangssignal des Antivalenzgliedes 0 ist immer die Inversion des Signales auf der Leitung d(0) der nicht korrigierten Daten.
Fig. 9 zeigt die Fehleranzeigelogik 166, die die mögliche Bedingung des Codewortes anzeigende Signale erzeugt. Das vom Umsetzer 150 (Fig. 5) stammende Syndrommuster Sl bis ST ist das Eingangssignal für den ODER-Funktionsblock 180. Der ODER-Block stellt eine baumartige Anordnung von ODER-Schaltungen dar, die ein Eins-Ausgangssignal liefert, wenn ein Syndrombit 1 ist und dadurch eine Fehlerbedingung anzeigt. Wenn das Syndrommuster 0 ist, ist das Ausgangssignal des ODER-Blocks 180 eine 0. Das O-Signal wird durOh den Inverter 181 invertiert zur Abgabe eines Signales "Kein Fehler",
Ein Fehlersignal vom Block 180 wird über die Leitung 190 zum UND-Glied 184 übertragen. Das andere Eingangssignal für das UND-Glied kommt vom ODER-Glied 184 über den Inverter 185. Dem ODER-Glied wird ein Signal von einem der ODER-Funktionsblocks 182 oder 183 zugeführt. Die Eingangssignale zum ODER-Block 182 umfassen die An zeigen für korrigierbare Doppelfehler K,, _o. , ..., K1 _, die
QlU, ja) LJlX ι χ/.
von den Decodierschaltungen 158 über das Kabel 159 übertragen werden (Fig. 5). In ähnlicher Weise gehören zu den Eingangssignalen dee ODER-Blocks 183 die Anzeigen korrigierbarer Einzelfehler
KI 970 012
303825/1OSt
Kd(O) ' '*·■' K(CT) * Ein Aus9an9'ss;i-9nal des Blocks 183 ist eine Anzeige eines korrigierbaren Einzelfehlers; ein Ausgangssignal vom Block 182 ist eine Anzeige für einen korrigierbaren zusammenhangenden Doppelfehler.
Wenn das Ausgangssignal des ODER-Gliedes 184 eine O ist, wird damit angezeigt, daß keine korrigierbaren Fehler vorliegen, und dann ist das Ausgangssignal des Inverters 185 eine 1 und wird über die Leitung 191 an das UND-Glied 189 weitergeleitet. Dieses liefert die Anzeige "Nicht korrigierbarer Fehler", wenn ein Fehlersignal des Blocks 180 mit einem Signal vom Inverter 185 für einen nicht korrigierbaren Fehler zusammentrifft.
Die Fign. 10 und 11 zeigen ein Ausführungsbeispiel der in Fig. 2 in Blockform gezeigten Abschnitte des Prüfbitgenerators. Der Prüfbitgenerator ist ein Codierer, der dem in Fig. 4 gezeigten Syndromgenerator sehr ähnlich ist. Die Prüfbits werden durch Antivalenzverknüpfung der Datenbitpositionen für das durch den Code festgelegte jeweilige Prüfbitfeld erzeugt.
Fig. 10 zeigt das Feld Cl, welches in der Η-Matrix der Fig. 3 erschien. Die Antivalenz-Glieder 186, 187 und 188, die im Block gezeigt sind, haben dieselbe Funktion wie die Antivalenz-Glieder in Fig. 4. Das Prüfbit Cl steht in seinem zugehörigen BBM A.
Fig. 11 zeigt die zur Berechnung des Gesamtparitätsprüfbits CT erforderliche Schaltung. Das Syndrombit ST wird bekanntlich im Syndromgenerator 109 aus allen Daten- und Prüfbits errechnet. Auf den ersten Blick kann man den Eindurck gewinnen, daß CT genauso im Prüfbitgenerator 128 errechnet werden sollte, d. h. durch Berechnung aus allen Daten- und Prüfbitstellen im Register 122. Das ist jedoch unnötig. Es kann gezeigt werden, daß die Berechnung von CT aus allen Daten- und Prüfbits das logische Äquivalent für die Berechnung aus nur bestimmten Datenpositionen darstellt, um so jedem DSSV in der Η-Matrix ein ungerades Gewicht zu verleihen» Daher ist CT ein Paritätsbit für ein ungerades Spaltengewicht und
κι 970 012 309825/1058
_ 34 -
seine Benutzung verbessert die Codiergeschwindigkeit und reduziert die Schaltungsanforderungen.
Aus einer Betrachtung der Η-Matrix der Fig. 3 geht bei Ignorieren der Zeile ST hervor, daß die Vektoren der Spalten 0 und 2 ungerade bzw. gerade sind. Bei der Berechnung von CT wird nun die Datenbitsteile 0 nicht benutzt, aber die Datenbitsteile 2. Die Prüfbitpositionen werden überhaupt nicht benutzt.
Für den speziellen, in Fig. 3 gezeigten Code wird CT folgendermaßen berechnet:
CT = d(2) f d(3) i d(5) 4 d(7) 4 d(8) 4 d(9)
d(l3) i d(l8) 4 d(l9) t d(20) i d(2l) 4
d (24) i d i (25) 4 d (27) ί d 4 (29) 4 d (32) t d(52)
d (34) i d TH (38) i d (39) i d (40) t d (42) £ d(62)
i d(44) d(45) TH. d(47) d(48) d{50) ??
i d(54) d(56) t d(58) d(59) d(60) ^
i d(63) .
ST kann auf diese Weise jedoch nicht zuverlässig berechnet werden, weil ein oder beide vom Speicher 100 dem Syndromgenerator zugeführte Prüfbits fehlerhaft sein können. Somit muß ST aus allen Daten- und Prüfbits errechnet werden.
Die in Fig. 11 gezeigte Schaltung funktioniert ähnlich wie die in Fig. 10 gezeigte. Der aus den Schaltungen 193, 194 und 195 bestehende Schaltung aus Antivalenz-Gliedern im Generator 128 führt eine Modulo 2-Addition mit den in gemäß der Gleichung (12) ausgewählten Stellen des Registers 122 gespeicherten Daten aus. Das Ausgabebit CT wird dann im BBM G des Speichers 1Ö0 gespeichert.
κι 970 012 309825/1058
22608
Zur Erklärung der Arbeitsweise des erfindungsgemäßen FKC-Systems wird zuerst angenommen, daß die Datenbits und Prüfbits in den richtigen Stellen im Speicher 100 gespeichert sind. Die Prüfbits wurden durch den Prüfbitgenerator 128 in Fig. 2 nach dem erfindüngsgemäßen Code erzeugt und in die entsprechenden BBM gesetzt. Zu diesem Zeitpunkt können bestimmte Daten- oder Prüfbits fehlerhaft in den Speicher eingeschrieben sein oder beim Auslesen des Codewortes aus dem Speicher können infolge eines Schaltungsdefektes die Bits fehlerhaft werden. Zu I!lustrationszwecken wird weiter angenommen, daß die Daten in den Bitstellen O und 32 aufgrund irgendeines Fehlers zur Zeit ihrer Eingabe in das Eingaberegister 103 invertiert wurden. Die Daten werden aus dem Register in den Syndromgenerator 109 zusammen mit den Prüfbits übertragen. Die Syndrombits werden erzeugt durch Vergleich der von den BBM-Stellen empfangenen Prüfbits mit den aus den.Datenbits abgeleiteten Prüfbits. Da die zusammengehörigen Bits 0 und 32 fehlerhaft sind, ergibt sich folgendes Syndrommuster (SFV) %
SFV =
ASl = 0
/s2 = 0
/ S3 = 0
I S4 = 0
I S5 = 0
S6 = 0
S7 —· TI
S8 = 0
S9 M,. ^
SlO = .1
SIl
\ S12
\ ST = 0
(17)
KI 970 012
309825/1058
Dieses Muster ist gemäß ,den obigen genaueren Ausführungen eindeutig für einen in den Datenbitstellen O und 32 gespeicherten Doppelfehler. Dieses Syndrommuster wird vom Syndromgenerator zum Syndromdecodierer 112 übertragen, der ein, diesen speziellen zusammengehörigen Doppelfehler bezeichnendes Ausgangssignal in dem Kabel 113 erzeugt, welches zu den Datenkorrekturschaltungen 114 führt, sowie ein Signal "Korrigierbarer Fehler" auf den Fehleranzeigeleitungen. In diesem speziellen Fall invertieren die Antivalenz-Glieder O und 32 in der Datenkorrekturschaltung 114 die Signalanzeige der nicht korrigierten Daten in den Datenstellen O und 32. Am Ausgang der Datenkorrekturschaltungen 114 erscheinen 64 Signale, die die richtigen Daten in jeder Datenspeiche rs te He im Speicher anzeigen. Diese korrigierten Daten können dann zuverlässig durch den Prozessor 120 benutzt werden.
Nachdem der Prozessor die Daten gemäß Fig. 2 benutzt hat, werden sie über das Register 122 an den Prüfbitgenerator 128 zurückgeleitet, wo neue Prüfbits errechnet werden. Die Daten und die neu errechneten Prüfbits werden dann in dem Hauptspeicher 100 gespeichert.
KI 970 012 _ Λ n _ _
309825/1058

Claims (2)

  1. - 37 PATE-NTAN S P R Ü C H E
    System zur Korrektur von Einzelfehlern und zusammengehörenden Doppelfehlern und zur Erkennung nichtzusammengehörender Doppelfehler in einem Speicher entstammenden Bitfolgen, von denen jede aus einer vorgegebenen Anzahl von Paaren zusammengehörender Informationsbits und Prüfbits besteht/ gekennzeichnet durch einen Syndromgenerator (109; Fig. 1), dem die dem Speicher entnommene Bitfolge zur Erzeugung von Fehler anzeigenden Syndrommustern zugeführt wird, einen an den Syndromgenerator angeschlossenen Syndromdecodierer (112), der die Syndrommuster decodiert, um einen Einzelfehler und Fehler in einem Paar zusammengehörender Bits zu lokalisieren und Fehler in nichtzusammenhängenden Bits zu erkennen, und eine mit dem Syndromdecodierer verbundene Korrekturschaltung (1.14) zur Korrektur des bzw. der fehlerhaften Informationsbits„
  2. 2. System nach Anspruch 1, dadurch gekennzeichnet, daß der Syndromgenerator drei verschiedene, aus Antivalenzgliedern aufgebaute Schaltungen zur Bildung von Prüfbits aus den Datenbits aufweist, deren erster die Bits eines ersten Codes, der Einzelfehler in dem ersten Bit eines Paares erkennen kann und für das zweite Bit jedes Paares wiederholt wird, zugeführt werden, deren zweiter die Bits eines zweiten Codes zugeleitet werden, der einen Einzelfehler in dem ersten Bit eines Paares korrigieren kann und auf das zweite Bit ausgedehnt wurde, und deren dritter die Bits eines Codes mit ungeradem Spaltengewichb zugeführt werden zur Bildung eines Gesambparitätsbits zur Erkennung von Fehlern in zwei nichtzusammengehörenden Bibs.
    Ί. Sysbem nach Anspruch L, dadurch gekennzeichneb, daß der Syndromdecodierer eine Fehleranzeigevorrich bung (180 bis 185, 189, 191; Fig. 9) enthält, die anzeigt, ob kein Fehler, ein korrigierbarer Einze Lfahler, ein korrigierbcirer zu-
    970 oi2 -3098 25/1058 «AD ORJSINAL
    sairauenhängender Doppelfehler oder ein nichtkorrigierbarer Fehler in der Datenfolge vorliegt, und eine Vorrichtung (164), an deren Ausgängen (O bis 63) ein fehlerhaftes Bit durch ein Binärsignal "Eins" gekennzeichnet wird.
    KI 970 0L2
    309825/1058
    Leer seife
DE2260850A 1971-12-14 1972-12-13 Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern Expired DE2260850C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US20775171A 1971-12-14 1971-12-14

Publications (2)

Publication Number Publication Date
DE2260850A1 true DE2260850A1 (de) 1973-06-20
DE2260850C2 DE2260850C2 (de) 1982-06-09

Family

ID=22771853

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2260850A Expired DE2260850C2 (de) 1971-12-14 1972-12-13 Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern

Country Status (5)

Country Link
US (1) US3755779A (de)
JP (1) JPS535099B2 (de)
DE (1) DE2260850C2 (de)
FR (1) FR2165408A5 (de)
GB (1) GB1366013A (de)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2450468A1 (de) * 1973-10-29 1975-04-30 Western Electric Co Fehlerkorrekturanordnung fuer einen speicher
DE2532149A1 (de) * 1974-08-19 1976-03-04 Ibm Fehlerkorrekturanordnung
EP0059821A1 (de) * 1981-03-11 1982-09-15 Kb Alf Önnestam Alfadata Verfahren und Vorrichtung, z.B. in einem Datenverteilungssystem, unter anderem zur Vermeidung von Verzerrungen bei der Übertragung von Signalzuständen

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3949208A (en) * 1974-12-31 1976-04-06 International Business Machines Corporation Apparatus for detecting and correcting errors in an encoded memory word
US4030067A (en) * 1975-12-29 1977-06-14 Honeywell Information Systems, Inc. Table lookup direct decoder for double-error correcting (DEC) BCH codes using a pair of syndromes
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
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
US4292674A (en) * 1979-07-27 1981-09-29 Sperry Corporation One word buffer memory system
US4345328A (en) * 1980-06-30 1982-08-17 Sperry Corporation ECC Check bit generation using through checking parity bits
US4359772A (en) * 1980-11-14 1982-11-16 International Business Machines Corporation Dual function error correcting system
US4358848A (en) * 1980-11-14 1982-11-09 International Business Machines Corporation Dual function ECC system with block check byte
EP0097159B1 (de) * 1981-12-30 1989-03-15 International Business Machines Corporation Zwei bits pro zeichen sec/ded-kode
US4531213A (en) * 1982-03-03 1985-07-23 Sperry Corporation Memory through checking system with comparison of data word parity before and after ECC processing
US4523314A (en) * 1983-02-07 1985-06-11 Sperry Corporation Read error occurrence detector for error checking and correcting system
US4862463A (en) * 1987-07-20 1989-08-29 International Business Machines Corp. Error correcting code for 8-bit-per-chip memory with reduced redundancy
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
US4961192A (en) * 1988-07-29 1990-10-02 International Business Machines Corporation Data error detection and correction
US5418796A (en) * 1991-03-26 1995-05-23 International Business Machines Corporation Synergistic multiple bit error correction for memory of array chips
US5369650A (en) * 1991-11-22 1994-11-29 Honeywell, Inc. Error detection and correction apparatus in a BY-4 RAM Device
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
US6367046B1 (en) * 1992-09-23 2002-04-02 International Business Machines Corporation Multi-bit error correction system
US5644695A (en) * 1994-01-03 1997-07-01 International Business Machines Corporation Array combinatorial decoding with multiple error and erasure detection and location using cyclic equivalence testing
US5751740A (en) * 1995-12-14 1998-05-12 Gorca Memory Systems Error detection and correction system for use with address translation memory controller
KR100287018B1 (ko) * 1998-08-07 2001-04-16 윤종용 에러 정정 회로를 구비한 반도체 메모리 장치
US6473880B1 (en) * 1999-06-01 2002-10-29 Sun Microsystems, Inc. System and method for protecting data and correcting bit errors due to component failures
US6718499B1 (en) 1999-07-23 2004-04-06 Hewlett-Packard Development Company, L.P. Mace code
US7509568B2 (en) * 2005-01-11 2009-03-24 International Business Machines Corporation Error type identification circuit for identifying different types of errors in communications devices
US20080052598A1 (en) * 2006-08-09 2008-02-28 Aksamit Slavek P Memory multi-bit error correction and hot replace without mirroring
US8365044B2 (en) * 2007-04-23 2013-01-29 Agere Systems Inc. Memory device with error correction based on automatic logic inversion
CN101803205B (zh) * 2008-08-15 2013-12-18 Lsi公司 近码字的ram列表解码
CN102077173B (zh) 2009-04-21 2015-06-24 艾格瑞系统有限责任公司 利用写入验证减轻代码的误码平层
US20110219266A1 (en) * 2010-03-04 2011-09-08 Qualcomm Incorporated System and Method of Testing an Error Correction Module
US8464142B2 (en) 2010-04-23 2013-06-11 Lsi Corporation Error-correction decoder employing extrinsic message averaging
FR2961613B1 (fr) 2010-06-18 2012-07-27 Commissariat Energie Atomique Procede de protection memoire configurable contre les erreurs permanentes et transitoires et dispositif apparente
US8499226B2 (en) 2010-06-29 2013-07-30 Lsi Corporation Multi-mode layered decoding
US8458555B2 (en) 2010-06-30 2013-06-04 Lsi Corporation Breaking trapping sets using targeted bit adjustment
US8504900B2 (en) * 2010-07-02 2013-08-06 Lsi Corporation On-line discovery and filtering of trapping sets
US8768990B2 (en) 2011-11-11 2014-07-01 Lsi Corporation Reconfigurable cyclic shifter arrangement
FR2983665B1 (fr) 2011-12-02 2014-06-20 Commissariat Energie Atomique Procede de generation d'un code correcteur lineaire maximise, procede et dispositif de decodage d'un tel code
RU2012146685A (ru) 2012-11-01 2014-05-10 ЭлЭсАй Корпорейшн База данных наборов-ловушек для декодера на основе разреженного контроля четности
KR20160068369A (ko) * 2014-12-05 2016-06-15 에스케이하이닉스 주식회사 패리티 체크 회로 및 이를 포함하는 메모리 장치
KR102453437B1 (ko) 2018-01-25 2022-10-12 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
KR20200058048A (ko) 2018-11-19 2020-05-27 삼성전자주식회사 반도체 메모리 장치 및 이를 구비하는 메모리 시스템
KR20230080769A (ko) * 2021-11-30 2023-06-07 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1946365A1 (de) * 1968-09-12 1970-04-02 Rca Corp Einrichtung zum Erkennen oder Korrigieren von einzelnen Blockfehlern
US3648239A (en) * 1970-06-30 1972-03-07 Ibm System for translating to and from single error correction-double error detection hamming code and byte parity code

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3218612A (en) * 1961-11-09 1965-11-16 Ibm Data transfer system
US3328759A (en) * 1963-05-13 1967-06-27 Ibm Simplified partial double error correction using single error correcting code
GB1096617A (en) * 1964-11-16 1967-12-29 Standard Telephones Cables Ltd Data processing equipment
US3439331A (en) * 1965-06-16 1969-04-15 Ibm Error detection and correction apparatus
US3568153A (en) * 1968-09-16 1971-03-02 Ibm Memory with error correction
US3629825A (en) * 1969-12-01 1971-12-21 Ibm Error-detecting system for data-processing circuitry
US3623155A (en) * 1969-12-24 1971-11-23 Ibm Optimum apparatus and method for check bit generation and error detection, location and correction

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE1946365A1 (de) * 1968-09-12 1970-04-02 Rca Corp Einrichtung zum Erkennen oder Korrigieren von einzelnen Blockfehlern
US3648239A (en) * 1970-06-30 1972-03-07 Ibm System for translating to and from single error correction-double error detection hamming code and byte parity code

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2450468A1 (de) * 1973-10-29 1975-04-30 Western Electric Co Fehlerkorrekturanordnung fuer einen speicher
DE2532149A1 (de) * 1974-08-19 1976-03-04 Ibm Fehlerkorrekturanordnung
EP0059821A1 (de) * 1981-03-11 1982-09-15 Kb Alf Önnestam Alfadata Verfahren und Vorrichtung, z.B. in einem Datenverteilungssystem, unter anderem zur Vermeidung von Verzerrungen bei der Übertragung von Signalzuständen

Also Published As

Publication number Publication date
DE2260850C2 (de) 1982-06-09
JPS535099B2 (de) 1978-02-23
JPS4866952A (de) 1973-09-13
US3755779A (en) 1973-08-28
FR2165408A5 (de) 1973-08-03
GB1366013A (en) 1974-09-04

Similar Documents

Publication Publication Date Title
DE2260850A1 (de) Fehlerkorrektursystem
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE2425823A1 (de) Einrichtung zur fehlererkennung und fehlerkorrektur
DE3882223T2 (de) Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.
DE2456709C2 (de) Schaltungsanordnung zur Fehlererkennung und -korrektur
DE2659031A1 (de) Fehlerkorrektur- und -steuersystem
DE2157829C2 (de) Anordnung zum Erkennen und Korrigieren von Fehlern in Binärdatenmustern
DE102005022107B4 (de) Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge
DE102011087634B4 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einem codierten binärwort
DE2053836C3 (de) Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen
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
DE2320354A1 (de) Selbstpruefender codeumsetzer
DE2047868A1 (de) Schaltung zur Korrektur von Einzel fehlern in den Wortern eines zyklischen (n, k) Codes
DE102011087457A1 (de) Vorrichtung und verfahren zum erfassen eines fehlers in einer mehrzahl von codierten binärwörtern, die durch einen fehlerkorrekturcode codiert sind
DE2655653C2 (de) Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher
DE2104132B2 (de) Anordnung zur Mehrfachfehlererkennung und Einzelfehlerkorrektur
EP0127118A1 (de) Speichersteueranordnung, insbesondere für fehlertolerantes Fernsprech-Vermittlungssystem
DE1774225A1 (de) Fehlerkorrekturschaltung
DE102019113970B4 (de) Erkennung von adressfehlern
DE2134529A1 (de) Verfahren zur fehlererkennung und -korrektur in aus dem speicher einer programmgesteuerten datenverarbeitungsanlage ausgelesenen informationswoertern
DE2742881C2 (de)
EP0491073B1 (de) Verfahren und Schaltungsanordnung zur Datensicherung in Speichereinheiten
EP0605786A1 (de) Verfahren und Einrichtung zur fehlercodierenden Datenübertragung
DE2131848C3 (de) Verfahren und Vorrichtung zur Fehlererkennung und -korrektur

Legal Events

Date Code Title Description
OD Request for examination
8126 Change of the secondary classification

Ipc: G11C 29/00

D2 Grant after examination
8339 Ceased/non-payment of the annual fee