-
HINTERGRUND DER ERFINDUNG
-
1. Gebiet der Erfindung
-
Diese
Erfindung betrifft die Korrektur und Erfassung von Fehlern, die
in einem Computersystem auftreten können, insbesondere innerhalb
einer Speichervorrichtung, und im Speziellen Systeme, in denen eine
Einzelbit-Korrektur, ergänzt
durch Familial-l-bis-4-Bit-Korrektur, und wortweite Doppelbit-Erfassung
bevorzugt werden, und noch spezieller 128-Bit-Datenwörter, die
in 4-Bit-RAM-Vorrichtungen gespeichert sind.
-
2. Hintergrundinformationen
-
Es
ist kostspielig, Speicher für
fehlerkorrigierenden Code (error correction code, ECC) zu reservieren;
daher sind Kompromisse im Hinblick auf perfekte Fehlerkorrektur
und -erkennung erforderlich. Zwecks nachhaltiger kommerzieller Rentabilität müssen immer
noch bei den größten Computersystemen im
Speziellen und anderen Datenspeichersystemen, die RAM verwenden,
im Allgemeinen entsprechende Kompromisse bei der Fehlererkennung
und -korrektur gemacht werden. Die Verwendung von ECC, um Speicher-Teilsysteme
zuverlässiger
zu machen, durch Bereitstellung der Fähigkeit, den Fehler einer einzelnen
Multibit-RAM-Vorrichtung zu ermöglichen und
diesen Fehler dynamisch zu korrigieren und dieselbe Fähigkeit
auch für
beliebige 1, 2, 3 oder 4 Bit innerhalb einer 4-Bit-RAM-Familie bereitzustellen
und weiterhin die Erfassung 2 beliebiger Bits mit Nicht-Familial-Fehler an einer beliebigen
Stelle in dem Wort zu ermöglichen,
ist der Weg, für
den wir uns entschieden haben. Diese Fähigkeit korrigiert alle Einzelbit-
und Familial-2-, 3- oder 4-Bit-Fehler fliegend, um ein korrigiertes
Datenwort zu erzeugen, und kennzeichnet Datenwörter mit anderen Fehlern oder
Fehlerarten als nicht korrigiert (nicht korrigierbar) und verfälscht. Wir sind
der Auffassung, dass dies die wahrscheinlichsten Fehler sind und
dass somit unser gewählter
Kompromiss wertvoll ist.
-
Als
die Dichte von RAM-Vorrichtungen und die Anforderungen an die Bandbreite
von Speicher-Teilsystemen mit der Zeit wuchsen, wuchs auch der Druck
auf die Hersteller von Speicher-Teilsystemen,
Multidatenbit-RAM-Vorrichtungen zu verwenden, um ihre Anforderungen
zu erfüllen.
Dies gefährdet
jedoch die Zuverlässigkeit
des Speicher-Teilsystems, das herkömmliche Standard-Single Bit
Correction/Double Bit Detection (SBC/DBD) verwendet. Während die
Maße von
RAM-Vorrichtungen kleiner werden und die Vorrichtungs-Fehlerraten
zunehmen, werden Datenwörter
anfälliger
für Fehler,
die mehr als ein Bit in der Vorrichtung betreffen. Auch nehmen, obwohl
Einzelbit-Fehler immer noch die häufigsten Fehler in RAM-Vorrichtungen
sind, weiche Einzelbit-Fehlerraten
aufgrund der Verkleinerung der Maße und der Zuverlässigkeits-Eigenschaften
dieser Vorrichtungen zu. Daher wird es wichtiger, zumindest Doppelbit-Fehler
von mehreren Vorrichtungen zu erfassen, so dass Datenverletzung
erfasst und sicher behandelt werden kann. Diese Erfindung bietet
diesen Schutz. Die Bereitstellung verbesserter Fehlererfassung und
verbesserter Fehlerkorrektur ohne wesentlichen Kostenzuwachs aufgrund
des erhöhten Prozentsatzes
redundanter ECC-Bits gegenüber
Informations-Datenbits sind zusätzliche
Ziele dieser Erfindung.
-
In
der Vergangenheit gab es zwei Hauptverfahren zur Fehlerkorrektur
und -erfassung. Das vorherrschende war die Erstellung mehrerer SBC/DBD-Felder über dem
Datenwort und die Zuweisung jedes Bits des RAM zu einem separaten SBC/DBD-Feld.
Das Problem bei diesem Verfahren sind die zusätzlichen Kosten der RAMs zur
Unterstützung
der zusätzlichen
Prüfbits.
Wenn z. B. ein 128-Bit-Datenwort vorliegt, das geschützt werden soll,
und dieses 128-Bit-Datenwort mit Hilfe von × 4 RAM-Vorrichtungen implementiert
wird, werden 4 Gruppen à 8
Prüfbits
benötigt,
um dieselbe Fehlerüberdeckung
zu liefern wie die vorgeschlagene Erfindung. Diese Prüfbits würden in
(8) × 4
RAM-Vorrichtungen implementiert. Unsere Erfindung benötigt nur 16
Prüfbits
oder 4 RAM-Vorrichtungen anstelle der 32 bei der Verwendung von × 4 Vorrichtungen.
Bei sehr großen
Speichern sind die zusätzlichen
Kosten dieses zusätzlichen
RAM signifikant, wenn nicht sogar wirtschaftlich untragbar.
-
Ein
anderes Verfahren ist die Verwendung zweier ECC-Felder, wobei jedes
ECC-Feld eine 2-Bit-"Adjazenz"-Korrektur bereitstellt.
(Das Wort "Adjazenz" bedeutet auf diesem
Fachgebiet innerhalb der Familie von Bits (d. h. der Bits) innerhalb
einer bestimmten RAM-Vorrichtung, nicht notwendigerweise Bits, die "nebeneinander" liegen.) Dieses
Verfahren erfordert ebenfalls 4 RAM-Vorrichtungen, um die 2 Gruppen
von 8 Prüfbits
zu implementieren, und verursacht daher dieselben Kosten. Es werden
jedoch in jedem der ECC-Felder nicht alle Zweibit-Fehler in mehreren
Vorrichtungen erkannt. Daher sind die Kosten dieselben, aber nicht
die Zuverlässigkeits-Eigenschaften.
-
Die
Multibit-Adjazenz-Fehlerkorrektur oder das Chip Kill wird mit Doppelbit-nicht-Adjazenz-Fehlererfassung
gemischt. Dies beinhaltet die Fähigkeit, Fehler
in einer einzelnen RAM-Vorrichtung
zu erfassen und zu korrigieren und weiter Fehler zu erfassen, die
aus weichen oder harten Fehlern eines einzelnen Bits in zwei beliebigen
RAM-Vorrichtungen innerhalb des 128-Bit-Worts resultieren. Dies ist durch keine andere
Lösung
jemals erreicht worden. In unserer Erfindung wird eine einzigartige
ECC-Tabelle in Verbindung mit einer spezifischen RAM-Fehlerdefinitions-Tabelle
(zur Syndrom-Decodierung) verwendet, die beide im Stand der Technik
nicht vorhanden sind.
-
Frühere Erfindungen
ermöglichten
nicht den Grad der Zuverlässigkeit,
der bei einer Fehlercode-Korrekturfunktion vorhanden ist, welche
Einzelbit-Fehlerkorrektur und Multibit-Adjazenz-Korrektur mit Doppelbit-nicht-Adjazenz-Fehlererkennung
verbindet, zumindest nicht mit einer geringen Anzahl zusätzlicher
Bits des ECC-Typs. (ECC bedeutet "Error Correcting Code", "fehlerkorrigierender
Code", und ist eine
häufig
verwendete Abkürzung
in diesem Fachgebiet.)
-
Daher
besteht eine Notwendigkeit zur Fehlerkorrektur und -erfassung bei
niedrigen Speicherkosten und hoher Zuverlässigkeit, und die Korrektur von
Familial-Fehlern ermöglicht
die Erfassung der wahrscheinlichsten Multibit-Fehler in einem Wort, denjenigen,
die in einer einzelnen DRAM- oder RAM-Vorrichtung auftreten. Daher
haben wir, indem wir das Problem auf diese Art ansehen, anstatt
zu versuchen, jeden möglichen
Fehler zu korrigieren, ein erfinderisches und kostengünstiges
Fehlererfassungs- und
-korrektursystem wie unten erläutert
konstruiert.
-
Es
hat auf dem Fachgebiet ähnliche
Systeme gegeben, aber diese haben nicht alle Vorteile oder Bedingungen
unserer Erfindung. Die vielleicht nächste Referenz ist in einem
U.S.-Patent (6,018,817),
das an Chen u. a. erteilt wurde. Bei Verwendung von RAM-Vorrichtungen
derselben Größe (× 4 Bit)
benötigt
die Chen '817-Referenz
12 ECC-Bits für
alle 72 Datenbits, wenn ein 4 Bit großer RAM verwendet wird, während unsere
Erfindung genügend
Zuverlässigkeit
mit nur 16 Bit ECC für
128 Datenbit unter Verwendung von 4 Bit großen RAMs bietet. (RAM ist der
Oberbegriff, der DRAM einschließt,
und obwohl unsere bevorzugte Implementierung auf DRAM-Chips entwickelt
wurde, können auch
andere RAM-Vorrichtungen verwendet werden.) Weiterhin benötigt Chen '817 16 ECC-Bits für jeweils
72 Datenbits, wenn sie × 8
RAM-Vorrichtungen
verwenden. Im Vergleich zu beiden Ausführungsformen von Chen '817 scheint unsere
Erfindung zu mehr Fehlerprüfungen
und möglicherweise
auch zu mehr Fehlerkorrekturen zu führen, benötigt jedoch weniger ECC-Bits.
-
Der
spezifische Code, um den 12 ECC-Bitcode zu unterstützen, scheint
im U.S.-Patent Nr. 5,757,823, Chen '823 (ebenfalls hierin durch diese Bezugnahme
eingeschlossen) beschrieben zu sein. Die Kosteneinsparungen im Zusammenhang
mit einem zusätzlichen
Drittel Einsparungen gegenüber Chen '823 werden vom Fachmann
begrüßt werden. Wie
Chen in Spalte 1, Zeilen 40–52,
erwähnte,
ist selbst eine Einsparung von 5% des Speicherplatzes für den Hauptspeicher
sehr wichtig für
Computersysteme.
-
Ein
weiteres Patent von Interesse schließt Blake u. a., U.S.-Patent
Nr. 5,682,394 ein, das eine Deaktivierungs-Funktion offenbart, und
dieses ist ebenfalls hierin durch diese Bezugnahme eingeschlossen.
-
Schließlich beschreibt
Adboo u. a., 5,490,155, ebenfalls hierin durch diese Bezugnahme eingeschlossen,
ein System zur Korrektur von × 4 DRAM-Fehlern;
wie bei unserer Erfindung verwendet auch Adboo 16 Prüfbits für ein Datenwort
mit 128 Bit. Adboo erfordert jedoch, dass die Prüfbits von zwei identischen
Paritätsbäumen (für jeweils
64 Bit erzeugt werden, worin jeder Paritätsbaum dieselbe Anzahl von
Eingaben hat und die Ausgaben gepaart werden, um bis zu vier Bitfehler
innerhalb einer einzigen DRAM- oder RAM-Vorrichtung zu korrigieren. Vielleicht
noch wichtiger ist, dass Adboo nur einen Einzelbit-Fehler in einem
Wort oder eins zwei benachbarte Bitfehler in einem Wort oder vier
benachbarte Bitfehler in einem Wort erkennen und korrigieren kann.
Adboo kann nicht zwei unzusammenhängende Einzelbit-Fehler oder
einen Einzelbit-Fehler außerhalb
einer Familial-Gruppe mit bis zu 4 Bitfehlern erfassen, im Gegensatz
zu unserer Erfindung. Wie mit Bezug auf Adboos 9A deutlich
zu sehen ist, führt
ein Fehler in zwei Prüfbits
(oder sogar viele der nicht zusammenhängenden Zwei-Bit-Fehler), die nicht
zusammenhängend
oder nicht benachbart sind, zu einem nicht korrigierbaren und nicht
erfassbaren Fehler. Als Beispiel für diese Schwäche von
Adboo ist anzumerken, dass der Code für Bit C4 0001 und der Code
für C7
1000 ist. Eine EXKLUSIV-ODER-Verknüpfung dieser
beiden Werte liefert als Ergebnis 1001, was bedeutet, dass Bit 0
fehlerhaft ist! Wenn also sowohl C4 als auch C7 fehlerhaft sind,
zeigt das Syndrom an, dass Bit 0 fehlerhaft ist, eine inakzeptable
Situation, selbst wenn ein solches Ereignis möglicherweise selten ist, weil
es zwei Einzelbit-Fehler übersehen
hat.
-
Das
Dokument
US 5,418,796 offenbart
einen Computerspeicher-Fehlererkennungs-
und -korrekturmechanismus, der zwei Ebenen zur Packung des Speichersystems
verwendet; die erste ist ein Speicherchip-Erfassungsfehler, der
immer dann ein Chip-Fehlersignal erzeugt, wenn ein Fehler erfasst wird,
und die zweite ist ein externer Chip, der einen Syndromgenerator
einschließt
und auf die Syndrombits und auf das Chip-Fehlersignal reagiert,
um anzuzeigen, dass ein Fehlerzustand erfasst wurde, und um für Korrektur
zu sorgen, wenn der erfasste Fehler korrigierbar ist.
-
Dementsprechend
besteht eine Notwendigkeit besserer Erfassung und Korrektur von
Fehlern, um die Zuverlässigkeit
von Computersystem-Speichern zu verbessern und dies mit einer minimalen Datenmenge
zu erreichen. Ein Fehlerkorrektursystem und Chip-Kill-System, zusammen mit Doppelbit-nicht-Familial-Fehlererkennung,
bietet eine kommerziell sehr nützliche
Lösung
für dieses
technische Problem.
-
Wir
beschreiben unsere Erfindung mit Bezug auf die Zeichnungen in der
Zusammenfassung und in den unten stehenden Abschnitten der detaillierten Beschreibung,
begrenzen ihren Schutzumfang jedoch nur durch die beigefügten Ansprüche.
-
Die
Erfindung ist in den beigefügten
selbständigen
Ansprüchen
1 und 11 detailliert definiert.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
1 ist
eine zur bevorzugten Ausführungsform
gehörende
Tabelle von Binärwerten,
welche die möglichen
Fehlerzustände
und die vier Bitcodes für sie
für jede
RAM-Vorrichtung im Wort definieren.
-
Die 2A, 2B, 2C und 2D (im
Folgenden zusammen als 2A–D bezeichnet) bilden eine
Tabelle von ECC-Binärwerten
gemäß einer
bevorzugten Ausführungsform
der Erfindung.
-
Die 3A, 3B und 3C (im
Folgenden zusammen als 3A–C bezeichnet) bilden eine
Tabelle von Werten, die die korrigierbaren Bits gemäß der bevorzugten
Ausführungsform
der Erfindung unter Verwendung der ECC-Werte in den 2A–D und der
Tabelle möglicher
Fehlerzustände in 1 kennzeichnet.
-
4 ist
ein ECC-Blockdiagramm, das den Ablauf von Prozessen gemäß den bevorzugten
Ausführungsformen
darstellt.
-
5 ist
ein Blockdiagramm, das zwei Zweige eines Paritätsbaums gemäß der bevorzugten Ausführungsform
der Erfindung darstellt, geordnet entsprechend der Tabelle mit fehlerkorrigierenden Codes
in 2A–D.
Die Erfindung verwendet 16 solche Zweige in jeder Ausführungsform
wie hierin beschrieben, um die 16 Prüfbits für ein Wort mit 128 Bit zu erzeugen.
-
Die 6A und 6B sind
ebenfalls Blockdiagramme, die zwei Zweige eines Paritätsbaums gemäß der bevorzugten
Ausführungsform
dieser Erfindung darstellen. Die Erfindung verwendet 16 solche Zweige,
um die 16 Syndrom-Codebits zu erzeugen, die verwendet werden wie
hierin weiter beschrieben. 6B und 6A sind mathematisch äquivalent.
-
7 ist
ein Blockdiagramm, das die Syndrom-Decodierfunktion gemäß einer
bevorzugten Ausführungsform
der Erfindung darstellt und das auch die Erzeugung des Fehlerstatus-Bits,
ebenfalls gemäß einer
bevorzugten Ausführungsform
der Erfindung, darstellt.
-
8 ist
ein Blockdiagramm, das die Fehlerstatus-Funktion detaillierter als die Darstellung
in 7 zeigt.
-
Die 9A und 9B sind
Blockdiagramme, die ein UND-Gatter
und eine Eingangs-Anordnung von Syndrom-Linien dorthin für den Schaltkreis in 7 darstellen
und sind am besten mit Bezug auf einen Teil von 7,
dargestellt in 10, zu betrachten.
-
10 ist
ein Teil des Schaltkreises in 7, der einen
Satz von vier XOR-Gattern enthält, von
denen jedes eine Eingabe von acht der UND-Gatter in 9 empfängt.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Es
ist eine hochgradig komplexe Codesequenz entdeckt worden, die eine
Möglichkeit
bietet, Multibit-Fehler innerhalb einer Bitfamilie zu korrigieren
und gleichzeitig auch alle zusätzlichen
Einzelbit-Fehler außerhalb
dieser Bitfamilie zu erfassen, und die weiter eine Möglichkeit
bietet, viele andere nicht korrigierbare Multibit-Fehler zu erfassen.
Dieser Code benötigt
nur 16 "Prüf-" oder ECC-Bits, die durch
die Verwendung des erfindungsgemäßen Codes
für Datenwörter mit
128 Bit erzeugt werden, durch Eingabe jedes bezeichneten der 128
Bit in jeden XOR-Baum der 16 Prüfbits,
die durch den Code angegeben werden. Derselbe Generator (oder ein identischer,
der durch denselben Code geordnet wird) regeneriert die 16 Prüfbits, wenn
ein Speicherwort mit 128 Bit aus dem Hauptspeicher ausgelesen wird,
und ein Vergleich mit den ursprünglich
erzeugten Prüfbits
wird durchgeführt
durch eine EXKLUSIV-ODER-Verknüpfung
der gespeicherten Prüfbits mit
der Ausgabe des Regenerators zur Erzeugung eines Syndrom-Codes.
(Dies ist mathematisch das Gleiche wie die Eingabe der 128 Datenbits
durch dieselbe XOR-Baumkonfiguration und das Hinzufügen des
Prüfbits
für jeden
Zweig des Baums; in der Praxis bevorzugen wir die Erzeugung des
Syndroms auf diese Art, da weniger Zykluszeit benötigt wird.)
Das resultierende Syndrom wird decodiert, wobei erneut die Codesequenz
zur Organisation der Decodier-Gatter, zur Identifizierung aller
korrigierbaren Fehler (540 an der Zahl) und zur Identifizierung
der meisten Zustände
nicht korrigierbarer Fehler verwendet wird, und zur Anzeige guter
Daten, wenn kein erkennbarer Fehler vorhanden ist, oder fehlerhafter Daten,
wenn Fehler erkannt werden, aber nicht korrigierbar sind.
-
Die
Codesequenz kann modifiziert werden durch Verschiebung von ECC-Werten
der Bits auf andere Bits, vorausgesetzt, dass sowohl der ECC-Generator
als auch der Regenerator/Syndrom-Generator korrigiert werden, um
die Codeänderung
zu kompensieren, und die Syndrom-Decodierung ebenfalls modifiziert
wird, um die Verschiebung zu kompensieren.
-
DETAILLIERTE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Zuerst
werden die bevorzugten Komponenten-Konzepte und Teile beschrieben,
und dann wird die bevorzugte Funktionsweise der Erfindung beschrieben.
-
Bitte
betrachten Sie zunächst 1,
in der die RAM-Fehlerdefinitions-Tabelle
10 dargestellt ist, die fünf
Spalten hat, von denen die ersten vier (R) die DRAM- oder RAM-Bitnummer
für jedes
betreffende RAM angeben. Diese vier Bits werden als Familien-Bits
oder Familial bezeichnet, da sie sich innerhalb einer einzigen RAM-Vorrichtung
befinden. In manchen Texten wird dies als "Adjazenz" bezeichnet; wir halten diesen Begriff
jedoch für
verwirrend, da das letzte Bit in einem RAM auch als dem ersten Bit im
nächsten
RAM benachbart betrachtet werden kann. Daher sagen wir für die Zwecke
dieses Patents, dass alle Bits innerhalb einer DRRM- oder RAM-Vorrichtung
als Familial-Bits betrachtet werden und diejenigen außerhalb
nicht Familial oder nicht Teil derselben Familie sind. Wir benennen
die Zeilen 0–16
der Tabelle 10 in 1 zwecks späterer Bezugnahme.
-
Tabelle
10 beschreibt alle möglichen
Fehlerzustände
(es sind sechzehn, einschließlich "Kein Fehler") im Bereich S für jedes
in der Familie von Bits in RAM X, einer Vier-Bit-RAM- oder X4-RAM-Vorrichtung.
(In einem Wort mit 128 Bit gibt es 32 solche Vorrichtungen, RAMs
0–31,
und in unserem bevorzugten erfindungsgemäßen System gibt es 4 zusätzliche Vorrichtungen,
d. h. es gibt insgesamt 36 solche RAM X-Vorrichtungen pro 128-Bit-Datenplus-l6-Bit-ECC-Wort).
Die Spalte ETC zeigt den Fehlercode für jede Art von Fehler an. So
zeigt S3 einen Fehler in Bit 3 von RAM X an, wobei keine weiteren
Fehler in der Familie vorliegen. D2 zeigt einen möglichen
Zwei-Bit-Fehlerzustand innerhalb der Familie an, wobei die Bits
2 und 1 von RAM X fehlerhaft sind. T zeigt einen der vier möglichen
Drei-Bit-Fehlerzustände
für RAM
X innerhalb der Familie an, und das Q (Q0) zeigt an, dass alle vier
Bits fehlerhaft sind.
-
Es
ist anzumerken, dass die Anordnung von Einsen in der Tabelle 10
willkürlich
ist und dass eine Person mit grundlegenden Fachkenntnissen in der Lage
sein wird, die fünfzehn
Einsen an andere Positionen zu setzen, mit dem Ergebnis einer spezifischen
Tabelle, die alle möglichen
Fehler kennzeichnet, sie aber an anderen Stellen hat. Diese bevorzugte
Tabelle in 1 könnte auf Wunsch durch jede derartige
Tabelle ersetzt werden, ohne den Bereich dieser Erfindung zu verlassen.
Zum Beispiel könnte die
diagonale Linie von Einsen in den ersten vier Zeilen umgekehrt werden,
so dass in Spalte 0 Zeile 0 eine 1 hätte, in Spalte 1 Zeile 1 eine
1 hätte,
in Spalte 2 Zeile 2 eine 1 hätte
und in Spalte 3 Zeile 3 eine 1 hätte
und der Rest der Tabelle gleich bleiben und so eine andere mögliche Variante
der Erfindung produzieren würde,
wie mit Bezug auf den Rest dieser Offenbarung gänzlich verständlich werden
wird. Diese Tabelle ist bei der Bewertung jeder Bitfamilie (d. h.
jeder 4-Bit-RAM-Vorrichtung)
zu berücksichtigen.
-
Von 2A bis 2D erstreckt
sich eine einzige ECC-Tabelle
20, die jeden der Signalzustände
der Bits ECC 0–15
für jedes
Bit 0–127
angibt. Wie in der Zusammenfassung erwähnt, könnte diese Erfindung modifiziert
werden durch Verschiebung einer Familie von Bits an eine andere
Position oder Verschiebung vieler Familien an andere Positionen,
und wenn man die anderen Komponenten der Erfindung mit Bezug auf
den Code verschiebt, der in dieser verschobenen Tabelle angegeben
ist, könnte
man die Erfindung in anderer Form reproduzieren. Das heißt, dass,
wenn z. B. die ECC-Tabelle der Familie der Bits 127–124 (Zeilen
ECC 0–15
für jede
Spalte 127–124) unter
die Bits 72–75
verschoben würde
und die ECC-Tabelle für
das Bitmuster von ECC-Bits, das sich aktuell in den Spalten 72–75 befindet,
verschoben würde,
um die ECC-Bits unter 124–127
zu ersetzen, die Erfindung nach wie vor funktionieren würde. Der
entdeckte Code ist daher nicht spezifisch für die Darstellung in den 2A–D, aber
der Satz von 32-Familien-Bitcode-Mustern sollte exakt reproduziert
werden, um einen 128-Bit-x-l6-Bit-Code zu erzeugen, damit die Erfindung
so funktionieren kann wie hierin detailliert beschrieben.
-
3A–C ist eine
Tabelle der korrigierbaren Syndrom-Codes, angegeben in Hex, aber gedruckt
in dezimaler Form, so dass z. B. eine 12 (dargestellt in Tabelle
30) Chex oder 11002 entspricht. Somit gibt jede
Zahl in der Tabelle 4 Bit des Syndrom-Codes an, die benötigt werden,
um einen bestimmten Fehler innerhalb einer Familie zu korrigieren.
Es gibt 36 Familien (0–35),
da es 4 Familien für
die Prüfbits
(32–35) gibt.
Die 15 möglichen
Fehlercodes sind in der Spalte ganz links angegeben, und die Familie
(DRAM-Nummer) ist oben angegeben. So zeigt ein Syndrom-Code von
0,9,2,7 einen T3-Fehler in Familie D (RAM 0) an, was mit Bezug auf 1 bedeutet,
dass die Bits 0, 1 und 2 fehlerhaft sind. So gibt diese Tabelle
die 540 korrigierbaren Fehler an, welche die bevorzugte Ausführungsform
der Erfindung bearbeiten kann, und wie sie auf dem Syndrom basieren,
das gemäß der bevorzugten
Form der Erfindung erzeugt wird. (Es ist anzumerken, dass die mit "0" bezeichnete Familie (oder Spalte) den
Bits 127–124
des Datenworts entspricht.)
-
4 stellt
den Datenfluss in zwei verwandten Diagrammteilen 40 und 41 dar.
Das Diagramm 40 zeigt den Weg der Daten in die DRAM- oder RAM-Vorrichtung 31,
worin im Block 42 16 Prüfbits erzeugt
werden, und sowohl die Prüfbits
als auch die ursprünglichen
128 Datenbits werden auf den Linien 43 bzw. 44 an
die Speichervorrichtung gesendet. Das Abrufen des Worts, nachdem
es im Speicher gespeichert wurde, beinhaltet Prüfbit-Regenerierung und Vergleich 45, 46,
und auf der Grundlage des erzeugten Syndroms, Decodieren korrigierbarer
Fehler im Datenwort und den Prüfbits, 47, 48,
gemeinsam mit der Erzeugung eines vorläufigen Kein-Fehler-Signals 49.
Das 128-Bit-Datenwort wird (wenn möglich) im Datenkorrektur-Block 35 korrigiert
(wo einer der 540 Syndrom-Codes erzeugt wird, um anzugeben, welche
Bits korrigiert werden müssen).
Auch wird im Block 36 eine Fehlerzustand-Erkennung durchgeführt, die
ein Indikatorsignal erzeugt, welches anzeigt, dass ein Fehler vorhanden
war und ob er korrigierbar war (und korrigiert wurde) oder ob er
nicht korrigierbar war. Das Syndrom kann auf Wunsch ausgegeben werden,
um anzuzeigen, welche Bits fehlerhaft sind.
-
Die 5–8 stellen
diesen Prozess, der in 4 in der Übersicht gezeigt wird, detaillierter dar.
-
Die
bevorzugte Ausführungsform
arbeitet mit einem Speicher, der zwei Standard-72-Bit-DIMMs verwendet.
("DIMMs" ist die allgemeine
Bezeichnung für
Dual In-line Memory Modules, eine heute häufig vertriebene Form von Speicher,
die meistens 36 × 4-DRAMs pro DIMM-Einheit
hat.) Diese häufig
verwendeten DIMMs bieten eine einfache Implementierung für ein Wort
mit 144 Bit, in dem es 128 Datenbits und 16 Prüfbits gibt. Die Verwendung
von Standard-DIMMs reduziert die Kosten des Systems in hohem Maße und erhöht so den
Wert dieser Erfindung. Bei dieser Zwei-DIMM-Organisation werden 16 Prüfbits für jedes
128-Bit-Wort erzeugt, das in den Speicher geschickt wird. Prüfbits sind
die berechnete ungerade Parität
für ein
spezifisches Muster von RAM-Bits. Nachdem die 16 Prüfbits mit
Hilfe der Fehlerkorrektur-Codetabelle in Tabelle 20 der 2A–D erzeugt
wurden, werden sie im Speicher gespeichert. Tabelle 20 zeigt den
erfindungsgemäßen ECC-Code, der
in der durch die bevorzugte Ausführungsform
beschriebenen Form verwendet wird. Die 16 Prüfbits, die mit jedem Wort verknüpft sind,
werden erzeugt durch Berechnung der ungeraden Parität an den
Einsen, die für
jedes Datenbit [127:0] in jeder ECC-Zeile gesetzt werden. (So wird
die "Tabelle" im Grunde in einem
Paritätsbaum
implementiert.)
-
Beim
Abrufen von Datenwörtern
wird der Vorgang der Erzeugung von Prüfbits mit einer Verdrehung
wiederholt.
-
Die
Prüfbit-Regenerierung
findet unter Verwendung des Lesens von Datenbits [127:0] aus den RAMs
statt. Diese regenerierten Prüfbits
werden Bit für
Bit mit den gespeicherten Prüfbits,
Bits [143:128] aus den RAMs verglichen. Der Vergleich, der eine XOR-Funktion
nutzt, resultiert in einem 16-Bit-Syndrom-Code. Wenn der Syndrom-Code decodiert
wird, wird eine Bestimmung vorgenommen, welche Bits oder Bitfamilie
im 128-Bit-Datenwort möglicherweise korrigierbare
Fehler haben.
-
Wenn
man nun 5 betrachtet, ist anzumerken,
dass das Schreiben von Daten, bestehend aus einem 128-Bit-Wort,
das in den Speicher geschrieben werden soll, verwendet werden, um
mit Hilfe eines Baums 50 mit einer ungeraden Parität in Übereinstimmung
mit den vorgeschriebenen Verbindungen auf der Grundlage der Werte
in der ECC-Tabelle der 2A–D 16 Prüfbits zu erzeugen. So werden
für den
ersten XOR-Gatter-Zweig 51 des Baums 50 Bits 0,
1, 4, 8 usw., bis zu Bit 103 des 128-Bit-Datenworts, wie durch die oberste
Zeile der 2A–D angegeben, in das XOR-Gatter 51 eingegeben,
um eine Ausgabe für
das erste Prüfbit
(ECC) der 16 Prüfbits
zu erzeugen. Auf diese Art und Weise wird ein Zweig für jedes
der 16 ECC-Bits konstruiert. Für
heuristische Zwecke sind nur Zweige, die die XOR-Gatter 51 und 52 umfassen,
welche die Prüfbits
0 bzw. 15 erzeugen, dargestellt. So werden von einer Eingabezeile 53 mit
128 Bit (0–127)
auf Zeile 54 16 Ausgabebits erzeugt. Dadurch wird die Funktion des
Blocks 42 in 4 ausgeführt, und die Daten und die
erzeugten Prüfbits,
welche den Daten durch den Code der Tabelle in 2A–D entsprechen,
können
nun in den Speicher geschrieben werden. (Wie zuvor erwähnt, könnte das
Codewort in 2A–D durch das Verschieben von
Codefamilien modifiziert werden und nach wie vor innerhalb des Schutzumfangs
dieser Erfindung liegen. Für
dieses Prüfungs-Erzeugungs-Modul
würde eine
solche Verschiebung zur Erzeugung eines Codes mit derselben Wirkung,
aber einer anderen Form als derjenigen der bevorzugten Ausführungsform
in einer geänderten
Verteilung der Eingaben auf die 16 Zweige des Baums, entsprechend
den vertauschten Werten des Codes, reflektiert werden.) Auf jeden
Fall sollte der Prüfbit-Code, nachdem
er erzeugt wurde, in RAM-Spei chervorrichtungen gespeichert werden,
die mit denjenigen verwandt sind, welche zum Speichern dieses speziellen Speicherdatenworts
verwendet werden, und somit 128 plus 16 Bit pro Wort für die Speicherung
benötigen.
Aufgrund der familienbedingten Einschränkungen wird es bevorzugt,
die Bits in x4-DRAMs zu speichern, wie in der Syndrom-Decodiergrafik
in 3 dargestellt. Das heißt, Bits
127→0 in
DRAMs 0→31, durch
4. Auch sollten die 16 ECC-Bits in DRAMs 32–35 gespeichert werden.
-
Wenn
das Wort aus dem Speicher abgerufen werden soll, verwendet der Prozess
die Daten, die mit Bezug auf 6A, 6B, 7 und 8 beschrieben
sind, in Übereinstimmung
mit den bevorzugten Ausführungsformen
dieser Erfindung.
-
In
den 6A und 6B stellen
wir alternative Ausführungsformen
dar. In 6A ist die Verarbeitung möglicherweise
schneller, da alle Codes für
jedes Syndrombit einen einzigen XOR-Zweig durchlaufen, während wir
in 6B für
jeden Zweig ein XOR-Gatter hinzufügen, um die gespeicherten Prüfbits separat
unterzubringen. Mathematisch sind diese identisch, aber die Variante
in 6A sollte aufgrund von weniger
Gatterlaufzeit schneller sein. Erneut werden, wie in 5,
die 128 Eingabezeilen (hier von den Speichervorrichtungen, eingehend
auf Zeile 63A oder 63B) auf die 16 Zweige eines XOR-Baums
verteilt, um 16 Bits zu erzeugen. In 6A wird
in jedem dieser Zweige eine zusätzliche Eingabe
aus dem Speicher genommen, wobei die gespeicherten Prüfbits, verteilt
C0–C15,
entsprechend auf die Zweige 0–15
angewandt werden. In 6B hat der XOR-Baum-Zweig einen
zusätzlichen
Stamm durch eine EXKLUSIV-ODER-Verknüpfung, die das Ergebnis der
EXKLUSIV-ODER-Verknüpfung
der zugeordneten der 128 Bit von jedem Zweig 61B–62B durch
die XOR-Gatter B0–B15
mit den gespeicherten ECC-Codebits C0–C15 verknüpft. Bei beiden Möglichkeiten
gibt es eine 16-Zeilen-Ausgabezeile 64A, 64B,
die nun als Ausgabe den Syndrom-Code für dieses Datenwort und den
Prüfbitcode enthält.
-
Somit
werden, wie in den 6A und 6B dargestellt,
Prüfbits
aus den RAMs ausgelesen und mit den 16 aus demselben 128-Bit-Datenwort
erzeugten Bits über
einen Paritätsbaum
wie oben gemäß der erfindungsgemäßen ECC-Tabelle
in 2A–D EXKLUSIV-ODER-verknüpft, um
einen Syndrom-Code mit 16 Bit zu erzeugen. Auch hier sollten, falls
der Leser die Anwendung der grundlegenden Ideen hierin mit einer
verschobenen Tabelle erwägt
und die Tabelle in den 2A–2D verschoben
wird, die Eingabezeilen zu den 16 Zweigen in Übereinstimmung mit der Tabellenverschiebung verschoben
werden.
-
Wir
wollen an die obige Erörterung
erinnern, dass diese Syndrom-Codes graphisch in den Tabellen 2A–2D dargestellt
sind, wobei entweder eine 1 oder eine 0 für jeweils 16 Bits gezeigt werden,
die dem Syndrom-Code für
jedes der 128 Bits im Datenwort zur Verfügung stehen. Die Tabelle in
den 3A–C
zeigt die 540 korrigierbaren Fehler durch Darstellung der Syndrom-Code-Werte, die für jede Art
von Fehler für
jede RAM-Vorrichtung stehen. Der Syndrom-Code ist ein Satz von 4
Zahlen, dargestellt in einer dezimalen Form von Hex.
-
Die
Syndrom-Codes werden durch eine Komplexität von UND-Gattern decodiert, wie in vereinfachter
Form, die für
Personen mit grundlegenden Fachkenntnissen verständlich ist, in 7,
mit Bezug auch auf die 9A, 9B und 10,
dargestellt ist. Diese Darstellungen passen zusammen wie folgt.
Die UND-Gatter in 9A und 9B (91 bzw. 95)
zeigen dieselbe allgemeine Konstruktion für UND-Gatter An (0–539) in 7 und
UND-Gatter 0–14
in 10. Die UND-Gatter 0–14 in 10 haben
die gleichen Eingaben, wie sie für
Gatter 91 in 9A dargestellt sind, aber die
Eingaben werden in Übereinstimmung
mit dem Codeabschnitt, der für das
jeweilige Bit relevant ist, invertiert, wie durch den erfindungsgemäßen Code
bestimmt (und im unmittelbar Folgenden für zwei solche UND-Gatter als
Beispiele beschrieben) ist. Diese UND-Gatter sind identisch mit
den UND-Gattern An in 7. Jede darauf folgende Gruppe
von UND-Gattern, die jeden nächsten
Satz aus vier ODER-Gattern bedient, wird in einem Muster angeordnet,
das ähnlich
demjenigen ist, das in 10 für die UND-Gatter 0–14 dargestellt
ist, so dass acht Fehlerausgaben in jedes von ihnen in Übereinstimmung
mit der Anordnung möglicher
Fehler in 1 eingehen können (acht für jedes
der vier Bits in der Familie). Die Eingaben werden in Übereinstimmung
mit dem Code für
diese Familie invertiert wie in 2A–D dargestellt.
Der Grund für
diese vereinfachte Darstellung wird deutlich, wenn wir die Funktion
detaillierter beschreiben.
-
Wir
erinnern daran, dass es 15 mögliche Fehlerarten
für jede
Familie à vier
Bit und einen Kein-Fehler-Zustand gibt, wie in Tabelle 10 dargestellt.
Es ist darauf hinzuweisen, dass, da der 15. ECC-Wert immer null
Eingaben haben wird, d. h., wenn alle Bits in einer Familie gültig sind,
es keinen Fehlerwert gibt, im Grunde nur 15 UND-Gatter vorhanden
sein müssen,
um die Syndrom-Decodierung für
das 128-Bit-Wort durchzuführen.
-
Obwohl
es möglich
wäre, diesen
Signalwert des Syndroms zu berechnen und mit einer Nachschlagetabelle
zu vergleichen, besteht eine schnellere Möglichkeit, den speziellen Fehler
zu erreichen, der im Syndrom zu finden ist, so dass er zur Korrektur des
Fehlers verwendet werden kann, darin, einen Satz von 18 Syndrombits
gleichzeitig 15 UND-Gattern für
jede Familie von Bits zur Verfügung
zu stellen. 10 zeigt, wie vier ODER-Gatter
mit acht Eingaben von den 15 UND-Gattern versehen werden. Bevor
wir 10 behandeln, sehen Sie bitte 9, das
erste UND-Gatter 91, das eine Eingabe zur Korrektur von
Bit 127 liefern würde.
Es ist anzumerken, dass eine negative oder invertierte Eingabe für die Syndrombits
0, 1, 2, 3, 6, 7, 9 und 13–15
bereitgestellt wird. Dies entspricht dem Bitmuster von Nullen für Bit 127 des
Diagramms in den 2A–D. Die Tabelle in den 3A–C könnte ebenfalls
verwendet werden, welche eine Transposition der Tabelle in 2A–D ist,
und ein Modulo-2 resultiert für
jeden der 15 möglichen
Fehlerzustände
für jede
der Familien im Wort zuzüglich
der Prüfbits
des Worts. Diese UND-Gatter-90-Eingabeanordnung ist spezifisch für das ODER-Gatter 127,
wie aus 10 ersichtlich ist, worin die
einzige Ausgabe von Gatter 0 (identisch mit Gatter 90 in 9A)
zum Gatter 127 geht. Das UND-Gatter 99 in 9B hat
eine andere Anordnung entsprechend den D1-Ergebnissen in Spalte
0 der Tabelle 3. So werden die Dezimalwerte für D1 (0, 1, 1 und 5) in das
Bitmuster 0.0,0,0:0,0,0,1:0,0,0,1:0,1,0,1, übersetzt, das an den Eingängen zu
Gatter 99 in 9B in der umgekehrten Reihenfolge
wiederholt wird. Um die Doppelbit-Fehlerwerte zu erhalten, werden
die Werte der zwei relevanten Bits aus der Tabelle in 2A–D EXKLUSIV-ODER-verknüpft. Daher
entsprechen die relevanten Bits, 0,2 (aus der Tabelle 1, die bei
einem D1-Fehler
fehlerhaft sein könnten),
den Bits 126 und 124, was zwei Bitmuster von ECC-Bits ergibt: 0,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0
bzw. 0,0,0,0,0,0,1,1,0,1,0,1,0,0,0,1. Ihre EXKLUSIV-ODER-Verknüpfung (Modulo-2-Addition)
ergibt das Bitmuster 0,0,0,0: 0,0,0,1:0,0,0,1:0,1,0,1, das auf die
Eingaben zum UND-Gatter 99 angewandt wird. Alle UND-Gatter
sind für
alle 480 korrigierbaren Fehler in der bevorzugten Ausführungsform,
wie in 7 dargestellt, ähnlich ausgeführt. Wir
machen das Gleiche mit den korrigierbaren Fehlerbits für die Prüfbits, aber
in diesem Fall geben wir einfach die Ausgabe in ein einziges Sechzig-Eingaben-ODER-Gatter 94 ein, da
wir nur daran interessiert sind, ob innerhalb der Prüfbits ein
korrigierbarer Fehler war.
-
Falls
gewünscht,
kann jeder Fehler, der gefunden wird, an einen Wartungsprozessor
gesendet werden, und in diesem Fall möchte man möglicherweise das Muster der
Anwendung jedes 16-UND-Gatter-Satzes
auf die vier Familien von Prüfbits
als Eingaben in 4 ODER-Gatter fortsetzen, um die Familie mit den
Fehlern zu ermitteln. Wie die Wartungs- und Ersetzungsfunktionen
ausgeführt
werden, liegt jedoch außerhalb
des Schutzumfangs dieser Erfindung; es genügt also anzumerken, dass wir
eine Ausgabe liefern könnten,
die angibt, welche Familie Fehler hat, um einem Benutzer des Systems
ein Wartungs-/Ersetzungs-Problem anzuzeigen.
-
Das
541. UND-Gatter (541, 7) hat nur invertierte Eingaben,
und wenn das Syndrom nur aus Nullen besteht, wird daraus eine "Kein Fehler"-Ausgabe erzeugt.
-
Um
zu wiederholen, wie die UND-Gatter-Funktion arbeitet, beziehen wir
uns erneut auf 9A. Es gibt acht mögliche Syndrome,
die diese Kombination verwenden, was einen Fehler in Bit 127 anzeigen
könnten.
Diese sind in 1 zu finden: Es sind Bits 0,
4, 5, 6 und 11–14
in dem Diagramm der Tabelle 10. Daher wird, wenn irgendein Bit im
Syndrom nicht einen Wert von 1 für
alle Eingabebits in das UND-Gatter 90 hat, die nicht invertiert
werden, oder wenn irgendeines der Bits im Syndrom nicht einen Wert
von 0 für
die invertierten Eingabebits in das UND-Gatter 90 hat,
dies zu einer Ausgabe von 1 führen
und den Wert des ODER-Gatters umschalten, wodurch ein Fehler für Bit 127
angezeigt wird. So wird für
Bit 127 (und ähnlich
für alle
anderen 127 Bits des Datenworts) ein 16-UND-Gatter-Satz positive Ausgaben
in einem einzigen Taktzyklus erzeugen und so anzeigen, dass das
ODER-Gatter, an das es Eingaben liefert, an eine hohe Ausgabe (eine
1) geht und das Bit, das diesem ODER-Gatter entspricht, umgeschaltet
oder korrigiert werden muss.
-
Im
Diagramm 70 in 7 ist der gesamte Aufbau dargestellt.
Hier liefert die Syndrom-Eingabezeile 71 die 16-Bit-Eingabe des Syndroms
in die Blöcke 81 (Testen
des Datenworts mit 128 Bit mit korrigierbarem Fehler), und über Zeile 73 in
den Block 82 (Überprüfen der
16 Prüfbits
auf Fehler). Der Syndrom-Code
wird auf Zeile 72 auch an ein UND-Gatter (541) gesendet,
welches, wenn das Ergebnis Null ist, dem Fehlerzustands-Block 83 "Kein Fehler" meldet.
-
Die
UND-Gatter des Blocks 81 erzeugen einen Wert aus dem 16-Bit-Syndrom,
der entweder anzeigt, dass keine Übereinstimmung mit dem Wert
besteht, der der Tabelle in 3A–C entnommen
wurde und diesem Gatter entspricht, oder dass im Gegenteil eine Übereinstimmung
vorhanden ist.
-
Jeder
der 16 Syndrom-Codes wird durch 541 UND-Gatter gesendet (7).
Von den 541 Ausgabezeilen kann nur eine eine "1" anzeigen,
während die
anderen 540 "0" anzeigen (was einen
Fehler in der UND-Gatter-Hardware verhindert). Die Ausgabe der UND-Gatter
0–479
wird an das ODER-Gatter 84 geliefert, das eine 1 ausgeben.
sollte, falls ein Fehler vorhanden ist. Die 0–479 UND-Gatter liefern auch eine
Ausgabe auf Acht-pro-ODER-Gatter-Basis
an die ODER-Gatter 0–127,
die jedes Bit der 128-Bit-Datenwörter repräsentieren.
Für jedes
von ihnen, das eine Ausgabe von 1 liefert, sollte das Bit, das durch dieses
Gatter dargestellt wird, zur Änderung
seines Signalwerts umgeschaltet werden, da es als fehlerhaft erkannt
wird. Eine Wolke 79 steht für die Verbindungen zwischen
den UND-Gatter-Ausgaben und den ODER-Gatter-Eingaben zur Vereinfachung
dieser Darstellung. Gatter 541 zeigt eine 1, wenn kein korrigierbarer
Fehler erkannt wurde. Wenn kein Fehler angezeigt wird, sind das
128-Bit- Datenwort
und sein 16-Bit-Paritätskontrollcode
gültige
Daten. Ein Fehlersignal von einem der UND-Gatter 479 weist
ein bestimmtes Fehlermuster auf, das verwendet werden kann, um die
128 Datenbit zu korrigieren, indem angegeben wird, welche(s) Bit(s)
fehlerhaft ist (sind). Die Ausgabe der ODER-Gatter 0–128 wird
in das XOR-Gatter 85 eingegeben, was eine einfache Möglichkeit
bietet, fehlerhafte Bits in der 128-Bit-Datenwort-Eingabe auf Zeile 86 umzuschalten,
um die fehlerhaften Daten zu korrigieren. Der Syndrom-Code wird
verwendet, um zu ermitteln, ob kein Fehler, ein korrigierbarer Fehler
oder ein nicht korrigierbarer Fehler vorhanden ist; sie werden im
Fehlerzustands-Feld 83 behandelt (siehe 8).
-
8 liefert
drei Indikatoren, "Fehler
erkannt, aber nicht korrigierbar" 105, "Fehler erkannt und
korrigiert" 106 und "Kein erkennbarer
Fehler" 107,
abgekürzt
dargestellt. Die Eingabe "NO
ERROR" (Kein Fehler)
kommt vom UND-Gatter mit der vollständig invertierten Syndrom-Eingabe
und erzeugt nur dann eine Eins, wenn alle Syndrombits Null sind.
Die Eingabe "CORRECTABLE
DATA" (Korrigierbare
Daten) kommt vom ODER-Gatter 84 in 7. Das Signal "CORRECTABLE CHECK
BIT" (Korrigierbares
Prüfbit)
kommt vom ODER-Gatter 94 in 7 und zeigt
an, dass einer der 60 erfassbaren Prüfbit-Fehler in diesem Datenwort
aufgetreten ist. Somit wurde, wenn Zeile 106 positiv ist,
einer der 540 möglichen
erfassbaren Fehler gefunden, und das Datenwort wurde korrigiert
anhand des Wissens, welche(r) Fehler in welchem der 128 plus 16
Prüfbits aufgetreten
ist (sind). Falls kein Fehler vorhanden war, sollte die Zeile 107 positiv
sein. Falls jedoch zwei beliebige der drei Eingaben positiv sind,
sollte auch die Ausgabe 105 positiv sein, was einen nicht
korrigierbaren Fehler und ungültige
Daten im 128-Bit-Datenwort anzeigt.
-
Insgesamt
kann also die Datenkorrekturschaltung bis zu vier Bit in einer Familie
und bis zu einem Bit in jeder Familie des 128-Bit-Worts hin- und herschalten.
Die drei Statuszeilen zeigen entweder keinen Fehler, einen korrigierbaren
Fehler. oder einen mehrfach nicht korrigierbaren Fehler (Multiple Uncorrectable
Error, MUE) an. Die Logik benötigt
540 UND-Gatter zur Bestimmung einer Korrektur aufgrund von 36 RAM-Vorrichtungen,
multipliziert mit 15, d. h. der Summe aus 4 Einzelbit-Fehler-Möglichkeiten
in einer Familie, 6 Doppelbitfehler-Möglichkeiten in einer Familie,
4 Dreifachbitfehler-Möglichkeiten in
einer Familie und einem Vierbit-Fehler in einer Familie. Nummer
541 wird willkürlich
als "Kein Fehler" bestimmt. Aufgrund
einer Computerberechnung wissen wir, dass keiner der Mehrbitfehler
auf einen der korrigierbaren Fehler oder "Kein Fehler" abgebildet werden kann. Daher muss
als Ergänzung,
wenn ein "Kein Fehler"-Signal und ein Fehlersignal
vorliegen, aber kein "Korrigierbarer
Fehler"-Signal,
ein MUE vorhanden sein, und das Wort wird als verfälschte Daten
behandelt.
-
Benachbarte
Bits befinden sich in derselben RAM-Vorrichtung oder Familie, während nicht
benachbarte Bits beliebige zwei oder mehr Bits sind, die sich in
verschiedenen RAM-Vorrichtungen oder Familien innerhalb des 144-Bit-Worts
befinden. Die Verwendung von × 4-Bit-DRAM-Chips
oder -Vorrichtungen ist ein fester Aspekt der Organisation der Erfindung.
Es gibt 32 RAM-Vorrichtungen, die für das 128-Bit-Wort reserviert
sind, und 4 RAM-Vorrichtungen sind den 16 Prüfbits über zwei Standard-DIMMs hinweg
zugewiesen. Es ist wichtig zu erkennen, dass die Mehrbit-Korrektur in einem
einzelnen RAM und die Doppelbit-Erfassung in zwei verschiedenen RAMs
die Zuverlässigkeit
des Speichers erhöht
und Datenverletzung unwahrscheinlicher macht. Es versteht sich weiterhin,
dass Datenprobleme, die außerhalb
dieser Beschränkungen
auftreten, ebenfalls korrigiert oder erfasst werden können, aber
dies ist aufgrund der Begrenzungen der ECC-Größe und Wortgröße nicht
garantiert.
-
Es
wird erkannt, dass die Wahrscheinlichkeit eines Einzelbit-Fehlers
relativ hoch ist und diese Erfindung all diese Fehler korrigiert.
Weiterhin ist die Wahrscheinlichkeit von Mehrbit-Fehlern in einer
einzigen Vorrichtung viel niedriger als selbst die Wahrscheinlichkeit
zweier nicht benachbarter Bitfehler, aber diese stellen die zwei
zweitwahrscheinlichsten Fehlerarten dar. Mit der vorliegenden Erfindung
werden alle nicht benachbarten Doppelbit-Fehler erfasst, was eine
Datenverletzung durch diese zweithäufigste Fehlerart verhindert.
-
Auch
sorgt diese Erfindung für
Einzel- und Mehrbit-Korrektur in einer einzelnen RAM-Vorrichtung.
Durch Abdeckung der häufigsten
Fehlerquellen in Serverspeicher-Teilsystemen ist die Wahrscheinlichkeit,
dass ein Fehler nicht korrigiert oder nicht einmal erfasst wird,
mit der vorliegenden Erfindung minimal, was wiederum die Speicherzuverlässigkeit
zu sehr annehmbaren Kosten erhöht.
Es ist auch wichtig zu erkennen, dass die Verwendung von Standard-64-Bit-x4-Bit-DIMMs
die Kosten des Systems stark reduziert und den Wert dieser Erfindung
erhöht. Somit
haben die Anmelder eine wirtschaftlich wertvolle Teilmenge korrigierbarer
und erfassbarer Fehler bestimmt und eine Beschreibung geliefert,
wie ein bestimmter Satz von ECC-Codes verwendet werden kann, um
sicherzustellen, dass der wirtschaftlich wertvolle Satz korrigierbarer
und erfassbarer Fehler korrigiert oder erfasst wird.
-
Dementsprechend
wird die Erfindung nur durch die folgenden beigefügten Ansprüche eingeschränkt.