DE2260850C2 - Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern - Google Patents
Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten MehrfachfehlernInfo
- Publication number
- DE2260850C2 DE2260850C2 DE2260850A DE2260850A DE2260850C2 DE 2260850 C2 DE2260850 C2 DE 2260850C2 DE 2260850 A DE2260850 A DE 2260850A DE 2260850 A DE2260850 A DE 2260850A DE 2260850 C2 DE2260850 C2 DE 2260850C2
- Authority
- DE
- Germany
- Prior art keywords
- bits
- data
- bit
- syndrome
- code
- 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.)
- Expired
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
d<Ja)i = äUah * dUt)i
auf /Spalten erweitert wurde, wobei
+ a(j,)i ein Element dieses Codes in der Zeile /
sowie
d(jb)i Elemente des erweiterten Codes in den beiden Spalten ja, jb eines Bitpaares sind,
und #Modulo-2-Addition bedeutet,
und daß gemäß der //-Matrix ein weiteres Prüfbit
(CT) als Paritätsbit über alle Daten- und Prüfbits gewonnen wird, so daß ein Bitpaarfehler aus dem
Wert CT=O und den Werten des Syndromvektors der zweiten Gruppe der Prüfbits (C 7 bis C12)
erkannt und korrigiert werden kann (Tabelle IV).
2. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet, daß beim Vorliegen eines Einzelfehlers
ein Teil (CT, CS) der Prüfbits der zweiten Gruppe anzeigt, welches Bit eines Paares fehlerhaft
ist
3. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet, daß die erste und die zweite
Gruppe von Prüfbits jeweils gleich viele Prüfbits enthalten.
4. Schaltungsanordnung nach Anspruch 1, dadurch gekennzeichnet, daß das erste Bit eines Bitpaares in
den numerisch aufeinanderfolgenden Datenbitpositionen (0 bis 63) jeweils aus der unteren Hälfte (d0
bis c/31) und das zweite Bit aus der oberen Hälfte (d 32 bis d 63) der Datenbits stammt
Bis vor kurzem wurde in der Computerindustrie als Hochgeschwindjgkeits-Arbeitsspeicher fast ausschließlich
der Magnetkernspeicher verwendet Herstellungsund 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 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 Herstellungskosten 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 36 4S239 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
Treiber- und 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
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 Halbleherplättdien
benutzt Außerdem ist die auch auf dem Halbleiterplä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, ι5
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 unwahrscheinlieh,
daß willkürliche Doppelfehler auftreten, d. h. Fehler, die im selben Codewort in zwei Bits auftreten,
die nicht zusammengehören.
Aus der DE-OS 19 46 365 ist eine Fehlererkennungsund Korrektureinrichtung bekanntgeworden, in der
mehrere, zu einem bestimmten Datenblock gehörende Datenbits korrigiert werden können. Dabei wird davon
ausgegangen, daß die einzelnen Datenblocks, aus denen sich ein Datenwort zusammensetzt, in zugehörigen
Speichermoduln, zusammen mit jeweils einem Prüfbit «
gespeichert sind. Für k Datenblocks werden also k Prüfbits erzeugt Zur Erzeugung der Prüfbits werden
aus den Datenbits k Untergruppen gebildet, wobei jedes Datenbit in einer Untergruppe nur einmal vorkommt
und jedes Datenbit in zwei Untergruppen enthalten ist und wobei keine zwei Untergruppen dasselbe Bitpaar
enthalten. Mit Hilfe dieser Codierung kann erkannt werden, ob Fehler vorliegen, die nur auf einen einzigen
Datenblock beschränkt sind, und es können die fehlerhaften Datenbits eines einzelnen Blocks korrigiert
werden.
Diese Einrichtung hat jedoch den Nachteil, daß die Zahl k eine Primzahl sein muß. Da diese Zahl zugleich
die Anzahl Prüfbits und auch die Anzahl der Datenblocks, d. h. die Anzahl von einzelnen Speicher- so
moduln, angibt, ist der beschriebene Code praktisch kaum realisierbar, da die Adressierung einer Datenverarbeitungsanlage
fast immer auf eine Anzahl von Speichermoduln ausgerichtet ist, welche eine Potenz
von 2 ist Beispielsweise könnten nach der bekannten Einrichtung bei der Verwendung von 13 Prüfbits 65
Datenbits vorgesehen werden, doch müßten diese Datenbits auf 13 Speichermoduln verteilt werden, die
jeweils fünf Bits des Datenwortes speichern würden. Andererseits könnten bei Verwendung von zwei
Datenbits pro Speichermodul insgesamt nur 14 Datenbits vorgesehen werden. Hierfür werden andererseits
7 Prüfbits notwendig. Auch dieser Fall ist also in der Praxis kaum in vorteilhafter Weise realisierbar, da
einerseits das Datenwort viel zu kurz und andererseits die Anzahl der Prüfbits unverhältnismäßig hoch wäre.
Der vorUegeftdeirErflniiungTIejit daher dfe Aufgabe
zugrunde, in einer Anordnung, der im Oberbegriff des Anspruchs 1 beschriebenen Art unter Verwendung der
in den heutigen Datenverarbeitungsanlagen gebräuchlichen Anzahl von Daten- und Prüfbits die Korrektur von
Doppelfehlern von zwei zusammengehörigen Datenbits zu ermöglichen.
Diese Aufgabe wird erfindungsgemäß durch die im Kennzeichen des Anspruchs 1 beschriebene Anordnung
gelöst
Die Erfindung hat den Vorteil, daß bei verhältnismäßig
niedriger Anzahl von Prüfbits nicht nur Einzelfehler erkannt und korrigiert sowie auch Mehrfachfehler
erkannt und korrigiert werden können, sondern daß auch fehlerhafte Bitpaare, d. h. zwei fehlerhafte,
zusammengehörige Bits korrigiert werden können. Zwischen den beiden Bits eines Paares besteht
voi-teilhafterweise ein gewisser Zusammenhang. Beispielsweise
können die beiden Bits eines Paares im gleichen Speichermodul gespeichert sein oder von einer
gemeinsamen Stromversorgung abhängen.
Mit der Erfindung ist es möglich, unter Beibehaltung
der gebräuchlichen Anzahl von 64 Datenbits in einem Datenwort die Anzahl der Prüfbits auf 13 zu
beschränken, wobei diese Prüfbits nicht zusammen mit gewissen Datenbitgruppen abgespeichert werden müssen.
Vorteilhafterweise werden die 64 Datenbits auf 32 Basisbetriebs-Speichermoduln aufgeteilt, doch sind auch
andere Gruppierungen denkbar, wobei allerdings die Erfindung ihre vorteilhafte Wirkung nur voll entfalten
kann, wenn eine hohe Wahrscheinlichkeit dafür besteht daß bei fehlerhafter Übertragung eines Bits auch das
andere Bit des Bitpaares fehlerhaft ist.
Ein Ausführungsbeispiel der Erfindung ist in der Zeichnung dargestellt und wird anschließend näher
beschrieben. Es zeigen
F i g. 1 und 2 ein Blockschaltbild einer Rechenanlage, in welcher die vorliegende Erfindung angewendet wird,
Fig.3 eine Paritätsprüfmatrix für ein (n=77, /=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 F i g. 3,
F i g. 5 in einem Blockschaltbild das Ausführungsbeispiel des in F i g. 1 allgemein gezeigten Syndromdecodierers,
Fig.6 ein Schaltbild der in Fig.5 gezeigten
Syndromgruppierungsschaltungen,
F i g. 7 ein Schaltbild der in F i g. 5 gezeigten Decodierschaltungen,
Fig.8 ein Schaltbild der in Fig.5 gezeigten
Generatoren für die korrigierten Daten und der in F i g. 1 gezeigten Datenkorrekturschaltungen,
Fig.9 ein Schaltbild der in Fig.5 dargestellten
Fehleranzeigelogik und
Fig. 10 und 11 Schaltbilder bestimmter Abschnitte
des in F i g. 2 gezeigten Prüfbitgenerators.
Vor der Beschreibung der Figuren wird zunächst die Fehlerkorrektur-Codeanordnung (FKC-Anordnung)
der Erfindung allgemein beschrieben. Diese Anordnung korrigiert Einzelfehler, zusammenhängende Doppelfehler
und erkennt nichtzusammenhängende Doppelfehler. Die FKC-Anordnung arbeitet mit Daten, die vom
Hauptspeicher abgerufen werden und mit Daten, die in den Hauptspeicher gesetzt werden.
Die verwendete FKC-Anordnung 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-Anordnungen 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ählte
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 0 zugeordnet. Im allgemeinen unterscheiden sich die Datenstellen in einer Redundanzgruppe von
den Stellen in jeder anderen Gruppe. 1 >
Auf dem Weg der aus dem Hauptspeicher abgerufenen Daten empfängt die FKC-Anordnung ein aus einem
Datenfeld und einem Eingabe-FKC-Feld (Paritätsprüfziffer) bestehendes Codewort. F i g. 1 zeigt diesen
Datenweg. Ein Syndromgenerator erzeugt ein Syndrombitfeld aus den codierten Daten und dem FKC,
welches genau so 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-FeId aus dem Hauptspeicher mit einem
entsprechenden Prüfbit des FKC-Feldes resultiert, welches in der FKC-Anordnung aus dem Datenfeld
erzeugt wurde. Verschiedene auf verschiedenen Code-Wörtern erzeugte SFV-Muster bezeichnen bestimmte
Fehlertypen.
Der SFV durchläuft dann verschiedene Decodierbereiche für die Fehlererkennung, Korrektur 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ückgespeichert
Die in F i g. 1 gezeigt? F.echcnanlage verfügt ühpr
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 C1,... C12 und CT
speichern, welche im Codiersystem benutzt werden. Im
Ausfühningsbeispiel wird berücksichtigt, daß jeder
Basisbetriebsmodul, im folgenden kurz als BBM bezeichnet aus einem Halbleiterplättchen besteht
welches eine Matrixanordming 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 and enthält außerdem Wort- und Bittreiberschaltungen sowie Abfrageverstärker nebst den übrigen Schaltungen, die zu einem solchen
Die Erfindung ist nicht auf die gezeigte Speicherart beschränkt. Der BBM kann eine diskrete Anordnung
von Kondensatoren oder Dioden auf Karten enthalten. Außerdem können die Moduln eine Magnetkernanordnung umfassen, wie sie in der US-Patentschrift
Nr. 34 36 734 beschrieben ist. Die vorliegende Erfindung ist auch nicht auf einen Speicheraufbau 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 Hcchgcschwindigkeitsspeicher !00 in Fig.!
wird auf übliche Weise durch den Adressendecodierer 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 120 aus. In F i g. 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 geladen. 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 0 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 »die 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 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 CI1 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 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
0 und Bit 34 oder Bit 31 und Bit CIl, ist wesentlich geringer. Somit werden die Einrichtungen der betrachteten Fehlerprüf- und Korrekturanordnung jeden
Einzelfehler und jeden zusammengehörigen Doppelfehler korrigieren, der im Codewort auftreten kann.
Außerdem erkennt die Anordnung jeden nichtzusammenhängenden Doppelfehler im Codewort
Die Signale von den Stellen 0 bis 63 werden auf dem Kabel 107 zum Syndromgenerator 109 geleitet Signale
von den Prüfbitstellen Cl bis CTwerden 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 Bhs mit S1,52... S12 und STnotiert 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
ST
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 r>
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 in 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
DatenkorrekturschaJtungen 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.
Wenn der Datenprozessor ein bestimmtes korrigiertes Codewort nicht mehr braucht, sendet er das
korrgierte Codewort über das in F i g. 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 0 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 C1 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 F i g. 1 gezeigten, in F i g. 2 der Klarheit halber
weggelassenen Adressendecodierer gesteuert
F i g. 3 zeigt die Anlage einer Paritätsprüfmatrix und den neuartigen Code der Erfindung. Die »//-Matrix«,
wie sie allgemein genannt wird, umfaßt η Bits, einen
Datenfeldteil des Codewortes und einen Prüf teil. Im vorliegenden Ausführungsbeispiel umfaßt das Datenfeld spy =
64 Bits, d(0) bis </(63) und das Prüffeld 12 Prüfbits, Cl
bis Cl2, und ein Gesamtparitätsbit CT. Jedem Bit des Codewortes wird ein Spaltenvektor in H mit der
Dimension rx 1 zugeordnet
Die Prüfbits sind den r= 13 Spalten vektoren zugeordnet, die Prüfsyndromspaltenvektoren (PSSV) genannt
werden. Diese PSSV Cl bis C12 bilden eine
Einheits-Untermatrix (r — 1) χ (r— 1), die in F i g. 3 unter
der Oberschrift »Prüfbitsteilen« 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-Spaltensteüen C1 bis
CT bezeichnet durch ihre entsprechende Zeile i worin
1 </<r=rist
Den Datenfeldbits d(0) bis d(63) des Codewortes
werden n—r=l Spaltenvektoren zugeordnet, die
Datensyndromspaltenvektoren (DSSV) genannt werden und eine rx / Untennatrix in diesem Tefl von H
bilden. Jede Stelle in einem DSSV entspricht ebenfalls einer bestimmten Zeile von H.
Die Syndrombits 51 bis 512 werden nach der folgenden Gleichung erzeugt:
Zeichen 1 in einer gegebenen Zeile / enthält; Ci das Prüfbit für die Zeile ;'; £ die Modulo-2-Summe über der
Zeile /'; und ^*die Modulo-2-Summe ist.
Das Syndrombit 51 kann so z. B. errechnet werden
durch Modulo-2-Addition über der Zeile 1 der Matrix nach folgendem Muster:
·■ Φά(21)Φ
■ Φ </(39) Φ
</(47) Φ rf(48) Φ...
(2)
Bas Syndrombit 57* wird über allen Daten- und Prüfbits erzeugt:
J-o
(3)
Für den Fall, in welchem kein Fehler vorliegt, ist es in der Codierung üblich, das Prüfbit Cl so zu wählen, daß
51 gleich 0 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.
| 51 | -0\ |
| 52 | = 0 |
| 53 | = 0 |
| 54 | = 0 |
| 55 | = 0 |
| 56 | = 0 |
| 57 | = 0 |
| 58 | = 0 |
| 59 | = 0 |
| 510 | = 0 |
| 511 | = 0 |
| 512 | = 0 |
| ST | = 0 |
= 0
Die //-Matrix der Fig.3 ist eindeutig, weil sie die
folgenden Eigenschaften hat:
1.
Si =
j-o
Jeder Einzelfehler oder zusammenhängende Doppelfehler im Codewort resultiert in einem
bestimmten, von 0 verschiedenen SFV, der die Erkennung und Korrektur des Fehlers gestattet
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
(1)
worin </ß), die Datenbitsteile in einer Spalte /ist, die ein
Die //-Matrix ist aus den in der nachfolgenden Tabelle I aufgeführten Elementen folgendermaßen
aufgebaut:
Konstruktion der //-Matrix
| Daten-Bitposilionen | Prüfbit- 5 | 10 | , (r-l)X(r-l) | 15 | 1 Xr |
| positioner) r | Einheitsmatrix | Matrix | |||
| 111 111 | |||||
| EFK EFK | |||||
| Code Code | |||||
| für 112 Datenbits (wiederholt) | |||||
| Minimalgewicht-3-Spalten | |||||
| EFK Code für 1/2 Datenbits - | |||||
| »verteilt« über Datenbits | |||||
| Feld für Gesamtparitätsprüfung | |||||
Nach der Darstellung in Tabelle 1 umfaßt die //-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 Datenbitsteile im Codewort nur eine andere Datenbitstelle 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, dh, die Bits mit demselben DSSV, können natürlich
jede Spalte 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 / Datenbits ausgedehnt. Der Ausdruck
»ausdehnen« ist für jedes Matrixelement durch die folgende Gleichung definiert:
//2), = J U)1
(S)
worin +d(j)j ein Element des Codes mit dem
Minimalgewicht 3 für die 1/2 Datenbits (des Originalcodes) ist, d(j)jund d(j+1/2), zusammenhängende
Elemente in dem Feld aus / Bits (des erweiterten Codes) abgeleitet von Gleichung
(5) sind.
Ein Feld STzur 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 beeinflussen 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.
0 12 3 4 5 6 7
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Prüfbitpositionen Cl Cl C3 C4 C5 C6
Sl 1111111
000000011111111100000000
52 11111111111111110000000000000001
53 00000000000000011111111111111111
54 11110000111100001111000011110001
55 11001100110011001100110011001100
56 10101010101010101010101010101010
0 12 3 4 5 6 7
| 1 | 0 | 0 | 0 | 0 | 0 | K) |
| 0 | 1 | 0 | 0 | 0 | 0 | K) |
| 0 | 0 | 1 | 0 | 0 | 0 | σ·) |
| 0 | 0 | 0 | 1 | 0 | 0 | O |
| 0 | 0 | 0 | 0 | 1 | 0 | OO |
| 0 | 0 | 0 | 0 | 0 | 1 | (Jl |
| O | ||||||
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2S 29 30 31
Prüfbitpositionen Cl C2 C3 C4 C5 C6
57 1111111111
111110000000100010111
58 00000001000101111111111111111111
59 11111111000000111111111100010000
510 11110000111101001111000011110001
511 11001101110011001100110111001010
512 10101011 101 1 10101010101010101 100
0
1
0
0
0
0
1
0
0
0
0
0 0 1 0 0 0
0 0 0 1 0 0
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 erschienen Varianten benutzt werden.
Aus dem Vergleich der Tabelle II mit der //-Matrix
der F i g. 3 ist zu ersehen, daß der EFK-Code der Tabelle
II genau der aus den Zeilen S1 bis 56 und den Spalten 0
bis 31 der Fig.3 zusammengesetzten Untermatrix sowie der aus den Zeilen 51 bis 56 und den Spalten 31
SFV =
und somit genau derselbe SFV, der durch das fehlerhafte Bit d(32) erzeugt wird.
Die zweite Eigenschaft ist auf die Tatsache zurückzuführen, daß Fehler in zusammengehörigen Bits sich
SFV =
welches derselbe SFV ist, der für die fehlerfreie
Bedingung erzeugt wird.
Bei Kombination mit dem erweiterten Code mit dem Minimalgewicht 3 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, soweit 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
| 51 | = l\ |
| 52 | = 1 |
| 53 | = 0 |
| 54 | = 1 |
| 55 | = J |
| (S6 |
bis 63 zusammengestzten Untermatrix entspricht
Dieses ist ein wiederholter EFK-Code.
Die wichtigen Eigenschaften dieses wiederholte!
EFK-Codes sind: Erstens ist ein Einzelfehler in dei Datenbits erkennbar, aber nicht korrigierbar, um
zweitens liefert ein zusammenhängender Doppelfehle unter den Datenbits dasselbe Syndrom wie de
fehlerfreie FaIL
Die erste Eigenschaft ist offensichtlich, da der SVF fü
die Syndrombits 51 bis 56 derselbe ist, wie für eil
gegebenes fehlerhaftes Datenbit und ein zugehöriges Datenbit Der SFV für ein fehlerhaftes Bit rf(O) ist z. B.:
selbst ausnullen in bezug auf den erzeugten SFV, wei der DSSV für die zusammengehörigen Bits derselbe ist
Das ist als Beispiel gezeigt für den Fall, in welchen
beide Bits d{0) und d{32) fehlerhaft sind:
jeder Spalte einer Paritätsprüfmatrix. So hat ein Codt mit dem Minimalgewicht 3 mindestens drei Einsen ii
jeder Matrixspalte. Die Tabelle III zeigt, daß diese Bedingung erfüllt ist Aus den grundlegenden Lehrsät
zen der linearen Algebra ist bekannt, daß zahlreich« andere Matrizen mit den Eigenschaften des Codes mi
dem Minimalgewicht 3 gefunden werden können. Se kann z. B. der Codevektor einer Spalte gegen dei
Codevektor einer anderen vertauscht werden, ohne dal
die Eigenschaften des Code verändert werden.
Wie bereits im Zusammenhang mit der Gleichung (5 erklärt wurde, wird der für 1/2 Datenbits ausgelegt'
Code mit dem Minimalgewicht 3 erweitert auf / Bits. Ii
der //-Matrix der F i g. 3 findet sich der erweiterte Codi
so in der Untermatrix, die die Prüffeldzeile 56 bis 512 um
die Datenbitsteilen 0 bis 63 umfaßt. Der Ausdrucl »erweitern« kann in Form einer Matrixadditioi
folgendermaßen dargestellt werden:
| Sl = l\ | Ψ | 51 = ly | = | io\ |
| 52 = 1 | 52= 1 | 0 | ||
| 53 =0 | 53 = 0 | 0 | ||
| 54 = 1 | 54= 1 | 0 | ||
| 55 = 1 | 55 = 1 | 0 | ||
| t56 = l, | 1*6=1, | Io j | ||
d (O)12.... </ (3I)12
d (O)12 .
</(32)7.
</(63)7
worin + d das Element des Code mit dem Minimalgewicht 3 in Tabelle III und t/das Element im erweiterten
Code in der //-Matrix der F i g. 3 bezeichnet. Für jedes
,2 ....</(63)12
c?-Element sind in Fig.3 zwei d-Elemente vorhandei
die die zusammenhängenden Bits sind. Aus der Anwendung der oben gegebenen allgemeii
nen Gleichung (5) lassen sich rf(O)7 und d(32)j aus 3(O)7
folgendermaßen errechnen:
rf (O)7 = rf (O)7 #rf(32)7
1 = 1 Φ 0
entsprechend
entsprechend
(9)
rf (O)8 = rf (O)8 *
0 = 0 Φ
0 = 0 Φ
rf(5)n = rf(5)„ * i/(37)„
1 = 0 # 1
1 = 0 # 1
rf(4)8 = rf(4)s # rf (35),
0 = 1 Φ 1
0 = 1 Φ 1
(10)
(H)
(12)
Daraus geht die große Wahlmöglichkeit für die Stellung der Bits in den Zeilen 57 bis 512, basierend auf
der Antivalenzfunktion, hervor. Die einzig wichtige Beschränkung liegt in der Stellung der Bits 57 und 58,
mit denen Einzelfehler unterschieden werden. Der SFV der Bits 51 bis 56 des wiederholten Code ist
bekanntlich für ein gegebenes fehlerhaftes Datenbit und
sein zugehöriges Bit derselbe, 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 57 und 58 sichergestellt, daß
der DSSV eines Datenbits sich in den Stellen 57 und 58
ίο von dem DSSV des zugehörigen Bits unterscheidet Die
einfachste Technik ist in F i g. 3 gezeigt Ein 1-Bit wird in die Stellen 57 oder 58 für die Bits 0 bis 31 und ein Bi; 0
in beide Stellen 57 und S 8 für die Bits 32 bis 63 mit Ausnahme von Bit 36 gesetzt Bit 36 hat ein 0-1-Muster
in 57 und 58. Die zugehörige Bitstelle 4 hat jedoch ein
1-1-Muster in 57 und 58. Somit ergibt jedes fehlerhafte
Datenbit einen eindeutigen DSSV anhand der Syndrombits 5 Ibis 58.
Grundsätzlich besteht die einzige Forderung für die EinzelfehJerkcrrckfor darin, da£ der DSSV eines Sits von dem des zugehörigen Bits verschieden ist Jedes andere der Syndrombits 58 bis 512 kann ebenso verwendet werden.
Grundsätzlich besteht die einzige Forderung für die EinzelfehJerkcrrckfor darin, da£ der DSSV eines Sits von dem des zugehörigen Bits verschieden ist Jedes andere der Syndrombits 58 bis 512 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 5 7 bis 512, Spalten 0 bis 63) der //-Matrix derselbe ist wie
der SFV eines fehlerhaften Einzelbits in Tabelle III. Daraus folgt z. B.:
30
| SFV | rf <0)> |
| 57 | = 1 |
| 58 | = 0 |
| 59 | = 1 |
| 510 | = 1 |
| 511 | = 1 |
| 512 | = 1 |
| = SFV[rf(0) | n\ | Φ rf(32) | 0\ | ] | — | η |
| = | 0 | 0 | 0 | |||
| = | 0 | 1 | 1 | |||
| = | 0 | •p* | 1 | 1 | ||
| = | 0 | 1 | 1 | |||
| = | W | U, | ||||
| = |
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 57
bis 512 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 einem 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 (CT, CS; £79, ClO; CIl,
C12) eindeutig durch die Syndrommuster von 57 bis
512 bezeichnet.
Ein Code mit einem Minimalgewicht von 2 kann nicht benutzt werden, weil ein nichtzusammengehöriger
Fehler in den Prüfbits, z. B. C9, ClI, nicht von einem
zusammengehörigen Doppelfehler in den Datenbits zu unterscheiden ist.
Das 57"-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 5T=0 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=I. Wenn ein Doppelfehler auftritt,
heben sich die Fehler gegenseitig auf, und ST=O.
In der vorliegenden FKC-Anordnung 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 in der vorliegenden FKC-Anordnung 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 einer einzigen FKC-Anordnung 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 Fehlerfreiheit, Einzelfehler
und Doppelfehler. In dem Fall, in welchem kein
Tabelle IV
Syndrommuster
Syndrommuster
Fehler auftritt, ist SFV=O. Bei einem Einzelfehler erzeugt jede Datenbitstelle ein eindeutiges Syndrommuster
in den Syndrombits 51 bis 58, wenn dieses Bit fehlerhaft ist
Fehlerbedingungen
SFV
51 52 54 55 56 57
59 510 511 512 ST
Kein Fehler
Einzelfehler
Ein Datenbit fehlerhaft
Einzelfehler
Ein Datenbit fehlerhaft
Ein Prüfbit Ci, fehlerhaft
(ausgenommen CT)
Einzelprüfbit CT fehlerhaft
(ausgenommen CT)
Einzelprüfbit CT fehlerhaft
Doppelfehler
Zusammengehörige Datenbits
fehlerhaft
fehlerhaft
Zusammengehörige Prüfbits
Ci, C(i + 1) fehlerhaft
Ci, C(i + 1) fehlerhaft
Fehler in zwei zusammengehörigen Datenbits oder in
einem Daten- und einem
Prüfbit*)
einem Daten- und einem
Prüfbit*)
Nichtzusammengehörige Prüfbits Ci, C(/ + m) fehlerhaft
(ausgenommen CT)*)
(ausgenommen CT)*)
Prüfbits Ci und CT fehlerhaft*)
0 0
0 0 0
Eindeutige,? Syndrommuster
S; = 1, Alle anderen Syndrombits = 0
Si = 0
Si = 0
0 0 0 • ♦ »unbeachtlich« ■
0 0 0 0 0 Eindeutiges Syndrommuster (Gew. 3)
5/ und S(i + 1) = 1, Alle anderen Syndrombits = 0
Mindestens Ein Syndrombit = I Nicht eindeutiges
Syndrommuster
Syndrommuster
S/ und S(i + m) = 1, Alle anderen Syndrombits
S/ = 1, Alle anderen Syndrombits = 0
S/ = 1, Alle anderen Syndrombits = 0
0 0
> 1
> 1
*) Für jeden nichtzusammengehörigen Doppelfehler wird ein anderer SFV erzeugt als für irgend einen Einzelfehler oder einen
zusammengehörigen Doppelfehler.
Die Syndrombits 59 bis 512 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 57 bis 58 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 57 und S 8 für jedes
Paar zusammengehöriger Bits unterschiedlich sind. Mit einer Ausnahme sind die Spaltenvektoren der Bits 31 bis
63 auf den Syndromstellen S 7 und 58 z. B. 0, wogegen
die Vektoren für die Datenbits 0 bis 31 mindestens eine 1 in einer der beiden Vektorpositionen S 7 und 58
enthalten. Daraus ist die erste wichtige gegenseitige Beziehung zwischen dem wiederholten EFK-Code, der
die Vektoren 51 bis 56 umfaßt, und dem erweiterten
Code zu ersehen, der die Positionen 57 bis 512 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 0 ist Die Syndrombits
5 7 bis 512 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 S1
so bis 56. 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 3
ausschlaggebend für die Korrekturfähigkeit, d.h., das
Erkennen zusammengehöriger Doppelfehler.
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 programmiert. Der Rechner
behandelte jeden möglichen Einzelfehler, zusammenhängenden Doppelfehler und nichtzusammenhängenden
Doppelfehler. Das Ergebnis des Programms 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 S1 bis ST zu erzeugen. Der Abschnitt
umfaßt eine baumartige Anordnung von Antivalenzschaltungen 140, 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 Syndrombits 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 im Register 103 gespeicherten Prüfbit verglichen. Eine Wertdifferenz zwischen diesen
beiden Prüfbits ergibt 5/= 1 und zeigt eine Fehlerbedingungan.
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 Fig.3
gezeigten Stellen in der //-Matrix. Somit werden für das gezeigte Cl-FeId die Antivalenzberechnungen durchgeführt
über den Datenbitsteilen 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 dsr
Schaltung 146 mit dem Bit in der Prüfbitstelle CX verglichen und ergibt eine Anzeige für 51. Eine ähnliche
Berechnung wird für jedes der Prüfbitfelder Cl bis CT
durchgeführt. Das Syndrombit ST ist ein Ergebnis der
Antivalenzberechnung über jeder Datenbit- und Prüfbitstelle in der //-Matrix. In einem betriebsfähigen
System können außerdem die zu bestimmten Datenbitstellen gehörenden Antivalenzschaltungen zur Berechnung
anderer Syndrombits benutzt werden, die über denselben Bitstellen errechnet werden.
Die im Syndromgenerator 109 codierten Syndrombits 51 bis Srwerden 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 nn, 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 Korrektu/system
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, Generateren 164 für korrigierte Daten und eine Fehleranzeigelogik
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 5^52, ..., STumgesetzt in 26
Ausgangssignale S\, Sl, S2,~S~2, ..., ST, ST. Neben
dieser Urnsetzungsfunktion enthält der Umsetzer 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, S 2 ST
über das Kabel 153 und die Verbindung 165 zur Fehleranzeigelogik 166 übertragen werden. Diese wird
später im Zusammenhang mit F i g. 9 genauer beschrieben. Die echten und komplementären Snydrombits 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 «nd also 51 -S2-53-S4,
Sl · S2 · S3 · S4, Sl · 52 · 53 ■ 54 usw. für diese
Gruppe von Syndrombits. Ähnliche Ausgänge sind vorgesehen für die Bitgruppen 55, 56, 57, 58 und 59,
510,511,512.
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 Kabel 159 dem Knotenpunkt 160
zugeleitet, von wo sie der Fehleranzeigelogik 166 und den Generatoren für korrgierte 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 Datenkorrekturschaltungen
114 (F i g. 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
UNDjfunktion für die Sätze (Sl, 51, 52, 52, 53, S3,
54, 54), (S5, S3,56, S^, S7, 57, SS, 58)und (59,39,
SlO1 SlQ, 511, STT, 512, 5Ί2>
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
Verbiiidungsblock 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 57! 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 263
sind bezeichnet mit Kd(O), K-d(\), ■ · ■, Kd Ausgangssignal
von einem dieser UND-Glieder besagt, daß der SFA eines entsprechenden Datenbits aufgetreten ist un<
markiert dadurch das Bit als fehlerhaft. Ein Ausgangs signal vom UND-Glied 200 besagt z. B, daß folgend
Funktion aufgetreten ist:
Kd(0) = Sl -52 -SZ -SA -55 -56 -57 -58 -59 -510-511 -512 -57".
(14)
Diese Funktion entspricht natürlich dem Datensyndrom-Spaltenvektor (DSSV), der in Fig.3 für das
Datenbit 0 gezeigt ist.
ίο .... Herder UND-Glieder 264 bis 276. Ein Ausgangssi
gnal vom UND-Glied 264 zeigt z. B. einen Fehler in C an, weil die Eingabefunktion folgende ist:
KC] = Sl -52 SZ -54 -55 -56 -57 -58 -59 -510-511 -512 · ST.
(15)
Aus einem Vergleich mit F i g. 3 ist zu ersehen, daß diese Funktion dem DSSV von C1 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 F i g. 3 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, di<
zu dem UND-Glied gehören, welches die jeweilig' Funktion erzeugt.
Die in Tabelle V gezeigten Muster sind ausführliche dargestellt als in den vorhergehenden Tabellen fü
zusammenhängende Doppelfehler. Es sind jedocl dieselben Muster; der wiederholte EFK-Code stellt ζ. Β
sicher, daß der SFV für die Bits 51 bis 56-0 ist fü
zusammengehörende Doppelfehler gemäß Tabelle V. Ii ähnlicher Weise gilt ST=O für zusammengehörend
Doppelfehler.
| Tabelle V | UND- | Eingabe SFV | S2 | Funktion | SA | SS | S6 | S7 | S8 | S9 | SlO | SIl | S12 | sr |
| Ausgabe- | Glied | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 0 | ||
| Anzeige | SI | 0 | S3 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 0 | |
| 277 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 0 | |
| Kd (0,32) | 278 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 |
| Kd (1,33) | 279 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 0 |
| Kd (2,34) | 280 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
| Kd (3,35) | 281 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 |
| ^d (4,36) | 282 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 0 |
| ^d (5,37) | 283 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 |
| ^d (6,38) | 284 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
| ^d (7,39) | 285 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 |
| ^d (8,40) | 286 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 0 |
| Kd (9,41) | 287 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
| -^d (10.42) | 288 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 |
| ■^d (11,43) | 289 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
| *<f(12.44) | 290 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
| Ad(13,45) | 291 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 0 |
| Kd (14,46) | 292 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| Kd (15,47) | 293 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 |
| ^d (16,48) | 294 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 0 | 0 |
| ^d (17,49) | 295 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 |
| ^d (1840) | 296 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
| ^(1941) | 297 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 |
| Kd (2042) | 298 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | 0 |
| ^i (2143) | 299 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
| ^d (2244) | 300 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
| ^d Q3 <5) | 301 | 0 | 0 | |||||||||||
| ^dC446) | 302 | 0 | 0 | |||||||||||
| Λ.ΑΓ1Ζ <"7Λ | ||||||||||||||
| UND- | 23 | 52 | 22 | Funktion | S4 | 60 | 850 | S7 SS | 59 | 24 | SlO | SIl | S12 | sr | |
| Glied | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | |||||||
| Fortsetzung | 0 | S3 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | ||||||
| Ausgabe- | 303 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | |||||
| Anzeige | 304 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | |||||
| 305 | Eingabe SFV | 0 | 0 | 0 | S5 | S6 | 1 | 0 | 0 | 0 | 1 | 0 | |||
| ^</(26,58) | 306 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | |||
| Ktiin.59) | 307 | Sl | 1 | 0 | 0 | 0 | 0 | 0 ( | 0 | 0 | 0 | 0 | 0 | ||
| K<1 (28,60) | 308 | 0 | Q | 0 | 1 | 0 | 0 | 0 ( | 0 | 0 | 0 | 0 | 0 | ||
| K-d (29,61) | 309 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ( | 0 | 0 | 0 | 0 | 0 | ||
| "w/(30.62) | 310 | 0 | 0 | ! | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ||
| ^d (31,63) | 311 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ( | 1 | 1 | 0 | 0 | 0 | ||
| Kc\.C2 | 312 | 0 | 0 | 0 | 0 | 0 | 0 | 0 ( | 0 | 0 | 1 | 1 | 0 | ||
| ^C5, C4 | 313 | 0 | 0 | 0 | 0 | ||||||||||
| ^CS, C6 | 314 | 1 | 0 | 1 | 1 | ||||||||||
| ^C7, Γ8 | η | 0 | 0 | ||||||||||||
| ^C9. ClO | 0 | 0 | 0 | ||||||||||||
| ^fIl, C12 | 0 | 0 | 0 | ||||||||||||
| 0 | |||||||||||||||
| 0 | ) | ||||||||||||||
| ) | |||||||||||||||
| ) | |||||||||||||||
| I | |||||||||||||||
| ) | |||||||||||||||
| ) | |||||||||||||||
F i g. 8 zeigt die Generatoren für korrigierte Daten 164 des Syndromdecodierers 112 und die Datenkorrekturschaltungen
114 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 0 bis 63 eine entsprechende Datenbitstel-Ie
0 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 0 eine richtige Bitanzeige, wenn entweder
Kd(O) oder Kd(o,22) vorhanden ist Ein Ausgangssignal
vom ODER-Glied 0 bedeutet, daß die Datenbitposition 0 fehlerhaft ist und geändert werden muß. Wenn
umgekehrt Kd (0.32) vorhanden ist, würden sowohl das
ODER-Glied 0 als auch das ODER-Glied 32 Anzeigen für die Korrektur der Bits in den Stellen 0 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 den 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
| Eingabe vom | Eingabe | Ausgabe |
| ODER-Glied | nicht kor | korrigierter |
| rigierter | Daten | |
| Daten |
Fehleranzeige
Anzeige
kein Fehler
kein Fehler
1
0
1
0
0
1
0
0
1
1
1
0
0
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 Signals auf der Leitung t/(0) der nicht korrigierten Daten.
Fig.9 zeigt die Fehleranzeigelogik 166, die den
möglichen Zustand eines Codewortes anzeigenden 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 0-Signal wird durch den Inverter 181 invertiert zur
Abgabe eines Signals »Kein Fehler«.
Ein Fehlersignal vom Block 180 wird über die Leitung
190 zum UND-Glied 189 übertragea Das andere Eingangssignal für das UND-Glied kommt vom
ODER-Glied 184 über den Inverter 185. Dem ODER-Glied 184 wird ein Signal von einem der
ODER-Funktionsblocks 182 oder 183 zugeführt Die Eingangssignale zum ODER-Block 182 umfassen die
Anzeigen für korrigierbare Doppelfehler Kdtp.32), ■·-,
Ken, C12, die von den Decodierschaltungen 158 über das
Kabel 159 übertragen werden (Fig.5). In ähnlicher
Weise gehören zu den Eingangssignalen des ODER-Blocks 183 die Anzeigen korrigierbarer Einzelfehler
Kd(O), ■■-, K(CT). Ein Ausgangssignal des Blocks 183 ist
eine Anzeige eines korrigierbaren Einzelfehlers; ein Ausgangssignal vom Block 182 ist eine Anzeige für
einen korrigierbaren zusammenhängenden Doppelfehler.
Wenn das Ausgangssignal des ODER-Gliedes 184 eine 0 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 Fig. 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 F i g. 4 gezeigten Syndromgenerator sehr ähnlich ist Die Prüfbits werden durch Antivalenzver-
den
10
15
knüpfung der Datenbitpositionen für das durch Code festgelegte jeweilige Prüfbitfeld erzeugt.
Fig. 10 zeigt das Feld Cl, welches in der //-Matrix
der F i g. 3 erschien. Die Antivalenzglieder 186,187 und 188, die im Block 128 gezeigt sind, haben dieselbe
Funktion wie die Antivalenzglieder in Fig.4. Das Prüfbit C1 steht in seinem zugehörigen BBM A.
F i g. 11 zeigt die zur Berechnung des Gesamtparitätsprüfbits
CTerforderliche Schaltung. Das Syndrombit ST wird bekanntlich im Syndromgenerator 109 aus allen
Daten- und Prüfbits errechnet. Auf den ersten Blick kann man den Eindruck 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 CTein Paritätsbit für ein ungerades
Spaltengewicht und seine Benutzung verbessert die Codiergeschwindigkeit und reduziert die Schaltungsanforderungen.
Aus einer Betrachtung der //-Matrix der F i g. 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 F i g. 3 gezeigten Code wird CT
folgendermaßen berechnet:
CT
dQ.) </(3) Φ d(5) Φ d{l) Φ </(8) Φ d(9) Φ
</(13) Φ rf(18) Φ d(\9) Φ d(20) Φ d(2l) Φ
rf(24) Φ d(25) Φ d(27) Φ d(29) Φ d(32) Φ
rf{34) Φ rf(38) Φ dQ9) Φ rf (40) Φ d(42) Φ
rf(44) φ rf(45) φ rf(47) Φ d(48) Φ d(50) Φ
d{52) Φ rf(54) Φ rf(56) Φ d(58) Φ d(59) Φ
(16)
40
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üf bits errechnet werden.
Die in F i g. 11 gezeigte Schaltung funktioniert ähnlich
wie die in Fig. 10 gezeigte. Die aus den Schaltungen so
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 CTwird dann im BBM G des Speichers 100 "55
gespeichert
Zur Erklärung der Arbeitsweise der erfindungsgemäßen
FKC-Anordnung wird zuerst angenommen, daß die
Datenbits und Prüfbits in den richtigen Stellen im Speicher 100 gespeichert sind Die Prüfbits wurden eo
durch den Prüfbitgenerator 128 in Fig.2 nach dem erfindungsgemäß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 Illustrationszwecken wird weiter angenommen, daß die
Daten in den Bitstellen 0 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):
20
25 SFV =
35
| '51 | = (T |
| 52 | = 0 |
| 53 | = 0 |
| 54 | = 0 |
| 55 | = 0 |
| 56 | = 0 |
| 57 | = 1 |
| 58 | = 0 |
| 59 | = 1 |
| 510 | = 1 |
| 511 | = 1 |
| 512 | = 1 |
| ST | = 0, |
(17)
Dieses Muster ist gemäß den obigen genaueren Ausführungen eindeutig für einen in den Datenbitsteilen
0 und 32 gespeicherten Doppelfehler. Dieses Syndrommuster wird vom Syndromgenerator 109 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
»Korrgierbarer Fehler« auf den Fehleranzeigeleitungen. In diesem speziellen Fall invertieren die Antivalenz-Glieder
0 und 32 in der Datenkorrekturschalcung 114 die Signalanzeige der nicht korrigierten Daten in
den Datenstellen 0 und 32. Am Ausgang der Datenkorrekturschaltungen 114 erscheinen 64 Signale,
die die richtigen Daten in jeder Datenspeichersteils 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 fiber 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.
Hierzu 8 Blatt Zeichnungen
Claims (1)
1. Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur Korrektur von
Einzel- und bestimmten Mehrfachfehlern in einer aus einem aus mehreren Basisbetriebsmoduln
bestehenden Speicher entnommenen Bitfolge mit einem eine Codiermatrix ^//-Matrix) zur Erzeugung
von r redundanten Prüfbits zu den zu speichernden 7
Datenbits enthaltenden Prüf bitgenerator, mit einem ι ο Syndromgenerator zur nochmaligen Erzeugung von
Prüfbits zu den entnommenen Datenbits mit Hilfe der gleichen //-Matrix und zum Vergleich der
gespeicherten mit den nochmalig erzeugten Prüfbits zur Erzeugung von Syndrombits und mit einem
Syndromdecodierer zur Steuerung einer Datenbitkorrekturschaltung aufgrund der. erzeugton Syndrombits,
dadurch gekennzeichnet, daß die /Datenbits den /Spalten der //-Matrix (F i g. 3) in
zwei Hälften zugeführt werden, daß für eine erste Gruppe von Prüfbits (Ci bis C6, obere Hälfte von
F i g. 3) die //-Matrix nach einem Einzelfehlerkorrekturcode
(EFK-Code) aufgebaut ist, wobei es für jedes Datenbit der ersten Hälfte (z. B. dÖ) ein und
nur ein Datenbit (W 32) in der zweiten Hälfte gibt
(»Bitpaar«), das den gleichen Spaltenvektor aufweist,
daß für eine zweite Gruppe von Prüfbits (C 7 bis C12, untere Hälfte von Fig.3 mit Ausnahme der
Zeile ST) die //-Matrix nach einem Code aufgebaut
ist, der aus einem beliebigen, für 1/2 Spalten definierten EFK-Code mit einem Minimalgewicht
von Drei (Tabelle III) durch die Erweiterungsbeziehung
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 DE2260850A1 (de) | 1973-06-20 |
| DE2260850C2 true 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) |
Families Citing this family (47)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3898443A (en) * | 1973-10-29 | 1975-08-05 | Bell Telephone Labor Inc | Memory fault correction system |
| US3893071A (en) * | 1974-08-19 | 1975-07-01 | Ibm | Multi level error correction system for high density memory |
| 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 |
| US4358848A (en) * | 1980-11-14 | 1982-11-09 | International Business Machines Corporation | Dual function ECC system with block check byte |
| US4359772A (en) * | 1980-11-14 | 1982-11-16 | International Business Machines Corporation | Dual function error correcting system |
| DE3164961D1 (en) * | 1981-03-11 | 1984-08-30 | Kb Alf Onnestam Alfadata | Method and apparatus, e.g. in a data distribution system for, inter alia, avoiding distortion in transfer of signal states |
| WO1983002345A1 (en) * | 1981-12-30 | 1983-07-07 | Chen, Chin-Long | Two bit per symbol sec/ded code |
| 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 |
| US5140595A (en) * | 1987-09-21 | 1992-08-18 | Cirrus Logic, Inc. | Burst mode error detection and definition |
| US4979173A (en) * | 1987-09-21 | 1990-12-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 |
| CN101803206B (zh) * | 2008-08-15 | 2013-09-04 | Lsi公司 | 近码字的rom列表解码 |
| JP5432367B2 (ja) | 2009-04-21 | 2014-03-05 | アギア システムズ インコーポレーテッド | 書込み検証を使用した符号のエラーフロア軽減 |
| 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 | 삼성전자주식회사 | 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법 |
| KR102717146B1 (ko) | 2018-11-19 | 2024-10-15 | 삼성전자주식회사 | 반도체 메모리 장치 및 이를 구비하는 메모리 시스템 |
| US11037647B1 (en) * | 2020-02-19 | 2021-06-15 | Semiconductor Components Industries, Llc | Systems and methods for updating memory circuitry |
| US11829614B2 (en) * | 2021-11-30 | 2023-11-28 | Samsung Electronics Co., Ltd. | Semiconductor memory devices and methods of operating semiconductor memory devices |
Family Cites Families (9)
| 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 |
| US3562709A (en) * | 1968-09-12 | 1971-02-09 | Rca Corp | Correction of block errors in transmission of data |
| 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 |
| 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 |
-
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 FR FR7240429A patent/FR2165408A5/fr not_active Expired
- 1972-11-08 JP JP11128272A patent/JPS535099B2/ja not_active Expired
- 1972-12-13 DE DE2260850A patent/DE2260850C2/de not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| GB1366013A (en) | 1974-09-04 |
| FR2165408A5 (de) | 1973-08-03 |
| US3755779A (en) | 1973-08-28 |
| JPS4866952A (de) | 1973-09-13 |
| DE2260850A1 (de) | 1973-06-20 |
| JPS535099B2 (de) | 1978-02-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE2260850C2 (de) | Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern | |
| DE2060643C3 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
| DE3125048C2 (de) | ||
| DE2328869C2 (de) | Verfahren und Schaltungsanordnung zum Betreiben eines digitalen Speichersystems | |
| DE2619159C2 (de) | Fehlererkennungs- und Korrektureinrichtung | |
| DE2357233C2 (de) | Adressenumwandlungseinrichtung | |
| DE3853206T2 (de) | Verfahren und gerät zur byteschreibfehlerkodierung. | |
| DE2132565C3 (de) | Umsetzer | |
| DE2724409A1 (de) | Datenverarbeitungssystem | |
| DE69126057T2 (de) | Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung | |
| DE2456709C2 (de) | Schaltungsanordnung zur Fehlererkennung und -korrektur | |
| DE3111447A1 (de) | Anzeigeschaltung fuer speicherschreibfehler | |
| DE2659031B2 (de) | Fehlerkorrektur- und -Steuersystem | |
| DE69904618T2 (de) | Detektionstechnik von speicherabschnittfehlern und einzel-, doppel und triplebitfehlern | |
| DE69317766T2 (de) | Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc) | |
| DE1250163B (de) | Einrichtung zur Paritätsprüfung von Speicherworten | |
| DE2320354C2 (de) | Schaltungsanordnung zur Erkennung und Korrektur von Fehlern in Bitgruppen | |
| DE2752377A1 (de) | Fehlerpruefeinrichtung | |
| DE2053836B2 (de) | Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen | |
| DE2549392B2 (de) | Verfahren zur erhoehung der zuverlaessigkeit von integrierten speicherbausteinen und zur verbesserung der ausbeute von nach aussen hin fehlerfrei erscheinenden speicherbausteinen bei ihrer herstellung | |
| DE2655653C2 (de) | Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher | |
| DE2104132B2 (de) | Anordnung zur Mehrfachfehlererkennung und Einzelfehlerkorrektur | |
| DE2134529A1 (de) | Verfahren zur fehlererkennung und -korrektur in aus dem speicher einer programmgesteuerten datenverarbeitungsanlage ausgelesenen informationswoertern | |
| DE1774225A1 (de) | Fehlerkorrekturschaltung | |
| DE4300025C1 (de) | Verfahren und Einrichtung zur fehlercodierenden Datenübertragung |
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 |