DE60215687T2 - Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern - Google Patents

Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern Download PDF

Info

Publication number
DE60215687T2
DE60215687T2 DE60215687T DE60215687T DE60215687T2 DE 60215687 T2 DE60215687 T2 DE 60215687T2 DE 60215687 T DE60215687 T DE 60215687T DE 60215687 T DE60215687 T DE 60215687T DE 60215687 T2 DE60215687 T2 DE 60215687T2
Authority
DE
Germany
Prior art keywords
bit
bits
error
data word
syndrome
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 - Lifetime
Application number
DE60215687T
Other languages
English (en)
Other versions
DE60215687D1 (de
Inventor
A. Mitchell Circle Pines BAUMAN
A. Eugene Minneapolis RODI
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.)
Unisys Corp
Original Assignee
Unisys 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 Unisys Corp filed Critical Unisys Corp
Application granted granted Critical
Publication of DE60215687D1 publication Critical patent/DE60215687D1/de
Publication of DE60215687T2 publication Critical patent/DE60215687T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution

Description

  • 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 58 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 61B62B 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 2A2D 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.

Claims (12)

  1. Vorrichtung zum Erfassen und Korrigieren von Bitfehlern in einem ersten Datenwort, worin das erste Datenwort in einem RAM-Speicher (31) innerhalb eines Computersystems speicherbar ist, das generierte Prüfbits aus dem Datenwort generiert, wenn es das Datenwort durch Eingabeschaltungen an den RAM-Speicher (31) sendet, wobei sowohl das Datenwort als auch die Prüfbit-Daten durch Ausgabeschaltungen aus dem RAM-Speicher (31) abrufbar sind und worin das abgerufene Datenwort äquivalent zum ersten Datenwort ist, wenn keine Fehler auftreten, wobei die Vorrichtung folgendes umfasst: einen Syndromgenerator zum Erzeugen von Syndrombits aus Prüfbits, die aus dem Datenwort abgerufen werden, das aus dem RAM-Speicher (31) abgerufen wird, worin das Datenwort 128 Bit hat und die generierten Prüfbits, die regenerierten Prüfbits und die Syndrombits jeweils 16 Bit haben und worin die 16 generierten Prüfbits mit Hilfe eines XOR-Baums (50) von Eingaben aus dem ersten Datenwort (53) generiert werden, worin jeder Zweig des XOR-Baums (50) verbunden ist, um nur einige der Eingaben aus dem ersten Datenwort (53) zu erhalten, wie durch einen Binärwert-Fehlerkorrektur-Code bestimmt, der in beliebiger Reihenfolge aus Familien von 4-Bit-Fehlerkorrektur-Codes angerodnet ist, in Übereinstimmung mit einem vorbestimmten 128 × 16-Bit-Familial-Muster-Code, wie in den 2A2D ausgeführt, und worin jedes der regenerierten Prüfbits Modulo-2 ist, das zu einem der generierten Prüfbits hinzugefügt ist, um ein 16-Bit-Syndrom zu erzeugen; eine Syndrom-Decodierschaltung (47, 48) und eine Vergleicher-Schaltung (46) zum Erzeugen eines Kein-Fehler-Signals, eines korrigierbaren Datensignals und eines korrigierbaren Prüfbitsignals, worin das korrigierbare Datensignal erzeugt wird durch die Bestimmung, ob eine Korrektur erforderlich war, durch Decodierung der Syndrombits durch die Syndrom-Decodierschaltung (47, 48), das korrigierbare Prüfbitsignal erzeugt wird durch die Bestimmung, ob eine Korrektur für die generierten Prüfbits er forderlich ist, und worin das Kein-Fehler-Signal erzeugt wird, wenn der Syndrom-Signalwert ein vorbestimmter Wert ist, so dass die Vorrichtung in der Lage ist, alle 15 möglichen Familial-Bitfehler in Daten von jedem beliebigen einzelnen 4-Bit-RAM in dem ersten Datenwort mit 128 Bits zu erfassen und zu korrigieren, und auch fähig ist, alle Doppelbit-nicht-Familial-Fehler zu erfassen und nicht korrigierbare Multi-Bit-Fehler in den ersten Datenwörtern mit 128 Bits zu erfassen.
  2. Die Vorrichtung von Anspruch 1, worin der XOR-Baum in einem Prüfbitgenerator (42) implementiert wird, wobei der Prüfbitgenerator (42) die erzeugten 16 Prüfbits zusammen mit dem 128 Bit ersten Datenwort in den RAM-Speicher (31) sendet, zur Speicherung im Zusammenhang mit dem 128 Bit ersten Datenwort als gespeicherte Prüfbits.
  3. Die Vorrichtung von Anspruch 2, worin die regenerierten Prüfbits von einem Prüfbitregenerator (45) generiert werden, der mit der Ausgabeschaltung verbunden ist.
  4. Die Vorrichtung von Anspruch 1, worin der vorbestimmte 128 × 16-Bit-Familial-Mustercode äquivalent zu einem Bitmuster ist, das in den 2A–D dargestellt ist.
  5. Die Vorrichtung von Anspruch 1, die weiter folgendes umfasst: eine Schaltung, die ein Mehrfach-Bit-nicht-erfassbar-(Multi-Bit-Undetectable-MUE)-Fehlersignal generiert, zum Generieren eines MUE-Signals, wenn das Nicht-Fehler-Signal einen Fehler anzeigt und irgendeines des Prüfbit-Fehlersignals oder der Daten-Fehlersignals ebenfalls keinen Fehler anzeigt.
  6. Die Vorrichtung von Anspruch 1, worin der vorbestimmte Syndrom-Signalwert, der das Kein-Fehler-Signal erzeugt, null ist.
  7. Die Vorrichtung von Anspruch 1, worin die Eingaben in den XOR-Baum mit 16 Zweigen verbunden sind und worin jeder Zweig (51, 52) eine Ausgabe von einem Bit erzeugt, wobei die Ausgabe von einem Bit von allen 16 Zweigen die erzeugten 16 Prüfbits sind.
  8. Die Vorrichtung von Anspruch 1, worin die Syndromgenerator-Ausgabe Informationen liefert, die angeben, ob und welche Familie von Datenbits Fehler hat und welcher von diesen Bits in der angegebenen Familie Fehler hat und ob es zusätzliche Fehler gibt, wenn die Syndromgenerator-Ausgabe eine Syndrom-Decodierschaltung (47, 48) der Vorrichtung durchläuft.
  9. Eine Vorrichtung wie in Anspruch 1 ausgeführt, worin die Syndrom-Decodierschaltung (47, 48) eine Ausgabe von dem Syndromgenerator empfängt und sie in Signale decodiert, die anzeigen, welche Bits des Datenworts fehlerhaft sind, wobei die Syndrom-Decodierschaltung (47, 48) folgendes umfasst: ein erstes paralleles Netzwerk von Gattern zum Empfangen des zu decodierenden Syndroms für das 128-Bit-Datenwort, wobei das erste parallele Netzwerk 480 Teile hat, wobei jeder Teil alle 16 Bits des Syndroms empfängt und, zusammen mit drei anderen solchen Teilen in einer Familial-Gruppe solcher Teile, für jedes der 4 Familial-Bits des Datenworts anzeigt, ob ein Fehler besteht, ein zweites paralleles Netzwerk von Gattern zum Empfangen des Syndroms, wobei das Netzwerk 60 Teile hat, wobei jeder Teil alle 16 Bits des Syndroms empfängt und, zusammen mit drei anderen solchen Teilen in einer Familial-Gruppe solcher Teile, für jedes der 4 Familial-Bits der Prüfbits, die mit dem Datenwort verbunden sind, anzeigt, ob ein Fehler vorhanden ist.
  10. Die Vorrichtung von Anspruch 9, worin das zweite parallele Netzwerk eine Ein-Fehler-Bit-Ausgabe erzeugt, wenn eines der Bits des parallelen Netzwerks einen Fehler anzeigt.
  11. Verfahren zum Erfassen und Korrigieren von Bitfehlern in einem ersten Datenwort von 128 Bits mit der Vorrichtung von Anspruch 1, worin das erste 128-Bit-Wort ein Datenwort ist, das in einem RAM-Speicher (31) in einem Computersystem speicherbar und daraus abrufbar ist, worin das Computersystem zum Durchführen des Verfahrens Eingabeschaltungen zum RAM-Speicher (31) hat, um das erste Datenwort in den RAM-Speicher (31) zu senden, und Ausgabeschaltungen, um aus dem Speicherung ein abgerufenes 128-Bit-Datenwort aus dem RAM-Speicher (31) abzurufen, und worin das abgerufene 128-Bit-Datenwort äquivalent zu dem ersten Datenwort sein wird, wenn keine Fehler auftritt, wobei das Verfahren folgendes umfasst: a) Bereitstellen einer 16-Bit-Prüfbit-Ausgabe (54) für das erste Datenwort zu jedem beliebigen Zeitpunkt, zu dem das erste Datenwort in dem RAM-Speicher (31) gespeichert werden soll, und Speichern der bereitgestellten 16-Bit-Prüfbit-Ausgabe (54) mit dem ersten Datenwort, worin die 16-Bit-Prüfbit-Ausgabe aus dem ersten Datenwort generiert wird, wie bestimmt durch einen Binärwert-Fehlerkorrektur-Code, der in beliebiger Reihenfolge aus Familien von 4-Bit-Fehlerkorrektur-Codes angeordnet ist, in Übereinstimmung mit einem vorbestimmten 128 × 16-Bit-Familial-Mustercode, wie in den 2A2D dargestellt, b) Abrufen des ersten Datenworts gemeinsam mit der gespeicherten 16-Bit-Prüfbit-Ausgabe (54), c) Erzeugen eines 16-Bit-Syndroms aus der gespeicherten 16-Bit-Prüfbit-Ausgabe (54), d) Bestimmen, ob das 16-Bit-Syndrom ein vorbestimmter Wert ist, und wenn es der vorbestimmte Wert ist, Generieren eines "Kein-Fehler"-Signals (107), e) Decodieren des 16-Bit-Syndroms, um anzuzeigen, ob und welches der 128 Bits des abgerufenen ersten Datenworts einen korrigierbaren Fehler hat, und, wenn eines einen korrigierbaren Fahler hat, Erzeugen eines "Korrigierbarer Fehler"-Signals (106) und eines Signals, das anzeigt, welches der 128 Bits des abgerufenen ersten Datenworts einen korrigierbaren Fehler hat, f) Korrigieren eventueller korrigierbarer Fehler und g) Erzeugen eines "Nicht korrigierbarer Fehler"-Signals, wenn entweder (i) das "Korrigierbarer-Fehler"-Signal (106) und das "Kein-Fehler"-Signal (107) nicht übereinstimmen oder (ii) wenn das "Korrigierbarer-ECC-Fehler"-Signal und das "Kein-Fehler"-Signal (107) nicht übereinstimmen, ansonsten Erzeugen eines "Gute Daten"-Signals, wobei das Verfahren somit in der Lage ist, alle 15 möglichen Familial-Bitfehler in Daten aus jedem einzelnen 4-Bit-RAM in dem ersten Datenwort mit 128 Bits zu erfassen und zu korrigieren, und auch in der Lage, alle Doppelbit-nicht-Familial-Fehler zu erfassen und nicht korrigierbare Multi-Bit-Fehler in den ersten Datenwörtern mit 128 Bits zu erfassen.
  12. Das Verfahren von Anspruch 11, das weiter die Verwendung der Anzeige umfasst, welcher der 128 Bits des ersten Datenworts einen korrigierbaren Fehler hat, um ein anderes System über einen potentiell schadhaften Chip zu informieren.
DE60215687T 2001-10-05 2002-09-19 Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern Expired - Lifetime DE60215687T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/972,490 US7634709B2 (en) 2001-10-05 2001-10-05 Familial correction with non-familial double bit error detection
US972490 2001-10-05
PCT/US2002/029792 WO2003040922A2 (en) 2001-10-05 2002-09-19 Multibit package error correction with non-restricted double bit error etection

Publications (2)

Publication Number Publication Date
DE60215687D1 DE60215687D1 (de) 2006-12-07
DE60215687T2 true DE60215687T2 (de) 2007-08-30

Family

ID=25519711

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60215687T Expired - Lifetime DE60215687T2 (de) 2001-10-05 2002-09-19 Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern

Country Status (6)

Country Link
US (1) US7634709B2 (de)
EP (1) EP1440372B1 (de)
JP (1) JP2005508548A (de)
AU (1) AU2002341735A1 (de)
DE (1) DE60215687T2 (de)
WO (1) WO2003040922A2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065697B2 (en) * 2003-07-29 2006-06-20 Hewlett-Packard Development Company, L.P. Systems and methods of partitioning data to facilitate error correction
US7051265B2 (en) * 2003-07-29 2006-05-23 Hewlett-Packard Development Company, L.P. Systems and methods of routing data to facilitate error correction
US7437651B2 (en) * 2004-06-29 2008-10-14 Hewlett-Packard Development Company, L.P. System and method for controlling application of an error correction code (ECC) algorithm in a memory subsystem
US7275201B1 (en) * 2005-04-13 2007-09-25 Emc Corporation Memory system
US8001449B2 (en) * 2007-07-27 2011-08-16 Yao-Chung Chang Syndrome-error mapping method for decoding linear and cyclic codes
TWI403096B (zh) * 2008-10-06 2013-07-21 Chang Yaochung 糾正位元串錯誤之方法
US8677205B2 (en) 2011-03-10 2014-03-18 Freescale Semiconductor, Inc. Hierarchical error correction for large memories
US8914712B2 (en) 2012-02-27 2014-12-16 Freescale Semiconductor, Inc. Hierarchical error correction
KR102178137B1 (ko) 2014-08-26 2020-11-12 삼성전자주식회사 반도체 메모리 장치, 이의 에러 정정 방법 및 이를 포함하는 메모리 시스템
US9654146B2 (en) * 2015-08-18 2017-05-16 Taiwan Semiconductor Manufacturing Company, Ltd. Bi-directional parity bit generator circuit
US9800271B2 (en) 2015-09-14 2017-10-24 Qualcomm Incorporated Error correction and decoding
TWI706415B (zh) * 2017-02-23 2020-10-01 張錦本 應用128位元之雙碼錯誤檢測裝置及方法
KR20210014034A (ko) * 2019-07-29 2021-02-08 에스케이하이닉스 주식회사 낮은 레이턴시를 갖는 에러정정코드 디코더

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4030067A (en) * 1975-12-29 1977-06-14 Honeywell Information Systems, Inc. Table lookup direct decoder for double-error correcting (DEC) BCH codes using a pair of syndromes
US4413339A (en) * 1981-06-24 1983-11-01 Digital Equipment Corporation Multiple error detecting and correcting system employing Reed-Solomon codes
US4464753A (en) * 1981-12-30 1984-08-07 International Business Machines Corporation Two bit symbol SEC/DED code
US4564944A (en) * 1983-12-30 1986-01-14 International Business Machines Corporation Error correcting scheme
US4862463A (en) * 1987-07-20 1989-08-29 International Business Machines Corp. Error correcting code for 8-bit-per-chip memory with reduced redundancy
JP2862948B2 (ja) * 1990-04-13 1999-03-03 三菱電機株式会社 半導体記憶装置
US5418796A (en) 1991-03-26 1995-05-23 International Business Machines Corporation Synergistic multiple bit error correction for memory of array chips
JPH05216698A (ja) 1991-08-05 1993-08-27 Advanced Micro Devicds Inc 改良されたエラー検出および訂正回路
US5490155A (en) * 1992-10-02 1996-02-06 Compaq Computer Corp. Error correction system for n bits using error correcting code designed for fewer than n bits
US5757823A (en) 1995-10-03 1998-05-26 International Business Machines Corporation Error detection and correction for four-bit-per-chip memory system
US5745508A (en) * 1995-11-13 1998-04-28 Tricord Systems, Inc. Error-detection code
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
SG76501A1 (en) * 1996-02-28 2000-11-21 Sun Microsystems Inc Error detection and correction method and apparatus for computer memory
US6018817A (en) 1997-12-03 2000-01-25 International Business Machines Corporation Error correcting code retrofit method and apparatus for multiple memory configurations
US6574746B1 (en) * 1999-07-02 2003-06-03 Sun Microsystems, Inc. System and method for improving multi-bit error protection in computer memory systems

Also Published As

Publication number Publication date
EP1440372A2 (de) 2004-07-28
AU2002341735A1 (en) 2003-05-19
JP2005508548A (ja) 2005-03-31
EP1440372B1 (de) 2006-10-25
WO2003040922A2 (en) 2003-05-15
WO2003040922A3 (en) 2004-04-08
DE60215687D1 (de) 2006-12-07
US7634709B2 (en) 2009-12-15
US20030070133A1 (en) 2003-04-10

Similar Documents

Publication Publication Date Title
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE2529152A1 (de) Verfahren und anordnung zur feststellung von fehlern in halbleiter- informationsspeichern
DE60215687T2 (de) Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern
DE2260850A1 (de) Fehlerkorrektursystem
DE2328869A1 (de) Verfahren zur pruefung eines digitalen speichersystems sowie zur durchfuehrung dieses verfahrens dienendes selbstpruefendes digitales speichersystem
DE2430464A1 (de) Einrichtung zur fehlergesicherten datenuebertragung
WO1998009219A1 (de) Fehlererkennung in einem speichersystem
DE3209679A1 (de) Halbleiter-speichereinrichtung
DE19829234A1 (de) Prüfverfahren für einen Halbleiter-Datenspeicher und Halbleiter-Datenspeicher
DE2450468C2 (de) Fehlerkorrekturanordnung für einen Speicher
DE102007007546A1 (de) Fehlerkorrekturcode-Striping
DE1250163B (de) Einrichtung zur Paritätsprüfung von Speicherworten
DE2513262A1 (de) Digitale codeumwandlungsanordnung
DE2549392C3 (de) Verfahren zur Erhöhung der Zuverlässigkeit von integrierten Speicherbausteinen und zur Verbesserung der Ausbeute von nach außen hin fehlerfrei erscheinenden Speicherbausteinen bei ihrer Herstellung
DE2655653C2 (de) Anordnung zur Feststellung der richtigen Zuordnung von Adresse und Speicherwort in einem wortorganisierten Datenspeicher
EP1222545B1 (de) Verfahren und schaltungsanordnung zum speichern von datenworten in einem ram modul
DE69924012T2 (de) Verfahren und vorrichtung für speicherdata-fehlerdetektion und speichermodul-fehlerdetektion
EP0922253A1 (de) Fehlererkennung in einem speichersystem
DE102005016051B4 (de) Speicherüberprüfungsvorrichtung und Verfahren zum Überprüfen eines Speichers
EP0922251A1 (de) Speichersystem
EP0491073B1 (de) Verfahren und Schaltungsanordnung zur Datensicherung in Speichereinheiten
EP1639466B1 (de) Verfahren und vorrichtung zur fehlererkennung für einen cachespeicher und entsprechender cachespeicher
DE3716594A1 (de) Schaltungsanordnung fuer fernmeldeanlagen, insbesondere fernsprechvermittlungsanlagen, mit speichereinrichtungen, in denen gespeicherte informationsportionen auf ihre richtigkeit ueberprueft werden
DE2133323B2 (de) Fehlererkennungs- und Korrekturschaltung für binäre Datensignale

Legal Events

Date Code Title Description
8364 No opposition during term of opposition