DE2916710C2 - - Google Patents
Info
- Publication number
- DE2916710C2 DE2916710C2 DE2916710A DE2916710A DE2916710C2 DE 2916710 C2 DE2916710 C2 DE 2916710C2 DE 2916710 A DE2916710 A DE 2916710A DE 2916710 A DE2916710 A DE 2916710A DE 2916710 C2 DE2916710 C2 DE 2916710C2
- Authority
- DE
- Germany
- Prior art keywords
- symbol
- word
- memory
- bit
- data
- 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; 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Error Detection And Correction (AREA)
Description
Die Erfindung betrifft ein Verfahren zum Schützen von in
einer Speicheranordnung gespeicherten Datenwörtern nach
dem Oberbegriff des Anspruchs 1 sowie eine Anordnung zur
Durchführung des Verfahrens.
Ein derartiges Verfahren ist bekannt aus der IBM Technical
Disclosure Bulletin, Vol. 10 No. 10, March 1968, S. 1486
u. 1487. Dabei wird ein Produktkode mit doppelseitiger
Paritätsbildung verwendet, wodurch in jedem Block von
5 × 5 Bit ein einziges Bit korrigierbar ist. Zweibitfehler
in derselben Spalte oder in derselben Zeile eines
Speicherworts können jedoch nicht korrigiert werden. Bei
diesem bekannten Korrekturverfahren werden nämlich die
ersten Redundanzbits lediglich zur Fehleranzeige, jedoch
nicht zur Korrektur verwendet, und diese erfolgt lediglich
mit den zweiten Redundanzbits.
Ein ähnliches Verfahren ist auch aus der IBM Technical
Disclosure Bulletin, Vol. 11 No: 4, September 1968, Seiten
391 u. 392 bekannt, wo ferner eine Anordnung angegeben
ist, die mit Hilfe von Exclusiv-Oder-Schaltungen die
Korrektur durch Invertierung des Wertes des als fehlerhaft
erkannten Bits durchführt. Auch hier sind nur
Einzelbitfehler korrigierbar und Zweibit-Fehler erkennbar.
Ein ähnliches Verfahren wird auch in IBM Technical
Disclosure Bulletin, Vol. 15 No. 4, September 1972, Seiten
1128 bis 1130 beschrieben. Dabei wird eine Realisierung
angedeutet, die schnell arbeiten soll, jedoch geht die
Fehlerkorrekturmöglichkeit und die Fehlererkennungsmöglichkeit
nicht über die anderen bekannten Verfahren
hinaus. Ferner wird in der US-PS 40 72 853 ein Verfahren
und eine Anordnung zu dessen Durchführung beschrieben,
wobei einzuspeichernde Datenwörter, die mit einem
Paritätsbit versehen sind, mit einer Paritätsmatrix
multipliziert werden, um weitere Prüfbits zu erzeugen, die
beim Auslesen zur Fehlerkorrektur verwendet werden
können. Dies erfolgt mit Hilfe von Syndrombits. Auch hier
sind die Möglichkeiten von Fehlerkorrektur und
Fehlererkennung begrenzt.
Schließlich ist in der DE-OS 24 56 709 eine Schaltung zur
Fehlererkennung und -Korrektur beschrieben, die modular
aufgebaut ist und relativ lange Datenwörter verwendet.
Dabei wird eine größere Anzahl redundanter Bits gebildet
und gespeichert, um Fehler in diesem Datenwort korrigieren
bzw. erkennen zu können. Auch dabei wird jedoch lediglich
ein Einzelbitfehler korrigiert und ein Doppelbitfehler nur
erkannt.
Aufgabe der vorliegenden Erfindung ist es, ein Verfahren
der eingangs genannten Art anzugeben, bei dem mit einer
begrenzten Anzahl redundanter Bits im Verhältnis zu der
Anzahl Bits der Datenwörter eine weitergehende Fehlerkorrektur
bzw. Fehlererkennung möglich ist, wobei die
Anzahl Bits der Datenwörter begrenzt ist.
Diese Aufgabe wird erfindungsgemäß durch die im kennzeichnenden
Teil des Hauptanspruchs angegebenen Merkmale
gelöst.
Durch die erfindungsgemäße Bildung und Verwendung sämtlicher
Redundanzbits für die Korrektur ist es möglich, mit
relativ wenigen Redundanzbits eine größere Anzahl von
Fehlern zu korrigieren bzw. als unkorrigierbar anzugeben,
wobei diese Fehler aber zumindest erkennbar sind.
Selbstverständlich sich auch hier Mehrbitfehler möglich,
die nicht erkennbar sind, wie dies auch bei bekannten
Verfahren der Fall ist, jedoch sind diese Fälle nicht
erkennbarer Fehler durch das erfindungsgemäße Verfahren
erheblich verringert.
Ausgestaltungen des erfindungsgemäßen Verfahrens sowie
eine Anordnung zur Durchführung des erfindungsgemäßen
Verfahrens sind in den weiteren Ansprüchen
gekennzeichnet.
Ausführungsbeispiele der Erfindung werden nachstehend
anhand der Zeichnung näher erläutert. Es zeigt
Fig. 1 ein Beispiel des Aufbaus eines Speicherworts,
Fig. 2 eine Paritätsmatrix,
Fig. 3 einen Teil einer Speicheranordnung,
Fig. 4 eine Anordnung zur Bildung eines
Korrektursymbols,
Fig. 5 den Aufbau eines Galoiskörpers,
Fig. 6 eine andere Ausführungsform als Fortsetzung zur
Schaltung nachh Fig. 3.
Es folgen nacheinander die Beschreibungen
des Aufbaus eines Speicherworts, der Verwendung
des Gesetzes der Galoiskörper, einer Paritätsmatrix, zweier
Systeme eines Speicheraufbaus, der Bestimmung der Änderung
für ein Korrektursymbol und der zulässigen Grenzen für die
Kapazität.
In Fig. 1 ist ein Beispiel der
Konfiguration eines Speicherworts dargestellt. In einem
einfachen Beispiel enthält ein Speicherwort 32 Datenbits
(00 bis 37), die auf vier Datenwörter von je acht Datenbits
verteilt sind. In der Figur steht jedes Datenwort auf einer
gesonderten Zeile und ist jeweils mit einem auf der gleichen
Zeilen angegebenen Paritätsbit A-D versehen. Weiterhin sind
mit dem betreffenden Speicherwort vier Korrekturbits
E-H verknüpft, die auf den vier gleichen Zeilen angegeben
sind. Einstweilen sei angenommen, daß die weiteren vier
Zeilen nicht vorhanden sind. Der Aufbau des Speichers wird
nicht näher beschrieben. Bei einem Lesezugriff von einem
Datenbenutzer erscheint an einem Ausgang des Speichers ein
Datenwort, beispielsweise die Bits 10, 11, 12, 13, 14, 15,
16, 17 und B. Das Bit B signalisiert, ob die Parität der
ausgelesenen Bitmenge richtig oder fehlerhaft ist. Ist die
Parität richtig, steht das Datenwort, möglicherweise zusammen
mit dem zugeordneten Paritätsbit, ungeändert für den
Benutzer zur Verfügung. Wenn die Parität dadurch richtig
ist, daß auf der gleichen Zeile zwei Inversionen eines
Bits aufgetreten sind, kann dies auf diese Weise nicht
detektiert werden. Die Möglichkeit eines derartigen
Doppelfehlers auf einer Zeile ist durch die beschränkte
Bitanzahl auf der gleichen Zeile und durch eine solche
Speicherung gering, daß die Fehler in den Bits einer
derartigen Zeile voneinander unabhängig sind. Es ist im
allgemeinen der Fall, wenn diese Bits auf gesonderten
integrierten Schaltungen (Chips) bzw. auf getrennten Druckverdrahtungsplatten
erfolgen. Dabei ist die Wahrscheinlichkeit
eines gleichzeitigen Auftretens zweier Fehler gleich
dem Produkt der einzelnen Wahrscheinlichkeiten. Auf einem
gleichen Chip bzw. auf einer gleichen Druckverdrahtungsplatte
müssen die Fehler nicht unabhängig sein. So kann eine
ganze Einheit ausschließlich "0"-Signale beim Auslesen
erzeugen (stuck at zero). Die Wahrscheinlichkeit eines
Fehlers ist dabei ½ bei beliebiger Datenspeicherung.
Eine derartige Einheit, außerhalb deren die Fehler stets,
aber innerhalb deren die Fehler nicht notwendigerweise gegen
seitig unabhängig zu sein brauchen, wird ein Isoliergebiet
für Fehler genannt (fault isolation area). Wenn die Parität
falsch ist, bedeutet dies, daß auf der betreffenden Zeile
eine ungerade Anzahl (1, 3 . . .) von Bitinversionen erfolgt
ist. Der Fall zweier oder mehrerer Inversionen wird inzwischen
nicht näher betrachtet. Bei der Detektion eines Fehlers
wird das ganze Speicherwort je vier Datenwörter ausgelesen,
also auch alle Bits 0-7, 20-27, 30-37 und die
zugeordneten Paritätsbits A, C, D. Außerdem werden die mit
dem betreffenden Speicherwort verknüpften Korrekturbits
E, F, G, H ausgelesen, also insgesamt vierzig Bits,
von denen acht redundant sind. An sich sind für ein Wort
aus vierzig Bits sechs redundante Bits ausreichend, um einen
einzigen Fehler zu korrigieren. Nachstehend wird beschrieben,
daß in bestimmten Fällen eine viel größere
Fehleranzahl mit der dargestellten Redundanz korrigiert
werden kann, so daß die benutzte Redundanz nicht übermäßig
groß ist. Andererseits würde für ein einziges Datenwort
von acht Bits eine Anzahl von vier redundanten Bits
erforderlich sein, um einen einzigen Fehler korrigieren zu
können. In bezug auf diese letzte Organisation ergibt das
besprochene System Redundanzverringerung. Die Bitstellen der
gleichen Spalte, also beispielsweise 4, 14, 24, 34,
brauchen dabei gar nicht unabhängig in ihrem Fehlerverhalten
zu sein. Dadurch können diese vier also jeweils beispielsweise
auf der gleichen integrierten Schaltung oder Printplatte
vorhanden sein. Die dargestellten vier Datenwörter
zusammen mit ihren redundanten Bits bilden ein Speicherwort.
Der Speicher kann eine Vielzahl dieser Speicherwörter enthalten.
Weiterhin ist es möglich, daß die Bits eines Datenworts
nicht unabhängig in ihrem Fehlerverhalten sind,
weil sie sich im gleichen Fehlerisolierungsgebiet
befinden, also beispielsweise je zwei und zwei. In
Übereinstimmung mit obiger Beschreibung gilt also nach
wie vor, daß je Datenwort nur ein einziger Fehler detektierbar
ist. Dies gibt also eine größere Möglichkeit des
Erscheinens unkorrigierbarer Fehler in der Situation
der bereits erwähnten "stuck at".
In Fig. 1 ist so angegeben,
daß die "oberen" vier Datenwörter in einer ersten Speicherbank
gespeichert sind. Weiter zeigt Fig. 1 eine zweite
Speicherbank, in der vier weitere Datenwörter mit Datenbits
40-47 . . . usw. und zugeordnete Paritätsbits I,
J, K, L gespeichert sind. Für das Lesen dieser Datenwörter
gilt dasselbe wie hinsichtlich einer fehlerfreien Situation
herangezogen wurde. In diesem erweiterten Fall jedoch
besteht der Speicher also aus zwei Speicherbänken, wobei
die Fehler in den einzelnen Bänken unabhängig sind. Die
vier Korrekturbits E, F, G, H beziehen sich jetzt auf
acht Datenwörter von insgesamt 64 Datenbits. Wenn jetzt
ein Fehler in einem dieser acht Datenwörter auftritt,
müssen sie alle acht einschließlich acht Paritätsbits
A-D, I-L und vier Korrekturbits E-H für die Korrekturausgelesen
werden. Für eine größere Bankenanzahl gilt
gleiches: die Redundanz kann dabei verhältnismäßig stets
kleiner werden, aber es zeigt sich, daß die Korrektur mehr
Zeit bzw. mehr Geräte erfordert, weil die gleichen Operationen
öfter durchgeführt werden müssen. Die Wahl zwischen
den verschiedenen Parametern (Anzahl der Datenwörter je
Speicherwort, Anzahl insgesamt arbeitender Speicherbanken)
wird durch die an den Speicher gestellten Anforderungen
bzw. durch die Möglichkeit eines Fehlers bestimmt. Schließlich
gilt noch ein bestimmter Zusammenhang zwischen der
Redundanzmenge, die zumindest erforderlich ist, und der
Anzahl von Datenbits je Speicherwort (das eine und das
andere noch abhängig von der Größe der Fehlerisolationsgebiete).
Dieser Zusammenhang wird weiter unten näher
erläutert.
Wie unten näher erläutert wird,
geben der Inhalt der Paritätsbits und der Korrekturbits
Informationen über den zu korrigierenden Fehler. Weiter
ist es möglich, daß ein Fehler unter ausschließlicher
Steuerung durch die Korrekturbits korrigiert wird, wobei
die Paritätsbits nur zur Signalisierung dienen. In diesem
Fall gelten bei der Korrektur bekannte Verfahren, aber
wird die Verwirklichung der Detektion durch die geringere
Anzahl von Datenbits je Datenwort vereinfacht. Für die
bevorzugte Ausführungsform werden die Informationen der
Paritätsbits bei der Korrektur mit verwendet.
Für die nähere Erläuterung der
Erfindung wird vom Begriff "Symbol" ausgegangen. In der
Konfiguration nach Fig. 1 besteht ein Symbol aus den vier
Bits entsprechender Rangordnung innerhalb von vier zusammengehörenden
Datenwörtern. So gibt die Reihenfolge der vier
Bits 06, 16, 26, 36, und auch die der vier Bits 40, 50, 60,
70 ein Symbol an. Die Reihenfolge ist für alle Symbole
gleich. Jedes Symbol kann hier alle Werte 0000-1111 besitzen.
Derartige Vierbitgrößen können als Elemente eines
sogenannten Galoiskörpers betrachtet werden. Die Bezeichnung
eines derartigen Körpers ist GF (2 M ) in diesem Fall mit
M = 4. Für die Elemente eines Galoiskörpers sind die vier
algebraischen Bearbeitungen definiert und beispielsweise
in einer Veröffentlichung von T. C. Bartee und D. I. Schneider
"Computation with finite fields" in Information and
Control, 6 (1963), S. 79 . . . 98 beschrieben. Ein wesentlicher
Unterschied zu den reellen Zahlen ist insbesondere,
daß ein Galoiskörper eine endliche Elementenanzahl betrifft,
in diesem Fall GF (2⁴) also sechzehn. In diesem
Zusammenhang zeigt Fig. 5 zwei verschiedene Benennungen der
Elemente von GF (2⁴), einerseits als Potenzreihe von
a(0, a⁰ . . . a¹⁴) und zum anderen auf zwei Weisen als eine
Binärzahl bzw. die zwei linken und die zwei rechten
Spalten.
Das Erzeugen der binären Darstellungen
wird an Hand zweier als Zähler arbeitender Schaltungen
erläutert. Die linke arbeitet mit dem sogenannten
primitiven und nicht reduzierbaren Polynom α⁴ + α + 1.
Jede Stufe 300 . . . 303 hat die Funktion des Speicherns und
Weiterleitens eines einzigen Bits. Weiter bildet die Stufe
302 bei der Aktivierung die Modulo-2-Summe der aus den
Stufen 300 und 303 erhaltenen Informationen. Die Aktivierung
der Stufen, wodurch jeweils die nächste Stellung erreicht
wird, erfolgt durch ein nicht angegebenes gemeinsames
Taktsignal (Stufen 300, 301, 303 arbeiten dabei als
1-Bitschieberegister). So werden zyklisch alle 15 Stellungen
(nicht 0000) gebildet. (Die Stufe 300 enthält das bedeutsamste
Bit.) Auf gleiche Weise arbeitet die rechte
Hälfte der Figur nach dem primitiven und nicht reduzierbaren
Polynom a⁴ + α³ + 1: dies ergibt eine andere
Darstellung. Es sei noch darauf hingewiesen, daß in beiden
Fällen die Größen a⁰, a¹, a², a³ voneinander linear unabhängig
sind.
Die Erfindung beschränkt sich
nicht auf einen bestimmten Wert von M, dieser kann sowohl
geringer als größer als vier sein. Für dreiwertige Logik
könnte beispielsweise das Galoisfeld GF (3⁴) benutzt
werden. Die primitiven Polynome sind jeweils entsprechend
verschieden. Nachstehend wird für die Elemente 0
(bitweise 0000) und a⁰ (bitweise 0001) die verkürzte Bezeichnung
0 bzw. 1 benutzt. Es sei noch darauf hingewiesen, daß
die Bezeichnung der Elemente des Galoiskörpers auch anders
sein kann, ohne daß die Zusammenhänge zwischen den entsprechenden
Elementen innerhalb dieses Körpers geändert
wird, so daß sich der Galoiskörper dadurch selbst auch
nicht ändert.
In Fig. 2 ist für den vorgeschlagenen
Kode ein Beispiel einer Paritätsmatrix [H]
gegeben. Jeder fehlerkorrigierende Kode kann vollständig
durch eine derartige Matrix beschrieben werden, denn es
gilt, daß für alle Kodewörter
die
Kodewörter stehen also orthogonal zu der Paritätsmatrix. Die
Matrix besteht aus Teilmatrizen oder "Blöcken" mit einer
Breite von (K + 1) Spalten, wobei K die Anzahl der
Datenbits in einem Datenwort ohne die Redundanz ist. Im
Beispiel nach Fig. 1 ist also K = 8. Die Anzahl der
Matrixblöcke L entspricht der Anzahl der Speicherbanken,
die in Fig. 1 gleich 2 war. Die Elemente der Matrix sind
Elemente des Galoiskörpers GF (2⁴). Vom ersten Block
enthält die erste Zeile die Elemente "1", nach obiger Beschreibung
also bitweise als (0001) geschrieben, vom zweiten
Block die zweite Zeile usw. Die zweitletzte Zeile des
letzten Blocks enthält die Elemente 1. Die Anzahl der
Zeilen ist damit um 1 größer als die Bankenanzahl des
Speichers und in diesem Beispiel also 3. Die letzte Zeile
aller Blöcke enthält in diesem Beispiel stets die gleichen
Elemente 1, a, a², . . . a K -1, 0. In einer anderen Ausführungsform
kann diese Reihe auch q 0, q 1, . . . q(K -1), 0 sein unter
der Bedingung, daß qi ≠ qj für 0 i, j K -1 und
i ≠ j und außerdem qi ein Element von GF (2 M ) ist, wie
oben beschrieben wurde. Es ist sogar zulässig, daß jeder
Block der Matrix seine eigene spezifische Reihenfolge q 0,
q 1 . . . q(K -1), 0 besitzt, wenn auch dies zum anderen zu
einer komplizierten Anordnung führen könnte. Insbesondere
bedeutet obiges, daß ein derartiger "Datenblock" nicht
alle verschiedene Elemente des betreffenden Galoiskörpers
zu besitzen braucht, weil die Länge der Datenwörter dazu zu
gering ist. Neben den erwähnten Blöcken enthält die Matrix
noch eine "allerletzte" Spalte mit den Elementen (0, 0, . . .
0, 1). Eine alternative Möglichkeit ist, daß die allerletzte
Spalte der Paritätsmatrix wie folgt lautet
(0, 0, . . . 0, 1, 1), wobei also zwei Elemente "1" vorhanden
sind, eins auf der letzten Zeile und eins auf einer
übrigen beliebigen anderen Zeile. Für die Reihe (1, a,
a² . . . a K -1, 0) kann also eine andere Folge eintreten. Die
Implikation dieser Wahl für die allerletzte Spalte wird
näher erläutert. So enthält die Paritätsmatrix die Spalten
0, 1, . . . {L(K + 1) + 1} und die Zeilen 0, 1 . . . L. Die
Rangnummern der Spalten werden durch {d(K + 1) + b)} gegeben,
worin d die Bank-(Block-)nummer und b die Rangnummer
innerhalb einer Bank ist. Die verschiedenen Banken
werden also durch d, 0 d L -1 und die Spalten in
einer Bank durch b, 0 b K gegeben. Die allerletzte
Spalte wird durch d = L und b = 0 gegeben. Das Beispiel nach
Fig. 1 ergibt also eine Matrix aus 19 Spalten und drei
Zeilen. Dagegen ist in Fig. 2 auch die Form einer derartigen
Matrix für mehrere Zeilen und Spalten dargestellt.
Dabei gibt die obere Hälfte dieser Figur den ersten und
den zweiten Block, die untere Hälfte den Anfang des dritten
Blocks, das Ende des zweitletzten Blocks, den letzten Block
und die allerletzte Spalte. In obiger Beschreibung können
die Zeilen der Paritätsmatrix ausgetauscht werden. Der
Effekt dabei ist, daß die Reihenfolge der Elemente des
später zu beschreibenden Syndromvektors geändert wird. Zum
anderen können in einem Datenblock die Spalten geändert
werden. Dies kommt auf die oben beschriebene andere
Reihenfolge der Elemente a⁰, a¹ . . . a K -1, 0 heraus. Schließlich
können die Datenblöcke ausgetauscht werden. Dies ist
der gleiche Effekt wie der Austausch der Zeilen. Das
Verschieben der allerletzten Spalte bedeutet nur eine andere
physikalische Ortung der Korrekturbits. Die Paritätsmatrix
[H] läßt sich jetzt allgemein beschreiben
als:
[H] = [L d(K +1)+b, i ]
worin 0 d L, 0 b K, 0 i L. Ebenso läßt
sich die transportierte Matrix derselben wie folgt schreiben:
[H T] = [h i, d(K +1)+b]
Die Kodewörter kann man betrachten, als enthalten sie
L(K +1)+1) Elemente (nach Fig. 1 also 19) oder Symbole, wobei
jedes Symbol ein Element von GF (2⁴) ist.
So enthält ein Kodewort also
jeweils die entsprechenden Speicherwörter aus den verschiedenen
Speicherbanken. Die Symbole werden nach dem
gleichen System wie die Spalten der Paritätsmatrix numeriert.
Es sei jetzt angenommen, daß ein einziges
Element mit dem Index f in bezug auf den richtigen Wert
gestört ist, was sich wie folgt schreiben läßt:
Hierin bedeutet der Vector das ungestörte Kodewort
das gestörte Kodewort und einen Vektor mit ebenfalls
19 Elementen in diesem Beispiel, von denen 18 den Wert 0
besitzen (also auch als 0000 schreibbar, siehe Fig. 5),
nur das Element mit dem Index f hat die Form des Symbols
e f , das nicht identisch gleich Null ist. An sich ist der
Wert dieses Symbols aus den vier Paritätsbits des betreffenden
Speicherworts bekannt, wobei es, wenn alle Bits des
fehlerhaften Symbols selbst auch fehlerhaft sind, den Wert
(1111) hat. Das Exklusiv-Oder-Zeichen ⊕ deutet an, daß die
Elemente (Symbole) von c und e f bitweise und modulo-2
addiert werden. Weiter kann auf bekannte Weise durch
Multiplikation mit der (stets zuvor bekannten) Paritätsmatrix
das Syndrom der Störung bestimmt werden:
Der Syndromvektor ist unabhängig von der Information
des ungestörten Kodeworts , weil wie bereits früher
angenommen · [H] immer gleich Null ist und weiter
ausschließlich lineare Operationen verwendet werden.
Der Syndromvektor besteht aus (L + 1) Elementen, im
Beispiel nach Fig. 1 also aus drei Elementen (Symbole) von
vier Bits. Die ersten L Elemente (hier also zwei) des
Syndromvektors werden im Falle einer derartigen
beschriebenen Störung alle bis auf ein identisch gleich
Null sein (0000). In diesem Fall hat dieses eine eben den
Wert von e f und bildet eines der zwei benötigten Daten
für die Fehlerkorrektur (das Störungssymbol). Die Daten,
welches dieses L Elemente ungleich Null ist, wird durch
die Banknummer im Speicher bestimmt, in dem der Fehler
detektiert wurde, und diese bestimmt damit den Wert von d
aus der Formel:
f = d(K + 1) + b
Hierin ist f der Ort der Störung bzw. des Fehlers und d
und b die Banknummer bzw. die Stelle in der Bank. Für die
Bestimmung von f muß auch der Wert von b bekannt sein.
Der Wert des letzten Elements (im Beispiel nach Fig. 1
das dritte) des Syndromvektors wird durch
gegeben. Hierin ist wiederum der Störungsvektor mit 18
Elementen (0000) und ein Element, das nicht identisch Null
ist, sondern den Wert e f (Symbol) hat. Weiter ist g f das
Element der unteren Zeile (im Beispiel das dritte) und der
Spalte mit dem Rang f der Paritätsmatrix. Aus diesen beiden
Daten e f und e f · g f kann auf bekannte Weise g f bestimmt
werden, wodurch in der eben angegebenen Formel der Wert von
b bekannt ist. Das Bestimmen von g f auf diese Weise kann
auf verschiedene Weisen erfolgen, beispielsweise durch die
Adressierung eines Speichers mit unveränderbarem Inhalt.
Im Beispiel nach Fig. 1 können e f und e f · g f je sechzehn
verschiedene Werte haben, so daß eine Speicherkapazität
von 256 Wörtern genügt. An den Wortstellen ist der Wert
von b gespeichert, der also von Null (0000) bis 8 (1000)
läuft.
Eine zusätzliche Wortinformation
kann für einen mehrfachen Fehler belegt werden, so
daß eine Wortlänge von vier Bits notwendig ist. Ein
anderes Verfahren, daß insbesondere beim Aufbau nach Fig. 2
verwendbar ist, besteht darin, daß e f wiederholt mit a¹ multipliziert
wird, bis eine Gleichheit mit e f · g f entsteht und die
Anzahl der Multiplikation den Rang der Fehlerposition
angibt. Dabei ist es selbstverständlich möglich, daß
e f · g f schon direkt gleich e f ist, so daß die Anzahl Null
der erwähnten Multiplikationsoperationen erforderlich sind.
Bei der Detektion eines Fehlers wird also zunächst das
gestörte Kodewort nach an sich bekannten Techniken der
Matrixmultiplikation mit der auf geeignete Weise gespeicherten
Paritätsmatrix multipliziert. Aus diesem Syndromvektor
werden dann der Wert von d (hier 0 oder 1),
das Störungssymbol e f das Produktsymbol des Störungssymbols
e f und des (Such-Lokator)symbols g f bestimmt, wobei
die Kombination des Störungssymbols und des Produktsymbols
zusammen den Störungssucher b und damit den Störungsvektor
liefern. Die Paritätsmatrix kann dabei in einem
Teil eines als Festwertspeicher ausgeführten Steuerspeichers
gespeichert sein.
In obiger Beschreibung gilt noch
ein Zusammenhang (der erfüllt werden muß) zwischen der
Anzahl der Datenwörter je Speicherwort und der Anzahl von
Bits je Datenwort. Dieser Zusammenhang wird weiter unten
beschrieben. Wenn dieser erfüllt ist, kann ein beliebiger
Störungsvektor , der einen Einbitfehler in einem
Datenwort (einschließlich des Paritätsbits desselben)
zur Folge hat, mit hundertprozentiger Möglichkeit detektiert
werden. Die allerletzte Spalte der Paritätsmatrix hat dabei
die Form 0, . . . 0, 1. Ein Fehler in einem Korrekturbit
(E, F, G, H in Fig. 1) wird dabei jedoch nicht detektiert.
Es ist dabei notwendig, daß der ganze Speicher periodisch
gelesen wird und daß dabei die Korrekturbits auf ihren
richtigen Wert geprüft werden. Wenn dies unterbleibt, kann
ein aufgetretener Fehler mit Hilfe eines selbst auch gestörten
Korrekturbits erneut fehlerhaft korrigiert werden. Eine
Lösung für dieses Problem wird weiter unten beschrieben.
Wenn in obiger Beschreibung nur eine Speicherbank vorhanden
ist, besitzt der Syndromvektor also nur zwei
Elemente.
Fig. 3 zeigt einen Speicher mit
zwei Banken, Korrekturmöglichkeit für einziges Fehlersymbol
je Speicherwort ohne die Detektion von Fehlern in den
Korrektursymbolen. Die Banken enhalten die Modulen 1-3
bzw. 4-6. Jedes Datenbit sowie das Paritätsbit eines
Benutzerworts ist auf jeweils einem gesonderten Modul, beispielsweise
auf einem integrierten Speicherchip gespeichert.
Der Einfachheit halber gibt die Figur daraus nur eine
Auswahl. Der Modul 1 enthält das erste Datenbit des ersten
Datenworts (00 in Fig. 1) in der Speichermatrix 10 mit dem
Adressenregister 11 und dem Datenpufferspeicher 12. An
sich ist dieser Modul von einem herkömmlichen Typ. Weiter
sind das erwähnte Adressenregister und der Datenpufferspeicher
nicht unbedingt notwendig. Durch eine ankommende
Adresse auf der Adressenleitung 13 ist ein einziges
Datenbit in der Speichermatrix adressierbar. Weiterhin
enthält der Modul 2 das letzte Datenbit des ersten
Datenworts (07 in Fig. 1) in der Matrix 20 mit dem Adressenregister
21 und dem Datenpufferspeicher 22. Die zwischenliegenden
Modulen sind der Kürze halber fortgelassen.
Der Modul 3 enthält das Paritätsbit des ersten Datenworts
(A in Fig. 1) in der Speichermatrix 30 mit dem Adressenregister
31 und dem Datenpufferspeicher 32. Die übrigen
Datenwörter des gleichen Speicherworts können auf gleiche
Weise wie das erste Datenwort in den beschriebenen Moduln
gespeichert sein, und dies gilt auch für andere Speicherwörter.
Die Moduln 1 (. . .) 2, 3 der ersten Speicherbank
werden zusammen durch die Leitung 80 aus dem Dekoder 9
ausgewählt. Eine logische "1" darauf kann die Funktion
eines Freigabesignals haben. Auf entsprechende Weise
enthält der Modul 4 das erste Datenbit des ersten Datenworts
in der zweiten Speicherbank (40 in Fig. 1), der
Modul 5 das letzte Datenbit dieses Datenworts und der
Modul 6 das zugeordnete Paritätsbit. Auch von der zweiten
Speicherbank sind die übrigen Moduln wieder fortgelassen.
Die Moduln 4 (. . .) 5, 6 und die übrigen Moduln der zweiten
Speicherbank werden zusammen durch ein Signal auf der
Leitung 81 auf dem Dekoder 9 ausgewählt, der damit einen
1-aus-2-Kode erzeugt.
Alle betreffenden Moduln können entsprechend aufgebaut
sein. Bei der Verwendung von Moduln mit einer Kapazität
von 4 Kilobits (4096 Wörter von je 1 Bit) und einer
Organisation nach Fig. 1 enthält dabei der Speicher 8192
Datenwörter von je acht Datenbits plus einem Paritätsbit,
die in 2048 Speicherwörter eingeteilt sind. Der Modul 7
enthält jeweils die Informationen aller Korrekturbits
(E, F, G, H in Fig. 1) je Speicherwort und hat also eine
Kapazität von 1024 Wörtern von je vier Bits. Es ist
selbstverständlich möglich, den Modul 7 aus vier im übrigen
entsprechenden Elementen aufzubauen, mit je einer
Kapazität von 1024 Wörtern von je 1 Bit. Für eine größere
Kapazität kann die Speicherkonfiguration entsprechende
Erweiterung bekommen.
Wenn eine Datenverarbeitungsanordnung
83 einen Speicherzugriff haben möchte, übergibt
sie auf der Leitung 84 eine Adresse zum Speicher, die aus
einer Bankadresse (in diesem Beispiel einem Bit) zum
Dekoder 9, einer Speicherstellenadresse (in diesem Beispiel
also 10 Bits) auf der Leitung 85 und einer Datenwortnummer
(im Speicherwort) besteht, also in diesem Beispiel zwei
Bits auf der Leitung 86. Das ausgelesene Datenwort erscheint
als acht Bits parallel auf der Leitung 87 und das
zugeordnete Paritätsbit auf der Leitung 88. Die Leitungen
87 und 88 aus entsprechenden Moduln der verschiedenen
Banken werden bitweise zusammengenommen, beispielsweise
jeweils in einer verdrahteten Oderfunktion. Die Datenverarbeitungsanordnung
83 kann einen herkömmlichen Aufbau
haben.
In der Datenverarbeitungsanordnung
83 wird auf übliche Weise aus den erhaltenen
neun Bits die Parität bestimmt, beispielsweise mit
EXCLUSIV-ODER-Logik. Weiter enthält die Verarbeitungsanordnung
ein Datenregister 96, in das das ankommende Datenwort
vorübergehend gespeichert wird. Wenn die Parität
richtig ist, wird das Datenwort für Weiterverarbeitung
verfügbar. Ist die Parität fehlerhaft, wird die Information
der Banknummer und der Datenwortnummer zyklisch
aufgezeichnet, beispielsweise dadurch, daß das Adressenregister
82 hinsichtlich dieser drei Bits als ein Zähler
eingerichtet ist, der in aufeinanderfolgenden Taktimpulszyklen
weiterzählt. Die (im Beispiel also acht) ankommenden
Datenwörter werden alle vorübergehend in die mit dem
Register 96 verbunden und der Kürze halber nicht weiter
angegebenen Register gespeichert. Die zwei Bits auf der
Leitung 86 gehen zum Selektor 89 weiter. Solange kein
Fehler detektiert wird, hat dies keine weiteren Folgen,
denn dabei werden möglicherweise auf der Leitung 92
erscheinende Daten von der Verarbeitungsanordnung übergangen.
Die Zehnbitspeicherwortadresse
geht als Adressensignal zum Modul 7. Wenn ein Fehler
detektiert ist, sendet die Verarbeitungsanordnung 83 auf
der Leitung 90 ein Freigabesignal zum Modul 7, wodurch
dabei die dem betreffenden Speicherwort zugeordneten vier
Korrekturbits adressiert werden. Sie werden vorübergehend
im Register 91 gespeichert. In der Zwischenzeit empfängt
der Selektor 89 die zyklisch umlaufenden Wortnummerdaten
und befördert unter deren Steuerung jeweils eines der vier
Korrekturbits aus dem Register 91 auf der Leitung 92 zur
Verarbeitungsanordnung 83, die aufeinanderfolgend alle 76
Bits aus der Anordnung nach Fig. 1 erhält. Anschließend
erfolgt die Korrektur an Hand der obigen Beschreibung in
folgenden Schritten:
a) Zunächst wird das zu korrigierende Datenwort mit der
Paritätsmatrix zum Erzeugen des Syndroms s multipliziert.
Die Paritätsmatrix ist beispielsweise in ein Teil eines
Festwertspeichers der Verarbeitungsanordnung 83 gespeichert
und hat folgende Form:
Durch die Multiplikation entsteht der Syndromvektor.
Matrixmultiplikation ist eine in der Digitaldatenverarbeitung
herkömmliche Technik und wird der Kürze halber nicht
näher erläutert.
b) Anschließend werden die Werte der drei Elemente s 0,
s 1, s r des Syndromvektors bestimmt, wobei folgende
Möglichkeiten auftreten.
Der Fall 1 gibt an, daß kein
Fehler vorhanden ist, und kann also beispielsweise als
Ergebnis einer zusätzlichen Prüfung gefunden werden. Die
Fälle 2, 3 und 4 geben an, daß der Fehler nicht in einem
Datensymbol aufgetreten ist und daß das adressierte Datenwort
ohne Korrektur für Verwendung geeignet ist.
Die Fälle 5 und 6 geben an, daß das Datenwort korrigiert
werden muß. Wenn beispielsweise ursprünglich ein Datenwort
der Bank 0 adressiert war, kann grundsätzlich der Fall
3, 4 oder 6 nicht eintreten; auch der Fall 4 wird also
nur bei einer Prüfungsoperation gefunden. Nur in den Fällen
5 und 6 muß das Datenwort stets korrigiert werden.
Die Stelle des Fehlers wird durch die Vektorteilung s r:
s (1,0) = a i gegeben. Diese Teilung ist wiederum bei der
Algebra der Galoiskörper definiert.
c) Wenn der Wert von i bekannt ist und die Verarbeitungsanordnung
benötigt nur das ursprünglich adressierte
Datenwort, braucht nur das Bit entsprechend dem Rang
i invertiert zu werden (denn es wurde ein Fehlerbit in
diesem Wort detektiert). Wenn das ganze Speicherwort verwendet
wird, muß das gefundene Symbol e f beim betreffenden
Datensymbol bitweise und jeweils modulo-2 addiert
werden.
Das Ergebnis der erwähnten
Korrektur ist einerseits ein korrigiertes Datenwort und
zum anderen ein Korrekturwort, das beispielsweise als
sieben Informationen 0 und eine Information 1 auf
einer von der erwähnten Größe i bestimmten Stelle
gespeichert werden kann. Dieses Korrekturwort, das die
gleiche Struktur wie ein Datenwort hat, wird gespeichert,
(einschließlich der Banknummer der Bank, in der der
Fehler aufgetreten war), und außerdem wird durch geeignete
statistische Maßnahmen gespeichert, wie oft ein
bestimmtes Korrekturwort aufgetreten ist. Bei einem bestimmten
Saldo kann angenommen werden, daß ein bestimmter
Modul mit Gewißheit den Fehler ergibt, und kann das
Korrekturwort den Zustand des vorgegebenen Korrektursymbols
bekommen, um den Fehler damit bei seiner Detektion in
einem Datenwort direkt zu korrigieren. Dies erspart
selbstverständlich die Zeit, die sonst dafür verwendet
werden müßte, die übrigen Datenwörter auszulesen und den
bereits erwähnten Syndromvektor zu bestimmen.
Wenn zum anderen in der Fig. 3
ein neues Datenwort geschrieben werden muß, empfängt die
Leitung 84 der Verarbeitungsanordnung wiederum eine Dreizehnbitadresse,
die aus Banknummer, Speicher, Wortadresse
und Datenwortnummer besteht. Die Lese/Schreibsteuerung
des Speichers ist nicht getrennt dargestellt. In einem
ersten Arbeitsschritt wird das an der betreffenden Datenwortstelle
gespeicherte Datenwort ausgelesen, auf einen
Fehler geprüft und wenn nötig auf gleiche Weise korrigiert,
wie bereits erläutert wurde, und nach möglicher Korrektur
im Achtbitregister 94 gespeichert. Dieses Register kann
außerdem dargestellten Eingang auch (oder sogar ausschließlich)
einen Eingang aufweisen, der mit einem Ausgang
des Registers 96 in der Verarbeitungsanordnung 83 verbunden
ist, um von da an das korrigierte ausgelesene Datenwort
zu erhalten. Der Kürze halber ist diese letzte Verbindung
nicht angegeben. Außerdem werden, auch wenn im
ausgelesenen Datenwort kein Fehler detektiert ist, unter
der Steuerung eines Freigabesignals auf der Leitung 90 die
vier Korrekturbits des betreffenden Worts aus dem Modul
70 ausgelesen und in das Register 91 geschrieben. Anschließend
wird die Information des neu einzuschreibenden
Datenworts über die mehrfache Leitung 93 auf die entsprechenden
Moduln übertragen und außerdem auf den
Paritätsbitgenerator 79, der auf Grund der erhaltenen
Datenbits ein Paritätsbit erzeugt, was wiederum auf
herkömmliche Weise mit Exklusiv-Oder-Logik erfolgen kann.
Das Paritätsbit wird mit den Datenbits in den betreffenden
und ebenfalls (über die Leitung 84) adressierten Modul 3
bzw. 6 eingeschrieben. Gleichzeitig gelangt die neue
Information zusammen mit den noch im Register 94 gespeicherten
alten Informationen zum bitweise arbeitenden Modulo-2
Addierer 97. Das Ergebnis (8 Bits) gelangt an den
Symbolgenerator 95 und wird darin in ein Vierbitsymbol
umgewandelt, wie weiter unten an Hand der Fig. 4 näher
erläutert wird. Diese Umwandlung erfolgt dadurch, daß das
Datenwort (W 0 . . . W 7) mit einer aus den Größen (a⁰ . . . a⁷)
aufgebauten Matrix multipliziert wird. Das Ergebnis ist
ein Vierbitsymbol aus GF (2 M ). Dieses Symbol wird im
Multiplizierer 98 mit einem weiteren Vierbitsymbol (a j )
multipliziert, wobei der Wert der Exponenten j durch die
Datenwortnummer im Speicherwort bestimmt wird, was dem
Multiplizierer 98 über die Leitung 86 zugeführt wird, und
aus dem die Modifikation für die Korrekturbits hervorgeht:
Diese Modifikation wird im Element 99 bitweise und
Modulo-2 zum Inhalt des Registers 91 addiert; das Endergebnis
wird anschließend in den Modul 70 (neu) geschrieben,
wobei die Adressierung noch durch das Signal auf der
Leitung 85 versorgt wird. Auch hinsichtlich des Modul 70
ist die Lese-Schreibsteuerung nicht getrennt dargestellt.
Nachstehend wird ein anderes
Ausführungsbeispiel gegeben, bei dem auch die Korrekturbits
mitkontrolliert werden. Es wird folgende Paritätsmatrix
verwendet, bei der wiederum das einfache Beispiel
nach Fig. 1 gilt:
Insbesondere tritt in den Datenblöcken in der letzten
Zeile das Element a⁰ nicht mehr auf, weil die Elemente
mit a multipliziert sind. Weiter enthält die neunzehnte
Spalte auf der zweiten Zeile (es kann selbstverständlich
auch die erste Zeile sein) das Element 1, wodurch gleichsam
die Korrekturbits einen Teil der Speicherbank 1 bilden.
Wie vorausgesetzt kann statt der Potenzreihe {a . . . a⁸} eine
andere Folge der Elemente von GF (2 M ) genommen werden; dies
gilt auch für die zweite "1" in der allerletzten Spalte
(011), die faktisch das Symbol a⁰ dargestellt, wobei auch
eine andere, im zugeordneten Datenblock einmalige Exponente
auftreten darf. Der Vorgang bei der Fehlerdetektion ist
zunächst gleich, wenn auch die drei Elemente ( s ⁰, s ¹, s r)
des Syndromvektors jetzt folgende Bedeutungen haben:
Hier gelten weiter die gleichen
Erwägungen und Operationen wie beim bereits beschriebenen
Beispiel. Der Unterschied ist insbesondere, daß der Fall
6 jetzt nicht getrennt einen Fehler im Korrekturmodul
signalisiert. Das geänderte Signalisierungssystem hat
selbstverständlich Folgen für die Anordnung, wie sie in
Fig. 3 dargestellt ist, und eine dazu erweiterte Anordnung
ist in Fig. 6 dargestellt. In diesem Beispiel werden die
Paritätsbits der Bank 0 (Matrix 30) auf der Basis des
Dateninhalts der betreffenden Datenwörter bestimmt, aber
für die Bank 1 sind die Korrekturbits für den Wert des
Paritätsbits (es ist eben die "1" in der zweiten Zeile
und in der neunzehnten Spalte der obengegebenen Tabelle)
mitbestimmend sind. Die Korrekturbits selbst werden
nicht durch den Wert der Paritätsbits mitbestimmt.
In der Fig. 6 ist der Ausgang des Paritätsbitgenerators
79 also nur mit dem Modul 3 (Matrix 30) der Bank 0
verbunden. Weiterhin ist in Fig. 6 die Serienschaltung
der Elemente 94, 97, 95, 98, 99 und die der Elemente 91
und 89 entsprechend der Fig. 3. Die Behandlung der Paritätsbits
in der Bank 1 ist jedoch jetzt wie folgt:
Wenn ein neues Datenwort gespeichert
werden muß, wird wieder im Element 97 die
bitweise Exklusiv-Oder-Funktion der Datenbits des alten
und des neuen Datenworts gebildet. Wie bereits beschrieben
wurde, werden mit Hilfe der Serienschaltung der
Elemente 95, 98 und 99 die möglicherweise geänderten
Korrekturbits des betreffenden Speicherworts hier im
Modul 70 gespeichert. Statt des Moduls 6 gibt es für die
Speicherung der Paritätsbits der Bank 1 eine Matrix 60 A
mit dem Adressenregister 61 A. Diese hat die gleiche
Kapazität wie die bereits erwähnte Matrix 60, aber jetzt
nicht die dort als Beispiel erwähnte Konfiguration von
4096 Wörtern von je 1 Bit, sondern die gleiche Konfiguration
wie die Matrix 70, also beispielsweise 1024 Wörter
von je vier Bits. Sie sind jeweils wortweise adressierbar
durch die zehn Adressenbits auf der Leitung 85. Bei
einer Leseaktion in der Bank 1 werden unter der Steuerung
eines Freigabesignals auf der Leitung 81 die betreffenden
vier Paritätsbits aus der Matrix 60 A und auch die vier
Korrekturbits aus der Matrix 70 ausgelesen. Diese acht
Bits werden in den entsprechend aufgebauten Registern
91 und 101 vorübergehend gespeichert. Hinsichtlich der
Matrix 70 ist die Funktion der Leitung 90 jetzt von der
Leitung 81 übernommen worden. Die Selektoren 89 und 102
erhalten die zwei Adressenbits auf der Leitung 86 und
gewähren bei einer normalen Leseaktion nur ein Paritätsbit
auf der Leitung 88 und ein Korrekturbit auf der
Leitung 92 zur Verarbeitungsanordnung 83. Diese Anordnung bestimmt
auf gleiche Weise, wie bereits beschrieben wurde,
die Parität des ausgelesenen 8-Bit-(Bank 0) bzw. 9-Bit-
(Bank 1)-Worts. Ist die Parität einwandfrei, wird die
Information für Weiterverarbeitung verfügbar. Beim Lesen
aus der Bank 0 wird für die Berechnung der Parität die
gleiche Schaltung benutzt, wobei ein blindes Korrekturbit
simuliert wird, das die Parität nicht beeinflußt. Wenn
die Parität falsch ist, werden wiederum mit Hilfe zyklischer
Änderung der Adressen auf den Leitungen 80, 81, 86
die 76 Bits des Speicherworts ausgelesen und wird die
Korrektur wie bereits beschrieben ausgeführt (unter Berücksichtigung
der geänderten Paritätsmatrix).
Bei der erwähnten Speicherung
eines neuen Benutzerworts werden immer die Matrizen 70
und 60 A zunächst dadurch ausgelesen, daß ein Signal
in diesem Sinne auf der Leitung 90 A der Verarbeitungsanordnung
im ODER-Gatter 78 mit dem Signal der Leitung 81
kombiniert wird. Die ausgelesenen Korrekturbits werden dem
Element 99 zugeführt. Das Element 103 erhält aus dem Element
97 die bitweise Modulo-2-Summe des alten und des neuen
Datenworts (8 Bits) und bildet daraus ein einziges Paritätsbit
auf gleiche Weise wie das Element 79 (letzteres ist
nur wirksam, wenn das neue Datenwort im Modul 0 Platz findet).
Das Paritätsbit des Elements 103 wird im Element 104 mit
der Größe a j multipliziert. Die Exponente j hat den
gleichen Wert wie die Datenwortnummer im Speicherwort
(also 0 . . . 3), und die Größe a j ist damit in Fig. 2
gegeben. Alle Größen a j (0 j 3) sind wie bereits erwähnt
untereinander linear unabhängig. Der Wert von j wird als
das Zweibitsignal (00, 01, 10, 11) auf der Leitung 86
zugeführt. Die zwei Adressenbits werden zu einem Vierbitsymbol
umkodiert. Wenn das Paritätsbit "0" ist, ist das
Ergebnis der Multiplikation selbstverständlich "0000".
Das Gatter 106 wird durch die Leitung 81 gesteuert und ist
undurchlässig, wenn das neue Datenwort für die Bank 0
bestimmt ist. Das Element 105 erhält dabei selbstverständlich
"0000". Der Modul 105 ist ein Vierbit-Modulo-2-Addierer
und erhält aus dem Element 98 den einzuführenden Vierbitänderungsvektor
für die Korrekturbits, der zum
Vierbitänderungsvektor für die Parität der Datenbits
addiert wird, wie sie im Element 104 bestimmt war. Dies
gibt den insgesamt einzuführenden Änderungsvektor für die
Paritätsbits. Das Element 100 ist ein Vierbit-Modulo-2-
Addierer und zählt die erwähnte Änderung zu den Paritätsbits
des Registers 101, so daß die neuen Paritätsbits
für die Matrix 60 a zum Einschreiben verfügbar werden. Die
Lese-Schreibsteuerung für diese Matrix ist der Kürze halber
nicht angegeben.
In Fig. 4 ist ein Beispiel einer
Schaltung dargestellt, die beim Einschreiben eines neuen
oder geänderten Datenworts an einer Wortstelle einer Speicherstelle
die zu die der Wortstelle gehörende Korrekturinformation
aktualisiert. Die Schaltung ist für das
einfachere Beispiel nach Fig. 3 aufgebaut und enthält
daraus insbesondere die Elemente 97, 95, 98 und 99. Die weiteren
Elemente der Schaltungen nach Fig. 3 und 6 zum
Erzeugen der Korrektur/-Paritätsbits haben teilweise
einen herkömmlichen Aufbau und teilweise einen entsprechenden
Aufbau wie in Fig. 4 dargestellt. Die Schaltung
enthält dreiundzwanzig Exklusiv-ODER-Gatter 201 . . . 223
und vierundzwanzig NICHT-UND-Gatter 224 . . . 247. Ein neues
Datenwort wird bitweise den Eingängen 248 . . . 255 zugeführt.
Die Speicherwörter werden als gemäß Fig. 1 aufgebaut angenommen.
Zusammen damit wird das bisher gespeicherte Datenwort
bitweise den Eingängen 256 . . . 263 zugeführt. Jedes
Exklusiv-ODER-Gatter der Folge 201 . . . 208 erhält also zwei
Bits entsprechender Bedeutsamkeit. Auf diese Weise ist
das Element 97 gebildet. Wenn der zuvor leere Speicher
gestartet wird, ist das gespeicherte Datenwort 0 . . . 0.
Die bei der Kodierung benutzte Paritätsmatrix wird wie
folgt geschrieben:
Für die ersten zwei Matrixzeilen
bedeutet dies, daß die Parität des Datenworts einschließlich
des Paritätsbits gerade sein muß. Für die
Bestimmung der von der dritten Zeile der Matrix gestellten
Bedingung sei daran erinnert, daß jedes Element des
Galoiskörpers GF (2 M ) = GF (2⁴) geschrieben werden kann
als eine lineare Kombination der ersten vier Elemente
a⁰, a¹, a², a³ von GF (2⁴) oder in dieser Hinsicht jeder
vier beliebigen Elemente von GF (2⁴), wenn nur diese vier
ein linear unabhängiges System bilden. Es können also zum
Beispiel die Vierbitelemente c (9a + b) des Kodeworts wie
die folgende Summe mit j als Variable wie folgt geschrieben
werden:
Das Korrektursymbol wird gefunden als
Substitution von (1) in (2) ergibt:
Dies bedeutet, daß die Summe der Beiträge der einzelnen
Datenwörter zu den Korrekturbits die Korrekturbits bilden.
Dies ergibt selbstverständlich eine verhältnismäßig einfache
Schaltung, weil beim Ersetzen eines alten Datenworts
durch ein neues nur diese zwei Reihen von Bits zu berücksichtigen
sind. Der Beitrag zum Datenwort mit der Nummer j
der Speicherbank mit der Banknummer a ist also
Beim Einschreiben eines neuen Datenworts braucht nur der
Beitrag des Unterschieds zwischen dem alten und dem neuen
Datenwort zu den Korrekturbits addiert zu werden, die schon
vorhanden sind, weil alle Beziehungen linear sind. Die
erwähnte Summierung
wird im Element 95 durchgeführt. Wenn wir nämlich die
Ausgangssignale der Gatter 208 . . . 201 in Fig. 4 in dieser
Reihenfolge mit w 0 . . . w 7 bezeichnen, so wird daraus
folgende Multiplikation gebildet:
zum Vierbitsymbol v . Vom Galoiskörper sind die ersten
acht Elemente ≠ 0 nach der linken Hälfte der Fig. 5
benutzt.
Es folgt daraus direkt:
v 0 = w 0 ⊕ w 4 ⊕ w 7
v 1 = w 1 ⊕ w 4 ⊕ w 5 ⊕ w 7
v 2 = w 2 ⊕ w 5 ⊕ w 6
v 3 = w 3 ⊕ w 6 ⊕ w 7
v 1 = w 1 ⊕ w 4 ⊕ w 5 ⊕ w 7
v 2 = w 2 ⊕ w 5 ⊕ w 6
v 3 = w 3 ⊕ w 6 ⊕ w 7
Die ODER-Gatter 209 . . . 216 bilden hier folgende Funktionen:
209: w 6 ⊕ w 7; 210: w 5 ⊕ w 2; 211: w 1 ⊕ w 5; 212: w 4 ⊕ w 7.
216: v 0; 215: v 1; 214: v 2; 213: v 3.
216: v 0; 215: v 1; 214: v 2; 213: v 3.
Durch diese Elemente wird somit
der Symbolgenerator 95 aus der Schaltung nach Fig. 3 verwirklicht.
Das Symbol
v = (v 3 v 2 v 1 v 0) muß anschließend mit ª j multipliziert
werden, der Wert von j ist in Binärform gegeben und wird
in diesem Beispiel nicht umkodiert, sondern eine jede der
beiden Bitpositionen der Datenwortnummer steuert eine der
zwei Stufen, aus denen das Element 98 aufgebaut ist.
Wenn der Anschluß 264 eine
logische "0" erhält, was eine gerade Datenwortnummer angibt,
sind die Gatter 224, 226, 228, 230 durchlässig und wird die
Größe v über die entsprechenden Gatter 232, 233, 234, 235
an die zweite Stufe ungeändert weitergeleitet.
Wenn der Anschluß 264 eine
logische "1" erhält, was eine ungerade Datenwortnummer angibt,
sind die Gatter 225, 227, 229, 231 durchlässig, und
die Größe v wird mit dem Symbol ª multipliziert:
(v 3, v 2, v 1, v 0) × ª = (v 2, v 1, v 0 ⊕ v 3, v 3),
wobei die erwähnte Exklusiv-ODER-Funktion durch das Gatter
217 gebildet wird und die Ergebnisse über die entsprechenden
Gatter 232, 233, 234 und 235 zur folgenden Stufe
weitergeleitet werden.
Wenn die Anschlüsse 264 und
265 beide eine logische "0" erhalten, sind auch die
Gatter 236, 238, 240, 242 durchlässig (ein Kreis bezeichnet
einen invertierenden Eingang/Ausgang), und die
Größe v wird über die entsprechenden Gatter 244, 245,
246, 247 zum Ausgang ungeändert weitergeleitet.
Wenn im letzten Fall jedoch
der Anschluß 265 eine logische "1" empfängt, was die
Datenwortnummer (10) angibt, sind die Gatter 237, 239,
241, 243 durchlässig, und die Größe v wird mit dem
Symbol ª² multipliziert: (v 3 v 2 v 1 v 0) × ª² = (v 1, v 0
⊕ v 3, v 2 ⊕ v 3, v 2), wobei die erwähnten Exklusiv-
ODER-Funktionen durch die Gatter 218 und 219 gebildet werden
und die Ergebnisse über die entsprechenden Gatter
244, 245, 246, 247 zum Ausgang weitergeleitet.
Wenn die Wortnummer (11) ist,
wird auf entsprechende Weise gebildet:
(v 3 v 2 v 1 v 0) × ª² = (v 1, v 0 ⊕ v 3, v 2 ⊕ v 3, v 2) × a = (v 0 ⊕ v 3, v 2 ⊕ v 3, v 1 ⊕ v 2, v 1).
Auf diese Weise ist der Modul
98 aus der Schaltung nach Fig. 3 verwirklicht.
Die Ausgangssignale der Gatter
244 . . . 247 werden bitweise modulo-2 zu den Korrekturbits
addiert, die an den entsprechenden Eingängen 266, 267,
268, 269 erscheinen. Die neuen Korrekturbits erscheinen vor
Neueinschreibung an den entsprechenden Ausgängen der
Gatter 220 . . . 223. So ist der Modul 99 aus der Schaltung
nach Fig. 3 verwirklicht. Die Schaltung nach Fig. 4 kann
noch durch den Zusatz eines Taktimpulssystems synchronisiert
werden, aber dies ist der Kürze halber nicht näher
erläutert.
Nachstehend folgt noch eine
Betrachtung über die verschiedenen Speicherparameter.
Es wird folgendes definiert:
X ist die Anzahl der Benutzerbits (nicht redundant) in
einem Speicherwort (in Fig. 1 : 32).
Y ist die Anzahl der Bits eines Speicherworts, die in einem einzigen Isolierungsgebiet für Fehler gespeichert wird (in der vorangehenden Beschreibung stets 1, aber hier werden auch höhere Werte betrachtet).
K ist die Anzahl der Datenbits (nicht redundant) in einem Datenwort (in Fig. 1 also 8).
Z X/Y ist die Anzahl der Isolationsgebiete für Fehler, auf die die Datenbits verteilt sind.
L ist die Anzahl der Speicherbanken.
Q ist die Anzahl der Datenbits eines Datenworts, die in einem einzigen Isolationsgebiet für Fehler gespeichert ist.
Y ist die Anzahl der Bits eines Speicherworts, die in einem einzigen Isolierungsgebiet für Fehler gespeichert wird (in der vorangehenden Beschreibung stets 1, aber hier werden auch höhere Werte betrachtet).
K ist die Anzahl der Datenbits (nicht redundant) in einem Datenwort (in Fig. 1 also 8).
Z X/Y ist die Anzahl der Isolationsgebiete für Fehler, auf die die Datenbits verteilt sind.
L ist die Anzahl der Speicherbanken.
Q ist die Anzahl der Datenbits eines Datenworts, die in einem einzigen Isolationsgebiet für Fehler gespeichert ist.
Wenn zumindest soviel Isolationsgebiete
vorhanden sind als ein Datenwort Datenbits besitzt,
werden je Datenwort alle Datenbits in einem einzelnen Isolationsgebiet
gespeichert: Q = 1 und L = Z/K. Wenn die
Anzahl der Datenbits je Datenwort zumindest zweimal größer
als die Anzahl der Isolationsgebiete ist, wählt man für
eine einzige Bank (L = 1) und Q = K/Z. Manchmal benutzt
man aus technologischen Gründen im ersten Fall Q < 1,
dabei ist die Anzahl der Banken: L = Z · Q · K -1.
Die Spalten der benutzten
Paritätsmatrix müssen alle voneinander verschieden sein.
Bei einer einzigen Speicherbank gibt es nur zwei Zeilen in
der Paritätsmatrix. Die Elemente sind Elemente von GF (2 M )
und dafür gibt es 2 M verschiedene Möglichkeiten. Bei einer
einzigen Speicherbank und wenn die Korrekturbits nicht
auch in die Parität mit hineinbezogen sind, kann die
Anzahl der Spalten der Matrix (maximal) 2 M + 1 sein, also
17 im Fall nach Fig. 1; es bezieht sich dabei also auf
fünfzehn Datenbits, ein einziges Paritätsbit und ein einziges
Korrekturbit. Denn in diesem Fall enthält die Spalte
für die Korrekturbits alle Elemente "0" bis auf eins und
bestimmt also abweichend von allen anderen Spalten. Wenn
die Korrekturbits mit in die Parität hineinbezogen sind,
kann die Anzahl der Spalten höchstens 2 M betragen und ist
die Anzahl der Datenbits also höchstens um jeweils eins
niedriger (in Fig. 1 also 14). In der Formel also:
K 2 M -1 und K 2 M -2.
Wenn mehrere Bits Q in einem
einzigen Isolierungsgebiet für Fehler gespeichert sind,
gelten
K Q (2 M -1) bzw. K Q (2 M -2).
Es stellt sich hier also heraus,
daß bei einer größeren Anzahl der Datenwörter je Speicherwort
(M größer) auch die Länge der Datenwörter größer
sein darf. Gleiches gilt, wenn Q größer wird.
Claims (6)
1. Verfahren zum Schützen von in einer Speicheranordnung
gespeicherten Datenwörtern vor Speicherfehlern,
wobei jeweils eine feste Anzahl Datenwörter mit je einem
ersten Redundanzbit ein Speicherwort bilden, das außerdem
zweite Redundanzbits enthält, wobei ein Einbitfehler in
einem Datenwort mit dem ersten Redundanzbit detektiert und
durch Heranziehen des Inhaltes des danach ausgelesenen
ganzen Speicherworts korrigiert wird, sowie unkorrigierbare
fehlerhafte Datenwörter erkannt werden,
dadurch gekennzeichnet, daß das ganze Speicherwort, in dem
die Bits übereinstimmende Bitstellen der Datenwörter eines
Speicherworts jeweils ein Datensymbol, die ersten
Redundanzbits ein erstes Redundanzsymbol und die zweiten
Redundanzbits ein zweites Redundanzsymbol bilden, wobei
alle Symbole Elemente desselben Galoiskörpers bilden, in
dem sie zusammen in einem einzelsymbolfehlerkorrigierenden
Kode definiert sind,
multipliziert wird mit der durch den einzelsymbolfehlerkorrigierenden
Kode bestimmten Paritätsmatrix, wodurch
wenigstens ein erstes und ein zweites Syndromsymbol
entstehen, von denen das erste Syndromsymbol angibt, in
welchem Datenwort oder welchen Datenwörtern einschließlich
der zugehörenden Redundanzbits ein Fehler liegt, und aus
dem zweiten Syndromsymbol mittels Division durch das erste
Syndromsymbol ein Suchersymbol gebildet wird, das das
fehlerhafte Symbol angibt, und daß unter Auswertung des
Suchersymbols und des ersten Syndromsymbols das fehlerhafte
Datenwort korrigiert wird oder das fehlerhafte
Datenwort als unkorrigierbar erkannt wird.
2. Verfahren nach Anspruch 1, wobei die Speicheranordnung
in L-Speicherbänke unterteilt ist,
dadurch gekennzeichnet, daß jede Speicherbank für jedes
Speicherwort ein eigenes erstes Redundanzsymbol und alle
Speicherbänke für Speicherwörter an einander
entsprechenden Speicherplätzen ein gemeinsames zweites
Redundanzsymbol enthalten.
3. Verfahren nach Anspruch 2,
dadurch gekennzeichnet, daß die Paritätsmatrix für jede
Speicherbank eine Teilmatrix aufweist, von der jede
L - 1 Zeilen mit ausschließlich Nullsymbolen, eine Zeile,
die für verschiedene Teilmatrizen einen unterschiedlichen
Rang hat, aus ausschließlich 1-Symbolen und eine weitere
Zeile enthält, die für jede Teilmatrix aus untereinander
verschiedenen Symbolen besteht, wobei jede Teilmatrix
gleichviele Spalten wie Datenbits pro Datenwort aufweist
und die Paritätsmatrix eine letzte Spalte aufweist, die in
der Höhe der weiteren Zeile ein nicht-Null-Galois-Symbol
und außer höchstens einem weiteren Symbol a⁰
ausschließlich Nullen enthält.
4. Verfahren nach Anspruch 3,
dadurch gekennzeichnet, daß die weitere Zeile jeder
Teilmatrix gleich ist.
5. Anordnung zur Durchführung des Verfahrens nach
einem der Ansprüche 1 bis 4, mit einem Speicher mit
Datenwortstellen einschließlich je einer ersten Redundanzbitstelle,
von denen jeweils eine vorgegebene Anzahl eine
Speicherwortstelle bildet, die jeweils mehrere zweite
Redundanzbitstellen enthält, mit einem Detektor zum
Erkennen eines Einbitfehlers mittels der ersten Redundanzbits
und mit einer Korrekturanordnung, die bei einem
erkannten Fehler die weiteren Datenwortstellen einschließlich
der ersten Redundanzbits und alle zweiten Redundanzbits
der Speicherwortstelle ausliest und das Speicherwort
korrigiert oder als unkorrigierbar angibt,
dadurch gekennzeichnet, daß die Korrekturanordnung einen
Matrixmultiplizierer zum Multiplizieren des Speicherworts,
bei dem alle gleichrangigen Bits des Datenworts je ein
Datensymbol und alle ersten bzw. zweiten Redundanzbits ein
erstes bzw. ein zweites Redundanzsymbol bilden, mit einer
Paritätsmatrix aufweist und ein erstes und zweites
Syndromsymbol erzeugt, daß eine Dividieranordnung vorgesehen
ist, die ein Quotientensymbol aus dem ersten und dem
zweiten Syndromsymbol erzeugt, das ein Suchersymbol
darstellt, und daß eine Dekodieranordnung aus dem Suchersymbol
einen Ranganzeiger zur Angabe eines fehlerhaften
Datensymbols oder Redundanzsymbols bildet, wobei die
Korrekturanordnung in diesem Symbol das Bit des durch das
erste Symbol angegebenen Datenworts invertiert oder das
Datenwort als nicht korrigierbar angibt und daß der
Multiplizierer, die Dividieranordnung und die Dekodieranordnung
auf Elemente desselben Galoiskörpers arbeiten,
in dem die Symbole als Elemente eines einzelsymbolkorrigierenden
Kodes definiert sind.
6. Anordnung nach Anspruch 5,
dadurch gekennzeichnet, daß bei Verwendung eines
Lese-Schreib-Speichers Exklusiv-Oder-Schaltungen vorgesehen
sind, um durch bitweises Kombinieren eines ausgelesenen
und eines einzuschreibenden Datenworts ein
Änderungswort als Teil einer Reihe von Änderungssymbolen
zu bilden, und daß ein zweiter Matrixmultiplizierer
vorgesehen ist, um die Reihe von Änderungssymbolen mit
einer zur Paritätsmatrix inversen Generatormatrix zum
Bilden wenigstens eines weiteren Änderungssymbols für das
zweite Redundanzsymbol zu multiplizieren, und daß zweite
Exklusiv-Oder-Schaltungen vorgesehen sind, um ein
vorhandenes zweites Redundanzsymbol mit dem weiteren
Änderungssymbol zu modifizieren.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
NL7804674A NL7804674A (nl) | 1978-05-02 | 1978-05-02 | Geheugen met detektie en korrektie van fouten. |
Publications (2)
Publication Number | Publication Date |
---|---|
DE2916710A1 DE2916710A1 (de) | 1979-11-08 |
DE2916710C2 true DE2916710C2 (de) | 1989-03-09 |
Family
ID=19830766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19792916710 Granted DE2916710A1 (de) | 1978-05-02 | 1979-04-25 | Speicher mit fehlerdetektion und fehlerkorrektur |
Country Status (8)
Country | Link |
---|---|
US (1) | US4335458A (de) |
JP (1) | JPS54144146A (de) |
CA (1) | CA1128664A (de) |
DE (1) | DE2916710A1 (de) |
FR (1) | FR2425112B1 (de) |
GB (1) | GB2020866B (de) |
NL (1) | NL7804674A (de) |
SE (1) | SE441790B (de) |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4345328A (en) * | 1980-06-30 | 1982-08-17 | Sperry Corporation | ECC Check bit generation using through checking parity bits |
US4464752A (en) * | 1981-11-06 | 1984-08-07 | The Singer Company | Multiple event hardened core memory |
JPS58105500A (ja) * | 1981-11-23 | 1983-06-23 | スペリ・コ−ポレ−シヨン | メモリ駆動回路故障検出システム及び方法 |
JPS58141059A (ja) * | 1982-02-15 | 1983-08-22 | Nec Corp | 多値デイジタル無線通信方式 |
US4506364A (en) * | 1982-09-30 | 1985-03-19 | International Business Machines Corporation | Memory address permutation apparatus |
CA1234222A (en) * | 1984-09-26 | 1988-03-15 | Akira Matsushita | Method and apparatus for error correction |
US4710934A (en) * | 1985-11-08 | 1987-12-01 | Texas Instruments Incorporated | Random access memory with error correction capability |
US4761785B1 (en) * | 1986-06-12 | 1996-03-12 | Ibm | Parity spreading to enhance storage access |
DE3716554C1 (en) * | 1987-05-18 | 1988-08-04 | Markus Wagner | Method and circuit arrangement to secure digital memories |
US4958350A (en) * | 1988-03-02 | 1990-09-18 | Stardent Computer, Inc. | Error detecting/correction code and apparatus |
US5172379A (en) * | 1989-02-24 | 1992-12-15 | Data General Corporation | High performance memory system |
US5345582A (en) * | 1991-12-20 | 1994-09-06 | Unisys Corporation | Failure detection for instruction processor associative cache memories |
US5612965A (en) * | 1994-04-26 | 1997-03-18 | Unisys Corporation | Multiple memory bit/chip failure detection |
US6738935B1 (en) * | 2000-02-07 | 2004-05-18 | 3Com Corporation | Coding sublayer for multi-channel media with error correction |
US7246303B2 (en) | 2002-03-25 | 2007-07-17 | Intel Corporation | Error detection and recovery of data in striped channels |
US7062592B2 (en) * | 2002-03-25 | 2006-06-13 | Intel Corporation | Selecting a queue for service in a queuing system |
US7080168B2 (en) * | 2003-07-18 | 2006-07-18 | Intel Corporation | Maintaining aggregate data counts for flow controllable queues |
US20050013251A1 (en) * | 2003-07-18 | 2005-01-20 | Hsuan-Wen Wang | Flow control hub having scoreboard memory |
US7324537B2 (en) * | 2003-07-18 | 2008-01-29 | Intel Corporation | Switching device with asymmetric port speeds |
US7324541B2 (en) * | 2003-12-22 | 2008-01-29 | Intel Corporation | Switching device utilizing internal priority assignments |
US7623524B2 (en) * | 2003-12-22 | 2009-11-24 | Intel Corporation | Scheduling system utilizing pointer perturbation mechanism to improve efficiency |
US7570654B2 (en) * | 2003-12-22 | 2009-08-04 | Intel Corporation | Switching device utilizing requests indicating cumulative amount of data |
US20050207436A1 (en) * | 2004-03-18 | 2005-09-22 | Anujan Varma | Switching device based on aggregation of packets |
US8464093B1 (en) * | 2004-09-03 | 2013-06-11 | Extreme Networks, Inc. | Memory array error correction |
US7538076B2 (en) | 2005-03-28 | 2009-05-26 | The Lubrizol Corporation | Lubricant and concentrate compositions comprising hindered-phenol-containing diester antioxidant and method thereof |
US7843927B1 (en) | 2006-12-22 | 2010-11-30 | Extreme Networks, Inc. | Methods, systems, and computer program products for routing packets at a multi-mode layer 3 packet forwarding device |
DE102006016499B4 (de) * | 2006-04-07 | 2014-11-13 | Qimonda Ag | Speichermodulsteuerung, Speichersteuerung und entsprechende Speicheranordnung sowie Verfahren zur Fehlerkorrektur |
US20080159145A1 (en) * | 2006-12-29 | 2008-07-03 | Raman Muthukrishnan | Weighted bandwidth switching device |
JP5278115B2 (ja) * | 2009-03-31 | 2013-09-04 | 日本電気株式会社 | 冗長符号生成方法及び装置、データ復元方法及び装置、並びにraid記憶装置 |
US8719684B2 (en) | 2010-08-31 | 2014-05-06 | Qualcomm Incorporated | Guard interval signaling for data symbol number determination |
US8935592B2 (en) * | 2012-11-20 | 2015-01-13 | Arm Limited | Apparatus and method for correcting errors in data accessed from a memory device |
US9600189B2 (en) | 2014-06-11 | 2017-03-21 | International Business Machines Corporation | Bank-level fault management in a memory system |
US9703630B2 (en) | 2015-06-08 | 2017-07-11 | International Business Machines Corporation | Selective error coding |
CN107680629B (zh) * | 2017-10-30 | 2020-08-25 | 中北大学 | 一种基于拉丁方矩阵构造的低冗余矩阵码对存储器进行加固方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3851306A (en) * | 1972-11-24 | 1974-11-26 | Ibm | Triple track error correction |
US3893070A (en) * | 1974-01-07 | 1975-07-01 | Ibm | Error correction and detection circuit with modular coding unit |
US3893071A (en) * | 1974-08-19 | 1975-07-01 | Ibm | Multi level error correction system for high density memory |
US4072853A (en) * | 1976-09-29 | 1978-02-07 | Honeywell Information Systems Inc. | Apparatus and method for storing parity encoded data from a plurality of input/output sources |
US4077565A (en) * | 1976-09-29 | 1978-03-07 | Honeywell Information Systems Inc. | Error detection and correction locator circuits |
JPS5381036A (en) * | 1976-12-27 | 1978-07-18 | Hitachi Ltd | Error correction-detection system |
-
1978
- 1978-05-02 NL NL7804674A patent/NL7804674A/xx not_active Application Discontinuation
-
1979
- 1979-04-25 DE DE19792916710 patent/DE2916710A1/de active Granted
- 1979-04-26 CA CA326,467A patent/CA1128664A/en not_active Expired
- 1979-04-27 US US06/034,096 patent/US4335458A/en not_active Expired - Lifetime
- 1979-04-27 GB GB7914793A patent/GB2020866B/en not_active Expired
- 1979-04-30 SE SE7903771A patent/SE441790B/sv not_active IP Right Cessation
- 1979-05-02 FR FR7911042A patent/FR2425112B1/fr not_active Expired
- 1979-05-02 JP JP5355179A patent/JPS54144146A/ja active Granted
Also Published As
Publication number | Publication date |
---|---|
SE7903771L (sv) | 1979-11-03 |
SE441790B (sv) | 1985-11-04 |
DE2916710A1 (de) | 1979-11-08 |
FR2425112B1 (fr) | 1986-11-14 |
JPS54144146A (en) | 1979-11-10 |
GB2020866B (en) | 1982-04-07 |
FR2425112A1 (fr) | 1979-11-30 |
NL7804674A (nl) | 1979-11-06 |
US4335458A (en) | 1982-06-15 |
JPS6122826B2 (de) | 1986-06-03 |
CA1128664A (en) | 1982-07-27 |
GB2020866A (en) | 1979-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2916710C2 (de) | ||
EP0067301B1 (de) | Einrichtung zur Erzeugung von Prüfbits zur Sicherung eines Datenwortes | |
DE2060643C3 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
DE3854393T2 (de) | Verfahren und gerät zur fehlerkorrektur mit mehrfachdurchlauf für produktkode. | |
DE3486200T2 (de) | Verfahren und vorrichtung zur dekodierung eines fehlerverbesserungskodes. | |
DE3125048C2 (de) | ||
DE60015753T2 (de) | System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern | |
DE3209679C2 (de) | ||
DE2256135C3 (de) | Verfahren zum Prüfen von monolithisch integrierten Halbleiterschaltungen | |
DE2262070A1 (de) | Mit schieberegistern arbeitendes fehlerkorrektursystem | |
EP0400179B1 (de) | Verfahren und Vorrichtung zum internen Paralleltest von Halbleiterspeichern | |
DE69121733T2 (de) | Technik zum eingebauten Selbsttest für Nur-Lese-Speicher | |
DE2456709C2 (de) | Schaltungsanordnung zur Fehlererkennung und -korrektur | |
DE3727586C2 (de) | Datenverarbeitungsanordnung bestehend aus vier im wesentlichen gleich aufgebauten Moduln | |
DE102005022107B9 (de) | Vorrichtung und Verfahren zum Bestimmen einer Position eines Bitfehlers in einer Bitfolge | |
DE1474037C3 (de) | Paritätsprüfverfahren und -prüfeinrichtung für datenverarbeitende Maschinen | |
DE2053836C3 (de) | Anordnung zur Korrektur von Fehlerbündeln in binär codierten Datengruppen | |
DE3851651T2 (de) | Schaltungsanordnung zur Erzeugung von Adressen. | |
DE2513262A1 (de) | Digitale codeumwandlungsanordnung | |
DE3702697C2 (de) | ||
DE3017830A1 (de) | Datenfehler-korrektursystem | |
DE69400891T2 (de) | Einrichtung zur Speicherung von Daten | |
DE2742881C2 (de) | ||
EP0036148B1 (de) | Hybrid-Assoziativspeicher | |
DE2004934A1 (de) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |