DE3882223T2 - Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden. - Google Patents

Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.

Info

Publication number
DE3882223T2
DE3882223T2 DE88480012T DE3882223T DE3882223T2 DE 3882223 T2 DE3882223 T2 DE 3882223T2 DE 88480012 T DE88480012 T DE 88480012T DE 3882223 T DE3882223 T DE 3882223T DE 3882223 T2 DE3882223 T2 DE 3882223T2
Authority
DE
Germany
Prior art keywords
error
syndrome
group
data word
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 - Fee Related
Application number
DE88480012T
Other languages
English (en)
Other versions
DE3882223D1 (de
Inventor
Pierre Debord
Rene Glaise
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3882223D1 publication Critical patent/DE3882223D1/de
Application granted granted Critical
Publication of DE3882223T2 publication Critical patent/DE3882223T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1028Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

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

Description

    Technischer Bereich der Erfindung
  • Die vorliegende Erfindung bezieht sich im allgemeinen auf die Fehlerkorrektur. Sie bezieht sich genauer auf die Korrektur eines weichen Fehlers über die nicht erweiterte Fähigkeit des verwendeten Fehlerkorrekturcodes hinaus.
  • Stand der Technik
  • Da die Größe von Computerspeichern zugenommen hat, während die einzelnen Speicherzellen weiter miniaturisiert wurden, ergab sich in den in einem Speicher gespeicherten Daten eine nicht zu akzeptierende Häufigkeit von Bitfehlern. Es ist nicht länger zulässig, daß ein zufälliger Fehler ein Programm veranlaßt, die Arbeit zu stoppen oder das Auswechseln eines Speicherchips erfordert. Diese Bitfehler zerfallen in zwei allgemeine Arten, in weiche und in harte Fehler.
  • Ein weicher Fehler ist eine anscheinend zufällige Inversion gespeicherter Daten. Diese Inversion wird von zufälligen Impulsen des elektrischen Rauschens und in manchen Fällen durch atomare Partikel, die sogenannte Alphapartikelstörung, verursacht. Das Problem der weichen Fehler hat zugenommen, da sich die Abmessungen der einzelnen Zelle verringert haben, so daß Rauschpegel relativ kleine Leistungswerte darstellen.
  • Ein harter Fehler ist im Gegensatz hierzu ein dauerhafter elektrischer Fehler des Speicherchips, der oft auf spezielle Speicherstellen beschränkt ist, aber manchmal auch mit der peripheren Schaltungslogik des Speicherchips verbunden ist, so daß der gesamte Chip betroffen sein kann. Natürlich haben sich die Entwerfer von Speicherchips bemüht, das Auftreten sowohl von harten als auch von weichen Fehlern auf ihren Chips zu verringern. Jedoch wurden beide Fehlerarten nicht vollständig beseitigt, und in der Tat ist nicht anzunehmen, daß sie beseitigt werden können. Zuverlässigkeit über einen bestimmten Punkt hinaus kann nur zu Lasten einer verringerten Leistung oder erhöhter Kosten erreicht werden.
  • Eine Alternative zur obigen Lösung sowohl für harte als auch für weiche Fehler war die Implementierung fehlerkorrigierender Codes (ECC) in großen Computerspeichern. Die Grundlagen der Fehlererkennung und -korrektur werden von R. W. Hamming in einem technischen Artikel "Error detecting and error correcting codes" beschrieben, der im Bell System Technical Journal, Vol. 26, Nr. 2, 1950, auf den Seiten 147 bis 160 erschienen ist. Bei einem der populärsten Hamming-Codes wird ein 8-Bit-Datenwort entsprechend einem ausgewählten Hamming-Code in einem 13-Bit-Wort codiert. Der beschriebene Code wird als SEC/DEC klassifiziert (Korrektur eines einfachen Fehlers/Feststellung eines doppelten Fehlers). Da ein SEC/DED-Hamming-Code aber nur einen einfachen zufälligen Fehler korrigieren kann (entweder weich oder hart), der in irgendeinem Byte auftritt, wurden kompliziertere fehlerkorrigierende Codes entwickelt und implementiert.
  • Insbesondere wurde ein besseres Verfahren für harte Fehler in Gruppen von mehreren Bits entwickelt. Diese Fehler werden als Gruppenfehler bezeichnet, und die Fehlerkorrekturcodes, die speziell für Gruppenfehler entworfen wurden, werden als Gruppencodes bezeichnet. Die Codes beruhen auf der Tatsache, daß mehrfache harte Fehler nicht zufällig über das ganze Feld des Datenwortes hinweg verteilt sind. Statt dessen sind mehrfache harte Fehler auf ein Teilfeld des Datenwortes begrenzt, das durch die Ausgänge der Gruppe definiert ist. Im Kontext eines 256K·4-Speicherchips, der aus einem Speicherchip von einem Megabit mit vier gleichzeitig zugänglichen Datenanschlüssen besteht, kann ein solcher Code nicht beliebige vier Fehler korrigieren, die innerhalb von 32 Bits auftreten. Der Code kann aber Vier-Bit-Fehler korrigieren, die in einem beliebigen von acht 4-Bit-Teilfeldern auftreten.
  • Nichtsdestoweniger sind auch solche Codes nicht vollständig zufriedenstellend. Wenn der Code ein SPC/DPD-Code (Korrektur einer Gruppe/Feststellung in zwei Gruppen) ist, dann kann der Code irgendwelche Fehler korrigieren, die in nur einer Gruppe auftreten, und er kann Fehler feststellen, die in zwei Gruppen auftreten, sie aber nicht korrigieren. Wenn also in einer Gruppe ein harter Fehler aufgetreten ist, dann bedeutet das Auftreten irgendeines zusätzlichen Fehlers, entweder weich oder hart, in den übrigen Gruppen, daß der Fehlerzustand festgestellt werden kann, die Fehler können aber nicht festgestellt werden. Die Existenz eines harten Fehlers ist die effektive Grenze der Korrektur, die mit einem SPC/DPD-Code ermöglicht wird.
  • In der US-Patentschrift 4,661,955 werden Beispiele für Gruppencodes und ihre Hardware-Ausführung auf dem Stand der Technik angeführt. Dieses Dokument zeigt auch eine digitale Fehlererkennungs- und -korrekturvorrichtung, die insbesondere auf einen Code anwendbar ist, der eine beliebige Anzahl von Fehlern in einem Teilfeld korrigieren, die Existenz von einer beliebigen Anzahl von Fehlern in zwei Teilfeldern aber nur feststellen kann. Wenn der erste Durchlauf der Daten durch den fehlerkorrigierenden Code einen nichtkorrigierten Fehler anzeigt, werden die Daten komplementiert, in den Speicher zurückgespeichert und dann erneut gelesen. Die zurückgeholten Daten werden erneut komplementiert und wieder durch den fehlerkorrigierenden Code geschickt. Wenn ein nichtkorrigierter Fehler weiter besteht, dann wird ein bitweiser Vergleich der ursprünglich gelesenen Daten und der Zurückgeholten komplementierten Daten durchgeführt, um die harten Fehler im Speicher zu isolieren. Die Bits in dem zu dem harten Fehler gehörenden Teilfeld werden dann der Reihe nach geändert, und dann wird das geänderte Datenwort durch den fehlerkorrigierenden Code geschickt. Durch den fehlerkorrigierenden Code wird eine falsche Kombination festgestellt. Wenn das zu dem harten Fehler gehörende Teilfeld und die ursprünglich gespeicherten Daten übereinstimmen, dann kann der fehlerkorrigierende Code die übrigen Fehler in den restlichen Teilfeldern korrigieren. Die aufeinanderfolgenden Änderungen der Bits in dem zu dem harten Fehler gehörenden Teilfeld umfassen jedoch einen langen Iterationsprozeß. Darüber hinaus hat dieses System den Nachteil, einen langen Prozeß von bitweisen Vergleichen zwischen den gelesenen Originaldaten und den zurückgeholten Daten, zahlreiche Vergleichsschaltungen und Zwischenspeicher sowie eine Korrekturfolge variabler Länge zu umfassen, da die ursprünglich gespeicherten Daten in dem zu dem harten Fehler gehörenden Teilfeld irgendeine der 16 verschiedenen Kombinationen sein kann.
  • EP-A-0 107 038 mit dem Titel "Double error correction, triple error detection code for a memory" zeigt einen fehlerkorrigierenden Code, der auf einem Tabellensuchverfahren beruht, das einfache und doppelte Bitfehler korrigieren und dreifache Bitfehler feststellen kann. Weiterhin kann dieser Code einen Gruppenfehler feststellen. Jedoch liefert dieses System keine Lösung für einen harten Gruppenfehler, der gleichzeitig mit einem einfachen weichen Fehler auftritt.
  • Zusammenfassung der Erfindung
  • Ein Ziel der Erfindung besteht darin, ein einfaches und billiges erweitertes fehlerkorrigierendes Verfahren für Codes zur Korrektur einfacher Gruppenfehler und zur Feststellung zweifacher Gruppenfehler zur Verfügung zu stellen, das sowohl einen einfachen Fehler in einer Gruppe als auch Fehler in einer anderen Gruppe korrigieren kann, wobei wenigstens einer von ihnen ein harter Fehler ist.
  • Ein weiteres Ziel der Erfindung besteht darin, ein erweitertes Fehlerkorrekturverfahren zur Verfügung zu stellen, das eine kurze feste Korrekturfolge enthält.
  • Ein weiteres Ziel der Erfindung besteht darin, ein erweitertes Fehlerkorrekturverfahren zur Korrektur eines weichen Fehlers mit einem ECC zur Verfügung zu stellen, der zur Korrektur eines Gruppenfehlers in einer Speicherorganisation mit n Bits je Gruppe bestimmt ist.
  • Die Ziele der Erfindung werden mit Hilfe des in Anspruch 1 definierten Fehlerkorrekturverfahrens erreicht. Das Verfahren ist geeignet zur Korrektur von n-Bit-Datenworten, die ein Feld von n-r Datenbits und ein Feld von r Fehlerkorrekturcode-ECC-Bits enthalten. Die n-Bit-Datenworte sind in Gruppen von b Bits organisiert, und die Erfindung kann eine Gruppe mit wenigstens einem harten Fehler und einen einfachen weichen Fehler korrigieren, der sich in einer anderen Gruppe befindet. Das Verfahren der Erfindung umfaßt einen fehlerkorrigierenden Code, der ein erstes Syndrom liefert, wenn das Datenwort einen ersten Fehler, der von wenigstens einem Fehler in einer ersten Gruppe stammt, und einen einfachen Fehler in einer zweiten, von der ersten verschiedenen Gruppe aufweist, der auch ein zweites Syndrom liefert, wenn in dem Datenwort ein zweiter Fehler, der von wenigstens einem Fehler in der obigen ersten Gruppe kommt, und ein einfacher Fehler in einer dritten Gruppe auftritt. Der fehlerkorrigierende Code ist so beschaffen, daß die Gleichheit des obigen ersten und zweiten Syndroms zur Gleichheit des ersten und zweiten Fehlers führt. Die Vorrichtung der Erfindung enthält weiterhin Mittel (24) zur Speicherung des Syndroms eines ersten Datenwortes v und Mittel (24) zur Addition des Syndroms eines zweiten Datenwortes v', wobei letzteres Datenwort v' aus dem ersten Datenwort v mit Hilfe einer Prozedur "Invertieren - Schreiben" und einer Prozedur "Invertieren - Lesen" erzeugt wird. Die obige Addition erlaubt die Maskierung des einfachen weichen Fehlers. Die Erfindung umfaßt weiterhin Mittel (20), um zu bestimmen, ob das Ergebnis der obigen Addition ein Syndrom ergibt, das das Syndrom einer einzelnen Gruppe charakterisiert, um die Zahl der Gruppen zu bestimmen, die wenigstens einen harten Fehler aufweisen, und Mittel (21, 22, 50-XX), die als Reaktion auf diese Bestimmung arbeiten, um die Positionen der Fehler, entweder harter oder weicher, direkt zu lokalisieren, um das ursprünglich gespeicherte Datenwort wieder herzustellen.
  • Beschreibung der Zeichnungen
  • Fig. 1 beschreibt eine Tabelle, die alle möglichen Syndrome auflistet, die man erhält, wenn in der ersten Gruppe Fehler aufgetreten sind und ein Einbitfehler in einer anderen Gruppe vorhanden ist.
  • Fig. 2 bis 11 enthält jeweils Tabellen, die alle möglichen Syndrome auflisten, die man erhält, wenn Fehler in jeweils der zweiten bis zur elften Gruppe aufgetreten sind und ein Einbitfehler in einer anderen Gruppe vorhanden ist.
  • Fig. 12 ist ein Flußdiagramm, das die verschiedenen Schritte beschreibt, die durch das fehlerkorrigierende System der Erfindung notwendig gemacht werden, um einen einfachen weichen Fehler beim Vorhandensein einer harten Gruppe zu korrigieren.
  • Fig. 13a und Fig. 13b sind Teilansichten, die ein Beispiel einer bevorzugten Ausführung der Erfindung veranschaulichen.
  • Fig. 14 ist eine Ansicht, die die Art und Weise des Zusammenfügens von Fig. 13a und 13b zeigt.
  • Beschreibung der Erfindung
  • Das erweiterte Fehlerkorrekturverfahren entsprechend der Erfindung beruht sowohl auf einem "Invertierungs- und Wiederholungsverfahren" als auch auf einer Analyse des Syndroms, wobei letzteres auch als "Paritätsprüfvektor" und "Korrektur" bezeichnet wird. Das "Invertieren und Wiederholen" besteht in der Invertierung des Wortes, damit der harte Fehler zum Speichern mit dem elektrischen Pegel übereinstimmt (der harte Fehler wird maskiert), was es dann erlaubt, den weichen Fehler zu korrigieren, bevor das Wort mit seiner ursprünglichen Polarität zurückgespeichert wird. Das "Invertierungs- und Wiederholungsverfahren" wird in der fehlerkorrigierenden Vorrichtung der Erfindung besonders benutzt, um eine erste Fehlergruppe, die wenigstens einen Fehler vom harten Typ enthält, in dem Wort zu lokalisieren. Die Analyse der verschiedenen Syndrome bestimmt eventuell und sofort den einfachen weichen Fehler, der in einer zweiten Gruppe aufgetreten ist. Wir betrachten den folgenden Reed-Solomon-Code, der durch die nachstehende r·n-Paritätsprüfungsmatrix H charakterisiert ist und veranschaulichen eine Ausführung der Erfindung, die für 32-Bit-Datenworte (r = 12, n = 44) eine Speicherorganisation mit 4 Bits pro Gruppe enthält.
  • H-Matrix: Datenbits (32 Bits) + ECC-Bits-
  • Die entwickelte H-Matrix hat deshalb folgende Gestalt: GRUPPENNUMMER Kommentar Bits 1 - 32 sind Datenbits Bitindex
  • Ein Vektor v = (a1, a2, a3, . . . an) ist ein Codewort genau dann, wenn sein zugeordnetes Syndrom S(v) = vHT, ein Vektor mit r Komponenten, gleich null ist. Im entgegengesetzten Fall ist das vorhergehende Syndrom ungleich null. Wenn ein Vektor u, der ein Codewort ist, übertragen und v empfangen wird, kann das Syndrom von v auf Grund der Linearitätseigenschaft mit Hilfe der folgenden Beziehung berechnet werden:
  • S(v) = S(u) + S(v + u);
  • aufgrund der linearen Eigenschaften der Matrixoperationen, ist dabei die Additionstabelle jedes binären Elementes wie folgt gegeben:
  • Hieraus entsteht
  • S(v) = S(v + u), weil S(u) = 0 ist.
  • Deshalb kann irgendein Syndrom aus dem Mustervektor v-u berechnet werden, insbesondere alle Syndrome, die einfachen Gruppenfehlern entsprechen. SYNDROME EINFACHER GRUPPENFEHLER (11 Gruppen · 15 Fehlerarten 165 Möglichkeiten in einer Gruppe) Fehlerhaftes Bit in der Gruppe in hexadezimaler Schreibweise Fehlerhafte Gruppe
  • Es sollte beachtet werden, daß diese die einfachen Gruppenfehler Charakterisierenden Syndrome eindeutig sind und zweifelsfrei die zu korrigierende Gruppe und die fehlerhaften Bits innerhalb einer Gruppe Charakterisieren. Wenn beispielsweise das bewertete Syndrom S(v) den hexadezimalen Wert "7B8" (binär "0111 1011 1000") besitzt, zeigt die obige Tabelle, daß das Fehlermuster gleich
  • v + u 0000 0000 0111 0000 0000 0000 0000 0000 0000 0000 0000
  • ist. Mit anderen Worten: die drei letzten Bits der dritten 4-Bit-Gruppe waren einer Inversion ausgesetzt und sollten zurückinvertiert werden, um das ursprüngliche Datenwort u zurückzuspeichern.
  • In ähnlicher Weise ist es möglich, alle Syndrome aufzulisten, die entstehen, wenn ein Gruppenfehler mit einem einfachen Bitfehler in einer anderen Gruppe zusammengefaßt wird. Das Ergebnis kann in 11 Tabellen aufgeführt werden, wobei jede Tabelle einer bestimmten Gruppe entspricht, die Fehlern ausgesetzt war.
  • Fig. 1 ist eine Tabelle, die alle möglichen Syndrome aufführt, die man erhält, wenn Fehler in der ersten Gruppe aufgetreten sind und ein einfacher Bitfehler in einer anderen Gruppe auftrat.
  • Fig. 2 bis 11 sind Tabellen, die alle möglichen Syndrome aufführen, die man erhält, wenn Fehler entsprechend in der zweiten bis elften Gruppe aufgetreten sind und ein einfacher Bitfehler in einer anderen Gruppe auftrat. Offensichtlich sind die Syndrome der in den Tabellen von Fig. 1 bis 11 aufgeführten Zweigruppenfehler (DPE), obwohl sie nicht eindeutig sind, alle von den Syndromen der oben aufgeführten einfachen Gruppenfehler verschieden, was es erlaubt, zwischen einem unmittelbar korrigiert baren einfachen Gruppenfehler und einem mit einem SPC/DPD-Code nicht korrigierbaren Zweigruppenfehler zu unterscheiden. Die Verwendung der oben definierten Speziellen H-Matrix zum Erhalt des SPC/DPD-Codes bringt jedoch einen zusätzlichen Vorteil mit sich: innerhalb einer beliebigen Tabelle von Fig. 1 bis 11 sind die Syndrome von Zweigruppenfehlern eindeutig, Demzufolge erlaubt die Kenntnis einer Gruppe, die mehrere Fehler aufweist, d. h. die Referenzzahl der Tabelle in Fig. 1 bis 11, daß ein zusätzlicher einfacher Fehler lokalisiert wird, der in einer anderen Gruppe aufgetreten ist. Wir wollen beispielsweise annehmen, daß Zweigruppenfehler in dem Datenwort aufgetreten sind, mit mehreren Fehlern, die die Gruppe n-1 betreffen. Wenn man voraussetzt, daß das Ergebnis der Berechnung des Syndroms den Wert "F64" ergibt, dann zeigt das Auslesen aus der Tabelle von Fig. 1, daß die hexadezimale Darstellung der fehlerhaften Bits innerhalb von Gruppe 1 gleich "7" ist (binär "0111") und das ein einfacher Fehler Bit 13 beeinflußt hat. Der Mustervektor ist dann
  • v + u = 0111 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000.
  • Fig. 12 ist ein Flußdiagramm, das die verschiedenen Schritte beschreibt, die vom fehlerkorrigierenden System der Erfindung benutzt werden, um einen einfachen weichen Fehler bei Vorhandensein einer Gruppe mit einem harten Fehler zu korrigieren. Ein Datenwort u, das entsprechend dem obigen SPC/DPD-Reed-Solomon- Code codiert und an seinem richtigen Speicherplatz A gespeichert wurde, wird von dem angegebenen Speicherplatz A gelesen, Schritt 1. Da dieser Platz von Fehlern betroffen sein kann, entweder von harten oder von weichen, kann sich das gelesene Wort v von dem am angegebenen Platz ursprünglich gespeicherten Wort unterscheiden. Das Syndrom S(v), das dem gelesenen Wort v entspricht, wird dann berechnet, Schritt 2, und geprüft, um zu bestimmen, ob es gleich null ist oder einem einfachen Gruppenfehler entspricht (SPE). Wenn das gelesene Wort v keine Fehler enthält (S(v) = 0) oder wenn es Fehler enthält, die auf eine einzelne Gruppe beschränkt sind (S(v) ist einer der oben aufgeführten SPE), dann gibt es keine unkorrigierten Fehler, da der SPC/DPD-Reed-Solomon-Code alle Fehler in der fehlerhaften Gruppe unmittelbar korrigieren kann, Schritt 13. In diesem Falle ist der Zugriff beendet, weil das gelesene Wort v korrekt ist oder korrigiert wurde und das korrigierte Wort v benutzt werden kann. Das obige Verfahren ist eine gewöhnliche ECC-Verarbeitung.
  • Wenn aber Fehler in zwei verschiedenen Gruppen auftreten, dann kann das auf dem SPC/DPD beruhende ECC-Verfahren nur die Existenz dieser Bedingung anzeigen, aber nicht korrigieren. Das oben berechnete Syndrom S(v) wird gespeichert, um die erweiterte Fehlerkorrekturverarbeitung der Erfindung auszuführen, Schritt 3. Schritt 4 und 5 sind übliche und gut bekannte "Invertieren - Schreiben" - und "Invertieren - Lesen" - Prozeduren. Solche Prozeduren werden in der bereits zitierten US-Patentschrift 4,661,955 erwähnt. Grundsätzlich wird das gelesene Datenwort v auf seinen komplementären Wert invertiert, und der komplementäre Wert wird dann an seinen entsprechenden Speicherplatz A zurückgespeichert, Schritt 4. Dann wird der gleiche Speicherplatz gelesen, und das zurückgeholte Datenwort wird auf seinen komplementären Wert invertiert, um ein Datenwort v' zu erzeugen, Schritt 5. Der Wert von v' sollte wegen der zwei auftretenden Inversionen gleich dem Wert von v sein. Wenn jedoch im Speicher ein harter Fehler aufgetreten ist, so daß eine Bitposition entweder auf H oder auf L hängt, unabhängig vom Eingangswert für dieses Bit, dann ist v nicht gleich v'. Deshalb tragen nach den Schritten 4 und 5 die hängenden Bitpositionen, die vorher eine falsche binäre Information trugen, jetzt eine korrekte binäre Information, während für die, die eine korrekte binäre Information trugen, das Gegenteil gilt. Als Ergebnis kann man die Situationen finden, in denen die Zahl der hängenden Bits, die die korrekte Information tragen, größer ist als die Zahl der hängenden Bits, die die falsche Information tragen. In solch einem Fall kann man finden, daß das Syndrom von v', S(v') gleich null ist oder zu den oben aufgeführten Syndromen für einfache Gruppenfehler gehört (Schritt 5); in diesem Fall geht der Prozeß zu Schritt 6 über, um das Datenwort v' zu korrigieren, da der fehlerkorrigierende Reed-Solomon-Code einfache Gruppenfehler behandeln kann. Der wiederhergestellte Wert des ursprünglich gespeicherten Datenwortes u wird dann unmittelbar an den angegebenen Speicherplatz A zurückgespeichert, weil einer der so festgestellten Fehler ein weicher Fehler gewesen sein kann. Weiche Fehler weisen nicht auf einen fehlerhaften Speicherplatz hin, sondern nur darauf, daß die Daten an diesem Speicherplatz invertiert wurden. Wenn die Daten einmal an diesen Speicherplatz korrekt zurückgespeichert wurden, ist es in hohem Maße unwahrscheinlich, daß sie wieder invertiert werden. Da sich weiche Fehler bis zu dem Punkt ansammeln können, daß sie in irgendeinem zu korrigierenden Wort zu zahlreich werden, ist es ratsam, irgendeinen weichen Fehler zu korrigieren, sobald er festgestellt wurde.
  • Wenn aber das berechnete Syndrom von v' weder gleich null noch unter den oben aufgeführten SPE-Syndromen ist, dann geht der Prozeß zu Schritt 7, in dem das in Schritt 3 gespeicherte Syndrom von v und das Syndrom von v' addiert werden. Auf Grund der Beziehung
  • S(v) + S(v') = S(v + u) + S(v' + u) = S((v + u) + (v' + u))
  • ist zu bemerken, daß die Summe der zwei Syndrome S(v) und S(v') eine Funktion der beiden Musterfehler v + u und v' + u ist. Da die Prozeduren "Invertieren - Schreiben" und "Invertieren - Lesen" der Schritte 4 und 5 irgendeinen weichen Fehler nicht beeinflussen, maskiert die Addition der Musterfehler v + u und v' + u dessen Vorhandensein.
  • Setzt man beispielsweise voraus, daß der Musterfehler gleich
  • v + u = 0101 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000
  • ist, dann bedeutet das, daß sich das empfangene Wort v im zweiten, im vierten und im dreizehnten Bit von dem ursprünglich gespeicherten Wort u unterscheidet. Setzt man weiterhin voraus, daß die letzten drei Bits der ersten Gruppe hängen (Gruppe mit einem harten Fehler) und daß im 13. Bit ein weicher Fehler aufgetreten ist, dann ergibt die Verarbeitung des Wortes v in den Schritten 4 und 5 ein Datenwort v', so daß der entsprechende Musterfehler gleich
  • v' + u = 0010 0000 0000 1000 0000 0000 0000 0000 0000 0000 0000
  • ist. Deshalb unterscheidet sich das Datenwort v' von dem ursprünglich gespeicherten Wort u im dritten und dreizehnten Bit. Demzufolge wurden das frühere zweite und vierte Bit des Datenwortes v, die falsch waren, jetzt korrigiert, aber umgekehrt wurde das dritte Bit, das ursprünglich die richtige binäre Information trug, ebenfalls invertiert. Die Durchführung der Schritte 4 und 5 beeinflußte aber, wie vorher erwähnt wurde, die Gültigkeit von Bit 13 nicht.
  • Die Addition der beiden vorhergehenden Musterfehler v + u und v' + u maskiert den weichen Fehler:
  • (v + u) + (v' + u) = 0111 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000.
  • Demzufolge befindet sich das Syndrom der Summe der zwei Musterfehler v + u und v' + u unter den in der obigen Tabelle aufgeführten SPE-Syndromen, dessen Lesen eventuell die Bestimmung der Gruppe erlaubt, in der ein harter Gruppenfehler aufgetreten ist. Bezüglich des vorhergehenden Beispiels ergibt die Berechnung der beiden Syndrome:
  • S(v) = "D46" (hexadezimal) = 1101 0100 0110 (binär)
  • S(v') = "A31" (hexadezimal) = 1010 0011 0001 (binär).
  • Also ist S(v) + S(v') = '777' (hexadezimal) = 0111 0111 0111 (binär).
  • Das Lesen der Tabelle zeigt also, daß in der ersten Gruppe ein harter Gruppenfehler aufgetreten ist, und genauer, daß die letzten drei Bitpositionen der ersten Gruppe hängen (Wert "7" hexadezimal).
  • Entsprechend dem bisher Gesagten führt der Prozeß in Schritt 3 einen Test aus, um zu bestimmen, ob die Summe von S(v) und ein DPE-Syndrom ist oder nicht. In einem solchen Falle wird vorausgesetzt, daß der ECC ursprünglich Fehler in drei oder mehr Gruppen festgestellt hat oder daß mehr als ein weicher Fehler aufgetreten ist. Die beschriebene Ausführung ist nicht imstande, Solche Situationen zu behandeln, und ein nicht korrigierter Fehler wird signalisiert.
  • Wenn jedoch das Summensyndrom ein SPE-Syndrom ist, dann geht der Prozeß zu Schritt 9, in dem die Position der harten Fehlergruppe festgestellt wird, indem die oben gegebene Tabelle gelesen wird. Dann wird entsprechend dem Ergebnis von Schritt 9 das Syndrom des Wortes v in Schritt 10 in einer der Tabellen von Fig. 1 bis 11 gelesen, um seinen entsprechenden Musterfehler v + u zu finden. Dies erlaubt, daß das ursprüngliche Datenwort u an den angegebenen Speicherplatz A zurückgespeichert wird, Schritt 11, und das korrigiert- Wort kann eventuell benutzt werden.
  • Der obige Prozeß gibt immer dann ein zufriedenstellendes Ergebnis, wenn ein einfacher weicher Fehler in einer Gruppe gemeinsam mit Fehlern auftritt, die an eine zweite Gruppe gebunden sind und von denen einer ein harter Fehler ist. Wenn wir jetzt die Tatsache betrachten, daß sich die harten Fehler meistens in einer einzigen Gruppe befinden, während die weichen Fehler selten das gleiche Datenwort betreffen, da sie innerhalb des Speichers zufällig verteilt sind, kann die erweiterte Fehlerkorrekturvorrichtung entsprechend der Erfindung die meisten Fehler in zwei Gruppen mit nur einem SPC/DPD ECC behandeln. Darüber hinaus erreicht man dieses Ergebnis, ohne daß ein bitweiser Vergleich zwischen den ursprünglich gelesenen und den zurückgeholten komplementierten Daten, so wie er in der US-Patentschrift US-A- 4,661,995 beschrieben ist, erforderlich wäre. Ebenso ist ein sequentielles Ändern der Bits innerhalb des Teilfeldes nicht notwendig, und die erweiterte Fehlerkorrekturvorrichtung der Erfindung enthält eine kurze Korrekturfolge fester Länge.
  • Fig. 13a und Fig. 13b sind Teilansichten, die ein Beispiel für eine bevorzugte Ausführung der Erfindung veranschaulichen. Fig. 14 zeigt, wie diese zwei Abbildungen zusammenzufügen sind. Unter Bezugnahme auf Fig. 13a umfaßt die bevorzugte Ausführung der Erfindung eine "SPE-Decodierungs"-Logik 20, die an einen 12-Bit- Bus 28 und an einen 12-Bit-Bus 29 angeschlossen ist. Der 12-Bit- Bus 28 überträgt das 12-Bit-Syndrom, das von einer "Syndrom-Decodier"-Schaltung 26 ausgewertet wird, und ist mit einem ersten Eingang einer "Summensyndrom"-Schaltung 24 und mit dem Eingang eines "Syndromregisters" 25 verbunden. Das Syndromregister 25 wird durch eine Leitung 34 gesteuert und besitzt einen 12-Bit- Ausgangsbus 30, der mit einem zweiten Eingang der Summensyndromschaltung 24 verbunden ist. Der 12-Bit-Bus 28 ist auch mit den zwölf höchstwertigen Bits (MSB) eines Adreßbusses 35 eines Speichers 21 verbunden. Die vier niedrigstwertigen Bits (LSB) des Adreßbusses 35 des Speichers 21 sind über einen 4-Bit-Bus 31 mit dem Ausgang eines Codierers 23 verbunden. Der Codierer 23 hat einen Eingang, der mit einem 11-Bit-Bus 90 verbunden ist, der mit einem ersten Ausgang der SPE-Decodierschaltung 20 verbunden ist und der die Zahl der Gruppen überträgt, die harte Fehler enthalten. Die SPE-Decodierschaltung 20 besitzt einen zweiten Ausgangsbus 33, einen 4-Bit-Bus, der die Positionen der fehlerhaften Bits in der Gruppe überträgt, die durch den von dem 11-Bit-Bus 90 übertragenen Wert bezeichnet wird. Eine Menge von Zwischenspeichern 27 wird benutzt, um das 44-Bit-Datenwort v oder v' zu speichern, das vom Speicherplatz A stammt; sie besitzt einen Ausgangsbus 70, der mit dem Eingang der Syndromdecodierschaltung 26 verbunden ist. Der Ausgang der Summensyndromschaltung 24, der die Summe der Syndrome auf den Bussen 28 und 30 überträgt, ist mit dem 12-Bit-Bus 29 verbunden, um zur SPE-Decodierschaltung 20 übertragen zu werden. Der Ausgang des Speichers 21, der das Datenwort überträgt, das der Adresse entspricht, die auf Bus 35 erscheint (d. h. die Busse 28 und 31), wird über einen Bus 32 zu einer Decodierschaltung 22 geschickt. Der Decodierer 22 decodiert den von einem 6-Bit-Bus 32 übertragenen Wert und aktiviert eine von 44 Leitungen eines 44-Bit-Busses 80. Der Decodierer 22 besitzt eine Steuerleitung 36, die, wenn sie auf einen hohen- Pegel gesetzt wird, die 44 Leitungen auf dem Bus auf dem Wert L blockiert.
  • Unter Bezugnahme auf Fig. 13b enthält die bevorzugte Ausführung der Erfindung weiterhin eine Menge von 44 EXOR-Gattern 44-XX (wobei XX von 01 bis 44 variiert), deren Ausgang eines der 44 Bits des wiederhergestellten ursprünglichen Datenwortes u überträgt, wenn die Korrektur des Eingangsdatenwortes v möglich gewesen ist. Die 44 EXOR-Gatter werden in elf Gruppen zu 4 EXOR- Gattern unterteilt, entsprechend der oben dargestellten Unterteilung der 44 Bits des Datenwortes in 11 Gruppen zu 4 Bits. Aus Gründen der Übersichtlichkeit wurden nur die EXOR-Gatter 40-01, 40-02, 40-03, 40-04, 40-05, 40-06, 40-07, 40-08, 40-41, 40-42, 40-43, 40-44 (erste, zweite und elfte Gruppe) dargestellt. Jedes EXOR-Gatter 40-XX (mit XX = 01 bis 44) besitzt einen ersten Eingang, der mit der XX-ten Leitung des 44-Bit-Busses 70 verbunden ist, der das Eingabewort v oder v' überträgt, wie nachfolgend beschrieben wird. Beispielsweise ist der erste Eingang des EXOR- Gatters 40-01 mit der ersten Leitung des Busses 70 verbunden. In ähnlicher Weise ist der erste Eingang des EXOR-Gatters 40-44 mit der 44. Leitung von Bus 70 verbunden. Jedes EXOR-Gatter 40-XX (mit XX = 01 bis 44) besitzt einen zweiten Eingang, der mit dem Ausgang eines OR-Gatters 50-XX ( mit XX = 01 bis 44) verbunden ist. Beispielsweise ist der zweite Eingang des EXOR-Gatters 40-01 mit dem Ausgang des OR-Gatters 50-01 verbunden. Ebenso ist der zweite Eingang des EXOR-Gatters 40-42 mit dem Ausgang des OR-Gatters 50-42 verbunden. Jedes OR-Gatter 50-XX (mit XX = 01 bis 44) besitzt einen ersten Eingang, der mit der XX-ten Leitung des 44-Bit-Busses 80 verbunden ist, der die decodierte Ausgabe des Speichers 21 überträgt. Beispielsweise ist der erste Eingang des OR-Gatters 50-01 mit der ersten Leitung von Bus 80 verbunden. In ähnlicher Weise ist der erste Eingang des OR-Gatters 50- 41 mit der 41. Leitung von Bus 80 verbunden.
  • Jedes OR-Gatter 50-XX (mit XX = 01 bis 44) besitzt einen zweiten Eingang, der mit dem Ausgang eines UND-Gatters 60-XX (mit XX = 01 bis 44) verbunden ist. Beispielsweise ist der zweite Eingang des OR-Gatters 50-01 mit dem Ausgang des UND-Gatters 60-01 verbunden. Ebenso ist der zweite Eingang des OR-Gatters 540-42 mit dem Ausgang des UND-Gatters 60-42 verbunden. Ähnlich wie oben sind die 44 UND-Gatter in 11 Gruppen zu vier UND-Gattern unterteilt (beispielsweise umfaßt die erste Gruppe die Gatter 60-01, 60-02, 60-03 und 60-04, die dritte Gruppe die Gatter 60-09, 60-10, 60-11 und 60-12 . . . ). Alle ersten Eingänge der UND-Gatter 0-XX, 60-(XX + 1), 60-(XX + 2), 60-(XX + 3) (mit XX = 4* + 1 und n = 0 bis 10) einer gegebenen der elf möglichen Gruppen sind gemeinsam mit der n-ten Leitung des 11-Bit-Busses 90 verbunden, der von der SPE-Decodierschaltung 20 (siehe Fig. 13a) gesteuert wird. Beispielsweise ist der erste Eingang der UND-Gatter 60-01, 60-02, 60-03, 60-14 der ersten Gruppe gemeinsam mit der ersten Leitung von Bus 90 verbunden. Jedes UND-Gatter 60-XX (mit XX = 1 bis 41 modulo 4) besitzt einen zweiten Eingang, der mit der ersten Leitung des 4-Bit-Busses 33 verbunden ist, der den Wert der Bits zur Korrektur innerhalb der Gruppe mit dem harten Fehler überträgt, die durch den auf Bus 90 übertragenen Wert bestimmt ist.
  • Jedes UND-Gatter 60-XX (mit XX = 2 bis 42 modulo 4) besitzt einen zweiten Eingang, der mit der zweiten Leitung des 4-Bit-Busses 33 verbunden ist.
  • Jedes UND-Gatter 60-XX (mit XX = 3 bis 43 modulo 4) besitzt einen zweiten Eingang, der mit der dritten Leitung des 4-Bit-Busses 33 verbunden ist.
  • Jedes UND-Gatter 60-XX (mit XX = 4 bis 44 modulo 4) besitzt einen zweiten Eingang, der mit der vierten Leitung des 4-Bit-Busses 33 verbunden ist.
  • Der Speicher 21 ist typischerweise ein Festspeicher (ROS), der ein 6-Bit-Datenwort liefert, das die Steuerung der OR-Gatter 50-XX (mit XX = 01 bis 44) über den Decodierer 22 erlaubt, wenn er mit einem Wort adressiert wird, das sowohl aus dem Syndrom S(v) als auch aus einem 4-Bit-Wort besteht, das die Nummer der Gruppe mit dem harten Fehler darstellt. Auf diese Weise hat man ein unmittelbares Lesen der Tabellen von Fig. 1 bis 11 und kann es vorteilhaft realisieren. Es sollte jedoch beachtet werden, daß das Lesen dieser Tabellen auch mit Hilfe anderer gut bekannter Verfahren realisiert werden kann, zum Beispiel mit programmierbaren logischen Anordnungen (PLA) oder mit einer bestimmten kombinatorischen Logik . . . Insbesondere wurde der Speicher 21 so programmiert, daß irgendein SPE-Syndrom oder kein Syndrom auf Bus 28, d. h. die 12 höchstwertigen Bits des Adreßbusses 35, das Lesen eines 6-Bit-Wortes zur Folge hat, das alle Leitungen von Bus 80 auf den Wert L setzt.
  • Die erweiterte Fehlerkorrekturvorrichtung entsprechend der Erfindung arbeitet in folgender Weise: Das Datenwort v, das von seinem angegebenen Speicherplatz gelesen wird, wird zuerst in den Zwischenspeichern 27 gespeichert. Die Syndromdecodierschaltung 26 berechnet aus dem 44-Bit-Datenwort v ein 12-Bit-Syndrom S(v). Die Syndromdecodierschaltung besteht grundlegend aus einer herkömmlichen kombinatorischen Logik, die einem Fachmann wohlbekannt ist. Die Steuerleitung 34 wird auf einen hohen Pegel gesetzt, was die Speicherung des Syndroms in das Syndromregister 25 zur Folge hat. Die SPE-Decodierschaltung 20, die den Wert von S(v) auf dem 12-Bit-Bus 28 empfängt, decodiert S(v), um zu bestimmen, ob S(v) null ist oder zu den oben aufgeführten SPE-Syndromen gehört, entsprechend Schritt 2 von Fig. 12.
  • Wenn festgestellt wird, daß S(v) gleich null ist, erzeugt die SPE-Decodierschaltung 20 einen niedrigen Pegel auf irgendeiner Leitung von Bus 90, um jedes UND-Gatter 60-XX (mit XX = 01 bis 44) auf einen niedrigen Pegel zu setzen. Das Auftreten eines SPE-Syndroms in den höchstwertigen Bits des Adreßbusses von Speicher 21 hat, wie früher erwähnt wurde, das Lesen eines 6- Bit-Datenwortes auf Bus 32 zur Folge, was alle Leitungen des 44- Bit-Busses 80 auf einen niedrigen Pegel setzt. In diesem Fall wird die Steuerleitung 36 auf einen niedrigen Pegel gesetzt.
  • Demzufolge wird jedes OR-Gatter 50-XX (mit XX = 01 bis 44) auf einen niedrigen Pegel gesetzt, und das Eingabedatenwort v, das über den Bus 70 übertragen und als fehlerfrei erkannt wird, wird über die EXOR-Gatter 40-XX an den Ausgang der fehlerkorrigierenden Vorrichtung übertragen (mit XX = 01 bis 44).
  • Wenn festgestellt wird, daß S(v) zu den oben aufgeführten SPE- Syndromen gehört, erzeugt die SPE-Decodierschaltung 20 auf derjenigen Leitung von Bus 90 einen hohen Pegel, die der Gruppe entspricht, in der ein Fehler aufgetreten ist, wodurch die ersten Eingänge von allen UND-Gattern der Gruppe aktiviert werden, die der angegebenen fehlerhaften Gruppe entspricht. In ähnlicher Weise aktiviert die SPE-Decodierschaltung 20 auf Bus 33 die Leitungen, die der Position der Bits in der fehlerhaften Gruppe entsprechen, die wieder invertiert werden müssen, um das ursprüngliche Datenwort u wiederherzustellen. Die UND-Gatter, die zu den Bitpositionen gehören, die eine falsche Information übertragen, werden demzufolge auf einen niedrigen Pegel gesetzt. Da die höchstwertigen Bits des Adreßbusses 35 ein SPE-Syndrom übertragen, wird, wie früher, ein 6-Bit-Datenwort aus dem Speicher 21 gelesen, was alle Leitungen von Bus 80 und demzufolge den ersten Eingang jedes OR-Gatters 50-XX (mit XX = 01 bis 44) auf einen niedrigen Pegel setzt. Die OR-Gatter, die den Bitpositionen innerhalb der fehlerhaften Gruppe entsprechen, die wieder invertiert müssen, werden demzufolge auf einen hohen Pegel gesetzt. Dies führt zur abschließenden Invertierung der entsprechenden Bits mit Hilfe der entsprechenden EXOR-Gatter.
  • Unter Bezugnahme auf ein früheres Beispiel; wenn das Syndrom des Eingabedatenwortes v gleich "7B8" ist (die vorhergehende Tabelle zeigt an, daß in der dritten Gruppe ein Fehler aufgetreten ist, und insbesondere die letzten drei Bits dieser Gruppe falsch sind), setzt die SPE-Decodierschaltung die dritte Leitung von Bus 90, was die Aktivierung von irgendeinem UND-Gatter 60-XX verhindert, mit Ausnahme von denen in Gruppe 3, d. h. von 60-09, 60-10, 60-11 und 60-12. Die SPE-Schaltung aktiviert auch die Leitungen 2, 3 und 4 von Bus 33, was die UND-Gatter 60-10, 60-11 und 60-12 auf einen HGH-Zustand setzt. Da die höchstwertigen Bits des Adreßbusses 35 den Wert des SPE-Syndroms übertragen, sind die aus dem Speicher 21 auf den 6-Bit-Bus 32 gelesenen Daten so beschaffen, daß irgendeine Leitung von Bus 80 auf einen niedrigen Pegel gesetzt wird. Deshalb werden nur die OR-Gatter 50-10, 50-11 und 50-12 auf einen hohen Pegel gesetzt, was die Invertierung der Bits 10, 11 und 12 des Eingangsdatenwortes v mit Hilfe der EXOR-Gatter 40-10, 40-11 und 40-12 erlaubt.
  • Wenn das berechnete Syndrom S(v) weder gleich null noch in der obigen Tabelle enthalten ist, werden die bereits erwähnten "Invertieren - Schreiben"- und "Invertieren - Lesen" -Prozeduren entsprechend den Schritten 4 und 5 von Fig. 12 ausgeführt. Das entstehende Datenwort v' wird an den Eingang der Zwischenspeicher 27 übertragen, sein Syndrom wird mit Hilfe der Syndromdecodierschaltung 26 berechnet. Die Steuerleitung 34 wird auf einen niedrigen Pegel gesetzt, was das Speichern des neuen Syndroms in das Syndromregister 25 verhindert. Die Decodierschaltung 20, die dieses neue Syndrom S(v') auf Bus 28 empfängt, bestimmt, ob S(v') gleich null ist oder zu den oben aufgeführten SPE-Syndromen gehört.
  • Wenn festgestellt wird, daß S(v') gleich null ist, erzeugt die SPE-Decodierschaltung 20 auf jeder Leitung von Bus 90 den niedrigen Pegel, damit jedes UND-Gatter 60-XX (mit XX = 01 bis 44) auf einen niedrigen Pegel gesetzt wird. Da die Steuerleitung 36 auf einen hohen Pegel gesetzt wird, werden alle Leitungen des 44-Bit-Busses 80 und demzufolge die erste Eingangsleitung jedes OR-Gatters 50-XX auf einen niedrigen Pegel gesetzt. Folglich wird jedes OR-Gatter 50-XX (mit XX = 01 bis 44) auf den niedrigen Pegel gesetzt, und das vom Bus 70 übertragene und als fehlerfrei erkannte Datenwort v' wird über die EXOR-Gatter 40-XX (mit XX = 01 bis 44) zum Ausgang der Fehlerkorrekturvorrichtung übertragen.
  • Wenn festgestellt wird, daß S(v') zu den oben aufgeführten SPE- Syndromen gehört, dann erzeugt die SPE-Decodierschaltung 20 auf der Leitung von Bus 90 einen hohen Pegel, die der fehlerhaften Gruppe entspricht, wodurch die ersten Eingänge aller UND-Gatter der Gruppe aktiviert werden, die der bezeichneten fehlerhaften Gruppe entspricht. In ähnlicher Weise aktiviert die SPE-Decodierschaltung 20 auf Bus 33 die Leitungen, die der Position der Bits innerhalb der fehlerhaften Gruppe entsprechen, die wieder invertiert werden müssen, um das Wort v' zu korrigieren und das ursprüngliche Datenwort u zurückzuspeichern. Die UND-Gatter, die den Bitpositionen zugeordnet sind, die eine falsche Information enthalten, werden demzufolge auf einen hohen Pegel gesetzt. Da die Steuerleitung 36 auf einem hohen Pegel bleibt, wird jede Leitung von Bus 80 und demzufolge jeder erste Eingang der OR- Gatter 50-XX (mit XX = 01 bis 44) auf einen niedrigen Pegel gesetzt. Infolgedessen werden die OR-Gatter, die den Bitpositionen entsprechen, die eine falsche binäre Information enthalten, auf einen hohen Wert gesetzt, was zur Invertierung der entsprechenden Bits mit Hilfe der zugeordneten EXOR-Gatter führt. Es sollte beachtet werden, daß das Signal, das auf der Steuerleitung 36 existiert, mit irgendeiner einfachen sequentiellen Logikschaltung oder irgendeiner anderen im Fachgebiet gut bekannten Steuerlogikschaltung erzeugt werden kann.
  • Dies schließt die ECC-Verarbeitung des Wortes v' entsprechend Schritt 14 von Fig. 12 ab.
  • Wenn das auf Bus 28 erscheinende S(v') weder zu den SPE-Syndromen gehört noch gleich null ist, dann liest die SPE-Decodierschaltung 20 den Wert der Summe der Syndrome S(v) und S(v') auf Bus 29 entsprechend Schritt 7 von Fig. 12. Wenn der auf Bus 29 übertragene Wert nicht zu den SPE-Syndromen gehört, dann endet der Prozeß durch Anzeige eines nicht korrigierbaren Fehlers entsprechend Schritt 8 von Fig. 12, da die Erfindung nicht imstande ist, solche Situationen zu behandeln.
  • Wenn S(v') + S(v) zu den oben aufgeführten SPE-Syndromen gehört, dann erzeugt die SPE-Decodierschaltung 20 einen hohen Pegel auf der Leitung von Bus 90, die der fehlerhaften Gruppe entspricht, wodurch die ersten Eingänge aller UND-Gatter der Gruppe aktiviert werden, die der bezeichneten fehlerhaften Gruppe entspricht. Die SPE-Decodierschaltung 20 setzt jede Leitung von Bus 33 auf einen niedrigen Pegel, wodurch alle UND-Gatter 60-XX (mit XX = 01 bis 44) blockiert werden. Die Steuerleitung 36 wird auf einen niedrigen Pegel gesetzt. Demzufolge steuert der Decodierer 22 jede Leitung von Bus 80 entsprechend dem Inhalt des 6-Bit-Datenwortes, das aus dem Speicher 21 gelesen wurde. Da die niedrigstwertigen Bits des Adreßbusses 35 die Nummer der fehlerhaften Gruppe und die höchstwertigen Bits des Adreßbusses 34 den Wert des berechneten Syndroms S(v') übertragen, kann der Speicher über Bus 80 unmittelbar die Position der Bits liefern, die zu invertieren sind, um das Datenwort v' zu korrigieren und das ursprüngliche Datenwort u zurückzuspeichern.
  • Obwohl die bevorzugte Ausführung der Erfindung insbesondere unter Bezugnahme auf den vorhergehenden speziellen Reed-Solomon- Code beschrieben wurde, sollte beachtet werden, daß die Erfindung nicht auf diesen Fall beschränkt ist. Die Größe des Datenwortes, 44 Bits, kann leicht erweitert werden, beispielsweise auf 72-Bit-Datenworte mit 60 (15·4) Datenbits und 12 (3·4) ECC- Bits. In solch einem Fall ist die Eindeutigkeit der Syndrome eines Fehlers in einer Gruppe in Verbindung mit einem einfachen Bitfehler für eine gegebene Nummer einer fehlerhaften Gruppe noch gesichert.
  • Eine andere Möglichkeit zur Erzeugung eines anderen Reed-Solomon-Codes ist die Verwendung einer anderen T-Matrix. Es sollte beachtet werden, daß die T-Matrix zu einem primitiven Element eines Galois-Feldes GF(2b) gehören muß. Der oben beschriebene Fall bezog sich auf die zugehörige Matrix mit b = 4. Insbesondere kann die folgende T-Matrix benutzt werden:
  • 0001
  • 1000
  • 0100
  • 0011.
  • Die erweiterte Fehlerkorrekturvorrichtung der Erfindung kann auch mit einem anderen b-Wert realisiert werden, beispielsweise mit b = 3. Wie für b = 4 können nur zwei verschiedene T-Matrizen und demzufolge zwei verschiedene H-Matrizen benutzt werden (30, 21). Dies sind die zwei T-Matrizen

Claims (7)

1. Ein Fehlerkorrekturverfahren zur Korrektur eines in einem Speicher eines Informationsverarbeitungssystems gespeicherten n-Bit-Datenwortes, wobei das Datenwort in Gruppen von b Bits unterteilt ist und ein Feld von n-r Datenbits sowie ein Feld von r Bits des Fehlerkorrekturcodes (ECC) enthält, entsprechend einem Reed-Solomon-Code "Korrektur in einer Gruppe/Feststellung in zwei Gruppen" (SPC/DPD), dadurch charakterisiert, daß es die folgenden Schritte umfaßt:
- Konstruktion einer Menge von n/b Tabellen, die die Werte von Syndromen enthalten, die entsprechend dem SPC/- DPD-Code berechnet wurden, wobei jede Tabelle den Syndromen für das Auftreten von Fehlern in einer gegebenen Gruppe zusammen mit dem Auftreten eines zusätzlichen Fehlers in einer anderen Gruppe entspricht;
- Lesen (1) eines Wortes (v) von einem Speicherplatz;
- Berechnen (2) eines ersten Syndroms S(v), das dem gelesenen Wort (v) gemäß dem SPC/DPD-Code entspricht;
- Bestimmung, ob das Syndrom gleich Null oder ein Syndrom eines Eingruppenfehlers ist; im zweiten Fall kann das gelesene Wort (v) mit Hilfe des SPC/DPD-Codes korrigiert werden;
- wenn das erste Syndrom ein Syndrom eines Zweigruppenfehlers ist, was einem nicht direkt korrigierbaren Fehler entspricht, wird (3) das Syndrom in einem Speicher gespeichert;
- Ausführung (4, 5) eines INVERT-WRITE (Invertierten Schreibens) und eines INVERT-READ (Invertierten Lesens) eines Datenwort (v), um ein zweites Datenwort (v') zu erzeugen, wobei sich das zweite Datenwort (v') vom gelesenen Wort (v) unterscheidet, wenn in dem genannten Speicherplatz ein gravierender Fehler auftritt;
- Berechnung eines zweiten Syndroms S(v'), das dem zweiten Datenwort (v') gemäß dem SPC/DPD-Code entspricht;
- Feststellung, ob das zweite Syndrom gleich Null oder ein Syndrom eines Eingruppenfehlers (SPE) ist; im zweiten Fall kann das zweite Datenwort (v') mit Hilfe des SPC/DPD-Codes korrigiert werden;
- wenn das zweite Syndrom ein Syndrom eines Zweigruppenfehlers (DPE) ist, was einem Fehler entspricht, der mit Hilfe des SPC/DPD-Codes nicht korrigiert werden kann, wird (7) das erste und das zweite Syndrom addiert, um ein drittes Syndrom S(v) + S(v') zu erzeugen;
- wenn das dritte Syndrom ein SPE-Syndrom ist, wird die Position einer Gruppe mit einem gravierenden Fehler bestimmt, die das Wort (v) geändert hat;
- Vergleich (11) des ersten Syndroms mit den in der Tabelle gespeicherten Werten, die der Position der Gruppe mit dem gravierenden Fehler entspricht, um das gelesenen Wort (v) zu korrigieren und den ursprünglichen Wert wiederherzustellen.
Dabei liefert das Verfahren die Korrektur von gravierenden Fehlern, die in einer gegebenen Gruppe aufgetreten sind, und eines zusätzlichen behebbaren Fehlers, der in einer zweiten anderen Gruppe aufgetreten ist.
2. Ein Verfahren gemäß Anspruch 1, dadurch charakterisiert, das der Reed-Solomon-Code eine H-Matrix der Art
I I I I I I I I I O O
I T T² T³ T&sup4; T&sup5; T&sup6; T&sup7; O I O
I T² T&sup4; T&sup6; T&sup8; T¹&sup0; T¹² T¹&sup4; O O I
besitzt, wobei I die Einheitsmatrix, O die Nullmatrix und T die zugehörige Matrix eines primitiven Elementes eines Galois-Feldes (2b) ist.
3. Ein Verfahren gemäß Anspruch 2, dadurch charakterisiert, daß die Matrix T vom Typ
0001
1000
0100
0011
ist.
4. Ein Verfahren gemäß Anspruch 2, dadurch charakterisiert, daß die Matrix T vom Typ
0001
1001
0100
0010
ist.
5. Ein Verfahren gemäß Anspruch 2, dadurch charakterisiert, daß die Matrix T vom Typ
001
101
010
ist.
6. Ein Verfahren gemäß Anspruch 2, dadurch charakterisiert, daß die Matrix T vom Typ
001
100
011
ist.
7. Ein Verfahren gemäß irgendeinem der Ansprüche 1 bis 6, dadurch charakterisiert, daß das Datenwort ein Feld von 32 Datenbits und ein zweites Feld von 12 Fehlerkorrekturcodebits (ECC) enthält.
DE88480012T 1988-04-29 1988-04-29 Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden. Expired - Fee Related DE3882223T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP88480012A EP0339166B1 (de) 1988-04-29 1988-04-29 Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden

Publications (2)

Publication Number Publication Date
DE3882223D1 DE3882223D1 (de) 1993-08-12
DE3882223T2 true DE3882223T2 (de) 1994-01-27

Family

ID=8200493

Family Applications (1)

Application Number Title Priority Date Filing Date
DE88480012T Expired - Fee Related DE3882223T2 (de) 1988-04-29 1988-04-29 Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.

Country Status (4)

Country Link
US (1) US4961193A (de)
EP (1) EP0339166B1 (de)
JP (1) JPH01304543A (de)
DE (1) DE3882223T2 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0799503B2 (ja) * 1990-09-12 1995-10-25 パイオニア株式会社 符号化されたデータの誤り訂正方法
US5243604A (en) * 1990-12-18 1993-09-07 Seagate Technology, Inc. On-the-fly error correction
US5226043A (en) * 1990-12-27 1993-07-06 Raytheon Company Apparatus and method for data error detection and correction and address error detection in a memory system
GB2264846B (en) * 1991-09-20 1995-11-15 Motorola Inc Extended error correction of a transmitted data message
EP0563491A1 (de) * 1992-03-31 1993-10-06 International Business Machines Corporation Verfahren und Vorrichtung zur Ausführung eines Kodes, der Dreifachfehler erkennt und Zweifachfehler korrigiert
US5502732A (en) * 1993-09-20 1996-03-26 International Business Machines Corporation Method for testing ECC logic
US5457702A (en) * 1993-11-05 1995-10-10 The United States Of America As Represented By The Secretary Of The Navy Check bit code circuit for simultaneous single bit error correction and burst error detection
US5434719A (en) * 1994-03-18 1995-07-18 Seagate Technology, Inc. Correction of header information in a magnetic disc drive
US5745507A (en) * 1995-03-31 1998-04-28 International Business Machines Corporation Systematic symbol level ECC for use in digital memory systems
US5757823A (en) * 1995-10-03 1998-05-26 International Business Machines Corporation Error detection and correction for four-bit-per-chip memory system
US5761221A (en) * 1995-12-11 1998-06-02 International Business Machines Corporation Memory implemented error detection and correction code using memory modules
US5768294A (en) * 1995-12-11 1998-06-16 International Business Machines Corporation Memory implemented error detection and correction code capable of detecting errors in fetching data from a wrong address
US6675341B1 (en) * 1999-11-17 2004-01-06 International Business Machines Corporation Extended error correction for SEC-DED codes with package error detection ability
US7430167B2 (en) * 2003-09-18 2008-09-30 International Business Machines Corporation Method and system to enable an adaptive load balancing in a parallel packet switch
JP4742553B2 (ja) * 2004-09-22 2011-08-10 ソニー株式会社 記憶装置
US7292950B1 (en) * 2006-05-08 2007-11-06 Cray Inc. Multiple error management mode memory module
US7721178B2 (en) * 2006-06-01 2010-05-18 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code
US20070283208A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus diagnostic features
US20070283223A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with all checkbits transferred last
US20070283207A1 (en) * 2006-06-01 2007-12-06 International Business Machines Corporation Systems, methods, and computer program products for providing a two-bit symbol bus error correcting code with bus timing improvements
US8010875B2 (en) * 2007-06-26 2011-08-30 International Business Machines Corporation Error correcting code with chip kill capability and power saving enhancement
CN102157850B (zh) * 2010-12-30 2012-12-26 上海航天科工电器研究院有限公司 大电流断路器开关插座
TWI486961B (zh) * 2013-01-16 2015-06-01 Univ Nat Taiwan Science Tech 非揮發性記憶體的故障遮蔽方法
US20150067437A1 (en) * 2013-08-30 2015-03-05 Kuljit S. Bains Apparatus, method and system for reporting dynamic random access memory error information

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55115148A (en) * 1979-02-26 1980-09-04 Hitachi Ltd Error detection and correction system
DE3177013D1 (en) * 1981-12-30 1989-04-20 Ibm Two bit per symbol sec/ded code
US4464753A (en) * 1981-12-30 1984-08-07 International Business Machines Corporation Two bit symbol SEC/DED code
US4509172A (en) * 1982-09-28 1985-04-02 International Business Machines Corporation Double error correction - triple error detection code
US4604751A (en) * 1984-06-29 1986-08-05 International Business Machines Corporation Error logging memory system for avoiding miscorrection of triple errors
JPS6132708A (ja) * 1984-07-25 1986-02-15 松下電工株式会社 木材単板の着色方法
EP0186719B1 (de) * 1984-12-28 1990-06-13 International Business Machines Corporation Gerät zum Korrigieren von Fehlern in Speichern
US4661955A (en) * 1985-01-18 1987-04-28 Ibm Corporation Extended error correction for package error correction codes
US4794597A (en) * 1986-03-28 1988-12-27 Mitsubishi Denki Kabushiki Kaisha Memory device equipped with a RAS circuit
US4862463A (en) * 1987-07-20 1989-08-29 International Business Machines Corp. Error correcting code for 8-bit-per-chip memory with reduced redundancy

Also Published As

Publication number Publication date
EP0339166B1 (de) 1993-07-07
US4961193A (en) 1990-10-02
JPH01304543A (ja) 1989-12-08
JPH0529935B2 (de) 1993-05-06
DE3882223D1 (de) 1993-08-12
EP0339166A1 (de) 1989-11-02

Similar Documents

Publication Publication Date Title
DE3882223T2 (de) Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden.
DE2060643C3 (de) Schaltungsanordnung zur Korrektur von Einzelfehlern
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE3586851T2 (de) Fehlerkorrekturverfahren und anordnung fuer chips mit multibitausgabe.
DE69112624T2 (de) Mehrfehlerkorrektur eines rechnerspeichers.
DE3486408T2 (de) Verfahren und Vorrichtung zur Dekodierung eines fehlerkorrigierenden Kodes.
DE3854393T2 (de) Verfahren und gerät zur fehlerkorrektur mit mehrfachdurchlauf für produktkode.
DE2260850C2 (de) Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE3854791T2 (de) Reed-Solomon Code verwendendes Fehler-Korrektur-Verfahren
DE102013215055A1 (de) Schaltungsanordnung und Verfahren mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern
DE102007058828A1 (de) Speicherbauelement und Fehlerkorrekturverfahren
DE3787900T2 (de) Verfahren und Gerät zur Erzeugung von Prüfungs-Byten zur Fehlerdetektion für einen Datenblock.
DE3750526T2 (de) Dekodierer.
DE2914515A1 (de) Verfahren und vorrichtung fuer ein wirksames fehlerentdeckungs- und korrektursystem
DE2357168C2 (de) Schaltungsanordnung für einen Speichermodul
DE102006005817B4 (de) Fehlererkennungsvorrichtung für einen Adressdecoder und Vorrichtung zur Fehlererkennung für einen Adressdecoder
DE2456709C2 (de) Schaltungsanordnung zur Fehlererkennung und -korrektur
DE2659031A1 (de) Fehlerkorrektur- und -steuersystem
EP0545498A2 (de) Verfahren und Schaltungsanordnung zum Decodieren von RS-codierten Datensignalen
DE4105860C2 (de) Schaltungsanordnung zum Erkennen und Korrigieren von Fehlern in Datenworten
DE2157829C2 (de) Anordnung zum Erkennen und Korrigieren von Fehlern in Binärdatenmustern
DE1250163B (de) Einrichtung zur Paritätsprüfung von Speicherworten
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee