DE3853206T2 - Verfahren und gerät zur byteschreibfehlerkodierung. - Google Patents
Verfahren und gerät zur byteschreibfehlerkodierung.Info
- Publication number
- DE3853206T2 DE3853206T2 DE3853206T DE3853206T DE3853206T2 DE 3853206 T2 DE3853206 T2 DE 3853206T2 DE 3853206 T DE3853206 T DE 3853206T DE 3853206 T DE3853206 T DE 3853206T DE 3853206 T2 DE3853206 T2 DE 3853206T2
- Authority
- DE
- Germany
- Prior art keywords
- error
- check bits
- data word
- memory
- bit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
- G06F11/1056—Updating check bits on partial write, i.e. read/modify/write
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Quality & Reliability (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Detection And Correction Of Errors (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Description
- Die vorliegende Erfindung betrifft den Bereich der Fehlererkennung und -korrektur in einem Digitalcomputer. Diese Erfindung bezieht sich insbesondere auf Fehlererkennung und -korrektur während einer Teilschreiboperation in den Speicher und dem Markieren einer Speicherstelle als falsch, wenn ein nicht korrigierbarer Fehler während einer Teilschreiboperation in den Speicher auftritt.
- Die herkömmlichen Techniken der Fehlererkennung machen es möglich zu erkennen, ob aus einem Computerspeicher gelesene Daten einen oder mehrere Fehler enthalten. Außerdem ermöglichen herkömmliche Techniken der Fehlerkorrektur, in bestimmten Situationen aus einem Computerspeicher gelesene Daten zu korrigieren, wenn diese Daten einen oder mehrere Fehler enthalten.
- Bestimmte Fehlererkennungs- und korrekturtechniken sind auf den Seiten 199 bis 207 des Lehrbuches Introduction to Switching Theory and logical Design von F. J. Hill und G. R. Peterson (zweite Auflage 1974) beschrieben. Der Hammingcode ist ein Beispiel einer herkömmlichen Art von Fehlererkennung und Korrekturcode.
- In herkömmlichen Systemen, die den Hammingcode verwenden, sind bestimmte binäre Paritätsprüfbits, auch als Prüfbits bezeichnet, mit jedem binären Datenwort verknüpft. In einem herkömmlichen System wird jedes Prüfbit dazu erwählt, geradzahlige Parität dieses Bits und einer bestimmten Teilmenge der Datenwortbits zu bilden. In einem geradzahligen Paritätssystem ist die Gesamtzahl der Einsen (oder Nullen) in einem zulässigen Code immer eine gerade Zahl. In einem ungeradzahligen System ist die Gesamtzahl der Einsen (oder Nullen) in einem zulässigen Code immer eine ungerade Zahl. Herkömmliche Systeme, die den Hammingcode benutzen, beinhalten entweder geradzahlige oder ungeradzahlige Paritätssysteme.
- In dem oben beschriebenen herkömmlichen System, das den Hammingcode benutzt, resultiert jedes Paritätsprüfbit aus einer logischen EXKLUSIV-ODER- Operation zwischen bestimmten ausgewählten Bits des Datenworts, und das Resultat ist die Bildung von gerader Parität durch das Paritätsprüfbit und eine bestimmte Teilmenge der Bits des Datenworts. Jedes Paritätsprüfbit wird dann Teil der Gruppe von Paritätsprüfbits, die mit diesem bestimmten Datenwort verknüpft ist.
- Das Datenwort kann dann zusammen mit seinen Prüfbits z.B. über eine Fernmeldeleitung von einem System zu einem anderen übertragen oder in ein dynamisches RAM ("DRAM") geschrieben und dann einige Zeit später aus dem DRAM gelesen werden. In der Zwischenzeit zwischen Senden und Empfangen könnten, falls das Datenwort übertragen wird, oder zwischen Lesen und Schreiben, falls ein DRAM beteiligt ist, Ein- oder Mehrbitfehler in den Paritätsprüfbits und den Datenworten auftreten.
- Der Hammingcode wird in bestimmten herkömmlichen Systemen verwendet, um Fehler zu erkennen oder zu korrigieren, sobald das Datenwort nach der Übertragung oder dem Lesen aus dem Speicher empfangen wurde.
- Die Realisierung von bekannten Fehlererkennungs- und korrekturverfahren als Teil einer Teilschreiboperation (oder eines Systems mit einer Teilschreiboperation) hat jedoch enge Grenzen. In einer bekannten Teilschreiboperation ist eine der Aufgaben das Ersetzen einer Teilmenge von alten Daten, die als ein Datenwort gespeichert wurden, durch neue Daten - dadurch werden alte Daten durch neue Daten ersetzt und ein neues Datenwort gebildet - und dann das Schreiben des neuen Datenworts in den Speicher. Bekannte Teilschreibverfahren beinhalten das Lesen eines Datenworts, zusammen mit seinen Prüfbits, aus dem Speicher. Wenn die Prüfbits das Vorhandensein eines Einbitfehlers in dem soeben gelesenen Datenwort anzeigen, - mit anderen Worten, ein korrigierbarer Fehler wurde erkannt - wird der Einbitfehler mit Hilfe der bekannten Verfahren und Vorrichtungen korrigiert. Eine Teilmenge alter Daten, die das Datenwort bilden, welches aus dem Speicher gelesen worden ist, wird dann durch neue Daten ersetzt und es wird ein neues Datenwort geschaffen. Dieses neue Datenwort wird dann in den Speicher geschrieben.
- Beschränkungen hinsichtlich des/der bekannten Teilschreibverfahrens und - vorrichtung beinhalten die Situation, wenn die Prüfbits, die gelesen wurden, einen nicht korrigierbaren Fehler in dem aus dem Speicher gelesenen Datenwort anzeigen. Ein herkömmliches Verfahren besteht darin, dann die Teilschreiboperation abzubrechen und den Zyklus abzuschließen, von dem das Teilschreiben ein Teil sein sollte. Mit anderen Worten, es werden keine Daten - ob neu oder alt - in den Speicher zurückgeschrieben.
- Ein anderes herkömmliches Verfahren, das für den Nichtkorrigierbarkeitszustand verwendet wird, besteht darin, das alte, verfälschte Datenwort und seine alten Prüfbits, die einen nicht korrigierbaren Fehler anzeigen, in den Speicher zurückzuschreiben. Die Teilschreiboperation wird somit unterbrochen, vorausgesetzt daß die neuen Daten nie mit den alten Daten vermischt werden. Der Computerzyklus ist jedoch nicht abgeschlossen. Dieses andere herkömmliche Verfahren basiert auf der Aussicht, daß das alte verfälschte Wort und die Prüfbits, die in den Speicher zurückgeschrieben wurden, weiterhin nicht korrigierbar bleiben werden. Der Nachteil dieses herkömmlichen Verfahrens und dieser Vorrichtung ist, daß, wenn ein anderer Fehler oder Störimpuls auftritt, derselbe Speicherplatz bei der nächsten Speicherleseoperation, während der ein falsches Datenwort fälschlich als richtig oder korrigierbar erkannt wird, keinen nicht korrigierbaren Fehler erzeugen kann.
- In der US-Patentschrift 4072853 wird ein System beschrieben, bei welchem während einer Leseoperation aus dem Speicher Fehlererkennungsschaltkreise eine Anzahl von Syndrombits bilden, welche eine vorher festgelegte Charakteristik der Anzeige einer vorhandenen, nicht korrigierbaren Fehlerbedingung in den vorliegenden Datensignalen haben, wenn sie zuerst in den Speicher geschrieben wurden. In einer Teilschreiboperation werden Prüfcodebits, wenn ein nicht korrigierbarer Fehler während des Leseteils der Operation entdeckt wird, in einen vorher festgelegten Status gesteuert, der eine nicht-korrigierbarer-Fehler-Bedingung in den aus dem Speicher gelesenen vorliegenden Daten anzeigt.
- Im IBM Technical Disclosure Bulletin, Vol. 27, Nr. 10B vom März 1985, Seiten 6330-6331, "Modified error correction code design to allow partial word writing to memory locations which contain double bit errors" ist ein Verfahren beschrieben zum Markieren eines Speicherplatzes als falsch, wenn ein nicht korrigierbarer Fehler während einer Teilschreiboperation auftritt. Auf einem Speicherplatz, der ein Zweibyte-Datenwort speichert, ein Paritätsbit für jedes Byte und sechs ECC- Bits (Fehlerprüf- und -korrekturbits) für die zwei Bytes und die Prüfbits, falls ein Doppelfehler während des Leseteils des Zyklus' erkannt wurde, wird das Paritätsbit des unveränderten Bytes zwangsweise dazu gebracht, wie eine falsche Parität auszusehen. Ein neues ECC-Wort wird auf der Basis dieses Datenworts gebildet, so daß, wenn der Datenplatz zurückgelesen wurde, das alte, unbeschriftete Byte falsche Parität und das neue, beschriftete Byte richtige Parität hat.
- In der US-Patentschrift 3836957 ist ein System zum Markieren der Inhalte eines Speicherplatzes als "falsch" beschrieben, wenn ein einzelner Paritätsfehler während einer Schreiboperation auftritt. Nachdem die ECC-Bits aus den erhaltenen Daten gebildet worden sind, ergibt während der Schreiboperation die Prüfung eines einzelnen Paritätsfehlers in den Daten, für die die ECC-Bits codiert worden sind, eine Modifizierung des gebildeten ECC-Bits, so daß, wenn die Daten daraufhin aus dem Speicher gelesen werden, die gebildeten Syndrombits mit einem Muster übereinstimmen werden, das das Vorhandensein des ursprünglichen einzelnen Paritätsfehlers anzeigt.
- Angesichts der Grenzen von bekannten Teilschreibverfahren und - vorrichtungen ist eines der Ziele der vorliegenden Erfindung, ein verbessertes Verfahren und eine verbesserte Vorrichtung für die Handhabung des Auftretens von nicht korrigierbaren Fehlern während einer Speicheroperation, einschließlich einer Teilschreiboperation, in einem Digitalcomputersystem mit einem Speicher zu schaffen.
- Ein weiteres Ziel der Erfindung ist es, ein verbessertes Verfahren und eine verbesserte Vorrichtung zur Markierung eines Speicherplatzes, der mit einem nicht korrigierbaren Fehler verknüpft ist, zu schaffen, wenn ein nicht korrigierbarer Fehler während einer Speicheroperation auftritt, die eine Teilschreiboperation beinhaltet. Das Verfahren und die Vorrichtung der vorliegenden Erfindung gewährleisten im Bereich angemessener Wahrscheinlichkeit, daß eine Speicherstelle mit einem nicht korrigierbaren Fehler, der während einer Speicheroperation erkannt wurde, daraufhin als mit einem nicht korrigierbaren Fehler verknüpft erkannt wird, für den Fall, daß der nicht korrigierbare Fehler von der Art eines transienten oder kleinen ("weichen") Fehlers war.
- Ein anderes Ziel der vorliegenden Erfindung ist:
- (1) in vielen Fällen eine Meldung bereitzustellen, daß eine mißlungene Speicheroperation (einschließlich einem mißlungenen Teilschreiben) an einer bestimmten Speicherstelle oder -adresse aufgetreten ist, und
- (2) im Bereich angemessener Wahrscheinlichkeit eine Meldung bereitzustellen, daß ein nicht korrigierbarer Fehler an einer bestimmten Speicherstelle oder - adresse nach einer mißlungenen Speicheroperation ist (einschließlich einer mißlungenen Teilschreiboperation), auch wenn an dieser bestimmten Speicherstelle nach einer mißlungenen Speicheroperation ein folgender Störimpuls oder Fehler auftritt. Der erste Zustand tritt auf, wenn an einer bestimmten Speicherstelle zum Zeitpunkt der nächsten Leseoperation aus dieser Stelle kein weiterer Fehler auftritt. Der zweite Zustand tritt auf, wenn an einer bestimmten Speicherstelle ein weiterer Fehler nach einer mißlungenen Speicheroperation einschließlich einer mißlungenen Teilschreiboperation auftritt.
- Ein anderes Ziel dieser Erfindung ist es, einen Fehlerkorrekturcode bereitzustellen, der im Bereich angemessener Wahrscheinlichkeit sicherstellt, daß ein nicht korrigierbarer Fehler erkannt wird, nachdem eine mißlungene Speicheroperation einschließlich eines mißlungenen Teilschreibverfahrens auftrat.
- Für diese und andere Aufgaben der Erfindung ist durch ein Verfahren und eine Vorrichtung zur Fehlererkennung vorgesehen, die das Lesen eines Datenworts und seiner Prüfbits aus dem Speicher sowie die Bildung eines neuen Satzes von Prüfbits aus dem Datenwort, das gelesen worden ist, einschließen, wie in Anspruch 1 bzw. 8 angegeben. Zwischen den neuen Prüfbits und den aus dem Speicher gelesenen Prüfbits wird eine logische Operation durchgeführt, und das Resultat dieser logischen Operation ist ein Syndrom. Das Syndrom wird decodiert, um das Vorhandensein oder Nichtvorhandensein eines nicht korrigierbaren Fehlers zu erkennen. Wenn ein nicht korrigierbarer Fehler erkannt wird, so wird eine logische Operation zwischen den neuen Prüfbits und einem Byteschreibefehlercode durchgeführt. Das Resultat dieser logischen Operation ist ein neuer Satz von Prüfbits, die die vorherigen Prüfbits ersetzen und zusammen mit dem Datenwort in den Speicher geschrieben werden. Auf diese Weise stellt der Byteschreibefehlercode eine Marke oder Signatur für diese bestimmte Speicherstelle bereit.
- Gemäß der vorliegenden Erfindung beinhaltet ein Verfahren zur Fehlererkennung auch das Lesen eines Datenworts und seiner Prüfbits aus dem Speicher. Ein neuer Satz von Prüfbits wird aus dem Datenwort gebildet, das aus dem Speicher gelesen worden ist. Zwischen dem neuen Satz von Prüfbits und den aus dem Speicher gelesenen Prüfbits wird eine logische Operation durchgeführt, und das Resultat dieser logischen Operation ist ein Syndrom. Eine mißlungene Speicheroperation wird angezeigt, wenn das Syndrom mit dem Byteschreibefehlercode übereinstimmt.
- Für die oben erwähnten sowie andere Aufgaben der Erfindung ist auch eine Vorrichtung vorgesehen, die Einrichtungen zur Ausführung der obigen Verfahren bereitstellt.
- Zusätzliche Aufgaben und Merkmale der Erfindung werden aus der folgenden Beschreibung offensichtlich werden, in welcher die bevorzugten Ausführungsbeispiele ausführlich dargelegt sind, zusammen mit begleitenden Zeichnungen.
- Die vorliegende Erfindung ist lediglich beispielsweise und nicht beschränkend in den Figuren der begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen, wobei:
- Fig. 1 ein Blockdiagramm eines Ausführungsbeispiels zur Fehlererkennung gemäß der Erfindung ist;
- Fig. 2 ein Verfahren zur Bildung eines Syndroms zeigt;
- Fig. 3 den Fehlerkorrekturcode einschließlich des Byteschreibefehlercodes zeigt;
- Fig. 4 einen korrigierbaren Fehler zeigt;
- Fig. 5 einen nicht korrigierbaren Fehler zeigt;
- Fig. 6 das Resultat einer Teilschreiboperation zeigt;
- Fig. 7 den Fehlerkorrekturcodeschaltkreis gemäß der Erfindung ausführlicher zeigt.
- Fig. 8 zeigt die Struktur des Fehlerkorrekturcodes.
- Unter Bezugnahme auf die Zeichnungen zeigt Fig. 1 die grundlegende Fehlererkennungsvorrichtung in Blockdiagrammform. Der Bus 10 stellt einen Pfad für die durch viele Teile des Computersystems hindurch zu übertragenden Daten bereit. Das Speichersystem 11 ist über die Treiber 12 mit dem Bus 10 verbunden und die Daten können über die Treiber 12 zu oder von Bus 10 fließen. Die Steuerung 14 enthält eine Schaltung, um zum Protokoll von Bus 10 eine Schnittstelle zu bilden und es zu überwachen. Die Steuerung 14 enthält auch eine Schaltung, um die Funktion des dynamischen RAMs ("DRAMS") 16 zu steuern. Dies beinhaltet, daß die Steuerung 14 Signale einschließlich Adresse ("ADRS"), Reihenadreßstrobe (Reihenadreßhinweissignal) ("RAS") und Spaltenadreßstrobe ("CAS") liefert.
- In einem Ausführungsbeispiel der vorliegenden Erfindung kann das Speichersystem 11 eine Speicherkarte zur Verwendung in einem Datenverarbeitungssystem sein. In einem anderen Ausführungsbeispiel der vorliegenden Erfindung hat das Speichersystem 11 zur Verwendung in einem Datenverarbeitungssystem mindestens eine Speicherkarte.
- Vom Bus 10 in den Speicher zu schreibende Daten passieren vom Bus 10 kommend die Treiber 12 und den Datenweg 18 zu den DRAMs 16. Daten, die über den Bus aus den DRAMs gelesen werden, passieren von den DRAMs kommend den Datenweg 18 und die Treiber 12 zum Bus 10.
- Der Datenweg 18 enthält Fehlererkennungs- und -korrekturschaltungen für die Daten. Das Register 20 speichert die aus den DRAMs 16 gelesenen und in sie zu schreibenden Daten. Das Register 22 speichert Daten, die von den Treibern 12 erhalten wurden und zu diesen gesendet werden sollen. Das Register 28 speichert Paritätsprüfbits, die aus den DRAMs 16 gelesen wurden und zu diesen geschrieben werden sollen.
- Der Fehlerkorrekturcode- ("ECC") Schaltkreis 24 schafft die Fähigkeit zur Erzeugung von Paritätsprüfbits für die Datenworte und für die Lieferung von Syndromen für die Datenworte. Die Funktion des ECC-Schaltkreises 24 wird nachfolgend ausführlicher beschrieben.
- Der Decodierer 30 beinhaltet Schaltungen zum Decodieren der durch den ECC-Schaltkreis 24 erzeugten Syndrome. Wenn ein Syndrom, das durch den Decodierer 30 decodiert wurde, das Vorhandensein und die Stelle eines korrigierbaren Fehlers in den Daten anzeigt, korrigiert der Korrigierer 26 das Bit des Datenworts, das fehlerhaft ist. Wenn z.B. ein Bit eine 1 statt einer 0 sein sollte, ändert der Korrigierer das Bit von 0 in 1. Der Korrigierer kann natürlich auch eine 1 in eine 0 ändern.
- Fig. 2 zeigt ein Verfahren zur Fehlererkennung und -korrektur, das in Verbindung mit der Vorrichtung von Fig. 1 verwendet werden könnte. Ein 64-Bit- Datenwort 40 wird beim Codierschritt 42 codiert, um 8 Prüfbits 44 zu erzeugen, die mit dem Datenwort 40 verknüpft oder verbunden sind. Die Erzeugung von Prüfbits 44 aus dem Datenwort 40 wird gemäß einem Fehlerkorrekturcode ("ECC") ausgeführt. Fig. 3 zeigt den ECC 70, einen modifizierten Hammingcode, der als ECC in einem Ausführungsbeispiel der vorliegenden Erfindung verwendet werden soll. Jedes Prüfbit des Satzes von Prüfbits wird durch eine EXKLUSIV-ODER-(XOR") Operation zwischen bestimmten Datenwortbits erzeugt, die durch ECC 70 ermittelt wurden. Durch Verweis auf ECC 70 in Fig. 3 kann man sehen, welche Datenwortbits welche Prüfbits ermitteln. Jedes Prüfbit hat seine eigene Spalte in ECC 70. Jede "eins" in der Spalte für das in Betracht kommende Prüfbit ordnet sich an eine Bitposition eines Datenworts an. Die so mit den "Einsen" in der in Betracht kommenden Spalte verknüpften Datenwortbitpositionen werden die einschlägigen Bitpositionen. Für Prüfbit S2 z.B. sind die einschlägigen Datenwortbitpositionen 4-7, 12-13, 20-23, 28-29, 36-39, 44-46, 52-55 und 60-62. Ein Prüfbit wird durch eine EXKLUSIV-ODER-Operation zwischen den Daten auf den einschlägigen Bitpositionen des Datenworts erzeugt. In diesem Beispiel wird Prüfbit S2 durch eine EXKLUSIV-ODER-Operation zwischen den Daten der Bitpositionen 4-7, 12-13, 20-23, 28-29, 36-39, 44-46, 52-55 und 60-62 eines Datenworts erzeugt.
- ECC 70 in Fig. 3 hat die Fähigkeit, Einbitfehler zu erkennen und korrigieren, und die Fähigkeit, Doppelbitfehler zu erkennen (aber nicht zu korrigieren).
- Andere Ausführungsbeispiele der vorliegenden Erfindung könnten kürzere oder längere Datenworte und Prüfbits haben; d.h. die Datenworte und Prüfbits könnten weniger oder mehr Bits haben. Die Mindestanzahl von Prüfbits hängt natürlich von der Länge des Datenworts ab. Z.B würde ein 32-Bit-Datenwort 7 Prüfbits erfordern, und ein 16-Bit-Datenwort würde 6 Prüfbits erfordern.
- Das 64-Bit-Datenwort wird dann bei dem "Schreibe in den Speicher"-Schritt 46 an eine bestimmte Adresse oder Stelle im Speicher geschrieben. Der Speicher könnte z.B die DRAMs 16 in Fig. 1 enthalten. Die 8 Paritätsprüfbits werden bei dem "Schreibe in den Speicher"-Schritt 48 an eine bestimmte Adresse oder Stelle in dem Speicher geschrieben.
- Die 8 Paritätsprüfbits 44 könnten an die gleiche Speicheradresse wie die des 64-Bit-Datenworts 40 in den Speicher geschrieben werden. Die Prüfbits 44 könnten an verschiedenen Stellen in einem ganzen 72-Bit-Wort auf dieser Speicheradresse verschachtelt oder in diesem 72-Bit-Wort zusammengruppiert werden. Dieses 72-Bit-Wort würde aus den 8 Prüfbits 44 und dem 64-Bit-Datenwort 40 bestehen. Die 8 Prüfbits 44 könnten auch als die 8 letzten Bits eines 72-Bit- Datenworts erscheinen, das aus den 8 Prüfbits 44 und dem 64-Bit-Datenwort 40 besteht. Alternativ könnten die 8 Prüfbits 44 an einer Speicheradresse sortiert werden, die sich von der Speicheradresse unterscheidet, an der das 64-Bit- Datenwort 40 im Speicher gespeichert ist, sogar trotz Verknüpfung oder Verbindung mit dem Datenwort 40. Mit anderen Worten, die Prüfbits 44 würden als die Prüfbits für das Datenwort 40 identifiziert werden.
- Ein 64-Bit-Datenwort 54 wird dann bei dem "Lese aus dem Speicher"-Schritt 50 aus dem Speicher gelesen. Das Datenwort 54 wird von der gleichen Speicheradresse gelesen, in die das Datenwort 40 geschrieben worden war. Die 8 Paritätsprüfbits 56 werden auch bei dem "Lese aus dem Speicher"-Schritt 52 aus dem Speicher gelesen. Die Prüfbits 56 werden aus der gleichen Speicheradresse gelesen, an die die Prüfbits 44 geschrieben wurden.
- Wenn keine Fehler im Datenwort auftreten, dann sollte das Datenwort 40 mit dem Datenwort 54 identisch sein. Außerdem sollten die Prüfbits 56 mit den Prüfbits 44 identisch sein, wenn in den Prüfbits keine Fehler auftreten.
- Trotzdem treten manchmal in den Datenworten und Prüfbits in der Zeit zwischen (1) den "Schreibe in den Speicher"-Schritten 46 und 48 und (2) den "Lese aus dem Speicher"-Schritten 50 und 52 Fehler auf.
- Fehler können in den Datenworten und Prüfbits auch entstehen, während die Datenworte und Prüfbits in die Register gespeichert werden, und ebenso während der Übertragung oder dem Transfer der Datenworte und Prüfbits. Bitfehler können durch viele Faktoren verursacht werden, einschließlich Spannungsstörimpulsen, Alphateilcheneffekten in den DRAMs und Ladungsverluste. Einbitfehler entstehen viel wahrscheinlicher als Zweibitfehler. Zweibitfehler entstehen viel wahrscheinlicher als Dreibitfehler und so weiter, mit abnehmender Wahrscheinlichkeit entsprechend zunehmender Anzahl von Fehlerbits. Fig. 4 zeigt das Vorkommen eines Einbitfehlers 82 in einem 64-Bit-Datenwort 80. Das Fehlerbit könnte natürlich in einem der 64 Bits des Datenworts 80 sein. Fig. 5 zeigt zwei Bitfehler 92 und 94 im 64-Bit-Datenwort 90.
- Ein oder mehrere Bitfehler könnte bedeuten, daß das Datenwort 54 vom Datenwort 40 verschieden ist, oder daß die Prüfbits 56 von den Prüfbits 44 verschieden sind. Eine Aufgabe ist nun, zu erkennen, ober ein Einbitfehler im Datenwort 54 entstanden ist, und diesen Einbitfehler zu korrigieren. Im ECC 70 von Fig. 3 wird ein Einbitfehler als korrigierbarer Fehler bezeichnet. Eine andere Aufgabe ist es, zu erkennen, ob ein Zweibitfehler im Datenwort 54 entstanden ist, obwohl dieses Ausführungsbeispiel der vorliegenden Erfindung die Korrektur von Zweibitfehlern nicht gestattet. Ein Zweibitfehler wird daher im ECC 70 in Fig. 3 als nicht korrigierbarer Fehler bezeichnet.
- Vorausgesetzt, ein oder mehrere Bits des Datenworts 54 unterscheiden sich von den entsprechenden Bits des Datenworts 40, dann wären die Prüfbits 56 nicht die richtigen Prüfbits für das Datenmuster, das im Datenwort 54 gefunden wurde (vorausgesetzt, die Prüfbits 56 bleiben nach dem Schreiben in den Speicher und dem Lesen aus diesem die gleichen wie die Prüfbits 44).
- Ungeachtet, ob das Datenwort 54 fehlerhaft ist oder nicht, wird das Datenwort 54 beim Codierschritt 58 codiert, um 8 Paritätsprüfbits 60 zu erstellen. Der Codierschritt 58 wird auf die gleiche Weise ausgeführt wie der Codierschritt 42 - d. h., die Prüfbits werden gemäß dem ECC in Fig. 3 erzeugt.
- Die Prüfbits 60 werden sich von den Prüfbits 56 unterscheiden, wenn entweder (1) die Prüfbits 44 sich von den Prüfbits 56 unterscheiden oder (2) das Datenwort 54 sich vom Datenwort 40 unterscheidet oder (3) in der Erstellung, Übertragung oder Speicherung der Prüfbits 44, 56 oder 60 Fehler entstehen. Die Prüfbits 60 werden sich somit von den Prüfbits 56 unterscheiden, wenn in den Bits des Datenworts oder des Prüfbits ein oder mehrere Fehler waren.
- Eine logische EXKLUSIV-ODER-Operation (oder ihre logische Entsprechung) wird in Schritt 62 zwischen jedem Bit der Prüfbits 60 und jedem entsprechenden Bit, das die gleiche Position in den Prüfbits 56 einnimmt, durchgeführt. Somit werden 8 EXKLUSIV-ODER-Operationen ausgeführt, da ja 8 Bits in jedem der Prüfbits 60 und 56 sind; pro Bit wird eine EXKLUSIV-ODER-Operation durchgeführt.
- Das Ergebnis des EXKLUSIV-ODER-Schritts 62 ist ein Syndrom 64. Vorausgesetzt daß es keine Fehler gibt, die drei oder mehr Bits umfassen, was im Bereich angemessener Wahrscheinlichkeit liegt, dann zeigt das Syndrom 64 an:
- (1) ob keine Fehler vorkamen;
- (2) ob ein korrigierbarer Fehler vorkam, und wenn ja, die Stelle des Fehlerbits im Datenwort oder in den Prüfbits;
- (3) ob ein nicht korrigierbarer Fehler vorkam, und
- (4) ob ein mißlungenes Teilschreiben vorkam, das nachfolgend erklärt wird.
- Wie oben erklärt, ist die Annahme, daß keine Fehler drei oder mehr Bits des Datenworts umfassen, eine verständliche Annahme wegen der extrem geringen Wahrscheinlichkeit, daß Fehler mit drei oder mehr Bits vorkommen. Fehler mit drei oder mehr Bits liegen jenseits der Fähigkeit des ECC 70 in Fig. 3.
- Fall 1 in Fig. 2 zeigt das Syndrom 64, das erzeugt wird, wenn weder im Datenwort noch in den Prüfbits Fehler sind. Bei der kein-Fehler-Bedingung von Fall 1 sind somit alle Bits des Syndroms auf null.
- Fall 2 in Fig. 2 zeigt ein Beispiel des Syndroms 64, das erzeugt wird, wenn ein korrigierbarer Fehler (d.h. ein Einbitfehler) in dem Datenwort 54 oder den 8 Prüfbits 65 ist. Die Parität des Syndroms ist im Fall 2 ungeradzahlig. Das in Fall 2 gezeigte Syndrom gibt auch die Stelle des Fehlerbits innerhalb des Datenworts 54 an. Man kann durch Verweis auf das ECC 70-Diagramm in Fig. 3 sehen, welches Bit des Datenworts 54 fehlerhaft ist. Das betreffende Syndrom 00001011 im Fall 2 vergleicht das Muster des Datenbits 16 des ECC 70 in Fig. 3, und so zeigt das Syndrom von Fall 2 an, daß das Datenbit 16 des Datenworts 54 fehlerhaft ist. Sobald man weiß, welches Datenbit des Datenworts 50 fehlerhaft ist, ist die Korrektur dieses Einzelbits relativ einfach - wenn das falsche Bit eine 0 ist, dann wird es in eine 1 geändert; wenn das falsche Bit eine 1 ist, dann wird es in eine 0 geändert.
- Andere Syndrome sind für die Situation korrigierbarer Fehler möglich. Für den ECC 70 in Fig. 3 würden korrigierbare Fehler angezeigt werden, falls das erzeugte Syndrom das Bitmuster für die Reihen von ECC 70 vergleicht und die Datenbits 0 bis 63 als Daten oder C0 bis C7 als Prüfbits bezeichnet. Durch Vergleichen eines Syndroms mit einem Datenmuster von ECC 70 und Lesen der Bitanzahl der Reihe, in welcher der Vergleich erfolgt, kann man herausfinden, welches Datenbit des Datenworts 54 fehlerhaft ist.
- Fall 3 in Fig. 2 zeigt ein Beispiel eines Syndroms 64, das erzeugt wird, wenn ein nicht korrigierbarer Fehler (d.h. ein Zweibitfehler) in dem Datenwort 54 oder den Prüfbits vorhanden ist. Wenn die Parität des Syndroms geradzahlig ist, dann ist ein nicht korrigierbarer Fehler vorhanden. In Fall 3 sind vier Bits einsen, daher ist die Parität geradzahlig. Andere Syndrome mit geradzahliger Parität sind in dem Fall eines nicht korrigierbaren Fehlers möglich. Ein Syndrom mit ungeradzahliger Parität könnte auch einen nicht korrigierbaren Fehler anzeigen, wenn das Syndrom einen ungenützten Code von ECC 70 vergleicht.
- Nochmals: Die Annahme hier ist, daß es keine Fehler gibt, die 3 oder mehr Bits in einem Datenwort enthalten. Wenn jedoch ein Fehler mit einer ungeraden Anzahl von Bits außer einem vorkäme, dann würde das erzeugte Syndrom ungeradzahlige Parität haben, und es wäre möglich, daß das Syndrom fälschlicherweise das Vorhandensein eines korrigierbaren Fehlers anzeigen würde.
- Wenn ein Fehler mit einer geraden Anzahl von Bits außer null, aber einschließlich zwei vorkäme, dann würde das erzeugte Syndrom geradzahlige Parität haben und korrekterweise das Vorhandensein eines nicht korrigierbaren Fehlers entweder im Datenwort 54 oder in den Prüfbits 56 oder 60 identifizieren.
- Fall 4 in Fig. 2 zeigt das Syndrom, das erzeugt wird, wenn eine mißlungene Teilschreiboperation aufgetreten ist, was nachfolgend ausführlicher besprochen wird. Das Syndrom in Fall 4 entspricht dem in Fig. 3 gezeigten Byteschreibefehlercode von ECC 70.
- In einer Teilschreiboperation ist eines der Ziele, eine Teilmenge der alten als Datenwort gepeicherten Daten durch neue Daten zu ersetzen, und so ist es ein Ziel einer Teilschreiboperation, alte Daten durch Fusionieren neuer Daten mit alten Daten zu ersetzen. Fig. 6 zeigt ein 64-Bit-Datenwort 100, bestehend aus 8 Datenbytes, jedes Byte mit einer Länge von 8 Bits. In einem Beispiel einer erfolgreichen Teilschreiboperation sind die vorher in Byte 102 des Datenworts 100 befindlichen Daten durch neue Daten ersetzt. Die Daten in den anderen Bytes des Datenworts 100 bleiben nach der Durchführung der Teilschreiboperation trotzdem unverändert.
- Mit Hinweis auf die Vorrichtung in Fig. 1 beinhaltet ein Teilschreibverfahren das Lesen eines 64-Bit-Datenworts aus einer Speicheradresse oder Speicherstelle in den DRAMs 16 und Speichern dieses Datenworts in Register 20. Die mit diesem Datenwort verknüpften 8 Prüfbits werden auch aus einer Speicheradresse oder Speicherstelle in den DRAMs 16 gelesen und in Register 28 gespeichert. Das Byte (oder die Bytes), das in das Datenwort geschrieben werden soll, passiert vom Bus 10 kommend die Treiber 12 und wird in Register 22 gespeichert.
- Wie oben beschrieben, könnten andere Ausführungsbeispiele der vorliegenden Erfindung kürzere oder längere Datenworte und Prüfbits haben. Außerdem könnten die Prüfbits an der gleichen Speicheradresse erscheinen, die durch das Datenwort benutzt wird, oder in anderen Ausführungsbeispielen an einer anderen Speicheradresse als der vom Datenwort benutzten, solange die Prüfbits mit dem Datenwort verknüpft sind. Außerdem könnten in manchen Ausführungsbeispielen der vorliegenden Erfindung die Prüfbits mit einem Datenwort ganz verschachtelt sein, und in bestimmten anderen Ausführungsbeispielen könnten die Prüfbits zusammengruppiert sein und entweder getrennt von einem Datenwort oder als Teil eines längeren Datenworts erscheinen.
- Das in Register 20 gespeicherte Datenwort wird, wie in Fig. 7 gezeigt, in den Codierschaltkreis 112 des ECC-Schaltkreises 24 eingegeben. Der Codierschaltkreis 112 hat 8 Prüfbits für das Datenwort aus Register 20 erzeugt Die Prüfbits werden auf die oben in Verbindung mit Fig. 2 beschriebene Art erzeugt. So wird jedes Prüfbit des Satzes von Prüfbits durch eine EXKLUSIV-ODER-Operation zwischen bestimmten, durch ECC 70 festgelegte Datenwortbits erzeugt. Die sich ergebenden 8 Prüfbits werden in Register 114 gespeichert.
- Die neu geschaffenen, in Register 114 gespeicherten Prüfbits und die in Register 28 gespeicherten 8 Prüfbits (d.h. die mit dem zu modifizierenden Datenwort verknüpften Prüfbits, die aus dem Speicher gelesen wurden) werden dann in den EXKLUSIV-ODER-Schaltkreis 118 eingegeben. Der EXKLUSIV-ODER- Schaltkreis 118 erzeugt ein Syndrom durch Ausführung einer logischen EXKLUSlV-ODER-Operation zwischen entsprechenden Bits von jedem Satz von Prüfbits, die in den EXKLUSIV-ODER-Schaltkreis 118 eingegeben wurden. Das erzeugte Syndrom könnte eines der Syndromtypen sein, die oben in Verbindung mit Fig. 2 besprochen wurden.
- Das durch den EXKLUSIV-ODER-Schaltkreis 118 erzeugte Syndrom wird dann in den Decodierschaltkreis 30 in Fig. 1 eingegeben. Der Decodierschaltkreis 30 führt logische Operationen an dem Syndrom durch, um zu ermitteln:
- (1) ob es keinen Fehler im Datenwort gibt, das in Register 20 gespeichert ist, oder in den Prüfbits, die in Register 28 gespeichert sind;
- (2) ob die in Register 20 und 28 gespeicherten Daten einen korrigierbaren Fehler enthalten, und wenn ja, die Stelle innerhalb dieser Daten mit dem Fehlerbit;
- (3) ob die in Register 20 und 28 gespeicherten Daten einen nicht korrigierbaren Fehler enthalten, und
- (4) ob eine mißlungene Teilschreiboperation früher vorgekommen ist.
- Es wird jedoch angenommen, daß, die Fähigkeit des ECC 70 in Fig. 3 vorausgesetzt, keine Fehler von drei oder mehr Bits im Datenwort auftreten.
- Wenn das durch den Decodierschaltkreis 30 decodierte Syndrom einen fehlerfreien Zustand anzeigt, wird der Teilschreibprozeß durch Ersetzen des einen oder mehrerer Bytes der in Register 20 gepeicherten Daten mit dem in Register 22 gespeicherten Datenwort abgeschlossen, und es werden neue Prüfbits im ECC- Schaltkreis 24 für das neue Datenwort gebildet und das resultierende neue Datenwort sowie die neuen Prüfbits für das neue Datenwort in die DRAMs 16 geschrieben.
- Wenn der vom Decodierschaltkreis 30 decodierte Satz von Syndromen einen korrigierbaren Fehler anzeigt, dann wird die Stelle innerhalb des fehlerhaften Datenworts durch den Decodierschaltkreis 30 an den Korrekturschaltkreis 26 gesendet. Der Korrekturschaltkreis 26 korrigiert einen Einbitfehler in dem in Register 20 gespeicherten Datenwort. Nachdem der Einbitfehler korrigiert ist, wird der Teilschreibprozeß abgeschlossen durch Ersetzen des einen oder mehrerer Bytes der in Register 20 gespeicherten Daten durch die in Register 22 gespeicherten Daten durch die Erzeugung neuer Prüfbits im ECC-Schaltkreis 24 für das neue Datenwort und durch Schreiben des resutierenden neuen Datenworts und der neuen Prüfbits für das neue Datenwort in die DRAMs 16.
- Wenn das durch den Decodierschaltkreis 30 decodierte Syndrom während einer Teilschreiboperation einen nicht korrigierbaren Fehler anzeigt, dann sendet der Decodierschaltkreis 30 in Fig. 1, bezugnehmend auf Fig. 7, ein Freigabesignal an Gatter 116 des ECC-Schaltkreises 24, wie in Fig. 7 gezeigt. Durch die Freigabe des Gatters 116 wird der Byteschreibefehlercode von ECC 70 in Fig. 3 in den EXKLUSIV-ODER-Schaltkreis 120 eingegeben. Die in Register 114 gespeicherten 8 Prüfbits werden auch in den EXKLUSIV-ODER-Schaltkreis 120 eingegeben.
- EXKLUSIV-ODER-Schaltkreis 120 führt eine logische EXKLUSIV-ODER- Operation zwischen den entsprechenden Bits der 8 Prüfbits aus Register 114 und den 8 Bits des Byteschreibefehlercode durch.
- Das Resultat der durch den EXKLUSIV-ODER-Schaltkreis 120 durchgeführten Operation ist die Erzeugung eines Satzes modifizierter Prüfbits, der 8 Bits enthält. Der Satz der modifizierten Prüfbits wird dann aus dem EXKLUSIV-ODER- Schaltkreis 120 in das Register 28 übertragen und gespeichert und dadurch die vorher in Register 28 gespeicherten Prüfbits ersetzt.
- Nach Fig. 1 wird das in Register 20 gespeicherte Datenwort in die DRAMs 16 geschrieben, ohne daß irgendeine Fusion oder Ersatzoperation mit dem einen oder mehreren Bytes der in Register 22 gespeicherten Daten durchzuführen. Der Satz von in Register 28 gespeicherten modifizierten Prüfbits wird auch in die DRAMs 16 geschrieben, um ihn so mit dem Datenwort zu verbinden, das vom Register 20 in die DRAMs 16 geschrieben wurde. Der Teilschreibprozeß für das Datenwort wird daher abgebrochen und nicht mehr abgeschlossen, vorausgesetzt, das eine oder mehrere Bytes der in Register 22 gespeicherten Daten werden nicht mehr mit dem in Register 20 gespeicherten Datenwort fusioniert.
- Nach der nächsten Lese- oder Teilschreiboperation werden das Datenwort und seine Prüfbits aus den DRAMs 16 gelesen. Das Datenwort ist in Register 20 gespeichert und die Prüfbits sind in Register 28 gespeichert, wie in Fig. 1 gezeigt. Die aus den DRAMs 16 gelesenen und in Register 28 gespeicherten Prüfbits sind nun die mit dem Datenwort verbundenen modifizierten Prüfbits, die als Resultat der früher mißlungenen Teilschreiboperation erzeugt wurden.
- Hinsichtlich des ECC-Schaltkreises 24 von Fig. 3 des oben beschriebenen erfindungsgemäßen Verfahrens wird das Datenwort in den Codierschaltkreis 112 eingegeben, es werden 8 Prüfbits in dem Codierschaltkreis 112 erzeugt und die 8 Prüfbits werden in Register 114 gespeichert und dann in den EXKLUSlV-ODER- Schaltkreis 118 eingegeben. Der Satz von modifizierten Prüfbits aus Register 28 wird ebenfalls in den EXKLUSIV-ODER-Schaltkreis 118 eingegeben und es wird ein Syndrom gebildet. Das Syndrom wird dann in den Decodierschaltkreis 30 eingegeben.
- Wenn das an den Decodierschaltkreis 30 in Fig. 1 gesendete Syndrom mit dem Byteschreibefehlercode von ECC 70 in Fig. 3 übereinstimmt, bewirkt der Decodierschaltkreis 30 ein Signal, welches anzeigt, daß vorher eine mißlungene Teilschreiboperation hinsichtlich diesem Datenwort aufgetreten ist. Das Syndrom würde mit dem Byteschreibefehlercode von ECC 70 in Fig. 3 übereinstimmen, wenn in dem Datenwort oder in dem Satz von modifizierten Prüfbits seit dem Zeitpunkt der mißlungenen Teilschreiboperation kein Fehler auftrat.
- Wenn jedoch irgendein Bit entweder des Datenworts oder des Satzes von modifizierten Prüfbits den Status gewechselt hat, aus dem während der unterbrochenen Teilschreiboperation geschrieben worden war, dann würde aus oben beschriebenen Gründen der Decodierschaltkreis 30 sehr wahrscheinlich das Syndrom decodieren, um eine Fehlerbedingung anzuzeigen. Der Decodierschaltkreis würde dann anzeigen, daß ein nicht korrigierbare Fehler hinsichtlich des Datenworts aufgetreten war.
- So dient der Byteschreibefehlercode dazu, eine Speicherstelle als "falsch" zu markieren, wenn während einer Teilschreiboperation ein nicht korrigierbarer Fehler auftritt. In einem alternativen Ausführungsbeispiel der vorliegenden Erfindung dient der Byteschreibefehlercode dazu, eine Speicherstelle als "falsch" zu markieren, wenn während einer Speicheroperation ein nicht korrigierbarer Fehler auftritt.
- Vorausgesetzt, es treten keine Fehler von drei oder mehr Bits auf, so wird die Markierung einer Speicherstelle mit dem Byteschreibefehlercode nach einer mißlungenen Teilschreiboperation:
- (1) eine Meldung bewirken, daß hinsichtlich dieser Speicheradresse eine mißlungene Teilschreiboperation auftrat, wenn nach der mißlungenen Teilschreiboperation kein Fehler auftritt, und
- (2) mit großer Wahrscheinlichkeit eine Meldung eines nicht korrigierbaren Fehlers bei dieser Speicheradresse bewirken, wenn nach der mißlungenen Teilschreiboperation ein Einbitfehler auftritt.
- Das Auftreten eines Einbitfehlers im Datenwort oder den modifizierten Prüfbits nach dem mißlungenen Teilschreiben wird bedeuten, daß eher die nicht- korrigierbarer-Fehler-Bedingung mit dieser Speicheradresse verbunden ist, als eine falsche korrigierbarer-Fehler-Bedingung oder eine falsche "kein Fehler"- Bedingung.
- Wie in Fig. 8 gezeigt, ist der Byteschreibefehlercode des ECC 70 von ungenützten 8-Bit-Codes ungeradzahliger Parität umgeben. Die gezeigten Datencodes und Prüfbits sind andere Codes, die als Teil des ECC 70 verwendet werden.
- Nach Fig. 8 wurde der bestimmte Byteschreibefehlercode von ECC 70 (wie in Fig. 3 gezeigt) gewählt, um von ungenützten 8-Bit-Codes ungeradzahliger Parität umgeben zu sein, so daß die Wahrscheinlichkeit erhöht wird, daß der Decodierschaltkreis 30 in Fig. 1 ein Syndrom decodieren würde, um eine nicht korrigierbare Fehlersituation anzuzeigen, wenn mehr als ein Einbitfehler auftritt, nachdem die mißlungene Teilschreiboperation auftrat. Die ECC-Codes, die sich in wenigen Bits oder nur in einem Bit von dem Byteschreibefehlercode unterscheiden, sind nicht korrigierbare Fehlercodes, um die Wahrscheinlichkeit zu erhöhen, einen früher erkannten nicht korrigierbaren Fehler zu erkennen. Mit anderen Worten, der betreffende, in Fig. 3 gezeigte Byteschreibefehlercode für ECC 70 erhöht die Wahrscheinlichkeit, daß eine nicht-korrigierbarer-Fehler-Bedingung angezeigt wird, wenn ein Fehler mit zwei oder mehr Bits entweder des Datenworts oder des modifizierten Prüfbits auftritt, nachdem eine mißlungene Teilschreiboperation auftrat.
- In der vorangehenden Beschreibung ist die Erfindung an Hand ihrer besonderen exemplarischen Ausführungsbeispiele beschrieben worden. Es wird jedoch klar sein, daß verschiedene Modifizierungen und Veränderungen an dieser gemacht werden können, ohne von dem breiteren Schutzumfang der Erfindung abzuweichen, wie in den beigefügten Ansprüchen dargelegt. Die Beschreibung und die Zeichnungen sind entsprechend eher in einem erläuternden als einem einschränkenden Sinne zu betrachten.
Claims (15)
1. Verfahren zur Fehlererkennung, das die folgenden Schritte aufweist:
(a) Lesen eines Datenwortes (54) aus einem Speicher (16);
(b) Lesen eines ersten Satzes von Prüfbits (56) aus dem Speicher,
wobei dieser Satz mit dem aus dem Speicher gelesenen Datenwort verknüpft ist;
(c) Erzeugen eines zweiten Satzes von Prüfbits (60) aus dem
Datenwort (54), das aus dem Speicher gelesen worden ist;
(d) Durchführen einer ersten logischen Operation (62) zwischen dem
ersten Satz von Prüfbits (56) und dem zweiten Satz von Prüfbits (60), um ein
Syndrom (64) zu erzeugen;
(e) Decodieren des Syndroms, um das Vorhandensein oder
Nichtvorhandensein eines nicht korrigierbaren Fehlers zu erkennen;
wobei das Verfahren gekennzeichnet ist durch
(f) das Definieren eines Byteschreibefehlercodes, der keinem
Syndrom entspricht, das erzeugt wird, wenn kein Fehler oder ein korrigierbarer Fehler
auftritt, und,
(g) nach der Feststellung eines unkorrigierbaren Fehlers während
einer Teilschreiboperation,
(i) Durchführung einer zweiten logischen Operation durch eine
EXKLUSIV-ODER-Operation für den zweiten Satz von
Prüfbits (60) und den Byteschreibefehlercode, um einen dritten
Satz von Prüfbits zu erzeugen;
(ii) Schreiben eines Datenworts (54) in den Speicher; und
(iii) Schreiben des dritten Satzes von Prüfbits in den Speicher
(16), um diesen dritten Satz von Prüfbits mit dem Datenwort
zu verknüpfen, wobei der dritte Satz von Prüfbits angibt, ob
während einer vorangegangenen Leseoperation ein nicht
korrigierbarer Fehler aufgetreten ist.
2. Verfahren nach Anspruch 1, bei dem die erste logische Operation
(62) eine EXKLUSIV-ODER-Operation ist.
3. Verfahren nach Anspruch 1, bei dem Codes, die sich nur durch ein
paar Bits oder nur durch ein Bit vom Byteschreibefehlercode unterscheiden, Codes
für nicht korrigierbare Fehler sind, um die Wahrscheinlichkeit zu erhöhen, einen
früher detektierten nicht korrigierbaren Fehler zu detektieren.
4. Verfahren nach Anspruch 1, bei dem das Datenwort 64 Bit lang ist
und bei dem jeder Satz der ersten, zweiten und dritten Sätze von Prüfbits 8 Bit lang
ist.
5. Verfahren nach Anspruch 4, bei dem der Byteschreibefehlercode
01111111 ist, wobei das ganz linke Bit das niedrigstwertige Bit und das ganz
rechte Bit das höchstwertige Bit ist.
6. Verfahren nach Anspruch 5, das weiterhin folgenden Schritt umfaßt:
Anzeigen eines nicht korrigierbaren Fehlers, wenn das Syndrom einem
Fehlercode entspricht, der einen nicht korrigierbaren Fehler anzeigt.
7. Verfahren nach Anspruch 1, das weiterhin folgenden Schritt umfaßt:
Anzeigen einer fehlgeschlagenen Speicheroperation, wenn das im
Schritt (e) decodierte Syndrom dem Byteschreibefehlercode entspricht.
8. Vorrichtung zur Fehlererkennung, die folgendes aufweist:
(a) eine erste Einrichtung (14, 20), um ein Datenwort (54) aus einem
Speicher (16) zu lesen;
(b) eine zweite Einrichtung (14, 28), um aus dem Speicher einen
ersten Satz von Prüfbits (56) zu lesen, der mit dem aus dem Speicher gelesenen
Datenwort verknüpft ist;
(c) eine dritte Einrichtung (112), um aus dem Datenwort (54), das aus
dem Speicher gelesen worden ist, einen zweiten Satz von Prüfbits (60) zu
erzeugen;
(d) eine vierte Einrichtung (118), um zwischen dem ersten Satz von
Prüfbits (56) und dem zweiten Satz von Prüfbits (60) eine erste logische Operation
(62) durchzuführen, um ein Syndrom (64) zu erzeugen;
(e) eine fünfte Einrichtung (30), um das Syndrom zu decodieren und
das Vorhandensein oder das Nichtvorhandensein eines nicht korrigierbaren
Fehlers zu detektieren;
wobei die Vorrichtung gekennzeichnet ist durch:
(f) eine sechste Einrichtung (116), um einen Byteschreibefehlercode
zu definieren, der keinem Syndrom entspricht, das erzeugt wird, wenn kein Fehler
oder ein korrigierbarer Fehler auftritt;
(g) eine siebte Einrichtung (120), um nach der Feststellung eines nicht
korrigierbaren Fehlers während einer Teilschreiboperation eine zweite logische
Operation durch eine EXKLUSIV-ODER-Operation für den zweiten Satz von
Prüfbits (60) und den Byteschreibefehlercode durchzuführen, um einen dritten Satz von
Prüfbits zu erzeugen;
(h) eine achte Einrichtung (14, 20), um nach der Feststellung eines
nicht korrigierbarer Fehlers während der Teilschreiboperation das Datenwort (54)
in den Speicher zu schreiben; und
(i) eine neunte Einrichtung (14, 28), um nach der Feststellung eines
nicht korrigierbarer Fehlers während der Teilschreiboperation den dritten Satz von
Prüfbits in den Speicher (16) zu schreiben, um diesen dritten Satz von Prüfbits mit
dem Datenwort zu verknüpfen, wobei dieser dritte Satz von Prüfbits angibt, ob
während einer vorangegangenen Leseoperation ein nicht korrigierbarer Fehler
aufgetreten ist.
9. Vorrichtung nach Anspruch 8, bei der die zur Durchführung der ersten
logischen Operation (62) dienende vierte Einrichtung (118) eine EXKLUSIV-
ODER-Operation durchführt.
10. Vorrichtung nach Anspruch 8, bei der Codes, die sich vom
Byteschreibefehlercode nur durch ein paar Bit oder nur durch ein Bit unterscheiden,
Codes für nicht korrigierbare Fehler sind, um die Wahrscheinlichkeit zu erhöhen,
daß ein früher detektierter nicht korrigierbarer Fehler detektiert wird.
11. Vorrichtung nach Anspruch 8, bei der das Datenwort 64 Bit lang ist
und bei der jeder Satz der ersten, zweiten und dritten Sätze von Prüfbits 8 Bit lang
ist.
12. Vorrichtung nach Anspruch 11, bei der der Byteschreibefehlercode
01111111 ist, wobei das ganz linke Bit das niedrigstwertige Bit und das ganz
rechte Bit das höchstwertige Bit ist.
13. Vorrichtung nach Anspruch 12, die weiterhin folgendes aufweist:
eine zehnte Einrichtung (30), um einen nicht korrigierbaren Fehler
anzuzeigen, wenn das Syndrom einem Fehlercode entspricht, der einen nicht
korrigierbaren Fehler anzeigt.
14. Vorrichtung nach Anspruch 8, die weiterhin folgendes aufweist:
eine elfte Einrichtung, um eine fehlgeschlagene Speicheroperation
anzuzeigen, wenn das von der fünften Decodiereinrichtung (30) decodierte Syndrom
dem Byteschreibefehlercode entspricht.
15. Speicherkarte zur Verwendung in einem Datenverarbeitungssystem,
das die Fehlererkennungs-Vorrichtung gemäß Anspruch 8 beinhaltet.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US07/050,839 US4817095A (en) | 1987-05-15 | 1987-05-15 | Byte write error code method and apparatus |
| PCT/US1988/001335 WO1988009009A1 (en) | 1987-05-15 | 1988-04-29 | Byte write error code method and apparatus |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| DE3853206D1 DE3853206D1 (de) | 1995-04-06 |
| DE3853206T2 true DE3853206T2 (de) | 1995-10-26 |
Family
ID=21967788
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE3853206T Expired - Fee Related DE3853206T2 (de) | 1987-05-15 | 1988-04-29 | Verfahren und gerät zur byteschreibfehlerkodierung. |
Country Status (12)
| Country | Link |
|---|---|
| US (1) | US4817095A (de) |
| EP (1) | EP0332662B1 (de) |
| JP (1) | JPH02500308A (de) |
| KR (1) | KR920002575B1 (de) |
| CN (1) | CN1016010B (de) |
| AU (1) | AU608613B2 (de) |
| CA (1) | CA1284228C (de) |
| DE (1) | DE3853206T2 (de) |
| IE (1) | IE71652B1 (de) |
| IL (1) | IL86262A (de) |
| MX (1) | MX163579B (de) |
| WO (1) | WO1988009009A1 (de) |
Families Citing this family (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4970648A (en) * | 1987-08-12 | 1990-11-13 | Fairchild Space And Defense Corporation | High performance flight recorder |
| JP2583547B2 (ja) * | 1988-01-13 | 1997-02-19 | 株式会社日立製作所 | 半導体メモリ |
| US5014273A (en) * | 1989-01-27 | 1991-05-07 | Digital Equipment Corporation | Bad data algorithm |
| JP2554743B2 (ja) * | 1989-05-19 | 1996-11-13 | シャープ株式会社 | 再生のための誤り訂正装置 |
| DE69033834T2 (de) * | 1989-07-13 | 2002-04-25 | Canon K.K., Tokio/Tokyo | Für das Kopieren von Daten geeignete Kodierungs- und Dekodierungsvorrichtung |
| JPH0786810B2 (ja) * | 1990-02-16 | 1995-09-20 | 富士通株式会社 | アレイディスク装置 |
| JP2830308B2 (ja) * | 1990-02-26 | 1998-12-02 | 日本電気株式会社 | 情報処理装置 |
| JPH05216698A (ja) * | 1991-08-05 | 1993-08-27 | Advanced Micro Devicds Inc | 改良されたエラー検出および訂正回路 |
| US5379415A (en) * | 1992-09-29 | 1995-01-03 | Zitel Corporation | Fault tolerant memory system |
| US5452429A (en) * | 1993-11-17 | 1995-09-19 | International Business Machines Corporation | Error correction code on add-on cards for writing portions of data words |
| US5488691A (en) * | 1993-11-17 | 1996-01-30 | International Business Machines Corporation | Memory card, computer system and method of operation for differentiating the use of read-modify-write cycles in operating and initializaiton modes |
| US5592498A (en) * | 1994-09-16 | 1997-01-07 | Cirrus Logic, Inc. | CRC/EDC checker system |
| US5774481A (en) * | 1995-03-31 | 1998-06-30 | International Business Machines Corporation | Reduced gate error detection and correction circuit |
| JP3234130B2 (ja) * | 1995-05-30 | 2001-12-04 | 三菱電機株式会社 | 誤り訂正符号復号化方法およびこの方法を用いる回路 |
| US5751948A (en) * | 1995-12-26 | 1998-05-12 | Carrier Corporation | System for processing HVAC control information |
| DE10252230A1 (de) * | 2002-11-11 | 2004-05-27 | Robert Bosch Gmbh | Verfahren zur Übertragung von Daten |
| US7392456B2 (en) * | 2004-11-23 | 2008-06-24 | Mosys, Inc. | Predictive error correction code generation facilitating high-speed byte-write in a semiconductor memory |
| JP4036338B2 (ja) * | 2005-03-04 | 2008-01-23 | 国立大学法人東京工業大学 | 誤りバイト数を制限したバイト内複数スポッティバイト誤り訂正・検出方法及び装置 |
| DE102005027455A1 (de) * | 2005-06-14 | 2006-12-28 | Infineon Technologies Ag | Verfahren und Schaltungsanordnung zur Fehlererkennung in einem Datensatz |
| US7954034B1 (en) * | 2005-09-30 | 2011-05-31 | Emc Corporation | Method of and system for protecting data during conversion from an ECC protection scheme to a parity protection scheme |
| CN101395583B (zh) * | 2006-03-07 | 2011-03-23 | Nxp股份有限公司 | 具有存储着包含附加数据在内的页面的存储矩阵的电子电路 |
| CN101178922B (zh) * | 2006-11-06 | 2010-09-01 | 凌阳科技股份有限公司 | 高内存使用效率的纠错处理装置 |
| CN102339647B (zh) * | 2010-07-23 | 2014-05-14 | 北京兆易创新科技股份有限公司 | 一种检错/纠错校验模块的检测方法及装置 |
| CN102339641B (zh) * | 2010-07-23 | 2014-12-17 | 北京兆易创新科技股份有限公司 | 检错/纠错校验模块及该模块读写数据的方法 |
| CN102339648B (zh) * | 2010-07-23 | 2014-07-09 | 北京兆易创新科技股份有限公司 | 一种检错/纠错校验模块的检测方法及装置 |
| US8612834B2 (en) * | 2011-03-08 | 2013-12-17 | Intel Corporation | Apparatus, system, and method for decoding linear block codes in a memory controller |
| US9164834B2 (en) * | 2013-05-06 | 2015-10-20 | Samsung Electronics Co., Ltd. | Semiconductor memory devices, memory systems including the same and method of writing data in the same |
| GB2516831B (en) * | 2013-07-31 | 2020-10-21 | Advanced Risc Mach Ltd | Error code management in systems permitting partial writes |
| JP2017022651A (ja) * | 2015-07-14 | 2017-01-26 | ルネサスエレクトロニクス株式会社 | 誤り訂正装置、半導体記憶装置、および誤り訂正方法 |
| US9985655B2 (en) | 2015-09-01 | 2018-05-29 | International Business Machines Corporation | Generating ECC values for byte-write capable registers |
| US9766975B2 (en) | 2015-09-01 | 2017-09-19 | International Business Machines Corporation | Partial ECC handling for a byte-write capable register |
| US10176038B2 (en) * | 2015-09-01 | 2019-01-08 | International Business Machines Corporation | Partial ECC mechanism for a byte-write capable register |
| US9639418B2 (en) * | 2015-09-01 | 2017-05-02 | International Business Machines Corporation | Parity protection of a register |
| FR3065303B1 (fr) * | 2017-04-12 | 2019-06-07 | Stmicroelectronics (Rousset) Sas | Procede d'ecriture dans un dispositif de memoire non volatile et dispositif de memoire non volatile correspondant |
| US10606690B2 (en) * | 2017-09-29 | 2020-03-31 | Intel Corporation | Memory controller error checking process using internal memory device codes |
| US11385963B1 (en) * | 2021-02-24 | 2022-07-12 | Western Digital Technologies, Inc. | Usage of data mask in DRAM write |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3814921A (en) * | 1972-11-15 | 1974-06-04 | Honeywell Inf Systems | Apparatus and method for a memory partial-write of error correcting encoded data |
| US3836957A (en) * | 1973-06-26 | 1974-09-17 | Ibm | Data storage system with deferred error detection |
| US4072853A (en) * | 1976-09-29 | 1978-02-07 | Honeywell Information Systems Inc. | Apparatus and method for storing parity encoded data from a plurality of input/output sources |
| US4319357A (en) * | 1979-12-14 | 1982-03-09 | International Business Machines Corp. | Double error correction using single error correcting code |
| US4458349A (en) * | 1982-06-16 | 1984-07-03 | International Business Machines Corporation | Method for storing data words in fault tolerant memory to recover uncorrectable errors |
| US4523314A (en) * | 1983-02-07 | 1985-06-11 | Sperry Corporation | Read error occurrence detector for error checking and correcting system |
| JPS6041374A (ja) * | 1983-08-16 | 1985-03-05 | Canon Inc | 撮像装置 |
| US4651321A (en) * | 1983-08-29 | 1987-03-17 | Amdahl Corporation | Apparatus for reducing storage necessary for error correction and detection in data processing machines |
| NL8303765A (nl) * | 1983-11-02 | 1985-06-03 | Philips Nv | Dataverwerkend systeem waarbij in het geheugen onbetrouwbare woorden zijn vervangen door een onbetrouwbaarheidsindicator. |
| US4670876A (en) * | 1985-05-15 | 1987-06-02 | Honeywell Inc. | Parity integrity check logic |
-
1987
- 1987-05-15 US US07/050,839 patent/US4817095A/en not_active Expired - Lifetime
-
1988
- 1988-04-29 JP JP63503986A patent/JPH02500308A/ja active Pending
- 1988-04-29 AU AU17144/88A patent/AU608613B2/en not_active Ceased
- 1988-04-29 WO PCT/US1988/001335 patent/WO1988009009A1/en not_active Ceased
- 1988-04-29 KR KR1019890700060A patent/KR920002575B1/ko not_active Expired
- 1988-04-29 DE DE3853206T patent/DE3853206T2/de not_active Expired - Fee Related
- 1988-04-29 EP EP88904317A patent/EP0332662B1/de not_active Expired - Lifetime
- 1988-05-03 IL IL86262A patent/IL86262A/xx unknown
- 1988-05-12 MX MX11446A patent/MX163579B/es unknown
- 1988-05-13 IE IE146088A patent/IE71652B1/en not_active IP Right Cessation
- 1988-05-13 CA CA000566757A patent/CA1284228C/en not_active Expired - Fee Related
- 1988-05-14 CN CN88102857A patent/CN1016010B/zh not_active Expired
Also Published As
| Publication number | Publication date |
|---|---|
| EP0332662A4 (en) | 1991-01-09 |
| KR920002575B1 (ko) | 1992-03-30 |
| CA1284228C (en) | 1991-05-14 |
| AU1714488A (en) | 1988-12-06 |
| CN1033889A (zh) | 1989-07-12 |
| WO1988009009A1 (en) | 1988-11-17 |
| JPH02500308A (ja) | 1990-02-01 |
| DE3853206D1 (de) | 1995-04-06 |
| EP0332662A1 (de) | 1989-09-20 |
| KR890702121A (ko) | 1989-12-22 |
| US4817095A (en) | 1989-03-28 |
| IE881460L (en) | 1988-11-15 |
| MX163579B (es) | 1992-06-03 |
| AU608613B2 (en) | 1991-04-11 |
| IL86262A (en) | 1992-08-18 |
| CN1016010B (zh) | 1992-03-25 |
| EP0332662B1 (de) | 1995-03-01 |
| IE71652B1 (en) | 1997-02-26 |
| IL86262A0 (en) | 1988-11-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3853206T2 (de) | Verfahren und gerät zur byteschreibfehlerkodierung. | |
| DE69220818T2 (de) | Verfahren und Einrichtung zur Fehlererkennung in Recherspeichern versehen mit Mehrfach-bit-Ausgängen | |
| DE69026743T2 (de) | Fehlertolerantes Speichersystem | |
| DE3586851T2 (de) | Fehlerkorrekturverfahren und anordnung fuer chips mit multibitausgabe. | |
| DE102013215055B4 (de) | Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern | |
| DE60117066T2 (de) | Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes | |
| DE102015201384B4 (de) | Vorrichtung und Verfahren zum Verbessern der Datenspeicherung durch Dateninvertierung | |
| DE2942998C2 (de) | Fehler-Korrektur- und Erkennungs-Anordnung | |
| DE3689128T2 (de) | Halbleiterspeichergerät mit einer Korrekturfunktion. | |
| DE2428348C2 (de) | Verfahren zur Weiterbenutzung eines fehlerhaften Datenspeichers und Einrichtung zur Durchführung dieses Verfahrens | |
| DE3882223T2 (de) | Ausgebreitete Fehlerkorrekturvorrichtung mit Einzel-Paket-Fehlerkorrektur und Doppel-Paket-Fehlerdetektionscoden. | |
| DE68927164T2 (de) | Verfahren zur Identifizierung schlechter Daten | |
| DE3128740C2 (de) | ||
| DE69526279T2 (de) | Flexible Fehlerkorrekturcode/Paritätsbit-Architektur | |
| DE102005048255A1 (de) | Integriertes Schaltungsbauelement und Betriebsverfahren | |
| DE2260850A1 (de) | Fehlerkorrektursystem | |
| DE2328869A1 (de) | Verfahren zur pruefung eines digitalen speichersystems sowie zur durchfuehrung dieses verfahrens dienendes selbstpruefendes digitales speichersystem | |
| DE2060643B2 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
| DE2357116A1 (de) | Speichermodul fuer eine datenverarbeitungseinheit | |
| EP2100308B1 (de) | Verfahren und halbleiterspeicher mit einer einrichtung zur erkennung von adressierungsfehlern | |
| DE2456709C2 (de) | Schaltungsanordnung zur Fehlererkennung und -korrektur | |
| DE2157829C2 (de) | Anordnung zum Erkennen und Korrigieren von Fehlern in Binärdatenmustern | |
| DE69904618T2 (de) | Detektionstechnik von speicherabschnittfehlern und einzel-, doppel und triplebitfehlern | |
| DE69317766T2 (de) | Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc) | |
| DE102020111321A1 (de) | System und verfahren zur erkennung und berichtigung von datenfehlern eines transparenten registers |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8364 | No opposition during term of opposition | ||
| 8339 | Ceased/non-payment of the annual fee |