DE2260850A1 - Fehlerkorrektursystem - Google Patents
FehlerkorrektursystemInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding 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/1028—Adjacent 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
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
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
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
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.
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
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
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
\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
Fehlerbedingungen
Kein Fehler Einzelfehler Ein Datenbit fehlerhaft
Ein Prüfbit Ci, fehlerhaft (ausgenommen CT)
Einzelprüfbifc CT fehlerhaft
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
Ρ 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
!- 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)
- - 37 PATE-NTAN S P R Ü C H ESystem 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. 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 ORJSINALsairauenhä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 0L2309825/1058Leer seife
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)
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)
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)
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)
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 |
-
1971
- 1971-12-14 US US00207751A patent/US3755779A/en not_active Expired - Lifetime
-
1972
- 1972-08-31 GB GB4039372A patent/GB1366013A/en not_active Expired
- 1972-11-08 JP JP11128272A patent/JPS535099B2/ja not_active Expired
- 1972-11-08 FR FR7240429A patent/FR2165408A5/fr not_active Expired
- 1972-12-13 DE DE2260850A patent/DE2260850C2/de not_active Expired
Patent Citations (2)
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)
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 |