[go: up one dir, main page]

DE69910320T2 - Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits - Google Patents

Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits Download PDF

Info

Publication number
DE69910320T2
DE69910320T2 DE69910320T DE69910320T DE69910320T2 DE 69910320 T2 DE69910320 T2 DE 69910320T2 DE 69910320 T DE69910320 T DE 69910320T DE 69910320 T DE69910320 T DE 69910320T DE 69910320 T2 DE69910320 T2 DE 69910320T2
Authority
DE
Germany
Prior art keywords
sub
block
bit
bits
check bits
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
DE69910320T
Other languages
English (en)
Other versions
DE69910320D1 (de
Inventor
Robert Saratoga Cypher
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE69910320D1 publication Critical patent/DE69910320D1/de
Publication of DE69910320T2 publication Critical patent/DE69910320T2/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/1064Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • HINTERGRUND DER ERFINDUNG
  • 1. Bereich der Erfindung
  • Diese Erfindung bezieht sich auf Fehlerkorrektur und genauer gesagt auf Fehlercodes, die Bitfehler in einem Computer-Speichersystem korrigieren.
  • 2. Beschreibung der relevanten Technik
  • Fehlercodes werden gemeinhin in elektronischen Systemen verwendet, um Datenfehler wie Übertragungsfehler oder Speicherfehler zu entdecken und/oder zu korrigieren. Zum Beispiel können Fehlercodes verwendet werden, um Fehler innerhalb von Daten, die über eine Telefonleitung, einen Funksender oder einen Compact-Disc-Laser übertragen wurden, zu entdecken und zu korrigieren. Eine andere gebräuchliche Verwendung von Fehlercodes ist es, Fehler innerhalb von Daten, die in einem Speicher eines Computersystems gespeichert sind, zu entdecken und zu korrigieren. Zum Beispiel können Fehlerkorrekturbits oder Prüfbits für Daten erzeugt werden, bevor sie in einer oder mehreren Speichereinrichtungen gespeichert werden. Wenn die Daten aus der Speichereinrichtung gelesen werden, können die Prüfbits verwendet werden, um Fehler innerhalb der Daten zu entdecken und zu korrigieren. Fehler können entweder durch fehlerhafte Komponenten oder durch Rauschen bzw. Störspannungen bzw. -ströme innerhalb des Computersystems eingeschleppt werden. Fehlerhafte Komponenten können fehlerhafte Speichereinrichtungen oder fehlerhafte Datenpfade zwischen Einrichtungen bzw. Geräten innerhalb des Computersystems wie fehlerhafte Anschlußstifte bzw. Kontakte umfassen.
  • Hamming-Codes sind ein gemeinhin verwendeter Fehlercode. Die Prüfbits in einem Hamming-Code sind Paritätsbits für Abschnitte der Datenbits. Jedes Prüfbit liefert die Parität für eine eindeutige bzw. einzigartige Teilmenge der Datenbits. Wenn ein Fehler auftritt, d. h. ein oder mehrere Bits ihren Zustand ändern, werden ein oder mehrere Syndrombits gesetzt (unter der Annahme, daß der Fehler in der von dem Code abgedeckten Klasse von Fehlern liegt). Allgemein gesprochen werden Syndrombits erzeugt, indem die Prüfbits neu erzeugt werden und die neu erzeugten Prüfbits mit den ursprünglichen Prüfbits verglichen werden. Wenn die neu erzeugten Prüfbits von den ursprünglichen Prüfbits abweichen, ist ein Fehler aufgetreten und ein oder mehrere Syndrombits werden gesetzt. Welche Syndrombits gesetzt werden, kann auch dazu verwendet werden zu bestimmen, welches Datenbit seinen Zustand ändert, und die Korrektur des Fehlers zu ermöglichen. Wenn zum Beispiel ein Datenbit seinen Zustand ändert, wird dieses Datenbit ein oder mehrere Prüfbits ändern. Weil jedes Datenbit zu einer eindeutigen Gruppe von Prüfbits beiträgt, identifizieren die Prüfbits, die geändert wurden, das Datenbit, das seinen Zustand geändert hat. Der Fehler kann korrigiert werden, indem das als fehlerhaft identifizierte Bit invertiert wird.
  • Eine allgemein gebräuchliche Verwendung von Hamming-Codes ist es, Einzelbitfehler innerhalb einer Gruppe von Daten zu korrigieren. Allgemein gesprochen muß die Anzahl von Prüfbits groß genug sein, so daß 2k–1 größer oder gleich n ist, wobei k die Anzahl von Prüfbits und n die Anzahl von Datenbits plus die Anzahl von Prüfbits ist. Dementsprechend werden sieben Prüfbits benötigt, um einen Einzelfehler korrigierenden Hamming-Code für einen 64-Bit Datenblock zu implementieren. Ein Einzelfehler korrigierender Hamming-Code ist in der Lage, einen einzelnen Fehler zu erkennen und zu korrigieren. Die Fähigkeit zur Fehlererkennung des Codes kann durch Hinzufügen eines zusätzlichen Prüfbits erhöht werden. Die Verwendung eines zusätzlichen Prüfbits ermöglicht es, daß der Hamming-Code doppelte Bitfehler erkennt und einzelne Bitfehler korrigiert. Das Hinzufügen eines Bits zur Erhöhung der Fähigkeit eines Hamming-Codes zur Fehlererkennung wird als erweiterter Hamming-Code bezeichnet.
  • In einem Einzelfehler-Korrekturcode wie einem Hamming-Code können mehrfache Bitfehler dazu führen, daß ein oder mehrere Syndrome nicht-Null sind. Mehrfache Bitfehler können jedoch irrtümlich als ein Einzelbitfehler an einer anderen Bitposition erscheinen. Zum Beispiel kann in einem Einzelfehler korrigierenden Hamming-Code mit sechs Prüfbits ein Bitfehler dazu führen, daß zwei Prüfbits ihren Zustand ändern. Ein anderer Bitfehler kann dazu führen, daß zwei andere Prüfbits ihren Zustand ändern. Dementsprechend ändern vier Prüfbits den Zustand, wenn diese zwei Fehler auftreten. Unglücklicherweise kann ein Einbitfehler in noch einer anderen Bitposition dazu führen, daß dieselben vier Prüfbits den Zustand ändern. Die Prozedur zur Fehlerkorrektur geht womöglich von der Annahme aus, daß das Bit, welches alle vier Prüfbits beeinflußt, seinen Zustand geändert hat und invertiert das Datenbit. Wenn die Änderungen der Prüfbits tatsächlich durch zwei Bitfehler verursacht wurden, hat die Prozedur zur Fehlerkorrektur ein nicht fehlerhaftes Bit invertiert. Dementsprechend hat die Prozedur zur Fehlerkorrektur mehr Fehler erzeugt und kann irrtümlich anzeigen, daß die Daten fehlerfrei sind.
  • Das Hinzufügen eines erweiterten Paritätsbits löst dieses Problem. Wenn die Daten aus dem Speicher gelesen werden, werden die Prüfbits und das erweiterte Paritätsbit neu erzeugt und mit den ursprünglichen Prüfbits und dem erweiterten Paritätsbit verglichen. Wenn die neu erzeugten Prüfbits von den ursprünglichen Prüfbits verschieden sind, kann das erweiterte Paritätsbit verwendet werden, um festzustellen, ob ein oder zwei Bitfehler aufgetreten sind. Wenn ein Fehler auftritt, wird das neu erzeugte erweiterte Paritätsbit von dem ursprünglichen erweiterten Paritätsbit abweichen. Wenn zwei Fehler auftreten, wird das neu erzeugte erweiterte Paritätsbit dasselbe sein wie das ursprüngliche erweiterte Paritätsbit. Wenn ein oder mehrere Prüfbits den Zustand ändern und das neu erzeugte erweiterte Paritätsbit verschieden ist, ist ein einzelner Bitfehler aufgetreten und wird korrigiert. Alternativ werden in dem Fall, daß ein oder mehrere Prüfbits den Zustand ändern und das erweiterte Paritätsbit dasselbe ist, zwei Bitfehler entdeckt und es wird keine Korrektur durchgeführt. In letzterem Fall kann ein nicht korrigierbarer Fehler an eine Speichersteuerung oder eine andere Komponente innerhalb des Computersystems gemeldet werden. Es wird darauf hingewiesen, daß mehr als zwei Bitfehler in einer logischen Gruppe nicht innerhalb der Klasse von Fehlern liegen, mit der sich der Fehlerkorrekturcode befaßt. Dementsprechend können drei oder mehr Fehler unerkannt bleiben oder der Fehlerkorrekturcode kann die Fehler als einen Einzelbitfehler interpretieren und ein Datenbit invertieren, das nicht fehlerhaft war.
  • Die Paritätsprüfung ist eine gemeinhin verwendete Technik zur Fehlererkennung. Ein Paritätsbit oder ein Prüfbit wird zu einer Gruppe von Datenbits hinzugefügt. Das Prüfbit kann abhängig von der Anzahl von gesetzten Datenbits innerhalb der Gruppe von Datenbits gesetzt werden. Wenn gerade Parität verwendet wird, wird das Paritätsbit die Gesamtzahl von gesetzten Bits einschließlich der Datenbits und des Prüfbits gleich einer geraden Zahl machen. Wenn ungerade Parität verwendet wird, wird das Paritätsbit die Gesamtzahl von gesetzten Bits einschließlich der Datenbits und des Prüfbits gleich einer ungeraden Zahl machen. Die Paritätsprüfung ist wirksam zum Entdecken einer ungeraden Anzahl von Fehlern. Wenn eine gerade Anzahl von Fehlern auftritt, erkennt jedoch die Paritätsprüfung den Fehler nicht.
  • Eine verbreitete Verwendung von Fehlercodes besteht darin, Bitfehler von Daten, die in einem Cachespeicher eines Computerspeichersystems gespeichert sind, zu entdecken und zu korrigieren. Allgemein gesprochen ist ein Cachespeicher ein Puffer zwischen einem Prozessor und relativ langsamen Speichereinrichtungen. Der Cachespeicher ist typischerweise kleiner und schneller als der Hauptspeicher und speichert Daten, auf die unlängst vom Prozessor zugegriffen wurde. Wegen der repetitiven Natur von Computerprogrammen ist es wahrscheinlicher, daß der Prozessor auf Information, auf die vor kurzem zugegriffen wurde, zugreift, als daß er auf andere Information im Speicher zugreift. Dementsprechend kann durch das Speichern der unlängst verwendeten Daten in dem schnelleren Cachespeicher die durchschnittliche Zugriffszeit auf Daten verringert werden. Das Verringern der Zugriffszeit auf Daten verringert die Zeit, in der der Prozessor auf Daten aus dem Speicher wartet, was die Gesamtgeschwindigkeit des Prozessors steigert.
  • In 1 werden Teile eines Computersystems gezeigt, das einen Cachespeicher implementiert. Das Computersystem 100 beinhaltet den Prozessor 102, den Cachespeicher 104, die Speichersteuerung 106 und den Systemspeicher 108. Andere Teile des Computersystems 100 sind der Einfachheit halber weggelassen. Der Prozessor 102 ist mit dem Cachespeicher 104 verbunden. Der Cachespeicher 104 ist mit der Speichersteuerung 106 verbunden, die ihrerseits mit dem Systemspeicher 108 verbunden ist. Es wird darauf hingewiesen, daß das Computersystem von 1 nur der Veranschaulichung dient. Man kann sich auch andere Konfigurationen eines Prozessors, eines Cachespeichers und eines Systemspeichers vorstellen.
  • Der Prozessor 102 fordert Daten aus dem Systemspeicher 108 durch das Einleiten einer Speicherleseanforderung auf dem Prozessorbus 110 an. Der Cachespeicher 104 empfängt die Speicherleseanforderung und stellt fest, ob die angeforderten Daten im Cache gespeichert sind. Wenn die angeforderten Daten im Cache gespeichert sind, liefert der Cachespeicher 104 die Daten an den Prozessor 102. Alternativ leitet der Cachespeicher 104 eine Speicherleseanforderung an die Speichersteuerung 106 ein, um die Daten zu lesen, wenn die angeforderten Daten nicht im Cache gespeichert sind. Nach einer Ausführungsform greift die Speichersteuerung 106 auf die Daten aus dem Systemspeicher 108 zu und speichert die Daten im Cachespeicher 104, der seinerseits die Daten an den Prozessor 102 liefert. Alternativ können die Daten von der Speichersteuerung 106 parallel zum Speichern der Daten im Cachespeicher 104 an den Prozessor 102 übermittelt werden. Wenn der Prozessor 102 im Cachespeicher 104 gespeicherte Daten überschreibt, können verschiedene Techniken zum Erhalt der Kohärenz implementiert werden. Zum Beispiel können die Daten sowohl in den Cachespeicher 104 als auch in den Speicher 108 geschrieben werden, oder die Daten können im Cachespeicher 104 ungültig gemacht werden und nur in den Speicher 108 geschrieben werden. Die vorstehend beschriebene Operation des Computersystems 100 dient nur zu Zwecken der Veranschaulichung und ist nicht dazu gedacht, den Schutzbereich der Ansprüche einzuschränken.
  • Es ist ein verbreitetes Entwurfsziel für Computersysteme, die Anzahl von Prüfbits zu reduzieren, die verwendet werden, um Fehler zu erkennen und zu korrigieren. Die Prüfbits erhöhen die Menge von Daten, die vom System behandelt werden, was die Anzahl von Speicherkomponenten, Datenpfaden und anderen Schaltungen bzw. Schaltkreisen anwachsen lassen kann. Darüber hinaus erhöht die erhöhte Anzahl von Bits die Wahrscheinlichkeit eines Fehlers. Obwohl die Prüfbits einen Fehler feststellbar und/oder korrigierbar machen, erhöht die Steigerung der Anzahl von Datenbits innerhalb des Systems die Wahrscheinlichkeit, daß ein Fehler auftritt. Aus zumindest diesen Gründen ist es wünschenswert, die Anzahl von Prüfbits für ein gegebenes Niveau von Fehlererkennung und/oder -korrektur zu vermindern.
  • Fahad Alzahrani und Tom Chen offenbaren in "On-Chip TEC-QED ECC for Ultra-large, single-chip memory systems" (Seiten 132–137 in Proceedings of the International Conference on Computer Design: "VLSI in Computers and Processors", Los Alamitos, USA, 1994) einen Entwurf, der auf einem SEC-DED-Code mit Ungerader-Gewicht-Spalte bzw. Odd-Weight-Column SEC-DED-Code in Verbindung mit einer Paritätstechnik.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Spezielle und bevorzugte Aspekte der Erfindung sind in den anhängenden unabhängigen und abhängigen Patentansprüchen dargelegt.
  • Die vorliegende Erfindung reduziert die Anzahl der Prüfbits, die benötigt werden, um Fehler in einem Datenblock zu korrigieren, der eine Mehrzahl von Unterblöcken enthält. Jeder Unterblock enthält ein Unterblock-Prüfbit, das verwendet werden kann, um das Vorliegen eines Bitfehlers innerhalb des Unterblocks zu erkennen. Ein zusammengesetzter Unterblock wird erzeugt, der das spaltenweise exklusive Oder der Bits jedes Unterblocks darstellt. Mit anderen Worten ist ein erstes Bit des zusammengesetzten Unterblocks das exklusive Oder aller Bits in einer ersten Spaltenposition des Unterblocks. Das zweite Bit des zusammengesetzten Unterblocks ist das exklusive Oder aller Bits in einer zweiten Spaltenposition des Unterblocks, etc. Nach einer Ausführungsform wird der zusammengesetzte Unterblock nicht gespeichert, sondern vielmehr nur für Berechnungszwecke verwendet. Eine Mehrzahl von zusammengesetzten Prüfbits wird erzeugt, um eine Bitposition eines Fehlers innerhalb des zusammengesetzten Unterblocks zu entdecken. Wenn ein Bitfehler innerhalb des Datenblocks auftritt, können die Unterblock-Prüfbits verwendet werden, um zu erkennen, in welchem Unterblock der Fehler auftrat. Die zusammengesetzten Prüfbits können verwendet werden, um festzustellen, welche Bitposition des zusammengesetzten Unterblocks fehlerhaft ist. Die fehlerhafte Bitposition des zusammengesetzten Unterblocks kennzeichnet auch die Bitposition des fehlerhaften Bits in dem Unterblock, der durch die Unterblock-Prüfbits gekennzeichnet ist. Dementsprechend können der Unterblock und die Bitposition innerhalb des Unterblocks durch das Verwenden der Unterblock-Prüfbits und der zusammengesetzten Prüfbits erkannt werden.
  • Allgemein gesprochen betrachtet die vorliegende Erfindung ein Verfahren zur Korrektur eines Bitfehlers in einem Datenblock, das folgendes umfaßt: Aufteilen des Datenblocks in eine Mehrzahl von Unterblöcken, wobei jeder Unterblock eine Mehrzahl von Bitpositionen beinhaltet; Erzeugen eines ersten Unterblock-Prüfbits für einen ersten Unterblock, wobei das erste Unterblock-Prüfbit dafür eingerichtet ist, einen Fehler in dem ersten Unterblock zu erkennen; Erzeugen eines zusammengesetzten Unterblocks, wobei jedes Bit des zusammengesetzten Unterblocks einer Bitposition in der Mehrzahl der Unterblöcke entspricht; Erzeugen von zusammengesetzten Prüfbits für den zusammengesetzten Unterblock, wobei die zusammengesetzten Prüfbits dafür eingerichtet sind, einen Bitfehler in dem zusammengesetzten Unterblock zu erkennen und zu lokalisieren; Erkennen eines fehlerhaften Bits in dem ersten Unterblock unter Verwendung des ersten Unterblock-Prüfbits und Bestimmen einer Bitposition des fehlerhaften Bits unter Verwendung der zusammengesetzten Prüfbits; und Invertieren des fehlerhaften Bits.
  • Die vorliegende Erfindung betrachtet ferner einen Computerspeicher, der einen Bitfehler in einem Datenblock korrigiert. Der Computerspeicher enthält eine oder mehrere Speichereinrichtungen und einen Fehlerkorrekturschaltkreis, der mit der einen oder den mehreren Speichereinrichtungen gekoppelt ist. Die eine oder mehreren Speichereinrichtungen sind dafür eingerichtet, eine Mehrzahl von Unterblöcken des Datenblocks zu speichern. Jeder der Unterblöcke enthält eine Mehrzahl von Bitpositionen. Der Fehlerkorrekturschaltkreis ist dafür eingerichtet, den Datenblock zu empfangen, die Unterblock-Prüfbits für jeden der Unterblöcke zu erzeugen, einen zusammengesetzten Unterblock zu erzeugen und zusammengesetzte Prüfbits zu erzeugen, um eine Bitposition eines fehlerhaften Bits innerhalb des zusammengesetzten Unterblocks zu entdecken. Die Unterblock-Prüfbits und die zusammengesetzten Prüfbits werden in der einen oder den mehreren Speichereinrichtungen gespeichert. Wenn ein Datenblock mit einem fehlerhaften Bit aus der einen oder den mehreren Speichereinrichtungen gelesen wird, verwendet der Fehlerkorrekturschaltkreis die Unterblock-Prüfbits, um einen Unterblock zu bestimmen, der das fehlerhafte Bit enthält, und die zusammengesetzten Prüfbits, um eine Bitposition des fehlerhaften Bits innerhalb des Unterblocks zu bestimmen, der das fehlerhafte Bit enthält.
  • Die vorliegende Erfindung betrachtet darüber hinaus einen Cachespeicher, der einen Bitfehler in einem Datenblock korrigiert. Der Cachespeicher enthält eine oder mehrere Speichereinrichtungen und einen Fehlerkorrekturschaltkreis, der mit der einen oder den mehreren Speichereinrichtungen gekoppelt ist. Die eine oder mehreren Speichereinrichtungen sind dafür eingerichtet, eine Mehrzahl von Unterblöcken des Datenblocks zu speichern. Jeder der Unterblöcke enthält eine Mehrzahl von Bitpositionen. Der Fehlerkorrekturschaltkreis ist dafür eingerichtet, den Datenblock zu empfangen, Unterblock-Prüfbits für jeden der Unterblöcke zu erzeugen, einen zusammengesetzten Unterblock zu erzeugen und zusammengesetzte Prüfbits zu erzeugen, um eine Bitposition eines fehlerhaften Bits innerhalb des zusammengesetzten Unterblocks zu entdecken. Die Unterblock-Prüfbit und die zusammengesetzten Prüfbits werden in der einen oder den mehreren Speichereinrichtungen gespeichert. Wenn ein Datenblock mit einem fehlerhaften Bit aus der einen oder den mehreren Speichereinrichtungen gelesen wird, verwendet der Fehlerkorrekturschaltkreis die Unterblock-Prüfbits, um einen Unterblock zu bestimmen, der das fehlerhafte Bit enthält, und die zusammengesetzten Prüfbits, um eine Bitposition des fehlerhaften Bits innerhalb des Unterblocks zu bestimmen, der das fehlerhafte Bit enthält.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Andere Ziele und Vorteile der Erfindung werden beim Lesen der folgenden detaillierten Beschreibung und unter Bezug auf die begleitenden Zeichnungen offensichtlich, von denen:
  • 1 ein Blockdiagramm eines Prozessors, eines Cachespeichers und eines Systemspeichers ist;
  • 2 ein Blockdiagramm eines Cachespeichers ist;
  • 3A eine Konfiguration eines Cacheeintrages gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 3B eine Konfiguration eines Unterblocks eines Cacheeintrages gemäß einer Ausführungsform der vorliegenden Erfindung darstellt;
  • 3C eine Konfiguration eines Prüfbitblocks darstellt, der einem im Cachespeicher gespeicherten Datenblock zugeordnet ist;
  • 4 die Organisation eines Datenblocks darstellt, der Fehlerkorrekturcodes enthält, um einzelne Bitfehler zu korrigieren;
  • 5 eine verbesserte Organisation eines Datenblocks darstellt, der Fehlerkorrekturcodes enthält, um einzelne Bitfehler gemäß einer Ausführungsform der vorliegenden Erfindung zu korrigieren;
  • 6 ein Flußdiagramm eines Verfahrens zum Korrigieren einzelner Bitfehler in Cachespeichern mit Unterblock-Paritätsbits ist;
  • 7 ein Blockdiagramm eines Computersystems mit einem Cachespeicher und einem Systemspeicher gemäß einer Ausführungsform der vorliegenden Erfindung ist.
  • Während bei der Erfindung verschiedene Modifikationen und alternative Ausgestaltungen möglich sind, werden spezifische Ausführungsformen derselben als Beispiel in den Zeichnungen dargestellt und hier im Detail beschrieben. Es sollte sich jedoch verstehen, daß die Zeichnungen und detaillierten Beschreibungen hierzu nicht dazu gedacht sind, die Erfindung auf die speziell offenbarten Ausführungsformen einzuschränken, sondern die Erfindung soll im Gegenteil alle Modifikationen, Äquivalenzen und Alternativen abdecken, die in den Schutzbereich der vorliegenden Erfindung fallen.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • In 2 wird ein Blockdiagramm des Cachespeichers 104 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In der dargestellten Ausführungsform enthält der Cachespeicher 104 die Speichereinheit 202, die Fehlerkorrektureinheit 206 und die Cachesteuerung 208. Andere Teile des Cachespeichers 104 wurden der Einfachheit halber weggelassen. Die Speichereinheit 202 beinhaltet eine Mehrzahl von Einträgen 204A204X. Auf Komponenten, die durch eine Referenznummer gefolgt von einem Buchstaben bezeichnet sind, kann gemeinsam durch die Referenznummer allein Bezug genommen werden. Zum Beispiel kann auf die Cacheeinträge 204A204X als Cacheeinträge 204 Bezug genommen werden. Allgemein gesprochen ist die Cachesteuerung 208 dafür eingerichtet, Speicherzugriffsanforderungen vom Prozessor 102 zu empfangen und festzustellen, ob die angeforderten Daten in der Speichereinheit 202 vorliegen. Wenn der Speicherzugriff eine Leseanforderung ist und die angeforderten Daten in der Speichereinheit 202 gespeichert sind, sendet die Cachesteuerung 208 Steuersignale an die Speichereinheit 202, um die angeforderten Daten auszugeben. Die angeforderten Daten werden der Fehlerkorrektureinheit 206 übergeben, die einen oder mehrere Bitfehler in den Daten erkennt und korrigiert. Alternativ ist die Cachesteuerung 208 dafür eingerichtet, eine Anforderung der Daten an die Speichersteuerung 106 zu senden, wenn die angeforderten Daten in der Speichereinheit 202 nicht vorliegen. Wenn die Daten empfangen werden, werden die Daten der Fehlerkorrektureinheit 206 übergeben, die eine Mehrzahl von Prüfbits erzeugt, die mit den Daten in der Speichereinheit 202 gespeichert werden. Wenn alle Einträge aktuell belegt sind, verwendet die Cachesteuerung 208 einen von mehreren herkömmlichen Algorithmen, um festzulegen, welchen Eintrag die neuen Daten überschreiben. Zum Beispiel kann die Cachesteuerung 208 den am längsten nicht verwendeten Eintrag der Speichereinheit 202 überschreiben.
  • Wenn der Speicherzugriff eine Schreibanforderung ist und die angeforderten Daten in der Speichereinheit 202 gespeichert sind, können verschiedene herkömmliche Techniken zum Erhalten der Kohärenz zwischen dem Cache 104 und dem Speicher 108 implementiert sein. Zum Beispiel können die Daten sowohl in den Cache 104 als auch in den Speicher 108 geschrieben werden, oder die Daten im Cache 104 können ungültig gemacht werden und nur in den Speicher 108 geschrieben werden.
  • Es wird darauf hingewiesen, daß der Cache 104 direkt abgebildet oder bereichsassoziativ gesetzt sein kann. Nach einer bestimmten Ausführungsform speichert die Speichereinheit 202 64-Byte-Cachezellen bzw. -lines. Jede Cachezelle enthält zwei Einträge von je 32 Bytes. Nach einer bestimmten Ausführungsform kann auf die Daten durch Lesen oder Schreiben eines 32-Byte-Eintrages oder durch Ein-Byte-Schreiben zugegriffen werden. Nach einer Ausführungsform enthält jeder Eintrag 32 Bytes von Daten (oder 256 Bits von Daten) und 41 Prüfbits. Dementsprechend enthält jeder Eintrag 297 Bits.
  • In 3A wird eine Konfiguration eines Cacheeintrages gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In der dargestellten Ausführungsform enthält der Cacheeintrag 204A 32 Unterblöcke (S[0:31]) und einen Prüfbitblock (CB). Jeder Unterblock speichert eine Mehr zahl von Datenbits und ein oder mehrere Prüfbits, die verwendet werden können, um Fehler innerhalb des Unterblocks zu erkennen. Der Prüfbitblock enthält eine Mehrzahl von Prüfbits, die verwendet werden, um Bitfehler innerhalb des Eintrages 204A zu erkennen und zu korrigieren.
  • In 3B wird eine Konfiguration eines Unterblocks eines Cacheeintrages gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In der dargestellten Ausführungsform enthält ein Unterblock (S[x]) acht Bits von Daten (D[x][0:7]) und ein Unterblock-Prüfbit (C[x]). Nach einer bestimmten Ausführungsform ist das Unterblock-Prüfbit ein Paritätsbit der acht Datenbits. Das Unterblock-Prüfbit kann verwendet werden, um einen Bitfehler innerhalb der Datenbits zu erkennen. Wie vorstehend diskutiert kann das Unterblock-Prüfbit durch die Fehlerkorrektureinheit 206 vor dem Speichern von Daten in den Eintrag 204A erzeugt werden.
  • In 3C wird eine Konfiguration eines Prüfbitblocks eines Cacheeintrages gezeigt. In der dargestellten Ausführungsform enthält der Prüfbitblock neun Prüfbits für den Eintrag (CB[0:8]). Nach einer bestimmten Ausführungsform implementieren die neun Prüfbits für den Eintrag einen Einzelfehler korrigierenden Hamming-Code für die 256 Datenbits und 32 Prüfbits in dem Eintrag. Dementsprechend können die Prüfbits für den Eintrag verwendet werden, um das fehlerhafte Bit zu lokalisieren und zu korrigieren, wenn die Unterblock-Prüfbits einen Fehler in dem Datenblock entdecken.
  • Nach einer Ausführungsform wird, wenn ein Einzelbyte gelesen wird, das dem gelesenen Unterblock entsprechende Unterblock-Prüfbit geprüft, um festzustellen, ob der Unterblock irgendwelche Bitfehler enthält. Wenn keine Bitfehler entdeckt werden, werden die Daten des Unterblocks verwendet. Alternativ werden in dem Fall, daß ein Bitfehler entdeckt wird, dann die Daten aus jedem Unterblock in dem Eintrag gelesen, und die Unterblock-Prüfbits werden verwendet, um andere Bitfehler zu entdecken. Wenn mehrfache Bitfehler entdeckt werden, dann wird ein nicht korrigierbarer Fehler gemeldet. Wenn nur ein Bitfehler entdeckt wird, dann werden die Prüfbits für den Eintrag neu berechnet und mit den gespeicherten Prüfbits für den Eintrag verglichen, um die Bitposition des fehlerhaften Bits zu bestimmen.
  • Wenn ein Eintrag gelesen wird, werden die Unterblock-Prüfbits der Bytes des Eintrages geprüft. Wenn keine Bitfehler entdeckt werden, werden die Daten ohne Korrektur verwendet. Wenn mehrfache Bitfehler entdeckt werden, wird ein nicht korrigierbarer Fehler gemeldet. Wenn ein Bitfehler entdeckt wird, werden die Prüfbits für den Eintrag verwendet, um den Bitfehler zu korrigieren. In der vorstehenden Art und Weise können fehlerfreie Daten aus dem Cache gelesen werden, ohne die Prüfbits für den Eintrag zu verwenden, um die Fehlerfreiheit der Daten zu überprüfen. Wenn ein fehlerhaftes Bit entdeckt wird, können jedoch die Prüfbits für den Eintrag verwendet werden, um das fehlerhafte Bit zu korrigieren.
  • Während einer Ein-Byte-Schreiboperation werden alle Unterblöcke des Eintrages gelesen, und die Prüfbits werden geprüft. Wenn keine Fehler entdeckt werden, dann werden die Daten in den zugehörigen Unterblock geschrieben und neue Prüfbits für den Eintrag werden erzeugt und gespeichert. Alternativ werden in dem Fall, daß ein einzelnes Unterblock-Prüfbit nicht korrekt ist, die Prüfbits für den Eintrag neu erzeugt und mit den gespeicherten Prüfbits für den Eintrag verglichen, und das fehlerhafte Bit wird korrigiert. Die neuen Daten werden danach in den zugehörigen Unterblock gespeichert, und neue Prüfbits für den Eintrag werden erzeugt und gespeichert. Während einer 32-Byte-Schreiboperation werden der Unterblock und die Prüfbits für den Eintrag erzeugt, und die Daten und Prüfbits werden gespeichert.
  • In 4 wird die Organisation eines Datenblocks gezeigt, der Fehlerkorrekturcodes enthält, um Einzelbitfehler zu korrigieren. In der dargestellten Ausführungsform werden die Datenbits und Prüfbits des Eintrages 204A gezeigt. Wie vorstehend diskutiert, enthält der Eintrag 204A 32 Unterblöcke (S[0:31]). Jeder Unterblock enthält acht Datenbits (D[x][0:7]) und ein Unterblock-Prüfbit (C[x]). Nach einer Ausführungsform ist das Prüfbit eines Unterblocks ein Paritätsbit der acht Datenbits innerhalb des Unterblocks. Der Eintrag 204A enthält zusätzlich einen Prüfbitblock (CB). Der Prüfbitblock enthält eine Mehrzahl von Prüfbits für den Eintrag, die verwendet werden können, um einen Bitfehler innerhalb der Datenbits des Eintrages 204A zu entdecken und zu korrigieren. Nach einer Ausführungsform speichert der Prüfbitblock einen Neun-Bit-Hamming-Code, der die 256 Datenbits und die 32 Prüfbits von Eintrag 204A abdeckt.
  • In 5 wird eine verbesserte Organisation eines Datenblocks gezeigt, der Fehlerkorrekturcodes enthält, um Einzelbitfehler gemäß einer Ausführungsform der vorliegenden Erfindung zu korrigieren. In der dargestellten Ausführungsform enthält der Cacheeintrag 204A 32 Unterblöcke (S[0:31]), wobei jeder aus acht Datenbits und einem Prüfbit besteht. Der Prüfbitblock von 4 wurde durch einen zusammengesetzten Prüfbitblock (Composite Check Bit Block, CBB) ersetzt. Der zusammengesetzte Prüfbitblock (CBB) enthält vier zusammengesetzte Prüfbits. Allgemein gesprochen sind die zusammengesetzten Prüfbits ein Fehlercode, um einen Fehler innerhalb eines zusammengesetzten Unterblocks zu lokalisieren. Der zusammengesetzte Unterblock ist ein spaltenweises exklusives Oder des Unterblocks. Mit anderen Worten ist das erste Bit des zusammengesetzten Unterblocks (CS[0]) das exklusive Oder des ersten Bits von jedem Unterblock (D[x][0]). Das zweite Bit des zusammengesetzten Unterblocks (CS[1]) ist das exklusive Oder des zweiten Bits von jedem Unterblock (D[x][1]), etc. Dementsprechend enthält der zusammengesetzte Unterblock in der dargestellten Ausführungsform neun Bits. Ein Bit des zusammengesetzten Unterblocks entspricht je einer Datenbitposition innerhalb des Unterblocks und ein Bit entspricht der Prüfbitposition innerhalb des Unterblocks.
  • Wenn ein Bitfehler auftritt, ändert das Bit in dem zusammengesetzten Unterblock, das der Bitposition des fehlerhaften Bits entspricht, seinen Zustand. Durch das Lokalisieren des Bits, das in dem zusammengesetzten Unterblock seinen Zustand ändert, kann die Bitposition eines fehlerhaften Bits innerhalb eines Unterblocks lokalisiert werden. Dementsprechend können die Unterblock-Prüfbits verwendet werden, um zu lokalisieren, welcher Unterblock ein fehlerhaftes Datenbit enthält, und die zusammengesetzten Prüfbits können verwendet werden, um die Bitposition des fehlerhaften Bits innerhalb dieses Unterblocks zu lokalisieren.
  • Nach einer Ausführungsform sind die zusammengesetzten Prüfbits ein Einzelfehler korrigierender Hamming-Code für die neun Bits des zusammengesetzten Unterblocks. In der oben beschriebenen Art und Weise kann die Anzahl von Prüfbits reduziert werden, die benötigten werden, um einen Bitfehler zu lokalisieren. In der dargestellten Ausführungsform sind die neun Prüfbits für den Eintrag von 4 durch vier zusammengesetzte Prüfbits ersetzt. Es wird darauf hingewiesen, daß der zusammengesetzte Unterblock nicht im Cache gespeichert wird. Der zusammengesetzte Unterblock wird als ein Zwischenschritt beim Berechnen der zusammengesetzten Prüfbits verwendet, die in dem Cacheeintrag gespeichert werden.
  • Wie vorstehend diskutiert werden nach einer Ausführungsform die Daten in 32-Byte-Blöcken gelesen. Dementsprechend wird, wenn Daten aus dem Cache 202 gelesen werden, ein Eintrag, der 256 Datenbits und 36 Prüfbits enthält, an den Fehlererkennungsschaltkreis 206 übergeben. Die Fehlerkorrektureinheit 206 verwendet die Unterblock-Prüfbits, die jedem Unterblock zugeordnet sind, um festzustellen, ob ein Bitfehler innerhalb dieses Unterblocks auftritt. Wenn keine Fehler innerhalb des gelesenen Unterblocks entdeckt werden, dann werden die Daten ohne Korrektur ausgegeben. Wenn einer der Unterblöcke einen Fehler enthält, dann wird der zusammengesetzte Unterblock neu erzeugt, die zusammengesetzten Prüfbits werden neu erzeugt, und die neu erzeugten zusammengesetzten Prüfbits werden mit den gespeicherten zusammengesetzten Prüfbits verglichen, um die Bitposition des Fehlers innerhalb des zusammengesetzte Unterblocks zu lokalisieren. Die Bitposition des Fehlers innerhalb des zusammengesetzten Unterblocks entspricht der Bitposition des fehlerhaften Bits in dem Unterblock, der das fehlerhafte Bit enthält. Alternativ ist dann ein nicht korrigierbarer Fehler aufgetreten, wenn ein Fehler in zwei oder mehr Unterblöcken entdeckt wird. Der nicht korrigierbarer Fehler kann an das System gemeldet werden, oder der Eintrag kann erneut gelesen werden.
  • Wenn eine Ein-Byte-Schreiboperation durchgeführt wird, werden alle gespeicherten Unterblöcke des Eintrags an die Fehlerkorrektureinheit 206 übergeben. Die Fehlerkorrektureinheit 206 verwendet die Unterblock-Prüfbits, um Bitfehler innerhalb des Eintrags zu entdecken. Wenn ein korrigierbarer Fehler entdeckt wird, wird er unter Verwendung der zusammengesetzten Prüfbits korrigiert. Wenn keine nicht-korrigierbaren Fehler entdeckt werden, dann wird das Byte und das zugeordnete Unterblock-Prüfbit in den Eintrag geschrieben, und es werden neue zusammengesetzte Prüfbits erzeugt. Es wird darauf hingewiesen, daß das gespeicherte Byte und das Prüfbit gelesen werden müssen, bevor das neue Byte und das Prüfbit gespeichert werden, um Bitfehler innerhalb des Eintrags zu entdecken und zu korrigieren.
  • Die Tabelle 1 unten veranschaulicht die Bits des zusammengesetzten Unterblocks (CS[0:7] und CS[P]), die zu jedem Bit der zusammengesetzten Prüfbits (CCB[0:3]) beitragen. Jede Zeile repräsentiert eines von den vier zusammengesetzten Prüfbits. Jede Spalte repräsentiert ein Bit des zusammengesetzten Unterblocks. Jedes Bit des zusammengesetzten Unterblocks, das zu einem zusammengesetzten Prüfbit beiträgt, hat eine Eins in dem entsprechenden Kästchen. Zum Beispiel ist das zusammengesetzte Prüfbit drei (CCB[3]) das Paritätsbit von CS[4:7] und CS[P]. Es wird darauf hingewiesen, daß dies äquivalent dazu ist, das exklusive Oder der Bits in den Bitpositionen 4–7 und der Prüfbits von allen Unterblöcken zu nehmen.
  • Tabelle 1
    Figure 00110001
  • Nach einer Ausführungsform werden Syndrombits (S[3:0]) erzeugt, wenn die zusammengesetzten Prüfbits verwendet werden, um eine Bitposition eines fehlerhaften Bits zu erkennen. Tabelle 2 unten veranschaulicht, welche Bits zu jedem Syndrombit beitragen. Zum Beispiel ist S[3] das exklusive Oder der Bits CS[4:7] und CS[P] des zusammengesetzten Unterblocks und von CCB[3]. Die Bitposition eines Fehlers kann lokalisiert werden, indem Tabelle 2 durchsucht wird, um die Spalte zu finden, die mit S[3:0] übereinstimmt. Die Syndrombits, zu denen ein fehlerhaftes Bit beiträgt, stimmen mit den Syndrombits überein. Wenn die Syndrombits mit keiner Spalte von Tabelle 2 übereinstimmen, dann ist mehr als ein Bitfehler aufgetreten.
  • Tabelle 2
    Figure 00110002
  • In 6 wird ein Verfahren zur Korrektur von Einzelbitfehlern in Datenblöcken mit Unterblock-Prüfbits gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. In Schritt 602 wird der Datenblock in eine Mehrzahl von Unterblöcken aufgeteilt. Jeder Unterblock enthält eine Mehrzahl von Bitpositionen. In Schritt 604 wird ein Unterblock-Prüfbit für jeden Unterblock erzeugt. Das Unterblock-Prüfbit kann verwendet werden, um einen Fehler innerhalb des Unterblocks zu entdecken. Nach einer Ausführungsform ist das Unterblock-Prüfbit ein Paritätsbit für die Datenbits innerhalb des Unterblocks. In Schritt 606 wird ein zusammengesetzter Unterblock erzeugt. Ein zusammengesetzter Unterblock ist das spaltenweise exklusive Oder der Unterblöcke. Es wird darauf hingewiesen, daß der zusammengesetzte Unterblock nur Berechnungszwecken dient und nicht mit dem Datenblock gespeichert wird.
  • In Schritt 608 werden zusammengesetzte Prüfbits für den zusammengesetzten Unterblock erzeugt. Die zusammengesetzten Prüfbits sind ein Fehlercode für den zusammengesetzten Unterblock. Die zusammengesetzten Prüfbits können verwendet werden, um eine Bitposition eines Fehlers innerhalb des zusammengesetzten Unterblocks zu entdecken und zu lokalisieren. Nach einer Ausführungsform sind die zusammengesetzten Prüfbits ein Einzelfehler korrigierender Hamming-Code für den zusammengesetzten Unterblock. In Schritt 610 werden die Unterblock-Prüfbits verwendet, um einen Bitfehler innerhalb eines Unterblocks zu entdecken. In Schritt 612 werden die zusammengesetzten Prüfbits verwendet, um die Bitposition des Fehlers innerhalb des zusammengesetzten Unterblocks zu entdecken. Die Bitposition des Fehlers innerhalb des zusammengesetzten Unterblocks zeigt die Bitposition des Fehlers in dem Unterblock an, der das fehlerhafte Bit enthält. In Schritt 614 wird das fehlerhafte Bit durch Invertieren desjenigen Bits korrigiert, das durch die Unterblock-Prüfbits und die zusammengesetzten Prüfbits identifiziert wurde.
  • In 7 wird ein Blockdiagramm eines Computersystems mit einem Cache und einem Systemspeicher zur Korrektur von Einzelbitfehlern mit Unterblock-Paritätsbits gezeigt. Das Computersystem 700 beinhaltet einen Cachespeicher 725, einen Systemspeicher 720, einen Bus 730 und Peripherieeinrichtungen bzw. -geräte 770 und 775. Es sollte beachtet werden, daß das Computersystem 700 nur als ein Beispiel gezeigt wird und viele andere Konfigurationen betrachtet bzw. in Betracht gezogen werden. Der Systemspeicher 720 und der Cachespeicher 725 enthalten beide jeweils eine Speichereinheit 702, eine Steuerung 708 und die Fehlerkorrektureinheit 706 der vorliegenden Erfindung. Es sollte ebenso beachtet werden, daß die Cacheeinheit 725 innerhalb des Prozessors 710 enthalten sein kann. Darüber hinaus kann entweder der Cache oder der Systemspeicher die Fehlererkennungseinheit 706 der vorliegenden Erfindung enthalten. Der Bus 730 ist wie abgebildet der Einfachheit halber ein Systembus, jedoch kann das Computersystem 700 andere Busse beinhalten. Die Befehle, die in dem Prozessor 710 ausgeführt werden, können Datenbewegungen zwischen dem Prozessor 710, dem Cachespeicher 725 und dem Systemspeicher 720 und den Peripherieeinrichtungen 770 und 775 durch den Bus 730 steuern. Darüber hinaus können Datenbewegungen auch direkt zwischen dem Prozessor 710 und dem Cachespeicher 725 und zwischen dem Cachespeicher 725 und dem Systemspeicher 720 ausgeführt werden. Andere Algorithmen einschließlich der Cachekohärenz kommen ebenfalls in Betracht. Es sollte beachtet werden, daß die Anzahl von Bussen, Prozessoren, Caches, Speichern und Peripherieeinrichtungen innerhalb des Systems 700 variieren kann. Die Fehlererkennungseinheit 706 kann auch innerhalb des Cachespeichers 725 und/oder des Systemspeichers 720 oder außerhalb dieser Elemente wie in dem Prozessor 710, dem Bus 730, innerhalb einer Peripherieeinrichtung oder der Kombination solcher Elemente des Systems enthalten sein.
  • Während die vorliegende Erfindung unter Bezug auf bestimmte Ausführungsformen beschrieben wurde, versteht es sich, daß die Ausführungsformen der Veranschaulichung dienen und daß der Schutzbereich der Erfindung dadurch nicht eingeschränkt wird. Jedwede Variation, Änderung, Ergänzung und Verbesserung an den beschriebenen Ausführungsformen ist möglich. Diese Variationen, Änderungen, Ergänzungen und Verbesserungen können in den Schutzbereich der Erfindung fallen.

Claims (19)

  1. Vorrichtung zum Korrigieren eines Bitfehlers in einem Datenblock, wobei der Datenblock eine Mehrzahl von Datenbits und eine Mehrzahl von Prüfbits enthält, und wobei die Vorrichtung aufweist: eine oder mehrere Speichereinrichtungen (702), die so ausgestaltet sind, daß sie den Datenblock als eine Mehrzahl von Teilblöcken speichern, wobei jeder der Teilblöcke eine Mehrzahl von Datenbits enthält, und einen Fehlerkorrekturschaltkreis (706), welcher mit der einen oder den mehreren Speichereinrichtungen verbunden ist, wobei der Fehlerkorrekturschaltkreis derart ausgestaltet ist, daß er die Mehrzahl von Bits des Datenblockes aufnimmt und erzeugt: (i) zumindest ein Teilblock-Prüfbit für jeden der Teilblöcke, (ii) einen zusammengefaßten Teilblock, welcher eine Mehrzahl erster zusammengefaßter Prüfbits enthält, wobei jedes Bit des zusammengefaßten Teilblockes einer Bitposition in der Mehrzahl von Teilblöcken entspricht, und (iii) zweite zusammengefaßte Prüfbits, um eine Bitposition eines fehlerhaften Bits innerhalb des zusammengefaßten Teilblocks zu erfassen, wobei die Prüfbits des Teilblockes und die zweiten zusammengefaßten Prüfbits in Verbindung zu dem Datenblock in der einen oder den mehreren Speichereinrichtungen gespeichert sind, und wobei, wenn ein Datenblock mit einem fehlerhaften Bit aus der einen oder den mehreren Speichereinrichtungen gelesen wird, die Fehlerkorrektureinheit die Teilblock-Prüfbits verwendet, um einen Teilblock zu bestimmen, welcher das fehlerhafte Bit und die zweiten zusammengefaßten Prüfbits enthält, um eine Bitposition des fehlerhaften Bits innerhalb des Teilblockes zu bestimmen, welcher das fehlerhafte Bit enthält.
  2. Vorrichtung nach Anspruch 1, wobei die Prüfbits des Teilblockes Paritätsbits für Teile bzw. Abschnitte der Mehrzahl von Datenbits innerhalb der Mehrzahl von Teilblöcken sind.
  3. Vorrichtung nach Anspruch 2, wobei jedes Bit der zusammengefaßten Prüfbits des zusammengefaßten Teilblockes das spaltenweise Ausschließlich-Oder der Bits innerhalb der Mehrzahl von Teilblöcken ist.
  4. Vorrichtung nach Anspruch 1, wobei die Anzahl der zweiten zusammengefaßten Prüfbits für das Erfassen einer Bitposition eines fehlerhaften Bits innerhalb des zusammengefaßten Teilblocks kleiner ist als die Anzahl von Bits innerhalb des zusammengefaßten Teilblockes.
  5. Vorrichtung nach Anspruch 3, wobei die zweiten zusammengefaßten Prüfbits einen Hamming-Code zur Einzelfehlerkorrektur für den zusammengefaßten Teilblock implementieren.
  6. Vorrichtung nach Anspruch 1, wobei die Vorrichtung weiterhin Einrichtungen zum Invertieren des fehlerhaften Bits aufweisen.
  7. Vorrichtung nach Anspruch 1, wobei ein Teilblock, welcher ein fehlerhaftes Bit enthält, durch Vergleichen von erzeugten Prüfbits des Teilblockes mit gespeicherten Prüfbits des Teilblockes erfaßt wird.
  8. Vorrichtung nach Anspruch 7, wobei Syndrombits erzeugt werden, wenn ein Teilblock aus der Speichereinrichtung gelesen wird, wobei die Syndrombits die Position des fehlerhaften Bits identifizieren.
  9. Vorrichtung nach irgendeinem der vorstehenden Ansprüche, wobei die Vorrichtung einen Cachespeicher aufweist.
  10. Vorrichtung nach einem der Ansprüche 1 bis 8, wobei die Vorrichtung ein Speichersystem aufweist.
  11. Computersystem mit: einem Prozessor (710), einem Bus (730), einem Speicher bzw. Arbeitsspeicher, welcher mit dem Prozessor und dem Bus verbunden ist und welcher die Vorrichtung nach einem der Ansprüche 1 bis 8 aufweist.
  12. Verfahren zum Korrigieren eines Bitfehlers in einem Datenblock, welcher eine Mehrzahl von Bits umfaßt, wobei die Mehrzahl von Bits eine Mehrzahl von Datenbits und eine Mehrzahl von Prüfbits enthält, wobei das Verfahren aufweist: Aufteilen des Datenblockes in eine Mehrzahl von Teilblöcken, wobei jeder Teilblock eine Mehrzahl von Datenbits enthält, Erzeugen zumindest eines Teilblockprüfbits für jeden der Teilblöcke, wobei das zumindest eine Prüfbit des Teilblocks verwendet wird, um einen Fehler innerhalb des Teilblockes zu erfassen, Erzeugen eines zusammengefaßten Teilblockes, wobei der zusammengefaßte Teilblock eine Mehrzahl von ersten zusammengefaßten Prüfbits enthält, und wobei jedes Bit innerhalb des zusammengefaßten Teilblockes einer Bitposition in der Mehrzahl von Teilblöcken entspricht, Erzeugen zweiter zusammengefaßter Prüfbits für den zusammengefaßten Teilblock, wobei die zweiten zusammengefaßten Prüfbits verwendet werden, um einen Bitfehler in dem zusammengefaßten Teilblock zu erfassen und zu lokalisieren, Speichern der Teilblockprüfbits und der zweiten zusammengefaßten Prüfbits in einer Speichereinrichtung mit der Mehrzahl von Datenbits des Datenblockes und Erfassen eines fehlerhaften Bits in einem Teilblock unter Verwendung des zumindest eine n Prüfbits des Teilblockes und Bestimmen einer Bitposition des fehlerhaften Bits unter Verwendung der zweiten zusammengefaßten Prüfbits.
  13. Verfahren nach Anspruch 12, wobei die Teilblockprüfbits für die Datenbits innerhalb der Teilblöcke Paritätsbits sind.
  14. Verfahren nach Anspruch 13, wobei jedes Bit der zusammengefaßten Prüfbits des zusammengefaßten Teilblockes das spaltenweise "Ausschließlich-Oder" der Bits innerhalb der Mehrzahl von Teilblöcken ist.
  15. Verfahren nach Anspruch 12, wobei die Anzahl der zweiten zusammengefaßten Prüfbits zum Erfassen einer Bitposition eines fehlerhaften Bits innerhalb des zusammengefaßten Teilblockes geringer ist als die Anzahl von Bits innerhalb des zusammengefaßten Teilblockes.
  16. Verfahren nach Anspruch 14, wobei die zweiten zusammengefaßten Prüfbits einen Hamming-Code zur Einzelfehlerkorrektur für den zusammengefaßten Teilblock implementieren.
  17. Verfahren nach Anspruch 12, welches weiterhin den Schritt aufweist, daß das fehlerhafte Bit invertiert wird.
  18. Verfahren nach Anspruch 12, wobei ein Teilblock, welcher ein fehlerhaftes Bit enthält, durch Vergleichen der erzeugten Prüfbits des Teilblockes mit gespeicherten Prüfbits des Teilblockes erfaßt wird.
  19. Verfahren nach Anspruch 18, wobei die Syndrombits erzeugt werden, wenn der Teilblock aus dem Speicher gelesen wird, wobei die Syndrombits die Position des fehlerhaften Bits identifizieren.
DE69910320T 1998-09-24 1999-09-22 Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits Expired - Lifetime DE69910320T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US160214 1998-09-24
US09/160,214 US6304992B1 (en) 1998-09-24 1998-09-24 Technique for correcting single-bit errors in caches with sub-block parity bits

Publications (2)

Publication Number Publication Date
DE69910320D1 DE69910320D1 (de) 2003-09-18
DE69910320T2 true DE69910320T2 (de) 2004-06-17

Family

ID=22575982

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69910320T Expired - Lifetime DE69910320T2 (de) 1998-09-24 1999-09-22 Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits

Country Status (4)

Country Link
US (2) US6304992B1 (de)
EP (1) EP0989492B1 (de)
JP (1) JP2000112830A (de)
DE (1) DE69910320T2 (de)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6304992B1 (en) * 1998-09-24 2001-10-16 Sun Microsystems, Inc. Technique for correcting single-bit errors in caches with sub-block parity bits
US6408417B1 (en) * 1999-08-17 2002-06-18 Sun Microsystems, Inc. Method and apparatus for correcting soft errors in digital data
US6543029B1 (en) * 1999-09-29 2003-04-01 Emc Corporation Error corrector
US6493843B1 (en) * 1999-10-28 2002-12-10 Hewlett-Packard Company Chipkill for a low end server or workstation
JP4712214B2 (ja) * 2001-04-09 2011-06-29 富士通セミコンダクター株式会社 半導体メモリの動作制御方法および半導体メモリ
US6859904B2 (en) * 2001-05-11 2005-02-22 Sun Microsystems, Inc. Apparatus and method to facilitate self-correcting memory
US6901551B1 (en) 2001-12-17 2005-05-31 Lsi Logic Corporation Method and apparatus for protection of data utilizing CRC
US6772289B1 (en) * 2001-12-17 2004-08-03 Lsi Logic Corporation Methods and apparatus for managing cached CRC values in a storage controller
US6760814B2 (en) 2001-12-17 2004-07-06 Lsi Logic Corporation Methods and apparatus for loading CRC values into a CRC cache in a storage controller
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
US7073024B1 (en) * 2003-09-30 2006-07-04 Emc Corporation Data protection method wherein data protection code is stored together with parity
US7472330B2 (en) * 2003-11-26 2008-12-30 Samsung Electronics Co., Ltd. Magnetic memory which compares compressed fault maps
US7116600B2 (en) * 2004-02-19 2006-10-03 Micron Technology, Inc. Memory device having terminals for transferring multiple types of data
US7353437B2 (en) * 2004-10-29 2008-04-01 Micron Technology, Inc. System and method for testing a memory for a memory failure exhibited by a failing memory
US7587658B1 (en) 2005-01-03 2009-09-08 Sun Microsystems, Inc. ECC encoding for uncorrectable errors
US7577890B2 (en) 2005-01-21 2009-08-18 Hewlett-Packard Development Company, L.P. Systems and methods for mitigating latency associated with error detection and correction
US7350131B2 (en) 2005-01-22 2008-03-25 Cisco Technology, Inc. Error protecting groups of data words
US7478307B1 (en) 2005-05-19 2009-01-13 Sun Microsystems, Inc. Method for improving un-correctable errors in a computer system
US7653862B2 (en) 2005-06-15 2010-01-26 Hitachi Global Storage Technologies Netherlands B.V. Error detection and correction for encoded data
US7523342B1 (en) 2005-10-28 2009-04-21 Sun Microsystems, Inc. Data and control integrity for transactions in a computer system
US7802169B2 (en) * 2005-12-12 2010-09-21 Mediatek Inc. Error correction devices and correction methods
US8074153B2 (en) * 2005-12-12 2011-12-06 Mediatek Inc. Error correction devices and correction methods
DE102006005836B4 (de) * 2006-02-08 2009-01-02 Infineon Technologies Ag Schaltungsanordnung und Verfahren zum Erzeugen von zur Fehlererkennung bei einer digitalen Schaltung auswertbaren Kontrollbits und Anordnung zum Überwachen einer digitalen Schaltung
US7478203B2 (en) * 2006-03-08 2009-01-13 Sun Microsystems, Inc. Technique for eliminating dead stores in a processor
JP4648255B2 (ja) * 2006-06-26 2011-03-09 アラクサラネットワークス株式会社 情報処理装置および情報処理方法
US7890836B2 (en) * 2006-12-14 2011-02-15 Intel Corporation Method and apparatus of cache assisted error detection and correction in memory
US8078942B2 (en) * 2007-09-04 2011-12-13 Oracle America, Inc. Register error correction of speculative data in an out-of-order processor
JP4978576B2 (ja) * 2008-07-03 2012-07-18 株式会社Jvcケンウッド 符号化方法および符号化装置ならびに復号方法および復号装置
US8307258B2 (en) * 2009-05-18 2012-11-06 Fusion-10, Inc Apparatus, system, and method for reconfiguring an array to operate with less storage elements
US8640005B2 (en) * 2010-05-21 2014-01-28 Intel Corporation Method and apparatus for using cache memory in a system that supports a low power state
US8392807B2 (en) 2010-07-23 2013-03-05 Sandisk Technologies Inc. System and method of distributive ECC processing
US8418026B2 (en) * 2010-10-27 2013-04-09 Sandisk Technologies Inc. Hybrid error correction coding to address uncorrectable errors
KR101751506B1 (ko) 2011-03-28 2017-06-29 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 배드 영역 관리 방법
US8578241B2 (en) 2011-10-10 2013-11-05 Lsi Corporation Systems and methods for parity sharing data processing
US8862960B2 (en) 2011-10-10 2014-10-14 Lsi Corporation Systems and methods for parity shared data encoding
US9054840B2 (en) * 2011-12-15 2015-06-09 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Error detection and correction of a data transmission
WO2013180714A1 (en) 2012-05-31 2013-12-05 Hewlett-Packard Development Company, L.P. Local error detection and global error correction
US9604765B2 (en) 2013-03-14 2017-03-28 Ahhmigo, Llc Locking cap device and methods
JP2014211800A (ja) * 2013-04-19 2014-11-13 株式会社東芝 データ記憶装置、ストレージコントローラおよびデータ記憶制御方法
KR102296738B1 (ko) * 2015-06-01 2021-09-01 삼성전자 주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 에러 정정 방법
CN108170556A (zh) * 2018-01-18 2018-06-15 江苏华存电子科技有限公司 纠错码生成与校验矩阵的保护方法及矩阵存储/产生装置

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
USRE30187E (en) 1972-11-15 1980-01-08 International Business Machines Corporation Plural channel error correcting apparatus and methods
US4211997A (en) * 1978-11-03 1980-07-08 Ampex Corporation Method and apparatus employing an improved format for recording and reproducing digital audio
US4334309A (en) 1980-06-30 1982-06-08 International Business Machines Corporation Error correcting code system
US4358848A (en) 1980-11-14 1982-11-09 International Business Machines Corporation Dual function ECC system with block check byte
JPS57136833A (en) * 1981-02-17 1982-08-24 Sony Corp Time-division multiplex data transmitting method
GB2095440B (en) * 1981-03-23 1985-10-09 Sony Corp Digital television signal processing
EP0167627B1 (de) * 1983-12-20 1993-08-11 Sony Corporation Verfahren und vorrichtung zur dekodierung eines fehlerverbesserungskodes
US4617664A (en) * 1984-06-29 1986-10-14 International Business Machines Corporation Error correction for multiple bit output chips
US4675863A (en) * 1985-03-20 1987-06-23 International Mobile Machines Corp. Subscriber RF telephone system for providing multiple speech and/or data signals simultaneously over either a single or a plurality of RF channels
CA1264091A (en) * 1986-01-10 1989-12-27 Yoichiro Sako Generator for error correcting code and decoder for the code
US4845664A (en) 1986-09-15 1989-07-04 International Business Machines Corp. On-chip bit reordering structure
IT1202527B (it) 1987-02-12 1989-02-09 Honeywell Inf Systems Sistema di memoria e relativo apparato di rivelazione-correzione di errore
JPH0821238B2 (ja) 1987-11-12 1996-03-04 三菱電機株式会社 半導体記憶装置
US4995041A (en) 1989-02-03 1991-02-19 Digital Equipment Corporation Write back buffer with error correcting capabilities
US5099484A (en) 1989-06-09 1992-03-24 Digital Equipment Corporation Multiple bit error detection and correction system employing a modified Reed-Solomon code incorporating address parity and catastrophic failure detection
US5144304A (en) * 1989-07-17 1992-09-01 Digital Equipment Corporation Data and forward error control coding techniques for digital signals
US5251219A (en) * 1990-09-10 1993-10-05 Advanced Micro Devices, Inc. Error detection and correction circuit
US5291498A (en) 1991-01-29 1994-03-01 Convex Computer Corporation Error detecting method and apparatus for computer memory having multi-bit output memory circuits
US5245428A (en) * 1991-05-10 1993-09-14 U.S. Philips Corporation Television system for transmitting picture signals in a digital format
US5369650A (en) * 1991-11-22 1994-11-29 Honeywell, Inc. Error detection and correction apparatus in a BY-4 RAM Device
US5537426A (en) 1992-05-29 1996-07-16 Goldstar Co., Ltd. Operation apparatus for deriving erasure position Γ(x) and Forney syndrome T(x) polynomials of a Galois field employing a single multiplier
US5444490A (en) * 1992-07-07 1995-08-22 U.S. Philips Corporation Television system for transmitting pictures in a digital form
KR0168896B1 (ko) * 1993-09-20 1999-02-01 세키자와 다다시 패리티에 의해 에러를 수정할 수 있는 반도체 메모리장치
US5642366A (en) 1994-07-05 1997-06-24 Adaptec, Inc. Global parity symbol for interleaved reed-solomon coded data
JPH08249826A (ja) 1995-03-10 1996-09-27 Nippon Conlux Co Ltd 情報記録媒体及び情報記録再生方法
US5841795A (en) * 1996-02-12 1998-11-24 Compaq Computer Corporation Error correction codes
US5922080A (en) * 1996-05-29 1999-07-13 Compaq Computer Corporation, Inc. Method and apparatus for performing error detection and correction with memory devices
US5784391A (en) 1996-10-08 1998-07-21 International Business Machines Corporation Distributed memory system with ECC and method of operation
US5978953A (en) * 1996-12-19 1999-11-02 Compaq Computer Corporation error detection and correction
US6035432A (en) * 1997-07-31 2000-03-07 Micron Electronics, Inc. System for remapping defective memory bit sets
US6282686B1 (en) 1998-09-24 2001-08-28 Sun Microsystems, Inc. Technique for sharing parity over multiple single-error correcting code words
US6301680B1 (en) 1998-09-24 2001-10-09 Sun Microsystems, Inc. Technique for correcting single-bit errors and detecting paired double-bit errors
US6141789A (en) 1998-09-24 2000-10-31 Sun Microsystems, Inc. Technique for detecting memory part failures and single, double, and triple bit errors
US6304992B1 (en) * 1998-09-24 2001-10-16 Sun Microsystems, Inc. Technique for correcting single-bit errors in caches with sub-block parity bits
US6233716B1 (en) 1998-09-24 2001-05-15 Sun Microsystems, Inc. Technique for partitioning data to correct memory part failures

Also Published As

Publication number Publication date
US6304992B1 (en) 2001-10-16
US20020038442A1 (en) 2002-03-28
JP2000112830A (ja) 2000-04-21
EP0989492A2 (de) 2000-03-29
EP0989492A3 (de) 2000-10-11
DE69910320D1 (de) 2003-09-18
US6584595B2 (en) 2003-06-24
EP0989492B1 (de) 2003-08-13

Similar Documents

Publication Publication Date Title
DE69910320T2 (de) Technik für Einzelfehlerkorrektur im Cachespeicher mit Subblock-Paritätenbits
DE19882853B3 (de) Verfahren und Steuereinrichtung zum automatischen Korrigieren von in einem Speichersubsystem erfassten Fehlern und Computersystem, das eine solche Steuereinrichtung aufweist
DE2806024C2 (de)
DE60117066T2 (de) Verfahren und Vorrichtung zum Überprüfen von fehlerkorrigierenden Codes
DE69220818T2 (de) Verfahren und Einrichtung zur Fehlererkennung in Recherspeichern versehen mit Mehrfach-bit-Ausgängen
DE3853206T2 (de) Verfahren und gerät zur byteschreibfehlerkodierung.
DE69807101T2 (de) Segmentiertes dma mit xor-puffer für speicheruntersysteme
DE69126416T2 (de) Speichergerätanordnungsarchitektur mit Copyback-Cachespeicher
DE69626054T2 (de) Verfahren zur Priorisierung und Behandlung von Fehlern in einem Rechnersystem
DE3854368T2 (de) Cachespeicher mit einer Elastizität in der Verarbeitung verschiedener Adressenfehler.
DE69127895T4 (de) Logisches spurschreibzuordnungssystem für paralleles plattenlaufwerksmatrixdatenspeicherungsuntersystem
DE68927164T2 (de) Verfahren zur Identifizierung schlechter Daten
DE69129444T2 (de) On-Line-Wiederherstellung von Redundanz-Information in einem redundanten Matrixsystem
DE3650651T2 (de) Fehlertolerantes Datenverarbeitungssystem
DE112011100579B4 (de) Verfahren und vorrichtung zum verwenden von cachespeicher in einem system, welches einen niedrigleistungszustand unterstützt
DE69522457T2 (de) Verfahren und vorrichtung zur automatischen entfernung von ecc-speicherfehlern mittels hardware
DE102012210232B4 (de) Vorbeugende Speicherreparatur auf der Grundlage der Analyse einer Vielzahl von Symbolen und Bereinigungszyklen
DE3485766T2 (de) Nach dem pipelineverfahren arbeitende fehlerkorrektur.
DE60001370T2 (de) Verfahren und vorrichtung zur erkennung von doppelbitfehlern und korrektur von fehlern durch bauelementfehler verursacht
DE60015753T2 (de) System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69126057T2 (de) Ein Informationsverarbeitungsgerät mit einer Fehlerprüf- und Korrekturschaltung
DE3876459T2 (de) Speicher und deren pruefung.
DE19914730A1 (de) Verfahren zum Verhindern eines Datenübertrags an beschädigte Adressen
DE69026346T2 (de) Technik zum Informationsschutz für fehlertolerante redundante Informationsspeichereinrichtungen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition